@shopify/react-native-skia 0.1.182 → 0.1.183

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/lib/commonjs/animation/functions/interpolate.js +10 -1
  2. package/lib/commonjs/animation/functions/interpolate.js.map +1 -1
  3. package/lib/commonjs/animation/functions/interpolateColors.js +6 -0
  4. package/lib/commonjs/animation/functions/interpolateColors.js.map +1 -1
  5. package/lib/commonjs/animation/functions/interpolatePaths.js +4 -0
  6. package/lib/commonjs/animation/functions/interpolatePaths.js.map +1 -1
  7. package/lib/commonjs/animation/functions/interpolateVector.js +13 -5
  8. package/lib/commonjs/animation/functions/interpolateVector.js.map +1 -1
  9. package/lib/commonjs/external/reanimated/useSharedValueEffect.js +5 -2
  10. package/lib/commonjs/external/reanimated/useSharedValueEffect.js.map +1 -1
  11. package/lib/commonjs/renderer/processors/math/Coordinates.js +42 -18
  12. package/lib/commonjs/renderer/processors/math/Coordinates.js.map +1 -1
  13. package/lib/commonjs/renderer/processors/math/Math.js +10 -2
  14. package/lib/commonjs/renderer/processors/math/Math.js.map +1 -1
  15. package/lib/commonjs/renderer/processors/math/Transforms.js +2 -0
  16. package/lib/commonjs/renderer/processors/math/Transforms.js.map +1 -1
  17. package/lib/commonjs/renderer/typeddash.js +2 -0
  18. package/lib/commonjs/renderer/typeddash.js.map +1 -1
  19. package/lib/commonjs/skia/core/Vector.js +24 -4
  20. package/lib/commonjs/skia/core/Vector.js.map +1 -1
  21. package/lib/module/animation/functions/interpolate.js +10 -1
  22. package/lib/module/animation/functions/interpolate.js.map +1 -1
  23. package/lib/module/animation/functions/interpolateColors.js +6 -0
  24. package/lib/module/animation/functions/interpolateColors.js.map +1 -1
  25. package/lib/module/animation/functions/interpolatePaths.js +4 -0
  26. package/lib/module/animation/functions/interpolatePaths.js.map +1 -1
  27. package/lib/module/animation/functions/interpolateVector.js +13 -5
  28. package/lib/module/animation/functions/interpolateVector.js.map +1 -1
  29. package/lib/module/external/reanimated/useSharedValueEffect.js +6 -3
  30. package/lib/module/external/reanimated/useSharedValueEffect.js.map +1 -1
  31. package/lib/module/renderer/processors/math/Coordinates.js +42 -18
  32. package/lib/module/renderer/processors/math/Coordinates.js.map +1 -1
  33. package/lib/module/renderer/processors/math/Math.js +10 -2
  34. package/lib/module/renderer/processors/math/Math.js.map +1 -1
  35. package/lib/module/renderer/processors/math/Transforms.js +2 -0
  36. package/lib/module/renderer/processors/math/Transforms.js.map +1 -1
  37. package/lib/module/renderer/typeddash.js +2 -0
  38. package/lib/module/renderer/typeddash.js.map +1 -1
  39. package/lib/module/skia/core/Vector.js +24 -4
  40. package/lib/module/skia/core/Vector.js.map +1 -1
  41. package/package.json +1 -1
  42. package/react-native-skia.podspec +2 -6
  43. package/src/animation/functions/interpolate.ts +5 -0
  44. package/src/animation/functions/interpolateColors.ts +3 -0
  45. package/src/animation/functions/interpolatePaths.ts +2 -0
  46. package/src/animation/functions/interpolateVector.ts +21 -16
  47. package/src/external/reanimated/useSharedValueEffect.ts +7 -4
  48. package/src/renderer/processors/math/Coordinates.ts +36 -20
  49. package/src/renderer/processors/math/Math.ts +12 -4
  50. package/src/renderer/processors/math/Transforms.ts +1 -0
  51. package/src/renderer/typeddash.ts +1 -0
  52. package/src/skia/core/Vector.ts +24 -7
@@ -1 +1 @@
1
- {"version":3,"names":["mix","Skia","interpolate","interpolateColorsRGB","value","inputRange","outputRange","r","map","c","g","b","a","Float32Array","interpolateColors","_outputRange","cl","Color","mixColors","x","y","c1","c2"],"sources":["interpolateColors.ts"],"sourcesContent":["import { mix } from \"../../renderer/processors/math\";\nimport type { Color, SkColor } from \"../../skia\";\nimport { Skia } from \"../../skia\";\n\nimport { interpolate } from \"./interpolate\";\n\nconst interpolateColorsRGB = (\n value: number,\n inputRange: number[],\n outputRange: SkColor[]\n) => {\n const r = interpolate(\n value,\n inputRange,\n outputRange.map((c) => c[0]),\n \"clamp\"\n );\n const g = interpolate(\n value,\n inputRange,\n outputRange.map((c) => c[1]),\n \"clamp\"\n );\n const b = interpolate(\n value,\n inputRange,\n outputRange.map((c) => c[2]),\n \"clamp\"\n );\n const a = interpolate(\n value,\n inputRange,\n outputRange.map((c) => c[3]),\n \"clamp\"\n );\n return new Float32Array([r, g, b, a]);\n};\n\nexport const interpolateColors = (\n value: number,\n inputRange: number[],\n _outputRange: Color[]\n) => {\n const outputRange = _outputRange.map((cl) => Skia.Color(cl));\n return interpolateColorsRGB(value, inputRange, outputRange);\n};\n\nexport const mixColors = (value: number, x: Color, y: Color) => {\n const c1 = Skia.Color(x);\n const c2 = Skia.Color(y);\n return new Float32Array([\n mix(value, c1[0], c2[0]),\n mix(value, c1[1], c2[1]),\n mix(value, c1[2], c2[2]),\n mix(value, c1[3], c2[3]),\n ]);\n};\n"],"mappings":"AAAA,SAASA,GAAT,QAAoB,gCAApB;AAEA,SAASC,IAAT,QAAqB,YAArB;AAEA,SAASC,WAAT,QAA4B,eAA5B;;AAEA,MAAMC,oBAAoB,GAAG,CAC3BC,KAD2B,EAE3BC,UAF2B,EAG3BC,WAH2B,KAIxB;EACH,MAAMC,CAAC,GAAGL,WAAW,CACnBE,KADmB,EAEnBC,UAFmB,EAGnBC,WAAW,CAACE,GAAZ,CAAiBC,CAAD,IAAOA,CAAC,CAAC,CAAD,CAAxB,CAHmB,EAInB,OAJmB,CAArB;EAMA,MAAMC,CAAC,GAAGR,WAAW,CACnBE,KADmB,EAEnBC,UAFmB,EAGnBC,WAAW,CAACE,GAAZ,CAAiBC,CAAD,IAAOA,CAAC,CAAC,CAAD,CAAxB,CAHmB,EAInB,OAJmB,CAArB;EAMA,MAAME,CAAC,GAAGT,WAAW,CACnBE,KADmB,EAEnBC,UAFmB,EAGnBC,WAAW,CAACE,GAAZ,CAAiBC,CAAD,IAAOA,CAAC,CAAC,CAAD,CAAxB,CAHmB,EAInB,OAJmB,CAArB;EAMA,MAAMG,CAAC,GAAGV,WAAW,CACnBE,KADmB,EAEnBC,UAFmB,EAGnBC,WAAW,CAACE,GAAZ,CAAiBC,CAAD,IAAOA,CAAC,CAAC,CAAD,CAAxB,CAHmB,EAInB,OAJmB,CAArB;EAMA,OAAO,IAAII,YAAJ,CAAiB,CAACN,CAAD,EAAIG,CAAJ,EAAOC,CAAP,EAAUC,CAAV,CAAjB,CAAP;AACD,CA9BD;;AAgCA,OAAO,MAAME,iBAAiB,GAAG,CAC/BV,KAD+B,EAE/BC,UAF+B,EAG/BU,YAH+B,KAI5B;EACH,MAAMT,WAAW,GAAGS,YAAY,CAACP,GAAb,CAAkBQ,EAAD,IAAQf,IAAI,CAACgB,KAAL,CAAWD,EAAX,CAAzB,CAApB;;EACA,OAAOb,oBAAoB,CAACC,KAAD,EAAQC,UAAR,EAAoBC,WAApB,CAA3B;AACD,CAPM;AASP,OAAO,MAAMY,SAAS,GAAG,CAACd,KAAD,EAAgBe,CAAhB,EAA0BC,CAA1B,KAAuC;EAC9D,MAAMC,EAAE,GAAGpB,IAAI,CAACgB,KAAL,CAAWE,CAAX,CAAX;EACA,MAAMG,EAAE,GAAGrB,IAAI,CAACgB,KAAL,CAAWG,CAAX,CAAX;EACA,OAAO,IAAIP,YAAJ,CAAiB,CACtBb,GAAG,CAACI,KAAD,EAAQiB,EAAE,CAAC,CAAD,CAAV,EAAeC,EAAE,CAAC,CAAD,CAAjB,CADmB,EAEtBtB,GAAG,CAACI,KAAD,EAAQiB,EAAE,CAAC,CAAD,CAAV,EAAeC,EAAE,CAAC,CAAD,CAAjB,CAFmB,EAGtBtB,GAAG,CAACI,KAAD,EAAQiB,EAAE,CAAC,CAAD,CAAV,EAAeC,EAAE,CAAC,CAAD,CAAjB,CAHmB,EAItBtB,GAAG,CAACI,KAAD,EAAQiB,EAAE,CAAC,CAAD,CAAV,EAAeC,EAAE,CAAC,CAAD,CAAjB,CAJmB,CAAjB,CAAP;AAMD,CATM"}
1
+ {"version":3,"names":["mix","Skia","interpolate","interpolateColorsRGB","value","inputRange","outputRange","r","map","c","g","b","a","Float32Array","interpolateColors","_outputRange","cl","Color","mixColors","x","y","c1","c2"],"sources":["interpolateColors.ts"],"sourcesContent":["import { mix } from \"../../renderer/processors/math\";\nimport type { Color, SkColor } from \"../../skia\";\nimport { Skia } from \"../../skia\";\n\nimport { interpolate } from \"./interpolate\";\n\nconst interpolateColorsRGB = (\n value: number,\n inputRange: number[],\n outputRange: SkColor[]\n) => {\n \"worklet\";\n const r = interpolate(\n value,\n inputRange,\n outputRange.map((c) => c[0]),\n \"clamp\"\n );\n const g = interpolate(\n value,\n inputRange,\n outputRange.map((c) => c[1]),\n \"clamp\"\n );\n const b = interpolate(\n value,\n inputRange,\n outputRange.map((c) => c[2]),\n \"clamp\"\n );\n const a = interpolate(\n value,\n inputRange,\n outputRange.map((c) => c[3]),\n \"clamp\"\n );\n return new Float32Array([r, g, b, a]);\n};\n\nexport const interpolateColors = (\n value: number,\n inputRange: number[],\n _outputRange: Color[]\n) => {\n \"worklet\";\n const outputRange = _outputRange.map((cl) => Skia.Color(cl));\n return interpolateColorsRGB(value, inputRange, outputRange);\n};\n\nexport const mixColors = (value: number, x: Color, y: Color) => {\n \"worklet\";\n const c1 = Skia.Color(x);\n const c2 = Skia.Color(y);\n return new Float32Array([\n mix(value, c1[0], c2[0]),\n mix(value, c1[1], c2[1]),\n mix(value, c1[2], c2[2]),\n mix(value, c1[3], c2[3]),\n ]);\n};\n"],"mappings":"AAAA,SAASA,GAAT,QAAoB,gCAApB;AAEA,SAASC,IAAT,QAAqB,YAArB;AAEA,SAASC,WAAT,QAA4B,eAA5B;;AAEA,MAAMC,oBAAoB,GAAG,CAC3BC,KAD2B,EAE3BC,UAF2B,EAG3BC,WAH2B,KAIxB;EACH;;EACA,MAAMC,CAAC,GAAGL,WAAW,CACnBE,KADmB,EAEnBC,UAFmB,EAGnBC,WAAW,CAACE,GAAZ,CAAiBC,CAAD,IAAOA,CAAC,CAAC,CAAD,CAAxB,CAHmB,EAInB,OAJmB,CAArB;EAMA,MAAMC,CAAC,GAAGR,WAAW,CACnBE,KADmB,EAEnBC,UAFmB,EAGnBC,WAAW,CAACE,GAAZ,CAAiBC,CAAD,IAAOA,CAAC,CAAC,CAAD,CAAxB,CAHmB,EAInB,OAJmB,CAArB;EAMA,MAAME,CAAC,GAAGT,WAAW,CACnBE,KADmB,EAEnBC,UAFmB,EAGnBC,WAAW,CAACE,GAAZ,CAAiBC,CAAD,IAAOA,CAAC,CAAC,CAAD,CAAxB,CAHmB,EAInB,OAJmB,CAArB;EAMA,MAAMG,CAAC,GAAGV,WAAW,CACnBE,KADmB,EAEnBC,UAFmB,EAGnBC,WAAW,CAACE,GAAZ,CAAiBC,CAAD,IAAOA,CAAC,CAAC,CAAD,CAAxB,CAHmB,EAInB,OAJmB,CAArB;EAMA,OAAO,IAAII,YAAJ,CAAiB,CAACN,CAAD,EAAIG,CAAJ,EAAOC,CAAP,EAAUC,CAAV,CAAjB,CAAP;AACD,CA/BD;;AAiCA,OAAO,MAAME,iBAAiB,GAAG,CAC/BV,KAD+B,EAE/BC,UAF+B,EAG/BU,YAH+B,KAI5B;EACH;;EACA,MAAMT,WAAW,GAAGS,YAAY,CAACP,GAAb,CAAkBQ,EAAD,IAAQf,IAAI,CAACgB,KAAL,CAAWD,EAAX,CAAzB,CAApB;;EACA,OAAOb,oBAAoB,CAACC,KAAD,EAAQC,UAAR,EAAoBC,WAApB,CAA3B;AACD,CARM;AAUP,OAAO,MAAMY,SAAS,GAAG,CAACd,KAAD,EAAgBe,CAAhB,EAA0BC,CAA1B,KAAuC;EAC9D;;EACA,MAAMC,EAAE,GAAGpB,IAAI,CAACgB,KAAL,CAAWE,CAAX,CAAX;EACA,MAAMG,EAAE,GAAGrB,IAAI,CAACgB,KAAL,CAAWG,CAAX,CAAX;EACA,OAAO,IAAIP,YAAJ,CAAiB,CACtBb,GAAG,CAACI,KAAD,EAAQiB,EAAE,CAAC,CAAD,CAAV,EAAeC,EAAE,CAAC,CAAD,CAAjB,CADmB,EAEtBtB,GAAG,CAACI,KAAD,EAAQiB,EAAE,CAAC,CAAD,CAAV,EAAeC,EAAE,CAAC,CAAD,CAAjB,CAFmB,EAGtBtB,GAAG,CAACI,KAAD,EAAQiB,EAAE,CAAC,CAAD,CAAV,EAAeC,EAAE,CAAC,CAAD,CAAjB,CAHmB,EAItBtB,GAAG,CAACI,KAAD,EAAQiB,EAAE,CAAC,CAAD,CAAV,EAAeC,EAAE,CAAC,CAAD,CAAjB,CAJmB,CAAjB,CAAP;AAMD,CAVM"}
@@ -2,6 +2,8 @@ import { exhaustiveCheck } from "../../renderer/typeddash";
2
2
  import { validateInterpolationOptions, Extrapolate } from "./interpolate";
