@weasel-js/core 1.9.2 → 1.9.4

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 (542) hide show
  1. package/CHANGELOG.md +393 -0
  2. package/README.md +2 -2
  3. package/dist/WeaselProvider.js +5 -5
  4. package/dist/affordances/composeAffordanceLayer.js +10 -20
  5. package/dist/affordances/composeAffordanceLayer.js.map +1 -1
  6. package/dist/affordances/cornerResize.js +25 -17
  7. package/dist/affordances/cornerResize.js.map +1 -1
  8. package/dist/affordances/hitAffordanceRegions.js +27 -20
  9. package/dist/affordances/hitAffordanceRegions.js.map +1 -1
  10. package/dist/affordances/rotationHandle.js +18 -18
  11. package/dist/affordances/rotationHandle.js.map +1 -1
  12. package/dist/animation/behaviors/momentum.js +93 -55
  13. package/dist/animation/behaviors/momentum.js.map +1 -1
  14. package/dist/animation/loop.js +10 -12
  15. package/dist/animation/loop.js.map +1 -1
  16. package/dist/animation/reflow.js +8 -8
  17. package/dist/animation/reflow.js.map +1 -1
  18. package/dist/animation/stagger.js +64 -56
  19. package/dist/animation/stagger.js.map +1 -1
  20. package/dist/animation/timeline/booking.js +62 -54
  21. package/dist/animation/timeline/booking.js.map +1 -1
  22. package/dist/animation/timeline/createTimeline.js +85 -76
  23. package/dist/animation/timeline/createTimeline.js.map +1 -1
  24. package/dist/animation/timeline/sampleTrack.js +13 -5
  25. package/dist/animation/timeline/sampleTrack.js.map +1 -1
  26. package/dist/animation/useAnimator.js +45 -35
  27. package/dist/animation/useAnimator.js.map +1 -1
  28. package/dist/animation/wrappers/animateLifecycle.js +31 -24
  29. package/dist/animation/wrappers/animateLifecycle.js.map +1 -1
  30. package/dist/animation/wrappers/animateOnSetPose.js +28 -26
  31. package/dist/animation/wrappers/animateOnSetPose.js.map +1 -1
  32. package/dist/animation/wrappers/instantPose.js +13 -0
  33. package/dist/animation/wrappers/instantPose.js.map +1 -0
  34. package/dist/{poseDescriptor-D-OH-tu5.d.ts → autoPoseDescriptor-Ct7yqivU.d.ts} +28 -3
  35. package/dist/barrel/chrome.js +16 -0
  36. package/dist/barrel/input.js +19 -0
  37. package/dist/barrel/interactions.js +42 -0
  38. package/dist/barrel/paint.js +18 -0
  39. package/dist/barrel/paths.js +19 -0
  40. package/dist/barrel/renderer.js +20 -0
  41. package/dist/barrel/routing.js +51 -0
  42. package/dist/barrel/text.js +18 -0
  43. package/dist/barrel/viewport.js +52 -0
  44. package/dist/builtins-DPcdghtB.d.ts +1223 -0
  45. package/dist/canvas/Canvas.js +363 -448
  46. package/dist/canvas/Canvas.js.map +1 -1
  47. package/dist/canvas/CanvasView.js +164 -165
  48. package/dist/canvas/CanvasView.js.map +1 -1
  49. package/dist/canvas/CursorCoordsHud.js +37 -32
  50. package/dist/canvas/CursorCoordsHud.js.map +1 -1
  51. package/dist/canvas/DrawCanvas.js +49 -43
  52. package/dist/canvas/DrawCanvas.js.map +1 -1
  53. package/dist/canvas/MinimapCanvas.js +26 -25
  54. package/dist/canvas/MinimapCanvas.js.map +1 -1
  55. package/dist/canvas/NodeShape.js +59 -377
  56. package/dist/canvas/NodeShape.js.map +1 -1
  57. package/dist/canvas/PickHud.js +50 -47
  58. package/dist/canvas/PickHud.js.map +1 -1
  59. package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js +167 -0
  60. package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js.map +1 -0
  61. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +13 -13
  62. package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js +67 -0
  63. package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js.map +1 -0
  64. package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js +16 -0
  65. package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js.map +1 -0
  66. package/dist/canvas/SceneCanvas/coordTrace.js +10 -0
  67. package/dist/canvas/SceneCanvas/coordTrace.js.map +1 -0
  68. package/dist/canvas/SceneCanvas/defaultNodeProperties.js +146 -92
  69. package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -1
  70. package/dist/canvas/SceneCanvas/defaultNodeRouting.js +9 -8
  71. package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -1
  72. package/dist/canvas/SceneCanvas/features.js +1 -0
  73. package/dist/canvas/SceneCanvas/features.js.map +1 -1
  74. package/dist/canvas/SceneCanvas/isDev.js +12 -0
  75. package/dist/canvas/SceneCanvas/isDev.js.map +1 -0
  76. package/dist/canvas/SceneCanvas/poseGeometry.js +29 -28
  77. package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -1
  78. package/dist/canvas/SceneCanvas/poseRegistrars.js +13 -0
  79. package/dist/canvas/SceneCanvas/poseRegistrars.js.map +1 -0
  80. package/dist/canvas/SceneCanvas/props.js +38 -0
  81. package/dist/canvas/SceneCanvas/props.js.map +1 -0
  82. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js +21 -62
  83. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js.map +1 -1
  84. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js.map +1 -1
  85. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +46 -48
  86. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js.map +1 -1
  87. package/dist/canvas/SceneCanvas/useSceneSelectTool.js +33 -33
  88. package/dist/canvas/SceneCanvas/useSceneSelectTool.js.map +1 -1
  89. package/dist/canvas/SceneCanvas.js +534 -788
  90. package/dist/canvas/SceneCanvas.js.map +1 -1
  91. package/dist/canvas/SceneViewCanvas.js +45 -43
  92. package/dist/canvas/SceneViewCanvas.js.map +1 -1
  93. package/dist/canvas/buildSceneLayer.js +91 -0
  94. package/dist/canvas/buildSceneLayer.js.map +1 -0
  95. package/dist/canvas/buildSceneTree.js +16 -19
  96. package/dist/canvas/buildSceneTree.js.map +1 -1
  97. package/dist/canvas/canvasRenderer.js +68 -52
  98. package/dist/canvas/canvasRenderer.js.map +1 -1
  99. package/dist/canvas/deps/changes.js +13 -0
  100. package/dist/canvas/deps/changes.js.map +1 -0
  101. package/dist/canvas/deps/editAnchors.js +28 -28
  102. package/dist/canvas/deps/insert.js +119 -91
  103. package/dist/canvas/deps/insert.js.map +1 -1
  104. package/dist/canvas/deps/slice.js +46 -45
  105. package/dist/canvas/deps/slice.js.map +1 -1
  106. package/dist/canvas/deps/textEdit.js +10 -9
  107. package/dist/canvas/deps/textEdit.js.map +1 -1
  108. package/dist/canvas/derivedPath.js +46 -23
  109. package/dist/canvas/derivedPath.js.map +1 -1
  110. package/dist/canvas/getNodeAtPoint.js +7 -7
  111. package/dist/canvas/getNodeAtPoint.js.map +1 -1
  112. package/dist/canvas/hud.module.js +1 -1
  113. package/dist/canvas/hud.module.js.map +1 -1
  114. package/dist/canvas/kitRequirements.js +2 -2
  115. package/dist/canvas/kitRequirements.js.map +1 -1
  116. package/dist/canvas/layerOrder.js +13 -6
  117. package/dist/canvas/layerOrder.js.map +1 -1
  118. package/dist/canvas/minimapMath.js +12 -10
  119. package/dist/canvas/minimapMath.js.map +1 -1
  120. package/dist/canvas/nodeShapes/derivedPainter.js +34 -0
  121. package/dist/canvas/nodeShapes/derivedPainter.js.map +1 -0
  122. package/dist/canvas/nodeShapes/imagePainter.js +87 -0
  123. package/dist/canvas/nodeShapes/imagePainter.js.map +1 -0
  124. package/dist/canvas/nodeShapes/memo.js +9 -0
  125. package/dist/canvas/nodeShapes/memo.js.map +1 -0
  126. package/dist/canvas/nodeShapes/nodePaint.js +57 -0
  127. package/dist/canvas/nodeShapes/nodePaint.js.map +1 -0
  128. package/dist/canvas/nodeShapes/pathPainter.js +38 -0
  129. package/dist/canvas/nodeShapes/pathPainter.js.map +1 -0
  130. package/dist/canvas/nodeShapes/poseBox.js +20 -0
  131. package/dist/canvas/nodeShapes/poseBox.js.map +1 -0
  132. package/dist/canvas/nodeShapes/rectFallbackPainter.js +38 -0
  133. package/dist/canvas/nodeShapes/rectFallbackPainter.js.map +1 -0
  134. package/dist/canvas/nodeShapes/shapePainter.js +72 -0
  135. package/dist/canvas/nodeShapes/shapePainter.js.map +1 -0
  136. package/dist/canvas/nodeShapes/textPainter.js +55 -0
  137. package/dist/canvas/nodeShapes/textPainter.js.map +1 -0
  138. package/dist/canvas/overlayRoleStrokes.js.map +1 -1
  139. package/dist/canvas/paintCull.js +10 -11
  140. package/dist/canvas/paintCull.js.map +1 -1
  141. package/dist/canvas/pickWalk.js +52 -63
  142. package/dist/canvas/pickWalk.js.map +1 -1
  143. package/dist/canvas/poseRotation.js +11 -23
  144. package/dist/canvas/poseRotation.js.map +1 -1
  145. package/dist/canvas/renderDebugSnapshot.js +5 -5
  146. package/dist/canvas/renderSceneToPixels.js +3 -1
  147. package/dist/canvas/renderSceneToPixels.js.map +1 -1
  148. package/dist/canvas/sceneAdapter.js +66 -148
  149. package/dist/canvas/sceneAdapter.js.map +1 -1
  150. package/dist/canvas/sceneClipboard.js +112 -0
  151. package/dist/canvas/sceneClipboard.js.map +1 -0
  152. package/dist/canvas/sceneSlotWiring.js +4 -4
  153. package/dist/canvas/sceneSlotWiring.js.map +1 -1
  154. package/dist/canvas/sceneViewRender.js +39 -40
  155. package/dist/canvas/sceneViewRender.js.map +1 -1
  156. package/dist/canvas/useCanvasRenderer.js +14 -6
  157. package/dist/canvas/useCanvasRenderer.js.map +1 -1
  158. package/dist/canvas/useCanvasView.js +58 -0
  159. package/dist/canvas/useCanvasView.js.map +1 -0
  160. package/dist/canvas/useFrameLoop.js +35 -26
  161. package/dist/canvas/useFrameLoop.js.map +1 -1
  162. package/dist/canvas/useSceneLayerList.js +21 -0
  163. package/dist/canvas/useSceneLayerList.js.map +1 -0
  164. package/dist/clipboard.d.ts +10 -6
  165. package/dist/clone.d.ts +4 -3
  166. package/dist/core/adapters/arrayAdapter.js +48 -39
  167. package/dist/core/adapters/arrayAdapter.js.map +1 -1
  168. package/dist/core/device/index.js +5 -4
  169. package/dist/core/device/useDeviceProfile.js +38 -44
  170. package/dist/core/device/useDeviceProfile.js.map +1 -1
  171. package/dist/core/device/watchDevicePixelRatio.js +17 -0
  172. package/dist/core/device/watchDevicePixelRatio.js.map +1 -0
  173. package/dist/core/fillInPoseFrame.js.map +1 -1
  174. package/dist/core/geometry/poseDescriptor.js +21 -19
  175. package/dist/core/geometry/poseDescriptor.js.map +1 -1
  176. package/dist/core/geometry/poseFrame.js +44 -0
  177. package/dist/core/geometry/poseFrame.js.map +1 -0
  178. package/dist/core/geometry/poseRotation.js.map +1 -1
  179. package/dist/core/geometry/regionHit.js +9 -10
  180. package/dist/core/geometry/regionHit.js.map +1 -1
  181. package/dist/core/geometry/unionBounds.js +31 -29
  182. package/dist/core/geometry/unionBounds.js.map +1 -1
  183. package/dist/core/isPlainObject.js +2 -11
  184. package/dist/core/ops/arrange.js +1 -0
  185. package/dist/core/ops/arrange.js.map +1 -1
  186. package/dist/core/ops/create.js +10 -5
  187. package/dist/core/ops/create.js.map +1 -1
  188. package/dist/core/ops/delete.js +12 -24
  189. package/dist/core/ops/delete.js.map +1 -1
  190. package/dist/core/ops/reorder/index.js +43 -40
  191. package/dist/core/ops/reorder/index.js.map +1 -1
  192. package/dist/core/ops/reorder/setChildOrder.js +34 -0
  193. package/dist/core/ops/reorder/setChildOrder.js.map +1 -0
  194. package/dist/core/paintKinds.js +5 -5
  195. package/dist/core/paintKinds.js.map +1 -1
  196. package/dist/core/scene/NodeProperties.js.map +1 -1
  197. package/dist/core/scene/appliedLog.js +37 -0
  198. package/dist/core/scene/appliedLog.js.map +1 -0
  199. package/dist/core/scene/arrivalWindow.js +101 -0
  200. package/dist/core/scene/arrivalWindow.js.map +1 -0
  201. package/dist/core/scene/derivedPath.js.map +1 -1
  202. package/dist/core/scene/historyFacade.js +84 -0
  203. package/dist/core/scene/historyFacade.js.map +1 -0
  204. package/dist/core/scene/kitOps.js +173 -0
  205. package/dist/core/scene/kitOps.js.map +1 -0
  206. package/dist/core/scene/layerStack.js +38 -0
  207. package/dist/core/scene/layerStack.js.map +1 -0
  208. package/dist/core/scene/lockGuard.js +37 -0
  209. package/dist/core/scene/lockGuard.js.map +1 -0
  210. package/dist/core/scene/nodeFnFields.js +5 -6
  211. package/dist/core/scene/nodeFnFields.js.map +1 -1
  212. package/dist/core/scene/nodeMemo.js +45 -19
  213. package/dist/core/scene/nodeMemo.js.map +1 -1
  214. package/dist/core/scene/nodeStore.js +126 -0
  215. package/dist/core/scene/nodeStore.js.map +1 -0
  216. package/dist/core/scene/pickability.js +6 -0
  217. package/dist/core/scene/pickability.js.map +1 -0
  218. package/dist/core/scene/poseFeed.js +38 -38
  219. package/dist/core/scene/poseFeed.js.map +1 -1
  220. package/dist/core/scene/poseOverrides.js +34 -38
  221. package/dist/core/scene/poseOverrides.js.map +1 -1
  222. package/dist/core/scene/renderOrder.js +84 -0
  223. package/dist/core/scene/renderOrder.js.map +1 -0
  224. package/dist/core/scene/scene.js +289 -866
  225. package/dist/core/scene/scene.js.map +1 -1
  226. package/dist/core/scene/serialization.js +68 -0
  227. package/dist/core/scene/serialization.js.map +1 -0
  228. package/dist/core/scene/treeOrder.js +13 -0
  229. package/dist/core/scene/treeOrder.js.map +1 -0
  230. package/dist/core/scene/types.js.map +1 -1
  231. package/dist/core/viewport/meanScale.js +1 -1
  232. package/dist/core/viewport/meanScale.js.map +1 -1
  233. package/dist/core/viewport/view.js +12 -12
  234. package/dist/core/viewport/view.js.map +1 -1
  235. package/dist/core/viewport/zoomBounds.js +10 -8
  236. package/dist/core/viewport/zoomBounds.js.map +1 -1
  237. package/dist/{cornerHandles-BCrDp_mH.d.ts → cornerHandles-CtCb8a3G.d.ts} +1 -1
  238. package/dist/debug/createDebugOverlayLayer.js +14 -14
  239. package/dist/debug/createDebugOverlayLayer.js.map +1 -1
  240. package/dist/debug/flag.js +2 -41
  241. package/dist/features/chrome-caps/useHoverTracking.js +22 -17
  242. package/dist/features/chrome-caps/useHoverTracking.js.map +1 -1
  243. package/dist/features/focus/gateLayer.js +3 -4
  244. package/dist/features/focus/gateLayer.js.map +1 -1
  245. package/dist/features/images/imageCache.js +19 -9
  246. package/dist/features/images/imageCache.js.map +1 -1
  247. package/dist/features/ingestion/contentHandlers.js +14 -11
  248. package/dist/features/ingestion/contentHandlers.js.map +1 -1
  249. package/dist/features/ingestion/index.js +1 -1
  250. package/dist/features/ingestion/registerKitHandlers.js +7 -7
  251. package/dist/features/ingestion/weaselJsonHandler.js +17 -14
  252. package/dist/features/ingestion/weaselJsonHandler.js.map +1 -1
  253. package/dist/features/meshPaint/lazyKind.js +201 -35
  254. package/dist/features/meshPaint/lazyKind.js.map +1 -1
  255. package/dist/features/meshPaint/meshPaint.js +82 -79
  256. package/dist/features/meshPaint/meshPaint.js.map +1 -1
  257. package/dist/features/minimap/createMinimapContribution.js +42 -42
  258. package/dist/features/minimap/layers.js +44 -62
  259. package/dist/features/minimap/layers.js.map +1 -1
  260. package/dist/features/parallax/createParallaxPlane.js +10 -14
  261. package/dist/features/parallax/createParallaxPlane.js.map +1 -1
  262. package/dist/features/paths/anchorEdits.js +19 -8
  263. package/dist/features/paths/anchorEdits.js.map +1 -1
  264. package/dist/features/paths/anchors.js +31 -26
  265. package/dist/features/paths/anchors.js.map +1 -1
  266. package/dist/features/paths/booleans.js +2 -2
  267. package/dist/features/paths/index.js +13 -11
  268. package/dist/features/paths/markerCommands.js +37 -36
  269. package/dist/features/paths/markerCommands.js.map +1 -1
  270. package/dist/features/paths/pathInWorld.js +19 -19
  271. package/dist/features/paths/pathInWorld.js.map +1 -1
  272. package/dist/features/paths/pathLayer.js.map +1 -1
  273. package/dist/features/paths/strokeToPath.js +40 -0
  274. package/dist/features/paths/strokeToPath.js.map +1 -0
  275. package/dist/features/paths/tessellate/stroke.js.map +1 -1
  276. package/dist/features/patterns/commandPaint.js +18 -0
  277. package/dist/features/patterns/commandPaint.js.map +1 -0
  278. package/dist/features/patterns/index.js +5 -17
  279. package/dist/features/patterns/index.js.map +1 -1
  280. package/dist/features/patterns/rasterizeTile.js +17 -0
  281. package/dist/features/patterns/rasterizeTile.js.map +1 -0
  282. package/dist/features/patterns/resolveSpec.js +52 -44
  283. package/dist/features/patterns/resolveSpec.js.map +1 -1
  284. package/dist/features/poseRun/usePoseRun.js +8 -3
  285. package/dist/features/poseRun/usePoseRun.js.map +1 -1
  286. package/dist/features/selection/SelectionContext.js +5 -0
  287. package/dist/features/selection/SelectionContext.js.map +1 -1
  288. package/dist/features/selection/overlay.js +18 -18
  289. package/dist/features/selection/overlay.js.map +1 -1
  290. package/dist/features/text/domOffsets.js +82 -0
  291. package/dist/features/text/domOffsets.js.map +1 -0
  292. package/dist/features/text/domRuns.js +103 -131
  293. package/dist/features/text/domRuns.js.map +1 -1
  294. package/dist/features/text/hitTest.js +5 -2
  295. package/dist/features/text/hitTest.js.map +1 -1
  296. package/dist/features/text/isTextData.js +8 -0
  297. package/dist/features/text/isTextData.js.map +1 -0
  298. package/dist/features/text/overlayDirection.js +15 -0
  299. package/dist/features/text/overlayDirection.js.map +1 -0
  300. package/dist/features/text/runs/rangeStyle.js +32 -34
  301. package/dist/features/text/runs/rangeStyle.js.map +1 -1
  302. package/dist/features/text/textCommand.js +34 -33
  303. package/dist/features/text/textCommand.js.map +1 -1
  304. package/dist/features/text/textToPath.js +40 -40
  305. package/dist/features/text/textToPath.js.map +1 -1
  306. package/dist/features/text/useSceneTextEdit.js +76 -82
  307. package/dist/features/text/useSceneTextEdit.js.map +1 -1
  308. package/dist/features/text/useTextEdit.js +184 -160
  309. package/dist/features/text/useTextEdit.js.map +1 -1
  310. package/dist/features/tiling/createTiledLayer.js +24 -22
  311. package/dist/features/tiling/createTiledLayer.js.map +1 -1
  312. package/dist/index.d.ts +11010 -7700
  313. package/dist/index.js +316 -309
  314. package/dist/input/keyState.js +42 -43
  315. package/dist/input/keyState.js.map +1 -1
  316. package/dist/input/useKeyModifiers.js +11 -0
  317. package/dist/input/useKeyModifiers.js.map +1 -0
  318. package/dist/interactions/actions/align/align.js +8 -8
  319. package/dist/interactions/actions/clipboard/clipboardOps.js +34 -32
  320. package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -1
  321. package/dist/interactions/actions/clipboard/materializePaste.js +10 -7
  322. package/dist/interactions/actions/clipboard/materializePaste.js.map +1 -1
  323. package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -1
  324. package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js.map +1 -1
  325. package/dist/interactions/actions/defaultCommitAdapter.js +20 -18
  326. package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -1
  327. package/dist/interactions/actions/defaults/align.js +9 -10
  328. package/dist/interactions/actions/defaults/align.js.map +1 -1
  329. package/dist/interactions/actions/defaults/anchorEditing.js +59 -81
  330. package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -1
  331. package/dist/interactions/actions/defaults/areaSelect.js +35 -38
  332. package/dist/interactions/actions/defaults/areaSelect.js.map +1 -1
  333. package/dist/interactions/actions/defaults/clipboard.js +26 -10
  334. package/dist/interactions/actions/defaults/clipboard.js.map +1 -1
  335. package/dist/interactions/actions/defaults/clone.js +44 -60
  336. package/dist/interactions/actions/defaults/clone.js.map +1 -1
  337. package/dist/interactions/actions/defaults/copySubtree.js +40 -0
  338. package/dist/interactions/actions/defaults/copySubtree.js.map +1 -0
  339. package/dist/interactions/actions/defaults/distribute.js +14 -13
  340. package/dist/interactions/actions/defaults/distribute.js.map +1 -1
  341. package/dist/interactions/actions/defaults/duplicate.js +17 -57
  342. package/dist/interactions/actions/defaults/duplicate.js.map +1 -1
  343. package/dist/interactions/actions/defaults/editAnchors.js +18 -18
  344. package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -1
  345. package/dist/interactions/actions/defaults/flip.js +52 -46
  346. package/dist/interactions/actions/defaults/flip.js.map +1 -1
  347. package/dist/interactions/actions/defaults/group.js +43 -48
  348. package/dist/interactions/actions/defaults/group.js.map +1 -1
  349. package/dist/interactions/actions/defaults/ingest.js +35 -33
  350. package/dist/interactions/actions/defaults/ingest.js.map +1 -1
  351. package/dist/interactions/actions/defaults/insert.js +50 -51
  352. package/dist/interactions/actions/defaults/insert.js.map +1 -1
  353. package/dist/interactions/actions/defaults/insertPathAnchor.js +7 -7
  354. package/dist/interactions/actions/defaults/lassoSelect.js +67 -70
  355. package/dist/interactions/actions/defaults/lassoSelect.js.map +1 -1
  356. package/dist/interactions/actions/defaults/move.js +267 -249
  357. package/dist/interactions/actions/defaults/move.js.map +1 -1
  358. package/dist/interactions/actions/defaults/nudge.js +40 -68
  359. package/dist/interactions/actions/defaults/nudge.js.map +1 -1
  360. package/dist/interactions/actions/defaults/nudgeSteps.js +37 -0
  361. package/dist/interactions/actions/defaults/nudgeSteps.js.map +1 -0
  362. package/dist/interactions/actions/defaults/reorder.js +2 -0
  363. package/dist/interactions/actions/defaults/reorder.js.map +1 -1
  364. package/dist/interactions/actions/defaults/resize.js +104 -98
  365. package/dist/interactions/actions/defaults/resize.js.map +1 -1
  366. package/dist/interactions/actions/defaults/rotate.js +111 -110
  367. package/dist/interactions/actions/defaults/rotate.js.map +1 -1
  368. package/dist/interactions/actions/defaults/setFill.js +7 -7
  369. package/dist/interactions/actions/defaults/setFillOpacity.js +4 -4
  370. package/dist/interactions/actions/defaults/setStroke.js +12 -12
  371. package/dist/interactions/actions/defaults/setStrokeOpacity.js +6 -6
  372. package/dist/interactions/actions/defaults/sliceOps.js +19 -19
  373. package/dist/interactions/actions/defaults/viewportDragPan.js +37 -26
  374. package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -1
  375. package/dist/interactions/actions/edit-anchors/geometry.js +28 -23
  376. package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -1
  377. package/dist/interactions/actions/flip/helpers.js +30 -17
  378. package/dist/interactions/actions/flip/helpers.js.map +1 -1
  379. package/dist/interactions/actions/hitSelection.js +8 -0
  380. package/dist/interactions/actions/hitSelection.js.map +1 -0
  381. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js +14 -18
  382. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js.map +1 -1
  383. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js +5 -5
  384. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js.map +1 -1
  385. package/dist/interactions/actions/move/behaviors/snapToContainer.js +32 -21
  386. package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -1
  387. package/dist/interactions/actions/move/gestureAdapter.js +32 -15
  388. package/dist/interactions/actions/move/gestureAdapter.js.map +1 -1
  389. package/dist/interactions/actions/move/landedDescendants.js +33 -0
  390. package/dist/interactions/actions/move/landedDescendants.js.map +1 -0
  391. package/dist/interactions/actions/outlines/createOutlines.js +18 -18
  392. package/dist/interactions/actions/poseDescriptorDep.js +16 -4
  393. package/dist/interactions/actions/poseDescriptorDep.js.map +1 -1
  394. package/dist/interactions/actions/poseFrame.js +11 -6
  395. package/dist/interactions/actions/poseFrame.js.map +1 -1
  396. package/dist/interactions/actions/previewOverrides.js +5 -5
  397. package/dist/interactions/actions/previewOverrides.js.map +1 -1
  398. package/dist/interactions/actions/selectionSubtree.js +69 -0
  399. package/dist/interactions/actions/selectionSubtree.js.map +1 -0
  400. package/dist/interactions/actions/useStandardActions.js +66 -62
  401. package/dist/interactions/actions/useStandardActions.js.map +1 -1
  402. package/dist/interactions/gestures/dragGesture/dragGesture.js +4 -7
  403. package/dist/interactions/gestures/dragGesture/dragGesture.js.map +1 -1
  404. package/dist/interactions/gestures/dragGesture/dragPointOf.js +23 -0
  405. package/dist/interactions/gestures/dragGesture/dragPointOf.js.map +1 -0
  406. package/dist/interactions/gestures/handleDrag/handleDrag.js +21 -26
  407. package/dist/interactions/gestures/handleDrag/handleDrag.js.map +1 -1
  408. package/dist/interactions/gestures/pointerDrag/pointerDrag.js +8 -6
  409. package/dist/interactions/gestures/pointerDrag/pointerDrag.js.map +1 -1
  410. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js +8 -4
  411. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js.map +1 -1
  412. package/dist/{math-Drrw4ewZ.d.ts → math-J-ACHyEg.d.ts} +1 -2
  413. package/dist/math.d.ts +2 -3
  414. package/dist/move.d.ts +12 -11
  415. package/dist/{originProjection-DEklpDc_.d.ts → originProjection-gHnOup4e.d.ts} +1 -1
  416. package/dist/{registerProgram-BMZRDgrh.d.ts → registerProgram-T9S_PfAX.d.ts} +18 -7
  417. package/dist/renderer/DrawCommand.js.map +1 -1
  418. package/dist/renderer/WeaselRenderer.js +75 -73
  419. package/dist/renderer/WeaselRenderer.js.map +1 -1
  420. package/dist/renderer/cache/GLImageCache.js +15 -5
  421. package/dist/renderer/cache/GLImageCache.js.map +1 -1
  422. package/dist/renderer/cache/GLMeshCache.js +23 -23
  423. package/dist/renderer/cache/GLMeshCache.js.map +1 -1
  424. package/dist/renderer/cache/GLTextureCache.js +18 -1
  425. package/dist/renderer/cache/GLTextureCache.js.map +1 -1
  426. package/dist/renderer/cache/cache.js.map +1 -1
  427. package/dist/renderer/cache/markerCommandCache.js.map +1 -1
  428. package/dist/renderer/cache/strokeMeshCache.js.map +1 -1
  429. package/dist/renderer/cullDrawCommands.js +11 -11
  430. package/dist/renderer/draw/batch.js +133 -0
  431. package/dist/renderer/draw/batch.js.map +1 -0
  432. package/dist/renderer/draw/clip.js +89 -0
  433. package/dist/renderer/draw/clip.js.map +1 -0
  434. package/dist/renderer/draw/customShader.js +230 -0
  435. package/dist/renderer/draw/customShader.js.map +1 -0
  436. package/dist/renderer/draw/drawTriangles.js +8 -0
  437. package/dist/renderer/draw/drawTriangles.js.map +1 -0
  438. package/dist/renderer/draw/effects.js +28 -0
  439. package/dist/renderer/draw/effects.js.map +1 -0
  440. package/dist/renderer/draw/flushBatch.js +35 -0
  441. package/dist/renderer/draw/flushBatch.js.map +1 -0
  442. package/dist/renderer/draw/gradient.js +90 -0
  443. package/dist/renderer/draw/gradient.js.map +1 -0
  444. package/dist/renderer/draw/image.js +38 -0
  445. package/dist/renderer/draw/image.js.map +1 -0
  446. package/dist/renderer/draw/mesh.js +16 -0
  447. package/dist/renderer/draw/mesh.js.map +1 -0
  448. package/dist/renderer/draw/paintBind.js +70 -0
  449. package/dist/renderer/draw/paintBind.js.map +1 -0
  450. package/dist/renderer/draw/pathPaint.js +142 -0
  451. package/dist/renderer/draw/pathPaint.js.map +1 -0
  452. package/dist/renderer/draw/scratchPass.js +83 -0
  453. package/dist/renderer/draw/scratchPass.js.map +1 -0
  454. package/dist/renderer/draw/stencil.js +28 -0
  455. package/dist/renderer/draw/stencil.js.map +1 -0
  456. package/dist/renderer/draw/text.js +167 -0
  457. package/dist/renderer/draw/text.js.map +1 -0
  458. package/dist/renderer/draw/uniforms.js +77 -0
  459. package/dist/renderer/draw/uniforms.js.map +1 -0
  460. package/dist/renderer/draw.js +60 -1116
  461. package/dist/renderer/draw.js.map +1 -1
  462. package/dist/renderer/effects/EffectTargets.js +3 -0
  463. package/dist/renderer/effects/EffectTargets.js.map +1 -1
  464. package/dist/renderer/effects/composite.js +7 -5
  465. package/dist/renderer/effects/composite.js.map +1 -1
  466. package/dist/renderer/index.js +18 -17
  467. package/dist/renderer/math/color.js +63 -83
  468. package/dist/renderer/math/color.js.map +1 -1
  469. package/dist/renderer/math/mat3.js +15 -11
  470. package/dist/renderer/math/mat3.js.map +1 -1
  471. package/dist/renderer/math/viewToMat3.js +1 -1
  472. package/dist/renderer/math/viewToMat3.js.map +1 -1
  473. package/dist/renderer/shaders/ShaderProgram.js +13 -13
  474. package/dist/renderer/shaders/ShaderProgram.js.map +1 -1
  475. package/dist/renderer/shaders/glyphPaint.js +3 -3
  476. package/dist/renderer/shaders/glyphPaint.js.map +1 -1
  477. package/dist/renderer/shaders/gradFill.js +2 -1
  478. package/dist/renderer/shaders/gradFill.js.map +1 -1
  479. package/dist/renderer/shaders/pathFill.js +2 -1
  480. package/dist/renderer/shaders/pathFill.js.map +1 -1
  481. package/dist/renderer/shaders/patternFill.js +2 -1
  482. package/dist/renderer/shaders/patternFill.js.map +1 -1
  483. package/dist/renderer/shaders/registerProgram.js.map +1 -1
  484. package/dist/renderer/strokeLengths.js.map +1 -1
  485. package/dist/renderer/textures/registerTexture.js +25 -5
  486. package/dist/renderer/textures/registerTexture.js.map +1 -1
  487. package/dist/renderer.d.ts +16 -15
  488. package/dist/renderer.js +17 -16
  489. package/dist/resize.d.ts +5 -6
  490. package/dist/resize.js +5 -5
  491. package/dist/style.css +1 -1
  492. package/dist/test-hook/install.js +12 -6
  493. package/dist/test-hook/install.js.map +1 -1
  494. package/dist/{test-seams-CuIxe0xY.d.ts → test-seams-DM2B87-g.d.ts} +4 -4
  495. package/dist/test-seams.d.ts +2 -2
  496. package/dist/tools/builtin/ellipse/useEllipseTool.js +1 -0
  497. package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -1
  498. package/dist/tools/builtin/hand/useHandTool.js +1 -0
  499. package/dist/tools/builtin/hand/useHandTool.js.map +1 -1
  500. package/dist/tools/builtin/lasso/useLassoTool.js +11 -11
  501. package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -1
  502. package/dist/tools/builtin/line/useLineTool.js +1 -0
  503. package/dist/tools/builtin/line/useLineTool.js.map +1 -1
  504. package/dist/tools/builtin/pen/usePenTool.js +153 -103
  505. package/dist/tools/builtin/pen/usePenTool.js.map +1 -1
  506. package/dist/tools/builtin/pencil/usePencilTool.js +1 -0
  507. package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -1
  508. package/dist/tools/builtin/polygon/usePolygonTool.js +13 -8
  509. package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -1
  510. package/dist/tools/builtin/rect/useRectTool.js +1 -0
  511. package/dist/tools/builtin/rect/useRectTool.js.map +1 -1
  512. package/dist/tools/builtin/select/selectionContributions.js +24 -23
  513. package/dist/tools/builtin/select/selectionContributions.js.map +1 -1
  514. package/dist/tools/builtin/select/useSelectTool.js +51 -48
  515. package/dist/tools/builtin/select/useSelectTool.js.map +1 -1
  516. package/dist/tools/builtin/shared/pointerFollower.js +17 -0
  517. package/dist/tools/builtin/shared/pointerFollower.js.map +1 -0
  518. package/dist/tools/builtin/slice/useSliceTool.js +49 -54
  519. package/dist/tools/builtin/slice/useSliceTool.js.map +1 -1
  520. package/dist/tools/builtin/star/useStarTool.js +22 -16
  521. package/dist/tools/builtin/star/useStarTool.js.map +1 -1
  522. package/dist/tools/builtin/text/useTextTool.js +13 -2
  523. package/dist/tools/builtin/text/useTextTool.js.map +1 -1
  524. package/dist/tools/useKeybindings.js +14 -30
  525. package/dist/tools/useKeybindings.js.map +1 -1
  526. package/dist/{types-B_9g6hMM.d.ts → types-B4iJRHC3.d.ts} +5 -1
  527. package/dist/{types-A37hYkeR.d.ts → types-k-5Oqh-U.d.ts} +31 -7
  528. package/dist/util/color.js +3 -3
  529. package/dist/util/color.js.map +1 -1
  530. package/dist/util/paint.js.map +1 -1
  531. package/dist/version.js +1 -1
  532. package/package.json +20 -18
  533. package/dist/autoPoseDescriptor-vCdt55xm.d.ts +0 -27
  534. package/dist/builtins-C-VgUlWI.d.ts +0 -4514
  535. package/dist/core/isPlainObject.js.map +0 -1
  536. package/dist/debug/flag.js.map +0 -1
  537. package/dist/interactions/actions/defaults/freshNodeId.js +0 -10
  538. package/dist/interactions/actions/defaults/freshNodeId.js.map +0 -1
  539. package/dist/renderer/shaders/imageFill.js +0 -14
  540. package/dist/renderer/shaders/imageFill.js.map +0 -1
  541. package/dist/tools/prefs.js +0 -47
  542. package/dist/tools/prefs.js.map +0 -1
