@shopify/react-native-skia 2.2.7 → 2.2.9

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 (87) hide show
  1. package/android/build.gradle +0 -11
  2. package/cpp/api/JsiSkParagraph.h +40 -8
  3. package/cpp/api/recorder/DrawingCtx.h +15 -0
  4. package/cpp/api/recorder/JsiRecorder.h +2 -1
  5. package/cpp/api/recorder/RNRecorder.h +2 -2
  6. package/cpp/api/recorder/Shaders.h +6 -5
  7. package/lib/commonjs/renderer/__tests__/e2e/ParagraphMethods.spec.d.ts +1 -0
  8. package/lib/commonjs/renderer/__tests__/e2e/setup/Paragraph.d.ts +1 -1
  9. package/lib/commonjs/skia/types/Paragraph/Paragraph.d.ts +31 -1
  10. package/lib/commonjs/skia/types/Paragraph/Paragraph.js.map +1 -1
  11. package/lib/commonjs/skia/types/Recorder.d.ts +1 -1
  12. package/lib/commonjs/skia/types/Recorder.js.map +1 -1
  13. package/lib/commonjs/skia/web/JsiSkParagraph.d.ts +2 -2
  14. package/lib/commonjs/skia/web/JsiSkParagraph.js +4 -18
  15. package/lib/commonjs/skia/web/JsiSkParagraph.js.map +1 -1
  16. package/lib/commonjs/sksg/Container.d.ts +2 -10
  17. package/lib/commonjs/sksg/Container.js +1 -78
  18. package/lib/commonjs/sksg/Container.js.map +1 -1
  19. package/lib/commonjs/sksg/Container.web.d.ts +14 -0
  20. package/lib/commonjs/sksg/Container.web.js +91 -0
  21. package/lib/commonjs/sksg/Container.web.js.map +1 -0
  22. package/lib/commonjs/sksg/Recorder/ReanimatedRecorder.d.ts +1 -1
  23. package/lib/commonjs/sksg/Recorder/ReanimatedRecorder.js +2 -2
  24. package/lib/commonjs/sksg/Recorder/ReanimatedRecorder.js.map +1 -1
  25. package/lib/commonjs/sksg/Recorder/Recorder.d.ts +1 -1
  26. package/lib/commonjs/sksg/Recorder/Recorder.js +3 -2
  27. package/lib/commonjs/sksg/Recorder/Recorder.js.map +1 -1
  28. package/lib/commonjs/sksg/Recorder/Visitor.js +2 -2
  29. package/lib/commonjs/sksg/Recorder/Visitor.js.map +1 -1
  30. package/lib/commonjs/sksg/Recorder/commands/Shaders.js +3 -3
  31. package/lib/commonjs/sksg/Recorder/commands/Shaders.js.map +1 -1
  32. package/lib/module/renderer/__tests__/e2e/ParagraphMethods.spec.d.ts +1 -0
  33. package/lib/module/renderer/__tests__/e2e/setup/Paragraph.d.ts +1 -1
  34. package/lib/module/skia/types/Paragraph/Paragraph.d.ts +31 -1
  35. package/lib/module/skia/types/Paragraph/Paragraph.js.map +1 -1
  36. package/lib/module/skia/types/Recorder.d.ts +1 -1
  37. package/lib/module/skia/types/Recorder.js.map +1 -1
  38. package/lib/module/skia/web/JsiSkParagraph.d.ts +2 -2
  39. package/lib/module/skia/web/JsiSkParagraph.js +4 -18
  40. package/lib/module/skia/web/JsiSkParagraph.js.map +1 -1
  41. package/lib/module/sksg/Container.d.ts +2 -10
  42. package/lib/module/sksg/Container.js +2 -78
  43. package/lib/module/sksg/Container.js.map +1 -1
  44. package/lib/module/sksg/Container.web.d.ts +14 -0
  45. package/lib/module/sksg/Container.web.js +83 -0
  46. package/lib/module/sksg/Container.web.js.map +1 -0
  47. package/lib/module/sksg/Recorder/ReanimatedRecorder.d.ts +1 -1
  48. package/lib/module/sksg/Recorder/ReanimatedRecorder.js +2 -2
  49. package/lib/module/sksg/Recorder/ReanimatedRecorder.js.map +1 -1
  50. package/lib/module/sksg/Recorder/Recorder.d.ts +1 -1
  51. package/lib/module/sksg/Recorder/Recorder.js +3 -2
  52. package/lib/module/sksg/Recorder/Recorder.js.map +1 -1
  53. package/lib/module/sksg/Recorder/Visitor.js +2 -2
  54. package/lib/module/sksg/Recorder/Visitor.js.map +1 -1
  55. package/lib/module/sksg/Recorder/commands/Shaders.js +3 -3
  56. package/lib/module/sksg/Recorder/commands/Shaders.js.map +1 -1
  57. package/lib/typescript/lib/commonjs/sksg/Container.d.ts +1 -13
  58. package/lib/typescript/lib/commonjs/sksg/Container.web.d.ts +15 -0
  59. package/lib/typescript/lib/commonjs/sksg/Reconciler.d.ts +1 -17
  60. package/lib/typescript/lib/commonjs/sksg/Recorder/ReanimatedRecorder.d.ts +1 -1
  61. package/lib/typescript/lib/commonjs/sksg/Recorder/Recorder.d.ts +1 -1
  62. package/lib/typescript/lib/module/sksg/Container.d.ts +1 -14
  63. package/lib/typescript/lib/module/sksg/Container.web.d.ts +15 -0
  64. package/lib/typescript/lib/module/sksg/Reconciler.d.ts +1 -17
  65. package/lib/typescript/lib/module/sksg/Recorder/ReanimatedRecorder.d.ts +1 -1
  66. package/lib/typescript/lib/module/sksg/Recorder/Recorder.d.ts +1 -1
  67. package/lib/typescript/src/renderer/__tests__/e2e/ParagraphMethods.spec.d.ts +1 -0
  68. package/lib/typescript/src/renderer/__tests__/e2e/setup/Paragraph.d.ts +1 -1
  69. package/lib/typescript/src/skia/types/Paragraph/Paragraph.d.ts +31 -1
  70. package/lib/typescript/src/skia/types/Recorder.d.ts +1 -1
  71. package/lib/typescript/src/skia/web/JsiSkParagraph.d.ts +2 -2
  72. package/lib/typescript/src/sksg/Container.d.ts +2 -10
  73. package/lib/typescript/src/sksg/Container.web.d.ts +14 -0
  74. package/lib/typescript/src/sksg/Recorder/ReanimatedRecorder.d.ts +1 -1
  75. package/lib/typescript/src/sksg/Recorder/Recorder.d.ts +1 -1
  76. package/package.json +1 -1
  77. package/src/renderer/__tests__/e2e/ParagraphMethods.spec.tsx +383 -0
  78. package/src/renderer/__tests__/e2e/Shader.spec.tsx +93 -0
  79. package/src/skia/types/Paragraph/Paragraph.ts +32 -1
  80. package/src/skia/types/Recorder.ts +5 -1
  81. package/src/skia/web/JsiSkParagraph.ts +19 -28
  82. package/src/sksg/Container.ts +2 -81
  83. package/src/sksg/Container.web.ts +95 -0
  84. package/src/sksg/Recorder/ReanimatedRecorder.ts +6 -2
  85. package/src/sksg/Recorder/Recorder.ts +6 -2
  86. package/src/sksg/Recorder/Visitor.ts +2 -2
  87. package/src/sksg/Recorder/commands/Shaders.ts +8 -3
