@shopify/react-native-skia 1.10.0 → 1.10.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. package/android/src/main/java/com/shopify/reactnative/skia/SkiaBaseView.java +0 -13
  2. package/android/src/main/java/com/shopify/reactnative/skia/SkiaTextureView.java +1 -24
  3. package/lib/commonjs/dom/nodes/datatypes/Gradient.d.ts +1 -0
  4. package/lib/commonjs/dom/nodes/datatypes/Gradient.js +14 -2
  5. package/lib/commonjs/dom/nodes/datatypes/Gradient.js.map +1 -1
  6. package/lib/commonjs/sksg/Recorder/commands/Box.js +1 -1
  7. package/lib/commonjs/sksg/Recorder/commands/Box.js.map +1 -1
  8. package/lib/commonjs/sksg/Recorder/commands/ColorFilters.js +1 -1
  9. package/lib/commonjs/sksg/Recorder/commands/ColorFilters.js.map +1 -1
  10. package/lib/commonjs/sksg/Recorder/commands/Drawing.js +4 -4
  11. package/lib/commonjs/sksg/Recorder/commands/Drawing.js.map +1 -1
  12. package/lib/commonjs/sksg/Recorder/commands/ImageFilters.js +1 -1
  13. package/lib/commonjs/sksg/Recorder/commands/ImageFilters.js.map +1 -1
  14. package/lib/commonjs/sksg/Recorder/commands/Paint.d.ts +0 -1
  15. package/lib/commonjs/sksg/Recorder/commands/Paint.js +2 -14
  16. package/lib/commonjs/sksg/Recorder/commands/Paint.js.map +1 -1
  17. package/lib/commonjs/sksg/Recorder/commands/Shaders.js +1 -1
  18. package/lib/commonjs/sksg/Recorder/commands/Shaders.js.map +1 -1
  19. package/lib/module/dom/nodes/datatypes/Gradient.d.ts +1 -0
  20. package/lib/module/dom/nodes/datatypes/Gradient.js +12 -1
  21. package/lib/module/dom/nodes/datatypes/Gradient.js.map +1 -1
  22. package/lib/module/sksg/Recorder/commands/Box.js +2 -2
  23. package/lib/module/sksg/Recorder/commands/Box.js.map +1 -1
  24. package/lib/module/sksg/Recorder/commands/ColorFilters.js +2 -2
  25. package/lib/module/sksg/Recorder/commands/ColorFilters.js.map +1 -1
  26. package/lib/module/sksg/Recorder/commands/Drawing.js +5 -5
  27. package/lib/module/sksg/Recorder/commands/Drawing.js.map +1 -1
  28. package/lib/module/sksg/Recorder/commands/ImageFilters.js +2 -2
  29. package/lib/module/sksg/Recorder/commands/ImageFilters.js.map +1 -1
  30. package/lib/module/sksg/Recorder/commands/Paint.d.ts +0 -1
  31. package/lib/module/sksg/Recorder/commands/Paint.js +1 -12
  32. package/lib/module/sksg/Recorder/commands/Paint.js.map +1 -1
  33. package/lib/module/sksg/Recorder/commands/Shaders.js +2 -2
  34. package/lib/module/sksg/Recorder/commands/Shaders.js.map +1 -1
  35. package/lib/typescript/lib/commonjs/dom/nodes/datatypes/Gradient.d.ts +1 -0
  36. package/lib/typescript/lib/commonjs/sksg/Recorder/commands/Paint.d.ts +0 -1
  37. package/lib/typescript/lib/module/dom/nodes/datatypes/Gradient.d.ts +1 -0
  38. package/lib/typescript/lib/module/mock/index.d.ts +1 -0
  39. package/lib/typescript/lib/module/sksg/Recorder/commands/Paint.d.ts +0 -1
  40. package/lib/typescript/src/dom/nodes/datatypes/Gradient.d.ts +1 -0
  41. package/lib/typescript/src/sksg/Recorder/commands/Paint.d.ts +0 -1
  42. package/package.json +1 -1
  43. package/src/dom/nodes/datatypes/Gradient.ts +17 -1
  44. package/src/sksg/Recorder/commands/Box.ts +2 -2
  45. package/src/sksg/Recorder/commands/ColorFilters.ts +2 -2
  46. package/src/sksg/Recorder/commands/Drawing.ts +5 -4
  47. package/src/sksg/Recorder/commands/ImageFilters.ts +2 -2
  48. package/src/sksg/Recorder/commands/Paint.ts +1 -17
  49. package/src/sksg/Recorder/commands/Shaders.ts +2 -1
@@ -32,20 +32,7 @@ public abstract class SkiaBaseView extends ReactViewGroup implements SkiaViewAPI
32
32
  }
33
33
  }
34
34
 
35
- @Override
36
- protected void onAttachedToWindow() {
37
- super.onAttachedToWindow();
38
- if (getMeasuredWidth() == 0) {
39
- if (mView instanceof SkiaTextureView) {
40
- ((SkiaTextureView) mView).createSurfaceTexture();
41
- }
42
- }
43
- }
44
-
45
35
  void dropInstance() {
46
- if (mView instanceof SkiaTextureView) {
47
- ((SkiaTextureView)mView).isDropped = true;
48
- }
49
36
  unregisterView();
50
37
  }
51
38
 
@@ -15,7 +15,6 @@ public class SkiaTextureView extends TextureView implements TextureView.SurfaceT
15
15
 
16
16
  SkiaViewAPI mApi;
17
17
  boolean mDebug;
18
- public boolean isDropped = false;
19
18
 
20
19
  public SkiaTextureView(Context context, SkiaViewAPI api, boolean debug) {
21
20
  super(context);
@@ -25,22 +24,6 @@ public class SkiaTextureView extends TextureView implements TextureView.SurfaceT
25
24
  setSurfaceTextureListener(this);
26
25
  }
27
26
 
28
- public void createSurfaceTexture() {
29
- if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
30
- Log.i(tag, "Create SurfaceTexture");
31
- SurfaceTexture surfaceTexture = new SurfaceTexture(false);
32
- setSurfaceTexture(surfaceTexture);
33
- onSurfaceTextureAvailable(surfaceTexture, getWidth(), getHeight());
34
- }
35
- }
36
-
37
- private void reCreateSurfaceTexture() {
38
- boolean surfaceIsAlreadyAvailable = getSurfaceTexture() != null;
39
- if (surfaceIsAlreadyAvailable) {
40
- createSurfaceTexture();
41
- }
42
- }
43
-
44
27
  @Override
45
28
  protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
46
29
  super.onLayout(changed, left, top, right, bottom);
@@ -55,19 +38,13 @@ public class SkiaTextureView extends TextureView implements TextureView.SurfaceT
55
38
  @Override
56
39
  public void onSurfaceTextureSizeChanged(@NonNull SurfaceTexture surfaceTexture, int width, int height) {
57
40
  Log.i(tag, "onSurfaceTextureSizeChanged: " + width + "x" + height);
58
- if (isDropped) {
59
- return;
60
- }
61
41
  mApi.onSurfaceTextureChanged(surfaceTexture, width, height);
62
42
  }
63
43
 
64
44
  @Override
65
45
  public boolean onSurfaceTextureDestroyed(@NonNull SurfaceTexture surfaceTexture) {
66
46
  mApi.onSurfaceDestroyed();
67
- if (!isDropped) {
68
- reCreateSurfaceTexture();
69
- }
70
- return false;
47
+ return true;
71
48
  }
72
49
 
73
50
  private long _prevTimestamp = 0;
@@ -242,6 +242,7 @@ export declare const transformOrigin: (origin: Vector, transform: Transforms3d)
242
242
  rotateY: number;
243
243
  matrix: import("../../../skia/types").Matrix4;
244
244
  }, "matrix">)[];
245
+ export declare const processColor: (Skia: Skia, color: number | string | Float32Array | number[]) => Float32Array;
245
246
  export declare const processGradientProps: (Skia: Skia, { colors, positions, mode, flags, ...transform }: GradientProps) => {
246
247
  colors: Float32Array[];
247
248
  positions: number[] | null;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.transformOrigin = exports.processGradientProps = exports.getRect = void 0;
6
+ exports.transformOrigin = exports.processGradientProps = exports.processColor = exports.getRect = void 0;
7
7
  var _types = require("../../../skia/types");
8
8
  var _Enum = require("./Enum");
9
9
  var _Transform = require("./Transform");
@@ -21,6 +21,18 @@ const transformOrigin = (origin, transform) => {
21
21
  }];
22
22
  };
23
23
  exports.transformOrigin = transformOrigin;
