@weasel-js/core 1.10.1 → 1.11.0

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 (1431) hide show
  1. package/CHANGELOG.md +587 -0
  2. package/README.md +16 -15
  3. package/dist/WeaselProvider.js +25 -9
  4. package/dist/WeaselProvider.js.map +1 -1
  5. package/dist/affordances/composeAffordanceLayer.js +217 -140
  6. package/dist/affordances/composeAffordanceLayer.js.map +1 -1
  7. package/dist/affordances/cornerResize.js +92 -50
  8. package/dist/affordances/cornerResize.js.map +1 -1
  9. package/dist/affordances/hitAffordanceRegions.js +147 -84
  10. package/dist/affordances/hitAffordanceRegions.js.map +1 -1
  11. package/dist/affordances/pathAnchors.js +140 -65
  12. package/dist/affordances/pathAnchors.js.map +1 -1
  13. package/dist/affordances/rotateCursor.js +10 -4
  14. package/dist/affordances/rotateCursor.js.map +1 -1
  15. package/dist/affordances/rotationHandle.js +83 -60
  16. package/dist/affordances/rotationHandle.js.map +1 -1
  17. package/dist/animation/behaviors/coast.js +20 -14
  18. package/dist/animation/behaviors/coast.js.map +1 -1
  19. package/dist/animation/behaviors/coastByWrite.js +98 -70
  20. package/dist/animation/behaviors/coastByWrite.js.map +1 -1
  21. package/dist/animation/behaviors/coastOnTargets.js +115 -67
  22. package/dist/animation/behaviors/coastOnTargets.js.map +1 -1
  23. package/dist/animation/behaviors/momentum.js +88 -53
  24. package/dist/animation/behaviors/momentum.js.map +1 -1
  25. package/dist/animation/clipTargets.js +14 -7
  26. package/dist/animation/clipTargets.js.map +1 -1
  27. package/dist/animation/departures.js +116 -0
  28. package/dist/animation/departures.js.map +1 -0
  29. package/dist/animation/index.js +18 -15
  30. package/dist/animation/poseHelpers.js +147 -107
  31. package/dist/animation/poseHelpers.js.map +1 -1
  32. package/dist/animation/poseTarget.js +158 -85
  33. package/dist/animation/poseTarget.js.map +1 -1
  34. package/dist/animation/poseTransition.js +64 -0
  35. package/dist/animation/poseTransition.js.map +1 -0
  36. package/dist/animation/reflow.js +208 -120
  37. package/dist/animation/reflow.js.map +1 -1
  38. package/dist/animation/rewind.js +76 -45
  39. package/dist/animation/rewind.js.map +1 -1
  40. package/dist/animation/rig/bindRig.js +135 -82
  41. package/dist/animation/rig/bindRig.js.map +1 -1
  42. package/dist/animation/rig/rigNode.js +120 -75
  43. package/dist/animation/rig/rigNode.js.map +1 -1
  44. package/dist/animation/rig/rigSeat.js +61 -41
  45. package/dist/animation/rig/rigSeat.js.map +1 -1
  46. package/dist/animation/rig/skinBinding.js +57 -45
  47. package/dist/animation/rig/skinBinding.js.map +1 -1
  48. package/dist/animation/rig/useRig.js +44 -30
  49. package/dist/animation/rig/useRig.js.map +1 -1
  50. package/dist/animation/wrappers/animateLifecycle.js +51 -35
  51. package/dist/animation/wrappers/animateLifecycle.js.map +1 -1
  52. package/dist/animation/wrappers/animateOnSetPose.js +55 -32
  53. package/dist/animation/wrappers/animateOnSetPose.js.map +1 -1
  54. package/dist/animation/wrappers/instantPose.js +13 -8
  55. package/dist/animation/wrappers/instantPose.js.map +1 -1
  56. package/dist/animation/writtenPoseTarget.js +44 -22
  57. package/dist/animation/writtenPoseTarget.js.map +1 -1
  58. package/dist/{autoPoseDescriptor-DHg5KqaJ.d.ts → autoPoseDescriptor-CZ1eXbzY.d.ts} +1 -1
  59. package/dist/barrel/canvas.js +41 -32
  60. package/dist/barrel/chrome.js +19 -16
  61. package/dist/barrel/icons.js +6 -0
  62. package/dist/barrel/input.js +19 -18
  63. package/dist/barrel/interactions.js +40 -39
  64. package/dist/barrel/paint.js +12 -11
  65. package/dist/barrel/paths.js +39 -13
  66. package/dist/barrel/renderer.js +24 -14
  67. package/dist/barrel/routing.js +69 -58
  68. package/dist/barrel/scene.js +48 -37
  69. package/dist/barrel/text.js +10 -9
  70. package/dist/barrel/viewport.js +47 -45
  71. package/dist/canvas/Canvas.js +189 -306
  72. package/dist/canvas/Canvas.js.map +1 -1
  73. package/dist/canvas/CanvasView.js +273 -199
  74. package/dist/canvas/CanvasView.js.map +1 -1
  75. package/dist/canvas/CursorCoordsHud.js +103 -64
  76. package/dist/canvas/CursorCoordsHud.js.map +1 -1
  77. package/dist/canvas/DrawCanvas.js +68 -41
  78. package/dist/canvas/DrawCanvas.js.map +1 -1
  79. package/dist/canvas/LeanSceneCanvas.js +23 -0
  80. package/dist/canvas/LeanSceneCanvas.js.map +1 -0
  81. package/dist/canvas/ModalityHud.js +58 -43
  82. package/dist/canvas/ModalityHud.js.map +1 -1
  83. package/dist/canvas/NodeShape.js +137 -60
  84. package/dist/canvas/NodeShape.js.map +1 -1
  85. package/dist/canvas/PickHud.js +77 -59
  86. package/dist/canvas/PickHud.js.map +1 -1
  87. package/dist/canvas/SceneCanvas/ActionsProviderIfRoot.js +9 -6
  88. package/dist/canvas/SceneCanvas/ActionsProviderIfRoot.js.map +1 -1
  89. package/dist/canvas/SceneCanvas/CanvasKitProviders.js +25 -0
  90. package/dist/canvas/SceneCanvas/CanvasKitProviders.js.map +1 -0
  91. package/dist/canvas/SceneCanvas/DepRegistryProviderIfRoot.js +10 -6
  92. package/dist/canvas/SceneCanvas/DepRegistryProviderIfRoot.js.map +1 -1
  93. package/dist/canvas/SceneCanvas/DevHuds.js +47 -32
  94. package/dist/canvas/SceneCanvas/DevHuds.js.map +1 -1
  95. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +72 -37
  96. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js.map +1 -1
  97. package/dist/canvas/SceneCanvas/SceneCanvasInput.js +110 -0
  98. package/dist/canvas/SceneCanvas/SceneCanvasInput.js.map +1 -0
  99. package/dist/canvas/SceneCanvas/brushOverlay.js +36 -0
  100. package/dist/canvas/SceneCanvas/brushOverlay.js.map +1 -0
  101. package/dist/canvas/SceneCanvas/canvasPassThrough.js +72 -0
  102. package/dist/canvas/SceneCanvas/canvasPassThrough.js.map +1 -0
  103. package/dist/canvas/SceneCanvas/contributionFrameHooks.js +54 -32
  104. package/dist/canvas/SceneCanvas/contributionFrameHooks.js.map +1 -1
  105. package/dist/canvas/SceneCanvas/coordTrace.js +36 -29
  106. package/dist/canvas/SceneCanvas/coordTrace.js.map +1 -1
  107. package/dist/canvas/SceneCanvas/defaultNodeProperties.js +318 -159
  108. package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -1
  109. package/dist/canvas/SceneCanvas/defaultNodeRouting.js +39 -13
  110. package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -1
  111. package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js +83 -47
  112. package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js.map +1 -1
  113. package/dist/canvas/SceneCanvas/features.js +83 -106
  114. package/dist/canvas/SceneCanvas/features.js.map +1 -1
  115. package/dist/canvas/SceneCanvas/insertPreviewCommands.js +80 -62
  116. package/dist/canvas/SceneCanvas/insertPreviewCommands.js.map +1 -1
  117. package/dist/canvas/SceneCanvas/mergeLayers.js +43 -0
  118. package/dist/canvas/SceneCanvas/mergeLayers.js.map +1 -0
  119. package/dist/canvas/SceneCanvas/namedPresets.js +56 -0
  120. package/dist/canvas/SceneCanvas/namedPresets.js.map +1 -0
  121. package/dist/canvas/SceneCanvas/poseGeometry.js +66 -31
  122. package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -1
  123. package/dist/canvas/SceneCanvas/poseRegistrars.js +18 -8
  124. package/dist/canvas/SceneCanvas/poseRegistrars.js.map +1 -1
  125. package/dist/canvas/SceneCanvas/presets/arrange.js +27 -0
  126. package/dist/canvas/SceneCanvas/presets/arrange.js.map +1 -0
  127. package/dist/canvas/SceneCanvas/presets/chrome.js +14 -0
  128. package/dist/canvas/SceneCanvas/presets/chrome.js.map +1 -0
  129. package/dist/canvas/SceneCanvas/presets/edit.js +59 -0
  130. package/dist/canvas/SceneCanvas/presets/edit.js.map +1 -0
  131. package/dist/canvas/SceneCanvas/presets/ingest.js +13 -0
  132. package/dist/canvas/SceneCanvas/presets/ingest.js.map +1 -0
  133. package/dist/canvas/SceneCanvas/presets/paths.js +67 -0
  134. package/dist/canvas/SceneCanvas/presets/paths.js.map +1 -0
  135. package/dist/canvas/SceneCanvas/presets/select.js +19 -0
  136. package/dist/canvas/SceneCanvas/presets/select.js.map +1 -0
  137. package/dist/canvas/SceneCanvas/presets/toolDriven.js +20 -0
  138. package/dist/canvas/SceneCanvas/presets/toolDriven.js.map +1 -0
  139. package/dist/canvas/SceneCanvas/presets/transform.js +41 -0
  140. package/dist/canvas/SceneCanvas/presets/transform.js.map +1 -0
  141. package/dist/canvas/SceneCanvas/presets/view.js +14 -0
  142. package/dist/canvas/SceneCanvas/presets/view.js.map +1 -0
  143. package/dist/canvas/SceneCanvas/props.js +19 -35
  144. package/dist/canvas/SceneCanvas/props.js.map +1 -1
  145. package/dist/canvas/SceneCanvas/scenePointQuery.js +43 -35
  146. package/dist/canvas/SceneCanvas/scenePointQuery.js.map +1 -1
  147. package/dist/canvas/SceneCanvas/shapeGeneratorProperties.js +22 -15
  148. package/dist/canvas/SceneCanvas/shapeGeneratorProperties.js.map +1 -1
  149. package/dist/canvas/SceneCanvas/toolRegistry.js +30 -15
  150. package/dist/canvas/SceneCanvas/toolRegistry.js.map +1 -1
  151. package/dist/canvas/SceneCanvas/useActionTunings.js +14 -11
  152. package/dist/canvas/SceneCanvas/useActionTunings.js.map +1 -1
  153. package/dist/canvas/SceneCanvas/useActionsPropResolver.js +68 -35
  154. package/dist/canvas/SceneCanvas/useActionsPropResolver.js.map +1 -1
  155. package/dist/canvas/SceneCanvas/useBakedScene.js +17 -0
  156. package/dist/canvas/SceneCanvas/useBakedScene.js.map +1 -0
  157. package/dist/canvas/SceneCanvas/useBuiltinRigTools.js +65 -0
  158. package/dist/canvas/SceneCanvas/useBuiltinRigTools.js.map +1 -0
  159. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js +47 -23
  160. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js.map +1 -1
  161. package/dist/canvas/SceneCanvas/useBuiltinTools.js +29 -14
  162. package/dist/canvas/SceneCanvas/useBuiltinTools.js.map +1 -1
  163. package/dist/canvas/SceneCanvas/useCanvasCamera.js +53 -38
  164. package/dist/canvas/SceneCanvas/useCanvasCamera.js.map +1 -1
  165. package/dist/canvas/SceneCanvas/useCanvasDispatcher.js +24 -14
  166. package/dist/canvas/SceneCanvas/useCanvasDispatcher.js.map +1 -1
  167. package/dist/canvas/SceneCanvas/useCanvasSelection.js +30 -12
  168. package/dist/canvas/SceneCanvas/useCanvasSelection.js.map +1 -1
  169. package/dist/canvas/SceneCanvas/useCanvasTools.js +112 -53
  170. package/dist/canvas/SceneCanvas/useCanvasTools.js.map +1 -1
  171. package/dist/canvas/SceneCanvas/useChromeAffordances.js +31 -0
  172. package/dist/canvas/SceneCanvas/useChromeAffordances.js.map +1 -0
  173. package/dist/canvas/SceneCanvas/useContributionRoles.js +107 -56
  174. package/dist/canvas/SceneCanvas/useContributionRoles.js.map +1 -1
  175. package/dist/canvas/SceneCanvas/useDepartureGhostLayer.js +64 -0
  176. package/dist/canvas/SceneCanvas/useDepartureGhostLayer.js.map +1 -0
  177. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js +104 -71
  178. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js.map +1 -1
  179. package/dist/canvas/SceneCanvas/useHeldModifiers.js +21 -14
  180. package/dist/canvas/SceneCanvas/useHeldModifiers.js.map +1 -1
  181. package/dist/canvas/SceneCanvas/useNodeAtPoint.js +21 -19
  182. package/dist/canvas/SceneCanvas/useNodeAtPoint.js.map +1 -1
  183. package/dist/canvas/SceneCanvas/useNodeKinds.js +28 -19
  184. package/dist/canvas/SceneCanvas/useNodeKinds.js.map +1 -1
  185. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +91 -59
  186. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js.map +1 -1
  187. package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js +62 -35
  188. package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js.map +1 -1
  189. package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js +110 -50
  190. package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js.map +1 -1
  191. package/dist/canvas/SceneCanvas/useSceneCanvasPathEdit.js +30 -0
  192. package/dist/canvas/SceneCanvas/useSceneCanvasPathEdit.js.map +1 -0
  193. package/dist/canvas/SceneCanvas/useSceneCanvasTools.js +40 -0
  194. package/dist/canvas/SceneCanvas/useSceneCanvasTools.js.map +1 -0
  195. package/dist/canvas/SceneCanvas/useSceneChrome.js +100 -44
  196. package/dist/canvas/SceneCanvas/useSceneChrome.js.map +1 -1
  197. package/dist/canvas/SceneCanvas/useSceneGestureDispatcher.js +163 -0
  198. package/dist/canvas/SceneCanvas/useSceneGestureDispatcher.js.map +1 -0
  199. package/dist/canvas/SceneCanvas/useScenePicking.js +69 -0
  200. package/dist/canvas/SceneCanvas/useScenePicking.js.map +1 -0
  201. package/dist/canvas/SceneCanvas/useSceneRedrawSources.js +28 -17
  202. package/dist/canvas/SceneCanvas/useSceneRedrawSources.js.map +1 -1
  203. package/dist/canvas/SceneCanvas/useSceneSelectTool.js +159 -80
  204. package/dist/canvas/SceneCanvas/useSceneSelectTool.js.map +1 -1
  205. package/dist/canvas/SceneCanvas/useSceneSlotLayers.js +38 -26
  206. package/dist/canvas/SceneCanvas/useSceneSlotLayers.js.map +1 -1
  207. package/dist/canvas/SceneCanvas/useSceneStandardActions.js +108 -0
  208. package/dist/canvas/SceneCanvas/useSceneStandardActions.js.map +1 -0
  209. package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js +40 -27
  210. package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js.map +1 -1
  211. package/dist/canvas/SceneCanvas/useSurfaceRouting.js +29 -0
  212. package/dist/canvas/SceneCanvas/useSurfaceRouting.js.map +1 -0
  213. package/dist/canvas/SceneCanvas/useSurfaceViewInputs.js +44 -0
  214. package/dist/canvas/SceneCanvas/useSurfaceViewInputs.js.map +1 -0
  215. package/dist/canvas/SceneCanvas/useToolKeybindings.js +28 -0
  216. package/dist/canvas/SceneCanvas/useToolKeybindings.js.map +1 -0
  217. package/dist/canvas/SceneCanvas/useViewportActions.js +52 -28
  218. package/dist/canvas/SceneCanvas/useViewportActions.js.map +1 -1
  219. package/dist/canvas/SceneCanvas/worldPointAt.js +10 -4
  220. package/dist/canvas/SceneCanvas/worldPointAt.js.map +1 -1
  221. package/dist/canvas/SceneCanvas.js +274 -312
  222. package/dist/canvas/SceneCanvas.js.map +1 -1
  223. package/dist/canvas/SceneViewCanvas.js +68 -42
  224. package/dist/canvas/SceneViewCanvas.js.map +1 -1
  225. package/dist/canvas/SurfaceCanvas.js +53 -31
  226. package/dist/canvas/SurfaceCanvas.js.map +1 -1
  227. package/dist/canvas/accentColor.js +8 -5
  228. package/dist/canvas/accentColor.js.map +1 -1
  229. package/dist/canvas/adapterDerivedPath.js +33 -18
  230. package/dist/canvas/adapterDerivedPath.js.map +1 -1
  231. package/dist/canvas/adapterPickSource.js +49 -23
  232. package/dist/canvas/adapterPickSource.js.map +1 -1
  233. package/dist/canvas/affordanceAt.js +106 -50
  234. package/dist/canvas/affordanceAt.js.map +1 -1
  235. package/dist/canvas/buildSceneLayer.js +111 -80
  236. package/dist/canvas/buildSceneLayer.js.map +1 -1
  237. package/dist/canvas/buildSceneTree.js +101 -59
  238. package/dist/canvas/buildSceneTree.js.map +1 -1
  239. package/dist/canvas/canvasRenderer.js +156 -71
  240. package/dist/canvas/canvasRenderer.js.map +1 -1
  241. package/dist/canvas/colorOverrides.js +18 -10
  242. package/dist/canvas/colorOverrides.js.map +1 -1
  243. package/dist/canvas/copiesAbove.js +24 -14
  244. package/dist/canvas/copiesAbove.js.map +1 -1
  245. package/dist/canvas/defaultDrawOne.js +55 -31
  246. package/dist/canvas/defaultDrawOne.js.map +1 -1
  247. package/dist/canvas/deps/areaSelect.js +30 -12
  248. package/dist/canvas/deps/areaSelect.js.map +1 -1
  249. package/dist/canvas/deps/booleans.js +104 -0
  250. package/dist/canvas/deps/booleans.js.map +1 -0
  251. package/dist/canvas/deps/changes.js +17 -9
  252. package/dist/canvas/deps/changes.js.map +1 -1
  253. package/dist/canvas/deps/debug.js +12 -5
  254. package/dist/canvas/deps/debug.js.map +1 -1
  255. package/dist/canvas/deps/dispatchSources.js +27 -0
  256. package/dist/canvas/deps/dispatchSources.js.map +1 -0
  257. package/dist/canvas/deps/dispatcher.js +18 -7
  258. package/dist/canvas/deps/dispatcher.js.map +1 -1
  259. package/dist/canvas/deps/editAnchors.js +253 -63
  260. package/dist/canvas/deps/editAnchors.js.map +1 -1
  261. package/dist/canvas/deps/geometryProjection.js +13 -7
  262. package/dist/canvas/deps/geometryProjection.js.map +1 -1
  263. package/dist/canvas/deps/hitTestArea.js +78 -53
  264. package/dist/canvas/deps/hitTestArea.js.map +1 -1
  265. package/dist/canvas/deps/ingestion.js +18 -13
  266. package/dist/canvas/deps/ingestion.js.map +1 -1
  267. package/dist/canvas/deps/insert.js +176 -116
  268. package/dist/canvas/deps/insert.js.map +1 -1
  269. package/dist/canvas/deps/kitSettings.js +16 -0
  270. package/dist/canvas/deps/kitSettings.js.map +1 -0
  271. package/dist/canvas/deps/lassoSelect.js +25 -13
  272. package/dist/canvas/deps/lassoSelect.js.map +1 -1
  273. package/dist/canvas/deps/layout.js +32 -20
  274. package/dist/canvas/deps/layout.js.map +1 -1
  275. package/dist/canvas/deps/nodeAtPoint.js +28 -14
  276. package/dist/canvas/deps/nodeAtPoint.js.map +1 -1
  277. package/dist/canvas/deps/pathLeaf.js +66 -0
  278. package/dist/canvas/deps/pathLeaf.js.map +1 -0
  279. package/dist/canvas/deps/pathLeafDeps.js +13 -0
  280. package/dist/canvas/deps/pathLeafDeps.js.map +1 -0
  281. package/dist/canvas/deps/poseDescriptor.js +10 -8
  282. package/dist/canvas/deps/poseDescriptor.js.map +1 -1
  283. package/dist/canvas/deps/previewPaths.js +44 -0
  284. package/dist/canvas/deps/previewPaths.js.map +1 -0
  285. package/dist/canvas/deps/resizePolicy.js +32 -25
  286. package/dist/canvas/deps/resizePolicy.js.map +1 -1
  287. package/dist/canvas/deps/slice.js +73 -87
  288. package/dist/canvas/deps/slice.js.map +1 -1
  289. package/dist/canvas/deps/snap.js +58 -7
  290. package/dist/canvas/deps/snap.js.map +1 -1
  291. package/dist/canvas/deps/surface.js +30 -0
  292. package/dist/canvas/deps/surface.js.map +1 -0
  293. package/dist/canvas/deps/textEdit.js +21 -13
  294. package/dist/canvas/deps/textEdit.js.map +1 -1
  295. package/dist/canvas/deps/view.js +46 -34
  296. package/dist/canvas/deps/view.js.map +1 -1
  297. package/dist/canvas/derivedPath.js +154 -70
  298. package/dist/canvas/derivedPath.js.map +1 -1
  299. package/dist/canvas/doubleClickTarget.js +20 -0
  300. package/dist/canvas/doubleClickTarget.js.map +1 -0
  301. package/dist/canvas/drawEnvelope.js +26 -17
  302. package/dist/canvas/drawEnvelope.js.map +1 -1
  303. package/dist/canvas/drawnBounds.js +116 -0
  304. package/dist/canvas/drawnBounds.js.map +1 -0
  305. package/dist/canvas/getNodeAtPoint.js +11 -8
  306. package/dist/canvas/getNodeAtPoint.js.map +1 -1
  307. package/dist/canvas/hostAnchor.js +35 -18
  308. package/dist/canvas/hostAnchor.js.map +1 -1
  309. package/dist/canvas/hud.module.js +25 -14
  310. package/dist/canvas/hud.module.js.map +1 -1
  311. package/dist/canvas/insertPreviewExtent.js +82 -61
  312. package/dist/canvas/insertPreviewExtent.js.map +1 -1
  313. package/dist/canvas/kitRequirements.js +154 -115
  314. package/dist/canvas/kitRequirements.js.map +1 -1
  315. package/dist/canvas/layerHover.js +28 -0
  316. package/dist/canvas/layerHover.js.map +1 -0
  317. package/dist/canvas/layerOrder.js +107 -57
  318. package/dist/canvas/layerOrder.js.map +1 -1
  319. package/dist/canvas/layerSlots.js +16 -9
  320. package/dist/canvas/layerSlots.js.map +1 -1
  321. package/dist/canvas/mountedCanvases.js +23 -13
  322. package/dist/canvas/mountedCanvases.js.map +1 -1
  323. package/dist/canvas/nodeShapes/derivedPainter.js +65 -25
  324. package/dist/canvas/nodeShapes/derivedPainter.js.map +1 -1
  325. package/dist/canvas/nodeShapes/imagePainter.js +69 -53
  326. package/dist/canvas/nodeShapes/imagePainter.js.map +1 -1
  327. package/dist/canvas/nodeShapes/measurePainter.js +58 -0
  328. package/dist/canvas/nodeShapes/measurePainter.js.map +1 -0
  329. package/dist/canvas/nodeShapes/memo.js +16 -5
  330. package/dist/canvas/nodeShapes/memo.js.map +1 -1
  331. package/dist/canvas/nodeShapes/nodePaint.js +125 -46
  332. package/dist/canvas/nodeShapes/nodePaint.js.map +1 -1
  333. package/dist/canvas/nodeShapes/pathPainter.js +41 -27
  334. package/dist/canvas/nodeShapes/pathPainter.js.map +1 -1
  335. package/dist/canvas/nodeShapes/poseBox.js +20 -13
  336. package/dist/canvas/nodeShapes/poseBox.js.map +1 -1
  337. package/dist/canvas/nodeShapes/rectFallbackPainter.js +26 -22
  338. package/dist/canvas/nodeShapes/rectFallbackPainter.js.map +1 -1
  339. package/dist/canvas/nodeShapes/shapePainter.js +67 -46
  340. package/dist/canvas/nodeShapes/shapePainter.js.map +1 -1
  341. package/dist/canvas/nodeShapes/strokedBounds.js +177 -0
  342. package/dist/canvas/nodeShapes/strokedBounds.js.map +1 -0
  343. package/dist/canvas/nodeShapes/textPainter.js +170 -37
  344. package/dist/canvas/nodeShapes/textPainter.js.map +1 -1
  345. package/dist/canvas/overChildren.js +29 -18
  346. package/dist/canvas/overChildren.js.map +1 -1
  347. package/dist/canvas/overlayRoleStrokes.js +20 -3
  348. package/dist/canvas/overlayRoleStrokes.js.map +1 -1
  349. package/dist/canvas/paintCull.js +24 -12
  350. package/dist/canvas/paintCull.js.map +1 -1
  351. package/dist/canvas/paintedCursorLayer.js +59 -35
  352. package/dist/canvas/paintedCursorLayer.js.map +1 -1
  353. package/dist/canvas/pathOverlay.js +63 -0
  354. package/dist/canvas/pathOverlay.js.map +1 -0
  355. package/dist/canvas/pickReach.js +34 -17
  356. package/dist/canvas/pickReach.js.map +1 -1
  357. package/dist/canvas/pickWalk.js +151 -102
  358. package/dist/canvas/pickWalk.js.map +1 -1
  359. package/dist/canvas/planeClips.js +39 -22
  360. package/dist/canvas/planeClips.js.map +1 -1
  361. package/dist/canvas/poseCascade.js +51 -27
  362. package/dist/canvas/poseCascade.js.map +1 -1
  363. package/dist/canvas/poseRotation.js +24 -14
  364. package/dist/canvas/poseRotation.js.map +1 -1
  365. package/dist/canvas/rasterReadback.js +23 -15
  366. package/dist/canvas/rasterReadback.js.map +1 -1
  367. package/dist/canvas/rasterToPng.js +21 -15
  368. package/dist/canvas/rasterToPng.js.map +1 -1
  369. package/dist/canvas/renderDebugSnapshot.js +36 -19
  370. package/dist/canvas/renderDebugSnapshot.js.map +1 -1
  371. package/dist/canvas/renderNeeds.js +33 -18
  372. package/dist/canvas/renderNeeds.js.map +1 -1
  373. package/dist/canvas/renderSceneToPixels.js +202 -87
  374. package/dist/canvas/renderSceneToPixels.js.map +1 -1
  375. package/dist/canvas/sceneAdapter.js +96 -75
  376. package/dist/canvas/sceneAdapter.js.map +1 -1
  377. package/dist/canvas/sceneClipboard.js +141 -92
  378. package/dist/canvas/sceneClipboard.js.map +1 -1
  379. package/dist/canvas/sceneLayerPaint.js +56 -27
  380. package/dist/canvas/sceneLayerPaint.js.map +1 -1
  381. package/dist/canvas/sceneSlotWiring.js +24 -14
  382. package/dist/canvas/sceneSlotWiring.js.map +1 -1
  383. package/dist/canvas/sceneViewRender.js +85 -49
  384. package/dist/canvas/sceneViewRender.js.map +1 -1
  385. package/dist/canvas/slopsDebugLayer.js +58 -49
  386. package/dist/canvas/slopsDebugLayer.js.map +1 -1
  387. package/dist/canvas/surfaceContribution.js +22 -10
  388. package/dist/canvas/surfaceContribution.js.map +1 -1
  389. package/dist/canvas/useCanvasElements.js +31 -0
  390. package/dist/canvas/useCanvasElements.js.map +1 -0
  391. package/dist/canvas/useCanvasHandle.js +69 -0
  392. package/dist/canvas/useCanvasHandle.js.map +1 -0
  393. package/dist/canvas/useCanvasPaint.js +91 -0
  394. package/dist/canvas/useCanvasPaint.js.map +1 -0
  395. package/dist/canvas/useCanvasRenderer.js +45 -23
  396. package/dist/canvas/useCanvasRenderer.js.map +1 -1
  397. package/dist/canvas/useCanvasSurface.js +41 -23
  398. package/dist/canvas/useCanvasSurface.js.map +1 -1
  399. package/dist/canvas/useCanvasView.js +80 -48
  400. package/dist/canvas/useCanvasView.js.map +1 -1
  401. package/dist/canvas/useClientToWorld.js +27 -0
  402. package/dist/canvas/useClientToWorld.js.map +1 -0
  403. package/dist/canvas/useExtraLayers.js +45 -0
  404. package/dist/canvas/useExtraLayers.js.map +1 -0
  405. package/dist/canvas/useFrameLoop.js +109 -49
  406. package/dist/canvas/useFrameLoop.js.map +1 -1
  407. package/dist/canvas/useHitObserver.js +22 -15
  408. package/dist/canvas/useHitObserver.js.map +1 -1
  409. package/dist/canvas/useHostAnchor.js +83 -53
  410. package/dist/canvas/useHostAnchor.js.map +1 -1
  411. package/dist/canvas/useLateContentRedraw.js +21 -14
  412. package/dist/canvas/useLateContentRedraw.js.map +1 -1
  413. package/dist/canvas/useLayerStack.js +72 -0
  414. package/dist/canvas/useLayerStack.js.map +1 -0
  415. package/dist/canvas/usePaintedCursor.js +28 -0
  416. package/dist/canvas/usePaintedCursor.js.map +1 -0
  417. package/dist/canvas/useRedrawOn.js +24 -14
  418. package/dist/canvas/useRedrawOn.js.map +1 -1
  419. package/dist/canvas/useSceneAdapter.js +21 -16
  420. package/dist/canvas/useSceneAdapter.js.map +1 -1
  421. package/dist/canvas/useSceneLayerList.js +15 -7
  422. package/dist/canvas/useSceneLayerList.js.map +1 -1
  423. package/dist/canvas/useSurfaceInput.js +46 -27
  424. package/dist/canvas/useSurfaceInput.js.map +1 -1
  425. package/dist/canvas/useSurfaceSize.js +43 -0
  426. package/dist/canvas/useSurfaceSize.js.map +1 -0
  427. package/dist/canvas/useToolCursor.js +30 -21
  428. package/dist/canvas/useToolCursor.js.map +1 -1
  429. package/dist/canvas/useViewHelpers.js +112 -61
  430. package/dist/canvas/useViewHelpers.js.map +1 -1
  431. package/dist/canvas/useViewLayerGate.js +29 -0
  432. package/dist/canvas/useViewLayerGate.js.map +1 -0
  433. package/dist/canvas/useViewNesting.js +104 -0
  434. package/dist/canvas/useViewNesting.js.map +1 -0
  435. package/dist/canvas/useViewRegistrySurface.js +44 -0
  436. package/dist/canvas/useViewRegistrySurface.js.map +1 -0
  437. package/dist/canvas/viewInputs.js +14 -11
  438. package/dist/canvas/viewInputs.js.map +1 -1
  439. package/dist/canvas/viewRegistry.js +140 -42
  440. package/dist/canvas/viewRegistry.js.map +1 -1
  441. package/dist/canvas/watchElementMove.js +71 -33
  442. package/dist/canvas/watchElementMove.js.map +1 -1
  443. package/dist/canvas/wrapNodeOutput.js +20 -13
  444. package/dist/canvas/wrapNodeOutput.js.map +1 -1
  445. package/dist/clipboard.d.ts +7 -3
  446. package/dist/clipboard.js +4 -3
  447. package/dist/{clone-C0eADtS0.d.ts → clone-DZDrfIlU.d.ts} +20 -53
  448. package/dist/clone.d.ts +5 -4
  449. package/dist/core/adapters/testing/rootsTree.js +17 -0
  450. package/dist/core/adapters/testing/rootsTree.js.map +1 -0
  451. package/dist/core/applyOps.js +23 -7
  452. package/dist/core/applyOps.js.map +1 -1
  453. package/dist/core/device/index.js +6 -5
  454. package/dist/core/device/targets.js +29 -8
  455. package/dist/core/device/targets.js.map +1 -1
  456. package/dist/core/device/useDeviceProfile.js +86 -52
  457. package/dist/core/device/useDeviceProfile.js.map +1 -1
  458. package/dist/core/device/useTargetBasePx.js +23 -0
  459. package/dist/core/device/useTargetBasePx.js.map +1 -0
  460. package/dist/core/device/watchDevicePixelRatio.js +27 -10
  461. package/dist/core/device/watchDevicePixelRatio.js.map +1 -1
  462. package/dist/core/geometry/autoPoseDescriptor.js +38 -24
  463. package/dist/core/geometry/autoPoseDescriptor.js.map +1 -1
  464. package/dist/core/geometry/inkExtents.js +60 -0
  465. package/dist/core/geometry/inkExtents.js.map +1 -0
  466. package/dist/core/geometry/pathPoseDescriptor.js +101 -76
  467. package/dist/core/geometry/pathPoseDescriptor.js.map +1 -1
  468. package/dist/core/geometry/poseDescriptor.js +199 -136
  469. package/dist/core/geometry/poseDescriptor.js.map +1 -1
  470. package/dist/core/geometry/regionHit.js +127 -79
  471. package/dist/core/geometry/regionHit.js.map +1 -1
  472. package/dist/core/geometry/targetFrame.js +84 -60
  473. package/dist/core/geometry/targetFrame.js.map +1 -1
  474. package/dist/core/geometry/unionBounds.js +103 -48
  475. package/dist/core/geometry/unionBounds.js.map +1 -1
  476. package/dist/core/isPlainObject.js +3 -2
  477. package/dist/core/layers/backgroundFill.js +23 -15
  478. package/dist/core/layers/backgroundFill.js.map +1 -1
  479. package/dist/core/layers/children.js +16 -13
  480. package/dist/core/layers/children.js.map +1 -1
  481. package/dist/core/layers/gateLayer.js +24 -9
  482. package/dist/core/layers/gateLayer.js.map +1 -1
  483. package/dist/core/layers/layerGroup.js +42 -29
  484. package/dist/core/layers/layerGroup.js.map +1 -1
  485. package/dist/core/layers/redrawSource.js +15 -0
  486. package/dist/core/layers/redrawSource.js.map +1 -0
  487. package/dist/core/layers/render.js +183 -93
  488. package/dist/core/layers/render.js.map +1 -1
  489. package/dist/core/layers/retain.js +38 -0
  490. package/dist/core/layers/retain.js.map +1 -0
  491. package/dist/core/ops/arrange.js +30 -19
  492. package/dist/core/ops/arrange.js.map +1 -1
  493. package/dist/core/ops/create.js +32 -23
  494. package/dist/core/ops/create.js.map +1 -1
  495. package/dist/core/ops/createHistory.js +23 -14
  496. package/dist/core/ops/createHistory.js.map +1 -1
  497. package/dist/core/ops/delete.js +80 -53
  498. package/dist/core/ops/delete.js.map +1 -1
  499. package/dist/core/ops/nodeFlags.js +44 -0
  500. package/dist/core/ops/nodeFlags.js.map +1 -0
  501. package/dist/core/ops/registry.js +26 -11
  502. package/dist/core/ops/registry.js.map +1 -1
  503. package/dist/core/ops/reorder/algorithms.js +62 -38
  504. package/dist/core/ops/reorder/algorithms.js.map +1 -1
  505. package/dist/core/ops/reorder/index.js +124 -84
  506. package/dist/core/ops/reorder/index.js.map +1 -1
  507. package/dist/core/ops/reorder/setChildOrder.js +32 -23
  508. package/dist/core/ops/reorder/setChildOrder.js.map +1 -1
  509. package/dist/core/ops/reparent.js +63 -37
  510. package/dist/core/ops/reparent.js.map +1 -1
  511. package/dist/core/ops/select.js +23 -20
  512. package/dist/core/ops/select.js.map +1 -1
  513. package/dist/core/ops/setData.js +23 -21
  514. package/dist/core/ops/setData.js.map +1 -1
  515. package/dist/core/ops/setLayer.js +26 -21
  516. package/dist/core/ops/setLayer.js.map +1 -1
  517. package/dist/core/ops/setLayout.js +27 -18
  518. package/dist/core/ops/setLayout.js.map +1 -1
  519. package/dist/core/ops/setPath.js +60 -41
  520. package/dist/core/ops/setPath.js.map +1 -1
  521. package/dist/core/ops/setText.js +26 -21
  522. package/dist/core/ops/setText.js.map +1 -1
  523. package/dist/core/ops/slot.js +36 -22
  524. package/dist/core/ops/slot.js.map +1 -1
  525. package/dist/core/ops/transform.js +35 -28
  526. package/dist/core/ops/transform.js.map +1 -1
  527. package/dist/core/pages/fitViewToPage.js +13 -11
  528. package/dist/core/pages/fitViewToPage.js.map +1 -1
  529. package/dist/core/pages/pages.js +73 -42
  530. package/dist/core/pages/pages.js.map +1 -1
  531. package/dist/core/pages/pagesLayer.js +19 -13
  532. package/dist/core/pages/pagesLayer.js.map +1 -1
  533. package/dist/core/paint/meshKind.js +16 -11
  534. package/dist/core/paint/meshKind.js.map +1 -1
  535. package/dist/core/paint/meshKindLazy.js +1 -1
  536. package/dist/core/paint/meshKindLazy.js.map +1 -1
  537. package/dist/core/paint/paintKindEntry.js +13 -4
  538. package/dist/core/paint/paintKindEntry.js.map +1 -1
  539. package/dist/core/paint/paintKinds.js +149 -88
  540. package/dist/core/paint/paintKinds.js.map +1 -1
  541. package/dist/core/paint/registerMesh.js +6 -4
  542. package/dist/core/paint/registerMesh.js.map +1 -1
  543. package/dist/core/scene/NodeProperties.js +15 -10
  544. package/dist/core/scene/NodeProperties.js.map +1 -1
  545. package/dist/core/scene/NodeRouting.js +16 -12
  546. package/dist/core/scene/NodeRouting.js.map +1 -1
  547. package/dist/core/scene/annotation.js +28 -0
  548. package/dist/core/scene/annotation.js.map +1 -0
  549. package/dist/core/scene/appliedLog.js +31 -23
  550. package/dist/core/scene/appliedLog.js.map +1 -1
  551. package/dist/core/scene/arrivalWindow.js +120 -75
  552. package/dist/core/scene/arrivalWindow.js.map +1 -1
  553. package/dist/core/scene/arrivals.js +17 -6
  554. package/dist/core/scene/arrivals.js.map +1 -1
  555. package/dist/core/scene/boundOps.js +42 -23
  556. package/dist/core/scene/boundOps.js.map +1 -1
  557. package/dist/core/scene/composeFrame.js +51 -21
  558. package/dist/core/scene/composeFrame.js.map +1 -1
  559. package/dist/core/scene/composePose.js +114 -62
  560. package/dist/core/scene/composePose.js.map +1 -1
  561. package/dist/core/scene/depFrame.js +94 -0
  562. package/dist/core/scene/depFrame.js.map +1 -0
  563. package/dist/core/scene/depMemo.js +44 -19
  564. package/dist/core/scene/depMemo.js.map +1 -1
  565. package/dist/core/scene/dependents.js +73 -45
  566. package/dist/core/scene/dependents.js.map +1 -1
  567. package/dist/core/scene/derivedParts.js +58 -0
  568. package/dist/core/scene/derivedParts.js.map +1 -0
  569. package/dist/core/scene/derivedPath.js +52 -22
  570. package/dist/core/scene/derivedPath.js.map +1 -1
  571. package/dist/core/scene/editMode.js +11 -11
  572. package/dist/core/scene/editMode.js.map +1 -1
  573. package/dist/core/scene/effectivePose.js +167 -51
  574. package/dist/core/scene/effectivePose.js.map +1 -1
  575. package/dist/core/scene/fieldEdits.js +95 -75
  576. package/dist/core/scene/fieldEdits.js.map +1 -1
  577. package/dist/core/scene/historyFacade.js +126 -87
  578. package/dist/core/scene/historyFacade.js.map +1 -1
  579. package/dist/core/scene/historyForm.js +7 -3
  580. package/dist/core/scene/historyForm.js.map +1 -1
  581. package/dist/core/scene/kitOps.js +203 -131
  582. package/dist/core/scene/kitOps.js.map +1 -1
  583. package/dist/core/scene/kitRegistry.js +49 -22
  584. package/dist/core/scene/kitRegistry.js.map +1 -1
  585. package/dist/core/scene/layerStack.js +123 -92
  586. package/dist/core/scene/layerStack.js.map +1 -1
  587. package/dist/core/scene/layoutPass.js +118 -72
  588. package/dist/core/scene/layoutPass.js.map +1 -1
  589. package/dist/core/scene/lockGuard.js +32 -24
  590. package/dist/core/scene/lockGuard.js.map +1 -1
  591. package/dist/core/scene/minSize.js +17 -0
  592. package/dist/core/scene/minSize.js.map +1 -0
  593. package/dist/core/scene/nestedHit.js +45 -31
  594. package/dist/core/scene/nestedHit.js.map +1 -1
  595. package/dist/core/scene/nodeFlags.js +43 -0
  596. package/dist/core/scene/nodeFlags.js.map +1 -0
  597. package/dist/core/scene/nodeFnFields.js +58 -41
  598. package/dist/core/scene/nodeFnFields.js.map +1 -1
  599. package/dist/core/scene/nodeGates.js +58 -0
  600. package/dist/core/scene/nodeGates.js.map +1 -0
  601. package/dist/core/scene/nodeMemo.js +92 -40
  602. package/dist/core/scene/nodeMemo.js.map +1 -1
  603. package/dist/core/scene/nodeStore.js +179 -99
  604. package/dist/core/scene/nodeStore.js.map +1 -1
  605. package/dist/core/scene/notifier.js +30 -19
  606. package/dist/core/scene/notifier.js.map +1 -1
  607. package/dist/core/scene/opTable.js +42 -36
  608. package/dist/core/scene/opTable.js.map +1 -1
  609. package/dist/core/scene/outerOps.js +49 -43
  610. package/dist/core/scene/outerOps.js.map +1 -1
  611. package/dist/core/scene/pathEffects/blend.js +80 -0
  612. package/dist/core/scene/pathEffects/blend.js.map +1 -0
  613. package/dist/core/scene/pathEffects/derive.js +112 -0
  614. package/dist/core/scene/pathEffects/derive.js.map +1 -0
  615. package/dist/core/scene/pathEffects/effects.js +40 -0
  616. package/dist/core/scene/pathEffects/effects.js.map +1 -0
  617. package/dist/core/scene/poseFeed.js +95 -60
  618. package/dist/core/scene/poseFeed.js.map +1 -1
  619. package/dist/core/scene/poseHold.js +33 -24
  620. package/dist/core/scene/poseHold.js.map +1 -1
  621. package/dist/core/scene/poseOverrides.js +86 -49
  622. package/dist/core/scene/poseOverrides.js.map +1 -1
  623. package/dist/core/scene/poseRemovals.js +58 -0
  624. package/dist/core/scene/poseRemovals.js.map +1 -0
  625. package/dist/core/scene/poseSnapshot.js +62 -41
  626. package/dist/core/scene/poseSnapshot.js.map +1 -1
  627. package/dist/core/scene/poseWrites.js +151 -0
  628. package/dist/core/scene/poseWrites.js.map +1 -0
  629. package/dist/core/scene/reconcileSpecs.js +63 -34
  630. package/dist/core/scene/reconcileSpecs.js.map +1 -1
  631. package/dist/core/scene/recorder.js +90 -57
  632. package/dist/core/scene/recorder.js.map +1 -1
  633. package/dist/core/scene/renderOrder.js +105 -59
  634. package/dist/core/scene/renderOrder.js.map +1 -1
  635. package/dist/core/scene/scene.js +133 -80
  636. package/dist/core/scene/scene.js.map +1 -1
  637. package/dist/core/scene/sceneEdits.js +62 -49
  638. package/dist/core/scene/sceneEdits.js.map +1 -1
  639. package/dist/core/scene/sceneMutators.js +44 -36
  640. package/dist/core/scene/sceneMutators.js.map +1 -1
  641. package/dist/core/scene/scenePoseAdapter.js +13 -9
  642. package/dist/core/scene/scenePoseAdapter.js.map +1 -1
  643. package/dist/core/scene/sceneRecording.js +89 -73
  644. package/dist/core/scene/sceneRecording.js.map +1 -1
  645. package/dist/core/scene/sceneSelection.js +23 -16
  646. package/dist/core/scene/sceneSelection.js.map +1 -1
  647. package/dist/core/scene/sceneState.js +54 -36
  648. package/dist/core/scene/sceneState.js.map +1 -1
  649. package/dist/core/scene/serialization.js +87 -50
  650. package/dist/core/scene/serialization.js.map +1 -1
  651. package/dist/core/scene/staleReplay.js +35 -26
  652. package/dist/core/scene/staleReplay.js.map +1 -1
  653. package/dist/core/scene/statedFields.js +10 -5
  654. package/dist/core/scene/statedFields.js.map +1 -1
  655. package/dist/core/scene/treeEdits.js +129 -98
  656. package/dist/core/scene/treeEdits.js.map +1 -1
  657. package/dist/core/scene/treeOrder.js +13 -8
  658. package/dist/core/scene/treeOrder.js.map +1 -1
  659. package/dist/core/scene/treeReads.js +25 -16
  660. package/dist/core/scene/treeReads.js.map +1 -1
  661. package/dist/core/scene/types.js +4 -3
  662. package/dist/core/scene/types.js.map +1 -1
  663. package/dist/core/scene/unionOfChildren.js +20 -10
  664. package/dist/core/scene/unionOfChildren.js.map +1 -1
  665. package/dist/core/scene/unitScopes.js +15 -8
  666. package/dist/core/scene/unitScopes.js.map +1 -1
  667. package/dist/core/scene/useScene.js +32 -24
  668. package/dist/core/scene/useScene.js.map +1 -1
  669. package/dist/core/selection/chromeState.js +41 -17
  670. package/dist/core/selection/chromeState.js.map +1 -1
  671. package/dist/core/selection/readOnlySelection.js +39 -24
  672. package/dist/core/selection/readOnlySelection.js.map +1 -1
  673. package/dist/core/selection/selectionTarget.js +14 -3
  674. package/dist/core/selection/selectionTarget.js.map +1 -1
  675. package/dist/core/selection/usePublishSceneSelection.js +25 -18
  676. package/dist/core/selection/usePublishSceneSelection.js.map +1 -1
  677. package/dist/core/selection/useSelection.js +90 -57
  678. package/dist/core/selection/useSelection.js.map +1 -1
  679. package/dist/core/shapeKinds.js +43 -28
  680. package/dist/core/shapeKinds.js.map +1 -1
  681. package/dist/core/stableStringify.js +5 -4
  682. package/dist/core/stableStringify.js.map +1 -1
  683. package/dist/core/stylus/stylus.js +49 -25
  684. package/dist/core/stylus/stylus.js.map +1 -1
  685. package/dist/core/stylus/usePointerStylus.js +61 -34
  686. package/dist/core/stylus/usePointerStylus.js.map +1 -1
  687. package/dist/core/usePaintKinds.js +21 -11
  688. package/dist/core/usePaintKinds.js.map +1 -1
  689. package/dist/core/viewport/clampView.js +31 -15
  690. package/dist/core/viewport/clampView.js.map +1 -1
  691. package/dist/core/viewport/clientToWorld.js +15 -4
  692. package/dist/core/viewport/clientToWorld.js.map +1 -1
  693. package/dist/core/viewport/createVelocityTracker.js +23 -19
  694. package/dist/core/viewport/createVelocityTracker.js.map +1 -1
  695. package/dist/core/viewport/fitToBounds.js +28 -11
  696. package/dist/core/viewport/fitToBounds.js.map +1 -1
  697. package/dist/core/viewport/fitViewToBounds.js +45 -19
  698. package/dist/core/viewport/fitViewToBounds.js.map +1 -1
  699. package/dist/core/viewport/interpolateView.js +40 -20
  700. package/dist/core/viewport/interpolateView.js.map +1 -1
  701. package/dist/core/viewport/parallax.js +89 -56
  702. package/dist/core/viewport/parallax.js.map +1 -1
  703. package/dist/core/viewport/sceneNodeClientRect.js +21 -12
  704. package/dist/core/viewport/sceneNodeClientRect.js.map +1 -1
  705. package/dist/core/viewport/screenSlop.js +40 -17
  706. package/dist/core/viewport/screenSlop.js.map +1 -1
  707. package/dist/core/viewport/useAutoCenter.js +36 -22
  708. package/dist/core/viewport/useAutoCenter.js.map +1 -1
  709. package/dist/core/viewport/useCanvasSize.js +43 -22
  710. package/dist/core/viewport/useCanvasSize.js.map +1 -1
  711. package/dist/core/viewport/useDecayLoop.js +120 -48
  712. package/dist/core/viewport/useDecayLoop.js.map +1 -1
  713. package/dist/core/viewport/useNodeOverlayFrame.js +93 -58
  714. package/dist/core/viewport/useNodeOverlayFrame.js.map +1 -1
  715. package/dist/core/viewport/useVelocityTracker.js +9 -6
  716. package/dist/core/viewport/useVelocityTracker.js.map +1 -1
  717. package/dist/core/viewport/useViewAnimation.js +143 -84
  718. package/dist/core/viewport/useViewAnimation.js.map +1 -1
  719. package/dist/core/viewport/view.js +48 -24
  720. package/dist/core/viewport/view.js.map +1 -1
  721. package/dist/core/viewport/viewTransform.js +8 -6
  722. package/dist/core/viewport/viewTransform.js.map +1 -1
  723. package/dist/core/viewport/viewportWorldRect.js +15 -7
  724. package/dist/core/viewport/viewportWorldRect.js.map +1 -1
  725. package/dist/core/viewport/wheelHandler.js +31 -20
  726. package/dist/core/viewport/wheelHandler.js.map +1 -1
  727. package/dist/core/viewport/zoomAt.js +47 -19
  728. package/dist/core/viewport/zoomAt.js.map +1 -1
  729. package/dist/core/viewport/zoomBounds.js +33 -17
  730. package/dist/core/viewport/zoomBounds.js.map +1 -1
  731. package/dist/cornerHandles-Camw_yeu.d.ts +169 -0
  732. package/dist/debug/createDebugOverlayLayer.js +303 -215
  733. package/dist/debug/createDebugOverlayLayer.js.map +1 -1
  734. package/dist/debug/createDebugSink.js +68 -47
  735. package/dist/debug/createDebugSink.js.map +1 -1
  736. package/dist/debug/defaultTheme.js +16 -4
  737. package/dist/debug/defaultTheme.js.map +1 -1
  738. package/dist/debug/flag.js +3 -2
  739. package/dist/debug/frameStats.js +11 -9
  740. package/dist/debug/frameStats.js.map +1 -1
  741. package/dist/debug/parseDebugFlags.js +25 -17
  742. package/dist/debug/parseDebugFlags.js.map +1 -1
  743. package/dist/debug/useDebugSink.js +52 -33
  744. package/dist/debug/useDebugSink.js.map +1 -1
  745. package/dist/depSchema-Cgfu_G9s.d.ts +3581 -0
  746. package/dist/features/chrome-caps/buildChromeCtx.js +12 -10
  747. package/dist/features/chrome-caps/buildChromeCtx.js.map +1 -1
  748. package/dist/features/chrome-caps/conditions.js +103 -25
  749. package/dist/features/chrome-caps/conditions.js.map +1 -1
  750. package/dist/features/chrome-caps/defaults.js +18 -10
  751. package/dist/features/chrome-caps/defaults.js.map +1 -1
  752. package/dist/features/chrome-caps/index.js +8 -7
  753. package/dist/features/chrome-caps/resolve.js +28 -16
  754. package/dist/features/chrome-caps/resolve.js.map +1 -1
  755. package/dist/features/chrome-caps/useChromeCaps.js +52 -44
  756. package/dist/features/chrome-caps/useChromeCaps.js.map +1 -1
  757. package/dist/features/chrome-caps/useHoverTracking.js +52 -26
  758. package/dist/features/chrome-caps/useHoverTracking.js.map +1 -1
  759. package/dist/features/ingestion/contentHandlers.js +80 -34
  760. package/dist/features/ingestion/contentHandlers.js.map +1 -1
  761. package/dist/features/ingestion/imageHandler.js +49 -29
  762. package/dist/features/ingestion/imageHandler.js.map +1 -1
  763. package/dist/features/ingestion/openFilePicker.js +27 -9
  764. package/dist/features/ingestion/openFilePicker.js.map +1 -1
  765. package/dist/features/ingestion/placement.js +20 -11
  766. package/dist/features/ingestion/placement.js.map +1 -1
  767. package/dist/features/ingestion/registerKitHandlers.js +35 -18
  768. package/dist/features/ingestion/registerKitHandlers.js.map +1 -1
  769. package/dist/features/ingestion/svgHandler.js +60 -34
  770. package/dist/features/ingestion/svgHandler.js.map +1 -1
  771. package/dist/features/ingestion/textHandler.js +37 -16
  772. package/dist/features/ingestion/textHandler.js.map +1 -1
  773. package/dist/features/ingestion/useCanvasIngestion.js +57 -39
  774. package/dist/features/ingestion/useCanvasIngestion.js.map +1 -1
  775. package/dist/features/ingestion/weaselJsonHandler.js +38 -28
  776. package/dist/features/ingestion/weaselJsonHandler.js.map +1 -1
  777. package/dist/features/longPress/longPressFeedback.js +110 -81
  778. package/dist/features/longPress/longPressFeedback.js.map +1 -1
  779. package/dist/features/measure/actionIds.js +22 -0
  780. package/dist/features/measure/actionIds.js.map +1 -0
  781. package/dist/features/measure/measureCommands.js +178 -0
  782. package/dist/features/measure/measureCommands.js.map +1 -0
  783. package/dist/features/measure/measureContribution.js +57 -0
  784. package/dist/features/measure/measureContribution.js.map +1 -0
  785. package/dist/features/measure/measureEdits.js +82 -0
  786. package/dist/features/measure/measureEdits.js.map +1 -0
  787. package/dist/features/measure/measureGestures.js +185 -0
  788. package/dist/features/measure/measureGestures.js.map +1 -0
  789. package/dist/features/measure/measureHit.js +80 -0
  790. package/dist/features/measure/measureHit.js.map +1 -0
  791. package/dist/features/measure/measureLayer.js +86 -0
  792. package/dist/features/measure/measureLayer.js.map +1 -0
  793. package/dist/features/measure/measurement.js +79 -0
  794. package/dist/features/measure/measurement.js.map +1 -0
  795. package/dist/features/measure/measurements.js +41 -0
  796. package/dist/features/measure/measurements.js.map +1 -0
  797. package/dist/features/modes/modeLayers.js +81 -55
  798. package/dist/features/modes/modeLayers.js.map +1 -1
  799. package/dist/features/modes/modeTriggers.js +66 -0
  800. package/dist/features/modes/modeTriggers.js.map +1 -0
  801. package/dist/features/pathEffects/index.js +35 -0
  802. package/dist/features/pathEffects/index.js.map +1 -0
  803. package/dist/features/pathEffects/readSource.js +46 -0
  804. package/dist/features/pathEffects/readSource.js.map +1 -0
  805. package/dist/features/paths/anchorData.js +65 -0
  806. package/dist/features/paths/anchorData.js.map +1 -0
  807. package/dist/features/paths/anchorMarkers.js +137 -0
  808. package/dist/features/paths/anchorMarkers.js.map +1 -0
  809. package/dist/features/paths/editablePath.js +149 -46
  810. package/dist/features/paths/editablePath.js.map +1 -1
  811. package/dist/features/paths/index.js +12 -9
  812. package/dist/features/paths/originProjection.js +16 -9
  813. package/dist/features/paths/originProjection.js.map +1 -1
  814. package/dist/features/paths/pathEditExtension.js +26 -0
  815. package/dist/features/paths/pathEditExtension.js.map +1 -0
  816. package/dist/features/paths/pathEditState.js +107 -26
  817. package/dist/features/paths/pathEditState.js.map +1 -1
  818. package/dist/features/paths/pathEditingOverlayLayer.js +58 -110
  819. package/dist/features/paths/pathEditingOverlayLayer.js.map +1 -1
  820. package/dist/features/paths/pathLayer.js +79 -29
  821. package/dist/features/paths/pathLayer.js.map +1 -1
  822. package/dist/features/paths/pathRepresentation.js +27 -0
  823. package/dist/features/paths/pathRepresentation.js.map +1 -0
  824. package/dist/features/paths/pathSnap/glyphs.js +39 -0
  825. package/dist/features/paths/pathSnap/glyphs.js.map +1 -0
  826. package/dist/features/paths/pathSnap/pathSnapSource.js +82 -0
  827. package/dist/features/paths/pathSnap/pathSnapSource.js.map +1 -0
  828. package/dist/features/paths/pathSnap/sceneIndex.js +78 -0
  829. package/dist/features/paths/pathSnap/sceneIndex.js.map +1 -0
  830. package/dist/features/paths/pathSnap/snapGeometry.js +47 -0
  831. package/dist/features/paths/pathSnap/snapGeometry.js.map +1 -0
  832. package/dist/features/paths/penPreviewLayer.js +135 -102
  833. package/dist/features/paths/penPreviewLayer.js.map +1 -1
  834. package/dist/features/paths/shapeGenerator.js +112 -60
  835. package/dist/features/paths/shapeGenerator.js.map +1 -1
  836. package/dist/features/paths/strokeOutline.js +15 -0
  837. package/dist/features/paths/strokeOutline.js.map +1 -0
  838. package/dist/features/paths/useAnchorFields.js +35 -0
  839. package/dist/features/paths/useAnchorFields.js.map +1 -0
  840. package/dist/features/paths/usePathEdit.js +58 -28
  841. package/dist/features/paths/usePathEdit.js.map +1 -1
  842. package/dist/features/poseRun/usePoseRun.js +110 -43
  843. package/dist/features/poseRun/usePoseRun.js.map +1 -1
  844. package/dist/features/selection/handleCommands.js +116 -0
  845. package/dist/features/selection/handleCommands.js.map +1 -0
  846. package/dist/features/selection/overlay.js +288 -328
  847. package/dist/features/selection/overlay.js.map +1 -1
  848. package/dist/features/selection/selectionPose.js +109 -0
  849. package/dist/features/selection/selectionPose.js.map +1 -0
  850. package/dist/features/snap/angle2d.js +158 -0
  851. package/dist/features/snap/angle2d.js.map +1 -0
  852. package/dist/features/snap/debugCandidates.js +27 -0
  853. package/dist/features/snap/debugCandidates.js.map +1 -0
  854. package/dist/features/snap/gather.js +71 -0
  855. package/dist/features/snap/gather.js.map +1 -0
  856. package/dist/features/snap/inputSubspace.js +46 -0
  857. package/dist/features/snap/inputSubspace.js.map +1 -0
  858. package/dist/features/snap/marks.js +29 -0
  859. package/dist/features/snap/marks.js.map +1 -0
  860. package/dist/features/snap/outcomeStore.js +25 -0
  861. package/dist/features/snap/outcomeStore.js.map +1 -0
  862. package/dist/features/snap/pointSnap.js +48 -0
  863. package/dist/features/snap/pointSnap.js.map +1 -0
  864. package/dist/features/snap/probes2d.js +91 -0
  865. package/dist/features/snap/probes2d.js.map +1 -0
  866. package/dist/features/snap/readoutDraw.js +93 -0
  867. package/dist/features/snap/readoutDraw.js.map +1 -0
  868. package/dist/features/snap/readoutLayer.js +49 -0
  869. package/dist/features/snap/readoutLayer.js.map +1 -0
  870. package/dist/features/snap/registry.js +27 -0
  871. package/dist/features/snap/registry.js.map +1 -0
  872. package/dist/features/snap/resizeBox.js +137 -0
  873. package/dist/features/snap/resizeBox.js.map +1 -0
  874. package/dist/features/snap/roles.js +31 -0
  875. package/dist/features/snap/roles.js.map +1 -0
  876. package/dist/features/snap/rotationSource.js +30 -0
  877. package/dist/features/snap/rotationSource.js.map +1 -0
  878. package/dist/features/snap/sceneReads.js +45 -0
  879. package/dist/features/snap/sceneReads.js.map +1 -0
  880. package/dist/features/snap/sceneSession2d.js +79 -0
  881. package/dist/features/snap/sceneSession2d.js.map +1 -0
  882. package/dist/features/snap/screen.js +23 -0
  883. package/dist/features/snap/screen.js.map +1 -0
  884. package/dist/features/snap/session2d.js +129 -0
  885. package/dist/features/snap/session2d.js.map +1 -0
  886. package/dist/features/snap/spanSnap.js +77 -0
  887. package/dist/features/snap/spanSnap.js.map +1 -0
  888. package/dist/features/snap/stepAngles.js +15 -0
  889. package/dist/features/snap/stepAngles.js.map +1 -0
  890. package/dist/features/text/editingDrawOne.js +32 -0
  891. package/dist/features/text/editingDrawOne.js.map +1 -0
  892. package/dist/features/text/index.js +7 -6
  893. package/dist/features/text/textHitAt.js +51 -0
  894. package/dist/features/text/textHitAt.js.map +1 -0
  895. package/dist/features/text/textLayer.js +21 -27
  896. package/dist/features/text/textLayer.js.map +1 -1
  897. package/dist/features/text/useSceneTextEdit.js +190 -128
  898. package/dist/features/text/useSceneTextEdit.js.map +1 -1
  899. package/dist/features/viewports/viewResolver.js +48 -39
  900. package/dist/features/viewports/viewResolver.js.map +1 -1
  901. package/dist/features/viewports/viewportLayer.js +60 -29
  902. package/dist/features/viewports/viewportLayer.js.map +1 -1
  903. package/dist/iconRegistry/IconRegistryProvider.js +73 -0
  904. package/dist/iconRegistry/IconRegistryProvider.js.map +1 -0
  905. package/dist/iconRegistry/useIconGlyph.js +14 -0
  906. package/dist/iconRegistry/useIconGlyph.js.map +1 -0
  907. package/dist/iconRegistry/useIconVariant.js +29 -0
  908. package/dist/iconRegistry/useIconVariant.js.map +1 -0
  909. package/dist/icons.d.ts +6 -0
  910. package/dist/icons.js +3 -0
  911. package/dist/icons.table.js +13 -0
  912. package/dist/icons.table.js.map +1 -0
  913. package/dist/icons.table.json +556 -0
  914. package/dist/icons2.table.js +9 -0
  915. package/dist/icons2.table.js.map +1 -0
  916. package/dist/index.d.ts +4259 -5074
  917. package/dist/index.js +340 -285
  918. package/dist/input/keyState.js +118 -54
  919. package/dist/input/keyState.js.map +1 -1
  920. package/dist/input/useKeyModifiers.js +13 -7
  921. package/dist/input/useKeyModifiers.js.map +1 -1
  922. package/dist/input/useKeyState.js +23 -16
  923. package/dist/input/useKeyState.js.map +1 -1
  924. package/dist/interactions/actions/align/action.js +76 -45
  925. package/dist/interactions/actions/align/action.js.map +1 -1
  926. package/dist/interactions/actions/align/align.js +86 -48
  927. package/dist/interactions/actions/align/align.js.map +1 -1
  928. package/dist/interactions/actions/booleans/action.js +67 -33
  929. package/dist/interactions/actions/booleans/action.js.map +1 -1
  930. package/dist/interactions/actions/booleans/booleans.js +77 -70
  931. package/dist/interactions/actions/booleans/booleans.js.map +1 -1
  932. package/dist/interactions/actions/booleans/commit.js +49 -0
  933. package/dist/interactions/actions/booleans/commit.js.map +1 -0
  934. package/dist/interactions/actions/booleans/custom.js +48 -0
  935. package/dist/interactions/actions/booleans/custom.js.map +1 -0
  936. package/dist/interactions/actions/booleans/operands.js +43 -32
  937. package/dist/interactions/actions/booleans/operands.js.map +1 -1
  938. package/dist/interactions/actions/booleans/pieces.js +29 -23
  939. package/dist/interactions/actions/booleans/pieces.js.map +1 -1
  940. package/dist/interactions/actions/booleans/placement.js +30 -17
  941. package/dist/interactions/actions/booleans/placement.js.map +1 -1
  942. package/dist/interactions/actions/booleans/useBooleans.js +30 -17
  943. package/dist/interactions/actions/booleans/useBooleans.js.map +1 -1
  944. package/dist/interactions/actions/booleans/useBooleansAdapter.js +8 -5
  945. package/dist/interactions/actions/booleans/useBooleansAdapter.js.map +1 -1
  946. package/dist/interactions/actions/clipboard/action.js +81 -40
  947. package/dist/interactions/actions/clipboard/action.js.map +1 -1
  948. package/dist/interactions/actions/clipboard/clipboardOps.js +100 -72
  949. package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -1
  950. package/dist/interactions/actions/clipboard/materializePaste.js +38 -19
  951. package/dist/interactions/actions/clipboard/materializePaste.js.map +1 -1
  952. package/dist/interactions/actions/clipboard/wireFormat.js +66 -28
  953. package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -1
  954. package/dist/interactions/actions/clone/action.js +102 -70
  955. package/dist/interactions/actions/clone/action.js.map +1 -1
  956. package/dist/interactions/actions/clone/behaviors.js +55 -38
  957. package/dist/interactions/actions/clone/behaviors.js.map +1 -1
  958. package/dist/interactions/actions/defaultCommitAdapter.js +32 -10
  959. package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -1
  960. package/dist/interactions/actions/defaults/anchorEditing.js +252 -111
  961. package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -1
  962. package/dist/interactions/actions/defaults/anchorFields.js +54 -0
  963. package/dist/interactions/actions/defaults/anchorFields.js.map +1 -0
  964. package/dist/interactions/actions/defaults/anchorHandles.js +31 -27
  965. package/dist/interactions/actions/defaults/anchorHandles.js.map +1 -1
  966. package/dist/interactions/actions/defaults/anchorJoin.js +55 -37
  967. package/dist/interactions/actions/defaults/anchorJoin.js.map +1 -1
  968. package/dist/interactions/actions/defaults/areaSelect.js +56 -40
  969. package/dist/interactions/actions/defaults/areaSelect.js.map +1 -1
  970. package/dist/interactions/actions/defaults/bendSegment.js +67 -31
  971. package/dist/interactions/actions/defaults/bendSegment.js.map +1 -1
  972. package/dist/interactions/actions/defaults/cancelGesture.js +12 -5
  973. package/dist/interactions/actions/defaults/cancelGesture.js.map +1 -1
  974. package/dist/interactions/actions/defaults/clearSelection.js +22 -7
  975. package/dist/interactions/actions/defaults/clearSelection.js.map +1 -1
  976. package/dist/interactions/actions/defaults/contextMenu.js +149 -0
  977. package/dist/interactions/actions/defaults/contextMenu.js.map +1 -0
  978. package/dist/interactions/actions/defaults/copySubtree.js +43 -29
  979. package/dist/interactions/actions/defaults/copySubtree.js.map +1 -1
  980. package/dist/interactions/actions/defaults/createPaintAction.js +79 -54
  981. package/dist/interactions/actions/defaults/createPaintAction.js.map +1 -1
  982. package/dist/interactions/actions/defaults/delete.js +61 -33
  983. package/dist/interactions/actions/defaults/delete.js.map +1 -1
  984. package/dist/interactions/actions/defaults/duplicate.js +60 -32
  985. package/dist/interactions/actions/defaults/duplicate.js.map +1 -1
  986. package/dist/interactions/actions/defaults/enterPathEdit.js +22 -18
  987. package/dist/interactions/actions/defaults/enterPathEdit.js.map +1 -1
  988. package/dist/interactions/actions/defaults/enterTextEdit.js +20 -8
  989. package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -1
  990. package/dist/interactions/actions/defaults/escape.js +16 -7
  991. package/dist/interactions/actions/defaults/escape.js.map +1 -1
  992. package/dist/interactions/actions/defaults/exitPathEdit.js +6 -6
  993. package/dist/interactions/actions/defaults/exitPathEdit.js.map +1 -1
  994. package/dist/interactions/actions/defaults/group.js +122 -73
  995. package/dist/interactions/actions/defaults/group.js.map +1 -1
  996. package/dist/interactions/actions/defaults/ingest.js +52 -35
  997. package/dist/interactions/actions/defaults/ingest.js.map +1 -1
  998. package/dist/interactions/actions/defaults/insertPathAnchor.js +43 -22
  999. package/dist/interactions/actions/defaults/insertPathAnchor.js.map +1 -1
  1000. package/dist/interactions/actions/defaults/nudge.js +79 -52
  1001. package/dist/interactions/actions/defaults/nudge.js.map +1 -1
  1002. package/dist/interactions/actions/defaults/nudgeSteps.js +17 -12
  1003. package/dist/interactions/actions/defaults/nudgeSteps.js.map +1 -1
  1004. package/dist/interactions/actions/defaults/pathEditMarks.js +60 -0
  1005. package/dist/interactions/actions/defaults/pathEditMarks.js.map +1 -0
  1006. package/dist/interactions/actions/defaults/pathEditTools.js +57 -0
  1007. package/dist/interactions/actions/defaults/pathEditTools.js.map +1 -0
  1008. package/dist/interactions/actions/defaults/pinchZoom.js +55 -39
  1009. package/dist/interactions/actions/defaults/pinchZoom.js.map +1 -1
  1010. package/dist/interactions/actions/defaults/reorder.js +71 -40
  1011. package/dist/interactions/actions/defaults/reorder.js.map +1 -1
  1012. package/dist/interactions/actions/defaults/requiresSelection.js +13 -6
  1013. package/dist/interactions/actions/defaults/requiresSelection.js.map +1 -1
  1014. package/dist/interactions/actions/defaults/segmentUnder.js +24 -16
  1015. package/dist/interactions/actions/defaults/segmentUnder.js.map +1 -1
  1016. package/dist/interactions/actions/defaults/selectAll.js +21 -7
  1017. package/dist/interactions/actions/defaults/selectAll.js.map +1 -1
  1018. package/dist/interactions/actions/defaults/setFill.js +37 -21
  1019. package/dist/interactions/actions/defaults/setFill.js.map +1 -1
  1020. package/dist/interactions/actions/defaults/setFillOpacity.js +19 -10
  1021. package/dist/interactions/actions/defaults/setFillOpacity.js.map +1 -1
  1022. package/dist/interactions/actions/defaults/setStroke.js +46 -25
  1023. package/dist/interactions/actions/defaults/setStroke.js.map +1 -1
  1024. package/dist/interactions/actions/defaults/setStrokeOpacity.js +19 -11
  1025. package/dist/interactions/actions/defaults/setStrokeOpacity.js.map +1 -1
  1026. package/dist/interactions/actions/defaults/slice.js +42 -17
  1027. package/dist/interactions/actions/defaults/slice.js.map +1 -1
  1028. package/dist/interactions/actions/defaults/sliceOps.js +63 -42
  1029. package/dist/interactions/actions/defaults/sliceOps.js.map +1 -1
  1030. package/dist/interactions/actions/defaults/toolActivate.js +34 -16
  1031. package/dist/interactions/actions/defaults/toolActivate.js.map +1 -1
  1032. package/dist/interactions/actions/defaults/toolResetToDefault.js +29 -10
  1033. package/dist/interactions/actions/defaults/toolResetToDefault.js.map +1 -1
  1034. package/dist/interactions/actions/defaults/undoRedo.js +26 -20
  1035. package/dist/interactions/actions/defaults/undoRedo.js.map +1 -1
  1036. package/dist/interactions/actions/defaults/viewportDragPan.js +91 -58
  1037. package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -1
  1038. package/dist/interactions/actions/defaults/viewportWheelPan.js +42 -23
  1039. package/dist/interactions/actions/defaults/viewportWheelPan.js.map +1 -1
  1040. package/dist/interactions/actions/defaults/viewportZoom.js +107 -59
  1041. package/dist/interactions/actions/defaults/viewportZoom.js.map +1 -1
  1042. package/dist/interactions/actions/distribute/action.js +62 -39
  1043. package/dist/interactions/actions/distribute/action.js.map +1 -1
  1044. package/dist/interactions/actions/distribute/distribute.js +53 -34
  1045. package/dist/interactions/actions/distribute/distribute.js.map +1 -1
  1046. package/dist/interactions/actions/distribute/plan.js +40 -22
  1047. package/dist/interactions/actions/distribute/plan.js.map +1 -1
  1048. package/dist/interactions/actions/drawnBoxes.js +31 -0
  1049. package/dist/interactions/actions/drawnBoxes.js.map +1 -0
  1050. package/dist/interactions/actions/edit-anchors/action.js +248 -72
  1051. package/dist/interactions/actions/edit-anchors/action.js.map +1 -1
  1052. package/dist/interactions/actions/edit-anchors/extensionDrags.js +50 -0
  1053. package/dist/interactions/actions/edit-anchors/extensionDrags.js.map +1 -0
  1054. package/dist/interactions/actions/edit-anchors/geometry.js +74 -47
  1055. package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -1
  1056. package/dist/interactions/actions/edit-anchors/handleDrag.js +101 -0
  1057. package/dist/interactions/actions/edit-anchors/handleDrag.js.map +1 -0
  1058. package/dist/interactions/actions/edit-anchors/handles.js +41 -27
  1059. package/dist/interactions/actions/edit-anchors/handles.js.map +1 -1
  1060. package/dist/interactions/actions/edit-anchors/params.js +12 -0
  1061. package/dist/interactions/actions/edit-anchors/params.js.map +1 -0
  1062. package/dist/interactions/actions/edit-anchors/preview.js +61 -19
  1063. package/dist/interactions/actions/edit-anchors/preview.js.map +1 -1
  1064. package/dist/interactions/actions/edit-anchors/symmetry.js +12 -7
  1065. package/dist/interactions/actions/edit-anchors/symmetry.js.map +1 -1
  1066. package/dist/interactions/actions/flip/action.js +119 -61
  1067. package/dist/interactions/actions/flip/action.js.map +1 -1
  1068. package/dist/interactions/actions/flip/helpers.js +69 -36
  1069. package/dist/interactions/actions/flip/helpers.js.map +1 -1
  1070. package/dist/interactions/actions/geometryProjection.js +17 -12
  1071. package/dist/interactions/actions/geometryProjection.js.map +1 -1
  1072. package/dist/interactions/actions/gestureFrames.js +20 -11
  1073. package/dist/interactions/actions/gestureFrames.js.map +1 -1
  1074. package/dist/interactions/actions/gestureLifecycle.js +93 -48
  1075. package/dist/interactions/actions/gestureLifecycle.js.map +1 -1
  1076. package/dist/interactions/actions/hitSelection.js +6 -4
  1077. package/dist/interactions/actions/hitSelection.js.map +1 -1
  1078. package/dist/interactions/actions/insert/action.js +71 -42
  1079. package/dist/interactions/actions/insert/action.js.map +1 -1
  1080. package/dist/interactions/actions/insert/commit.js +44 -22
  1081. package/dist/interactions/actions/insert/commit.js.map +1 -1
  1082. package/dist/interactions/actions/insert/extras.js +60 -38
  1083. package/dist/interactions/actions/insert/extras.js.map +1 -1
  1084. package/dist/interactions/actions/insert/frame.js +58 -39
  1085. package/dist/interactions/actions/insert/frame.js.map +1 -1
  1086. package/dist/interactions/actions/insert/geometry.js +29 -25
  1087. package/dist/interactions/actions/insert/geometry.js.map +1 -1
  1088. package/dist/interactions/actions/insert/placeAction.js +108 -0
  1089. package/dist/interactions/actions/insert/placeAction.js.map +1 -0
  1090. package/dist/interactions/actions/insert/repositionAction.js +26 -11
  1091. package/dist/interactions/actions/insert/repositionAction.js.map +1 -1
  1092. package/dist/interactions/actions/insert/rotateAction.js +19 -8
  1093. package/dist/interactions/actions/insert/rotateAction.js.map +1 -1
  1094. package/dist/interactions/actions/insert/session.js +57 -41
  1095. package/dist/interactions/actions/insert/session.js.map +1 -1
  1096. package/dist/interactions/actions/insert/shape.js +83 -25
  1097. package/dist/interactions/actions/insert/shape.js.map +1 -1
  1098. package/dist/interactions/actions/lasso-select/action.js +160 -100
  1099. package/dist/interactions/actions/lasso-select/action.js.map +1 -1
  1100. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js +44 -25
  1101. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js.map +1 -1
  1102. package/dist/interactions/actions/move/action.js +87 -52
  1103. package/dist/interactions/actions/move/action.js.map +1 -1
  1104. package/dist/interactions/actions/move/behaviors/layoutDrop.js +56 -36
  1105. package/dist/interactions/actions/move/behaviors/layoutDrop.js.map +1 -1
  1106. package/dist/interactions/actions/move/behaviors/reparentOnDrop.js +20 -10
  1107. package/dist/interactions/actions/move/behaviors/reparentOnDrop.js.map +1 -1
  1108. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js +40 -24
  1109. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js.map +1 -1
  1110. package/dist/interactions/actions/move/behaviors/snapToContainer.js +102 -64
  1111. package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -1
  1112. package/dist/interactions/actions/move/capture.js +103 -78
  1113. package/dist/interactions/actions/move/capture.js.map +1 -1
  1114. package/dist/interactions/actions/move/commit/index.js +43 -34
  1115. package/dist/interactions/actions/move/commit/index.js.map +1 -1
  1116. package/dist/interactions/actions/move/commit/layoutDrop.js +43 -32
  1117. package/dist/interactions/actions/move/commit/layoutDrop.js.map +1 -1
  1118. package/dist/interactions/actions/move/commit/layoutRelease.js +97 -77
  1119. package/dist/interactions/actions/move/commit/layoutRelease.js.map +1 -1
  1120. package/dist/interactions/actions/move/commit/rebase.js +16 -13
  1121. package/dist/interactions/actions/move/commit/rebase.js.map +1 -1
  1122. package/dist/interactions/actions/move/commit/reparent.js +83 -57
  1123. package/dist/interactions/actions/move/commit/reparent.js.map +1 -1
  1124. package/dist/interactions/actions/move/delta.js +58 -36
  1125. package/dist/interactions/actions/move/delta.js.map +1 -1
  1126. package/dist/interactions/actions/move/frame.js +72 -35
  1127. package/dist/interactions/actions/move/frame.js.map +1 -1
  1128. package/dist/interactions/actions/move/gestureAdapter.js +30 -20
  1129. package/dist/interactions/actions/move/gestureAdapter.js.map +1 -1
  1130. package/dist/interactions/actions/move/landedDescendants.js +40 -25
  1131. package/dist/interactions/actions/move/landedDescendants.js.map +1 -1
  1132. package/dist/interactions/actions/move/layout/container.js +92 -72
  1133. package/dist/interactions/actions/move/layout/container.js.map +1 -1
  1134. package/dist/interactions/actions/move/layout/dragged.js +61 -39
  1135. package/dist/interactions/actions/move/layout/dragged.js.map +1 -1
  1136. package/dist/interactions/actions/move/layout/dropPass.js +136 -94
  1137. package/dist/interactions/actions/move/layout/dropPass.js.map +1 -1
  1138. package/dist/interactions/actions/move/layout/exits.js +58 -30
  1139. package/dist/interactions/actions/move/layout/exits.js.map +1 -1
  1140. package/dist/interactions/actions/move/layout/glide.js +55 -34
  1141. package/dist/interactions/actions/move/layout/glide.js.map +1 -1
  1142. package/dist/interactions/actions/move/session.js +85 -56
  1143. package/dist/interactions/actions/move/session.js.map +1 -1
  1144. package/dist/interactions/actions/move/translate.js +58 -43
  1145. package/dist/interactions/actions/move/translate.js.map +1 -1
  1146. package/dist/interactions/actions/outlines/createOutlines.js +28 -20
  1147. package/dist/interactions/actions/outlines/createOutlines.js.map +1 -1
  1148. package/dist/interactions/actions/outlines/createOutlinesAction.js +43 -31
  1149. package/dist/interactions/actions/outlines/createOutlinesAction.js.map +1 -1
  1150. package/dist/interactions/actions/outlines/outlineStroke.js +68 -45
  1151. package/dist/interactions/actions/outlines/outlineStroke.js.map +1 -1
  1152. package/dist/interactions/actions/outlines/outlineStrokeAction.js +24 -19
  1153. package/dist/interactions/actions/outlines/outlineStrokeAction.js.map +1 -1
  1154. package/dist/interactions/actions/outlines/replaceWithPaths.js +57 -42
  1155. package/dist/interactions/actions/outlines/replaceWithPaths.js.map +1 -1
  1156. package/dist/interactions/actions/outlines/strokeRegion.js +37 -22
  1157. package/dist/interactions/actions/outlines/strokeRegion.js.map +1 -1
  1158. package/dist/interactions/actions/outlines/useCreateOutlinesAdapter.js +8 -5
  1159. package/dist/interactions/actions/outlines/useCreateOutlinesAdapter.js.map +1 -1
  1160. package/dist/interactions/actions/pathCommands/cutJoin.js +119 -72
  1161. package/dist/interactions/actions/pathCommands/cutJoin.js.map +1 -1
  1162. package/dist/interactions/actions/pathCommands/livePathEdit.js +74 -40
  1163. package/dist/interactions/actions/pathCommands/livePathEdit.js.map +1 -1
  1164. package/dist/interactions/actions/pathCommands/pathNodes.js +91 -82
  1165. package/dist/interactions/actions/pathCommands/pathNodes.js.map +1 -1
  1166. package/dist/interactions/actions/pathCommands/simplifyOffset.js +52 -28
  1167. package/dist/interactions/actions/pathCommands/simplifyOffset.js.map +1 -1
  1168. package/dist/interactions/actions/pathGestureTags.js +29 -0
  1169. package/dist/interactions/actions/pathGestureTags.js.map +1 -0
  1170. package/dist/interactions/actions/planeInput.js +198 -123
  1171. package/dist/interactions/actions/planeInput.js.map +1 -1
  1172. package/dist/interactions/actions/pointerState.js +12 -7
  1173. package/dist/interactions/actions/pointerState.js.map +1 -1
  1174. package/dist/interactions/actions/poseDescriptorDep.js +24 -14
  1175. package/dist/interactions/actions/poseDescriptorDep.js.map +1 -1
  1176. package/dist/interactions/actions/poseFrame.js +45 -28
  1177. package/dist/interactions/actions/poseFrame.js.map +1 -1
  1178. package/dist/interactions/actions/resize/action.js +68 -39
  1179. package/dist/interactions/actions/resize/action.js.map +1 -1
  1180. package/dist/interactions/actions/resize/aspect.js +44 -0
  1181. package/dist/interactions/actions/resize/aspect.js.map +1 -0
  1182. package/dist/interactions/actions/resize/behaviors/clampMinSize.js +38 -13
  1183. package/dist/interactions/actions/resize/behaviors/clampMinSize.js.map +1 -1
  1184. package/dist/interactions/actions/resize/boxFrame.js +15 -11
  1185. package/dist/interactions/actions/resize/boxFrame.js.map +1 -1
  1186. package/dist/interactions/actions/resize/capture.js +105 -62
  1187. package/dist/interactions/actions/resize/capture.js.map +1 -1
  1188. package/dist/interactions/actions/resize/commit.js +75 -56
  1189. package/dist/interactions/actions/resize/commit.js.map +1 -1
  1190. package/dist/interactions/actions/resize/cornerHandles.js +154 -17
  1191. package/dist/interactions/actions/resize/cornerHandles.js.map +1 -1
  1192. package/dist/interactions/actions/resize/frame.js +133 -66
  1193. package/dist/interactions/actions/resize/frame.js.map +1 -1
  1194. package/dist/interactions/actions/resize/minimum.js +35 -0
  1195. package/dist/interactions/actions/resize/minimum.js.map +1 -0
  1196. package/dist/interactions/actions/resize/replay.js +40 -30
  1197. package/dist/interactions/actions/resize/replay.js.map +1 -1
  1198. package/dist/interactions/actions/resize/ruleBounds.js +8 -5
  1199. package/dist/interactions/actions/resize/ruleBounds.js.map +1 -1
  1200. package/dist/interactions/actions/resize/session.js +95 -50
  1201. package/dist/interactions/actions/resize/session.js.map +1 -1
  1202. package/dist/interactions/actions/resolveOverlays.js +48 -33
  1203. package/dist/interactions/actions/resolveOverlays.js.map +1 -1
  1204. package/dist/interactions/actions/resolvePreviews.js +63 -46
  1205. package/dist/interactions/actions/resolvePreviews.js.map +1 -1
  1206. package/dist/interactions/actions/rotate/action.js +68 -42
  1207. package/dist/interactions/actions/rotate/action.js.map +1 -1
  1208. package/dist/interactions/actions/rotate/commit.js +39 -31
  1209. package/dist/interactions/actions/rotate/commit.js.map +1 -1
  1210. package/dist/interactions/actions/rotate/frame.js +75 -47
  1211. package/dist/interactions/actions/rotate/frame.js.map +1 -1
  1212. package/dist/interactions/actions/rotate/geometry.js +36 -24
  1213. package/dist/interactions/actions/rotate/geometry.js.map +1 -1
  1214. package/dist/interactions/actions/rotate/handle.js +28 -15
  1215. package/dist/interactions/actions/rotate/handle.js.map +1 -1
  1216. package/dist/interactions/actions/rotate/replay.js +22 -18
  1217. package/dist/interactions/actions/rotate/replay.js.map +1 -1
  1218. package/dist/interactions/actions/rotate/session.js +115 -76
  1219. package/dist/interactions/actions/rotate/session.js.map +1 -1
  1220. package/dist/interactions/actions/selectionSubtree.js +124 -53
  1221. package/dist/interactions/actions/selectionSubtree.js.map +1 -1
  1222. package/dist/interactions/actions/spatialReference.js +33 -26
  1223. package/dist/interactions/actions/spatialReference.js.map +1 -1
  1224. package/dist/interactions/actions/testUtils.js +53 -0
  1225. package/dist/interactions/actions/testUtils.js.map +1 -0
  1226. package/dist/interactions/actions/transform-again/action.js +50 -35
  1227. package/dist/interactions/actions/transform-again/action.js.map +1 -1
  1228. package/dist/interactions/actions/transform-again/memory.js +32 -21
  1229. package/dist/interactions/actions/transform-again/memory.js.map +1 -1
  1230. package/dist/interactions/actions/useActionSet.js +83 -0
  1231. package/dist/interactions/actions/useActionSet.js.map +1 -0
  1232. package/dist/interactions/actions/useStandardActions.js +23 -165
  1233. package/dist/interactions/actions/useStandardActions.js.map +1 -1
  1234. package/dist/interactions/gestures/dragGesture/dragGesture.js +109 -68
  1235. package/dist/interactions/gestures/dragGesture/dragGesture.js.map +1 -1
  1236. package/dist/interactions/gestures/dragGesture/dragPointOf.js +17 -10
  1237. package/dist/interactions/gestures/dragGesture/dragPointOf.js.map +1 -1
  1238. package/dist/interactions/gestures/dragRadial/dragRadial.js +129 -93
  1239. package/dist/interactions/gestures/dragRadial/dragRadial.js.map +1 -1
  1240. package/dist/interactions/gestures/dragRect/dragRect.js +155 -111
  1241. package/dist/interactions/gestures/dragRect/dragRect.js.map +1 -1
  1242. package/dist/interactions/gestures/handleDrag/handleDrag.js +52 -30
  1243. package/dist/interactions/gestures/handleDrag/handleDrag.js.map +1 -1
  1244. package/dist/interactions/gestures/pointerDrag/pointerDrag.js +168 -97
  1245. package/dist/interactions/gestures/pointerDrag/pointerDrag.js.map +1 -1
  1246. package/dist/interactions/gestures/shared/originProjection.js +32 -25
  1247. package/dist/interactions/gestures/shared/originProjection.js.map +1 -1
  1248. package/dist/interactions/gestures/shared/screenTolerance.js +26 -17
  1249. package/dist/interactions/gestures/shared/screenTolerance.js.map +1 -1
  1250. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js +39 -21
  1251. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js.map +1 -1
  1252. package/dist/kitSettingsSchema.js +80 -0
  1253. package/dist/kitSettingsSchema.js.map +1 -0
  1254. package/dist/{math-CYUjoyyU.d.ts → math-CrJULaZI.d.ts} +5 -6
  1255. package/dist/math.d.ts +4 -5
  1256. package/dist/math.js +7 -6
  1257. package/dist/mesh.js +3 -2
  1258. package/dist/move.d.ts +7 -6
  1259. package/dist/move.js +4 -3
  1260. package/dist/{originProjection-CoNVpITV.d.ts → options-p9GZMXbY.d.ts} +4 -27
  1261. package/dist/originProjection-gY0jb4Wb.d.ts +24 -0
  1262. package/dist/patterns-builtin.js +3 -2
  1263. package/dist/{poseDescriptor-Bqk-11Rl.d.ts → poseDescriptor-DN2yfnq_.d.ts} +7 -7
  1264. package/dist/renderer.d.ts +1 -1
  1265. package/dist/renderer.js +3 -2
  1266. package/dist/resize.d.ts +10 -28
  1267. package/dist/resize.js +6 -7
  1268. package/dist/routing.js +3 -2
  1269. package/dist/style.css +88 -1
  1270. package/dist/test-hook/createTestHook.js +23 -20
  1271. package/dist/test-hook/createTestHook.js.map +1 -1
  1272. package/dist/test-hook/install.js +32 -13
  1273. package/dist/test-hook/install.js.map +1 -1
  1274. package/dist/test-hook/useTestHook.js +22 -16
  1275. package/dist/test-hook/useTestHook.js.map +1 -1
  1276. package/dist/test-seams.d.ts +164 -1
  1277. package/dist/test-seams.js +8 -3
  1278. package/dist/tools/builtin/bone/boneActions.js +96 -70
  1279. package/dist/tools/builtin/bone/boneActions.js.map +1 -1
  1280. package/dist/tools/builtin/bone/boneOverlay.js +49 -36
  1281. package/dist/tools/builtin/bone/boneOverlay.js.map +1 -1
  1282. package/dist/tools/builtin/bone/placedRig.js +18 -14
  1283. package/dist/tools/builtin/bone/placedRig.js.map +1 -1
  1284. package/dist/tools/builtin/bone/rigEditState.js +22 -13
  1285. package/dist/tools/builtin/bone/rigEditState.js.map +1 -1
  1286. package/dist/tools/builtin/bone/useBoneTool.js +68 -41
  1287. package/dist/tools/builtin/bone/useBoneTool.js.map +1 -1
  1288. package/dist/tools/builtin/ellipse/useEllipseTool.js +22 -17
  1289. package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -1
  1290. package/dist/tools/builtin/eyedropper/useEyedropperTool.js +44 -28
  1291. package/dist/tools/builtin/eyedropper/useEyedropperTool.js.map +1 -1
  1292. package/dist/tools/builtin/hand/dragPanContribution.js +12 -7
  1293. package/dist/tools/builtin/hand/dragPanContribution.js.map +1 -1
  1294. package/dist/tools/builtin/hand/useHandTool.js +21 -13
  1295. package/dist/tools/builtin/hand/useHandTool.js.map +1 -1
  1296. package/dist/tools/builtin/image/useImageTool.js +28 -19
  1297. package/dist/tools/builtin/image/useImageTool.js.map +1 -1
  1298. package/dist/tools/builtin/lasso/useLassoTool.js +48 -36
  1299. package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -1
  1300. package/dist/tools/builtin/line/useLineTool.js +24 -17
  1301. package/dist/tools/builtin/line/useLineTool.js.map +1 -1
  1302. package/dist/tools/builtin/measure/useMeasureTool.js +84 -0
  1303. package/dist/tools/builtin/measure/useMeasureTool.js.map +1 -0
  1304. package/dist/tools/builtin/pen/penHandle.js +60 -0
  1305. package/dist/tools/builtin/pen/penHandle.js.map +1 -0
  1306. package/dist/tools/builtin/pen/usePenTool.js +461 -303
  1307. package/dist/tools/builtin/pen/usePenTool.js.map +1 -1
  1308. package/dist/tools/builtin/pencil/usePencilTool.js +20 -15
  1309. package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -1
  1310. package/dist/tools/builtin/pickTopMostHit.js +51 -31
  1311. package/dist/tools/builtin/pickTopMostHit.js.map +1 -1
  1312. package/dist/tools/builtin/polygon/usePolygonTool.js +45 -28
  1313. package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -1
  1314. package/dist/tools/builtin/rect/useRectTool.js +24 -16
  1315. package/dist/tools/builtin/rect/useRectTool.js.map +1 -1
  1316. package/dist/tools/builtin/select/adapterPointQuery.js +47 -30
  1317. package/dist/tools/builtin/select/adapterPointQuery.js.map +1 -1
  1318. package/dist/tools/builtin/select/selectionContributions.js +94 -56
  1319. package/dist/tools/builtin/select/selectionContributions.js.map +1 -1
  1320. package/dist/tools/builtin/select/useSelectTool.js +155 -108
  1321. package/dist/tools/builtin/select/useSelectTool.js.map +1 -1
  1322. package/dist/tools/builtin/shared/insertToolOptions.js +5 -4
  1323. package/dist/tools/builtin/shared/insertToolOptions.js.map +1 -1
  1324. package/dist/tools/builtin/shared/pointerFollower.js +15 -8
  1325. package/dist/tools/builtin/shared/pointerFollower.js.map +1 -1
  1326. package/dist/tools/builtin/slice/useSliceTool.js +148 -101
  1327. package/dist/tools/builtin/slice/useSliceTool.js.map +1 -1
  1328. package/dist/tools/builtin/star/useStarTool.js +48 -31
  1329. package/dist/tools/builtin/star/useStarTool.js.map +1 -1
  1330. package/dist/tools/builtin/sticky/stickyNode.js +49 -0
  1331. package/dist/tools/builtin/sticky/stickyNode.js.map +1 -0
  1332. package/dist/tools/builtin/sticky/useStickyTool.js +86 -0
  1333. package/dist/tools/builtin/sticky/useStickyTool.js.map +1 -0
  1334. package/dist/tools/builtin/text/useTextTool.js +59 -34
  1335. package/dist/tools/builtin/text/useTextTool.js.map +1 -1
  1336. package/dist/tools/builtin/weight/useWeightTool.js +66 -42
  1337. package/dist/tools/builtin/weight/useWeightTool.js.map +1 -1
  1338. package/dist/tools/builtin/weight/weightActions.js +93 -65
  1339. package/dist/tools/builtin/weight/weightActions.js.map +1 -1
  1340. package/dist/tools/builtin/weight/weightOverlay.js +47 -30
  1341. package/dist/tools/builtin/weight/weightOverlay.js.map +1 -1
  1342. package/dist/tools/overlayBinding.js +7 -5
  1343. package/dist/tools/overlayBinding.js.map +1 -1
  1344. package/dist/tools/useKeybindings.js +62 -46
  1345. package/dist/tools/useKeybindings.js.map +1 -1
  1346. package/dist/{types-DBbbCy0i.d.ts → types-CHVXGfYm.d.ts} +5 -5
  1347. package/dist/util/color.js +39 -18
  1348. package/dist/util/color.js.map +1 -1
  1349. package/dist/util/paint.js +93 -38
  1350. package/dist/util/paint.js.map +1 -1
  1351. package/dist/version.js +11 -3
  1352. package/dist/version.js.map +1 -1
  1353. package/package.json +35 -23
  1354. package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js +0 -126
  1355. package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js.map +0 -1
  1356. package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js +0 -55
  1357. package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js.map +0 -1
  1358. package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js +0 -16
  1359. package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js.map +0 -1
  1360. package/dist/canvas/SceneCanvas/isDev.js +0 -12
  1361. package/dist/canvas/SceneCanvas/isDev.js.map +0 -1
  1362. package/dist/canvas/SceneCanvas/useViewLayerGate.js +0 -20
  1363. package/dist/canvas/SceneCanvas/useViewLayerGate.js.map +0 -1
  1364. package/dist/cornerHandles-BSKbyuvQ.d.ts +0 -104
  1365. package/dist/icons/ArrowIcon.js +0 -23
  1366. package/dist/icons/ArrowIcon.js.map +0 -1
  1367. package/dist/icons/EllipseIcon.js +0 -21
  1368. package/dist/icons/EllipseIcon.js.map +0 -1
  1369. package/dist/icons/EyedropperIcon.js +0 -49
  1370. package/dist/icons/EyedropperIcon.js.map +0 -1
  1371. package/dist/icons/HandIcon.js +0 -59
  1372. package/dist/icons/HandIcon.js.map +0 -1
  1373. package/dist/icons/ImageIcon.js +0 -34
  1374. package/dist/icons/ImageIcon.js.map +0 -1
  1375. package/dist/icons/LassoIcon.js +0 -22
  1376. package/dist/icons/LassoIcon.js.map +0 -1
  1377. package/dist/icons/LineIcon.js +0 -22
  1378. package/dist/icons/LineIcon.js.map +0 -1
  1379. package/dist/icons/PenIcon.js +0 -36
  1380. package/dist/icons/PenIcon.js.map +0 -1
  1381. package/dist/icons/PencilIcon.js +0 -25
  1382. package/dist/icons/PencilIcon.js.map +0 -1
  1383. package/dist/icons/PolygonIcon.js +0 -19
  1384. package/dist/icons/PolygonIcon.js.map +0 -1
  1385. package/dist/icons/RectIcon.js +0 -37
  1386. package/dist/icons/RectIcon.js.map +0 -1
  1387. package/dist/icons/SelectIcon.js +0 -20
  1388. package/dist/icons/SelectIcon.js.map +0 -1
  1389. package/dist/icons/SliceIcon.js +0 -24
  1390. package/dist/icons/SliceIcon.js.map +0 -1
  1391. package/dist/icons/StarIcon.js +0 -19
  1392. package/dist/icons/StarIcon.js.map +0 -1
  1393. package/dist/icons/TextIcon.js +0 -19
  1394. package/dist/icons/TextIcon.js.map +0 -1
  1395. package/dist/icons/UnknownIcon.js +0 -33
  1396. package/dist/icons/UnknownIcon.js.map +0 -1
  1397. package/dist/icons/_base.js +0 -12
  1398. package/dist/icons/_base.js.map +0 -1
  1399. package/dist/interactions/actions/actionShortcuts.js +0 -32
  1400. package/dist/interactions/actions/actionShortcuts.js.map +0 -1
  1401. package/dist/interactions/actions/defaults/icons/actionGlyphIcons.js +0 -40
  1402. package/dist/interactions/actions/defaults/icons/actionGlyphIcons.js.map +0 -1
  1403. package/dist/interactions/actions/defaults/icons/actionGlyphs.js +0 -10
  1404. package/dist/interactions/actions/defaults/icons/actionGlyphs.js.map +0 -1
  1405. package/dist/interactions/actions/defaults/icons/alignIcons.js +0 -173
  1406. package/dist/interactions/actions/defaults/icons/alignIcons.js.map +0 -1
  1407. package/dist/interactions/actions/defaults/icons/anchorIcons.js +0 -75
  1408. package/dist/interactions/actions/defaults/icons/anchorIcons.js.map +0 -1
  1409. package/dist/interactions/actions/defaults/icons/booleanIcons.js +0 -194
  1410. package/dist/interactions/actions/defaults/icons/booleanIcons.js.map +0 -1
  1411. package/dist/interactions/actions/defaults/icons/distributeIcons.js +0 -63
  1412. package/dist/interactions/actions/defaults/icons/distributeIcons.js.map +0 -1
  1413. package/dist/interactions/actions/defaults/icons/editIcons.js +0 -307
  1414. package/dist/interactions/actions/defaults/icons/editIcons.js.map +0 -1
  1415. package/dist/interactions/actions/defaults/icons/outlineIcons.js +0 -91
  1416. package/dist/interactions/actions/defaults/icons/outlineIcons.js.map +0 -1
  1417. package/dist/interactions/actions/resize/behaviors/index.js +0 -8
  1418. package/dist/interactions/actions/resize/behaviors/index.js.map +0 -1
  1419. package/dist/interactions/actions/resize/behaviors/lockAspect.js +0 -24
  1420. package/dist/interactions/actions/resize/behaviors/lockAspect.js.map +0 -1
  1421. package/dist/interactions/actions/resize/pointSnap.js +0 -111
  1422. package/dist/interactions/actions/resize/pointSnap.js.map +0 -1
  1423. package/dist/interactions/actions/rotate/behaviors/index.js +0 -7
  1424. package/dist/interactions/actions/rotate/behaviors/index.js.map +0 -1
  1425. package/dist/interactions/actions/rotate/behaviors/snapRotation.js +0 -12
  1426. package/dist/interactions/actions/rotate/behaviors/snapRotation.js.map +0 -1
  1427. package/dist/interactions/gestures/shared/snap.js +0 -24
  1428. package/dist/interactions/gestures/shared/snap.js.map +0 -1
  1429. package/dist/test-seams-D0pyV3pR.d.ts +0 -149
  1430. package/dist/util/constrainTo45.js +0 -17
  1431. package/dist/util/constrainTo45.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SceneCanvas.js","names":["canvasDebug","debug","_slops","rest","SceneCanvasInner","sceneInput","selectToolOpts","selectionProp","toolsProp","viewDescriptors","getFocusedProp","redrawOnProp","restProps","props","descriptor","poseDescriptor","AUTO_POSE_DESCRIPTOR","deviceProfile","useDeviceProfile","bakedScene","useState","isSerializedScene","sceneFromJSON","scene","getActiveMode","useMemo","modes","getActiveModeFor","heldModifiers","useHeldModifiers","redrawOn","useSceneRedrawSources","internalCanvasRef","useRef","canvasApiRef","dlog","useCanvasCamera","viewState","viewportZoomProp","viewport","animatedZoom","resolvedViewportZoom","viewportZoomOption","selection","useCanvasSelection","selectionOptions","pathEditState","usePathEditState","pathEdit","isSelectedNode","id","selectToolWithDefaults","selectionRef","useLatest","useNodeKinds","routing","composedAlphaFor","composeAlphaFor","alphaFor","viewLayerGate","useViewLayerGate","layerVisibility","layerOrder","adapter","useSceneAdapter","internalSelect","internalPickEvery","internalPickBest","internalBoundsOf","internalBoundsOfPose","internalPlaneOfNode","internalMoveOptions","useSceneSelectTool","viewRef","getNodeAtPoint","useNodeAtPoint","enabled","useEnabledFeatures","features","internalTools","toolsTakeover","useCanvasTools","longPress","featureContributions","useFeatureBindings","getNodeAtPointRef","onDoubleClickObserver","useHitObserver","onDoubleClick","onClickObserver","onClick","rotateOff","resolvedActions","actionsMuting","actions","actionsRegistry","useActionsRegistry","useCanvasDispatcher","wiredLayers","useSceneCanvasLayers","animator","previewIdsExtra","trackHoverOn","useSceneHover","chromeVisibility","chromeRules","useChromeRules","getIsVisibleForCanvas","getRuleCtxForCanvas","useSurfaceChromeCaps","ingestionClipboard","useCanvasIngestion","ingestion","addedViews","useAddedViews","canvasReady","useSceneCanvasHandle","viewInputs","kindOfNode","chromeCaps","rotationBadge","useTestHook","tools","ViewInputsProvider","PointerProviderIfRoot","Canvas","handleRef","DevHuds","cursorCoordsHud","pickHud","modalityHud","PointerPublisher","StandardActionsRegistrar","standardActionsExclude","toolOptions","GestureDispatcherMounter","enableGestureDispatcher","enableKeybindings","ToolKeybindingsMounter","CanvasView","v","i","contributionEntries","children","SceneCanvasInnerForwardRef","forwardRef","SceneCanvasWrapper","InputScope","DeviceProfileProvider","device","ViewRegistryProvider","SceneCanvas","BUILTIN_TOOL_IDS","DEFAULT_HANDLE_SIZE","SCENE_CANVAS_FEATURES","rotateAroundAABBCenter"],"sources":["../../src/canvas/SceneCanvas.tsx"],"sourcesContent":["/**\n * `<SceneCanvas>` — `<Canvas>` wired to a `Scene` primitive. Bare, it only renders: behavior\n * comes from the `features` presets (`canvas/SceneCanvas/features.ts`), each of which turns on\n * its own actions, tools, ambient bindings, and chrome.\n *\n * A consumer needing custom tools can pass `tools={useTools(...)}` and SceneCanvas forwards it\n * as-is — the internal tool registry is ignored in that case.\n */\nimport { getActiveModeFor } from '@weasel-js/modes';\nimport { useLatest } from '@weasel-js/react';\nimport type { ActionsProp } from '@weasel-js/routing';\nimport { InputScope, useActionsRegistry } from '@weasel-js/routing/react';\nimport { sceneFromJSON } from 'core/scene/scene';\nimport { isSerializedScene } from 'core/scene/serialization';\nimport type { NodeId, Scene } from 'core/scene/types';\nimport { useCanvasCamera } from './SceneCanvas/useCanvasCamera';\nimport { useHeldModifiers } from './SceneCanvas/useHeldModifiers';\nimport { useCanvasIngestion } from 'features/ingestion/useCanvasIngestion';\nimport { isSelectedNode } from 'features/paths/pathEditState';\nimport { usePathEditState } from 'features/paths/usePathEdit';\nimport { AUTO_POSE_DESCRIPTOR } from 'core/geometry/autoPoseDescriptor';\nimport type { PoseDescriptor } from 'interactions/actions/resize/geometry';\nimport type { UseResizeOptions } from 'interactions/actions/resize/options';\nimport type React from 'react';\nimport { forwardRef, useEffect, useMemo, useRef, useState } from 'react';\nimport { DeviceProfileProvider, useDeviceProfile } from '../core/device/useDeviceProfile';\nimport { dlog } from '../debug/flag';\nimport type { DebugConfig } from '../debug/types';\nimport type { ReflowTransition } from '../layout/types';\nimport { useTestHook } from '../test-hook/useTestHook';\nimport { Canvas } from './Canvas';\nimport { CanvasView } from './CanvasView';\nimport { DevHuds } from './SceneCanvas/DevHuds';\nimport { GestureDispatcherMounter } from './SceneCanvas/GestureDispatcherMounter';\nimport { PointerProviderIfRoot, PointerPublisher } from './SceneCanvas/PointerProviderIfRoot';\nimport { StandardActionsRegistrar } from './SceneCanvas/StandardActionsRegistrar';\nimport { ToolKeybindingsMounter } from './SceneCanvas/ToolKeybindingsMounter';\nimport type { FeatureBindingOptions } from './SceneCanvas/features';\nimport type { BridgeAdapter, SceneCanvasProps } from './SceneCanvas/props';\nimport { actionsMuting } from './SceneCanvas/useActionsPropResolver';\nimport { useCanvasDispatcher } from './SceneCanvas/useCanvasDispatcher';\nimport { useCanvasSelection } from './SceneCanvas/useCanvasSelection';\nimport { useCanvasTools, useEnabledFeatures, useFeatureBindings } from './SceneCanvas/useCanvasTools';\nimport { contributionEntries } from './SceneCanvas/useContributionRoles';\nimport { useNodeAtPoint } from './SceneCanvas/useNodeAtPoint';\nimport { useNodeKinds } from './SceneCanvas/useNodeKinds';\nimport { useAddedViews, useSceneCanvasHandle } from './SceneCanvas/useSceneCanvasHandle';\nimport { useSceneCanvasLayers } from './SceneCanvas/useSceneCanvasLayers';\nimport { useChromeRules, useSceneHover, useSurfaceChromeCaps } from './SceneCanvas/useSceneChrome';\nimport { useSceneRedrawSources } from './SceneCanvas/useSceneRedrawSources';\nimport { useSceneSelectTool } from './SceneCanvas/useSceneSelectTool';\nimport { useViewLayerGate } from './SceneCanvas/useViewLayerGate';\nimport { viewportZoomOption } from './SceneCanvas/useViewportActions';\nimport type { CanvasExtensionApi, SceneCanvasApi } from './canvasExtension';\nimport { useSceneAdapter } from './useSceneAdapter';\nimport { composeAlphaFor } from './sceneSlotWiring';\nimport { useHitObserver } from './useHitObserver';\nimport { ViewInputsProvider, type SurfaceViewInputs } from './viewInputs';\nimport { ViewRegistryProvider } from './viewRegistry';\nexport { SCENE_CANVAS_FEATURES } from './SceneCanvas/features';\nexport type { Feature } from './SceneCanvas/features';\nexport type { BuiltinToolOptions } from './SceneCanvas/useBuiltinShapeTools';\nexport { defaultDrawOne } from './defaultDrawOne';\nexport { rotateAroundAABBCenter } from './poseRotation';\n\n/** `<SceneCanvas debug>` minus the flag only SceneCanvas reads. */\nfunction canvasDebug(debug: (DebugConfig & { slops?: boolean }) | false): DebugConfig | false {\n if (debug === false) return false;\n const { slops: _slops, ...rest } = debug;\n return rest;\n}\n\nfunction SceneCanvasInner<TData, TLayer extends string, TPose>(\n props: SceneCanvasProps<TData, TLayer, TPose>,\n ref: React.ForwardedRef<SceneCanvasApi>,\n) {\n const {\n scene: sceneInput,\n geometry,\n poseDescriptor,\n selectTool: selectToolOpts,\n insertNodeFactories,\n insertPaint,\n ingestion,\n layoutDropTarget,\n reflowTransition,\n geometryProjection,\n routing,\n selection: selectionProp,\n selectionOptions,\n selectable = true,\n tools: toolsProp,\n features,\n enableKeybindings = true,\n claimKeys = false,\n enableGestureDispatcher = true,\n onToolsCreated,\n defaultTools,\n toolOptions,\n initialActiveTool,\n ambient,\n versionCheck,\n longPress,\n viewport,\n layers,\n actions, tune,\n describeKind,\n animator,\n views: viewDescriptors,\n children,\n debug,\n alphaFor,\n layerVisibility,\n layerOrder,\n isPointerInteractive,\n onDoubleClick,\n onClick,\n chromeVisibility,\n modes,\n pathEdit,\n getFocused: getFocusedProp,\n cursorCoordsHud, pickHud, modalityHud,\n view, onViewChange, defaultView, viewBounds, redrawOn: redrawOnProp,\n ...restProps\n } = props;\n\n const descriptor = (poseDescriptor ?? AUTO_POSE_DESCRIPTOR) as PoseDescriptor<TPose>;\n const deviceProfile = useDeviceProfile();\n\n // `scene` accepts either a live `Scene` or a `SerializedScene` JSON object. JSON is baked\n // once; later prop changes are ignored (use a `key` on `<SceneCanvas>` to force a fresh canvas).\n const [bakedScene] = useState<Scene<TData, TLayer, TPose> | null>(\n () => (isSerializedScene<TData, TLayer, TPose>(sceneInput) ? sceneFromJSON(sceneInput, {}) : null),\n );\n const scene = bakedScene ?? (sceneInput as Scene<TData, TLayer, TPose>);\n\n const getActiveMode = useMemo(() => (modes ? getActiveModeFor(modes) : undefined), [modes]);\n const heldModifiers = useHeldModifiers();\n const redrawOn = useSceneRedrawSources({ supplied: redrawOnProp, scene, heldModifiers, animator, modes });\n\n // The canvas element, kept here so the dispatcher can attach its input listeners even when\n // the consumer passes their own forwarded ref, and the full handle, for `requestRedraw`.\n const internalCanvasRef = useRef<HTMLElement | null>(null);\n const canvasApiRef = useRef<CanvasExtensionApi | null>(null);\n\n useEffect(() => {\n dlog('scene-canvas', 'mount');\n return () => dlog('scene-canvas', 'unmount');\n }, []);\n\n const { viewState, viewAnimation, camera } = useCanvasCamera({\n view, defaultView, onViewChange, viewBounds,\n width: restProps.width,\n height: restProps.height,\n requestRedraw: () => { canvasApiRef.current?.requestRedraw(); },\n });\n const { viewRef } = viewState;\n\n const viewportZoomProp = viewport?.zoom;\n const animatedZoom = viewport?.animatedZoom;\n const resolvedViewportZoom = useMemo(\n () => viewportZoomOption(viewportZoomProp, animatedZoom),\n [viewportZoomProp, animatedZoom],\n );\n\n const selection = useCanvasSelection({\n scene, supplied: selectionProp, options: selectionOptions, selectable, describeKind,\n });\n\n // `isAllowed` is absent, not a predicate, when no mode registry is wired:\n // see `PathEditSource.isAllowed`.\n const pathEditState = usePathEditState({\n host: pathEdit,\n isAllowed: getActiveMode\n ? () => getActiveMode().allowedCapabilities.has('edits-anchors')\n : undefined,\n isSelectedNode: (id) => isSelectedNode(scene, selection, id),\n });\n\n const selectToolWithDefaults = useMemo(() => ({\n // Shift-click belongs to the anchor selection while a path is being\n // anchor-edited; see `UseSelectToolOptions.extendClickLocked`.\n extendClickLocked: () => pathEditState.getEditingId() !== '',\n ...selectToolOpts,\n }), [selectToolOpts, pathEditState]);\n\n const selectionRef = useLatest(selection);\n const { kindOfData, kindOfNode } = useNodeKinds(scene, routing);\n\n // The painted alpha of a node in this view: the caller's `alphaFor` times any per-node\n // override alpha. The pick path reads the same number the painter does, or a node faded\n // to nothing stays clickable.\n const composedAlphaFor = useMemo(\n () => composeAlphaFor(scene, alphaFor),\n [scene, alphaFor],\n );\n const viewLayerGate = useViewLayerGate(layerVisibility, layerOrder);\n\n const adapter = useSceneAdapter(scene, {\n // `adapterMethods` is memoized; `selection` itself is a fresh object each render.\n selection: selection.adapterMethods,\n poseDescriptor: descriptor,\n });\n\n const {\n selectTool: internalSelect, pickEvery: internalPickEvery, pickBest: internalPickBest,\n boundsOf: internalBoundsOf, boundsOfPose: internalBoundsOfPose, planeOfNode: internalPlaneOfNode,\n moveOptions: internalMoveOptions,\n } = useSceneSelectTool({\n scene,\n adapter,\n poseDescriptor: descriptor,\n geometry,\n // The pick tolerance is declared in screen pixels; this is what converts it.\n getView: () => viewRef.current,\n // Only when the consumer actually fades something. Without a prop the\n // composed function is just the override lookup, and the source resolves\n // that once per walk instead of once per candidate.\n ...(alphaFor ? { alphaOf: composedAlphaFor } : {}),\n ...(viewLayerGate ? { layerIsPainted: viewLayerGate } : {}),\n selectTool: selectToolWithDefaults,\n });\n\n const getNodeAtPoint = useNodeAtPoint({\n pickBest: internalPickBest, nodes: adapter, kindOfData, isPointerInteractive,\n });\n\n const enabled = useEnabledFeatures(features, viewport !== undefined);\n const { tools, internal: internalTools, takeover: toolsTakeover } = useCanvasTools({\n select: internalSelect,\n enabled,\n tools: toolsProp,\n defaultTools,\n toolOptions,\n inertia: viewport?.inertia,\n ambient,\n pressFeedback: longPress?.feedback,\n initialActiveTool,\n modes,\n onToolsCreated,\n });\n const { contributions: featureContributions, standardActionsExclude } = useFeatureBindings({\n enabled,\n tools,\n move: internalMoveOptions as FeatureBindingOptions['move'],\n rotate: (selectToolOpts?.rotate || undefined) as FeatureBindingOptions['rotate'],\n });\n\n // Rides the gesture dispatcher as an OBSERVER rather than an Action binding because the\n // prop is a notification, not a behavior: as a binding it would lose first-match-wins to\n // `enterPathEdit` on every body hit and silently stop firing.\n const getNodeAtPointRef = useLatest(getNodeAtPoint);\n const onDoubleClickObserver = useHitObserver(onDoubleClick, getNodeAtPointRef);\n const onClickObserver = useHitObserver(onClick, getNodeAtPointRef);\n\n // `selectTool.rotate === false` disables rotation: its action is muted here and its\n // handle hidden by `useChromeRules`.\n const rotateOff = selectToolOpts?.rotate === false;\n const resolvedActions = useMemo<ActionsProp | undefined>(\n () => (rotateOff ? actionsMuting(actions, 'rotate') : actions),\n [actions, rotateOff],\n );\n\n // The wrapper's `<InputScope>` provides it.\n const actionsRegistry = useActionsRegistry();\n const { dispatcher, gestureSource, previewIdsExtra, previewPoseExtra } = useCanvasDispatcher(actionsRegistry);\n\n const { layers: wiredLayers, rotationBadge, chromeAffordancesRef } = useSceneCanvasLayers({\n layers,\n targetScale: deviceProfile.targetScale,\n scene,\n adapter,\n poseDescriptor: descriptor,\n alphaFor,\n colorOverrides: animator?.colorOverrides,\n boundsOf: internalBoundsOf,\n planeOfNode: internalPlaneOfNode,\n previewIds: previewIdsExtra,\n dispatcher,\n pathEditState,\n slops: debug !== undefined && debug !== false && debug.slops === true,\n });\n\n const { getHover, canvasRef: trackHoverOn } = useSceneHover({\n canvasApiRef, viewRef, nodeAtPointRef: getNodeAtPointRef, enabled: chromeVisibility !== undefined,\n });\n const chromeRules = useChromeRules({ enabled, selectable, rotateOff, chromeVisibility });\n const { chromeCaps, getIsVisible: getIsVisibleForCanvas, getRuleCtx: getRuleCtxForCanvas } = useSurfaceChromeCaps({\n source: {\n rules: chromeRules,\n getMode: getActiveMode,\n getFocused: getFocusedProp,\n getHover,\n getModifiers: heldModifiers.get,\n resizable: selectToolOpts?.resize?.resizable,\n editingAnchors: () => pathEditState.getEditingId() !== '',\n device: deviceProfile,\n },\n selection: selection.current as readonly NodeId[],\n viewRef,\n dispatcher,\n });\n\n const { ingest, clipboard: ingestionClipboard } = useCanvasIngestion(\n adapter, () => actionsRegistry, ingestion,\n );\n\n const { views: addedViews, addView } = useAddedViews();\n // The consumer's handle extends the primitive's with `ingest`, which needs the action stack.\n const { handleRef, ready: canvasReady } = useSceneCanvasHandle({\n ref, elementRef: internalCanvasRef, apiRef: canvasApiRef, onElement: trackHoverOn,\n ingest, viewAnimation, camera, addView,\n });\n\n // What a view needs to build its own overlay-aware state. `geometry` is the\n // same descriptor handed to `<Canvas>`, so the two cannot diverge.\n const viewInputs = useMemo<SurfaceViewInputs>(() => ({\n adapter: adapter as unknown as { getPose(id: string): unknown },\n geometry: descriptor as PoseDescriptor<unknown>,\n boundsOf: internalBoundsOf,\n boundsOfPose: internalBoundsOfPose as SurfaceViewInputs['boundsOfPose'],\n planeOfNode: internalPlaneOfNode,\n pickEvery: internalPickEvery,\n pickBest: internalPickBest,\n kindOfNode,\n chromeCaps,\n selectionApi: selection,\n rotationBadge,\n }), [adapter, descriptor, internalBoundsOf, internalBoundsOfPose, internalPlaneOfNode,\n internalPickEvery, internalPickBest, kindOfNode, chromeCaps, selection, rotationBadge]);\n\n useTestHook({\n getScene: () => scene as never,\n getSelectionIds: () => (selection.current as readonly string[] | undefined) ?? [],\n getView: () => viewRef.current,\n getActiveToolId: () => tools.active ?? null,\n });\n\n return (\n <ViewInputsProvider value={viewInputs}>\n <PointerProviderIfRoot>\n <Canvas<TPose>\n ref={handleRef}\n adapter={adapter}\n selection={selection}\n poseDescriptor={descriptor}\n tools={tools}\n layers={wiredLayers}\n // The chrome's bounds are the picker's: a node on a parallax plane is\n // boxed where the plane draws it, and a `geometry.boundsOf` reaches both.\n boundsOf={internalBoundsOf}\n boundsOfPose={internalBoundsOfPose}\n getIsVisible={getIsVisibleForCanvas}\n // The gesture surface behind `helpersRef.getGestureBounds()` /\n // `subscribeGestures()` — Canvas has no dispatcher of its own.\n gestureSource={gestureSource}\n previewPoseExtra={previewPoseExtra}\n {...(debug !== undefined ? { debug: canvasDebug(debug) } : {})}\n contentVersion={scene.getVersion}\n layerVisibility={layerVisibility}\n layerOrder={layerOrder}\n viewState={viewState}\n redrawOn={redrawOn}\n {...restProps}\n />\n <DevHuds\n cursorCoords={cursorCoordsHud}\n pick={pickHud}\n modality={modalityHud}\n canvasRef={internalCanvasRef}\n canvasApiRef={canvasApiRef}\n detachedInput={restProps.paintInto ? restProps.inputElement ?? null : undefined}\n viewRef={viewRef}\n pickEvery={internalPickEvery}\n pickBest={internalPickBest}\n />\n <PointerPublisher canvasRef={internalCanvasRef} canvasApiRef={canvasApiRef} />\n <StandardActionsRegistrar\n selection={selection}\n scene={scene}\n adapter={adapter as unknown as BridgeAdapter}\n actions={resolvedActions} tune={tune}\n excludeActions={standardActionsExclude}\n currentViewRef={viewRef}\n onViewChange={viewState.setViewFromInput}\n resizeOptions={selectToolOpts?.resize as UseResizeOptions<unknown> | undefined}\n poseDescriptor={descriptor as PoseDescriptor<unknown>}\n geometryProjection={geometryProjection}\n dispatcher={dispatcher}\n pickEvery={internalPickEvery}\n layerIsPainted={viewLayerGate}\n alphaOf={alphaFor ? composedAlphaFor : undefined}\n viewportPanEnabled={enabled.has('view') ? (viewport?.pan ?? true) : false}\n viewportZoom={enabled.has('view') ? resolvedViewportZoom : false}\n viewportPinchZoom={enabled.has('view') ? (viewport?.pinchZoom ?? true) : false}\n viewportRecenter={viewport?.recenter}\n viewAnimation={viewAnimation}\n editAnchorsExternalState={pathEditState}\n layoutDropTarget={layoutDropTarget}\n reflowTransition={reflowTransition as ReflowTransition<unknown> | null | undefined}\n insertNodeFactories={insertNodeFactories}\n insertPaint={insertPaint}\n snapPoint={toolOptions?.snapPoint}\n canvasRef={internalCanvasRef}\n canvasApiRef={canvasApiRef}\n ingestionResolveSrc={ingestion?.resolveSrc}\n ingestionSvg={ingestion?.svg}\n ingestionClipboard={ingestionClipboard}\n />\n <GestureDispatcherMounter\n canvasRef={internalCanvasRef}\n canvasApiRef={canvasApiRef}\n tools={tools}\n contributions={featureContributions}\n enabled={enableGestureDispatcher}\n keyboard={enableKeybindings}\n claimKeys={claimKeys}\n selectionRef={selectionRef}\n boundsOf={internalBoundsOf}\n planeOfNode={internalPlaneOfNode}\n pickEvery={internalPickEvery}\n pickBest={internalPickBest}\n kindOfNode={kindOfNode}\n viewRef={viewRef}\n dispatcher={dispatcher}\n getIsVisibleForCanvas={getIsVisibleForCanvas}\n getRuleCtx={getRuleCtxForCanvas}\n targetScale={deviceProfile.targetScale}\n handleHitRadius={selectToolOpts?.handleHitRadius}\n rotationBadge={rotationBadge}\n chromeAffordancesRef={chromeAffordancesRef}\n onDoubleClick={onDoubleClickObserver}\n onClick={onClickObserver}\n longPress={longPress}\n />\n <ToolKeybindingsMounter\n internalTools={internalTools}\n toolsTakeover={toolsTakeover ?? undefined}\n enableKeybindings={enableKeybindings}\n modes={modes}\n canvasApi={canvasReady ? canvasApiRef.current : null}\n versionCheck={versionCheck}\n />\n {viewDescriptors?.map((v, i) => (\n <CanvasView key={v.id} {...v} order={v.order ?? i} />\n ))}\n {contributionEntries(tools).flatMap((e) => e.views ?? []).map((v) => (\n <CanvasView key={`contribution:${v.id}`} {...v} />\n ))}\n {addedViews.map((v) => <CanvasView key={`added:${v.id}`} {...v} />)}\n {children}\n </PointerProviderIfRoot>\n </ViewInputsProvider>\n );\n}\n\nconst SceneCanvasInnerForwardRef = forwardRef(SceneCanvasInner);\n\n// The canvas's input scope sits above `SceneCanvasInner`, whose own hooks\n// (`useTools` among them) must already read this canvas's tool and registries.\n// Its device profile too, so the canvas and everything under it share one.\nfunction SceneCanvasWrapper<TData, TLayer extends string, TPose>(\n { device, ...props }: SceneCanvasProps<TData, TLayer, TPose>,\n ref: React.ForwardedRef<SceneCanvasApi>,\n) {\n return (\n <InputScope yoke={props.yoke}>\n <DeviceProfileProvider value={device}>\n <ViewRegistryProvider>\n <SceneCanvasInnerForwardRef {...(props as SceneCanvasProps<unknown, string, unknown>)} ref={ref} />\n </ViewRegistryProvider>\n </DeviceProfileProvider>\n </InputScope>\n );\n}\n\n/**\n * The canvas component: renders a `Scene` and wires the interaction stack\n * around it.\n *\n * Mounted bare it renders the scene, keeps a selection no input sets, and\n * runs a gesture dispatcher for whatever bindings the consumer adds. The\n * `features` presets turn the kit's behavior on — `features={['draw']}` is the\n * whole editor: tools, standard actions and their keys, selection chrome,\n * undo. This is the intended entry point; the lower-level primitives it\n * composes are not part of the public surface.\n *\n * Its ref exposes a `SceneCanvasApi` for the imperative operations that do not\n * fit a prop (view control, hit queries, redraw requests).\n */\nexport const SceneCanvas = forwardRef(SceneCanvasWrapper) as <\n TData, TLayer extends string, TPose,\n>(\n props: SceneCanvasProps<TData, TLayer, TPose> & { ref?: React.Ref<SceneCanvasApi> },\n) => ReturnType<typeof SceneCanvasInner>;\n\nexport { DEFAULT_HANDLE_SIZE, mergeLayersWithDefaults, BUILTIN_TOOL_IDS } from './SceneCanvas/props';\nexport type {\n SceneCanvasProps,\n SceneCanvasHit,\n SceneCanvasLayers,\n SceneCanvasLongPress,\n BuiltinToolId,\n} from './SceneCanvas/props';\nexport type { CoordTraceEntry } from './SceneCanvas/coordTrace';\n"],"mappings":"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"}
1
+ {"version":3,"file":"SceneCanvas.js","names":[],"sources":["../../src/canvas/SceneCanvas.tsx"],"sourcesContent":["/**\n * `<SceneCanvas>` — `<Canvas>` wired to a `Scene` primitive. Bare, it only renders: behavior\n * comes from the `features` presets (`canvas/SceneCanvas/features.ts`), each of which turns on\n * its own actions, tools, ambient bindings, and chrome.\n *\n * A consumer needing custom tools can pass `tools={useTools(...)}` and SceneCanvas forwards it\n * as-is — the internal tool registry is ignored in that case.\n */\nimport { getActiveModeFor } from '@weasel-js/modes';\nimport { useLatest } from '@weasel-js/react';\nimport { InputScope, useActionsRegistry } from '@weasel-js/routing/react';\nimport type { NodeId, Scene } from 'core/scene/types';\nimport { useCanvasCamera } from './SceneCanvas/useCanvasCamera';\nimport { useHeldModifiers } from './SceneCanvas/useHeldModifiers';\nimport { useCanvasIngestion } from 'features/ingestion/useCanvasIngestion';\nimport { AUTO_POSE_DESCRIPTOR } from 'core/geometry/autoPoseDescriptor';\nimport type { PoseDescriptor } from 'interactions/actions/resize/geometry';\nimport type React from 'react';\nimport { forwardRef, useMemo, useRef } from 'react';\nimport { DeviceProfileProvider, useDeviceProfile } from '../core/device/useDeviceProfile';\nimport { Canvas } from './Canvas';\nimport { CanvasView } from './CanvasView';\nimport { canvasDebug, DevHuds } from './SceneCanvas/DevHuds';\nimport { CanvasKitProviders } from './SceneCanvas/CanvasKitProviders';\nimport { canvasPassThrough } from './SceneCanvas/canvasPassThrough';\nimport { SceneCanvasInput, type SceneCanvasInputOptions } from './SceneCanvas/SceneCanvasInput';\nimport type { PresetSource } from './SceneCanvas/features';\nimport { CORE_PRESET_SOURCE } from './SceneCanvas/namedPresets';\nimport type { BridgeAdapter, SceneCanvasProps } from './SceneCanvas/props';\nimport { useBakedScene } from './SceneCanvas/useBakedScene';\nimport { useCanvasDispatcher } from './SceneCanvas/useCanvasDispatcher';\nimport { useCanvasSelection } from './SceneCanvas/useCanvasSelection';\nimport { useEnabledFeatures } from './SceneCanvas/useCanvasTools';\nimport { contributionEntries } from './SceneCanvas/useContributionRoles';\nimport { useAddedViews, useSceneCanvasHandle } from './SceneCanvas/useSceneCanvasHandle';\nimport { useSceneCanvasLayers } from './SceneCanvas/useSceneCanvasLayers';\nimport { useSceneCanvasPathEdit } from './SceneCanvas/useSceneCanvasPathEdit';\nimport { useSceneCanvasTools, type SceneCanvasToolProps } from './SceneCanvas/useSceneCanvasTools';\nimport { useSceneCanvasChrome } from './SceneCanvas/useSceneChrome';\nimport { useSceneRedrawSources } from './SceneCanvas/useSceneRedrawSources';\nimport { useScenePicking } from './SceneCanvas/useScenePicking';\nimport { useSurfaceViewInputs } from './SceneCanvas/useSurfaceViewInputs';\nimport type { CanvasExtensionApi, SceneCanvasApi } from './canvasExtension';\nimport { ViewRegistryProvider } from './viewRegistry';\nexport { SCENE_CANVAS_FEATURES, type Feature } from './SceneCanvas/features';\nexport type { BuiltinToolOptions } from './SceneCanvas/useBuiltinShapeTools';\nexport { defaultDrawOne } from './defaultDrawOne';\nexport { rotateAroundAABBCenter } from './poseRotation';\n\nfunction SceneCanvasInner<TData, TLayer extends string, TPose>(\n props: SceneCanvasProps<TData, TLayer, TPose> & { presetSource: PresetSource },\n ref: React.ForwardedRef<SceneCanvasApi>,\n) {\n const { selectTool: selectToolOpts, selectable = true, viewport, modes, debug } = props;\n const descriptor = (props.poseDescriptor ?? AUTO_POSE_DESCRIPTOR) as PoseDescriptor<TPose>;\n const deviceProfile = useDeviceProfile();\n const scene = useBakedScene(props.scene);\n const getActiveMode = useMemo(() => (modes ? getActiveModeFor(modes) : undefined), [modes]);\n const heldModifiers = useHeldModifiers();\n\n // Our own refs, so input listeners attach even when the consumer forwards its own ref.\n const internalCanvasRef = useRef<HTMLElement | null>(null);\n const canvasApiRef = useRef<CanvasExtensionApi | null>(null);\n const declaredSize = useLatest({ width: props.width ?? 0, height: props.height ?? 0 });\n const { viewState, viewAnimation, camera } = useCanvasCamera({\n view: props.view, defaultView: props.defaultView, onViewChange: props.onViewChange, viewBounds: props.viewBounds,\n dims: () => canvasApiRef.current?.getSurfaceRect() ?? declaredSize.current,\n requestRedraw: () => { canvasApiRef.current?.requestRedraw(); },\n });\n const { viewRef } = viewState;\n const selection = useCanvasSelection({\n scene, supplied: props.selection, options: props.selectionOptions, selectable, describeKind: props.describeKind,\n });\n const enabled = useEnabledFeatures(props.features, props.presetSource.named, viewport !== undefined);\n const { pathEditState, selectToolWithDefaults } = useSceneCanvasPathEdit({\n host: props.pathEdit, opening: props.defaultPathEdit, getActiveMode, scene, selection,\n extensions: enabled.pathEdit, selectTool: selectToolOpts,\n });\n const picking = useScenePicking({ scene, selection, descriptor, props, viewRef, selectTool: selectToolWithDefaults });\n const { adapter, boundsOf, planeOfNode } = picking;\n const getNodeAtPointRef = useLatest(picking.getNodeAtPoint);\n const tools = useSceneCanvasTools({\n props: props as SceneCanvasToolProps, select: picking.selectTool, move: picking.moveOptions,\n scene: scene as Scene<unknown, string, unknown>, selection, enabled, presetSource: props.presetSource,\n });\n\n // `selectTool.rotate === false` disables rotation: its action is muted by the standard\n // actions and its handle hidden by `useChromeRules`.\n const rotateOff = selectToolOpts?.rotate === false;\n\n // The wrapper's `<InputScope>` provides it.\n const actionsRegistry = useActionsRegistry();\n const { dispatcher, gestureSource, previewIdsExtra, previewPoseExtra } = useCanvasDispatcher(actionsRegistry);\n\n const layered = useSceneCanvasLayers({\n layers: props.layers, targetScale: deviceProfile.targetScale, scene, adapter, poseDescriptor: descriptor,\n alphaFor: props.alphaFor, colorOverrides: props.animator?.colorOverrides, boundsOf, planeOfNode,\n poseTransition: props.poseTransition, previewIds: previewIdsExtra, dispatcher, snapReadout: props.snap?.readout !== false, snapReadoutStyle: props.snap?.readoutStyle, pathEditState,\n slops: debug !== undefined && debug !== false && debug.slops === true,\n boundsIncludeStroke: props.geometry?.boundsIncludeStroke ?? true, selectTool: selectToolOpts,\n });\n const redrawOn = useSceneRedrawSources({ props, scene, heldModifiers, departures: layered.departures });\n\n const chrome = useSceneCanvasChrome({\n source: {\n getMode: getActiveMode, getFocused: props.getFocused, getModifiers: heldModifiers.get,\n resizable: selectToolOpts?.resize?.resizable,\n editingAnchors: () => pathEditState.getEditingId() !== '',\n device: deviceProfile,\n },\n rules: { enabled, selectable, rotateOff, chromeVisibility: props.chromeVisibility },\n hover: { canvasApiRef, nodeAtPointRef: getNodeAtPointRef },\n selection: selection.current as readonly NodeId[], viewRef, dispatcher,\n });\n\n const { ingest, clipboard: ingestionClipboard } = useCanvasIngestion(adapter, () => actionsRegistry, props.ingestion);\n const { views: addedViews, addView, viewAt } = useAddedViews();\n // The consumer's handle extends the primitive's with `ingest`, which needs the action stack.\n const { handleRef, ready: canvasReady } = useSceneCanvasHandle({\n ref, elementRef: internalCanvasRef, apiRef: canvasApiRef, onElement: chrome.trackHoverOn,\n ingest, viewAnimation, camera, addView, viewAt,\n });\n const viewInputs = useSurfaceViewInputs({ picking, selection, resizeHandles: layered.resizeHandles,\n descriptor: descriptor as PoseDescriptor<unknown>, chromeCaps: chrome.chromeCaps, rotationBadge: layered.rotationBadge,\n });\n\n return (\n <CanvasKitProviders viewInputs={viewInputs}>\n <Canvas<TPose>\n ref={handleRef} adapter={adapter} selection={selection} poseDescriptor={descriptor}\n tools={tools.tools} layers={layered.layers}\n // The chrome's bounds are the picker's: a node on a parallax plane is\n // boxed where the plane draws it, and a `geometry.boundsOf` reaches both.\n boundsOf={boundsOf} boundsOfPose={picking.boundsOfPose}\n getIsVisible={chrome.getIsVisible}\n // The gesture surface behind `helpersRef.getGestureBounds()` /\n // `subscribeGestures()` — Canvas has no dispatcher of its own.\n gestureSource={gestureSource}\n previewPoseExtra={previewPoseExtra}\n {...(debug !== undefined ? { debug: canvasDebug(debug) } : {})}\n contentVersion={scene.getVersion} layerVisibility={props.layerVisibility} layerOrder={props.layerOrder}\n viewState={viewState} redrawOn={redrawOn}\n {...canvasPassThrough(props)}\n />\n <DevHuds\n cursorCoords={props.cursorCoordsHud} pick={props.pickHud} modality={props.modalityHud}\n canvasRef={internalCanvasRef} canvasApiRef={canvasApiRef}\n detachedInput={props.paintInto ? props.inputElement ?? null : undefined}\n viewRef={viewRef} pickEvery={picking.pickEvery} pickBest={picking.pickBest}\n />\n <SceneCanvasInput\n props={props as SceneCanvasInputOptions} scene={scene as Scene<unknown, string, unknown>}\n selection={selection} descriptor={descriptor as PoseDescriptor<unknown>}\n picking={{ ...picking, adapter: adapter as unknown as BridgeAdapter }} nodeAtPointRef={getNodeAtPointRef}\n tools={tools} rotateOff={rotateOff} viewOn={enabled.has('view')} camera={{ viewState, viewAnimation }}\n dispatcher={dispatcher} pathEdit={{ state: pathEditState }}\n chrome={chrome} overlay={layered} ingestionClipboard={ingestionClipboard}\n canvas={{ elementRef: internalCanvasRef, apiRef: canvasApiRef, ready: canvasReady }} snapSources={enabled.snapSources} snapStore={layered.snapStore}\n />\n {props.views?.map((v, i) => <CanvasView key={v.id} {...v} order={v.order ?? i} />)}\n {contributionEntries(tools.tools).flatMap((e) => e.views ?? []).map((v) => (\n <CanvasView key={`contribution:${v.id}`} {...v} />\n ))}\n {addedViews.map((v) => <CanvasView key={`added:${v.id}`} {...v} />)}\n {props.children}\n </CanvasKitProviders>\n );\n}\n\nconst SceneCanvasInnerForwardRef = forwardRef(SceneCanvasInner);\n\n// The canvas's input scope sits above `SceneCanvasInner`, whose own hooks\n// (`useTools` among them) must already read this canvas's tool and registries.\n// Its device profile too, so the canvas and everything under it share one.\n/** A scene canvas resolving its `features` through `source`. */\nexport function renderSceneCanvas<TData, TLayer extends string, TPose>(\n source: PresetSource,\n { device, ...props }: SceneCanvasProps<TData, TLayer, TPose>,\n ref: React.ForwardedRef<SceneCanvasApi>,\n) {\n return (\n <InputScope yoke={props.yoke}>\n <DeviceProfileProvider value={device}>\n <ViewRegistryProvider>\n <SceneCanvasInnerForwardRef {...(props as SceneCanvasProps<unknown, string, unknown>)} presetSource={source} ref={ref} />\n </ViewRegistryProvider>\n </DeviceProfileProvider>\n </InputScope>\n );\n}\n\nfunction SceneCanvasWrapper<TData, TLayer extends string, TPose>(\n props: SceneCanvasProps<TData, TLayer, TPose>, ref: React.ForwardedRef<SceneCanvasApi>,\n) {\n return renderSceneCanvas(CORE_PRESET_SOURCE, props, ref);\n}\n\n// Marked pure so a bundle using only `LeanSceneCanvas` drops it, and core's named presets with it.\n/**\n * The canvas component: renders a `Scene` and wires the interaction stack\n * around it.\n *\n * Mounted bare it renders the scene, keeps a selection no input sets, and\n * runs a gesture dispatcher for whatever bindings the consumer adds. The\n * `features` presets turn the kit's behavior on — `features={['draw']}` is the\n * whole editor: tools, standard actions and their keys, selection chrome,\n * undo. This is the intended entry point; the lower-level primitives it\n * composes are not part of the public surface.\n *\n * Its ref exposes a `SceneCanvasApi` for the imperative operations that do not\n * fit a prop (view control, hit queries, redraw requests).\n */\nexport const SceneCanvas = /* @__PURE__ */ forwardRef(SceneCanvasWrapper) as <\n TData, TLayer extends string, TPose,\n>(\n props: SceneCanvasProps<TData, TLayer, TPose> & { ref?: React.Ref<SceneCanvasApi> },\n) => ReturnType<typeof SceneCanvasInner>;\n\nexport { DEFAULT_HANDLE_SIZE, BUILTIN_TOOL_IDS } from './SceneCanvas/props';\nexport { mergeLayersWithDefaults } from './SceneCanvas/mergeLayers';\nexport type {\n SceneCanvasProps, SceneCanvasHit, SceneCanvasLayers, SceneCanvasLongPress, BuiltinToolId,\n} from './SceneCanvas/props';\nexport type { CoordTraceEntry } from './SceneCanvas/coordTrace';\n"],"mappings":"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"}
@@ -1,50 +1,76 @@
1
- import { normalizeView as e } from "../core/viewport/view.js";
2
- import { useCanvasSurface as t } from "./useCanvasSurface.js";
3
- import { SurfaceCanvas as n } from "./SurfaceCanvas.js";
4
- import { sceneViewFrame as r } from "./sceneViewRender.js";
5
- import { useCallback as i, useEffect as a, useRef as o, useSyncExternalStore as s } from "react";
6
- import { assignRef as c } from "@weasel-js/react";
7
- import { jsx as l } from "react/jsx-runtime";
1
+ import { normalizeView } from "../core/viewport/view.js";
2
+ import { useCanvasSurface } from "./useCanvasSurface.js";
3
+ import { SurfaceCanvas } from "./SurfaceCanvas.js";
4
+ import { useSurfaceSize } from "./useSurfaceSize.js";
5
+ import { sceneViewFrame } from "./sceneViewRender.js";
6
+ import { useCallback, useEffect, useRef, useSyncExternalStore } from "react";
7
+ import { assignRef } from "@weasel-js/react";
8
+ import { jsx } from "react/jsx-runtime";
9
+
8
10
  //#region src/canvas/SceneViewCanvas.tsx
9
- function u(u) {
10
- let { scene: d, width: f, height: p, drawOne: m, extraCommands: h, alphaFor: g, layerVisibility: _, layerOrder: v, animator: y, className: b, canvasRef: x, cull: S, paintBounds: C } = u, w = e(u.view);
11
- s(d.subscribe, d.getVersion, d.getVersion);
12
- let T = o(null), E = i((e) => {
13
- T.current = e, c(x, e);
14
- }, [x]), { requestRedraw: D } = t((e) => {
15
- let t = T.current;
16
- if (!t) return !1;
17
- let n = r({
18
- scene: d,
19
- view: w,
20
- width: f,
21
- height: p,
22
- drawOne: m,
23
- extraCommands: h,
24
- alphaFor: g,
25
- layerVisibility: _,
26
- layerOrder: v,
27
- colorOverrides: y?.colorOverrides,
28
- cull: S,
29
- paintBounds: C
11
+ /**
12
+ * `<SceneViewCanvas>` — pointer-inert, read-only render of a `Scene` at a
13
+ * given `View` into its own `<canvas>` DOM element.
14
+ *
15
+ * It paints through `useFrameLoop` rather than from React: a render and an
16
+ * override commit both just mark the surface dirty. The mount paint is
17
+ * synchronous, so the first frame the user sees is the scene, and nothing
18
+ * paints while the canvas is off screen or the tab is hidden.
19
+ */
20
+ function SceneViewCanvasInner(props) {
21
+ const { scene, drawOne, extraCommands, alphaFor, layerVisibility, layerOrder, animator, className, canvasRef, cull, paintBounds } = props;
22
+ const view = normalizeView(props.view);
23
+ useSyncExternalStore(scene.subscribe, scene.getVersion, scene.getVersion);
24
+ const localRef = useRef(null);
25
+ const setCanvasRef = useCallback((el) => {
26
+ localRef.current = el;
27
+ assignRef(canvasRef, el);
28
+ }, [canvasRef]);
29
+ const { width, height } = useSurfaceSize(props, localRef);
30
+ const paint = (lease) => {
31
+ const canvas = localRef.current;
32
+ if (!canvas || width === 0 || height === 0) return false;
33
+ const commands = sceneViewFrame({
34
+ scene,
35
+ view,
36
+ width,
37
+ height,
38
+ drawOne,
39
+ extraCommands,
40
+ alphaFor,
41
+ layerVisibility,
42
+ layerOrder,
43
+ colorOverrides: animator?.colorOverrides,
44
+ cull,
45
+ paintBounds
30
46
  });
31
- return e.paint(t, n, w, {
32
- width: f,
33
- height: p
47
+ return lease.paint(canvas, commands, view, {
48
+ width,
49
+ height
34
50
  });
35
- }, {
36
- target: T,
37
- paintOnCommit: !0
51
+ };
52
+ const { requestRedraw } = useCanvasSurface(paint, {
53
+ target: localRef,
54
+ onCommit: "paint"
38
55
  });
39
- return a(() => d.overrides.subscribe(D), [d, D]), a(() => y?.onTick(D), [y, D]), /* @__PURE__ */ l(n, {
40
- ref: E,
41
- width: f,
42
- height: p,
43
- className: b
56
+ useEffect(() => scene.overrides.subscribe(requestRedraw), [scene, requestRedraw]);
57
+ useEffect(() => animator?.onTick(requestRedraw), [animator, requestRedraw]);
58
+ return /* @__PURE__ */ jsx(SurfaceCanvas, {
59
+ ref: setCanvasRef,
60
+ width: props.width,
61
+ height: props.height,
62
+ className
44
63
  });
45
64
  }
46
- var d = u;
47
- //#endregion
48
- export { d as SceneViewCanvas };
65
+ /**
66
+ * Pointer-inert read-only scene view. It attaches no event listeners;
67
+ * consumers attach their own through `canvasRef`, a plain prop because
68
+ * `forwardRef` erases the component's generics. `width` and `height` are CSS
69
+ * pixels and size the drawing buffer; a `className` rule that sizes the
70
+ * element stretches that buffer to fit. Given neither, it fills its parent.
71
+ */
72
+ var SceneViewCanvas = SceneViewCanvasInner;
49
73
 
74
+ //#endregion
75
+ export { SceneViewCanvas };
50
76
  //# sourceMappingURL=SceneViewCanvas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SceneViewCanvas.js","names":["SceneViewCanvasInner","props","view","normalizeView","scene","localRef","useRef","setCanvasRef","useCallback","el","assignRef","canvasRef","useCanvasSurface","canvas","commands","sceneViewFrame","animator","lease","useEffect","requestRedraw","SurfaceCanvas","SceneViewCanvas"],"sources":["../../src/canvas/SceneViewCanvas.tsx"],"sourcesContent":["/**\n * `<SceneViewCanvas>` — pointer-inert, read-only render of a `Scene` at a\n * given `View` into its own `<canvas>` DOM element.\n *\n * It paints through `useFrameLoop` rather than from React: a render and an\n * override commit both just mark the surface dirty. The mount paint is\n * synchronous, so the first frame the user sees is the scene, and nothing\n * paints while the canvas is off screen or the tab is hidden.\n */\nimport {\n useCallback,\n useEffect,\n useRef,\n useSyncExternalStore,\n} from 'react';\nimport type { Ref } from 'react';\nimport { assignRef } from '@weasel-js/react';\nimport { useCanvasSurface } from './useCanvasSurface';\nimport type { CanvasRendererLease } from './canvasRenderer';\nimport { SurfaceCanvas } from './SurfaceCanvas';\nimport { sceneViewFrame } from './sceneViewRender';\nimport type { RenderSceneToCanvasArgs, SceneViewDrawOne, SceneViewLayers } from './sceneViewRender';\nimport type { DrawCommand } from '@weasel-js/renderer';\nimport { normalizeView, type View } from '../core/viewport/view';\nimport type { Scene } from '../core/scene/types';\nimport type { Animator } from '@weasel-js/animator';\n\n/** Props for `<SceneViewCanvas>`. */\nexport interface SceneViewCanvasProps<TData, TLayer extends string, TPose> {\n /** Scene to render. The component subscribes to it and repaints when it\n * changes. */\n scene: Scene<TData, TLayer, TPose>;\n /** Camera. Applied to scene + `extraCommands` via the renderer's group\n * transform. */\n view: View;\n /** CSS-pixel width. Drives both layout (via the rendered drawing-buffer\n * size) and the renderer's coordinate space. */\n width: number;\n /** CSS-pixel height. */\n height: number;\n /** Per-node draw callback. See `SceneViewDrawOne`. The consumer is\n * responsible for what gets painted — there is no AABB-fill default. */\n drawOne: SceneViewDrawOne<TData, TLayer, TPose>;\n /** Optional extra commands appended after scene commands, inside the same\n * view transform — a world-space annotation over the scene. */\n extraCommands?: ReadonlyArray<DrawCommand>;\n /** Optional per-id alpha multiplier, mirroring `<SceneCanvas>`'s scene-slot\n * `alphaFor`. Pass the same function the main canvas uses to keep a\n * scoping-dim treatment consistent across both. Defaults to `() => 1`. */\n alphaFor?: (id: string) => number;\n /** Hide scene layers in this view only, keyed `scene:<layerId>` as on\n * `<SceneCanvas>` — pass the main canvas's map to keep the two in step. */\n layerVisibility?: SceneViewLayers['layerVisibility'];\n /** Paint order for this view, keyed as `layerVisibility`. */\n layerOrder?: SceneViewLayers['layerOrder'];\n /** Skip nodes and commands that cannot reach this view — the scene slot's\n * `cull`. Off by default; worth it when the view shows a small part of a\n * large scene. */\n cull?: boolean;\n /** Where `drawOne`'s output for a node can reach — the scene slot's\n * `paintBounds`. Defaults to `defaultPaintBounds` when `drawOne` is\n * `defaultDrawOne`. */\n paintBounds?: RenderSceneToCanvasArgs<TData, TLayer, TPose>['paintBounds'];\n /** Optional animator, as on `<SceneCanvas>`: the view repaints on its ticks\n * and paints its `colorOverrides`. Pass the main canvas's animator so both\n * show the same colors. */\n animator?: Animator;\n /** Optional CSS class for the `<canvas>`. Its size is `width` × `height`\n * unless a rule on this class sizes it. */\n className?: string;\n /** Forwarded ref to the underlying `<canvas>`. Consumers attach their own\n * pointer listeners or call `toBlob` for snapshots through this. */\n canvasRef?: Ref<HTMLCanvasElement>;\n}\n\nfunction SceneViewCanvasInner<TData, TLayer extends string, TPose>(\n props: SceneViewCanvasProps<TData, TLayer, TPose>,\n) {\n const {\n scene, width, height, drawOne, extraCommands, alphaFor, layerVisibility, layerOrder,\n animator, className, canvasRef, cull, paintBounds,\n } = props;\n const view = normalizeView(props.view);\n\n // Subscribe to scene version. The snapshot value isn't used directly —\n // we only need React to re-render the component when the scene mutates.\n useSyncExternalStore(scene.subscribe, scene.getVersion, scene.getVersion);\n\n const localRef = useRef<HTMLCanvasElement | null>(null);\n\n const setCanvasRef = useCallback((el: HTMLCanvasElement | null): void => {\n localRef.current = el;\n assignRef(canvasRef, el);\n }, [canvasRef]);\n\n const paint = (lease: CanvasRendererLease): boolean => {\n const canvas = localRef.current;\n if (!canvas) return false;\n const commands = sceneViewFrame({\n scene,\n view,\n width,\n height,\n drawOne,\n extraCommands: extraCommands as DrawCommand[] | undefined,\n alphaFor,\n layerVisibility,\n layerOrder,\n colorOverrides: animator?.colorOverrides,\n cull,\n paintBounds,\n });\n return lease.paint(canvas, commands, view, { width, height });\n };\n const { requestRedraw } = useCanvasSurface(paint, { target: localRef, paintOnCommit: true });\n\n // Override writes never bump the scene version, so the version subscription\n // above cannot see them.\n useEffect(() => scene.overrides.subscribe(requestRedraw), [scene, requestRedraw]);\n useEffect(() => animator?.onTick(requestRedraw), [animator, requestRedraw]);\n\n return (\n <SurfaceCanvas\n ref={setCanvasRef}\n width={width}\n height={height}\n className={className}\n />\n );\n}\n\n/**\n * Pointer-inert read-only scene view. It attaches no event listeners;\n * consumers attach their own through `canvasRef`, a plain prop because\n * `forwardRef` erases the component's generics. `width` and `height` are CSS\n * pixels and size the drawing buffer; a `className` rule that sizes the\n * element stretches that buffer to fit.\n */\nexport const SceneViewCanvas = SceneViewCanvasInner;\n"],"mappings":";;;;;;;;AA2EA,SAASA,EACP,GACA;CACA,IAAM,EACJ,UAAO,UAAO,WAAQ,YAAS,kBAAe,aAAU,oBAAiB,eACzE,aAAU,cAAW,cAAW,SAAM,mBACpCC,GACEC,IAAOC,EAAcF,EAAM,IAAI;CAIrC,EAAqBG,EAAM,WAAWA,EAAM,YAAYA,EAAM,UAAU;CAExE,IAAMC,IAAWC,EAAiC,IAAI,GAEhDC,IAAeC,GAAa,MAAuC;EAEvE,AADA,EAAS,UAAUC,GACnBC,EAAUC,GAAWF,CAAE;CACzB,GAAG,CAACE,CAAS,CAAC,GAqBR,EAAE,qBAAkBC,GAnBX,MAAwC;EACrD,IAAMC,IAASR,EAAS;EACxB,IAAI,CAACQ,GAAQ,OAAO;EACpB,IAAMC,IAAWC,EAAe;GAC9B;GACA;GACA;GACA;GACA;GACe;GACf;GACA;GACA;GACA,gBAAgBC,GAAU;GAC1B;GACA;EACF,CAAC;EACD,OAAOC,EAAM,MAAMJ,GAAQC,GAAUZ,GAAM;GAAE;GAAO;EAAO,CAAC;CAC9D,GACkD;EAAE,QAAQG;EAAU,eAAe;CAAK,CAAC;CAO3F,OAHAa,QAAgBd,EAAM,UAAU,UAAUe,CAAa,GAAG,CAACf,GAAOe,CAAa,CAAC,GAChFD,QAAgBF,GAAU,OAAOG,CAAa,GAAG,CAACH,GAAUG,CAAa,CAAC,GAGxE,kBAACC,GAAD;EACE,KAAKb;EACE;EACC;EACG;CACZ,CAAA;AAEL;AASA,IAAac,IAAkBrB"}
1
+ {"version":3,"file":"SceneViewCanvas.js","names":[],"sources":["../../src/canvas/SceneViewCanvas.tsx"],"sourcesContent":["/**\n * `<SceneViewCanvas>` — pointer-inert, read-only render of a `Scene` at a\n * given `View` into its own `<canvas>` DOM element.\n *\n * It paints through `useFrameLoop` rather than from React: a render and an\n * override commit both just mark the surface dirty. The mount paint is\n * synchronous, so the first frame the user sees is the scene, and nothing\n * paints while the canvas is off screen or the tab is hidden.\n */\nimport {\n useCallback,\n useEffect,\n useRef,\n useSyncExternalStore,\n} from 'react';\nimport type { Ref } from 'react';\nimport { assignRef } from '@weasel-js/react';\nimport { useCanvasSurface } from './useCanvasSurface';\nimport type { CanvasRendererLease } from './canvasRenderer';\nimport { SurfaceCanvas } from './SurfaceCanvas';\nimport { useSurfaceSize, type SurfaceSizeProps } from './useSurfaceSize';\nimport { sceneViewFrame } from './sceneViewRender';\nimport type { RenderSceneToCanvasArgs, SceneViewDrawOne, SceneViewLayers } from './sceneViewRender';\nimport type { DrawCommand } from '@weasel-js/renderer';\nimport { normalizeView, type View } from '../core/viewport/view';\nimport type { Scene } from '../core/scene/types';\nimport type { Animator } from '@weasel-js/animator';\n\n/** Props for `<SceneViewCanvas>`. */\nexport interface SceneViewCanvasProps<TData, TLayer extends string, TPose> extends SurfaceSizeProps {\n /** Scene to render. The component subscribes to it and repaints when it\n * changes. */\n scene: Scene<TData, TLayer, TPose>;\n /** Camera. Applied to scene + `extraCommands` via the renderer's group\n * transform. */\n view: View;\n /** Per-node draw callback. See `SceneViewDrawOne`. The consumer is\n * responsible for what gets painted — there is no AABB-fill default. */\n drawOne: SceneViewDrawOne<TData, TLayer, TPose>;\n /** Optional extra commands appended after scene commands, inside the same\n * view transform — a world-space annotation over the scene. */\n extraCommands?: ReadonlyArray<DrawCommand>;\n /** Optional per-id alpha multiplier, mirroring `<SceneCanvas>`'s scene-slot\n * `alphaFor`. Pass the same function the main canvas uses to keep a\n * scoping-dim treatment consistent across both. Defaults to `() => 1`. */\n alphaFor?: (id: string) => number;\n /** Hide scene layers in this view only, keyed `scene:<layerId>` as on\n * `<SceneCanvas>` — pass the main canvas's map to keep the two in step. */\n layerVisibility?: SceneViewLayers['layerVisibility'];\n /** Paint order for this view, keyed as `layerVisibility`. */\n layerOrder?: SceneViewLayers['layerOrder'];\n /** Skip nodes and commands that cannot reach this view — the scene slot's\n * `cull`. Off by default; worth it when the view shows a small part of a\n * large scene. */\n cull?: boolean;\n /** Where `drawOne`'s output for a node can reach — the scene slot's\n * `paintBounds`. Defaults to `defaultPaintBounds` when `drawOne` is\n * `defaultDrawOne`. */\n paintBounds?: RenderSceneToCanvasArgs<TData, TLayer, TPose>['paintBounds'];\n /** Optional animator, as on `<SceneCanvas>`: the view repaints on its ticks\n * and paints its `colorOverrides`. Pass the main canvas's animator so both\n * show the same colors. */\n animator?: Animator;\n /** Optional CSS class for the `<canvas>`. Its size is `width` × `height`\n * unless a rule on this class sizes it. */\n className?: string;\n /** Forwarded ref to the underlying `<canvas>`. Consumers attach their own\n * pointer listeners or call `toBlob` for snapshots through this. */\n canvasRef?: Ref<HTMLCanvasElement>;\n}\n\nfunction SceneViewCanvasInner<TData, TLayer extends string, TPose>(\n props: SceneViewCanvasProps<TData, TLayer, TPose>,\n) {\n const {\n scene, drawOne, extraCommands, alphaFor, layerVisibility, layerOrder,\n animator, className, canvasRef, cull, paintBounds,\n } = props;\n const view = normalizeView(props.view);\n\n // Subscribe to scene version. The snapshot value isn't used directly —\n // we only need React to re-render the component when the scene mutates.\n useSyncExternalStore(scene.subscribe, scene.getVersion, scene.getVersion);\n\n const localRef = useRef<HTMLCanvasElement | null>(null);\n\n const setCanvasRef = useCallback((el: HTMLCanvasElement | null): void => {\n localRef.current = el;\n assignRef(canvasRef, el);\n }, [canvasRef]);\n const { width, height } = useSurfaceSize(props, localRef);\n\n const paint = (lease: CanvasRendererLease): boolean => {\n const canvas = localRef.current;\n if (!canvas || width === 0 || height === 0) return false;\n const commands = sceneViewFrame({\n scene,\n view,\n width,\n height,\n drawOne,\n extraCommands: extraCommands as DrawCommand[] | undefined,\n alphaFor,\n layerVisibility,\n layerOrder,\n colorOverrides: animator?.colorOverrides,\n cull,\n paintBounds,\n });\n return lease.paint(canvas, commands, view, { width, height });\n };\n const { requestRedraw } = useCanvasSurface(paint, { target: localRef, onCommit: 'paint' });\n\n // Override writes never bump the scene version, so the version subscription\n // above cannot see them.\n useEffect(() => scene.overrides.subscribe(requestRedraw), [scene, requestRedraw]);\n useEffect(() => animator?.onTick(requestRedraw), [animator, requestRedraw]);\n\n return (\n <SurfaceCanvas\n ref={setCanvasRef}\n width={props.width}\n height={props.height}\n className={className}\n />\n );\n}\n\n/**\n * Pointer-inert read-only scene view. It attaches no event listeners;\n * consumers attach their own through `canvasRef`, a plain prop because\n * `forwardRef` erases the component's generics. `width` and `height` are CSS\n * pixels and size the drawing buffer; a `className` rule that sizes the\n * element stretches that buffer to fit. Given neither, it fills its parent.\n */\nexport const SceneViewCanvas = SceneViewCanvasInner;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAuEA,SAAS,qBACP,OACA;CACA,MAAM,EACJ,OAAO,SAAS,eAAe,UAAU,iBAAiB,YAC1D,UAAU,WAAW,WAAW,MAAM,gBACpC;CACJ,MAAM,OAAO,cAAc,MAAM,IAAI;CAIrC,qBAAqB,MAAM,WAAW,MAAM,YAAY,MAAM,UAAU;CAExE,MAAM,WAAW,OAAiC,IAAI;CAEtD,MAAM,eAAe,aAAa,OAAuC;EACvE,SAAS,UAAU;EACnB,UAAU,WAAW,EAAE;CACzB,GAAG,CAAC,SAAS,CAAC;CACd,MAAM,EAAE,OAAO,WAAW,eAAe,OAAO,QAAQ;CAExD,MAAM,SAAS,UAAwC;EACrD,MAAM,SAAS,SAAS;EACxB,IAAI,CAAC,UAAU,UAAU,KAAK,WAAW,GAAG,OAAO;EACnD,MAAM,WAAW,eAAe;GAC9B;GACA;GACA;GACA;GACA;GACe;GACf;GACA;GACA;GACA,gBAAgB,UAAU;GAC1B;GACA;EACF,CAAC;EACD,OAAO,MAAM,MAAM,QAAQ,UAAU,MAAM;GAAE;GAAO;EAAO,CAAC;CAC9D;CACA,MAAM,EAAE,kBAAkB,iBAAiB,OAAO;EAAE,QAAQ;EAAU,UAAU;CAAQ,CAAC;CAIzF,gBAAgB,MAAM,UAAU,UAAU,aAAa,GAAG,CAAC,OAAO,aAAa,CAAC;CAChF,gBAAgB,UAAU,OAAO,aAAa,GAAG,CAAC,UAAU,aAAa,CAAC;CAE1E,OACE,oBAAC,eAAD;EACE,KAAK;EACL,OAAO,MAAM;EACb,QAAQ,MAAM;EACH;CACZ,CAAA;AAEL;;;;;;;;AASA,IAAa,kBAAkB"}
@@ -1,40 +1,62 @@
1
- import { forwardRef as e, useCallback as t } from "react";
2
- import { assignRef as n } from "@weasel-js/react";
3
- import { jsx as r } from "react/jsx-runtime";
1
+ import { forwardRef, useCallback } from "react";
2
+ import { assignRef } from "@weasel-js/react";
3
+ import { jsx } from "react/jsx-runtime";
4
+
4
5
  //#region src/canvas/SurfaceCanvas.tsx
5
- var i = ":where([data-wzl-surface]) { width: var(--wzl-surface-width); height: var(--wzl-surface-height); }", a = /* @__PURE__ */ new WeakSet();
6
- function o(e) {
7
- let t = e.ownerDocument, n = e.getRootNode(), r = "host" in n ? n : t;
8
- if (a.has(r)) return;
9
- a.add(r);
10
- let o = t.defaultView?.CSSStyleSheet;
11
- if (o && "replaceSync" in o.prototype && Array.isArray(r.adoptedStyleSheets)) {
12
- let e = new o();
13
- e.replaceSync(i), r.adoptedStyleSheets = [...r.adoptedStyleSheets, e];
6
+ /** The CSS size of a canvas the kit renders: its `width` and `height` props,
7
+ * and its parent's box on an axis given neither. Zero specificity, so a class
8
+ * the consumer passes resizes the element.
9
+ *
10
+ * A filling canvas must give its parent no size back, or the parent could
11
+ * never shrink. `contain: size` drops its buffer's size, but Chrome still
12
+ * takes the buffer's aspect ratio for an auto height, so a near-flat ratio
13
+ * replaces it. */
14
+ var SURFACE_RULE = ":where([data-wzl-surface]) { width: var(--wzl-surface-width, 100%); height: var(--wzl-surface-height, 100%); } :where([data-wzl-surface='fill']) { display: block; contain: size; aspect-ratio: 1000000 / 1; }";
15
+ var adopted = /* @__PURE__ */ new WeakSet();
16
+ /**
17
+ * Hold {@link SURFACE_RULE} in the root `el`'s styles come from: its shadow
18
+ * root, else its document. Once per root, and never taken back out.
19
+ */
20
+ function adoptSurfaceRule(el) {
21
+ const doc = el.ownerDocument;
22
+ const node = el.getRootNode();
23
+ const root = "host" in node ? node : doc;
24
+ if (adopted.has(root)) return;
25
+ adopted.add(root);
26
+ const Sheet = doc.defaultView?.CSSStyleSheet;
27
+ if (Sheet && "replaceSync" in Sheet.prototype && Array.isArray(root.adoptedStyleSheets)) {
28
+ const sheet = new Sheet();
29
+ sheet.replaceSync(SURFACE_RULE);
30
+ root.adoptedStyleSheets = [...root.adoptedStyleSheets, sheet];
14
31
  return;
15
32
  }
16
- let s = t.createElement("style");
17
- s.textContent = i, ("host" in r ? r : r.head).appendChild(s);
33
+ const style = doc.createElement("style");
34
+ style.textContent = SURFACE_RULE;
35
+ ("host" in root ? root : root.head).appendChild(style);
18
36
  }
19
- var s = e(function({ width: e, height: i, className: a, style: s, tabIndex: c }, l) {
20
- let u = t((e) => {
21
- e && o(e), n(l, e);
22
- }, [l]), d = {
23
- ...s,
24
- "--wzl-surface-width": `${e}px`,
25
- "--wzl-surface-height": `${i}px`
37
+ /** The `<canvas>` a kit component paints into, `width` × `height` CSS pixels,
38
+ * or its parent's size on an axis given neither. */
39
+ var SurfaceCanvas = forwardRef(function SurfaceCanvas({ width, height, className, style, tabIndex }, ref) {
40
+ const setRef = useCallback((el) => {
41
+ if (el) adoptSurfaceRule(el);
42
+ assignRef(ref, el);
43
+ }, [ref]);
44
+ const sized = {
45
+ ...style,
46
+ ...width !== void 0 ? { "--wzl-surface-width": `${width}px` } : {},
47
+ ...height !== void 0 ? { "--wzl-surface-height": `${height}px` } : {}
26
48
  };
27
- return /* @__PURE__ */ r("canvas", {
28
- ref: u,
29
- width: e,
30
- height: i,
31
- tabIndex: c,
32
- className: a,
33
- style: d,
34
- "data-wzl-surface": ""
49
+ return /* @__PURE__ */ jsx("canvas", {
50
+ ref: setRef,
51
+ width,
52
+ height,
53
+ tabIndex,
54
+ className,
55
+ style: sized,
56
+ "data-wzl-surface": width === void 0 || height === void 0 ? "fill" : ""
35
57
  });
36
58
  });
37
- //#endregion
38
- export { i as SURFACE_RULE, s as SurfaceCanvas, o as adoptSurfaceRule };
39
59
 
60
+ //#endregion
61
+ export { SURFACE_RULE, SurfaceCanvas, adoptSurfaceRule };
40
62
  //# sourceMappingURL=SurfaceCanvas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SurfaceCanvas.js","names":["SURFACE_RULE","adopted","adoptSurfaceRule","doc","el","node","root","Sheet","sheet","style","SurfaceCanvas","forwardRef","setRef","useCallback","assignRef","ref","sized","width","height"],"sources":["../../src/canvas/SurfaceCanvas.tsx"],"sourcesContent":["import { forwardRef, useCallback, type CSSProperties } from 'react';\nimport { assignRef } from '@weasel-js/react';\n\n/** Where an element's styles come from. */\ntype StyleRoot = Document | ShadowRoot;\n\n/** The CSS size of a canvas the kit renders: its `width` and `height` props.\n * Zero specificity, so a class the consumer passes resizes the element. */\nexport const SURFACE_RULE =\n ':where([data-wzl-surface]) { width: var(--wzl-surface-width); height: var(--wzl-surface-height); }';\n\nlet adopted = new WeakSet<StyleRoot>();\n\n/**\n * Hold {@link SURFACE_RULE} in the root `el`'s styles come from: its shadow\n * root, else its document. Once per root, and never taken back out.\n */\nexport function adoptSurfaceRule(el: Element): void {\n const doc = el.ownerDocument;\n const node = el.getRootNode();\n const root: StyleRoot = 'host' in node ? (node as ShadowRoot) : doc;\n if (adopted.has(root)) return;\n adopted.add(root);\n const Sheet = doc.defaultView?.CSSStyleSheet;\n if (Sheet && 'replaceSync' in Sheet.prototype && Array.isArray(root.adoptedStyleSheets)) {\n // From the root's own window: a constructed sheet cannot be adopted across documents.\n const sheet = new Sheet();\n sheet.replaceSync(SURFACE_RULE);\n root.adoptedStyleSheets = [...root.adoptedStyleSheets, sheet];\n return;\n }\n const style = doc.createElement('style');\n style.textContent = SURFACE_RULE;\n ('host' in root ? root : root.head).appendChild(style);\n}\n\n/** Test seam: forgets which roots hold the rule. */\nexport function __resetSurfaceRule(): void {\n adopted = new WeakSet();\n}\n\nexport interface SurfaceCanvasProps {\n /** CSS pixels. The renderer sizes only the drawing buffer, so without the\n * rule this element holds it is as large as its buffer: `dpr` times too big. */\n width: number;\n height: number;\n className?: string;\n style?: CSSProperties;\n tabIndex?: number;\n}\n\n/** The `<canvas>` a kit component paints into, `width` × `height` CSS pixels. */\nexport const SurfaceCanvas = forwardRef<HTMLCanvasElement, SurfaceCanvasProps>(\n function SurfaceCanvas({ width, height, className, style, tabIndex }, ref) {\n // Stable while `ref` is, so a commit does not detach the element.\n const setRef = useCallback((el: HTMLCanvasElement | null) => {\n if (el) adoptSurfaceRule(el);\n assignRef(ref, el);\n }, [ref]);\n const sized = { ...style, '--wzl-surface-width': `${width}px`, '--wzl-surface-height': `${height}px` };\n return (\n <canvas\n ref={setRef}\n width={width}\n height={height}\n tabIndex={tabIndex}\n className={className}\n style={sized as CSSProperties}\n data-wzl-surface=\"\"\n />\n );\n },\n);\n"],"mappings":";;;;AAQA,IAAaA,IACX,sGAEEC,oBAAU,IAAI,QAAmB;AAMrC,SAAgBC,EAAiB,GAAmB;CAClD,IAAMC,IAAMC,EAAG,eACTC,IAAOD,EAAG,YAAY,GACtBE,IAAkB,UAAUD,IAAQA,IAAsBF;CAChE,IAAIF,EAAQ,IAAIK,CAAI,GAAG;CACvB,EAAQ,IAAIA,CAAI;CAChB,IAAMC,IAAQJ,EAAI,aAAa;CAC/B,IAAII,KAAS,iBAAiBA,EAAM,aAAa,MAAM,QAAQD,EAAK,kBAAkB,GAAG;EAEvF,IAAME,IAAQ,IAAID,EAAM;EAExB,AADAC,EAAM,YAAYR,CAAY,GAC9B,EAAK,qBAAqB,CAAC,GAAGM,EAAK,oBAAoBE,CAAK;EAC5D;CACF;CACA,IAAMC,IAAQN,EAAI,cAAc,OAAO;CAEvC,AADA,EAAM,cAAcH,IACnB,UAAUM,IAAOA,IAAOA,EAAK,KAAA,CAAM,YAAYG,CAAK;AACvD;AAkBA,IAAaC,IAAgBC,EAC3B,SAAuB,EAAE,UAAO,WAAQ,cAAW,UAAO,eAAY,GAAK;CAEzE,IAAMC,IAASC,GAAa,MAAiC;EAE3D,AADIT,KAAIF,EAAiBE,CAAE,GAC3BU,EAAUC,GAAKX,CAAE;CACnB,GAAG,CAACW,CAAG,CAAC,GACFC,IAAQ;EAAE,GAAGP;EAAO,uBAAuB,GAAGQ,EAAM;EAAK,wBAAwB,GAAGC,EAAO;CAAI;CACrG,OACE,kBAAC,UAAD;EACE,KAAKN;EACE;EACC;EACE;EACC;EACX,OAAOI;EACP,oBAAiB;CAClB,CAAA;AAEL,CACF"}
1
+ {"version":3,"file":"SurfaceCanvas.js","names":[],"sources":["../../src/canvas/SurfaceCanvas.tsx"],"sourcesContent":["import { forwardRef, useCallback, type CSSProperties } from 'react';\nimport { assignRef } from '@weasel-js/react';\n\n/** Where an element's styles come from. */\ntype StyleRoot = Document | ShadowRoot;\n\n/** The CSS size of a canvas the kit renders: its `width` and `height` props,\n * and its parent's box on an axis given neither. Zero specificity, so a class\n * the consumer passes resizes the element.\n *\n * A filling canvas must give its parent no size back, or the parent could\n * never shrink. `contain: size` drops its buffer's size, but Chrome still\n * takes the buffer's aspect ratio for an auto height, so a near-flat ratio\n * replaces it. */\nexport const SURFACE_RULE =\n ':where([data-wzl-surface]) { width: var(--wzl-surface-width, 100%); height: var(--wzl-surface-height, 100%); }'\n + \" :where([data-wzl-surface='fill']) { display: block; contain: size; aspect-ratio: 1000000 / 1; }\";\n\nlet adopted = new WeakSet<StyleRoot>();\n\n/**\n * Hold {@link SURFACE_RULE} in the root `el`'s styles come from: its shadow\n * root, else its document. Once per root, and never taken back out.\n */\nexport function adoptSurfaceRule(el: Element): void {\n const doc = el.ownerDocument;\n const node = el.getRootNode();\n const root: StyleRoot = 'host' in node ? (node as ShadowRoot) : doc;\n if (adopted.has(root)) return;\n adopted.add(root);\n const Sheet = doc.defaultView?.CSSStyleSheet;\n if (Sheet && 'replaceSync' in Sheet.prototype && Array.isArray(root.adoptedStyleSheets)) {\n // From the root's own window: a constructed sheet cannot be adopted across documents.\n const sheet = new Sheet();\n sheet.replaceSync(SURFACE_RULE);\n root.adoptedStyleSheets = [...root.adoptedStyleSheets, sheet];\n return;\n }\n const style = doc.createElement('style');\n style.textContent = SURFACE_RULE;\n ('host' in root ? root : root.head).appendChild(style);\n}\n\n/** Test seam: forgets which roots hold the rule. */\nexport function __resetSurfaceRule(): void {\n adopted = new WeakSet();\n}\n\nexport interface SurfaceCanvasProps {\n /** CSS pixels. The renderer sizes only the drawing buffer, so without the\n * rule this element holds it is as large as its buffer: `dpr` times too big.\n * Omitted, the element fills its parent on that axis. */\n width?: number;\n height?: number;\n className?: string;\n style?: CSSProperties;\n tabIndex?: number;\n}\n\n/** The `<canvas>` a kit component paints into, `width` × `height` CSS pixels,\n * or its parent's size on an axis given neither. */\nexport const SurfaceCanvas = forwardRef<HTMLCanvasElement, SurfaceCanvasProps>(\n function SurfaceCanvas({ width, height, className, style, tabIndex }, ref) {\n // Stable while `ref` is, so a commit does not detach the element.\n const setRef = useCallback((el: HTMLCanvasElement | null) => {\n if (el) adoptSurfaceRule(el);\n assignRef(ref, el);\n }, [ref]);\n const sized = {\n ...style,\n ...(width !== undefined ? { '--wzl-surface-width': `${width}px` } : {}),\n ...(height !== undefined ? { '--wzl-surface-height': `${height}px` } : {}),\n };\n const fills = width === undefined || height === undefined;\n return (\n <canvas\n ref={setRef}\n width={width}\n height={height}\n tabIndex={tabIndex}\n className={className}\n style={sized as CSSProperties}\n data-wzl-surface={fills ? 'fill' : ''}\n />\n );\n },\n);\n"],"mappings":";;;;;;;;;;;;;AAcA,IAAa,eACX;AAGF,IAAI,0BAAU,IAAI,QAAmB;;;;;AAMrC,SAAgB,iBAAiB,IAAmB;CAClD,MAAM,MAAM,GAAG;CACf,MAAM,OAAO,GAAG,YAAY;CAC5B,MAAM,OAAkB,UAAU,OAAQ,OAAsB;CAChE,IAAI,QAAQ,IAAI,IAAI,GAAG;CACvB,QAAQ,IAAI,IAAI;CAChB,MAAM,QAAQ,IAAI,aAAa;CAC/B,IAAI,SAAS,iBAAiB,MAAM,aAAa,MAAM,QAAQ,KAAK,kBAAkB,GAAG;EAEvF,MAAM,QAAQ,IAAI,MAAM;EACxB,MAAM,YAAY,YAAY;EAC9B,KAAK,qBAAqB,CAAC,GAAG,KAAK,oBAAoB,KAAK;EAC5D;CACF;CACA,MAAM,QAAQ,IAAI,cAAc,OAAO;CACvC,MAAM,cAAc;CACpB,CAAC,UAAU,OAAO,OAAO,KAAK,KAAA,CAAM,YAAY,KAAK;AACvD;;;AAoBA,IAAa,gBAAgB,WAC3B,SAAS,cAAc,EAAE,OAAO,QAAQ,WAAW,OAAO,YAAY,KAAK;CAEzE,MAAM,SAAS,aAAa,OAAiC;EAC3D,IAAI,IAAI,iBAAiB,EAAE;EAC3B,UAAU,KAAK,EAAE;CACnB,GAAG,CAAC,GAAG,CAAC;CACR,MAAM,QAAQ;EACZ,GAAG;EACH,GAAI,UAAU,SAAY,EAAE,uBAAuB,GAAG,MAAM,IAAI,IAAI,CAAC;EACrE,GAAI,WAAW,SAAY,EAAE,wBAAwB,GAAG,OAAO,IAAI,IAAI,CAAC;CAC1E;CAEA,OACE,oBAAC,UAAD;EACE,KAAK;EACE;EACC;EACE;EACC;EACX,OAAO;EACP,oBATU,UAAU,UAAa,WAAW,SASlB,SAAS;CACpC,CAAA;AAEL,CACF"}
@@ -1,9 +1,12 @@
1
1
  //#region src/canvas/accentColor.ts
2
- var e = "#4c8dff";
3
- function t(t) {
4
- return !t || typeof getComputedStyle != "function" ? e : getComputedStyle(t).getPropertyValue("--wzl-accent").trim() || e;
2
+ /** The accent canvas chrome paints in when the element sits under no theme. */
3
+ var FALLBACK_ACCENT = "#4c8dff";
4
+ /** Read `--wzl-accent` off `el`, where the theme cascade lands on a canvas. */
5
+ function accentColorOf(el) {
6
+ if (!el || typeof getComputedStyle !== "function") return FALLBACK_ACCENT;
7
+ return getComputedStyle(el).getPropertyValue("--wzl-accent").trim() || FALLBACK_ACCENT;
5
8
  }
6
- //#endregion
7
- export { e as FALLBACK_ACCENT, t as accentColorOf };
8
9
 
10
+ //#endregion
11
+ export { FALLBACK_ACCENT, accentColorOf };
9
12
  //# sourceMappingURL=accentColor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accentColor.js","names":["FALLBACK_ACCENT","accentColorOf","el"],"sources":["../../src/canvas/accentColor.ts"],"sourcesContent":["/** The accent canvas chrome paints in when the element sits under no theme. */\nexport const FALLBACK_ACCENT = '#4c8dff';\n\n/** Read `--wzl-accent` off `el`, where the theme cascade lands on a canvas. */\nexport function accentColorOf(el: Element | null | undefined): string {\n if (!el || typeof getComputedStyle !== 'function') return FALLBACK_ACCENT;\n return getComputedStyle(el).getPropertyValue('--wzl-accent').trim() || FALLBACK_ACCENT;\n}\n"],"mappings":";AACA,IAAaA,IAAkB;AAG/B,SAAgBC,EAAc,GAAwC;CAEpE,OADI,CAACC,KAAM,OAAO,oBAAqB,aAAmBF,IACnD,iBAAiBE,CAAE,CAAC,CAAC,iBAAiB,cAAc,CAAC,CAAC,KAAK,KAAKF;AACzE"}
1
+ {"version":3,"file":"accentColor.js","names":[],"sources":["../../src/canvas/accentColor.ts"],"sourcesContent":["/** The accent canvas chrome paints in when the element sits under no theme. */\nexport const FALLBACK_ACCENT = '#4c8dff';\n\n/** Read `--wzl-accent` off `el`, where the theme cascade lands on a canvas. */\nexport function accentColorOf(el: Element | null | undefined): string {\n if (!el || typeof getComputedStyle !== 'function') return FALLBACK_ACCENT;\n return getComputedStyle(el).getPropertyValue('--wzl-accent').trim() || FALLBACK_ACCENT;\n}\n"],"mappings":";;AACA,IAAa,kBAAkB;;AAG/B,SAAgB,cAAc,IAAwC;CACpE,IAAI,CAAC,MAAM,OAAO,qBAAqB,YAAY,OAAO;CAC1D,OAAO,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,cAAc,CAAC,CAAC,KAAK,KAAK;AACzE"}
@@ -1,26 +1,41 @@
1
- import { createNodeMemoScope as e } from "../core/scene/nodeMemo.js";
2
- import { resolveDerivedPath as t } from "../core/scene/derivedPath.js";
1
+ import { createNodeMemoScope } from "../core/scene/nodeMemo.js";
2
+ import { resolveDerivedPath } from "../core/scene/derivedPath.js";
3
+
3
4
  //#region src/canvas/adapterDerivedPath.ts
4
- var n = /* @__PURE__ */ new WeakMap();
5
- function r(r) {
6
- let i = n.get(r);
7
- i === void 0 && (i = e(), n.set(r, i));
8
- let a = i, o = (e) => typeof r.getWorldPose == "function" ? r.getWorldPose(e) : r.getPose(e), s = (e) => r.getChildren(e), c = (e) => {
9
- let t = r.getNode(e);
10
- if (t != null) return {
11
- node: t,
12
- pose: o(e),
5
+ var scopes = /* @__PURE__ */ new WeakMap();
6
+ /**
7
+ * The path the node `id` computes from its dependencies, or `null` when it
8
+ * derives none. Memoized against `adapter`, so every reader of one adapter
9
+ * shares a route.
10
+ */
11
+ function adapterDerivedPathOf(adapter) {
12
+ let scope = scopes.get(adapter);
13
+ if (scope === void 0) {
14
+ scope = createNodeMemoScope();
15
+ scopes.set(adapter, scope);
16
+ }
17
+ const slot = scope;
18
+ const poseOf = (id) => typeof adapter.getWorldPose === "function" ? adapter.getWorldPose(id) : adapter.getPose(id);
19
+ const childrenOf = (id) => adapter.getChildren(id);
20
+ const depOf = (id) => {
21
+ const node = adapter.getNode(id);
22
+ if (node === void 0 || node === null) return void 0;
23
+ return {
24
+ node,
25
+ pose: poseOf(id),
13
26
  get path() {
14
- return l(e);
27
+ return pathOf(id);
15
28
  }
16
29
  };
17
- }, l = (e) => {
18
- let n = r.getNode(e);
19
- return !n || n.dependsOn === void 0 || n.derivePath === void 0 ? null : t(n, c, s, a);
20
30
  };
21
- return l;
31
+ const pathOf = (id) => {
32
+ const node = adapter.getNode(id);
33
+ if (!node || node.dependsOn === void 0 || node.derivePath === void 0) return null;
34
+ return resolveDerivedPath(node, depOf, childrenOf, slot);
35
+ };
36
+ return pathOf;
22
37
  }
23
- //#endregion
24
- export { r as adapterDerivedPathOf };
25
38
 
39
+ //#endregion
40
+ export { adapterDerivedPathOf };
26
41
  //# sourceMappingURL=adapterDerivedPath.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapterDerivedPath.js","names":["scopes","adapterDerivedPathOf","scope","adapter","createNodeMemoScope","slot","poseOf","id","childrenOf","depOf","node","pathOf","resolveDerivedPath"],"sources":["../../src/canvas/adapterDerivedPath.ts"],"sourcesContent":["/**\n * A derived node's path, resolved through an adapter with no scene in scope.\n *\n * A derivation reads its dependencies' nodes and where they are drawn, and\n * every adapter already answers both by id. Nothing pushes an invalidation\n * here, so freshness is the memo's own re-check of what the adapter answers.\n */\nimport type { Path } from '@weasel-js/geom';\nimport { resolveDerivedPath, type PathDerivingNode } from 'core/scene/derivedPath';\nimport { createNodeMemoScope, type NodeMemoScope } from 'core/scene/nodeMemo';\nimport type { DerivedDep, Node, NodeId } from 'core/scene/types';\n\n/** What deriving reads of an adapter. */\nexport interface DerivingAdapter<TPose> {\n getNode(id: string): unknown;\n getPose(id: string): TPose;\n /** Where the node is drawn, when the adapter composes poses. */\n getWorldPose?(id: string): TPose;\n getChildren(parentId: string | null): readonly string[];\n}\n\nconst scopes = new WeakMap<object, NodeMemoScope>();\n\n/**\n * The path the node `id` computes from its dependencies, or `null` when it\n * derives none. Memoized against `adapter`, so every reader of one adapter\n * shares a route.\n */\nexport function adapterDerivedPathOf<TPose>(\n adapter: DerivingAdapter<TPose>,\n): (id: string) => Path | null {\n let scope = scopes.get(adapter);\n if (scope === undefined) {\n scope = createNodeMemoScope();\n scopes.set(adapter, scope);\n }\n const slot = scope;\n const poseOf = (id: string): TPose =>\n (typeof adapter.getWorldPose === 'function' ? adapter.getWorldPose(id) : adapter.getPose(id));\n const childrenOf = (id: NodeId): readonly NodeId[] =>\n adapter.getChildren(id) as readonly NodeId[];\n const depOf = (id: NodeId): DerivedDep<TPose> | undefined => {\n const node = adapter.getNode(id);\n if (node === undefined || node === null) return undefined;\n return {\n node: node as Node<unknown, string, TPose>,\n pose: poseOf(id),\n get path(): Path | null { return pathOf(id); },\n };\n };\n const pathOf = (id: string): Path | null => {\n const node = adapter.getNode(id) as PathDerivingNode<TPose> | undefined | null;\n if (!node || node.dependsOn === undefined || node.derivePath === undefined) return null;\n return resolveDerivedPath(node, depOf, childrenOf, slot);\n };\n return pathOf;\n}\n"],"mappings":";;;AAqBA,IAAMA,oBAAS,IAAI,QAA+B;AAOlD,SAAgBC,EACd,GAC6B;CAC7B,IAAIC,IAAQF,EAAO,IAAIG,CAAO;CAC9B,AAAID,MAAU,KAAA,MACZ,IAAQE,EAAoB,GAC5BJ,EAAO,IAAIG,GAASD,CAAK;CAE3B,IAAMG,IAAOH,GACPI,KAAU,MACb,OAAOH,EAAQ,gBAAiB,aAAaA,EAAQ,aAAaI,CAAE,IAAIJ,EAAQ,QAAQI,CAAE,GACvFC,KAAc,MAClBL,EAAQ,YAAYI,CAAE,GAClBE,KAAS,MAA8C;EAC3D,IAAMC,IAAOP,EAAQ,QAAQI,CAAE;EAC/B,IAAIG,KAA+B,MACnC,OAAO;GACC;GACN,MAAMJ,EAAOC,CAAE;GACf,IAAI,OAAoB;IAAE,OAAOI,EAAOJ,CAAE;GAAG;EAC/C;CACF,GACMI,KAAU,MAA4B;EAC1C,IAAMD,IAAOP,EAAQ,QAAQI,CAAE;EAE/B,OADI,CAACG,KAAQA,EAAK,cAAc,KAAA,KAAaA,EAAK,eAAe,KAAA,IAAkB,OAC5EE,EAAmBF,GAAMD,GAAOD,GAAYH,CAAI;CACzD;CACA,OAAOM;AACT"}
1
+ {"version":3,"file":"adapterDerivedPath.js","names":[],"sources":["../../src/canvas/adapterDerivedPath.ts"],"sourcesContent":["/**\n * A derived node's path, resolved through an adapter with no scene in scope.\n *\n * A derivation reads its dependencies' nodes and where they are drawn, and\n * every adapter already answers both by id. Nothing pushes an invalidation\n * here, so freshness is the memo's own re-check of what the adapter answers.\n */\nimport type { Path } from '@weasel-js/geom';\nimport { resolveDerivedPath, type PathDerivingNode } from 'core/scene/derivedPath';\nimport { createNodeMemoScope, type NodeMemoScope } from 'core/scene/nodeMemo';\nimport type { DerivedDep, Node, NodeId } from 'core/scene/types';\n\n/** What deriving reads of an adapter. */\nexport interface DerivingAdapter<TPose> {\n getNode(id: string): unknown;\n getPose(id: string): TPose;\n /** Where the node is drawn, when the adapter composes poses. */\n getWorldPose?(id: string): TPose;\n getChildren(parentId: string | null): readonly string[];\n}\n\nconst scopes = new WeakMap<object, NodeMemoScope>();\n\n/**\n * The path the node `id` computes from its dependencies, or `null` when it\n * derives none. Memoized against `adapter`, so every reader of one adapter\n * shares a route.\n */\nexport function adapterDerivedPathOf<TPose>(\n adapter: DerivingAdapter<TPose>,\n): (id: string) => Path | null {\n let scope = scopes.get(adapter);\n if (scope === undefined) {\n scope = createNodeMemoScope();\n scopes.set(adapter, scope);\n }\n const slot = scope;\n const poseOf = (id: string): TPose =>\n (typeof adapter.getWorldPose === 'function' ? adapter.getWorldPose(id) : adapter.getPose(id));\n const childrenOf = (id: NodeId): readonly NodeId[] =>\n adapter.getChildren(id) as readonly NodeId[];\n const depOf = (id: NodeId): DerivedDep<TPose> | undefined => {\n const node = adapter.getNode(id);\n if (node === undefined || node === null) return undefined;\n return {\n node: node as Node<unknown, string, TPose>,\n pose: poseOf(id),\n get path(): Path | null { return pathOf(id); },\n };\n };\n const pathOf = (id: string): Path | null => {\n const node = adapter.getNode(id) as PathDerivingNode<TPose> | undefined | null;\n if (!node || node.dependsOn === undefined || node.derivePath === undefined) return null;\n return resolveDerivedPath(node, depOf, childrenOf, slot);\n };\n return pathOf;\n}\n"],"mappings":";;;;AAqBA,IAAM,yBAAS,IAAI,QAA+B;;;;;;AAOlD,SAAgB,qBACd,SAC6B;CAC7B,IAAI,QAAQ,OAAO,IAAI,OAAO;CAC9B,IAAI,UAAU,QAAW;EACvB,QAAQ,oBAAoB;EAC5B,OAAO,IAAI,SAAS,KAAK;CAC3B;CACA,MAAM,OAAO;CACb,MAAM,UAAU,OACb,OAAO,QAAQ,iBAAiB,aAAa,QAAQ,aAAa,EAAE,IAAI,QAAQ,QAAQ,EAAE;CAC7F,MAAM,cAAc,OAClB,QAAQ,YAAY,EAAE;CACxB,MAAM,SAAS,OAA8C;EAC3D,MAAM,OAAO,QAAQ,QAAQ,EAAE;EAC/B,IAAI,SAAS,UAAa,SAAS,MAAM,OAAO;EAChD,OAAO;GACC;GACN,MAAM,OAAO,EAAE;GACf,IAAI,OAAoB;IAAE,OAAO,OAAO,EAAE;GAAG;EAC/C;CACF;CACA,MAAM,UAAU,OAA4B;EAC1C,MAAM,OAAO,QAAQ,QAAQ,EAAE;EAC/B,IAAI,CAAC,QAAQ,KAAK,cAAc,UAAa,KAAK,eAAe,QAAW,OAAO;EACnF,OAAO,mBAAmB,MAAM,OAAO,YAAY,IAAI;CACzD;CACA,OAAO;AACT"}
@@ -1,34 +1,60 @@
1
- import { adapterDerivedPathOf as e } from "./adapterDerivedPath.js";
1
+ import { adapterDerivedPathOf } from "./adapterDerivedPath.js";
2
+
2
3
  //#region src/canvas/adapterPickSource.ts
3
- function t(t, n = {}) {
4
- let r = /* @__PURE__ */ new Map(), i = (e) => typeof t.getWorldPose == "function" ? t.getWorldPose(e) : t.getPose(e), a = e(t), o = (e) => ({
5
- ...t.getNode(e),
6
- id: e,
7
- pose: i(e)
8
- });
4
+ /**
5
+ * A source over a bare `SelectAdapter`, for consumers with no `Scene`.
6
+ *
7
+ * The adapter's tree is walked depth-first, parents before children — the
8
+ * same back-to-front order `renderOrderNodes` produces for a single layer.
9
+ *
10
+ * `gates` come from whichever view is picking, never from the adapter.
11
+ */
12
+ function adapterPickSource(adapter, gates = {}) {
13
+ let parents = /* @__PURE__ */ new Map();
14
+ const worldPose = (id) => typeof adapter.getWorldPose === "function" ? adapter.getWorldPose(id) : adapter.getPose(id);
15
+ const derived = adapterDerivedPathOf(adapter);
16
+ const nodeOf = (id) => {
17
+ return {
18
+ ...adapter.getNode(id),
19
+ id,
20
+ pose: worldPose(id)
21
+ };
22
+ };
9
23
  return {
10
24
  order() {
11
- let e = [], n = /* @__PURE__ */ new Map(), i = (r, a) => {
12
- for (let s of t.getChildren(r)) {
13
- let t = o(s);
14
- a && n.set(s, a), e.push(t), i(s, t);
25
+ const out = [];
26
+ const next = /* @__PURE__ */ new Map();
27
+ const visit = (parentId, parent) => {
28
+ for (const childId of adapter.getChildren(parentId)) {
29
+ const node = nodeOf(childId);
30
+ if (parent) next.set(childId, parent);
31
+ out.push(node);
32
+ visit(childId, node);
15
33
  }
16
34
  };
17
- return i(null, null), r = n, e;
35
+ visit(null, null);
36
+ parents = next;
37
+ return out;
18
38
  },
19
- ...n.alphaOf ? { alphaOf: n.alphaOf } : {},
20
- ...n.layerIsPainted ? { layerIsPainted: n.layerIsPainted } : {},
21
- ...n.planeOf ? { planeOf: n.planeOf } : {},
22
- poseOf: (e) => i(e.id),
23
- derivedPathOf: (e) => a(e.id),
24
- parentsOf(e) {
25
- let t = [], n = r.get(e.id), i = /* @__PURE__ */ new Set();
26
- for (; n && !i.has(n.id);) i.add(n.id), t.push(n), n = r.get(n.id);
27
- return t;
39
+ ...gates.alphaOf ? { alphaOf: gates.alphaOf } : {},
40
+ ...gates.layerIsPainted ? { layerIsPainted: gates.layerIsPainted } : {},
41
+ ...gates.planeOf ? { planeOf: gates.planeOf } : {},
42
+ poseOf: (node) => worldPose(node.id),
43
+ derivedPathOf: (node) => derived(node.id),
44
+ parentsOf(node) {
45
+ const chain = [];
46
+ let cur = parents.get(node.id);
47
+ const seen = /* @__PURE__ */ new Set();
48
+ while (cur && !seen.has(cur.id)) {
49
+ seen.add(cur.id);
50
+ chain.push(cur);
51
+ cur = parents.get(cur.id);
52
+ }
53
+ return chain;
28
54
  }
29
55
  };
30
56
  }
31
- //#endregion
32
- export { t as adapterPickSource };
33
57
 
58
+ //#endregion
59
+ export { adapterPickSource };
34
60
  //# sourceMappingURL=adapterPickSource.js.map