{"version":3,"file":"parse-transform.mjs","sources":["../../../../src/render/dom/parse-transform.ts"],"sourcesContent":["import { transformPropOrder } from \"../utils/keys-transform\"\n\nconst radToDeg = (rad: number) => (rad * 180) / Math.PI\n\ntype MatrixParser = (values: number[]) => number\n\ntype MatrixParsers = Record<\n    (typeof transformPropOrder)[number],\n    number | MatrixParser\n>\n\nconst rotate = (v: number[]) => {\n    const angle = radToDeg(Math.atan2(v[1], v[0]))\n    return rebaseAngle(angle)\n}\n\nconst matrix2dParsers: MatrixParsers = {\n    x: 4,\n    y: 5,\n    translateX: 4,\n    translateY: 5,\n    scaleX: 0,\n    scaleY: 3,\n    scale: (v) => (Math.abs(v[0]) + Math.abs(v[3])) / 2,\n    rotate,\n    rotateZ: rotate,\n    skewX: (v) => radToDeg(Math.atan(v[1])),\n    skewY: (v) => radToDeg(Math.atan(v[2])),\n    skew: (v) => (Math.abs(v[1]) + Math.abs(v[2])) / 2,\n} as const\n\nconst rebaseAngle = (angle: number) => {\n    angle = angle % 360\n    if (angle < 0) angle += 360\n    return angle\n}\n\nconst rotateZ = rotate\n\nconst scaleX = (v: number[]) => Math.sqrt(v[0] * v[0] + v[1] * v[1])\nconst scaleY = (v: number[]) => Math.sqrt(v[4] * v[4] + v[5] * v[5])\n\nconst matrix3dParsers: MatrixParsers = {\n    x: 12,\n    y: 13,\n    z: 14,\n    translateX: 12,\n    translateY: 13,\n    translateZ: 14,\n    scaleX,\n    scaleY,\n    scale: (v) => (scaleX(v) + scaleY(v)) / 2,\n    rotateX: (v) => rebaseAngle(radToDeg(Math.atan2(v[6], v[5]))),\n    rotateY: (v) => rebaseAngle(radToDeg(Math.atan2(-v[2], v[0]))),\n    rotateZ,\n    rotate: rotateZ,\n    skewX: (v) => radToDeg(Math.atan(v[4])),\n    skewY: (v) => radToDeg(Math.atan(v[1])),\n    skew: (v) => (Math.abs(v[1]) + Math.abs(v[4])) / 2,\n} as const\n\nexport function defaultTransformValue(name: string): number {\n    return name.includes(\"scale\") ? 1 : 0\n}\n\nexport function parseValueFromTransform(\n    transform: string | undefined,\n    name: string\n): number {\n    if (!transform || transform === \"none\") {\n        return defaultTransformValue(name)\n    }\n\n    const matrix3dMatch = transform.match(/^matrix3d\\(([-\\d.e\\s,]+)\\)$/u)\n\n    let parsers: MatrixParsers\n    let match: RegExpMatchArray | null\n\n    if (matrix3dMatch) {\n        parsers = matrix3dParsers\n        match = matrix3dMatch\n    } else {\n        const matrix2dMatch = transform.match(/^matrix\\(([-\\d.e\\s,]+)\\)$/u)\n\n        parsers = matrix2dParsers\n        match = matrix2dMatch\n    }\n\n    if (!match) {\n        return defaultTransformValue(name)\n    }\n\n    const valueParser = parsers[name]\n    const values = match[1].split(\",\").map(convertTransformToNumber)\n\n    return typeof valueParser === \"function\"\n        ? valueParser(values)\n        : values[valueParser]\n}\n\nexport const readTransformValue = (instance: HTMLElement, name: string) => {\n    const { transform = \"none\" } = getComputedStyle(instance)\n    return parseValueFromTransform(transform, name)\n}\n\nfunction convertTransformToNumber(value: string): number {\n    return parseFloat(value.trim())\n}\n"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAAG,CAAC,GAAW,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,EAAE,CAAA;AASvD,MAAM,MAAM,GAAG,CAAC,CAAW,KAAI;AAC3B,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9C,IAAA,OAAO,WAAW,CAAC,KAAK,CAAC,CAAA;AAC7B,CAAC,CAAA;AAED,MAAM,eAAe,GAAkB;AACnC,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnD,MAAM;AACN,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,KAAK,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,IAAA,KAAK,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,IAAA,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;CAC5C,CAAA;AAEV,MAAM,WAAW,GAAG,CAAC,KAAa,KAAI;AAClC,IAAA,KAAK,GAAG,KAAK,GAAG,GAAG,CAAA;IACnB,IAAI,KAAK,GAAG,CAAC;QAAE,KAAK,IAAI,GAAG,CAAA;AAC3B,IAAA,OAAO,KAAK,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,MAAM,CAAA;AAEtB,MAAM,MAAM,GAAG,CAAC,CAAW,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACpE,MAAM,MAAM,GAAG,CAAC,CAAW,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAEpE,MAAM,eAAe,GAAkB;AACnC,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,UAAU,EAAE,EAAE;IACd,MAAM;IACN,MAAM;AACN,IAAA,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,OAAO,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO;AACP,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,KAAK,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,IAAA,KAAK,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,IAAA,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;CAC5C,CAAA;AAEJ,SAAU,qBAAqB,CAAC,IAAY,EAAA;AAC9C,IAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACzC,CAAC;AAEe,SAAA,uBAAuB,CACnC,SAA6B,EAC7B,IAAY,EAAA;AAEZ,IAAA,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,MAAM,EAAE;AACpC,QAAA,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAA;KACrC;IAED,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAA;AAErE,IAAA,IAAI,OAAsB,CAAA;AAC1B,IAAA,IAAI,KAA8B,CAAA;IAElC,IAAI,aAAa,EAAE;QACf,OAAO,GAAG,eAAe,CAAA;QACzB,KAAK,GAAG,aAAa,CAAA;KACxB;SAAM;QACH,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;QAEnE,OAAO,GAAG,eAAe,CAAA;QACzB,KAAK,GAAG,aAAa,CAAA;KACxB;IAED,IAAI,CAAC,KAAK,EAAE;AACR,QAAA,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAA;KACrC;AAED,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AACjC,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;IAEhE,OAAO,OAAO,WAAW,KAAK,UAAU;AACpC,UAAE,WAAW,CAAC,MAAM,CAAC;AACrB,UAAE,MAAM,CAAC,WAAW,CAAC,CAAA;AAC7B,CAAC;MAEY,kBAAkB,GAAG,CAAC,QAAqB,EAAE,IAAY,KAAI;IACtE,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;AACzD,IAAA,OAAO,uBAAuB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AACnD,EAAC;AAED,SAAS,wBAAwB,CAAC,KAAa,EAAA;AAC3C,IAAA,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;AACnC;;;;"}