@shopify/react-native-skia 0.1.115 → 0.1.119

Sign up to get free protection for your applications and to get access to all the features.
Files changed (217) hide show
  1. package/README.md +39 -2
  2. package/cpp/api/JsiSkApi.h +13 -9
  3. package/cpp/api/JsiSkCanvas.h +9 -1
  4. package/cpp/api/JsiSkPicture.h +71 -0
  5. package/cpp/api/JsiSkPictureFactory.h +50 -0
  6. package/cpp/api/JsiSkPictureRecorder.h +53 -0
  7. package/lib/commonjs/renderer/Canvas.js +22 -36
  8. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  9. package/lib/commonjs/renderer/HostConfig.js +3 -25
  10. package/lib/commonjs/renderer/HostConfig.js.map +1 -1
  11. package/lib/commonjs/renderer/components/{Defs.js → Drawing.js} +13 -12
  12. package/lib/commonjs/renderer/components/Drawing.js.map +1 -0
  13. package/lib/commonjs/renderer/components/Group.js +31 -20
  14. package/lib/commonjs/renderer/components/Group.js.map +1 -1
  15. package/lib/commonjs/renderer/components/Paint.js +1 -21
  16. package/lib/commonjs/renderer/components/Paint.js.map +1 -1
  17. package/lib/commonjs/renderer/components/Picture.js +35 -0
  18. package/lib/commonjs/renderer/components/Picture.js.map +1 -0
  19. package/lib/commonjs/renderer/components/imageFilters/InnerShadow.js +5 -34
  20. package/lib/commonjs/renderer/components/imageFilters/InnerShadow.js.map +1 -1
  21. package/lib/commonjs/renderer/components/imageFilters/{DropShadow.js → Shadow.js} +19 -8
  22. package/lib/commonjs/renderer/components/imageFilters/Shadow.js.map +1 -0
  23. package/lib/commonjs/renderer/components/imageFilters/index.js +4 -17
  24. package/lib/commonjs/renderer/components/imageFilters/index.js.map +1 -1
  25. package/lib/commonjs/renderer/components/index.js +17 -4
  26. package/lib/commonjs/renderer/components/index.js.map +1 -1
  27. package/lib/commonjs/renderer/components/maskFilters/Blur.js +1 -1
  28. package/lib/commonjs/renderer/components/maskFilters/Blur.js.map +1 -1
  29. package/lib/commonjs/renderer/components/shapes/Box.js +126 -0
  30. package/lib/commonjs/renderer/components/shapes/Box.js.map +1 -0
  31. package/lib/commonjs/renderer/components/shapes/FitBox.js +9 -5
  32. package/lib/commonjs/renderer/components/shapes/FitBox.js.map +1 -1
  33. package/lib/commonjs/renderer/components/shapes/index.js +13 -0
  34. package/lib/commonjs/renderer/components/shapes/index.js.map +1 -1
  35. package/lib/commonjs/renderer/index.js +13 -0
  36. package/lib/commonjs/renderer/index.js.map +1 -1
  37. package/lib/commonjs/renderer/nodes/Declaration.js +12 -1
  38. package/lib/commonjs/renderer/nodes/Declaration.js.map +1 -1
  39. package/lib/commonjs/renderer/nodes/Drawing.js +9 -24
  40. package/lib/commonjs/renderer/nodes/Drawing.js.map +1 -1
  41. package/lib/commonjs/renderer/nodes/Node.js +9 -16
  42. package/lib/commonjs/renderer/nodes/Node.js.map +1 -1
  43. package/lib/commonjs/renderer/processors/Paint.js +24 -26
  44. package/lib/commonjs/renderer/processors/Paint.js.map +1 -1
  45. package/lib/commonjs/renderer/processors/math/Math.js +19 -1
  46. package/lib/commonjs/renderer/processors/math/Math.js.map +1 -1
  47. package/lib/commonjs/renderer/processors/math/Matrix3.js +11 -5
  48. package/lib/commonjs/renderer/processors/math/Matrix3.js.map +1 -1
  49. package/lib/commonjs/renderer/typeddash.js +26 -2
  50. package/lib/commonjs/renderer/typeddash.js.map +1 -1
  51. package/lib/commonjs/renderer/useContextBridge.js +35 -0
  52. package/lib/commonjs/renderer/useContextBridge.js.map +1 -0
  53. package/lib/commonjs/skia/Canvas.js.map +1 -1
  54. package/lib/commonjs/skia/Picture/Picture.js +6 -0
  55. package/lib/commonjs/skia/Picture/Picture.js.map +1 -0
  56. package/lib/commonjs/skia/Picture/PictureFactory.js +6 -0
  57. package/lib/commonjs/skia/Picture/PictureFactory.js.map +1 -0
  58. package/lib/commonjs/skia/Picture/PictureRecorder.js +6 -0
  59. package/lib/commonjs/skia/Picture/PictureRecorder.js.map +1 -0
  60. package/lib/commonjs/skia/Picture/index.js +58 -0
  61. package/lib/commonjs/skia/Picture/index.js.map +1 -0
  62. package/lib/commonjs/skia/Picture/usePicture.js +30 -0
  63. package/lib/commonjs/skia/Picture/usePicture.js.map +1 -0
  64. package/lib/commonjs/skia/Skia.js +2 -0
  65. package/lib/commonjs/skia/Skia.js.map +1 -1
  66. package/lib/commonjs/skia/index.js +28 -0
  67. package/lib/commonjs/skia/index.js.map +1 -1
  68. package/lib/commonjs/values/hooks/useDerivedValue.js +2 -2
  69. package/lib/commonjs/values/hooks/useDerivedValue.js.map +1 -1
  70. package/lib/commonjs/views/SkiaView.js +6 -44
  71. package/lib/commonjs/views/SkiaView.js.map +1 -1
  72. package/lib/commonjs/views/types.js.map +1 -1
  73. package/lib/module/renderer/Canvas.js +20 -32
  74. package/lib/module/renderer/Canvas.js.map +1 -1
  75. package/lib/module/renderer/HostConfig.js +2 -24
  76. package/lib/module/renderer/HostConfig.js.map +1 -1
  77. package/lib/module/renderer/components/Drawing.js +17 -0
  78. package/lib/module/renderer/components/Drawing.js.map +1 -0
  79. package/lib/module/renderer/components/Group.js +32 -22
  80. package/lib/module/renderer/components/Group.js.map +1 -1
  81. package/lib/module/renderer/components/Paint.js +2 -22
  82. package/lib/module/renderer/components/Paint.js.map +1 -1
  83. package/lib/module/renderer/components/Picture.js +21 -0
  84. package/lib/module/renderer/components/Picture.js.map +1 -0
  85. package/lib/module/renderer/components/imageFilters/InnerShadow.js +4 -26
  86. package/lib/module/renderer/components/imageFilters/InnerShadow.js.map +1 -1
  87. package/lib/module/renderer/components/imageFilters/{DropShadow.js → Shadow.js} +16 -6
  88. package/lib/module/renderer/components/imageFilters/Shadow.js.map +1 -0
  89. package/lib/module/renderer/components/imageFilters/index.js +1 -2
  90. package/lib/module/renderer/components/imageFilters/index.js.map +1 -1
  91. package/lib/module/renderer/components/index.js +2 -1
  92. package/lib/module/renderer/components/index.js.map +1 -1
  93. package/lib/module/renderer/components/maskFilters/Blur.js +1 -1
  94. package/lib/module/renderer/components/maskFilters/Blur.js.map +1 -1
  95. package/lib/module/renderer/components/shapes/Box.js +102 -0
  96. package/lib/module/renderer/components/shapes/Box.js.map +1 -0
  97. package/lib/module/renderer/components/shapes/FitBox.js +5 -4
  98. package/lib/module/renderer/components/shapes/FitBox.js.map +1 -1
  99. package/lib/module/renderer/components/shapes/index.js +1 -0
  100. package/lib/module/renderer/components/shapes/index.js.map +1 -1
  101. package/lib/module/renderer/index.js +1 -0
  102. package/lib/module/renderer/index.js.map +1 -1
  103. package/lib/module/renderer/nodes/Declaration.js +4 -0
  104. package/lib/module/renderer/nodes/Declaration.js.map +1 -1
  105. package/lib/module/renderer/nodes/Drawing.js +8 -21
  106. package/lib/module/renderer/nodes/Drawing.js.map +1 -1
  107. package/lib/module/renderer/nodes/Node.js +9 -15
  108. package/lib/module/renderer/nodes/Node.js.map +1 -1
  109. package/lib/module/renderer/processors/Paint.js +22 -21
  110. package/lib/module/renderer/processors/Paint.js.map +1 -1
  111. package/lib/module/renderer/processors/math/Math.js +15 -0
  112. package/lib/module/renderer/processors/math/Math.js.map +1 -1
  113. package/lib/module/renderer/processors/math/Matrix3.js +6 -2
  114. package/lib/module/renderer/processors/math/Matrix3.js.map +1 -1
  115. package/lib/module/renderer/typeddash.js +21 -0
  116. package/lib/module/renderer/typeddash.js.map +1 -1
  117. package/lib/module/renderer/useContextBridge.js +21 -0
  118. package/lib/module/renderer/useContextBridge.js.map +1 -0
  119. package/lib/module/skia/Canvas.js.map +1 -1
  120. package/lib/module/skia/Picture/Picture.js +2 -0
  121. package/lib/module/skia/Picture/Picture.js.map +1 -0
  122. package/lib/module/skia/Picture/PictureFactory.js +2 -0
  123. package/lib/module/skia/Picture/PictureFactory.js.map +1 -0
  124. package/lib/module/skia/Picture/PictureRecorder.js +2 -0
  125. package/lib/module/skia/Picture/PictureRecorder.js.map +1 -0
  126. package/lib/module/skia/Picture/index.js +5 -0
  127. package/lib/module/skia/Picture/index.js.map +1 -0
  128. package/lib/module/skia/Picture/usePicture.js +19 -0
  129. package/lib/module/skia/Picture/usePicture.js.map +1 -0
  130. package/lib/module/skia/Skia.js +2 -0
  131. package/lib/module/skia/Skia.js.map +1 -1
  132. package/lib/module/skia/index.js +2 -0
  133. package/lib/module/skia/index.js.map +1 -1
  134. package/lib/module/values/hooks/useDerivedValue.js +1 -1
  135. package/lib/module/values/hooks/useDerivedValue.js.map +1 -1
  136. package/lib/module/views/SkiaView.js +6 -44
  137. package/lib/module/views/SkiaView.js.map +1 -1
  138. package/lib/module/views/types.js.map +1 -1
  139. package/lib/typescript/src/renderer/Canvas.d.ts +5 -10
  140. package/lib/typescript/src/renderer/components/Drawing.d.ts +7 -0
  141. package/lib/typescript/src/renderer/components/Picture.d.ts +6 -0
  142. package/lib/typescript/src/renderer/components/imageFilters/InnerShadow.d.ts +3 -12
  143. package/lib/typescript/src/renderer/components/imageFilters/{DropShadow.d.ts → Shadow.d.ts} +3 -2
  144. package/lib/typescript/src/renderer/components/imageFilters/index.d.ts +1 -2
  145. package/lib/typescript/src/renderer/components/index.d.ts +2 -1
  146. package/lib/typescript/src/renderer/components/shapes/Box.d.ts +23 -0
  147. package/lib/typescript/src/renderer/components/shapes/FitBox.d.ts +9 -0
  148. package/lib/typescript/src/renderer/components/shapes/index.d.ts +1 -0
  149. package/lib/typescript/src/renderer/index.d.ts +1 -0
  150. package/lib/typescript/src/renderer/nodes/Declaration.d.ts +3 -0
  151. package/lib/typescript/src/renderer/nodes/Drawing.d.ts +2 -2
  152. package/lib/typescript/src/renderer/nodes/Node.d.ts +2 -2
  153. package/lib/typescript/src/renderer/processors/Paint.d.ts +2 -2
  154. package/lib/typescript/src/renderer/processors/math/Math.d.ts +14 -0
  155. package/lib/typescript/src/renderer/processors/math/Matrix3.d.ts +1 -0
  156. package/lib/typescript/src/renderer/typeddash.d.ts +1 -0
  157. package/lib/typescript/src/renderer/useContextBridge.d.ts +5 -0
  158. package/lib/typescript/src/skia/Canvas.d.ts +6 -0
  159. package/lib/typescript/src/skia/Picture/Picture.d.ts +26 -0
  160. package/lib/typescript/src/skia/Picture/PictureFactory.d.ts +8 -0
  161. package/lib/typescript/src/skia/Picture/PictureRecorder.d.ts +15 -0
  162. package/lib/typescript/src/skia/Picture/index.d.ts +4 -0
  163. package/lib/typescript/src/skia/Picture/usePicture.d.ts +11 -0
  164. package/lib/typescript/src/skia/Skia.d.ts +5 -0
  165. package/lib/typescript/src/skia/index.d.ts +2 -0
  166. package/lib/typescript/src/views/SkiaView.d.ts +28 -13
  167. package/lib/typescript/src/views/types.d.ts +0 -23
  168. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  169. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  170. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  171. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  172. package/libs/ios/libsvg.xcframework/Info.plist +5 -5
  173. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  174. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  175. package/package.json +7 -7
  176. package/src/renderer/Canvas.tsx +14 -30
  177. package/src/renderer/HostConfig.ts +2 -20
  178. package/src/renderer/components/Drawing.tsx +16 -0
  179. package/src/renderer/components/Group.tsx +44 -27
  180. package/src/renderer/components/Paint.tsx +5 -35
  181. package/src/renderer/components/Picture.tsx +17 -0
  182. package/src/renderer/components/imageFilters/InnerShadow.tsx +33 -47
  183. package/src/renderer/components/imageFilters/Shadow.tsx +39 -0
  184. package/src/renderer/components/imageFilters/index.ts +1 -2
  185. package/src/renderer/components/index.ts +2 -1
  186. package/src/renderer/components/maskFilters/Blur.tsx +1 -1
  187. package/src/renderer/components/shapes/Box.tsx +98 -0
  188. package/src/renderer/components/shapes/FitBox.tsx +6 -4
  189. package/src/renderer/components/shapes/index.ts +1 -0
  190. package/src/renderer/index.ts +1 -0
  191. package/src/renderer/nodes/Declaration.tsx +14 -0
  192. package/src/renderer/nodes/Drawing.tsx +16 -26
  193. package/src/renderer/nodes/Node.ts +9 -12
  194. package/src/renderer/processors/Paint.ts +34 -31
  195. package/src/renderer/processors/math/Math.ts +16 -0
  196. package/src/renderer/processors/math/Matrix3.ts +35 -31
  197. package/src/renderer/typeddash.ts +18 -0
  198. package/src/renderer/useContextBridge.tsx +21 -0
  199. package/src/skia/Canvas.ts +7 -0
  200. package/src/skia/Picture/Picture.ts +34 -0
  201. package/src/skia/Picture/PictureFactory.ts +9 -0
  202. package/src/skia/Picture/PictureRecorder.ts +18 -0
  203. package/src/skia/Picture/index.ts +4 -0
  204. package/src/skia/Picture/usePicture.ts +28 -0
  205. package/src/skia/Skia.ts +5 -0
  206. package/src/skia/index.ts +2 -0
  207. package/src/values/hooks/useDerivedValue.ts +1 -1
  208. package/src/views/SkiaView.tsx +31 -41
  209. package/src/views/types.ts +0 -24
  210. package/lib/commonjs/renderer/components/Defs.js.map +0 -1
  211. package/lib/commonjs/renderer/components/imageFilters/DropShadow.js.map +0 -1
  212. package/lib/module/renderer/components/Defs.js +0 -16
  213. package/lib/module/renderer/components/Defs.js.map +0 -1
  214. package/lib/module/renderer/components/imageFilters/DropShadow.js.map +0 -1
  215. package/lib/typescript/src/renderer/components/Defs.d.ts +0 -5
  216. package/src/renderer/components/Defs.tsx +0 -19
  217. package/src/renderer/components/imageFilters/DropShadow.tsx +0 -31
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Box.tsx"],"names":["inflate","box","dx","dy","tx","ty","rect","x","y","width","height","rx","ry","deflate","onDeclare","spread","blur","color","inner","__typename__","BoxShadow","props","isBoxShadow","s","onDraw","ctx","node","defaultBox","canvas","paint","opacity","shadows","visit","filter","shadow","map","lPaint","Skia","Paint","setColor","setMaskFilter","MaskFilter","MakeBlur","BlurStyle","Normal","drawRRect","delta","Math","abs","save","clipRRect","ClipOp","Intersect","outer","drawDRRect","restore","Box","defaultProps"],"mappings":"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","sourcesContent":["import React from \"react\";\n\nimport type { Color, SkRRect } from \"../../../skia\";\nimport { ClipOp, BlurStyle, Skia, processColor } from \"../../../skia\";\nimport { createDrawing } from \"../../nodes\";\nimport type { AnimatedProps, CustomPaintProps } from \"../../processors\";\nimport { add, vec, rrect } from \"../../processors\";\nimport { rect, isRRect } from \"../../processors/Rects\";\nimport { createDeclaration } from \"../../nodes/Declaration\";\nimport type { SkJSIInstance } from \"../../../skia/JsiInstance\";\nimport type { SkRect } from \"../../../skia/Rect\";\n\nconst inflate = (box: SkRRect, dx: number, dy: number, tx = 0, ty = 0) =>\n rrect(\n rect(\n box.rect.x - dx + tx,\n box.rect.y - dy + ty,\n box.rect.width + 2 * dx,\n box.rect.height + 2 * dy\n ),\n box.rx + dx,\n box.ry + dy\n );\n\nconst deflate = (box: SkRRect, dx: number, dy: number, tx = 0, ty = 0) =>\n inflate(box, -dx, -dy, tx, ty);\n\ninterface BoxShadowProps {\n dx?: number;\n dy?: number;\n spread?: number;\n blur: number;\n color?: Color;\n inner?: boolean;\n}\n\ninterface BoxShadowDecl extends BoxShadowProps, SkJSIInstance<\"BoxShadow\"> {}\n\nconst onDeclare = createDeclaration<BoxShadowProps>(\n ({ dx, dy, spread, blur, color, inner }) => {\n return { dx, dy, spread, blur, color, inner, __typename__: \"BoxShadow\" };\n }\n);\n\nexport const BoxShadow = (props: AnimatedProps<BoxShadowProps>) => {\n return <skDeclaration onDeclare={onDeclare} {...props} />;\n};\n\nconst isBoxShadow = (s: SkJSIInstance<string>): s is BoxShadowDecl =>\n s.__typename__ === \"BoxShadow\";\n\ninterface BoxProps extends CustomPaintProps {\n box: SkRRect | SkRect;\n}\n\nconst onDraw = createDrawing<BoxProps>((ctx, { box: defaultBox }, node) => {\n const box = isRRect(defaultBox) ? defaultBox : rrect(defaultBox, 0, 0);\n const { canvas, paint, opacity } = ctx;\n const shadows = node.visit(ctx).filter<BoxShadowDecl>(isBoxShadow);\n shadows\n .filter((shadow) => !shadow.inner)\n .map((shadow) => {\n const { color = \"black\", blur, spread = 0, dx = 0, dy = 0 } = shadow;\n const lPaint = Skia.Paint();\n lPaint.setColor(processColor(color, opacity));\n lPaint.setMaskFilter(\n Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)\n );\n canvas.drawRRect(inflate(box, spread, spread, dx, dy), lPaint);\n });\n canvas.drawRRect(box, paint);\n\n shadows\n .filter((shadow) => shadow.inner)\n .map((shadow) => {\n const { color = \"black\", blur, spread = 0, dx = 0, dy = 0 } = shadow;\n const delta = add(vec(10, 10), vec(Math.abs(dx), Math.abs(dy)));\n canvas.save();\n canvas.clipRRect(box, ClipOp.Intersect, false);\n const lPaint = Skia.Paint();\n lPaint.setColor(processColor(color, opacity));\n lPaint.setMaskFilter(\n Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)\n );\n const inner = deflate(box, spread, spread, dx, dy);\n const outer = inflate(box, delta.x, delta.y);\n canvas.drawDRRect(outer, inner, lPaint);\n canvas.restore();\n });\n});\n\nexport const Box = (props: AnimatedProps<BoxProps>) => {\n return <skDrawing onDraw={onDraw} {...props} />;\n};\n\nBox.defaultProps = {\n shadows: [],\n};\n"]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.FitBox = void 0;
6
+ exports.fitbox = exports.FitBox = void 0;
7
7
 
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
 
