@weasel-js/core 1.10.1 → 1.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1501) hide show
  1. package/CHANGELOG.md +1014 -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 +45 -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 +41 -39
  64. package/dist/barrel/paint.js +12 -11
  65. package/dist/barrel/paths.js +39 -13
  66. package/dist/barrel/renderer.js +25 -14
  67. package/dist/barrel/routing.js +64 -58
  68. package/dist/barrel/scene.js +51 -37
  69. package/dist/barrel/text.js +10 -9
  70. package/dist/barrel/viewport.js +48 -45
  71. package/dist/canvas/Canvas.js +191 -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 +124 -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/builtinToolSets.js +30 -0
  102. package/dist/canvas/SceneCanvas/builtinToolSets.js.map +1 -0
  103. package/dist/canvas/SceneCanvas/canvasPassThrough.js +73 -0
  104. package/dist/canvas/SceneCanvas/canvasPassThrough.js.map +1 -0
  105. package/dist/canvas/SceneCanvas/contributionFrameHooks.js +54 -32
  106. package/dist/canvas/SceneCanvas/contributionFrameHooks.js.map +1 -1
  107. package/dist/canvas/SceneCanvas/coordTrace.js +26 -30
  108. package/dist/canvas/SceneCanvas/coordTrace.js.map +1 -1
  109. package/dist/canvas/SceneCanvas/defaultNodeProperties.js +323 -159
  110. package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -1
  111. package/dist/canvas/SceneCanvas/defaultNodeRouting.js +39 -13
  112. package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -1
  113. package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js +83 -47
  114. package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js.map +1 -1
  115. package/dist/canvas/SceneCanvas/features.js +123 -106
  116. package/dist/canvas/SceneCanvas/features.js.map +1 -1
  117. package/dist/canvas/SceneCanvas/insertPreviewCommands.js +80 -62
  118. package/dist/canvas/SceneCanvas/insertPreviewCommands.js.map +1 -1
  119. package/dist/canvas/SceneCanvas/mergeLayers.js +43 -0
  120. package/dist/canvas/SceneCanvas/mergeLayers.js.map +1 -0
  121. package/dist/canvas/SceneCanvas/namedPresets.js +56 -0
  122. package/dist/canvas/SceneCanvas/namedPresets.js.map +1 -0
  123. package/dist/canvas/SceneCanvas/poseGeometry.js +66 -31
  124. package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -1
  125. package/dist/canvas/SceneCanvas/poseRegistrars.js +18 -8
  126. package/dist/canvas/SceneCanvas/poseRegistrars.js.map +1 -1
  127. package/dist/canvas/SceneCanvas/presets/arrange.js +27 -0
  128. package/dist/canvas/SceneCanvas/presets/arrange.js.map +1 -0
  129. package/dist/canvas/SceneCanvas/presets/chrome.js +14 -0
  130. package/dist/canvas/SceneCanvas/presets/chrome.js.map +1 -0
  131. package/dist/canvas/SceneCanvas/presets/edit.js +59 -0
  132. package/dist/canvas/SceneCanvas/presets/edit.js.map +1 -0
  133. package/dist/canvas/SceneCanvas/presets/ingest.js +13 -0
  134. package/dist/canvas/SceneCanvas/presets/ingest.js.map +1 -0
  135. package/dist/canvas/SceneCanvas/presets/paths.js +67 -0
  136. package/dist/canvas/SceneCanvas/presets/paths.js.map +1 -0
  137. package/dist/canvas/SceneCanvas/presets/select.js +19 -0
  138. package/dist/canvas/SceneCanvas/presets/select.js.map +1 -0
  139. package/dist/canvas/SceneCanvas/presets/toolDriven.js +20 -0
  140. package/dist/canvas/SceneCanvas/presets/toolDriven.js.map +1 -0
  141. package/dist/canvas/SceneCanvas/presets/transform.js +41 -0
  142. package/dist/canvas/SceneCanvas/presets/transform.js.map +1 -0
  143. package/dist/canvas/SceneCanvas/presets/view.js +14 -0
  144. package/dist/canvas/SceneCanvas/presets/view.js.map +1 -0
  145. package/dist/canvas/SceneCanvas/props.js +9 -35
  146. package/dist/canvas/SceneCanvas/props.js.map +1 -1
  147. package/dist/canvas/SceneCanvas/scenePointQuery.js +43 -35
  148. package/dist/canvas/SceneCanvas/scenePointQuery.js.map +1 -1
  149. package/dist/canvas/SceneCanvas/shapeGeneratorProperties.js +22 -15
  150. package/dist/canvas/SceneCanvas/shapeGeneratorProperties.js.map +1 -1
  151. package/dist/canvas/SceneCanvas/toolRegistry.js +34 -15
  152. package/dist/canvas/SceneCanvas/toolRegistry.js.map +1 -1
  153. package/dist/canvas/SceneCanvas/useActionTunings.js +14 -11
  154. package/dist/canvas/SceneCanvas/useActionTunings.js.map +1 -1
  155. package/dist/canvas/SceneCanvas/useActionsPropResolver.js +59 -36
  156. package/dist/canvas/SceneCanvas/useActionsPropResolver.js.map +1 -1
  157. package/dist/canvas/SceneCanvas/useBakedScene.js +17 -0
  158. package/dist/canvas/SceneCanvas/useBakedScene.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 +22 -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/useCanvasDevtoolsRoot.js +93 -0
  166. package/dist/canvas/SceneCanvas/useCanvasDevtoolsRoot.js.map +1 -0
  167. package/dist/canvas/SceneCanvas/useCanvasDispatcher.js +24 -14
  168. package/dist/canvas/SceneCanvas/useCanvasDispatcher.js.map +1 -1
  169. package/dist/canvas/SceneCanvas/useCanvasSelection.js +35 -12
  170. package/dist/canvas/SceneCanvas/useCanvasSelection.js.map +1 -1
  171. package/dist/canvas/SceneCanvas/useCanvasTools.js +112 -53
  172. package/dist/canvas/SceneCanvas/useCanvasTools.js.map +1 -1
  173. package/dist/canvas/SceneCanvas/useChromeAffordances.js +31 -0
  174. package/dist/canvas/SceneCanvas/useChromeAffordances.js.map +1 -0
  175. package/dist/canvas/SceneCanvas/useContributionRoles.js +107 -56
  176. package/dist/canvas/SceneCanvas/useContributionRoles.js.map +1 -1
  177. package/dist/canvas/SceneCanvas/useDepartureGhostLayer.js +64 -0
  178. package/dist/canvas/SceneCanvas/useDepartureGhostLayer.js.map +1 -0
  179. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js +104 -71
  180. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js.map +1 -1
  181. package/dist/canvas/SceneCanvas/useHeldModifiers.js +21 -14
  182. package/dist/canvas/SceneCanvas/useHeldModifiers.js.map +1 -1
  183. package/dist/canvas/SceneCanvas/useNodeAtPoint.js +21 -19
  184. package/dist/canvas/SceneCanvas/useNodeAtPoint.js.map +1 -1
  185. package/dist/canvas/SceneCanvas/useNodeKinds.js +28 -19
  186. package/dist/canvas/SceneCanvas/useNodeKinds.js.map +1 -1
  187. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +91 -59
  188. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js.map +1 -1
  189. package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js +62 -35
  190. package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js.map +1 -1
  191. package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js +121 -50
  192. package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js.map +1 -1
  193. package/dist/canvas/SceneCanvas/useSceneCanvasPathEdit.js +30 -0
  194. package/dist/canvas/SceneCanvas/useSceneCanvasPathEdit.js.map +1 -0
  195. package/dist/canvas/SceneCanvas/useSceneCanvasTools.js +38 -0
  196. package/dist/canvas/SceneCanvas/useSceneCanvasTools.js.map +1 -0
  197. package/dist/canvas/SceneCanvas/useSceneChrome.js +99 -44
  198. package/dist/canvas/SceneCanvas/useSceneChrome.js.map +1 -1
  199. package/dist/canvas/SceneCanvas/useSceneGestureDispatcher.js +165 -0
  200. package/dist/canvas/SceneCanvas/useSceneGestureDispatcher.js.map +1 -0
  201. package/dist/canvas/SceneCanvas/useScenePicking.js +68 -0
  202. package/dist/canvas/SceneCanvas/useScenePicking.js.map +1 -0
  203. package/dist/canvas/SceneCanvas/useSceneRedrawSources.js +28 -17
  204. package/dist/canvas/SceneCanvas/useSceneRedrawSources.js.map +1 -1
  205. package/dist/canvas/SceneCanvas/useSceneSelectTool.js +160 -80
  206. package/dist/canvas/SceneCanvas/useSceneSelectTool.js.map +1 -1
  207. package/dist/canvas/SceneCanvas/useSceneSlotLayers.js +38 -26
  208. package/dist/canvas/SceneCanvas/useSceneSlotLayers.js.map +1 -1
  209. package/dist/canvas/SceneCanvas/useSceneStandardActions.js +107 -0
  210. package/dist/canvas/SceneCanvas/useSceneStandardActions.js.map +1 -0
  211. package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js +40 -27
  212. package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js.map +1 -1
  213. package/dist/canvas/SceneCanvas/useSurfaceRouting.js +29 -0
  214. package/dist/canvas/SceneCanvas/useSurfaceRouting.js.map +1 -0
  215. package/dist/canvas/SceneCanvas/useSurfaceViewInputs.js +44 -0
  216. package/dist/canvas/SceneCanvas/useSurfaceViewInputs.js.map +1 -0
  217. package/dist/canvas/SceneCanvas/useToolKeybindings.js +28 -0
  218. package/dist/canvas/SceneCanvas/useToolKeybindings.js.map +1 -0
  219. package/dist/canvas/SceneCanvas/useViewportActions.js +52 -28
  220. package/dist/canvas/SceneCanvas/useViewportActions.js.map +1 -1
  221. package/dist/canvas/SceneCanvas/worldPointAt.js +10 -4
  222. package/dist/canvas/SceneCanvas/worldPointAt.js.map +1 -1
  223. package/dist/canvas/SceneCanvas.js +276 -312
  224. package/dist/canvas/SceneCanvas.js.map +1 -1
  225. package/dist/canvas/SceneViewCanvas.js +68 -42
  226. package/dist/canvas/SceneViewCanvas.js.map +1 -1
  227. package/dist/canvas/SurfaceCanvas.js +38 -33
  228. package/dist/canvas/SurfaceCanvas.js.map +1 -1
  229. package/dist/canvas/accentColor.js +8 -5
  230. package/dist/canvas/accentColor.js.map +1 -1
  231. package/dist/canvas/adapterDerivedPath.js +33 -18
  232. package/dist/canvas/adapterDerivedPath.js.map +1 -1
  233. package/dist/canvas/adapterPickSource.js +49 -23
  234. package/dist/canvas/adapterPickSource.js.map +1 -1
  235. package/dist/canvas/affordanceAt.js +106 -50
  236. package/dist/canvas/affordanceAt.js.map +1 -1
  237. package/dist/canvas/buildSceneLayer.js +111 -80
  238. package/dist/canvas/buildSceneLayer.js.map +1 -1
  239. package/dist/canvas/buildSceneTree.js +101 -59
  240. package/dist/canvas/buildSceneTree.js.map +1 -1
  241. package/dist/canvas/canvasRenderer.js +161 -72
  242. package/dist/canvas/canvasRenderer.js.map +1 -1
  243. package/dist/canvas/colorOverrides.js +18 -10
  244. package/dist/canvas/colorOverrides.js.map +1 -1
  245. package/dist/canvas/contextAttributes.js +14 -0
  246. package/dist/canvas/contextAttributes.js.map +1 -0
  247. package/dist/canvas/copiesAbove.js +24 -14
  248. package/dist/canvas/copiesAbove.js.map +1 -1
  249. package/dist/canvas/defaultDrawOne.js +55 -31
  250. package/dist/canvas/defaultDrawOne.js.map +1 -1
  251. package/dist/canvas/deps/areaSelect.js +30 -12
  252. package/dist/canvas/deps/areaSelect.js.map +1 -1
  253. package/dist/canvas/deps/booleans.js +104 -0
  254. package/dist/canvas/deps/booleans.js.map +1 -0
  255. package/dist/canvas/deps/changes.js +17 -9
  256. package/dist/canvas/deps/changes.js.map +1 -1
  257. package/dist/canvas/deps/debug.js +12 -5
  258. package/dist/canvas/deps/debug.js.map +1 -1
  259. package/dist/canvas/deps/dispatchSources.js +27 -0
  260. package/dist/canvas/deps/dispatchSources.js.map +1 -0
  261. package/dist/canvas/deps/dispatcher.js +18 -7
  262. package/dist/canvas/deps/dispatcher.js.map +1 -1
  263. package/dist/canvas/deps/editAnchors.js +150 -64
  264. package/dist/canvas/deps/editAnchors.js.map +1 -1
  265. package/dist/canvas/deps/geometryProjection.js +13 -7
  266. package/dist/canvas/deps/geometryProjection.js.map +1 -1
  267. package/dist/canvas/deps/hitTestArea.js +78 -53
  268. package/dist/canvas/deps/hitTestArea.js.map +1 -1
  269. package/dist/canvas/deps/ingestion.js +18 -13
  270. package/dist/canvas/deps/ingestion.js.map +1 -1
  271. package/dist/canvas/deps/insert.js +178 -116
  272. package/dist/canvas/deps/insert.js.map +1 -1
  273. package/dist/canvas/deps/kitSettings.js +16 -0
  274. package/dist/canvas/deps/kitSettings.js.map +1 -0
  275. package/dist/canvas/deps/lassoSelect.js +25 -13
  276. package/dist/canvas/deps/lassoSelect.js.map +1 -1
  277. package/dist/canvas/deps/layout.js +32 -20
  278. package/dist/canvas/deps/layout.js.map +1 -1
  279. package/dist/canvas/deps/nodeAtPoint.js +28 -14
  280. package/dist/canvas/deps/nodeAtPoint.js.map +1 -1
  281. package/dist/canvas/deps/pathEditCommits.js +193 -0
  282. package/dist/canvas/deps/pathEditCommits.js.map +1 -0
  283. package/dist/canvas/deps/pathLeaf.js +66 -0
  284. package/dist/canvas/deps/pathLeaf.js.map +1 -0
  285. package/dist/canvas/deps/pathLeafDeps.js +13 -0
  286. package/dist/canvas/deps/pathLeafDeps.js.map +1 -0
  287. package/dist/canvas/deps/poseDescriptor.js +10 -8
  288. package/dist/canvas/deps/poseDescriptor.js.map +1 -1
  289. package/dist/canvas/deps/previewPaths.js +44 -0
  290. package/dist/canvas/deps/previewPaths.js.map +1 -0
  291. package/dist/canvas/deps/resizePolicy.js +32 -25
  292. package/dist/canvas/deps/resizePolicy.js.map +1 -1
  293. package/dist/canvas/deps/slice.js +73 -87
  294. package/dist/canvas/deps/slice.js.map +1 -1
  295. package/dist/canvas/deps/snap.js +61 -7
  296. package/dist/canvas/deps/snap.js.map +1 -1
  297. package/dist/canvas/deps/surface.js +30 -0
  298. package/dist/canvas/deps/surface.js.map +1 -0
  299. package/dist/canvas/deps/textEdit.js +21 -13
  300. package/dist/canvas/deps/textEdit.js.map +1 -1
  301. package/dist/canvas/deps/transformFollowers.js +20 -0
  302. package/dist/canvas/deps/transformFollowers.js.map +1 -0
  303. package/dist/canvas/deps/view.js +46 -34
  304. package/dist/canvas/deps/view.js.map +1 -1
  305. package/dist/canvas/derivedPath.js +173 -70
  306. package/dist/canvas/derivedPath.js.map +1 -1
  307. package/dist/canvas/doubleClickTarget.js +20 -0
  308. package/dist/canvas/doubleClickTarget.js.map +1 -0
  309. package/dist/canvas/drawEnvelope.js +26 -17
  310. package/dist/canvas/drawEnvelope.js.map +1 -1
  311. package/dist/canvas/drawnBounds.js +142 -0
  312. package/dist/canvas/drawnBounds.js.map +1 -0
  313. package/dist/canvas/getNodeAtPoint.js +11 -8
  314. package/dist/canvas/getNodeAtPoint.js.map +1 -1
  315. package/dist/canvas/hostAnchor.js +35 -18
  316. package/dist/canvas/hostAnchor.js.map +1 -1
  317. package/dist/canvas/hud.module.js +25 -14
  318. package/dist/canvas/hud.module.js.map +1 -1
  319. package/dist/canvas/insertPreviewExtent.js +82 -61
  320. package/dist/canvas/insertPreviewExtent.js.map +1 -1
  321. package/dist/canvas/kitRequirements.js +154 -115
  322. package/dist/canvas/kitRequirements.js.map +1 -1
  323. package/dist/canvas/layerHover.js +28 -0
  324. package/dist/canvas/layerHover.js.map +1 -0
  325. package/dist/canvas/layerOrder.js +107 -57
  326. package/dist/canvas/layerOrder.js.map +1 -1
  327. package/dist/canvas/layerSlots.js +16 -9
  328. package/dist/canvas/layerSlots.js.map +1 -1
  329. package/dist/canvas/mountedCanvases.js +23 -13
  330. package/dist/canvas/mountedCanvases.js.map +1 -1
  331. package/dist/canvas/nodeShapes/derivedPainter.js +73 -25
  332. package/dist/canvas/nodeShapes/derivedPainter.js.map +1 -1
  333. package/dist/canvas/nodeShapes/imagePainter.js +69 -53
  334. package/dist/canvas/nodeShapes/imagePainter.js.map +1 -1
  335. package/dist/canvas/nodeShapes/measurePainter.js +58 -0
  336. package/dist/canvas/nodeShapes/measurePainter.js.map +1 -0
  337. package/dist/canvas/nodeShapes/memo.js +16 -5
  338. package/dist/canvas/nodeShapes/memo.js.map +1 -1
  339. package/dist/canvas/nodeShapes/nodePaint.js +125 -46
  340. package/dist/canvas/nodeShapes/nodePaint.js.map +1 -1
  341. package/dist/canvas/nodeShapes/pathPainter.js +42 -27
  342. package/dist/canvas/nodeShapes/pathPainter.js.map +1 -1
  343. package/dist/canvas/nodeShapes/poseBox.js +20 -13
  344. package/dist/canvas/nodeShapes/poseBox.js.map +1 -1
  345. package/dist/canvas/nodeShapes/rectFallbackPainter.js +26 -22
  346. package/dist/canvas/nodeShapes/rectFallbackPainter.js.map +1 -1
  347. package/dist/canvas/nodeShapes/shapePainter.js +67 -46
  348. package/dist/canvas/nodeShapes/shapePainter.js.map +1 -1
  349. package/dist/canvas/nodeShapes/strokedBounds.js +177 -0
  350. package/dist/canvas/nodeShapes/strokedBounds.js.map +1 -0
  351. package/dist/canvas/nodeShapes/textPainter.js +170 -37
  352. package/dist/canvas/nodeShapes/textPainter.js.map +1 -1
  353. package/dist/canvas/overChildren.js +29 -18
  354. package/dist/canvas/overChildren.js.map +1 -1
  355. package/dist/canvas/overlayRoleStrokes.js +32 -3
  356. package/dist/canvas/overlayRoleStrokes.js.map +1 -1
  357. package/dist/canvas/paintCull.js +24 -12
  358. package/dist/canvas/paintCull.js.map +1 -1
  359. package/dist/canvas/paintedCursorLayer.js +59 -35
  360. package/dist/canvas/paintedCursorLayer.js.map +1 -1
  361. package/dist/canvas/pathOverlay.js +83 -0
  362. package/dist/canvas/pathOverlay.js.map +1 -0
  363. package/dist/canvas/pickReach.js +34 -17
  364. package/dist/canvas/pickReach.js.map +1 -1
  365. package/dist/canvas/pickWalk.js +151 -102
  366. package/dist/canvas/pickWalk.js.map +1 -1
  367. package/dist/canvas/planeClips.js +39 -22
  368. package/dist/canvas/planeClips.js.map +1 -1
  369. package/dist/canvas/poseCascade.js +51 -27
  370. package/dist/canvas/poseCascade.js.map +1 -1
  371. package/dist/canvas/poseRotation.js +24 -14
  372. package/dist/canvas/poseRotation.js.map +1 -1
  373. package/dist/canvas/rasterReadback.js +23 -15
  374. package/dist/canvas/rasterReadback.js.map +1 -1
  375. package/dist/canvas/rasterToPng.js +21 -15
  376. package/dist/canvas/rasterToPng.js.map +1 -1
  377. package/dist/canvas/renderDebugSnapshot.js +37 -19
  378. package/dist/canvas/renderDebugSnapshot.js.map +1 -1
  379. package/dist/canvas/renderNeeds.js +33 -18
  380. package/dist/canvas/renderNeeds.js.map +1 -1
  381. package/dist/canvas/renderSceneToPixels.js +203 -87
  382. package/dist/canvas/renderSceneToPixels.js.map +1 -1
  383. package/dist/canvas/sceneAdapter.js +96 -75
  384. package/dist/canvas/sceneAdapter.js.map +1 -1
  385. package/dist/canvas/sceneClipboard.js +141 -92
  386. package/dist/canvas/sceneClipboard.js.map +1 -1
  387. package/dist/canvas/sceneLayerPaint.js +56 -27
  388. package/dist/canvas/sceneLayerPaint.js.map +1 -1
  389. package/dist/canvas/sceneSlotWiring.js +24 -14
  390. package/dist/canvas/sceneSlotWiring.js.map +1 -1
  391. package/dist/canvas/sceneViewRender.js +85 -49
  392. package/dist/canvas/sceneViewRender.js.map +1 -1
  393. package/dist/canvas/slopsDebugLayer.js +58 -49
  394. package/dist/canvas/slopsDebugLayer.js.map +1 -1
  395. package/dist/canvas/surfaceContribution.js +22 -10
  396. package/dist/canvas/surfaceContribution.js.map +1 -1
  397. package/dist/canvas/useCanvasElements.js +31 -0
  398. package/dist/canvas/useCanvasElements.js.map +1 -0
  399. package/dist/canvas/useCanvasHandle.js +69 -0
  400. package/dist/canvas/useCanvasHandle.js.map +1 -0
  401. package/dist/canvas/useCanvasPaint.js +92 -0
  402. package/dist/canvas/useCanvasPaint.js.map +1 -0
  403. package/dist/canvas/useCanvasRenderer.js +45 -23
  404. package/dist/canvas/useCanvasRenderer.js.map +1 -1
  405. package/dist/canvas/useCanvasSurface.js +41 -23
  406. package/dist/canvas/useCanvasSurface.js.map +1 -1
  407. package/dist/canvas/useCanvasView.js +80 -48
  408. package/dist/canvas/useCanvasView.js.map +1 -1
  409. package/dist/canvas/useClientToWorld.js +27 -0
  410. package/dist/canvas/useClientToWorld.js.map +1 -0
  411. package/dist/canvas/useExtraLayers.js +45 -0
  412. package/dist/canvas/useExtraLayers.js.map +1 -0
  413. package/dist/canvas/useFrameLoop.js +109 -49
  414. package/dist/canvas/useFrameLoop.js.map +1 -1
  415. package/dist/canvas/useHitObserver.js +22 -15
  416. package/dist/canvas/useHitObserver.js.map +1 -1
  417. package/dist/canvas/useHostAnchor.js +83 -53
  418. package/dist/canvas/useHostAnchor.js.map +1 -1
  419. package/dist/canvas/useInFlightBounds.js +52 -0
  420. package/dist/canvas/useInFlightBounds.js.map +1 -0
  421. package/dist/canvas/useLateContentRedraw.js +21 -14
  422. package/dist/canvas/useLateContentRedraw.js.map +1 -1
  423. package/dist/canvas/useLayerStack.js +72 -0
  424. package/dist/canvas/useLayerStack.js.map +1 -0
  425. package/dist/canvas/usePaintedCursor.js +28 -0
  426. package/dist/canvas/usePaintedCursor.js.map +1 -0
  427. package/dist/canvas/useRedrawOn.js +24 -14
  428. package/dist/canvas/useRedrawOn.js.map +1 -1
  429. package/dist/canvas/useSceneAdapter.js +21 -16
  430. package/dist/canvas/useSceneAdapter.js.map +1 -1
  431. package/dist/canvas/useSceneLayerList.js +15 -7
  432. package/dist/canvas/useSceneLayerList.js.map +1 -1
  433. package/dist/canvas/useSurfaceInput.js +46 -27
  434. package/dist/canvas/useSurfaceInput.js.map +1 -1
  435. package/dist/canvas/useSurfaceSize.js +43 -0
  436. package/dist/canvas/useSurfaceSize.js.map +1 -0
  437. package/dist/canvas/useToolCursor.js +30 -21
  438. package/dist/canvas/useToolCursor.js.map +1 -1
  439. package/dist/canvas/useViewHelpers.js +110 -61
  440. package/dist/canvas/useViewHelpers.js.map +1 -1
  441. package/dist/canvas/useViewLayerGate.js +29 -0
  442. package/dist/canvas/useViewLayerGate.js.map +1 -0
  443. package/dist/canvas/useViewNesting.js +104 -0
  444. package/dist/canvas/useViewNesting.js.map +1 -0
  445. package/dist/canvas/useViewRegistrySurface.js +44 -0
  446. package/dist/canvas/useViewRegistrySurface.js.map +1 -0
  447. package/dist/canvas/viewInputs.js +14 -11
  448. package/dist/canvas/viewInputs.js.map +1 -1
  449. package/dist/canvas/viewRegistry.js +140 -42
  450. package/dist/canvas/viewRegistry.js.map +1 -1
  451. package/dist/canvas/watchElementMove.js +71 -33
  452. package/dist/canvas/watchElementMove.js.map +1 -1
  453. package/dist/canvas/wrapNodeOutput.js +20 -13
  454. package/dist/canvas/wrapNodeOutput.js.map +1 -1
  455. package/dist/clipboard.d.ts +9 -4
  456. package/dist/clipboard.js +4 -3
  457. package/dist/{clone-C0eADtS0.d.ts → clone-C3e0OTuF.d.ts} +27 -73
  458. package/dist/clone.d.ts +7 -5
  459. package/dist/core/adapters/testing/rootsTree.js +17 -0
  460. package/dist/core/adapters/testing/rootsTree.js.map +1 -0
  461. package/dist/core/applyOps.js +23 -7
  462. package/dist/core/applyOps.js.map +1 -1
  463. package/dist/core/device/index.js +6 -5
  464. package/dist/core/device/targets.js +29 -8
  465. package/dist/core/device/targets.js.map +1 -1
  466. package/dist/core/device/useDeviceProfile.js +86 -52
  467. package/dist/core/device/useDeviceProfile.js.map +1 -1
  468. package/dist/core/device/useTargetBasePx.js +23 -0
  469. package/dist/core/device/useTargetBasePx.js.map +1 -0
  470. package/dist/core/device/watchDevicePixelRatio.js +27 -10
  471. package/dist/core/device/watchDevicePixelRatio.js.map +1 -1
  472. package/dist/core/geometry/autoPoseDescriptor.js +38 -24
  473. package/dist/core/geometry/autoPoseDescriptor.js.map +1 -1
  474. package/dist/core/geometry/inkExtents.js +60 -0
  475. package/dist/core/geometry/inkExtents.js.map +1 -0
  476. package/dist/core/geometry/pathPoseDescriptor.js +101 -76
  477. package/dist/core/geometry/pathPoseDescriptor.js.map +1 -1
  478. package/dist/core/geometry/poseDescriptor.js +199 -136
  479. package/dist/core/geometry/poseDescriptor.js.map +1 -1
  480. package/dist/core/geometry/regionHit.js +127 -79
  481. package/dist/core/geometry/regionHit.js.map +1 -1
  482. package/dist/core/geometry/targetFrame.js +84 -60
  483. package/dist/core/geometry/targetFrame.js.map +1 -1
  484. package/dist/core/geometry/unionBounds.js +103 -48
  485. package/dist/core/geometry/unionBounds.js.map +1 -1
  486. package/dist/core/isPlainObject.js +3 -2
  487. package/dist/core/layers/backgroundFill.js +23 -15
  488. package/dist/core/layers/backgroundFill.js.map +1 -1
  489. package/dist/core/layers/children.js +16 -13
  490. package/dist/core/layers/children.js.map +1 -1
  491. package/dist/core/layers/gateLayer.js +24 -9
  492. package/dist/core/layers/gateLayer.js.map +1 -1
  493. package/dist/core/layers/layerGroup.js +42 -29
  494. package/dist/core/layers/layerGroup.js.map +1 -1
  495. package/dist/core/layers/redrawSource.js +15 -0
  496. package/dist/core/layers/redrawSource.js.map +1 -0
  497. package/dist/core/layers/render.js +183 -93
  498. package/dist/core/layers/render.js.map +1 -1
  499. package/dist/core/layers/retain.js +38 -0
  500. package/dist/core/layers/retain.js.map +1 -0
  501. package/dist/core/ops/arrange.js +30 -19
  502. package/dist/core/ops/arrange.js.map +1 -1
  503. package/dist/core/ops/create.js +32 -23
  504. package/dist/core/ops/create.js.map +1 -1
  505. package/dist/core/ops/createHistory.js +23 -14
  506. package/dist/core/ops/createHistory.js.map +1 -1
  507. package/dist/core/ops/delete.js +80 -53
  508. package/dist/core/ops/delete.js.map +1 -1
  509. package/dist/core/ops/nodeFlags.js +44 -0
  510. package/dist/core/ops/nodeFlags.js.map +1 -0
  511. package/dist/core/ops/registry.js +26 -11
  512. package/dist/core/ops/registry.js.map +1 -1
  513. package/dist/core/ops/reorder/algorithms.js +62 -38
  514. package/dist/core/ops/reorder/algorithms.js.map +1 -1
  515. package/dist/core/ops/reorder/index.js +124 -84
  516. package/dist/core/ops/reorder/index.js.map +1 -1
  517. package/dist/core/ops/reorder/setChildOrder.js +32 -23
  518. package/dist/core/ops/reorder/setChildOrder.js.map +1 -1
  519. package/dist/core/ops/reparent.js +63 -37
  520. package/dist/core/ops/reparent.js.map +1 -1
  521. package/dist/core/ops/select.js +23 -20
  522. package/dist/core/ops/select.js.map +1 -1
  523. package/dist/core/ops/setData.js +23 -21
  524. package/dist/core/ops/setData.js.map +1 -1
  525. package/dist/core/ops/setDependsOn.js +37 -0
  526. package/dist/core/ops/setDependsOn.js.map +1 -0
  527. package/dist/core/ops/setLayer.js +26 -21
  528. package/dist/core/ops/setLayer.js.map +1 -1
  529. package/dist/core/ops/setLayout.js +27 -18
  530. package/dist/core/ops/setLayout.js.map +1 -1
  531. package/dist/core/ops/setPath.js +60 -41
  532. package/dist/core/ops/setPath.js.map +1 -1
  533. package/dist/core/ops/setText.js +26 -21
  534. package/dist/core/ops/setText.js.map +1 -1
  535. package/dist/core/ops/slot.js +36 -22
  536. package/dist/core/ops/slot.js.map +1 -1
  537. package/dist/core/ops/transform.js +35 -28
  538. package/dist/core/ops/transform.js.map +1 -1
  539. package/dist/core/ops/writtenBy.js +53 -0
  540. package/dist/core/ops/writtenBy.js.map +1 -0
  541. package/dist/core/pages/fitViewToPage.js +24 -11
  542. package/dist/core/pages/fitViewToPage.js.map +1 -1
  543. package/dist/core/pages/pageEdits.js +164 -0
  544. package/dist/core/pages/pageEdits.js.map +1 -0
  545. package/dist/core/pages/pages.js +102 -42
  546. package/dist/core/pages/pages.js.map +1 -1
  547. package/dist/core/pages/pagesLayer.js +19 -13
  548. package/dist/core/pages/pagesLayer.js.map +1 -1
  549. package/dist/core/paint/meshKind.js +16 -11
  550. package/dist/core/paint/meshKind.js.map +1 -1
  551. package/dist/core/paint/meshKindLazy.js +1 -1
  552. package/dist/core/paint/meshKindLazy.js.map +1 -1
  553. package/dist/core/paint/paintKindEntry.js +13 -4
  554. package/dist/core/paint/paintKindEntry.js.map +1 -1
  555. package/dist/core/paint/paintKinds.js +149 -88
  556. package/dist/core/paint/paintKinds.js.map +1 -1
  557. package/dist/core/paint/registerMesh.js +6 -4
  558. package/dist/core/paint/registerMesh.js.map +1 -1
  559. package/dist/core/scene/NodeProperties.js +15 -10
  560. package/dist/core/scene/NodeProperties.js.map +1 -1
  561. package/dist/core/scene/NodeRouting.js +22 -13
  562. package/dist/core/scene/NodeRouting.js.map +1 -1
  563. package/dist/core/scene/annotation.js +28 -0
  564. package/dist/core/scene/annotation.js.map +1 -0
  565. package/dist/core/scene/appliedLog.js +31 -23
  566. package/dist/core/scene/appliedLog.js.map +1 -1
  567. package/dist/core/scene/arrivalWindow.js +120 -75
  568. package/dist/core/scene/arrivalWindow.js.map +1 -1
  569. package/dist/core/scene/arrivals.js +17 -6
  570. package/dist/core/scene/arrivals.js.map +1 -1
  571. package/dist/core/scene/boundOps.js +42 -23
  572. package/dist/core/scene/boundOps.js.map +1 -1
  573. package/dist/core/scene/carryDescendants.js +51 -0
  574. package/dist/core/scene/carryDescendants.js.map +1 -0
  575. package/dist/core/scene/composeFrame.js +51 -21
  576. package/dist/core/scene/composeFrame.js.map +1 -1
  577. package/dist/core/scene/composePose.js +114 -62
  578. package/dist/core/scene/composePose.js.map +1 -1
  579. package/dist/core/scene/depFrame.js +94 -0
  580. package/dist/core/scene/depFrame.js.map +1 -0
  581. package/dist/core/scene/depMemo.js +44 -19
  582. package/dist/core/scene/depMemo.js.map +1 -1
  583. package/dist/core/scene/dependents.js +73 -45
  584. package/dist/core/scene/dependents.js.map +1 -1
  585. package/dist/core/scene/derivedParts.js +58 -0
  586. package/dist/core/scene/derivedParts.js.map +1 -0
  587. package/dist/core/scene/derivedPath.js +52 -22
  588. package/dist/core/scene/derivedPath.js.map +1 -1
  589. package/dist/core/scene/docValues.js +57 -0
  590. package/dist/core/scene/docValues.js.map +1 -0
  591. package/dist/core/scene/editMode.js +11 -11
  592. package/dist/core/scene/editMode.js.map +1 -1
  593. package/dist/core/scene/editPass.js +111 -0
  594. package/dist/core/scene/editPass.js.map +1 -0
  595. package/dist/core/scene/effectivePose.js +173 -51
  596. package/dist/core/scene/effectivePose.js.map +1 -1
  597. package/dist/core/scene/fieldEdits.js +98 -75
  598. package/dist/core/scene/fieldEdits.js.map +1 -1
  599. package/dist/core/scene/historyFacade.js +127 -87
  600. package/dist/core/scene/historyFacade.js.map +1 -1
  601. package/dist/core/scene/historyForm.js +7 -3
  602. package/dist/core/scene/historyForm.js.map +1 -1
  603. package/dist/core/scene/kitOps.js +203 -131
  604. package/dist/core/scene/kitOps.js.map +1 -1
  605. package/dist/core/scene/kitRegistry.js +49 -22
  606. package/dist/core/scene/kitRegistry.js.map +1 -1
  607. package/dist/core/scene/layerStack.js +123 -92
  608. package/dist/core/scene/layerStack.js.map +1 -1
  609. package/dist/core/scene/layoutPass.js +143 -72
  610. package/dist/core/scene/layoutPass.js.map +1 -1
  611. package/dist/core/scene/lockGuard.js +32 -24
  612. package/dist/core/scene/lockGuard.js.map +1 -1
  613. package/dist/core/scene/minSize.js +17 -0
  614. package/dist/core/scene/minSize.js.map +1 -0
  615. package/dist/core/scene/nestedHit.js +45 -31
  616. package/dist/core/scene/nestedHit.js.map +1 -1
  617. package/dist/core/scene/nodeFlags.js +43 -0
  618. package/dist/core/scene/nodeFlags.js.map +1 -0
  619. package/dist/core/scene/nodeFnFields.js +58 -41
  620. package/dist/core/scene/nodeFnFields.js.map +1 -1
  621. package/dist/core/scene/nodeGates.js +58 -0
  622. package/dist/core/scene/nodeGates.js.map +1 -0
  623. package/dist/core/scene/nodeMemo.js +92 -40
  624. package/dist/core/scene/nodeMemo.js.map +1 -1
  625. package/dist/core/scene/nodeStore.js +179 -99
  626. package/dist/core/scene/nodeStore.js.map +1 -1
  627. package/dist/core/scene/notifier.js +30 -19
  628. package/dist/core/scene/notifier.js.map +1 -1
  629. package/dist/core/scene/opTable.js +42 -36
  630. package/dist/core/scene/opTable.js.map +1 -1
  631. package/dist/core/scene/outerOps.js +49 -43
  632. package/dist/core/scene/outerOps.js.map +1 -1
  633. package/dist/core/scene/pathEffects/blend.js +80 -0
  634. package/dist/core/scene/pathEffects/blend.js.map +1 -0
  635. package/dist/core/scene/pathEffects/derive.js +112 -0
  636. package/dist/core/scene/pathEffects/derive.js.map +1 -0
  637. package/dist/core/scene/pathEffects/effects.js +40 -0
  638. package/dist/core/scene/pathEffects/effects.js.map +1 -0
  639. package/dist/core/scene/poseFeed.js +95 -60
  640. package/dist/core/scene/poseFeed.js.map +1 -1
  641. package/dist/core/scene/poseHold.js +33 -24
  642. package/dist/core/scene/poseHold.js.map +1 -1
  643. package/dist/core/scene/poseOverrides.js +86 -49
  644. package/dist/core/scene/poseOverrides.js.map +1 -1
  645. package/dist/core/scene/poseRemovals.js +58 -0
  646. package/dist/core/scene/poseRemovals.js.map +1 -0
  647. package/dist/core/scene/poseSnapshot.js +62 -41
  648. package/dist/core/scene/poseSnapshot.js.map +1 -1
  649. package/dist/core/scene/poseWrites.js +151 -0
  650. package/dist/core/scene/poseWrites.js.map +1 -0
  651. package/dist/core/scene/reconcileSpecs.js +63 -34
  652. package/dist/core/scene/reconcileSpecs.js.map +1 -1
  653. package/dist/core/scene/recorder.js +99 -57
  654. package/dist/core/scene/recorder.js.map +1 -1
  655. package/dist/core/scene/renderOrder.js +105 -59
  656. package/dist/core/scene/renderOrder.js.map +1 -1
  657. package/dist/core/scene/scene.js +139 -80
  658. package/dist/core/scene/scene.js.map +1 -1
  659. package/dist/core/scene/sceneChanges.js +13 -0
  660. package/dist/core/scene/sceneChanges.js.map +1 -0
  661. package/dist/core/scene/sceneEdits.js +69 -49
  662. package/dist/core/scene/sceneEdits.js.map +1 -1
  663. package/dist/core/scene/sceneMutators.js +45 -36
  664. package/dist/core/scene/sceneMutators.js.map +1 -1
  665. package/dist/core/scene/scenePoseAdapter.js +13 -9
  666. package/dist/core/scene/scenePoseAdapter.js.map +1 -1
  667. package/dist/core/scene/sceneRecording.js +106 -73
  668. package/dist/core/scene/sceneRecording.js.map +1 -1
  669. package/dist/core/scene/sceneSelection.js +26 -16
  670. package/dist/core/scene/sceneSelection.js.map +1 -1
  671. package/dist/core/scene/sceneState.js +61 -37
  672. package/dist/core/scene/sceneState.js.map +1 -1
  673. package/dist/core/scene/serialization.js +89 -50
  674. package/dist/core/scene/serialization.js.map +1 -1
  675. package/dist/core/scene/staleReplay.js +35 -26
  676. package/dist/core/scene/staleReplay.js.map +1 -1
  677. package/dist/core/scene/statedFields.js +10 -5
  678. package/dist/core/scene/statedFields.js.map +1 -1
  679. package/dist/core/scene/treeEdits.js +129 -98
  680. package/dist/core/scene/treeEdits.js.map +1 -1
  681. package/dist/core/scene/treeOrder.js +13 -8
  682. package/dist/core/scene/treeOrder.js.map +1 -1
  683. package/dist/core/scene/treeReads.js +25 -16
  684. package/dist/core/scene/treeReads.js.map +1 -1
  685. package/dist/core/scene/types.js +4 -3
  686. package/dist/core/scene/types.js.map +1 -1
  687. package/dist/core/scene/unionOfChildren.js +20 -10
  688. package/dist/core/scene/unionOfChildren.js.map +1 -1
  689. package/dist/core/scene/unitScopes.js +33 -8
  690. package/dist/core/scene/unitScopes.js.map +1 -1
  691. package/dist/core/scene/useScene.js +32 -24
  692. package/dist/core/scene/useScene.js.map +1 -1
  693. package/dist/core/selection/chromeState.js +41 -17
  694. package/dist/core/selection/chromeState.js.map +1 -1
  695. package/dist/core/selection/readOnlySelection.js +39 -24
  696. package/dist/core/selection/readOnlySelection.js.map +1 -1
  697. package/dist/core/selection/selectionTarget.js +14 -3
  698. package/dist/core/selection/selectionTarget.js.map +1 -1
  699. package/dist/core/selection/usePublishSceneSelection.js +20 -19
  700. package/dist/core/selection/usePublishSceneSelection.js.map +1 -1
  701. package/dist/core/selection/useSelection.js +90 -57
  702. package/dist/core/selection/useSelection.js.map +1 -1
  703. package/dist/core/shapeKinds.js +57 -28
  704. package/dist/core/shapeKinds.js.map +1 -1
  705. package/dist/core/stableStringify.js +5 -4
  706. package/dist/core/stableStringify.js.map +1 -1
  707. package/dist/core/stylus/stylus.js +49 -25
  708. package/dist/core/stylus/stylus.js.map +1 -1
  709. package/dist/core/stylus/usePointerStylus.js +61 -34
  710. package/dist/core/stylus/usePointerStylus.js.map +1 -1
  711. package/dist/core/usePaintKinds.js +21 -11
  712. package/dist/core/usePaintKinds.js.map +1 -1
  713. package/dist/core/viewport/clampView.js +31 -15
  714. package/dist/core/viewport/clampView.js.map +1 -1
  715. package/dist/core/viewport/clientToWorld.js +15 -4
  716. package/dist/core/viewport/clientToWorld.js.map +1 -1
  717. package/dist/core/viewport/createVelocityTracker.js +23 -19
  718. package/dist/core/viewport/createVelocityTracker.js.map +1 -1
  719. package/dist/core/viewport/fitToBounds.js +28 -11
  720. package/dist/core/viewport/fitToBounds.js.map +1 -1
  721. package/dist/core/viewport/fitViewToBounds.js +45 -19
  722. package/dist/core/viewport/fitViewToBounds.js.map +1 -1
  723. package/dist/core/viewport/interpolateView.js +40 -20
  724. package/dist/core/viewport/interpolateView.js.map +1 -1
  725. package/dist/core/viewport/parallax.js +89 -56
  726. package/dist/core/viewport/parallax.js.map +1 -1
  727. package/dist/core/viewport/sceneNodeClientRect.js +21 -12
  728. package/dist/core/viewport/sceneNodeClientRect.js.map +1 -1
  729. package/dist/core/viewport/screenSlop.js +40 -17
  730. package/dist/core/viewport/screenSlop.js.map +1 -1
  731. package/dist/core/viewport/useAutoCenter.js +36 -22
  732. package/dist/core/viewport/useAutoCenter.js.map +1 -1
  733. package/dist/core/viewport/useCanvasSize.js +43 -22
  734. package/dist/core/viewport/useCanvasSize.js.map +1 -1
  735. package/dist/core/viewport/useDecayLoop.js +120 -48
  736. package/dist/core/viewport/useDecayLoop.js.map +1 -1
  737. package/dist/core/viewport/useNodeOverlayFrame.js +93 -58
  738. package/dist/core/viewport/useNodeOverlayFrame.js.map +1 -1
  739. package/dist/core/viewport/useVelocityTracker.js +9 -6
  740. package/dist/core/viewport/useVelocityTracker.js.map +1 -1
  741. package/dist/core/viewport/useViewAnimation.js +143 -84
  742. package/dist/core/viewport/useViewAnimation.js.map +1 -1
  743. package/dist/core/viewport/view.js +48 -24
  744. package/dist/core/viewport/view.js.map +1 -1
  745. package/dist/core/viewport/viewTransform.js +8 -6
  746. package/dist/core/viewport/viewTransform.js.map +1 -1
  747. package/dist/core/viewport/viewportWorldRect.js +15 -7
  748. package/dist/core/viewport/viewportWorldRect.js.map +1 -1
  749. package/dist/core/viewport/wheelHandler.js +31 -20
  750. package/dist/core/viewport/wheelHandler.js.map +1 -1
  751. package/dist/core/viewport/zoomAt.js +47 -19
  752. package/dist/core/viewport/zoomAt.js.map +1 -1
  753. package/dist/core/viewport/zoomBounds.js +33 -17
  754. package/dist/core/viewport/zoomBounds.js.map +1 -1
  755. package/dist/cornerHandles-BHuoMs1o.d.ts +169 -0
  756. package/dist/debug/createDebugOverlayLayer.js +251 -258
  757. package/dist/debug/createDebugOverlayLayer.js.map +1 -1
  758. package/dist/debug/createDebugSink.js +69 -47
  759. package/dist/debug/createDebugSink.js.map +1 -1
  760. package/dist/debug/defaultTheme.js +20 -6
  761. package/dist/debug/defaultTheme.js.map +1 -1
  762. package/dist/debug/features.js +17 -0
  763. package/dist/debug/features.js.map +1 -0
  764. package/dist/debug/flag.js +3 -2
  765. package/dist/debug/frameStats.js +11 -9
  766. package/dist/debug/frameStats.js.map +1 -1
  767. package/dist/debug/overlayPanels.js +117 -0
  768. package/dist/debug/overlayPanels.js.map +1 -0
  769. package/dist/debug/parseDebugFlags.js +26 -27
  770. package/dist/debug/parseDebugFlags.js.map +1 -1
  771. package/dist/debug/useDebugSink.js +52 -33
  772. package/dist/debug/useDebugSink.js.map +1 -1
  773. package/dist/depSchema-BpZNOv7q.d.ts +2803 -0
  774. package/dist/devtools/handlers.js +112 -0
  775. package/dist/devtools/handlers.js.map +1 -0
  776. package/dist/devtools/history.js +71 -0
  777. package/dist/devtools/history.js.map +1 -0
  778. package/dist/devtools/hook.js +74 -0
  779. package/dist/devtools/hook.js.map +1 -0
  780. package/dist/devtools/label.js +25 -0
  781. package/dist/devtools/label.js.map +1 -0
  782. package/dist/devtools/notices.js +58 -0
  783. package/dist/devtools/notices.js.map +1 -0
  784. package/dist/devtools/protocol.js +7 -0
  785. package/dist/devtools/protocol.js.map +1 -0
  786. package/dist/devtools/registry.js +90 -0
  787. package/dist/devtools/registry.js.map +1 -0
  788. package/dist/devtools/root.js +80 -0
  789. package/dist/devtools/root.js.map +1 -0
  790. package/dist/devtools/serialize.js +86 -0
  791. package/dist/devtools/serialize.js.map +1 -0
  792. package/dist/devtools/session.js +111 -0
  793. package/dist/devtools/session.js.map +1 -0
  794. package/dist/devtools/transport.js +67 -0
  795. package/dist/devtools/transport.js.map +1 -0
  796. package/dist/devtools/useDevtoolsRoot.js +81 -0
  797. package/dist/devtools/useDevtoolsRoot.js.map +1 -0
  798. package/dist/devtools-protocol.d.ts +435 -0
  799. package/dist/devtools-protocol.js +7 -0
  800. package/dist/devtools.d.ts +8 -0
  801. package/dist/devtools.js +12 -0
  802. package/dist/devtools.js.map +1 -0
  803. package/dist/features/chrome-caps/buildChromeCtx.js +12 -10
  804. package/dist/features/chrome-caps/buildChromeCtx.js.map +1 -1
  805. package/dist/features/chrome-caps/conditions.js +103 -25
  806. package/dist/features/chrome-caps/conditions.js.map +1 -1
  807. package/dist/features/chrome-caps/defaults.js +18 -10
  808. package/dist/features/chrome-caps/defaults.js.map +1 -1
  809. package/dist/features/chrome-caps/index.js +8 -7
  810. package/dist/features/chrome-caps/resolve.js +28 -16
  811. package/dist/features/chrome-caps/resolve.js.map +1 -1
  812. package/dist/features/chrome-caps/useChromeCaps.js +52 -44
  813. package/dist/features/chrome-caps/useChromeCaps.js.map +1 -1
  814. package/dist/features/chrome-caps/useHoverTracking.js +58 -26
  815. package/dist/features/chrome-caps/useHoverTracking.js.map +1 -1
  816. package/dist/features/ingestion/contentHandlers.js +105 -36
  817. package/dist/features/ingestion/contentHandlers.js.map +1 -1
  818. package/dist/features/ingestion/imageHandler.js +49 -29
  819. package/dist/features/ingestion/imageHandler.js.map +1 -1
  820. package/dist/features/ingestion/openFilePicker.js +27 -9
  821. package/dist/features/ingestion/openFilePicker.js.map +1 -1
  822. package/dist/features/ingestion/placement.js +20 -11
  823. package/dist/features/ingestion/placement.js.map +1 -1
  824. package/dist/features/ingestion/registerKitHandlers.js +35 -18
  825. package/dist/features/ingestion/registerKitHandlers.js.map +1 -1
  826. package/dist/features/ingestion/svgHandler.js +60 -34
  827. package/dist/features/ingestion/svgHandler.js.map +1 -1
  828. package/dist/features/ingestion/textHandler.js +37 -16
  829. package/dist/features/ingestion/textHandler.js.map +1 -1
  830. package/dist/features/ingestion/useCanvasIngestion.js +57 -39
  831. package/dist/features/ingestion/useCanvasIngestion.js.map +1 -1
  832. package/dist/features/ingestion/weaselJsonHandler.js +38 -28
  833. package/dist/features/ingestion/weaselJsonHandler.js.map +1 -1
  834. package/dist/features/longPress/longPressFeedback.js +110 -81
  835. package/dist/features/longPress/longPressFeedback.js.map +1 -1
  836. package/dist/features/measure/actionIds.js +22 -0
  837. package/dist/features/measure/actionIds.js.map +1 -0
  838. package/dist/features/measure/measureCommands.js +180 -0
  839. package/dist/features/measure/measureCommands.js.map +1 -0
  840. package/dist/features/measure/measureContribution.js +57 -0
  841. package/dist/features/measure/measureContribution.js.map +1 -0
  842. package/dist/features/measure/measureEdits.js +82 -0
  843. package/dist/features/measure/measureEdits.js.map +1 -0
  844. package/dist/features/measure/measureGestures.js +185 -0
  845. package/dist/features/measure/measureGestures.js.map +1 -0
  846. package/dist/features/measure/measureHit.js +80 -0
  847. package/dist/features/measure/measureHit.js.map +1 -0
  848. package/dist/features/measure/measureLayer.js +86 -0
  849. package/dist/features/measure/measureLayer.js.map +1 -0
  850. package/dist/features/measure/measurement.js +79 -0
  851. package/dist/features/measure/measurement.js.map +1 -0
  852. package/dist/features/measure/measurements.js +41 -0
  853. package/dist/features/measure/measurements.js.map +1 -0
  854. package/dist/features/modes/modeLayers.js +81 -55
  855. package/dist/features/modes/modeLayers.js.map +1 -1
  856. package/dist/features/modes/modeTriggers.js +66 -0
  857. package/dist/features/modes/modeTriggers.js.map +1 -0
  858. package/dist/features/pathEffects/index.js +35 -0
  859. package/dist/features/pathEffects/index.js.map +1 -0
  860. package/dist/features/pathEffects/readSource.js +46 -0
  861. package/dist/features/pathEffects/readSource.js.map +1 -0
  862. package/dist/features/paths/anchorData.js +65 -0
  863. package/dist/features/paths/anchorData.js.map +1 -0
  864. package/dist/features/paths/anchorMarkers.js +137 -0
  865. package/dist/features/paths/anchorMarkers.js.map +1 -0
  866. package/dist/features/paths/editablePath.js +149 -46
  867. package/dist/features/paths/editablePath.js.map +1 -1
  868. package/dist/features/paths/index.js +12 -9
  869. package/dist/features/paths/originProjection.js +16 -9
  870. package/dist/features/paths/originProjection.js.map +1 -1
  871. package/dist/features/paths/pathEditExtension.js +26 -0
  872. package/dist/features/paths/pathEditExtension.js.map +1 -0
  873. package/dist/features/paths/pathEditState.js +107 -26
  874. package/dist/features/paths/pathEditState.js.map +1 -1
  875. package/dist/features/paths/pathEditingOverlayLayer.js +58 -110
  876. package/dist/features/paths/pathEditingOverlayLayer.js.map +1 -1
  877. package/dist/features/paths/pathLayer.js +79 -29
  878. package/dist/features/paths/pathLayer.js.map +1 -1
  879. package/dist/features/paths/pathRepresentation.js +27 -0
  880. package/dist/features/paths/pathRepresentation.js.map +1 -0
  881. package/dist/features/paths/pathSnap/glyphs.js +39 -0
  882. package/dist/features/paths/pathSnap/glyphs.js.map +1 -0
  883. package/dist/features/paths/pathSnap/pathSnapSource.js +82 -0
  884. package/dist/features/paths/pathSnap/pathSnapSource.js.map +1 -0
  885. package/dist/features/paths/pathSnap/sceneIndex.js +85 -0
  886. package/dist/features/paths/pathSnap/sceneIndex.js.map +1 -0
  887. package/dist/features/paths/pathSnap/snapGeometry.js +47 -0
  888. package/dist/features/paths/pathSnap/snapGeometry.js.map +1 -0
  889. package/dist/features/paths/penPreviewLayer.js +135 -102
  890. package/dist/features/paths/penPreviewLayer.js.map +1 -1
  891. package/dist/features/paths/shapeGenerator.js +112 -60
  892. package/dist/features/paths/shapeGenerator.js.map +1 -1
  893. package/dist/features/paths/strokeOutline.js +15 -0
  894. package/dist/features/paths/strokeOutline.js.map +1 -0
  895. package/dist/features/paths/useAnchorFields.js +35 -0
  896. package/dist/features/paths/useAnchorFields.js.map +1 -0
  897. package/dist/features/paths/usePathEdit.js +58 -28
  898. package/dist/features/paths/usePathEdit.js.map +1 -1
  899. package/dist/features/poseRun/usePoseRun.js +110 -43
  900. package/dist/features/poseRun/usePoseRun.js.map +1 -1
  901. package/dist/features/selection/handleCommands.js +116 -0
  902. package/dist/features/selection/handleCommands.js.map +1 -0
  903. package/dist/features/selection/overlay.js +288 -328
  904. package/dist/features/selection/overlay.js.map +1 -1
  905. package/dist/features/selection/selectionPose.js +112 -0
  906. package/dist/features/selection/selectionPose.js.map +1 -0
  907. package/dist/features/snap/angle2d.js +158 -0
  908. package/dist/features/snap/angle2d.js.map +1 -0
  909. package/dist/features/snap/debugCandidates.js +27 -0
  910. package/dist/features/snap/debugCandidates.js.map +1 -0
  911. package/dist/features/snap/gather.js +79 -0
  912. package/dist/features/snap/gather.js.map +1 -0
  913. package/dist/features/snap/inputSubspace.js +46 -0
  914. package/dist/features/snap/inputSubspace.js.map +1 -0
  915. package/dist/features/snap/lazySession.js +17 -0
  916. package/dist/features/snap/lazySession.js.map +1 -0
  917. package/dist/features/snap/marks.js +29 -0
  918. package/dist/features/snap/marks.js.map +1 -0
  919. package/dist/features/snap/outcomeStore.js +25 -0
  920. package/dist/features/snap/outcomeStore.js.map +1 -0
  921. package/dist/features/snap/pointSnap.js +48 -0
  922. package/dist/features/snap/pointSnap.js.map +1 -0
  923. package/dist/features/snap/probes2d.js +99 -0
  924. package/dist/features/snap/probes2d.js.map +1 -0
  925. package/dist/features/snap/readoutDraw.js +93 -0
  926. package/dist/features/snap/readoutDraw.js.map +1 -0
  927. package/dist/features/snap/readoutLayer.js +49 -0
  928. package/dist/features/snap/readoutLayer.js.map +1 -0
  929. package/dist/features/snap/registry.js +27 -0
  930. package/dist/features/snap/registry.js.map +1 -0
  931. package/dist/features/snap/resizeBox.js +137 -0
  932. package/dist/features/snap/resizeBox.js.map +1 -0
  933. package/dist/features/snap/roles.js +32 -0
  934. package/dist/features/snap/roles.js.map +1 -0
  935. package/dist/features/snap/rotationSource.js +47 -0
  936. package/dist/features/snap/rotationSource.js.map +1 -0
  937. package/dist/features/snap/sceneReads.js +45 -0
  938. package/dist/features/snap/sceneReads.js.map +1 -0
  939. package/dist/features/snap/sceneSession2d.js +81 -0
  940. package/dist/features/snap/sceneSession2d.js.map +1 -0
  941. package/dist/features/snap/screen.js +23 -0
  942. package/dist/features/snap/screen.js.map +1 -0
  943. package/dist/features/snap/session2d.js +143 -0
  944. package/dist/features/snap/session2d.js.map +1 -0
  945. package/dist/features/snap/spanSnap.js +80 -0
  946. package/dist/features/snap/spanSnap.js.map +1 -0
  947. package/dist/features/snap/stepAngles.js +15 -0
  948. package/dist/features/snap/stepAngles.js.map +1 -0
  949. package/dist/features/text/editingDrawOne.js +32 -0
  950. package/dist/features/text/editingDrawOne.js.map +1 -0
  951. package/dist/features/text/index.js +7 -6
  952. package/dist/features/text/textHitAt.js +51 -0
  953. package/dist/features/text/textHitAt.js.map +1 -0
  954. package/dist/features/text/textLayer.js +21 -27
  955. package/dist/features/text/textLayer.js.map +1 -1
  956. package/dist/features/text/useSceneTextEdit.js +190 -128
  957. package/dist/features/text/useSceneTextEdit.js.map +1 -1
  958. package/dist/features/viewports/viewResolver.js +48 -39
  959. package/dist/features/viewports/viewResolver.js.map +1 -1
  960. package/dist/features/viewports/viewportLayer.js +60 -29
  961. package/dist/features/viewports/viewportLayer.js.map +1 -1
  962. package/dist/iconRegistry/IconRegistryProvider.js +73 -0
  963. package/dist/iconRegistry/IconRegistryProvider.js.map +1 -0
  964. package/dist/iconRegistry/useIconGlyph.js +14 -0
  965. package/dist/iconRegistry/useIconGlyph.js.map +1 -0
  966. package/dist/iconRegistry/useIconVariant.js +29 -0
  967. package/dist/iconRegistry/useIconVariant.js.map +1 -0
  968. package/dist/icons.d.ts +6 -0
  969. package/dist/icons.js +3 -0
  970. package/dist/icons.table.js +13 -0
  971. package/dist/icons.table.js.map +1 -0
  972. package/dist/icons.table.json +546 -0
  973. package/dist/icons2.table.js +9 -0
  974. package/dist/icons2.table.js.map +1 -0
  975. package/dist/index.d.ts +4856 -5666
  976. package/dist/index.js +346 -285
  977. package/dist/input/keyState.js +118 -54
  978. package/dist/input/keyState.js.map +1 -1
  979. package/dist/input/useKeyModifiers.js +13 -7
  980. package/dist/input/useKeyModifiers.js.map +1 -1
  981. package/dist/input/useKeyState.js +23 -16
  982. package/dist/input/useKeyState.js.map +1 -1
  983. package/dist/interactions/actions/align/action.js +78 -45
  984. package/dist/interactions/actions/align/action.js.map +1 -1
  985. package/dist/interactions/actions/align/align.js +86 -48
  986. package/dist/interactions/actions/align/align.js.map +1 -1
  987. package/dist/interactions/actions/booleans/action.js +73 -33
  988. package/dist/interactions/actions/booleans/action.js.map +1 -1
  989. package/dist/interactions/actions/booleans/booleans.js +77 -70
  990. package/dist/interactions/actions/booleans/booleans.js.map +1 -1
  991. package/dist/interactions/actions/booleans/commit.js +49 -0
  992. package/dist/interactions/actions/booleans/commit.js.map +1 -0
  993. package/dist/interactions/actions/booleans/custom.js +48 -0
  994. package/dist/interactions/actions/booleans/custom.js.map +1 -0
  995. package/dist/interactions/actions/booleans/operands.js +43 -32
  996. package/dist/interactions/actions/booleans/operands.js.map +1 -1
  997. package/dist/interactions/actions/booleans/pieces.js +29 -23
  998. package/dist/interactions/actions/booleans/pieces.js.map +1 -1
  999. package/dist/interactions/actions/booleans/placement.js +30 -17
  1000. package/dist/interactions/actions/booleans/placement.js.map +1 -1
  1001. package/dist/interactions/actions/booleans/useBooleans.js +30 -17
  1002. package/dist/interactions/actions/booleans/useBooleans.js.map +1 -1
  1003. package/dist/interactions/actions/booleans/useBooleansAdapter.js +8 -5
  1004. package/dist/interactions/actions/booleans/useBooleansAdapter.js.map +1 -1
  1005. package/dist/interactions/actions/clipboard/action.js +81 -40
  1006. package/dist/interactions/actions/clipboard/action.js.map +1 -1
  1007. package/dist/interactions/actions/clipboard/clipboardOps.js +100 -72
  1008. package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -1
  1009. package/dist/interactions/actions/clipboard/materializePaste.js +38 -19
  1010. package/dist/interactions/actions/clipboard/materializePaste.js.map +1 -1
  1011. package/dist/interactions/actions/clipboard/wireFormat.js +66 -28
  1012. package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -1
  1013. package/dist/interactions/actions/clone/action.js +102 -70
  1014. package/dist/interactions/actions/clone/action.js.map +1 -1
  1015. package/dist/interactions/actions/clone/behaviors.js +55 -38
  1016. package/dist/interactions/actions/clone/behaviors.js.map +1 -1
  1017. package/dist/interactions/actions/defaultCommitAdapter.js +32 -10
  1018. package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -1
  1019. package/dist/interactions/actions/defaults/anchorEditing.js +252 -111
  1020. package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -1
  1021. package/dist/interactions/actions/defaults/anchorFields.js +54 -0
  1022. package/dist/interactions/actions/defaults/anchorFields.js.map +1 -0
  1023. package/dist/interactions/actions/defaults/anchorHandles.js +31 -27
  1024. package/dist/interactions/actions/defaults/anchorHandles.js.map +1 -1
  1025. package/dist/interactions/actions/defaults/anchorJoin.js +55 -37
  1026. package/dist/interactions/actions/defaults/anchorJoin.js.map +1 -1
  1027. package/dist/interactions/actions/defaults/areaSelect.js +56 -40
  1028. package/dist/interactions/actions/defaults/areaSelect.js.map +1 -1
  1029. package/dist/interactions/actions/defaults/bendSegment.js +67 -31
  1030. package/dist/interactions/actions/defaults/bendSegment.js.map +1 -1
  1031. package/dist/interactions/actions/defaults/cancelGesture.js +12 -5
  1032. package/dist/interactions/actions/defaults/cancelGesture.js.map +1 -1
  1033. package/dist/interactions/actions/defaults/clearSelection.js +22 -7
  1034. package/dist/interactions/actions/defaults/clearSelection.js.map +1 -1
  1035. package/dist/interactions/actions/defaults/contextMenu.js +149 -0
  1036. package/dist/interactions/actions/defaults/contextMenu.js.map +1 -0
  1037. package/dist/interactions/actions/defaults/copySubtree.js +43 -29
  1038. package/dist/interactions/actions/defaults/copySubtree.js.map +1 -1
  1039. package/dist/interactions/actions/defaults/createPaintAction.js +79 -54
  1040. package/dist/interactions/actions/defaults/createPaintAction.js.map +1 -1
  1041. package/dist/interactions/actions/defaults/delete.js +92 -55
  1042. package/dist/interactions/actions/defaults/delete.js.map +1 -1
  1043. package/dist/interactions/actions/defaults/duplicate.js +60 -32
  1044. package/dist/interactions/actions/defaults/duplicate.js.map +1 -1
  1045. package/dist/interactions/actions/defaults/enterPathEdit.js +22 -18
  1046. package/dist/interactions/actions/defaults/enterPathEdit.js.map +1 -1
  1047. package/dist/interactions/actions/defaults/enterTextEdit.js +20 -8
  1048. package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -1
  1049. package/dist/interactions/actions/defaults/escape.js +16 -7
  1050. package/dist/interactions/actions/defaults/escape.js.map +1 -1
  1051. package/dist/interactions/actions/defaults/exitPathEdit.js +6 -6
  1052. package/dist/interactions/actions/defaults/exitPathEdit.js.map +1 -1
  1053. package/dist/interactions/actions/defaults/group.js +122 -73
  1054. package/dist/interactions/actions/defaults/group.js.map +1 -1
  1055. package/dist/interactions/actions/defaults/ingest.js +58 -39
  1056. package/dist/interactions/actions/defaults/ingest.js.map +1 -1
  1057. package/dist/interactions/actions/defaults/insertPathAnchor.js +43 -22
  1058. package/dist/interactions/actions/defaults/insertPathAnchor.js.map +1 -1
  1059. package/dist/interactions/actions/defaults/nudge.js +57 -55
  1060. package/dist/interactions/actions/defaults/nudge.js.map +1 -1
  1061. package/dist/interactions/actions/defaults/nudgeSteps.js +17 -12
  1062. package/dist/interactions/actions/defaults/nudgeSteps.js.map +1 -1
  1063. package/dist/interactions/actions/defaults/pathEditMarks.js +60 -0
  1064. package/dist/interactions/actions/defaults/pathEditMarks.js.map +1 -0
  1065. package/dist/interactions/actions/defaults/pathEditTools.js +57 -0
  1066. package/dist/interactions/actions/defaults/pathEditTools.js.map +1 -0
  1067. package/dist/interactions/actions/defaults/pinchZoom.js +55 -39
  1068. package/dist/interactions/actions/defaults/pinchZoom.js.map +1 -1
  1069. package/dist/interactions/actions/defaults/reorder.js +71 -40
  1070. package/dist/interactions/actions/defaults/reorder.js.map +1 -1
  1071. package/dist/interactions/actions/defaults/requiresSelection.js +13 -6
  1072. package/dist/interactions/actions/defaults/requiresSelection.js.map +1 -1
  1073. package/dist/interactions/actions/defaults/segmentUnder.js +24 -16
  1074. package/dist/interactions/actions/defaults/segmentUnder.js.map +1 -1
  1075. package/dist/interactions/actions/defaults/selectAll.js +21 -7
  1076. package/dist/interactions/actions/defaults/selectAll.js.map +1 -1
  1077. package/dist/interactions/actions/defaults/setFill.js +37 -21
  1078. package/dist/interactions/actions/defaults/setFill.js.map +1 -1
  1079. package/dist/interactions/actions/defaults/setFillOpacity.js +19 -10
  1080. package/dist/interactions/actions/defaults/setFillOpacity.js.map +1 -1
  1081. package/dist/interactions/actions/defaults/setStroke.js +46 -25
  1082. package/dist/interactions/actions/defaults/setStroke.js.map +1 -1
  1083. package/dist/interactions/actions/defaults/setStrokeOpacity.js +19 -11
  1084. package/dist/interactions/actions/defaults/setStrokeOpacity.js.map +1 -1
  1085. package/dist/interactions/actions/defaults/slice.js +42 -17
  1086. package/dist/interactions/actions/defaults/slice.js.map +1 -1
  1087. package/dist/interactions/actions/defaults/sliceOps.js +63 -42
  1088. package/dist/interactions/actions/defaults/sliceOps.js.map +1 -1
  1089. package/dist/interactions/actions/defaults/toolActivate.js +34 -16
  1090. package/dist/interactions/actions/defaults/toolActivate.js.map +1 -1
  1091. package/dist/interactions/actions/defaults/toolResetToDefault.js +29 -10
  1092. package/dist/interactions/actions/defaults/toolResetToDefault.js.map +1 -1
  1093. package/dist/interactions/actions/defaults/undoRedo.js +26 -20
  1094. package/dist/interactions/actions/defaults/undoRedo.js.map +1 -1
  1095. package/dist/interactions/actions/defaults/viewportDragPan.js +91 -58
  1096. package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -1
  1097. package/dist/interactions/actions/defaults/viewportWheelPan.js +42 -23
  1098. package/dist/interactions/actions/defaults/viewportWheelPan.js.map +1 -1
  1099. package/dist/interactions/actions/defaults/viewportZoom.js +107 -59
  1100. package/dist/interactions/actions/defaults/viewportZoom.js.map +1 -1
  1101. package/dist/interactions/actions/distribute/action.js +64 -39
  1102. package/dist/interactions/actions/distribute/action.js.map +1 -1
  1103. package/dist/interactions/actions/distribute/distribute.js +53 -34
  1104. package/dist/interactions/actions/distribute/distribute.js.map +1 -1
  1105. package/dist/interactions/actions/distribute/plan.js +40 -22
  1106. package/dist/interactions/actions/distribute/plan.js.map +1 -1
  1107. package/dist/interactions/actions/drawnBoxes.js +32 -0
  1108. package/dist/interactions/actions/drawnBoxes.js.map +1 -0
  1109. package/dist/interactions/actions/edit-anchors/action.js +245 -72
  1110. package/dist/interactions/actions/edit-anchors/action.js.map +1 -1
  1111. package/dist/interactions/actions/edit-anchors/extensionDrags.js +50 -0
  1112. package/dist/interactions/actions/edit-anchors/extensionDrags.js.map +1 -0
  1113. package/dist/interactions/actions/edit-anchors/geometry.js +74 -47
  1114. package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -1
  1115. package/dist/interactions/actions/edit-anchors/handleDrag.js +101 -0
  1116. package/dist/interactions/actions/edit-anchors/handleDrag.js.map +1 -0
  1117. package/dist/interactions/actions/edit-anchors/handles.js +41 -27
  1118. package/dist/interactions/actions/edit-anchors/handles.js.map +1 -1
  1119. package/dist/interactions/actions/edit-anchors/params.js +12 -0
  1120. package/dist/interactions/actions/edit-anchors/params.js.map +1 -0
  1121. package/dist/interactions/actions/edit-anchors/preview.js +93 -18
  1122. package/dist/interactions/actions/edit-anchors/preview.js.map +1 -1
  1123. package/dist/interactions/actions/edit-anchors/symmetry.js +12 -7
  1124. package/dist/interactions/actions/edit-anchors/symmetry.js.map +1 -1
  1125. package/dist/interactions/actions/flip/action.js +121 -61
  1126. package/dist/interactions/actions/flip/action.js.map +1 -1
  1127. package/dist/interactions/actions/flip/helpers.js +69 -36
  1128. package/dist/interactions/actions/flip/helpers.js.map +1 -1
  1129. package/dist/interactions/actions/geometryProjection.js +17 -12
  1130. package/dist/interactions/actions/geometryProjection.js.map +1 -1
  1131. package/dist/interactions/actions/gestureFrames.js +20 -11
  1132. package/dist/interactions/actions/gestureFrames.js.map +1 -1
  1133. package/dist/interactions/actions/gestureLifecycle.js +96 -48
  1134. package/dist/interactions/actions/gestureLifecycle.js.map +1 -1
  1135. package/dist/interactions/actions/hitSelection.js +6 -4
  1136. package/dist/interactions/actions/hitSelection.js.map +1 -1
  1137. package/dist/interactions/actions/insert/action.js +70 -42
  1138. package/dist/interactions/actions/insert/action.js.map +1 -1
  1139. package/dist/interactions/actions/insert/commit.js +44 -22
  1140. package/dist/interactions/actions/insert/commit.js.map +1 -1
  1141. package/dist/interactions/actions/insert/extras.js +60 -38
  1142. package/dist/interactions/actions/insert/extras.js.map +1 -1
  1143. package/dist/interactions/actions/insert/frame.js +58 -39
  1144. package/dist/interactions/actions/insert/frame.js.map +1 -1
  1145. package/dist/interactions/actions/insert/geometry.js +29 -25
  1146. package/dist/interactions/actions/insert/geometry.js.map +1 -1
  1147. package/dist/interactions/actions/insert/parent.js +11 -0
  1148. package/dist/interactions/actions/insert/parent.js.map +1 -0
  1149. package/dist/interactions/actions/insert/placeAction.js +113 -0
  1150. package/dist/interactions/actions/insert/placeAction.js.map +1 -0
  1151. package/dist/interactions/actions/insert/repositionAction.js +26 -11
  1152. package/dist/interactions/actions/insert/repositionAction.js.map +1 -1
  1153. package/dist/interactions/actions/insert/rotateAction.js +19 -8
  1154. package/dist/interactions/actions/insert/rotateAction.js.map +1 -1
  1155. package/dist/interactions/actions/insert/session.js +61 -41
  1156. package/dist/interactions/actions/insert/session.js.map +1 -1
  1157. package/dist/interactions/actions/insert/shape.js +83 -25
  1158. package/dist/interactions/actions/insert/shape.js.map +1 -1
  1159. package/dist/interactions/actions/lasso-select/action.js +160 -100
  1160. package/dist/interactions/actions/lasso-select/action.js.map +1 -1
  1161. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js +44 -25
  1162. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js.map +1 -1
  1163. package/dist/interactions/actions/move/action.js +91 -52
  1164. package/dist/interactions/actions/move/action.js.map +1 -1
  1165. package/dist/interactions/actions/move/behaviors/layoutDrop.js +55 -36
  1166. package/dist/interactions/actions/move/behaviors/layoutDrop.js.map +1 -1
  1167. package/dist/interactions/actions/move/behaviors/reparentOnDrop.js +20 -10
  1168. package/dist/interactions/actions/move/behaviors/reparentOnDrop.js.map +1 -1
  1169. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js +40 -24
  1170. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js.map +1 -1
  1171. package/dist/interactions/actions/move/behaviors/snapToContainer.js +102 -64
  1172. package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -1
  1173. package/dist/interactions/actions/move/capture.js +103 -78
  1174. package/dist/interactions/actions/move/capture.js.map +1 -1
  1175. package/dist/interactions/actions/move/commit/index.js +41 -34
  1176. package/dist/interactions/actions/move/commit/index.js.map +1 -1
  1177. package/dist/interactions/actions/move/commit/layoutDrop.js +43 -32
  1178. package/dist/interactions/actions/move/commit/layoutDrop.js.map +1 -1
  1179. package/dist/interactions/actions/move/commit/layoutRelease.js +97 -77
  1180. package/dist/interactions/actions/move/commit/layoutRelease.js.map +1 -1
  1181. package/dist/interactions/actions/move/commit/rebase.js +16 -13
  1182. package/dist/interactions/actions/move/commit/rebase.js.map +1 -1
  1183. package/dist/interactions/actions/move/commit/reparent.js +89 -57
  1184. package/dist/interactions/actions/move/commit/reparent.js.map +1 -1
  1185. package/dist/interactions/actions/move/delta.js +58 -36
  1186. package/dist/interactions/actions/move/delta.js.map +1 -1
  1187. package/dist/interactions/actions/move/frame.js +66 -35
  1188. package/dist/interactions/actions/move/frame.js.map +1 -1
  1189. package/dist/interactions/actions/move/gestureAdapter.js +30 -20
  1190. package/dist/interactions/actions/move/gestureAdapter.js.map +1 -1
  1191. package/dist/interactions/actions/move/landedDescendants.js +43 -25
  1192. package/dist/interactions/actions/move/landedDescendants.js.map +1 -1
  1193. package/dist/interactions/actions/move/layout/container.js +93 -72
  1194. package/dist/interactions/actions/move/layout/container.js.map +1 -1
  1195. package/dist/interactions/actions/move/layout/dragged.js +61 -39
  1196. package/dist/interactions/actions/move/layout/dragged.js.map +1 -1
  1197. package/dist/interactions/actions/move/layout/dropPass.js +153 -94
  1198. package/dist/interactions/actions/move/layout/dropPass.js.map +1 -1
  1199. package/dist/interactions/actions/move/layout/exits.js +58 -30
  1200. package/dist/interactions/actions/move/layout/exits.js.map +1 -1
  1201. package/dist/interactions/actions/move/layout/glide.js +55 -34
  1202. package/dist/interactions/actions/move/layout/glide.js.map +1 -1
  1203. package/dist/interactions/actions/move/session.js +96 -56
  1204. package/dist/interactions/actions/move/session.js.map +1 -1
  1205. package/dist/interactions/actions/move/translate.js +37 -51
  1206. package/dist/interactions/actions/move/translate.js.map +1 -1
  1207. package/dist/interactions/actions/moveNodes.js +87 -0
  1208. package/dist/interactions/actions/moveNodes.js.map +1 -0
  1209. package/dist/interactions/actions/outlines/createOutlines.js +28 -20
  1210. package/dist/interactions/actions/outlines/createOutlines.js.map +1 -1
  1211. package/dist/interactions/actions/outlines/createOutlinesAction.js +43 -31
  1212. package/dist/interactions/actions/outlines/createOutlinesAction.js.map +1 -1
  1213. package/dist/interactions/actions/outlines/outlineStroke.js +68 -45
  1214. package/dist/interactions/actions/outlines/outlineStroke.js.map +1 -1
  1215. package/dist/interactions/actions/outlines/outlineStrokeAction.js +24 -19
  1216. package/dist/interactions/actions/outlines/outlineStrokeAction.js.map +1 -1
  1217. package/dist/interactions/actions/outlines/replaceWithPaths.js +57 -42
  1218. package/dist/interactions/actions/outlines/replaceWithPaths.js.map +1 -1
  1219. package/dist/interactions/actions/outlines/strokeRegion.js +37 -22
  1220. package/dist/interactions/actions/outlines/strokeRegion.js.map +1 -1
  1221. package/dist/interactions/actions/outlines/useCreateOutlinesAdapter.js +8 -5
  1222. package/dist/interactions/actions/outlines/useCreateOutlinesAdapter.js.map +1 -1
  1223. package/dist/interactions/actions/pathCommands/cutJoin.js +119 -72
  1224. package/dist/interactions/actions/pathCommands/cutJoin.js.map +1 -1
  1225. package/dist/interactions/actions/pathCommands/livePathEdit.js +74 -40
  1226. package/dist/interactions/actions/pathCommands/livePathEdit.js.map +1 -1
  1227. package/dist/interactions/actions/pathCommands/pathNodes.js +91 -82
  1228. package/dist/interactions/actions/pathCommands/pathNodes.js.map +1 -1
  1229. package/dist/interactions/actions/pathCommands/simplifyOffset.js +52 -28
  1230. package/dist/interactions/actions/pathCommands/simplifyOffset.js.map +1 -1
  1231. package/dist/interactions/actions/pathGestureTags.js +29 -0
  1232. package/dist/interactions/actions/pathGestureTags.js.map +1 -0
  1233. package/dist/interactions/actions/planeInput.js +198 -123
  1234. package/dist/interactions/actions/planeInput.js.map +1 -1
  1235. package/dist/interactions/actions/pointerState.js +12 -7
  1236. package/dist/interactions/actions/pointerState.js.map +1 -1
  1237. package/dist/interactions/actions/poseDescriptorDep.js +24 -14
  1238. package/dist/interactions/actions/poseDescriptorDep.js.map +1 -1
  1239. package/dist/interactions/actions/poseFrame.js +45 -28
  1240. package/dist/interactions/actions/poseFrame.js.map +1 -1
  1241. package/dist/interactions/actions/resize/action.js +103 -63
  1242. package/dist/interactions/actions/resize/action.js.map +1 -1
  1243. package/dist/interactions/actions/resize/aspect.js +44 -0
  1244. package/dist/interactions/actions/resize/aspect.js.map +1 -0
  1245. package/dist/interactions/actions/resize/behaviors/clampMinSize.js +38 -13
  1246. package/dist/interactions/actions/resize/behaviors/clampMinSize.js.map +1 -1
  1247. package/dist/interactions/actions/resize/boxFrame.js +15 -11
  1248. package/dist/interactions/actions/resize/boxFrame.js.map +1 -1
  1249. package/dist/interactions/actions/resize/capture.js +105 -62
  1250. package/dist/interactions/actions/resize/capture.js.map +1 -1
  1251. package/dist/interactions/actions/resize/commit.js +76 -56
  1252. package/dist/interactions/actions/resize/commit.js.map +1 -1
  1253. package/dist/interactions/actions/resize/cornerHandles.js +154 -17
  1254. package/dist/interactions/actions/resize/cornerHandles.js.map +1 -1
  1255. package/dist/interactions/actions/resize/frame.js +133 -66
  1256. package/dist/interactions/actions/resize/frame.js.map +1 -1
  1257. package/dist/interactions/actions/resize/minimum.js +35 -0
  1258. package/dist/interactions/actions/resize/minimum.js.map +1 -0
  1259. package/dist/interactions/actions/resize/replay.js +40 -30
  1260. package/dist/interactions/actions/resize/replay.js.map +1 -1
  1261. package/dist/interactions/actions/resize/ruleBounds.js +8 -5
  1262. package/dist/interactions/actions/resize/ruleBounds.js.map +1 -1
  1263. package/dist/interactions/actions/resize/session.js +97 -50
  1264. package/dist/interactions/actions/resize/session.js.map +1 -1
  1265. package/dist/interactions/actions/resolveOverlays.js +48 -33
  1266. package/dist/interactions/actions/resolveOverlays.js.map +1 -1
  1267. package/dist/interactions/actions/resolvePreviews.js +63 -46
  1268. package/dist/interactions/actions/resolvePreviews.js.map +1 -1
  1269. package/dist/interactions/actions/rotate/action.js +71 -42
  1270. package/dist/interactions/actions/rotate/action.js.map +1 -1
  1271. package/dist/interactions/actions/rotate/commit.js +40 -31
  1272. package/dist/interactions/actions/rotate/commit.js.map +1 -1
  1273. package/dist/interactions/actions/rotate/frame.js +75 -47
  1274. package/dist/interactions/actions/rotate/frame.js.map +1 -1
  1275. package/dist/interactions/actions/rotate/geometry.js +36 -24
  1276. package/dist/interactions/actions/rotate/geometry.js.map +1 -1
  1277. package/dist/interactions/actions/rotate/handle.js +28 -15
  1278. package/dist/interactions/actions/rotate/handle.js.map +1 -1
  1279. package/dist/interactions/actions/rotate/replay.js +22 -18
  1280. package/dist/interactions/actions/rotate/replay.js.map +1 -1
  1281. package/dist/interactions/actions/rotate/session.js +117 -76
  1282. package/dist/interactions/actions/rotate/session.js.map +1 -1
  1283. package/dist/interactions/actions/selectionSubtree.js +135 -53
  1284. package/dist/interactions/actions/selectionSubtree.js.map +1 -1
  1285. package/dist/interactions/actions/spatialReference.js +33 -26
  1286. package/dist/interactions/actions/spatialReference.js.map +1 -1
  1287. package/dist/interactions/actions/testUtils.js +53 -0
  1288. package/dist/interactions/actions/testUtils.js.map +1 -0
  1289. package/dist/interactions/actions/transform-again/action.js +49 -35
  1290. package/dist/interactions/actions/transform-again/action.js.map +1 -1
  1291. package/dist/interactions/actions/transform-again/memory.js +32 -21
  1292. package/dist/interactions/actions/transform-again/memory.js.map +1 -1
  1293. package/dist/interactions/actions/transformFinish.js +106 -0
  1294. package/dist/interactions/actions/transformFinish.js.map +1 -0
  1295. package/dist/interactions/actions/useActionSet.js +83 -0
  1296. package/dist/interactions/actions/useActionSet.js.map +1 -0
  1297. package/dist/interactions/actions/useStandardActions.js +23 -165
  1298. package/dist/interactions/actions/useStandardActions.js.map +1 -1
  1299. package/dist/interactions/gestures/dragGesture/dragGesture.js +109 -68
  1300. package/dist/interactions/gestures/dragGesture/dragGesture.js.map +1 -1
  1301. package/dist/interactions/gestures/dragGesture/dragPointOf.js +17 -10
  1302. package/dist/interactions/gestures/dragGesture/dragPointOf.js.map +1 -1
  1303. package/dist/interactions/gestures/dragRadial/dragRadial.js +129 -93
  1304. package/dist/interactions/gestures/dragRadial/dragRadial.js.map +1 -1
  1305. package/dist/interactions/gestures/dragRect/dragRect.js +155 -111
  1306. package/dist/interactions/gestures/dragRect/dragRect.js.map +1 -1
  1307. package/dist/interactions/gestures/handleDrag/handleDrag.js +52 -30
  1308. package/dist/interactions/gestures/handleDrag/handleDrag.js.map +1 -1
  1309. package/dist/interactions/gestures/pointerDrag/pointerDrag.js +168 -97
  1310. package/dist/interactions/gestures/pointerDrag/pointerDrag.js.map +1 -1
  1311. package/dist/interactions/gestures/shared/originProjection.js +32 -25
  1312. package/dist/interactions/gestures/shared/originProjection.js.map +1 -1
  1313. package/dist/interactions/gestures/shared/screenTolerance.js +26 -17
  1314. package/dist/interactions/gestures/shared/screenTolerance.js.map +1 -1
  1315. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js +39 -21
  1316. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js.map +1 -1
  1317. package/dist/kitSettingsSchema.js +76 -0
  1318. package/dist/kitSettingsSchema.js.map +1 -0
  1319. package/dist/{math-CYUjoyyU.d.ts → math-CrJULaZI.d.ts} +5 -6
  1320. package/dist/math.d.ts +4 -5
  1321. package/dist/math.js +7 -6
  1322. package/dist/mesh.js +3 -2
  1323. package/dist/move.d.ts +9 -7
  1324. package/dist/move.js +4 -3
  1325. package/dist/{originProjection-CoNVpITV.d.ts → options-DBxEryYq.d.ts} +4 -27
  1326. package/dist/originProjection-gY0jb4Wb.d.ts +24 -0
  1327. package/dist/patterns-builtin.js +3 -2
  1328. package/dist/{poseDescriptor-Bqk-11Rl.d.ts → poseDescriptor-DN2yfnq_.d.ts} +7 -7
  1329. package/dist/renderer.d.ts +1 -1
  1330. package/dist/renderer.js +3 -2
  1331. package/dist/resize.d.ts +11 -28
  1332. package/dist/resize.js +6 -7
  1333. package/dist/routing.d.ts +1 -1
  1334. package/dist/routing.js +3 -2
  1335. package/dist/style.css +88 -1
  1336. package/dist/test-hook/createTestHook.js +23 -20
  1337. package/dist/test-hook/createTestHook.js.map +1 -1
  1338. package/dist/test-hook/install.js +32 -13
  1339. package/dist/test-hook/install.js.map +1 -1
  1340. package/dist/test-hook/useTestHook.js +23 -16
  1341. package/dist/test-hook/useTestHook.js.map +1 -1
  1342. package/dist/test-seams.d.ts +168 -1
  1343. package/dist/test-seams.js +8 -3
  1344. package/dist/tools/builtin/ellipse/useEllipseTool.js +22 -17
  1345. package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -1
  1346. package/dist/tools/builtin/eyedropper/useEyedropperTool.js +44 -28
  1347. package/dist/tools/builtin/eyedropper/useEyedropperTool.js.map +1 -1
  1348. package/dist/tools/builtin/hand/dragPanContribution.js +12 -7
  1349. package/dist/tools/builtin/hand/dragPanContribution.js.map +1 -1
  1350. package/dist/tools/builtin/hand/useHandTool.js +21 -13
  1351. package/dist/tools/builtin/hand/useHandTool.js.map +1 -1
  1352. package/dist/tools/builtin/image/useImageTool.js +28 -19
  1353. package/dist/tools/builtin/image/useImageTool.js.map +1 -1
  1354. package/dist/tools/builtin/lasso/useLassoTool.js +48 -36
  1355. package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -1
  1356. package/dist/tools/builtin/line/useLineTool.js +24 -17
  1357. package/dist/tools/builtin/line/useLineTool.js.map +1 -1
  1358. package/dist/tools/builtin/measure/useMeasureTool.js +84 -0
  1359. package/dist/tools/builtin/measure/useMeasureTool.js.map +1 -0
  1360. package/dist/tools/builtin/pen/penHandle.js +58 -0
  1361. package/dist/tools/builtin/pen/penHandle.js.map +1 -0
  1362. package/dist/tools/builtin/pen/usePenTool.js +461 -303
  1363. package/dist/tools/builtin/pen/usePenTool.js.map +1 -1
  1364. package/dist/tools/builtin/pencil/usePencilTool.js +20 -15
  1365. package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -1
  1366. package/dist/tools/builtin/pickTopMostHit.js +51 -31
  1367. package/dist/tools/builtin/pickTopMostHit.js.map +1 -1
  1368. package/dist/tools/builtin/polygon/usePolygonTool.js +45 -28
  1369. package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -1
  1370. package/dist/tools/builtin/rect/useRectTool.js +24 -16
  1371. package/dist/tools/builtin/rect/useRectTool.js.map +1 -1
  1372. package/dist/tools/builtin/select/adapterPointQuery.js +47 -30
  1373. package/dist/tools/builtin/select/adapterPointQuery.js.map +1 -1
  1374. package/dist/tools/builtin/select/selectionContributions.js +94 -56
  1375. package/dist/tools/builtin/select/selectionContributions.js.map +1 -1
  1376. package/dist/tools/builtin/select/useSelectTool.js +155 -108
  1377. package/dist/tools/builtin/select/useSelectTool.js.map +1 -1
  1378. package/dist/tools/builtin/shared/insertToolOptions.js +5 -4
  1379. package/dist/tools/builtin/shared/insertToolOptions.js.map +1 -1
  1380. package/dist/tools/builtin/shared/pointerFollower.js +15 -8
  1381. package/dist/tools/builtin/shared/pointerFollower.js.map +1 -1
  1382. package/dist/tools/builtin/slice/useSliceTool.js +148 -101
  1383. package/dist/tools/builtin/slice/useSliceTool.js.map +1 -1
  1384. package/dist/tools/builtin/star/useStarTool.js +48 -31
  1385. package/dist/tools/builtin/star/useStarTool.js.map +1 -1
  1386. package/dist/tools/builtin/sticky/stickyNode.js +49 -0
  1387. package/dist/tools/builtin/sticky/stickyNode.js.map +1 -0
  1388. package/dist/tools/builtin/sticky/useStickyTool.js +86 -0
  1389. package/dist/tools/builtin/sticky/useStickyTool.js.map +1 -0
  1390. package/dist/tools/builtin/text/useTextTool.js +59 -34
  1391. package/dist/tools/builtin/text/useTextTool.js.map +1 -1
  1392. package/dist/tools/index.js +26 -0
  1393. package/dist/tools/overlayBinding.js +7 -5
  1394. package/dist/tools/overlayBinding.js.map +1 -1
  1395. package/dist/tools/useKeybindings.js +62 -46
  1396. package/dist/tools/useKeybindings.js.map +1 -1
  1397. package/dist/{types-DBbbCy0i.d.ts → types-7puAuVD2.d.ts} +5 -264
  1398. package/dist/types-BN9hbdMI.d.ts +184 -0
  1399. package/dist/types-CniVctmk.d.ts +949 -0
  1400. package/dist/types-oFeQ5VjV.d.ts +264 -0
  1401. package/dist/util/color.js +39 -18
  1402. package/dist/util/color.js.map +1 -1
  1403. package/dist/util/paint.js +93 -38
  1404. package/dist/util/paint.js.map +1 -1
  1405. package/dist/version.js +11 -3
  1406. package/dist/version.js.map +1 -1
  1407. package/package.json +46 -24
  1408. package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js +0 -126
  1409. package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js.map +0 -1
  1410. package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js +0 -55
  1411. package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js.map +0 -1
  1412. package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js +0 -16
  1413. package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js.map +0 -1
  1414. package/dist/canvas/SceneCanvas/isDev.js +0 -12
  1415. package/dist/canvas/SceneCanvas/isDev.js.map +0 -1
  1416. package/dist/canvas/SceneCanvas/useViewLayerGate.js +0 -20
  1417. package/dist/canvas/SceneCanvas/useViewLayerGate.js.map +0 -1
  1418. package/dist/cornerHandles-BSKbyuvQ.d.ts +0 -104
  1419. package/dist/icons/ArrowIcon.js +0 -23
  1420. package/dist/icons/ArrowIcon.js.map +0 -1
  1421. package/dist/icons/EllipseIcon.js +0 -21
  1422. package/dist/icons/EllipseIcon.js.map +0 -1
  1423. package/dist/icons/EyedropperIcon.js +0 -49
  1424. package/dist/icons/EyedropperIcon.js.map +0 -1
  1425. package/dist/icons/HandIcon.js +0 -59
  1426. package/dist/icons/HandIcon.js.map +0 -1
  1427. package/dist/icons/ImageIcon.js +0 -34
  1428. package/dist/icons/ImageIcon.js.map +0 -1
  1429. package/dist/icons/LassoIcon.js +0 -22
  1430. package/dist/icons/LassoIcon.js.map +0 -1
  1431. package/dist/icons/LineIcon.js +0 -22
  1432. package/dist/icons/LineIcon.js.map +0 -1
  1433. package/dist/icons/PenIcon.js +0 -36
  1434. package/dist/icons/PenIcon.js.map +0 -1
  1435. package/dist/icons/PencilIcon.js +0 -25
  1436. package/dist/icons/PencilIcon.js.map +0 -1
  1437. package/dist/icons/PolygonIcon.js +0 -19
  1438. package/dist/icons/PolygonIcon.js.map +0 -1
  1439. package/dist/icons/RectIcon.js +0 -37
  1440. package/dist/icons/RectIcon.js.map +0 -1
  1441. package/dist/icons/SelectIcon.js +0 -20
  1442. package/dist/icons/SelectIcon.js.map +0 -1
  1443. package/dist/icons/SliceIcon.js +0 -24
  1444. package/dist/icons/SliceIcon.js.map +0 -1
  1445. package/dist/icons/StarIcon.js +0 -19
  1446. package/dist/icons/StarIcon.js.map +0 -1
  1447. package/dist/icons/TextIcon.js +0 -19
  1448. package/dist/icons/TextIcon.js.map +0 -1
  1449. package/dist/icons/UnknownIcon.js +0 -33
  1450. package/dist/icons/UnknownIcon.js.map +0 -1
  1451. package/dist/icons/_base.js +0 -12
  1452. package/dist/icons/_base.js.map +0 -1
  1453. package/dist/interactions/actions/actionShortcuts.js +0 -32
  1454. package/dist/interactions/actions/actionShortcuts.js.map +0 -1
  1455. package/dist/interactions/actions/defaults/icons/actionGlyphIcons.js +0 -40
  1456. package/dist/interactions/actions/defaults/icons/actionGlyphIcons.js.map +0 -1
  1457. package/dist/interactions/actions/defaults/icons/actionGlyphs.js +0 -10
  1458. package/dist/interactions/actions/defaults/icons/actionGlyphs.js.map +0 -1
  1459. package/dist/interactions/actions/defaults/icons/alignIcons.js +0 -173
  1460. package/dist/interactions/actions/defaults/icons/alignIcons.js.map +0 -1
  1461. package/dist/interactions/actions/defaults/icons/anchorIcons.js +0 -75
  1462. package/dist/interactions/actions/defaults/icons/anchorIcons.js.map +0 -1
  1463. package/dist/interactions/actions/defaults/icons/booleanIcons.js +0 -194
  1464. package/dist/interactions/actions/defaults/icons/booleanIcons.js.map +0 -1
  1465. package/dist/interactions/actions/defaults/icons/distributeIcons.js +0 -63
  1466. package/dist/interactions/actions/defaults/icons/distributeIcons.js.map +0 -1
  1467. package/dist/interactions/actions/defaults/icons/editIcons.js +0 -307
  1468. package/dist/interactions/actions/defaults/icons/editIcons.js.map +0 -1
  1469. package/dist/interactions/actions/defaults/icons/outlineIcons.js +0 -91
  1470. package/dist/interactions/actions/defaults/icons/outlineIcons.js.map +0 -1
  1471. package/dist/interactions/actions/resize/behaviors/index.js +0 -8
  1472. package/dist/interactions/actions/resize/behaviors/index.js.map +0 -1
  1473. package/dist/interactions/actions/resize/behaviors/lockAspect.js +0 -24
  1474. package/dist/interactions/actions/resize/behaviors/lockAspect.js.map +0 -1
  1475. package/dist/interactions/actions/resize/pointSnap.js +0 -111
  1476. package/dist/interactions/actions/resize/pointSnap.js.map +0 -1
  1477. package/dist/interactions/actions/rotate/behaviors/index.js +0 -7
  1478. package/dist/interactions/actions/rotate/behaviors/index.js.map +0 -1
  1479. package/dist/interactions/actions/rotate/behaviors/snapRotation.js +0 -12
  1480. package/dist/interactions/actions/rotate/behaviors/snapRotation.js.map +0 -1
  1481. package/dist/interactions/gestures/shared/snap.js +0 -24
  1482. package/dist/interactions/gestures/shared/snap.js.map +0 -1
  1483. package/dist/test-seams-D0pyV3pR.d.ts +0 -149
  1484. package/dist/tools/builtin/bone/boneActions.js +0 -130
  1485. package/dist/tools/builtin/bone/boneActions.js.map +0 -1
  1486. package/dist/tools/builtin/bone/boneOverlay.js +0 -58
  1487. package/dist/tools/builtin/bone/boneOverlay.js.map +0 -1
  1488. package/dist/tools/builtin/bone/placedRig.js +0 -24
  1489. package/dist/tools/builtin/bone/placedRig.js.map +0 -1
  1490. package/dist/tools/builtin/bone/rigEditState.js +0 -21
  1491. package/dist/tools/builtin/bone/rigEditState.js.map +0 -1
  1492. package/dist/tools/builtin/bone/useBoneTool.js +0 -98
  1493. package/dist/tools/builtin/bone/useBoneTool.js.map +0 -1
  1494. package/dist/tools/builtin/weight/useWeightTool.js +0 -77
  1495. package/dist/tools/builtin/weight/useWeightTool.js.map +0 -1
  1496. package/dist/tools/builtin/weight/weightActions.js +0 -112
  1497. package/dist/tools/builtin/weight/weightActions.js.map +0 -1
  1498. package/dist/tools/builtin/weight/weightOverlay.js +0 -61
  1499. package/dist/tools/builtin/weight/weightOverlay.js.map +0 -1
  1500. package/dist/util/constrainTo45.js +0 -17
  1501. package/dist/util/constrainTo45.js.map +0 -1