@@ -1 +1 @@
1
- {"version":3,"names":["HostObject","JsiSkParagraph","constructor","CanvasKit","ref","getMinIntrinsicWidth","getMaxIntrinsicWidth","getLongestLine","layout","width","paint","canvas","x","y","drawParagraph","getHeight","getMaxWidth","getGlyphPositionAtCoordinate","pos","getRectsForPlaceholders","map","rect","dir","at","height","direction","value","getRectsForRange","start","end","getLineMetrics","r","index","left","dispose","delete"],"sources":["JsiSkParagraph.ts"],"sourcesContent":["import type { CanvasKit, Paragraph } from \"canvaskit-wasm\";\n\nimport type { SkRect, SkRectWithDirection, SkParagraph } from \"../types\";\n\nimport { HostObject } from \"./Host\";\nimport type { JsiSkCanvas } from \"./JsiSkCanvas\";\n\nexport class JsiSkParagraph\n extends HostObject<Paragraph, \"Paragraph\">\n implements SkParagraph\n{\n constructor(CanvasKit: CanvasKit, ref: Paragraph) {\n super(CanvasKit, ref, \"Paragraph\");\n }\n getMinIntrinsicWidth(): number {\n return this.ref.getMinIntrinsicWidth();\n }\n\n getMaxIntrinsicWidth(): number {\n return this.ref.getMaxIntrinsicWidth();\n }\n\n getLongestLine(): number {\n return this.ref.getLongestLine();\n }\n\n layout(width: number): void {\n this.ref.layout(width);\n }\n paint(canvas: JsiSkCanvas, x: number, y: number): void {\n canvas.ref.drawParagraph(this.ref, x, y);\n }\n getHeight(): number {\n return this.ref.getHeight();\n }\n getMaxWidth(): number {\n return this.ref.getMaxWidth();\n }\n getGlyphPositionAtCoordinate(x: number, y: number): number {\n return this.ref.getGlyphPositionAtCoordinate(x, y).pos;\n }\n getRectsForPlaceholders(): SkRectWithDirection[] {\n return this.ref.getRectsForPlaceholders().map(({ rect, dir }) => ({\n rect: {\n x: rect.at(0)!,\n y: rect.at(1)!,\n width: rect.at(2)!,\n height: rect.at(3)!,\n },\n direction: dir.value,\n }));\n }\n getRectsForRange(start: number, end: number): SkRect[] {\n return this.ref\n .getRectsForRange(\n start,\n end,\n { value: 0 } /** kTight */,\n { value: 0 } /** kTight */\n )\n .map(({ rect }) => ({\n x: rect[0],\n y: rect[1],\n width: rect[2],\n height: rect[3],\n }));\n }\n getLineMetrics(): SkRect[] {\n return this.ref.getLineMetrics().map((r, index) => ({\n x: r.left,\n y: index * r.height,\n width: r.width,\n height: r.height,\n }));\n }\n\n dispose() {\n this.ref.delete();\n }\n}\n"],"mappings":"AAIA,SAASA,UAAU,QAAQ,QAAQ;AAGnC,OAAO,MAAMC,cAAc,SACjBD,UAAU,CAEpB;EACEE,WAAWA,CAACC,SAAoB,EAAEC,GAAc,EAAE;IAChD,KAAK,CAACD,SAAS,EAAEC,GAAG,EAAE,WAAW,CAAC;EACpC;EACAC,oBAAoBA,CAAA,EAAW;IAC7B,OAAO,IAAI,CAACD,GAAG,CAACC,oBAAoB,CAAC,CAAC;EACxC;EAEAC,oBAAoBA,CAAA,EAAW;IAC7B,OAAO,IAAI,CAACF,GAAG,CAACE,oBAAoB,CAAC,CAAC;EACxC;EAEAC,cAAcA,CAAA,EAAW;IACvB,OAAO,IAAI,CAACH,GAAG,CAACG,cAAc,CAAC,CAAC;EAClC;EAEAC,MAAMA,CAACC,KAAa,EAAQ;IAC1B,IAAI,CAACL,GAAG,CAACI,MAAM,CAACC,KAAK,CAAC;EACxB;EACAC,KAAKA,CAACC,MAAmB,EAAEC,CAAS,EAAEC,CAAS,EAAQ;IACrDF,MAAM,CAACP,GAAG,CAACU,aAAa,CAAC,IAAI,CAACV,GAAG,EAAEQ,CAAC,EAAEC,CAAC,CAAC;EAC1C;EACAE,SAASA,CAAA,EAAW;IAClB,OAAO,IAAI,CAACX,GAAG,CAACW,SAAS,CAAC,CAAC;EAC7B;EACAC,WAAWA,CAAA,EAAW;IACpB,OAAO,IAAI,CAACZ,GAAG,CAACY,WAAW,CAAC,CAAC;EAC/B;EACAC,4BAA4BA,CAACL,CAAS,EAAEC,CAAS,EAAU;IACzD,OAAO,IAAI,CAACT,GAAG,CAACa,4BAA4B,CAACL,CAAC,EAAEC,CAAC,CAAC,CAACK,GAAG;EACxD;EACAC,uBAAuBA,CAAA,EAA0B;IAC/C,OAAO,IAAI,CAACf,GAAG,CAACe,uBAAuB,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC;MAAEC,IAAI;MAAEC;IAAI,CAAC,MAAM;MAChED,IAAI,EAAE;QACJT,CAAC,EAAES,IAAI,CAACE,EAAE,CAAC,CAAC,CAAE;QACdV,CAAC,EAAEQ,IAAI,CAACE,EAAE,CAAC,CAAC,CAAE;QACdd,KAAK,EAAEY,IAAI,CAACE,EAAE,CAAC,CAAC,CAAE;QAClBC,MAAM,EAAEH,IAAI,CAACE,EAAE,CAAC,CAAC;MACnB,CAAC;MACDE,SAAS,EAAEH,GAAG,CAACI;IACjB,CAAC,CAAC,CAAC;EACL;EACAC,gBAAgBA,CAACC,KAAa,EAAEC,GAAW,EAAY;IACrD,OAAO,IAAI,CAACzB,GAAG,CACZuB,gBAAgB,CACfC,KAAK,EACLC,GAAG,EACH;MAAEH,KAAK,EAAE;IAAE,CAAC,CAAC,eACb;MAAEA,KAAK,EAAE;IAAE,CAAC,CAAC,aACf,CAAC,CACAN,GAAG,CAAC,CAAC;MAAEC;IAAK,CAAC,MAAM;MAClBT,CAAC,EAAES,IAAI,CAAC,CAAC,CAAC;MACVR,CAAC,EAAEQ,IAAI,CAAC,CAAC,CAAC;MACVZ,KAAK,EAAEY,IAAI,CAAC,CAAC,CAAC;MACdG,MAAM,EAAEH,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;EACP;EACAS,cAAcA,CAAA,EAAa;IACzB,OAAO,IAAI,CAAC1B,GAAG,CAAC0B,cAAc,CAAC,CAAC,CAACV,GAAG,CAAC,CAACW,CAAC,EAAEC,KAAK,MAAM;MAClDpB,CAAC,EAAEmB,CAAC,CAACE,IAAI;MACTpB,CAAC,EAAEmB,KAAK,GAAGD,CAAC,CAACP,MAAM;MACnBf,KAAK,EAAEsB,CAAC,CAACtB,KAAK;MACde,MAAM,EAAEO,CAAC,CAACP;IACZ,CAAC,CAAC,CAAC;EACL;EAEAU,OAAOA,CAAA,EAAG;IACR,IAAI,CAAC9B,GAAG,CAAC+B,MAAM,CAAC,CAAC;EACnB;AACF","ignoreList":[]}
1
+ {"version":3,"names":["HostObject","JsiSkRect","JsiSkParagraph","constructor","CanvasKit","ref","getMinIntrinsicWidth","getMaxIntrinsicWidth","getLongestLine","layout","width","paint","canvas","x","y","drawParagraph","getHeight","getMaxWidth","getGlyphPositionAtCoordinate","pos","getRectsForPlaceholders","map","rect","dir","direction","value","getRectsForRange","start","end","getLineMetrics","dispose","delete"],"sources":["JsiSkParagraph.ts"],"sourcesContent":["import type { CanvasKit, Paragraph } from \"canvaskit-wasm\";\n\nimport type {\n SkRect,\n SkRectWithDirection,\n SkParagraph,\n LineMetrics,\n} from \"../types\";\n\nimport { HostObject } from \"./Host\";\nimport type { JsiSkCanvas } from \"./JsiSkCanvas\";\nimport { JsiSkRect } from \"./JsiSkRect\";\n\nexport class JsiSkParagraph\n extends HostObject<Paragraph, \"Paragraph\">\n implements SkParagraph\n{\n constructor(CanvasKit: CanvasKit, ref: Paragraph) {\n super(CanvasKit, ref, \"Paragraph\");\n }\n getMinIntrinsicWidth() {\n return this.ref.getMinIntrinsicWidth();\n }\n\n getMaxIntrinsicWidth() {\n return this.ref.getMaxIntrinsicWidth();\n }\n\n getLongestLine() {\n return this.ref.getLongestLine();\n }\n\n layout(width: number) {\n this.ref.layout(width);\n }\n paint(canvas: JsiSkCanvas, x: number, y: number) {\n canvas.ref.drawParagraph(this.ref, x, y);\n }\n getHeight() {\n return this.ref.getHeight();\n }\n getMaxWidth() {\n return this.ref.getMaxWidth();\n }\n getGlyphPositionAtCoordinate(x: number, y: number) {\n return this.ref.getGlyphPositionAtCoordinate(x, y).pos;\n }\n getRectsForPlaceholders(): SkRectWithDirection[] {\n return this.ref.getRectsForPlaceholders().map(({ rect, dir }) => ({\n rect: new JsiSkRect(this.CanvasKit, rect),\n direction: dir.value,\n }));\n }\n getRectsForRange(start: number, end: number): SkRect[] {\n return this.ref\n .getRectsForRange(\n start,\n end,\n { value: 0 } /** kTight */,\n { value: 0 } /** kTight */\n )\n .map(({ rect }) => new JsiSkRect(this.CanvasKit, rect));\n }\n getLineMetrics(): LineMetrics[] {\n return this.ref.getLineMetrics();\n }\n\n dispose() {\n this.ref.delete();\n }\n}\n"],"mappings":"AASA,SAASA,UAAU,QAAQ,QAAQ;AAEnC,SAASC,SAAS,QAAQ,aAAa;AAEvC,OAAO,MAAMC,cAAc,SACjBF,UAAU,CAEpB;EACEG,WAAWA,CAACC,SAAoB,EAAEC,GAAc,EAAE;IAChD,KAAK,CAACD,SAAS,EAAEC,GAAG,EAAE,WAAW,CAAC;EACpC;EACAC,oBAAoBA,CAAA,EAAG;IACrB,OAAO,IAAI,CAACD,GAAG,CAACC,oBAAoB,CAAC,CAAC;EACxC;EAEAC,oBAAoBA,CAAA,EAAG;IACrB,OAAO,IAAI,CAACF,GAAG,CAACE,oBAAoB,CAAC,CAAC;EACxC;EAEAC,cAAcA,CAAA,EAAG;IACf,OAAO,IAAI,CAACH,GAAG,CAACG,cAAc,CAAC,CAAC;EAClC;EAEAC,MAAMA,CAACC,KAAa,EAAE;IACpB,IAAI,CAACL,GAAG,CAACI,MAAM,CAACC,KAAK,CAAC;EACxB;EACAC,KAAKA,CAACC,MAAmB,EAAEC,CAAS,EAAEC,CAAS,EAAE;IAC/CF,MAAM,CAACP,GAAG,CAACU,aAAa,CAAC,IAAI,CAACV,GAAG,EAAEQ,CAAC,EAAEC,CAAC,CAAC;EAC1C;EACAE,SAASA,CAAA,EAAG;IACV,OAAO,IAAI,CAACX,GAAG,CAACW,SAAS,CAAC,CAAC;EAC7B;EACAC,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACZ,GAAG,CAACY,WAAW,CAAC,CAAC;EAC/B;EACAC,4BAA4BA,CAACL,CAAS,EAAEC,CAAS,EAAE;IACjD,OAAO,IAAI,CAACT,GAAG,CAACa,4BAA4B,CAACL,CAAC,EAAEC,CAAC,CAAC,CAACK,GAAG;EACxD;EACAC,uBAAuBA,CAAA,EAA0B;IAC/C,OAAO,IAAI,CAACf,GAAG,CAACe,uBAAuB,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC;MAAEC,IAAI;MAAEC;IAAI,CAAC,MAAM;MAChED,IAAI,EAAE,IAAIrB,SAAS,CAAC,IAAI,CAACG,SAAS,EAAEkB,IAAI,CAAC;MACzCE,SAAS,EAAED,GAAG,CAACE;IACjB,CAAC,CAAC,CAAC;EACL;EACAC,gBAAgBA,CAACC,KAAa,EAAEC,GAAW,EAAY;IACrD,OAAO,IAAI,CAACvB,GAAG,CACZqB,gBAAgB,CACfC,KAAK,EACLC,GAAG,EACH;MAAEH,KAAK,EAAE;IAAE,CAAC,CAAC,eACb;MAAEA,KAAK,EAAE;IAAE,CAAC,CAAC,aACf,CAAC,CACAJ,GAAG,CAAC,CAAC;MAAEC;IAAK,CAAC,KAAK,IAAIrB,SAAS,CAAC,IAAI,CAACG,SAAS,EAAEkB,IAAI,CAAC,CAAC;EAC3D;EACAO,cAAcA,CAAA,EAAkB;IAC9B,OAAO,IAAI,CAACxB,GAAG,CAACwB,cAAc,CAAC,CAAC;EAClC;EAEAC,OAAOA,CAAA,EAAG;IACR,IAAI,CAACzB,GAAG,CAAC0B,MAAM,CAAC,CAAC;EACnB;AACF","ignoreList":[]}
@@ -1,12 +1,4 @@
1
1
  import type { SharedValue } from "react-native-reanimated";
2
2
  import type { Skia, SkSize } from "../skia/types";
3
- import { Container, StaticContainer } from "./StaticContainer";
4
- declare class ReanimatedContainer extends Container {
5
- private nativeId;
6
- private onSize?;
7
- private mapperId;
8
- constructor(Skia: Skia, nativeId: number, onSize?: SharedValue<SkSize> | undefined);
9
- redraw(): void;
10
- }
11
- export declare const createContainer: (Skia: Skia, nativeId: number, onSize?: SharedValue<SkSize>) => StaticContainer | ReanimatedContainer;
12
- export {};
3
+ import { StaticContainer } from "./StaticContainer";
4
+ export declare const createContainer: (Skia: Skia, nativeId: number, onSize?: SharedValue<SkSize>) => StaticContainer;
@@ -1,81 +1,5 @@
1
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
2
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
3
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
4
- import Rea from "../external/reanimated/ReanimatedProxy";
5
- import { HAS_REANIMATED_3 } from "../external/reanimated/renderHelpers";
6
- import { Recorder } from "./Recorder/Recorder";
7
- import { visit } from "./Recorder/Visitor";
8
- import { replay } from "./Recorder/Player";
9
- import { createDrawingContext } from "./Recorder/DrawingContext";
10
- import { Container, StaticContainer } from "./StaticContainer";
11
- const drawOnscreen = (Skia, nativeId, recording, onSize) => {
12
- "worklet";
13
-
14
- if (onSize) {
15
- const size = SkiaViewApi.size(nativeId);
16
- if (size.width !== onSize.value.width || size.height !== onSize.value.height) {
17
- onSize.value = size;
18
- }
19
- }
20
- const rec = Skia.PictureRecorder();
21
- const canvas = rec.beginRecording();
22
- //const start = performance.now();
23
-
24
- const ctx = createDrawingContext(Skia, recording.paintPool, canvas);
25
- replay(ctx, recording.commands);
26
- const picture = rec.finishRecordingAsPicture();
27
- //const end = performance.now();
28
- //console.log("Recording time: ", end - start);
29
- SkiaViewApi.setJsiProperty(nativeId, "picture", picture);
30
- };
31
- class ReanimatedContainer extends Container {
32
- constructor(Skia, nativeId, onSize) {
33
- super(Skia);
34
- this.nativeId = nativeId;
35
- this.onSize = onSize;
36
- _defineProperty(this, "mapperId", null);
37
- }
38
- redraw() {
39
- if (this.mapperId !== null) {
40
- Rea.stopMapper(this.mapperId);
41
- }
42
- if (this.unmounted) {
43
- return;
44
- }
45
- const recorder = new Recorder();
46
- visit(recorder, this.root);
47
- const record = recorder.getRecording();
48
- const {
49
- animationValues
50
- } = record;
51
- this.recording = {
52
- commands: record.commands,
53
- paintPool: record.paintPool
54
- };
55
- const {
56
- nativeId,
57
- Skia,
58
- recording
59
- } = this;
60
- if (animationValues.size > 0) {
61
- this.mapperId = Rea.startMapper(() => {
62
- "worklet";
63
-
64
- drawOnscreen(Skia, nativeId, recording);
65
- }, Array.from(animationValues));
66
- }
67
- Rea.runOnUI(onSize => {
68
- "worklet";
69
-
70
- drawOnscreen(Skia, nativeId, recording, onSize);
71
- })(this.onSize);
72
- }
73
- }
1
+ import { StaticContainer } from "./StaticContainer";
74
2
  export const createContainer = (Skia, nativeId, onSize) => {
75
- if (HAS_REANIMATED_3 && nativeId !== -1) {
76
- return new ReanimatedContainer(Skia, nativeId, onSize);
77
- } else {
78
- return new StaticContainer(Skia, nativeId);
79
- }
3
+ return new StaticContainer(Skia, nativeId, onSize);
80
4
  };