@@ -15,6 +15,13 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
15
15
 
16
16
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
17
 
18
+ const fitbox = (fit, src, dst) => {
19
+ const rects = (0, _image.fitRects)(fit, src, dst);
20
+ return (0, _image.rect2rect)(rects.src, rects.dst);
21
+ };
22
+
23
+ exports.fitbox = fitbox;
24
+
18
25
  const FitBox = _ref => {
19
26
  let {
20
27
  fit,
@@ -22,10 +29,7 @@ const FitBox = _ref => {
22
29
  dst,
23
30
  children
24
31
  } = _ref;
25
- const transform = (0, _react.useMemo)(() => {
26
- const rects = (0, _image.fitRects)(fit, src, dst);
27
- return (0, _image.rect2rect)(rects.src, rects.dst);
28
- }, [dst, fit, src]);
32
+ const transform = (0, _react.useMemo)(() => fitbox(fit, src, dst), [dst, fit, src]);
29
33
  return /*#__PURE__*/_react.default.createElement(_Group.Group, {
30
34
  transform: transform
31
35
  }, children);
@@ -1 +1 @@
1
- {"version":3,"sources":["FitBox.tsx"],"names":["FitBox","fit","src","dst","children","transform","rects","defaultProps"],"mappings":";;;;;;;AACA;;AAGA;;AAEA;;;;;;AASO,MAAMA,MAAM,GAAG,QAA2C;AAAA,MAA1C;AAAEC,IAAAA,GAAF;AAAOC,IAAAA,GAAP;AAAYC,IAAAA,GAAZ;AAAiBC,IAAAA;AAAjB,GAA0C;AAC/D,QAAMC,SAAS,GAAG,oBAAQ,MAAM;AAC9B,UAAMC,KAAK,GAAG,qBAASL,GAAT,EAAcC,GAAd,EAAmBC,GAAnB,CAAd;AACA,WAAO,sBAAUG,KAAK,CAACJ,GAAhB,EAAqBI,KAAK,CAACH,GAA3B,CAAP;AACD,GAHiB,EAGf,CAACA,GAAD,EAAMF,GAAN,EAAWC,GAAX,CAHe,CAAlB;AAIA,sBAAO,6BAAC,YAAD;AAAO,IAAA,SAAS,EAAEG;AAAlB,KAA8BD,QAA9B,CAAP;AACD,CANM;;;AAQPJ,MAAM,CAACO,YAAP,GAAsB;AACpBN,EAAAA,GAAG,EAAE;AADe,CAAtB","sourcesContent":["import type { ReactNode } from \"react\";\nimport React, { useMemo } from \"react\";\n\nimport type { Fit } from \"../image\";\nimport { rect2rect, fitRects } from \"../image\";\nimport type { SkRect } from \"../../../skia\";\nimport { Group } from \"../Group\";\n\ninterface FitProps {\n fit: Fit;\n src: SkRect;\n dst: SkRect;\n children: ReactNode | ReactNode[];\n}\n\nexport const FitBox = ({ fit, src, dst, children }: FitProps) => {\n const transform = useMemo(() => {\n const rects = fitRects(fit, src, dst);\n return rect2rect(rects.src, rects.dst);\n }, [dst, fit, src]);\n return <Group transform={transform}>{children}</Group>;\n};\n\nFitBox.defaultProps = {\n fit: \"contain\",\n};\n"]}
1
+ {"version":3,"sources":["FitBox.tsx"],"names":["fitbox","fit","src","dst","rects","FitBox","children","transform","defaultProps"],"mappings":";;;;;;;AACA;;AAGA;;AAEA;;;;;;AASO,MAAMA,MAAM,GAAG,CAACC,GAAD,EAAWC,GAAX,EAAwBC,GAAxB,KAAwC;AAC5D,QAAMC,KAAK,GAAG,qBAASH,GAAT,EAAcC,GAAd,EAAmBC,GAAnB,CAAd;AACA,SAAO,sBAAUC,KAAK,CAACF,GAAhB,EAAqBE,KAAK,CAACD,GAA3B,CAAP;AACD,CAHM;;;;AAKA,MAAME,MAAM,GAAG,QAA2C;AAAA,MAA1C;AAAEJ,IAAAA,GAAF;AAAOC,IAAAA,GAAP;AAAYC,IAAAA,GAAZ;AAAiBG,IAAAA;AAAjB,GAA0C;AAC/D,QAAMC,SAAS,GAAG,oBAAQ,MAAMP,MAAM,CAACC,GAAD,EAAMC,GAAN,EAAWC,GAAX,CAApB,EAAqC,CAACA,GAAD,EAAMF,GAAN,EAAWC,GAAX,CAArC,CAAlB;AACA,sBAAO,6BAAC,YAAD;AAAO,IAAA,SAAS,EAAEK;AAAlB,KAA8BD,QAA9B,CAAP;AACD,CAHM;;;AAKPD,MAAM,CAACG,YAAP,GAAsB;AACpBP,EAAAA,GAAG,EAAE;AADe,CAAtB","sourcesContent":["import type { ReactNode } from \"react\";\nimport React, { useMemo } from \"react\";\n\nimport type { Fit } from \"../image\";\nimport { rect2rect, fitRects } from \"../image\";\nimport type { SkRect } from \"../../../skia\";\nimport { Group } from \"../Group\";\n\ninterface FitProps {\n fit: Fit;\n src: SkRect;\n dst: SkRect;\n children: ReactNode | ReactNode[];\n}\n\nexport const fitbox = (fit: Fit, src: SkRect, dst: SkRect) => {\n const rects = fitRects(fit, src, dst);\n return rect2rect(rects.src, rects.dst);\n};\n\nexport const FitBox = ({ fit, src, dst, children }: FitProps) => {\n const transform = useMemo(() => fitbox(fit, src, dst), [dst, fit, src]);\n return <Group transform={transform}>{children}</Group>;\n};\n\nFitBox.defaultProps = {\n fit: \"contain\",\n};\n"]}
@@ -159,4 +159,17 @@ Object.keys(_FitBox).forEach(function (key) {
159
159
  }
160
160
  });
161
161
  });