@@ -1,20 +1,20 @@
1
1
  import { clientToWorld as e } from "../../core/viewport/clientToWorld.js";
2
- import { PointerContextProvider as t, usePointerContext as n } from "../../features/pointer/PointerContext.js";
3
- import { useOptionalViewRegistry as r } from "../viewRegistry.js";
2
+ import { useOptionalViewRegistry as t } from "../viewRegistry.js";
3
+ import { PointerContextProvider as n, usePointerContext as r } from "../../features/pointer/PointerContext.js";
4
4
  import { useEffect as i } from "react";
5
5
  import { Fragment as a, jsx as o } from "react/jsx-runtime";
6
6
  //#region src/canvas/SceneCanvas/PointerProviderIfRoot.tsx
7
7
  function s({ children: e }) {
8
- return n() ? /* @__PURE__ */ o(a, { children: e }) : /* @__PURE__ */ o(t, { children: e });
8
+ return r() ? /* @__PURE__ */ o(a, { children: e }) : /* @__PURE__ */ o(n, { children: e });
9
9
  }
10
- function c({ canvasRef: t }) {
11
- let a = n(), o = r();
10
+ function c({ canvasRef: n }) {
11
+ let a = r(), o = t();
12
12
  return i(() => {
13
13
  if (!a) return;
14
- let n = t.current;
15
- if (!n) return;
16
- let r = (t, r, i) => {
17
- let s = o?.resolver.at(t, r, i), c = n.getBoundingClientRect(), [l, u] = e(r, i, s?.origin ?? c, s?.view ?? {
14
+ let t = n.current;
15
+ if (!t) return;
16
+ let r = (n, r, i) => {
17
+ let s = o?.resolver.at(n, r, i), c = t.getBoundingClientRect(), [l, u] = e(r, i, s?.origin ?? c, s?.view ?? {
18
18
  x: 0,
19
19
  y: 0,
20
20
  scale: {
@@ -34,14 +34,14 @@ function c({ canvasRef: t }) {
34
34
  }
35
35
  a.set(null);
36
36
  }, c = (e) => {
37
- e.target !== n && e.buttons !== 0 && r(e.pointerId, e.clientX, e.clientY);
37
+ e.target !== t && e.buttons !== 0 && r(e.pointerId, e.clientX, e.clientY);
38
38
  };
39
- return n.addEventListener("pointermove", i), n.addEventListener("pointerleave", s), document.addEventListener("pointermove", c), () => {
40
- n.removeEventListener("pointermove", i), n.removeEventListener("pointerleave", s), document.removeEventListener("pointermove", c);
39
+ return t.addEventListener("pointermove", i), t.addEventListener("pointerleave", s), document.addEventListener("pointermove", c), () => {
40
+ t.removeEventListener("pointermove", i), t.removeEventListener("pointerleave", s), document.removeEventListener("pointermove", c);
41
41
  };
42
42
  }, [
43
43
  a,
44
- t,
44
+ n,
45
45
  o
46
46
  ]), null;
47
47
  }
@@ -0,0 +1,67 @@
1
+ import { useDecayLoop as e } from "../../core/viewport/useDecayLoop.js";
2
+ import { usePointerContext as t } from "../../features/pointer/PointerContext.js";
3
+ import { useStandardActions as n } from "../../interactions/actions/useStandardActions.js";
4
+ import { usePoseDescriptorDepSource as r } from "../deps/poseDescriptor.js";
5
+ import { usePoseCompositionDepSource as i } from "../deps/poseComposition.js";
6
+ import { useSliceDepSource as a } from "../deps/slice.js";
7
+ import { useLayoutArrivals as o } from "../../layout/arrivals.js";
8
+ import { useViewDepSource as s } from "../deps/view.js";
9
+ import { useAreaSelectDepSource as c } from "../deps/areaSelect.js";
10
+ import { useNodeAtPointDepSource as l } from "../deps/nodeAtPoint.js";
11
+ import { useLassoSelectDepSource as u } from "../deps/lassoSelect.js";
12
+ import { useTextEditDepSource as d } from "../deps/textEdit.js";
13
+ import { useEditAnchorsDepSource as f } from "../deps/editAnchors.js";
14
+ import { useInsertDepSource as p } from "../deps/insert.js";
15
+ import { useSnapDepSource as m } from "../deps/snap.js";
16
+ import { useDebugDepSource as h } from "../deps/debug.js";
17
+ import { useDepChangeNotices as g } from "../deps/changes.js";
18
+ import { useDispatcherDepSource as _ } from "../deps/dispatcher.js";
19
+ import { useLayoutDepSource as ee } from "../deps/layout.js";
20
+ import { useIngestionDepSource as te } from "../deps/ingestion.js";
21
+ import { GeometryProjectionRegistrar as ne, ResizePolicyRegistrar as re } from "./poseRegistrars.js";
22
+ import { useActionsPropResolver as ie } from "./useActionsPropResolver.js";
23
+ import { useViewportActions as v } from "./useViewportActions.js";
24
+ import { useEffect as y } from "react";
25
+ import { useActionsRegistry as b, useDepSource as x } from "@weasel-js/routing/react";
26
+ import { Fragment as S, jsx as C, jsxs as w } from "react/jsx-runtime";
27
+ //#region src/canvas/SceneCanvas/StandardActionsRegistrar.tsx
28
+ function T({ selection: T, scene: E, adapter: D, actions: O, excludeActions: k, currentViewRef: A, onViewChange: j, resizeOptions: M, poseDescriptor: N, geometryProjection: P, dispatcher: F, getActionRef: I, pickEvery: L, layerIsPainted: ae, alphaOf: R, viewportPanEnabled: z, viewportZoom: B, viewportPinchZoom: V, viewportRecenter: H, viewAnimation: U, editAnchorsExternalState: W, anchorEditingAllowed: G, poseComposition: K, layouts: q, layoutDropTarget: J, reflowTransition: oe, insertNodeFactories: se, insertPaint: ce, snapPoint: le, canvasRef: Y, canvasApiRef: X, ingestionResolveSrc: ue, ingestionSvg: de, ingestionClipboard: fe, actionsRegistryRef: Z }) {
29
+ let Q = b();
30
+ y(() => (Z.current = Q, () => {
31
+ Z.current = null;
32
+ }), [Q, Z]), y(() => {
33
+ if (Q) return Q.setDispatcher(F);
34
+ }, [Q, F]), y(() => {
35
+ if (Q) return I.current = (e) => Q.list().find((t) => t.id === e), () => {
36
+ I.current = null;
37
+ };
38
+ }, [Q, I]);
39
+ let pe = e(), $ = s(A, j, H, () => {
40
+ let e = Y.current;
41
+ return e ? {
42
+ width: e.clientWidth,
43
+ height: e.clientHeight
44
+ } : null;
45
+ }, U, pe, ae);
46
+ n({
47
+ selection: T,
48
+ scene: E,
49
+ view: $,
50
+ history: E.history,
51
+ exclude: k
52
+ }), x("rootView", () => $);
53
+ let me = t();
54
+ return x("pointer", () => me ?? void 0), v({
55
+ pan: z,
56
+ zoom: B,
57
+ pinchZoom: V
58
+ }), c(E, T, N, K, R), l(L), ee(E, q, J, oe), o(E, {
59
+ layouts: q,
60
+ poseDescriptor: N,
61
+ poseComposition: K
62
+ }), p(E, D, se, ce), a(E, T, D, K, N), m(le), h(X), g(E, T.current), te(Y, () => A.current, ue, de, fe), u(E, T, N, K, R), d(E), f(E, T, D, W, { anchorEditingAllowed: G }), _(F), r(N), i(K), ie(O, k.join("|")), /* @__PURE__ */ w(S, { children: [M ? /* @__PURE__ */ C(re, { options: M }) : null, P ? /* @__PURE__ */ C(ne, { projection: P }) : null] });
63
+ }
64
+ //#endregion
65
+ export { T as StandardActionsRegistrar };
66
+
67
+ //# sourceMappingURL=StandardActionsRegistrar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StandardActionsRegistrar.js","names":["_Fragment","StandardActionsRegistrar","registry","useActionsRegistry","useEffect","actionsRegistryRef","dispatcher","a","id","getActionRef","decayLoop","useDecayLoop","view","useViewDepSource","currentViewRef","onViewChange","viewportRecenter","el","canvasRef","viewAnimation","layerIsPainted","useStandardActions","scene","excludeActions","useDepSource","pointer","usePointerContext","useViewportActions","viewportPanEnabled","viewportZoom","viewportPinchZoom","useAreaSelectDepSource","selection","poseDescriptor","poseComposition","alphaOf","useNodeAtPointDepSource","pickEvery","useLayoutDepSource","layouts","layoutDropTarget","reflowTransition","useLayoutArrivals","useInsertDepSource","adapter","insertNodeFactories","insertPaint","useSliceDepSource","useSnapDepSource","snapPoint","useDebugDepSource","canvasApiRef","useDepChangeNotices","useIngestionDepSource","ingestionResolveSrc","ingestionSvg","ingestionClipboard","useLassoSelectDepSource","useTextEditDepSource","useEditAnchorsDepSource","editAnchorsExternalState","useDispatcherDepSource","usePoseDescriptorDepSource","usePoseCompositionDepSource","useActionsPropResolver","actions","Fragment","resizeOptions","ResizePolicyRegistrar","geometryProjection","GeometryProjectionRegistrar"],"sources":["../../../src/canvas/SceneCanvas/StandardActionsRegistrar.tsx"],"sourcesContent":["import type { Action, ActionsProp, ActionsRegistry } from '@weasel-js/routing';\nimport type { Dispatcher } from '@weasel-js/routing';\nimport { useActionsRegistry, useDepSource } from '@weasel-js/routing/react';\nimport type { Scene } from 'core/scene/types';\nimport type { SelectionApi } from 'core/selection/useSelection';\nimport { useDecayLoop } from 'core/viewport/useDecayLoop';\nimport type { ViewAnimationApi } from 'core/viewport/useViewAnimation';\nimport type { View } from 'core/viewport/view';\nimport { usePointerContext } from 'features/pointer/PointerContext';\nimport type { PinchZoomOptions } from 'interactions/actions/defaults/pinchZoom';\nimport type { WheelPanOptions } from 'interactions/actions/defaults/viewportWheelPan';\nimport type { ViewportZoomOptions } from 'interactions/actions/defaults/viewportZoom';\nimport type { ClipboardIngestCtx, SvgIngestOptions } from 'interactions/actions/depSchema';\nimport type { GeometryProjection } from 'interactions/actions/geometryProjection';\nimport type { PoseDescriptor } from 'interactions/actions/resize/geometry';\nimport type { UseResizeOptions } from 'interactions/actions/resize/options';\nimport { useStandardActions } from 'interactions/actions/useStandardActions';\nimport type React from 'react';\nimport { useEffect } from 'react';\nimport { useLayoutArrivals } from '../../layout/arrivals';\nimport type { LayoutDropTargetMode, ReflowTransition } from '../../layout/types';\nimport type { CanvasExtensionApi } from '../canvasExtension';\nimport {\n useAreaSelectDepSource,\n useDebugDepSource,\n useDepChangeNotices,\n useDispatcherDepSource,\n useEditAnchorsDepSource,\n useIngestionDepSource,\n useInsertDepSource,\n useLassoSelectDepSource,\n useLayoutDepSource,\n useNodeAtPointDepSource,\n usePoseCompositionDepSource,\n usePoseDescriptorDepSource,\n useSliceDepSource,\n useSnapDepSource,\n useTextEditDepSource,\n useViewDepSource,\n type InsertNodeFactory,\n type InsertPaint\n} from '../deps';\nimport { GeometryProjectionRegistrar, ResizePolicyRegistrar } from './poseRegistrars';\nimport type { BridgeAdapter, SceneCanvasProps } from './props';\nimport { useActionsPropResolver } from './useActionsPropResolver';\nimport { useViewportActions } from './useViewportActions';\n\n/**\n * Registers the kit's default action set into this canvas's input scope.\n *\n * For `delete`, `duplicate`, `group`, and `ungroup` the descriptor's\n * invoker is a stub (those deps aren't in `DepSchema` yet — Phase 4 T8\n * TODO). This component registers legacy bridge overrides for them so the\n * consumer-facing `run` path is functional. The overrides land after the\n * descriptor registrations (last-writer-wins) and use the same id, so the\n * dispatcher and keybinding system see a real `run` body.\n */\nexport function StandardActionsRegistrar({\n selection,\n scene,\n adapter,\n actions,\n excludeActions,\n currentViewRef,\n onViewChange,\n resizeOptions,\n poseDescriptor,\n geometryProjection,\n dispatcher,\n getActionRef,\n pickEvery,\n layerIsPainted,\n alphaOf,\n viewportPanEnabled,\n viewportZoom,\n viewportPinchZoom,\n viewportRecenter,\n viewAnimation,\n editAnchorsExternalState,\n anchorEditingAllowed,\n poseComposition,\n layouts,\n layoutDropTarget,\n reflowTransition,\n insertNodeFactories,\n insertPaint,\n snapPoint,\n canvasRef,\n canvasApiRef,\n ingestionResolveSrc,\n ingestionSvg,\n ingestionClipboard,\n actionsRegistryRef,\n}: {\n selection: SelectionApi;\n scene: Scene<unknown, string, unknown>;\n adapter: BridgeAdapter;\n actionDefaults?: SceneCanvasProps<unknown, string, unknown>['actionDefaults'];\n actions?: ActionsProp;\n /** Kit-standard action ids this canvas's presets and tools leave out. */\n excludeActions: readonly string[];\n currentViewRef: React.RefObject<View>;\n onViewChange: (v: View) => void;\n /** Forwarded from `selectTool.resize` — wires the `resizePolicy` dep\n * consumed by the dispatcher-path `resizeAction`. The legacy\n * `useResizeTool` consumes the same options separately (both paths run\n * in parallel during the dispatcher migration). */\n resizeOptions?: UseResizeOptions<unknown>;\n /** Forwarded from `SceneCanvasProps.poseDescriptor` — wires the\n * `poseDescriptor` dep every built-in pose-touching action reads. */\n poseDescriptor: PoseDescriptor<unknown>;\n /** Forwarded from `SceneCanvasProps.geometryProjection` — wires the\n * `geometryProjection` dep consumed by pose-transform actions (move,\n * resize, nudge, flip). Conditionally mounted so absent → dep undefined. */\n geometryProjection?: GeometryProjection;\n /** Forwarded so `cancelGestureAction` and other actions that need to\n * abort in-flight handles can read the dispatcher's control surface. */\n dispatcher: Dispatcher;\n /** Ref populated with a live action-lookup function so the dispatcher's\n * `getAction` closure can resolve action ids after the registry is\n * mounted. Set on first render; cleared on unmount. */\n getActionRef: React.MutableRefObject<((id: string) => Action | undefined) | null>;\n /** World-space picker forwarded so the `nodeAtPoint` dep source can\n * reuse the same hit-test plumbing the tool dispatcher uses. */\n pickEvery: (worldX: number, worldY: number) => string[];\n /** This canvas's own view gate for scene layers, published on the `view`\n * dep and read by the selecting actions. Absent when it hides nothing. */\n layerIsPainted?: (layerId: string) => boolean;\n /** The composed paint alpha, when the consumer fades anything, so a region\n * select passes over what is painted at zero. */\n alphaOf?: (id: string) => number;\n /** Resolved `viewport.pan` flag — default true, false to disable. */\n viewportPanEnabled: boolean | WheelPanOptions;\n /** Resolved `viewport.zoom` setting — `true` (default Cmd+wheel zoom),\n * `false` (disabled), or a {@link ViewportZoomOptions} config. */\n viewportZoom: boolean | ViewportZoomOptions;\n /** Resolved `viewport.pinchZoom` setting — `true` (default two-finger pinch),\n * `false` (disabled), or a {@link PinchZoomOptions} scale clamp. */\n viewportPinchZoom: boolean | PinchZoomOptions;\n /** Optional recenter callback. When supplied, wires through to the\n * `view` dep so `viewport.zoom` reset (Cmd-0) calls it instead of\n * snapping to identity. A returned `View` is a target the kit may\n * animate to; `void` means the callback dispatched it itself. */\n viewportRecenter?: () => View | void;\n /** The canvas's camera runner, published on the `view` dep so\n * `viewport.zoom`'s discrete branches can animate. */\n viewAnimation: ViewAnimationApi;\n /** Lifted edit-mode state so the `pathEditingOverlay` chrome (rendered\n * outside this subtree) can read the same `editingId` the dep does. */\n editAnchorsExternalState: import('../deps/editAnchors').EditAnchorsStateRef;\n /** Present only when a mode registry is wired (`modes`); see\n * `EditAnchorsDepOptions.anchorEditingAllowed` for why absence — not a\n * predicate over an empty capability set — is the safe default. */\n anchorEditingAllowed?: () => boolean;\n /** Forwarded from `SceneCanvasProps` so the `layout` dep source can wire\n * the per-container layout strategy lookup consumed by `moveAction`. */\n layouts?: SceneCanvasProps<unknown, string, unknown>['layouts'];\n layoutDropTarget?: LayoutDropTargetMode;\n reflowTransition?: ReflowTransition<unknown> | null;\n /** Forwarded from `SceneCanvasProps` so the marquee and lasso dep sources\n * test where a node is drawn rather than where its pose is stored. */\n poseComposition?: SceneCanvasProps<unknown, string, unknown>['poseComposition'];\n /** Forwarded from `SceneCanvasProps` so `useInsertDepSource` can wire the\n * consumer's per-kind node factories into the `insert` dep. */\n insertNodeFactories?: Record<string, InsertNodeFactory>;\n insertPaint?: InsertPaint;\n /** Forwarded from `SceneCanvasProps.toolOptions.snapPoint` so the `snap`\n * dep source can expose grid snapping to `insertAction`. */\n snapPoint?: (p: { x: number; y: number }) => { x: number; y: number };\n /** The canvas element ref, so `useIngestionDepSource` can compute the\n * visible world rect from the client rect + current view. */\n canvasRef: React.RefObject<HTMLElement | null>;\n /** The canvas handle, whose debug sink backs the `debug` dep. */\n canvasApiRef: React.RefObject<CanvasExtensionApi | null>;\n /** Forwarded from `SceneCanvasProps.ingestion.resolveSrc` — consumer\n * file→src override for the kit image handler. */\n ingestionResolveSrc?: (file: File) => Promise<string>;\n /** Forwarded from `SceneCanvasProps.ingestion.svg` — kit SVG-handler\n * options (`unpack`). */\n ingestionSvg?: SvgIngestOptions;\n /** Clipboard-paste ctx (this canvas's adapter + the consumer's reviver)\n * for the kit weasel-JSON handler — built in SceneCanvasInner where the\n * typed adapter is in scope; absent when disabled. */\n ingestionClipboard?: ClipboardIngestCtx;\n /** Populated with the live registry so `CanvasExtensionApi.ingest`\n * (assembled in SceneCanvasInner, OUTSIDE the actions provider) can call\n * `registry.trigger('ingest', …)`. Cleared on unmount. */\n actionsRegistryRef: React.MutableRefObject<ActionsRegistry | null>;\n}) {\n const registry = useActionsRegistry();\n\n // Stash the registry for SceneCanvasInner's imperative `ingest` handle.\n useEffect(() => {\n actionsRegistryRef.current = registry;\n return () => { actionsRegistryRef.current = null; };\n }, [registry, actionsRegistryRef]);\n\n // Wire the dispatcher into the registry so registry.begin() can delegate\n // to dispatcher.beginUiOngoing() for UI-driven ongoing actions (color,\n // opacity).\n useEffect(() => {\n if (!registry) return;\n return registry.setDispatcher(dispatcher);\n }, [registry, dispatcher]);\n\n // Populate the action-lookup ref so the dispatcher's getAction closure\n // can resolve action ids once the registry is in scope.\n useEffect(() => {\n if (!registry) return;\n getActionRef.current = (id: string) => registry.list().find((a) => a.id === id);\n return () => { getActionRef.current = null; };\n }, [registry, getActionRef]);\n\n // Momentum for `viewport.dragPan`. The loop must be a hook (it owns a\n // `useVisibleRaf`), so it is built here and republished on the view dep.\n const decayLoop = useDecayLoop();\n\n // Build the ViewApi (stable identity, refreshed closures) and hand it to\n // useStandardActions (which publishes the `view` dep along with selection,\n // scene, history, pointer, activeTool). `hostSize` reads the live canvas\n // element so keyboard zoom (Cmd+=/-) can anchor at the visible center.\n const view = useViewDepSource(\n currentViewRef,\n onViewChange,\n viewportRecenter,\n () => {\n const el = canvasRef.current;\n return el ? { width: el.clientWidth, height: el.clientHeight } : null;\n },\n viewAnimation,\n decayLoop,\n layerIsPainted,\n );\n useStandardActions({ selection, scene, view, history: scene.history, exclude: excludeActions });\n // A view overlays `view` with its own camera; this name it leaves alone.\n useDepSource('rootView', () => view);\n const pointer = usePointerContext();\n useDepSource('pointer', () => pointer ?? undefined);\n\n // viewport.pan / viewport.zoom are SceneCanvas-coupled (need the `view` dep\n // published just above), so they're registered here rather than in\n // KIT_STANDARD_DESCRIPTORS. Both default ON; consumer opts out via\n // `viewport={{ pan: false }}` / `viewport={{ zoom: false }}`.\n useViewportActions({ pan: viewportPanEnabled, zoom: viewportZoom, pinchZoom: viewportPinchZoom });\n\n // Per-dep wiring modules under `src/canvas/deps/`. See each file for the\n // dep's contract and trade-offs.\n useAreaSelectDepSource(scene, selection, poseDescriptor, poseComposition, alphaOf);\n useNodeAtPointDepSource(pickEvery);\n useLayoutDepSource(scene, layouts, layoutDropTarget, reflowTransition);\n useLayoutArrivals(scene, { layouts, poseDescriptor, poseComposition });\n useInsertDepSource(scene, adapter, insertNodeFactories, insertPaint);\n useSliceDepSource(scene, selection, adapter, poseComposition, poseDescriptor);\n useSnapDepSource(snapPoint);\n useDebugDepSource(canvasApiRef);\n useDepChangeNotices(scene, selection.current);\n useIngestionDepSource(canvasRef, () => currentViewRef.current, ingestionResolveSrc, ingestionSvg, ingestionClipboard);\n useLassoSelectDepSource(scene, selection, poseDescriptor, poseComposition, alphaOf);\n useTextEditDepSource(scene);\n useEditAnchorsDepSource(scene, selection, adapter, editAnchorsExternalState, {\n anchorEditingAllowed,\n });\n useDispatcherDepSource(dispatcher);\n usePoseDescriptorDepSource(poseDescriptor);\n usePoseCompositionDepSource(poseComposition);\n\n // Keyed on the exclusion too: a re-registration of the standard set would\n // otherwise land over the overrides applied on top of it.\n useActionsPropResolver(actions, excludeActions.join('|'));\n\n // Gate the `resizePolicy` dep registration on the consumer having\n // passed `selectTool.resize`. When absent, consumers wire it via a child\n // component (see PointSnapDemo / GroupsDemo). Registering empty defaults\n // here would race with child-component registrations — React runs child\n // effects before parent effects, so the parent's empty default would\n // overwrite the child's real value. The conditional mount avoids that.\n //\n // Same pattern for `geometryProjection`: only mount when the consumer\n // passed the prop so absent → dep undefined → actions stay pose-only.\n return (\n <>\n {resizeOptions ? <ResizePolicyRegistrar options={resizeOptions} /> : null}\n {geometryProjection ? <GeometryProjectionRegistrar projection={geometryProjection} /> : null}\n </>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDA,SAAgBC,EAAyB,EACvC,cACA,UACA,YACA,YACA,mBACA,mBACA,iBACA,kBACA,mBACA,uBACA,eACA,iBACA,cACA,oBACA,YACA,uBACA,iBACA,sBACA,qBACA,kBACA,6BACA,yBACA,oBACA,YACA,qBACA,sBACA,yBACA,iBACA,eACA,cACA,iBACA,yBACA,kBACA,wBACA,yBAgGC;CACD,IAAMC,IAAWC,EAAmB;CAkBpC,AAfAC,SACE,EAAmB,UAAUF,SAChB;EAAE,EAAmB,UAAU;CAAM,IACjD,CAACA,GAAUG,CAAkB,CAAC,GAKjCD,QAAgB;EACd,IAAKF,GACL,OAAOA,EAAS,cAAcI,CAAU;CAC1C,GAAG,CAACJ,GAAUI,CAAU,CAAC,GAIzBF,QAAgB;EACd,IAAKF,GAEL,OADA,EAAa,WAAW,MAAeA,EAAS,KAAK,CAAC,CAAC,MAAM,MAAMK,EAAE,OAAOC,CAAE,SACjE;GAAE,EAAa,UAAU;EAAM;CAC9C,GAAG,CAACN,GAAUO,CAAY,CAAC;CAI3B,IAAMC,KAAYC,EAAa,GAMzBC,IAAOC,EACXC,GACAC,GACAC,SACM;EACJ,IAAMC,IAAKC,EAAU;EACrB,OAAOD,IAAK;GAAE,OAAOA,EAAG;GAAa,QAAQA,EAAG;EAAa,IAAI;CACnE,GACAE,GACAT,IACAU,EACF;CAGA,AAFAC,EAAmB;EAAE;EAAW;EAAO;EAAM,SAASC,EAAM;EAAS,SAASC;CAAe,CAAC,GAE9FC,EAAa,kBAAkBZ,CAAI;CACnC,IAAMa,KAAUC,EAAkB;CA2ClC,OA1CAF,EAAa,iBAAiBC,MAAW,KAAA,CAAS,GAMlDE,EAAmB;EAAE,KAAKC;EAAoB,MAAMC;EAAc,WAAWC;CAAkB,CAAC,GAIhGC,EAAuBT,GAAOU,GAAWC,GAAgBC,GAAiBC,CAAO,GACjFC,EAAwBC,CAAS,GACjCC,GAAmBhB,GAAOiB,GAASC,GAAkBC,EAAgB,GACrEC,EAAkBpB,GAAO;EAAE;EAAS;EAAgB;CAAgB,CAAC,GACrEqB,EAAmBrB,GAAOsB,GAASC,IAAqBC,EAAW,GACnEC,EAAkBzB,GAAOU,GAAWY,GAASV,GAAiBD,CAAc,GAC5Ee,EAAiBC,EAAS,GAC1BC,EAAkBC,CAAY,GAC9BC,EAAoB9B,GAAOU,EAAU,OAAO,GAC5CqB,GAAsBnC,SAAiBJ,EAAe,SAASwC,IAAqBC,IAAcC,EAAkB,GACpHC,EAAwBnC,GAAOU,GAAWC,GAAgBC,GAAiBC,CAAO,GAClFuB,EAAqBpC,CAAK,GAC1BqC,EAAwBrC,GAAOU,GAAWY,GAASgB,GAA0B,EAC3E,wBACF,CAAC,GACDC,EAAuBvD,CAAU,GACjCwD,EAA2B7B,CAAc,GACzC8B,EAA4B7B,CAAe,GAI3C8B,GAAuBC,GAAS1C,EAAe,KAAK,GAAG,CAAC,GAYtD,kBAAAvB,GAAA,EAAA,UAAA,CACGmE,IAAgB,kBAACC,IAAD,EAAuB,SAASD,EAAgB,CAAA,IAAI,MACpEE,IAAqB,kBAACC,IAAD,EAA6B,YAAYD,EAAqB,CAAA,IAAI,IACxF,EAAA,CAAA;AAEN"}
@@ -0,0 +1,16 @@
1
+ import { useKeybindings as e } from "../../tools/useKeybindings.js";
2
+ import { useContributionRoles as t } from "./useContributionRoles.js";
3
+ //#region src/canvas/SceneCanvas/ToolKeybindingsMounter.tsx
4
+ function n({ internalTools: n, toolsTakeover: r, enableKeybindings: i, isToolEligible: a, canvasApi: o, versionCheck: s }) {
5
+ return e(n, {
6
+ disable: !!r || !i,
7
+ isToolEligible: a
8
+ }), e(r ?? n, {
9
+ disable: !r || !i,
10
+ isToolEligible: a
11
+ }), t(r ?? n, o, s), null;
12
+ }
13
+ //#endregion
14
+ export { n as ToolKeybindingsMounter };
15
+
16
+ //# sourceMappingURL=ToolKeybindingsMounter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolKeybindingsMounter.js","names":["ToolKeybindingsMounter","useKeybindings","internalTools","toolsTakeover","enableKeybindings","useContributionRoles","canvasApi","versionCheck"],"sources":["../../../src/canvas/SceneCanvas/ToolKeybindingsMounter.tsx"],"sourcesContent":["import { useKeybindings } from 'tools/useKeybindings';\nimport type { ToolsApi } from '../../tools/overlayBinding';\nimport type { CanvasExtensionApi } from '../canvasExtension';\nimport { useContributionRoles, type VersionCheck } from './useContributionRoles';\n\n/**\n * Mounts the gesture dispatcher on this canvas's input scope.\n *\n * Accepts `selectionRef`, `boundsOf`, `pickEvery`, and `viewRef` so\n * it can wire `affordanceAt` + `classifyTarget` thunks into the dispatcher.\n * These thunks convert client coords → world coords via the canvas rect + view,\n * then classify the pointer position against affordances and scene bodies.\n */\n/**\n * Mounts `useKeybindings`, whose `tool.activate` / `tool.offhand` /\n * `tool.resetToDefault` registrations land in this canvas's scope.\n *\n * Two calls, mirroring the pair that used to live in `SceneCanvasInner`: the\n * hook snapshots the initial active tool for Escape-returns-to-default, so\n * the internal and consumer-supplied `ToolsApi` each need their own instance\n * and the hook count has to stay stable across the takeover branch.\n */\nexport function ToolKeybindingsMounter({\n internalTools,\n toolsTakeover,\n enableKeybindings,\n isToolEligible,\n canvasApi,\n versionCheck,\n}: {\n internalTools: ToolsApi;\n toolsTakeover?: ToolsApi;\n enableKeybindings: boolean;\n isToolEligible: (toolId: string) => boolean;\n canvasApi: CanvasExtensionApi | null;\n versionCheck?: VersionCheck;\n}) {\n useKeybindings(internalTools, {\n disable: !!toolsTakeover || !enableKeybindings,\n isToolEligible,\n });\n useKeybindings(toolsTakeover ?? internalTools, {\n disable: !toolsTakeover || !enableKeybindings,\n isToolEligible,\n });\n // Entry-owned roles: actions (polygon.adjustSides, …), deps and `attach`.\n // Same reason this lives here and not in the tool hooks: the hooks run above\n // the provider. Not gated on `enableKeybindings` — these back wheel and\n // pointer bindings too, not just keys.\n useContributionRoles(toolsTakeover ?? internalTools, canvasApi, versionCheck);\n return null;\n}\n"],"mappings":";;;AAsBA,SAAgBA,EAAuB,EACrC,kBACA,kBACA,sBACA,mBACA,cACA,mBAQC;CAcD,OAbAC,EAAeC,GAAe;EAC5B,SAAS,CAAC,CAACC,KAAiB,CAACC;EAC7B;CACF,CAAC,GACDH,EAAeE,KAAiBD,GAAe;EAC7C,SAAS,CAACC,KAAiB,CAACC;EAC5B;CACF,CAAC,GAKDC,EAAqBF,KAAiBD,GAAeI,GAAWC,CAAY,GACrE;AACT"}
@@ -0,0 +1,10 @@
1
+ import { IS_DEV as e } from "./isDev.js";
2
+ //#region src/canvas/SceneCanvas/coordTrace.ts
3
+ var t = 200, n = [], r = e;
4
+ function i(e) {
5
+ r && (n.push(e), n.length > t && n.shift());
6
+ }
7
+ //#endregion
8
+ export { r as COORD_DEV, t as COORD_TRACE_LIMIT, n as coordTrace, i as recordCoordTrace };
9
+
10
+ //# sourceMappingURL=coordTrace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordTrace.js","names":["COORD_TRACE_LIMIT","coordTrace","COORD_DEV","IS_DEV","recordCoordTrace","entry"],"sources":["../../../src/canvas/SceneCanvas/coordTrace.ts"],"sourcesContent":["import { IS_DEV } from './isDev';\n\n// ---------------------------------------------------------------------------\n// Dev-only coord trace\n// ---------------------------------------------------------------------------\n\n/** Records every `clientToWorld` call so dev tools (and agents) can\n * reconcile cursor coords with computed world coords. Mirrors the\n * dispatcher's trace log. Exposed on `window.__weaselCoordLog__`. */\nexport interface CoordTraceEntry {\n ts: number;\n clientX: number;\n clientY: number;\n rect: { left: number; top: number; width: number; height: number } | null;\n view: { x: number; y: number; scaleX: number; scaleY: number } | null;\n world: { x: number; y: number };\n /** True when canvas/view weren't available and we returned identity. */\n fallback: boolean;\n}\n\nexport const COORD_TRACE_LIMIT = 200;\n\nexport const coordTrace: CoordTraceEntry[] = [];\n\nexport const COORD_DEV: boolean = IS_DEV;\n\nexport function recordCoordTrace(entry: CoordTraceEntry): void {\n if (!COORD_DEV) return;\n coordTrace.push(entry);\n if (coordTrace.length > COORD_TRACE_LIMIT) coordTrace.shift();\n}\n"],"mappings":";;AAoBA,IAAaA,IAAoB,KAEpBC,IAAgC,CAAC,GAEjCC,IAAqBC;AAElC,SAAgBC,EAAiB,GAA8B;CAC7D,AAAKF,MACLD,EAAW,KAAKI,CAAK,GACjBJ,EAAW,SAASD,KAAmBC,EAAW,MAAM;AAC9D"}