24
+ const processColor = (Skia, color) => {
25
+ "worklet";
26
+
27
+ if (typeof color === "string" || typeof color === "number") {
28
+ return Skia.Color(color);
29
+ } else if (Array.isArray(color) || color instanceof Float32Array) {
30
+ return color instanceof Float32Array ? color : new Float32Array(color);
31
+ } else {
32
+ throw new Error(`Invalid color type: ${typeof color}. Expected number, string, or array.`);
33
+ }
34
+ };
35
+ exports.processColor = processColor;
24
36
  const processGradientProps = (Skia, {
25
37
  colors,
26
38
  positions,
@@ -33,7 +45,7 @@ const processGradientProps = (Skia, {
33
45
  const localMatrix = Skia.Matrix();
34
46
  (0, _Transform.processTransformProps)(localMatrix, transform);
35
47
  return {
36
- colors: colors.map(color => Skia.Color(color)),
48
+ colors: colors.map(color => processColor(Skia, color)),
37
49
  positions: positions !== null && positions !== void 0 ? positions : null,
38
50
  mode: _types.TileMode[(0, _Enum.enumKey)(mode !== null && mode !== void 0 ? mode : "clamp")],
39
51
  flags,
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","_Enum","_Transform","transformOrigin","origin","transform","translateX","x","translateY","y","exports","processGradientProps","Skia","colors","positions","mode","flags","localMatrix","Matrix","processTransformProps","map","color","Color","TileMode","enumKey","getRect","props","width","height","rect","undefined","XYWHRect"],"sources":["Gradient.ts"],"sourcesContent":["import type { Skia, SkRect, Transforms3d, Vector } from \"../../../skia/types\";\nimport { TileMode } from \"../../../skia/types\";\nimport type { GradientProps, ImageShaderProps } from \"../../types\";\n\nimport { enumKey } from \"./Enum\";\nimport { processTransformProps } from \"./Transform\";\n\nexport const transformOrigin = (origin: Vector, transform: Transforms3d) => {\n \"worklet\";\n return [\n { translateX: origin.x },\n { translateY: origin.y },\n ...transform,\n { translateX: -origin.x },\n { translateY: -origin.y },\n ];\n};\n\nexport const processGradientProps = (\n Skia: Skia,\n { colors, positions, mode, flags, ...transform }: GradientProps\n) => {\n \"worklet\";\n const localMatrix = Skia.Matrix();\n processTransformProps(localMatrix, transform);\n return {\n colors: colors.map((color) => Skia.Color(color)),\n positions: positions ?? null,\n mode: TileMode[enumKey(mode ?? \"clamp\")],\n flags,\n localMatrix,\n };\n};\n\nexport const getRect = (\n Skia: Skia,\n props: Omit<ImageShaderProps, \"tx\" | \"ty\" | \"fm\" | \"mm\" | \"fit\" | \"image\">\n): SkRect | undefined => {\n \"worklet\";\n const { x, y, width, height } = props;\n if (props.rect) {\n return props.rect;\n } else if (width !== undefined && height !== undefined) {\n return Skia.XYWHRect(x ?? 0, y ?? 0, width, height);\n } else {\n return undefined;\n }\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAGA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAEO,MAAMG,eAAe,GAAGA,CAACC,MAAc,EAAEC,SAAuB,KAAK;EAC1E,SAAS;;EACT,OAAO,CACL;IAAEC,UAAU,EAAEF,MAAM,CAACG;EAAE,CAAC,EACxB;IAAEC,UAAU,EAAEJ,MAAM,CAACK;EAAE,CAAC,EACxB,GAAGJ,SAAS,EACZ;IAAEC,UAAU,EAAE,CAACF,MAAM,CAACG;EAAE,CAAC,EACzB;IAAEC,UAAU,EAAE,CAACJ,MAAM,CAACK;EAAE,CAAC,CAC1B;AACH,CAAC;AAACC,OAAA,CAAAP,eAAA,GAAAA,eAAA;AAEK,MAAMQ,oBAAoB,GAAGA,CAClCC,IAAU,EACV;EAAEC,MAAM;EAAEC,SAAS;EAAEC,IAAI;EAAEC,KAAK;EAAE,GAAGX;AAAyB,CAAC,KAC5D;EACH,SAAS;;EACT,MAAMY,WAAW,GAAGL,IAAI,CAACM,MAAM,CAAC,CAAC;EACjC,IAAAC,gCAAqB,EAACF,WAAW,EAAEZ,SAAS,CAAC;EAC7C,OAAO;IACLQ,MAAM,EAAEA,MAAM,CAACO,GAAG,CAAEC,KAAK,IAAKT,IAAI,CAACU,KAAK,CAACD,KAAK,CAAC,CAAC;IAChDP,SAAS,EAAEA,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,IAAI;IAC5BC,IAAI,EAAEQ,eAAQ,CAAC,IAAAC,aAAO,EAACT,IAAI,aAAJA,IAAI,cAAJA,IAAI,GAAI,OAAO,CAAC,CAAC;IACxCC,KAAK;IACLC;EACF,CAAC;AACH,CAAC;AAACP,OAAA,CAAAC,oBAAA,GAAAA,oBAAA;AAEK,MAAMc,OAAO,GAAGA,CACrBb,IAAU,EACVc,KAA0E,KACnD;EACvB,SAAS;;EACT,MAAM;IAAEnB,CAAC;IAAEE,CAAC;IAAEkB,KAAK;IAAEC;EAAO,CAAC,GAAGF,KAAK;EACrC,IAAIA,KAAK,CAACG,IAAI,EAAE;IACd,OAAOH,KAAK,CAACG,IAAI;EACnB,CAAC,MAAM,IAAIF,KAAK,KAAKG,SAAS,IAAIF,MAAM,KAAKE,SAAS,EAAE;IACtD,OAAOlB,IAAI,CAACmB,QAAQ,CAACxB,CAAC,aAADA,CAAC,cAADA,CAAC,GAAI,CAAC,EAAEE,CAAC,aAADA,CAAC,cAADA,CAAC,GAAI,CAAC,EAAEkB,KAAK,EAAEC,MAAM,CAAC;EACrD,CAAC,MAAM;IACL,OAAOE,SAAS;EAClB;AACF,CAAC;AAACpB,OAAA,CAAAe,OAAA,GAAAA,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_types","require","_Enum","_Transform","transformOrigin","origin","transform","translateX","x","translateY","y","exports","processColor","Skia","color","Color","Array","isArray","Float32Array","Error","processGradientProps","colors","positions","mode","flags","localMatrix","Matrix","processTransformProps","map","TileMode","enumKey","getRect","props","width","height","rect","undefined","XYWHRect"],"sources":["Gradient.ts"],"sourcesContent":["import type { Skia, SkRect, Transforms3d, Vector } from \"../../../skia/types\";\nimport { TileMode } from \"../../../skia/types\";\nimport type { GradientProps, ImageShaderProps } from \"../../types\";\n\nimport { enumKey } from \"./Enum\";\nimport { processTransformProps } from \"./Transform\";\n\nexport const transformOrigin = (origin: Vector, transform: Transforms3d) => {\n \"worklet\";\n return [\n { translateX: origin.x },\n { translateY: origin.y },\n ...transform,\n { translateX: -origin.x },\n { translateY: -origin.y },\n ];\n};\n\nexport const processColor = (\n Skia: Skia,\n color: number | string | Float32Array | number[]\n) => {\n \"worklet\";\n if (typeof color === \"string\" || typeof color === \"number\") {\n return Skia.Color(color);\n } else if (Array.isArray(color) || color instanceof Float32Array) {\n return color instanceof Float32Array ? color : new Float32Array(color);\n } else {\n throw new Error(\n `Invalid color type: ${typeof color}. Expected number, string, or array.`\n );\n }\n};\n\nexport const processGradientProps = (\n Skia: Skia,\n { colors, positions, mode, flags, ...transform }: GradientProps\n) => {\n \"worklet\";\n const localMatrix = Skia.Matrix();\n processTransformProps(localMatrix, transform);\n return {\n colors: colors.map((color) => processColor(Skia, color)),\n positions: positions ?? null,\n mode: TileMode[enumKey(mode ?? \"clamp\")],\n flags,\n localMatrix,\n };\n};\n\nexport const getRect = (\n Skia: Skia,\n props: Omit<ImageShaderProps, \"tx\" | \"ty\" | \"fm\" | \"mm\" | \"fit\" | \"image\">\n): SkRect | undefined => {\n \"worklet\";\n const { x, y, width, height } = props;\n if (props.rect) {\n return props.rect;\n } else if (width !== undefined && height !== undefined) {\n return Skia.XYWHRect(x ?? 0, y ?? 0, width, height);\n } else {\n return undefined;\n }\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAGA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAEO,MAAMG,eAAe,GAAGA,CAACC,MAAc,EAAEC,SAAuB,KAAK;EAC1E,SAAS;;EACT,OAAO,CACL;IAAEC,UAAU,EAAEF,MAAM,CAACG;EAAE,CAAC,EACxB;IAAEC,UAAU,EAAEJ,MAAM,CAACK;EAAE,CAAC,EACxB,GAAGJ,SAAS,EACZ;IAAEC,UAAU,EAAE,CAACF,MAAM,CAACG;EAAE,CAAC,EACzB;IAAEC,UAAU,EAAE,CAACJ,MAAM,CAACK;EAAE,CAAC,CAC1B;AACH,CAAC;AAACC,OAAA,CAAAP,eAAA,GAAAA,eAAA;AAEK,MAAMQ,YAAY,GAAGA,CAC1BC,IAAU,EACVC,KAAgD,KAC7C;EACH,SAAS;;EACT,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC1D,OAAOD,IAAI,CAACE,KAAK,CAACD,KAAK,CAAC;EAC1B,CAAC,MAAM,IAAIE,KAAK,CAACC,OAAO,CAACH,KAAK,CAAC,IAAIA,KAAK,YAAYI,YAAY,EAAE;IAChE,OAAOJ,KAAK,YAAYI,YAAY,GAAGJ,KAAK,GAAG,IAAII,YAAY,CAACJ,KAAK,CAAC;EACxE,CAAC,MAAM;IACL,MAAM,IAAIK,KAAK,CACb,uBAAuB,OAAOL,KAAK,sCACrC,CAAC;EACH;AACF,CAAC;AAACH,OAAA,CAAAC,YAAA,GAAAA,YAAA;AAEK,MAAMQ,oBAAoB,GAAGA,CAClCP,IAAU,EACV;EAAEQ,MAAM;EAAEC,SAAS;EAAEC,IAAI;EAAEC,KAAK;EAAE,GAAGlB;AAAyB,CAAC,KAC5D;EACH,SAAS;;EACT,MAAMmB,WAAW,GAAGZ,IAAI,CAACa,MAAM,CAAC,CAAC;EACjC,IAAAC,gCAAqB,EAACF,WAAW,EAAEnB,SAAS,CAAC;EAC7C,OAAO;IACLe,MAAM,EAAEA,MAAM,CAACO,GAAG,CAAEd,KAAK,IAAKF,YAAY,CAACC,IAAI,EAAEC,KAAK,CAAC,CAAC;IACxDQ,SAAS,EAAEA,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,IAAI;IAC5BC,IAAI,EAAEM,eAAQ,CAAC,IAAAC,aAAO,EAACP,IAAI,aAAJA,IAAI,cAAJA,IAAI,GAAI,OAAO,CAAC,CAAC;IACxCC,KAAK;IACLC;EACF,CAAC;AACH,CAAC;AAACd,OAAA,CAAAS,oBAAA,GAAAA,oBAAA;AAEK,MAAMW,OAAO,GAAGA,CACrBlB,IAAU,EACVmB,KAA0E,KACnD;EACvB,SAAS;;EACT,MAAM;IAAExB,CAAC;IAAEE,CAAC;IAAEuB,KAAK;IAAEC;EAAO,CAAC,GAAGF,KAAK;EACrC,IAAIA,KAAK,CAACG,IAAI,EAAE;IACd,OAAOH,KAAK,CAACG,IAAI;EACnB,CAAC,MAAM,IAAIF,KAAK,KAAKG,SAAS,IAAIF,MAAM,KAAKE,SAAS,EAAE;IACtD,OAAOvB,IAAI,CAACwB,QAAQ,CAAC7B,CAAC,aAADA,CAAC,cAADA,CAAC,GAAI,CAAC,EAAEE,CAAC,aAADA,CAAC,cAADA,CAAC,GAAI,CAAC,EAAEuB,KAAK,EAAEC,MAAM,CAAC;EACrD,CAAC,MAAM;IACL,OAAOE,SAAS;EAClB;AACF,CAAC;AAACzB,OAAA,CAAAoB,OAAA,GAAAA,OAAA","ignoreList":[]}
@@ -40,7 +40,7 @@ const drawBox = (ctx, command) => {
40
40
  dy = 0
41
41
  } = shadow;
42
42
  const lPaint = Skia.Paint();
43
- lPaint.setColor(Skia.Color(color));
43
+ lPaint.setColor((0, _nodes.processColor)(Skia, color));
44
44
  lPaint.setAlphaf(paint.getAlphaf() * opacity);
45
45
  lPaint.setMaskFilter(Skia.MaskFilter.MakeBlur(_types.BlurStyle.Normal, blur, true));
46
46
  canvas.drawRRect((0, _nodes.inflate)(Skia, box, spread, spread, dx, dy), lPaint);
@@ -1 +1 @@
1
- {"version":3,"names":["_nodes","require","_types","_Core","isBoxCommand","command","type","CommandType","DrawBox","exports","drawBox","ctx","shadows","forEach","shadow","materializeProps","map","props","paint","Skia","canvas","box","defaultBox","opacity","getAlphaf","isRRect","RRectXY","filter","inner","color","blur","spread","dx","dy","lPaint","Paint","setColor","Color","setAlphaf","setMaskFilter","MaskFilter","MakeBlur","BlurStyle","Normal","drawRRect","inflate","delta","Point","Math","abs","save","clipRRect","ClipOp","Intersect","deflate","outer","x","y","drawDRRect","restore"],"sources":["Box.ts"],"sourcesContent":["import { deflate, inflate } from \"../../../dom/nodes\";\nimport type { BoxProps, BoxShadowProps } from \"../../../dom/types\";\nimport { BlurStyle, ClipOp, isRRect } from \"../../../skia/types\";\nimport type { Command } from \"../Core\";\nimport { CommandType, materializeProps } from \"../Core\";\nimport type { DrawingContext } from \"../DrawingContext\";\n\ninterface BoxCommand extends Command<CommandType.DrawBox> {\n props: BoxProps;\n shadows: { props: BoxShadowProps }[];\n}\n\nexport const isBoxCommand = (command: Command): command is BoxCommand => {\n \"worklet\";\n return command.type === CommandType.DrawBox;\n};\n\nexport const drawBox = (ctx: DrawingContext, command: BoxCommand) => {\n \"worklet\";\n command.shadows.forEach((shadow) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n materializeProps(shadow as any);\n });\n const shadows = command.shadows.map((shadow) => shadow.props);\n const { paint, Skia, canvas } = ctx;\n const { box: defaultBox } = command.props;\n const opacity = paint.getAlphaf();\n const box = isRRect(defaultBox) ? defaultBox : Skia.RRectXY(defaultBox, 0, 0);\n shadows\n .filter((shadow) => !shadow.inner)\n .map((shadow) => {\n const { color = \"black\", blur, spread = 0, dx = 0, dy = 0 } = shadow;\n const lPaint = Skia.Paint();\n lPaint.setColor(Skia.Color(color));\n lPaint.setAlphaf(paint.getAlphaf() * opacity);\n lPaint.setMaskFilter(\n Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)\n );\n canvas.drawRRect(inflate(Skia, box, spread, spread, dx, dy), lPaint);\n });\n\n canvas.drawRRect(box, paint);\n\n shadows\n .filter((shadow) => shadow.inner)\n .map((shadow) => {\n const { color = \"black\", blur, spread = 0, dx = 0, dy = 0 } = shadow;\n const delta = Skia.Point(10 + Math.abs(dx), 10 + Math.abs(dy));\n canvas.save();\n canvas.clipRRect(box, ClipOp.Intersect, false);\n const lPaint = Skia.Paint();\n lPaint.setColor(Skia.Color(color));\n lPaint.setAlphaf(paint.getAlphaf() * opacity);\n\n lPaint.setMaskFilter(\n Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)\n );\n const inner = deflate(Skia, box, spread, spread, dx, dy);\n const outer = inflate(Skia, box, delta.x, delta.y);\n canvas.drawDRRect(outer, inner, lPaint);\n canvas.restore();\n });\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_nodes","require","_types","_Core","isBoxCommand","command","type","CommandType","DrawBox","exports","drawBox","ctx","shadows","forEach","shadow","materializeProps","map","props","paint","Skia","canvas","box","defaultBox","opacity","getAlphaf","isRRect","RRectXY","filter","inner","color","blur","spread","dx","dy","lPaint","Paint","setColor","processColor","setAlphaf","setMaskFilter","MaskFilter","MakeBlur","BlurStyle","Normal","drawRRect","inflate","delta","Point","Math","abs","save","clipRRect","ClipOp","Intersect","Color","deflate","outer","x","y","drawDRRect","restore"],"sources":["Box.ts"],"sourcesContent":["import { deflate, inflate, processColor } from \"../../../dom/nodes\";\nimport type { BoxProps, BoxShadowProps } from \"../../../dom/types\";\nimport { BlurStyle, ClipOp, isRRect } from \"../../../skia/types\";\nimport type { Command } from \"../Core\";\nimport { CommandType, materializeProps } from \"../Core\";\nimport type { DrawingContext } from \"../DrawingContext\";\n\ninterface BoxCommand extends Command<CommandType.DrawBox> {\n props: BoxProps;\n shadows: { props: BoxShadowProps }[];\n}\n\nexport const isBoxCommand = (command: Command): command is BoxCommand => {\n \"worklet\";\n return command.type === CommandType.DrawBox;\n};\n\nexport const drawBox = (ctx: DrawingContext, command: BoxCommand) => {\n \"worklet\";\n command.shadows.forEach((shadow) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n materializeProps(shadow as any);\n });\n const shadows = command.shadows.map((shadow) => shadow.props);\n const { paint, Skia, canvas } = ctx;\n const { box: defaultBox } = command.props;\n const opacity = paint.getAlphaf();\n const box = isRRect(defaultBox) ? defaultBox : Skia.RRectXY(defaultBox, 0, 0);\n shadows\n .filter((shadow) => !shadow.inner)\n .map((shadow) => {\n const { color = \"black\", blur, spread = 0, dx = 0, dy = 0 } = shadow;\n const lPaint = Skia.Paint();\n lPaint.setColor(processColor(Skia, color));\n lPaint.setAlphaf(paint.getAlphaf() * opacity);\n lPaint.setMaskFilter(\n Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)\n );\n canvas.drawRRect(inflate(Skia, box, spread, spread, dx, dy), lPaint);\n });\n\n canvas.drawRRect(box, paint);\n\n shadows\n .filter((shadow) => shadow.inner)\n .map((shadow) => {\n const { color = \"black\", blur, spread = 0, dx = 0, dy = 0 } = shadow;\n const delta = Skia.Point(10 + Math.abs(dx), 10 + Math.abs(dy));\n canvas.save();\n canvas.clipRRect(box, ClipOp.Intersect, false);\n const lPaint = Skia.Paint();\n lPaint.setColor(Skia.Color(color));\n lPaint.setAlphaf(paint.getAlphaf() * opacity);\n\n lPaint.setMaskFilter(\n Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)\n );\n const inner = deflate(Skia, box, spread, spread, dx, dy);\n const outer = inflate(Skia, box, delta.x, delta.y);\n canvas.drawDRRect(outer, inner, lPaint);\n canvas.restore();\n });\n};\n"],"mappings":"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","ignoreList":[]}
@@ -40,7 +40,7 @@ const pushColorFilter = (ctx, command) => {
40
40
  const {
41
41
  mode
42
42
  } = props;
43
- const color = ctx.Skia.Color(props.color);
43
+ const color = (0, _nodes.processColor)(ctx.Skia, props.color);
44
44
  cf = ctx.Skia.ColorFilter.MakeBlend(color, _types2.BlendMode[(0, _nodes.enumKey)(mode)]);
45
45
  } else if (isColorFilter(command, _types.NodeType.MatrixColorFilter)) {
46
46
  const {
@@ -1 +1 @@
1
- {"version":3,"names":["_nodes","require","_types","_types2","_Core","isPushColorFilter","command","type","CommandType","PushColorFilter","exports","isColorFilter","colorFilterType","composeColorFilters","ctx","colorFilters","length","outer","pop","inner","push","Skia","ColorFilter","MakeCompose","pushColorFilter","cf","NodeType","BlendColorFilter","props","mode","color","Color","MakeBlend","BlendMode","enumKey","MatrixColorFilter","matrix","MakeMatrix","LerpColorFilter","t","second","first","Error","MakeLerp","LumaColorFilter","MakeLumaColorFilter","LinearToSRGBGammaColorFilter","MakeLinearToSRGBGamma","SRGBToLinearGammaColorFilter","MakeSRGBToLinearGamma"],"sources":["ColorFilters.ts"],"sourcesContent":["import { enumKey } from \"../../../dom/nodes\";\nimport type {\n BlendColorFilterProps,\n LerpColorFilterProps,\n MatrixColorFilterProps,\n} from \"../../../dom/types\";\nimport { NodeType } from \"../../../dom/types\";\nimport type { SkColorFilter } from \"../../../skia/types\";\nimport { BlendMode } from \"../../../skia/types\";\nimport { CommandType } from \"../Core\";\nimport type { Command } from \"../Core\";\nimport type { DrawingContext } from \"../DrawingContext\";\n\nexport const isPushColorFilter = (\n command: Command\n): command is Command<CommandType.PushColorFilter> => {\n \"worklet\";\n return command.type === CommandType.PushColorFilter;\n};\n\ntype Props = {\n [NodeType.BlendColorFilter]: BlendColorFilterProps;\n [NodeType.MatrixColorFilter]: MatrixColorFilterProps;\n [NodeType.LerpColorFilter]: LerpColorFilterProps;\n [NodeType.LumaColorFilter]: Record<string, never>;\n [NodeType.LinearToSRGBGammaColorFilter]: Record<string, never>;\n [NodeType.SRGBToLinearGammaColorFilter]: Record<string, never>;\n};\n\ninterface PushColorFilter<T extends keyof Props>\n extends Command<CommandType.PushColorFilter> {\n colorFilterType: T;\n props: Props[T];\n}\n\nconst isColorFilter = <T extends keyof Props>(\n command: Command<CommandType.PushColorFilter>,\n type: T\n): command is PushColorFilter<T> => {\n \"worklet\";\n return command.colorFilterType === type;\n};\n\nexport const composeColorFilters = (ctx: DrawingContext) => {\n \"worklet\";\n if (ctx.colorFilters.length > 1) {\n const outer = ctx.colorFilters.pop()!;\n const inner = ctx.colorFilters.pop()!;\n ctx.colorFilters.push(ctx.Skia.ColorFilter.MakeCompose(outer, inner));\n }\n};\n\nexport const pushColorFilter = (\n ctx: DrawingContext,\n command: Command<CommandType.PushColorFilter>\n) => {\n \"worklet\";\n let cf: SkColorFilter | undefined;\n if (isColorFilter(command, NodeType.BlendColorFilter)) {\n const { props } = command;\n const { mode } = props;\n const color = ctx.Skia.Color(props.color);\n cf = ctx.Skia.ColorFilter.MakeBlend(color, BlendMode[enumKey(mode)]);\n } else if (isColorFilter(command, NodeType.MatrixColorFilter)) {\n const { matrix } = command.props;\n cf = ctx.Skia.ColorFilter.MakeMatrix(matrix);\n } else if (isColorFilter(command, NodeType.LerpColorFilter)) {\n const { props } = command;\n const { t } = props;\n const second = ctx.colorFilters.pop();\n const first = ctx.colorFilters.pop();\n if (!first || !second) {\n throw new Error(\"LerpColorFilter requires two color filters\");\n }\n cf = ctx.Skia.ColorFilter.MakeLerp(t, first, second);\n } else if (isColorFilter(command, NodeType.LumaColorFilter)) {\n cf = ctx.Skia.ColorFilter.MakeLumaColorFilter();\n } else if (isColorFilter(command, NodeType.LinearToSRGBGammaColorFilter)) {\n cf = ctx.Skia.ColorFilter.MakeLinearToSRGBGamma();\n } else if (isColorFilter(command, NodeType.SRGBToLinearGammaColorFilter)) {\n cf = ctx.Skia.ColorFilter.MakeSRGBToLinearGamma();\n }\n if (!cf) {\n throw new Error(`Unknown color filter type: ${command.colorFilterType}`);\n }\n ctx.colorFilters.push(cf);\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_nodes","require","_types","_types2","_Core","isPushColorFilter","command","type","CommandType","PushColorFilter","exports","isColorFilter","colorFilterType","composeColorFilters","ctx","colorFilters","length","outer","pop","inner","push","Skia","ColorFilter","MakeCompose","pushColorFilter","cf","NodeType","BlendColorFilter","props","mode","color","processColor","MakeBlend","BlendMode","enumKey","MatrixColorFilter","matrix","MakeMatrix","LerpColorFilter","t","second","first","Error","MakeLerp","LumaColorFilter","MakeLumaColorFilter","LinearToSRGBGammaColorFilter","MakeLinearToSRGBGamma","SRGBToLinearGammaColorFilter","MakeSRGBToLinearGamma"],"sources":["ColorFilters.ts"],"sourcesContent":["import { enumKey, processColor } from \"../../../dom/nodes\";\nimport type {\n BlendColorFilterProps,\n LerpColorFilterProps,\n MatrixColorFilterProps,\n} from \"../../../dom/types\";\nimport { NodeType } from \"../../../dom/types\";\nimport type { SkColorFilter } from \"../../../skia/types\";\nimport { BlendMode } from \"../../../skia/types\";\nimport { CommandType } from \"../Core\";\nimport type { Command } from \"../Core\";\nimport type { DrawingContext } from \"../DrawingContext\";\n\nexport const isPushColorFilter = (\n command: Command\n): command is Command<CommandType.PushColorFilter> => {\n \"worklet\";\n return command.type === CommandType.PushColorFilter;\n};\n\ntype Props = {\n [NodeType.BlendColorFilter]: BlendColorFilterProps;\n [NodeType.MatrixColorFilter]: MatrixColorFilterProps;\n [NodeType.LerpColorFilter]: LerpColorFilterProps;\n [NodeType.LumaColorFilter]: Record<string, never>;\n [NodeType.LinearToSRGBGammaColorFilter]: Record<string, never>;\n [NodeType.SRGBToLinearGammaColorFilter]: Record<string, never>;\n};\n\ninterface PushColorFilter<T extends keyof Props>\n extends Command<CommandType.PushColorFilter> {\n colorFilterType: T;\n props: Props[T];\n}\n\nconst isColorFilter = <T extends keyof Props>(\n command: Command<CommandType.PushColorFilter>,\n type: T\n): command is PushColorFilter<T> => {\n \"worklet\";\n return command.colorFilterType === type;\n};\n\nexport const composeColorFilters = (ctx: DrawingContext) => {\n \"worklet\";\n if (ctx.colorFilters.length > 1) {\n const outer = ctx.colorFilters.pop()!;\n const inner = ctx.colorFilters.pop()!;\n ctx.colorFilters.push(ctx.Skia.ColorFilter.MakeCompose(outer, inner));\n }\n};\n\nexport const pushColorFilter = (\n ctx: DrawingContext,\n command: Command<CommandType.PushColorFilter>\n) => {\n \"worklet\";\n let cf: SkColorFilter | undefined;\n if (isColorFilter(command, NodeType.BlendColorFilter)) {\n const { props } = command;\n const { mode } = props;\n const color = processColor(ctx.Skia, props.color);\n cf = ctx.Skia.ColorFilter.MakeBlend(color, BlendMode[enumKey(mode)]);\n } else if (isColorFilter(command, NodeType.MatrixColorFilter)) {\n const { matrix } = command.props;\n cf = ctx.Skia.ColorFilter.MakeMatrix(matrix);\n } else if (isColorFilter(command, NodeType.LerpColorFilter)) {\n const { props } = command;\n const { t } = props;\n const second = ctx.colorFilters.pop();\n const first = ctx.colorFilters.pop();\n if (!first || !second) {\n throw new Error(\"LerpColorFilter requires two color filters\");\n }\n cf = ctx.Skia.ColorFilter.MakeLerp(t, first, second);\n } else if (isColorFilter(command, NodeType.LumaColorFilter)) {\n cf = ctx.Skia.ColorFilter.MakeLumaColorFilter();\n } else if (isColorFilter(command, NodeType.LinearToSRGBGammaColorFilter)) {\n cf = ctx.Skia.ColorFilter.MakeLinearToSRGBGamma();\n } else if (isColorFilter(command, NodeType.SRGBToLinearGammaColorFilter)) {\n cf = ctx.Skia.ColorFilter.MakeSRGBToLinearGamma();\n }\n if (!cf) {\n throw new Error(`Unknown color filter type: ${command.colorFilterType}`);\n }\n ctx.colorFilters.push(cf);\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAMA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAIO,MAAMI,iBAAiB,GAC5BC,OAAgB,IACoC;EACpD,SAAS;;EACT,OAAOA,OAAO,CAACC,IAAI,KAAKC,iBAAW,CAACC,eAAe;AACrD,CAAC;AAACC,OAAA,CAAAL,iBAAA,GAAAA,iBAAA;AAiBF,MAAMM,aAAa,GAAGA,CACpBL,OAA6C,EAC7CC,IAAO,KAC2B;EAClC,SAAS;;EACT,OAAOD,OAAO,CAACM,eAAe,KAAKL,IAAI;AACzC,CAAC;AAEM,MAAMM,mBAAmB,GAAIC,GAAmB,IAAK;EAC1D,SAAS;;EACT,IAAIA,GAAG,CAACC,YAAY,CAACC,MAAM,GAAG,CAAC,EAAE;IAC/B,MAAMC,KAAK,GAAGH,GAAG,CAACC,YAAY,CAACG,GAAG,CAAC,CAAE;IACrC,MAAMC,KAAK,GAAGL,GAAG,CAACC,YAAY,CAACG,GAAG,CAAC,CAAE;IACrCJ,GAAG,CAACC,YAAY,CAACK,IAAI,CAACN,GAAG,CAACO,IAAI,CAACC,WAAW,CAACC,WAAW,CAACN,KAAK,EAAEE,KAAK,CAAC,CAAC;EACvE;AACF,CAAC;AAACT,OAAA,CAAAG,mBAAA,GAAAA,mBAAA;AAEK,MAAMW,eAAe,GAAGA,CAC7BV,GAAmB,EACnBR,OAA6C,KAC1C;EACH,SAAS;;EACT,IAAImB,EAA6B;EACjC,IAAId,aAAa,CAACL,OAAO,EAAEoB,eAAQ,CAACC,gBAAgB,CAAC,EAAE;IACrD,MAAM;MAAEC;IAAM,CAAC,GAAGtB,OAAO;IACzB,MAAM;MAAEuB;IAAK,CAAC,GAAGD,KAAK;IACtB,MAAME,KAAK,GAAG,IAAAC,mBAAY,EAACjB,GAAG,CAACO,IAAI,EAAEO,KAAK,CAACE,KAAK,CAAC;IACjDL,EAAE,GAAGX,GAAG,CAACO,IAAI,CAACC,WAAW,CAACU,SAAS,CAACF,KAAK,EAAEG,iBAAS,CAAC,IAAAC,cAAO,EAACL,IAAI,CAAC,CAAC,CAAC;EACtE,CAAC,MAAM,IAAIlB,aAAa,CAACL,OAAO,EAAEoB,eAAQ,CAACS,iBAAiB,CAAC,EAAE;IAC7D,MAAM;MAAEC;IAAO,CAAC,GAAG9B,OAAO,CAACsB,KAAK;IAChCH,EAAE,GAAGX,GAAG,CAACO,IAAI,CAACC,WAAW,CAACe,UAAU,CAACD,MAAM,CAAC;EAC9C,CAAC,MAAM,IAAIzB,aAAa,CAACL,OAAO,EAAEoB,eAAQ,CAACY,eAAe,CAAC,EAAE;IAC3D,MAAM;MAAEV;IAAM,CAAC,GAAGtB,OAAO;IACzB,MAAM;MAAEiC;IAAE,CAAC,GAAGX,KAAK;IACnB,MAAMY,MAAM,GAAG1B,GAAG,CAACC,YAAY,CAACG,GAAG,CAAC,CAAC;IACrC,MAAMuB,KAAK,GAAG3B,GAAG,CAACC,YAAY,CAACG,GAAG,CAAC,CAAC;IACpC,IAAI,CAACuB,KAAK,IAAI,CAACD,MAAM,EAAE;MACrB,MAAM,IAAIE,KAAK,CAAC,4CAA4C,CAAC;IAC/D;IACAjB,EAAE,GAAGX,GAAG,CAACO,IAAI,CAACC,WAAW,CAACqB,QAAQ,CAACJ,CAAC,EAAEE,KAAK,EAAED,MAAM,CAAC;EACtD,CAAC,MAAM,IAAI7B,aAAa,CAACL,OAAO,EAAEoB,eAAQ,CAACkB,eAAe,CAAC,EAAE;IAC3DnB,EAAE,GAAGX,GAAG,CAACO,IAAI,CAACC,WAAW,CAACuB,mBAAmB,CAAC,CAAC;EACjD,CAAC,MAAM,IAAIlC,aAAa,CAACL,OAAO,EAAEoB,eAAQ,CAACoB,4BAA4B,CAAC,EAAE;IACxErB,EAAE,GAAGX,GAAG,CAACO,IAAI,CAACC,WAAW,CAACyB,qBAAqB,CAAC,CAAC;EACnD,CAAC,MAAM,IAAIpC,aAAa,CAACL,OAAO,EAAEoB,eAAQ,CAACsB,4BAA4B,CAAC,EAAE;IACxEvB,EAAE,GAAGX,GAAG,CAACO,IAAI,CAACC,WAAW,CAAC2B,qBAAqB,CAAC,CAAC;EACnD;EACA,IAAI,CAACxB,EAAE,EAAE;IACP,MAAM,IAAIiB,KAAK,CAAC,8BAA8BpC,OAAO,CAACM,eAAe,EAAE,CAAC;EAC1E;EACAE,GAAG,CAACC,YAAY,CAACK,IAAI,CAACK,EAAE,CAAC;AAC3B,CAAC;AAACf,OAAA,CAAAc,eAAA,GAAAA,eAAA","ignoreList":[]}
@@ -53,7 +53,7 @@ const drawBox = (ctx, props, children) => {
53
53
  dy = 0
54
54
  } = shadow;
55
55
  const lPaint = Skia.Paint();
56
- lPaint.setColor(Skia.Color(color));
56
+ lPaint.setColor((0, _nodes.processColor)(Skia, color));
57
57
  lPaint.setAlphaf(paint.getAlphaf() * opacity);
58
58
  lPaint.setMaskFilter(Skia.MaskFilter.MakeBlur(_types.BlurStyle.Normal, blur, true));
59
59
  canvas.drawRRect((0, _nodes.inflate)(Skia, box, spread, spread, dx, dy), lPaint);
@@ -71,7 +71,7 @@ const drawBox = (ctx, props, children) => {
71
71
  canvas.save();
72
72
  canvas.clipRRect(box, _types.ClipOp.Intersect, false);
73
73
  const lPaint = Skia.Paint();
74
- lPaint.setColor(Skia.Color(color));
74
+ lPaint.setColor((0, _nodes.processColor)(Skia, color));
75
75
  lPaint.setAlphaf(paint.getAlphaf() * opacity);
76
76
  lPaint.setMaskFilter(Skia.MaskFilter.MakeBlur(_types.BlurStyle.Normal, blur, true));
77
77
  const inner = (0, _nodes.deflate)(Skia, box, spread, spread, dx, dy);
@@ -131,7 +131,7 @@ const drawVertices = (ctx, props) => {
131
131
  blendMode
132
132
  } = props;
133
133
  const vertexMode = mode ? _types.VertexMode[(0, _nodes.enumKey)(mode)] : _types.VertexMode.Triangles;
134
- const vertices = ctx.Skia.MakeVertices(vertexMode, props.vertices, textures, colors ? colors.map(c => ctx.Skia.Color(c)) : undefined, indices);
134
+ const vertices = ctx.Skia.MakeVertices(vertexMode, props.vertices, textures, colors ? colors.map(c => (0, _nodes.processColor)(ctx.Skia, c)) : undefined, indices);
135
135
  const defaultBlendMode = colors ? _types.BlendMode.DstOver : _types.BlendMode.SrcOver;
136
136
  const blend = blendMode ? _types.BlendMode[(0, _nodes.enumKey)(blendMode)] : defaultBlendMode;
137
137
  ctx.canvas.drawVertices(vertices, blend, ctx.paint);
@@ -223,7 +223,7 @@ const drawPatch = (ctx, props) => {
223
223
  // C c1 c2 tl (the redundant point in the last command is removed)
224
224
 
225
225
  const points = [patch[0].pos, patch[0].c2, patch[1].c1, patch[1].pos, patch[1].c2, patch[2].c1, patch[2].pos, patch[2].c2, patch[3].c1, patch[3].pos, patch[3].c2, patch[0].c1];
226
- const colors = props.colors ? props.colors.map(c => ctx.Skia.Color(c)) : undefined;
226
+ const colors = props.colors ? props.colors.map(c => (0, _nodes.processColor)(ctx.Skia, c)) : undefined;
227
227
  ctx.canvas.drawPatch(points, colors, texture, mode, ctx.paint);
228
228
  };
229
229
  exports.drawPatch = drawPatch;
@@ -1 +1 @@
1
- {"version":3,"names":["_nodes","require","_processors","_types","_utils","drawLine","ctx","props","p1","p2","canvas","x","y","paint","exports","drawOval","rect","processRect","Skia","drawBox","children","box","defaultBox","opacity","getAlphaf","isRRect","RRectXY","shadows","map","node","type","NodeType","BoxShadow","materialize","filter","n","shadow","inner","color","blur","spread","dx","dy","lPaint","Paint","setColor","Color","setAlphaf","setMaskFilter","MaskFilter","MakeBlur","BlurStyle","Normal","drawRRect","inflate","delta","Point","Math","abs","save","clipRRect","ClipOp","Intersect","deflate","outer","drawDRRect","restore","drawImage","image","sampling","_props$fit","fit","src","dst","fitRects","width","height","isCubicSampling","drawImageRectCubic","B","C","_sampling$filter","_sampling$mipmap","drawImageRectOptions","FilterMode","Linear","mipmap","MipmapMode","None","drawPoints","points","mode","PointMode","enumKey","drawVertices","textures","colors","indices","blendMode","vertexMode","VertexMode","Triangles","vertices","MakeVertices","c","undefined","defaultBlendMode","BlendMode","DstOver","SrcOver","blend","drawDiffRect","drawTextPath","path","processPath","font","initialOffset","text","ids","getGlyphIDs","widths","getGlyphWidths","rsx","meas","ContourMeasureIter","cont","next","dist","i","length","substring","p","t","getPosTan","adjustedX","adjustedY","push","RSXform","derived","TextBlob","MakeFromRSXform","drawTextBlob","drawText","drawPatch","texture","patch","pos","c2","c1","drawPath","start","trimStart","end","trimEnd","fillType","stroke","pathProps","saturate","hasStartOffset","hasEndOffset","hasStrokeOptions","hasFillType","willMutatePath","pristinePath","copy","setFillType","FillType","trim","drawRect","processRRect","blob","drawGlyphs","glyphs","reduce","acc","glyph","id","positions","drawImageSVG","svg","translate","drawSvg","drawParagraph","paragraph","layout","drawPicture","picture","drawAtlas","sprites","transforms","drawCircle","processCircle","r","drawFill","_props","drawPaint"],"sources":["Drawing.ts"],"sourcesContent":["import {\n deflate,\n enumKey,\n fitRects,\n inflate,\n NodeType,\n processCircle,\n processPath,\n processRect,\n processRRect,\n} from \"../../../dom/nodes\";\nimport type {\n AtlasProps,\n BoxProps,\n BoxShadowProps,\n CircleProps,\n DiffRectProps,\n DrawingNodeProps,\n GlyphsProps,\n ImageProps,\n ImageSVGProps,\n LineProps,\n OvalProps,\n ParagraphProps,\n PatchProps,\n PathProps,\n PictureProps,\n PointsProps,\n RectProps,\n RoundedRectProps,\n TextBlobProps,\n TextPathProps,\n TextProps,\n VerticesProps,\n} from \"../../../dom/types\";\nimport { saturate } from \"../../../renderer/processors\";\nimport type { SkPoint, SkRSXform } from \"../../../skia/types\";\nimport {\n BlendMode,\n BlurStyle,\n ClipOp,\n FillType,\n FilterMode,\n isCubicSampling,\n isRRect,\n MipmapMode,\n PointMode,\n VertexMode,\n} from \"../../../skia/types\";\nimport type { Node } from \"../../Node\";\nimport { materialize } from \"../../utils\";\nimport type { DrawingContext } from \"../DrawingContext\";\n\nexport const drawLine = (ctx: DrawingContext, props: LineProps) => {\n \"worklet\";\n const { p1, p2 } = props;\n ctx.canvas.drawLine(p1.x, p1.y, p2.x, p2.y, ctx.paint);\n};\n\nexport const drawOval = (ctx: DrawingContext, props: OvalProps) => {\n \"worklet\";\n const rect = processRect(ctx.Skia, props);\n ctx.canvas.drawOval(rect, ctx.paint);\n};\n\nexport const drawBox = (\n ctx: DrawingContext,\n props: BoxProps,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n children: Node<any>[]\n) => {\n \"worklet\";\n const { paint, Skia, canvas } = ctx;\n const { box: defaultBox } = props;\n const opacity = paint.getAlphaf();\n const box = isRRect(defaultBox) ? defaultBox : Skia.RRectXY(defaultBox, 0, 0);\n const shadows = children\n .map((node) => {\n if (node.type === NodeType.BoxShadow) {\n return materialize(node.props);\n }\n return null;\n })\n .filter((n): n is BoxShadowProps => n !== null);\n shadows\n .filter((shadow) => !shadow.inner)\n .map((shadow) => {\n const { color = \"black\", blur, spread = 0, dx = 0, dy = 0 } = shadow;\n const lPaint = Skia.Paint();\n lPaint.setColor(Skia.Color(color));\n lPaint.setAlphaf(paint.getAlphaf() * opacity);\n lPaint.setMaskFilter(\n Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)\n );\n canvas.drawRRect(inflate(Skia, box, spread, spread, dx, dy), lPaint);\n });\n\n canvas.drawRRect(box, paint);\n\n shadows\n .filter((shadow) => shadow.inner)\n .map((shadow) => {\n const { color = \"black\", blur, spread = 0, dx = 0, dy = 0 } = shadow;\n const delta = Skia.Point(10 + Math.abs(dx), 10 + Math.abs(dy));\n canvas.save();\n canvas.clipRRect(box, ClipOp.Intersect, false);\n const lPaint = Skia.Paint();\n lPaint.setColor(Skia.Color(color));\n lPaint.setAlphaf(paint.getAlphaf() * opacity);\n\n lPaint.setMaskFilter(\n Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)\n );\n const inner = deflate(Skia, box, spread, spread, dx, dy);\n const outer = inflate(Skia, box, delta.x, delta.y);\n canvas.drawDRRect(outer, inner, lPaint);\n canvas.restore();\n });\n};\n\nexport const drawImage = (ctx: DrawingContext, props: ImageProps) => {\n \"worklet\";\n const { image, sampling } = props;\n if (image) {\n const fit = props.fit ?? \"contain\";\n const rect = processRect(ctx.Skia, props);\n const { src, dst } = fitRects(\n fit,\n {\n x: 0,\n y: 0,\n width: image.width(),\n height: image.height(),\n },\n rect\n );\n if (sampling && isCubicSampling(sampling)) {\n ctx.canvas.drawImageRectCubic(\n image,\n src,\n dst,\n sampling.B,\n sampling.C,\n ctx.paint\n );\n } else {\n ctx.canvas.drawImageRectOptions(\n image,\n src,\n dst,\n sampling?.filter ?? FilterMode.Linear,\n sampling?.mipmap ?? MipmapMode.None,\n ctx.paint\n );\n }\n }\n};\n\nexport const drawPoints = (ctx: DrawingContext, props: PointsProps) => {\n \"worklet\";\n const { points, mode } = props;\n ctx.canvas.drawPoints(PointMode[enumKey(mode)], points, ctx.paint);\n};\n\nexport const drawVertices = (ctx: DrawingContext, props: VerticesProps) => {\n \"worklet\";\n const { mode, textures, colors, indices, blendMode } = props;\n const vertexMode = mode ? VertexMode[enumKey(mode)] : VertexMode.Triangles;\n const vertices = ctx.Skia.MakeVertices(\n vertexMode,\n props.vertices,\n textures,\n colors ? colors.map((c) => ctx.Skia.Color(c)) : undefined,\n indices\n );\n const defaultBlendMode = colors ? BlendMode.DstOver : BlendMode.SrcOver;\n const blend = blendMode ? BlendMode[enumKey(blendMode)] : defaultBlendMode;\n\n ctx.canvas.drawVertices(vertices, blend, ctx.paint);\n};\n\nexport const drawDiffRect = (ctx: DrawingContext, props: DiffRectProps) => {\n \"worklet\";\n const { outer, inner } = props;\n ctx.canvas.drawDRRect(outer, inner, ctx.paint);\n};\n\nexport const drawTextPath = (ctx: DrawingContext, props: TextPathProps) => {\n \"worklet\";\n const path = processPath(ctx.Skia, props.path);\n const { font, initialOffset } = props;\n if (font) {\n let { text } = props;\n const ids = font.getGlyphIDs(text);\n const widths = font.getGlyphWidths(ids);\n const rsx: SkRSXform[] = [];\n const meas = ctx.Skia.ContourMeasureIter(path, false, 1);\n let cont = meas.next();\n let dist = initialOffset;\n for (let i = 0; i < text.length && cont; i++) {\n const width = widths[i];\n dist += width / 2;\n if (dist > cont.length()) {\n // jump to next contour\n cont = meas.next();\n if (!cont) {\n // We have come to the end of the path - terminate the string\n // right here.\n text = text.substring(0, i);\n break;\n }\n dist = width / 2;\n }\n // Gives us the (x, y) coordinates as well as the cos/sin of the tangent\n // line at that position.\n const [p, t] = cont.getPosTan(dist);\n const adjustedX = p.x - (width / 2) * t.x;\n const adjustedY = p.y - (width / 2) * t.y;\n rsx.push(ctx.Skia.RSXform(t.x, t.y, adjustedX, adjustedY));\n dist += width / 2;\n }\n const derived = ctx.Skia.TextBlob.MakeFromRSXform(text, rsx, font);\n ctx.canvas.drawTextBlob(derived, 0, 0, ctx.paint);\n }\n};\n\nexport const drawText = (ctx: DrawingContext, props: TextProps) => {\n \"worklet\";\n const { text, x, y, font } = props;\n if (font != null) {\n ctx.canvas.drawText(text, x, y, ctx.paint, font);\n }\n};\n\nexport const drawPatch = (ctx: DrawingContext, props: PatchProps) => {\n \"worklet\";\n const { texture, blendMode, patch } = props;\n const defaultBlendMode = props.colors ? BlendMode.DstOver : BlendMode.SrcOver;\n const mode = blendMode ? BlendMode[enumKey(blendMode)] : defaultBlendMode;\n // Patch requires a path with the following constraints:\n // M tl\n // C c1 c2 br\n // C c1 c2 bl\n // C c1 c2 tl (the redundant point in the last command is removed)\n\n const points = [\n patch[0].pos,\n patch[0].c2,\n patch[1].c1,\n patch[1].pos,\n patch[1].c2,\n patch[2].c1,\n patch[2].pos,\n patch[2].c2,\n patch[3].c1,\n patch[3].pos,\n patch[3].c2,\n patch[0].c1,\n ];\n const colors = props.colors\n ? props.colors.map((c) => ctx.Skia.Color(c))\n : undefined;\n ctx.canvas.drawPatch(points, colors, texture, mode, ctx.paint);\n};\n\nexport const drawPath = (ctx: DrawingContext, props: PathProps) => {\n \"worklet\";\n const {\n start: trimStart,\n end: trimEnd,\n fillType,\n stroke,\n ...pathProps\n } = props;\n const start = saturate(trimStart);\n const end = saturate(trimEnd);\n const hasStartOffset = start !== 0;\n const hasEndOffset = end !== 1;\n const hasStrokeOptions = stroke !== undefined;\n const hasFillType = !!fillType;\n const willMutatePath =\n hasStartOffset || hasEndOffset || hasStrokeOptions || hasFillType;\n const pristinePath = processPath(ctx.Skia, pathProps.path);\n const path = willMutatePath ? pristinePath.copy() : pristinePath;\n if (hasFillType) {\n path.setFillType(FillType[enumKey(fillType)]);\n }\n if (hasStrokeOptions) {\n path.stroke(stroke);\n }\n if (hasStartOffset || hasEndOffset) {\n path.trim(start, end, false);\n }\n ctx.canvas.drawPath(path, ctx.paint);\n};\n\nexport const drawRect = (ctx: DrawingContext, props: RectProps) => {\n \"worklet\";\n const derived = processRect(ctx.Skia, props);\n ctx.canvas.drawRect(derived, ctx.paint);\n};\n\nexport const drawRRect = (ctx: DrawingContext, props: RoundedRectProps) => {\n \"worklet\";\n const derived = processRRect(ctx.Skia, props);\n ctx.canvas.drawRRect(derived, ctx.paint);\n};\n\nexport const drawTextBlob = (ctx: DrawingContext, props: TextBlobProps) => {\n \"worklet\";\n const { blob, x, y } = props;\n ctx.canvas.drawTextBlob(blob, x, y, ctx.paint);\n};\n\ninterface ProcessedGlyphs {\n glyphs: number[];\n positions: SkPoint[];\n}\n\nexport const drawGlyphs = (ctx: DrawingContext, props: GlyphsProps) => {\n \"worklet\";\n const derived = props.glyphs.reduce<ProcessedGlyphs>(\n (acc, glyph) => {\n const { id, pos } = glyph;\n acc.glyphs.push(id);\n acc.positions.push(pos);\n return acc;\n },\n { glyphs: [], positions: [] }\n );\n const { glyphs, positions } = derived;\n const { x, y, font } = props;\n if (font) {\n ctx.canvas.drawGlyphs(glyphs, positions, x, y, font, ctx.paint);\n }\n};\n\nexport const drawImageSVG = (ctx: DrawingContext, props: ImageSVGProps) => {\n \"worklet\";\n const { canvas } = ctx;\n const { svg } = props;\n const { x, y, width, height } = props.rect\n ? props.rect\n : { x: props.x, y: props.y, width: props.width, height: props.height };\n if (svg === null) {\n return;\n }\n canvas.save();\n if (x && y) {\n canvas.translate(x, y);\n }\n canvas.drawSvg(svg, width, height);\n canvas.restore();\n};\n\nexport const drawParagraph = (ctx: DrawingContext, props: ParagraphProps) => {\n \"worklet\";\n const { paragraph, x, y, width } = props;\n if (paragraph) {\n paragraph.layout(width);\n paragraph.paint(ctx.canvas, x, y);\n }\n};\n\nexport const drawPicture = (ctx: DrawingContext, props: PictureProps) => {\n \"worklet\";\n const { picture } = props;\n ctx.canvas.drawPicture(picture);\n};\n\nexport const drawAtlas = (ctx: DrawingContext, props: AtlasProps) => {\n \"worklet\";\n const { image, sprites, transforms, colors, blendMode, sampling } = props;\n const blend = blendMode ? BlendMode[enumKey(blendMode)] : undefined;\n if (image) {\n ctx.canvas.drawAtlas(\n image,\n sprites,\n transforms,\n ctx.paint,\n blend,\n colors,\n sampling\n );\n }\n};\n\nexport const drawCircle = (ctx: DrawingContext, props: CircleProps) => {\n \"worklet\";\n const { c } = processCircle(props);\n const { r } = props;\n ctx.canvas.drawCircle(c.x, c.y, r, ctx.paint);\n};\n\nexport const drawFill = (ctx: DrawingContext, _props: DrawingNodeProps) => {\n \"worklet\";\n ctx.canvas.drawPaint(ctx.paint);\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_nodes","require","_processors","_types","_utils","drawLine","ctx","props","p1","p2","canvas","x","y","paint","exports","drawOval","rect","processRect","Skia","drawBox","children","box","defaultBox","opacity","getAlphaf","isRRect","RRectXY","shadows","map","node","type","NodeType","BoxShadow","materialize","filter","n","shadow","inner","color","blur","spread","dx","dy","lPaint","Paint","setColor","processColor","setAlphaf","setMaskFilter","MaskFilter","MakeBlur","BlurStyle","Normal","drawRRect","inflate","delta","Point","Math","abs","save","clipRRect","ClipOp","Intersect","deflate","outer","drawDRRect","restore","drawImage","image","sampling","_props$fit","fit","src","dst","fitRects","width","height","isCubicSampling","drawImageRectCubic","B","C","_sampling$filter","_sampling$mipmap","drawImageRectOptions","FilterMode","Linear","mipmap","MipmapMode","None","drawPoints","points","mode","PointMode","enumKey","drawVertices","textures","colors","indices","blendMode","vertexMode","VertexMode","Triangles","vertices","MakeVertices","c","undefined","defaultBlendMode","BlendMode","DstOver","SrcOver","blend","drawDiffRect","drawTextPath","path","processPath","font","initialOffset","text","ids","getGlyphIDs","widths","getGlyphWidths","rsx","meas","ContourMeasureIter","cont","next","dist","i","length","substring","p","t","getPosTan","adjustedX","adjustedY","push","RSXform","derived","TextBlob","MakeFromRSXform","drawTextBlob","drawText","drawPatch","texture","patch","pos","c2","c1","drawPath","start","trimStart","end","trimEnd","fillType","stroke","pathProps","saturate","hasStartOffset","hasEndOffset","hasStrokeOptions","hasFillType","willMutatePath","pristinePath","copy","setFillType","FillType","trim","drawRect","processRRect","blob","drawGlyphs","glyphs","reduce","acc","glyph","id","positions","drawImageSVG","svg","translate","drawSvg","drawParagraph","paragraph","layout","drawPicture","picture","drawAtlas","sprites","transforms","drawCircle","processCircle","r","drawFill","_props","drawPaint"],"sources":["Drawing.ts"],"sourcesContent":["import {\n deflate,\n enumKey,\n fitRects,\n inflate,\n NodeType,\n processCircle,\n processColor,\n processPath,\n processRect,\n processRRect,\n} from \"../../../dom/nodes\";\nimport type {\n AtlasProps,\n BoxProps,\n BoxShadowProps,\n CircleProps,\n DiffRectProps,\n DrawingNodeProps,\n GlyphsProps,\n ImageProps,\n ImageSVGProps,\n LineProps,\n OvalProps,\n ParagraphProps,\n PatchProps,\n PathProps,\n PictureProps,\n PointsProps,\n RectProps,\n RoundedRectProps,\n TextBlobProps,\n TextPathProps,\n TextProps,\n VerticesProps,\n} from \"../../../dom/types\";\nimport { saturate } from \"../../../renderer/processors\";\nimport type { SkPoint, SkRSXform } from \"../../../skia/types\";\nimport {\n BlendMode,\n BlurStyle,\n ClipOp,\n FillType,\n FilterMode,\n isCubicSampling,\n isRRect,\n MipmapMode,\n PointMode,\n VertexMode,\n} from \"../../../skia/types\";\nimport type { Node } from \"../../Node\";\nimport { materialize } from \"../../utils\";\nimport type { DrawingContext } from \"../DrawingContext\";\n\nexport const drawLine = (ctx: DrawingContext, props: LineProps) => {\n \"worklet\";\n const { p1, p2 } = props;\n ctx.canvas.drawLine(p1.x, p1.y, p2.x, p2.y, ctx.paint);\n};\n\nexport const drawOval = (ctx: DrawingContext, props: OvalProps) => {\n \"worklet\";\n const rect = processRect(ctx.Skia, props);\n ctx.canvas.drawOval(rect, ctx.paint);\n};\n\nexport const drawBox = (\n ctx: DrawingContext,\n props: BoxProps,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n children: Node<any>[]\n) => {\n \"worklet\";\n const { paint, Skia, canvas } = ctx;\n const { box: defaultBox } = props;\n const opacity = paint.getAlphaf();\n const box = isRRect(defaultBox) ? defaultBox : Skia.RRectXY(defaultBox, 0, 0);\n const shadows = children\n .map((node) => {\n if (node.type === NodeType.BoxShadow) {\n return materialize(node.props);\n }\n return null;\n })\n .filter((n): n is BoxShadowProps => n !== null);\n shadows\n .filter((shadow) => !shadow.inner)\n .map((shadow) => {\n const { color = \"black\", blur, spread = 0, dx = 0, dy = 0 } = shadow;\n const lPaint = Skia.Paint();\n lPaint.setColor(processColor(Skia, color));\n lPaint.setAlphaf(paint.getAlphaf() * opacity);\n lPaint.setMaskFilter(\n Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)\n );\n canvas.drawRRect(inflate(Skia, box, spread, spread, dx, dy), lPaint);\n });\n\n canvas.drawRRect(box, paint);\n\n shadows\n .filter((shadow) => shadow.inner)\n .map((shadow) => {\n const { color = \"black\", blur, spread = 0, dx = 0, dy = 0 } = shadow;\n const delta = Skia.Point(10 + Math.abs(dx), 10 + Math.abs(dy));\n canvas.save();\n canvas.clipRRect(box, ClipOp.Intersect, false);\n const lPaint = Skia.Paint();\n lPaint.setColor(processColor(Skia, color));\n lPaint.setAlphaf(paint.getAlphaf() * opacity);\n\n lPaint.setMaskFilter(\n Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)\n );\n const inner = deflate(Skia, box, spread, spread, dx, dy);\n const outer = inflate(Skia, box, delta.x, delta.y);\n canvas.drawDRRect(outer, inner, lPaint);\n canvas.restore();\n });\n};\n\nexport const drawImage = (ctx: DrawingContext, props: ImageProps) => {\n \"worklet\";\n const { image, sampling } = props;\n if (image) {\n const fit = props.fit ?? \"contain\";\n const rect = processRect(ctx.Skia, props);\n const { src, dst } = fitRects(\n fit,\n {\n x: 0,\n y: 0,\n width: image.width(),\n height: image.height(),\n },\n rect\n );\n if (sampling && isCubicSampling(sampling)) {\n ctx.canvas.drawImageRectCubic(\n image,\n src,\n dst,\n sampling.B,\n sampling.C,\n ctx.paint\n );\n } else {\n ctx.canvas.drawImageRectOptions(\n image,\n src,\n dst,\n sampling?.filter ?? FilterMode.Linear,\n sampling?.mipmap ?? MipmapMode.None,\n ctx.paint\n );\n }\n }\n};\n\nexport const drawPoints = (ctx: DrawingContext, props: PointsProps) => {\n \"worklet\";\n const { points, mode } = props;\n ctx.canvas.drawPoints(PointMode[enumKey(mode)], points, ctx.paint);\n};\n\nexport const drawVertices = (ctx: DrawingContext, props: VerticesProps) => {\n \"worklet\";\n const { mode, textures, colors, indices, blendMode } = props;\n const vertexMode = mode ? VertexMode[enumKey(mode)] : VertexMode.Triangles;\n const vertices = ctx.Skia.MakeVertices(\n vertexMode,\n props.vertices,\n textures,\n colors ? colors.map((c) => processColor(ctx.Skia, c)) : undefined,\n indices\n );\n const defaultBlendMode = colors ? BlendMode.DstOver : BlendMode.SrcOver;\n const blend = blendMode ? BlendMode[enumKey(blendMode)] : defaultBlendMode;\n\n ctx.canvas.drawVertices(vertices, blend, ctx.paint);\n};\n\nexport const drawDiffRect = (ctx: DrawingContext, props: DiffRectProps) => {\n \"worklet\";\n const { outer, inner } = props;\n ctx.canvas.drawDRRect(outer, inner, ctx.paint);\n};\n\nexport const drawTextPath = (ctx: DrawingContext, props: TextPathProps) => {\n \"worklet\";\n const path = processPath(ctx.Skia, props.path);\n const { font, initialOffset } = props;\n if (font) {\n let { text } = props;\n const ids = font.getGlyphIDs(text);\n const widths = font.getGlyphWidths(ids);\n const rsx: SkRSXform[] = [];\n const meas = ctx.Skia.ContourMeasureIter(path, false, 1);\n let cont = meas.next();\n let dist = initialOffset;\n for (let i = 0; i < text.length && cont; i++) {\n const width = widths[i];\n dist += width / 2;\n if (dist > cont.length()) {\n // jump to next contour\n cont = meas.next();\n if (!cont) {\n // We have come to the end of the path - terminate the string\n // right here.\n text = text.substring(0, i);\n break;\n }\n dist = width / 2;\n }\n // Gives us the (x, y) coordinates as well as the cos/sin of the tangent\n // line at that position.\n const [p, t] = cont.getPosTan(dist);\n const adjustedX = p.x - (width / 2) * t.x;\n const adjustedY = p.y - (width / 2) * t.y;\n rsx.push(ctx.Skia.RSXform(t.x, t.y, adjustedX, adjustedY));\n dist += width / 2;\n }\n const derived = ctx.Skia.TextBlob.MakeFromRSXform(text, rsx, font);\n ctx.canvas.drawTextBlob(derived, 0, 0, ctx.paint);\n }\n};\n\nexport const drawText = (ctx: DrawingContext, props: TextProps) => {\n \"worklet\";\n const { text, x, y, font } = props;\n if (font != null) {\n ctx.canvas.drawText(text, x, y, ctx.paint, font);\n }\n};\n\nexport const drawPatch = (ctx: DrawingContext, props: PatchProps) => {\n \"worklet\";\n const { texture, blendMode, patch } = props;\n const defaultBlendMode = props.colors ? BlendMode.DstOver : BlendMode.SrcOver;\n const mode = blendMode ? BlendMode[enumKey(blendMode)] : defaultBlendMode;\n // Patch requires a path with the following constraints:\n // M tl\n // C c1 c2 br\n // C c1 c2 bl\n // C c1 c2 tl (the redundant point in the last command is removed)\n\n const points = [\n patch[0].pos,\n patch[0].c2,\n patch[1].c1,\n patch[1].pos,\n patch[1].c2,\n patch[2].c1,\n patch[2].pos,\n patch[2].c2,\n patch[3].c1,\n patch[3].pos,\n patch[3].c2,\n patch[0].c1,\n ];\n const colors = props.colors\n ? props.colors.map((c) => processColor(ctx.Skia, c))\n : undefined;\n ctx.canvas.drawPatch(points, colors, texture, mode, ctx.paint);\n};\n\nexport const drawPath = (ctx: DrawingContext, props: PathProps) => {\n \"worklet\";\n const {\n start: trimStart,\n end: trimEnd,\n fillType,\n stroke,\n ...pathProps\n } = props;\n const start = saturate(trimStart);\n const end = saturate(trimEnd);\n const hasStartOffset = start !== 0;\n const hasEndOffset = end !== 1;\n const hasStrokeOptions = stroke !== undefined;\n const hasFillType = !!fillType;\n const willMutatePath =\n hasStartOffset || hasEndOffset || hasStrokeOptions || hasFillType;\n const pristinePath = processPath(ctx.Skia, pathProps.path);\n const path = willMutatePath ? pristinePath.copy() : pristinePath;\n if (hasFillType) {\n path.setFillType(FillType[enumKey(fillType)]);\n }\n if (hasStrokeOptions) {\n path.stroke(stroke);\n }\n if (hasStartOffset || hasEndOffset) {\n path.trim(start, end, false);\n }\n ctx.canvas.drawPath(path, ctx.paint);\n};\n\nexport const drawRect = (ctx: DrawingContext, props: RectProps) => {\n \"worklet\";\n const derived = processRect(ctx.Skia, props);\n ctx.canvas.drawRect(derived, ctx.paint);\n};\n\nexport const drawRRect = (ctx: DrawingContext, props: RoundedRectProps) => {\n \"worklet\";\n const derived = processRRect(ctx.Skia, props);\n ctx.canvas.drawRRect(derived, ctx.paint);\n};\n\nexport const drawTextBlob = (ctx: DrawingContext, props: TextBlobProps) => {\n \"worklet\";\n const { blob, x, y } = props;\n ctx.canvas.drawTextBlob(blob, x, y, ctx.paint);\n};\n\ninterface ProcessedGlyphs {\n glyphs: number[];\n positions: SkPoint[];\n}\n\nexport const drawGlyphs = (ctx: DrawingContext, props: GlyphsProps) => {\n \"worklet\";\n const derived = props.glyphs.reduce<ProcessedGlyphs>(\n (acc, glyph) => {\n const { id, pos } = glyph;\n acc.glyphs.push(id);\n acc.positions.push(pos);\n return acc;\n },\n { glyphs: [], positions: [] }\n );\n const { glyphs, positions } = derived;\n const { x, y, font } = props;\n if (font) {\n ctx.canvas.drawGlyphs(glyphs, positions, x, y, font, ctx.paint);\n }\n};\n\nexport const drawImageSVG = (ctx: DrawingContext, props: ImageSVGProps) => {\n \"worklet\";\n const { canvas } = ctx;\n const { svg } = props;\n const { x, y, width, height } = props.rect\n ? props.rect\n : { x: props.x, y: props.y, width: props.width, height: props.height };\n if (svg === null) {\n return;\n }\n canvas.save();\n if (x && y) {\n canvas.translate(x, y);\n }\n canvas.drawSvg(svg, width, height);\n canvas.restore();\n};\n\nexport const drawParagraph = (ctx: DrawingContext, props: ParagraphProps) => {\n \"worklet\";\n const { paragraph, x, y, width } = props;\n if (paragraph) {\n paragraph.layout(width);\n paragraph.paint(ctx.canvas, x, y);\n }\n};\n\nexport const drawPicture = (ctx: DrawingContext, props: PictureProps) => {\n \"worklet\";\n const { picture } = props;\n ctx.canvas.drawPicture(picture);\n};\n\nexport const drawAtlas = (ctx: DrawingContext, props: AtlasProps) => {\n \"worklet\";\n const { image, sprites, transforms, colors, blendMode, sampling } = props;\n const blend = blendMode ? BlendMode[enumKey(blendMode)] : undefined;\n if (image) {\n ctx.canvas.drawAtlas(\n image,\n sprites,\n transforms,\n ctx.paint,\n blend,\n colors,\n sampling\n );\n }\n};\n\nexport const drawCircle = (ctx: DrawingContext, props: CircleProps) => {\n \"worklet\";\n const { c } = processCircle(props);\n const { r } = props;\n ctx.canvas.drawCircle(c.x, c.y, r, ctx.paint);\n};\n\nexport const drawFill = (ctx: DrawingContext, _props: DrawingNodeProps) => {\n \"worklet\";\n ctx.canvas.drawPaint(ctx.paint);\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAoCA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAF,OAAA;AAaA,IAAAG,MAAA,GAAAH,OAAA;AAGO,MAAMI,QAAQ,GAAGA,CAACC,GAAmB,EAAEC,KAAgB,KAAK;EACjE,SAAS;;EACT,MAAM;IAAEC,EAAE;IAAEC;EAAG,CAAC,GAAGF,KAAK;EACxBD,GAAG,CAACI,MAAM,CAACL,QAAQ,CAACG,EAAE,CAACG,CAAC,EAAEH,EAAE,CAACI,CAAC,EAAEH,EAAE,CAACE,CAAC,EAAEF,EAAE,CAACG,CAAC,EAAEN,GAAG,CAACO,KAAK,CAAC;AACxD,CAAC;AAACC,OAAA,CAAAT,QAAA,GAAAA,QAAA;AAEK,MAAMU,QAAQ,GAAGA,CAACT,GAAmB,EAAEC,KAAgB,KAAK;EACjE,SAAS;;EACT,MAAMS,IAAI,GAAG,IAAAC,kBAAW,EAACX,GAAG,CAACY,IAAI,EAAEX,KAAK,CAAC;EACzCD,GAAG,CAACI,MAAM,CAACK,QAAQ,CAACC,IAAI,EAAEV,GAAG,CAACO,KAAK,CAAC;AACtC,CAAC;AAACC,OAAA,CAAAC,QAAA,GAAAA,QAAA;AAEK,MAAMI,OAAO,GAAGA,CACrBb,GAAmB,EACnBC,KAAe,EAEfa,QAAqB,KAClB;EACH,SAAS;;EACT,MAAM;IAAEP,KAAK;IAAEK,IAAI;IAAER;EAAO,CAAC,GAAGJ,GAAG;EACnC,MAAM;IAAEe,GAAG,EAAEC;EAAW,CAAC,GAAGf,KAAK;EACjC,MAAMgB,OAAO,GAAGV,KAAK,CAACW,SAAS,CAAC,CAAC;EACjC,MAAMH,GAAG,GAAG,IAAAI,cAAO,EAACH,UAAU,CAAC,GAAGA,UAAU,GAAGJ,IAAI,CAACQ,OAAO,CAACJ,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;EAC7E,MAAMK,OAAO,GAAGP,QAAQ,CACrBQ,GAAG,CAAEC,IAAI,IAAK;IACb,IAAIA,IAAI,CAACC,IAAI,KAAKC,eAAQ,CAACC,SAAS,EAAE;MACpC,OAAO,IAAAC,kBAAW,EAACJ,IAAI,CAACtB,KAAK,CAAC;IAChC;IACA,OAAO,IAAI;EACb,CAAC,CAAC,CACD2B,MAAM,CAAEC,CAAC,IAA0BA,CAAC,KAAK,IAAI,CAAC;EACjDR,OAAO,CACJO,MAAM,CAAEE,MAAM,IAAK,CAACA,MAAM,CAACC,KAAK,CAAC,CACjCT,GAAG,CAAEQ,MAAM,IAAK;IACf,MAAM;MAAEE,KAAK,GAAG,OAAO;MAAEC,IAAI;MAAEC,MAAM,GAAG,CAAC;MAAEC,EAAE,GAAG,CAAC;MAAEC,EAAE,GAAG;IAAE,CAAC,GAAGN,MAAM;IACpE,MAAMO,MAAM,GAAGzB,IAAI,CAAC0B,KAAK,CAAC,CAAC;IAC3BD,MAAM,CAACE,QAAQ,CAAC,IAAAC,mBAAY,EAAC5B,IAAI,EAAEoB,KAAK,CAAC,CAAC;IAC1CK,MAAM,CAACI,SAAS,CAAClC,KAAK,CAACW,SAAS,CAAC,CAAC,GAAGD,OAAO,CAAC;IAC7CoB,MAAM,CAACK,aAAa,CAClB9B,IAAI,CAAC+B,UAAU,CAACC,QAAQ,CAACC,gBAAS,CAACC,MAAM,EAAEb,IAAI,EAAE,IAAI,CACvD,CAAC;IACD7B,MAAM,CAAC2C,SAAS,CAAC,IAAAC,cAAO,EAACpC,IAAI,EAAEG,GAAG,EAAEmB,MAAM,EAAEA,MAAM,EAAEC,EAAE,EAAEC,EAAE,CAAC,EAAEC,MAAM,CAAC;EACtE,CAAC,CAAC;EAEJjC,MAAM,CAAC2C,SAAS,CAAChC,GAAG,EAAER,KAAK,CAAC;EAE5Bc,OAAO,CACJO,MAAM,CAAEE,MAAM,IAAKA,MAAM,CAACC,KAAK,CAAC,CAChCT,GAAG,CAAEQ,MAAM,IAAK;IACf,MAAM;MAAEE,KAAK,GAAG,OAAO;MAAEC,IAAI;MAAEC,MAAM,GAAG,CAAC;MAAEC,EAAE,GAAG,CAAC;MAAEC,EAAE,GAAG;IAAE,CAAC,GAAGN,MAAM;IACpE,MAAMmB,KAAK,GAAGrC,IAAI,CAACsC,KAAK,CAAC,EAAE,GAAGC,IAAI,CAACC,GAAG,CAACjB,EAAE,CAAC,EAAE,EAAE,GAAGgB,IAAI,CAACC,GAAG,CAAChB,EAAE,CAAC,CAAC;IAC9DhC,MAAM,CAACiD,IAAI,CAAC,CAAC;IACbjD,MAAM,CAACkD,SAAS,CAACvC,GAAG,EAAEwC,aAAM,CAACC,SAAS,EAAE,KAAK,CAAC;IAC9C,MAAMnB,MAAM,GAAGzB,IAAI,CAAC0B,KAAK,CAAC,CAAC;IAC3BD,MAAM,CAACE,QAAQ,CAAC,IAAAC,mBAAY,EAAC5B,IAAI,EAAEoB,KAAK,CAAC,CAAC;IAC1CK,MAAM,CAACI,SAAS,CAAClC,KAAK,CAACW,SAAS,CAAC,CAAC,GAAGD,OAAO,CAAC;IAE7CoB,MAAM,CAACK,aAAa,CAClB9B,IAAI,CAAC+B,UAAU,CAACC,QAAQ,CAACC,gBAAS,CAACC,MAAM,EAAEb,IAAI,EAAE,IAAI,CACvD,CAAC;IACD,MAAMF,KAAK,GAAG,IAAA0B,cAAO,EAAC7C,IAAI,EAAEG,GAAG,EAAEmB,MAAM,EAAEA,MAAM,EAAEC,EAAE,EAAEC,EAAE,CAAC;IACxD,MAAMsB,KAAK,GAAG,IAAAV,cAAO,EAACpC,IAAI,EAAEG,GAAG,EAAEkC,KAAK,CAAC5C,CAAC,EAAE4C,KAAK,CAAC3C,CAAC,CAAC;IAClDF,MAAM,CAACuD,UAAU,CAACD,KAAK,EAAE3B,KAAK,EAAEM,MAAM,CAAC;IACvCjC,MAAM,CAACwD,OAAO,CAAC,CAAC;EAClB,CAAC,CAAC;AACN,CAAC;AAACpD,OAAA,CAAAK,OAAA,GAAAA,OAAA;AAEK,MAAMgD,SAAS,GAAGA,CAAC7D,GAAmB,EAAEC,KAAiB,KAAK;EACnE,SAAS;;EACT,MAAM;IAAE6D,KAAK;IAAEC;EAAS,CAAC,GAAG9D,KAAK;EACjC,IAAI6D,KAAK,EAAE;IAAA,IAAAE,UAAA;IACT,MAAMC,GAAG,IAAAD,UAAA,GAAG/D,KAAK,CAACgE,GAAG,cAAAD,UAAA,cAAAA,UAAA,GAAI,SAAS;IAClC,MAAMtD,IAAI,GAAG,IAAAC,kBAAW,EAACX,GAAG,CAACY,IAAI,EAAEX,KAAK,CAAC;IACzC,MAAM;MAAEiE,GAAG;MAAEC;IAAI,CAAC,GAAG,IAAAC,eAAQ,EAC3BH,GAAG,EACH;MACE5D,CAAC,EAAE,CAAC;MACJC,CAAC,EAAE,CAAC;MACJ+D,KAAK,EAAEP,KAAK,CAACO,KAAK,CAAC,CAAC;MACpBC,MAAM,EAAER,KAAK,CAACQ,MAAM,CAAC;IACvB,CAAC,EACD5D,IACF,CAAC;IACD,IAAIqD,QAAQ,IAAI,IAAAQ,sBAAe,EAACR,QAAQ,CAAC,EAAE;MACzC/D,GAAG,CAACI,MAAM,CAACoE,kBAAkB,CAC3BV,KAAK,EACLI,GAAG,EACHC,GAAG,EACHJ,QAAQ,CAACU,CAAC,EACVV,QAAQ,CAACW,CAAC,EACV1E,GAAG,CAACO,KACN,CAAC;IACH,CAAC,MAAM;MAAA,IAAAoE,gBAAA,EAAAC,gBAAA;MACL5E,GAAG,CAACI,MAAM,CAACyE,oBAAoB,CAC7Bf,KAAK,EACLI,GAAG,EACHC,GAAG,GAAAQ,gBAAA,GACHZ,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEnC,MAAM,cAAA+C,gBAAA,cAAAA,gBAAA,GAAIG,iBAAU,CAACC,MAAM,GAAAH,gBAAA,GACrCb,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEiB,MAAM,cAAAJ,gBAAA,cAAAA,gBAAA,GAAIK,iBAAU,CAACC,IAAI,EACnClF,GAAG,CAACO,KACN,CAAC;IACH;EACF;AACF,CAAC;AAACC,OAAA,CAAAqD,SAAA,GAAAA,SAAA;AAEK,MAAMsB,UAAU,GAAGA,CAACnF,GAAmB,EAAEC,KAAkB,KAAK;EACrE,SAAS;;EACT,MAAM;IAAEmF,MAAM;IAAEC;EAAK,CAAC,GAAGpF,KAAK;EAC9BD,GAAG,CAACI,MAAM,CAAC+E,UAAU,CAACG,gBAAS,CAAC,IAAAC,cAAO,EAACF,IAAI,CAAC,CAAC,EAAED,MAAM,EAAEpF,GAAG,CAACO,KAAK,CAAC;AACpE,CAAC;AAACC,OAAA,CAAA2E,UAAA,GAAAA,UAAA;AAEK,MAAMK,YAAY,GAAGA,CAACxF,GAAmB,EAAEC,KAAoB,KAAK;EACzE,SAAS;;EACT,MAAM;IAAEoF,IAAI;IAAEI,QAAQ;IAAEC,MAAM;IAAEC,OAAO;IAAEC;EAAU,CAAC,GAAG3F,KAAK;EAC5D,MAAM4F,UAAU,GAAGR,IAAI,GAAGS,iBAAU,CAAC,IAAAP,cAAO,EAACF,IAAI,CAAC,CAAC,GAAGS,iBAAU,CAACC,SAAS;EAC1E,MAAMC,QAAQ,GAAGhG,GAAG,CAACY,IAAI,CAACqF,YAAY,CACpCJ,UAAU,EACV5F,KAAK,CAAC+F,QAAQ,EACdP,QAAQ,EACRC,MAAM,GAAGA,MAAM,CAACpE,GAAG,CAAE4E,CAAC,IAAK,IAAA1D,mBAAY,EAACxC,GAAG,CAACY,IAAI,EAAEsF,CAAC,CAAC,CAAC,GAAGC,SAAS,EACjER,OACF,CAAC;EACD,MAAMS,gBAAgB,GAAGV,MAAM,GAAGW,gBAAS,CAACC,OAAO,GAAGD,gBAAS,CAACE,OAAO;EACvE,MAAMC,KAAK,GAAGZ,SAAS,GAAGS,gBAAS,CAAC,IAAAd,cAAO,EAACK,SAAS,CAAC,CAAC,GAAGQ,gBAAgB;EAE1EpG,GAAG,CAACI,MAAM,CAACoF,YAAY,CAACQ,QAAQ,EAAEQ,KAAK,EAAExG,GAAG,CAACO,KAAK,CAAC;AACrD,CAAC;AAACC,OAAA,CAAAgF,YAAA,GAAAA,YAAA;AAEK,MAAMiB,YAAY,GAAGA,CAACzG,GAAmB,EAAEC,KAAoB,KAAK;EACzE,SAAS;;EACT,MAAM;IAAEyD,KAAK;IAAE3B;EAAM,CAAC,GAAG9B,KAAK;EAC9BD,GAAG,CAACI,MAAM,CAACuD,UAAU,CAACD,KAAK,EAAE3B,KAAK,EAAE/B,GAAG,CAACO,KAAK,CAAC;AAChD,CAAC;AAACC,OAAA,CAAAiG,YAAA,GAAAA,YAAA;AAEK,MAAMC,YAAY,GAAGA,CAAC1G,GAAmB,EAAEC,KAAoB,KAAK;EACzE,SAAS;;EACT,MAAM0G,IAAI,GAAG,IAAAC,kBAAW,EAAC5G,GAAG,CAACY,IAAI,EAAEX,KAAK,CAAC0G,IAAI,CAAC;EAC9C,MAAM;IAAEE,IAAI;IAAEC;EAAc,CAAC,GAAG7G,KAAK;EACrC,IAAI4G,IAAI,EAAE;IACR,IAAI;MAAEE;IAAK,CAAC,GAAG9G,KAAK;IACpB,MAAM+G,GAAG,GAAGH,IAAI,CAACI,WAAW,CAACF,IAAI,CAAC;IAClC,MAAMG,MAAM,GAAGL,IAAI,CAACM,cAAc,CAACH,GAAG,CAAC;IACvC,MAAMI,GAAgB,GAAG,EAAE;IAC3B,MAAMC,IAAI,GAAGrH,GAAG,CAACY,IAAI,CAAC0G,kBAAkB,CAACX,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,IAAIY,IAAI,GAAGF,IAAI,CAACG,IAAI,CAAC,CAAC;IACtB,IAAIC,IAAI,GAAGX,aAAa;IACxB,KAAK,IAAIY,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGX,IAAI,CAACY,MAAM,IAAIJ,IAAI,EAAEG,CAAC,EAAE,EAAE;MAC5C,MAAMrD,KAAK,GAAG6C,MAAM,CAACQ,CAAC,CAAC;MACvBD,IAAI,IAAIpD,KAAK,GAAG,CAAC;MACjB,IAAIoD,IAAI,GAAGF,IAAI,CAACI,MAAM,CAAC,CAAC,EAAE;QACxB;QACAJ,IAAI,GAAGF,IAAI,CAACG,IAAI,CAAC,CAAC;QAClB,IAAI,CAACD,IAAI,EAAE;UACT;UACA;UACAR,IAAI,GAAGA,IAAI,CAACa,SAAS,CAAC,CAAC,EAAEF,CAAC,CAAC;UAC3B;QACF;QACAD,IAAI,GAAGpD,KAAK,GAAG,CAAC;MAClB;MACA;MACA;MACA,MAAM,CAACwD,CAAC,EAAEC,CAAC,CAAC,GAAGP,IAAI,CAACQ,SAAS,CAACN,IAAI,CAAC;MACnC,MAAMO,SAAS,GAAGH,CAAC,CAACxH,CAAC,GAAIgE,KAAK,GAAG,CAAC,GAAIyD,CAAC,CAACzH,CAAC;MACzC,MAAM4H,SAAS,GAAGJ,CAAC,CAACvH,CAAC,GAAI+D,KAAK,GAAG,CAAC,GAAIyD,CAAC,CAACxH,CAAC;MACzC8G,GAAG,CAACc,IAAI,CAAClI,GAAG,CAACY,IAAI,CAACuH,OAAO,CAACL,CAAC,CAACzH,CAAC,EAAEyH,CAAC,CAACxH,CAAC,EAAE0H,SAAS,EAAEC,SAAS,CAAC,CAAC;MAC1DR,IAAI,IAAIpD,KAAK,GAAG,CAAC;IACnB;IACA,MAAM+D,OAAO,GAAGpI,GAAG,CAACY,IAAI,CAACyH,QAAQ,CAACC,eAAe,CAACvB,IAAI,EAAEK,GAAG,EAAEP,IAAI,CAAC;IAClE7G,GAAG,CAACI,MAAM,CAACmI,YAAY,CAACH,OAAO,EAAE,CAAC,EAAE,CAAC,EAAEpI,GAAG,CAACO,KAAK,CAAC;EACnD;AACF,CAAC;AAACC,OAAA,CAAAkG,YAAA,GAAAA,YAAA;AAEK,MAAM8B,QAAQ,GAAGA,CAACxI,GAAmB,EAAEC,KAAgB,KAAK;EACjE,SAAS;;EACT,MAAM;IAAE8G,IAAI;IAAE1G,CAAC;IAAEC,CAAC;IAAEuG;EAAK,CAAC,GAAG5G,KAAK;EAClC,IAAI4G,IAAI,IAAI,IAAI,EAAE;IAChB7G,GAAG,CAACI,MAAM,CAACoI,QAAQ,CAACzB,IAAI,EAAE1G,CAAC,EAAEC,CAAC,EAAEN,GAAG,CAACO,KAAK,EAAEsG,IAAI,CAAC;EAClD;AACF,CAAC;AAACrG,OAAA,CAAAgI,QAAA,GAAAA,QAAA;AAEK,MAAMC,SAAS,GAAGA,CAACzI,GAAmB,EAAEC,KAAiB,KAAK;EACnE,SAAS;;EACT,MAAM;IAAEyI,OAAO;IAAE9C,SAAS;IAAE+C;EAAM,CAAC,GAAG1I,KAAK;EAC3C,MAAMmG,gBAAgB,GAAGnG,KAAK,CAACyF,MAAM,GAAGW,gBAAS,CAACC,OAAO,GAAGD,gBAAS,CAACE,OAAO;EAC7E,MAAMlB,IAAI,GAAGO,SAAS,GAAGS,gBAAS,CAAC,IAAAd,cAAO,EAACK,SAAS,CAAC,CAAC,GAAGQ,gBAAgB;EACzE;EACA;EACA;EACA;EACA;;EAEA,MAAMhB,MAAM,GAAG,CACbuD,KAAK,CAAC,CAAC,CAAC,CAACC,GAAG,EACZD,KAAK,CAAC,CAAC,CAAC,CAACE,EAAE,EACXF,KAAK,CAAC,CAAC,CAAC,CAACG,EAAE,EACXH,KAAK,CAAC,CAAC,CAAC,CAACC,GAAG,EACZD,KAAK,CAAC,CAAC,CAAC,CAACE,EAAE,EACXF,KAAK,CAAC,CAAC,CAAC,CAACG,EAAE,EACXH,KAAK,CAAC,CAAC,CAAC,CAACC,GAAG,EACZD,KAAK,CAAC,CAAC,CAAC,CAACE,EAAE,EACXF,KAAK,CAAC,CAAC,CAAC,CAACG,EAAE,EACXH,KAAK,CAAC,CAAC,CAAC,CAACC,GAAG,EACZD,KAAK,CAAC,CAAC,CAAC,CAACE,EAAE,EACXF,KAAK,CAAC,CAAC,CAAC,CAACG,EAAE,CACZ;EACD,MAAMpD,MAAM,GAAGzF,KAAK,CAACyF,MAAM,GACvBzF,KAAK,CAACyF,MAAM,CAACpE,GAAG,CAAE4E,CAAC,IAAK,IAAA1D,mBAAY,EAACxC,GAAG,CAACY,IAAI,EAAEsF,CAAC,CAAC,CAAC,GAClDC,SAAS;EACbnG,GAAG,CAACI,MAAM,CAACqI,SAAS,CAACrD,MAAM,EAAEM,MAAM,EAAEgD,OAAO,EAAErD,IAAI,EAAErF,GAAG,CAACO,KAAK,CAAC;AAChE,CAAC;AAACC,OAAA,CAAAiI,SAAA,GAAAA,SAAA;AAEK,MAAMM,QAAQ,GAAGA,CAAC/I,GAAmB,EAAEC,KAAgB,KAAK;EACjE,SAAS;;EACT,MAAM;IACJ+I,KAAK,EAAEC,SAAS;IAChBC,GAAG,EAAEC,OAAO;IACZC,QAAQ;IACRC,MAAM;IACN,GAAGC;EACL,CAAC,GAAGrJ,KAAK;EACT,MAAM+I,KAAK,GAAG,IAAAO,oBAAQ,EAACN,SAAS,CAAC;EACjC,MAAMC,GAAG,GAAG,IAAAK,oBAAQ,EAACJ,OAAO,CAAC;EAC7B,MAAMK,cAAc,GAAGR,KAAK,KAAK,CAAC;EAClC,MAAMS,YAAY,GAAGP,GAAG,KAAK,CAAC;EAC9B,MAAMQ,gBAAgB,GAAGL,MAAM,KAAKlD,SAAS;EAC7C,MAAMwD,WAAW,GAAG,CAAC,CAACP,QAAQ;EAC9B,MAAMQ,cAAc,GAClBJ,cAAc,IAAIC,YAAY,IAAIC,gBAAgB,IAAIC,WAAW;EACnE,MAAME,YAAY,GAAG,IAAAjD,kBAAW,EAAC5G,GAAG,CAACY,IAAI,EAAE0I,SAAS,CAAC3C,IAAI,CAAC;EAC1D,MAAMA,IAAI,GAAGiD,cAAc,GAAGC,YAAY,CAACC,IAAI,CAAC,CAAC,GAAGD,YAAY;EAChE,IAAIF,WAAW,EAAE;IACfhD,IAAI,CAACoD,WAAW,CAACC,eAAQ,CAAC,IAAAzE,cAAO,EAAC6D,QAAQ,CAAC,CAAC,CAAC;EAC/C;EACA,IAAIM,gBAAgB,EAAE;IACpB/C,IAAI,CAAC0C,MAAM,CAACA,MAAM,CAAC;EACrB;EACA,IAAIG,cAAc,IAAIC,YAAY,EAAE;IAClC9C,IAAI,CAACsD,IAAI,CAACjB,KAAK,EAAEE,GAAG,EAAE,KAAK,CAAC;EAC9B;EACAlJ,GAAG,CAACI,MAAM,CAAC2I,QAAQ,CAACpC,IAAI,EAAE3G,GAAG,CAACO,KAAK,CAAC;AACtC,CAAC;AAACC,OAAA,CAAAuI,QAAA,GAAAA,QAAA;AAEK,MAAMmB,QAAQ,GAAGA,CAAClK,GAAmB,EAAEC,KAAgB,KAAK;EACjE,SAAS;;EACT,MAAMmI,OAAO,GAAG,IAAAzH,kBAAW,EAACX,GAAG,CAACY,IAAI,EAAEX,KAAK,CAAC;EAC5CD,GAAG,CAACI,MAAM,CAAC8J,QAAQ,CAAC9B,OAAO,EAAEpI,GAAG,CAACO,KAAK,CAAC;AACzC,CAAC;AAACC,OAAA,CAAA0J,QAAA,GAAAA,QAAA;AAEK,MAAMnH,SAAS,GAAGA,CAAC/C,GAAmB,EAAEC,KAAuB,KAAK;EACzE,SAAS;;EACT,MAAMmI,OAAO,GAAG,IAAA+B,mBAAY,EAACnK,GAAG,CAACY,IAAI,EAAEX,KAAK,CAAC;EAC7CD,GAAG,CAACI,MAAM,CAAC2C,SAAS,CAACqF,OAAO,EAAEpI,GAAG,CAACO,KAAK,CAAC;AAC1C,CAAC;AAACC,OAAA,CAAAuC,SAAA,GAAAA,SAAA;AAEK,MAAMwF,YAAY,GAAGA,CAACvI,GAAmB,EAAEC,KAAoB,KAAK;EACzE,SAAS;;EACT,MAAM;IAAEmK,IAAI;IAAE/J,CAAC;IAAEC;EAAE,CAAC,GAAGL,KAAK;EAC5BD,GAAG,CAACI,MAAM,CAACmI,YAAY,CAAC6B,IAAI,EAAE/J,CAAC,EAAEC,CAAC,EAAEN,GAAG,CAACO,KAAK,CAAC;AAChD,CAAC;AAACC,OAAA,CAAA+H,YAAA,GAAAA,YAAA;AAOK,MAAM8B,UAAU,GAAGA,CAACrK,GAAmB,EAAEC,KAAkB,KAAK;EACrE,SAAS;;EACT,MAAMmI,OAAO,GAAGnI,KAAK,CAACqK,MAAM,CAACC,MAAM,CACjC,CAACC,GAAG,EAAEC,KAAK,KAAK;IACd,MAAM;MAAEC,EAAE;MAAE9B;IAAI,CAAC,GAAG6B,KAAK;IACzBD,GAAG,CAACF,MAAM,CAACpC,IAAI,CAACwC,EAAE,CAAC;IACnBF,GAAG,CAACG,SAAS,CAACzC,IAAI,CAACU,GAAG,CAAC;IACvB,OAAO4B,GAAG;EACZ,CAAC,EACD;IAAEF,MAAM,EAAE,EAAE;IAAEK,SAAS,EAAE;EAAG,CAC9B,CAAC;EACD,MAAM;IAAEL,MAAM;IAAEK;EAAU,CAAC,GAAGvC,OAAO;EACrC,MAAM;IAAE/H,CAAC;IAAEC,CAAC;IAAEuG;EAAK,CAAC,GAAG5G,KAAK;EAC5B,IAAI4G,IAAI,EAAE;IACR7G,GAAG,CAACI,MAAM,CAACiK,UAAU,CAACC,MAAM,EAAEK,SAAS,EAAEtK,CAAC,EAAEC,CAAC,EAAEuG,IAAI,EAAE7G,GAAG,CAACO,KAAK,CAAC;EACjE;AACF,CAAC;AAACC,OAAA,CAAA6J,UAAA,GAAAA,UAAA;AAEK,MAAMO,YAAY,GAAGA,CAAC5K,GAAmB,EAAEC,KAAoB,KAAK;EACzE,SAAS;;EACT,MAAM;IAAEG;EAAO,CAAC,GAAGJ,GAAG;EACtB,MAAM;IAAE6K;EAAI,CAAC,GAAG5K,KAAK;EACrB,MAAM;IAAEI,CAAC;IAAEC,CAAC;IAAE+D,KAAK;IAAEC;EAAO,CAAC,GAAGrE,KAAK,CAACS,IAAI,GACtCT,KAAK,CAACS,IAAI,GACV;IAAEL,CAAC,EAAEJ,KAAK,CAACI,CAAC;IAAEC,CAAC,EAAEL,KAAK,CAACK,CAAC;IAAE+D,KAAK,EAAEpE,KAAK,CAACoE,KAAK;IAAEC,MAAM,EAAErE,KAAK,CAACqE;EAAO,CAAC;EACxE,IAAIuG,GAAG,KAAK,IAAI,EAAE;IAChB;EACF;EACAzK,MAAM,CAACiD,IAAI,CAAC,CAAC;EACb,IAAIhD,CAAC,IAAIC,CAAC,EAAE;IACVF,MAAM,CAAC0K,SAAS,CAACzK,CAAC,EAAEC,CAAC,CAAC;EACxB;EACAF,MAAM,CAAC2K,OAAO,CAACF,GAAG,EAAExG,KAAK,EAAEC,MAAM,CAAC;EAClClE,MAAM,CAACwD,OAAO,CAAC,CAAC;AAClB,CAAC;AAACpD,OAAA,CAAAoK,YAAA,GAAAA,YAAA;AAEK,MAAMI,aAAa,GAAGA,CAAChL,GAAmB,EAAEC,KAAqB,KAAK;EAC3E,SAAS;;EACT,MAAM;IAAEgL,SAAS;IAAE5K,CAAC;IAAEC,CAAC;IAAE+D;EAAM,CAAC,GAAGpE,KAAK;EACxC,IAAIgL,SAAS,EAAE;IACbA,SAAS,CAACC,MAAM,CAAC7G,KAAK,CAAC;IACvB4G,SAAS,CAAC1K,KAAK,CAACP,GAAG,CAACI,MAAM,EAAEC,CAAC,EAAEC,CAAC,CAAC;EACnC;AACF,CAAC;AAACE,OAAA,CAAAwK,aAAA,GAAAA,aAAA;AAEK,MAAMG,WAAW,GAAGA,CAACnL,GAAmB,EAAEC,KAAmB,KAAK;EACvE,SAAS;;EACT,MAAM;IAAEmL;EAAQ,CAAC,GAAGnL,KAAK;EACzBD,GAAG,CAACI,MAAM,CAAC+K,WAAW,CAACC,OAAO,CAAC;AACjC,CAAC;AAAC5K,OAAA,CAAA2K,WAAA,GAAAA,WAAA;AAEK,MAAME,SAAS,GAAGA,CAACrL,GAAmB,EAAEC,KAAiB,KAAK;EACnE,SAAS;;EACT,MAAM;IAAE6D,KAAK;IAAEwH,OAAO;IAAEC,UAAU;IAAE7F,MAAM;IAAEE,SAAS;IAAE7B;EAAS,CAAC,GAAG9D,KAAK;EACzE,MAAMuG,KAAK,GAAGZ,SAAS,GAAGS,gBAAS,CAAC,IAAAd,cAAO,EAACK,SAAS,CAAC,CAAC,GAAGO,SAAS;EACnE,IAAIrC,KAAK,EAAE;IACT9D,GAAG,CAACI,MAAM,CAACiL,SAAS,CAClBvH,KAAK,EACLwH,OAAO,EACPC,UAAU,EACVvL,GAAG,CAACO,KAAK,EACTiG,KAAK,EACLd,MAAM,EACN3B,QACF,CAAC;EACH;AACF,CAAC;AAACvD,OAAA,CAAA6K,SAAA,GAAAA,SAAA;AAEK,MAAMG,UAAU,GAAGA,CAACxL,GAAmB,EAAEC,KAAkB,KAAK;EACrE,SAAS;;EACT,MAAM;IAAEiG;EAAE,CAAC,GAAG,IAAAuF,oBAAa,EAACxL,KAAK,CAAC;EAClC,MAAM;IAAEyL;EAAE,CAAC,GAAGzL,KAAK;EACnBD,GAAG,CAACI,MAAM,CAACoL,UAAU,CAACtF,CAAC,CAAC7F,CAAC,EAAE6F,CAAC,CAAC5F,CAAC,EAAEoL,CAAC,EAAE1L,GAAG,CAACO,KAAK,CAAC;AAC/C,CAAC;AAACC,OAAA,CAAAgL,UAAA,GAAAA,UAAA;AAEK,MAAMG,QAAQ,GAAGA,CAAC3L,GAAmB,EAAE4L,MAAwB,KAAK;EACzE,SAAS;;EACT5L,GAAG,CAACI,MAAM,CAACyL,SAAS,CAAC7L,GAAG,CAACO,KAAK,CAAC;AACjC,CAAC;AAACC,OAAA,CAAAmL,QAAA,GAAAA,QAAA","ignoreList":[]}
@@ -76,7 +76,7 @@ const declareDropShadowImageFilter = (ctx, props) => {
76
76
  color: cl,
77
77
  inner
78
78
  } = props;
79
- const color = ctx.Skia.Color(cl);
79
+ const color = (0, _nodes.processColor)(ctx.Skia, cl);
80
80
  let factory;
81
81
  if (inner) {
82
82
  factory = MakeInnerShadow.bind(null, ctx.Skia, shadowOnly);
@@ -1 +1 @@
1
- {"version":3,"names":["_nodes","require","_types","_types2","_utils","_Core","MorphologyOperator","exports","Black","Float32Array","of","MakeInnerShadow","Skia","shadowOnly","dx","dy","sigmaX","sigmaY","color","input","sourceGraphic","ImageFilter","MakeColorFilter","ColorFilter","MakeBlend","BlendMode","Dst","sourceAlpha","SrcIn","f1","SrcOut","f2","MakeOffset","f3","MakeBlur","TileMode","Decal","f4","MakeCompose","SrcOver","declareBlurImageFilter","ctx","props","mode","blur","sigma","processRadius","imgf","x","y","enumKey","imageFilters","push","declareMorphologyImageFilter","operator","r","radius","Erode","MakeErode","MakeDilate","declareOffsetImageFilter","declareDropShadowImageFilter","cl","inner","Color","factory","bind","MakeDropShadowOnly","MakeDropShadow","declareBlendImageFilter","blend","splice","length","composer","composeDeclarations","declareDisplacementMapImageFilter","channelX","channelY","scale","shader","shaders","pop","Error","map","MakeShader","MakeDisplacementMap","ColorChannel","declareRuntimeShaderImageFilter","source","uniforms","rtb","RuntimeShaderBuilder","processUniforms","MakeRuntimeShader","composeImageFilters","outer","setBlurMaskFilter","style","respectCTM","mf","MaskFilter","BlurStyle","paint","setMaskFilter","isPushImageFilter","command","type","CommandType","PushImageFilter","isImageFilter","imageFilterType","pushImageFilter","NodeType","BlurImageFilter","MorphologyImageFilter","BlendImageFilter","DisplacementMapImageFilter","DropShadowImageFilter","OffsetImageFilter","RuntimeShaderImageFilter"],"sources":["ImageFilters.ts"],"sourcesContent":["import { enumKey, processRadius } from \"../../../dom/nodes\";\nimport type {\n BlendImageFilterProps,\n BlurImageFilterProps,\n BlurMaskFilterProps,\n DisplacementMapImageFilterProps,\n DropShadowImageFilterProps,\n MorphologyImageFilterProps,\n OffsetImageFilterProps,\n RuntimeShaderImageFilterProps,\n} from \"../../../dom/types\";\nimport { NodeType } from \"../../../dom/types\";\nimport type { SkColor, SkImageFilter, Skia } from \"../../../skia/types\";\nimport {\n BlendMode,\n BlurStyle,\n ColorChannel,\n processUniforms,\n TileMode,\n} from \"../../../skia/types\";\nimport { composeDeclarations } from \"../../utils\";\nimport type { Command } from \"../Core\";\nimport { CommandType } from \"../Core\";\nimport type { DrawingContext } from \"../DrawingContext\";\n\nexport enum MorphologyOperator {\n Erode,\n Dilate,\n}\n\nconst Black = Float32Array.of(0, 0, 0, 1);\n\nconst MakeInnerShadow = (\n Skia: Skia,\n shadowOnly: boolean | undefined,\n dx: number,\n dy: number,\n sigmaX: number,\n sigmaY: number,\n color: SkColor,\n input: SkImageFilter | null\n) => {\n \"worklet\";\n const sourceGraphic = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.Dst),\n null\n );\n const sourceAlpha = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.SrcIn),\n null\n );\n const f1 = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(color, BlendMode.SrcOut),\n null\n );\n const f2 = Skia.ImageFilter.MakeOffset(dx, dy, f1);\n const f3 = Skia.ImageFilter.MakeBlur(sigmaX, sigmaY, TileMode.Decal, f2);\n const f4 = Skia.ImageFilter.MakeBlend(BlendMode.SrcIn, sourceAlpha, f3);\n if (shadowOnly) {\n return f4;\n }\n return Skia.ImageFilter.MakeCompose(\n input,\n Skia.ImageFilter.MakeBlend(BlendMode.SrcOver, sourceGraphic, f4)\n );\n};\n\nconst declareBlurImageFilter = (\n ctx: DrawingContext,\n props: BlurImageFilterProps\n) => {\n \"worklet\";\n const { mode, blur } = props;\n const sigma = processRadius(ctx.Skia, blur);\n const imgf = ctx.Skia.ImageFilter.MakeBlur(\n sigma.x,\n sigma.y,\n TileMode[enumKey(mode)],\n null\n );\n ctx.imageFilters.push(imgf);\n};\n\nconst declareMorphologyImageFilter = (\n ctx: DrawingContext,\n props: MorphologyImageFilterProps\n) => {\n \"worklet\";\n const { operator } = props;\n const r = processRadius(ctx.Skia, props.radius);\n let imgf;\n if (MorphologyOperator[enumKey(operator)] === MorphologyOperator.Erode) {\n imgf = ctx.Skia.ImageFilter.MakeErode(r.x, r.y, null);\n } else {\n imgf = ctx.Skia.ImageFilter.MakeDilate(r.x, r.y, null);\n }\n ctx.imageFilters.push(imgf);\n};\n\nconst declareOffsetImageFilter = (\n ctx: DrawingContext,\n props: OffsetImageFilterProps\n) => {\n \"worklet\";\n const { x, y } = props;\n const imgf = ctx.Skia.ImageFilter.MakeOffset(x, y, null);\n ctx.imageFilters.push(imgf);\n};\n\nconst declareDropShadowImageFilter = (\n ctx: DrawingContext,\n props: DropShadowImageFilterProps\n) => {\n \"worklet\";\n const { dx, dy, blur, shadowOnly, color: cl, inner } = props;\n const color = ctx.Skia.Color(cl);\n let factory;\n if (inner) {\n factory = MakeInnerShadow.bind(null, ctx.Skia, shadowOnly);\n } else {\n factory = shadowOnly\n ? ctx.Skia.ImageFilter.MakeDropShadowOnly.bind(ctx.Skia.ImageFilter)\n : ctx.Skia.ImageFilter.MakeDropShadow.bind(ctx.Skia.ImageFilter);\n }\n const imgf = factory(dx, dy, blur, blur, color, null);\n ctx.imageFilters.push(imgf);\n};\n\nconst declareBlendImageFilter = (\n ctx: DrawingContext,\n props: BlendImageFilterProps\n) => {\n \"worklet\";\n const blend = BlendMode[enumKey(props.mode)];\n // Blend ImageFilters\n const imageFilters = ctx.imageFilters.splice(0, ctx.imageFilters.length);\n const composer = ctx.Skia.ImageFilter.MakeBlend.bind(\n ctx.Skia.ImageFilter,\n blend\n );\n ctx.imageFilters.push(composeDeclarations(imageFilters, composer));\n};\n\nconst declareDisplacementMapImageFilter = (\n ctx: DrawingContext,\n props: DisplacementMapImageFilterProps\n) => {\n \"worklet\";\n const { channelX, channelY, scale } = props;\n const shader = ctx.shaders.pop();\n if (!shader) {\n throw new Error(\"DisplacementMap expects a shader as child\");\n }\n const map = ctx.Skia.ImageFilter.MakeShader(shader, null);\n const imgf = ctx.Skia.ImageFilter.MakeDisplacementMap(\n ColorChannel[enumKey(channelX)],\n ColorChannel[enumKey(channelY)],\n scale,\n map,\n null\n );\n ctx.imageFilters.push(imgf);\n};\n\nconst declareRuntimeShaderImageFilter = (\n ctx: DrawingContext,\n props: RuntimeShaderImageFilterProps\n) => {\n \"worklet\";\n const { source, uniforms } = props;\n const rtb = ctx.Skia.RuntimeShaderBuilder(source);\n if (uniforms) {\n processUniforms(source, uniforms, rtb);\n }\n const imgf = ctx.Skia.ImageFilter.MakeRuntimeShader(rtb, null, null);\n ctx.imageFilters.push(imgf);\n};\n\nexport const composeImageFilters = (ctx: DrawingContext) => {\n \"worklet\";\n if (ctx.imageFilters.length > 1) {\n const outer = ctx.imageFilters.pop()!;\n const inner = ctx.imageFilters.pop()!;\n ctx.imageFilters.push(ctx.Skia.ImageFilter.MakeCompose(outer, inner));\n }\n};\n\nexport const setBlurMaskFilter = (\n ctx: DrawingContext,\n props: BlurMaskFilterProps\n) => {\n \"worklet\";\n const { blur, style, respectCTM } = props;\n const mf = ctx.Skia.MaskFilter.MakeBlur(\n BlurStyle[enumKey(style)],\n blur,\n respectCTM\n );\n ctx.paint.setMaskFilter(mf);\n};\n\nexport const isPushImageFilter = (\n command: Command\n): command is Command<CommandType.PushImageFilter> => {\n \"worklet\";\n return command.type === CommandType.PushImageFilter;\n};\n\ntype Props = {\n [NodeType.OffsetImageFilter]: OffsetImageFilterProps;\n [NodeType.DisplacementMapImageFilter]: DisplacementMapImageFilterProps;\n [NodeType.BlurImageFilter]: BlurImageFilterProps;\n [NodeType.DropShadowImageFilter]: DropShadowImageFilterProps;\n [NodeType.MorphologyImageFilter]: MorphologyImageFilterProps;\n [NodeType.BlendImageFilter]: BlendImageFilterProps;\n [NodeType.RuntimeShaderImageFilter]: RuntimeShaderImageFilterProps;\n};\n\ninterface PushImageFilter<T extends keyof Props>\n extends Command<CommandType.PushImageFilter> {\n imageFilterType: T;\n props: Props[T];\n}\n\nconst isImageFilter = <T extends keyof Props>(\n command: Command<CommandType.PushImageFilter>,\n type: T\n): command is PushImageFilter<T> => {\n \"worklet\";\n return command.imageFilterType === type;\n};\n\nexport const pushImageFilter = (\n ctx: DrawingContext,\n command: Command<CommandType.PushImageFilter>\n) => {\n \"worklet\";\n if (isImageFilter(command, NodeType.BlurImageFilter)) {\n declareBlurImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.MorphologyImageFilter)) {\n declareMorphologyImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.BlendImageFilter)) {\n declareBlendImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.DisplacementMapImageFilter)) {\n declareDisplacementMapImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.DropShadowImageFilter)) {\n declareDropShadowImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.OffsetImageFilter)) {\n declareOffsetImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.RuntimeShaderImageFilter)) {\n declareRuntimeShaderImageFilter(ctx, command.props);\n } else {\n throw new Error(\"Invalid image filter type: \" + command.imageFilterType);\n }\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_nodes","require","_types","_types2","_utils","_Core","MorphologyOperator","exports","Black","Float32Array","of","MakeInnerShadow","Skia","shadowOnly","dx","dy","sigmaX","sigmaY","color","input","sourceGraphic","ImageFilter","MakeColorFilter","ColorFilter","MakeBlend","BlendMode","Dst","sourceAlpha","SrcIn","f1","SrcOut","f2","MakeOffset","f3","MakeBlur","TileMode","Decal","f4","MakeCompose","SrcOver","declareBlurImageFilter","ctx","props","mode","blur","sigma","processRadius","imgf","x","y","enumKey","imageFilters","push","declareMorphologyImageFilter","operator","r","radius","Erode","MakeErode","MakeDilate","declareOffsetImageFilter","declareDropShadowImageFilter","cl","inner","processColor","factory","bind","MakeDropShadowOnly","MakeDropShadow","declareBlendImageFilter","blend","splice","length","composer","composeDeclarations","declareDisplacementMapImageFilter","channelX","channelY","scale","shader","shaders","pop","Error","map","MakeShader","MakeDisplacementMap","ColorChannel","declareRuntimeShaderImageFilter","source","uniforms","rtb","RuntimeShaderBuilder","processUniforms","MakeRuntimeShader","composeImageFilters","outer","setBlurMaskFilter","style","respectCTM","mf","MaskFilter","BlurStyle","paint","setMaskFilter","isPushImageFilter","command","type","CommandType","PushImageFilter","isImageFilter","imageFilterType","pushImageFilter","NodeType","BlurImageFilter","MorphologyImageFilter","BlendImageFilter","DisplacementMapImageFilter","DropShadowImageFilter","OffsetImageFilter","RuntimeShaderImageFilter"],"sources":["ImageFilters.ts"],"sourcesContent":["import { enumKey, processColor, processRadius } from \"../../../dom/nodes\";\nimport type {\n BlendImageFilterProps,\n BlurImageFilterProps,\n BlurMaskFilterProps,\n DisplacementMapImageFilterProps,\n DropShadowImageFilterProps,\n MorphologyImageFilterProps,\n OffsetImageFilterProps,\n RuntimeShaderImageFilterProps,\n} from \"../../../dom/types\";\nimport { NodeType } from \"../../../dom/types\";\nimport type { SkColor, SkImageFilter, Skia } from \"../../../skia/types\";\nimport {\n BlendMode,\n BlurStyle,\n ColorChannel,\n processUniforms,\n TileMode,\n} from \"../../../skia/types\";\nimport { composeDeclarations } from \"../../utils\";\nimport type { Command } from \"../Core\";\nimport { CommandType } from \"../Core\";\nimport type { DrawingContext } from \"../DrawingContext\";\n\nexport enum MorphologyOperator {\n Erode,\n Dilate,\n}\n\nconst Black = Float32Array.of(0, 0, 0, 1);\n\nconst MakeInnerShadow = (\n Skia: Skia,\n shadowOnly: boolean | undefined,\n dx: number,\n dy: number,\n sigmaX: number,\n sigmaY: number,\n color: SkColor,\n input: SkImageFilter | null\n) => {\n \"worklet\";\n const sourceGraphic = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.Dst),\n null\n );\n const sourceAlpha = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.SrcIn),\n null\n );\n const f1 = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(color, BlendMode.SrcOut),\n null\n );\n const f2 = Skia.ImageFilter.MakeOffset(dx, dy, f1);\n const f3 = Skia.ImageFilter.MakeBlur(sigmaX, sigmaY, TileMode.Decal, f2);\n const f4 = Skia.ImageFilter.MakeBlend(BlendMode.SrcIn, sourceAlpha, f3);\n if (shadowOnly) {\n return f4;\n }\n return Skia.ImageFilter.MakeCompose(\n input,\n Skia.ImageFilter.MakeBlend(BlendMode.SrcOver, sourceGraphic, f4)\n );\n};\n\nconst declareBlurImageFilter = (\n ctx: DrawingContext,\n props: BlurImageFilterProps\n) => {\n \"worklet\";\n const { mode, blur } = props;\n const sigma = processRadius(ctx.Skia, blur);\n const imgf = ctx.Skia.ImageFilter.MakeBlur(\n sigma.x,\n sigma.y,\n TileMode[enumKey(mode)],\n null\n );\n ctx.imageFilters.push(imgf);\n};\n\nconst declareMorphologyImageFilter = (\n ctx: DrawingContext,\n props: MorphologyImageFilterProps\n) => {\n \"worklet\";\n const { operator } = props;\n const r = processRadius(ctx.Skia, props.radius);\n let imgf;\n if (MorphologyOperator[enumKey(operator)] === MorphologyOperator.Erode) {\n imgf = ctx.Skia.ImageFilter.MakeErode(r.x, r.y, null);\n } else {\n imgf = ctx.Skia.ImageFilter.MakeDilate(r.x, r.y, null);\n }\n ctx.imageFilters.push(imgf);\n};\n\nconst declareOffsetImageFilter = (\n ctx: DrawingContext,\n props: OffsetImageFilterProps\n) => {\n \"worklet\";\n const { x, y } = props;\n const imgf = ctx.Skia.ImageFilter.MakeOffset(x, y, null);\n ctx.imageFilters.push(imgf);\n};\n\nconst declareDropShadowImageFilter = (\n ctx: DrawingContext,\n props: DropShadowImageFilterProps\n) => {\n \"worklet\";\n const { dx, dy, blur, shadowOnly, color: cl, inner } = props;\n const color = processColor(ctx.Skia, cl);\n let factory;\n if (inner) {\n factory = MakeInnerShadow.bind(null, ctx.Skia, shadowOnly);\n } else {\n factory = shadowOnly\n ? ctx.Skia.ImageFilter.MakeDropShadowOnly.bind(ctx.Skia.ImageFilter)\n : ctx.Skia.ImageFilter.MakeDropShadow.bind(ctx.Skia.ImageFilter);\n }\n const imgf = factory(dx, dy, blur, blur, color, null);\n ctx.imageFilters.push(imgf);\n};\n\nconst declareBlendImageFilter = (\n ctx: DrawingContext,\n props: BlendImageFilterProps\n) => {\n \"worklet\";\n const blend = BlendMode[enumKey(props.mode)];\n // Blend ImageFilters\n const imageFilters = ctx.imageFilters.splice(0, ctx.imageFilters.length);\n const composer = ctx.Skia.ImageFilter.MakeBlend.bind(\n ctx.Skia.ImageFilter,\n blend\n );\n ctx.imageFilters.push(composeDeclarations(imageFilters, composer));\n};\n\nconst declareDisplacementMapImageFilter = (\n ctx: DrawingContext,\n props: DisplacementMapImageFilterProps\n) => {\n \"worklet\";\n const { channelX, channelY, scale } = props;\n const shader = ctx.shaders.pop();\n if (!shader) {\n throw new Error(\"DisplacementMap expects a shader as child\");\n }\n const map = ctx.Skia.ImageFilter.MakeShader(shader, null);\n const imgf = ctx.Skia.ImageFilter.MakeDisplacementMap(\n ColorChannel[enumKey(channelX)],\n ColorChannel[enumKey(channelY)],\n scale,\n map,\n null\n );\n ctx.imageFilters.push(imgf);\n};\n\nconst declareRuntimeShaderImageFilter = (\n ctx: DrawingContext,\n props: RuntimeShaderImageFilterProps\n) => {\n \"worklet\";\n const { source, uniforms } = props;\n const rtb = ctx.Skia.RuntimeShaderBuilder(source);\n if (uniforms) {\n processUniforms(source, uniforms, rtb);\n }\n const imgf = ctx.Skia.ImageFilter.MakeRuntimeShader(rtb, null, null);\n ctx.imageFilters.push(imgf);\n};\n\nexport const composeImageFilters = (ctx: DrawingContext) => {\n \"worklet\";\n if (ctx.imageFilters.length > 1) {\n const outer = ctx.imageFilters.pop()!;\n const inner = ctx.imageFilters.pop()!;\n ctx.imageFilters.push(ctx.Skia.ImageFilter.MakeCompose(outer, inner));\n }\n};\n\nexport const setBlurMaskFilter = (\n ctx: DrawingContext,\n props: BlurMaskFilterProps\n) => {\n \"worklet\";\n const { blur, style, respectCTM } = props;\n const mf = ctx.Skia.MaskFilter.MakeBlur(\n BlurStyle[enumKey(style)],\n blur,\n respectCTM\n );\n ctx.paint.setMaskFilter(mf);\n};\n\nexport const isPushImageFilter = (\n command: Command\n): command is Command<CommandType.PushImageFilter> => {\n \"worklet\";\n return command.type === CommandType.PushImageFilter;\n};\n\ntype Props = {\n [NodeType.OffsetImageFilter]: OffsetImageFilterProps;\n [NodeType.DisplacementMapImageFilter]: DisplacementMapImageFilterProps;\n [NodeType.BlurImageFilter]: BlurImageFilterProps;\n [NodeType.DropShadowImageFilter]: DropShadowImageFilterProps;\n [NodeType.MorphologyImageFilter]: MorphologyImageFilterProps;\n [NodeType.BlendImageFilter]: BlendImageFilterProps;\n [NodeType.RuntimeShaderImageFilter]: RuntimeShaderImageFilterProps;\n};\n\ninterface PushImageFilter<T extends keyof Props>\n extends Command<CommandType.PushImageFilter> {\n imageFilterType: T;\n props: Props[T];\n}\n\nconst isImageFilter = <T extends keyof Props>(\n command: Command<CommandType.PushImageFilter>,\n type: T\n): command is PushImageFilter<T> => {\n \"worklet\";\n return command.imageFilterType === type;\n};\n\nexport const pushImageFilter = (\n ctx: DrawingContext,\n command: Command<CommandType.PushImageFilter>\n) => {\n \"worklet\";\n if (isImageFilter(command, NodeType.BlurImageFilter)) {\n declareBlurImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.MorphologyImageFilter)) {\n declareMorphologyImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.BlendImageFilter)) {\n declareBlendImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.DisplacementMapImageFilter)) {\n declareDisplacementMapImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.DropShadowImageFilter)) {\n declareDropShadowImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.OffsetImageFilter)) {\n declareOffsetImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.RuntimeShaderImageFilter)) {\n declareRuntimeShaderImageFilter(ctx, command.props);\n } else {\n throw new Error(\"Invalid image filter type: \" + command.imageFilterType);\n }\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,3 @@
1
1
  import type { PaintProps } from "../../../dom/types";
2
2
  import type { SkPaint, Skia } from "../../../skia/types";
3
- export declare const processColor: (Skia: Skia, color: number | string | Float32Array | number[]) => Float32Array;
4
3
  export declare const setPaintProperties: (Skia: Skia, paint: SkPaint, { opacity, color, blendMode, strokeWidth, style, strokeJoin, strokeCap, strokeMiter, antiAlias, dither, }: PaintProps) => void;
@@ -3,21 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.setPaintProperties = exports.processColor = void 0;
6
+ exports.setPaintProperties = void 0;
7
7
  var _nodes = require("../../../dom/nodes");
8
8
  var _types = require("../../../skia/types");
9
- const processColor = (Skia, color) => {
10
- "worklet";
11
-
12
- if (typeof color === "string" || typeof color === "number") {
13
- return Skia.Color(color);
14
- } else if (Array.isArray(color) || color instanceof Float32Array) {
15
- return color instanceof Float32Array ? color : new Float32Array(color);
16
- } else {
17
- throw new Error(`Invalid color type: ${typeof color}. Expected number, string, or array.`);
18
- }
19
- };
20
- exports.processColor = processColor;
21
9
  const setPaintProperties = (Skia, paint, {
22
10
  opacity,
23
11
  color,
@@ -38,7 +26,7 @@ const setPaintProperties = (Skia, paint, {
38
26
  if (color !== undefined) {
39
27
  const currentOpacity = paint.getAlphaf();
40
28
  paint.setShader(null);
41
- paint.setColor(processColor(Skia, color));
29
+ paint.setColor((0, _nodes.processColor)(Skia, color));
42
30
  paint.setAlphaf(currentOpacity * paint.getAlphaf());
43
31
  }
44
32
  if (blendMode !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"names":["_nodes","require","_types","processColor","Skia","color","Color","Array","isArray","Float32Array","Error","exports","setPaintProperties","paint","opacity","blendMode","strokeWidth","style","strokeJoin","strokeCap","strokeMiter","antiAlias","dither","undefined","setAlphaf","getAlphaf","currentOpacity","setShader","setColor","setBlendMode","BlendMode","enumKey","setStrokeWidth","setStyle","PaintStyle","setStrokeJoin","StrokeJoin","setStrokeCap","StrokeCap","setStrokeMiter","setAntiAlias","setDither"],"sources":["Paint.ts"],"sourcesContent":["import { enumKey } from \"../../../dom/nodes\";\nimport type { PaintProps } from \"../../../dom/types\";\nimport {\n BlendMode,\n PaintStyle,\n StrokeCap,\n StrokeJoin,\n} from \"../../../skia/types\";\nimport type { SkPaint, Skia } from \"../../../skia/types\";\n\nexport const processColor = (\n Skia: Skia,\n color: number | string | Float32Array | number[]\n) => {\n \"worklet\";\n if (typeof color === \"string\" || typeof color === \"number\") {\n return Skia.Color(color);\n } else if (Array.isArray(color) || color instanceof Float32Array) {\n return color instanceof Float32Array ? color : new Float32Array(color);\n } else {\n throw new Error(\n `Invalid color type: ${typeof color}. Expected number, string, or array.`\n );\n }\n};\n\nexport const setPaintProperties = (\n Skia: Skia,\n paint: SkPaint,\n {\n opacity,\n color,\n blendMode,\n strokeWidth,\n style,\n strokeJoin,\n strokeCap,\n strokeMiter,\n antiAlias,\n dither,\n }: PaintProps\n) => {\n \"worklet\";\n if (opacity !== undefined) {\n paint.setAlphaf(paint.getAlphaf() * opacity);\n }\n if (color !== undefined) {\n const currentOpacity = paint.getAlphaf();\n paint.setShader(null);\n paint.setColor(processColor(Skia, color));\n paint.setAlphaf(currentOpacity * paint.getAlphaf());\n }\n if (blendMode !== undefined) {\n paint.setBlendMode(BlendMode[enumKey(blendMode)]);\n }\n if (strokeWidth !== undefined) {\n paint.setStrokeWidth(strokeWidth);\n }\n if (style !== undefined) {\n paint.setStyle(PaintStyle[enumKey(style)]);\n }\n if (strokeJoin !== undefined) {\n paint.setStrokeJoin(StrokeJoin[enumKey(strokeJoin)]);\n }\n if (strokeCap !== undefined) {\n paint.setStrokeCap(StrokeCap[enumKey(strokeCap)]);\n }\n if (strokeMiter !== undefined) {\n paint.setStrokeMiter(strokeMiter);\n }\n if (antiAlias !== undefined) {\n paint.setAntiAlias(antiAlias);\n }\n if (dither !== undefined) {\n paint.setDither(dither);\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAQO,MAAME,YAAY,GAAGA,CAC1BC,IAAU,EACVC,KAAgD,KAC7C;EACH,SAAS;;EACT,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC1D,OAAOD,IAAI,CAACE,KAAK,CAACD,KAAK,CAAC;EAC1B,CAAC,MAAM,IAAIE,KAAK,CAACC,OAAO,CAACH,KAAK,CAAC,IAAIA,KAAK,YAAYI,YAAY,EAAE;IAChE,OAAOJ,KAAK,YAAYI,YAAY,GAAGJ,KAAK,GAAG,IAAII,YAAY,CAACJ,KAAK,CAAC;EACxE,CAAC,MAAM;IACL,MAAM,IAAIK,KAAK,CACb,uBAAuB,OAAOL,KAAK,sCACrC,CAAC;EACH;AACF,CAAC;AAACM,OAAA,CAAAR,YAAA,GAAAA,YAAA;AAEK,MAAMS,kBAAkB,GAAGA,CAChCR,IAAU,EACVS,KAAc,EACd;EACEC,OAAO;EACPT,KAAK;EACLU,SAAS;EACTC,WAAW;EACXC,KAAK;EACLC,UAAU;EACVC,SAAS;EACTC,WAAW;EACXC,SAAS;EACTC;AACU,CAAC,KACV;EACH,SAAS;;EACT,IAAIR,OAAO,KAAKS,SAAS,EAAE;IACzBV,KAAK,CAACW,SAAS,CAACX,KAAK,CAACY,SAAS,CAAC,CAAC,GAAGX,OAAO,CAAC;EAC9C;EACA,IAAIT,KAAK,KAAKkB,SAAS,EAAE;IACvB,MAAMG,cAAc,GAAGb,KAAK,CAACY,SAAS,CAAC,CAAC;IACxCZ,KAAK,CAACc,SAAS,CAAC,IAAI,CAAC;IACrBd,KAAK,CAACe,QAAQ,CAACzB,YAAY,CAACC,IAAI,EAAEC,KAAK,CAAC,CAAC;IACzCQ,KAAK,CAACW,SAAS,CAACE,cAAc,GAAGb,KAAK,CAACY,SAAS,CAAC,CAAC,CAAC;EACrD;EACA,IAAIV,SAAS,KAAKQ,SAAS,EAAE;IAC3BV,KAAK,CAACgB,YAAY,CAACC,gBAAS,CAAC,IAAAC,cAAO,EAAChB,SAAS,CAAC,CAAC,CAAC;EACnD;EACA,IAAIC,WAAW,KAAKO,SAAS,EAAE;IAC7BV,KAAK,CAACmB,cAAc,CAAChB,WAAW,CAAC;EACnC;EACA,IAAIC,KAAK,KAAKM,SAAS,EAAE;IACvBV,KAAK,CAACoB,QAAQ,CAACC,iBAAU,CAAC,IAAAH,cAAO,EAACd,KAAK,CAAC,CAAC,CAAC;EAC5C;EACA,IAAIC,UAAU,KAAKK,SAAS,EAAE;IAC5BV,KAAK,CAACsB,aAAa,CAACC,iBAAU,CAAC,IAAAL,cAAO,EAACb,UAAU,CAAC,CAAC,CAAC;EACtD;EACA,IAAIC,SAAS,KAAKI,SAAS,EAAE;IAC3BV,KAAK,CAACwB,YAAY,CAACC,gBAAS,CAAC,IAAAP,cAAO,EAACZ,SAAS,CAAC,CAAC,CAAC;EACnD;EACA,IAAIC,WAAW,KAAKG,SAAS,EAAE;IAC7BV,KAAK,CAAC0B,cAAc,CAACnB,WAAW,CAAC;EACnC;EACA,IAAIC,SAAS,KAAKE,SAAS,EAAE;IAC3BV,KAAK,CAAC2B,YAAY,CAACnB,SAAS,CAAC;EAC/B;EACA,IAAIC,MAAM,KAAKC,SAAS,EAAE;IACxBV,KAAK,CAAC4B,SAAS,CAACnB,MAAM,CAAC;EACzB;AACF,CAAC;AAACX,OAAA,CAAAC,kBAAA,GAAAA,kBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_nodes","require","_types","setPaintProperties","Skia","paint","opacity","color","blendMode","strokeWidth","style","strokeJoin","strokeCap","strokeMiter","antiAlias","dither","undefined","setAlphaf","getAlphaf","currentOpacity","setShader","setColor","processColor","setBlendMode","BlendMode","enumKey","setStrokeWidth","setStyle","PaintStyle","setStrokeJoin","StrokeJoin","setStrokeCap","StrokeCap","setStrokeMiter","setAntiAlias","setDither","exports"],"sources":["Paint.ts"],"sourcesContent":["import { enumKey, processColor } from \"../../../dom/nodes\";\nimport type { PaintProps } from \"../../../dom/types\";\nimport {\n BlendMode,\n PaintStyle,\n StrokeCap,\n StrokeJoin,\n} from \"../../../skia/types\";\nimport type { SkPaint, Skia } from \"../../../skia/types\";\n\nexport const setPaintProperties = (\n Skia: Skia,\n paint: SkPaint,\n {\n opacity,\n color,\n blendMode,\n strokeWidth,\n style,\n strokeJoin,\n strokeCap,\n strokeMiter,\n antiAlias,\n dither,\n }: PaintProps\n) => {\n \"worklet\";\n if (opacity !== undefined) {\n paint.setAlphaf(paint.getAlphaf() * opacity);\n }\n if (color !== undefined) {\n const currentOpacity = paint.getAlphaf();\n paint.setShader(null);\n paint.setColor(processColor(Skia, color));\n paint.setAlphaf(currentOpacity * paint.getAlphaf());\n }\n if (blendMode !== undefined) {\n paint.setBlendMode(BlendMode[enumKey(blendMode)]);\n }\n if (strokeWidth !== undefined) {\n paint.setStrokeWidth(strokeWidth);\n }\n if (style !== undefined) {\n paint.setStyle(PaintStyle[enumKey(style)]);\n }\n if (strokeJoin !== undefined) {\n paint.setStrokeJoin(StrokeJoin[enumKey(strokeJoin)]);\n }\n if (strokeCap !== undefined) {\n paint.setStrokeCap(StrokeCap[enumKey(strokeCap)]);\n }\n if (strokeMiter !== undefined) {\n paint.setStrokeMiter(strokeMiter);\n }\n if (antiAlias !== undefined) {\n paint.setAntiAlias(antiAlias);\n }\n if (dither !== undefined) {\n paint.setDither(dither);\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAQO,MAAME,kBAAkB,GAAGA,CAChCC,IAAU,EACVC,KAAc,EACd;EACEC,OAAO;EACPC,KAAK;EACLC,SAAS;EACTC,WAAW;EACXC,KAAK;EACLC,UAAU;EACVC,SAAS;EACTC,WAAW;EACXC,SAAS;EACTC;AACU,CAAC,KACV;EACH,SAAS;;EACT,IAAIT,OAAO,KAAKU,SAAS,EAAE;IACzBX,KAAK,CAACY,SAAS,CAACZ,KAAK,CAACa,SAAS,CAAC,CAAC,GAAGZ,OAAO,CAAC;EAC9C;EACA,IAAIC,KAAK,KAAKS,SAAS,EAAE;IACvB,MAAMG,cAAc,GAAGd,KAAK,CAACa,SAAS,CAAC,CAAC;IACxCb,KAAK,CAACe,SAAS,CAAC,IAAI,CAAC;IACrBf,KAAK,CAACgB,QAAQ,CAAC,IAAAC,mBAAY,EAAClB,IAAI,EAAEG,KAAK,CAAC,CAAC;IACzCF,KAAK,CAACY,SAAS,CAACE,cAAc,GAAGd,KAAK,CAACa,SAAS,CAAC,CAAC,CAAC;EACrD;EACA,IAAIV,SAAS,KAAKQ,SAAS,EAAE;IAC3BX,KAAK,CAACkB,YAAY,CAACC,gBAAS,CAAC,IAAAC,cAAO,EAACjB,SAAS,CAAC,CAAC,CAAC;EACnD;EACA,IAAIC,WAAW,KAAKO,SAAS,EAAE;IAC7BX,KAAK,CAACqB,cAAc,CAACjB,WAAW,CAAC;EACnC;EACA,IAAIC,KAAK,KAAKM,SAAS,EAAE;IACvBX,KAAK,CAACsB,QAAQ,CAACC,iBAAU,CAAC,IAAAH,cAAO,EAACf,KAAK,CAAC,CAAC,CAAC;EAC5C;EACA,IAAIC,UAAU,KAAKK,SAAS,EAAE;IAC5BX,KAAK,CAACwB,aAAa,CAACC,iBAAU,CAAC,IAAAL,cAAO,EAACd,UAAU,CAAC,CAAC,CAAC;EACtD;EACA,IAAIC,SAAS,KAAKI,SAAS,EAAE;IAC3BX,KAAK,CAAC0B,YAAY,CAACC,gBAAS,CAAC,IAAAP,cAAO,EAACb,SAAS,CAAC,CAAC,CAAC;EACnD;EACA,IAAIC,WAAW,KAAKG,SAAS,EAAE;IAC7BX,KAAK,CAAC4B,cAAc,CAACpB,WAAW,CAAC;EACnC;EACA,IAAIC,SAAS,KAAKE,SAAS,EAAE;IAC3BX,KAAK,CAAC6B,YAAY,CAACpB,SAAS,CAAC;EAC/B;EACA,IAAIC,MAAM,KAAKC,SAAS,EAAE;IACxBX,KAAK,CAAC8B,SAAS,CAACpB,MAAM,CAAC;EACzB;AACF,CAAC;AAACqB,OAAA,CAAAjC,kBAAA,GAAAA,kBAAA","ignoreList":[]}
@@ -28,7 +28,7 @@ const declareColorShader = (ctx, props) => {
28
28
  const {
29
29
  color
30
30
  } = props;
31
- const shader = ctx.Skia.Shader.MakeColor(ctx.Skia.Color(color));
31
+ const shader = ctx.Skia.Shader.MakeColor((0, _nodes.processColor)(ctx.Skia, color));
32
32
  ctx.shaders.push(shader);
33
33
  };
34
34
  const declareFractalNoiseShader = (ctx, props) => {