81
5
  //# sourceMappingURL=Container.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Rea","HAS_REANIMATED_3","Recorder","visit","replay","createDrawingContext","Container","StaticContainer","drawOnscreen","Skia","nativeId","recording","onSize","size","SkiaViewApi","width","value","height","rec","PictureRecorder","canvas","beginRecording","ctx","paintPool","commands","picture","finishRecordingAsPicture","setJsiProperty","ReanimatedContainer","constructor","_defineProperty","redraw","mapperId","stopMapper","unmounted","recorder","root","record","getRecording","animationValues","startMapper","Array","from","runOnUI","createContainer"],"sources":["Container.ts"],"sourcesContent":["import type { SharedValue } from \"react-native-reanimated\";\n\nimport Rea from \"../external/reanimated/ReanimatedProxy\";\nimport type { Skia, SkSize } from \"../skia/types\";\nimport { HAS_REANIMATED_3 } from \"../external/reanimated/renderHelpers\";\n\nimport type { Recording } from \"./Recorder/Recorder\";\nimport { Recorder } from \"./Recorder/Recorder\";\nimport { visit } from \"./Recorder/Visitor\";\nimport { replay } from \"./Recorder/Player\";\nimport { createDrawingContext } from \"./Recorder/DrawingContext\";\nimport { Container, StaticContainer } from \"./StaticContainer\";\n\nconst drawOnscreen = (\n Skia: Skia,\n nativeId: number,\n recording: Recording,\n onSize?: SharedValue<SkSize>\n) => {\n \"worklet\";\n if (onSize) {\n const size = SkiaViewApi.size(nativeId);\n if (\n size.width !== onSize.value.width ||\n size.height !== onSize.value.height\n ) {\n onSize.value = size;\n }\n }\n const rec = Skia.PictureRecorder();\n const canvas = rec.beginRecording();\n //const start = performance.now();\n\n const ctx = createDrawingContext(Skia, recording.paintPool, canvas);\n replay(ctx, recording.commands);\n const picture = rec.finishRecordingAsPicture();\n //const end = performance.now();\n //console.log(\"Recording time: \", end - start);\n SkiaViewApi.setJsiProperty(nativeId, \"picture\", picture);\n};\n\nclass ReanimatedContainer extends Container {\n private mapperId: number | null = null;\n\n constructor(\n Skia: Skia,\n private nativeId: number,\n private onSize?: SharedValue<SkSize>\n ) {\n super(Skia);\n }\n\n redraw() {\n if (this.mapperId !== null) {\n Rea.stopMapper(this.mapperId);\n }\n if (this.unmounted) {\n return;\n }\n const recorder = new Recorder();\n visit(recorder, this.root);\n const record = recorder.getRecording();\n const { animationValues } = record;\n this.recording = {\n commands: record.commands,\n paintPool: record.paintPool,\n };\n const { nativeId, Skia, recording } = this;\n if (animationValues.size > 0) {\n this.mapperId = Rea.startMapper(() => {\n \"worklet\";\n drawOnscreen(Skia, nativeId, recording!);\n }, Array.from(animationValues));\n }\n Rea.runOnUI((onSize?: SharedValue<SkSize>) => {\n \"worklet\";\n drawOnscreen(Skia, nativeId, recording!, onSize);\n })(this.onSize);\n }\n}\n\nexport const createContainer = (\n Skia: Skia,\n nativeId: number,\n onSize?: SharedValue<SkSize>\n) => {\n if (HAS_REANIMATED_3 && nativeId !== -1) {\n return new ReanimatedContainer(Skia, nativeId, onSize);\n } else {\n return new StaticContainer(Skia, nativeId);\n }\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["StaticContainer","createContainer","Skia","nativeId","onSize"],"sources":["Container.ts"],"sourcesContent":["import type { SharedValue } from \"react-native-reanimated\";\n\nimport type { Skia, SkSize } from \"../skia/types\";\n\nimport { StaticContainer } from \"./StaticContainer\";\n\nexport const createContainer = (\n Skia: Skia,\n nativeId: number,\n onSize?: SharedValue<SkSize>\n) => {\n return new StaticContainer(Skia, nativeId, onSize);\n};\n"],"mappings":"AAIA,SAASA,eAAe,QAAQ,mBAAmB;AAEnD,OAAO,MAAMC,eAAe,GAAGA,CAC7BC,IAAU,EACVC,QAAgB,EAChBC,MAA4B,KACzB;EACH,OAAO,IAAIJ,eAAe,CAACE,IAAI,EAAEC,QAAQ,EAAEC,MAAM,CAAC;AACpD,CAAC","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ import type { SharedValue } from "react-native-reanimated";
