{"version":3,"file":"index.cjs","sources":[""],"sourcesContent":["import { getWindow } from \"ssr-window\";\r\n\r\nexport type TGetCSSTransformValuesArgs = Parameters<typeof getCSSTransformValues>;\r\n\r\nexport type TGetCSSTransformValuesReturn = ReturnType<typeof getCSSTransformValues>;\r\n\r\n/**\r\n * Gets an object with `x`, `y`, `z` values of CSS3 transform\r\n * @param el{HTMLElement|Node|Element|Document} DOM element\r\n * @returns {{x: number, y: number, z: number}}\r\n * @throws {TypeError} getCSSTransformValues: el must be an HTMLElement\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/transform\r\n * @example\r\n * // How to get `translate3d` values of a `div`?\r\n * // <div id=\"block\" style=\"transform: translate3d(10px, 15px, 35px);\"></div>\r\n * const block = document.getElementById(\"block\");\r\n * const values = getCSSTransformValues(block);\n * console.log(values); // => { x: 10, y: 15, z: 35 }\n * @example\n * // Read the current translated position before continuing a drag animation\n * const { x, y } = getCSSTransformValues(draggableElement);\n * draggableElement.style.transform = `translate(${x + 20}px, ${y}px)`;\n */\nexport const getCSSTransformValues = (el: HTMLElement): { x: number; y: number; z: number; } => {\r\n  if (!el || typeof (el as any).style !== \"object\") {\r\n    throw new TypeError(\"getCSSTransformValues: el must be an HTMLElement\");\r\n  }\r\n\r\n  const style = getWindow().getComputedStyle(el);\r\n  const matrix = style.transform;\r\n\r\n  // eslint-disable-next-line no-nested-ternary\r\n  const matrixType = matrix === \"none\" ? \"none\" : matrix.includes(\"3d\") ? \"3d\" : \"2d\";\r\n\r\n  const getValues = (index: number) => {\n    const val = matrix.match(/matrix.*\\((.+)\\)/);\n    const value = val?.[1].split(\",\")[index];\n    if (value === undefined) {\n      return 0;\n    }\n    const parsed = Number(value.trim());\n    return Number.isFinite(parsed) ? parsed : 0;\n  };\n\r\n  switch (matrixType) {\r\n    case \"2d\": {\r\n      return {\r\n        x: getValues(4),\r\n        y: getValues(5),\r\n        z: 0,\r\n      };\r\n    }\r\n    case \"3d\": {\r\n      return {\r\n        x: getValues(12),\r\n        y: getValues(13),\r\n        z: getValues(14),\r\n      };\r\n    }\r\n    case \"none\":\r\n    default: {\r\n      return {\r\n        x: 0,\r\n        y: 0,\r\n        z: 0,\r\n      };\r\n    }\r\n  }\r\n};\r\n"],"names":["getCSSTransformValues","el","style","TypeError","getWindow","getComputedStyle","matrix","transform","matrixType","includes","getValues","index","val","match","value","split","undefined","parsed","Number","trim","isFinite","x","y","z"],"mappings":"6FAuBO,MAAMA,sBAAyBC,KACpC,IAAKA,WAAcA,GAAWC,QAAU,SACtC,MAAM,IAAIC,UAAU,oDAGtB,MAAMD,MAAQE,UAAAA,YAAYC,iBAAiBJ,IAC3C,MAAMK,OAASJ,MAAMK,UAGrB,MAAMC,WAAaF,SAAW,OAAS,OAASA,OAAOG,SAAS,MAAQ,KAAO,KAE/E,MAAMC,UAAaC,QACjB,MAAMC,IAAMN,OAAOO,MAAM,oBACzB,MAAMC,MAAQF,MAAM,GAAGG,MAAM,KAAKJ,OAClC,GAAIG,aAAUE,EACZ,OAAO,EAET,MAAMC,OAASC,OAAOJ,MAAMK,QAC5B,OAAOD,OAAOE,SAASH,QAAUA,OAAS,GAG5C,OAAQT,YACN,IAAK,KACH,MAAO,CACLa,EAAGX,UAAU,GACbY,EAAGZ,UAAU,GACba,EAAG,GAGP,IAAK,KACH,MAAO,CACLF,EAAGX,UAAU,IACbY,EAAGZ,UAAU,IACba,EAAGb,UAAU,KAGjB,IAAK,OACL,QACE,MAAO,CACLW,EAAG,EACHC,EAAG,EACHC,EAAG"}