@shopify/react-native-skia 2.4.4 → 2.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -26,41 +26,40 @@ const getZIndex = command => {
26
26
  }
27
27
  return zIndex;
28
28
  };
29
- const play = (ctx, _command) => {
30
- const flushPendingGroups = (ctx, pendingGroups) => {
31
- "worklet";
29
+ const flushPendingGroups = (ctx, pendingGroups, playFn) => {
30
+ "worklet";
31
+
32
+ if (pendingGroups.length === 0) {
33
+ return;
34
+ }
35
+ pendingGroups.sort((a, b) => a.zIndex === b.zIndex ? a.order - b.order : a.zIndex - b.zIndex).forEach(({
36
+ command
37
+ }) => {
38
+ playFn(ctx, command);
39
+ });
40
+ pendingGroups.length = 0;
41
+ };
42
+ const playGroup = (ctx, group, playFn) => {
43
+ "worklet";
32
44
 
33
- if (pendingGroups.length === 0) {
45
+ const pending = [];
46
+ group.children.forEach(child => {
47
+ if ((0, _Core.isGroup)(child)) {
48
+ pending.push({
49
+ command: child,
50
+ zIndex: getZIndex(child),
51
+ order: pending.length
52
+ });
34
53
  return;
35
54
  }
36
- pendingGroups.sort((a, b) => a.zIndex === b.zIndex ? a.order - b.order : a.zIndex - b.zIndex).forEach(({
37
- command
38
- }) => {
39
- play(ctx, command);
40
- });
41
- pendingGroups.length = 0;
42
- };
43
- // eslint-disable-next-line @typescript-eslint/no-shadow
44
- const playGroup = (ctx, group) => {
45
- "worklet";
46
-
47
- const pending = [];
48
- group.children.forEach(child => {
49
- if ((0, _Core.isGroup)(child)) {
50
- pending.push({
51
- command: child,
52
- zIndex: getZIndex(child),
53
- order: pending.length
54
- });
55
- return;
56
- }
57
- flushPendingGroups(ctx, pending);
58
- play(ctx, child);
59
- });
60
- flushPendingGroups(ctx, pending);
61
- };
55
+ flushPendingGroups(ctx, pending, playFn);
56
+ playFn(ctx, child);
57
+ });
58
+ flushPendingGroups(ctx, pending, playFn);
59
+ };
60
+ const play = (ctx, _command) => {
62
61
  if ((0, _Core.isGroup)(_command)) {
63
- playGroup(ctx, _command);
62
+ playGroup(ctx, _command, play);
64
63
  return;
65
64
  }
66
65
  const command = (0, _Core.materializeCommand)(_command);
@@ -1 +1 @@
1
- {"version":3,"names":["_Drawing","require","_Box","_ColorFilters","_CTM","_ImageFilters","_Paint","_PathEffects","_Shaders","_Core","getZIndex","command","_materialized$props","materialized","materializeCommand","zIndex","props","Number","isNaN","play","ctx","_command","flushPendingGroups","pendingGroups","length","sort","a","b","order","forEach","playGroup","group","pending","children","child","isGroup","push","isCommand","CommandType","SaveBackdropFilter","saveBackdropFilter","SaveLayer","materializePaint","paint","paintDeclarations","pop","canvas","saveLayer","isDrawCommand","SavePaint","paints","standalone","savePaint","freshPaint","Skia","Paint","assign","setPaintProperties","RestorePaint","restorePaint","ComposeColorFilter","composeColorFilters","RestorePaintDeclaration","Error","MaterializePaint","isPushColorFilter","pushColorFilter","isPushShader","pushShader","isPushImageFilter","pushImageFilter","isPushPathEffect","pushPathEffect","ComposePathEffect","composePathEffects","ComposeImageFilter","composeImageFilters","PushBlurMaskFilter","setBlurMaskFilter","SaveCTM","saveCTM","RestoreCTM","restore","copy","setAlphaf","getAlphaf","getOpacity","p","isBoxCommand","drawBox","DrawPaint","drawPaint","DrawImage","drawImage","DrawCircle","drawCircle","DrawPoints","drawPoints","DrawPath","drawPath","DrawRect","drawRect","DrawRRect","drawRRect","DrawOval","drawOval","DrawLine","drawLine","DrawPatch","drawPatch","DrawVertices","drawVertices","DrawDiffRect","drawDiffRect","DrawText","drawText","DrawTextPath","drawTextPath","DrawTextBlob","drawTextBlob","DrawGlyphs","drawGlyphs","DrawPicture","drawPicture","DrawImageSVG","drawImageSVG","DrawParagraph","drawParagraph","DrawAtlas","drawAtlas","DrawSkottie","drawSkottie","console","warn","type","replay","commands"],"sources":["Player.ts"],"sourcesContent":["import type { DrawingNodeProps } from \"../../dom/types\";\n\nimport {\n drawCircle,\n drawImage,\n drawOval,\n drawPath,\n drawPoints,\n drawRect,\n drawRRect,\n drawLine,\n drawAtlas,\n drawParagraph,\n drawImageSVG,\n drawPicture,\n drawGlyphs,\n drawTextBlob,\n drawTextPath,\n drawText,\n drawDiffRect,\n drawVertices,\n drawPatch,\n drawSkottie,\n} from \"./commands/Drawing\";\nimport { drawBox, isBoxCommand } from \"./commands/Box\";\nimport {\n composeColorFilters,\n isPushColorFilter,\n pushColorFilter,\n} from \"./commands/ColorFilters\";\nimport { saveCTM } from \"./commands/CTM\";\nimport {\n setBlurMaskFilter,\n isPushImageFilter,\n pushImageFilter,\n composeImageFilters,\n} from \"./commands/ImageFilters\";\nimport { setPaintProperties } from \"./commands/Paint\";\nimport {\n composePathEffects,\n isPushPathEffect,\n pushPathEffect,\n} from \"./commands/PathEffects\";\nimport { isPushShader, pushShader } from \"./commands/Shaders\";\nimport {\n CommandType,\n isCommand,\n isDrawCommand,\n isGroup,\n materializeCommand,\n} from \"./Core\";\nimport type { Command, GroupCommand } from \"./Core\";\nimport type { DrawingContext } from \"./DrawingContext\";\n\ntype PendingGroup = {\n command: GroupCommand;\n zIndex: number;\n order: number;\n};\n\nconst getZIndex = (command: GroupCommand) => {\n \"worklet\";\n const materialized = materializeCommand(command);\n const { zIndex } = (materialized.props ?? {}) as DrawingNodeProps;\n if (typeof zIndex !== \"number\" || Number.isNaN(zIndex)) {\n return 0;\n }\n return zIndex;\n};\n\nconst play = (ctx: DrawingContext, _command: Command) => {\n const flushPendingGroups = (\n // eslint-disable-next-line @typescript-eslint/no-shadow\n ctx: DrawingContext,\n pendingGroups: PendingGroup[]\n ) => {\n \"worklet\";\n if (pendingGroups.length === 0) {\n return;\n }\n pendingGroups\n .sort((a, b) =>\n a.zIndex === b.zIndex ? a.order - b.order : a.zIndex - b.zIndex\n )\n .forEach(({ command }) => {\n play(ctx, command);\n });\n pendingGroups.length = 0;\n };\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const playGroup = (ctx: DrawingContext, group: GroupCommand) => {\n \"worklet\";\n const pending: PendingGroup[] = [];\n group.children.forEach((child) => {\n if (isGroup(child)) {\n pending.push({\n command: child,\n zIndex: getZIndex(child),\n order: pending.length,\n });\n return;\n }\n flushPendingGroups(ctx, pending);\n play(ctx, child);\n });\n flushPendingGroups(ctx, pending);\n };\n\n if (isGroup(_command)) {\n playGroup(ctx, _command);\n return;\n }\n const command = materializeCommand(_command);\n if (isCommand(command, CommandType.SaveBackdropFilter)) {\n ctx.saveBackdropFilter();\n } else if (isCommand(command, CommandType.SaveLayer)) {\n ctx.materializePaint();\n const paint = ctx.paintDeclarations.pop();\n ctx.canvas.saveLayer(paint);\n } else if (isDrawCommand(command, CommandType.SavePaint)) {\n if (command.props.paint) {\n ctx.paints.push(command.props.paint);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { standalone } = command as any;\n ctx.savePaint();\n if (standalone) {\n const freshPaint = ctx.Skia.Paint();\n ctx.paint.assign(freshPaint);\n }\n setPaintProperties(ctx.Skia, ctx, command.props, standalone);\n }\n } else if (isCommand(command, CommandType.RestorePaint)) {\n ctx.restorePaint();\n } else if (isCommand(command, CommandType.ComposeColorFilter)) {\n composeColorFilters(ctx);\n } else if (isCommand(command, CommandType.RestorePaintDeclaration)) {\n ctx.materializePaint();\n const paint = ctx.restorePaint();\n if (!paint) {\n throw new Error(\"No paint declaration to push\");\n }\n ctx.paintDeclarations.push(paint);\n } else if (isCommand(command, CommandType.MaterializePaint)) {\n ctx.materializePaint();\n } else if (isPushColorFilter(command)) {\n pushColorFilter(ctx, command);\n } else if (isPushShader(command)) {\n pushShader(ctx, command);\n } else if (isPushImageFilter(command)) {\n pushImageFilter(ctx, command);\n } else if (isPushPathEffect(command)) {\n pushPathEffect(ctx, command);\n } else if (isCommand(command, CommandType.ComposePathEffect)) {\n composePathEffects(ctx);\n } else if (isCommand(command, CommandType.ComposeImageFilter)) {\n composeImageFilters(ctx);\n } else if (isDrawCommand(command, CommandType.PushBlurMaskFilter)) {\n setBlurMaskFilter(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.SaveCTM)) {\n saveCTM(ctx, command.props);\n } else if (isCommand(command, CommandType.RestoreCTM)) {\n ctx.canvas.restore();\n } else {\n // TODO: is a copy needed here?\n // apply opacity to the current paint.\n const paint = ctx.paint.copy();\n paint.setAlphaf(paint.getAlphaf() * ctx.getOpacity());\n const paints = [paint, ...ctx.paintDeclarations];\n ctx.paintDeclarations = [];\n paints.forEach((p) => {\n ctx.paints.push(p);\n if (isBoxCommand(command)) {\n drawBox(ctx, command);\n } else if (isCommand(command, CommandType.DrawPaint)) {\n ctx.canvas.drawPaint(ctx.paint);\n } else if (isDrawCommand(command, CommandType.DrawImage)) {\n drawImage(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawCircle)) {\n drawCircle(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPoints)) {\n drawPoints(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPath)) {\n drawPath(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawRect)) {\n drawRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawRRect)) {\n drawRRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawOval)) {\n drawOval(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawLine)) {\n drawLine(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPatch)) {\n drawPatch(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawVertices)) {\n drawVertices(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawDiffRect)) {\n drawDiffRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawText)) {\n drawText(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawTextPath)) {\n drawTextPath(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawTextBlob)) {\n drawTextBlob(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawGlyphs)) {\n drawGlyphs(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPicture)) {\n drawPicture(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawImageSVG)) {\n drawImageSVG(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawParagraph)) {\n drawParagraph(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawAtlas)) {\n drawAtlas(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawSkottie)) {\n drawSkottie(ctx, command.props);\n } else {\n console.warn(`Unknown command: ${command.type}`);\n }\n ctx.paints.pop();\n });\n }\n};\nexport function replay(ctx: DrawingContext, commands: Command[]) {\n \"worklet\";\n //console.log(debugTree(commands));\n commands.forEach((command) => {\n play(ctx, command);\n });\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_Drawing","require","_Box","_ColorFilters","_CTM","_ImageFilters","_Paint","_PathEffects","_Shaders","_Core","getZIndex","command","_materialized$props","materialized","materializeCommand","zIndex","props","Number","isNaN","flushPendingGroups","ctx","pendingGroups","playFn","length","sort","a","b","order","forEach","playGroup","group","pending","children","child","isGroup","push","play","_command","isCommand","CommandType","SaveBackdropFilter","saveBackdropFilter","SaveLayer","materializePaint","paint","paintDeclarations","pop","canvas","saveLayer","isDrawCommand","SavePaint","paints","standalone","savePaint","freshPaint","Skia","Paint","assign","setPaintProperties","RestorePaint","restorePaint","ComposeColorFilter","composeColorFilters","RestorePaintDeclaration","Error","MaterializePaint","isPushColorFilter","pushColorFilter","isPushShader","pushShader","isPushImageFilter","pushImageFilter","isPushPathEffect","pushPathEffect","ComposePathEffect","composePathEffects","ComposeImageFilter","composeImageFilters","PushBlurMaskFilter","setBlurMaskFilter","SaveCTM","saveCTM","RestoreCTM","restore","copy","setAlphaf","getAlphaf","getOpacity","p","isBoxCommand","drawBox","DrawPaint","drawPaint","DrawImage","drawImage","DrawCircle","drawCircle","DrawPoints","drawPoints","DrawPath","drawPath","DrawRect","drawRect","DrawRRect","drawRRect","DrawOval","drawOval","DrawLine","drawLine","DrawPatch","drawPatch","DrawVertices","drawVertices","DrawDiffRect","drawDiffRect","DrawText","drawText","DrawTextPath","drawTextPath","DrawTextBlob","drawTextBlob","DrawGlyphs","drawGlyphs","DrawPicture","drawPicture","DrawImageSVG","drawImageSVG","DrawParagraph","drawParagraph","DrawAtlas","drawAtlas","DrawSkottie","drawSkottie","console","warn","type","replay","commands"],"sources":["Player.ts"],"sourcesContent":["import type { DrawingNodeProps } from \"../../dom/types\";\n\nimport {\n drawCircle,\n drawImage,\n drawOval,\n drawPath,\n drawPoints,\n drawRect,\n drawRRect,\n drawLine,\n drawAtlas,\n drawParagraph,\n drawImageSVG,\n drawPicture,\n drawGlyphs,\n drawTextBlob,\n drawTextPath,\n drawText,\n drawDiffRect,\n drawVertices,\n drawPatch,\n drawSkottie,\n} from \"./commands/Drawing\";\nimport { drawBox, isBoxCommand } from \"./commands/Box\";\nimport {\n composeColorFilters,\n isPushColorFilter,\n pushColorFilter,\n} from \"./commands/ColorFilters\";\nimport { saveCTM } from \"./commands/CTM\";\nimport {\n setBlurMaskFilter,\n isPushImageFilter,\n pushImageFilter,\n composeImageFilters,\n} from \"./commands/ImageFilters\";\nimport { setPaintProperties } from \"./commands/Paint\";\nimport {\n composePathEffects,\n isPushPathEffect,\n pushPathEffect,\n} from \"./commands/PathEffects\";\nimport { isPushShader, pushShader } from \"./commands/Shaders\";\nimport {\n CommandType,\n isCommand,\n isDrawCommand,\n isGroup,\n materializeCommand,\n} from \"./Core\";\nimport type { Command, GroupCommand } from \"./Core\";\nimport type { DrawingContext } from \"./DrawingContext\";\n\ntype PendingGroup = {\n command: GroupCommand;\n zIndex: number;\n order: number;\n};\n\nconst getZIndex = (command: GroupCommand) => {\n \"worklet\";\n const materialized = materializeCommand(command);\n const { zIndex } = (materialized.props ?? {}) as DrawingNodeProps;\n if (typeof zIndex !== \"number\" || Number.isNaN(zIndex)) {\n return 0;\n }\n return zIndex;\n};\n\nconst flushPendingGroups = (\n ctx: DrawingContext,\n pendingGroups: PendingGroup[],\n playFn: (ctx: DrawingContext, cmd: Command) => void\n) => {\n \"worklet\";\n if (pendingGroups.length === 0) {\n return;\n }\n pendingGroups\n .sort((a, b) =>\n a.zIndex === b.zIndex ? a.order - b.order : a.zIndex - b.zIndex\n )\n .forEach(({ command }) => {\n playFn(ctx, command);\n });\n pendingGroups.length = 0;\n};\n\nconst playGroup = (\n ctx: DrawingContext,\n group: GroupCommand,\n playFn: (ctx: DrawingContext, cmd: Command) => void\n) => {\n \"worklet\";\n const pending: PendingGroup[] = [];\n group.children.forEach((child) => {\n if (isGroup(child)) {\n pending.push({\n command: child,\n zIndex: getZIndex(child),\n order: pending.length,\n });\n return;\n }\n flushPendingGroups(ctx, pending, playFn);\n playFn(ctx, child);\n });\n flushPendingGroups(ctx, pending, playFn);\n};\n\nconst play = (ctx: DrawingContext, _command: Command) => {\n if (isGroup(_command)) {\n playGroup(ctx, _command, play);\n return;\n }\n const command = materializeCommand(_command);\n if (isCommand(command, CommandType.SaveBackdropFilter)) {\n ctx.saveBackdropFilter();\n } else if (isCommand(command, CommandType.SaveLayer)) {\n ctx.materializePaint();\n const paint = ctx.paintDeclarations.pop();\n ctx.canvas.saveLayer(paint);\n } else if (isDrawCommand(command, CommandType.SavePaint)) {\n if (command.props.paint) {\n ctx.paints.push(command.props.paint);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { standalone } = command as any;\n ctx.savePaint();\n if (standalone) {\n const freshPaint = ctx.Skia.Paint();\n ctx.paint.assign(freshPaint);\n }\n setPaintProperties(ctx.Skia, ctx, command.props, standalone);\n }\n } else if (isCommand(command, CommandType.RestorePaint)) {\n ctx.restorePaint();\n } else if (isCommand(command, CommandType.ComposeColorFilter)) {\n composeColorFilters(ctx);\n } else if (isCommand(command, CommandType.RestorePaintDeclaration)) {\n ctx.materializePaint();\n const paint = ctx.restorePaint();\n if (!paint) {\n throw new Error(\"No paint declaration to push\");\n }\n ctx.paintDeclarations.push(paint);\n } else if (isCommand(command, CommandType.MaterializePaint)) {\n ctx.materializePaint();\n } else if (isPushColorFilter(command)) {\n pushColorFilter(ctx, command);\n } else if (isPushShader(command)) {\n pushShader(ctx, command);\n } else if (isPushImageFilter(command)) {\n pushImageFilter(ctx, command);\n } else if (isPushPathEffect(command)) {\n pushPathEffect(ctx, command);\n } else if (isCommand(command, CommandType.ComposePathEffect)) {\n composePathEffects(ctx);\n } else if (isCommand(command, CommandType.ComposeImageFilter)) {\n composeImageFilters(ctx);\n } else if (isDrawCommand(command, CommandType.PushBlurMaskFilter)) {\n setBlurMaskFilter(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.SaveCTM)) {\n saveCTM(ctx, command.props);\n } else if (isCommand(command, CommandType.RestoreCTM)) {\n ctx.canvas.restore();\n } else {\n // TODO: is a copy needed here?\n // apply opacity to the current paint.\n const paint = ctx.paint.copy();\n paint.setAlphaf(paint.getAlphaf() * ctx.getOpacity());\n const paints = [paint, ...ctx.paintDeclarations];\n ctx.paintDeclarations = [];\n paints.forEach((p) => {\n ctx.paints.push(p);\n if (isBoxCommand(command)) {\n drawBox(ctx, command);\n } else if (isCommand(command, CommandType.DrawPaint)) {\n ctx.canvas.drawPaint(ctx.paint);\n } else if (isDrawCommand(command, CommandType.DrawImage)) {\n drawImage(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawCircle)) {\n drawCircle(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPoints)) {\n drawPoints(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPath)) {\n drawPath(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawRect)) {\n drawRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawRRect)) {\n drawRRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawOval)) {\n drawOval(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawLine)) {\n drawLine(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPatch)) {\n drawPatch(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawVertices)) {\n drawVertices(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawDiffRect)) {\n drawDiffRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawText)) {\n drawText(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawTextPath)) {\n drawTextPath(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawTextBlob)) {\n drawTextBlob(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawGlyphs)) {\n drawGlyphs(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPicture)) {\n drawPicture(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawImageSVG)) {\n drawImageSVG(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawParagraph)) {\n drawParagraph(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawAtlas)) {\n drawAtlas(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawSkottie)) {\n drawSkottie(ctx, command.props);\n } else {\n console.warn(`Unknown command: ${command.type}`);\n }\n ctx.paints.pop();\n });\n }\n};\nexport function replay(ctx: DrawingContext, commands: Command[]) {\n \"worklet\";\n //console.log(debugTree(commands));\n commands.forEach((command) => {\n play(ctx, command);\n });\n}\n"],"mappings":"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","ignoreList":[]}
@@ -20,41 +20,40 @@ const getZIndex = command => {
20
20
  }
21
21
  return zIndex;
22
22
  };
23
- const play = (ctx, _command) => {
24
- const flushPendingGroups = (ctx, pendingGroups) => {
25
- "worklet";
23
+ const flushPendingGroups = (ctx, pendingGroups, playFn) => {
24
+ "worklet";
25
+
26
+ if (pendingGroups.length === 0) {
27
+ return;
28
+ }
29
+ pendingGroups.sort((a, b) => a.zIndex === b.zIndex ? a.order - b.order : a.zIndex - b.zIndex).forEach(({
30
+ command
31
+ }) => {
32
+ playFn(ctx, command);
33
+ });
34
+ pendingGroups.length = 0;
35
+ };
36
+ const playGroup = (ctx, group, playFn) => {
37
+ "worklet";
26
38
 
27
- if (pendingGroups.length === 0) {
39
+ const pending = [];
40
+ group.children.forEach(child => {
41
+ if (isGroup(child)) {
42
+ pending.push({
43
+ command: child,
44
+ zIndex: getZIndex(child),
45
+ order: pending.length
46
+ });
28
47
  return;
29
48
  }
30
- pendingGroups.sort((a, b) => a.zIndex === b.zIndex ? a.order - b.order : a.zIndex - b.zIndex).forEach(({
31
- command
32
- }) => {
33
- play(ctx, command);
34
- });
35
- pendingGroups.length = 0;
36
- };
37
- // eslint-disable-next-line @typescript-eslint/no-shadow
38
- const playGroup = (ctx, group) => {
39
- "worklet";
40
-
41
- const pending = [];
42
- group.children.forEach(child => {
43
- if (isGroup(child)) {
44
- pending.push({
45
- command: child,
46
- zIndex: getZIndex(child),
47
- order: pending.length
48
- });
49
- return;
50
- }
51
- flushPendingGroups(ctx, pending);
52
- play(ctx, child);
53
- });
54
- flushPendingGroups(ctx, pending);
55
- };
49
+ flushPendingGroups(ctx, pending, playFn);
50
+ playFn(ctx, child);
51
+ });
52
+ flushPendingGroups(ctx, pending, playFn);
53
+ };
54
+ const play = (ctx, _command) => {
56
55
  if (isGroup(_command)) {
57
- playGroup(ctx, _command);
56
+ playGroup(ctx, _command, play);
58
57
  return;
59
58
  }
60
59
  const command = materializeCommand(_command);
@@ -1 +1 @@
1
- {"version":3,"names":["drawCircle","drawImage","drawOval","drawPath","drawPoints","drawRect","drawRRect","drawLine","drawAtlas","drawParagraph","drawImageSVG","drawPicture","drawGlyphs","drawTextBlob","drawTextPath","drawText","drawDiffRect","drawVertices","drawPatch","drawSkottie","drawBox","isBoxCommand","composeColorFilters","isPushColorFilter","pushColorFilter","saveCTM","setBlurMaskFilter","isPushImageFilter","pushImageFilter","composeImageFilters","setPaintProperties","composePathEffects","isPushPathEffect","pushPathEffect","isPushShader","pushShader","CommandType","isCommand","isDrawCommand","isGroup","materializeCommand","getZIndex","command","_materialized$props","materialized","zIndex","props","Number","isNaN","play","ctx","_command","flushPendingGroups","pendingGroups","length","sort","a","b","order","forEach","playGroup","group","pending","children","child","push","SaveBackdropFilter","saveBackdropFilter","SaveLayer","materializePaint","paint","paintDeclarations","pop","canvas","saveLayer","SavePaint","paints","standalone","savePaint","freshPaint","Skia","Paint","assign","RestorePaint","restorePaint","ComposeColorFilter","RestorePaintDeclaration","Error","MaterializePaint","ComposePathEffect","ComposeImageFilter","PushBlurMaskFilter","SaveCTM","RestoreCTM","restore","copy","setAlphaf","getAlphaf","getOpacity","p","DrawPaint","drawPaint","DrawImage","DrawCircle","DrawPoints","DrawPath","DrawRect","DrawRRect","DrawOval","DrawLine","DrawPatch","DrawVertices","DrawDiffRect","DrawText","DrawTextPath","DrawTextBlob","DrawGlyphs","DrawPicture","DrawImageSVG","DrawParagraph","DrawAtlas","DrawSkottie","console","warn","type","replay","commands"],"sources":["Player.ts"],"sourcesContent":["import type { DrawingNodeProps } from \"../../dom/types\";\n\nimport {\n drawCircle,\n drawImage,\n drawOval,\n drawPath,\n drawPoints,\n drawRect,\n drawRRect,\n drawLine,\n drawAtlas,\n drawParagraph,\n drawImageSVG,\n drawPicture,\n drawGlyphs,\n drawTextBlob,\n drawTextPath,\n drawText,\n drawDiffRect,\n drawVertices,\n drawPatch,\n drawSkottie,\n} from \"./commands/Drawing\";\nimport { drawBox, isBoxCommand } from \"./commands/Box\";\nimport {\n composeColorFilters,\n isPushColorFilter,\n pushColorFilter,\n} from \"./commands/ColorFilters\";\nimport { saveCTM } from \"./commands/CTM\";\nimport {\n setBlurMaskFilter,\n isPushImageFilter,\n pushImageFilter,\n composeImageFilters,\n} from \"./commands/ImageFilters\";\nimport { setPaintProperties } from \"./commands/Paint\";\nimport {\n composePathEffects,\n isPushPathEffect,\n pushPathEffect,\n} from \"./commands/PathEffects\";\nimport { isPushShader, pushShader } from \"./commands/Shaders\";\nimport {\n CommandType,\n isCommand,\n isDrawCommand,\n isGroup,\n materializeCommand,\n} from \"./Core\";\nimport type { Command, GroupCommand } from \"./Core\";\nimport type { DrawingContext } from \"./DrawingContext\";\n\ntype PendingGroup = {\n command: GroupCommand;\n zIndex: number;\n order: number;\n};\n\nconst getZIndex = (command: GroupCommand) => {\n \"worklet\";\n const materialized = materializeCommand(command);\n const { zIndex } = (materialized.props ?? {}) as DrawingNodeProps;\n if (typeof zIndex !== \"number\" || Number.isNaN(zIndex)) {\n return 0;\n }\n return zIndex;\n};\n\nconst play = (ctx: DrawingContext, _command: Command) => {\n const flushPendingGroups = (\n // eslint-disable-next-line @typescript-eslint/no-shadow\n ctx: DrawingContext,\n pendingGroups: PendingGroup[]\n ) => {\n \"worklet\";\n if (pendingGroups.length === 0) {\n return;\n }\n pendingGroups\n .sort((a, b) =>\n a.zIndex === b.zIndex ? a.order - b.order : a.zIndex - b.zIndex\n )\n .forEach(({ command }) => {\n play(ctx, command);\n });\n pendingGroups.length = 0;\n };\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const playGroup = (ctx: DrawingContext, group: GroupCommand) => {\n \"worklet\";\n const pending: PendingGroup[] = [];\n group.children.forEach((child) => {\n if (isGroup(child)) {\n pending.push({\n command: child,\n zIndex: getZIndex(child),\n order: pending.length,\n });\n return;\n }\n flushPendingGroups(ctx, pending);\n play(ctx, child);\n });\n flushPendingGroups(ctx, pending);\n };\n\n if (isGroup(_command)) {\n playGroup(ctx, _command);\n return;\n }\n const command = materializeCommand(_command);\n if (isCommand(command, CommandType.SaveBackdropFilter)) {\n ctx.saveBackdropFilter();\n } else if (isCommand(command, CommandType.SaveLayer)) {\n ctx.materializePaint();\n const paint = ctx.paintDeclarations.pop();\n ctx.canvas.saveLayer(paint);\n } else if (isDrawCommand(command, CommandType.SavePaint)) {\n if (command.props.paint) {\n ctx.paints.push(command.props.paint);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { standalone } = command as any;\n ctx.savePaint();\n if (standalone) {\n const freshPaint = ctx.Skia.Paint();\n ctx.paint.assign(freshPaint);\n }\n setPaintProperties(ctx.Skia, ctx, command.props, standalone);\n }\n } else if (isCommand(command, CommandType.RestorePaint)) {\n ctx.restorePaint();\n } else if (isCommand(command, CommandType.ComposeColorFilter)) {\n composeColorFilters(ctx);\n } else if (isCommand(command, CommandType.RestorePaintDeclaration)) {\n ctx.materializePaint();\n const paint = ctx.restorePaint();\n if (!paint) {\n throw new Error(\"No paint declaration to push\");\n }\n ctx.paintDeclarations.push(paint);\n } else if (isCommand(command, CommandType.MaterializePaint)) {\n ctx.materializePaint();\n } else if (isPushColorFilter(command)) {\n pushColorFilter(ctx, command);\n } else if (isPushShader(command)) {\n pushShader(ctx, command);\n } else if (isPushImageFilter(command)) {\n pushImageFilter(ctx, command);\n } else if (isPushPathEffect(command)) {\n pushPathEffect(ctx, command);\n } else if (isCommand(command, CommandType.ComposePathEffect)) {\n composePathEffects(ctx);\n } else if (isCommand(command, CommandType.ComposeImageFilter)) {\n composeImageFilters(ctx);\n } else if (isDrawCommand(command, CommandType.PushBlurMaskFilter)) {\n setBlurMaskFilter(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.SaveCTM)) {\n saveCTM(ctx, command.props);\n } else if (isCommand(command, CommandType.RestoreCTM)) {\n ctx.canvas.restore();\n } else {\n // TODO: is a copy needed here?\n // apply opacity to the current paint.\n const paint = ctx.paint.copy();\n paint.setAlphaf(paint.getAlphaf() * ctx.getOpacity());\n const paints = [paint, ...ctx.paintDeclarations];\n ctx.paintDeclarations = [];\n paints.forEach((p) => {\n ctx.paints.push(p);\n if (isBoxCommand(command)) {\n drawBox(ctx, command);\n } else if (isCommand(command, CommandType.DrawPaint)) {\n ctx.canvas.drawPaint(ctx.paint);\n } else if (isDrawCommand(command, CommandType.DrawImage)) {\n drawImage(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawCircle)) {\n drawCircle(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPoints)) {\n drawPoints(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPath)) {\n drawPath(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawRect)) {\n drawRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawRRect)) {\n drawRRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawOval)) {\n drawOval(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawLine)) {\n drawLine(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPatch)) {\n drawPatch(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawVertices)) {\n drawVertices(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawDiffRect)) {\n drawDiffRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawText)) {\n drawText(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawTextPath)) {\n drawTextPath(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawTextBlob)) {\n drawTextBlob(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawGlyphs)) {\n drawGlyphs(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPicture)) {\n drawPicture(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawImageSVG)) {\n drawImageSVG(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawParagraph)) {\n drawParagraph(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawAtlas)) {\n drawAtlas(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawSkottie)) {\n drawSkottie(ctx, command.props);\n } else {\n console.warn(`Unknown command: ${command.type}`);\n }\n ctx.paints.pop();\n });\n }\n};\nexport function replay(ctx: DrawingContext, commands: Command[]) {\n \"worklet\";\n //console.log(debugTree(commands));\n commands.forEach((command) => {\n play(ctx, command);\n });\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["drawCircle","drawImage","drawOval","drawPath","drawPoints","drawRect","drawRRect","drawLine","drawAtlas","drawParagraph","drawImageSVG","drawPicture","drawGlyphs","drawTextBlob","drawTextPath","drawText","drawDiffRect","drawVertices","drawPatch","drawSkottie","drawBox","isBoxCommand","composeColorFilters","isPushColorFilter","pushColorFilter","saveCTM","setBlurMaskFilter","isPushImageFilter","pushImageFilter","composeImageFilters","setPaintProperties","composePathEffects","isPushPathEffect","pushPathEffect","isPushShader","pushShader","CommandType","isCommand","isDrawCommand","isGroup","materializeCommand","getZIndex","command","_materialized$props","materialized","zIndex","props","Number","isNaN","flushPendingGroups","ctx","pendingGroups","playFn","length","sort","a","b","order","forEach","playGroup","group","pending","children","child","push","play","_command","SaveBackdropFilter","saveBackdropFilter","SaveLayer","materializePaint","paint","paintDeclarations","pop","canvas","saveLayer","SavePaint","paints","standalone","savePaint","freshPaint","Skia","Paint","assign","RestorePaint","restorePaint","ComposeColorFilter","RestorePaintDeclaration","Error","MaterializePaint","ComposePathEffect","ComposeImageFilter","PushBlurMaskFilter","SaveCTM","RestoreCTM","restore","copy","setAlphaf","getAlphaf","getOpacity","p","DrawPaint","drawPaint","DrawImage","DrawCircle","DrawPoints","DrawPath","DrawRect","DrawRRect","DrawOval","DrawLine","DrawPatch","DrawVertices","DrawDiffRect","DrawText","DrawTextPath","DrawTextBlob","DrawGlyphs","DrawPicture","DrawImageSVG","DrawParagraph","DrawAtlas","DrawSkottie","console","warn","type","replay","commands"],"sources":["Player.ts"],"sourcesContent":["import type { DrawingNodeProps } from \"../../dom/types\";\n\nimport {\n drawCircle,\n drawImage,\n drawOval,\n drawPath,\n drawPoints,\n drawRect,\n drawRRect,\n drawLine,\n drawAtlas,\n drawParagraph,\n drawImageSVG,\n drawPicture,\n drawGlyphs,\n drawTextBlob,\n drawTextPath,\n drawText,\n drawDiffRect,\n drawVertices,\n drawPatch,\n drawSkottie,\n} from \"./commands/Drawing\";\nimport { drawBox, isBoxCommand } from \"./commands/Box\";\nimport {\n composeColorFilters,\n isPushColorFilter,\n pushColorFilter,\n} from \"./commands/ColorFilters\";\nimport { saveCTM } from \"./commands/CTM\";\nimport {\n setBlurMaskFilter,\n isPushImageFilter,\n pushImageFilter,\n composeImageFilters,\n} from \"./commands/ImageFilters\";\nimport { setPaintProperties } from \"./commands/Paint\";\nimport {\n composePathEffects,\n isPushPathEffect,\n pushPathEffect,\n} from \"./commands/PathEffects\";\nimport { isPushShader, pushShader } from \"./commands/Shaders\";\nimport {\n CommandType,\n isCommand,\n isDrawCommand,\n isGroup,\n materializeCommand,\n} from \"./Core\";\nimport type { Command, GroupCommand } from \"./Core\";\nimport type { DrawingContext } from \"./DrawingContext\";\n\ntype PendingGroup = {\n command: GroupCommand;\n zIndex: number;\n order: number;\n};\n\nconst getZIndex = (command: GroupCommand) => {\n \"worklet\";\n const materialized = materializeCommand(command);\n const { zIndex } = (materialized.props ?? {}) as DrawingNodeProps;\n if (typeof zIndex !== \"number\" || Number.isNaN(zIndex)) {\n return 0;\n }\n return zIndex;\n};\n\nconst flushPendingGroups = (\n ctx: DrawingContext,\n pendingGroups: PendingGroup[],\n playFn: (ctx: DrawingContext, cmd: Command) => void\n) => {\n \"worklet\";\n if (pendingGroups.length === 0) {\n return;\n }\n pendingGroups\n .sort((a, b) =>\n a.zIndex === b.zIndex ? a.order - b.order : a.zIndex - b.zIndex\n )\n .forEach(({ command }) => {\n playFn(ctx, command);\n });\n pendingGroups.length = 0;\n};\n\nconst playGroup = (\n ctx: DrawingContext,\n group: GroupCommand,\n playFn: (ctx: DrawingContext, cmd: Command) => void\n) => {\n \"worklet\";\n const pending: PendingGroup[] = [];\n group.children.forEach((child) => {\n if (isGroup(child)) {\n pending.push({\n command: child,\n zIndex: getZIndex(child),\n order: pending.length,\n });\n return;\n }\n flushPendingGroups(ctx, pending, playFn);\n playFn(ctx, child);\n });\n flushPendingGroups(ctx, pending, playFn);\n};\n\nconst play = (ctx: DrawingContext, _command: Command) => {\n if (isGroup(_command)) {\n playGroup(ctx, _command, play);\n return;\n }\n const command = materializeCommand(_command);\n if (isCommand(command, CommandType.SaveBackdropFilter)) {\n ctx.saveBackdropFilter();\n } else if (isCommand(command, CommandType.SaveLayer)) {\n ctx.materializePaint();\n const paint = ctx.paintDeclarations.pop();\n ctx.canvas.saveLayer(paint);\n } else if (isDrawCommand(command, CommandType.SavePaint)) {\n if (command.props.paint) {\n ctx.paints.push(command.props.paint);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { standalone } = command as any;\n ctx.savePaint();\n if (standalone) {\n const freshPaint = ctx.Skia.Paint();\n ctx.paint.assign(freshPaint);\n }\n setPaintProperties(ctx.Skia, ctx, command.props, standalone);\n }\n } else if (isCommand(command, CommandType.RestorePaint)) {\n ctx.restorePaint();\n } else if (isCommand(command, CommandType.ComposeColorFilter)) {\n composeColorFilters(ctx);\n } else if (isCommand(command, CommandType.RestorePaintDeclaration)) {\n ctx.materializePaint();\n const paint = ctx.restorePaint();\n if (!paint) {\n throw new Error(\"No paint declaration to push\");\n }\n ctx.paintDeclarations.push(paint);\n } else if (isCommand(command, CommandType.MaterializePaint)) {\n ctx.materializePaint();\n } else if (isPushColorFilter(command)) {\n pushColorFilter(ctx, command);\n } else if (isPushShader(command)) {\n pushShader(ctx, command);\n } else if (isPushImageFilter(command)) {\n pushImageFilter(ctx, command);\n } else if (isPushPathEffect(command)) {\n pushPathEffect(ctx, command);\n } else if (isCommand(command, CommandType.ComposePathEffect)) {\n composePathEffects(ctx);\n } else if (isCommand(command, CommandType.ComposeImageFilter)) {\n composeImageFilters(ctx);\n } else if (isDrawCommand(command, CommandType.PushBlurMaskFilter)) {\n setBlurMaskFilter(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.SaveCTM)) {\n saveCTM(ctx, command.props);\n } else if (isCommand(command, CommandType.RestoreCTM)) {\n ctx.canvas.restore();\n } else {\n // TODO: is a copy needed here?\n // apply opacity to the current paint.\n const paint = ctx.paint.copy();\n paint.setAlphaf(paint.getAlphaf() * ctx.getOpacity());\n const paints = [paint, ...ctx.paintDeclarations];\n ctx.paintDeclarations = [];\n paints.forEach((p) => {\n ctx.paints.push(p);\n if (isBoxCommand(command)) {\n drawBox(ctx, command);\n } else if (isCommand(command, CommandType.DrawPaint)) {\n ctx.canvas.drawPaint(ctx.paint);\n } else if (isDrawCommand(command, CommandType.DrawImage)) {\n drawImage(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawCircle)) {\n drawCircle(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPoints)) {\n drawPoints(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPath)) {\n drawPath(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawRect)) {\n drawRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawRRect)) {\n drawRRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawOval)) {\n drawOval(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawLine)) {\n drawLine(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPatch)) {\n drawPatch(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawVertices)) {\n drawVertices(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawDiffRect)) {\n drawDiffRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawText)) {\n drawText(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawTextPath)) {\n drawTextPath(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawTextBlob)) {\n drawTextBlob(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawGlyphs)) {\n drawGlyphs(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPicture)) {\n drawPicture(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawImageSVG)) {\n drawImageSVG(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawParagraph)) {\n drawParagraph(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawAtlas)) {\n drawAtlas(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawSkottie)) {\n drawSkottie(ctx, command.props);\n } else {\n console.warn(`Unknown command: ${command.type}`);\n }\n ctx.paints.pop();\n });\n }\n};\nexport function replay(ctx: DrawingContext, commands: Command[]) {\n \"worklet\";\n //console.log(debugTree(commands));\n commands.forEach((command) => {\n play(ctx, command);\n });\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "setup-skia-web": "scripts/setup-canvaskit.js"
9
9
  },
10
10
  "title": "React Native Skia",
11
- "version": "2.4.4",
11
+ "version": "2.4.5",
12
12
  "skia": {
13
13
  "version": "m142",
14
14
  "checksums": {
@@ -68,46 +68,50 @@ const getZIndex = (command: GroupCommand) => {
68
68
  return zIndex;
69
69
  };
70
70
 
71
- const play = (ctx: DrawingContext, _command: Command) => {
72
- const flushPendingGroups = (
73
- // eslint-disable-next-line @typescript-eslint/no-shadow
74
- ctx: DrawingContext,
75
- pendingGroups: PendingGroup[]
76
- ) => {
77
- "worklet";
78
- if (pendingGroups.length === 0) {
71
+ const flushPendingGroups = (
72
+ ctx: DrawingContext,
73
+ pendingGroups: PendingGroup[],
74
+ playFn: (ctx: DrawingContext, cmd: Command) => void
75
+ ) => {
76
+ "worklet";
77
+ if (pendingGroups.length === 0) {
78
+ return;
79
+ }
80
+ pendingGroups
81
+ .sort((a, b) =>
82
+ a.zIndex === b.zIndex ? a.order - b.order : a.zIndex - b.zIndex
83
+ )
84
+ .forEach(({ command }) => {
85
+ playFn(ctx, command);
86
+ });
87
+ pendingGroups.length = 0;
88
+ };
89
+
90
+ const playGroup = (
91
+ ctx: DrawingContext,
92
+ group: GroupCommand,
93
+ playFn: (ctx: DrawingContext, cmd: Command) => void
94
+ ) => {
95
+ "worklet";
96
+ const pending: PendingGroup[] = [];
97
+ group.children.forEach((child) => {
98
+ if (isGroup(child)) {
99
+ pending.push({
100
+ command: child,
101
+ zIndex: getZIndex(child),
102
+ order: pending.length,
103
+ });
79
104
  return;
80
105
  }
81
- pendingGroups
82
- .sort((a, b) =>
83
- a.zIndex === b.zIndex ? a.order - b.order : a.zIndex - b.zIndex
84
- )
85
- .forEach(({ command }) => {
86
- play(ctx, command);
87
- });
88
- pendingGroups.length = 0;
89
- };
90
- // eslint-disable-next-line @typescript-eslint/no-shadow
91
- const playGroup = (ctx: DrawingContext, group: GroupCommand) => {
92
- "worklet";
93
- const pending: PendingGroup[] = [];
94
- group.children.forEach((child) => {
95
- if (isGroup(child)) {
96
- pending.push({
97
- command: child,
98
- zIndex: getZIndex(child),
99
- order: pending.length,
100
- });
101
- return;
102
- }
103
- flushPendingGroups(ctx, pending);
104
- play(ctx, child);
105
- });
106
- flushPendingGroups(ctx, pending);
107
- };
106
+ flushPendingGroups(ctx, pending, playFn);
107
+ playFn(ctx, child);
108
+ });
109
+ flushPendingGroups(ctx, pending, playFn);
110
+ };
108
111
 
112
+ const play = (ctx: DrawingContext, _command: Command) => {
109
113
  if (isGroup(_command)) {
110
- playGroup(ctx, _command);
114
+ playGroup(ctx, _command, play);
111
115
  return;
112
116
  }
113
117
  const command = materializeCommand(_command);