2
+ import type { Skia, SkSize } from "../skia/types";
3
+ import { Container, StaticContainer } from "./StaticContainer";
4
+ import "../skia/NativeSetup";
5
+ import "../views/api";
6
+ declare class ReanimatedContainer extends Container {
7
+ private nativeId;
8
+ private onSize?;
9
+ private mapperId;
10
+ constructor(Skia: Skia, nativeId: number, onSize?: SharedValue<SkSize> | undefined);
11
+ redraw(): void;
12
+ }
13
+ export declare const createContainer: (Skia: Skia, nativeId: number, onSize?: SharedValue<SkSize>) => StaticContainer | ReanimatedContainer;
14
+ export {};
@@ -0,0 +1,83 @@
1
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
2
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
3
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
4
+ import Rea from "../external/reanimated/ReanimatedProxy";
5
+ import { HAS_REANIMATED_3 } from "../external/reanimated/renderHelpers";
6
+ import { Recorder } from "./Recorder/Recorder";
7
+ import { visit } from "./Recorder/Visitor";
8
+ import { replay } from "./Recorder/Player";
9
+ import { createDrawingContext } from "./Recorder/DrawingContext";
10
+ import { Container, StaticContainer } from "./StaticContainer";
11
+ import "../skia/NativeSetup";
12
+ import "../views/api";
13
+ const drawOnscreen = (Skia, nativeId, recording, onSize) => {
14
+ "worklet";
15
+
16
+ if (onSize) {
17
+ const size = SkiaViewApi.size(nativeId);
18
+ if (size.width !== onSize.value.width || size.height !== onSize.value.height) {
19
+ onSize.value = size;
20
+ }
21
+ }
22
+ const rec = Skia.PictureRecorder();
23
+ const canvas = rec.beginRecording();
24
+ //const start = performance.now();
25
+
26
+ const ctx = createDrawingContext(Skia, recording.paintPool, canvas);
27
+ replay(ctx, recording.commands);
28
+ const picture = rec.finishRecordingAsPicture();
29
+ //const end = performance.now();
30
+ //console.log("Recording time: ", end - start);
31
+ SkiaViewApi.setJsiProperty(nativeId, "picture", picture);
32
+ };
33
+ class ReanimatedContainer extends Container {
34
+ constructor(Skia, nativeId, onSize) {
35
+ super(Skia);
36
+ this.nativeId = nativeId;
37
+ this.onSize = onSize;
38
+ _defineProperty(this, "mapperId", null);
39
+ }
40
+ redraw() {
41
+ if (this.mapperId !== null) {
42
+ Rea.stopMapper(this.mapperId);
43
+ }
44
+ if (this.unmounted) {
45
+ return;
46
+ }
47
+ const recorder = new Recorder();
48
+ visit(recorder, this.root);
49
+ const record = recorder.getRecording();
50
+ const {
51
+ animationValues
52
+ } = record;
53
+ this.recording = {
54
+ commands: record.commands,
55
+ paintPool: record.paintPool
56
+ };
57
+ const {
58
+ nativeId,
59
+ Skia,
60
+ recording
61
+ } = this;
62
+ if (animationValues.size > 0) {
63
+ this.mapperId = Rea.startMapper(() => {
64
+ "worklet";
65
+
66
+ drawOnscreen(Skia, nativeId, recording);
67
+ }, Array.from(animationValues));
68
+ }
69
+ Rea.runOnUI(onSize => {
70
+ "worklet";
71
+
72
+ drawOnscreen(Skia, nativeId, recording, onSize);
73
+ })(this.onSize);
74
+ }
75
+ }
76
+ export const createContainer = (Skia, nativeId, onSize) => {
77
+ if (HAS_REANIMATED_3 && nativeId !== -1) {
78
+ return new ReanimatedContainer(Skia, nativeId, onSize);
79
+ } else {
80
+ return new StaticContainer(Skia, nativeId);
81
+ }
82
+ };
83
+ //# sourceMappingURL=Container.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Rea","HAS_REANIMATED_3","Recorder","visit","replay","createDrawingContext","Container","StaticContainer","drawOnscreen","Skia","nativeId","recording","onSize","size","SkiaViewApi","width","value","height","rec","PictureRecorder","canvas","beginRecording","ctx","paintPool","commands","picture","finishRecordingAsPicture","setJsiProperty","ReanimatedContainer","constructor","_defineProperty","redraw","mapperId","stopMapper","unmounted","recorder","root","record","getRecording","animationValues","startMapper","Array","from","runOnUI","createContainer"],"sources":["Container.web.ts"],"sourcesContent":["import type { SharedValue } from \"react-native-reanimated\";\n\nimport Rea from \"../external/reanimated/ReanimatedProxy\";\nimport type { Skia, SkSize } from \"../skia/types\";\nimport { HAS_REANIMATED_3 } from \"../external/reanimated/renderHelpers\";\n\nimport type { Recording } from \"./Recorder/Recorder\";\nimport { Recorder } from \"./Recorder/Recorder\";\nimport { visit } from \"./Recorder/Visitor\";\nimport { replay } from \"./Recorder/Player\";\nimport { createDrawingContext } from \"./Recorder/DrawingContext\";\nimport { Container, StaticContainer } from \"./StaticContainer\";\n\nimport \"../skia/NativeSetup\";\nimport \"../views/api\";\n\nconst drawOnscreen = (\n Skia: Skia,\n nativeId: number,\n recording: Recording,\n onSize?: SharedValue<SkSize>\n) => {\n \"worklet\";\n if (onSize) {\n const size = SkiaViewApi.size(nativeId);\n if (\n size.width !== onSize.value.width ||\n size.height !== onSize.value.height\n ) {\n onSize.value = size;\n }\n }\n const rec = Skia.PictureRecorder();\n const canvas = rec.beginRecording();\n //const start = performance.now();\n\n const ctx = createDrawingContext(Skia, recording.paintPool, canvas);\n replay(ctx, recording.commands);\n const picture = rec.finishRecordingAsPicture();\n //const end = performance.now();\n //console.log(\"Recording time: \", end - start);\n SkiaViewApi.setJsiProperty(nativeId, \"picture\", picture);\n};\n\nclass ReanimatedContainer extends Container {\n private mapperId: number | null = null;\n\n constructor(\n Skia: Skia,\n private nativeId: number,\n private onSize?: SharedValue<SkSize>\n ) {\n super(Skia);\n }\n\n redraw() {\n if (this.mapperId !== null) {\n Rea.stopMapper(this.mapperId);\n }\n if (this.unmounted) {\n return;\n }\n const recorder = new Recorder();\n visit(recorder, this.root);\n const record = recorder.getRecording();\n const { animationValues } = record;\n this.recording = {\n commands: record.commands,\n paintPool: record.paintPool,\n };\n const { nativeId, Skia, recording } = this;\n if (animationValues.size > 0) {\n this.mapperId = Rea.startMapper(() => {\n \"worklet\";\n drawOnscreen(Skia, nativeId, recording!);\n }, Array.from(animationValues));\n }\n Rea.runOnUI((onSize?: SharedValue<SkSize>) => {\n \"worklet\";\n drawOnscreen(Skia, nativeId, recording!, onSize);\n })(this.onSize);\n }\n}\n\nexport const createContainer = (\n Skia: Skia,\n nativeId: number,\n onSize?: SharedValue<SkSize>\n) => {\n if (HAS_REANIMATED_3 && nativeId !== -1) {\n return new ReanimatedContainer(Skia, nativeId, onSize);\n } else {\n return new StaticContainer(Skia, nativeId);\n }\n};\n"],"mappings":"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","ignoreList":[]}
@@ -18,7 +18,7 @@ export declare class ReanimatedRecorder implements BaseRecorder {
18
18
  pushPathEffect(pathEffectType: NodeType, props: AnimatedProps<unknown>): void;
19
19
  pushImageFilter(imageFilterType: NodeType, props: AnimatedProps<unknown>): void;
20
20
  pushColorFilter(colorFilterType: NodeType, props: AnimatedProps<unknown>): void;
21
- pushShader(shaderType: NodeType, props: AnimatedProps<unknown>): void;
21
+ pushShader(shaderType: NodeType, props: AnimatedProps<unknown>, children: number): void;
22
22
  pushBlurMaskFilter(props: AnimatedProps<BlurMaskFilterProps>): void;
23
23
  composePathEffect(): void;
24
24
  composeColorFilter(): void;
@@ -58,9 +58,9 @@ export class ReanimatedRecorder {
58
58
  this.processAnimationValues(props);
59
59
  this.recorder.pushColorFilter(colorFilterType, props);
60
60
  }
61
- pushShader(shaderType, props) {
61
+ pushShader(shaderType, props, children) {
62
62
  this.processAnimationValues(props);
63
- this.recorder.pushShader(shaderType, props);
63
+ this.recorder.pushShader(shaderType, props, children);
64
64
  }
65
65
  pushBlurMaskFilter(props) {
66
66
  this.processAnimationValues(props);
@@ -1 +1 @@
1
- {"version":3,"names":["isSharedValue","ReanimatedRecorder","constructor","Skia","_defineProperty","Set","recorder","Recorder","processAnimationValues","props","Object","values","forEach","value","has","name","size","add","getRecorder","getSharedValues","Array","from","saveGroup","restoreGroup","savePaint","standalone","restorePaint","restorePaintDeclaration","materializePaint","pushPathEffect","pathEffectType","pushImageFilter","imageFilterType","pushColorFilter","colorFilterType","pushShader","shaderType","pushBlurMaskFilter","composePathEffect","composeColorFilter","composeImageFilter","saveCTM","restoreCTM","drawPaint","saveLayer","saveBackdropFilter","drawBox","boxProps","shadows","shadow","map","s","drawImage","drawCircle","drawPoints","drawPath","drawRect","drawRRect","drawOval","drawLine","drawPatch","drawVertices","drawDiffRect","drawText","drawTextPath","drawTextBlob","drawGlyphs","drawPicture","drawImageSVG","drawParagraph","drawAtlas","drawSkottie"],"sources":["ReanimatedRecorder.ts"],"sourcesContent":["import type { SharedValue } from \"react-native-reanimated\";\n\nimport type { BaseRecorder, JsiRecorder, Skia } from \"../../skia/types\";\nimport type {\n PaintProps,\n NodeType,\n BlurMaskFilterProps,\n CTMProps,\n BoxProps,\n BoxShadowProps,\n ImageProps,\n CircleProps,\n PointsProps,\n PathProps,\n RectProps,\n RoundedRectProps,\n OvalProps,\n LineProps,\n PatchProps,\n VerticesProps,\n DiffRectProps,\n TextProps,\n TextPathProps,\n TextBlobProps,\n GlyphsProps,\n PictureProps,\n ImageSVGProps,\n ParagraphProps,\n AtlasProps,\n SkottieProps,\n} from \"../../dom/types\";\nimport type { AnimatedProps } from \"../../renderer\";\nimport { isSharedValue } from \"../utils\";\n\nexport class ReanimatedRecorder implements BaseRecorder {\n private values = new Set<SharedValue<unknown>>();\n private recorder: JsiRecorder;\n\n constructor(Skia: Skia) {\n this.recorder = Skia.Recorder();\n }\n\n private processAnimationValues(props?: Record<string, unknown>) {\n if (!props) {\n return;\n }\n Object.values(props).forEach((value) => {\n if (isSharedValue(value) && !this.values.has(value)) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n value.name = `variable${this.values.size}`;\n this.values.add(value as SharedValue<unknown>);\n }\n });\n }\n\n getRecorder() {\n return this.recorder;\n }\n\n getSharedValues() {\n return Array.from(this.values);\n }\n\n saveGroup(): void {\n this.recorder.saveGroup();\n }\n\n restoreGroup(): void {\n this.recorder.restoreGroup();\n }\n\n savePaint(props: AnimatedProps<PaintProps>, standalone: boolean): void {\n this.processAnimationValues(props);\n this.recorder.savePaint(props, standalone);\n }\n\n restorePaint(): void {\n this.recorder.restorePaint();\n }\n\n restorePaintDeclaration(): void {\n this.recorder.restorePaintDeclaration();\n }\n\n materializePaint(): void {\n this.recorder.materializePaint();\n }\n\n pushPathEffect(\n pathEffectType: NodeType,\n props: AnimatedProps<unknown>\n ): void {\n this.processAnimationValues(props);\n this.recorder.pushPathEffect(pathEffectType, props);\n }\n\n pushImageFilter(\n imageFilterType: NodeType,\n props: AnimatedProps<unknown>\n ): void {\n this.processAnimationValues(props);\n this.recorder.pushImageFilter(imageFilterType, props);\n }\n\n pushColorFilter(\n colorFilterType: NodeType,\n props: AnimatedProps<unknown>\n ): void {\n this.processAnimationValues(props);\n this.recorder.pushColorFilter(colorFilterType, props);\n }\n\n pushShader(shaderType: NodeType, props: AnimatedProps<unknown>): void {\n this.processAnimationValues(props);\n this.recorder.pushShader(shaderType, props);\n }\n\n pushBlurMaskFilter(props: AnimatedProps<BlurMaskFilterProps>): void {\n this.processAnimationValues(props);\n this.recorder.pushBlurMaskFilter(props);\n }\n\n composePathEffect(): void {\n this.recorder.composePathEffect();\n }\n\n composeColorFilter(): void {\n this.recorder.composeColorFilter();\n }\n\n composeImageFilter(): void {\n this.recorder.composeImageFilter();\n }\n\n saveCTM(props: AnimatedProps<CTMProps>): void {\n this.processAnimationValues(props);\n this.recorder.saveCTM(props);\n }\n\n restoreCTM(): void {\n this.recorder.restoreCTM();\n }\n\n drawPaint(): void {\n this.recorder.drawPaint();\n }\n\n saveLayer(): void {\n this.recorder.saveLayer();\n }\n\n saveBackdropFilter(): void {\n this.recorder.saveBackdropFilter();\n }\n\n drawBox(\n boxProps: AnimatedProps<BoxProps>,\n shadows: {\n props: BoxShadowProps;\n }[]\n ): void {\n this.processAnimationValues(boxProps);\n shadows.forEach((shadow) => {\n this.processAnimationValues(\n shadow.props as AnimatedProps<BoxShadowProps>\n );\n });\n this.recorder.drawBox(\n boxProps,\n // TODO: Fix this type BaseRecorder.drawBox()\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n shadows.map((s) => s.props)\n );\n }\n\n drawImage(props: AnimatedProps<ImageProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawImage(props);\n }\n\n drawCircle(props: AnimatedProps<CircleProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawCircle(props);\n }\n\n drawPoints(props: AnimatedProps<PointsProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawPoints(props);\n }\n\n drawPath(props: AnimatedProps<PathProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawPath(props);\n }\n\n drawRect(props: AnimatedProps<RectProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawRect(props);\n }\n\n drawRRect(props: AnimatedProps<RoundedRectProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawRRect(props);\n }\n\n drawOval(props: AnimatedProps<OvalProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawOval(props);\n }\n\n drawLine(props: AnimatedProps<LineProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawLine(props);\n }\n\n drawPatch(props: AnimatedProps<PatchProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawPatch(props);\n }\n\n drawVertices(props: AnimatedProps<VerticesProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawVertices(props);\n }\n\n drawDiffRect(props: AnimatedProps<DiffRectProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawDiffRect(props);\n }\n\n drawText(props: AnimatedProps<TextProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawText(props);\n }\n\n drawTextPath(props: AnimatedProps<TextPathProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawTextPath(props);\n }\n\n drawTextBlob(props: AnimatedProps<TextBlobProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawTextBlob(props);\n }\n\n drawGlyphs(props: AnimatedProps<GlyphsProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawGlyphs(props);\n }\n\n drawPicture(props: AnimatedProps<PictureProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawPicture(props);\n }\n\n drawImageSVG(props: AnimatedProps<ImageSVGProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawImageSVG(props);\n }\n\n drawParagraph(props: AnimatedProps<ParagraphProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawParagraph(props);\n }\n\n drawAtlas(props: AnimatedProps<AtlasProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawAtlas(props);\n }\n\n drawSkottie(props: AnimatedProps<SkottieProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawSkottie(props);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isSharedValue","ReanimatedRecorder","constructor","Skia","_defineProperty","Set","recorder","Recorder","processAnimationValues","props","Object","values","forEach","value","has","name","size","add","getRecorder","getSharedValues","Array","from","saveGroup","restoreGroup","savePaint","standalone","restorePaint","restorePaintDeclaration","materializePaint","pushPathEffect","pathEffectType","pushImageFilter","imageFilterType","pushColorFilter","colorFilterType","pushShader","shaderType","children","pushBlurMaskFilter","composePathEffect","composeColorFilter","composeImageFilter","saveCTM","restoreCTM","drawPaint","saveLayer","saveBackdropFilter","drawBox","boxProps","shadows","shadow","map","s","drawImage","drawCircle","drawPoints","drawPath","drawRect","drawRRect","drawOval","drawLine","drawPatch","drawVertices","drawDiffRect","drawText","drawTextPath","drawTextBlob","drawGlyphs","drawPicture","drawImageSVG","drawParagraph","drawAtlas","drawSkottie"],"sources":["ReanimatedRecorder.ts"],"sourcesContent":["import type { SharedValue } from \"react-native-reanimated\";\n\nimport type { BaseRecorder, JsiRecorder, Skia } from \"../../skia/types\";\nimport type {\n PaintProps,\n NodeType,\n BlurMaskFilterProps,\n CTMProps,\n BoxProps,\n BoxShadowProps,\n ImageProps,\n CircleProps,\n PointsProps,\n PathProps,\n RectProps,\n RoundedRectProps,\n OvalProps,\n LineProps,\n PatchProps,\n VerticesProps,\n DiffRectProps,\n TextProps,\n TextPathProps,\n TextBlobProps,\n GlyphsProps,\n PictureProps,\n ImageSVGProps,\n ParagraphProps,\n AtlasProps,\n SkottieProps,\n} from \"../../dom/types\";\nimport type { AnimatedProps } from \"../../renderer\";\nimport { isSharedValue } from \"../utils\";\n\nexport class ReanimatedRecorder implements BaseRecorder {\n private values = new Set<SharedValue<unknown>>();\n private recorder: JsiRecorder;\n\n constructor(Skia: Skia) {\n this.recorder = Skia.Recorder();\n }\n\n private processAnimationValues(props?: Record<string, unknown>) {\n if (!props) {\n return;\n }\n Object.values(props).forEach((value) => {\n if (isSharedValue(value) && !this.values.has(value)) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n value.name = `variable${this.values.size}`;\n this.values.add(value as SharedValue<unknown>);\n }\n });\n }\n\n getRecorder() {\n return this.recorder;\n }\n\n getSharedValues() {\n return Array.from(this.values);\n }\n\n saveGroup(): void {\n this.recorder.saveGroup();\n }\n\n restoreGroup(): void {\n this.recorder.restoreGroup();\n }\n\n savePaint(props: AnimatedProps<PaintProps>, standalone: boolean): void {\n this.processAnimationValues(props);\n this.recorder.savePaint(props, standalone);\n }\n\n restorePaint(): void {\n this.recorder.restorePaint();\n }\n\n restorePaintDeclaration(): void {\n this.recorder.restorePaintDeclaration();\n }\n\n materializePaint(): void {\n this.recorder.materializePaint();\n }\n\n pushPathEffect(\n pathEffectType: NodeType,\n props: AnimatedProps<unknown>\n ): void {\n this.processAnimationValues(props);\n this.recorder.pushPathEffect(pathEffectType, props);\n }\n\n pushImageFilter(\n imageFilterType: NodeType,\n props: AnimatedProps<unknown>\n ): void {\n this.processAnimationValues(props);\n this.recorder.pushImageFilter(imageFilterType, props);\n }\n\n pushColorFilter(\n colorFilterType: NodeType,\n props: AnimatedProps<unknown>\n ): void {\n this.processAnimationValues(props);\n this.recorder.pushColorFilter(colorFilterType, props);\n }\n\n pushShader(\n shaderType: NodeType,\n props: AnimatedProps<unknown>,\n children: number\n ): void {\n this.processAnimationValues(props);\n this.recorder.pushShader(shaderType, props, children);\n }\n\n pushBlurMaskFilter(props: AnimatedProps<BlurMaskFilterProps>): void {\n this.processAnimationValues(props);\n this.recorder.pushBlurMaskFilter(props);\n }\n\n composePathEffect(): void {\n this.recorder.composePathEffect();\n }\n\n composeColorFilter(): void {\n this.recorder.composeColorFilter();\n }\n\n composeImageFilter(): void {\n this.recorder.composeImageFilter();\n }\n\n saveCTM(props: AnimatedProps<CTMProps>): void {\n this.processAnimationValues(props);\n this.recorder.saveCTM(props);\n }\n\n restoreCTM(): void {\n this.recorder.restoreCTM();\n }\n\n drawPaint(): void {\n this.recorder.drawPaint();\n }\n\n saveLayer(): void {\n this.recorder.saveLayer();\n }\n\n saveBackdropFilter(): void {\n this.recorder.saveBackdropFilter();\n }\n\n drawBox(\n boxProps: AnimatedProps<BoxProps>,\n shadows: {\n props: BoxShadowProps;\n }[]\n ): void {\n this.processAnimationValues(boxProps);\n shadows.forEach((shadow) => {\n this.processAnimationValues(\n shadow.props as AnimatedProps<BoxShadowProps>\n );\n });\n this.recorder.drawBox(\n boxProps,\n // TODO: Fix this type BaseRecorder.drawBox()\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n shadows.map((s) => s.props)\n );\n }\n\n drawImage(props: AnimatedProps<ImageProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawImage(props);\n }\n\n drawCircle(props: AnimatedProps<CircleProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawCircle(props);\n }\n\n drawPoints(props: AnimatedProps<PointsProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawPoints(props);\n }\n\n drawPath(props: AnimatedProps<PathProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawPath(props);\n }\n\n drawRect(props: AnimatedProps<RectProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawRect(props);\n }\n\n drawRRect(props: AnimatedProps<RoundedRectProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawRRect(props);\n }\n\n drawOval(props: AnimatedProps<OvalProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawOval(props);\n }\n\n drawLine(props: AnimatedProps<LineProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawLine(props);\n }\n\n drawPatch(props: AnimatedProps<PatchProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawPatch(props);\n }\n\n drawVertices(props: AnimatedProps<VerticesProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawVertices(props);\n }\n\n drawDiffRect(props: AnimatedProps<DiffRectProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawDiffRect(props);\n }\n\n drawText(props: AnimatedProps<TextProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawText(props);\n }\n\n drawTextPath(props: AnimatedProps<TextPathProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawTextPath(props);\n }\n\n drawTextBlob(props: AnimatedProps<TextBlobProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawTextBlob(props);\n }\n\n drawGlyphs(props: AnimatedProps<GlyphsProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawGlyphs(props);\n }\n\n drawPicture(props: AnimatedProps<PictureProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawPicture(props);\n }\n\n drawImageSVG(props: AnimatedProps<ImageSVGProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawImageSVG(props);\n }\n\n drawParagraph(props: AnimatedProps<ParagraphProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawParagraph(props);\n }\n\n drawAtlas(props: AnimatedProps<AtlasProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawAtlas(props);\n }\n\n drawSkottie(props: AnimatedProps<SkottieProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawSkottie(props);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -28,7 +28,7 @@ export declare class Recorder implements BaseRecorder {
28
28
  pushPathEffect(pathEffectType: NodeType, props: AnimatedProps<unknown>): void;
29
29
  pushImageFilter(imageFilterType: NodeType, props: AnimatedProps<unknown>): void;
30
30
  pushColorFilter(colorFilterType: NodeType, props: AnimatedProps<unknown>): void;
31
- pushShader(shaderType: NodeType, props: AnimatedProps<unknown>): void;
31
+ pushShader(shaderType: NodeType, props: AnimatedProps<unknown>, children: number): void;
32
32
  pushBlurMaskFilter(props: AnimatedProps<BlurMaskFilterProps>): void;
33
33
  composePathEffect(): void;
34
34
  composeColorFilter(): void;
@@ -109,14 +109,15 @@ export class Recorder {
109
109
  props
110
110
  });
111
111
  }
112
- pushShader(shaderType, props) {
112
+ pushShader(shaderType, props, children) {
113
113
  if (!isShader(shaderType) && !(shaderType === NodeType.Blend)) {
114
114
  throw new Error("Invalid color filter type: " + shaderType);
115
115
  }
116
116
  this.add({
117
117
  type: CommandType.PushShader,
118
118
  shaderType,
119
- props
119
+ props,
120
+ children
120
121
  });
121
122
  }
122
123
  pushBlurMaskFilter(props) {
@@ -1 +1 @@
1
- {"version":3,"names":["NodeType","isSharedValue","isColorFilter","isImageFilter","isPathEffect","isShader","CommandType","Recorder","constructor","_defineProperty","Set","cursors","push","commands","getRecording","paintPool","animationValues","processProps","props","animatedProps","hasAnimatedProps","key","prop","add","undefined","command","length","saveGroup","children","type","Group","restoreGroup","pop","savePaint","standalone","SavePaint","restorePaint","RestorePaint","restorePaintDeclaration","RestorePaintDeclaration","materializePaint","MaterializePaint","pushPathEffect","pathEffectType","Error","PushPathEffect","pushImageFilter","imageFilterType","PushImageFilter","pushColorFilter","colorFilterType","PushColorFilter","pushShader","shaderType","Blend","PushShader","pushBlurMaskFilter","PushBlurMaskFilter","composePathEffect","ComposePathEffect","composeColorFilter","ComposeColorFilter","composeImageFilter","ComposeImageFilter","saveCTM","SaveCTM","restoreCTM","RestoreCTM","drawPaint","DrawPaint","saveLayer","SaveLayer","saveBackdropFilter","SaveBackdropFilter","drawBox","boxProps","shadows","forEach","shadow","DrawBox","drawImage","DrawImage","drawCircle","DrawCircle","drawPoints","DrawPoints","drawPath","DrawPath","drawRect","DrawRect","drawRRect","DrawRRect","drawOval","DrawOval","drawLine","DrawLine","drawPatch","DrawPatch","drawVertices","DrawVertices","drawDiffRect","DrawDiffRect","drawText","DrawText","drawTextPath","DrawTextPath","drawTextBlob","DrawTextBlob","drawGlyphs","DrawGlyphs","drawPicture","DrawPicture","drawImageSVG","DrawImageSVG","drawParagraph","DrawParagraph","drawAtlas","DrawAtlas","drawSkottie","DrawSkottie"],"sources":["Recorder.ts"],"sourcesContent":["import type { SharedValue } from \"react-native-reanimated\";\n\nimport { NodeType } from \"../../dom/types\";\nimport type {\n BlurMaskFilterProps,\n CircleProps,\n CTMProps,\n ImageProps,\n PaintProps,\n PointsProps,\n PathProps,\n RectProps,\n RoundedRectProps,\n OvalProps,\n LineProps,\n PatchProps,\n VerticesProps,\n DiffRectProps,\n TextProps,\n TextPathProps,\n TextBlobProps,\n GlyphsProps,\n PictureProps,\n ImageSVGProps,\n ParagraphProps,\n AtlasProps,\n BoxProps,\n BoxShadowProps,\n SkottieProps,\n} from \"../../dom/types\";\nimport type { AnimatedProps } from \"../../renderer\";\nimport { isSharedValue } from \"../utils\";\nimport { isColorFilter, isImageFilter, isPathEffect, isShader } from \"../Node\";\nimport type { SkPaint, BaseRecorder } from \"../../skia/types\";\n\nimport { CommandType } from \"./Core\";\nimport type { Command } from \"./Core\";\n\nexport interface Recording {\n commands: Command[];\n paintPool: SkPaint[];\n}\n\ninterface AnimationValues {\n animationValues: Set<SharedValue<unknown>>;\n}\n\nexport class Recorder implements BaseRecorder {\n commands: Command[] = [];\n cursors: Command[][] = [];\n animationValues: Set<SharedValue<unknown>> = new Set();\n\n constructor() {\n this.cursors.push(this.commands);\n }\n\n getRecording(): Recording & AnimationValues {\n return {\n commands: this.commands,\n paintPool: [],\n animationValues: this.animationValues,\n };\n }\n\n private processProps(props: Record<string, unknown>) {\n const animatedProps: Record<string, SharedValue<unknown>> = {};\n let hasAnimatedProps = false;\n\n for (const key in props) {\n const prop = props[key];\n if (isSharedValue(prop)) {\n this.animationValues.add(prop);\n animatedProps[key] = prop;\n hasAnimatedProps = true;\n }\n }\n\n return {\n props,\n animatedProps: hasAnimatedProps ? animatedProps : undefined,\n };\n }\n\n private add(command: Command) {\n if (command.props) {\n const { animatedProps } = this.processProps(\n command.props as Record<string, unknown>\n );\n if (animatedProps) {\n command.animatedProps = animatedProps;\n }\n }\n this.cursors[this.cursors.length - 1].push(command);\n }\n\n saveGroup() {\n const children: Command[] = [];\n this.add({ type: CommandType.Group, children });\n this.cursors.push(children);\n }\n\n restoreGroup() {\n this.cursors.pop();\n }\n\n savePaint(props: AnimatedProps<PaintProps>, standalone: boolean) {\n this.add({ type: CommandType.SavePaint, props, standalone });\n }\n\n restorePaint() {\n this.add({ type: CommandType.RestorePaint });\n }\n\n restorePaintDeclaration() {\n this.add({ type: CommandType.RestorePaintDeclaration });\n }\n\n materializePaint() {\n this.add({ type: CommandType.MaterializePaint });\n }\n\n pushPathEffect(pathEffectType: NodeType, props: AnimatedProps<unknown>) {\n if (!isPathEffect(pathEffectType)) {\n throw new Error(\"Invalid color filter type: \" + pathEffectType);\n }\n this.add({\n type: CommandType.PushPathEffect,\n pathEffectType,\n props,\n });\n }\n\n pushImageFilter(imageFilterType: NodeType, props: AnimatedProps<unknown>) {\n if (!isImageFilter(imageFilterType)) {\n throw new Error(\"Invalid color filter type: \" + imageFilterType);\n }\n this.add({\n type: CommandType.PushImageFilter,\n imageFilterType,\n props,\n });\n }\n\n pushColorFilter(colorFilterType: NodeType, props: AnimatedProps<unknown>) {\n if (!isColorFilter(colorFilterType)) {\n throw new Error(\"Invalid color filter type: \" + colorFilterType);\n }\n this.add({\n type: CommandType.PushColorFilter,\n colorFilterType,\n props,\n });\n }\n\n pushShader(shaderType: NodeType, props: AnimatedProps<unknown>) {\n if (!isShader(shaderType) && !(shaderType === NodeType.Blend)) {\n throw new Error(\"Invalid color filter type: \" + shaderType);\n }\n this.add({ type: CommandType.PushShader, shaderType, props });\n }\n\n pushBlurMaskFilter(props: AnimatedProps<BlurMaskFilterProps>) {\n this.add({ type: CommandType.PushBlurMaskFilter, props });\n }\n\n composePathEffect() {\n this.add({ type: CommandType.ComposePathEffect });\n }\n\n composeColorFilter() {\n this.add({ type: CommandType.ComposeColorFilter });\n }\n\n composeImageFilter() {\n this.add({ type: CommandType.ComposeImageFilter });\n }\n\n saveCTM(props: AnimatedProps<CTMProps>) {\n this.add({ type: CommandType.SaveCTM, props });\n }\n\n restoreCTM() {\n this.add({ type: CommandType.RestoreCTM });\n }\n\n drawPaint() {\n this.add({ type: CommandType.DrawPaint });\n }\n\n saveLayer() {\n this.add({ type: CommandType.SaveLayer });\n }\n\n saveBackdropFilter() {\n this.add({ type: CommandType.SaveBackdropFilter });\n }\n\n drawBox(\n boxProps: AnimatedProps<BoxProps>,\n shadows: {\n props: BoxShadowProps;\n animatedProps?: Record<string, SharedValue<unknown>>;\n }[]\n ) {\n shadows.forEach((shadow) => {\n if (shadow.props) {\n if (shadow.props) {\n const { animatedProps } = this.processProps(\n shadow.props as unknown as Record<string, unknown>\n );\n if (animatedProps) {\n shadow.animatedProps = animatedProps;\n }\n }\n }\n });\n this.add({ type: CommandType.DrawBox, props: boxProps, shadows });\n }\n\n drawImage(props: AnimatedProps<ImageProps>) {\n this.add({ type: CommandType.DrawImage, props });\n }\n\n drawCircle(props: AnimatedProps<CircleProps>) {\n this.add({ type: CommandType.DrawCircle, props });\n }\n drawPoints(props: AnimatedProps<PointsProps>) {\n this.add({ type: CommandType.DrawPoints, props });\n }\n\n drawPath(props: AnimatedProps<PathProps>) {\n this.add({ type: CommandType.DrawPath, props });\n }\n\n drawRect(props: AnimatedProps<RectProps>) {\n this.add({ type: CommandType.DrawRect, props });\n }\n\n drawRRect(props: AnimatedProps<RoundedRectProps>) {\n this.add({ type: CommandType.DrawRRect, props });\n }\n\n drawOval(props: AnimatedProps<OvalProps>) {\n this.add({ type: CommandType.DrawOval, props });\n }\n\n drawLine(props: AnimatedProps<LineProps>) {\n this.add({ type: CommandType.DrawLine, props });\n }\n\n drawPatch(props: AnimatedProps<PatchProps>) {\n this.add({ type: CommandType.DrawPatch, props });\n }\n\n drawVertices(props: AnimatedProps<VerticesProps>) {\n this.add({ type: CommandType.DrawVertices, props });\n }\n\n drawDiffRect(props: AnimatedProps<DiffRectProps>) {\n this.add({ type: CommandType.DrawDiffRect, props });\n }\n\n drawText(props: AnimatedProps<TextProps>) {\n this.add({ type: CommandType.DrawText, props });\n }\n\n drawTextPath(props: AnimatedProps<TextPathProps>) {\n this.add({ type: CommandType.DrawTextPath, props });\n }\n\n drawTextBlob(props: AnimatedProps<TextBlobProps>) {\n this.add({ type: CommandType.DrawTextBlob, props });\n }\n\n drawGlyphs(props: AnimatedProps<GlyphsProps>) {\n this.add({ type: CommandType.DrawGlyphs, props });\n }\n\n drawPicture(props: AnimatedProps<PictureProps>) {\n this.add({ type: CommandType.DrawPicture, props });\n }\n\n drawImageSVG(props: AnimatedProps<ImageSVGProps>) {\n this.add({ type: CommandType.DrawImageSVG, props });\n }\n\n drawParagraph(props: AnimatedProps<ParagraphProps>) {\n this.add({ type: CommandType.DrawParagraph, props });\n }\n\n drawAtlas(props: AnimatedProps<AtlasProps>) {\n this.add({ type: CommandType.DrawAtlas, props });\n }\n\n drawSkottie(props: AnimatedProps<SkottieProps>) {\n this.add({ type: CommandType.DrawSkottie, props });\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NodeType","isSharedValue","isColorFilter","isImageFilter","isPathEffect","isShader","CommandType","Recorder","constructor","_defineProperty","Set","cursors","push","commands","getRecording","paintPool","animationValues","processProps","props","animatedProps","hasAnimatedProps","key","prop","add","undefined","command","length","saveGroup","children","type","Group","restoreGroup","pop","savePaint","standalone","SavePaint","restorePaint","RestorePaint","restorePaintDeclaration","RestorePaintDeclaration","materializePaint","MaterializePaint","pushPathEffect","pathEffectType","Error","PushPathEffect","pushImageFilter","imageFilterType","PushImageFilter","pushColorFilter","colorFilterType","PushColorFilter","pushShader","shaderType","Blend","PushShader","pushBlurMaskFilter","PushBlurMaskFilter","composePathEffect","ComposePathEffect","composeColorFilter","ComposeColorFilter","composeImageFilter","ComposeImageFilter","saveCTM","SaveCTM","restoreCTM","RestoreCTM","drawPaint","DrawPaint","saveLayer","SaveLayer","saveBackdropFilter","SaveBackdropFilter","drawBox","boxProps","shadows","forEach","shadow","DrawBox","drawImage","DrawImage","drawCircle","DrawCircle","drawPoints","DrawPoints","drawPath","DrawPath","drawRect","DrawRect","drawRRect","DrawRRect","drawOval","DrawOval","drawLine","DrawLine","drawPatch","DrawPatch","drawVertices","DrawVertices","drawDiffRect","DrawDiffRect","drawText","DrawText","drawTextPath","DrawTextPath","drawTextBlob","DrawTextBlob","drawGlyphs","DrawGlyphs","drawPicture","DrawPicture","drawImageSVG","DrawImageSVG","drawParagraph","DrawParagraph","drawAtlas","DrawAtlas","drawSkottie","DrawSkottie"],"sources":["Recorder.ts"],"sourcesContent":["import type { SharedValue } from \"react-native-reanimated\";\n\nimport { NodeType } from \"../../dom/types\";\nimport type {\n BlurMaskFilterProps,\n CircleProps,\n CTMProps,\n ImageProps,\n PaintProps,\n PointsProps,\n PathProps,\n RectProps,\n RoundedRectProps,\n OvalProps,\n LineProps,\n PatchProps,\n VerticesProps,\n DiffRectProps,\n TextProps,\n TextPathProps,\n TextBlobProps,\n GlyphsProps,\n PictureProps,\n ImageSVGProps,\n ParagraphProps,\n AtlasProps,\n BoxProps,\n BoxShadowProps,\n SkottieProps,\n} from \"../../dom/types\";\nimport type { AnimatedProps } from \"../../renderer\";\nimport { isSharedValue } from \"../utils\";\nimport { isColorFilter, isImageFilter, isPathEffect, isShader } from \"../Node\";\nimport type { SkPaint, BaseRecorder } from \"../../skia/types\";\n\nimport { CommandType } from \"./Core\";\nimport type { Command } from \"./Core\";\n\nexport interface Recording {\n commands: Command[];\n paintPool: SkPaint[];\n}\n\ninterface AnimationValues {\n animationValues: Set<SharedValue<unknown>>;\n}\n\nexport class Recorder implements BaseRecorder {\n commands: Command[] = [];\n cursors: Command[][] = [];\n animationValues: Set<SharedValue<unknown>> = new Set();\n\n constructor() {\n this.cursors.push(this.commands);\n }\n\n getRecording(): Recording & AnimationValues {\n return {\n commands: this.commands,\n paintPool: [],\n animationValues: this.animationValues,\n };\n }\n\n private processProps(props: Record<string, unknown>) {\n const animatedProps: Record<string, SharedValue<unknown>> = {};\n let hasAnimatedProps = false;\n\n for (const key in props) {\n const prop = props[key];\n if (isSharedValue(prop)) {\n this.animationValues.add(prop);\n animatedProps[key] = prop;\n hasAnimatedProps = true;\n }\n }\n\n return {\n props,\n animatedProps: hasAnimatedProps ? animatedProps : undefined,\n };\n }\n\n private add(command: Command) {\n if (command.props) {\n const { animatedProps } = this.processProps(\n command.props as Record<string, unknown>\n );\n if (animatedProps) {\n command.animatedProps = animatedProps;\n }\n }\n this.cursors[this.cursors.length - 1].push(command);\n }\n\n saveGroup() {\n const children: Command[] = [];\n this.add({ type: CommandType.Group, children });\n this.cursors.push(children);\n }\n\n restoreGroup() {\n this.cursors.pop();\n }\n\n savePaint(props: AnimatedProps<PaintProps>, standalone: boolean) {\n this.add({ type: CommandType.SavePaint, props, standalone });\n }\n\n restorePaint() {\n this.add({ type: CommandType.RestorePaint });\n }\n\n restorePaintDeclaration() {\n this.add({ type: CommandType.RestorePaintDeclaration });\n }\n\n materializePaint() {\n this.add({ type: CommandType.MaterializePaint });\n }\n\n pushPathEffect(pathEffectType: NodeType, props: AnimatedProps<unknown>) {\n if (!isPathEffect(pathEffectType)) {\n throw new Error(\"Invalid color filter type: \" + pathEffectType);\n }\n this.add({\n type: CommandType.PushPathEffect,\n pathEffectType,\n props,\n });\n }\n\n pushImageFilter(imageFilterType: NodeType, props: AnimatedProps<unknown>) {\n if (!isImageFilter(imageFilterType)) {\n throw new Error(\"Invalid color filter type: \" + imageFilterType);\n }\n this.add({\n type: CommandType.PushImageFilter,\n imageFilterType,\n props,\n });\n }\n\n pushColorFilter(colorFilterType: NodeType, props: AnimatedProps<unknown>) {\n if (!isColorFilter(colorFilterType)) {\n throw new Error(\"Invalid color filter type: \" + colorFilterType);\n }\n this.add({\n type: CommandType.PushColorFilter,\n colorFilterType,\n props,\n });\n }\n\n pushShader(\n shaderType: NodeType,\n props: AnimatedProps<unknown>,\n children: number\n ) {\n if (!isShader(shaderType) && !(shaderType === NodeType.Blend)) {\n throw new Error(\"Invalid color filter type: \" + shaderType);\n }\n this.add({ type: CommandType.PushShader, shaderType, props, children });\n }\n\n pushBlurMaskFilter(props: AnimatedProps<BlurMaskFilterProps>) {\n this.add({ type: CommandType.PushBlurMaskFilter, props });\n }\n\n composePathEffect() {\n this.add({ type: CommandType.ComposePathEffect });\n }\n\n composeColorFilter() {\n this.add({ type: CommandType.ComposeColorFilter });\n }\n\n composeImageFilter() {\n this.add({ type: CommandType.ComposeImageFilter });\n }\n\n saveCTM(props: AnimatedProps<CTMProps>) {\n this.add({ type: CommandType.SaveCTM, props });\n }\n\n restoreCTM() {\n this.add({ type: CommandType.RestoreCTM });\n }\n\n drawPaint() {\n this.add({ type: CommandType.DrawPaint });\n }\n\n saveLayer() {\n this.add({ type: CommandType.SaveLayer });\n }\n\n saveBackdropFilter() {\n this.add({ type: CommandType.SaveBackdropFilter });\n }\n\n drawBox(\n boxProps: AnimatedProps<BoxProps>,\n shadows: {\n props: BoxShadowProps;\n animatedProps?: Record<string, SharedValue<unknown>>;\n }[]\n ) {\n shadows.forEach((shadow) => {\n if (shadow.props) {\n if (shadow.props) {\n const { animatedProps } = this.processProps(\n shadow.props as unknown as Record<string, unknown>\n );\n if (animatedProps) {\n shadow.animatedProps = animatedProps;\n }\n }\n }\n });\n this.add({ type: CommandType.DrawBox, props: boxProps, shadows });\n }\n\n drawImage(props: AnimatedProps<ImageProps>) {\n this.add({ type: CommandType.DrawImage, props });\n }\n\n drawCircle(props: AnimatedProps<CircleProps>) {\n this.add({ type: CommandType.DrawCircle, props });\n }\n drawPoints(props: AnimatedProps<PointsProps>) {\n this.add({ type: CommandType.DrawPoints, props });\n }\n\n drawPath(props: AnimatedProps<PathProps>) {\n this.add({ type: CommandType.DrawPath, props });\n }\n\n drawRect(props: AnimatedProps<RectProps>) {\n this.add({ type: CommandType.DrawRect, props });\n }\n\n drawRRect(props: AnimatedProps<RoundedRectProps>) {\n this.add({ type: CommandType.DrawRRect, props });\n }\n\n drawOval(props: AnimatedProps<OvalProps>) {\n this.add({ type: CommandType.DrawOval, props });\n }\n\n drawLine(props: AnimatedProps<LineProps>) {\n this.add({ type: CommandType.DrawLine, props });\n }\n\n drawPatch(props: AnimatedProps<PatchProps>) {\n this.add({ type: CommandType.DrawPatch, props });\n }\n\n drawVertices(props: AnimatedProps<VerticesProps>) {\n this.add({ type: CommandType.DrawVertices, props });\n }\n\n drawDiffRect(props: AnimatedProps<DiffRectProps>) {\n this.add({ type: CommandType.DrawDiffRect, props });\n }\n\n drawText(props: AnimatedProps<TextProps>) {\n this.add({ type: CommandType.DrawText, props });\n }\n\n drawTextPath(props: AnimatedProps<TextPathProps>) {\n this.add({ type: CommandType.DrawTextPath, props });\n }\n\n drawTextBlob(props: AnimatedProps<TextBlobProps>) {\n this.add({ type: CommandType.DrawTextBlob, props });\n }\n\n drawGlyphs(props: AnimatedProps<GlyphsProps>) {\n this.add({ type: CommandType.DrawGlyphs, props });\n }\n\n drawPicture(props: AnimatedProps<PictureProps>) {\n this.add({ type: CommandType.DrawPicture, props });\n }\n\n drawImageSVG(props: AnimatedProps<ImageSVGProps>) {\n this.add({ type: CommandType.DrawImageSVG, props });\n }\n\n drawParagraph(props: AnimatedProps<ParagraphProps>) {\n this.add({ type: CommandType.DrawParagraph, props });\n }\n\n drawAtlas(props: AnimatedProps<AtlasProps>) {\n this.add({ type: CommandType.DrawAtlas, props });\n }\n\n drawSkottie(props: AnimatedProps<SkottieProps>) {\n this.add({ type: CommandType.DrawSkottie, props });\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -118,7 +118,7 @@ const pushImageFilters = (recorder, imageFilters) => {
118
118
  if (isImageFilter(imageFilter.type)) {
119
119
  recorder.pushImageFilter(imageFilter.type, imageFilter.props);
120
120
  } else if (isShader(imageFilter.type)) {
121
- recorder.pushShader(imageFilter.type, imageFilter.props);
121
+ recorder.pushShader(imageFilter.type, imageFilter.props, 0);
122
122
  }
123
123
  const needsComposition = imageFilter.type !== NodeType.BlendImageFilter && imageFilter.children.length > 0;
124
124
  if (needsComposition) {
@@ -131,7 +131,7 @@ const pushShaders = (recorder, shaders) => {
131
131
  if (shader.children.length > 0) {
132
132
  pushShaders(recorder, shader.children);
133
133
  }
134
- recorder.pushShader(shader.type, shader.props);
134
+ recorder.pushShader(shader.type, shader.props, shader.children.length);
135
135
  });
136
136
  };
137
137
  const pushMaskFilters = (recorder, maskFilters) => {
@@ -1 +1 @@
1
- {"version":3,"names":["NodeType","isImageFilter","isShader","sortNodeChildren","processPaint","opacity","color","strokeWidth","blendMode","style","strokeJoin","strokeCap","strokeMiter","antiAlias","dither","paint","paintRef","undefined","processCTM","clip","invertClip","transform","origin","matrix","layer","ctm","pushColorFilters","recorder","colorFilters","forEach","colorFilter","children","length","pushColorFilter","type","props","needsComposition","LerpColorFilter","composeColorFilter","pushPathEffects","pathEffects","pathEffect","pushPathEffect","SumPathEffect","composePathEffect","pushImageFilters","imageFilters","imageFilter","pushImageFilter","pushShader","BlendImageFilter","composeImageFilter","pushShaders","shaders","shader","pushMaskFilters","maskFilters","pushBlurMaskFilter","pushPaints","paints","savePaint","restorePaintDeclaration","visitNode","node","Group","saveGroup","drawings","shouldPushPaint","BackdropFilter","saveBackdropFilter","materializePaint","Layer","saveLayer","shouldRestore","saveCTM","Box","shadows","filter","n","BoxShadow","map","drawBox","Fill","drawPaint","Image","drawImage","Circle","drawCircle","Points","drawPoints","Path","drawPath","Rect","drawRect","RRect","drawRRect","Oval","drawOval","Line","drawLine","Patch","drawPatch","Vertices","drawVertices","DiffRect","drawDiffRect","Text","drawText","TextPath","drawTextPath","TextBlob","drawTextBlob","Glyphs","drawGlyphs","Picture","drawPicture","ImageSVG","drawImageSVG","Paragraph","drawParagraph","Skottie","drawSkottie","Atlas","drawAtlas","drawing","restorePaint","restoreCTM","restoreGroup","visit","root"],"sources":["Visitor.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type {\n CTMProps,\n DrawingNodeProps,\n BoxShadowProps,\n} from \"../../dom/types\";\nimport { NodeType } from \"../../dom/types\";\nimport type { BaseRecorder } from \"../../skia/types/Recorder\";\nimport type { Node } from \"../Node\";\nimport { isImageFilter, isShader, sortNodeChildren } from \"../Node\";\n\nexport const processPaint = ({\n opacity,\n color,\n strokeWidth,\n blendMode,\n style,\n strokeJoin,\n strokeCap,\n strokeMiter,\n antiAlias,\n dither,\n paint: paintRef,\n}: DrawingNodeProps) => {\n const paint: DrawingNodeProps = {};\n if (opacity !== undefined) {\n paint.opacity = opacity;\n }\n if (color !== undefined) {\n paint.color = color;\n }\n if (strokeWidth !== undefined) {\n paint.strokeWidth = strokeWidth;\n }\n if (blendMode !== undefined) {\n paint.blendMode = blendMode;\n }\n if (style !== undefined) {\n paint.style = style;\n }\n if (strokeJoin !== undefined) {\n paint.strokeJoin = strokeJoin;\n }\n if (strokeCap !== undefined) {\n paint.strokeCap = strokeCap;\n }\n if (strokeMiter !== undefined) {\n paint.strokeMiter = strokeMiter;\n }\n if (antiAlias !== undefined) {\n paint.antiAlias = antiAlias;\n }\n if (dither !== undefined) {\n paint.dither = dither;\n }\n\n if (paintRef !== undefined) {\n paint.paint = paintRef;\n }\n\n if (\n opacity !== undefined ||\n color !== undefined ||\n strokeWidth !== undefined ||\n blendMode !== undefined ||\n style !== undefined ||\n strokeJoin !== undefined ||\n strokeCap !== undefined ||\n strokeMiter !== undefined ||\n antiAlias !== undefined ||\n dither !== undefined ||\n paintRef !== undefined\n ) {\n return paint;\n }\n return null;\n};\n\nconst processCTM = ({\n clip,\n invertClip,\n transform,\n origin,\n matrix,\n layer,\n}: CTMProps) => {\n const ctm: CTMProps = {};\n if (clip) {\n ctm.clip = clip;\n }\n if (invertClip) {\n ctm.invertClip = invertClip;\n }\n if (transform) {\n ctm.transform = transform;\n }\n if (origin) {\n ctm.origin = origin;\n }\n if (matrix) {\n ctm.matrix = matrix;\n }\n if (layer) {\n ctm.layer = layer;\n }\n if (\n clip !== undefined ||\n invertClip !== undefined ||\n transform !== undefined ||\n origin !== undefined ||\n matrix !== undefined ||\n layer !== undefined\n ) {\n return ctm;\n }\n return null;\n};\n\nconst pushColorFilters = (\n recorder: BaseRecorder,\n colorFilters: Node<any>[]\n) => {\n colorFilters.forEach((colorFilter) => {\n if (colorFilter.children.length > 0) {\n pushColorFilters(recorder, colorFilter.children);\n }\n recorder.pushColorFilter(colorFilter.type, colorFilter.props);\n const needsComposition =\n colorFilter.type !== NodeType.LerpColorFilter &&\n colorFilter.children.length > 0;\n if (needsComposition) {\n recorder.composeColorFilter();\n }\n });\n};\n\nconst pushPathEffects = (recorder: BaseRecorder, pathEffects: Node<any>[]) => {\n pathEffects.forEach((pathEffect) => {\n if (pathEffect.children.length > 0) {\n pushPathEffects(recorder, pathEffect.children);\n }\n recorder.pushPathEffect(pathEffect.type, pathEffect.props);\n const needsComposition =\n pathEffect.type !== NodeType.SumPathEffect &&\n pathEffect.children.length > 0;\n if (needsComposition) {\n recorder.composePathEffect();\n }\n });\n};\n\nconst pushImageFilters = (\n recorder: BaseRecorder,\n imageFilters: Node<any>[]\n) => {\n imageFilters.forEach((imageFilter) => {\n if (imageFilter.children.length > 0) {\n pushImageFilters(recorder, imageFilter.children);\n }\n if (isImageFilter(imageFilter.type)) {\n recorder.pushImageFilter(imageFilter.type, imageFilter.props);\n } else if (isShader(imageFilter.type)) {\n recorder.pushShader(imageFilter.type, imageFilter.props);\n }\n const needsComposition =\n imageFilter.type !== NodeType.BlendImageFilter &&\n imageFilter.children.length > 0;\n if (needsComposition) {\n recorder.composeImageFilter();\n }\n });\n};\n\nconst pushShaders = (recorder: BaseRecorder, shaders: Node<any>[]) => {\n shaders.forEach((shader) => {\n if (shader.children.length > 0) {\n pushShaders(recorder, shader.children);\n }\n recorder.pushShader(shader.type, shader.props);\n });\n};\n\nconst pushMaskFilters = (recorder: BaseRecorder, maskFilters: Node<any>[]) => {\n if (maskFilters.length > 0) {\n recorder.pushBlurMaskFilter(maskFilters[maskFilters.length - 1].props);\n }\n};\n\nconst pushPaints = (recorder: BaseRecorder, paints: Node<any>[]) => {\n paints.forEach((paint) => {\n recorder.savePaint(paint.props, true);\n const { colorFilters, maskFilters, shaders, imageFilters, pathEffects } =\n sortNodeChildren(paint);\n pushColorFilters(recorder, colorFilters);\n pushImageFilters(recorder, imageFilters);\n pushMaskFilters(recorder, maskFilters);\n pushShaders(recorder, shaders);\n pushPathEffects(recorder, pathEffects);\n recorder.restorePaintDeclaration();\n });\n};\n\nconst visitNode = (recorder: BaseRecorder, node: Node<any>) => {\n if (node.type === NodeType.Group) {\n recorder.saveGroup();\n }\n const { props } = node;\n const {\n colorFilters,\n maskFilters,\n drawings,\n shaders,\n imageFilters,\n pathEffects,\n paints,\n } = sortNodeChildren(node);\n const paint = processPaint(props);\n const shouldPushPaint =\n paint ||\n colorFilters.length > 0 ||\n maskFilters.length > 0 ||\n imageFilters.length > 0 ||\n pathEffects.length > 0 ||\n shaders.length > 0;\n if (shouldPushPaint) {\n recorder.savePaint(paint ?? {}, false);\n pushColorFilters(recorder, colorFilters);\n pushImageFilters(recorder, imageFilters);\n pushMaskFilters(recorder, maskFilters);\n pushShaders(recorder, shaders);\n pushPathEffects(recorder, pathEffects);\n // For mixed nodes like BackdropFilters we don't materialize the paint\n if (node.type === NodeType.BackdropFilter) {\n recorder.saveBackdropFilter();\n } else {\n recorder.materializePaint();\n }\n }\n pushPaints(recorder, paints);\n if (node.type === NodeType.Layer) {\n recorder.saveLayer();\n }\n const ctm = processCTM(props);\n const shouldRestore = !!ctm || node.type === NodeType.Layer;\n if (ctm) {\n recorder.saveCTM(ctm);\n }\n switch (node.type) {\n case NodeType.Box:\n const shadows = node.children\n .filter((n) => n.type === NodeType.BoxShadow)\n // eslint-disable-next-line @typescript-eslint/no-shadow\n .map(({ props }) => ({ props } as { props: BoxShadowProps }));\n recorder.drawBox(props, shadows);\n break;\n case NodeType.Fill:\n recorder.drawPaint();\n break;\n case NodeType.Image:\n recorder.drawImage(props);\n break;\n case NodeType.Circle:\n recorder.drawCircle(props);\n break;\n case NodeType.Points:\n recorder.drawPoints(props);\n break;\n case NodeType.Path:\n recorder.drawPath(props);\n break;\n case NodeType.Rect:\n recorder.drawRect(props);\n break;\n case NodeType.RRect:\n recorder.drawRRect(props);\n break;\n case NodeType.Oval:\n recorder.drawOval(props);\n break;\n case NodeType.Line:\n recorder.drawLine(props);\n break;\n case NodeType.Patch:\n recorder.drawPatch(props);\n break;\n case NodeType.Vertices:\n recorder.drawVertices(props);\n break;\n case NodeType.DiffRect:\n recorder.drawDiffRect(props);\n break;\n case NodeType.Text:\n recorder.drawText(props);\n break;\n case NodeType.TextPath:\n recorder.drawTextPath(props);\n break;\n case NodeType.TextBlob:\n recorder.drawTextBlob(props);\n break;\n case NodeType.Glyphs:\n recorder.drawGlyphs(props);\n break;\n case NodeType.Picture:\n recorder.drawPicture(props);\n break;\n case NodeType.ImageSVG:\n recorder.drawImageSVG(props);\n break;\n case NodeType.Paragraph:\n recorder.drawParagraph(props);\n break;\n case NodeType.Skottie:\n recorder.drawSkottie(props);\n break;\n case NodeType.Atlas:\n recorder.drawAtlas(props);\n break;\n }\n drawings.forEach((drawing) => {\n visitNode(recorder, drawing);\n });\n if (shouldPushPaint) {\n recorder.restorePaint();\n }\n if (shouldRestore) {\n recorder.restoreCTM();\n }\n if (node.type === NodeType.Group) {\n recorder.restoreGroup();\n }\n};\n\nexport const visit = (recorder: BaseRecorder, root: Node[]) => {\n root.forEach((node) => {\n visitNode(recorder, node);\n });\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NodeType","isImageFilter","isShader","sortNodeChildren","processPaint","opacity","color","strokeWidth","blendMode","style","strokeJoin","strokeCap","strokeMiter","antiAlias","dither","paint","paintRef","undefined","processCTM","clip","invertClip","transform","origin","matrix","layer","ctm","pushColorFilters","recorder","colorFilters","forEach","colorFilter","children","length","pushColorFilter","type","props","needsComposition","LerpColorFilter","composeColorFilter","pushPathEffects","pathEffects","pathEffect","pushPathEffect","SumPathEffect","composePathEffect","pushImageFilters","imageFilters","imageFilter","pushImageFilter","pushShader","BlendImageFilter","composeImageFilter","pushShaders","shaders","shader","pushMaskFilters","maskFilters","pushBlurMaskFilter","pushPaints","paints","savePaint","restorePaintDeclaration","visitNode","node","Group","saveGroup","drawings","shouldPushPaint","BackdropFilter","saveBackdropFilter","materializePaint","Layer","saveLayer","shouldRestore","saveCTM","Box","shadows","filter","n","BoxShadow","map","drawBox","Fill","drawPaint","Image","drawImage","Circle","drawCircle","Points","drawPoints","Path","drawPath","Rect","drawRect","RRect","drawRRect","Oval","drawOval","Line","drawLine","Patch","drawPatch","Vertices","drawVertices","DiffRect","drawDiffRect","Text","drawText","TextPath","drawTextPath","TextBlob","drawTextBlob","Glyphs","drawGlyphs","Picture","drawPicture","ImageSVG","drawImageSVG","Paragraph","drawParagraph","Skottie","drawSkottie","Atlas","drawAtlas","drawing","restorePaint","restoreCTM","restoreGroup","visit","root"],"sources":["Visitor.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type {\n CTMProps,\n DrawingNodeProps,\n BoxShadowProps,\n} from \"../../dom/types\";\nimport { NodeType } from \"../../dom/types\";\nimport type { BaseRecorder } from \"../../skia/types/Recorder\";\nimport type { Node } from \"../Node\";\nimport { isImageFilter, isShader, sortNodeChildren } from \"../Node\";\n\nexport const processPaint = ({\n opacity,\n color,\n strokeWidth,\n blendMode,\n style,\n strokeJoin,\n strokeCap,\n strokeMiter,\n antiAlias,\n dither,\n paint: paintRef,\n}: DrawingNodeProps) => {\n const paint: DrawingNodeProps = {};\n if (opacity !== undefined) {\n paint.opacity = opacity;\n }\n if (color !== undefined) {\n paint.color = color;\n }\n if (strokeWidth !== undefined) {\n paint.strokeWidth = strokeWidth;\n }\n if (blendMode !== undefined) {\n paint.blendMode = blendMode;\n }\n if (style !== undefined) {\n paint.style = style;\n }\n if (strokeJoin !== undefined) {\n paint.strokeJoin = strokeJoin;\n }\n if (strokeCap !== undefined) {\n paint.strokeCap = strokeCap;\n }\n if (strokeMiter !== undefined) {\n paint.strokeMiter = strokeMiter;\n }\n if (antiAlias !== undefined) {\n paint.antiAlias = antiAlias;\n }\n if (dither !== undefined) {\n paint.dither = dither;\n }\n\n if (paintRef !== undefined) {\n paint.paint = paintRef;\n }\n\n if (\n opacity !== undefined ||\n color !== undefined ||\n strokeWidth !== undefined ||\n blendMode !== undefined ||\n style !== undefined ||\n strokeJoin !== undefined ||\n strokeCap !== undefined ||\n strokeMiter !== undefined ||\n antiAlias !== undefined ||\n dither !== undefined ||\n paintRef !== undefined\n ) {\n return paint;\n }\n return null;\n};\n\nconst processCTM = ({\n clip,\n invertClip,\n transform,\n origin,\n matrix,\n layer,\n}: CTMProps) => {\n const ctm: CTMProps = {};\n if (clip) {\n ctm.clip = clip;\n }\n if (invertClip) {\n ctm.invertClip = invertClip;\n }\n if (transform) {\n ctm.transform = transform;\n }\n if (origin) {\n ctm.origin = origin;\n }\n if (matrix) {\n ctm.matrix = matrix;\n }\n if (layer) {\n ctm.layer = layer;\n }\n if (\n clip !== undefined ||\n invertClip !== undefined ||\n transform !== undefined ||\n origin !== undefined ||\n matrix !== undefined ||\n layer !== undefined\n ) {\n return ctm;\n }\n return null;\n};\n\nconst pushColorFilters = (\n recorder: BaseRecorder,\n colorFilters: Node<any>[]\n) => {\n colorFilters.forEach((colorFilter) => {\n if (colorFilter.children.length > 0) {\n pushColorFilters(recorder, colorFilter.children);\n }\n recorder.pushColorFilter(colorFilter.type, colorFilter.props);\n const needsComposition =\n colorFilter.type !== NodeType.LerpColorFilter &&\n colorFilter.children.length > 0;\n if (needsComposition) {\n recorder.composeColorFilter();\n }\n });\n};\n\nconst pushPathEffects = (recorder: BaseRecorder, pathEffects: Node<any>[]) => {\n pathEffects.forEach((pathEffect) => {\n if (pathEffect.children.length > 0) {\n pushPathEffects(recorder, pathEffect.children);\n }\n recorder.pushPathEffect(pathEffect.type, pathEffect.props);\n const needsComposition =\n pathEffect.type !== NodeType.SumPathEffect &&\n pathEffect.children.length > 0;\n if (needsComposition) {\n recorder.composePathEffect();\n }\n });\n};\n\nconst pushImageFilters = (\n recorder: BaseRecorder,\n imageFilters: Node<any>[]\n) => {\n imageFilters.forEach((imageFilter) => {\n if (imageFilter.children.length > 0) {\n pushImageFilters(recorder, imageFilter.children);\n }\n if (isImageFilter(imageFilter.type)) {\n recorder.pushImageFilter(imageFilter.type, imageFilter.props);\n } else if (isShader(imageFilter.type)) {\n recorder.pushShader(imageFilter.type, imageFilter.props, 0);\n }\n const needsComposition =\n imageFilter.type !== NodeType.BlendImageFilter &&\n imageFilter.children.length > 0;\n if (needsComposition) {\n recorder.composeImageFilter();\n }\n });\n};\n\nconst pushShaders = (recorder: BaseRecorder, shaders: Node<any>[]) => {\n shaders.forEach((shader) => {\n if (shader.children.length > 0) {\n pushShaders(recorder, shader.children);\n }\n recorder.pushShader(shader.type, shader.props, shader.children.length);\n });\n};\n\nconst pushMaskFilters = (recorder: BaseRecorder, maskFilters: Node<any>[]) => {\n if (maskFilters.length > 0) {\n recorder.pushBlurMaskFilter(maskFilters[maskFilters.length - 1].props);\n }\n};\n\nconst pushPaints = (recorder: BaseRecorder, paints: Node<any>[]) => {\n paints.forEach((paint) => {\n recorder.savePaint(paint.props, true);\n const { colorFilters, maskFilters, shaders, imageFilters, pathEffects } =\n sortNodeChildren(paint);\n pushColorFilters(recorder, colorFilters);\n pushImageFilters(recorder, imageFilters);\n pushMaskFilters(recorder, maskFilters);\n pushShaders(recorder, shaders);\n pushPathEffects(recorder, pathEffects);\n recorder.restorePaintDeclaration();\n });\n};\n\nconst visitNode = (recorder: BaseRecorder, node: Node<any>) => {\n if (node.type === NodeType.Group) {\n recorder.saveGroup();\n }\n const { props } = node;\n const {\n colorFilters,\n maskFilters,\n drawings,\n shaders,\n imageFilters,\n pathEffects,\n paints,\n } = sortNodeChildren(node);\n const paint = processPaint(props);\n const shouldPushPaint =\n paint ||\n colorFilters.length > 0 ||\n maskFilters.length > 0 ||\n imageFilters.length > 0 ||\n pathEffects.length > 0 ||\n shaders.length > 0;\n if (shouldPushPaint) {\n recorder.savePaint(paint ?? {}, false);\n pushColorFilters(recorder, colorFilters);\n pushImageFilters(recorder, imageFilters);\n pushMaskFilters(recorder, maskFilters);\n pushShaders(recorder, shaders);\n pushPathEffects(recorder, pathEffects);\n // For mixed nodes like BackdropFilters we don't materialize the paint\n if (node.type === NodeType.BackdropFilter) {\n recorder.saveBackdropFilter();\n } else {\n recorder.materializePaint();\n }\n }\n pushPaints(recorder, paints);\n if (node.type === NodeType.Layer) {\n recorder.saveLayer();\n }\n const ctm = processCTM(props);\n const shouldRestore = !!ctm || node.type === NodeType.Layer;\n if (ctm) {\n recorder.saveCTM(ctm);\n }\n switch (node.type) {\n case NodeType.Box:\n const shadows = node.children\n .filter((n) => n.type === NodeType.BoxShadow)\n // eslint-disable-next-line @typescript-eslint/no-shadow\n .map(({ props }) => ({ props } as { props: BoxShadowProps }));\n recorder.drawBox(props, shadows);\n break;\n case NodeType.Fill:\n recorder.drawPaint();\n break;\n case NodeType.Image:\n recorder.drawImage(props);\n break;\n case NodeType.Circle:\n recorder.drawCircle(props);\n break;\n case NodeType.Points:\n recorder.drawPoints(props);\n break;\n case NodeType.Path:\n recorder.drawPath(props);\n break;\n case NodeType.Rect:\n recorder.drawRect(props);\n break;\n case NodeType.RRect:\n recorder.drawRRect(props);\n break;\n case NodeType.Oval:\n recorder.drawOval(props);\n break;\n case NodeType.Line:\n recorder.drawLine(props);\n break;\n case NodeType.Patch:\n recorder.drawPatch(props);\n break;\n case NodeType.Vertices:\n recorder.drawVertices(props);\n break;\n case NodeType.DiffRect:\n recorder.drawDiffRect(props);\n break;\n case NodeType.Text:\n recorder.drawText(props);\n break;\n case NodeType.TextPath:\n recorder.drawTextPath(props);\n break;\n case NodeType.TextBlob:\n recorder.drawTextBlob(props);\n break;\n case NodeType.Glyphs:\n recorder.drawGlyphs(props);\n break;\n case NodeType.Picture:\n recorder.drawPicture(props);\n break;\n case NodeType.ImageSVG:\n recorder.drawImageSVG(props);\n break;\n case NodeType.Paragraph:\n recorder.drawParagraph(props);\n break;\n case NodeType.Skottie:\n recorder.drawSkottie(props);\n break;\n case NodeType.Atlas:\n recorder.drawAtlas(props);\n break;\n }\n drawings.forEach((drawing) => {\n visitNode(recorder, drawing);\n });\n if (shouldPushPaint) {\n recorder.restorePaint();\n }\n if (shouldRestore) {\n recorder.restoreCTM();\n }\n if (node.type === NodeType.Group) {\n recorder.restoreGroup();\n }\n};\n\nexport const visit = (recorder: BaseRecorder, root: Node[]) => {\n root.forEach((node) => {\n visitNode(recorder, node);\n });\n};\n"],"mappings":"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","ignoreList":[]}
@@ -3,7 +3,7 @@ import { NodeType } from "../../../dom/types";
3
3
  import { BlendMode, FilterMode, isCubicSampling, MipmapMode, processUniforms, TileMode } from "../../../skia/types";
4
4
  import { composeDeclarations } from "../../utils";
5
5
  import { CommandType } from "../Core";
6
- const declareShader = (ctx, props) => {
6
+ const declareShader = (ctx, props, children) => {
7
7
  "worklet";
8
8
 
9
9
  const {
@@ -13,7 +13,7 @@ const declareShader = (ctx, props) => {
13
13
  } = props;
14
14
  const m3 = ctx.Skia.Matrix();
15
15
  processTransformProps(m3, transform);
16
- const shader = source.makeShaderWithChildren(processUniforms(source, uniforms), ctx.shaders.splice(0, ctx.shaders.length), m3);
16
+ const shader = source.makeShaderWithChildren(processUniforms(source, uniforms), ctx.shaders.splice(0, children), m3);
17
17
  ctx.shaders.push(shader);
18
18
  };
19
19
  const declareColorShader = (ctx, props) => {
@@ -187,7 +187,7 @@ export const pushShader = (ctx, command) => {
187
187
  "worklet";
188
188
 
189
189
  if (isShader(command, NodeType.Shader)) {
190
- declareShader(ctx, command.props);
190
+ declareShader(ctx, command.props, command.children);
191
191
  } else if (isShader(command, NodeType.ImageShader)) {
192
192
  declareImageShader(ctx, command.props);
193
193
  } else if (isShader(command, NodeType.ColorShader)) {