{"ast":null,"code":"/*!\n * matrix 3.12.2\n * https://greensock.com\n *\n * Copyright 2008-2023, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n/* eslint-disable */\n\nlet _doc,\n  _win,\n  _docElement,\n  _body,\n  _divContainer,\n  _svgContainer,\n  _identityMatrix,\n  _gEl,\n  _transformProp = \"transform\",\n  _transformOriginProp = _transformProp + \"Origin\",\n  _hasOffsetBug,\n  _setDoc = element => {\n    let doc = element.ownerDocument || element;\n    if (!(_transformProp in element.style) && \"msTransform\" in element.style) {\n      //to improve compatibility with old Microsoft browsers\n      _transformProp = \"msTransform\";\n      _transformOriginProp = _transformProp + \"Origin\";\n    }\n    while (doc.parentNode && (doc = doc.parentNode)) {}\n    _win = window;\n    _identityMatrix = new Matrix2D();\n    if (doc) {\n      _doc = doc;\n      _docElement = doc.documentElement;\n      _body = doc.body;\n      _gEl = _doc.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n      // prevent any existing CSS from transforming it\n      _gEl.style.transform = \"none\";\n      // now test for the offset reporting bug. Use feature detection instead of browser sniffing to make things more bulletproof and future-proof. Hopefully Safari will fix their bug soon but it's 2020 and it's still not fixed.\n      let d1 = doc.createElement(\"div\"),\n        d2 = doc.createElement(\"div\");\n      _body.appendChild(d1);\n      d1.appendChild(d2);\n      d1.style.position = \"static\";\n      d1.style[_transformProp] = \"translate3d(0,0,1px)\";\n      _hasOffsetBug = d2.offsetParent !== d1;\n      _body.removeChild(d1);\n    }\n    return doc;\n  },\n  _forceNonZeroScale = e => {\n    // walks up the element's ancestors and finds any that had their scale set to 0 via GSAP, and changes them to 0.0001 to ensure that measurements work. Firefox has a bug that causes it to incorrectly report getBoundingClientRect() when scale is 0.\n    let a, cache;\n    while (e && e !== _body) {\n      cache = e._gsap;\n      cache && cache.uncache && cache.get(e, \"x\"); // force re-parsing of transforms if necessary\n      if (cache && !cache.scaleX && !cache.scaleY && cache.renderTransform) {\n        cache.scaleX = cache.scaleY = 1e-4;\n        cache.renderTransform(1, cache);\n        a ? a.push(cache) : a = [cache];\n      }\n      e = e.parentNode;\n    }\n    return a;\n  },\n  // possible future addition: pass an element to _forceDisplay() and it'll walk up all its ancestors and make sure anything with display: none is set to display: block, and if there's no parentNode, it'll add it to the body. It returns an Array that you can then feed to _revertDisplay() to have it revert all the changes it made.\n  // _forceDisplay = e => {\n  // \tlet a = [],\n  // \t\tparent;\n  // \twhile (e && e !== _body) {\n  // \t\tparent = e.parentNode;\n  // \t\t(_win.getComputedStyle(e).display === \"none\" || !parent) && a.push(e, e.style.display, parent) && (e.style.display = \"block\");\n  // \t\tparent || _body.appendChild(e);\n  // \t\te = parent;\n  // \t}\n  // \treturn a;\n  // },\n  // _revertDisplay = a => {\n  // \tfor (let i = 0; i < a.length; i+=3) {\n  // \t\ta[i+1] ? (a[i].style.display = a[i+1]) : a[i].style.removeProperty(\"display\");\n  // \t\ta[i+2] || a[i].parentNode.removeChild(a[i]);\n  // \t}\n  // },\n  _svgTemps = [],\n  //we create 3 elements for SVG, and 3 for other DOM elements and cache them for performance reasons. They get nested in _divContainer and _svgContainer so that just one element is added to the DOM on each successive attempt. Again, performance is key.\n  _divTemps = [],\n  _getDocScrollTop = () => _win.pageYOffset || _doc.scrollTop || _docElement.scrollTop || _body.scrollTop || 0,\n  _getDocScrollLeft = () => _win.pageXOffset || _doc.scrollLeft || _docElement.scrollLeft || _body.scrollLeft || 0,\n  _svgOwner = element => element.ownerSVGElement || ((element.tagName + \"\").toLowerCase() === \"svg\" ? element : null),\n  _isFixed = element => {\n    if (_win.getComputedStyle(element).position === \"fixed\") {\n      return true;\n    }\n    element = element.parentNode;\n    if (element && element.nodeType === 1) {\n      // avoid document fragments which will throw an error.\n      return _isFixed(element);\n    }\n  },\n  _createSibling = (element, i) => {\n    if (element.parentNode && (_doc || _setDoc(element))) {\n      let svg = _svgOwner(element),\n        ns = svg ? svg.getAttribute(\"xmlns\") || \"http://www.w3.org/2000/svg\" : \"http://www.w3.org/1999/xhtml\",\n        type = svg ? i ? \"rect\" : \"g\" : \"div\",\n        x = i !== 2 ? 0 : 100,\n        y = i === 3 ? 100 : 0,\n        css = \"position:absolute;display:block;pointer-events:none;margin:0;padding:0;\",\n        e = _doc.createElementNS ? _doc.createElementNS(ns.replace(/^https/, \"http\"), type) : _doc.createElement(type);\n      if (i) {\n        if (!svg) {\n          if (!_divContainer) {\n            _divContainer = _createSibling(element);\n            _divContainer.style.cssText = css;\n          }\n          e.style.cssText = css + \"width:0.1px;height:0.1px;top:\" + y + \"px;left:\" + x + \"px\";\n          _divContainer.appendChild(e);\n        } else {\n          _svgContainer || (_svgContainer = _createSibling(element));\n          e.setAttribute(\"width\", 0.01);\n          e.setAttribute(\"height\", 0.01);\n          e.setAttribute(\"transform\", \"translate(\" + x + \",\" + y + \")\");\n          _svgContainer.appendChild(e);\n        }\n      }\n      return e;\n    }\n    throw \"Need document and parent.\";\n  },\n  _consolidate = m => {\n    // replaces SVGTransformList.consolidate() because a bug in Firefox causes it to break pointer events. See https://greensock.com/forums/topic/23248-touch-is-not-working-on-draggable-in-firefox-windows-v324/?tab=comments#comment-109800\n    let c = new Matrix2D(),\n      i = 0;\n    for (; i < m.numberOfItems; i++) {\n      c.multiply(m.getItem(i).matrix);\n    }\n    return c;\n  },\n  _getCTM = svg => {\n    let m = svg.getCTM(),\n      transform;\n    if (!m) {\n      // Firefox returns null for getCTM() on root <svg> elements, so this is a workaround using a <g> that we temporarily append.\n      transform = svg.style[_transformProp];\n      svg.style[_transformProp] = \"none\"; // a bug in Firefox causes css transforms to contaminate the getCTM()\n      svg.appendChild(_gEl);\n      m = _gEl.getCTM();\n      svg.removeChild(_gEl);\n      transform ? svg.style[_transformProp] = transform : svg.style.removeProperty(_transformProp.replace(/([A-Z])/g, \"-$1\").toLowerCase());\n    }\n    return m || _identityMatrix.clone(); // Firefox will still return null if the <svg> has a width/height of 0 in the browser.\n  },\n  _placeSiblings = (element, adjustGOffset) => {\n    let svg = _svgOwner(element),\n      isRootSVG = element === svg,\n      siblings = svg ? _svgTemps : _divTemps,\n      parent = element.parentNode,\n      container,\n      m,\n      b,\n      x,\n      y,\n      cs;\n    if (element === _win) {\n      return element;\n    }\n    siblings.length || siblings.push(_createSibling(element, 1), _createSibling(element, 2), _createSibling(element, 3));\n    container = svg ? _svgContainer : _divContainer;\n    if (svg) {\n      if (isRootSVG) {\n        b = _getCTM(element);\n        x = -b.e / b.a;\n        y = -b.f / b.d;\n        m = _identityMatrix;\n      } else if (element.getBBox) {\n        b = element.getBBox();\n        m = element.transform ? element.transform.baseVal : {}; // IE11 doesn't follow the spec.\n        m = !m.numberOfItems ? _identityMatrix : m.numberOfItems > 1 ? _consolidate(m) : m.getItem(0).matrix; // don't call m.consolidate().matrix because a bug in Firefox makes pointer events not work when consolidate() is called on the same tick as getBoundingClientRect()! See https://greensock.com/forums/topic/23248-touch-is-not-working-on-draggable-in-firefox-windows-v324/?tab=comments#comment-109800\n        x = m.a * b.x + m.c * b.y;\n        y = m.b * b.x + m.d * b.y;\n      } else {\n        // may be a <mask> which has no getBBox() so just use defaults instead of throwing errors.\n        m = new Matrix2D();\n        x = y = 0;\n      }\n      if (adjustGOffset && element.tagName.toLowerCase() === \"g\") {\n        x = y = 0;\n      }\n      (isRootSVG ? svg : parent).appendChild(container);\n      container.setAttribute(\"transform\", \"matrix(\" + m.a + \",\" + m.b + \",\" + m.c + \",\" + m.d + \",\" + (m.e + x) + \",\" + (m.f + y) + \")\");\n    } else {\n      x = y = 0;\n      if (_hasOffsetBug) {\n        // some browsers (like Safari) have a bug that causes them to misreport offset values. When an ancestor element has a transform applied, it's supposed to treat it as if it's position: relative (new context). Safari botches this, so we need to find the closest ancestor (between the element and its offsetParent) that has a transform applied and if one is found, grab its offsetTop/Left and subtract them to compensate.\n        m = element.offsetParent;\n        b = element;\n        while (b && (b = b.parentNode) && b !== m && b.parentNode) {\n          if ((_win.getComputedStyle(b)[_transformProp] + \"\").length > 4) {\n            x = b.offsetLeft;\n            y = b.offsetTop;\n            b = 0;\n          }\n        }\n      }\n      cs = _win.getComputedStyle(element);\n      if (cs.position !== \"absolute\" && cs.position !== \"fixed\") {\n        m = element.offsetParent;\n        while (parent && parent !== m) {\n          // if there's an ancestor element between the element and its offsetParent that's scrolled, we must factor that in.\n          x += parent.scrollLeft || 0;\n          y += parent.scrollTop || 0;\n          parent = parent.parentNode;\n        }\n      }\n      b = container.style;\n      b.top = element.offsetTop - y + \"px\";\n      b.left = element.offsetLeft - x + \"px\";\n      b[_transformProp] = cs[_transformProp];\n      b[_transformOriginProp] = cs[_transformOriginProp];\n      // b.border = m.border;\n      // b.borderLeftStyle = m.borderLeftStyle;\n      // b.borderTopStyle = m.borderTopStyle;\n      // b.borderLeftWidth = m.borderLeftWidth;\n      // b.borderTopWidth = m.borderTopWidth;\n      b.position = cs.position === \"fixed\" ? \"fixed\" : \"absolute\";\n      element.parentNode.appendChild(container);\n    }\n    return container;\n  },\n  _setMatrix = (m, a, b, c, d, e, f) => {\n    m.a = a;\n    m.b = b;\n    m.c = c;\n    m.d = d;\n    m.e = e;\n    m.f = f;\n    return m;\n  };\nexport class Matrix2D {\n  constructor(a = 1, b = 0, c = 0, d = 1, e = 0, f = 0) {\n    _setMatrix(this, a, b, c, d, e, f);\n  }\n  inverse() {\n    let {\n        a,\n        b,\n        c,\n        d,\n        e,\n        f\n      } = this,\n      determinant = a * d - b * c || 1e-10;\n    return _setMatrix(this, d / determinant, -b / determinant, -c / determinant, a / determinant, (c * f - d * e) / determinant, -(a * f - b * e) / determinant);\n  }\n  multiply(matrix) {\n    let {\n        a,\n        b,\n        c,\n        d,\n        e,\n        f\n      } = this,\n      a2 = matrix.a,\n      b2 = matrix.c,\n      c2 = matrix.b,\n      d2 = matrix.d,\n      e2 = matrix.e,\n      f2 = matrix.f;\n    return _setMatrix(this, a2 * a + c2 * c, a2 * b + c2 * d, b2 * a + d2 * c, b2 * b + d2 * d, e + e2 * a + f2 * c, f + e2 * b + f2 * d);\n  }\n  clone() {\n    return new Matrix2D(this.a, this.b, this.c, this.d, this.e, this.f);\n  }\n  equals(matrix) {\n    let {\n      a,\n      b,\n      c,\n      d,\n      e,\n      f\n    } = this;\n    return a === matrix.a && b === matrix.b && c === matrix.c && d === matrix.d && e === matrix.e && f === matrix.f;\n  }\n  apply(point, decoratee = {}) {\n    let {\n        x,\n        y\n      } = point,\n      {\n        a,\n        b,\n        c,\n        d,\n        e,\n        f\n      } = this;\n    decoratee.x = x * a + y * c + e || 0;\n    decoratee.y = x * b + y * d + f || 0;\n    return decoratee;\n  }\n}\n\n// Feed in an element and it'll return a 2D matrix (optionally inverted) so that you can translate between coordinate spaces.\n// Inverting lets you translate a global point into a local coordinate space. No inverting lets you go the other way.\n// We needed this to work around various browser bugs, like Firefox doesn't accurately report getScreenCTM() when there\n// are transforms applied to ancestor elements.\n// The matrix math to convert any x/y coordinate is as follows, which is wrapped in a convenient apply() method of Matrix2D above:\n//     tx = m.a * x + m.c * y + m.e\n//     ty = m.b * x + m.d * y + m.f\nexport function getGlobalMatrix(element, inverse, adjustGOffset, includeScrollInFixed) {\n  // adjustGOffset is typically used only when grabbing an element's PARENT's global matrix, and it ignores the x/y offset of any SVG <g> elements because they behave in a special way.\n  if (!element || !element.parentNode || (_doc || _setDoc(element)).documentElement === element) {\n    return new Matrix2D();\n  }\n  let zeroScales = _forceNonZeroScale(element),\n    svg = _svgOwner(element),\n    temps = svg ? _svgTemps : _divTemps,\n    container = _placeSiblings(element, adjustGOffset),\n    b1 = temps[0].getBoundingClientRect(),\n    b2 = temps[1].getBoundingClientRect(),\n    b3 = temps[2].getBoundingClientRect(),\n    parent = container.parentNode,\n    isFixed = !includeScrollInFixed && _isFixed(element),\n    m = new Matrix2D((b2.left - b1.left) / 100, (b2.top - b1.top) / 100, (b3.left - b1.left) / 100, (b3.top - b1.top) / 100, b1.left + (isFixed ? 0 : _getDocScrollLeft()), b1.top + (isFixed ? 0 : _getDocScrollTop()));\n  parent.removeChild(container);\n  if (zeroScales) {\n    b1 = zeroScales.length;\n    while (b1--) {\n      b2 = zeroScales[b1];\n      b2.scaleX = b2.scaleY = 0;\n      b2.renderTransform(1, b2);\n    }\n  }\n  return inverse ? m.inverse() : m;\n}\nexport { _getDocScrollTop, _getDocScrollLeft, _setDoc, _isFixed, _getCTM };\n\n// export function getMatrix(element) {\n// \t_doc || _setDoc(element);\n// \tlet m = (_win.getComputedStyle(element)[_transformProp] + \"\").substr(7).match(/[-.]*\\d+[.e\\-+]*\\d*[e\\-\\+]*\\d*/g),\n// \t\tis2D = m && m.length === 6;\n// \treturn !m || m.length < 6 ? new Matrix2D() : new Matrix2D(+m[0], +m[1], +m[is2D ? 2 : 4], +m[is2D ? 3 : 5], +m[is2D ? 4 : 12], +m[is2D ? 5 : 13]);\n// }","map":{"version":3,"names":["_doc","_win","_docElement","_body","_divContainer","_svgContainer","_identityMatrix","_gEl","_transformProp","_transformOriginProp","_hasOffsetBug","_setDoc","element","doc","ownerDocument","style","parentNode","window","Matrix2D","documentElement","body","createElementNS","transform","d1","createElement","d2","appendChild","position","offsetParent","removeChild","_forceNonZeroScale","e","a","cache","_gsap","uncache","get","scaleX","scaleY","renderTransform","push","_svgTemps","_divTemps","_getDocScrollTop","pageYOffset","scrollTop","_getDocScrollLeft","pageXOffset","scrollLeft","_svgOwner","ownerSVGElement","tagName","toLowerCase","_isFixed","getComputedStyle","nodeType","_createSibling","i","svg","ns","getAttribute","type","x","y","css","replace","cssText","setAttribute","_consolidate","m","c","numberOfItems","multiply","getItem","matrix","_getCTM","getCTM","removeProperty","clone","_placeSiblings","adjustGOffset","isRootSVG","siblings","parent","container","b","cs","length","f","d","getBBox","baseVal","offsetLeft","offsetTop","top","left","_setMatrix","constructor","inverse","determinant","a2","b2","c2","e2","f2","equals","apply","point","decoratee","getGlobalMatrix","includeScrollInFixed","zeroScales","temps","b1","getBoundingClientRect","b3","isFixed"],"sources":["C:/Users/user/Desktop/000newport/node_modules/gsap/src/utils/matrix.js"],"sourcesContent":["/*!\n * matrix 3.12.2\n * https://greensock.com\n *\n * Copyright 2008-2023, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n/* eslint-disable */\n\nlet _doc, _win, _docElement, _body,\t_divContainer, _svgContainer, _identityMatrix, _gEl,\n\t_transformProp = \"transform\",\n\t_transformOriginProp = _transformProp + \"Origin\",\n\t_hasOffsetBug,\n\t_setDoc = element => {\n\t\tlet doc = element.ownerDocument || element;\n\t\tif (!(_transformProp in element.style) && \"msTransform\" in element.style) { //to improve compatibility with old Microsoft browsers\n\t\t\t_transformProp = \"msTransform\";\n\t\t\t_transformOriginProp = _transformProp + \"Origin\";\n\t\t}\n\t\twhile (doc.parentNode && (doc = doc.parentNode)) {\t}\n\t\t_win = window;\n\t\t_identityMatrix = new Matrix2D();\n\t\tif (doc) {\n\t\t\t_doc = doc;\n\t\t\t_docElement = doc.documentElement;\n\t\t\t_body = doc.body;\n\t\t\t_gEl = _doc.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n\t\t\t// prevent any existing CSS from transforming it\n\t\t\t_gEl.style.transform = \"none\";\n\t\t\t// now test for the offset reporting bug. Use feature detection instead of browser sniffing to make things more bulletproof and future-proof. Hopefully Safari will fix their bug soon but it's 2020 and it's still not fixed.\n\t\t\tlet d1 = doc.createElement(\"div\"),\n\t\t\t\td2 = doc.createElement(\"div\");\n\t\t\t_body.appendChild(d1);\n\t\t\td1.appendChild(d2);\n\t\t\td1.style.position = \"static\";\n\t\t\td1.style[_transformProp] = \"translate3d(0,0,1px)\";\n\t\t\t_hasOffsetBug = (d2.offsetParent !== d1);\n\t\t\t_body.removeChild(d1);\n\t\t}\n\t\treturn doc;\n\t},\n\t_forceNonZeroScale = e => { // walks up the element's ancestors and finds any that had their scale set to 0 via GSAP, and changes them to 0.0001 to ensure that measurements work. Firefox has a bug that causes it to incorrectly report getBoundingClientRect() when scale is 0.\n\t\tlet a, cache;\n\t\twhile (e && e !== _body) {\n\t\t\tcache = e._gsap;\n\t\t\tcache && cache.uncache && cache.get(e, \"x\"); // force re-parsing of transforms if necessary\n\t\t\tif (cache && !cache.scaleX && !cache.scaleY && cache.renderTransform) {\n\t\t\t\tcache.scaleX = cache.scaleY = 1e-4;\n\t\t\t\tcache.renderTransform(1, cache);\n\t\t\t\ta ? a.push(cache) : (a = [cache]);\n\t\t\t}\n\t\t\te = e.parentNode;\n\t\t}\n\t\treturn a;\n\t},\n\t// possible future addition: pass an element to _forceDisplay() and it'll walk up all its ancestors and make sure anything with display: none is set to display: block, and if there's no parentNode, it'll add it to the body. It returns an Array that you can then feed to _revertDisplay() to have it revert all the changes it made.\n\t// _forceDisplay = e => {\n\t// \tlet a = [],\n\t// \t\tparent;\n\t// \twhile (e && e !== _body) {\n\t// \t\tparent = e.parentNode;\n\t// \t\t(_win.getComputedStyle(e).display === \"none\" || !parent) && a.push(e, e.style.display, parent) && (e.style.display = \"block\");\n\t// \t\tparent || _body.appendChild(e);\n\t// \t\te = parent;\n\t// \t}\n\t// \treturn a;\n\t// },\n\t// _revertDisplay = a => {\n\t// \tfor (let i = 0; i < a.length; i+=3) {\n\t// \t\ta[i+1] ? (a[i].style.display = a[i+1]) : a[i].style.removeProperty(\"display\");\n\t// \t\ta[i+2] || a[i].parentNode.removeChild(a[i]);\n\t// \t}\n\t// },\n\t_svgTemps = [], //we create 3 elements for SVG, and 3 for other DOM elements and cache them for performance reasons. They get nested in _divContainer and _svgContainer so that just one element is added to the DOM on each successive attempt. Again, performance is key.\n\t_divTemps = [],\n\t_getDocScrollTop = () => _win.pageYOffset  || _doc.scrollTop || _docElement.scrollTop || _body.scrollTop || 0,\n\t_getDocScrollLeft = () => _win.pageXOffset || _doc.scrollLeft || _docElement.scrollLeft || _body.scrollLeft || 0,\n\t_svgOwner = element => element.ownerSVGElement || ((element.tagName + \"\").toLowerCase() === \"svg\" ? element : null),\n\t_isFixed = element => {\n\t\tif (_win.getComputedStyle(element).position === \"fixed\") {\n\t\t\treturn true;\n\t\t}\n\t\telement = element.parentNode;\n\t\tif (element && element.nodeType === 1) { // avoid document fragments which will throw an error.\n\t\t\treturn _isFixed(element);\n\t\t}\n\t},\n\t_createSibling = (element, i) => {\n\t\tif (element.parentNode && (_doc || _setDoc(element))) {\n\t\t\tlet svg = _svgOwner(element),\n\t\t\t\tns = svg ? (svg.getAttribute(\"xmlns\") || \"http://www.w3.org/2000/svg\") : \"http://www.w3.org/1999/xhtml\",\n\t\t\t\ttype = svg ? (i ? \"rect\" : \"g\") : \"div\",\n\t\t\t\tx = i !== 2 ? 0 : 100,\n\t\t\t\ty = i === 3 ? 100 : 0,\n\t\t\t\tcss = \"position:absolute;display:block;pointer-events:none;margin:0;padding:0;\",\n\t\t\t\te = _doc.createElementNS ? _doc.createElementNS(ns.replace(/^https/, \"http\"), type) : _doc.createElement(type);\n\t\t\tif (i) {\n\t\t\t\tif (!svg) {\n\t\t\t\t\tif (!_divContainer) {\n\t\t\t\t\t\t_divContainer = _createSibling(element);\n\t\t\t\t\t\t_divContainer.style.cssText = css;\n\t\t\t\t\t}\n\t\t\t\t\te.style.cssText = css + \"width:0.1px;height:0.1px;top:\" + y + \"px;left:\" + x + \"px\";\n\t\t\t\t\t_divContainer.appendChild(e);\n\n\t\t\t\t} else {\n\t\t\t\t\t_svgContainer || (_svgContainer = _createSibling(element));\n\t\t\t\t\te.setAttribute(\"width\", 0.01);\n\t\t\t\t\te.setAttribute(\"height\", 0.01);\n\t\t\t\t\te.setAttribute(\"transform\", \"translate(\" + x + \",\" + y + \")\");\n\t\t\t\t\t_svgContainer.appendChild(e);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn e;\n\t\t}\n\t\tthrow \"Need document and parent.\";\n\t},\n\t_consolidate = m => { // replaces SVGTransformList.consolidate() because a bug in Firefox causes it to break pointer events. See https://greensock.com/forums/topic/23248-touch-is-not-working-on-draggable-in-firefox-windows-v324/?tab=comments#comment-109800\n\t\tlet c = new Matrix2D(),\n\t\t\ti = 0;\n\t\tfor (; i < m.numberOfItems; i++) {\n\t\t\tc.multiply(m.getItem(i).matrix);\n\t\t}\n\t\treturn c;\n\t},\n\t_getCTM = svg => {\n\t\tlet m = svg.getCTM(),\n\t\t\ttransform;\n\t\tif (!m) { // Firefox returns null for getCTM() on root <svg> elements, so this is a workaround using a <g> that we temporarily append.\n\t\t\ttransform = svg.style[_transformProp];\n\t\t\tsvg.style[_transformProp] = \"none\"; // a bug in Firefox causes css transforms to contaminate the getCTM()\n\t\t\tsvg.appendChild(_gEl);\n\t\t\tm = _gEl.getCTM();\n\t\t\tsvg.removeChild(_gEl);\n\t\t\ttransform ? (svg.style[_transformProp] = transform) : svg.style.removeProperty(_transformProp.replace(/([A-Z])/g, \"-$1\").toLowerCase());\n\t\t}\n\t\treturn m || _identityMatrix.clone(); // Firefox will still return null if the <svg> has a width/height of 0 in the browser.\n\t},\n\t_placeSiblings = (element, adjustGOffset) => {\n\t\tlet svg = _svgOwner(element),\n\t\t\tisRootSVG = element === svg,\n\t\t\tsiblings = svg ? _svgTemps : _divTemps,\n\t\t\tparent = element.parentNode,\n\t\t\tcontainer, m, b, x, y, cs;\n\t\tif (element === _win) {\n\t\t\treturn element;\n\t\t}\n\t\tsiblings.length || siblings.push(_createSibling(element, 1), _createSibling(element, 2), _createSibling(element, 3));\n\t\tcontainer = svg ? _svgContainer : _divContainer;\n\t\tif (svg) {\n\t\t\tif (isRootSVG) {\n\t\t\t\tb = _getCTM(element);\n\t\t\t\tx = -b.e / b.a;\n\t\t\t\ty = -b.f / b.d;\n\t\t\t\tm = _identityMatrix;\n\t\t\t} else if (element.getBBox) {\n\t\t\t\tb = element.getBBox();\n\t\t\t\tm = element.transform ? element.transform.baseVal : {}; // IE11 doesn't follow the spec.\n\t\t\t\tm = !m.numberOfItems ? _identityMatrix : m.numberOfItems > 1 ? _consolidate(m) : m.getItem(0).matrix; // don't call m.consolidate().matrix because a bug in Firefox makes pointer events not work when consolidate() is called on the same tick as getBoundingClientRect()! See https://greensock.com/forums/topic/23248-touch-is-not-working-on-draggable-in-firefox-windows-v324/?tab=comments#comment-109800\n\t\t\t\tx = m.a * b.x + m.c * b.y;\n\t\t\t\ty = m.b * b.x + m.d * b.y;\n\t\t\t} else { // may be a <mask> which has no getBBox() so just use defaults instead of throwing errors.\n\t\t\t\tm = new Matrix2D();\n\t\t\t\tx = y = 0;\n\t\t\t}\n\t\t\tif (adjustGOffset && element.tagName.toLowerCase() === \"g\") {\n\t\t\t\tx = y = 0;\n\t\t\t}\n\t\t\t(isRootSVG ? svg : parent).appendChild(container);\n\t\t\tcontainer.setAttribute(\"transform\", \"matrix(\" + m.a + \",\" + m.b + \",\" + m.c + \",\" + m.d + \",\" + (m.e + x) + \",\" + (m.f + y) + \")\");\n\t\t} else {\n\t\t\tx = y = 0;\n\t\t\tif (_hasOffsetBug) { // some browsers (like Safari) have a bug that causes them to misreport offset values. When an ancestor element has a transform applied, it's supposed to treat it as if it's position: relative (new context). Safari botches this, so we need to find the closest ancestor (between the element and its offsetParent) that has a transform applied and if one is found, grab its offsetTop/Left and subtract them to compensate.\n\t\t\t\tm = element.offsetParent;\n\t\t\t\tb = element;\n\t\t\t\twhile (b && (b = b.parentNode) && b !== m && b.parentNode) {\n\t\t\t\t\tif ((_win.getComputedStyle(b)[_transformProp] + \"\").length > 4) {\n\t\t\t\t\t\tx = b.offsetLeft;\n\t\t\t\t\t\ty = b.offsetTop;\n\t\t\t\t\t\tb = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tcs = _win.getComputedStyle(element);\n\t\t\tif (cs.position !== \"absolute\" && cs.position !== \"fixed\") {\n\t\t\t\tm = element.offsetParent;\n\t\t\t\twhile (parent && parent !== m) { // if there's an ancestor element between the element and its offsetParent that's scrolled, we must factor that in.\n\t\t\t\t\tx += parent.scrollLeft || 0;\n\t\t\t\t\ty += parent.scrollTop || 0;\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\t\t\t}\n\t\t\tb = container.style;\n\t\t\tb.top = (element.offsetTop - y) + \"px\";\n\t\t\tb.left = (element.offsetLeft - x) + \"px\";\n\t\t\tb[_transformProp] = cs[_transformProp];\n\t\t\tb[_transformOriginProp] = cs[_transformOriginProp];\n\t\t\t// b.border = m.border;\n\t\t\t// b.borderLeftStyle = m.borderLeftStyle;\n\t\t\t// b.borderTopStyle = m.borderTopStyle;\n\t\t\t// b.borderLeftWidth = m.borderLeftWidth;\n\t\t\t// b.borderTopWidth = m.borderTopWidth;\n\t\t\tb.position = cs.position === \"fixed\" ? \"fixed\" : \"absolute\";\n\t\t\telement.parentNode.appendChild(container);\n\t\t}\n\t\treturn container;\n\t},\n\t_setMatrix = (m, a, b, c, d, e, f) => {\n\t\tm.a = a;\n\t\tm.b = b;\n\t\tm.c = c;\n\t\tm.d = d;\n\t\tm.e = e;\n\t\tm.f = f;\n\t\treturn m;\n\t};\n\nexport class Matrix2D {\n\tconstructor(a=1, b=0, c=0, d=1, e=0, f=0) {\n\t\t_setMatrix(this, a, b, c, d, e, f);\n\t}\n\n\tinverse() {\n\t\tlet {a, b, c, d, e, f} = this,\n\t\t\tdeterminant = (a * d - b * c) || 1e-10;\n\t\treturn _setMatrix(\n\t\t\tthis,\n\t\t\td / determinant,\n\t\t\t-b / determinant,\n\t\t\t-c / determinant,\n\t\t\ta / determinant,\n\t\t\t(c * f - d * e) / determinant,\n\t\t\t-(a * f - b * e) / determinant\n\t\t);\n\t}\n\n\tmultiply(matrix) {\n\t\tlet {a, b, c, d, e, f} = this,\n\t\t\ta2 = matrix.a,\n\t\t\tb2 = matrix.c,\n\t\t\tc2 = matrix.b,\n\t\t\td2 = matrix.d,\n\t\t\te2 = matrix.e,\n\t\t\tf2 = matrix.f;\n\t\treturn _setMatrix(this,\n\t\t\ta2 * a + c2 * c,\n\t\t\ta2 * b + c2 * d,\n\t\t\tb2 * a + d2 * c,\n\t\t\tb2 * b + d2 * d,\n\t\t\te + e2 * a + f2 * c,\n\t\t\tf + e2 * b + f2 * d);\n\t}\n\n\tclone() {\n\t\treturn new Matrix2D(this.a, this.b, this.c, this.d, this.e, this.f);\n\t}\n\n\tequals(matrix) {\n\t\tlet {a, b, c, d, e, f} = this;\n\t\treturn (a === matrix.a && b === matrix.b && c === matrix.c && d === matrix.d && e === matrix.e && f === matrix.f);\n\t}\n\n\tapply(point, decoratee={}) {\n\t\tlet {x, y} = point,\n\t\t\t{a, b, c, d, e, f} = this;\n\t\tdecoratee.x = (x * a + y * c + e) || 0;\n\t\tdecoratee.y = (x * b + y * d + f) || 0;\n\t\treturn decoratee;\n\t}\n\n}\n\n// Feed in an element and it'll return a 2D matrix (optionally inverted) so that you can translate between coordinate spaces.\n// Inverting lets you translate a global point into a local coordinate space. No inverting lets you go the other way.\n// We needed this to work around various browser bugs, like Firefox doesn't accurately report getScreenCTM() when there\n// are transforms applied to ancestor elements.\n// The matrix math to convert any x/y coordinate is as follows, which is wrapped in a convenient apply() method of Matrix2D above:\n//     tx = m.a * x + m.c * y + m.e\n//     ty = m.b * x + m.d * y + m.f\nexport function getGlobalMatrix(element, inverse, adjustGOffset, includeScrollInFixed) { // adjustGOffset is typically used only when grabbing an element's PARENT's global matrix, and it ignores the x/y offset of any SVG <g> elements because they behave in a special way.\n\tif (!element || !element.parentNode || (_doc || _setDoc(element)).documentElement === element) {\n\t\treturn new Matrix2D();\n\t}\n\tlet zeroScales = _forceNonZeroScale(element),\n\t\tsvg = _svgOwner(element),\n\t\ttemps = svg ? _svgTemps : _divTemps,\n\t\tcontainer = _placeSiblings(element, adjustGOffset),\n\t\tb1 = temps[0].getBoundingClientRect(),\n\t\tb2 = temps[1].getBoundingClientRect(),\n\t\tb3 = temps[2].getBoundingClientRect(),\n\t\tparent = container.parentNode,\n\t\tisFixed = !includeScrollInFixed && _isFixed(element),\n\t\tm = new Matrix2D(\n\t\t\t(b2.left - b1.left) / 100,\n\t\t\t(b2.top - b1.top) / 100,\n\t\t\t(b3.left - b1.left) / 100,\n\t\t\t(b3.top - b1.top) / 100,\n\t\t\tb1.left + (isFixed ? 0 : _getDocScrollLeft()),\n\t\t\tb1.top + (isFixed ? 0 : _getDocScrollTop())\n\t\t);\n\tparent.removeChild(container);\n\tif (zeroScales) {\n\t\tb1 = zeroScales.length;\n\t\twhile (b1--) {\n\t\t\tb2 = zeroScales[b1];\n\t\t\tb2.scaleX = b2.scaleY = 0;\n\t\t\tb2.renderTransform(1, b2);\n\t\t}\n\t}\n\treturn inverse ? m.inverse() : m;\n}\n\nexport { _getDocScrollTop, _getDocScrollLeft, _setDoc, _isFixed, _getCTM };\n\n// export function getMatrix(element) {\n// \t_doc || _setDoc(element);\n// \tlet m = (_win.getComputedStyle(element)[_transformProp] + \"\").substr(7).match(/[-.]*\\d+[.e\\-+]*\\d*[e\\-\\+]*\\d*/g),\n// \t\tis2D = m && m.length === 6;\n// \treturn !m || m.length < 6 ? new Matrix2D() : new Matrix2D(+m[0], +m[1], +m[is2D ? 2 : 4], +m[is2D ? 3 : 5], +m[is2D ? 4 : 12], +m[is2D ? 5 : 13]);\n// }"],"mappings":"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"},"metadata":{},"sourceType":"module","externalDependencies":[]}