@shopify/react-native-skia 2.3.14 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/cpp/api/JsiSkPictureFactory.h +24 -6
  2. package/cpp/api/recorder/Command.h +12 -0
  3. package/cpp/api/recorder/JsiRecorder.h +2 -1
  4. package/cpp/api/recorder/RNRecorder.h +434 -374
  5. package/lib/commonjs/dom/types/Common.d.ts +1 -0
  6. package/lib/commonjs/dom/types/Common.js.map +1 -1
  7. package/lib/commonjs/skia/types/Recorder.d.ts +2 -2
  8. package/lib/commonjs/skia/types/Recorder.js.map +1 -1
  9. package/lib/commonjs/sksg/Recorder/Core.d.ts +2 -1
  10. package/lib/commonjs/sksg/Recorder/Core.js +0 -42
  11. package/lib/commonjs/sksg/Recorder/Core.js.map +1 -1
  12. package/lib/commonjs/sksg/Recorder/Debug.d.ts +2 -0
  13. package/lib/commonjs/sksg/Recorder/Debug.js +86 -0
  14. package/lib/commonjs/sksg/Recorder/Debug.js.map +1 -0
  15. package/lib/commonjs/sksg/Recorder/Player.d.ts +1 -1
  16. package/lib/commonjs/sksg/Recorder/Player.js +51 -7
  17. package/lib/commonjs/sksg/Recorder/Player.js.map +1 -1
  18. package/lib/commonjs/sksg/Recorder/ReanimatedRecorder.d.ts +2 -2
  19. package/lib/commonjs/sksg/Recorder/ReanimatedRecorder.js +7 -2
  20. package/lib/commonjs/sksg/Recorder/ReanimatedRecorder.js.map +1 -1
  21. package/lib/commonjs/sksg/Recorder/Recorder.d.ts +2 -2
  22. package/lib/commonjs/sksg/Recorder/Recorder.js +7 -3
  23. package/lib/commonjs/sksg/Recorder/Recorder.js.map +1 -1
  24. package/lib/commonjs/sksg/Recorder/Visitor.js +14 -6
  25. package/lib/commonjs/sksg/Recorder/Visitor.js.map +1 -1
  26. package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
  27. package/lib/module/dom/types/Common.d.ts +1 -0
  28. package/lib/module/dom/types/Common.js.map +1 -1
  29. package/lib/module/skia/types/Recorder.d.ts +2 -2
  30. package/lib/module/skia/types/Recorder.js.map +1 -1
  31. package/lib/module/sksg/Recorder/Core.d.ts +2 -1
  32. package/lib/module/sksg/Recorder/Core.js +0 -42
  33. package/lib/module/sksg/Recorder/Core.js.map +1 -1
  34. package/lib/module/sksg/Recorder/Debug.d.ts +2 -0
  35. package/lib/module/sksg/Recorder/Debug.js +79 -0
  36. package/lib/module/sksg/Recorder/Debug.js.map +1 -0
  37. package/lib/module/sksg/Recorder/Player.d.ts +1 -1
  38. package/lib/module/sksg/Recorder/Player.js +50 -5
  39. package/lib/module/sksg/Recorder/Player.js.map +1 -1
  40. package/lib/module/sksg/Recorder/ReanimatedRecorder.d.ts +2 -2
  41. package/lib/module/sksg/Recorder/ReanimatedRecorder.js +7 -2
  42. package/lib/module/sksg/Recorder/ReanimatedRecorder.js.map +1 -1
  43. package/lib/module/sksg/Recorder/Recorder.d.ts +2 -2
  44. package/lib/module/sksg/Recorder/Recorder.js +7 -3
  45. package/lib/module/sksg/Recorder/Recorder.js.map +1 -1
  46. package/lib/module/sksg/Recorder/Visitor.js +14 -6
  47. package/lib/module/sksg/Recorder/Visitor.js.map +1 -1
  48. package/lib/module/views/SkiaPictureView.js.map +1 -1
  49. package/lib/typescript/lib/commonjs/sksg/Recorder/Debug.d.ts +2 -0
  50. package/lib/typescript/lib/commonjs/sksg/Recorder/ReanimatedRecorder.d.ts +1 -1
  51. package/lib/typescript/lib/commonjs/sksg/Recorder/Recorder.d.ts +1 -1
  52. package/lib/typescript/lib/module/sksg/Recorder/Debug.d.ts +1 -0
  53. package/lib/typescript/lib/module/sksg/Recorder/ReanimatedRecorder.d.ts +1 -1
  54. package/lib/typescript/lib/module/sksg/Recorder/Recorder.d.ts +1 -1
  55. package/lib/typescript/src/dom/types/Common.d.ts +1 -0
  56. package/lib/typescript/src/skia/types/Recorder.d.ts +2 -2
  57. package/lib/typescript/src/sksg/Recorder/Core.d.ts +2 -1
  58. package/lib/typescript/src/sksg/Recorder/Debug.d.ts +2 -0
  59. package/lib/typescript/src/sksg/Recorder/Player.d.ts +1 -1
  60. package/lib/typescript/src/sksg/Recorder/ReanimatedRecorder.d.ts +2 -2
  61. package/lib/typescript/src/sksg/Recorder/Recorder.d.ts +2 -2
  62. package/package.json +1 -1
  63. package/src/dom/types/Common.ts +3 -1
  64. package/src/skia/types/Recorder.ts +2 -1
  65. package/src/sksg/Recorder/Core.ts +2 -43
  66. package/src/sksg/Recorder/Debug.ts +87 -0
  67. package/src/sksg/Recorder/Player.ts +62 -7
  68. package/src/sksg/Recorder/ReanimatedRecorder.ts +8 -2
  69. package/src/sksg/Recorder/Recorder.ts +7 -2
  70. package/src/sksg/Recorder/Visitor.ts +18 -6
  71. package/src/views/SkiaPictureView.tsx +7 -1
@@ -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","play","ctx","_command","children","forEach","child","command","SaveBackdropFilter","saveBackdropFilter","SaveLayer","materializePaint","paint","paintDeclarations","pop","canvas","saveLayer","SavePaint","props","paints","push","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 {\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 } from \"./Core\";\nimport type { DrawingContext } from \"./DrawingContext\";\n\nfunction play(ctx: DrawingContext, _command: Command) {\n \"worklet\";\n if (isGroup(_command)) {\n _command.children.forEach((child) => play(ctx, child));\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}\n\nexport const replay = (ctx: DrawingContext, commands: Command[]) => {\n \"worklet\";\n commands.forEach((command) => {\n play(ctx, command);\n });\n};\n"],"mappings":"AAAA,SACEA,UAAU,EACVC,SAAS,EACTC,QAAQ,EACRC,QAAQ,EACRC,UAAU,EACVC,QAAQ,EACRC,SAAS,EACTC,QAAQ,EACRC,SAAS,EACTC,aAAa,EACbC,YAAY,EACZC,WAAW,EACXC,UAAU,EACVC,YAAY,EACZC,YAAY,EACZC,QAAQ,EACRC,YAAY,EACZC,YAAY,EACZC,SAAS,EACTC,WAAW,QACN,oBAAoB;AAC3B,SAASC,OAAO,EAAEC,YAAY,QAAQ,gBAAgB;AACtD,SACEC,mBAAmB,EACnBC,iBAAiB,EACjBC,eAAe,QACV,yBAAyB;AAChC,SAASC,OAAO,QAAQ,gBAAgB;AACxC,SACEC,iBAAiB,EACjBC,iBAAiB,EACjBC,eAAe,EACfC,mBAAmB,QACd,yBAAyB;AAChC,SAASC,kBAAkB,QAAQ,kBAAkB;AACrD,SACEC,kBAAkB,EAClBC,gBAAgB,EAChBC,cAAc,QACT,wBAAwB;AAC/B,SAASC,YAAY,EAAEC,UAAU,QAAQ,oBAAoB;AAC7D,SACEC,WAAW,EACXC,SAAS,EACTC,aAAa,EACbC,OAAO,EACPC,kBAAkB,QACb,QAAQ;AAIf,SAASC,IAAIA,CAACC,GAAmB,EAAEC,QAAiB,EAAE;EACpD,SAAS;;EACT,IAAIJ,OAAO,CAACI,QAAQ,CAAC,EAAE;IACrBA,QAAQ,CAACC,QAAQ,CAACC,OAAO,CAAEC,KAAK,IAAKL,IAAI,CAACC,GAAG,EAAEI,KAAK,CAAC,CAAC;IACtD;EACF;EACA,MAAMC,OAAO,GAAGP,kBAAkB,CAACG,QAAQ,CAAC;EAC5C,IAAIN,SAAS,CAACU,OAAO,EAAEX,WAAW,CAACY,kBAAkB,CAAC,EAAE;IACtDN,GAAG,CAACO,kBAAkB,CAAC,CAAC;EAC1B,CAAC,MAAM,IAAIZ,SAAS,CAACU,OAAO,EAAEX,WAAW,CAACc,SAAS,CAAC,EAAE;IACpDR,GAAG,CAACS,gBAAgB,CAAC,CAAC;IACtB,MAAMC,KAAK,GAAGV,GAAG,CAACW,iBAAiB,CAACC,GAAG,CAAC,CAAC;IACzCZ,GAAG,CAACa,MAAM,CAACC,SAAS,CAACJ,KAAK,CAAC;EAC7B,CAAC,MAAM,IAAId,aAAa,CAACS,OAAO,EAAEX,WAAW,CAACqB,SAAS,CAAC,EAAE;IACxD,IAAIV,OAAO,CAACW,KAAK,CAACN,KAAK,EAAE;MACvBV,GAAG,CAACiB,MAAM,CAACC,IAAI,CAACb,OAAO,CAACW,KAAK,CAACN,KAAK,CAAC;IACtC,CAAC,MAAM;MACL;MACA,MAAM;QAAES;MAAW,CAAC,GAAGd,OAAc;MACrCL,GAAG,CAACoB,SAAS,CAAC,CAAC;MACf,IAAID,UAAU,EAAE;QACd,MAAME,UAAU,GAAGrB,GAAG,CAACsB,IAAI,CAACC,KAAK,CAAC,CAAC;QACnCvB,GAAG,CAACU,KAAK,CAACc,MAAM,CAACH,UAAU,CAAC;MAC9B;MACAjC,kBAAkB,CAACY,GAAG,CAACsB,IAAI,EAAEtB,GAAG,EAAEK,OAAO,CAACW,KAAK,EAAEG,UAAU,CAAC;IAC9D;EACF,CAAC,MAAM,IAAIxB,SAAS,CAACU,OAAO,EAAEX,WAAW,CAAC+B,YAAY,CAAC,EAAE;IACvDzB,GAAG,CAAC0B,YAAY,CAAC,CAAC;EACpB,CAAC,MAAM,IAAI/B,SAAS,CAACU,OAAO,EAAEX,WAAW,CAACiC,kBAAkB,CAAC,EAAE;IAC7D/C,mBAAmB,CAACoB,GAAG,CAAC;EAC1B,CAAC,MAAM,IAAIL,SAAS,CAACU,OAAO,EAAEX,WAAW,CAACkC,uBAAuB,CAAC,EAAE;IAClE5B,GAAG,CAACS,gBAAgB,CAAC,CAAC;IACtB,MAAMC,KAAK,GAAGV,GAAG,CAAC0B,YAAY,CAAC,CAAC;IAChC,IAAI,CAAChB,KAAK,EAAE;MACV,MAAM,IAAImB,KAAK,CAAC,8BAA8B,CAAC;IACjD;IACA7B,GAAG,CAACW,iBAAiB,CAACO,IAAI,CAACR,KAAK,CAAC;EACnC,CAAC,MAAM,IAAIf,SAAS,CAACU,OAAO,EAAEX,WAAW,CAACoC,gBAAgB,CAAC,EAAE;IAC3D9B,GAAG,CAACS,gBAAgB,CAAC,CAAC;EACxB,CAAC,MAAM,IAAI5B,iBAAiB,CAACwB,OAAO,CAAC,EAAE;IACrCvB,eAAe,CAACkB,GAAG,EAAEK,OAAO,CAAC;EAC/B,CAAC,MAAM,IAAIb,YAAY,CAACa,OAAO,CAAC,EAAE;IAChCZ,UAAU,CAACO,GAAG,EAAEK,OAAO,CAAC;EAC1B,CAAC,MAAM,IAAIpB,iBAAiB,CAACoB,OAAO,CAAC,EAAE;IACrCnB,eAAe,CAACc,GAAG,EAAEK,OAAO,CAAC;EAC/B,CAAC,MAAM,IAAIf,gBAAgB,CAACe,OAAO,CAAC,EAAE;IACpCd,cAAc,CAACS,GAAG,EAAEK,OAAO,CAAC;EAC9B,CAAC,MAAM,IAAIV,SAAS,CAACU,OAAO,EAAEX,WAAW,CAACqC,iBAAiB,CAAC,EAAE;IAC5D1C,kBAAkB,CAACW,GAAG,CAAC;EACzB,CAAC,MAAM,IAAIL,SAAS,CAACU,OAAO,EAAEX,WAAW,CAACsC,kBAAkB,CAAC,EAAE;IAC7D7C,mBAAmB,CAACa,GAAG,CAAC;EAC1B,CAAC,MAAM,IAAIJ,aAAa,CAACS,OAAO,EAAEX,WAAW,CAACuC,kBAAkB,CAAC,EAAE;IACjEjD,iBAAiB,CAACgB,GAAG,EAAEK,OAAO,CAACW,KAAK,CAAC;EACvC,CAAC,MAAM,IAAIpB,aAAa,CAACS,OAAO,EAAEX,WAAW,CAACwC,OAAO,CAAC,EAAE;IACtDnD,OAAO,CAACiB,GAAG,EAAEK,OAAO,CAACW,KAAK,CAAC;EAC7B,CAAC,MAAM,IAAIrB,SAAS,CAACU,OAAO,EAAEX,WAAW,CAACyC,UAAU,CAAC,EAAE;IACrDnC,GAAG,CAACa,MAAM,CAACuB,OAAO,CAAC,CAAC;EACtB,CAAC,MAAM;IACL;IACA;IACA,MAAM1B,KAAK,GAAGV,GAAG,CAACU,KAAK,CAAC2B,IAAI,CAAC,CAAC;IAC9B3B,KAAK,CAAC4B,SAAS,CAAC5B,KAAK,CAAC6B,SAAS,CAAC,CAAC,GAAGvC,GAAG,CAACwC,UAAU,CAAC,CAAC,CAAC;IACrD,MAAMvB,MAAM,GAAG,CAACP,KAAK,EAAE,GAAGV,GAAG,CAACW,iBAAiB,CAAC;IAChDX,GAAG,CAACW,iBAAiB,GAAG,EAAE;IAC1BM,MAAM,CAACd,OAAO,CAAEsC,CAAC,IAAK;MACpBzC,GAAG,CAACiB,MAAM,CAACC,IAAI,CAACuB,CAAC,CAAC;MAClB,IAAI9D,YAAY,CAAC0B,OAAO,CAAC,EAAE;QACzB3B,OAAO,CAACsB,GAAG,EAAEK,OAAO,CAAC;MACvB,CAAC,MAAM,IAAIV,SAAS,CAACU,OAAO,EAAEX,WAAW,CAACgD,SAAS,CAAC,EAAE;QACpD1C,GAAG,CAACa,MAAM,CAAC8B,SAAS,CAAC3C,GAAG,CAACU,KAAK,CAAC;MACjC,CAAC,MAAM,IAAId,aAAa,CAACS,OAAO,EAAEX,WAAW,CAACkD,SAAS,CAAC,EAAE;QACxDrF,SAAS,CAACyC,GAAG,EAAEK,OAAO,CAACW,KAAK,CAAC;MAC/B,CAAC,MAAM,IAAIpB,aAAa,CAACS,OAAO,EAAEX,WAAW,CAACmD,UAAU,CAAC,EAAE;QACzDvF,UAAU,CAAC0C,GAAG,EAAEK,OAAO,CAACW,KAAK,CAAC;MAChC,CAAC,MAAM,IAAIpB,aAAa,CAACS,OAAO,EAAEX,WAAW,CAACoD,UAAU,CAAC,EAAE;QACzDpF,UAAU,CAACsC,GAAG,EAAEK,OAAO,CAACW,KAAK,CAAC;MAChC,CAAC,MAAM,IAAIpB,aAAa,CAACS,OAAO,EAAEX,WAAW,CAACqD,QAAQ,CAAC,EAAE;QACvDtF,QAAQ,CAACuC,GAAG,EAAEK,OAAO,CAACW,KAAK,CAAC;MAC9B,CAAC,MAAM,IAAIpB,aAAa,CAACS,OAAO,EAAEX,WAAW,CAACsD,QAAQ,CAAC,EAAE;QACvDrF,QAAQ,CAACqC,GAAG,EAAEK,OAAO,CAACW,KAAK,CAAC;MAC9B,CAAC,MAAM,IAAIpB,aAAa,CAACS,OAAO,EAAEX,WAAW,CAACuD,SAAS,CAAC,EAAE;QACxDrF,SAAS,CAACoC,GAAG,EAAEK,OAAO,CAACW,KAAK,CAAC;MAC/B,CAAC,MAAM,IAAIpB,aAAa,CAACS,OAAO,EAAEX,WAAW,CAACwD,QAAQ,CAAC,EAAE;QACvD1F,QAAQ,CAACwC,GAAG,EAAEK,OAAO,CAACW,KAAK,CAAC;MAC9B,CAAC,MAAM,IAAIpB,aAAa,CAACS,OAAO,EAAEX,WAAW,CAACyD,QAAQ,CAAC,EAAE;QACvDtF,QAAQ,CAACmC,GAAG,EAAEK,OAAO,CAACW,KAAK,CAAC;MAC9B,CAAC,MAAM,IAAIpB,aAAa,CAACS,OAAO,EAAEX,WAAW,CAAC0D,SAAS,CAAC,EAAE;QACxD5E,SAAS,CAACwB,GAAG,EAAEK,OAAO,CAACW,KAAK,CAAC;MAC/B,CAAC,MAAM,IAAIpB,aAAa,CAACS,OAAO,EAAEX,WAAW,CAAC2D,YAAY,CAAC,EAAE;QAC3D9E,YAAY,CAACyB,GAAG,EAAEK,OAAO,CAACW,KAAK,CAAC;MAClC,CAAC,MAAM,IAAIpB,aAAa,CAACS,OAAO,EAAEX,WAAW,CAAC4D,YAAY,CAAC,EAAE;QAC3DhF,YAAY,CAAC0B,GAAG,EAAEK,OAAO,CAACW,KAAK,CAAC;MAClC,CAAC,MAAM,IAAIpB,aAAa,CAACS,OAAO,EAAEX,WAAW,CAAC6D,QAAQ,CAAC,EAAE;QACvDlF,QAAQ,CAAC2B,GAAG,EAAEK,OAAO,CAACW,KAAK,CAAC;MAC9B,CAAC,MAAM,IAAIpB,aAAa,CAACS,OAAO,EAAEX,WAAW,CAAC8D,YAAY,CAAC,EAAE;QAC3DpF,YAAY,CAAC4B,GAAG,EAAEK,OAAO,CAACW,KAAK,CAAC;MAClC,CAAC,MAAM,IAAIpB,aAAa,CAACS,OAAO,EAAEX,WAAW,CAAC+D,YAAY,CAAC,EAAE;QAC3DtF,YAAY,CAAC6B,GAAG,EAAEK,OAAO,CAACW,KAAK,CAAC;MAClC,CAAC,MAAM,IAAIpB,aAAa,CAACS,OAAO,EAAEX,WAAW,CAACgE,UAAU,CAAC,EAAE;QACzDxF,UAAU,CAAC8B,GAAG,EAAEK,OAAO,CAACW,KAAK,CAAC;MAChC,CAAC,MAAM,IAAIpB,aAAa,CAACS,OAAO,EAAEX,WAAW,CAACiE,WAAW,CAAC,EAAE;QAC1D1F,WAAW,CAAC+B,GAAG,EAAEK,OAAO,CAACW,KAAK,CAAC;MACjC,CAAC,MAAM,IAAIpB,aAAa,CAACS,OAAO,EAAEX,WAAW,CAACkE,YAAY,CAAC,EAAE;QAC3D5F,YAAY,CAACgC,GAAG,EAAEK,OAAO,CAACW,KAAK,CAAC;MAClC,CAAC,MAAM,IAAIpB,aAAa,CAACS,OAAO,EAAEX,WAAW,CAACmE,aAAa,CAAC,EAAE;QAC5D9F,aAAa,CAACiC,GAAG,EAAEK,OAAO,CAACW,KAAK,CAAC;MACnC,CAAC,MAAM,IAAIpB,aAAa,CAACS,OAAO,EAAEX,WAAW,CAACoE,SAAS,CAAC,EAAE;QACxDhG,SAAS,CAACkC,GAAG,EAAEK,OAAO,CAACW,KAAK,CAAC;MAC/B,CAAC,MAAM,IAAIpB,aAAa,CAACS,OAAO,EAAEX,WAAW,CAACqE,WAAW,CAAC,EAAE;QAC1DtF,WAAW,CAACuB,GAAG,EAAEK,OAAO,CAACW,KAAK,CAAC;MACjC,CAAC,MAAM;QACLgD,OAAO,CAACC,IAAI,CAAC,oBAAoB5D,OAAO,CAAC6D,IAAI,EAAE,CAAC;MAClD;MACAlE,GAAG,CAACiB,MAAM,CAACL,GAAG,CAAC,CAAC;IAClB,CAAC,CAAC;EACJ;AACF;AAEA,OAAO,MAAMuD,MAAM,GAAGA,CAACnE,GAAmB,EAAEoE,QAAmB,KAAK;EAClE,SAAS;;EACTA,QAAQ,CAACjE,OAAO,CAAEE,OAAO,IAAK;IAC5BN,IAAI,CAACC,GAAG,EAAEK,OAAO,CAAC;EACpB,CAAC,CAAC;AACJ,CAAC","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","length","sort","a","b","order","forEach","play","_command","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 flushPendingGroups = (\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\nconst play = (ctx: DrawingContext, _command: Command) => {\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 (\"worklet\");\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,6 +1,6 @@
1
1
  import type { SharedValue } from "react-native-reanimated";
