@yuzhouu/canvas-kit 0.1.2 → 0.1.3

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 (492) hide show
  1. package/_vendor/canvas-core/bindings/BindingUtil.d.ts +45 -0
  2. package/_vendor/canvas-core/bindings/BindingUtilRegistry.d.ts +8 -0
  3. package/_vendor/canvas-core/bindings/arrow/arrowBindingHelpers.d.ts +28 -0
  4. package/_vendor/canvas-core/contextMenu.d.ts +62 -0
  5. package/_vendor/canvas-core/editor/Editor.d.ts +564 -0
  6. package/_vendor/canvas-core/editor/HistoryManager.d.ts +18 -0
  7. package/_vendor/canvas-core/editor/StateNode.d.ts +31 -0
  8. package/_vendor/canvas-core/editor/camera.d.ts +3 -0
  9. package/_vendor/canvas-core/editor/clipboard.d.ts +43 -0
  10. package/_vendor/canvas-core/editor/commands.d.ts +126 -0
  11. package/_vendor/canvas-core/editor/edgeScroll.d.ts +5 -0
  12. package/_vendor/canvas-core/editor/editorComputedHelpers.d.ts +21 -0
  13. package/_vendor/canvas-core/editor/editorSelectionTransforms.d.ts +6 -0
  14. package/_vendor/canvas-core/editor/events.d.ts +71 -0
  15. package/_vendor/canvas-core/editor/{index.ts → index.d.ts} +1 -5
  16. package/_vendor/canvas-core/editor/interactions.d.ts +51 -0
  17. package/_vendor/canvas-core/editor/internal.d.ts +7 -0
  18. package/_vendor/canvas-core/editor/managers/BindingManager.d.ts +27 -0
  19. package/_vendor/canvas-core/editor/managers/CameraManager.d.ts +39 -0
  20. package/_vendor/canvas-core/editor/managers/ClipboardManager.d.ts +14 -0
  21. package/_vendor/canvas-core/editor/managers/DocumentSnapshotManager.d.ts +28 -0
  22. package/_vendor/canvas-core/editor/managers/InputsManager.d.ts +44 -0
  23. package/_vendor/canvas-core/editor/managers/InteractionTransientManager.d.ts +52 -0
  24. package/_vendor/canvas-core/editor/managers/QueryManager.d.ts +76 -0
  25. package/_vendor/canvas-core/editor/managers/RenderWindowManager.d.ts +25 -0
  26. package/_vendor/canvas-core/editor/managers/SelectionLayoutManager.d.ts +29 -0
  27. package/_vendor/canvas-core/editor/managers/SelectionManager.d.ts +21 -0
  28. package/_vendor/canvas-core/editor/managers/SelectionOverlayManager.d.ts +23 -0
  29. package/_vendor/canvas-core/editor/managers/ShapeEditingManager.d.ts +29 -0
  30. package/_vendor/canvas-core/editor/managers/ShapeGeometryManager.d.ts +42 -0
  31. package/_vendor/canvas-core/editor/managers/ShapeHierarchyManager.d.ts +58 -0
  32. package/_vendor/canvas-core/editor/managers/SideEffectManager.d.ts +23 -0
  33. package/_vendor/canvas-core/editor/managers/SnapManager.d.ts +29 -0
  34. package/_vendor/canvas-core/editor/managers/SnapSnapshotBuilder.d.ts +22 -0
  35. package/_vendor/canvas-core/editor/managers/SpatialIndexManager.d.ts +30 -0
  36. package/_vendor/canvas-core/editor/managers/ToolManager.d.ts +25 -0
  37. package/_vendor/canvas-core/editor/managers/queryState.d.ts +18 -0
  38. package/_vendor/canvas-core/editor/managers/selectionGeometry.d.ts +28 -0
  39. package/_vendor/canvas-core/editor/managers/shapeOrder.d.ts +14 -0
  40. package/_vendor/canvas-core/editor/managers/shapeReparenting.d.ts +6 -0
  41. package/_vendor/canvas-core/editor/managers/snapCalculations.d.ts +40 -0
  42. package/_vendor/canvas-core/editor/managers/snapGeometry.d.ts +26 -0
  43. package/_vendor/canvas-core/editor/managers/snapIndicators.d.ts +22 -0
  44. package/_vendor/canvas-core/editor/managers/snapTypes.d.ts +98 -0
  45. package/_vendor/canvas-core/editor/queries/shapeTransforms.d.ts +27 -0
  46. package/_vendor/canvas-core/editor/renderWindow.d.ts +30 -0
  47. package/_vendor/canvas-core/editor/resizeGeometry.d.ts +97 -0
  48. package/_vendor/canvas-core/editor/selection.d.ts +224 -0
  49. package/_vendor/canvas-core/editor/selectionHandleInteractions.d.ts +11 -0
  50. package/_vendor/canvas-core/editor/selectionOverlay.d.ts +31 -0
  51. package/_vendor/canvas-core/exports/integrity.d.ts +32 -0
  52. package/_vendor/canvas-core/exports/svg.d.ts +48 -0
  53. package/_vendor/canvas-core/geometry/Box.d.ts +19 -0
  54. package/_vendor/canvas-core/geometry/Ellipse2d.d.ts +16 -0
  55. package/_vendor/canvas-core/geometry/Geometry2d.d.ts +15 -0
  56. package/_vendor/canvas-core/geometry/Mat.d.ts +28 -0
  57. package/_vendor/canvas-core/geometry/Polyline2d.d.ts +14 -0
  58. package/_vendor/canvas-core/geometry/Rectangle2d.d.ts +16 -0
  59. package/_vendor/canvas-core/geometry/Vec.d.ts +37 -0
  60. package/_vendor/canvas-core/geometry/{index.ts → index.d.ts} +1 -6
  61. package/_vendor/canvas-core/geometry/segments.d.ts +5 -0
  62. package/_vendor/canvas-core/index.d.ts +57 -0
  63. package/_vendor/canvas-core/plugins/index.d.ts +1 -0
  64. package/_vendor/canvas-core/plugins/types.d.ts +27 -0
  65. package/_vendor/canvas-core/reactivity.d.ts +4 -0
  66. package/_vendor/canvas-core/schema/records.d.ts +112 -0
  67. package/_vendor/canvas-core/schema/snapshots.d.ts +27 -0
  68. package/_vendor/canvas-core/shapes/ShapeUtil.d.ts +133 -0
  69. package/_vendor/canvas-core/shapes/ShapeUtilRegistry.d.ts +9 -0
  70. package/_vendor/canvas-core/shapes/capabilities.d.ts +25 -0
  71. package/_vendor/canvas-core/shapes/types.d.ts +2 -0
  72. package/_vendor/canvas-core/toolbar.d.ts +117 -0
  73. package/_vendor/canvas-core/tools/hand/HandTool.d.ts +5 -0
  74. package/_vendor/canvas-core/tools/select/SelectTool.d.ts +5 -0
  75. package/_vendor/canvas-core/tools/select/selectContainment.d.ts +11 -0
  76. package/_vendor/canvas-core/tools/select/selectToolHelpers.d.ts +161 -0
  77. package/_vendor/canvas-core/tools/select/states/BrushingState.d.ts +19 -0
  78. package/_vendor/canvas-core/tools/select/states/DraggingSelectionHandleInteractionState.d.ts +15 -0
  79. package/_vendor/canvas-core/tools/select/states/IdleState.d.ts +8 -0
  80. package/_vendor/canvas-core/tools/select/states/PointingCanvasState.d.ts +11 -0
  81. package/_vendor/canvas-core/tools/select/states/PointingResizeHandleState.d.ts +10 -0
  82. package/_vendor/canvas-core/tools/select/states/PointingRotateHandleState.d.ts +10 -0
  83. package/_vendor/canvas-core/tools/select/states/PointingSelectionHandleInteractionState.d.ts +10 -0
  84. package/_vendor/canvas-core/tools/select/states/PointingShapeState.d.ts +12 -0
  85. package/_vendor/canvas-core/tools/select/states/ResizingState.d.ts +16 -0
  86. package/_vendor/canvas-core/tools/select/states/RotatingState.d.ts +14 -0
  87. package/_vendor/canvas-core/tools/select/states/SelectStateNode.d.ts +60 -0
  88. package/_vendor/canvas-core/tools/select/states/TranslatingState.d.ts +16 -0
  89. package/_vendor/canvas-plugin-api/feature.d.ts +37 -0
  90. package/_vendor/canvas-plugin-api/index.d.ts +57 -0
  91. package/_vendor/canvas-product-react/api/apiRegistry.d.ts +12 -0
  92. package/_vendor/canvas-product-react/api/canvasProductApi.d.ts +124 -0
  93. package/_vendor/canvas-product-react/api/index.d.ts +4 -0
  94. package/_vendor/canvas-product-react/capabilities/clipboard/clipboardService.d.ts +9 -0
  95. package/_vendor/canvas-product-react/capabilities/clipboard/systemClipboard.d.ts +16 -0
  96. package/_vendor/canvas-product-react/capabilities/context-menu/systemContextMenu.d.ts +17 -0
  97. package/_vendor/canvas-product-react/capabilities/context-menu/useContextMenuSurface.d.ts +12 -0
  98. package/_vendor/canvas-product-react/capabilities/export/useSvgExport.d.ts +29 -0
  99. package/_vendor/canvas-product-react/capabilities/history/useHistoryControls.d.ts +8 -0
  100. package/_vendor/canvas-product-react/capabilities/pages/usePageControls.d.ts +12 -0
  101. package/_vendor/canvas-product-react/capabilities/toolbar/systemToolbar.d.ts +32 -0
  102. package/_vendor/canvas-product-react/capabilities/toolbar/useToolbarSurfaces.d.ts +19 -0
  103. package/_vendor/canvas-product-react/capabilities/zoom/useZoomControls.d.ts +9 -0
  104. package/_vendor/canvas-product-react/index.d.ts +24 -0
  105. package/_vendor/canvas-product-react/persistence/index.d.ts +2 -0
  106. package/_vendor/canvas-product-react/persistence/localSnapshotPersistence.d.ts +40 -0
  107. package/_vendor/canvas-product-react/runtime/CanvasProductRoot.d.ts +4 -0
  108. package/_vendor/canvas-product-react/runtime/productDefinition.d.ts +45 -0
  109. package/_vendor/canvas-product-react/runtime/productServices.d.ts +31 -0
  110. package/_vendor/canvas-react/components/CanvasView.d.ts +11 -0
  111. package/_vendor/canvas-react/components/OverlayLayer.d.ts +1 -0
  112. package/_vendor/canvas-react/components/PageSpace.d.ts +6 -0
  113. package/_vendor/canvas-react/components/ShapeLayer.d.ts +1 -0
  114. package/_vendor/canvas-react/hooks/useEditor.d.ts +3 -0
  115. package/_vendor/canvas-react/hooks/useValue.d.ts +2 -0
  116. package/_vendor/canvas-react/host/CanvasRendererRegistryContext.d.ts +3 -0
  117. package/_vendor/canvas-react/host/contextMenuRegistry.d.ts +12 -0
  118. package/_vendor/canvas-react/host/domEventGuards.d.ts +11 -0
  119. package/_vendor/canvas-react/host/index.d.ts +8 -0
  120. package/_vendor/canvas-react/host/pluginHost.d.ts +93 -0
  121. package/_vendor/canvas-react/host/rendererRegistry.d.ts +12 -0
  122. package/_vendor/canvas-react/host/toolbarRegistry.d.ts +24 -0
  123. package/_vendor/plugin-arrow/ArrowBindingUtil.d.ts +27 -0
  124. package/_vendor/plugin-arrow/ArrowShapeUtil.d.ts +20 -0
  125. package/_vendor/plugin-arrow/ArrowTool.d.ts +4 -0
  126. package/_vendor/plugin-arrow/arrowGeometry.d.ts +50 -0
  127. package/_vendor/plugin-arrow/arrowTerminalBindingResolver.d.ts +21 -0
  128. package/_vendor/plugin-arrow/arrowTerminalCommands.d.ts +12 -0
  129. package/_vendor/plugin-arrow/canvas.d.ts +2 -0
  130. package/_vendor/plugin-arrow/core.d.ts +7 -0
  131. package/_vendor/plugin-arrow/feature.d.ts +3 -0
  132. package/_vendor/plugin-arrow/index.d.ts +11 -0
  133. package/_vendor/plugin-arrow/selectionHandleInteractions.d.ts +3 -0
  134. package/_vendor/plugin-arrow/types.d.ts +31 -0
  135. package/_vendor/plugin-draw/DrawShapeRenderer.d.ts +8 -0
  136. package/_vendor/plugin-draw/DrawShapeUtil.d.ts +21 -0
  137. package/_vendor/plugin-draw/DrawTool.d.ts +6 -0
  138. package/_vendor/plugin-draw/canvas.d.ts +2 -0
  139. package/_vendor/plugin-draw/core.d.ts +7 -0
  140. package/_vendor/plugin-draw/drawGeometry.d.ts +45 -0
  141. package/_vendor/plugin-draw/drawHitTest.d.ts +11 -0
  142. package/_vendor/plugin-draw/drawInterpolation.d.ts +5 -0
  143. package/_vendor/plugin-draw/drawPath.d.ts +37 -0
  144. package/_vendor/plugin-draw/drawSegments.d.ts +11 -0
  145. package/_vendor/plugin-draw/drawSelectionTransform.d.ts +18 -0
  146. package/_vendor/plugin-draw/drawShapeGeometry.d.ts +33 -0
  147. package/_vendor/plugin-draw/drawStrokeGeometry.d.ts +17 -0
  148. package/_vendor/plugin-draw/feature.d.ts +3 -0
  149. package/_vendor/plugin-draw/index.d.ts +13 -0
  150. package/_vendor/plugin-draw/types.d.ts +23 -0
  151. package/_vendor/plugin-eraser/EraserTool.d.ts +5 -0
  152. package/_vendor/plugin-eraser/canvas.d.ts +2 -0
  153. package/_vendor/plugin-eraser/core.d.ts +2 -0
  154. package/_vendor/plugin-eraser/feature.d.ts +3 -0
  155. package/_vendor/plugin-frame/FrameShapeUtil.d.ts +22 -0
  156. package/_vendor/plugin-frame/FrameTool.d.ts +6 -0
  157. package/_vendor/plugin-frame/canvas.d.ts +8 -0
  158. package/_vendor/plugin-frame/core.d.ts +7 -0
  159. package/_vendor/plugin-frame/feature.d.ts +3 -0
  160. package/_vendor/plugin-geo/GeoShapeUtil.d.ts +13 -0
  161. package/_vendor/plugin-geo/GeoTools.d.ts +17 -0
  162. package/_vendor/plugin-geo/canvas.d.ts +11 -0
  163. package/_vendor/plugin-geo/core.d.ts +7 -0
  164. package/_vendor/plugin-geo/feature.d.ts +3 -0
  165. package/_vendor/plugin-geo/types.d.ts +15 -0
  166. package/_vendor/plugin-group/GroupShapeUtil.d.ts +15 -0
  167. package/_vendor/plugin-group/canvas.d.ts +10 -0
  168. package/_vendor/plugin-group/core.d.ts +7 -0
  169. package/_vendor/plugin-group/feature.d.ts +3 -0
  170. package/_vendor/plugin-image/ImageShapeUtil.d.ts +10 -0
  171. package/_vendor/plugin-image/canvas.d.ts +2 -0
  172. package/_vendor/plugin-image/core.d.ts +16 -0
  173. package/_vendor/plugin-image/crop.d.ts +112 -0
  174. package/_vendor/plugin-image/cropInteractions.d.ts +3 -0
  175. package/_vendor/plugin-image/cropSession.d.ts +4 -0
  176. package/_vendor/plugin-image/feature.d.ts +3 -0
  177. package/_vendor/plugin-image/index.d.ts +8 -0
  178. package/_vendor/plugin-image/types.d.ts +37 -0
  179. package/_vendor/plugin-image-product-react/ImageImportController.d.ts +9 -0
  180. package/_vendor/plugin-image-product-react/imageAssetService.d.ts +7 -0
  181. package/_vendor/plugin-image-product-react/imageBlobStore.d.ts +25 -0
  182. package/_vendor/plugin-image-product-react/imageHostActions.d.ts +35 -0
  183. package/_vendor/plugin-image-product-react/imageProductApi.d.ts +21 -0
  184. package/_vendor/plugin-image-product-react/imageToolbarHostBridge.d.ts +14 -0
  185. package/_vendor/plugin-image-product-react/imageToolbarRuntime.d.ts +2 -0
  186. package/_vendor/plugin-image-product-react/index.d.ts +16 -0
  187. package/_vendor/plugin-image-product-react/snapshotGuards.d.ts +1 -0
  188. package/_vendor/plugin-image-product-react/svgImageAssetInliner.d.ts +3 -0
  189. package/_vendor/plugin-image-product-react/useImageImport.d.ts +16 -0
  190. package/_vendor/plugin-laser/LaserTool.d.ts +4 -0
  191. package/_vendor/plugin-laser/canvas.d.ts +2 -0
  192. package/_vendor/plugin-laser/core.d.ts +2 -0
  193. package/_vendor/plugin-laser/feature.d.ts +3 -0
  194. package/_vendor/plugin-text/ArrowLabelBindingUtil.d.ts +42 -0
  195. package/_vendor/plugin-text/GeoLabelBindingUtil.d.ts +45 -0
  196. package/_vendor/plugin-text/TextShapeSvgExporter.d.ts +6 -0
  197. package/_vendor/plugin-text/TextShapeUtil.d.ts +19 -0
  198. package/_vendor/plugin-text/TextTool.d.ts +4 -0
  199. package/_vendor/plugin-text/canvas.d.ts +2 -0
  200. package/_vendor/plugin-text/core.d.ts +2 -0
  201. package/_vendor/plugin-text/feature.d.ts +3 -0
  202. package/_vendor/plugin-text/host/RichTextEditingBox.d.ts +5 -0
  203. package/_vendor/plugin-text/host/RichTextToolbar.d.ts +6 -0
  204. package/_vendor/plugin-text/host/TiptapTextEditor.d.ts +24 -0
  205. package/_vendor/plugin-text/host/richTextRendering.d.ts +3 -0
  206. package/_vendor/plugin-text/host/textDomSelection.d.ts +7 -0
  207. package/_vendor/plugin-text/host/textEditingBoxStyle.d.ts +3 -0
  208. package/_vendor/plugin-text/host/textEntryFocus.d.ts +22 -0
  209. package/_vendor/plugin-text/host/textFontLoader.d.ts +2 -0
  210. package/_vendor/plugin-text/host/textMeasurement.d.ts +12 -0
  211. package/_vendor/plugin-text/host/textMeasurementSync.d.ts +10 -0
  212. package/_vendor/plugin-text/host/textRangeSelection.d.ts +14 -0
  213. package/_vendor/plugin-text/host/textShapeRendererRuntime.d.ts +8 -0
  214. package/_vendor/plugin-text/host/textShapeSync.d.ts +17 -0
  215. package/_vendor/plugin-text/host/tiptapTextEditorController.d.ts +33 -0
  216. package/_vendor/plugin-text/index.d.ts +4 -0
  217. package/_vendor/plugin-text/richTextUtils.d.ts +18 -0
  218. package/_vendor/plugin-text/textInteractions.d.ts +2 -0
  219. package/_vendor/plugin-text/textLabelHelpers.d.ts +44 -0
  220. package/_vendor/plugin-text/textShapeHelpers.d.ts +21 -0
  221. package/_vendor/plugin-text/textStyle.d.ts +9 -0
  222. package/_vendor/plugin-text/textTypes.d.ts +28 -0
  223. package/_vendor/signals/atom.d.ts +9 -0
  224. package/_vendor/signals/computed.d.ts +11 -0
  225. package/_vendor/signals/core.d.ts +17 -0
  226. package/_vendor/signals/effect.d.ts +29 -0
  227. package/_vendor/signals/types.d.ts +15 -0
  228. package/_vendor/store/Store.d.ts +26 -0
  229. package/_vendor/store/diff.d.ts +9 -0
  230. package/_vendor/store/history.d.ts +37 -0
  231. package/_vendor/store/index.d.ts +5 -0
  232. package/_vendor/store/types.d.ts +27 -0
  233. package/api/canvasKitApi.d.ts +2 -2
  234. package/index.css +1 -1
  235. package/index.d.ts +0 -1
  236. package/index.mjs +1 -1
  237. package/package.json +1 -1
  238. package/product/Shell.d.ts +2 -2
  239. package/product/chromeContext.d.ts +8 -8
  240. package/product/createCanvasKitEditor.d.ts +1 -1
  241. package/product/persistence.d.ts +1 -1
  242. package/product/product.d.ts +1 -1
  243. package/product/useCanvasClipboardShortcuts.d.ts +2 -2
  244. package/product-CxN5NN6u.mjs +4 -0
  245. package/product.mjs +1 -1
  246. package/standard/extensions.d.ts +1 -1
  247. package/standard/standardApi.d.ts +5 -5
  248. package/standard-R17_x8HU.mjs +44 -0
  249. package/standard.mjs +1 -1
  250. package/_vendor/canvas-core/bindings/BindingUtil.ts +0 -92
  251. package/_vendor/canvas-core/bindings/BindingUtilRegistry.ts +0 -22
  252. package/_vendor/canvas-core/bindings/arrow/arrowBindingHelpers.ts +0 -52
  253. package/_vendor/canvas-core/contextMenu.ts +0 -85
  254. package/_vendor/canvas-core/editor/Editor.ts +0 -2614
  255. package/_vendor/canvas-core/editor/HistoryManager.ts +0 -83
  256. package/_vendor/canvas-core/editor/StateNode.ts +0 -162
  257. package/_vendor/canvas-core/editor/camera.ts +0 -6
  258. package/_vendor/canvas-core/editor/clipboard.ts +0 -478
  259. package/_vendor/canvas-core/editor/commands.ts +0 -833
  260. package/_vendor/canvas-core/editor/edgeScroll.ts +0 -37
  261. package/_vendor/canvas-core/editor/editorComputedHelpers.ts +0 -257
  262. package/_vendor/canvas-core/editor/editorSelectionTransforms.ts +0 -116
  263. package/_vendor/canvas-core/editor/events.ts +0 -93
  264. package/_vendor/canvas-core/editor/interactions.ts +0 -101
  265. package/_vendor/canvas-core/editor/internal.ts +0 -22
  266. package/_vendor/canvas-core/editor/managers/BindingManager.ts +0 -262
  267. package/_vendor/canvas-core/editor/managers/CameraManager.ts +0 -147
  268. package/_vendor/canvas-core/editor/managers/ClipboardManager.ts +0 -32
  269. package/_vendor/canvas-core/editor/managers/DocumentSnapshotManager.ts +0 -256
  270. package/_vendor/canvas-core/editor/managers/InputsManager.ts +0 -319
  271. package/_vendor/canvas-core/editor/managers/InteractionTransientManager.ts +0 -218
  272. package/_vendor/canvas-core/editor/managers/QueryManager.ts +0 -837
  273. package/_vendor/canvas-core/editor/managers/RenderWindowManager.ts +0 -347
  274. package/_vendor/canvas-core/editor/managers/SelectionLayoutManager.ts +0 -196
  275. package/_vendor/canvas-core/editor/managers/SelectionManager.ts +0 -98
  276. package/_vendor/canvas-core/editor/managers/SelectionOverlayManager.ts +0 -308
  277. package/_vendor/canvas-core/editor/managers/ShapeEditingManager.ts +0 -226
  278. package/_vendor/canvas-core/editor/managers/ShapeGeometryManager.ts +0 -162
  279. package/_vendor/canvas-core/editor/managers/ShapeHierarchyManager.ts +0 -797
  280. package/_vendor/canvas-core/editor/managers/SideEffectManager.ts +0 -83
  281. package/_vendor/canvas-core/editor/managers/SnapManager.ts +0 -433
  282. package/_vendor/canvas-core/editor/managers/SnapSnapshotBuilder.ts +0 -430
  283. package/_vendor/canvas-core/editor/managers/SpatialIndexManager.ts +0 -354
  284. package/_vendor/canvas-core/editor/managers/ToolManager.ts +0 -81
  285. package/_vendor/canvas-core/editor/managers/queryState.ts +0 -583
  286. package/_vendor/canvas-core/editor/managers/selectionGeometry.ts +0 -287
  287. package/_vendor/canvas-core/editor/managers/shapeOrder.ts +0 -350
  288. package/_vendor/canvas-core/editor/managers/shapeReparenting.ts +0 -160
  289. package/_vendor/canvas-core/editor/managers/snapCalculations.ts +0 -412
  290. package/_vendor/canvas-core/editor/managers/snapGeometry.ts +0 -202
  291. package/_vendor/canvas-core/editor/managers/snapIndicators.ts +0 -403
  292. package/_vendor/canvas-core/editor/managers/snapTypes.ts +0 -122
  293. package/_vendor/canvas-core/editor/queries/shapeTransforms.ts +0 -171
  294. package/_vendor/canvas-core/editor/renderWindow.ts +0 -439
  295. package/_vendor/canvas-core/editor/resizeGeometry.ts +0 -654
  296. package/_vendor/canvas-core/editor/selection.ts +0 -489
  297. package/_vendor/canvas-core/editor/selectionHandleInteractions.ts +0 -43
  298. package/_vendor/canvas-core/editor/selectionOverlay.ts +0 -567
  299. package/_vendor/canvas-core/exports/integrity.ts +0 -174
  300. package/_vendor/canvas-core/exports/svg.ts +0 -494
  301. package/_vendor/canvas-core/geometry/Box.ts +0 -80
  302. package/_vendor/canvas-core/geometry/Ellipse2d.ts +0 -67
  303. package/_vendor/canvas-core/geometry/Geometry2d.ts +0 -52
  304. package/_vendor/canvas-core/geometry/Mat.ts +0 -92
  305. package/_vendor/canvas-core/geometry/Polyline2d.ts +0 -63
  306. package/_vendor/canvas-core/geometry/Rectangle2d.ts +0 -64
  307. package/_vendor/canvas-core/geometry/Vec.ts +0 -123
  308. package/_vendor/canvas-core/geometry/segments.ts +0 -65
  309. package/_vendor/canvas-core/index.ts +0 -391
  310. package/_vendor/canvas-core/plugins/index.ts +0 -5
  311. package/_vendor/canvas-core/plugins/types.ts +0 -53
  312. package/_vendor/canvas-core/reactivity.ts +0 -16
  313. package/_vendor/canvas-core/schema/records.ts +0 -221
  314. package/_vendor/canvas-core/schema/snapshots.ts +0 -527
  315. package/_vendor/canvas-core/shapes/ShapeUtil.ts +0 -516
  316. package/_vendor/canvas-core/shapes/ShapeUtilRegistry.ts +0 -26
  317. package/_vendor/canvas-core/shapes/capabilities.ts +0 -67
  318. package/_vendor/canvas-core/shapes/types.ts +0 -20
  319. package/_vendor/canvas-core/toolbar.ts +0 -148
  320. package/_vendor/canvas-core/tools/hand/HandTool.ts +0 -75
  321. package/_vendor/canvas-core/tools/select/SelectTool.ts +0 -33
  322. package/_vendor/canvas-core/tools/select/selectContainment.ts +0 -104
  323. package/_vendor/canvas-core/tools/select/selectToolHelpers.ts +0 -801
  324. package/_vendor/canvas-core/tools/select/states/BrushingState.ts +0 -145
  325. package/_vendor/canvas-core/tools/select/states/DraggingSelectionHandleInteractionState.ts +0 -116
  326. package/_vendor/canvas-core/tools/select/states/IdleState.ts +0 -159
  327. package/_vendor/canvas-core/tools/select/states/PointingCanvasState.ts +0 -41
  328. package/_vendor/canvas-core/tools/select/states/PointingResizeHandleState.ts +0 -78
  329. package/_vendor/canvas-core/tools/select/states/PointingRotateHandleState.ts +0 -64
  330. package/_vendor/canvas-core/tools/select/states/PointingSelectionHandleInteractionState.ts +0 -34
  331. package/_vendor/canvas-core/tools/select/states/PointingShapeState.ts +0 -140
  332. package/_vendor/canvas-core/tools/select/states/ResizingState.ts +0 -171
  333. package/_vendor/canvas-core/tools/select/states/RotatingState.ts +0 -124
  334. package/_vendor/canvas-core/tools/select/states/SelectStateNode.ts +0 -128
  335. package/_vendor/canvas-core/tools/select/states/TranslatingState.ts +0 -139
  336. package/_vendor/canvas-plugin-api/feature.ts +0 -204
  337. package/_vendor/canvas-plugin-api/index.ts +0 -142
  338. package/_vendor/canvas-product-react/api/apiRegistry.ts +0 -35
  339. package/_vendor/canvas-product-react/api/canvasProductApi.ts +0 -422
  340. package/_vendor/canvas-product-react/api/index.ts +0 -31
  341. package/_vendor/canvas-product-react/capabilities/clipboard/clipboardService.ts +0 -36
  342. package/_vendor/canvas-product-react/capabilities/clipboard/systemClipboard.ts +0 -245
  343. package/_vendor/canvas-product-react/capabilities/context-menu/systemContextMenu.ts +0 -396
  344. package/_vendor/canvas-product-react/capabilities/context-menu/useContextMenuSurface.ts +0 -59
  345. package/_vendor/canvas-product-react/capabilities/export/useSvgExport.ts +0 -156
  346. package/_vendor/canvas-product-react/capabilities/history/useHistoryControls.ts +0 -23
  347. package/_vendor/canvas-product-react/capabilities/pages/usePageControls.ts +0 -41
  348. package/_vendor/canvas-product-react/capabilities/toolbar/systemToolbar.ts +0 -490
  349. package/_vendor/canvas-product-react/capabilities/toolbar/useToolbarSurfaces.ts +0 -92
  350. package/_vendor/canvas-product-react/capabilities/zoom/useZoomControls.ts +0 -27
  351. package/_vendor/canvas-product-react/index.ts +0 -84
  352. package/_vendor/canvas-product-react/persistence/index.ts +0 -18
  353. package/_vendor/canvas-product-react/persistence/localSnapshotPersistence.ts +0 -294
  354. package/_vendor/canvas-product-react/runtime/CanvasProductRoot.tsx +0 -250
  355. package/_vendor/canvas-product-react/runtime/productDefinition.ts +0 -72
  356. package/_vendor/canvas-product-react/runtime/productServices.ts +0 -96
  357. package/_vendor/canvas-react/components/CanvasView.tsx +0 -796
  358. package/_vendor/canvas-react/components/OverlayLayer.tsx +0 -879
  359. package/_vendor/canvas-react/components/PageSpace.tsx +0 -34
  360. package/_vendor/canvas-react/components/ShapeLayer.tsx +0 -428
  361. package/_vendor/canvas-react/hooks/useEditor.ts +0 -11
  362. package/_vendor/canvas-react/hooks/useValue.ts +0 -14
  363. package/_vendor/canvas-react/host/CanvasRendererRegistryContext.tsx +0 -14
  364. package/_vendor/canvas-react/host/contextMenuRegistry.ts +0 -61
  365. package/_vendor/canvas-react/host/domEventGuards.ts +0 -61
  366. package/_vendor/canvas-react/host/index.ts +0 -38
  367. package/_vendor/canvas-react/host/pluginHost.ts +0 -635
  368. package/_vendor/canvas-react/host/rendererRegistry.tsx +0 -58
  369. package/_vendor/canvas-react/host/toolbarRegistry.ts +0 -100
  370. package/_vendor/plugin-arrow/ArrowBindingUtil.ts +0 -239
  371. package/_vendor/plugin-arrow/ArrowShapeUtil.ts +0 -311
  372. package/_vendor/plugin-arrow/ArrowTool.ts +0 -208
  373. package/_vendor/plugin-arrow/arrowGeometry.ts +0 -441
  374. package/_vendor/plugin-arrow/arrowTerminalBindingResolver.ts +0 -253
  375. package/_vendor/plugin-arrow/arrowTerminalCommands.ts +0 -230
  376. package/_vendor/plugin-arrow/canvas.tsx +0 -92
  377. package/_vendor/plugin-arrow/core.ts +0 -409
  378. package/_vendor/plugin-arrow/feature.ts +0 -20
  379. package/_vendor/plugin-arrow/index.ts +0 -28
  380. package/_vendor/plugin-arrow/selectionHandleInteractions.ts +0 -154
  381. package/_vendor/plugin-arrow/types.ts +0 -63
  382. package/_vendor/plugin-draw/DrawShapeRenderer.tsx +0 -60
  383. package/_vendor/plugin-draw/DrawShapeUtil.ts +0 -372
  384. package/_vendor/plugin-draw/DrawTool.ts +0 -444
  385. package/_vendor/plugin-draw/canvas.tsx +0 -24
  386. package/_vendor/plugin-draw/core.ts +0 -515
  387. package/_vendor/plugin-draw/drawGeometry.ts +0 -491
  388. package/_vendor/plugin-draw/drawHitTest.ts +0 -271
  389. package/_vendor/plugin-draw/drawInterpolation.ts +0 -250
  390. package/_vendor/plugin-draw/drawPath.ts +0 -550
  391. package/_vendor/plugin-draw/drawSegments.ts +0 -106
  392. package/_vendor/plugin-draw/drawSelectionTransform.ts +0 -67
  393. package/_vendor/plugin-draw/drawShapeGeometry.ts +0 -307
  394. package/_vendor/plugin-draw/drawStrokeGeometry.ts +0 -454
  395. package/_vendor/plugin-draw/feature.ts +0 -20
  396. package/_vendor/plugin-draw/index.ts +0 -31
  397. package/_vendor/plugin-draw/types.ts +0 -36
  398. package/_vendor/plugin-eraser/EraserTool.ts +0 -297
  399. package/_vendor/plugin-eraser/canvas.tsx +0 -616
  400. package/_vendor/plugin-eraser/core.ts +0 -49
  401. package/_vendor/plugin-eraser/feature.ts +0 -20
  402. package/_vendor/plugin-frame/FrameShapeUtil.ts +0 -173
  403. package/_vendor/plugin-frame/FrameTool.ts +0 -225
  404. package/_vendor/plugin-frame/canvas.tsx +0 -75
  405. package/_vendor/plugin-frame/core.ts +0 -534
  406. package/_vendor/plugin-frame/feature.ts +0 -20
  407. package/_vendor/plugin-geo/GeoShapeUtil.ts +0 -463
  408. package/_vendor/plugin-geo/GeoTools.ts +0 -247
  409. package/_vendor/plugin-geo/canvas.tsx +0 -90
  410. package/_vendor/plugin-geo/core.ts +0 -495
  411. package/_vendor/plugin-geo/feature.ts +0 -20
  412. package/_vendor/plugin-geo/types.ts +0 -27
  413. package/_vendor/plugin-group/GroupShapeUtil.ts +0 -59
  414. package/_vendor/plugin-group/canvas.tsx +0 -59
  415. package/_vendor/plugin-group/core.ts +0 -40
  416. package/_vendor/plugin-group/feature.ts +0 -20
  417. package/_vendor/plugin-image/ImageShapeUtil.ts +0 -95
  418. package/_vendor/plugin-image/canvas.tsx +0 -212
  419. package/_vendor/plugin-image/core.ts +0 -542
  420. package/_vendor/plugin-image/crop.ts +0 -770
  421. package/_vendor/plugin-image/cropInteractions.ts +0 -350
  422. package/_vendor/plugin-image/cropSession.ts +0 -38
  423. package/_vendor/plugin-image/feature.ts +0 -20
  424. package/_vendor/plugin-image/index.ts +0 -29
  425. package/_vendor/plugin-image/types.ts +0 -55
  426. package/_vendor/plugin-image-product-react/ImageImportController.tsx +0 -143
  427. package/_vendor/plugin-image-product-react/imageAssetService.ts +0 -52
  428. package/_vendor/plugin-image-product-react/imageBlobStore.ts +0 -315
  429. package/_vendor/plugin-image-product-react/imageHostActions.ts +0 -438
  430. package/_vendor/plugin-image-product-react/imageProductApi.ts +0 -88
  431. package/_vendor/plugin-image-product-react/imageToolbarHostBridge.ts +0 -48
  432. package/_vendor/plugin-image-product-react/imageToolbarRuntime.ts +0 -21
  433. package/_vendor/plugin-image-product-react/index.ts +0 -60
  434. package/_vendor/plugin-image-product-react/snapshotGuards.ts +0 -33
  435. package/_vendor/plugin-image-product-react/svgImageAssetInliner.ts +0 -54
  436. package/_vendor/plugin-image-product-react/useImageImport.ts +0 -64
  437. package/_vendor/plugin-laser/LaserTool.ts +0 -154
  438. package/_vendor/plugin-laser/canvas.tsx +0 -645
  439. package/_vendor/plugin-laser/core.ts +0 -49
  440. package/_vendor/plugin-laser/feature.ts +0 -20
  441. package/_vendor/plugin-text/ArrowLabelBindingUtil.ts +0 -336
  442. package/_vendor/plugin-text/GeoLabelBindingUtil.ts +0 -391
  443. package/_vendor/plugin-text/TextShapeSvgExporter.ts +0 -101
  444. package/_vendor/plugin-text/TextShapeUtil.ts +0 -284
  445. package/_vendor/plugin-text/TextTool.ts +0 -228
  446. package/_vendor/plugin-text/canvas.tsx +0 -115
  447. package/_vendor/plugin-text/core.ts +0 -422
  448. package/_vendor/plugin-text/feature.ts +0 -20
  449. package/_vendor/plugin-text/host/RichTextEditingBox.tsx +0 -144
  450. package/_vendor/plugin-text/host/RichTextToolbar.tsx +0 -266
  451. package/_vendor/plugin-text/host/TiptapTextEditor.tsx +0 -191
  452. package/_vendor/plugin-text/host/richTextRendering.tsx +0 -49
  453. package/_vendor/plugin-text/host/textDomSelection.ts +0 -93
  454. package/_vendor/plugin-text/host/textEditingBoxStyle.ts +0 -36
  455. package/_vendor/plugin-text/host/textEntryFocus.ts +0 -307
  456. package/_vendor/plugin-text/host/textFontLoader.ts +0 -149
  457. package/_vendor/plugin-text/host/textMeasurement.ts +0 -258
  458. package/_vendor/plugin-text/host/textMeasurementSync.ts +0 -77
  459. package/_vendor/plugin-text/host/textRangeSelection.ts +0 -134
  460. package/_vendor/plugin-text/host/textShapeRendererRuntime.tsx +0 -89
  461. package/_vendor/plugin-text/host/textShapeSync.ts +0 -173
  462. package/_vendor/plugin-text/host/tiptapTextEditorController.ts +0 -148
  463. package/_vendor/plugin-text/index.ts +0 -18
  464. package/_vendor/plugin-text/richTextUtils.ts +0 -259
  465. package/_vendor/plugin-text/textInteractions.ts +0 -366
  466. package/_vendor/plugin-text/textLabelHelpers.ts +0 -235
  467. package/_vendor/plugin-text/textShapeHelpers.ts +0 -123
  468. package/_vendor/plugin-text/textStyle.ts +0 -96
  469. package/_vendor/plugin-text/textTypes.ts +0 -48
  470. package/_vendor/signals/atom.ts +0 -74
  471. package/_vendor/signals/computed.ts +0 -132
  472. package/_vendor/signals/core.ts +0 -130
  473. package/_vendor/signals/effect.ts +0 -117
  474. package/_vendor/signals/types.ts +0 -17
  475. package/_vendor/store/Store.ts +0 -171
  476. package/_vendor/store/diff.ts +0 -229
  477. package/_vendor/store/history.ts +0 -177
  478. package/_vendor/store/index.ts +0 -32
  479. package/_vendor/store/types.ts +0 -37
  480. package/internal-modules.d.ts +0 -187
  481. package/product-iyBbEPIs.mjs +0 -4
  482. package/standard-BmrxwqpJ.mjs +0 -44
  483. /package/_vendor/canvas-core/tools/{index.ts → index.d.ts} +0 -0
  484. /package/_vendor/canvas-core/tools/select/states/{index.ts → index.d.ts} +0 -0
  485. /package/_vendor/canvas-react/components/{index.ts → index.d.ts} +0 -0
  486. /package/_vendor/canvas-react/{index.ts → index.d.ts} +0 -0
  487. /package/_vendor/plugin-eraser/{index.ts → index.d.ts} +0 -0
  488. /package/_vendor/plugin-frame/{index.ts → index.d.ts} +0 -0
  489. /package/_vendor/plugin-geo/{index.ts → index.d.ts} +0 -0
  490. /package/_vendor/plugin-group/{index.ts → index.d.ts} +0 -0
  491. /package/_vendor/plugin-laser/{index.ts → index.d.ts} +0 -0
  492. /package/_vendor/signals/{index.ts → index.d.ts} +0 -0