@@ -1,31 +1,55 @@
1
- import { unionAABB as e } from "../geometry/unionBounds.js";
1
+ import { unionAABB } from "../geometry/unionBounds.js";
2
+
2
3
  //#region src/core/selection/chromeState.ts
3
- var t = {
4
+ /** Nothing selected, nothing resolvable — what a caller reads before a
5
+ * surface has attached, or where chrome state has no owner. */
6
+ var EMPTY_CHROME_STATE = {
4
7
  selection: [],
5
- multiActive: !1,
8
+ multiActive: false,
6
9
  boundsOf: () => null,
7
10
  unionBounds: null,
8
11
  modifiers: {
9
- alt: !1,
10
- shift: !1,
11
- meta: !1,
12
- ctrl: !1
12
+ alt: false,
13
+ shift: false,
14
+ meta: false,
15
+ ctrl: false
13
16
  }
14
17
  };
15
- function n(t) {
16
- let { selection: n, multiActive: r, effectiveBoundsOf: i, modifiers: a, canRotate: o } = t;
18
+ /** Whether chrome goes on something painted on `layer`, as `gate` — a
19
+ * `ChromeState`, a `ViewApi` — says. No layer, or no gate: it does. */
20
+ function paintsLayer(gate, layer) {
21
+ return layer === void 0 || gate?.layerIsPainted?.(layer) !== false;
22
+ }
23
+ function buildChromeState(args) {
24
+ const { effectiveBoundsOf, modifiers, canRotate, layerIsPainted, layerOf } = args;
25
+ const gate = { ...layerIsPainted ? { layerIsPainted } : {} };
26
+ const shown = () => {
27
+ if (!layerIsPainted || !layerOf) return args.selection;
28
+ const kept = args.selection.filter((id) => paintsLayer(gate, layerOf(id)));
29
+ return kept.length === args.selection.length ? args.selection : kept;
30
+ };
31
+ const multi = () => {
32
+ const ids = shown();
33
+ return args.multiActive && (ids === args.selection || ids.length > 1);
34
+ };
17
35
  return {
18
- selection: n,
19
- multiActive: r,
20
- boundsOf: i,
21
- modifiers: a,
22
- canRotate: o ?? (() => !0),
36
+ get selection() {
37
+ return shown();
38
+ },
39
+ get multiActive() {
40
+ return multi();
41
+ },
42
+ boundsOf: effectiveBoundsOf,
43
+ modifiers,
44
+ canRotate: canRotate ?? (() => true),
45
+ ...gate,
23
46
  get unionBounds() {
24
- return r ? e(n.map((e) => i(e))) : null;
47
+ if (!multi()) return null;
48
+ return unionAABB(shown().map((id) => effectiveBoundsOf(id)));
25
49
  }
26
50
  };
27
51
  }
28
- //#endregion
29
- export { t as EMPTY_CHROME_STATE, n as buildChromeState };
30
52
 
53
+ //#endregion
54
+ export { EMPTY_CHROME_STATE, buildChromeState, paintsLayer };
31
55
  //# sourceMappingURL=chromeState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chromeState.js","names":["EMPTY_CHROME_STATE","buildChromeState","args","effectiveBoundsOf","canRotate","multiActive","unionAABB","selection","id"],"sources":["../../../src/core/selection/chromeState.ts"],"sourcesContent":["import type { NodeId } from '../scene/types';\nimport type { ModifierState } from '../modifierState';\nimport type { Bounds } from '../viewport/fitViewToBounds';\nimport { unionAABB } from 'core/geometry/unionBounds';\n\nexport type { Bounds };\n\n/** Nothing selected, nothing resolvable — what a caller reads before a\n * surface has attached, or where chrome state has no owner. */\nexport const EMPTY_CHROME_STATE: ChromeState = {\n selection: [],\n multiActive: false,\n boundsOf: () => null,\n unionBounds: null,\n modifiers: { alt: false, shift: false, meta: false, ctrl: false },\n};\n\n/**\n * Read-only state that affordances consult on every render and hit-test\n * call. Built via `buildChromeState` and held across renders, so affordances\n * must not cache anything they read from it.\n */\nexport interface ChromeState {\n /** Currently selected ids. Live; reflects useSelection's React state. */\n readonly selection: readonly NodeId[];\n /** True when the canvas is in multi-mode AND >= 2 ids are selected. */\n readonly multiActive: boolean;\n /** Bounds for any selection member id. Honors active-tool overlay state\n * (move/resize/rotate ghosts → ghost bounds; otherwise → committed\n * pose bounds). Returns null for unknown ids or ids whose bounds aren't\n * computable. */\n boundsOf(id: string): Bounds | null;\n /** Multi-union AABB when `multiActive`. Recomputed from `boundsOf` over\n * every selected id on each read, expanding rotated members to the extent\n * of their ink; null otherwise. */\n readonly unionBounds: Bounds | null;\n /** Active modifier state at the moment of the call. */\n readonly modifiers: ModifierState;\n /** True iff the node's pose-descriptor declares it can carry a rotation.\n * Affordances consult this to decide whether to expose rotate cursors /\n * drag-bands. Defaults to `true` when the descriptor doesn't declare\n * (back-compat) or when the id is unknown — the rotation gesture will\n * no-op visually for poses without AABB fields, but the affordance\n * doesn't lie about the cursor. Optional on the interface so unit-test\n * call sites that construct `ChromeState` by hand keep compiling;\n * affordances should treat an absent predicate as \"true\". */\n canRotate?(id: string): boolean;\n}\n\nexport interface BuildChromeStateArgs {\n selection: readonly NodeId[];\n multiActive: boolean;\n effectiveBoundsOf: (id: string) => Bounds | null;\n modifiers: ModifierState;\n /** Optional rotation-support predicate. When omitted, `canRotate` returns\n * `true` for every id — preserves pre-existing affordance behavior for\n * unit-test call sites that don't wire pose-descriptor capability. */\n canRotate?: (id: string) => boolean;\n}\n\nexport function buildChromeState(args: BuildChromeStateArgs): ChromeState {\n const { selection, multiActive, effectiveBoundsOf, modifiers, canRotate } = args;\n return {\n selection,\n multiActive,\n boundsOf: effectiveBoundsOf,\n modifiers,\n canRotate: canRotate ?? (() => true),\n // Not cached: the state is memoized across renders, and poses move under\n // it (a committed move, a live preview) without any of its inputs changing.\n get unionBounds() {\n if (!multiActive) return null;\n return unionAABB(selection.map((id) => effectiveBoundsOf(id)));\n },\n };\n}\n"],"mappings":";;AASA,IAAaA,IAAkC;CAC7C,WAAW,CAAC;CACZ,aAAa;CACb,gBAAgB;CAChB,aAAa;CACb,WAAW;EAAE,KAAK;EAAO,OAAO;EAAO,MAAM;EAAO,MAAM;CAAM;AAClE;AA6CA,SAAgBC,EAAiB,GAAyC;CACxE,IAAM,EAAE,cAAW,gBAAa,sBAAmB,cAAW,iBAAcC;CAC5E,OAAO;EACL;EACA;EACA,UAAUC;EACV;EACA,WAAWC,YAAoB;EAG/B,IAAI,cAAc;GAEhB,OADKC,IACEC,EAAUC,EAAU,KAAK,MAAOJ,EAAkBK,CAAE,CAAC,CAAC,IADpC;EAE3B;CACF;AACF"}
1
+ {"version":3,"file":"chromeState.js","names":[],"sources":["../../../src/core/selection/chromeState.ts"],"sourcesContent":["import type { NodeId } from '../scene/types';\nimport type { ModifierState } from '../modifierState';\nimport type { Bounds } from '../viewport/fitViewToBounds';\nimport { unionAABB } from 'core/geometry/unionBounds';\n\nexport type { Bounds };\n\n/** Nothing selected, nothing resolvable — what a caller reads before a\n * surface has attached, or where chrome state has no owner. */\nexport const EMPTY_CHROME_STATE: ChromeState = {\n selection: [],\n multiActive: false,\n boundsOf: () => null,\n unionBounds: null,\n modifiers: { alt: false, shift: false, meta: false, ctrl: false },\n};\n\n/**\n * Read-only state that affordances consult on every render and hit-test\n * call. Built via `buildChromeState` and held across renders, so affordances\n * must not cache anything they read from it.\n */\nexport interface ChromeState {\n /** Currently selected ids. Live; reflects useSelection's React state,\n * less any on a layer this view does not paint. */\n readonly selection: readonly NodeId[];\n /** True when the canvas is in multi-mode AND >= 2 ids are selected, and\n * still >= 2 once `selection` drops the ones this view does not paint. */\n readonly multiActive: boolean;\n /** Bounds for any selection member id. Honors active-tool overlay state\n * (move/resize/rotate ghosts → ghost bounds; otherwise → committed\n * pose bounds). Returns null for unknown ids or ids whose bounds aren't\n * computable. */\n boundsOf(id: string): Bounds | null;\n /** Multi-union AABB when `multiActive`. Recomputed from `boundsOf` over\n * every selected id on each read, expanding rotated members to the extent\n * of their ink; null otherwise. */\n readonly unionBounds: Bounds | null;\n /** Active modifier state at the moment of the call. */\n readonly modifiers: ModifierState;\n /** True iff the node's pose-descriptor declares it can carry a rotation.\n * Affordances consult this to decide whether to expose rotate cursors /\n * drag-bands. Defaults to `true` when the descriptor doesn't declare\n * (back-compat) or when the id is unknown — the rotation gesture will\n * no-op visually for poses without AABB fields, but the affordance\n * doesn't lie about the cursor. Optional on the interface so unit-test\n * call sites that construct `ChromeState` by hand keep compiling;\n * affordances should treat an absent predicate as \"true\". */\n canRotate?(id: string): boolean;\n /** Whether a scene layer reaches the screen in the view this state was\n * built for — its `layerVisibility` / `layerOrder`, as `ViewApi` answers\n * it. Absent: the view paints every layer the scene shows. An affordance\n * that reads it puts no chrome on a node whose layer it says `false` to. */\n layerIsPainted?(layerId: string): boolean;\n}\n\nexport interface BuildChromeStateArgs {\n selection: readonly NodeId[];\n multiActive: boolean;\n effectiveBoundsOf: (id: string) => Bounds | null;\n modifiers: ModifierState;\n /** Optional rotation-support predicate. When omitted, `canRotate` returns\n * `true` for every id — preserves pre-existing affordance behavior for\n * unit-test call sites that don't wire pose-descriptor capability. */\n canRotate?: (id: string) => boolean;\n layerIsPainted?: (layerId: string) => boolean;\n /** The scene layer a selected id is painted on. With `layerIsPainted`,\n * drops from `selection` every id this view does not paint. */\n layerOf?: (id: string) => string | undefined;\n}\n\n/** Whether chrome goes on something painted on `layer`, as `gate` — a\n * `ChromeState`, a `ViewApi` — says. No layer, or no gate: it does. */\nexport function paintsLayer(\n gate: { layerIsPainted?(layerId: string): boolean } | null | undefined,\n layer: string | undefined,\n): boolean {\n return layer === undefined || gate?.layerIsPainted?.(layer) !== false;\n}\n\nexport function buildChromeState(args: BuildChromeStateArgs): ChromeState {\n const { effectiveBoundsOf, modifiers, canRotate, layerIsPainted, layerOf } = args;\n const gate = { ...(layerIsPainted ? { layerIsPainted } : {}) };\n // Read per call, like `unionBounds`: the view's layer settings change under a memoized state.\n const shown = (): readonly NodeId[] => {\n if (!layerIsPainted || !layerOf) return args.selection;\n const kept = args.selection.filter((id) => paintsLayer(gate, layerOf(id)));\n return kept.length === args.selection.length ? args.selection : kept;\n };\n const multi = (): boolean => {\n const ids = shown();\n return args.multiActive && (ids === args.selection || ids.length > 1);\n };\n return {\n get selection() { return shown(); },\n get multiActive() { return multi(); },\n boundsOf: effectiveBoundsOf,\n modifiers,\n canRotate: canRotate ?? (() => true),\n ...gate,\n // Not cached: the state is memoized across renders, and poses move under\n // it (a committed move, a live preview) without any of its inputs changing.\n get unionBounds() {\n if (!multi()) return null;\n return unionAABB(shown().map((id) => effectiveBoundsOf(id)));\n },\n };\n}\n"],"mappings":";;;;;AASA,IAAa,qBAAkC;CAC7C,WAAW,CAAC;CACZ,aAAa;CACb,gBAAgB;CAChB,aAAa;CACb,WAAW;EAAE,KAAK;EAAO,OAAO;EAAO,MAAM;EAAO,MAAM;CAAM;AAClE;;;AA0DA,SAAgB,YACd,MACA,OACS;CACT,OAAO,UAAU,UAAa,MAAM,iBAAiB,KAAK,MAAM;AAClE;AAEA,SAAgB,iBAAiB,MAAyC;CACxE,MAAM,EAAE,mBAAmB,WAAW,WAAW,gBAAgB,YAAY;CAC7E,MAAM,OAAO,EAAE,GAAI,iBAAiB,EAAE,eAAe,IAAI,CAAC,EAAG;CAE7D,MAAM,cAAiC;EACrC,IAAI,CAAC,kBAAkB,CAAC,SAAS,OAAO,KAAK;EAC7C,MAAM,OAAO,KAAK,UAAU,QAAQ,OAAO,YAAY,MAAM,QAAQ,EAAE,CAAC,CAAC;EACzE,OAAO,KAAK,WAAW,KAAK,UAAU,SAAS,KAAK,YAAY;CAClE;CACA,MAAM,cAAuB;EAC3B,MAAM,MAAM,MAAM;EAClB,OAAO,KAAK,gBAAgB,QAAQ,KAAK,aAAa,IAAI,SAAS;CACrE;CACA,OAAO;EACL,IAAI,YAAY;GAAE,OAAO,MAAM;EAAG;EAClC,IAAI,cAAc;GAAE,OAAO,MAAM;EAAG;EACpC,UAAU;EACV;EACA,WAAW,oBAAoB;EAC/B,GAAG;EAGH,IAAI,cAAc;GAChB,IAAI,CAAC,MAAM,GAAG,OAAO;GACrB,OAAO,UAAU,MAAM,CAAC,CAAC,KAAK,OAAO,kBAAkB,EAAE,CAAC,CAAC;EAC7D;CACF;AACF"}
@@ -1,32 +1,47 @@
1
1
  //#region src/core/selection/readOnlySelection.ts
2
- var e = /* @__PURE__ */ new WeakMap(), t = /* @__PURE__ */ new WeakMap(), n = () => {};
3
- function r(t) {
4
- let r = e.get(t);
5
- return r || (r = {
6
- getSelection: () => t.getSelection(),
7
- setSelection: n
8
- }, e.set(t, r)), r;
2
+ var methodViews = /* @__PURE__ */ new WeakMap();
3
+ var apiViews = /* @__PURE__ */ new WeakMap();
4
+ var ignore = () => {};
5
+ function readOnlyAdapterMethods(methods) {
6
+ let view = methodViews.get(methods);
7
+ if (!view) {
8
+ view = {
9
+ getSelection: () => methods.getSelection(),
10
+ setSelection: ignore
11
+ };
12
+ methodViews.set(methods, view);
13
+ }
14
+ return view;
9
15
  }
10
- function i(e) {
11
- let i = r(e.adapterMethods), a = t.get(e);
12
- if (a && a.adapterMethods === i) return a;
13
- let o = {
16
+ /**
17
+ * A view of `api` that reads the live selection and ignores every write.
18
+ * `api` itself is untouched and still writes.
19
+ *
20
+ * One view per `api`, and one set of `adapterMethods` per `api.adapterMethods`,
21
+ * so either is as stable a memo or effect dependency as the object it wraps.
22
+ */
23
+ function readOnlySelection(api) {
24
+ const adapterMethods = readOnlyAdapterMethods(api.adapterMethods);
25
+ const cached = apiViews.get(api);
26
+ if (cached && cached.adapterMethods === adapterMethods) return cached;
27
+ const view = {
14
28
  get current() {
15
- return e.current;
29
+ return api.current;
16
30
  },
17
- get: e.get,
18
- contains: e.contains,
19
- set: n,
20
- add: n,
21
- remove: n,
22
- toggle: n,
23
- clear: n,
24
- applyClick: n,
25
- adapterMethods: i
31
+ get: api.get,
32
+ contains: api.contains,
33
+ set: ignore,
34
+ add: ignore,
35
+ remove: ignore,
36
+ toggle: ignore,
37
+ clear: ignore,
38
+ applyClick: ignore,
39
+ adapterMethods
26
40
  };
27
- return t.set(e, o), o;
41
+ apiViews.set(api, view);
42
+ return view;
28
43
  }
29
- //#endregion
30
- export { i as readOnlySelection };
31
44
 
45
+ //#endregion
46
+ export { readOnlySelection };
32
47
  //# sourceMappingURL=readOnlySelection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"readOnlySelection.js","names":["methodViews","apiViews","ignore","readOnlyAdapterMethods","view","methods","readOnlySelection","adapterMethods","api","cached"],"sources":["../../../src/core/selection/readOnlySelection.ts"],"sourcesContent":["import type { SelectionApi } from './useSelection';\n\ntype AdapterMethods = SelectionApi['adapterMethods'];\n\nconst methodViews = new WeakMap<AdapterMethods, AdapterMethods>();\nconst apiViews = new WeakMap<SelectionApi, SelectionApi>();\n\nconst ignore = (): void => {};\n\nfunction readOnlyAdapterMethods(methods: AdapterMethods): AdapterMethods {\n let view = methodViews.get(methods);\n if (!view) {\n view = { getSelection: () => methods.getSelection(), setSelection: ignore };\n methodViews.set(methods, view);\n }\n return view;\n}\n\n/**\n * A view of `api` that reads the live selection and ignores every write.\n * `api` itself is untouched and still writes.\n *\n * One view per `api`, and one set of `adapterMethods` per `api.adapterMethods`,\n * so either is as stable a memo or effect dependency as the object it wraps.\n */\nexport function readOnlySelection(api: SelectionApi): SelectionApi {\n const adapterMethods = readOnlyAdapterMethods(api.adapterMethods);\n const cached = apiViews.get(api);\n if (cached && cached.adapterMethods === adapterMethods) return cached;\n const view: SelectionApi = {\n get current() { return api.current; },\n get: api.get,\n contains: api.contains,\n set: ignore,\n add: ignore,\n remove: ignore,\n toggle: ignore,\n clear: ignore,\n applyClick: ignore,\n adapterMethods,\n };\n apiViews.set(api, view);\n return view;\n}\n"],"mappings":";AAIA,IAAMA,oBAAc,IAAI,QAAwC,GAC1DC,oBAAW,IAAI,QAAoC,GAEnDC,UAAqB,CAAC;AAE5B,SAASC,EAAuB,GAAyC;CACvE,IAAIC,IAAOJ,EAAY,IAAIK,CAAO;CAKlC,OAJKD,MACH,IAAO;EAAE,oBAAoBC,EAAQ,aAAa;EAAG,cAAcH;CAAO,GAC1EF,EAAY,IAAIK,GAASD,CAAI,IAExBA;AACT;AASA,SAAgBE,EAAkB,GAAiC;CACjE,IAAMC,IAAiBJ,EAAuBK,EAAI,cAAc,GAC1DC,IAASR,EAAS,IAAIO,CAAG;CAC/B,IAAIC,KAAUA,EAAO,mBAAmBF,GAAgB,OAAOE;CAC/D,IAAML,IAAqB;EACzB,IAAI,UAAU;GAAE,OAAOI,EAAI;EAAS;EACpC,KAAKA,EAAI;EACT,UAAUA,EAAI;EACd,KAAKN;EACL,KAAKA;EACL,QAAQA;EACR,QAAQA;EACR,OAAOA;EACP,YAAYA;EACZ;CACF;CAEA,OADAD,EAAS,IAAIO,GAAKJ,CAAI,GACfA;AACT"}
1
+ {"version":3,"file":"readOnlySelection.js","names":[],"sources":["../../../src/core/selection/readOnlySelection.ts"],"sourcesContent":["import type { SelectionApi } from './useSelection';\n\ntype AdapterMethods = SelectionApi['adapterMethods'];\n\nconst methodViews = new WeakMap<AdapterMethods, AdapterMethods>();\nconst apiViews = new WeakMap<SelectionApi, SelectionApi>();\n\nconst ignore = (): void => {};\n\nfunction readOnlyAdapterMethods(methods: AdapterMethods): AdapterMethods {\n let view = methodViews.get(methods);\n if (!view) {\n view = { getSelection: () => methods.getSelection(), setSelection: ignore };\n methodViews.set(methods, view);\n }\n return view;\n}\n\n/**\n * A view of `api` that reads the live selection and ignores every write.\n * `api` itself is untouched and still writes.\n *\n * One view per `api`, and one set of `adapterMethods` per `api.adapterMethods`,\n * so either is as stable a memo or effect dependency as the object it wraps.\n */\nexport function readOnlySelection(api: SelectionApi): SelectionApi {\n const adapterMethods = readOnlyAdapterMethods(api.adapterMethods);\n const cached = apiViews.get(api);\n if (cached && cached.adapterMethods === adapterMethods) return cached;\n const view: SelectionApi = {\n get current() { return api.current; },\n get: api.get,\n contains: api.contains,\n set: ignore,\n add: ignore,\n remove: ignore,\n toggle: ignore,\n clear: ignore,\n applyClick: ignore,\n adapterMethods,\n };\n apiViews.set(api, view);\n return view;\n}\n"],"mappings":";AAIA,IAAM,8BAAc,IAAI,QAAwC;AAChE,IAAM,2BAAW,IAAI,QAAoC;AAEzD,IAAM,eAAqB,CAAC;AAE5B,SAAS,uBAAuB,SAAyC;CACvE,IAAI,OAAO,YAAY,IAAI,OAAO;CAClC,IAAI,CAAC,MAAM;EACT,OAAO;GAAE,oBAAoB,QAAQ,aAAa;GAAG,cAAc;EAAO;EAC1E,YAAY,IAAI,SAAS,IAAI;CAC/B;CACA,OAAO;AACT;;;;;;;;AASA,SAAgB,kBAAkB,KAAiC;CACjE,MAAM,iBAAiB,uBAAuB,IAAI,cAAc;CAChE,MAAM,SAAS,SAAS,IAAI,GAAG;CAC/B,IAAI,UAAU,OAAO,mBAAmB,gBAAgB,OAAO;CAC/D,MAAM,OAAqB;EACzB,IAAI,UAAU;GAAE,OAAO,IAAI;EAAS;EACpC,KAAK,IAAI;EACT,UAAU,IAAI;EACd,KAAK;EACL,KAAK;EACL,QAAQ;EACR,QAAQ;EACR,OAAO;EACP,YAAY;EACZ;CACF;CACA,SAAS,IAAI,KAAK,IAAI;CACtB,OAAO;AACT"}
@@ -1,6 +1,17 @@
1
1
  //#region src/core/selection/selectionTarget.ts
2
- var e = "__weasel:multi-selection";
3
- //#endregion
4
- export { e as MULTI_RESIZE_TARGET_ID };
2
+ /** Synthetic id a canvas uses to address the
3
+ * union-AABB target when 2+ real ids are selected. The selection-overlay
4
+ * layer and the affordance hit-tester both resolve it to `ChromeState`'s
5
+ * `unionBounds`; consumers wiring their own selection-overlay layer can
6
+ * reference the same constant.
7
+ *
8
+ * Lives in `core/selection` (next to `ChromeState`) because it's a
9
+ * selection-derived concept, not a tool concept — `affordances/`,
10
+ * `features/selection/`, and `tools/` all consume it, so it must sit at
11
+ * the bottom of the layering (`core` → `affordances` → `tools` →
12
+ * `features`). */
13
+ var MULTI_RESIZE_TARGET_ID = "__weasel:multi-selection";
5
14
 
15
+ //#endregion
16
+ export { MULTI_RESIZE_TARGET_ID };
6
17
  //# sourceMappingURL=selectionTarget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"selectionTarget.js","names":["MULTI_RESIZE_TARGET_ID"],"sources":["../../../src/core/selection/selectionTarget.ts"],"sourcesContent":["/** Synthetic id a canvas uses to address the\n * union-AABB target when 2+ real ids are selected. The selection-overlay\n * layer and the affordance hit-tester both resolve it to `ChromeState`'s\n * `unionBounds`; consumers wiring their own selection-overlay layer can\n * reference the same constant.\n *\n * Lives in `core/selection` (next to `ChromeState`) because it's a\n * selection-derived concept, not a tool concept — `affordances/`,\n * `features/selection/`, and `tools/` all consume it, so it must sit at\n * the bottom of the layering (`core` → `affordances` → `tools` →\n * `features`). */\nexport const MULTI_RESIZE_TARGET_ID = '__weasel:multi-selection';\n"],"mappings":";AAWA,IAAaA,IAAyB"}
1
+ {"version":3,"file":"selectionTarget.js","names":[],"sources":["../../../src/core/selection/selectionTarget.ts"],"sourcesContent":["/** Synthetic id a canvas uses to address the\n * union-AABB target when 2+ real ids are selected. The selection-overlay\n * layer and the affordance hit-tester both resolve it to `ChromeState`'s\n * `unionBounds`; consumers wiring their own selection-overlay layer can\n * reference the same constant.\n *\n * Lives in `core/selection` (next to `ChromeState`) because it's a\n * selection-derived concept, not a tool concept — `affordances/`,\n * `features/selection/`, and `tools/` all consume it, so it must sit at\n * the bottom of the layering (`core` → `affordances` → `tools` →\n * `features`). */\nexport const MULTI_RESIZE_TARGET_ID = '__weasel:multi-selection';\n"],"mappings":";;;;;;;;;;;;AAWA,IAAa,yBAAyB"}
@@ -1,26 +1,27 @@
1
- import { useMemo as e } from "react";
2
- import { usePublishSelection as t } from "@weasel-js/routing/react";
1
+ import { useMemo } from "react";
2
+ import { usePublishSelection } from "@weasel-js/routing/react";
3
+
3
4
  //#region src/core/selection/usePublishSceneSelection.ts
4
- function n(e) {
5
- if (e.kind === "container") return "group";
6
- let t = e.pose;
7
- if (t && typeof t == "object" && "kind" in t && typeof t.kind == "string") return "path";
8
- }
9
- function r(e, t, r) {
10
- if (t.length !== 0) return t.map((t) => {
11
- let i = e.get(t);
12
- if (i) return r ? r(i) : n(i);
5
+ /** The label published beside each selected id, parallel to `ids`; `undefined` when
6
+ * nothing is selected. Without `describe`, every entry is unlabeled. */
7
+ function selectionKindLabels(scene, ids, describe) {
8
+ if (ids.length === 0) return void 0;
9
+ return ids.map((id) => {
10
+ const node = scene.get(id);
11
+ return node && describe ? describe(node) : void 0;
13
12
  });
14
13
  }
15
- function i(n, i, a) {
16
- let o = e(() => r(n, i, a), [
17
- n,
18
- i,
19
- a
14
+ /** Publishes a scene's selection, with a kind label per id, into any surrounding
15
+ * `<SelectionContextProvider>`. A no-op without one. */
16
+ function usePublishSceneSelection(scene, ids, describe) {
17
+ const kinds = useMemo(() => selectionKindLabels(scene, ids, describe), [
18
+ scene,
19
+ ids,
20
+ describe
20
21
  ]);
21
- t(i, o);
22
+ usePublishSelection(ids, kinds);
22
23
  }
23
- //#endregion
24
- export { r as selectionKindLabels, i as usePublishSceneSelection };
25
24
 
25
+ //#endregion
26
+ export { selectionKindLabels, usePublishSceneSelection };
26
27
  //# sourceMappingURL=usePublishSceneSelection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePublishSceneSelection.js","names":["defaultKindLabel","node","pose","selectionKindLabels","ids","scene","id","describeKind","usePublishSceneSelection","kinds","useMemo"],"sources":["../../../src/core/selection/usePublishSceneSelection.ts"],"sourcesContent":["import { usePublishSelection } from '@weasel-js/routing/react';\nimport type { Node, NodeId, Scene } from 'core/scene/types';\nimport { useMemo } from 'react';\n\ntype KindLabel = string | undefined;\n\n// Not the routing kind: this reads the node and its pose where `NodeRouting.classify` reads\n// `data`, and the two disagree on most nodes (`SceneCanvas.selectionKinds.test.tsx`).\nfunction defaultKindLabel(node: Node<unknown, string, unknown>): KindLabel {\n if (node.kind === 'container') return 'group';\n const pose = node.pose as { kind?: unknown } | null;\n if (pose && typeof pose === 'object' && 'kind' in pose && typeof pose.kind === 'string') return 'path';\n return undefined;\n}\n\n/** The label published beside each selected id, parallel to `ids`; `undefined` when\n * nothing is selected. `describeKind` replaces the default for every node. */\nexport function selectionKindLabels<TData, TLayer extends string, TPose>(\n scene: Pick<Scene<TData, TLayer, TPose>, 'get'>,\n ids: readonly NodeId[],\n describeKind?: (node: Node<TData, TLayer, TPose>) => KindLabel,\n): readonly KindLabel[] | undefined {\n if (ids.length === 0) return undefined;\n return ids.map((id) => {\n const node = scene.get(id);\n if (!node) return undefined;\n return describeKind ? describeKind(node) : defaultKindLabel(node as Node<unknown, string, unknown>);\n });\n}\n\n/** Publishes a scene's selection, with a kind label per id, into any surrounding\n * `<SelectionContextProvider>`. A no-op without one. */\nexport function usePublishSceneSelection<TData, TLayer extends string, TPose>(\n scene: Pick<Scene<TData, TLayer, TPose>, 'get'>,\n ids: readonly NodeId[],\n describeKind?: (node: Node<TData, TLayer, TPose>) => KindLabel,\n): void {\n const kinds = useMemo(() => selectionKindLabels(scene, ids, describeKind), [scene, ids, describeKind]);\n usePublishSelection(ids, kinds);\n}\n"],"mappings":";;;AAQA,SAASA,EAAiB,GAAiD;CACzE,IAAIC,EAAK,SAAS,aAAa,OAAO;CACtC,IAAMC,IAAOD,EAAK;CAClB,IAAIC,KAAQ,OAAOA,KAAS,YAAY,UAAUA,KAAQ,OAAOA,EAAK,QAAS,UAAU,OAAO;AAElG;AAIA,SAAgBC,EACd,GACA,GACA,GACkC;CAClC,IAAIC,EAAI,WAAW,GACnB,OAAOA,EAAI,KAAK,MAAO;EACrB,IAAMH,IAAOI,EAAM,IAAIC,CAAE;EACzB,IAAKL,GACL,OAAOM,IAAeA,EAAaN,CAAI,IAAID,EAAiBC,CAAsC;CACpG,CAAC;AACH;AAIA,SAAgBO,EACd,GACA,GACA,GACM;CACN,IAAMC,IAAQC,QAAcP,EAAoBE,GAAOD,GAAKG,CAAY,GAAG;EAACF;EAAOD;EAAKG;CAAY,CAAC;CACrG,EAAoBH,GAAKK,CAAK;AAChC"}
1
+ {"version":3,"file":"usePublishSceneSelection.js","names":[],"sources":["../../../src/core/selection/usePublishSceneSelection.ts"],"sourcesContent":["import { usePublishSelection } from '@weasel-js/routing/react';\nimport type { Node, NodeId, Scene } from 'core/scene/types';\nimport { useMemo } from 'react';\n\ntype KindLabel = string | undefined;\n\n/** The label published beside each selected id, parallel to `ids`; `undefined` when\n * nothing is selected. Without `describe`, every entry is unlabeled. */\nexport function selectionKindLabels<TData, TLayer extends string, TPose>(\n scene: Pick<Scene<TData, TLayer, TPose>, 'get'>,\n ids: readonly NodeId[],\n describe?: (node: Node<TData, TLayer, TPose>) => KindLabel,\n): readonly KindLabel[] | undefined {\n if (ids.length === 0) return undefined;\n return ids.map((id) => {\n const node = scene.get(id);\n return node && describe ? describe(node) : undefined;\n });\n}\n\n/** Publishes a scene's selection, with a kind label per id, into any surrounding\n * `<SelectionContextProvider>`. A no-op without one. */\nexport function usePublishSceneSelection<TData, TLayer extends string, TPose>(\n scene: Pick<Scene<TData, TLayer, TPose>, 'get'>,\n ids: readonly NodeId[],\n describe?: (node: Node<TData, TLayer, TPose>) => KindLabel,\n): void {\n const kinds = useMemo(() => selectionKindLabels(scene, ids, describe), [scene, ids, describe]);\n usePublishSelection(ids, kinds);\n}\n"],"mappings":";;;;;;AAQA,SAAgB,oBACd,OACA,KACA,UACkC;CAClC,IAAI,IAAI,WAAW,GAAG,OAAO;CAC7B,OAAO,IAAI,KAAK,OAAO;EACrB,MAAM,OAAO,MAAM,IAAI,EAAE;EACzB,OAAO,QAAQ,WAAW,SAAS,IAAI,IAAI;CAC7C,CAAC;AACH;;;AAIA,SAAgB,yBACd,OACA,KACA,UACM;CACN,MAAM,QAAQ,cAAc,oBAAoB,OAAO,KAAK,QAAQ,GAAG;EAAC;EAAO;EAAK;CAAQ,CAAC;CAC7F,oBAAoB,KAAK,KAAK;AAChC"}
@@ -1,74 +1,107 @@
1
- import { dlog as e } from "../../debug/flag.js";
2
- import { useLayoutEffect as t, useMemo as n, useRef as r, useState as i, useSyncExternalStore as a } from "react";
3
- import { useLatest as o } from "@weasel-js/react";
4
- import { createSelectionStore as s, intentOf as c, select as l } from "@weasel-js/select";
1
+ import { dlog } from "../../debug/flag.js";
2
+ import { useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
3
+ import { useLatest } from "@weasel-js/react";
4
+ import { createSelectionStore, intentOf, select } from "@weasel-js/select";
5
+
5
6
  //#region src/core/selection/useSelection.ts
6
- function u(e) {
7
- let { renderOrder: t } = e;
8
- return typeof t == "function" ? () => t.call(e) : void 0;
7
+ /** The order a store paints its nodes in, when it is a scene and has one. */
8
+ function paintOrderOf(store) {
9
+ const { renderOrder } = store;
10
+ return typeof renderOrder === "function" ? () => renderOrder.call(store) : void 0;
9
11
  }
10
- function d(d = {}) {
11
- let { mode: f = "single", extend: p = "shift", initial: m = [], lock: h = !1, scene: g, range: _, order: v } = d, [y] = i(() => s([...m])), b = g ?? y, x = r(m);
12
- a(b.subscribe, () => b.getSelection());
13
- let S = r(!1);
14
- t(() => {
15
- g && !S.current && (S.current = !0, x.current.length > 0 && g.getSelection().length === 0 && g.setSelection([...x.current]));
16
- }, [g]);
17
- let C = o({
18
- mode: f,
19
- extend: p,
20
- lock: h,
21
- range: _,
22
- order: v
23
- }), w = r(null);
24
- return n(() => {
25
- let t = () => b.getSelection(), n = (n) => {
26
- C.current.lock || (e("selection", "set", {
27
- from: t().length,
28
- to: n.length,
29
- ids: n
30
- }), b.setSelection(n));
31
- }, r = (e) => t().filter((t) => t !== e);
12
+ /**
13
+ * Owns selection state, exposes a click-policy helper (single vs multi with
14
+ * an extend key), and pre-builds the `getSelection` / `setSelection` adapter
15
+ * methods:
16
+ *
17
+ * ```tsx
18
+ * const selection = useSelection({ mode: 'multi' });
19
+ * const adapter = useSceneAdapter(scene, { selection: selection.adapterMethods });
20
+ * ```
21
+ *
22
+ * Returns the same object for as long as `scene` is the same store, so it is
23
+ * safe as a memo or effect dependency. The calling component re-renders when
24
+ * the selection changes; key anything derived from the ids on
25
+ * `selection.current`.
26
+ */
27
+ function useSelection(opts = {}) {
28
+ const { mode = "single", extend = "shift", initial = [], lock = false, scene, range, order } = opts;
29
+ const [local] = useState(() => createSelectionStore([...initial]));
30
+ const store = scene ?? local;
31
+ const initialRef = useRef(initial);
32
+ useSyncExternalStore(store.subscribe, () => store.getSelection());
33
+ const seeded = useRef(false);
34
+ useLayoutEffect(() => {
35
+ if (!scene || seeded.current) return;
36
+ seeded.current = true;
37
+ if (initialRef.current.length > 0 && scene.getSelection().length === 0) scene.setSelection([...initialRef.current]);
38
+ }, [scene]);
39
+ const optsRef = useLatest({
40
+ mode,
41
+ extend,
42
+ lock,
43
+ range,
44
+ order
45
+ });
46
+ const anchorRef = useRef(null);
47
+ return useMemo(() => {
48
+ const get = () => store.getSelection();
49
+ const set = (ids) => {
50
+ if (optsRef.current.lock) return;
51
+ dlog("selection", "set", {
52
+ from: get().length,
53
+ to: ids.length,
54
+ ids
55
+ });
56
+ store.setSelection(ids);
57
+ };
58
+ const without = (id) => get().filter((x) => x !== id);
32
59
  return {
33
60
  get current() {
34
- return t();
61
+ return get();
35
62
  },
36
- get: t,
37
- set: n,
38
- add(e) {
39
- C.current.mode === "single" ? n([e]) : t().includes(e) || n([...t(), e]);
63
+ get,
64
+ set,
65
+ add(id) {
66
+ if (optsRef.current.mode === "single") set([id]);
67
+ else if (!get().includes(id)) set([...get(), id]);
40
68
  },
41
- remove(e) {
42
- t().includes(e) && n(r(e));
69
+ remove(id) {
70
+ if (get().includes(id)) set(without(id));
43
71
  },
44
- toggle(e) {
45
- t().includes(e) ? n(r(e)) : n(C.current.mode === "single" ? [e] : [...t(), e]);
72
+ toggle(id) {
73
+ if (get().includes(id)) set(without(id));
74
+ else set(optsRef.current.mode === "single" ? [id] : [...get(), id]);
46
75
  },
47
76
  clear() {
48
- n([]);
77
+ set([]);
49
78
  },
50
- contains: (e) => t().includes(e),
51
- applyClick(e, r) {
52
- let { mode: i, extend: a, range: o, order: s = u(b), lock: d } = C.current;
53
- if (d) return;
54
- let f = t(), p = w.current !== null && f.includes(w.current) ? w.current : f.at(-1) ?? null, m = c(r, {
55
- mode: i,
56
- toggle: a,
57
- range: o
58
- }), h = l({
59
- ids: f,
60
- anchor: p
61
- }, e, m, m === "range" && s ? { order: [...s()] } : {});
62
- w.current = h.anchor, n([...h.ids]);
79
+ contains: (id) => get().includes(id),
80
+ applyClick(id, modifiers) {
81
+ const { mode: m, extend: key, range: rangeKey, order: walk = paintOrderOf(store), lock: locked } = optsRef.current;
82
+ if (locked) return;
83
+ const ids = get();
84
+ const anchor = anchorRef.current !== null && ids.includes(anchorRef.current) ? anchorRef.current : ids.at(-1) ?? null;
85
+ const intent = intentOf(modifiers, {
86
+ mode: m,
87
+ toggle: key,
88
+ range: rangeKey
89
+ });
90
+ const next = select({
91
+ ids,
92
+ anchor
93
+ }, id, intent, intent === "range" && walk ? { order: [...walk()] } : {});
94
+ anchorRef.current = next.anchor;
95
+ set([...next.ids]);
63
96
  },
64
97
  adapterMethods: {
65
- getSelection: () => t(),
66
- setSelection: (e) => n(e)
98
+ getSelection: () => get(),
99
+ setSelection: (ids) => set(ids)
67
100
  }
68
101
  };
69
- }, [b, C]);
102
+ }, [store, optsRef]);
70
103
  }
71
- //#endregion
72
- export { d as useSelection };
73
104
 
105
+ //#endregion
106
+ export { useSelection };
74
107
  //# sourceMappingURL=useSelection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSelection.js","names":["paintOrderOf","store","renderOrder","useSelection","opts","local","useState","createSelectionStore","initial","scene","initialRef","useRef","seeded","optsRef","useLatest","anchorRef","useMemo","get","set","dlog","ids","without","x","id","m","key","rangeKey","walk","locked","anchor","intent","intentOf","modifiers","next","select"],"sources":["../../../src/core/selection/useSelection.ts"],"sourcesContent":["import { useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore } from 'react';\nimport { useLatest } from '@weasel-js/react';\nimport { createSelectionStore, intentOf, select, type SelectionStore as Store } from '@weasel-js/select';\nimport type { NodeId } from 'core/scene/types';\nimport { dlog } from 'debug/flag';\n\n/** Declared in `@weasel-js/routing`; re-exported here, beside the hook that returns one. */\nimport type { SelectionApi, SelectionMode, SelectionExtendKey } from '@weasel-js/routing';\nexport type { SelectionApi, SelectionMode, SelectionExtendKey };\n\n/** Somewhere selection can live outside this hook. `Scene` satisfies it;\n * so does any store with the same three methods. */\nexport type SelectionStore = Store<NodeId>;\n\n/** Options for {@link useSelection}. */\nexport interface UseSelectionOptions {\n /** Default `'single'`. */\n mode?: SelectionMode;\n /** Default `'shift'`. Ignored in single-mode. */\n extend?: SelectionExtendKey;\n /** The key that selects everything from the last pressed id to this one,\n * along `order`. Absent, nothing ranges. It beats `extend` when both name\n * one key, so give them different keys. Ignored in single-mode. */\n range?: SelectionExtendKey;\n /** The sequence a range walks: a layer panel's rows, a timeline's tracks.\n * Default is the order the `scene` paints in, back to front; with neither,\n * the range key replaces. */\n order?: () => Iterable<NodeId>;\n /** Default `[]`. */\n initial?: readonly NodeId[];\n /** Keep the selection on this store rather than in the hook, so every\n * consumer of the same scene shares one selection and undo / redo can\n * restore it. `initial` then only seeds a store that has none yet.\n * Omit it and the hook owns a selection nobody else sees. */\n scene?: SelectionStore;\n /** When `true`, every mutator (`set`/`add`/`remove`/`toggle`/`clear`/\n * `applyClick`) is a no-op — selection stays at whatever `initial`\n * pinned it to. */\n lock?: boolean;\n}\n\n/** The order a store paints its nodes in, when it is a scene and has one. */\nfunction paintOrderOf(store: SelectionStore): (() => Iterable<NodeId>) | undefined {\n const { renderOrder } = store as { renderOrder?: () => Iterable<NodeId> };\n return typeof renderOrder === 'function' ? () => renderOrder.call(store) : undefined;\n}\n\n/**\n * Owns selection state, exposes a click-policy helper (single vs multi with\n * an extend key), and pre-builds the `getSelection` / `setSelection` adapter\n * methods:\n *\n * ```tsx\n * const selection = useSelection({ mode: 'multi' });\n * const adapter = useSceneAdapter(scene, { selection: selection.adapterMethods });\n * ```\n *\n * Returns the same object for as long as `scene` is the same store, so it is\n * safe as a memo or effect dependency. The calling component re-renders when\n * the selection changes; key anything derived from the ids on\n * `selection.current`.\n */\nexport function useSelection(opts: UseSelectionOptions = {}): SelectionApi {\n const { mode = 'single', extend = 'shift', initial = [], lock = false, scene, range, order } = opts;\n // Without a `scene` the hook still keeps its ids in a store, so `get()` reads one store either\n // way and a write is visible before the re-render it causes.\n const [local] = useState(() => createSelectionStore<NodeId>([...initial]));\n const store = scene ?? local;\n const initialRef = useRef(initial);\n\n useSyncExternalStore(store.subscribe, () => store.getSelection());\n\n // A store that already holds a selection wins: the hook is joining it, not\n // resetting it. In an effect, not during render — the store has other\n // subscribers.\n const seeded = useRef(false);\n useLayoutEffect(() => {\n if (!scene || seeded.current) return;\n seeded.current = true;\n if (initialRef.current.length > 0 && scene.getSelection().length === 0) {\n scene.setSelection([...initialRef.current]);\n }\n }, [scene]);\n\n const optsRef = useLatest({ mode, extend, lock, range, order });\n const anchorRef = useRef<NodeId | null>(null);\n\n return useMemo<SelectionApi>(() => {\n const get = (): NodeId[] => store.getSelection() as NodeId[];\n const set = (ids: NodeId[]): void => {\n if (optsRef.current.lock) return;\n dlog('selection', 'set', { from: get().length, to: ids.length, ids });\n store.setSelection(ids);\n };\n const without = (id: NodeId) => get().filter((x) => x !== id);\n return {\n get current() { return get(); },\n get,\n set,\n add(id) {\n if (optsRef.current.mode === 'single') set([id]);\n else if (!get().includes(id)) set([...get(), id]);\n },\n remove(id) {\n if (get().includes(id)) set(without(id));\n },\n toggle(id) {\n if (get().includes(id)) set(without(id));\n else set(optsRef.current.mode === 'single' ? [id] : [...get(), id]);\n },\n clear() { set([]); },\n contains: (id) => get().includes(id),\n applyClick(id, modifiers) {\n const { mode: m, extend: key, range: rangeKey, order: walk = paintOrderOf(store), lock: locked } = optsRef.current;\n if (locked) return;\n const ids = get();\n // A selection something else set — a marquee, an undo — ranges from its last id.\n const anchor = anchorRef.current !== null && ids.includes(anchorRef.current)\n ? anchorRef.current\n : (ids.at(-1) ?? null);\n const intent = intentOf(modifiers, { mode: m, toggle: key, range: rangeKey });\n const next = select({ ids, anchor }, id, intent, intent === 'range' && walk ? { order: [...walk()] } : {});\n anchorRef.current = next.anchor;\n set([...next.ids]);\n },\n adapterMethods: {\n getSelection: () => get(),\n setSelection: (ids: NodeId[]) => set(ids),\n },\n };\n }, [store, optsRef]);\n}\n"],"mappings":";;;;;AA0CA,SAASA,EAAa,GAA6D;CACjF,IAAM,EAAE,mBAAgBC;CACxB,OAAO,OAAOC,KAAgB,mBAAmBA,EAAY,KAAKD,CAAK,IAAI,KAAA;AAC7E;AAiBA,SAAgBE,EAAa,IAA4B,CAAC,GAAiB;CACzE,IAAM,EAAE,UAAO,UAAU,YAAS,SAAS,aAAU,CAAC,GAAG,UAAO,IAAO,UAAO,UAAO,aAAUC,GAGzF,CAACC,KAASC,QAAeC,EAA6B,CAAC,GAAGC,CAAO,CAAC,CAAC,GACnEP,IAAQQ,KAASJ,GACjBK,IAAaC,EAAOH,CAAO;CAEjC,EAAqBP,EAAM,iBAAiBA,EAAM,aAAa,CAAC;CAKhE,IAAMW,IAASD,EAAO,EAAK;CAC3B,QAAsB;EACpB,AAAKF,KAAS,GAAO,YACrB,EAAO,UAAU,IACbC,EAAW,QAAQ,SAAS,KAAKD,EAAM,aAAa,CAAC,CAAC,WAAW,KACnEA,EAAM,aAAa,CAAC,GAAGC,EAAW,OAAO,CAAC;CAE9C,GAAG,CAACD,CAAK,CAAC;CAEV,IAAMI,IAAUC,EAAU;EAAE;EAAM;EAAQ;EAAM;EAAO;CAAM,CAAC,GACxDC,IAAYJ,EAAsB,IAAI;CAE5C,OAAOK,QAA4B;EACjC,IAAMC,UAAsBhB,EAAM,aAAa,GACzCiB,KAAO,MAAwB;GACnC,AAAIL,EAAQ,QAAQ,SACpBM,EAAK,aAAa,OAAO;IAAE,MAAMF,EAAI,CAAC,CAAC;IAAQ,IAAIG,EAAI;IAAQ;GAAI,CAAC,GACpEnB,EAAM,aAAamB,CAAG;EACxB,GACMC,KAAW,MAAeJ,EAAI,CAAC,CAAC,QAAQ,MAAMK,MAAMC,CAAE;EAC5D,OAAO;GACL,IAAI,UAAU;IAAE,OAAON,EAAI;GAAG;GAC9B;GACA;GACA,IAAI,GAAI;IACN,AAAIJ,EAAQ,QAAQ,SAAS,WAAUK,EAAI,CAACK,CAAE,CAAC,IACrCN,EAAI,CAAC,CAAC,SAASM,CAAE,KAAGL,EAAI,CAAC,GAAGD,EAAI,GAAGM,CAAE,CAAC;GAClD;GACA,OAAO,GAAI;IACT,AAAIN,EAAI,CAAC,CAAC,SAASM,CAAE,KAAGL,EAAIG,EAAQE,CAAE,CAAC;GACzC;GACA,OAAO,GAAI;IACT,AAAIN,EAAI,CAAC,CAAC,SAASM,CAAE,IAAGL,EAAIG,EAAQE,CAAE,CAAC,IAClCL,EAAIL,EAAQ,QAAQ,SAAS,WAAW,CAACU,CAAE,IAAI,CAAC,GAAGN,EAAI,GAAGM,CAAE,CAAC;GACpE;GACA,QAAQ;IAAE,EAAI,CAAC,CAAC;GAAG;GACnB,WAAW,MAAON,EAAI,CAAC,CAAC,SAASM,CAAE;GACnC,WAAW,GAAI,GAAW;IACxB,IAAM,EAAE,MAAMC,GAAG,QAAQC,GAAK,OAAOC,GAAU,OAAOC,IAAO3B,EAAaC,CAAK,GAAG,MAAM2B,MAAWf,EAAQ;IAC3G,IAAIe,GAAQ;IACZ,IAAMR,IAAMH,EAAI,GAEVY,IAASd,EAAU,YAAY,QAAQK,EAAI,SAASL,EAAU,OAAO,IACvEA,EAAU,UACTK,EAAI,GAAG,EAAE,KAAK,MACbU,IAASC,EAASC,GAAW;KAAE,MAAMR;KAAG,QAAQC;KAAK,OAAOC;IAAS,CAAC,GACtEO,IAAOC,EAAO;KAAE;KAAK;IAAO,GAAGX,GAAIO,GAAQA,MAAW,WAAWH,IAAO,EAAE,OAAO,CAAC,GAAGA,EAAK,CAAC,EAAE,IAAI,CAAC,CAAC;IAEzG,AADA,EAAU,UAAUM,EAAK,QACzBf,EAAI,CAAC,GAAGe,EAAK,GAAG,CAAC;GACnB;GACA,gBAAgB;IACd,oBAAoBhB,EAAI;IACxB,eAAe,MAAkBC,EAAIE,CAAG;GAC1C;EACF;CACF,GAAG,CAACnB,GAAOY,CAAO,CAAC;AACrB"}
1
+ {"version":3,"file":"useSelection.js","names":[],"sources":["../../../src/core/selection/useSelection.ts"],"sourcesContent":["import { useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore } from 'react';\nimport { useLatest } from '@weasel-js/react';\nimport { createSelectionStore, intentOf, select, type SelectionStore as Store } from '@weasel-js/select';\nimport type { NodeId } from 'core/scene/types';\nimport { dlog } from 'debug/flag';\n\n/** Declared in `@weasel-js/routing`; re-exported here, beside the hook that returns one. */\nimport type { SelectionApi, SelectionMode, SelectionExtendKey } from '@weasel-js/routing';\nexport type { SelectionApi, SelectionMode, SelectionExtendKey };\n\n/** Somewhere selection can live outside this hook. `Scene` satisfies it;\n * so does any store with the same three methods. */\nexport type SelectionStore = Store<NodeId>;\n\n/** Options for {@link useSelection}. */\nexport interface UseSelectionOptions {\n /** Default `'single'`. */\n mode?: SelectionMode;\n /** Default `'shift'`. Ignored in single-mode. */\n extend?: SelectionExtendKey;\n /** The key that selects everything from the last pressed id to this one,\n * along `order`. Absent, nothing ranges. It beats `extend` when both name\n * one key, so give them different keys. Ignored in single-mode. */\n range?: SelectionExtendKey;\n /** The sequence a range walks: a layer panel's rows, a timeline's tracks.\n * Default is the order the `scene` paints in, back to front; with neither,\n * the range key replaces. */\n order?: () => Iterable<NodeId>;\n /** Default `[]`. */\n initial?: readonly NodeId[];\n /** Keep the selection on this store rather than in the hook, so every\n * consumer of the same scene shares one selection and undo / redo can\n * restore it. `initial` then only seeds a store that has none yet.\n * Omit it and the hook owns a selection nobody else sees. */\n scene?: SelectionStore;\n /** When `true`, every mutator (`set`/`add`/`remove`/`toggle`/`clear`/\n * `applyClick`) is a no-op — selection stays at whatever `initial`\n * pinned it to. */\n lock?: boolean;\n}\n\n/** The order a store paints its nodes in, when it is a scene and has one. */\nfunction paintOrderOf(store: SelectionStore): (() => Iterable<NodeId>) | undefined {\n const { renderOrder } = store as { renderOrder?: () => Iterable<NodeId> };\n return typeof renderOrder === 'function' ? () => renderOrder.call(store) : undefined;\n}\n\n/**\n * Owns selection state, exposes a click-policy helper (single vs multi with\n * an extend key), and pre-builds the `getSelection` / `setSelection` adapter\n * methods:\n *\n * ```tsx\n * const selection = useSelection({ mode: 'multi' });\n * const adapter = useSceneAdapter(scene, { selection: selection.adapterMethods });\n * ```\n *\n * Returns the same object for as long as `scene` is the same store, so it is\n * safe as a memo or effect dependency. The calling component re-renders when\n * the selection changes; key anything derived from the ids on\n * `selection.current`.\n */\nexport function useSelection(opts: UseSelectionOptions = {}): SelectionApi {\n const { mode = 'single', extend = 'shift', initial = [], lock = false, scene, range, order } = opts;\n // Without a `scene` the hook still keeps its ids in a store, so `get()` reads one store either\n // way and a write is visible before the re-render it causes.\n const [local] = useState(() => createSelectionStore<NodeId>([...initial]));\n const store = scene ?? local;\n const initialRef = useRef(initial);\n\n useSyncExternalStore(store.subscribe, () => store.getSelection());\n\n // A store that already holds a selection wins: the hook is joining it, not\n // resetting it. In an effect, not during render — the store has other\n // subscribers.\n const seeded = useRef(false);\n useLayoutEffect(() => {\n if (!scene || seeded.current) return;\n seeded.current = true;\n if (initialRef.current.length > 0 && scene.getSelection().length === 0) {\n scene.setSelection([...initialRef.current]);\n }\n }, [scene]);\n\n const optsRef = useLatest({ mode, extend, lock, range, order });\n const anchorRef = useRef<NodeId | null>(null);\n\n return useMemo<SelectionApi>(() => {\n const get = (): NodeId[] => store.getSelection() as NodeId[];\n const set = (ids: NodeId[]): void => {\n if (optsRef.current.lock) return;\n dlog('selection', 'set', { from: get().length, to: ids.length, ids });\n store.setSelection(ids);\n };\n const without = (id: NodeId) => get().filter((x) => x !== id);\n return {\n get current() { return get(); },\n get,\n set,\n add(id) {\n if (optsRef.current.mode === 'single') set([id]);\n else if (!get().includes(id)) set([...get(), id]);\n },\n remove(id) {\n if (get().includes(id)) set(without(id));\n },\n toggle(id) {\n if (get().includes(id)) set(without(id));\n else set(optsRef.current.mode === 'single' ? [id] : [...get(), id]);\n },\n clear() { set([]); },\n contains: (id) => get().includes(id),\n applyClick(id, modifiers) {\n const { mode: m, extend: key, range: rangeKey, order: walk = paintOrderOf(store), lock: locked } = optsRef.current;\n if (locked) return;\n const ids = get();\n // A selection something else set — a marquee, an undo — ranges from its last id.\n const anchor = anchorRef.current !== null && ids.includes(anchorRef.current)\n ? anchorRef.current\n : (ids.at(-1) ?? null);\n const intent = intentOf(modifiers, { mode: m, toggle: key, range: rangeKey });\n const next = select({ ids, anchor }, id, intent, intent === 'range' && walk ? { order: [...walk()] } : {});\n anchorRef.current = next.anchor;\n set([...next.ids]);\n },\n adapterMethods: {\n getSelection: () => get(),\n setSelection: (ids: NodeId[]) => set(ids),\n },\n };\n }, [store, optsRef]);\n}\n"],"mappings":";;;;;;;AA0CA,SAAS,aAAa,OAA6D;CACjF,MAAM,EAAE,gBAAgB;CACxB,OAAO,OAAO,gBAAgB,mBAAmB,YAAY,KAAK,KAAK,IAAI;AAC7E;;;;;;;;;;;;;;;;AAiBA,SAAgB,aAAa,OAA4B,CAAC,GAAiB;CACzE,MAAM,EAAE,OAAO,UAAU,SAAS,SAAS,UAAU,CAAC,GAAG,OAAO,OAAO,OAAO,OAAO,UAAU;CAG/F,MAAM,CAAC,SAAS,eAAe,qBAA6B,CAAC,GAAG,OAAO,CAAC,CAAC;CACzE,MAAM,QAAQ,SAAS;CACvB,MAAM,aAAa,OAAO,OAAO;CAEjC,qBAAqB,MAAM,iBAAiB,MAAM,aAAa,CAAC;CAKhE,MAAM,SAAS,OAAO,KAAK;CAC3B,sBAAsB;EACpB,IAAI,CAAC,SAAS,OAAO,SAAS;EAC9B,OAAO,UAAU;EACjB,IAAI,WAAW,QAAQ,SAAS,KAAK,MAAM,aAAa,CAAC,CAAC,WAAW,GACnE,MAAM,aAAa,CAAC,GAAG,WAAW,OAAO,CAAC;CAE9C,GAAG,CAAC,KAAK,CAAC;CAEV,MAAM,UAAU,UAAU;EAAE;EAAM;EAAQ;EAAM;EAAO;CAAM,CAAC;CAC9D,MAAM,YAAY,OAAsB,IAAI;CAE5C,OAAO,cAA4B;EACjC,MAAM,YAAsB,MAAM,aAAa;EAC/C,MAAM,OAAO,QAAwB;GACnC,IAAI,QAAQ,QAAQ,MAAM;GAC1B,KAAK,aAAa,OAAO;IAAE,MAAM,IAAI,CAAC,CAAC;IAAQ,IAAI,IAAI;IAAQ;GAAI,CAAC;GACpE,MAAM,aAAa,GAAG;EACxB;EACA,MAAM,WAAW,OAAe,IAAI,CAAC,CAAC,QAAQ,MAAM,MAAM,EAAE;EAC5D,OAAO;GACL,IAAI,UAAU;IAAE,OAAO,IAAI;GAAG;GAC9B;GACA;GACA,IAAI,IAAI;IACN,IAAI,QAAQ,QAAQ,SAAS,UAAU,IAAI,CAAC,EAAE,CAAC;SAC1C,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;GAClD;GACA,OAAO,IAAI;IACT,IAAI,IAAI,CAAC,CAAC,SAAS,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;GACzC;GACA,OAAO,IAAI;IACT,IAAI,IAAI,CAAC,CAAC,SAAS,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;SAClC,IAAI,QAAQ,QAAQ,SAAS,WAAW,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;GACpE;GACA,QAAQ;IAAE,IAAI,CAAC,CAAC;GAAG;GACnB,WAAW,OAAO,IAAI,CAAC,CAAC,SAAS,EAAE;GACnC,WAAW,IAAI,WAAW;IACxB,MAAM,EAAE,MAAM,GAAG,QAAQ,KAAK,OAAO,UAAU,OAAO,OAAO,aAAa,KAAK,GAAG,MAAM,WAAW,QAAQ;IAC3G,IAAI,QAAQ;IACZ,MAAM,MAAM,IAAI;IAEhB,MAAM,SAAS,UAAU,YAAY,QAAQ,IAAI,SAAS,UAAU,OAAO,IACvE,UAAU,UACT,IAAI,GAAG,EAAE,KAAK;IACnB,MAAM,SAAS,SAAS,WAAW;KAAE,MAAM;KAAG,QAAQ;KAAK,OAAO;IAAS,CAAC;IAC5E,MAAM,OAAO,OAAO;KAAE;KAAK;IAAO,GAAG,IAAI,QAAQ,WAAW,WAAW,OAAO,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;IACzG,UAAU,UAAU,KAAK;IACzB,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC;GACnB;GACA,gBAAgB;IACd,oBAAoB,IAAI;IACxB,eAAe,QAAkB,IAAI,GAAG;GAC1C;EACF;CACF,GAAG,CAAC,OAAO,OAAO,CAAC;AACrB"}
@@ -1,54 +1,83 @@
1
1
  //#region src/core/shapeKinds.ts
2
- var e = {
2
+ /**
3
+ * Declaration order is the enumeration order of every derived list —
4
+ * `KIT_SHAPE_KINDS`, and through it `defaultNodeRouting` /
5
+ * `defaultNodeProperties` / `BUILTIN_TOOL_IDS`.
6
+ */
7
+ var SHAPE_KINDS = {
3
8
  rect: {
4
- tool: !0,
5
- insertPreview: !0
9
+ tool: true,
10
+ insertPreview: true,
11
+ family: "shape"
6
12
  },
7
13
  ellipse: {
8
- tool: !0,
9
- insertPreview: !0
14
+ tool: true,
15
+ insertPreview: true,
16
+ family: "shape"
10
17
  },
11
18
  line: {
12
- tool: !0,
13
- insertPreview: !0
19
+ tool: true,
20
+ insertPreview: true,
21
+ family: "shape"
14
22
  },
15
23
  polygon: {
16
- tool: !0,
17
- insertPreview: !0
24
+ tool: true,
25
+ insertPreview: true,
26
+ family: "shape"
18
27
  },
19
28
  star: {
20
- tool: !0,
21
- insertPreview: !0
29
+ tool: true,
30
+ insertPreview: true,
31
+ family: "shape"
22
32
  },
23
33
  pen: {
24
- tool: !0,
25
- insertPreview: !1
34
+ tool: true,
35
+ insertPreview: false,
36
+ family: "draw"
26
37
  },
27
38
  pencil: {
28
- tool: !0,
29
- insertPreview: !0
39
+ tool: true,
40
+ insertPreview: true,
41
+ family: "draw"
30
42
  },
31
43
  lasso: {
32
- tool: !0,
33
- insertPreview: !1
44
+ tool: true,
45
+ insertPreview: false,
46
+ family: "select"
34
47
  },
35
48
  text: {
36
- tool: !0,
37
- insertPreview: !0
49
+ tool: true,
50
+ insertPreview: true,
51
+ text: true,
52
+ family: "type"
53
+ },
54
+ sticky: {
55
+ tool: true,
56
+ insertPreview: true,
57
+ text: true,
58
+ family: "type"
38
59
  },
39
60
  image: {
40
- tool: !1,
41
- insertPreview: !0
61
+ tool: false,
62
+ insertPreview: true
42
63
  }
43
64
  };
44
- function t(e, t) {
45
- return Object.keys(e).filter((n) => e[n][t]);
65
+ /** Kinds in `table` whose descriptor sets `field`, in declaration order. */
66
+ function shapeKindsWhere(table, field) {
67
+ return Object.keys(table).filter((k) => table[k][field]);
46
68
  }
47
- function n(t) {
48
- return e[t];
69
+ /** The descriptor for `kind`, or `undefined` for a kind the kit doesn't ship.
70
+ * The one accessor: ask it rather than testing membership of a derived list. */
71
+ function shapeKindInfo(kind) {
72
+ return SHAPE_KINDS[kind];
73
+ }
74
+ /** Runtime, iterable list of the shape-tool ids in `BuiltinShapeToolId`. */
75
+ var KIT_SHAPE_KINDS = shapeKindsWhere(SHAPE_KINDS, "tool");
76
+ /** The shape-tool ids of one family, in declaration order. */
77
+ function kitShapeKindsOf(family) {
78
+ return KIT_SHAPE_KINDS.filter((k) => SHAPE_KINDS[k].family === family);
49
79
  }
50
- var r = t(e, "tool");
51
- //#endregion
52
- export { r as KIT_SHAPE_KINDS, e as SHAPE_KINDS, n as shapeKindInfo, t as shapeKindsWhere };
53
80
 
81
+ //#endregion
82
+ export { KIT_SHAPE_KINDS, SHAPE_KINDS, kitShapeKindsOf, shapeKindInfo, shapeKindsWhere };
54
83
  //# sourceMappingURL=shapeKinds.js.map