3
3
 
4
4
  const lerp = (value, from, to, p1, p2) => {
5
+ "worklet";
6
+
5
7
  const t = (value - from) / (to - from);
6
8
  return p2.interpolate(p1, t);
7
9
  };
@@ -24,6 +26,8 @@ const lerp = (value, from, to, p1, p2) => {
24
26
 
25
27
 
26
28
  export const interpolatePaths = (value, input, outputRange, options) => {
29
+ "worklet";
30
+
27
31
  const extrapolation = validateInterpolationOptions(options);
28
32
 
29
33
  if (value < input[0]) {
@@ -1 +1 @@
1
- {"version":3,"names":["exhaustiveCheck","validateInterpolationOptions","Extrapolate","lerp","value","from","to","p1","p2","t","interpolate","interpolatePaths","input","outputRange","options","extrapolation","extrapolateLeft","CLAMP","EXTEND","IDENTITY","Error","length","extrapolateRight","i"],"sources":["interpolatePaths.ts"],"sourcesContent":["import type { SkPath } from \"../../skia/types\";\nimport { exhaustiveCheck } from \"../../renderer/typeddash\";\n\nimport type { ExtrapolationType } from \"./interpolate\";\nimport { validateInterpolationOptions, Extrapolate } from \"./interpolate\";\n\nconst lerp = (\n value: number,\n from: number,\n to: number,\n p1: SkPath,\n p2: SkPath\n) => {\n const t = (value - from) / (to - from);\n return p2.interpolate(p1, t)!;\n};\n\n/**\n * Maps an input value within a range to an output path within a path range.\n * @param value - The input value.\n * @param inputRange - The range of the input value.\n * @param outputRange - The range of the output path.\n * @param options - Extrapolation options\n * @returns The output path.\n * @example <caption>Map a value between 0 and 1 to a path between two paths.</caption>\n * const path1 = new Path();\n * path1.moveTo(0, 0);\n * path1.lineTo(100, 0);\n * const path2 = new Path();\n * path2.moveTo(0, 0);\n * path2.lineTo(0, 100);\n * const path = interpolatePath(0.5, [0, 1], [path1, path2]);\n */\nexport const interpolatePaths = (\n value: number,\n input: number[],\n outputRange: SkPath[],\n options?: ExtrapolationType\n) => {\n const extrapolation = validateInterpolationOptions(options);\n if (value < input[0]) {\n switch (extrapolation.extrapolateLeft) {\n case Extrapolate.CLAMP:\n return outputRange[0];\n case Extrapolate.EXTEND:\n return lerp(value, input[0], input[1], outputRange[0], outputRange[1]);\n case Extrapolate.IDENTITY:\n throw new Error(\n \"Identity is not a supported extrapolation type for interpolatePaths()\"\n );\n default:\n exhaustiveCheck(extrapolation.extrapolateLeft);\n }\n } else if (value > input[input.length - 1]) {\n switch (extrapolation.extrapolateRight) {\n case Extrapolate.CLAMP:\n return outputRange[outputRange.length - 1];\n case Extrapolate.EXTEND:\n return lerp(\n value,\n input[input.length - 2],\n input[input.length - 1],\n outputRange[input.length - 2],\n outputRange[input.length - 1]\n );\n case Extrapolate.IDENTITY:\n throw new Error(\n \"Identity is not a supported extrapolation type for interpolatePaths()\"\n );\n default:\n exhaustiveCheck(extrapolation.extrapolateRight);\n }\n }\n let i = 0;\n for (; i <= input.length - 1; i++) {\n if (value >= input[i] && value <= input[i + 1]) {\n break;\n }\n }\n return lerp(\n value,\n input[i],\n input[i + 1],\n outputRange[i],\n outputRange[i + 1]\n );\n};\n"],"mappings":"AACA,SAASA,eAAT,QAAgC,0BAAhC;AAGA,SAASC,4BAAT,EAAuCC,WAAvC,QAA0D,eAA1D;;AAEA,MAAMC,IAAI,GAAG,CACXC,KADW,EAEXC,IAFW,EAGXC,EAHW,EAIXC,EAJW,EAKXC,EALW,KAMR;EACH,MAAMC,CAAC,GAAG,CAACL,KAAK,GAAGC,IAAT,KAAkBC,EAAE,GAAGD,IAAvB,CAAV;EACA,OAAOG,EAAE,CAACE,WAAH,CAAeH,EAAf,EAAmBE,CAAnB,CAAP;AACD,CATD;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,OAAO,MAAME,gBAAgB,GAAG,CAC9BP,KAD8B,EAE9BQ,KAF8B,EAG9BC,WAH8B,EAI9BC,OAJ8B,KAK3B;EACH,MAAMC,aAAa,GAAGd,4BAA4B,CAACa,OAAD,CAAlD;;EACA,IAAIV,KAAK,GAAGQ,KAAK,CAAC,CAAD,CAAjB,EAAsB;IACpB,QAAQG,aAAa,CAACC,eAAtB;MACE,KAAKd,WAAW,CAACe,KAAjB;QACE,OAAOJ,WAAW,CAAC,CAAD,CAAlB;;MACF,KAAKX,WAAW,CAACgB,MAAjB;QACE,OAAOf,IAAI,CAACC,KAAD,EAAQQ,KAAK,CAAC,CAAD,CAAb,EAAkBA,KAAK,CAAC,CAAD,CAAvB,EAA4BC,WAAW,CAAC,CAAD,CAAvC,EAA4CA,WAAW,CAAC,CAAD,CAAvD,CAAX;;MACF,KAAKX,WAAW,CAACiB,QAAjB;QACE,MAAM,IAAIC,KAAJ,CACJ,uEADI,CAAN;;MAGF;QACEpB,eAAe,CAACe,aAAa,CAACC,eAAf,CAAf;IAVJ;EAYD,CAbD,MAaO,IAAIZ,KAAK,GAAGQ,KAAK,CAACA,KAAK,CAACS,MAAN,GAAe,CAAhB,CAAjB,EAAqC;IAC1C,QAAQN,aAAa,CAACO,gBAAtB;MACE,KAAKpB,WAAW,CAACe,KAAjB;QACE,OAAOJ,WAAW,CAACA,WAAW,CAACQ,MAAZ,GAAqB,CAAtB,CAAlB;;MACF,KAAKnB,WAAW,CAACgB,MAAjB;QACE,OAAOf,IAAI,CACTC,KADS,EAETQ,KAAK,CAACA,KAAK,CAACS,MAAN,GAAe,CAAhB,CAFI,EAGTT,KAAK,CAACA,KAAK,CAACS,MAAN,GAAe,CAAhB,CAHI,EAITR,WAAW,CAACD,KAAK,CAACS,MAAN,GAAe,CAAhB,CAJF,EAKTR,WAAW,CAACD,KAAK,CAACS,MAAN,GAAe,CAAhB,CALF,CAAX;;MAOF,KAAKnB,WAAW,CAACiB,QAAjB;QACE,MAAM,IAAIC,KAAJ,CACJ,uEADI,CAAN;;MAGF;QACEpB,eAAe,CAACe,aAAa,CAACO,gBAAf,CAAf;IAhBJ;EAkBD;;EACD,IAAIC,CAAC,GAAG,CAAR;;EACA,OAAOA,CAAC,IAAIX,KAAK,CAACS,MAAN,GAAe,CAA3B,EAA8BE,CAAC,EAA/B,EAAmC;IACjC,IAAInB,KAAK,IAAIQ,KAAK,CAACW,CAAD,CAAd,IAAqBnB,KAAK,IAAIQ,KAAK,CAACW,CAAC,GAAG,CAAL,CAAvC,EAAgD;MAC9C;IACD;EACF;;EACD,OAAOpB,IAAI,CACTC,KADS,EAETQ,KAAK,CAACW,CAAD,CAFI,EAGTX,KAAK,CAACW,CAAC,GAAG,CAAL,CAHI,EAITV,WAAW,CAACU,CAAD,CAJF,EAKTV,WAAW,CAACU,CAAC,GAAG,CAAL,CALF,CAAX;AAOD,CArDM"}
1
+ {"version":3,"names":["exhaustiveCheck","validateInterpolationOptions","Extrapolate","lerp","value","from","to","p1","p2","t","interpolate","interpolatePaths","input","outputRange","options","extrapolation","extrapolateLeft","CLAMP","EXTEND","IDENTITY","Error","length","extrapolateRight","i"],"sources":["interpolatePaths.ts"],"sourcesContent":["import type { SkPath } from \"../../skia/types\";\nimport { exhaustiveCheck } from \"../../renderer/typeddash\";\n\nimport type { ExtrapolationType } from \"./interpolate\";\nimport { validateInterpolationOptions, Extrapolate } from \"./interpolate\";\n\nconst lerp = (\n value: number,\n from: number,\n to: number,\n p1: SkPath,\n p2: SkPath\n) => {\n \"worklet\";\n const t = (value - from) / (to - from);\n return p2.interpolate(p1, t)!;\n};\n\n/**\n * Maps an input value within a range to an output path within a path range.\n * @param value - The input value.\n * @param inputRange - The range of the input value.\n * @param outputRange - The range of the output path.\n * @param options - Extrapolation options\n * @returns The output path.\n * @example <caption>Map a value between 0 and 1 to a path between two paths.</caption>\n * const path1 = new Path();\n * path1.moveTo(0, 0);\n * path1.lineTo(100, 0);\n * const path2 = new Path();\n * path2.moveTo(0, 0);\n * path2.lineTo(0, 100);\n * const path = interpolatePath(0.5, [0, 1], [path1, path2]);\n */\nexport const interpolatePaths = (\n value: number,\n input: number[],\n outputRange: SkPath[],\n options?: ExtrapolationType\n) => {\n \"worklet\";\n const extrapolation = validateInterpolationOptions(options);\n if (value < input[0]) {\n switch (extrapolation.extrapolateLeft) {\n case Extrapolate.CLAMP:\n return outputRange[0];\n case Extrapolate.EXTEND:\n return lerp(value, input[0], input[1], outputRange[0], outputRange[1]);\n case Extrapolate.IDENTITY:\n throw new Error(\n \"Identity is not a supported extrapolation type for interpolatePaths()\"\n );\n default:\n exhaustiveCheck(extrapolation.extrapolateLeft);\n }\n } else if (value > input[input.length - 1]) {\n switch (extrapolation.extrapolateRight) {\n case Extrapolate.CLAMP:\n return outputRange[outputRange.length - 1];\n case Extrapolate.EXTEND:\n return lerp(\n value,\n input[input.length - 2],\n input[input.length - 1],\n outputRange[input.length - 2],\n outputRange[input.length - 1]\n );\n case Extrapolate.IDENTITY:\n throw new Error(\n \"Identity is not a supported extrapolation type for interpolatePaths()\"\n );\n default:\n exhaustiveCheck(extrapolation.extrapolateRight);\n }\n }\n let i = 0;\n for (; i <= input.length - 1; i++) {\n if (value >= input[i] && value <= input[i + 1]) {\n break;\n }\n }\n return lerp(\n value,\n input[i],\n input[i + 1],\n outputRange[i],\n outputRange[i + 1]\n );\n};\n"],"mappings":"AACA,SAASA,eAAT,QAAgC,0BAAhC;AAGA,SAASC,4BAAT,EAAuCC,WAAvC,QAA0D,eAA1D;;AAEA,MAAMC,IAAI,GAAG,CACXC,KADW,EAEXC,IAFW,EAGXC,EAHW,EAIXC,EAJW,EAKXC,EALW,KAMR;EACH;;EACA,MAAMC,CAAC,GAAG,CAACL,KAAK,GAAGC,IAAT,KAAkBC,EAAE,GAAGD,IAAvB,CAAV;EACA,OAAOG,EAAE,CAACE,WAAH,CAAeH,EAAf,EAAmBE,CAAnB,CAAP;AACD,CAVD;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,OAAO,MAAME,gBAAgB,GAAG,CAC9BP,KAD8B,EAE9BQ,KAF8B,EAG9BC,WAH8B,EAI9BC,OAJ8B,KAK3B;EACH;;EACA,MAAMC,aAAa,GAAGd,4BAA4B,CAACa,OAAD,CAAlD;;EACA,IAAIV,KAAK,GAAGQ,KAAK,CAAC,CAAD,CAAjB,EAAsB;IACpB,QAAQG,aAAa,CAACC,eAAtB;MACE,KAAKd,WAAW,CAACe,KAAjB;QACE,OAAOJ,WAAW,CAAC,CAAD,CAAlB;;MACF,KAAKX,WAAW,CAACgB,MAAjB;QACE,OAAOf,IAAI,CAACC,KAAD,EAAQQ,KAAK,CAAC,CAAD,CAAb,EAAkBA,KAAK,CAAC,CAAD,CAAvB,EAA4BC,WAAW,CAAC,CAAD,CAAvC,EAA4CA,WAAW,CAAC,CAAD,CAAvD,CAAX;;MACF,KAAKX,WAAW,CAACiB,QAAjB;QACE,MAAM,IAAIC,KAAJ,CACJ,uEADI,CAAN;;MAGF;QACEpB,eAAe,CAACe,aAAa,CAACC,eAAf,CAAf;IAVJ;EAYD,CAbD,MAaO,IAAIZ,KAAK,GAAGQ,KAAK,CAACA,KAAK,CAACS,MAAN,GAAe,CAAhB,CAAjB,EAAqC;IAC1C,QAAQN,aAAa,CAACO,gBAAtB;MACE,KAAKpB,WAAW,CAACe,KAAjB;QACE,OAAOJ,WAAW,CAACA,WAAW,CAACQ,MAAZ,GAAqB,CAAtB,CAAlB;;MACF,KAAKnB,WAAW,CAACgB,MAAjB;QACE,OAAOf,IAAI,CACTC,KADS,EAETQ,KAAK,CAACA,KAAK,CAACS,MAAN,GAAe,CAAhB,CAFI,EAGTT,KAAK,CAACA,KAAK,CAACS,MAAN,GAAe,CAAhB,CAHI,EAITR,WAAW,CAACD,KAAK,CAACS,MAAN,GAAe,CAAhB,CAJF,EAKTR,WAAW,CAACD,KAAK,CAACS,MAAN,GAAe,CAAhB,CALF,CAAX;;MAOF,KAAKnB,WAAW,CAACiB,QAAjB;QACE,MAAM,IAAIC,KAAJ,CACJ,uEADI,CAAN;;MAGF;QACEpB,eAAe,CAACe,aAAa,CAACO,gBAAf,CAAf;IAhBJ;EAkBD;;EACD,IAAIC,CAAC,GAAG,CAAR;;EACA,OAAOA,CAAC,IAAIX,KAAK,CAACS,MAAN,GAAe,CAA3B,EAA8BE,CAAC,EAA/B,EAAmC;IACjC,IAAInB,KAAK,IAAIQ,KAAK,CAACW,CAAD,CAAd,IAAqBnB,KAAK,IAAIQ,KAAK,CAACW,CAAC,GAAG,CAAL,CAAvC,EAAgD;MAC9C;IACD;EACF;;EACD,OAAOpB,IAAI,CACTC,KADS,EAETQ,KAAK,CAACW,CAAD,CAFI,EAGTX,KAAK,CAACW,CAAC,GAAG,CAAL,CAHI,EAITV,WAAW,CAACU,CAAD,CAJF,EAKTV,WAAW,CAACU,CAAC,GAAG,CAAL,CALF,CAAX;AAOD,CAtDM"}
@@ -1,7 +1,15 @@
1
1
  import { interpolate } from "./interpolate";
2
- export const interpolateVector = (value, inputRange, outputRange, options) => ({
3
- x: interpolate(value, inputRange, outputRange.map(v => v.x), options),
4
- y: interpolate(value, inputRange, outputRange.map(v => v.y), options)
5
- });
6
- export const mixVector = (value, from, to) => interpolateVector(value, [0, 1], [from, to]);
2
+ export const interpolateVector = (value, inputRange, outputRange, options) => {
3
+ "worklet";
4
+
5
+ return {
6
+ x: interpolate(value, inputRange, outputRange.map(v => v.x), options),
7
+ y: interpolate(value, inputRange, outputRange.map(v => v.y), options)
8
+ };
9
+ };
10
+ export const mixVector = (value, from, to) => {
11
+ "worklet";
12
+
13
+ return interpolateVector(value, [0, 1], [from, to]);
14
+ };
7
15
  //# sourceMappingURL=interpolateVector.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["interpolate","interpolateVector","value","inputRange","outputRange","options","x","map","v","y","mixVector","from","to"],"sources":["interpolateVector.ts"],"sourcesContent":["import type { Vector } from \"../../skia/types\";\n\nimport { interpolate } from \"./interpolate\";\n\nexport const interpolateVector = (\n value: number,\n inputRange: readonly number[],\n outputRange: readonly Vector[],\n options?: Parameters<typeof interpolate>[3]\n) => ({\n x: interpolate(\n value,\n inputRange,\n outputRange.map((v) => v.x),\n options\n ),\n y: interpolate(\n value,\n inputRange,\n outputRange.map((v) => v.y),\n options\n ),\n});\n\nexport const mixVector = (value: number, from: Vector, to: Vector) =>\n interpolateVector(value, [0, 1], [from, to]);\n"],"mappings":"AAEA,SAASA,WAAT,QAA4B,eAA5B;AAEA,OAAO,MAAMC,iBAAiB,GAAG,CAC/BC,KAD+B,EAE/BC,UAF+B,EAG/BC,WAH+B,EAI/BC,OAJ+B,MAK3B;EACJC,CAAC,EAAEN,WAAW,CACZE,KADY,EAEZC,UAFY,EAGZC,WAAW,CAACG,GAAZ,CAAiBC,CAAD,IAAOA,CAAC,CAACF,CAAzB,CAHY,EAIZD,OAJY,CADV;EAOJI,CAAC,EAAET,WAAW,CACZE,KADY,EAEZC,UAFY,EAGZC,WAAW,CAACG,GAAZ,CAAiBC,CAAD,IAAOA,CAAC,CAACC,CAAzB,CAHY,EAIZJ,OAJY;AAPV,CAL2B,CAA1B;AAoBP,OAAO,MAAMK,SAAS,GAAG,CAACR,KAAD,EAAgBS,IAAhB,EAA8BC,EAA9B,KACvBX,iBAAiB,CAACC,KAAD,EAAQ,CAAC,CAAD,EAAI,CAAJ,CAAR,EAAgB,CAACS,IAAD,EAAOC,EAAP,CAAhB,CADZ"}
1
+ {"version":3,"names":["interpolate","interpolateVector","value","inputRange","outputRange","options","x","map","v","y","mixVector","from","to"],"sources":["interpolateVector.ts"],"sourcesContent":["import type { Vector } from \"../../skia/types\";\n\nimport { interpolate } from \"./interpolate\";\n\nexport const interpolateVector = (\n value: number,\n inputRange: readonly number[],\n outputRange: readonly Vector[],\n options?: Parameters<typeof interpolate>[3]\n) => {\n \"worklet\";\n return {\n x: interpolate(\n value,\n inputRange,\n outputRange.map((v) => v.x),\n options\n ),\n y: interpolate(\n value,\n inputRange,\n outputRange.map((v) => v.y),\n options\n ),\n };\n};\n\nexport const mixVector = (value: number, from: Vector, to: Vector) => {\n \"worklet\";\n return interpolateVector(value, [0, 1], [from, to]);\n};\n"],"mappings":"AAEA,SAASA,WAAT,QAA4B,eAA5B;AAEA,OAAO,MAAMC,iBAAiB,GAAG,CAC/BC,KAD+B,EAE/BC,UAF+B,EAG/BC,WAH+B,EAI/BC,OAJ+B,KAK5B;EACH;;EACA,OAAO;IACLC,CAAC,EAAEN,WAAW,CACZE,KADY,EAEZC,UAFY,EAGZC,WAAW,CAACG,GAAZ,CAAiBC,CAAD,IAAOA,CAAC,CAACF,CAAzB,CAHY,EAIZD,OAJY,CADT;IAOLI,CAAC,EAAET,WAAW,CACZE,KADY,EAEZC,UAFY,EAGZC,WAAW,CAACG,GAAZ,CAAiBC,CAAD,IAAOA,CAAC,CAACC,CAAzB,CAHY,EAIZJ,OAJY;EAPT,CAAP;AAcD,CArBM;AAuBP,OAAO,MAAMK,SAAS,GAAG,CAACR,KAAD,EAAgBS,IAAhB,EAA8BC,EAA9B,KAA6C;EACpE;;EACA,OAAOX,iBAAiB,CAACC,KAAD,EAAQ,CAAC,CAAD,EAAI,CAAJ,CAAR,EAAgB,CAACS,IAAD,EAAOC,EAAP,CAAhB,CAAxB;AACD,CAHM"}
@@ -1,5 +1,5 @@
1
1
  import { useEffect } from "react";
2
- import { HAS_REANIMATED2, useSharedValue, runOnJS, startMapper, stopMapper } from "./moduleWrapper";
2
+ import { HAS_REANIMATED2, useSharedValue, runOnJS, startMapper, stopMapper, HAS_REANIMATED3 } from "./moduleWrapper";
3
3
  /**
4
4
  * Connects a shared value from reanimated to a SkiaView or Canvas
5
5
  * so whenever the shared value changes the SkiaView will redraw.
@@ -12,8 +12,11 @@ export const useSharedValueEffect = function (cb, value) {
12
12
  values[_key - 2] = arguments[_key];
13
13
  }
14
14
 
15
- console.warn(`useSharedValueEffect() is now deprecated, you can use Reanimated values directly.
16
- Learn more at https://shopify.github.io/react-native-skia/.`);
15
+ if (HAS_REANIMATED3) {
16
+ console.warn(`useSharedValueEffect() is deprecated with Reanimated 3, you can use Reanimated values directly.
17
+ Learn more at https://shopify.github.io/react-native-skia/docs/animations/reanimated.`);
18
+ }
19
+
17
20
  const input = useSharedValue(0);
18
21
  useEffect(() => {
19
22
  if (!HAS_REANIMATED2) {
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","HAS_REANIMATED2","useSharedValue","runOnJS","startMapper","stopMapper","useSharedValueEffect","cb","value","values","console","warn","input","mapperId","undefined"],"sources":["useSharedValueEffect.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport type { SharedValueType } from \"../../renderer/processors/Animations\";\n\nimport {\n HAS_REANIMATED2,\n useSharedValue,\n runOnJS,\n startMapper,\n stopMapper,\n} from \"./moduleWrapper\";\n\n/**\n * Connects a shared value from reanimated to a SkiaView or Canvas\n * so whenever the shared value changes the SkiaView will redraw.\n * @param cb Callback that will be called whenever the shared value changes.\n * @param values One or more shared values to listen for.\n */\nexport const useSharedValueEffect = <T = number>(\n cb: () => void,\n value: SharedValueType<T>,\n ...values: SharedValueType<T>[]\n) => {\n console.warn(\n `useSharedValueEffect() is now deprecated, you can use Reanimated values directly.\nLearn more at https://shopify.github.io/react-native-skia/.`\n );\n const input = useSharedValue(0);\n\n useEffect(() => {\n if (!HAS_REANIMATED2) {\n console.warn(\n \"Reanimated was not found and the useSharedValueEffect hook will have no effect.\"\n );\n } else {\n // Start a mapper in Reanimated\n const mapperId = startMapper(\n () => {\n \"worklet\";\n runOnJS(cb)();\n },\n [value, ...values],\n [input]\n );\n // Return unregistering the mapper\n return () => {\n if (stopMapper && mapperId !== undefined) {\n stopMapper(mapperId);\n }\n };\n }\n return () => {};\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [input, value, ...values]);\n};\n"],"mappings":"AAAA,SAASA,SAAT,QAA0B,OAA1B;AAIA,SACEC,eADF,EAEEC,cAFF,EAGEC,OAHF,EAIEC,WAJF,EAKEC,UALF,QAMO,iBANP;AAQA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMC,oBAAoB,GAAG,UAClCC,EADkC,EAElCC,KAFkC,EAI/B;EAAA,kCADAC,MACA;IADAA,MACA;EAAA;;EACHC,OAAO,CAACC,IAAR,CACG;AACL,4DAFE;EAIA,MAAMC,KAAK,GAAGV,cAAc,CAAC,CAAD,CAA5B;EAEAF,SAAS,CAAC,MAAM;IACd,IAAI,CAACC,eAAL,EAAsB;MACpBS,OAAO,CAACC,IAAR,CACE,iFADF;IAGD,CAJD,MAIO;MACL;MACA,MAAME,QAAQ,GAAGT,WAAW,CAC1B,MAAM;QACJ;;QACAD,OAAO,CAACI,EAAD,CAAP;MACD,CAJyB,EAK1B,CAACC,KAAD,EAAQ,GAAGC,MAAX,CAL0B,EAM1B,CAACG,KAAD,CAN0B,CAA5B,CAFK,CAUL;;MACA,OAAO,MAAM;QACX,IAAIP,UAAU,IAAIQ,QAAQ,KAAKC,SAA/B,EAA0C;UACxCT,UAAU,CAACQ,QAAD,CAAV;QACD;MACF,CAJD;IAKD;;IACD,OAAO,MAAM,CAAE,CAAf,CAtBc,CAuBd;EACD,CAxBQ,EAwBN,CAACD,KAAD,EAAQJ,KAAR,EAAe,GAAGC,MAAlB,CAxBM,CAAT;AAyBD,CApCM"}
1
+ {"version":3,"names":["useEffect","HAS_REANIMATED2","useSharedValue","runOnJS","startMapper","stopMapper","HAS_REANIMATED3","useSharedValueEffect","cb","value","values","console","warn","input","mapperId","undefined"],"sources":["useSharedValueEffect.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport type { SharedValueType } from \"../../renderer/processors/Animations\";\n\nimport {\n HAS_REANIMATED2,\n useSharedValue,\n runOnJS,\n startMapper,\n stopMapper,\n HAS_REANIMATED3,\n} from \"./moduleWrapper\";\n\n/**\n * Connects a shared value from reanimated to a SkiaView or Canvas\n * so whenever the shared value changes the SkiaView will redraw.\n * @param cb Callback that will be called whenever the shared value changes.\n * @param values One or more shared values to listen for.\n */\nexport const useSharedValueEffect = <T = number>(\n cb: () => void,\n value: SharedValueType<T>,\n ...values: SharedValueType<T>[]\n) => {\n if (HAS_REANIMATED3) {\n console.warn(\n `useSharedValueEffect() is deprecated with Reanimated 3, you can use Reanimated values directly.\nLearn more at https://shopify.github.io/react-native-skia/docs/animations/reanimated.`\n );\n }\n const input = useSharedValue(0);\n\n useEffect(() => {\n if (!HAS_REANIMATED2) {\n console.warn(\n \"Reanimated was not found and the useSharedValueEffect hook will have no effect.\"\n );\n } else {\n // Start a mapper in Reanimated\n const mapperId = startMapper(\n () => {\n \"worklet\";\n runOnJS(cb)();\n },\n [value, ...values],\n [input]\n );\n // Return unregistering the mapper\n return () => {\n if (stopMapper && mapperId !== undefined) {\n stopMapper(mapperId);\n }\n };\n }\n return () => {};\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [input, value, ...values]);\n};\n"],"mappings":"AAAA,SAASA,SAAT,QAA0B,OAA1B;AAIA,SACEC,eADF,EAEEC,cAFF,EAGEC,OAHF,EAIEC,WAJF,EAKEC,UALF,EAMEC,eANF,QAOO,iBAPP;AASA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMC,oBAAoB,GAAG,UAClCC,EADkC,EAElCC,KAFkC,EAI/B;EAAA,kCADAC,MACA;IADAA,MACA;EAAA;;EACH,IAAIJ,eAAJ,EAAqB;IACnBK,OAAO,CAACC,IAAR,CACG;AACP,sFAFI;EAID;;EACD,MAAMC,KAAK,GAAGX,cAAc,CAAC,CAAD,CAA5B;EAEAF,SAAS,CAAC,MAAM;IACd,IAAI,CAACC,eAAL,EAAsB;MACpBU,OAAO,CAACC,IAAR,CACE,iFADF;IAGD,CAJD,MAIO;MACL;MACA,MAAME,QAAQ,GAAGV,WAAW,CAC1B,MAAM;QACJ;;QACAD,OAAO,CAACK,EAAD,CAAP;MACD,CAJyB,EAK1B,CAACC,KAAD,EAAQ,GAAGC,MAAX,CAL0B,EAM1B,CAACG,KAAD,CAN0B,CAA5B,CAFK,CAUL;;MACA,OAAO,MAAM;QACX,IAAIR,UAAU,IAAIS,QAAQ,KAAKC,SAA/B,EAA0C;UACxCV,UAAU,CAACS,QAAD,CAAV;QACD;MACF,CAJD;IAKD;;IACD,OAAO,MAAM,CAAE,CAAf,CAtBc,CAuBd;EACD,CAxBQ,EAwBN,CAACD,KAAD,EAAQJ,KAAR,EAAe,GAAGC,MAAlB,CAxBM,CAAT;AAyBD,CAtCM"}
@@ -1,19 +1,43 @@
1
- export const canvas2Cartesian = (v, center) => ({
2
- x: v.x - center.x,
3
- y: -1 * (v.y - center.y)
4
- });
5
- export const cartesian2Canvas = (v, center) => ({
6
- x: v.x + center.x,
7
- y: -1 * v.y + center.y
8
- });
9
- export const cartesian2Polar = v => ({
10
- theta: Math.atan2(v.y, v.x),
11
- radius: Math.sqrt(v.x ** 2 + v.y ** 2)
12
- });
13
- export const polar2Cartesian = p => ({
14
- x: p.radius * Math.cos(p.theta),
15
- y: p.radius * Math.sin(p.theta)
16
- });
17
- export const polar2Canvas = (p, center) => cartesian2Canvas(polar2Cartesian(p), center);
18
- export const canvas2Polar = (v, center) => cartesian2Polar(canvas2Cartesian(v, center));
1
+ export const canvas2Cartesian = (v, center) => {
2
+ "worklet";
3
+
4
+ return {
5
+ x: v.x - center.x,
6
+ y: -1 * (v.y - center.y)
7
+ };
8
+ };
9
+ export const cartesian2Canvas = (v, center) => {
10
+ "worklet";
11
+
12
+ return {
13
+ x: v.x + center.x,
14
+ y: -1 * v.y + center.y
15
+ };
16
+ };
17
+ export const cartesian2Polar = v => {
18
+ "worklet";
19
+
20
+ return {
21
+ theta: Math.atan2(v.y, v.x),
22
+ radius: Math.sqrt(v.x ** 2 + v.y ** 2)
23
+ };
24
+ };
25
+ export const polar2Cartesian = p => {
26
+ "worklet";
27
+
28
+ return {
29
+ x: p.radius * Math.cos(p.theta),
30
+ y: p.radius * Math.sin(p.theta)
31
+ };
32
+ };
33
+ export const polar2Canvas = (p, center) => {
34
+ "worklet";
35
+
36
+ return cartesian2Canvas(polar2Cartesian(p), center);
37
+ };
38
+ export const canvas2Polar = (v, center) => {
39
+ "worklet";
40
+
41
+ return cartesian2Polar(canvas2Cartesian(v, center));
42
+ };
19
43
  //# sourceMappingURL=Coordinates.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["canvas2Cartesian","v","center","x","y","cartesian2Canvas","cartesian2Polar","theta","Math","atan2","radius","sqrt","polar2Cartesian","p","cos","sin","polar2Canvas","canvas2Polar"],"sources":["Coordinates.ts"],"sourcesContent":["import type { Vector } from \"../../../skia/types\";\n\nexport interface PolarPoint {\n theta: number;\n radius: number;\n}\n\nexport const canvas2Cartesian = (v: Vector, center: Vector) => ({\n x: v.x - center.x,\n y: -1 * (v.y - center.y),\n});\n\nexport const cartesian2Canvas = (v: Vector, center: Vector) => ({\n x: v.x + center.x,\n y: -1 * v.y + center.y,\n});\n\nexport const cartesian2Polar = (v: Vector) => ({\n theta: Math.atan2(v.y, v.x),\n radius: Math.sqrt(v.x ** 2 + v.y ** 2),\n});\n\nexport const polar2Cartesian = (p: PolarPoint) => ({\n x: p.radius * Math.cos(p.theta),\n y: p.radius * Math.sin(p.theta),\n});\n\nexport const polar2Canvas = (p: PolarPoint, center: Vector) =>\n cartesian2Canvas(polar2Cartesian(p), center);\n\nexport const canvas2Polar = (v: Vector, center: Vector) =>\n cartesian2Polar(canvas2Cartesian(v, center));\n"],"mappings":"AAOA,OAAO,MAAMA,gBAAgB,GAAG,CAACC,CAAD,EAAYC,MAAZ,MAAgC;EAC9DC,CAAC,EAAEF,CAAC,CAACE,CAAF,GAAMD,MAAM,CAACC,CAD8C;EAE9DC,CAAC,EAAE,CAAC,CAAD,IAAMH,CAAC,CAACG,CAAF,GAAMF,MAAM,CAACE,CAAnB;AAF2D,CAAhC,CAAzB;AAKP,OAAO,MAAMC,gBAAgB,GAAG,CAACJ,CAAD,EAAYC,MAAZ,MAAgC;EAC9DC,CAAC,EAAEF,CAAC,CAACE,CAAF,GAAMD,MAAM,CAACC,CAD8C;EAE9DC,CAAC,EAAE,CAAC,CAAD,GAAKH,CAAC,CAACG,CAAP,GAAWF,MAAM,CAACE;AAFyC,CAAhC,CAAzB;AAKP,OAAO,MAAME,eAAe,GAAIL,CAAD,KAAgB;EAC7CM,KAAK,EAAEC,IAAI,CAACC,KAAL,CAAWR,CAAC,CAACG,CAAb,EAAgBH,CAAC,CAACE,CAAlB,CADsC;EAE7CO,MAAM,EAAEF,IAAI,CAACG,IAAL,CAAUV,CAAC,CAACE,CAAF,IAAO,CAAP,GAAWF,CAAC,CAACG,CAAF,IAAO,CAA5B;AAFqC,CAAhB,CAAxB;AAKP,OAAO,MAAMQ,eAAe,GAAIC,CAAD,KAAoB;EACjDV,CAAC,EAAEU,CAAC,CAACH,MAAF,GAAWF,IAAI,CAACM,GAAL,CAASD,CAAC,CAACN,KAAX,CADmC;EAEjDH,CAAC,EAAES,CAAC,CAACH,MAAF,GAAWF,IAAI,CAACO,GAAL,CAASF,CAAC,CAACN,KAAX;AAFmC,CAApB,CAAxB;AAKP,OAAO,MAAMS,YAAY,GAAG,CAACH,CAAD,EAAgBX,MAAhB,KAC1BG,gBAAgB,CAACO,eAAe,CAACC,CAAD,CAAhB,EAAqBX,MAArB,CADX;AAGP,OAAO,MAAMe,YAAY,GAAG,CAAChB,CAAD,EAAYC,MAAZ,KAC1BI,eAAe,CAACN,gBAAgB,CAACC,CAAD,EAAIC,MAAJ,CAAjB,CADV"}
1
+ {"version":3,"names":["canvas2Cartesian","v","center","x","y","cartesian2Canvas","cartesian2Polar","theta","Math","atan2","radius","sqrt","polar2Cartesian","p","cos","sin","polar2Canvas","canvas2Polar"],"sources":["Coordinates.ts"],"sourcesContent":["import type { Vector } from \"../../../skia/types\";\n\nexport interface PolarPoint {\n theta: number;\n radius: number;\n}\n\nexport const canvas2Cartesian = (v: Vector, center: Vector) => {\n \"worklet\";\n return {\n x: v.x - center.x,\n y: -1 * (v.y - center.y),\n };\n};\n\nexport const cartesian2Canvas = (v: Vector, center: Vector) => {\n \"worklet\";\n return {\n x: v.x + center.x,\n y: -1 * v.y + center.y,\n };\n};\n\nexport const cartesian2Polar = (v: Vector) => {\n \"worklet\";\n return {\n theta: Math.atan2(v.y, v.x),\n radius: Math.sqrt(v.x ** 2 + v.y ** 2),\n };\n};\n\nexport const polar2Cartesian = (p: PolarPoint) => {\n \"worklet\";\n return {\n x: p.radius * Math.cos(p.theta),\n y: p.radius * Math.sin(p.theta),\n };\n};\n\nexport const polar2Canvas = (p: PolarPoint, center: Vector) => {\n \"worklet\";\n return cartesian2Canvas(polar2Cartesian(p), center);\n};\n\nexport const canvas2Polar = (v: Vector, center: Vector) => {\n \"worklet\";\n return cartesian2Polar(canvas2Cartesian(v, center));\n};\n"],"mappings":"AAOA,OAAO,MAAMA,gBAAgB,GAAG,CAACC,CAAD,EAAYC,MAAZ,KAA+B;EAC7D;;EACA,OAAO;IACLC,CAAC,EAAEF,CAAC,CAACE,CAAF,GAAMD,MAAM,CAACC,CADX;IAELC,CAAC,EAAE,CAAC,CAAD,IAAMH,CAAC,CAACG,CAAF,GAAMF,MAAM,CAACE,CAAnB;EAFE,CAAP;AAID,CANM;AAQP,OAAO,MAAMC,gBAAgB,GAAG,CAACJ,CAAD,EAAYC,MAAZ,KAA+B;EAC7D;;EACA,OAAO;IACLC,CAAC,EAAEF,CAAC,CAACE,CAAF,GAAMD,MAAM,CAACC,CADX;IAELC,CAAC,EAAE,CAAC,CAAD,GAAKH,CAAC,CAACG,CAAP,GAAWF,MAAM,CAACE;EAFhB,CAAP;AAID,CANM;AAQP,OAAO,MAAME,eAAe,GAAIL,CAAD,IAAe;EAC5C;;EACA,OAAO;IACLM,KAAK,EAAEC,IAAI,CAACC,KAAL,CAAWR,CAAC,CAACG,CAAb,EAAgBH,CAAC,CAACE,CAAlB,CADF;IAELO,MAAM,EAAEF,IAAI,CAACG,IAAL,CAAUV,CAAC,CAACE,CAAF,IAAO,CAAP,GAAWF,CAAC,CAACG,CAAF,IAAO,CAA5B;EAFH,CAAP;AAID,CANM;AAQP,OAAO,MAAMQ,eAAe,GAAIC,CAAD,IAAmB;EAChD;;EACA,OAAO;IACLV,CAAC,EAAEU,CAAC,CAACH,MAAF,GAAWF,IAAI,CAACM,GAAL,CAASD,CAAC,CAACN,KAAX,CADT;IAELH,CAAC,EAAES,CAAC,CAACH,MAAF,GAAWF,IAAI,CAACO,GAAL,CAASF,CAAC,CAACN,KAAX;EAFT,CAAP;AAID,CANM;AAQP,OAAO,MAAMS,YAAY,GAAG,CAACH,CAAD,EAAgBX,MAAhB,KAAmC;EAC7D;;EACA,OAAOG,gBAAgB,CAACO,eAAe,CAACC,CAAD,CAAhB,EAAqBX,MAArB,CAAvB;AACD,CAHM;AAKP,OAAO,MAAMe,YAAY,GAAG,CAAChB,CAAD,EAAYC,MAAZ,KAA+B;EACzD;;EACA,OAAOI,eAAe,CAACN,gBAAgB,CAACC,CAAD,EAAIC,MAAJ,CAAjB,CAAtB;AACD,CAHM"}
@@ -4,7 +4,11 @@
4
4
  * @param x
5
5
  * @param y
6
6
  */
7
- export const mix = (value, x, y) => x * (1 - value) + y * value;
7
+ export const mix = (value, x, y) => {
8
+ "worklet";
9
+
10
+ return x * (1 - value) + y * value;
11
+ };
8
12
  /**
9
13
  * @summary Clamps a node with a lower and upper bound.
10
14
  * @example
@@ -13,5 +17,9 @@ export const mix = (value, x, y) => x * (1 - value) + y * value;
13
17
  clamp(101, 0, 100); // 100
14
18
  */
15
19
 
16
- export const clamp = (value, lowerBound, upperBound) => Math.min(Math.max(lowerBound, value), upperBound);
20
+ export const clamp = (value, lowerBound, upperBound) => {
21
+ "worklet";
22
+
23
+ return Math.min(Math.max(lowerBound, value), upperBound);
24
+ };
17
25
  //# sourceMappingURL=Math.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["mix","value","x","y","clamp","lowerBound","upperBound","Math","min","max"],"sources":["Math.ts"],"sourcesContent":["/**\n * Linear interpolation\n * @param value\n * @param x\n * @param y\n */\nexport const mix = (value: number, x: number, y: number) =>\n x * (1 - value) + y * value;\n\n/**\n * @summary Clamps a node with a lower and upper bound.\n * @example\n clamp(-1, 0, 100); // 0\n clamp(1, 0, 100); // 1\n clamp(101, 0, 100); // 100\n */\nexport const clamp = (value: number, lowerBound: number, upperBound: number) =>\n Math.min(Math.max(lowerBound, value), upperBound);\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,GAAG,GAAG,CAACC,KAAD,EAAgBC,CAAhB,EAA2BC,CAA3B,KACjBD,CAAC,IAAI,IAAID,KAAR,CAAD,GAAkBE,CAAC,GAAGF,KADjB;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMG,KAAK,GAAG,CAACH,KAAD,EAAgBI,UAAhB,EAAoCC,UAApC,KACnBC,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASJ,UAAT,EAAqBJ,KAArB,CAAT,EAAsCK,UAAtC,CADK"}
1
+ {"version":3,"names":["mix","value","x","y","clamp","lowerBound","upperBound","Math","min","max"],"sources":["Math.ts"],"sourcesContent":["/**\n * Linear interpolation\n * @param value\n * @param x\n * @param y\n */\nexport const mix = (value: number, x: number, y: number) => {\n \"worklet\";\n return x * (1 - value) + y * value;\n};\n\n/**\n * @summary Clamps a node with a lower and upper bound.\n * @example\n clamp(-1, 0, 100); // 0\n clamp(1, 0, 100); // 1\n clamp(101, 0, 100); // 100\n */\nexport const clamp = (\n value: number,\n lowerBound: number,\n upperBound: number\n) => {\n \"worklet\";\n return Math.min(Math.max(lowerBound, value), upperBound);\n};\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,GAAG,GAAG,CAACC,KAAD,EAAgBC,CAAhB,EAA2BC,CAA3B,KAAyC;EAC1D;;EACA,OAAOD,CAAC,IAAI,IAAID,KAAR,CAAD,GAAkBE,CAAC,GAAGF,KAA7B;AACD,CAHM;AAKP;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMG,KAAK,GAAG,CACnBH,KADmB,EAEnBI,UAFmB,EAGnBC,UAHmB,KAIhB;EACH;;EACA,OAAOC,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASJ,UAAT,EAAqBJ,KAArB,CAAT,EAAsCK,UAAtC,CAAP;AACD,CAPM"}
@@ -1,5 +1,7 @@
1
1
  import { canvas2Polar, polar2Canvas } from "./Coordinates";
2
2
  export const rotate = (tr, origin, rotation) => {
3
+ "worklet";
4
+
3
5
  const {
4
6
  radius,
5
7
  theta
@@ -1 +1 @@
1
- {"version":3,"names":["canvas2Polar","polar2Canvas","rotate","tr","origin","rotation","radius","theta"],"sources":["Transforms.ts"],"sourcesContent":["import type { Vector } from \"../../../skia/types\";\n\nimport { canvas2Polar, polar2Canvas } from \"./Coordinates\";\n\nexport const rotate = (tr: Vector, origin: Vector, rotation: number) => {\n const { radius, theta } = canvas2Polar(tr, origin);\n return polar2Canvas({ radius, theta: theta + rotation }, origin);\n};\n"],"mappings":"AAEA,SAASA,YAAT,EAAuBC,YAAvB,QAA2C,eAA3C;AAEA,OAAO,MAAMC,MAAM,GAAG,CAACC,EAAD,EAAaC,MAAb,EAA6BC,QAA7B,KAAkD;EACtE,MAAM;IAAEC,MAAF;IAAUC;EAAV,IAAoBP,YAAY,CAACG,EAAD,EAAKC,MAAL,CAAtC;EACA,OAAOH,YAAY,CAAC;IAAEK,MAAF;IAAUC,KAAK,EAAEA,KAAK,GAAGF;EAAzB,CAAD,EAAsCD,MAAtC,CAAnB;AACD,CAHM"}
1
+ {"version":3,"names":["canvas2Polar","polar2Canvas","rotate","tr","origin","rotation","radius","theta"],"sources":["Transforms.ts"],"sourcesContent":["import type { Vector } from \"../../../skia/types\";\n\nimport { canvas2Polar, polar2Canvas } from \"./Coordinates\";\n\nexport const rotate = (tr: Vector, origin: Vector, rotation: number) => {\n \"worklet\";\n const { radius, theta } = canvas2Polar(tr, origin);\n return polar2Canvas({ radius, theta: theta + rotation }, origin);\n};\n"],"mappings":"AAEA,SAASA,YAAT,EAAuBC,YAAvB,QAA2C,eAA3C;AAEA,OAAO,MAAMC,MAAM,GAAG,CAACC,EAAD,EAAaC,MAAb,EAA6BC,QAA7B,KAAkD;EACtE;;EACA,MAAM;IAAEC,MAAF;IAAUC;EAAV,IAAoBP,YAAY,CAACG,EAAD,EAAKC,MAAL,CAAtC;EACA,OAAOH,YAAY,CAAC;IAAEK,MAAF;IAAUC,KAAK,EAAEA,KAAK,GAAGF;EAAzB,CAAD,EAAsCD,MAAtC,CAAnB;AACD,CAJM"}
@@ -1,5 +1,7 @@
1
1
  export const mapKeys = obj => Object.keys(obj);
2
2
  export const exhaustiveCheck = a => {
3
+ "worklet";
4
+
3
5
  throw new Error(`Unexhaustive handling for ${a}`);
4
6
  }; // Shallow eq on props (without children)
5
7
 
@@ -1 +1 @@
1
- {"version":3,"names":["mapKeys","obj","Object","keys","exhaustiveCheck","a","Error","shallowEq","p1","p2","keys1","keys2","length","key"],"sources":["typeddash.ts"],"sourcesContent":["export const mapKeys = <T extends object>(obj: T) =>\n Object.keys(obj) as (keyof T)[];\n\nexport const exhaustiveCheck = (a: never): never => {\n throw new Error(`Unexhaustive handling for ${a}`);\n};\n\n// Shallow eq on props (without children)\nexport const shallowEq = <P extends object>(p1: P, p2: P): boolean => {\n const keys1 = mapKeys(p1);\n const keys2 = mapKeys(p2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (const key of keys1) {\n if (key === \"children\") {\n continue;\n }\n if (p1[key] !== p2[key]) {\n return false;\n }\n }\n return true;\n};\n"],"mappings":"AAAA,OAAO,MAAMA,OAAO,GAAsBC,GAAnB,IACrBC,MAAM,CAACC,IAAP,CAAYF,GAAZ,CADK;AAGP,OAAO,MAAMG,eAAe,GAAIC,CAAD,IAAqB;EAClD,MAAM,IAAIC,KAAJ,CAAW,6BAA4BD,CAAE,EAAzC,CAAN;AACD,CAFM,C,CAIP;;AACA,OAAO,MAAME,SAAS,GAAG,CAAmBC,EAAnB,EAA0BC,EAA1B,KAA6C;EACpE,MAAMC,KAAK,GAAGV,OAAO,CAACQ,EAAD,CAArB;EACA,MAAMG,KAAK,GAAGX,OAAO,CAACS,EAAD,CAArB;;EACA,IAAIC,KAAK,CAACE,MAAN,KAAiBD,KAAK,CAACC,MAA3B,EAAmC;IACjC,OAAO,KAAP;EACD;;EACD,KAAK,MAAMC,GAAX,IAAkBH,KAAlB,EAAyB;IACvB,IAAIG,GAAG,KAAK,UAAZ,EAAwB;MACtB;IACD;;IACD,IAAIL,EAAE,CAACK,GAAD,CAAF,KAAYJ,EAAE,CAACI,GAAD,CAAlB,EAAyB;MACvB,OAAO,KAAP;IACD;EACF;;EACD,OAAO,IAAP;AACD,CAfM"}
1
+ {"version":3,"names":["mapKeys","obj","Object","keys","exhaustiveCheck","a","Error","shallowEq","p1","p2","keys1","keys2","length","key"],"sources":["typeddash.ts"],"sourcesContent":["export const mapKeys = <T extends object>(obj: T) =>\n Object.keys(obj) as (keyof T)[];\n\nexport const exhaustiveCheck = (a: never): never => {\n \"worklet\";\n throw new Error(`Unexhaustive handling for ${a}`);\n};\n\n// Shallow eq on props (without children)\nexport const shallowEq = <P extends object>(p1: P, p2: P): boolean => {\n const keys1 = mapKeys(p1);\n const keys2 = mapKeys(p2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (const key of keys1) {\n if (key === \"children\") {\n continue;\n }\n if (p1[key] !== p2[key]) {\n return false;\n }\n }\n return true;\n};\n"],"mappings":"AAAA,OAAO,MAAMA,OAAO,GAAsBC,GAAnB,IACrBC,MAAM,CAACC,IAAP,CAAYF,GAAZ,CADK;AAGP,OAAO,MAAMG,eAAe,GAAIC,CAAD,IAAqB;EAClD;;EACA,MAAM,IAAIC,KAAJ,CAAW,6BAA4BD,CAAE,EAAzC,CAAN;AACD,CAHM,C,CAKP;;AACA,OAAO,MAAME,SAAS,GAAG,CAAmBC,EAAnB,EAA0BC,EAA1B,KAA6C;EACpE,MAAMC,KAAK,GAAGV,OAAO,CAACQ,EAAD,CAArB;EACA,MAAMG,KAAK,GAAGX,OAAO,CAACS,EAAD,CAArB;;EACA,IAAIC,KAAK,CAACE,MAAN,KAAiBD,KAAK,CAACC,MAA3B,EAAmC;IACjC,OAAO,KAAP;EACD;;EACD,KAAK,MAAMC,GAAX,IAAkBH,KAAlB,EAAyB;IACvB,IAAIG,GAAG,KAAK,UAAZ,EAAwB;MACtB;IACD;;IACD,IAAIL,EAAE,CAACK,GAAD,CAAF,KAAYJ,EAAE,CAACI,GAAD,CAAlB,EAAyB;MACvB,OAAO,KAAP;IACD;EACF;;EACD,OAAO,IAAP;AACD,CAfM"}
@@ -1,15 +1,35 @@
1
1
  import { Skia } from "../Skia";
2
2
  export const vec = function () {
3
+ "worklet";
4
+
3
5
  let x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
4
6
  let y = arguments.length > 1 ? arguments[1] : undefined;
5
7
  return Skia.Point(x, y !== null && y !== void 0 ? y : x);
6
8
  };
7
9
  export const point = vec;
8
- export const neg = a => vec(-a.x, -a.y);
9
- export const add = (a, b) => vec(a.x + b.x, a.y + b.y);
10
- export const sub = (a, b) => vec(a.x - b.x, a.y - b.y);
11
- export const dist = (a, b) => Math.hypot(a.x - b.x, a.y - b.y);
10
+ export const neg = a => {
11
+ "worklet";
12
+
13
+ return vec(-a.x, -a.y);
14
+ };
15
+ export const add = (a, b) => {
16
+ "worklet";
17
+
18
+ return vec(a.x + b.x, a.y + b.y);
19
+ };
20
+ export const sub = (a, b) => {
21
+ "worklet";
22
+
23
+ return vec(a.x - b.x, a.y - b.y);
24
+ };
25
+ export const dist = (a, b) => {
26
+ "worklet";
27
+
28
+ return Math.hypot(a.x - b.x, a.y - b.y);
29
+ };
12
30
  export const translate = _ref => {
31
+ "worklet";
32
+
13
33
  let {
14
34
  x,
15
35
  y
@@ -1 +1 @@
1
- {"version":3,"names":["Skia","vec","x","y","Point","point","neg","a","add","b","sub","dist","Math","hypot","translate","translateX","translateY"],"sources":["Vector.ts"],"sourcesContent":["import { Skia } from \"../Skia\";\nimport type { Vector } from \"../types\";\n\nexport const vec = (x = 0, y?: number) => Skia.Point(x, y ?? x);\nexport const point = vec;\nexport const neg = (a: Vector) => vec(-a.x, -a.y);\nexport const add = (a: Vector, b: Vector) => vec(a.x + b.x, a.y + b.y);\nexport const sub = (a: Vector, b: Vector) => vec(a.x - b.x, a.y - b.y);\nexport const dist = (a: Vector, b: Vector) => Math.hypot(a.x - b.x, a.y - b.y);\nexport const translate = ({ x, y }: Vector) =>\n [{ translateX: x }, { translateY: y }] as const;\n"],"mappings":"AAAA,SAASA,IAAT,QAAqB,SAArB;AAGA,OAAO,MAAMC,GAAG,GAAG;EAAA,IAACC,CAAD,uEAAK,CAAL;EAAA,IAAQC,CAAR;EAAA,OAAuBH,IAAI,CAACI,KAAL,CAAWF,CAAX,EAAcC,CAAd,aAAcA,CAAd,cAAcA,CAAd,GAAmBD,CAAnB,CAAvB;AAAA,CAAZ;AACP,OAAO,MAAMG,KAAK,GAAGJ,GAAd;AACP,OAAO,MAAMK,GAAG,GAAIC,CAAD,IAAeN,GAAG,CAAC,CAACM,CAAC,CAACL,CAAJ,EAAO,CAACK,CAAC,CAACJ,CAAV,CAA9B;AACP,OAAO,MAAMK,GAAG,GAAG,CAACD,CAAD,EAAYE,CAAZ,KAA0BR,GAAG,CAACM,CAAC,CAACL,CAAF,GAAMO,CAAC,CAACP,CAAT,EAAYK,CAAC,CAACJ,CAAF,GAAMM,CAAC,CAACN,CAApB,CAAzC;AACP,OAAO,MAAMO,GAAG,GAAG,CAACH,CAAD,EAAYE,CAAZ,KAA0BR,GAAG,CAACM,CAAC,CAACL,CAAF,GAAMO,CAAC,CAACP,CAAT,EAAYK,CAAC,CAACJ,CAAF,GAAMM,CAAC,CAACN,CAApB,CAAzC;AACP,OAAO,MAAMQ,IAAI,GAAG,CAACJ,CAAD,EAAYE,CAAZ,KAA0BG,IAAI,CAACC,KAAL,CAAWN,CAAC,CAACL,CAAF,GAAMO,CAAC,CAACP,CAAnB,EAAsBK,CAAC,CAACJ,CAAF,GAAMM,CAAC,CAACN,CAA9B,CAAvC;AACP,OAAO,MAAMW,SAAS,GAAG;EAAA,IAAC;IAAEZ,CAAF;IAAKC;EAAL,CAAD;EAAA,OACvB,CAAC;IAAEY,UAAU,EAAEb;EAAd,CAAD,EAAoB;IAAEc,UAAU,EAAEb;EAAd,CAApB,CADuB;AAAA,CAAlB"}
1
+ {"version":3,"names":["Skia","vec","x","y","Point","point","neg","a","add","b","sub","dist","Math","hypot","translate","translateX","translateY"],"sources":["Vector.ts"],"sourcesContent":["import { Skia } from \"../Skia\";\nimport type { Vector } from \"../types\";\n\nexport const vec = (x = 0, y?: number) => {\n \"worklet\";\n return Skia.Point(x, y ?? x);\n};\nexport const point = vec;\nexport const neg = (a: Vector) => {\n \"worklet\";\n return vec(-a.x, -a.y);\n};\nexport const add = (a: Vector, b: Vector) => {\n \"worklet\";\n return vec(a.x + b.x, a.y + b.y);\n};\nexport const sub = (a: Vector, b: Vector) => {\n \"worklet\";\n return vec(a.x - b.x, a.y - b.y);\n};\nexport const dist = (a: Vector, b: Vector) => {\n \"worklet\";\n return Math.hypot(a.x - b.x, a.y - b.y);\n};\nexport const translate = ({ x, y }: Vector) => {\n \"worklet\";\n return [{ translateX: x }, { translateY: y }] as const;\n};\n"],"mappings":"AAAA,SAASA,IAAT,QAAqB,SAArB;AAGA,OAAO,MAAMC,GAAG,GAAG,YAAuB;EACxC;;EADwC,IAAtBC,CAAsB,uEAAlB,CAAkB;EAAA,IAAfC,CAAe;EAExC,OAAOH,IAAI,CAACI,KAAL,CAAWF,CAAX,EAAcC,CAAd,aAAcA,CAAd,cAAcA,CAAd,GAAmBD,CAAnB,CAAP;AACD,CAHM;AAIP,OAAO,MAAMG,KAAK,GAAGJ,GAAd;AACP,OAAO,MAAMK,GAAG,GAAIC,CAAD,IAAe;EAChC;;EACA,OAAON,GAAG,CAAC,CAACM,CAAC,CAACL,CAAJ,EAAO,CAACK,CAAC,CAACJ,CAAV,CAAV;AACD,CAHM;AAIP,OAAO,MAAMK,GAAG,GAAG,CAACD,CAAD,EAAYE,CAAZ,KAA0B;EAC3C;;EACA,OAAOR,GAAG,CAACM,CAAC,CAACL,CAAF,GAAMO,CAAC,CAACP,CAAT,EAAYK,CAAC,CAACJ,CAAF,GAAMM,CAAC,CAACN,CAApB,CAAV;AACD,CAHM;AAIP,OAAO,MAAMO,GAAG,GAAG,CAACH,CAAD,EAAYE,CAAZ,KAA0B;EAC3C;;EACA,OAAOR,GAAG,CAACM,CAAC,CAACL,CAAF,GAAMO,CAAC,CAACP,CAAT,EAAYK,CAAC,CAACJ,CAAF,GAAMM,CAAC,CAACN,CAApB,CAAV;AACD,CAHM;AAIP,OAAO,MAAMQ,IAAI,GAAG,CAACJ,CAAD,EAAYE,CAAZ,KAA0B;EAC5C;;EACA,OAAOG,IAAI,CAACC,KAAL,CAAWN,CAAC,CAACL,CAAF,GAAMO,CAAC,CAACP,CAAnB,EAAsBK,CAAC,CAACJ,CAAF,GAAMM,CAAC,CAACN,CAA9B,CAAP;AACD,CAHM;AAIP,OAAO,MAAMW,SAAS,GAAG,QAAsB;EAC7C;;EAD6C,IAArB;IAAEZ,CAAF;IAAKC;EAAL,CAAqB;EAE7C,OAAO,CAAC;IAAEY,UAAU,EAAEb;EAAd,CAAD,EAAoB;IAAEc,UAAU,EAAEb;EAAd,CAApB,CAAP;AACD,CAHM"}
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "setup-skia-web": "./scripts/setup-canvaskit.js"
8
8
  },
9
9
  "title": "React Native Skia",
10
- "version": "0.1.182",
10
+ "version": "0.1.183",
11
11
  "description": "High-performance React Native Graphics using Skia",
12
12
  "main": "lib/module/index.js",
13
13
  "files": [
@@ -25,11 +25,7 @@ Pod::Spec.new do |s|
25
25
  'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited) SK_GL=1 SK_METAL=1',
26
26
  'CLANG_CXX_LANGUAGE_STANDARD' => 'c++17',
27
27
  'DEFINES_MODULE' => 'YES',
28
- "HEADER_SEARCH_PATHS" => '"$(PODS_ROOT)/../../node_modules/@shopify/react-native-skia/cpp/" ' +
29
- '"$(PODS_ROOT)/../../node_modules/@shopify/react-native-skia/cpp/api/" ' +
30
- '"$(PODS_ROOT)/../../node_modules/@shopify/react-native-skia/cpp/rnskia/" ' +
31
- '"$(PODS_ROOT)/../../node_modules/@shopify/react-native-skia/cpp/rnskia/dom/" ' +
32
- '"$(PODS_ROOT)/../../node_modules/@shopify/react-native-skia/cpp/skia/"'
28
+ "HEADER_SEARCH_PATHS" => '"$(PODS_TARGET_SRCROOT)/cpp/"/**'
33
29
  }
34
30
 
35
31
  s.frameworks = 'GLKit', 'MetalKit'
@@ -45,7 +41,7 @@ Pod::Spec.new do |s|
45
41
  # All iOS cpp/h files
46
42
  s.source_files = [
47
43
  "ios/**/*.{h,c,cc,cpp,m,mm,swift}",
48
- "cpp/**/*.{h,cpp}"
44
+ "cpp/**/*.{h,cpp}"
49
45
  ]
50
46
 
51
47
  s.dependency "React"
@@ -36,6 +36,7 @@ function getVal(
36
36
  rightEdgeOutput: number,
37
37
  x: number
38
38
  ): number {
39
+ "worklet";
39
40
  switch (type) {
40
41
  case Extrapolate.IDENTITY:
41
42
  return x;
@@ -51,6 +52,7 @@ function getVal(
51
52
  }
52
53
 
53
54
  function isExtrapolate(value: string): value is Extrapolate {
55
+ "worklet";
54
56
  return (
55
57
  value === Extrapolate.EXTEND ||
56
58
  value === Extrapolate.CLAMP ||
@@ -63,6 +65,7 @@ function isExtrapolate(value: string): value is Extrapolate {
63
65
  export function validateInterpolationOptions(
64
66
  type: ExtrapolationType
65
67
  ): RequiredExtrapolationConfig {
68
+ "worklet";
66
69
  // initialize extrapolationConfig with default extrapolation
67
70
  const extrapolationConfig: RequiredExtrapolationConfig = {
68
71
  extrapolateLeft: Extrapolate.EXTEND,
@@ -108,6 +111,7 @@ function internalInterpolate(
108
111
  narrowedInput: InterpolationNarrowedInput,
109
112
  extrapolationConfig: RequiredExtrapolationConfig
110
113
  ) {
114
+ "worklet";
111
115
  const { leftEdgeInput, rightEdgeInput, leftEdgeOutput, rightEdgeOutput } =
112
116
  narrowedInput;
113
117
  if (rightEdgeInput - leftEdgeInput === 0) {
@@ -147,6 +151,7 @@ export function interpolate(
147
151
  output: readonly number[],
148
152
  type?: ExtrapolationType
149
153
  ): number {
154
+ "worklet";
150
155
  if (input.length < 2 || output.length < 2) {
151
156
  throw Error(
152
157
  "Interpolation input and output should contain at least two values."
@@ -9,6 +9,7 @@ const interpolateColorsRGB = (
9
9
  inputRange: number[],
10
10
  outputRange: SkColor[]
11
11
  ) => {
12
+ "worklet";
12
13
  const r = interpolate(
13
14
  value,
14
15
  inputRange,
@@ -41,11 +42,13 @@ export const interpolateColors = (
41
42
  inputRange: number[],
42
43
  _outputRange: Color[]
43
44
  ) => {
45
+ "worklet";
44
46
  const outputRange = _outputRange.map((cl) => Skia.Color(cl));
45
47
  return interpolateColorsRGB(value, inputRange, outputRange);
46
48
  };
47
49
 
48
50
  export const mixColors = (value: number, x: Color, y: Color) => {
51
+ "worklet";
49
52
  const c1 = Skia.Color(x);
50
53
  const c2 = Skia.Color(y);
51
54
  return new Float32Array([
@@ -11,6 +11,7 @@ const lerp = (
11
11
  p1: SkPath,
12
12
  p2: SkPath
13
13
  ) => {
14
+ "worklet";
14
15
  const t = (value - from) / (to - from);
15
16
  return p2.interpolate(p1, t)!;
16
17
  };
@@ -37,6 +38,7 @@ export const interpolatePaths = (
37
38
  outputRange: SkPath[],
38
39
  options?: ExtrapolationType
39
40
  ) => {
41
+ "worklet";
40
42
  const extrapolation = validateInterpolationOptions(options);
41
43
  if (value < input[0]) {
42
44
  switch (extrapolation.extrapolateLeft) {
@@ -7,20 +7,25 @@ export const interpolateVector = (
7
7
  inputRange: readonly number[],
8
8
  outputRange: readonly Vector[],
9
9
  options?: Parameters<typeof interpolate>[3]
10
- ) => ({
11
- x: interpolate(
12
- value,
13
- inputRange,
14
- outputRange.map((v) => v.x),
15
- options
16
- ),
17
- y: interpolate(
18
- value,
19
- inputRange,
20
- outputRange.map((v) => v.y),
21
- options
22
- ),
23
- });
10
+ ) => {
11
+ "worklet";
12
+ return {
13
+ x: interpolate(
14
+ value,
15
+ inputRange,
16
+ outputRange.map((v) => v.x),
17
+ options
18
+ ),
19
+ y: interpolate(
20
+ value,
21
+ inputRange,
22
+ outputRange.map((v) => v.y),
23
+ options
24
+ ),
25
+ };
26
+ };
24
27
 
25
- export const mixVector = (value: number, from: Vector, to: Vector) =>
26
- interpolateVector(value, [0, 1], [from, to]);
28
+ export const mixVector = (value: number, from: Vector, to: Vector) => {
29
+ "worklet";
30
+ return interpolateVector(value, [0, 1], [from, to]);
31
+ };
@@ -8,6 +8,7 @@ import {
8
8
  runOnJS,
9
9
  startMapper,
10
10
  stopMapper,
11
+ HAS_REANIMATED3,
11
12
  } from "./moduleWrapper";
12
13
 
13
14
  /**
@@ -21,10 +22,12 @@ export const useSharedValueEffect = <T = number>(
21
22
  value: SharedValueType<T>,
22
23
  ...values: SharedValueType<T>[]
23
24
  ) => {
24
- console.warn(
25
- `useSharedValueEffect() is now deprecated, you can use Reanimated values directly.
26
- Learn more at https://shopify.github.io/react-native-skia/.`
27
- );
25
+ if (HAS_REANIMATED3) {
26
+ console.warn(
27
+ `useSharedValueEffect() is deprecated with Reanimated 3, you can use Reanimated values directly.
28
+ Learn more at https://shopify.github.io/react-native-skia/docs/animations/reanimated.`
29
+ );
30
+ }
28
31
  const input = useSharedValue(0);
29
32
 
30
33
  useEffect(() => {
@@ -5,28 +5,44 @@ export interface PolarPoint {
5
5
  radius: number;
6
6
  }
7
7
 
8
- export const canvas2Cartesian = (v: Vector, center: Vector) => ({
9
- x: v.x - center.x,
10
- y: -1 * (v.y - center.y),
11
- });
8
+ export const canvas2Cartesian = (v: Vector, center: Vector) => {
9
+ "worklet";
10
+ return {
11
+ x: v.x - center.x,
12
+ y: -1 * (v.y - center.y),
13
+ };
14
+ };
12
15
 
13
- export const cartesian2Canvas = (v: Vector, center: Vector) => ({
14
- x: v.x + center.x,
15
- y: -1 * v.y + center.y,
16
- });
16
+ export const cartesian2Canvas = (v: Vector, center: Vector) => {
17
+ "worklet";
18
+ return {
19
+ x: v.x + center.x,
20
+ y: -1 * v.y + center.y,
21
+ };
22
+ };
17
23
 
18
- export const cartesian2Polar = (v: Vector) => ({
19
- theta: Math.atan2(v.y, v.x),
20
- radius: Math.sqrt(v.x ** 2 + v.y ** 2),
21
- });
24
+ export const cartesian2Polar = (v: Vector) => {
25
+ "worklet";
26
+ return {
27
+ theta: Math.atan2(v.y, v.x),
28
+ radius: Math.sqrt(v.x ** 2 + v.y ** 2),
29
+ };
30
+ };
22
31
 
23
- export const polar2Cartesian = (p: PolarPoint) => ({
24
- x: p.radius * Math.cos(p.theta),
25
- y: p.radius * Math.sin(p.theta),
26
- });
32
+ export const polar2Cartesian = (p: PolarPoint) => {
33
+ "worklet";
34
+ return {
35
+ x: p.radius * Math.cos(p.theta),
36
+ y: p.radius * Math.sin(p.theta),
37
+ };
38
+ };
27
39
 
28
- export const polar2Canvas = (p: PolarPoint, center: Vector) =>
29
- cartesian2Canvas(polar2Cartesian(p), center);
40
+ export const polar2Canvas = (p: PolarPoint, center: Vector) => {
41
+ "worklet";
42
+ return cartesian2Canvas(polar2Cartesian(p), center);
43
+ };
30
44
 
31
- export const canvas2Polar = (v: Vector, center: Vector) =>
32
- cartesian2Polar(canvas2Cartesian(v, center));
45
+ export const canvas2Polar = (v: Vector, center: Vector) => {
46
+ "worklet";
47
+ return cartesian2Polar(canvas2Cartesian(v, center));
48
+ };
@@ -4,8 +4,10 @@
4
4
  * @param x
5
5
  * @param y
6
6
  */
7
- export const mix = (value: number, x: number, y: number) =>
8
- x * (1 - value) + y * value;
7
+ export const mix = (value: number, x: number, y: number) => {
8
+ "worklet";
9
+ return x * (1 - value) + y * value;
10
+ };
9
11
 
10
12
  /**
11
13
  * @summary Clamps a node with a lower and upper bound.
@@ -14,5 +16,11 @@ export const mix = (value: number, x: number, y: number) =>
14
16
  clamp(1, 0, 100); // 1
15
17
  clamp(101, 0, 100); // 100
16
18
  */
17
- export const clamp = (value: number, lowerBound: number, upperBound: number) =>
18
- Math.min(Math.max(lowerBound, value), upperBound);
19
+ export const clamp = (
20
+ value: number,
21
+ lowerBound: number,
22
+ upperBound: number
23
+ ) => {
24
+ "worklet";
25
+ return Math.min(Math.max(lowerBound, value), upperBound);
26
+ };
@@ -3,6 +3,7 @@ import type { Vector } from "../../../skia/types";
3
3
  import { canvas2Polar, polar2Canvas } from "./Coordinates";
4
4
 
5
5
  export const rotate = (tr: Vector, origin: Vector, rotation: number) => {
6
+ "worklet";
6
7
  const { radius, theta } = canvas2Polar(tr, origin);
7
8
  return polar2Canvas({ radius, theta: theta + rotation }, origin);
8
9
  };