2
2
  import type { BaseRecorder, JsiRecorder, Skia } from "../../skia/types";
3
- import type { PaintProps, NodeType, BlurMaskFilterProps, CTMProps, BoxProps, BoxShadowProps, ImageProps, CircleProps, PointsProps, PathProps, RectProps, RoundedRectProps, OvalProps, LineProps, PatchProps, VerticesProps, DiffRectProps, TextProps, TextPathProps, TextBlobProps, GlyphsProps, PictureProps, ImageSVGProps, ParagraphProps, AtlasProps, SkottieProps } from "../../dom/types";
3
+ import type { PaintProps, NodeType, BlurMaskFilterProps, CTMProps, BoxProps, BoxShadowProps, ImageProps, CircleProps, PointsProps, PathProps, RectProps, RoundedRectProps, OvalProps, LineProps, PatchProps, VerticesProps, DiffRectProps, TextProps, TextPathProps, TextBlobProps, GlyphsProps, PictureProps, ImageSVGProps, ParagraphProps, AtlasProps, SkottieProps, DrawingNodeProps } from "../../dom/types";
4
4
  import type { AnimatedProps } from "../../renderer";
5
5
  /**
6
6
  * Currently the recorder only work if the GPU resources (e.g Images) are owned by the main thread.
@@ -14,7 +14,7 @@ export declare class ReanimatedRecorder implements BaseRecorder {
14
14
  private processAnimationValues;
15
15
  getRecorder(): JsiRecorder;
16
16
  getSharedValues(): SharedValue<unknown>[];
17
- saveGroup(): void;
17
+ saveGroup(props?: AnimatedProps<Pick<DrawingNodeProps, "zIndex">>): void;
18
18
  restoreGroup(): void;
19
19
  savePaint(props: AnimatedProps<PaintProps>, standalone: boolean): void;
20
20
  restorePaint(): void;
@@ -36,8 +36,13 @@ export class ReanimatedRecorder {
36
36
  getSharedValues() {
37
37
  return Array.from(this.values);
38
38
  }
39
- saveGroup() {
40
- this.recorder.saveGroup();
39
+ saveGroup(props) {
40
+ if (props) {
41
+ this.processAnimationValues(props);
42
+ this.recorder.saveGroup(props);
43
+ } else {
44
+ this.recorder.saveGroup();
45
+ }
41
46
  }
42
47
  restoreGroup() {
43
48
  this.recorder.restoreGroup();
@@ -1 +1 @@
1
- {"version":3,"names":["isSharedValue","ReanimatedRecorder","constructor","Skia","_defineProperty","Set","recorder","Recorder","reset","values","clear","processAnimationValues","props","Object","forEach","value","has","name","size","add","getRecorder","getSharedValues","Array","from","saveGroup","restoreGroup","savePaint","standalone","restorePaint","restorePaintDeclaration","materializePaint","pushPathEffect","pathEffectType","pushImageFilter","imageFilterType","pushColorFilter","colorFilterType","pushShader","shaderType","children","pushBlurMaskFilter","composePathEffect","composeColorFilter","composeImageFilter","saveCTM","restoreCTM","drawPaint","saveLayer","saveBackdropFilter","drawBox","boxProps","shadows","shadow","map","s","drawImage","drawCircle","drawPoints","drawPath","drawRect","drawRRect","drawOval","drawLine","drawPatch","drawVertices","drawDiffRect","drawText","drawTextPath","drawTextBlob","drawGlyphs","drawPicture","drawImageSVG","drawParagraph","drawAtlas","drawSkottie"],"sources":["ReanimatedRecorder.ts"],"sourcesContent":["import type { SharedValue } from \"react-native-reanimated\";\n\nimport type { BaseRecorder, JsiRecorder, Skia } from \"../../skia/types\";\nimport type {\n PaintProps,\n NodeType,\n BlurMaskFilterProps,\n CTMProps,\n BoxProps,\n BoxShadowProps,\n ImageProps,\n CircleProps,\n PointsProps,\n PathProps,\n RectProps,\n RoundedRectProps,\n OvalProps,\n LineProps,\n PatchProps,\n VerticesProps,\n DiffRectProps,\n TextProps,\n TextPathProps,\n TextBlobProps,\n GlyphsProps,\n PictureProps,\n ImageSVGProps,\n ParagraphProps,\n AtlasProps,\n SkottieProps,\n} from \"../../dom/types\";\nimport type { AnimatedProps } from \"../../renderer\";\nimport { isSharedValue } from \"../utils\";\n\n/**\n * Currently the recorder only work if the GPU resources (e.g Images) are owned by the main thread.\n * It will crash otherwise on Ganesh (iOS/Android).\n */\nexport class ReanimatedRecorder implements BaseRecorder {\n private values = new Set<SharedValue<unknown>>();\n private recorder: JsiRecorder;\n\n constructor(Skia: Skia) {\n this.recorder = Skia.Recorder();\n }\n\n reset() {\n this.values.clear();\n this.recorder.reset();\n }\n\n private processAnimationValues(props?: Record<string, unknown>) {\n if (!props) {\n return;\n }\n Object.values(props).forEach((value) => {\n if (isSharedValue(value) && !this.values.has(value)) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n value.name = `variable${this.values.size}`;\n this.values.add(value as SharedValue<unknown>);\n }\n });\n }\n\n getRecorder() {\n return this.recorder;\n }\n\n getSharedValues() {\n return Array.from(this.values);\n }\n\n saveGroup(): void {\n this.recorder.saveGroup();\n }\n\n restoreGroup(): void {\n this.recorder.restoreGroup();\n }\n\n savePaint(props: AnimatedProps<PaintProps>, standalone: boolean): void {\n this.processAnimationValues(props);\n this.recorder.savePaint(props, standalone);\n }\n\n restorePaint(): void {\n this.recorder.restorePaint();\n }\n\n restorePaintDeclaration(): void {\n this.recorder.restorePaintDeclaration();\n }\n\n materializePaint(): void {\n this.recorder.materializePaint();\n }\n\n pushPathEffect(\n pathEffectType: NodeType,\n props: AnimatedProps<unknown>\n ): void {\n this.processAnimationValues(props);\n this.recorder.pushPathEffect(pathEffectType, props);\n }\n\n pushImageFilter(\n imageFilterType: NodeType,\n props: AnimatedProps<unknown>\n ): void {\n this.processAnimationValues(props);\n this.recorder.pushImageFilter(imageFilterType, props);\n }\n\n pushColorFilter(\n colorFilterType: NodeType,\n props: AnimatedProps<unknown>\n ): void {\n this.processAnimationValues(props);\n this.recorder.pushColorFilter(colorFilterType, props);\n }\n\n pushShader(\n shaderType: NodeType,\n props: AnimatedProps<unknown>,\n children: number\n ): void {\n this.processAnimationValues(props);\n this.recorder.pushShader(shaderType, props, children);\n }\n\n pushBlurMaskFilter(props: AnimatedProps<BlurMaskFilterProps>): void {\n this.processAnimationValues(props);\n this.recorder.pushBlurMaskFilter(props);\n }\n\n composePathEffect(): void {\n this.recorder.composePathEffect();\n }\n\n composeColorFilter(): void {\n this.recorder.composeColorFilter();\n }\n\n composeImageFilter(): void {\n this.recorder.composeImageFilter();\n }\n\n saveCTM(props: AnimatedProps<CTMProps>): void {\n this.processAnimationValues(props);\n this.recorder.saveCTM(props);\n }\n\n restoreCTM(): void {\n this.recorder.restoreCTM();\n }\n\n drawPaint(): void {\n this.recorder.drawPaint();\n }\n\n saveLayer(): void {\n this.recorder.saveLayer();\n }\n\n saveBackdropFilter(): void {\n this.recorder.saveBackdropFilter();\n }\n\n drawBox(\n boxProps: AnimatedProps<BoxProps>,\n shadows: {\n props: BoxShadowProps;\n }[]\n ): void {\n this.processAnimationValues(boxProps);\n shadows.forEach((shadow) => {\n this.processAnimationValues(\n shadow.props as AnimatedProps<BoxShadowProps>\n );\n });\n this.recorder.drawBox(\n boxProps,\n // TODO: Fix this type BaseRecorder.drawBox()\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n shadows.map((s) => s.props)\n );\n }\n\n drawImage(props: AnimatedProps<ImageProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawImage(props);\n }\n\n drawCircle(props: AnimatedProps<CircleProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawCircle(props);\n }\n\n drawPoints(props: AnimatedProps<PointsProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawPoints(props);\n }\n\n drawPath(props: AnimatedProps<PathProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawPath(props);\n }\n\n drawRect(props: AnimatedProps<RectProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawRect(props);\n }\n\n drawRRect(props: AnimatedProps<RoundedRectProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawRRect(props);\n }\n\n drawOval(props: AnimatedProps<OvalProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawOval(props);\n }\n\n drawLine(props: AnimatedProps<LineProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawLine(props);\n }\n\n drawPatch(props: AnimatedProps<PatchProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawPatch(props);\n }\n\n drawVertices(props: AnimatedProps<VerticesProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawVertices(props);\n }\n\n drawDiffRect(props: AnimatedProps<DiffRectProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawDiffRect(props);\n }\n\n drawText(props: AnimatedProps<TextProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawText(props);\n }\n\n drawTextPath(props: AnimatedProps<TextPathProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawTextPath(props);\n }\n\n drawTextBlob(props: AnimatedProps<TextBlobProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawTextBlob(props);\n }\n\n drawGlyphs(props: AnimatedProps<GlyphsProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawGlyphs(props);\n }\n\n drawPicture(props: AnimatedProps<PictureProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawPicture(props);\n }\n\n drawImageSVG(props: AnimatedProps<ImageSVGProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawImageSVG(props);\n }\n\n drawParagraph(props: AnimatedProps<ParagraphProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawParagraph(props);\n }\n\n drawAtlas(props: AnimatedProps<AtlasProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawAtlas(props);\n }\n\n drawSkottie(props: AnimatedProps<SkottieProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawSkottie(props);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isSharedValue","ReanimatedRecorder","constructor","Skia","_defineProperty","Set","recorder","Recorder","reset","values","clear","processAnimationValues","props","Object","forEach","value","has","name","size","add","getRecorder","getSharedValues","Array","from","saveGroup","restoreGroup","savePaint","standalone","restorePaint","restorePaintDeclaration","materializePaint","pushPathEffect","pathEffectType","pushImageFilter","imageFilterType","pushColorFilter","colorFilterType","pushShader","shaderType","children","pushBlurMaskFilter","composePathEffect","composeColorFilter","composeImageFilter","saveCTM","restoreCTM","drawPaint","saveLayer","saveBackdropFilter","drawBox","boxProps","shadows","shadow","map","s","drawImage","drawCircle","drawPoints","drawPath","drawRect","drawRRect","drawOval","drawLine","drawPatch","drawVertices","drawDiffRect","drawText","drawTextPath","drawTextBlob","drawGlyphs","drawPicture","drawImageSVG","drawParagraph","drawAtlas","drawSkottie"],"sources":["ReanimatedRecorder.ts"],"sourcesContent":["import type { SharedValue } from \"react-native-reanimated\";\n\nimport type { BaseRecorder, JsiRecorder, Skia } from \"../../skia/types\";\nimport type {\n PaintProps,\n NodeType,\n BlurMaskFilterProps,\n CTMProps,\n BoxProps,\n BoxShadowProps,\n ImageProps,\n CircleProps,\n PointsProps,\n PathProps,\n RectProps,\n RoundedRectProps,\n OvalProps,\n LineProps,\n PatchProps,\n VerticesProps,\n DiffRectProps,\n TextProps,\n TextPathProps,\n TextBlobProps,\n GlyphsProps,\n PictureProps,\n ImageSVGProps,\n ParagraphProps,\n AtlasProps,\n SkottieProps,\n DrawingNodeProps,\n} from \"../../dom/types\";\nimport type { AnimatedProps } from \"../../renderer\";\nimport { isSharedValue } from \"../utils\";\n\n/**\n * Currently the recorder only work if the GPU resources (e.g Images) are owned by the main thread.\n * It will crash otherwise on Ganesh (iOS/Android).\n */\nexport class ReanimatedRecorder implements BaseRecorder {\n private values = new Set<SharedValue<unknown>>();\n private recorder: JsiRecorder;\n\n constructor(Skia: Skia) {\n this.recorder = Skia.Recorder();\n }\n\n reset() {\n this.values.clear();\n this.recorder.reset();\n }\n\n private processAnimationValues(props?: Record<string, unknown>) {\n if (!props) {\n return;\n }\n Object.values(props).forEach((value) => {\n if (isSharedValue(value) && !this.values.has(value)) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n value.name = `variable${this.values.size}`;\n this.values.add(value as SharedValue<unknown>);\n }\n });\n }\n\n getRecorder() {\n return this.recorder;\n }\n\n getSharedValues() {\n return Array.from(this.values);\n }\n\n saveGroup(props?: AnimatedProps<Pick<DrawingNodeProps, \"zIndex\">>): void {\n if (props) {\n this.processAnimationValues(props);\n this.recorder.saveGroup(props);\n } else {\n this.recorder.saveGroup();\n }\n }\n\n restoreGroup(): void {\n this.recorder.restoreGroup();\n }\n\n savePaint(props: AnimatedProps<PaintProps>, standalone: boolean): void {\n this.processAnimationValues(props);\n this.recorder.savePaint(props, standalone);\n }\n\n restorePaint(): void {\n this.recorder.restorePaint();\n }\n\n restorePaintDeclaration(): void {\n this.recorder.restorePaintDeclaration();\n }\n\n materializePaint(): void {\n this.recorder.materializePaint();\n }\n\n pushPathEffect(\n pathEffectType: NodeType,\n props: AnimatedProps<unknown>\n ): void {\n this.processAnimationValues(props);\n this.recorder.pushPathEffect(pathEffectType, props);\n }\n\n pushImageFilter(\n imageFilterType: NodeType,\n props: AnimatedProps<unknown>\n ): void {\n this.processAnimationValues(props);\n this.recorder.pushImageFilter(imageFilterType, props);\n }\n\n pushColorFilter(\n colorFilterType: NodeType,\n props: AnimatedProps<unknown>\n ): void {\n this.processAnimationValues(props);\n this.recorder.pushColorFilter(colorFilterType, props);\n }\n\n pushShader(\n shaderType: NodeType,\n props: AnimatedProps<unknown>,\n children: number\n ): void {\n this.processAnimationValues(props);\n this.recorder.pushShader(shaderType, props, children);\n }\n\n pushBlurMaskFilter(props: AnimatedProps<BlurMaskFilterProps>): void {\n this.processAnimationValues(props);\n this.recorder.pushBlurMaskFilter(props);\n }\n\n composePathEffect(): void {\n this.recorder.composePathEffect();\n }\n\n composeColorFilter(): void {\n this.recorder.composeColorFilter();\n }\n\n composeImageFilter(): void {\n this.recorder.composeImageFilter();\n }\n\n saveCTM(props: AnimatedProps<CTMProps>): void {\n this.processAnimationValues(props);\n this.recorder.saveCTM(props);\n }\n\n restoreCTM(): void {\n this.recorder.restoreCTM();\n }\n\n drawPaint(): void {\n this.recorder.drawPaint();\n }\n\n saveLayer(): void {\n this.recorder.saveLayer();\n }\n\n saveBackdropFilter(): void {\n this.recorder.saveBackdropFilter();\n }\n\n drawBox(\n boxProps: AnimatedProps<BoxProps>,\n shadows: {\n props: BoxShadowProps;\n }[]\n ): void {\n this.processAnimationValues(boxProps);\n shadows.forEach((shadow) => {\n this.processAnimationValues(\n shadow.props as AnimatedProps<BoxShadowProps>\n );\n });\n this.recorder.drawBox(\n boxProps,\n // TODO: Fix this type BaseRecorder.drawBox()\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n shadows.map((s) => s.props)\n );\n }\n\n drawImage(props: AnimatedProps<ImageProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawImage(props);\n }\n\n drawCircle(props: AnimatedProps<CircleProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawCircle(props);\n }\n\n drawPoints(props: AnimatedProps<PointsProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawPoints(props);\n }\n\n drawPath(props: AnimatedProps<PathProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawPath(props);\n }\n\n drawRect(props: AnimatedProps<RectProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawRect(props);\n }\n\n drawRRect(props: AnimatedProps<RoundedRectProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawRRect(props);\n }\n\n drawOval(props: AnimatedProps<OvalProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawOval(props);\n }\n\n drawLine(props: AnimatedProps<LineProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawLine(props);\n }\n\n drawPatch(props: AnimatedProps<PatchProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawPatch(props);\n }\n\n drawVertices(props: AnimatedProps<VerticesProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawVertices(props);\n }\n\n drawDiffRect(props: AnimatedProps<DiffRectProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawDiffRect(props);\n }\n\n drawText(props: AnimatedProps<TextProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawText(props);\n }\n\n drawTextPath(props: AnimatedProps<TextPathProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawTextPath(props);\n }\n\n drawTextBlob(props: AnimatedProps<TextBlobProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawTextBlob(props);\n }\n\n drawGlyphs(props: AnimatedProps<GlyphsProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawGlyphs(props);\n }\n\n drawPicture(props: AnimatedProps<PictureProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawPicture(props);\n }\n\n drawImageSVG(props: AnimatedProps<ImageSVGProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawImageSVG(props);\n }\n\n drawParagraph(props: AnimatedProps<ParagraphProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawParagraph(props);\n }\n\n drawAtlas(props: AnimatedProps<AtlasProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawAtlas(props);\n }\n\n drawSkottie(props: AnimatedProps<SkottieProps>): void {\n this.processAnimationValues(props);\n this.recorder.drawSkottie(props);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import type { SharedValue } from "react-native-reanimated";
2
2
  import { NodeType } from "../../dom/types";
3
- import type { BlurMaskFilterProps, CircleProps, CTMProps, ImageProps, PaintProps, PointsProps, PathProps, RectProps, RoundedRectProps, OvalProps, LineProps, PatchProps, VerticesProps, DiffRectProps, TextProps, TextPathProps, TextBlobProps, GlyphsProps, PictureProps, ImageSVGProps, ParagraphProps, AtlasProps, BoxProps, BoxShadowProps, SkottieProps } from "../../dom/types";
3
+ import type { BlurMaskFilterProps, CircleProps, CTMProps, ImageProps, PaintProps, PointsProps, PathProps, RectProps, RoundedRectProps, OvalProps, LineProps, PatchProps, VerticesProps, DiffRectProps, TextProps, TextPathProps, TextBlobProps, GlyphsProps, PictureProps, ImageSVGProps, ParagraphProps, AtlasProps, BoxProps, BoxShadowProps, SkottieProps, DrawingNodeProps } from "../../dom/types";
4
4
  import type { AnimatedProps } from "../../renderer";
5
5
  import type { SkPaint, BaseRecorder } from "../../skia/types";
6
6
  import type { Command } from "./Core";
@@ -19,7 +19,7 @@ export declare class Recorder implements BaseRecorder {
19
19
  getRecording(): Recording & AnimationValues;
20
20
  private processProps;
21
21
  private add;
22
- saveGroup(): void;
22
+ saveGroup(props?: AnimatedProps<Pick<DrawingNodeProps, "zIndex">>): void;
23
23
  restoreGroup(): void;
24
24
  savePaint(props: AnimatedProps<PaintProps>, standalone: boolean): void;
25
25
  restorePaint(): void;
@@ -46,12 +46,16 @@ export class Recorder {
46
46
  }
47
47
  this.cursors[this.cursors.length - 1].push(command);
48
48
  }
49
- saveGroup() {
49
+ saveGroup(props) {
50
50
  const children = [];
51
- this.add({
51
+ const group = {
52
52
  type: CommandType.Group,
53
53
  children
54
- });
54
+ };
55
+ if (props) {
56
+ group.props = props;
57
+ }
58
+ this.add(group);
55
59
  this.cursors.push(children);
56
60
  }
57
61
  restoreGroup() {
@@ -1 +1 @@
1
- {"version":3,"names":["NodeType","isSharedValue","isColorFilter","isImageFilter","isPathEffect","isShader","CommandType","Recorder","constructor","_defineProperty","Set","cursors","push","commands","getRecording","paintPool","animationValues","processProps","props","animatedProps","hasAnimatedProps","key","prop","add","undefined","command","length","saveGroup","children","type","Group","restoreGroup","pop","savePaint","standalone","SavePaint","restorePaint","RestorePaint","restorePaintDeclaration","RestorePaintDeclaration","materializePaint","MaterializePaint","pushPathEffect","pathEffectType","Error","PushPathEffect","pushImageFilter","imageFilterType","PushImageFilter","pushColorFilter","colorFilterType","PushColorFilter","pushShader","shaderType","Blend","PushShader","pushBlurMaskFilter","PushBlurMaskFilter","composePathEffect","ComposePathEffect","composeColorFilter","ComposeColorFilter","composeImageFilter","ComposeImageFilter","saveCTM","SaveCTM","restoreCTM","RestoreCTM","drawPaint","DrawPaint","saveLayer","SaveLayer","saveBackdropFilter","SaveBackdropFilter","drawBox","boxProps","shadows","forEach","shadow","DrawBox","drawImage","DrawImage","drawCircle","DrawCircle","drawPoints","DrawPoints","drawPath","DrawPath","drawRect","DrawRect","drawRRect","DrawRRect","drawOval","DrawOval","drawLine","DrawLine","drawPatch","DrawPatch","drawVertices","DrawVertices","drawDiffRect","DrawDiffRect","drawText","DrawText","drawTextPath","DrawTextPath","drawTextBlob","DrawTextBlob","drawGlyphs","DrawGlyphs","drawPicture","DrawPicture","drawImageSVG","DrawImageSVG","drawParagraph","DrawParagraph","drawAtlas","DrawAtlas","drawSkottie","DrawSkottie"],"sources":["Recorder.ts"],"sourcesContent":["import type { SharedValue } from \"react-native-reanimated\";\n\nimport { NodeType } from \"../../dom/types\";\nimport type {\n BlurMaskFilterProps,\n CircleProps,\n CTMProps,\n ImageProps,\n PaintProps,\n PointsProps,\n PathProps,\n RectProps,\n RoundedRectProps,\n OvalProps,\n LineProps,\n PatchProps,\n VerticesProps,\n DiffRectProps,\n TextProps,\n TextPathProps,\n TextBlobProps,\n GlyphsProps,\n PictureProps,\n ImageSVGProps,\n ParagraphProps,\n AtlasProps,\n BoxProps,\n BoxShadowProps,\n SkottieProps,\n} from \"../../dom/types\";\nimport type { AnimatedProps } from \"../../renderer\";\nimport { isSharedValue } from \"../utils\";\nimport { isColorFilter, isImageFilter, isPathEffect, isShader } from \"../Node\";\nimport type { SkPaint, BaseRecorder } from \"../../skia/types\";\n\nimport { CommandType } from \"./Core\";\nimport type { Command } from \"./Core\";\n\nexport interface Recording {\n commands: Command[];\n paintPool: SkPaint[];\n}\n\ninterface AnimationValues {\n animationValues: Set<SharedValue<unknown>>;\n}\n\nexport class Recorder implements BaseRecorder {\n commands: Command[] = [];\n cursors: Command[][] = [];\n animationValues: Set<SharedValue<unknown>> = new Set();\n\n constructor() {\n this.cursors.push(this.commands);\n }\n\n getRecording(): Recording & AnimationValues {\n return {\n commands: this.commands,\n paintPool: [],\n animationValues: this.animationValues,\n };\n }\n\n private processProps(props: Record<string, unknown>) {\n const animatedProps: Record<string, SharedValue<unknown>> = {};\n let hasAnimatedProps = false;\n\n for (const key in props) {\n const prop = props[key];\n if (isSharedValue(prop)) {\n this.animationValues.add(prop);\n animatedProps[key] = prop;\n hasAnimatedProps = true;\n }\n }\n\n return {\n props,\n animatedProps: hasAnimatedProps ? animatedProps : undefined,\n };\n }\n\n private add(command: Command) {\n if (command.props) {\n const { animatedProps } = this.processProps(\n command.props as Record<string, unknown>\n );\n if (animatedProps) {\n command.animatedProps = animatedProps;\n }\n }\n this.cursors[this.cursors.length - 1].push(command);\n }\n\n saveGroup() {\n const children: Command[] = [];\n this.add({ type: CommandType.Group, children });\n this.cursors.push(children);\n }\n\n restoreGroup() {\n this.cursors.pop();\n }\n\n savePaint(props: AnimatedProps<PaintProps>, standalone: boolean) {\n this.add({ type: CommandType.SavePaint, props, standalone });\n }\n\n restorePaint() {\n this.add({ type: CommandType.RestorePaint });\n }\n\n restorePaintDeclaration() {\n this.add({ type: CommandType.RestorePaintDeclaration });\n }\n\n materializePaint() {\n this.add({ type: CommandType.MaterializePaint });\n }\n\n pushPathEffect(pathEffectType: NodeType, props: AnimatedProps<unknown>) {\n if (!isPathEffect(pathEffectType)) {\n throw new Error(\"Invalid color filter type: \" + pathEffectType);\n }\n this.add({\n type: CommandType.PushPathEffect,\n pathEffectType,\n props,\n });\n }\n\n pushImageFilter(imageFilterType: NodeType, props: AnimatedProps<unknown>) {\n if (!isImageFilter(imageFilterType)) {\n throw new Error(\"Invalid color filter type: \" + imageFilterType);\n }\n this.add({\n type: CommandType.PushImageFilter,\n imageFilterType,\n props,\n });\n }\n\n pushColorFilter(colorFilterType: NodeType, props: AnimatedProps<unknown>) {\n if (!isColorFilter(colorFilterType)) {\n throw new Error(\"Invalid color filter type: \" + colorFilterType);\n }\n this.add({\n type: CommandType.PushColorFilter,\n colorFilterType,\n props,\n });\n }\n\n pushShader(\n shaderType: NodeType,\n props: AnimatedProps<unknown>,\n children: number\n ) {\n if (!isShader(shaderType) && !(shaderType === NodeType.Blend)) {\n throw new Error(\"Invalid color filter type: \" + shaderType);\n }\n this.add({ type: CommandType.PushShader, shaderType, props, children });\n }\n\n pushBlurMaskFilter(props: AnimatedProps<BlurMaskFilterProps>) {\n this.add({ type: CommandType.PushBlurMaskFilter, props });\n }\n\n composePathEffect() {\n this.add({ type: CommandType.ComposePathEffect });\n }\n\n composeColorFilter() {\n this.add({ type: CommandType.ComposeColorFilter });\n }\n\n composeImageFilter() {\n this.add({ type: CommandType.ComposeImageFilter });\n }\n\n saveCTM(props: AnimatedProps<CTMProps>) {\n this.add({ type: CommandType.SaveCTM, props });\n }\n\n restoreCTM() {\n this.add({ type: CommandType.RestoreCTM });\n }\n\n drawPaint() {\n this.add({ type: CommandType.DrawPaint });\n }\n\n saveLayer() {\n this.add({ type: CommandType.SaveLayer });\n }\n\n saveBackdropFilter() {\n this.add({ type: CommandType.SaveBackdropFilter });\n }\n\n drawBox(\n boxProps: AnimatedProps<BoxProps>,\n shadows: {\n props: BoxShadowProps;\n animatedProps?: Record<string, SharedValue<unknown>>;\n }[]\n ) {\n shadows.forEach((shadow) => {\n if (shadow.props) {\n if (shadow.props) {\n const { animatedProps } = this.processProps(\n shadow.props as unknown as Record<string, unknown>\n );\n if (animatedProps) {\n shadow.animatedProps = animatedProps;\n }\n }\n }\n });\n this.add({ type: CommandType.DrawBox, props: boxProps, shadows });\n }\n\n drawImage(props: AnimatedProps<ImageProps>) {\n this.add({ type: CommandType.DrawImage, props });\n }\n\n drawCircle(props: AnimatedProps<CircleProps>) {\n this.add({ type: CommandType.DrawCircle, props });\n }\n drawPoints(props: AnimatedProps<PointsProps>) {\n this.add({ type: CommandType.DrawPoints, props });\n }\n\n drawPath(props: AnimatedProps<PathProps>) {\n this.add({ type: CommandType.DrawPath, props });\n }\n\n drawRect(props: AnimatedProps<RectProps>) {\n this.add({ type: CommandType.DrawRect, props });\n }\n\n drawRRect(props: AnimatedProps<RoundedRectProps>) {\n this.add({ type: CommandType.DrawRRect, props });\n }\n\n drawOval(props: AnimatedProps<OvalProps>) {\n this.add({ type: CommandType.DrawOval, props });\n }\n\n drawLine(props: AnimatedProps<LineProps>) {\n this.add({ type: CommandType.DrawLine, props });\n }\n\n drawPatch(props: AnimatedProps<PatchProps>) {\n this.add({ type: CommandType.DrawPatch, props });\n }\n\n drawVertices(props: AnimatedProps<VerticesProps>) {\n this.add({ type: CommandType.DrawVertices, props });\n }\n\n drawDiffRect(props: AnimatedProps<DiffRectProps>) {\n this.add({ type: CommandType.DrawDiffRect, props });\n }\n\n drawText(props: AnimatedProps<TextProps>) {\n this.add({ type: CommandType.DrawText, props });\n }\n\n drawTextPath(props: AnimatedProps<TextPathProps>) {\n this.add({ type: CommandType.DrawTextPath, props });\n }\n\n drawTextBlob(props: AnimatedProps<TextBlobProps>) {\n this.add({ type: CommandType.DrawTextBlob, props });\n }\n\n drawGlyphs(props: AnimatedProps<GlyphsProps>) {\n this.add({ type: CommandType.DrawGlyphs, props });\n }\n\n drawPicture(props: AnimatedProps<PictureProps>) {\n this.add({ type: CommandType.DrawPicture, props });\n }\n\n drawImageSVG(props: AnimatedProps<ImageSVGProps>) {\n this.add({ type: CommandType.DrawImageSVG, props });\n }\n\n drawParagraph(props: AnimatedProps<ParagraphProps>) {\n this.add({ type: CommandType.DrawParagraph, props });\n }\n\n drawAtlas(props: AnimatedProps<AtlasProps>) {\n this.add({ type: CommandType.DrawAtlas, props });\n }\n\n drawSkottie(props: AnimatedProps<SkottieProps>) {\n this.add({ type: CommandType.DrawSkottie, props });\n }\n}\n"],"mappings":";;;AAEA,SAASA,QAAQ,QAAQ,iBAAiB;AA6B1C,SAASC,aAAa,QAAQ,UAAU;AACxC,SAASC,aAAa,EAAEC,aAAa,EAAEC,YAAY,EAAEC,QAAQ,QAAQ,SAAS;AAG9E,SAASC,WAAW,QAAQ,QAAQ;AAYpC,OAAO,MAAMC,QAAQ,CAAyB;EAK5CC,WAAWA,CAAA,EAAG;IAAAC,eAAA,mBAJQ,EAAE;IAAAA,eAAA,kBACD,EAAE;IAAAA,eAAA,0BACoB,IAAIC,GAAG,CAAC,CAAC;IAGpD,IAAI,CAACC,OAAO,CAACC,IAAI,CAAC,IAAI,CAACC,QAAQ,CAAC;EAClC;EAEAC,YAAYA,CAAA,EAAgC;IAC1C,OAAO;MACLD,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBE,SAAS,EAAE,EAAE;MACbC,eAAe,EAAE,IAAI,CAACA;IACxB,CAAC;EACH;EAEQC,YAAYA,CAACC,KAA8B,EAAE;IACnD,MAAMC,aAAmD,GAAG,CAAC,CAAC;IAC9D,IAAIC,gBAAgB,GAAG,KAAK;IAE5B,KAAK,MAAMC,GAAG,IAAIH,KAAK,EAAE;MACvB,MAAMI,IAAI,GAAGJ,KAAK,CAACG,GAAG,CAAC;MACvB,IAAIpB,aAAa,CAACqB,IAAI,CAAC,EAAE;QACvB,IAAI,CAACN,eAAe,CAACO,GAAG,CAACD,IAAI,CAAC;QAC9BH,aAAa,CAACE,GAAG,CAAC,GAAGC,IAAI;QACzBF,gBAAgB,GAAG,IAAI;MACzB;IACF;IAEA,OAAO;MACLF,KAAK;MACLC,aAAa,EAAEC,gBAAgB,GAAGD,aAAa,GAAGK;IACpD,CAAC;EACH;EAEQD,GAAGA,CAACE,OAAgB,EAAE;IAC5B,IAAIA,OAAO,CAACP,KAAK,EAAE;MACjB,MAAM;QAAEC;MAAc,CAAC,GAAG,IAAI,CAACF,YAAY,CACzCQ,OAAO,CAACP,KACV,CAAC;MACD,IAAIC,aAAa,EAAE;QACjBM,OAAO,CAACN,aAAa,GAAGA,aAAa;MACvC;IACF;IACA,IAAI,CAACR,OAAO,CAAC,IAAI,CAACA,OAAO,CAACe,MAAM,GAAG,CAAC,CAAC,CAACd,IAAI,CAACa,OAAO,CAAC;EACrD;EAEAE,SAASA,CAAA,EAAG;IACV,MAAMC,QAAmB,GAAG,EAAE;IAC9B,IAAI,CAACL,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAACwB,KAAK;MAAEF;IAAS,CAAC,CAAC;IAC/C,IAAI,CAACjB,OAAO,CAACC,IAAI,CAACgB,QAAQ,CAAC;EAC7B;EAEAG,YAAYA,CAAA,EAAG;IACb,IAAI,CAACpB,OAAO,CAACqB,GAAG,CAAC,CAAC;EACpB;EAEAC,SAASA,CAACf,KAAgC,EAAEgB,UAAmB,EAAE;IAC/D,IAAI,CAACX,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAAC6B,SAAS;MAAEjB,KAAK;MAAEgB;IAAW,CAAC,CAAC;EAC9D;EAEAE,YAAYA,CAAA,EAAG;IACb,IAAI,CAACb,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAAC+B;IAAa,CAAC,CAAC;EAC9C;EAEAC,uBAAuBA,CAAA,EAAG;IACxB,IAAI,CAACf,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAACiC;IAAwB,CAAC,CAAC;EACzD;EAEAC,gBAAgBA,CAAA,EAAG;IACjB,IAAI,CAACjB,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAACmC;IAAiB,CAAC,CAAC;EAClD;EAEAC,cAAcA,CAACC,cAAwB,EAAEzB,KAA6B,EAAE;IACtE,IAAI,CAACd,YAAY,CAACuC,cAAc,CAAC,EAAE;MACjC,MAAM,IAAIC,KAAK,CAAC,6BAA6B,GAAGD,cAAc,CAAC;IACjE;IACA,IAAI,CAACpB,GAAG,CAAC;MACPM,IAAI,EAAEvB,WAAW,CAACuC,cAAc;MAChCF,cAAc;MACdzB;IACF,CAAC,CAAC;EACJ;EAEA4B,eAAeA,CAACC,eAAyB,EAAE7B,KAA6B,EAAE;IACxE,IAAI,CAACf,aAAa,CAAC4C,eAAe,CAAC,EAAE;MACnC,MAAM,IAAIH,KAAK,CAAC,6BAA6B,GAAGG,eAAe,CAAC;IAClE;IACA,IAAI,CAACxB,GAAG,CAAC;MACPM,IAAI,EAAEvB,WAAW,CAAC0C,eAAe;MACjCD,eAAe;MACf7B;IACF,CAAC,CAAC;EACJ;EAEA+B,eAAeA,CAACC,eAAyB,EAAEhC,KAA6B,EAAE;IACxE,IAAI,CAAChB,aAAa,CAACgD,eAAe,CAAC,EAAE;MACnC,MAAM,IAAIN,KAAK,CAAC,6BAA6B,GAAGM,eAAe,CAAC;IAClE;IACA,IAAI,CAAC3B,GAAG,CAAC;MACPM,IAAI,EAAEvB,WAAW,CAAC6C,eAAe;MACjCD,eAAe;MACfhC;IACF,CAAC,CAAC;EACJ;EAEAkC,UAAUA,CACRC,UAAoB,EACpBnC,KAA6B,EAC7BU,QAAgB,EAChB;IACA,IAAI,CAACvB,QAAQ,CAACgD,UAAU,CAAC,IAAI,EAAEA,UAAU,KAAKrD,QAAQ,CAACsD,KAAK,CAAC,EAAE;MAC7D,MAAM,IAAIV,KAAK,CAAC,6BAA6B,GAAGS,UAAU,CAAC;IAC7D;IACA,IAAI,CAAC9B,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAACiD,UAAU;MAAEF,UAAU;MAAEnC,KAAK;MAAEU;IAAS,CAAC,CAAC;EACzE;EAEA4B,kBAAkBA,CAACtC,KAAyC,EAAE;IAC5D,IAAI,CAACK,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAACmD,kBAAkB;MAAEvC;IAAM,CAAC,CAAC;EAC3D;EAEAwC,iBAAiBA,CAAA,EAAG;IAClB,IAAI,CAACnC,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAACqD;IAAkB,CAAC,CAAC;EACnD;EAEAC,kBAAkBA,CAAA,EAAG;IACnB,IAAI,CAACrC,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAACuD;IAAmB,CAAC,CAAC;EACpD;EAEAC,kBAAkBA,CAAA,EAAG;IACnB,IAAI,CAACvC,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAACyD;IAAmB,CAAC,CAAC;EACpD;EAEAC,OAAOA,CAAC9C,KAA8B,EAAE;IACtC,IAAI,CAACK,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAAC2D,OAAO;MAAE/C;IAAM,CAAC,CAAC;EAChD;EAEAgD,UAAUA,CAAA,EAAG;IACX,IAAI,CAAC3C,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAAC6D;IAAW,CAAC,CAAC;EAC5C;EAEAC,SAASA,CAAA,EAAG;IACV,IAAI,CAAC7C,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAAC+D;IAAU,CAAC,CAAC;EAC3C;EAEAC,SAASA,CAAA,EAAG;IACV,IAAI,CAAC/C,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAACiE;IAAU,CAAC,CAAC;EAC3C;EAEAC,kBAAkBA,CAAA,EAAG;IACnB,IAAI,CAACjD,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAACmE;IAAmB,CAAC,CAAC;EACpD;EAEAC,OAAOA,CACLC,QAAiC,EACjCC,OAGG,EACH;IACAA,OAAO,CAACC,OAAO,CAAEC,MAAM,IAAK;MAC1B,IAAIA,MAAM,CAAC5D,KAAK,EAAE;QAChB,IAAI4D,MAAM,CAAC5D,KAAK,EAAE;UAChB,MAAM;YAAEC;UAAc,CAAC,GAAG,IAAI,CAACF,YAAY,CACzC6D,MAAM,CAAC5D,KACT,CAAC;UACD,IAAIC,aAAa,EAAE;YACjB2D,MAAM,CAAC3D,aAAa,GAAGA,aAAa;UACtC;QACF;MACF;IACF,CAAC,CAAC;IACF,IAAI,CAACI,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAACyE,OAAO;MAAE7D,KAAK,EAAEyD,QAAQ;MAAEC;IAAQ,CAAC,CAAC;EACnE;EAEAI,SAASA,CAAC9D,KAAgC,EAAE;IAC1C,IAAI,CAACK,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAAC2E,SAAS;MAAE/D;IAAM,CAAC,CAAC;EAClD;EAEAgE,UAAUA,CAAChE,KAAiC,EAAE;IAC5C,IAAI,CAACK,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAAC6E,UAAU;MAAEjE;IAAM,CAAC,CAAC;EACnD;EACAkE,UAAUA,CAAClE,KAAiC,EAAE;IAC5C,IAAI,CAACK,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAAC+E,UAAU;MAAEnE;IAAM,CAAC,CAAC;EACnD;EAEAoE,QAAQA,CAACpE,KAA+B,EAAE;IACxC,IAAI,CAACK,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAACiF,QAAQ;MAAErE;IAAM,CAAC,CAAC;EACjD;EAEAsE,QAAQA,CAACtE,KAA+B,EAAE;IACxC,IAAI,CAACK,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAACmF,QAAQ;MAAEvE;IAAM,CAAC,CAAC;EACjD;EAEAwE,SAASA,CAACxE,KAAsC,EAAE;IAChD,IAAI,CAACK,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAACqF,SAAS;MAAEzE;IAAM,CAAC,CAAC;EAClD;EAEA0E,QAAQA,CAAC1E,KAA+B,EAAE;IACxC,IAAI,CAACK,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAACuF,QAAQ;MAAE3E;IAAM,CAAC,CAAC;EACjD;EAEA4E,QAAQA,CAAC5E,KAA+B,EAAE;IACxC,IAAI,CAACK,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAACyF,QAAQ;MAAE7E;IAAM,CAAC,CAAC;EACjD;EAEA8E,SAASA,CAAC9E,KAAgC,EAAE;IAC1C,IAAI,CAACK,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAAC2F,SAAS;MAAE/E;IAAM,CAAC,CAAC;EAClD;EAEAgF,YAAYA,CAAChF,KAAmC,EAAE;IAChD,IAAI,CAACK,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAAC6F,YAAY;MAAEjF;IAAM,CAAC,CAAC;EACrD;EAEAkF,YAAYA,CAAClF,KAAmC,EAAE;IAChD,IAAI,CAACK,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAAC+F,YAAY;MAAEnF;IAAM,CAAC,CAAC;EACrD;EAEAoF,QAAQA,CAACpF,KAA+B,EAAE;IACxC,IAAI,CAACK,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAACiG,QAAQ;MAAErF;IAAM,CAAC,CAAC;EACjD;EAEAsF,YAAYA,CAACtF,KAAmC,EAAE;IAChD,IAAI,CAACK,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAACmG,YAAY;MAAEvF;IAAM,CAAC,CAAC;EACrD;EAEAwF,YAAYA,CAACxF,KAAmC,EAAE;IAChD,IAAI,CAACK,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAACqG,YAAY;MAAEzF;IAAM,CAAC,CAAC;EACrD;EAEA0F,UAAUA,CAAC1F,KAAiC,EAAE;IAC5C,IAAI,CAACK,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAACuG,UAAU;MAAE3F;IAAM,CAAC,CAAC;EACnD;EAEA4F,WAAWA,CAAC5F,KAAkC,EAAE;IAC9C,IAAI,CAACK,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAACyG,WAAW;MAAE7F;IAAM,CAAC,CAAC;EACpD;EAEA8F,YAAYA,CAAC9F,KAAmC,EAAE;IAChD,IAAI,CAACK,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAAC2G,YAAY;MAAE/F;IAAM,CAAC,CAAC;EACrD;EAEAgG,aAAaA,CAAChG,KAAoC,EAAE;IAClD,IAAI,CAACK,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAAC6G,aAAa;MAAEjG;IAAM,CAAC,CAAC;EACtD;EAEAkG,SAASA,CAAClG,KAAgC,EAAE;IAC1C,IAAI,CAACK,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAAC+G,SAAS;MAAEnG;IAAM,CAAC,CAAC;EAClD;EAEAoG,WAAWA,CAACpG,KAAkC,EAAE;IAC9C,IAAI,CAACK,GAAG,CAAC;MAAEM,IAAI,EAAEvB,WAAW,CAACiH,WAAW;MAAErG;IAAM,CAAC,CAAC;EACpD;AACF","ignoreList":[]}
1
+ {"version":3,"names":["NodeType","isSharedValue","isColorFilter","isImageFilter","isPathEffect","isShader","CommandType","Recorder","constructor","_defineProperty","Set","cursors","push","commands","getRecording","paintPool","animationValues","processProps","props","animatedProps","hasAnimatedProps","key","prop","add","undefined","command","length","saveGroup","children","group","type","Group","restoreGroup","pop","savePaint","standalone","SavePaint","restorePaint","RestorePaint","restorePaintDeclaration","RestorePaintDeclaration","materializePaint","MaterializePaint","pushPathEffect","pathEffectType","Error","PushPathEffect","pushImageFilter","imageFilterType","PushImageFilter","pushColorFilter","colorFilterType","PushColorFilter","pushShader","shaderType","Blend","PushShader","pushBlurMaskFilter","PushBlurMaskFilter","composePathEffect","ComposePathEffect","composeColorFilter","ComposeColorFilter","composeImageFilter","ComposeImageFilter","saveCTM","SaveCTM","restoreCTM","RestoreCTM","drawPaint","DrawPaint","saveLayer","SaveLayer","saveBackdropFilter","SaveBackdropFilter","drawBox","boxProps","shadows","forEach","shadow","DrawBox","drawImage","DrawImage","drawCircle","DrawCircle","drawPoints","DrawPoints","drawPath","DrawPath","drawRect","DrawRect","drawRRect","DrawRRect","drawOval","DrawOval","drawLine","DrawLine","drawPatch","DrawPatch","drawVertices","DrawVertices","drawDiffRect","DrawDiffRect","drawText","DrawText","drawTextPath","DrawTextPath","drawTextBlob","DrawTextBlob","drawGlyphs","DrawGlyphs","drawPicture","DrawPicture","drawImageSVG","DrawImageSVG","drawParagraph","DrawParagraph","drawAtlas","DrawAtlas","drawSkottie","DrawSkottie"],"sources":["Recorder.ts"],"sourcesContent":["import type { SharedValue } from \"react-native-reanimated\";\n\nimport { NodeType } from \"../../dom/types\";\nimport type {\n BlurMaskFilterProps,\n CircleProps,\n CTMProps,\n ImageProps,\n PaintProps,\n PointsProps,\n PathProps,\n RectProps,\n RoundedRectProps,\n OvalProps,\n LineProps,\n PatchProps,\n VerticesProps,\n DiffRectProps,\n TextProps,\n TextPathProps,\n TextBlobProps,\n GlyphsProps,\n PictureProps,\n ImageSVGProps,\n ParagraphProps,\n AtlasProps,\n BoxProps,\n BoxShadowProps,\n SkottieProps,\n DrawingNodeProps,\n} from \"../../dom/types\";\nimport type { AnimatedProps } from \"../../renderer\";\nimport { isSharedValue } from \"../utils\";\nimport { isColorFilter, isImageFilter, isPathEffect, isShader } from \"../Node\";\nimport type { SkPaint, BaseRecorder } from \"../../skia/types\";\n\nimport { CommandType } from \"./Core\";\nimport type { Command } from \"./Core\";\n\nexport interface Recording {\n commands: Command[];\n paintPool: SkPaint[];\n}\n\ninterface AnimationValues {\n animationValues: Set<SharedValue<unknown>>;\n}\n\nexport class Recorder implements BaseRecorder {\n commands: Command[] = [];\n cursors: Command[][] = [];\n animationValues: Set<SharedValue<unknown>> = new Set();\n\n constructor() {\n this.cursors.push(this.commands);\n }\n\n getRecording(): Recording & AnimationValues {\n return {\n commands: this.commands,\n paintPool: [],\n animationValues: this.animationValues,\n };\n }\n\n private processProps(props: Record<string, unknown>) {\n const animatedProps: Record<string, SharedValue<unknown>> = {};\n let hasAnimatedProps = false;\n\n for (const key in props) {\n const prop = props[key];\n if (isSharedValue(prop)) {\n this.animationValues.add(prop);\n animatedProps[key] = prop;\n hasAnimatedProps = true;\n }\n }\n\n return {\n props,\n animatedProps: hasAnimatedProps ? animatedProps : undefined,\n };\n }\n\n private add(command: Command) {\n if (command.props) {\n const { animatedProps } = this.processProps(\n command.props as Record<string, unknown>\n );\n if (animatedProps) {\n command.animatedProps = animatedProps;\n }\n }\n this.cursors[this.cursors.length - 1].push(command);\n }\n\n saveGroup(props?: AnimatedProps<Pick<DrawingNodeProps, \"zIndex\">>) {\n const children: Command[] = [];\n const group: Command = { type: CommandType.Group, children };\n if (props) {\n group.props = props;\n }\n this.add(group);\n this.cursors.push(children);\n }\n\n restoreGroup() {\n this.cursors.pop();\n }\n\n savePaint(props: AnimatedProps<PaintProps>, standalone: boolean) {\n this.add({ type: CommandType.SavePaint, props, standalone });\n }\n\n restorePaint() {\n this.add({ type: CommandType.RestorePaint });\n }\n\n restorePaintDeclaration() {\n this.add({ type: CommandType.RestorePaintDeclaration });\n }\n\n materializePaint() {\n this.add({ type: CommandType.MaterializePaint });\n }\n\n pushPathEffect(pathEffectType: NodeType, props: AnimatedProps<unknown>) {\n if (!isPathEffect(pathEffectType)) {\n throw new Error(\"Invalid color filter type: \" + pathEffectType);\n }\n this.add({\n type: CommandType.PushPathEffect,\n pathEffectType,\n props,\n });\n }\n\n pushImageFilter(imageFilterType: NodeType, props: AnimatedProps<unknown>) {\n if (!isImageFilter(imageFilterType)) {\n throw new Error(\"Invalid color filter type: \" + imageFilterType);\n }\n this.add({\n type: CommandType.PushImageFilter,\n imageFilterType,\n props,\n });\n }\n\n pushColorFilter(colorFilterType: NodeType, props: AnimatedProps<unknown>) {\n if (!isColorFilter(colorFilterType)) {\n throw new Error(\"Invalid color filter type: \" + colorFilterType);\n }\n this.add({\n type: CommandType.PushColorFilter,\n colorFilterType,\n props,\n });\n }\n\n pushShader(\n shaderType: NodeType,\n props: AnimatedProps<unknown>,\n children: number\n ) {\n if (!isShader(shaderType) && !(shaderType === NodeType.Blend)) {\n throw new Error(\"Invalid color filter type: \" + shaderType);\n }\n this.add({ type: CommandType.PushShader, shaderType, props, children });\n }\n\n pushBlurMaskFilter(props: AnimatedProps<BlurMaskFilterProps>) {\n this.add({ type: CommandType.PushBlurMaskFilter, props });\n }\n\n composePathEffect() {\n this.add({ type: CommandType.ComposePathEffect });\n }\n\n composeColorFilter() {\n this.add({ type: CommandType.ComposeColorFilter });\n }\n\n composeImageFilter() {\n this.add({ type: CommandType.ComposeImageFilter });\n }\n\n saveCTM(props: AnimatedProps<CTMProps>) {\n this.add({ type: CommandType.SaveCTM, props });\n }\n\n restoreCTM() {\n this.add({ type: CommandType.RestoreCTM });\n }\n\n drawPaint() {\n this.add({ type: CommandType.DrawPaint });\n }\n\n saveLayer() {\n this.add({ type: CommandType.SaveLayer });\n }\n\n saveBackdropFilter() {\n this.add({ type: CommandType.SaveBackdropFilter });\n }\n\n drawBox(\n boxProps: AnimatedProps<BoxProps>,\n shadows: {\n props: BoxShadowProps;\n animatedProps?: Record<string, SharedValue<unknown>>;\n }[]\n ) {\n shadows.forEach((shadow) => {\n if (shadow.props) {\n if (shadow.props) {\n const { animatedProps } = this.processProps(\n shadow.props as unknown as Record<string, unknown>\n );\n if (animatedProps) {\n shadow.animatedProps = animatedProps;\n }\n }\n }\n });\n this.add({ type: CommandType.DrawBox, props: boxProps, shadows });\n }\n\n drawImage(props: AnimatedProps<ImageProps>) {\n this.add({ type: CommandType.DrawImage, props });\n }\n\n drawCircle(props: AnimatedProps<CircleProps>) {\n this.add({ type: CommandType.DrawCircle, props });\n }\n drawPoints(props: AnimatedProps<PointsProps>) {\n this.add({ type: CommandType.DrawPoints, props });\n }\n\n drawPath(props: AnimatedProps<PathProps>) {\n this.add({ type: CommandType.DrawPath, props });\n }\n\n drawRect(props: AnimatedProps<RectProps>) {\n this.add({ type: CommandType.DrawRect, props });\n }\n\n drawRRect(props: AnimatedProps<RoundedRectProps>) {\n this.add({ type: CommandType.DrawRRect, props });\n }\n\n drawOval(props: AnimatedProps<OvalProps>) {\n this.add({ type: CommandType.DrawOval, props });\n }\n\n drawLine(props: AnimatedProps<LineProps>) {\n this.add({ type: CommandType.DrawLine, props });\n }\n\n drawPatch(props: AnimatedProps<PatchProps>) {\n this.add({ type: CommandType.DrawPatch, props });\n }\n\n drawVertices(props: AnimatedProps<VerticesProps>) {\n this.add({ type: CommandType.DrawVertices, props });\n }\n\n drawDiffRect(props: AnimatedProps<DiffRectProps>) {\n this.add({ type: CommandType.DrawDiffRect, props });\n }\n\n drawText(props: AnimatedProps<TextProps>) {\n this.add({ type: CommandType.DrawText, props });\n }\n\n drawTextPath(props: AnimatedProps<TextPathProps>) {\n this.add({ type: CommandType.DrawTextPath, props });\n }\n\n drawTextBlob(props: AnimatedProps<TextBlobProps>) {\n this.add({ type: CommandType.DrawTextBlob, props });\n }\n\n drawGlyphs(props: AnimatedProps<GlyphsProps>) {\n this.add({ type: CommandType.DrawGlyphs, props });\n }\n\n drawPicture(props: AnimatedProps<PictureProps>) {\n this.add({ type: CommandType.DrawPicture, props });\n }\n\n drawImageSVG(props: AnimatedProps<ImageSVGProps>) {\n this.add({ type: CommandType.DrawImageSVG, props });\n }\n\n drawParagraph(props: AnimatedProps<ParagraphProps>) {\n this.add({ type: CommandType.DrawParagraph, props });\n }\n\n drawAtlas(props: AnimatedProps<AtlasProps>) {\n this.add({ type: CommandType.DrawAtlas, props });\n }\n\n drawSkottie(props: AnimatedProps<SkottieProps>) {\n this.add({ type: CommandType.DrawSkottie, props });\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -157,13 +157,23 @@ const pushPaints = (recorder, paints) => {
157
157
  recorder.restorePaintDeclaration();
158
158
  });
159
159
  };
160
- const visitNode = (recorder, node) => {
161
- if (node.type === NodeType.Group) {
162
- recorder.saveGroup();
160
+ const getStackingContextProps = props => {
161
+ const {
162
+ zIndex
163
+ } = props;
164
+ if (zIndex === undefined) {
165
+ return undefined;
163
166
  }
167
+ return {
168
+ zIndex
169
+ };
170
+ };
171
+ const visitNode = (recorder, node) => {
164
172
  const {
165
173
  props
166
174
  } = node;
175
+ const stackingContextProps = getStackingContextProps(props);
176
+ recorder.saveGroup(stackingContextProps);
167
177
  const {
168
178
  colorFilters,
169
179
  maskFilters,
@@ -282,9 +292,7 @@ const visitNode = (recorder, node) => {
282
292
  if (shouldRestore) {
283
293
  recorder.restoreCTM();
284
294
  }
285
- if (node.type === NodeType.Group) {
286
- recorder.restoreGroup();
287
- }
295
+ recorder.restoreGroup();
288
296
  };
289
297
  export const visit = (recorder, root) => {
290
298
  root.forEach(node => {
@@ -1 +1 @@
1
- {"version":3,"names":["NodeType","isImageFilter","isShader","sortNodeChildren","processPaint","opacity","color","strokeWidth","blendMode","style","strokeJoin","strokeCap","strokeMiter","antiAlias","dither","paint","paintRef","undefined","processCTM","clip","invertClip","transform","origin","matrix","layer","ctm","pushColorFilters","recorder","colorFilters","forEach","colorFilter","children","length","pushColorFilter","type","props","needsComposition","LerpColorFilter","composeColorFilter","pushPathEffects","pathEffects","pathEffect","pushPathEffect","SumPathEffect","composePathEffect","pushImageFilters","imageFilters","imageFilter","pushImageFilter","pushShader","BlendImageFilter","composeImageFilter","pushShaders","shaders","shader","pushMaskFilters","maskFilters","pushBlurMaskFilter","pushPaints","paints","savePaint","restorePaintDeclaration","visitNode","node","Group","saveGroup","drawings","shouldPushPaint","BackdropFilter","saveBackdropFilter","materializePaint","Layer","saveLayer","shouldRestore","saveCTM","Box","shadows","filter","n","BoxShadow","map","drawBox","Fill","drawPaint","Image","drawImage","Circle","drawCircle","Points","drawPoints","Path","drawPath","Rect","drawRect","RRect","drawRRect","Oval","drawOval","Line","drawLine","Patch","drawPatch","Vertices","drawVertices","DiffRect","drawDiffRect","Text","drawText","TextPath","drawTextPath","TextBlob","drawTextBlob","Glyphs","drawGlyphs","Picture","drawPicture","ImageSVG","drawImageSVG","Paragraph","drawParagraph","Skottie","drawSkottie","Atlas","drawAtlas","drawing","restorePaint","restoreCTM","restoreGroup","visit","root"],"sources":["Visitor.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type {\n CTMProps,\n DrawingNodeProps,\n BoxShadowProps,\n} from \"../../dom/types\";\nimport { NodeType } from \"../../dom/types\";\nimport type { BaseRecorder } from \"../../skia/types/Recorder\";\nimport type { Node } from \"../Node\";\nimport { isImageFilter, isShader, sortNodeChildren } from \"../Node\";\n\nexport const processPaint = ({\n opacity,\n color,\n strokeWidth,\n blendMode,\n style,\n strokeJoin,\n strokeCap,\n strokeMiter,\n antiAlias,\n dither,\n paint: paintRef,\n}: DrawingNodeProps) => {\n const paint: DrawingNodeProps = {};\n if (opacity !== undefined) {\n paint.opacity = opacity;\n }\n if (color !== undefined) {\n paint.color = color;\n }\n if (strokeWidth !== undefined) {\n paint.strokeWidth = strokeWidth;\n }\n if (blendMode !== undefined) {\n paint.blendMode = blendMode;\n }\n if (style !== undefined) {\n paint.style = style;\n }\n if (strokeJoin !== undefined) {\n paint.strokeJoin = strokeJoin;\n }\n if (strokeCap !== undefined) {\n paint.strokeCap = strokeCap;\n }\n if (strokeMiter !== undefined) {\n paint.strokeMiter = strokeMiter;\n }\n if (antiAlias !== undefined) {\n paint.antiAlias = antiAlias;\n }\n if (dither !== undefined) {\n paint.dither = dither;\n }\n\n if (paintRef !== undefined) {\n paint.paint = paintRef;\n }\n\n if (\n opacity !== undefined ||\n color !== undefined ||\n strokeWidth !== undefined ||\n blendMode !== undefined ||\n style !== undefined ||\n strokeJoin !== undefined ||\n strokeCap !== undefined ||\n strokeMiter !== undefined ||\n antiAlias !== undefined ||\n dither !== undefined ||\n paintRef !== undefined\n ) {\n return paint;\n }\n return null;\n};\n\nconst processCTM = ({\n clip,\n invertClip,\n transform,\n origin,\n matrix,\n layer,\n}: CTMProps) => {\n const ctm: CTMProps = {};\n if (clip) {\n ctm.clip = clip;\n }\n if (invertClip) {\n ctm.invertClip = invertClip;\n }\n if (transform) {\n ctm.transform = transform;\n }\n if (origin) {\n ctm.origin = origin;\n }\n if (matrix) {\n ctm.matrix = matrix;\n }\n if (layer) {\n ctm.layer = layer;\n }\n if (\n clip !== undefined ||\n invertClip !== undefined ||\n transform !== undefined ||\n origin !== undefined ||\n matrix !== undefined ||\n layer !== undefined\n ) {\n return ctm;\n }\n return null;\n};\n\nconst pushColorFilters = (\n recorder: BaseRecorder,\n colorFilters: Node<any>[]\n) => {\n colorFilters.forEach((colorFilter) => {\n if (colorFilter.children.length > 0) {\n pushColorFilters(recorder, colorFilter.children);\n }\n recorder.pushColorFilter(colorFilter.type, colorFilter.props);\n const needsComposition =\n colorFilter.type !== NodeType.LerpColorFilter &&\n colorFilter.children.length > 0;\n if (needsComposition) {\n recorder.composeColorFilter();\n }\n });\n};\n\nconst pushPathEffects = (recorder: BaseRecorder, pathEffects: Node<any>[]) => {\n pathEffects.forEach((pathEffect) => {\n if (pathEffect.children.length > 0) {\n pushPathEffects(recorder, pathEffect.children);\n }\n recorder.pushPathEffect(pathEffect.type, pathEffect.props);\n const needsComposition =\n pathEffect.type !== NodeType.SumPathEffect &&\n pathEffect.children.length > 0;\n if (needsComposition) {\n recorder.composePathEffect();\n }\n });\n};\n\nconst pushImageFilters = (\n recorder: BaseRecorder,\n imageFilters: Node<any>[]\n) => {\n imageFilters.forEach((imageFilter) => {\n if (imageFilter.children.length > 0) {\n pushImageFilters(recorder, imageFilter.children);\n }\n if (isImageFilter(imageFilter.type)) {\n recorder.pushImageFilter(imageFilter.type, imageFilter.props);\n } else if (isShader(imageFilter.type)) {\n recorder.pushShader(imageFilter.type, imageFilter.props, 0);\n }\n const needsComposition =\n imageFilter.type !== NodeType.BlendImageFilter &&\n imageFilter.children.length > 0;\n if (needsComposition) {\n recorder.composeImageFilter();\n }\n });\n};\n\nconst pushShaders = (recorder: BaseRecorder, shaders: Node<any>[]) => {\n shaders.forEach((shader) => {\n if (shader.children.length > 0) {\n pushShaders(recorder, shader.children);\n }\n recorder.pushShader(shader.type, shader.props, shader.children.length);\n });\n};\n\nconst pushMaskFilters = (recorder: BaseRecorder, maskFilters: Node<any>[]) => {\n if (maskFilters.length > 0) {\n recorder.pushBlurMaskFilter(maskFilters[maskFilters.length - 1].props);\n }\n};\n\nconst pushPaints = (recorder: BaseRecorder, paints: Node<any>[]) => {\n paints.forEach((paint) => {\n recorder.savePaint(paint.props, true);\n const { colorFilters, maskFilters, shaders, imageFilters, pathEffects } =\n sortNodeChildren(paint);\n pushColorFilters(recorder, colorFilters);\n pushImageFilters(recorder, imageFilters);\n pushMaskFilters(recorder, maskFilters);\n pushShaders(recorder, shaders);\n pushPathEffects(recorder, pathEffects);\n recorder.restorePaintDeclaration();\n });\n};\n\nconst visitNode = (recorder: BaseRecorder, node: Node<any>) => {\n if (node.type === NodeType.Group) {\n recorder.saveGroup();\n }\n const { props } = node;\n const {\n colorFilters,\n maskFilters,\n drawings,\n shaders,\n imageFilters,\n pathEffects,\n paints,\n } = sortNodeChildren(node);\n const paint = processPaint(props);\n const shouldPushPaint =\n paint ||\n colorFilters.length > 0 ||\n maskFilters.length > 0 ||\n imageFilters.length > 0 ||\n pathEffects.length > 0 ||\n shaders.length > 0;\n if (shouldPushPaint) {\n recorder.savePaint(paint ?? {}, false);\n pushColorFilters(recorder, colorFilters);\n pushImageFilters(recorder, imageFilters);\n pushMaskFilters(recorder, maskFilters);\n pushShaders(recorder, shaders);\n pushPathEffects(recorder, pathEffects);\n // For mixed nodes like BackdropFilters we don't materialize the paint\n if (node.type === NodeType.BackdropFilter) {\n recorder.saveBackdropFilter();\n } else {\n recorder.materializePaint();\n }\n }\n pushPaints(recorder, paints);\n if (node.type === NodeType.Layer) {\n recorder.saveLayer();\n }\n const ctm = processCTM(props);\n const shouldRestore = !!ctm || node.type === NodeType.Layer;\n if (ctm) {\n recorder.saveCTM(ctm);\n }\n switch (node.type) {\n case NodeType.Box:\n const shadows = node.children\n .filter((n) => n.type === NodeType.BoxShadow)\n // eslint-disable-next-line @typescript-eslint/no-shadow\n .map(({ props }) => ({ props }) as { props: BoxShadowProps });\n recorder.drawBox(props, shadows);\n break;\n case NodeType.Fill:\n recorder.drawPaint();\n break;\n case NodeType.Image:\n recorder.drawImage(props);\n break;\n case NodeType.Circle:\n recorder.drawCircle(props);\n break;\n case NodeType.Points:\n recorder.drawPoints(props);\n break;\n case NodeType.Path:\n recorder.drawPath(props);\n break;\n case NodeType.Rect:\n recorder.drawRect(props);\n break;\n case NodeType.RRect:\n recorder.drawRRect(props);\n break;\n case NodeType.Oval:\n recorder.drawOval(props);\n break;\n case NodeType.Line:\n recorder.drawLine(props);\n break;\n case NodeType.Patch:\n recorder.drawPatch(props);\n break;\n case NodeType.Vertices:\n recorder.drawVertices(props);\n break;\n case NodeType.DiffRect:\n recorder.drawDiffRect(props);\n break;\n case NodeType.Text:\n recorder.drawText(props);\n break;\n case NodeType.TextPath:\n recorder.drawTextPath(props);\n break;\n case NodeType.TextBlob:\n recorder.drawTextBlob(props);\n break;\n case NodeType.Glyphs:\n recorder.drawGlyphs(props);\n break;\n case NodeType.Picture:\n recorder.drawPicture(props);\n break;\n case NodeType.ImageSVG:\n recorder.drawImageSVG(props);\n break;\n case NodeType.Paragraph:\n recorder.drawParagraph(props);\n break;\n case NodeType.Skottie:\n recorder.drawSkottie(props);\n break;\n case NodeType.Atlas:\n recorder.drawAtlas(props);\n break;\n }\n drawings.forEach((drawing) => {\n visitNode(recorder, drawing);\n });\n if (shouldPushPaint) {\n recorder.restorePaint();\n }\n if (shouldRestore) {\n recorder.restoreCTM();\n }\n if (node.type === NodeType.Group) {\n recorder.restoreGroup();\n }\n};\n\nexport const visit = (recorder: BaseRecorder, root: Node[]) => {\n root.forEach((node) => {\n visitNode(recorder, node);\n });\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NodeType","isImageFilter","isShader","sortNodeChildren","processPaint","opacity","color","strokeWidth","blendMode","style","strokeJoin","strokeCap","strokeMiter","antiAlias","dither","paint","paintRef","undefined","processCTM","clip","invertClip","transform","origin","matrix","layer","ctm","pushColorFilters","recorder","colorFilters","forEach","colorFilter","children","length","pushColorFilter","type","props","needsComposition","LerpColorFilter","composeColorFilter","pushPathEffects","pathEffects","pathEffect","pushPathEffect","SumPathEffect","composePathEffect","pushImageFilters","imageFilters","imageFilter","pushImageFilter","pushShader","BlendImageFilter","composeImageFilter","pushShaders","shaders","shader","pushMaskFilters","maskFilters","pushBlurMaskFilter","pushPaints","paints","savePaint","restorePaintDeclaration","getStackingContextProps","zIndex","visitNode","node","stackingContextProps","saveGroup","drawings","shouldPushPaint","BackdropFilter","saveBackdropFilter","materializePaint","Layer","saveLayer","shouldRestore","saveCTM","Box","shadows","filter","n","BoxShadow","map","drawBox","Fill","drawPaint","Image","drawImage","Circle","drawCircle","Points","drawPoints","Path","drawPath","Rect","drawRect","RRect","drawRRect","Oval","drawOval","Line","drawLine","Patch","drawPatch","Vertices","drawVertices","DiffRect","drawDiffRect","Text","drawText","TextPath","drawTextPath","TextBlob","drawTextBlob","Glyphs","drawGlyphs","Picture","drawPicture","ImageSVG","drawImageSVG","Paragraph","drawParagraph","Skottie","drawSkottie","Atlas","drawAtlas","drawing","restorePaint","restoreCTM","restoreGroup","visit","root"],"sources":["Visitor.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type {\n CTMProps,\n DrawingNodeProps,\n BoxShadowProps,\n} from \"../../dom/types\";\nimport { NodeType } from \"../../dom/types\";\nimport type { BaseRecorder } from \"../../skia/types/Recorder\";\nimport type { Node } from \"../Node\";\nimport { isImageFilter, isShader, sortNodeChildren } from \"../Node\";\nimport type { AnimatedProps } from \"../../renderer\";\n\nexport const processPaint = ({\n opacity,\n color,\n strokeWidth,\n blendMode,\n style,\n strokeJoin,\n strokeCap,\n strokeMiter,\n antiAlias,\n dither,\n paint: paintRef,\n}: DrawingNodeProps) => {\n const paint: DrawingNodeProps = {};\n if (opacity !== undefined) {\n paint.opacity = opacity;\n }\n if (color !== undefined) {\n paint.color = color;\n }\n if (strokeWidth !== undefined) {\n paint.strokeWidth = strokeWidth;\n }\n if (blendMode !== undefined) {\n paint.blendMode = blendMode;\n }\n if (style !== undefined) {\n paint.style = style;\n }\n if (strokeJoin !== undefined) {\n paint.strokeJoin = strokeJoin;\n }\n if (strokeCap !== undefined) {\n paint.strokeCap = strokeCap;\n }\n if (strokeMiter !== undefined) {\n paint.strokeMiter = strokeMiter;\n }\n if (antiAlias !== undefined) {\n paint.antiAlias = antiAlias;\n }\n if (dither !== undefined) {\n paint.dither = dither;\n }\n\n if (paintRef !== undefined) {\n paint.paint = paintRef;\n }\n\n if (\n opacity !== undefined ||\n color !== undefined ||\n strokeWidth !== undefined ||\n blendMode !== undefined ||\n style !== undefined ||\n strokeJoin !== undefined ||\n strokeCap !== undefined ||\n strokeMiter !== undefined ||\n antiAlias !== undefined ||\n dither !== undefined ||\n paintRef !== undefined\n ) {\n return paint;\n }\n return null;\n};\n\nconst processCTM = ({\n clip,\n invertClip,\n transform,\n origin,\n matrix,\n layer,\n}: CTMProps) => {\n const ctm: CTMProps = {};\n if (clip) {\n ctm.clip = clip;\n }\n if (invertClip) {\n ctm.invertClip = invertClip;\n }\n if (transform) {\n ctm.transform = transform;\n }\n if (origin) {\n ctm.origin = origin;\n }\n if (matrix) {\n ctm.matrix = matrix;\n }\n if (layer) {\n ctm.layer = layer;\n }\n if (\n clip !== undefined ||\n invertClip !== undefined ||\n transform !== undefined ||\n origin !== undefined ||\n matrix !== undefined ||\n layer !== undefined\n ) {\n return ctm;\n }\n return null;\n};\n\nconst pushColorFilters = (\n recorder: BaseRecorder,\n colorFilters: Node<any>[]\n) => {\n colorFilters.forEach((colorFilter) => {\n if (colorFilter.children.length > 0) {\n pushColorFilters(recorder, colorFilter.children);\n }\n recorder.pushColorFilter(colorFilter.type, colorFilter.props);\n const needsComposition =\n colorFilter.type !== NodeType.LerpColorFilter &&\n colorFilter.children.length > 0;\n if (needsComposition) {\n recorder.composeColorFilter();\n }\n });\n};\n\nconst pushPathEffects = (recorder: BaseRecorder, pathEffects: Node<any>[]) => {\n pathEffects.forEach((pathEffect) => {\n if (pathEffect.children.length > 0) {\n pushPathEffects(recorder, pathEffect.children);\n }\n recorder.pushPathEffect(pathEffect.type, pathEffect.props);\n const needsComposition =\n pathEffect.type !== NodeType.SumPathEffect &&\n pathEffect.children.length > 0;\n if (needsComposition) {\n recorder.composePathEffect();\n }\n });\n};\n\nconst pushImageFilters = (\n recorder: BaseRecorder,\n imageFilters: Node<any>[]\n) => {\n imageFilters.forEach((imageFilter) => {\n if (imageFilter.children.length > 0) {\n pushImageFilters(recorder, imageFilter.children);\n }\n if (isImageFilter(imageFilter.type)) {\n recorder.pushImageFilter(imageFilter.type, imageFilter.props);\n } else if (isShader(imageFilter.type)) {\n recorder.pushShader(imageFilter.type, imageFilter.props, 0);\n }\n const needsComposition =\n imageFilter.type !== NodeType.BlendImageFilter &&\n imageFilter.children.length > 0;\n if (needsComposition) {\n recorder.composeImageFilter();\n }\n });\n};\n\nconst pushShaders = (recorder: BaseRecorder, shaders: Node<any>[]) => {\n shaders.forEach((shader) => {\n if (shader.children.length > 0) {\n pushShaders(recorder, shader.children);\n }\n recorder.pushShader(shader.type, shader.props, shader.children.length);\n });\n};\n\nconst pushMaskFilters = (recorder: BaseRecorder, maskFilters: Node<any>[]) => {\n if (maskFilters.length > 0) {\n recorder.pushBlurMaskFilter(maskFilters[maskFilters.length - 1].props);\n }\n};\n\nconst pushPaints = (recorder: BaseRecorder, paints: Node<any>[]) => {\n paints.forEach((paint) => {\n recorder.savePaint(paint.props, true);\n const { colorFilters, maskFilters, shaders, imageFilters, pathEffects } =\n sortNodeChildren(paint);\n pushColorFilters(recorder, colorFilters);\n pushImageFilters(recorder, imageFilters);\n pushMaskFilters(recorder, maskFilters);\n pushShaders(recorder, shaders);\n pushPathEffects(recorder, pathEffects);\n recorder.restorePaintDeclaration();\n });\n};\n\ntype StackingContextProps = Pick<DrawingNodeProps, \"zIndex\">;\n\nconst getStackingContextProps = (\n props: AnimatedProps<DrawingNodeProps>\n): AnimatedProps<StackingContextProps> | undefined => {\n const { zIndex } = props;\n if (zIndex === undefined) {\n return undefined;\n }\n return { zIndex };\n};\n\nconst visitNode = (recorder: BaseRecorder, node: Node<any>) => {\n const { props } = node;\n const stackingContextProps = getStackingContextProps(\n props as AnimatedProps<DrawingNodeProps>\n );\n recorder.saveGroup(stackingContextProps);\n const {\n colorFilters,\n maskFilters,\n drawings,\n shaders,\n imageFilters,\n pathEffects,\n paints,\n } = sortNodeChildren(node);\n const paint = processPaint(props);\n const shouldPushPaint =\n paint ||\n colorFilters.length > 0 ||\n maskFilters.length > 0 ||\n imageFilters.length > 0 ||\n pathEffects.length > 0 ||\n shaders.length > 0;\n if (shouldPushPaint) {\n recorder.savePaint(paint ?? {}, false);\n pushColorFilters(recorder, colorFilters);\n pushImageFilters(recorder, imageFilters);\n pushMaskFilters(recorder, maskFilters);\n pushShaders(recorder, shaders);\n pushPathEffects(recorder, pathEffects);\n // For mixed nodes like BackdropFilters we don't materialize the paint\n if (node.type === NodeType.BackdropFilter) {\n recorder.saveBackdropFilter();\n } else {\n recorder.materializePaint();\n }\n }\n pushPaints(recorder, paints);\n if (node.type === NodeType.Layer) {\n recorder.saveLayer();\n }\n const ctm = processCTM(props);\n const shouldRestore = !!ctm || node.type === NodeType.Layer;\n if (ctm) {\n recorder.saveCTM(ctm);\n }\n switch (node.type) {\n case NodeType.Box:\n const shadows = node.children\n .filter((n) => n.type === NodeType.BoxShadow)\n // eslint-disable-next-line @typescript-eslint/no-shadow\n .map(({ props }) => ({ props }) as { props: BoxShadowProps });\n recorder.drawBox(props, shadows);\n break;\n case NodeType.Fill:\n recorder.drawPaint();\n break;\n case NodeType.Image:\n recorder.drawImage(props);\n break;\n case NodeType.Circle:\n recorder.drawCircle(props);\n break;\n case NodeType.Points:\n recorder.drawPoints(props);\n break;\n case NodeType.Path:\n recorder.drawPath(props);\n break;\n case NodeType.Rect:\n recorder.drawRect(props);\n break;\n case NodeType.RRect:\n recorder.drawRRect(props);\n break;\n case NodeType.Oval:\n recorder.drawOval(props);\n break;\n case NodeType.Line:\n recorder.drawLine(props);\n break;\n case NodeType.Patch:\n recorder.drawPatch(props);\n break;\n case NodeType.Vertices:\n recorder.drawVertices(props);\n break;\n case NodeType.DiffRect:\n recorder.drawDiffRect(props);\n break;\n case NodeType.Text:\n recorder.drawText(props);\n break;\n case NodeType.TextPath:\n recorder.drawTextPath(props);\n break;\n case NodeType.TextBlob:\n recorder.drawTextBlob(props);\n break;\n case NodeType.Glyphs:\n recorder.drawGlyphs(props);\n break;\n case NodeType.Picture:\n recorder.drawPicture(props);\n break;\n case NodeType.ImageSVG:\n recorder.drawImageSVG(props);\n break;\n case NodeType.Paragraph:\n recorder.drawParagraph(props);\n break;\n case NodeType.Skottie:\n recorder.drawSkottie(props);\n break;\n case NodeType.Atlas:\n recorder.drawAtlas(props);\n break;\n }\n drawings.forEach((drawing) => {\n visitNode(recorder, drawing);\n });\n if (shouldPushPaint) {\n recorder.restorePaint();\n }\n if (shouldRestore) {\n recorder.restoreCTM();\n }\n recorder.restoreGroup();\n};\n\nexport const visit = (recorder: BaseRecorder, root: Node[]) => {\n root.forEach((node) => {\n visitNode(recorder, node);\n });\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["React","SkiaPictureViewNativeComponent","SkiaViewApi","SkiaViewNativeId","NativeSkiaPictureView","SkiaPictureView","Component","constructor","props","_defineProperty","_nativeId","current","picture","onSize","assertSkiaViewApi","setJsiProperty","tick","nativeId","componentDidUpdate","prevProps","componentWillUnmount","requestId","cancelAnimationFrame","redraw","mode","requestAnimationFrame","bind","makeImageSnapshot","rect","requestRedraw","render","debug","opaque","coldStart","viewProps","createElement","_extends","collapsable","nativeID","Error"],"sources":["SkiaPictureView.tsx"],"sourcesContent":["import React from \"react\";\n\nimport type { SkRect } from \"../skia/types\";\nimport SkiaPictureViewNativeComponent from \"../specs/SkiaPictureViewNativeComponent\";\n\nimport { SkiaViewApi } from \"./api\";\nimport type { SkiaPictureViewNativeProps } from \"./types\";\nimport { SkiaViewNativeId } from \"./SkiaViewNativeId\";\n\nconst NativeSkiaPictureView = SkiaPictureViewNativeComponent;\n\ninterface SkiaPictureViewProps extends SkiaPictureViewNativeProps {\n mode?: \"default\" | \"continuous\";\n coldStart?: boolean;\n}\n\nexport class SkiaPictureView extends React.Component<SkiaPictureViewProps> {\n private requestId = 0;\n\n constructor(props: SkiaPictureViewProps) {\n super(props);\n this._nativeId = SkiaViewNativeId.current++;\n const { picture, onSize } = props;\n if (picture) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"picture\", picture);\n }\n if (onSize) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"onSize\", onSize);\n }\n this.tick();\n }\n\n private _nativeId: number;\n\n public get nativeId() {\n return this._nativeId;\n }\n\n componentDidUpdate(prevProps: SkiaPictureViewProps) {\n const { picture, onSize } = this.props;\n if (picture !== prevProps.picture) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"picture\", picture);\n }\n if (onSize !== prevProps.onSize) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"onSize\", onSize);\n }\n this.tick();\n }\n\n componentWillUnmount() {\n if (this.requestId) {\n cancelAnimationFrame(this.requestId);\n }\n }\n\n private tick() {\n this.redraw();\n if (this.props.mode === \"continuous\") {\n this.requestId = requestAnimationFrame(this.tick.bind(this));\n }\n }\n\n /**\n * Creates a snapshot from the canvas in the surface\n * @param rect Rect to use as bounds. Optional.\n * @returns An Image object.\n */\n public makeImageSnapshot(rect?: SkRect) {\n assertSkiaViewApi();\n return SkiaViewApi.makeImageSnapshot(this._nativeId, rect);\n }\n\n /**\n * Sends a redraw request to the native SkiaView.\n */\n public redraw() {\n assertSkiaViewApi();\n SkiaViewApi.requestRedraw(this._nativeId);\n }\n\n render() {\n const { mode, debug = false, opaque = false, coldStart = false, ...viewProps } = this.props;\n return (\n <NativeSkiaPictureView\n collapsable={false}\n nativeID={`${this._nativeId}`}\n debug={debug}\n opaque={opaque}\n coldStart={coldStart}\n {...viewProps}\n />\n );\n }\n}\n\nconst assertSkiaViewApi = () => {\n if (\n SkiaViewApi === null ||\n SkiaViewApi.setJsiProperty === null ||\n SkiaViewApi.requestRedraw === null ||\n SkiaViewApi.makeImageSnapshot === null\n ) {\n throw Error(\"Skia View Api was not found.\");\n }\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","SkiaPictureViewNativeComponent","SkiaViewApi","SkiaViewNativeId","NativeSkiaPictureView","SkiaPictureView","Component","constructor","props","_defineProperty","_nativeId","current","picture","onSize","assertSkiaViewApi","setJsiProperty","tick","nativeId","componentDidUpdate","prevProps","componentWillUnmount","requestId","cancelAnimationFrame","redraw","mode","requestAnimationFrame","bind","makeImageSnapshot","rect","requestRedraw","render","debug","opaque","coldStart","viewProps","createElement","_extends","collapsable","nativeID","Error"],"sources":["SkiaPictureView.tsx"],"sourcesContent":["import React from \"react\";\n\nimport type { SkRect } from \"../skia/types\";\nimport SkiaPictureViewNativeComponent from \"../specs/SkiaPictureViewNativeComponent\";\n\nimport { SkiaViewApi } from \"./api\";\nimport type { SkiaPictureViewNativeProps } from \"./types\";\nimport { SkiaViewNativeId } from \"./SkiaViewNativeId\";\n\nconst NativeSkiaPictureView = SkiaPictureViewNativeComponent;\n\ninterface SkiaPictureViewProps extends SkiaPictureViewNativeProps {\n mode?: \"default\" | \"continuous\";\n coldStart?: boolean;\n}\n\nexport class SkiaPictureView extends React.Component<SkiaPictureViewProps> {\n private requestId = 0;\n\n constructor(props: SkiaPictureViewProps) {\n super(props);\n this._nativeId = SkiaViewNativeId.current++;\n const { picture, onSize } = props;\n if (picture) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"picture\", picture);\n }\n if (onSize) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"onSize\", onSize);\n }\n this.tick();\n }\n\n private _nativeId: number;\n\n public get nativeId() {\n return this._nativeId;\n }\n\n componentDidUpdate(prevProps: SkiaPictureViewProps) {\n const { picture, onSize } = this.props;\n if (picture !== prevProps.picture) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"picture\", picture);\n }\n if (onSize !== prevProps.onSize) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"onSize\", onSize);\n }\n this.tick();\n }\n\n componentWillUnmount() {\n if (this.requestId) {\n cancelAnimationFrame(this.requestId);\n }\n }\n\n private tick() {\n this.redraw();\n if (this.props.mode === \"continuous\") {\n this.requestId = requestAnimationFrame(this.tick.bind(this));\n }\n }\n\n /**\n * Creates a snapshot from the canvas in the surface\n * @param rect Rect to use as bounds. Optional.\n * @returns An Image object.\n */\n public makeImageSnapshot(rect?: SkRect) {\n assertSkiaViewApi();\n return SkiaViewApi.makeImageSnapshot(this._nativeId, rect);\n }\n\n /**\n * Sends a redraw request to the native SkiaView.\n */\n public redraw() {\n assertSkiaViewApi();\n SkiaViewApi.requestRedraw(this._nativeId);\n }\n\n render() {\n const {\n mode,\n debug = false,\n opaque = false,\n coldStart = false,\n ...viewProps\n } = this.props;\n return (\n <NativeSkiaPictureView\n collapsable={false}\n nativeID={`${this._nativeId}`}\n debug={debug}\n opaque={opaque}\n coldStart={coldStart}\n {...viewProps}\n />\n );\n }\n}\n\nconst assertSkiaViewApi = () => {\n if (\n SkiaViewApi === null ||\n SkiaViewApi.setJsiProperty === null ||\n SkiaViewApi.requestRedraw === null ||\n SkiaViewApi.makeImageSnapshot === null\n ) {\n throw Error(\"Skia View Api was not found.\");\n }\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export const __esModule: boolean;
2
+ export function debugTree(commands: any, indent?: number): string;
@@ -10,7 +10,7 @@ export class ReanimatedRecorder {
10
10
  processAnimationValues(props: any): void;
11
11
  getRecorder(): any;
12
12
  getSharedValues(): any[];
13
- saveGroup(): void;
13
+ saveGroup(props: any): void;
14
14
  restoreGroup(): void;
15
15
  savePaint(props: any, standalone: any): void;
16
16
  restorePaint(): void;
@@ -10,7 +10,7 @@ export class Recorder {
10
10
  animatedProps: {} | undefined;
11
11
  };
12
12
  add(command: any): void;
13
- saveGroup(): void;
13
+ saveGroup(props: any): void;
14
14
  restoreGroup(): void;
15
15
  savePaint(props: any, standalone: any): void;
16
16
  restorePaint(): void;
@@ -0,0 +1 @@
1
+ export function debugTree(commands: any, indent?: number): string;
@@ -9,7 +9,7 @@ export class ReanimatedRecorder {
9
9
  processAnimationValues(props: any): void;
10
10
  getRecorder(): any;
11
11
  getSharedValues(): any[];
12
- saveGroup(): void;
12
+ saveGroup(props: any): void;
13
13
  restoreGroup(): void;
14
14
  savePaint(props: any, standalone: any): void;
15
15
  restorePaint(): void;
@@ -9,7 +9,7 @@ export class Recorder {
9
9
  animatedProps: {} | undefined;
10
10
  };
11
11
  add(command: any): void;
12
- saveGroup(): void;
12
+ saveGroup(props: any): void;
13
13
  restoreGroup(): void;
14
14
  savePaint(props: any, standalone: any): void;
15
15
  restorePaint(): void;
@@ -56,4 +56,5 @@ export interface PaintProps extends ChildrenProps {
56
56
  dither?: boolean;
57
57
  }
58
58
  export interface GroupProps extends PaintProps, CTMProps {
59
+ zIndex?: number;
59
60
  }
@@ -1,9 +1,9 @@
1
1
  import type { SharedValue } from "react-native-reanimated";
2
- import type { TextProps, AtlasProps, BlurMaskFilterProps, BoxProps, BoxShadowProps, CircleProps, CTMProps, DiffRectProps, GlyphsProps, ImageProps, ImageSVGProps, LineProps, NodeType, OvalProps, PaintProps, ParagraphProps, PatchProps, PathProps, PictureProps, PointsProps, RectProps, RoundedRectProps, TextBlobProps, TextPathProps, VerticesProps, SkottieProps } from "../../dom/types";
2
+ import type { TextProps, AtlasProps, BlurMaskFilterProps, BoxProps, BoxShadowProps, CircleProps, CTMProps, DiffRectProps, GlyphsProps, ImageProps, ImageSVGProps, LineProps, NodeType, OvalProps, PaintProps, ParagraphProps, PatchProps, PathProps, PictureProps, PointsProps, RectProps, RoundedRectProps, TextBlobProps, TextPathProps, VerticesProps, SkottieProps, DrawingNodeProps } from "../../dom/types";
3
3
  import type { AnimatedProps } from "../../renderer/processors/Animations/Animations";
4
4
  import type { SkPicture } from "./Picture";
5
5
  export interface BaseRecorder {
6
- saveGroup(): void;
6
+ saveGroup(props?: AnimatedProps<Pick<DrawingNodeProps, "zIndex">>): void;
7
7
  restoreGroup(): void;
8
8
  savePaint(props: AnimatedProps<PaintProps>, standalone: boolean): void;
9
9
  restorePaint(): void;
@@ -46,7 +46,8 @@ export type Command<T extends CommandType = CommandType> = {
46
46
  };
47
47
  export declare const materializeCommand: (command: any) => any;
48
48
  export declare const isCommand: <T extends CommandType>(command: Command, type: T) => command is Command<T>;
49
- interface GroupCommand extends Command<CommandType.Group> {
49
+ export interface GroupCommand extends Command<CommandType.Group> {
50
+ props?: Pick<DrawingNodeProps, "zIndex">;
50
51
  children: Command[];
51
52
  }
52
53
  export declare const isGroup: (command: Command) => command is GroupCommand;
@@ -0,0 +1,2 @@
1
+ import type { Command } from "./Core";
2
+ export declare const debugTree: (commands: Command[], indent?: number) => string;
@@ -1,3 +1,3 @@
1
1
  import type { Command } from "./Core";
2
2
  import type { DrawingContext } from "./DrawingContext";
3
- export declare const replay: (ctx: DrawingContext, commands: Command[]) => void;
3
+ export declare function replay(ctx: DrawingContext, commands: Command[]): void;
@@ -1,6 +1,6 @@
1
1
  import type { SharedValue } from "react-native-reanimated";
2
2
  import type { BaseRecorder, JsiRecorder, Skia } from "../../skia/types";
3
- import type { PaintProps, NodeType, BlurMaskFilterProps, CTMProps, BoxProps, BoxShadowProps, ImageProps, CircleProps, PointsProps, PathProps, RectProps, RoundedRectProps, OvalProps, LineProps, PatchProps, VerticesProps, DiffRectProps, TextProps, TextPathProps, TextBlobProps, GlyphsProps, PictureProps, ImageSVGProps, ParagraphProps, AtlasProps, SkottieProps } from "../../dom/types";
3
+ import type { PaintProps, NodeType, BlurMaskFilterProps, CTMProps, BoxProps, BoxShadowProps, ImageProps, CircleProps, PointsProps, PathProps, RectProps, RoundedRectProps, OvalProps, LineProps, PatchProps, VerticesProps, DiffRectProps, TextProps, TextPathProps, TextBlobProps, GlyphsProps, PictureProps, ImageSVGProps, ParagraphProps, AtlasProps, SkottieProps, DrawingNodeProps } from "../../dom/types";
4
4
  import type { AnimatedProps } from "../../renderer";
5
5
  /**
6
6
  * Currently the recorder only work if the GPU resources (e.g Images) are owned by the main thread.
@@ -14,7 +14,7 @@ export declare class ReanimatedRecorder implements BaseRecorder {
14
14
  private processAnimationValues;
15
15
  getRecorder(): JsiRecorder;
16
16
  getSharedValues(): SharedValue<unknown>[];
17
- saveGroup(): void;
17
+ saveGroup(props?: AnimatedProps<Pick<DrawingNodeProps, "zIndex">>): void;
18
18
  restoreGroup(): void;
19
19
  savePaint(props: AnimatedProps<PaintProps>, standalone: boolean): void;
20
20
  restorePaint(): void;