Web Dev Solutions

Catalin Mititiuc

const digits = /-?\d+\.?\d*/g; export function extractNum(string) { return string.replace(/\D/g,''); } export function getTracked(trackedAndTrackerEls) { const sorted = [...trackedAndTrackerEls] .sort((a, b) => a.id < b.id || extractNum(a.id) <= extractNum(b.id)); const groups = []; const els = sorted.slice(); while (els.length) { groups.push([els.pop(), els.pop()]); } return groups; } export function track(targetEl, trackingEl, transformMtx) { let x = targetEl.getAttributeNS(null, 'x'); let y = targetEl.getAttributeNS(null, 'y'); let ptBefore = new DOMPoint(x, y); let ptAfter = ptBefore.matrixTransform(transformMtx); trackingEl.setAttributeNS(null, 'x', ptAfter.x); trackingEl.setAttributeNS(null, 'y', ptAfter.y); } export default function getComputedTransformMatrix(el) { const matrixSequence = getComputedStyle(el).transform.match(digits), identityMatrix = ''; return new DOMMatrix(matrixSequence || identityMatrix); }