{"version":3,"names":["getTimeGivenProgression","p0","p1","p2","p3","progression","solveCubicBezier","map","tValue","solveCubicParametricEquation","t","partA","Math","pow","partB","partC","refPoint","roots","solveCubicEquation","filter","root","solveQuadraticEquation","a","b","c","discriminant","sqrt","d","p","q","r","phi","acos","s","cos","PI"],"sources":["node_modules/@ionic/core/dist/collection/utils/animation/cubic-bezier.js"],"sourcesContent":["/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n/**\n * Based on:\n * https://stackoverflow.com/questions/7348009/y-coordinate-for-a-given-x-cubic-bezier\n * https://math.stackexchange.com/questions/26846/is-there-an-explicit-form-for-cubic-b%C3%A9zier-curves\n */\n/**\n * EXPERIMENTAL\n * Given a cubic-bezier curve, get the x value (time) given\n * the y value (progression).\n * Ex: cubic-bezier(0.32, 0.72, 0, 1);\n * P0: (0, 0)\n * P1: (0.32, 0.72)\n * P2: (0, 1)\n * P3: (1, 1)\n *\n * If you give a cubic bezier curve that never reaches the\n * provided progression, this function will return an empty array.\n */\nexport const getTimeGivenProgression = (p0, p1, p2, p3, progression) => {\n return solveCubicBezier(p0[1], p1[1], p2[1], p3[1], progression).map((tValue) => {\n return solveCubicParametricEquation(p0[0], p1[0], p2[0], p3[0], tValue);\n });\n};\n/**\n * Solve a cubic equation in one dimension (time)\n */\nconst solveCubicParametricEquation = (p0, p1, p2, p3, t) => {\n const partA = 3 * p1 * Math.pow(t - 1, 2);\n const partB = -3 * p2 * t + 3 * p2 + p3 * t;\n const partC = p0 * Math.pow(t - 1, 3);\n return t * (partA + t * partB) - partC;\n};\n/**\n * Find the `t` value for a cubic bezier using Cardano's formula\n */\nconst solveCubicBezier = (p0, p1, p2, p3, refPoint) => {\n p0 -= refPoint;\n p1 -= refPoint;\n p2 -= refPoint;\n p3 -= refPoint;\n const roots = solveCubicEquation(p3 - 3 * p2 + 3 * p1 - p0, 3 * p2 - 6 * p1 + 3 * p0, 3 * p1 - 3 * p0, p0);\n return roots.filter((root) => root >= 0 && root <= 1);\n};\nconst solveQuadraticEquation = (a, b, c) => {\n const discriminant = b * b - 4 * a * c;\n if (discriminant < 0) {\n return [];\n }\n else {\n return [(-b + Math.sqrt(discriminant)) / (2 * a), (-b - Math.sqrt(discriminant)) / (2 * a)];\n }\n};\nconst solveCubicEquation = (a, b, c, d) => {\n if (a === 0) {\n return solveQuadraticEquation(b, c, d);\n }\n b /= a;\n c /= a;\n d /= a;\n const p = (3 * c - b * b) / 3;\n const q = (2 * b * b * b - 9 * b * c + 27 * d) / 27;\n if (p === 0) {\n return [Math.pow(-q, 1 / 3)];\n }\n else if (q === 0) {\n return [Math.sqrt(-p), -Math.sqrt(-p)];\n }\n const discriminant = Math.pow(q / 2, 2) + Math.pow(p / 3, 3);\n if (discriminant === 0) {\n return [Math.pow(q / 2, 1 / 2) - b / 3];\n }\n else if (discriminant > 0) {\n return [\n Math.pow(-(q / 2) + Math.sqrt(discriminant), 1 / 3) - Math.pow(q / 2 + Math.sqrt(discriminant), 1 / 3) - b / 3,\n ];\n }\n const r = Math.sqrt(Math.pow(-(p / 3), 3));\n const phi = Math.acos(-(q / (2 * Math.sqrt(Math.pow(-(p / 3), 3)))));\n const s = 2 * Math.pow(r, 1 / 3);\n return [\n s * Math.cos(phi / 3) - b / 3,\n s * Math.cos((phi + 2 * Math.PI) / 3) - b / 3,\n s * Math.cos((phi + 4 * Math.PI) / 3) - b / 3,\n ];\n};\n"],"mappings":";;;AAqBY,MAACA,EAA0B,CAACC,EAAIC,EAAIC,EAAIC,EAAIC,IAC7CC,EAAiBL,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIC,GAAaE,KAAKC,GAC3DC,EAA6BR,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAII,KAMxE,MAAMC,EAA+B,CAACR,EAAIC,EAAIC,EAAIC,EAAIM,KAClD,MAAMC,EAAQ,EAAIT,EAAKU,KAAKC,IAAIH,EAAI,EAAG,GACvC,MAAMI,GAAS,EAAIX,EAAKO,EAAI,EAAIP,EAAKC,EAAKM,EAC1C,MAAMK,EAAQd,EAAKW,KAAKC,IAAIH,EAAI,EAAG,GACnC,OAAOA,GAAKC,EAAQD,EAAII,GAASC,CAAK,EAK1C,MAAMT,EAAmB,CAACL,EAAIC,EAAIC,EAAIC,EAAIY,KACtCf,GAAMe,EACNd,GAAMc,EACNb,GAAMa,EACNZ,GAAMY,EACN,MAAMC,EAAQC,EAAmBd,EAAK,EAAID,EAAK,EAAID,EAAKD,EAAI,EAAIE,EAAK,EAAID,EAAK,EAAID,EAAI,EAAIC,EAAK,EAAID,EAAIA,GACvG,OAAOgB,EAAME,QAAQC,GAASA,GAAQ,GAAKA,GAAQ,GAAE,EAEzD,MAAMC,EAAyB,CAACC,EAAGC,EAAGC,KAClC,MAAMC,EAAeF,EAAIA,EAAI,EAAID,EAAIE,EACrC,GAAIC,EAAe,EAAG,CAClB,MAAO,EACf,KACS,CACD,MAAO,GAAGF,EAAIX,KAAKc,KAAKD,KAAkB,EAAIH,KAAMC,EAAIX,KAAKc,KAAKD,KAAkB,EAAIH,GAChG,GAEA,MAAMJ,EAAqB,CAACI,EAAGC,EAAGC,EAAGG,KACjC,GAAIL,IAAM,EAAG,CACT,OAAOD,EAAuBE,EAAGC,EAAGG,EAC5C,CACIJ,GAAKD,EACLE,GAAKF,EACLK,GAAKL,EACL,MAAMM,GAAK,EAAIJ,EAAID,EAAIA,GAAK,EAC5B,MAAMM,GAAK,EAAIN,EAAIA,EAAIA,EAAI,EAAIA,EAAIC,EAAI,GAAKG,GAAK,GACjD,GAAIC,IAAM,EAAG,CACT,MAAO,CAAChB,KAAKC,KAAKgB,EAAG,EAAI,GACjC,MACS,GAAIA,IAAM,EAAG,CACd,MAAO,CAACjB,KAAKc,MAAME,IAAKhB,KAAKc,MAAME,GAC3C,CACI,MAAMH,EAAeb,KAAKC,IAAIgB,EAAI,EAAG,GAAKjB,KAAKC,IAAIe,EAAI,EAAG,GAC1D,GAAIH,IAAiB,EAAG,CACpB,MAAO,CAACb,KAAKC,IAAIgB,EAAI,EAAG,EAAI,GAAKN,EAAI,EAC7C,MACS,GAAIE,EAAe,EAAG,CACvB,MAAO,CACHb,KAAKC,MAAMgB,EAAI,GAAKjB,KAAKc,KAAKD,GAAe,EAAI,GAAKb,KAAKC,IAAIgB,EAAI,EAAIjB,KAAKc,KAAKD,GAAe,EAAI,GAAKF,EAAI,EAEzH,CACI,MAAMO,EAAIlB,KAAKc,KAAKd,KAAKC,MAAMe,EAAI,GAAI,IACvC,MAAMG,EAAMnB,KAAKoB,OAAOH,GAAK,EAAIjB,KAAKc,KAAKd,KAAKC,MAAMe,EAAI,GAAI,OAC9D,MAAMK,EAAI,EAAIrB,KAAKC,IAAIiB,EAAG,EAAI,GAC9B,MAAO,CACHG,EAAIrB,KAAKsB,IAAIH,EAAM,GAAKR,EAAI,EAC5BU,EAAIrB,KAAKsB,KAAKH,EAAM,EAAInB,KAAKuB,IAAM,GAAKZ,EAAI,EAC5CU,EAAIrB,KAAKsB,KAAKH,EAAM,EAAInB,KAAKuB,IAAM,GAAKZ,EAAI,EAC/C,S","ignoreList":[]}