162
+
163
+ var _Box = require("./Box");
164
+
165
+ Object.keys(_Box).forEach(function (key) {
166
+ if (key === "default" || key === "__esModule") return;
167
+ if (key in exports && exports[key] === _Box[key]) return;
168
+ Object.defineProperty(exports, key, {
169
+ enumerable: true,
170
+ get: function () {
171
+ return _Box[key];
172
+ }
173
+ });
174
+ });
162
175
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from \"./Circle\";\nexport * from \"./Rect\";\nexport * from \"./RoundedRect\";\nexport * from \"./DiffRect\";\nexport * from \"./Line\";\nexport * from \"./Path\";\nexport * from \"./Oval\";\nexport * from \"./Points\";\nexport * from \"./Patch\";\nexport * from \"./Vertices\";\nexport * from \"./Fill\";\nexport * from \"./FitBox\";\n"]}
1
+ {"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from \"./Circle\";\nexport * from \"./Rect\";\nexport * from \"./RoundedRect\";\nexport * from \"./DiffRect\";\nexport * from \"./Line\";\nexport * from \"./Path\";\nexport * from \"./Oval\";\nexport * from \"./Points\";\nexport * from \"./Patch\";\nexport * from \"./Vertices\";\nexport * from \"./Fill\";\nexport * from \"./FitBox\";\nexport * from \"./Box\";\n"]}
@@ -42,4 +42,17 @@ Object.keys(_nodes).forEach(function (key) {
42
42
  }
43
43
  });
44
44
  });
45
+
46
+ var _useContextBridge = require("./useContextBridge");
47
+
48
+ Object.keys(_useContextBridge).forEach(function (key) {
49
+ if (key === "default" || key === "__esModule") return;
50
+ if (key in exports && exports[key] === _useContextBridge[key]) return;
51
+ Object.defineProperty(exports, key, {
52
+ enumerable: true,
53
+ get: function () {
54
+ return _useContextBridge[key];
55
+ }
56
+ });
57
+ });
45
58
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from \"./Canvas\";\nexport * from \"./components\";\nexport * from \"./nodes\";\n"]}
1
+ {"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from \"./Canvas\";\nexport * from \"./components\";\nexport * from \"./nodes\";\nexport * from \"./useContextBridge\";\n"]}
@@ -3,7 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createDeclaration = exports.DeclarationNode = void 0;
6
+ exports.useDeclaration = exports.isDeclarationNode = exports.createDeclaration = exports.DeclarationNode = void 0;
7
+
8
+ var _react = require("react");
7
9
 
8
10
  var _processors = require("../processors");
9
11
 
@@ -15,6 +17,15 @@ const createDeclaration = cb => cb;
15
17
 
16
18
  exports.createDeclaration = createDeclaration;
17
19
 