@@ -1,130 +0,0 @@
1
- import { Child, Signal } from "./types";
2
-
3
- /** Global epoch counter — increments on every atom change */
4
- let globalEpoch = 0;
5
-
6
- export function getGlobalEpoch(): number {
7
- return globalEpoch;
8
- }
9
-
10
- export function advanceGlobalEpoch(): number {
11
- return ++globalEpoch;
12
- }
13
-
14
- // --- Transaction ---
15
-
16
- interface Transaction {
17
- initialAtomValues: Map<_Atom<any>, any>;
18
- }
19
-
20
- let currentTransaction: Transaction | null = null;
21
-
22
- export function getCurrentTransaction(): Transaction | null {
23
- return currentTransaction;
24
- }
25
-
26
- export function transact(fn: () => void): void {
27
- if (currentTransaction) {
28
- // Nested transaction — just run inside the existing one
29
- fn();
30
- return;
31
- }
32
-
33
- const txn: Transaction = { initialAtomValues: new Map() };
34
- currentTransaction = txn;
35
- try {
36
- fn();
37
- // Commit: flush all effects
38
- flushChanges(txn.initialAtomValues.keys());
39
- } catch (e) {
40
- // Abort: rollback
41
- for (const [a, value] of txn.initialAtomValues) {
42
- a.__unsafe__setWithoutNotify(value);
43
- }
44
- throw e;
45
- } finally {
46
- currentTransaction = null;
47
- }
48
- }
49
-
50
- export function noteInitialValue(
51
- atom: _Atom<any>,
52
- previousValue: any,
53
- ): void {
54
- if (
55
- currentTransaction &&
56
- !currentTransaction.initialAtomValues.has(atom)
57
- ) {
58
- currentTransaction.initialAtomValues.set(atom, previousValue);
59
- }
60
- }
61
-
62
- // --- Dependency capture ---
63
-
64
- interface CaptureFrame {
65
- child: Child;
66
- parentSet: Set<Signal<any>>;
67
- below: CaptureFrame | null;
68
- }
69
-
70
- let captureStack: CaptureFrame | null = null;
71
-
72
- export function startCapture(child: Child): void {
73
- captureStack = { child, parentSet: new Set(), below: captureStack };
74
- }
75
-
76
- export function stopCapture(): Set<Signal<any>> {
77
- if (!captureStack) {
78
- throw new Error(
79
- "Cannot stop dependency capture because no capture is active",
80
- );
81
- }
82
- const frame = captureStack;
83
- captureStack = frame.below;
84
- return frame.parentSet;
85
- }
86
-
87
- export function maybeCaptureParent(parent: Signal<any>): void {
88
- if (!captureStack) return;
89
- captureStack.parentSet.add(parent);
90
- parent.children.add(captureStack.child);
91
- }
92
-
93
- // --- Change propagation ---
94
-
95
- function flushChanges(changedAtoms: Iterable<_Atom<any>>): void {
96
- const effects = new Set<Child>();
97
- const visited = new Set<Child>();
98
-
99
- function traverse(children: Set<Child>) {
100
- for (const child of children) {
101
- if (visited.has(child)) continue;
102
- visited.add(child);
103
- if (child.type === "effect") {
104
- effects.add(child);
105
- } else if (child.type === "computed") {
106
- const source = child.source;
107
- if (source) traverse(source.children);
108
- }
109
- }
110
- }
111
-
112
- for (const atom of changedAtoms) {
113
- traverse(atom.children);
114
- }
115
-
116
- for (const effect of effects) {
117
- effect.notify();
118
- }
119
- }
120
-
121
- export function atomDidChange(atom: _Atom<any>): void {
122
- if (!currentTransaction) {
123
- flushChanges([atom]);
124
- }
125
- }
126
-
127
- // Forward reference types — implemented in their own files
128
- interface _Atom<T> extends Signal<T> {
129
- __unsafe__setWithoutNotify(value: T): void;
130
- }
@@ -1,117 +0,0 @@
1
- import { Child, Signal } from "./types";
2
- import { getGlobalEpoch, startCapture, stopCapture } from "./core";
3
-
4
- export interface EffectSchedulerOptions {
5
- scheduleEffect?: (execute: () => void) => void;
6
- }
7
-
8
- export class EffectScheduler {
9
- type = "effect" as const;
10
- private parents: Signal<any>[] = [];
11
- private parentEpochs: number[] = [];
12
- private lastReactedEpoch = -1;
13
- private isActive = false;
14
- private scheduleEffect?: (execute: () => void) => void;
15
-
16
- constructor(
17
- public readonly name: string,
18
- private fn: () => void,
19
- opts?: EffectSchedulerOptions,
20
- ) {
21
- this.scheduleEffect = opts?.scheduleEffect;
22
- }
23
-
24
- private selfAsChild: Child = {
25
- type: "effect",
26
- notify: () => this.maybeSchedule(),
27
- };
28
-
29
- attach(): void {
30
- this.isActive = true;
31
- this.execute();
32
- }
33
-
34
- detach(): void {
35
- this.isActive = false;
36
- // Remove from all parents
37
- for (const parent of this.parents) {
38
- parent.children.delete(this.selfAsChild);
39
- }
40
- this.parents = [];
41
- this.parentEpochs = [];
42
- }
43
-
44
- maybeSchedule(): void {
45
- if (!this.isActive) return;
46
- if (this.lastReactedEpoch === getGlobalEpoch()) return;
47
-
48
- if (!this.haveParentsChanged()) {
49
- this.lastReactedEpoch = getGlobalEpoch();
50
- return;
51
- }
52
-
53
- if (this.scheduleEffect) {
54
- this.scheduleEffect(() => this.execute());
55
- } else {
56
- this.execute();
57
- }
58
- }
59
-
60
- execute(): void {
61
- if (!this.isActive) return;
62
-
63
- // Remove from old parents
64
- for (const parent of this.parents) {
65
- parent.children.delete(this.selfAsChild);
66
- }
67
-
68
- startCapture(this.selfAsChild);
69
- try {
70
- this.fn();
71
- } finally {
72
- const newParentSet = stopCapture();
73
- this.parents = [...newParentSet];
74
- this.parentEpochs = this.parents.map((p) => p.lastChangedEpoch);
75
- for (const parent of this.parents) {
76
- parent.children.add(this.selfAsChild);
77
- }
78
- this.lastReactedEpoch = getGlobalEpoch();
79
- }
80
- }
81
-
82
- private haveParentsChanged(): boolean {
83
- for (let i = 0; i < this.parents.length; i++) {
84
- const parent = this.parents[i];
85
- parent.__unsafe__getWithoutCapture();
86
- if (parent.lastChangedEpoch !== this.parentEpochs[i]) {
87
- return true;
88
- }
89
- }
90
- return false;
91
- }
92
- }
93
-
94
- /**
95
- * Create a reactive effect that re-runs whenever its dependencies change.
96
- * Returns a cleanup function to stop the effect.
97
- */
98
- export function effect(
99
- name: string,
100
- fn: () => void,
101
- opts?: EffectSchedulerOptions,
102
- ): () => void {
103
- const scheduler = new EffectScheduler(name, fn, opts);
104
- scheduler.attach();
105
- return () => scheduler.detach();
106
- }
107
-
108
- /**
109
- * Alias: react() — same as effect()
110
- */
111
- export function react(
112
- name: string,
113
- fn: () => void,
114
- opts?: EffectSchedulerOptions,
115
- ): () => void {
116
- return effect(name, fn, opts);
117
- }
@@ -1,17 +0,0 @@
1
- /** A reactive signal that holds subscribers */
2
- export interface Signal<T> {
3
- readonly name: string;
4
- get(): T;
5
- __unsafe__getWithoutCapture(): T;
6
- lastChangedEpoch: number;
7
- children: Set<Child>;
8
- }
9
-
10
- export interface Child {
11
- type: "computed" | "effect";
12
- notify(): void;
13
- source?: Signal<any>;
14
- }
15
-
16
- export const RESET_VALUE: unique symbol = Symbol("RESET_VALUE");
17
- export type RESET_VALUE = typeof RESET_VALUE;
@@ -1,171 +0,0 @@
1
- import { atom, type Atom } from "@land/signals";
2
- import {
3
- createEmptyRecordsDiff,
4
- getRecordsDiff,
5
- hasRecordsDiff,
6
- } from "./diff";
7
- import type {
8
- ChangeSource,
9
- RecordsDiff,
10
- ScopedStoreRecord,
11
- StoreChange,
12
- StoreRecord,
13
- StoreScopeOf,
14
- } from "./types";
15
-
16
- type StoreListener<TRecord extends StoreRecord> = (
17
- change: StoreChange<TRecord>,
18
- ) => void;
19
- type ScopedRecord<TRecord extends StoreRecord> = Extract<
20
- TRecord,
21
- ScopedStoreRecord
22
- >;
23
-
24
- export class Store<TRecord extends StoreRecord = StoreRecord> {
25
- readonly recordsSignal: Atom<Map<string, TRecord>>;
26
-
27
- private readonly listeners = new Set<StoreListener<TRecord>>();
28
- private transactionDepth = 0;
29
- private draftRecords: Map<string, TRecord> | null = null;
30
- private pendingSource: ChangeSource = "system";
31
-
32
- constructor(initialRecords: TRecord[]) {
33
- this.recordsSignal = atom(
34
- "store.records",
35
- new Map(initialRecords.map((record) => [record.id, record])),
36
- );
37
- }
38
-
39
- get(id: string): TRecord | undefined {
40
- return this.getReadableRecords().get(id);
41
- }
42
-
43
- getAll(): TRecord[] {
44
- return Array.from(this.getReadableRecords().values());
45
- }
46
-
47
- getByScope<TScope extends StoreScopeOf<ScopedRecord<TRecord>>>(
48
- scope: TScope,
49
- ): Array<Extract<ScopedRecord<TRecord>, { scope: TScope }>> {
50
- return this.getAll().filter(
51
- (record): record is Extract<ScopedRecord<TRecord>, { scope: TScope }> =>
52
- "scope" in record && record.scope === scope,
53
- );
54
- }
55
-
56
- listen(listener: StoreListener<TRecord>): () => void {
57
- this.listeners.add(listener);
58
- return () => this.listeners.delete(listener);
59
- }
60
-
61
- atomic(fn: () => void, source: ChangeSource = "system"): void {
62
- const isOuter = this.transactionDepth === 0;
63
- if (isOuter) {
64
- this.draftRecords = new Map(this.recordsSignal.get());
65
- this.pendingSource = source;
66
- }
67
-
68
- this.transactionDepth += 1;
69
- let thrown: unknown;
70
-
71
- try {
72
- fn();
73
- } catch (error) {
74
- thrown = error;
75
- }
76
-
77
- this.transactionDepth -= 1;
78
-
79
- if (isOuter) {
80
- const previous = this.recordsSignal.get();
81
- const next = this.draftRecords;
82
- const pendingSource = this.pendingSource;
83
- this.draftRecords = null;
84
- this.pendingSource = "system";
85
- const diff = next ? getRecordsDiff(previous, next) : createEmptyRecordsDiff<TRecord>();
86
-
87
- if (!thrown && next && hasRecordsDiff(diff)) {
88
- this.recordsSignal.set(next);
89
- const change = {
90
- source: pendingSource,
91
- diff,
92
- } satisfies StoreChange<TRecord>;
93
- for (const notify of this.listeners) {
94
- notify(change);
95
- }
96
- }
97
- }
98
-
99
- if (thrown) {
100
- throw thrown;
101
- }
102
- }
103
-
104
- put(records: TRecord[], source: ChangeSource = "system"): void {
105
- this.atomic(() => {
106
- const target = this.getMutableRecords();
107
- for (const record of records) {
108
- const previous = target.get(record.id);
109
- if (previous === record) continue;
110
- target.set(record.id, record);
111
- }
112
- }, source);
113
- }
114
-
115
- remove(ids: string[], source: ChangeSource = "system"): void {
116
- this.atomic(() => {
117
- const target = this.getMutableRecords();
118
- for (const id of ids) {
119
- if (!target.delete(id)) continue;
120
- }
121
- }, source);
122
- }
123
-
124
- replaceAll(records: TRecord[], source: ChangeSource = "system"): void {
125
- const next = new Map(records.map((record) => [record.id, record]));
126
- const diff = getRecordsDiff(this.recordsSignal.get(), next);
127
- if (!hasRecordsDiff(diff)) {
128
- return;
129
- }
130
- this.recordsSignal.set(next);
131
- const change = {
132
- source,
133
- diff,
134
- } satisfies StoreChange<TRecord>;
135
- for (const notify of this.listeners) {
136
- notify(change);
137
- }
138
- }
139
-
140
- applyDiff<TChangeRecord extends TRecord>(
141
- diff: RecordsDiff<TChangeRecord>,
142
- source: ChangeSource = "system",
143
- ): void {
144
- this.atomic(() => {
145
- const target = this.getMutableRecords();
146
-
147
- for (const record of diff.added) {
148
- target.set(record.id, record);
149
- }
150
-
151
- for (const update of diff.updated) {
152
- target.set(update.after.id, update.after);
153
- }
154
-
155
- for (const record of diff.removed) {
156
- target.delete(record.id);
157
- }
158
- }, source);
159
- }
160
-
161
- private getMutableRecords(): Map<string, TRecord> {
162
- if (!this.draftRecords) {
163
- throw new Error("Store mutations must run inside store.atomic");
164
- }
165
- return this.draftRecords;
166
- }
167
-
168
- private getReadableRecords(): Map<string, TRecord> {
169
- return this.draftRecords ?? this.recordsSignal.get();
170
- }
171
- }
@@ -1,229 +0,0 @@
1
- import type {
2
- RecordUpdate,
3
- RecordsDiff,
4
- StoreRecord,
5
- } from "./types";
6
-
7
- function isMap<TRecord extends StoreRecord>(
8
- value: Map<string, TRecord> | Iterable<TRecord>,
9
- ): value is Map<string, TRecord> {
10
- return value instanceof Map;
11
- }
12
-
13
- export function createEmptyRecordsDiff<
14
- TRecord extends StoreRecord,
15
- >(): RecordsDiff<TRecord> {
16
- return {
17
- added: [],
18
- updated: [],
19
- removed: [],
20
- };
21
- }
22
-
23
- export function hasRecordsDiff<TRecord extends StoreRecord>(
24
- diff: RecordsDiff<TRecord>,
25
- ): boolean {
26
- return diff.added.length > 0 || diff.updated.length > 0 || diff.removed.length > 0;
27
- }
28
-
29
- export function getRecordMap<TRecord extends StoreRecord>(
30
- records: Map<string, TRecord> | Iterable<TRecord>,
31
- ): Map<string, TRecord> {
32
- return isMap(records)
33
- ? new Map(records)
34
- : new Map(Array.from(records, (record) => [record.id, record]));
35
- }
36
-
37
- export function getRecordsDiff<TRecord extends StoreRecord>(
38
- before: Map<string, TRecord> | Iterable<TRecord>,
39
- after: Map<string, TRecord> | Iterable<TRecord>,
40
- ): RecordsDiff<TRecord> {
41
- const beforeMap = getRecordMap(before);
42
- const afterMap = getRecordMap(after);
43
- const diff = createEmptyRecordsDiff<TRecord>();
44
-
45
- for (const [id, previous] of beforeMap) {
46
- const next = afterMap.get(id);
47
- if (!next) {
48
- diff.removed.push(previous);
49
- continue;
50
- }
51
-
52
- if (next !== previous) {
53
- diff.updated.push({
54
- before: previous,
55
- after: next,
56
- });
57
- }
58
- }
59
-
60
- for (const [id, next] of afterMap) {
61
- if (!beforeMap.has(id)) {
62
- diff.added.push(next);
63
- }
64
- }
65
-
66
- return diff;
67
- }
68
-
69
- export function invertRecordsDiff<TRecord extends StoreRecord>(
70
- diff: RecordsDiff<TRecord>,
71
- ): RecordsDiff<TRecord> {
72
- return {
73
- added: [...diff.removed],
74
- updated: diff.updated.map(
75
- (update): RecordUpdate<TRecord> => ({
76
- before: update.after,
77
- after: update.before,
78
- }),
79
- ),
80
- removed: [...diff.added],
81
- };
82
- }
83
-
84
- export function composeRecordsDiff<
85
- TRecord extends StoreRecord,
86
- TNextRecord extends TRecord,
87
- >(
88
- left: RecordsDiff<TRecord>,
89
- right: RecordsDiff<TNextRecord>,
90
- ): RecordsDiff<TRecord | TNextRecord> {
91
- const added = new Map<string, TRecord | TNextRecord>();
92
- const updated = new Map<string, RecordUpdate<TRecord | TNextRecord>>();
93
- const removed = new Map<string, TRecord | TNextRecord>();
94
-
95
- for (const record of left.added) {
96
- added.set(record.id, record);
97
- }
98
-
99
- for (const update of left.updated) {
100
- updated.set(update.after.id, update);
101
- }
102
-
103
- for (const record of left.removed) {
104
- removed.set(record.id, record);
105
- }
106
-
107
- for (const record of right.added) {
108
- const existingRemoved = removed.get(record.id);
109
- if (existingRemoved) {
110
- removed.delete(record.id);
111
- updated.set(record.id, {
112
- before: existingRemoved,
113
- after: record,
114
- });
115
- continue;
116
- }
117
-
118
- const existingUpdated = updated.get(record.id);
119
- if (existingUpdated) {
120
- updated.set(record.id, {
121
- before: existingUpdated.before,
122
- after: record,
123
- });
124
- continue;
125
- }
126
-
127
- added.set(record.id, record);
128
- }
129
-
130
- for (const change of right.updated) {
131
- const existingAdded = added.get(change.after.id);
132
- if (existingAdded) {
133
- added.set(change.after.id, change.after);
134
- continue;
135
- }
136
-
137
- const existingRemoved = removed.get(change.after.id);
138
- if (existingRemoved) {
139
- removed.delete(change.after.id);
140
- updated.set(change.after.id, {
141
- before: existingRemoved,
142
- after: change.after,
143
- });
144
- continue;
145
- }
146
-
147
- const existingUpdated = updated.get(change.after.id);
148
- if (existingUpdated) {
149
- updated.set(change.after.id, {
150
- before: existingUpdated.before,
151
- after: change.after,
152
- });
153
- continue;
154
- }
155
-
156
- updated.set(change.after.id, {
157
- before: change.before,
158
- after: change.after,
159
- });
160
- }
161
-
162
- for (const record of right.removed) {
163
- const existingAdded = added.get(record.id);
164
- if (existingAdded) {
165
- added.delete(record.id);
166
- continue;
167
- }
168
-
169
- const existingUpdated = updated.get(record.id);
170
- if (existingUpdated) {
171
- updated.delete(record.id);
172
- removed.set(record.id, existingUpdated.before);
173
- continue;
174
- }
175
-
176
- removed.set(record.id, record);
177
- }
178
-
179
- const next = createEmptyRecordsDiff<TRecord | TNextRecord>();
180
-
181
- for (const record of added.values()) {
182
- next.added.push(record);
183
- }
184
-
185
- for (const change of updated.values()) {
186
- if (change.before === change.after) {
187
- continue;
188
- }
189
- next.updated.push(change);
190
- }
191
-
192
- for (const record of removed.values()) {
193
- next.removed.push(record);
194
- }
195
-
196
- return next;
197
- }
198
-
199
- export function squashRecordsDiffs<
200
- TRecord extends StoreRecord,
201
- TNextRecord extends TRecord,
202
- >(
203
- diffs: Iterable<RecordsDiff<TRecord> | RecordsDiff<TNextRecord>>,
204
- ): RecordsDiff<TRecord | TNextRecord> {
205
- let next = createEmptyRecordsDiff<TRecord | TNextRecord>();
206
- for (const diff of diffs) {
207
- next = composeRecordsDiff(next, diff);
208
- }
209
- return next;
210
- }
211
-
212
- export function filterRecordsDiff<
213
- TRecord extends StoreRecord,
214
- TFilteredRecord extends TRecord,
215
- >(
216
- diff: RecordsDiff<TRecord>,
217
- predicate: (record: TRecord) => record is TFilteredRecord,
218
- ): RecordsDiff<TFilteredRecord> {
219
- return {
220
- added: diff.added.filter(predicate),
221
- updated: diff.updated.filter(
222
- (
223
- update,
224
- ): update is RecordUpdate<TFilteredRecord> =>
225
- predicate(update.before) && predicate(update.after),
226
- ),
227
- removed: diff.removed.filter(predicate),
228
- };
229
- }