20
+ const useDeclaration = (cb, deps) => // eslint-disable-next-line react-hooks/exhaustive-deps
21
+ (0, _react.useCallback)(cb, deps !== null && deps !== void 0 ? deps : []);
22
+
23
+ exports.useDeclaration = useDeclaration;
24
+
25
+ const isDeclarationNode = node => node instanceof DeclarationNode;
26
+
27
+ exports.isDeclarationNode = isDeclarationNode;
28
+
18
29
  class DeclarationNode extends _Node.Node {
19
30
  constructor(depMgr, onDeclare, props) {
20
31
  super(depMgr, props);
@@ -1 +1 @@
1
- {"version":3,"sources":["Declaration.tsx"],"names":["createDeclaration","cb","DeclarationNode","Node","constructor","depMgr","onDeclare","props","memoizable","_props","draw","ctx","children","visit","obj"],"mappings":";;;;;;;AAGA;;AAGA;;;;AAUO,MAAMA,iBAAiB,GAC5BC,EAD+B,IAEJA,EAFtB;;;;AAQA,MAAMC,eAAN,SAAiCC,UAAjC,CAAyC;AAG9CC,EAAAA,WAAW,CACTC,MADS,EAETC,SAFS,EAGTC,KAHS,EAIT;AACA,UAAMF,MAAN,EAAcE,KAAd;;AADA;;AAEA,UAAMC,UAAN,GAAmB,CAAC,4BAAWD,KAAX,CAApB;AACA,SAAKD,SAAL,GAAiBA,SAAjB;AACD;;AAEQ,MAALC,KAAK,CAACA,KAAD,EAA0B;AACjC,SAAKC,UAAL,GAAkB,CAAC,4BAAWD,KAAX,CAAnB;AACA,UAAMA,KAAN,GAAcA,KAAd;AACD;;AAEQ,MAALA,KAAK,GAAG;AACV,WAAO,KAAKE,MAAZ;AACD;;AAEDC,EAAAA,IAAI,CAACC,GAAD,EAAsB;AACxB,UAAMC,QAAQ,GAAG,KAAKC,KAAL,CAAWF,GAAX,CAAjB;AACA,UAAMJ,KAAK,GAAG,6BAAY,KAAKA,KAAjB,CAAd;AACA,UAAMO,GAAG,GAAG,KAAKR,SAAL,CAAeC,KAAf,EAAsBK,QAAtB,EAAgCD,GAAhC,CAAZ;AACA,WAAOG,GAAP;AACD;;AA3B6C","sourcesContent":["import type { DrawingContext } from \"../DrawingContext\";\nimport type { SkJSIInstance } from \"../../skia/JsiInstance\";\nimport type { AnimatedProps } from \"../processors\";\nimport { isAnimated, materialize } from \"../processors\";\nimport type { DependencyManager } from \"../DependencyManager\";\n\nimport { Node } from \"./Node\";\n\nexport type DeclarationResult = SkJSIInstance<string> | null;\n\ntype DeclarationCallback<T> = (\n props: T,\n children: DeclarationResult[],\n ctx: DrawingContext\n) => DeclarationResult;\n\nexport const createDeclaration = <T,>(\n cb: DeclarationCallback<T>\n): DeclarationCallback<T> => cb;\n\nexport interface DeclarationProps<P> {\n onDeclare: DeclarationCallback<P>;\n}\n\nexport class DeclarationNode<P> extends Node<P> {\n private onDeclare: DeclarationCallback<P>;\n\n constructor(\n depMgr: DependencyManager,\n onDeclare: DeclarationCallback<P>,\n props: AnimatedProps<P>\n ) {\n super(depMgr, props);\n super.memoizable = !isAnimated(props);\n this.onDeclare = onDeclare;\n }\n\n set props(props: AnimatedProps<P>) {\n this.memoizable = !isAnimated(props);\n super.props = props;\n }\n\n get props() {\n return this._props;\n }\n\n draw(ctx: DrawingContext) {\n const children = this.visit(ctx);\n const props = materialize(this.props);\n const obj = this.onDeclare(props, children, ctx);\n return obj;\n }\n}\n"]}
1
+ {"version":3,"sources":["Declaration.tsx"],"names":["createDeclaration","cb","useDeclaration","deps","isDeclarationNode","node","DeclarationNode","Node","constructor","depMgr","onDeclare","props","memoizable","_props","draw","ctx","children","visit","obj"],"mappings":";;;;;;;AACA;;AAKA;;AAGA;;;;AAUO,MAAMA,iBAAiB,GAC5BC,EAD+B,IAEJA,EAFtB;;;;AAIA,MAAMC,cAAc,GAAG,CAC5BD,EAD4B,EAE5BE,IAF4B,KAI5B;AACA,wBAAYF,EAAZ,EAAgBE,IAAhB,aAAgBA,IAAhB,cAAgBA,IAAhB,GAAwB,EAAxB,CALK;;;;AAOA,MAAMC,iBAAiB,GAC5BC,IAD+B,IAEMA,IAAI,YAAYC,eAFhD;;;;AAQA,MAAMA,eAAN,SAAiCC,UAAjC,CAAyC;AAG9CC,EAAAA,WAAW,CACTC,MADS,EAETC,SAFS,EAGTC,KAHS,EAIT;AACA,UAAMF,MAAN,EAAcE,KAAd;;AADA;;AAEA,UAAMC,UAAN,GAAmB,CAAC,4BAAWD,KAAX,CAApB;AACA,SAAKD,SAAL,GAAiBA,SAAjB;AACD;;AAEQ,MAALC,KAAK,CAACA,KAAD,EAA0B;AACjC,SAAKC,UAAL,GAAkB,CAAC,4BAAWD,KAAX,CAAnB;AACA,UAAMA,KAAN,GAAcA,KAAd;AACD;;AAEQ,MAALA,KAAK,GAAG;AACV,WAAO,KAAKE,MAAZ;AACD;;AAEDC,EAAAA,IAAI,CAACC,GAAD,EAAsB;AACxB,UAAMC,QAAQ,GAAG,KAAKC,KAAL,CAAWF,GAAX,CAAjB;AACA,UAAMJ,KAAK,GAAG,6BAAY,KAAKA,KAAjB,CAAd;AACA,UAAMO,GAAG,GAAG,KAAKR,SAAL,CAAeC,KAAf,EAAsBK,QAAtB,EAAgCD,GAAhC,CAAZ;AACA,WAAOG,GAAP;AACD;;AA3B6C","sourcesContent":["import type { DependencyList } from \"react\";\nimport { useCallback } from \"react\";\n\nimport type { DrawingContext } from \"../DrawingContext\";\nimport type { SkJSIInstance } from \"../../skia/JsiInstance\";\nimport type { AnimatedProps } from \"../processors\";\nimport { isAnimated, materialize } from \"../processors\";\nimport type { DependencyManager } from \"../DependencyManager\";\n\nimport { Node } from \"./Node\";\n\nexport type DeclarationResult = SkJSIInstance<string> | null;\n\ntype DeclarationCallback<T> = (\n props: T,\n children: DeclarationResult[],\n ctx: DrawingContext\n) => DeclarationResult;\n\nexport const createDeclaration = <T,>(\n cb: DeclarationCallback<T>\n): DeclarationCallback<T> => cb;\n\nexport const useDeclaration = <P,>(\n cb: DeclarationCallback<P>,\n deps?: DependencyList\n) =>\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useCallback(cb, deps ?? []);\n\nexport const isDeclarationNode = (\n node: Node\n): node is DeclarationNode<unknown> => node instanceof DeclarationNode;\n\nexport interface DeclarationProps<P> {\n onDeclare: DeclarationCallback<P>;\n}\n\nexport class DeclarationNode<P> extends Node<P> {\n private onDeclare: DeclarationCallback<P>;\n\n constructor(\n depMgr: DependencyManager,\n onDeclare: DeclarationCallback<P>,\n props: AnimatedProps<P>\n ) {\n super(depMgr, props);\n super.memoizable = !isAnimated(props);\n this.onDeclare = onDeclare;\n }\n\n set props(props: AnimatedProps<P>) {\n this.memoizable = !isAnimated(props);\n super.props = props;\n }\n\n get props() {\n return this._props;\n }\n\n draw(ctx: DrawingContext) {\n const children = this.visit(ctx);\n const props = materialize(this.props);\n const obj = this.onDeclare(props, children, ctx);\n return obj;\n }\n}\n"]}
@@ -3,9 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createDrawing = exports.DrawingNode = exports.Drawing = void 0;
6
+ exports.useDrawing = exports.createDrawing = exports.DrawingNode = void 0;
7
7
 
8
- var _react = _interopRequireDefault(require("react"));
8
+ var _react = require("react");
9
9
 
10
10
  var _processors = require("../processors");
11
11
 
@@ -15,19 +15,16 @@ var _skia = require("../../skia");
15
15
 
16
16
  var _Node = require("./Node");
17
17
 
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
18
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
21
19
 
22
20
  const createDrawing = cb => cb;
23
21
 
24
22
  exports.createDrawing = createDrawing;
25
23
 
26
- const Drawing = props => {
27
- return /*#__PURE__*/_react.default.createElement("skDrawing", props);
28
- };
24
+ const useDrawing = (cb, deps) => // eslint-disable-next-line react-hooks/exhaustive-deps
25
+ (0, _react.useCallback)(cb, deps !== null && deps !== void 0 ? deps : []);
29
26
 
30
- exports.Drawing = Drawing;
27
+ exports.useDrawing = useDrawing;
31
28
 
32
29
  class DrawingNode extends _Node.Node {
33
30
  constructor(depMgr, onDraw, skipProcessing, props) {
@@ -47,23 +44,11 @@ class DrawingNode extends _Node.Node {
47
44
  if (this.skipProcessing) {
48
45
  this.onDraw(ctx, drawingProps, this);
49
46
  } else {
50
- const selectedPaint = (0, _processors.selectPaint)(ctx.paint, drawingProps);
51
- (0, _processors.processPaint)(selectedPaint, ctx.opacity, drawingProps); // to draw only once:
52
- // onDraw({ ...ctx, paint: selectedPaint }, children);
53
-
54
- [selectedPaint, ...this.children.map(child => {
55
- //if (child.type === NodeType.Declaration) {
56
- const ret = child.draw(ctx);
57
-
58
- if (ret) {
59
- return ret;
60
- } //}
61
-
62
-
63
- return null;
64
- }).filter(_skia.isPaint)].forEach(paint => {
47
+ const declarations = this.visit(ctx);
48
+ const paint = (0, _processors.processPaint)(ctx.paint.copy(), ctx.opacity, drawingProps, declarations);
49
+ [paint, ...declarations.filter(_skia.isPaint)].forEach(currentPaint => {
65
50
  this.onDraw({ ...ctx,
66
- paint
51
+ paint: currentPaint
67
52
  }, drawingProps, this);
68
53
  });
69
54
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["Drawing.tsx"],"names":["createDrawing","cb","Drawing","props","DrawingNode","Node","constructor","depMgr","onDraw","skipProcessing","draw","ctx","drawingProps","selectedPaint","paint","opacity","children","map","child","ret","filter","isPaint","forEach"],"mappings":";;;;;;;AACA;;AAGA;;AAEA;;AACA;;AAGA;;;;;;AAUO,MAAMA,aAAa,GAAQC,EAAL,IAC3BA,EADK;;;;AASA,MAAMC,OAAO,GAAQC,KAAL,IAAgC;AACrD,sBAAO,0CAAeA,KAAf,CAAP;AACD,CAFM;;;;AAIA,MAAMC,WAAN,SAA6BC,UAA7B,CAAqC;AAI1CC,EAAAA,WAAW,CACTC,MADS,EAETC,MAFS,EAGTC,cAHS,EAITN,KAJS,EAKT;AACA,UAAMI,MAAN,EAAcJ,KAAd;;AADA;;AAAA;;AAEA,SAAKK,MAAL,GAAcA,MAAd;AACA,SAAKC,cAAL,GAAsBA,cAAtB;AACD;;AAEDC,EAAAA,IAAI,CAACC,GAAD,EAAsB;AACxB,UAAMC,YAAY,GAAG,6BAAY,KAAKT,KAAjB,CAArB;;AACA,QAAI,KAAKM,cAAT,EAAyB;AACvB,WAAKD,MAAL,CAAYG,GAAZ,EAAiBC,YAAjB,EAA+B,IAA/B;AACD,KAFD,MAEO;AACL,YAAMC,aAAa,GAAG,6BAAYF,GAAG,CAACG,KAAhB,EAAuBF,YAAvB,CAAtB;AACA,oCAAaC,aAAb,EAA4BF,GAAG,CAACI,OAAhC,EAAyCH,YAAzC,EAFK,CAGL;AACA;;AACA,OACEC,aADF,EAEE,GAAG,KAAKG,QAAL,CACAC,GADA,CACKC,KAAD,IAAW;AACd;AACA,cAAMC,GAAG,GAAGD,KAAK,CAACR,IAAN,CAAWC,GAAX,CAAZ;;AACA,YAAIQ,GAAJ,EAAS;AACP,iBAAOA,GAAP;AACD,SALa,CAMd;;;AACA,eAAO,IAAP;AACD,OATA,EAUAC,MAVA,CAUOC,aAVP,CAFL,EAaEC,OAbF,CAaWR,KAAD,IAAW;AACnB,aAAKN,MAAL,CAAY,EAAE,GAAGG,GAAL;AAAUG,UAAAA;AAAV,SAAZ,EAA+BF,YAA/B,EAA6C,IAA7C;AACD,OAfD;AAgBD;AACF;;AAzCyC","sourcesContent":["import type { ReactNode } from \"react\";\nimport React from \"react\";\n\nimport type { DrawingContext } from \"../DrawingContext\";\nimport { processPaint, selectPaint } from \"../processors\";\nimport type { AnimatedProps } from \"../processors/Animations/Animations\";\nimport { materialize } from \"../processors/Animations/Animations\";\nimport { isPaint } from \"../../skia\";\nimport type { DependencyManager } from \"../DependencyManager\";\n\nimport { Node } from \"./Node\";\n\ntype DrawingCallback<P> = (\n ctx: DrawingContext,\n props: P,\n node: Node<P>\n) => void;\n\ntype OnDrawCallback<P> = (ctx: DrawingContext, props: P, node: Node<P>) => void;\n\nexport const createDrawing = <P,>(cb: OnDrawCallback<P>): DrawingCallback<P> =>\n cb;\n\nexport type DrawingProps<T> = {\n onDraw: DrawingCallback<T>;\n skipProcessing?: boolean;\n children?: ReactNode | ReactNode[];\n};\n\nexport const Drawing = <P,>(props: DrawingProps<P>) => {\n return <skDrawing {...props} />;\n};\n\nexport class DrawingNode<P> extends Node<P> {\n onDraw: DrawingCallback<P>;\n skipProcessing: boolean;\n\n constructor(\n depMgr: DependencyManager,\n onDraw: DrawingCallback<P>,\n skipProcessing: boolean,\n props: AnimatedProps<P>\n ) {\n super(depMgr, props);\n this.onDraw = onDraw;\n this.skipProcessing = skipProcessing;\n }\n\n draw(ctx: DrawingContext) {\n const drawingProps = materialize(this.props);\n if (this.skipProcessing) {\n this.onDraw(ctx, drawingProps, this);\n } else {\n const selectedPaint = selectPaint(ctx.paint, drawingProps);\n processPaint(selectedPaint, ctx.opacity, drawingProps);\n // to draw only once:\n // onDraw({ ...ctx, paint: selectedPaint }, children);\n [\n selectedPaint,\n ...this.children\n .map((child) => {\n //if (child.type === NodeType.Declaration) {\n const ret = child.draw(ctx);\n if (ret) {\n return ret;\n }\n //}\n return null;\n })\n .filter(isPaint),\n ].forEach((paint) => {\n this.onDraw({ ...ctx, paint }, drawingProps, this);\n });\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["Drawing.tsx"],"names":["createDrawing","cb","useDrawing","deps","DrawingNode","Node","constructor","depMgr","onDraw","skipProcessing","props","draw","ctx","drawingProps","declarations","visit","paint","copy","opacity","filter","isPaint","forEach","currentPaint"],"mappings":";;;;;;;AACA;;AAGA;;AAEA;;AACA;;AAGA;;;;AAUO,MAAMA,aAAa,GAAQC,EAAL,IAC3BA,EADK;;;;AAGA,MAAMC,UAAU,GAAG,CAAKD,EAAL,EAA4BE,IAA5B,KACxB;AACA,wBAAYF,EAAZ,EAAgBE,IAAhB,aAAgBA,IAAhB,cAAgBA,IAAhB,GAAwB,EAAxB,CAFK;;;;AAUA,MAAMC,WAAN,SAA6BC,UAA7B,CAAqC;AAI1CC,EAAAA,WAAW,CACTC,MADS,EAETC,MAFS,EAGTC,cAHS,EAITC,KAJS,EAKT;AACA,UAAMH,MAAN,EAAcG,KAAd;;AADA;;AAAA;;AAEA,SAAKF,MAAL,GAAcA,MAAd;AACA,SAAKC,cAAL,GAAsBA,cAAtB;AACD;;AAEDE,EAAAA,IAAI,CAACC,GAAD,EAAsB;AACxB,UAAMC,YAAY,GAAG,6BAAY,KAAKH,KAAjB,CAArB;;AACA,QAAI,KAAKD,cAAT,EAAyB;AACvB,WAAKD,MAAL,CAAYI,GAAZ,EAAiBC,YAAjB,EAA+B,IAA/B;AACD,KAFD,MAEO;AACL,YAAMC,YAAY,GAAG,KAAKC,KAAL,CAAWH,GAAX,CAArB;AACA,YAAMI,KAAK,GAAG,8BACZJ,GAAG,CAACI,KAAJ,CAAUC,IAAV,EADY,EAEZL,GAAG,CAACM,OAFQ,EAGZL,YAHY,EAIZC,YAJY,CAAd;AAMA,OAACE,KAAD,EAAQ,GAAGF,YAAY,CAACK,MAAb,CAAoBC,aAApB,CAAX,EAAyCC,OAAzC,CAAkDC,YAAD,IAAkB;AACjE,aAAKd,MAAL,CAAY,EAAE,GAAGI,GAAL;AAAUI,UAAAA,KAAK,EAAEM;AAAjB,SAAZ,EAA6CT,YAA7C,EAA2D,IAA3D;AACD,OAFD;AAGD;AACF;;AA/ByC","sourcesContent":["import type { DependencyList, ReactNode } from \"react\";\nimport { useCallback } from \"react\";\n\nimport type { DrawingContext } from \"../DrawingContext\";\nimport { processPaint } from \"../processors\";\nimport type { AnimatedProps } from \"../processors/Animations/Animations\";\nimport { materialize } from \"../processors/Animations/Animations\";\nimport { isPaint } from \"../../skia\";\nimport type { DependencyManager } from \"../DependencyManager\";\n\nimport { Node } from \"./Node\";\n\ntype DrawingCallback<P> = (\n ctx: DrawingContext,\n props: P,\n node: Node<P>\n) => void;\n\ntype OnDrawCallback<P> = (ctx: DrawingContext, props: P, node: Node<P>) => void;\n\nexport const createDrawing = <P,>(cb: OnDrawCallback<P>): DrawingCallback<P> =>\n cb;\n\nexport const useDrawing = <P,>(cb: OnDrawCallback<P>, deps?: DependencyList) =>\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useCallback(cb, deps ?? []);\n\nexport type DrawingProps<T> = {\n onDraw: DrawingCallback<T>;\n skipProcessing?: boolean;\n children?: ReactNode | ReactNode[];\n};\n\nexport class DrawingNode<P> extends Node<P> {\n onDraw: DrawingCallback<P>;\n skipProcessing: boolean;\n\n constructor(\n depMgr: DependencyManager,\n onDraw: DrawingCallback<P>,\n skipProcessing: boolean,\n props: AnimatedProps<P>\n ) {\n super(depMgr, props);\n this.onDraw = onDraw;\n this.skipProcessing = skipProcessing;\n }\n\n draw(ctx: DrawingContext) {\n const drawingProps = materialize(this.props);\n if (this.skipProcessing) {\n this.onDraw(ctx, drawingProps, this);\n } else {\n const declarations = this.visit(ctx);\n const paint = processPaint(\n ctx.paint.copy(),\n ctx.opacity,\n drawingProps,\n declarations\n );\n [paint, ...declarations.filter(isPaint)].forEach((currentPaint) => {\n this.onDraw({ ...ctx, paint: currentPaint }, drawingProps, this);\n });\n }\n }\n}\n"]}
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.NodeType = exports.Node = void 0;
7
7
 
8
- var _skia = require("../../skia");
9
-
10
8
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
11
9
 
12
10
  let NodeType;
@@ -25,7 +23,7 @@ class Node {
25
23
 
26
24
  _defineProperty(this, "memoizable", false);
27
25
 
28
- _defineProperty(this, "memoized", false);
26
+ _defineProperty(this, "memoized", null);
29
27
 
30
28
  _defineProperty(this, "parent", void 0);
31
29
 
@@ -47,26 +45,21 @@ class Node {
47
45
  return this._props;
48
46
  }
49
47
 
50
- visit(ctx) {
48
+ visit(ctx, children) {
51
49
  const returnedValues = [];
52
- let currentCtx = ctx;
53
- this.children.forEach(child => {
50
+ (children !== null && children !== void 0 ? children : this.children).forEach(child => {
54
51
  if (!child.memoized) {
55
- const ret = child.draw(currentCtx);
52
+ const ret = child.draw(ctx);
56
53
 
57
54
  if (ret) {
58
- if ((0, _skia.isPaint)(ret)) {
59
- currentCtx = { ...currentCtx,
60
- paint: ret
61
- };
62
- }
63
-
64
55
  returnedValues.push(ret);
65
- }
66
56
 
67
- if (child.memoizable) {
68
- child.memoized = true;
57
+ if (child.memoizable) {
58
+ child.memoized = ret;
59
+ }
69
60
  }
61
+ } else {
62
+ returnedValues.push(child.memoized);
70
63
  }
71
64
  });
72
65
  return returnedValues;
@@ -1 +1 @@
1
- {"version":3,"sources":["Node.ts"],"names":["NodeType","Node","constructor","depMgr","props","_props","unSubscribeNode","subscribeNode","visit","ctx","returnedValues","currentCtx","children","forEach","child","memoized","ret","draw","paint","push","memoizable"],"mappings":";;;;;;;AAAA;;;;IAMYA,Q;;;WAAAA,Q;AAAAA,EAAAA,Q;AAAAA,EAAAA,Q;GAAAA,Q,wBAAAA,Q;;AAOL,MAAeC,IAAf,CAAiC;AAQtCC,EAAAA,WAAW,CAACC,MAAD,EAA4BC,KAA5B,EAAqD;AAAA,sCAPpC,EAOoC;;AAAA;;AAAA,wCALnD,KAKmD;;AAAA,sCAJrD,KAIqD;;AAAA;;AAAA;;AAC9D,SAAKC,MAAL,GAAcD,KAAd;AACA,SAAKD,MAAL,GAAcA,MAAd;AACA,SAAKA,MAAL,CAAYG,eAAZ,CAA4B,IAA5B;AACA,SAAKH,MAAL,CAAYI,aAAZ,CAA0B,IAA1B,EAAgCH,KAAhC;AACD;;AAIQ,MAALA,KAAK,CAACA,KAAD,EAA0B;AACjC,SAAKD,MAAL,CAAYG,eAAZ,CAA4B,IAA5B;AACA,SAAKH,MAAL,CAAYI,aAAZ,CAA0B,IAA1B,EAAgCH,KAAhC;AACA,SAAKC,MAAL,GAAcD,KAAd;AACD;;AAEQ,MAALA,KAAK,GAAG;AACV,WAAO,KAAKC,MAAZ;AACD;;AAEDG,EAAAA,KAAK,CAACC,GAAD,EAAsB;AACzB,UAAMC,cAAkD,GAAG,EAA3D;AACA,QAAIC,UAAU,GAAGF,GAAjB;AACA,SAAKG,QAAL,CAAcC,OAAd,CAAuBC,KAAD,IAAW;AAC/B,UAAI,CAACA,KAAK,CAACC,QAAX,EAAqB;AACnB,cAAMC,GAAG,GAAGF,KAAK,CAACG,IAAN,CAAWN,UAAX,CAAZ;;AACA,YAAIK,GAAJ,EAAS;AACP,cAAI,mBAAQA,GAAR,CAAJ,EAAkB;AAChBL,YAAAA,UAAU,GAAG,EAAE,GAAGA,UAAL;AAAiBO,cAAAA,KAAK,EAAEF;AAAxB,aAAb;AACD;;AACDN,UAAAA,cAAc,CAACS,IAAf,CAAoBH,GAApB;AACD;;AACD,YAAIF,KAAK,CAACM,UAAV,EAAsB;AACpBN,UAAAA,KAAK,CAACC,QAAN,GAAiB,IAAjB;AACD;AACF;AACF,KAbD;AAcA,WAAOL,cAAP;AACD;;AA7CqC","sourcesContent":["import { isPaint } from \"../../skia\";\nimport type { SkJSIInstance } from \"../../skia/JsiInstance\";\nimport type { DependencyManager } from \"../DependencyManager\";\nimport type { DrawingContext } from \"../DrawingContext\";\nimport type { AnimatedProps } from \"../processors\";\n\nexport enum NodeType {\n Declaration = \"skDeclaration\",\n Drawing = \"skDrawing\",\n}\n\ntype DeclarationResult = SkJSIInstance<string> | null;\n\nexport abstract class Node<P = unknown> {\n readonly children: Node[] = [];\n _props: AnimatedProps<P>;\n memoizable = false;\n memoized = false;\n parent?: Node;\n depMgr: DependencyManager;\n\n constructor(depMgr: DependencyManager, props: AnimatedProps<P>) {\n this._props = props;\n this.depMgr = depMgr;\n this.depMgr.unSubscribeNode(this);\n this.depMgr.subscribeNode(this, props);\n }\n\n abstract draw(ctx: DrawingContext): void | DeclarationResult;\n\n set props(props: AnimatedProps<P>) {\n this.depMgr.unSubscribeNode(this);\n this.depMgr.subscribeNode(this, props);\n this._props = props;\n }\n\n get props() {\n return this._props;\n }\n\n visit(ctx: DrawingContext) {\n const returnedValues: Exclude<DeclarationResult, null>[] = [];\n let currentCtx = ctx;\n this.children.forEach((child) => {\n if (!child.memoized) {\n const ret = child.draw(currentCtx);\n if (ret) {\n if (isPaint(ret)) {\n currentCtx = { ...currentCtx, paint: ret };\n }\n returnedValues.push(ret);\n }\n if (child.memoizable) {\n child.memoized = true;\n }\n }\n });\n return returnedValues;\n }\n}\n"]}
1
+ {"version":3,"sources":["Node.ts"],"names":["NodeType","Node","constructor","depMgr","props","_props","unSubscribeNode","subscribeNode","visit","ctx","children","returnedValues","forEach","child","memoized","ret","draw","push","memoizable"],"mappings":";;;;;;;;;IAKYA,Q;;;WAAAA,Q;AAAAA,EAAAA,Q;AAAAA,EAAAA,Q;GAAAA,Q,wBAAAA,Q;;AAOL,MAAeC,IAAf,CAAiC;AAQtCC,EAAAA,WAAW,CAACC,MAAD,EAA4BC,KAA5B,EAAqD;AAAA,sCAPpC,EAOoC;;AAAA;;AAAA,wCALnD,KAKmD;;AAAA,sCAJ3B,IAI2B;;AAAA;;AAAA;;AAC9D,SAAKC,MAAL,GAAcD,KAAd;AACA,SAAKD,MAAL,GAAcA,MAAd;AACA,SAAKA,MAAL,CAAYG,eAAZ,CAA4B,IAA5B;AACA,SAAKH,MAAL,CAAYI,aAAZ,CAA0B,IAA1B,EAAgCH,KAAhC;AACD;;AAIQ,MAALA,KAAK,CAACA,KAAD,EAA0B;AACjC,SAAKD,MAAL,CAAYG,eAAZ,CAA4B,IAA5B;AACA,SAAKH,MAAL,CAAYI,aAAZ,CAA0B,IAA1B,EAAgCH,KAAhC;AACA,SAAKC,MAAL,GAAcD,KAAd;AACD;;AAEQ,MAALA,KAAK,GAAG;AACV,WAAO,KAAKC,MAAZ;AACD;;AAEDG,EAAAA,KAAK,CAACC,GAAD,EAAsBC,QAAtB,EAAyC;AAC5C,UAAMC,cAAkD,GAAG,EAA3D;AACA,KAACD,QAAD,aAACA,QAAD,cAACA,QAAD,GAAa,KAAKA,QAAlB,EAA4BE,OAA5B,CAAqCC,KAAD,IAAW;AAC7C,UAAI,CAACA,KAAK,CAACC,QAAX,EAAqB;AACnB,cAAMC,GAAG,GAAGF,KAAK,CAACG,IAAN,CAAWP,GAAX,CAAZ;;AACA,YAAIM,GAAJ,EAAS;AACPJ,UAAAA,cAAc,CAACM,IAAf,CAAoBF,GAApB;;AACA,cAAIF,KAAK,CAACK,UAAV,EAAsB;AACpBL,YAAAA,KAAK,CAACC,QAAN,GAAiBC,GAAjB;AACD;AACF;AACF,OARD,MAQO;AACLJ,QAAAA,cAAc,CAACM,IAAf,CAAoBJ,KAAK,CAACC,QAA1B;AACD;AACF,KAZD;AAaA,WAAOH,cAAP;AACD;;AA3CqC","sourcesContent":["import type { SkJSIInstance } from \"../../skia/JsiInstance\";\nimport type { DependencyManager } from \"../DependencyManager\";\nimport type { DrawingContext } from \"../DrawingContext\";\nimport type { AnimatedProps } from \"../processors\";\n\nexport enum NodeType {\n Declaration = \"skDeclaration\",\n Drawing = \"skDrawing\",\n}\n\ntype DeclarationResult = SkJSIInstance<string> | null;\n\nexport abstract class Node<P = unknown> {\n readonly children: Node[] = [];\n _props: AnimatedProps<P>;\n memoizable = false;\n memoized: DeclarationResult | null = null;\n parent?: Node;\n depMgr: DependencyManager;\n\n constructor(depMgr: DependencyManager, props: AnimatedProps<P>) {\n this._props = props;\n this.depMgr = depMgr;\n this.depMgr.unSubscribeNode(this);\n this.depMgr.subscribeNode(this, props);\n }\n\n abstract draw(ctx: DrawingContext): void | DeclarationResult;\n\n set props(props: AnimatedProps<P>) {\n this.depMgr.unSubscribeNode(this);\n this.depMgr.subscribeNode(this, props);\n this._props = props;\n }\n\n get props() {\n return this._props;\n }\n\n visit(ctx: DrawingContext, children?: Node[]) {\n const returnedValues: Exclude<DeclarationResult, null>[] = [];\n (children ?? this.children).forEach((child) => {\n if (!child.memoized) {\n const ret = child.draw(ctx);\n if (ret) {\n returnedValues.push(ret);\n if (child.memoizable) {\n child.memoized = ret;\n }\n }\n } else {\n returnedValues.push(child.memoized);\n }\n });\n return returnedValues;\n }\n}\n"]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.selectPaint = exports.processPaint = exports.enumKey = void 0;
6
+ exports.processPaint = exports.enumKey = void 0;
7
7
 
8
8
  var _skia = require("../../skia");
9
9
 
@@ -11,8 +11,9 @@ const enumKey = k => k.charAt(0).toUpperCase() + k.slice(1);
11
11
 
12
12
  exports.enumKey = enumKey;
13
13
 
14
- const processPaint = (paint, currentOpacity, _ref) => {
14
+ const processPaint = (paint, currentOpacity, _ref, children) => {
15
15
  let {
16
+ paint: paintRef,
16
17
  color,
17
18
  blendMode,
18
19
  style,
@@ -23,6 +24,10 @@ const processPaint = (paint, currentOpacity, _ref) => {
23
24
  opacity
24
25
  } = _ref;
25
26
 
27
+ if (paintRef && paintRef.current) {
28
+ return paintRef.current;
29
+ }
30
+
26
31
  if (color !== undefined) {
27
32
  const c = (0, _skia.processColor)(color, currentOpacity);
28
33
  paint.setShader(null);
@@ -59,33 +64,26 @@ const processPaint = (paint, currentOpacity, _ref) => {
59
64
  if (opacity !== undefined) {
60
65
  paint.setAlphaf(opacity);
61
66
  }
62
- };
63
-
64
- exports.processPaint = processPaint;
65
-
66
- const selectPaint = (currentPaint, _ref2) => {
67
- var _paint$current;
68
67
 
69
- let {
70
- paint,
71
- color: cl,
72
- blendMode,
73
- style: paintStyle,
74
- strokeWidth,
75
- strokeJoin,
76
- strokeCap,
77
- strokeMiter,
78
- opacity
79
- } = _ref2;
80
- const hasCustomPaint = cl !== undefined || blendMode !== undefined || paintStyle !== undefined || strokeWidth !== undefined || strokeJoin !== undefined || opacity !== undefined || strokeCap !== undefined || strokeMiter !== undefined;
81
- const parentPaint = (_paint$current = paint === null || paint === void 0 ? void 0 : paint.current) !== null && _paint$current !== void 0 ? _paint$current : currentPaint;
82
-
83
- if (hasCustomPaint) {
84
- return parentPaint.copy();
68
+ children.forEach(child => {
69
+ if ((0, _skia.isShader)(child)) {
70
+ paint.setShader(child);
71
+ } else if ((0, _skia.isMaskFilter)(child)) {
72
+ paint.setMaskFilter(child);
73
+ } else if ((0, _skia.isColorFilter)(child)) {
74
+ paint.setColorFilter(child);
75
+ } else if ((0, _skia.isPathEffect)(child)) {
76
+ paint.setPathEffect(child);
77
+ }
78
+ });
79
+ const filters = children.filter(_skia.isImageFilter);
80
+
81
+ if (filters.length > 0) {
82
+ paint.setImageFilter(filters.reverse().reduce(_skia.Skia.ImageFilter.MakeCompose, null));
85
83
  }
86
84
 
87
- return parentPaint;
85
+ return paint;
88
86
  };
89
87
 
90
- exports.selectPaint = selectPaint;
88
+ exports.processPaint = processPaint;
91
89
  //# sourceMappingURL=Paint.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["Paint.ts"],"names":["enumKey","k","charAt","toUpperCase","slice","processPaint","paint","currentOpacity","color","blendMode","style","strokeWidth","strokeJoin","strokeCap","strokeMiter","opacity","undefined","c","setShader","setColor","getColor","setBlendMode","BlendMode","setStyle","PaintStyle","setStrokeJoin","StrokeJoin","setStrokeCap","StrokeCap","setStrokeMiter","setStrokeWidth","setAlphaf","selectPaint","currentPaint","cl","paintStyle","hasCustomPaint","parentPaint","current","copy"],"mappings":";;;;;;;AAEA;;AA0BO,MAAMA,OAAO,GAAsBC,CAAnB,IACpBA,CAAC,CAACC,MAAF,CAAS,CAAT,EAAYC,WAAZ,KAA4BF,CAAC,CAACG,KAAF,CAAQ,CAAR,CADxB;;;;AAGA,MAAMC,YAAY,GAAG,CAC1BC,KAD0B,EAE1BC,cAF0B,WAavB;AAAA,MAVH;AACEC,IAAAA,KADF;AAEEC,IAAAA,SAFF;AAGEC,IAAAA,KAHF;AAIEC,IAAAA,WAJF;AAKEC,IAAAA,UALF;AAMEC,IAAAA,SANF;AAOEC,IAAAA,WAPF;AAQEC,IAAAA;AARF,GAUG;;AACH,MAAIP,KAAK,KAAKQ,SAAd,EAAyB;AACvB,UAAMC,CAAC,GAAG,wBAAaT,KAAb,EAAoBD,cAApB,CAAV;AACAD,IAAAA,KAAK,CAACY,SAAN,CAAgB,IAAhB;AACAZ,IAAAA,KAAK,CAACa,QAAN,CAAeF,CAAf;AACD,GAJD,MAIO;AACL,UAAMA,CAAC,GAAG,wBAAaX,KAAK,CAACc,QAAN,EAAb,EAA+Bb,cAA/B,CAAV;AACAD,IAAAA,KAAK,CAACa,QAAN,CAAeF,CAAf;AACD;;AACD,MAAIR,SAAS,KAAKO,SAAlB,EAA6B;AAC3BV,IAAAA,KAAK,CAACe,YAAN,CAAmBC,gBAAUtB,OAAO,CAACS,SAAD,CAAjB,CAAnB;AACD;;AACD,MAAIC,KAAK,KAAKM,SAAd,EAAyB;AACvBV,IAAAA,KAAK,CAACiB,QAAN,CAAeC,iBAAWxB,OAAO,CAACU,KAAD,CAAlB,CAAf;AACD;;AACD,MAAIE,UAAU,KAAKI,SAAnB,EAA8B;AAC5BV,IAAAA,KAAK,CAACmB,aAAN,CAAoBC,iBAAW1B,OAAO,CAACY,UAAD,CAAlB,CAApB;AACD;;AACD,MAAIC,SAAS,KAAKG,SAAlB,EAA6B;AAC3BV,IAAAA,KAAK,CAACqB,YAAN,CAAmBC,gBAAU5B,OAAO,CAACa,SAAD,CAAjB,CAAnB;AACD;;AACD,MAAIC,WAAW,KAAKE,SAApB,EAA+B;AAC7BV,IAAAA,KAAK,CAACuB,cAAN,CAAqBf,WAArB;AACD;;AACD,MAAIH,WAAW,KAAKK,SAApB,EAA+B;AAC7BV,IAAAA,KAAK,CAACwB,cAAN,CAAqBnB,WAArB;AACD;;AACD,MAAII,OAAO,KAAKC,SAAhB,EAA2B;AACzBV,IAAAA,KAAK,CAACyB,SAAN,CAAgBhB,OAAhB;AACD;AACF,CA3CM;;;;AA6CA,MAAMiB,WAAW,GAAG,CACzBC,YADyB,YAatB;AAAA;;AAAA,MAXH;AACE3B,IAAAA,KADF;AAEEE,IAAAA,KAAK,EAAE0B,EAFT;AAGEzB,IAAAA,SAHF;AAIEC,IAAAA,KAAK,EAAEyB,UAJT;AAKExB,IAAAA,WALF;AAMEC,IAAAA,UANF;AAOEC,IAAAA,SAPF;AAQEC,IAAAA,WARF;AASEC,IAAAA;AATF,GAWG;AACH,QAAMqB,cAAc,GAClBF,EAAE,KAAKlB,SAAP,IACAP,SAAS,KAAKO,SADd,IAEAmB,UAAU,KAAKnB,SAFf,IAGAL,WAAW,KAAKK,SAHhB,IAIAJ,UAAU,KAAKI,SAJf,IAKAD,OAAO,KAAKC,SALZ,IAMAH,SAAS,KAAKG,SANd,IAOAF,WAAW,KAAKE,SARlB;AASA,QAAMqB,WAAW,qBAAG/B,KAAH,aAAGA,KAAH,uBAAGA,KAAK,CAAEgC,OAAV,2DAAqBL,YAAtC;;AACA,MAAIG,cAAJ,EAAoB;AAClB,WAAOC,WAAW,CAACE,IAAZ,EAAP;AACD;;AACD,SAAOF,WAAP;AACD,CA5BM","sourcesContent":["import type { ReactNode, RefObject } from \"react\";\n\nimport {\n BlendMode,\n PaintStyle,\n StrokeJoin,\n StrokeCap,\n processColor,\n} from \"../../skia\";\nimport type { SkPaint, Color } from \"../../skia\";\nexport type SkEnum<T> = Uncapitalize<keyof T extends string ? keyof T : never>;\n\nexport interface ChildrenProps {\n children?: ReactNode | ReactNode[];\n}\n\nexport interface CustomPaintProps extends ChildrenProps {\n paint?: RefObject<SkPaint>;\n color?: Color;\n strokeWidth?: number;\n blendMode?: SkEnum<typeof BlendMode>;\n style?: SkEnum<typeof PaintStyle>;\n strokeJoin?: SkEnum<typeof StrokeJoin>;\n strokeCap?: SkEnum<typeof StrokeCap>;\n strokeMiter?: number;\n opacity?: number;\n}\n\nexport const enumKey = <K extends string>(k: K) =>\n (k.charAt(0).toUpperCase() + k.slice(1)) as Capitalize<K>;\n\nexport const processPaint = (\n paint: SkPaint,\n currentOpacity: number,\n {\n color,\n blendMode,\n style,\n strokeWidth,\n strokeJoin,\n strokeCap,\n strokeMiter,\n opacity,\n }: CustomPaintProps\n) => {\n if (color !== undefined) {\n const c = processColor(color, currentOpacity);\n paint.setShader(null);\n paint.setColor(c);\n } else {\n const c = processColor(paint.getColor(), currentOpacity);\n paint.setColor(c);\n }\n if (blendMode !== undefined) {\n paint.setBlendMode(BlendMode[enumKey(blendMode)]);\n }\n if (style !== undefined) {\n paint.setStyle(PaintStyle[enumKey(style)]);\n }\n if (strokeJoin !== undefined) {\n paint.setStrokeJoin(StrokeJoin[enumKey(strokeJoin)]);\n }\n if (strokeCap !== undefined) {\n paint.setStrokeCap(StrokeCap[enumKey(strokeCap)]);\n }\n if (strokeMiter !== undefined) {\n paint.setStrokeMiter(strokeMiter);\n }\n if (strokeWidth !== undefined) {\n paint.setStrokeWidth(strokeWidth);\n }\n if (opacity !== undefined) {\n paint.setAlphaf(opacity);\n }\n};\n\nexport const selectPaint = (\n currentPaint: SkPaint,\n {\n paint,\n color: cl,\n blendMode,\n style: paintStyle,\n strokeWidth,\n strokeJoin,\n strokeCap,\n strokeMiter,\n opacity,\n }: CustomPaintProps\n) => {\n const hasCustomPaint =\n cl !== undefined ||\n blendMode !== undefined ||\n paintStyle !== undefined ||\n strokeWidth !== undefined ||\n strokeJoin !== undefined ||\n opacity !== undefined ||\n strokeCap !== undefined ||\n strokeMiter !== undefined;\n const parentPaint = paint?.current ?? currentPaint;\n if (hasCustomPaint) {\n return parentPaint.copy();\n }\n return parentPaint;\n};\n"]}
1
+ {"version":3,"sources":["Paint.ts"],"names":["enumKey","k","charAt","toUpperCase","slice","processPaint","paint","currentOpacity","children","paintRef","color","blendMode","style","strokeWidth","strokeJoin","strokeCap","strokeMiter","opacity","current","undefined","c","setShader","setColor","getColor","setBlendMode","BlendMode","setStyle","PaintStyle","setStrokeJoin","StrokeJoin","setStrokeCap","StrokeCap","setStrokeMiter","setStrokeWidth","setAlphaf","forEach","child","setMaskFilter","setColorFilter","setPathEffect","filters","filter","isImageFilter","length","setImageFilter","reverse","reduce","Skia","ImageFilter","MakeCompose"],"mappings":"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","sourcesContent":["import type { ReactNode, RefObject } from \"react\";\n\nimport {\n BlendMode,\n PaintStyle,\n StrokeJoin,\n StrokeCap,\n processColor,\n isShader,\n isMaskFilter,\n isColorFilter,\n isPathEffect,\n isImageFilter,\n Skia,\n} from \"../../skia\";\nimport type { SkPaint, Color, SkImageFilter } from \"../../skia\";\nimport type { DeclarationResult } from \"../nodes\";\nexport type SkEnum<T> = Uncapitalize<keyof T extends string ? keyof T : never>;\n\nexport interface ChildrenProps {\n children?: ReactNode | ReactNode[];\n}\n\n// TODO: rename to paint props?\nexport interface CustomPaintProps extends ChildrenProps {\n paint?: RefObject<SkPaint>;\n color?: Color;\n strokeWidth?: number;\n blendMode?: SkEnum<typeof BlendMode>;\n style?: SkEnum<typeof PaintStyle>;\n strokeJoin?: SkEnum<typeof StrokeJoin>;\n strokeCap?: SkEnum<typeof StrokeCap>;\n strokeMiter?: number;\n opacity?: number;\n}\n\nexport const enumKey = <K extends string>(k: K) =>\n (k.charAt(0).toUpperCase() + k.slice(1)) as Capitalize<K>;\n\nexport const processPaint = (\n paint: SkPaint,\n currentOpacity: number,\n {\n paint: paintRef,\n color,\n blendMode,\n style,\n strokeWidth,\n strokeJoin,\n strokeCap,\n strokeMiter,\n opacity,\n }: CustomPaintProps,\n children: DeclarationResult[]\n) => {\n if (paintRef && paintRef.current) {\n return paintRef.current;\n }\n if (color !== undefined) {\n const c = processColor(color, currentOpacity);\n paint.setShader(null);\n paint.setColor(c);\n } else {\n const c = processColor(paint.getColor(), currentOpacity);\n paint.setColor(c);\n }\n if (blendMode !== undefined) {\n paint.setBlendMode(BlendMode[enumKey(blendMode)]);\n }\n if (style !== undefined) {\n paint.setStyle(PaintStyle[enumKey(style)]);\n }\n if (strokeJoin !== undefined) {\n paint.setStrokeJoin(StrokeJoin[enumKey(strokeJoin)]);\n }\n if (strokeCap !== undefined) {\n paint.setStrokeCap(StrokeCap[enumKey(strokeCap)]);\n }\n if (strokeMiter !== undefined) {\n paint.setStrokeMiter(strokeMiter);\n }\n if (strokeWidth !== undefined) {\n paint.setStrokeWidth(strokeWidth);\n }\n if (opacity !== undefined) {\n paint.setAlphaf(opacity);\n }\n children.forEach((child) => {\n if (isShader(child)) {\n paint.setShader(child);\n } else if (isMaskFilter(child)) {\n paint.setMaskFilter(child);\n } else if (isColorFilter(child)) {\n paint.setColorFilter(child);\n } else if (isPathEffect(child)) {\n paint.setPathEffect(child);\n }\n });\n const filters = children.filter(isImageFilter);\n if (filters.length > 0) {\n paint.setImageFilter(\n filters\n .reverse()\n .reduce<SkImageFilter | null>(Skia.ImageFilter.MakeCompose, null)\n );\n }\n return paint;\n};\n"]}
@@ -3,9 +3,27 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.mix = void 0;
6
+ exports.mix = exports.clamp = void 0;
7
7
 
8
+ /**
9
+ * Linear interpolation
10
+ * @param value
11
+ * @param x
12
+ * @param y
13
+ */
8
14
  const mix = (value, x, y) => x * (1 - value) + y * value;
15
+ /**
16
+ * @summary Clamps a node with a lower and upper bound.
17
+ * @example
18
+ clamp(-1, 0, 100); // 0
19
+ clamp(1, 0, 100); // 1
20
+ clamp(101, 0, 100); // 100
21
+ */
22
+
9
23
 
10
24
  exports.mix = mix;
25
+
26
+ const clamp = (value, lowerBound, upperBound) => Math.min(Math.max(lowerBound, value), upperBound);
27
+
28
+ exports.clamp = clamp;
11
29
  //# sourceMappingURL=Math.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["Math.ts"],"names":["mix","value","x","y"],"mappings":";;;;;;;AAAO,MAAMA,GAAG,GAAG,CAACC,KAAD,EAAgBC,CAAhB,EAA2BC,CAA3B,KACjBD,CAAC,IAAI,IAAID,KAAR,CAAD,GAAkBE,CAAC,GAAGF,KADjB","sourcesContent":["export const mix = (value: number, x: number, y: number) =>\n x * (1 - value) + y * value;\n"]}
1
+ {"version":3,"sources":["Math.ts"],"names":["mix","value","x","y","clamp","lowerBound","upperBound","Math","min","max"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,GAAG,GAAG,CAACC,KAAD,EAAgBC,CAAhB,EAA2BC,CAA3B,KACjBD,CAAC,IAAI,IAAID,KAAR,CAAD,GAAkBE,CAAC,GAAGF,KADjB;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AACO,MAAMG,KAAK,GAAG,CAACH,KAAD,EAAgBI,UAAhB,EAAoCC,UAApC,KACnBC,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASJ,UAAT,EAAqBJ,KAArB,CAAT,EAAsCK,UAAtC,CADK","sourcesContent":["/**\n * Linear interpolation\n * @param value\n * @param x\n * @param y\n */\nexport const mix = (value: number, x: number, y: number) =>\n x * (1 - value) + y * value;\n\n/**\n * @summary Clamps a node with a lower and upper bound.\n * @example\n clamp(-1, 0, 100); // 0\n clamp(1, 0, 100); // 1\n clamp(101, 0, 100); // 100\n */\nexport const clamp = (value: number, lowerBound: number, upperBound: number) =>\n Math.min(Math.max(lowerBound, value), upperBound);\n"]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.processTransform2d = void 0;
6
+ exports.processTransform2d = exports.matrixVecMul3 = void 0;
7
7
 
8
8
  var _typeddash = require("../../typeddash");
9
9
 
@@ -34,11 +34,19 @@ const multiply3 = (m1, m2) => {
34
34
  return [[dot3(m1[0], col0), dot3(m1[0], col1), dot3(m1[0], col2)], [dot3(m1[1], col0), dot3(m1[1], col1), dot3(m1[1], col2)], [dot3(m1[2], col0), dot3(m1[2], col1), dot3(m1[2], col2)]];
35
35
  };
36
36
 
37
+ const matrixVecMul3 = (m, v) => [dot3(m[0], v), dot3(m[1], v), dot3(m[2], v)];
38
+
39
+ exports.matrixVecMul3 = matrixVecMul3;
40
+
37
41
  const skiaMatrix3 = m => {
38
42
  return [m[0][0], m[0][1], m[0][2], m[1][0], m[1][1], m[1][2], m[2][0], m[2][1], m[2][2]];
39
43
  };
40
44
 
41
- const processTransform2d = transforms => skiaMatrix3(transforms.reduce((acc, transform) => {
45
+ const processTransform2d = transforms => skiaMatrix3(processTransform(transforms));
46
+
47
+ exports.processTransform2d = processTransform2d;
48
+
49
+ const processTransform = transforms => transforms.reduce((acc, transform) => {
42
50
  const key = Object.keys(transform)[0];
43
51
  const value = transform[key];
44
52
 
@@ -75,7 +83,5 @@ const processTransform2d = transforms => skiaMatrix3(transforms.reduce((acc, tra
75
83
  }
76
84
 
77
85
  return (0, _typeddash.exhaustiveCheck)(key);
78
- }, identityMatrix));
79
-
80
- exports.processTransform2d = processTransform2d;
86
+ }, identityMatrix);
81
87
  //# sourceMappingURL=Matrix3.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["Matrix3.ts"],"names":["identityMatrix","translateXMatrix","x","translateYMatrix","y","scaleMatrix","s","scaleXMatrix","scaleYMatrix","skewXMatrix","Math","tan","skewYMatrix","rotateZMatrix","r","cos","sin","dot3","row","col","multiply3","m1","m2","col0","col1","col2","skiaMatrix3","m","processTransform2d","transforms","reduce","acc","transform","key","Object","keys","value"],"mappings":"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","sourcesContent":["import { exhaustiveCheck } from \"../../typeddash\";\nimport type { SkMatrix } from \"../../../skia/Matrix\";\n\nexport type Vec3 = readonly [number, number, number];\n\nexport type Matrix3 = readonly [Vec3, Vec3, Vec3];\n\ntype Transform2dName =\n | \"translateX\"\n | \"translateY\"\n | \"scale\"\n | \"skewX\"\n | \"skewY\"\n | \"scaleX\"\n | \"scaleY\"\n | \"rotateZ\"\n | \"rotate\";\n\nexport interface TransformProp {\n transform?: Transforms2d;\n}\n\ntype Transformations = {\n readonly [Name in Transform2dName]: number;\n};\nexport type Transforms2d = readonly (\n | Pick<Transformations, \"translateX\">\n | Pick<Transformations, \"translateY\">\n | Pick<Transformations, \"scale\">\n | Pick<Transformations, \"scaleX\">\n | Pick<Transformations, \"scaleY\">\n | Pick<Transformations, \"skewX\">\n | Pick<Transformations, \"skewY\">\n | Pick<Transformations, \"rotate\">\n)[];\n\nconst identityMatrix: Matrix3 = [\n [1, 0, 0],\n [0, 1, 0],\n [0, 0, 1],\n];\n\nconst translateXMatrix = (x: number): Matrix3 => [\n [1, 0, x],\n [0, 1, 0],\n [0, 0, 1],\n];\n\nconst translateYMatrix = (y: number): Matrix3 => [\n [1, 0, 0],\n [0, 1, y],\n [0, 0, 1],\n];\n\nconst scaleMatrix = (s: number): Matrix3 => [\n [s, 0, 0],\n [0, s, 0],\n [0, 0, 1],\n];\n\nconst scaleXMatrix = (s: number): Matrix3 => [\n [s, 0, 0],\n [0, 1, 0],\n [0, 0, 1],\n];\n\nconst scaleYMatrix = (s: number): Matrix3 => [\n [1, 0, 0],\n [0, s, 0],\n [0, 0, 1],\n];\n\nconst skewXMatrix = (s: number): Matrix3 => [\n [1, Math.tan(s), 0],\n [0, 1, 0],\n [0, 0, 1],\n];\n\nconst skewYMatrix = (s: number): Matrix3 => [\n [1, 0, 0],\n [Math.tan(s), 1, 0],\n [0, 0, 1],\n];\n\nconst rotateZMatrix = (r: number): Matrix3 => [\n [Math.cos(r), -1 * Math.sin(r), 0],\n [Math.sin(r), Math.cos(r), 0],\n [0, 0, 1],\n];\n\nconst dot3 = (row: Vec3, col: Vec3) =>\n row[0] * col[0] + row[1] * col[1] + row[2] * col[2];\n\nconst multiply3 = (m1: Matrix3, m2: Matrix3) => {\n const col0 = [m2[0][0], m2[1][0], m2[2][0]] as const;\n const col1 = [m2[0][1], m2[1][1], m2[2][1]] as const;\n const col2 = [m2[0][2], m2[1][2], m2[2][2]] as const;\n return [\n [dot3(m1[0], col0), dot3(m1[0], col1), dot3(m1[0], col2)],\n [dot3(m1[1], col0), dot3(m1[1], col1), dot3(m1[1], col2)],\n [dot3(m1[2], col0), dot3(m1[2], col1), dot3(m1[2], col2)],\n ] as const;\n};\n\nconst skiaMatrix3 = (m: Matrix3): SkMatrix => {\n return [\n m[0][0],\n m[0][1],\n m[0][2],\n m[1][0],\n m[1][1],\n m[1][2],\n m[2][0],\n m[2][1],\n m[2][2],\n ];\n};\n\nexport const processTransform2d = (transforms: Transforms2d) =>\n skiaMatrix3(\n transforms.reduce((acc, transform) => {\n const key = Object.keys(transform)[0] as Transform2dName;\n const value = (transform as Pick<Transformations, typeof key>)[key];\n if (key === \"translateX\") {\n return multiply3(acc, translateXMatrix(value));\n }\n if (key === \"translateY\") {\n return multiply3(acc, translateYMatrix(value));\n }\n if (key === \"scale\") {\n return multiply3(acc, scaleMatrix(value));\n }\n if (key === \"scaleX\") {\n return multiply3(acc, scaleXMatrix(value));\n }\n if (key === \"scaleY\") {\n return multiply3(acc, scaleYMatrix(value));\n }\n if (key === \"skewX\") {\n return multiply3(acc, skewXMatrix(value));\n }\n if (key === \"skewY\") {\n return multiply3(acc, skewYMatrix(value));\n }\n if (key === \"rotate\" || key === \"rotateZ\") {\n return multiply3(acc, rotateZMatrix(value));\n }\n return exhaustiveCheck(key);\n }, identityMatrix)\n );\n"]}
1
+ {"version":3,"sources":["Matrix3.ts"],"names":["identityMatrix","translateXMatrix","x","translateYMatrix","y","scaleMatrix","s","scaleXMatrix","scaleYMatrix","skewXMatrix","Math","tan","skewYMatrix","rotateZMatrix","r","cos","sin","dot3","row","col","multiply3","m1","m2","col0","col1","col2","matrixVecMul3","m","v","skiaMatrix3","processTransform2d","transforms","processTransform","reduce","acc","transform","key","Object","keys","value"],"mappings":"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","sourcesContent":["import { exhaustiveCheck } from \"../../typeddash\";\nimport type { SkMatrix } from \"../../../skia/Matrix\";\n\nexport type Vec3 = readonly [number, number, number];\n\nexport type Matrix3 = readonly [Vec3, Vec3, Vec3];\n\ntype Transform2dName =\n | \"translateX\"\n | \"translateY\"\n | \"scale\"\n | \"skewX\"\n | \"skewY\"\n | \"scaleX\"\n | \"scaleY\"\n | \"rotateZ\"\n | \"rotate\";\n\nexport interface TransformProp {\n transform?: Transforms2d;\n}\n\ntype Transformations = {\n readonly [Name in Transform2dName]: number;\n};\nexport type Transforms2d = readonly (\n | Pick<Transformations, \"translateX\">\n | Pick<Transformations, \"translateY\">\n | Pick<Transformations, \"scale\">\n | Pick<Transformations, \"scaleX\">\n | Pick<Transformations, \"scaleY\">\n | Pick<Transformations, \"skewX\">\n | Pick<Transformations, \"skewY\">\n | Pick<Transformations, \"rotate\">\n)[];\n\nconst identityMatrix: Matrix3 = [\n [1, 0, 0],\n [0, 1, 0],\n [0, 0, 1],\n];\n\nconst translateXMatrix = (x: number): Matrix3 => [\n [1, 0, x],\n [0, 1, 0],\n [0, 0, 1],\n];\n\nconst translateYMatrix = (y: number): Matrix3 => [\n [1, 0, 0],\n [0, 1, y],\n [0, 0, 1],\n];\n\nconst scaleMatrix = (s: number): Matrix3 => [\n [s, 0, 0],\n [0, s, 0],\n [0, 0, 1],\n];\n\nconst scaleXMatrix = (s: number): Matrix3 => [\n [s, 0, 0],\n [0, 1, 0],\n [0, 0, 1],\n];\n\nconst scaleYMatrix = (s: number): Matrix3 => [\n [1, 0, 0],\n [0, s, 0],\n [0, 0, 1],\n];\n\nconst skewXMatrix = (s: number): Matrix3 => [\n [1, Math.tan(s), 0],\n [0, 1, 0],\n [0, 0, 1],\n];\n\nconst skewYMatrix = (s: number): Matrix3 => [\n [1, 0, 0],\n [Math.tan(s), 1, 0],\n [0, 0, 1],\n];\n\nconst rotateZMatrix = (r: number): Matrix3 => [\n [Math.cos(r), -1 * Math.sin(r), 0],\n [Math.sin(r), Math.cos(r), 0],\n [0, 0, 1],\n];\n\nconst dot3 = (row: Vec3, col: Vec3) =>\n row[0] * col[0] + row[1] * col[1] + row[2] * col[2];\n\nconst multiply3 = (m1: Matrix3, m2: Matrix3) => {\n const col0 = [m2[0][0], m2[1][0], m2[2][0]] as const;\n const col1 = [m2[0][1], m2[1][1], m2[2][1]] as const;\n const col2 = [m2[0][2], m2[1][2], m2[2][2]] as const;\n return [\n [dot3(m1[0], col0), dot3(m1[0], col1), dot3(m1[0], col2)],\n [dot3(m1[1], col0), dot3(m1[1], col1), dot3(m1[1], col2)],\n [dot3(m1[2], col0), dot3(m1[2], col1), dot3(m1[2], col2)],\n ] as const;\n};\n\nexport const matrixVecMul3 = (m: Matrix3, v: Vec3) =>\n [dot3(m[0], v), dot3(m[1], v), dot3(m[2], v)] as const;\n\nconst skiaMatrix3 = (m: Matrix3): SkMatrix => {\n return [\n m[0][0],\n m[0][1],\n m[0][2],\n m[1][0],\n m[1][1],\n m[1][2],\n m[2][0],\n m[2][1],\n m[2][2],\n ];\n};\n\nexport const processTransform2d = (transforms: Transforms2d) =>\n skiaMatrix3(processTransform(transforms));\n\nconst processTransform = (transforms: Transforms2d) =>\n transforms.reduce((acc, transform) => {\n const key = Object.keys(transform)[0] as Transform2dName;\n const value = (transform as Pick<Transformations, typeof key>)[key];\n if (key === \"translateX\") {\n return multiply3(acc, translateXMatrix(value));\n }\n if (key === \"translateY\") {\n return multiply3(acc, translateYMatrix(value));\n }\n if (key === \"scale\") {\n return multiply3(acc, scaleMatrix(value));\n }\n if (key === \"scaleX\") {\n return multiply3(acc, scaleXMatrix(value));\n }\n if (key === \"scaleY\") {\n return multiply3(acc, scaleYMatrix(value));\n }\n if (key === \"skewX\") {\n return multiply3(acc, skewXMatrix(value));\n }\n if (key === \"skewY\") {\n return multiply3(acc, skewYMatrix(value));\n }\n if (key === \"rotate\" || key === \"rotateZ\") {\n return multiply3(acc, rotateZMatrix(value));\n }\n return exhaustiveCheck(key);\n }, identityMatrix);\n"]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.mapKeys = exports.exhaustiveCheck = void 0;
6
+ exports.shallowEq = exports.mapKeys = exports.exhaustiveCheck = void 0;
7
7
 
8
8
  const mapKeys = obj => Object.keys(obj);
9
9
 
@@ -11,7 +11,31 @@ exports.mapKeys = mapKeys;
11
11
 
12
12
  const exhaustiveCheck = a => {
13
13
  throw new Error(`Unexhaustive handling for ${a}`);
14
- };
14
+ }; // Shallow eq on props (without children)
15
+
15
16
 
16
17
  exports.exhaustiveCheck = exhaustiveCheck;
18
+
19
+ const shallowEq = (p1, p2) => {
20
+ const keys1 = mapKeys(p1);
21
+ const keys2 = mapKeys(p2);
22
+
23
+ if (keys1.length !== keys2.length) {
24
+ return false;
25
+ }
26
+
27
+ for (const key of keys1) {
28
+ if (key === "children") {
29
+ continue;
30
+ }
31
+
32
+ if (p1[key] !== p2[key]) {
33
+ return false;
34
+ }
35
+ }
36
+
37
+ return true;
38
+ };
39
+
40
+ exports.shallowEq = shallowEq;
17
41
  //# sourceMappingURL=typeddash.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["typeddash.ts"],"names":["mapKeys","obj","Object","keys","exhaustiveCheck","a","Error"],"mappings":";;;;;;;AAAO,MAAMA,OAAO,GAAOC,GAAJ,IAAeC,MAAM,CAACC,IAAP,CAAYF,GAAZ,CAA/B;;;;AAEA,MAAMG,eAAe,GAAIC,CAAD,IAAqB;AAClD,QAAM,IAAIC,KAAJ,CAAW,6BAA4BD,CAAE,EAAzC,CAAN;AACD,CAFM","sourcesContent":["export const mapKeys = <T>(obj: T) => Object.keys(obj) as (keyof T)[];\n\nexport const exhaustiveCheck = (a: never): never => {\n throw new Error(`Unexhaustive handling for ${a}`);\n};\n"]}
1
+ {"version":3,"sources":["typeddash.ts"],"names":["mapKeys","obj","Object","keys","exhaustiveCheck","a","Error","shallowEq","p1","p2","keys1","keys2","length","key"],"mappings":";;;;;;;AAAO,MAAMA,OAAO,GAAOC,GAAJ,IAAeC,MAAM,CAACC,IAAP,CAAYF,GAAZ,CAA/B;;;;AAEA,MAAMG,eAAe,GAAIC,CAAD,IAAqB;AAClD,QAAM,IAAIC,KAAJ,CAAW,6BAA4BD,CAAE,EAAzC,CAAN;AACD,CAFM,C,CAIP;;;;;AACO,MAAME,SAAS,GAAG,CAAIC,EAAJ,EAAWC,EAAX,KAA8B;AACrD,QAAMC,KAAK,GAAGV,OAAO,CAACQ,EAAD,CAArB;AACA,QAAMG,KAAK,GAAGX,OAAO,CAACS,EAAD,CAArB;;AACA,MAAIC,KAAK,CAACE,MAAN,KAAiBD,KAAK,CAACC,MAA3B,EAAmC;AACjC,WAAO,KAAP;AACD;;AACD,OAAK,MAAMC,GAAX,IAAkBH,KAAlB,EAAyB;AACvB,QAAIG,GAAG,KAAK,UAAZ,EAAwB;AACtB;AACD;;AACD,QAAIL,EAAE,CAACK,GAAD,CAAF,KAAYJ,EAAE,CAACI,GAAD,CAAlB,EAAyB;AACvB,aAAO,KAAP;AACD;AACF;;AACD,SAAO,IAAP;AACD,CAfM","sourcesContent":["export const mapKeys = <T>(obj: T) => Object.keys(obj) as (keyof T)[];\n\nexport const exhaustiveCheck = (a: never): never => {\n throw new Error(`Unexhaustive handling for ${a}`);\n};\n\n// Shallow eq on props (without children)\nexport const shallowEq = <P>(p1: P, p2: P): boolean => {\n const keys1 = mapKeys(p1);\n const keys2 = mapKeys(p2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (const key of keys1) {\n if (key === \"children\") {\n continue;\n }\n if (p1[key] !== p2[key]) {\n return false;\n }\n }\n return true;\n};\n"]}