@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,6 +1,9 @@
1
- import { a as PlaneMap, S as SnapTarget, M as MoveAdapter } from './types-DBbbCy0i.js';
1
+ import { a as PlaneMap } from './types-7puAuVD2.js';
2
2
  import { Op } from '@weasel-js/history';
3
- import { Bounds, ModifierState, View, ResizeAnchor } from '@weasel-js/routing';
3
+ import { S as SnapTarget, M as MoveAdapter } from './types-oFeQ5VjV.js';
4
+ import { FramedBox, View } from '@weasel-js/geom';
5
+ import { KitSettingsStore } from '@weasel-js/react';
6
+ import { ModifierState, ResizeAnchor } from '@weasel-js/routing';
4
7
 
5
8
  /**
6
9
  * What a behavior needs to take a pose between the frame a node stores it in
@@ -20,6 +23,10 @@ interface GestureFrames<TPose> {
20
23
  /** How the world the gesture edits in maps into the world `layer`'s nodes
21
24
  * are stored in, read now. Null when they are the same world. */
22
25
  planeOf(layer: string): PlaneMap | null;
26
+ /** The axis-aligned box `id` covers drawn at `worldPose`: its stroke
27
+ * included unless the canvas opted out. What a snap that lines boxes up
28
+ * measures, so it agrees with the selection chrome. */
29
+ drawnBounds?(id: string, worldPose: TPose): FramedBox;
23
30
  }
24
31
 
25
32
  /** Pointer position in world coords, and in client coords when the event carried them
@@ -60,6 +67,12 @@ interface GestureContext<TPose, TNode extends {
60
67
  * through this before comparing them with a pose.
61
68
  */
62
69
  plane?: PlaneMap | null;
70
+ /**
71
+ * The kit settings of the canvas the gesture runs on (its `kitSettings` dep),
72
+ * for a behavior or snap strategy to read a reach or threshold the moment it
73
+ * uses one. Absent or null where nothing published a store.
74
+ */
75
+ kitSettings?: KitSettingsStore | null;
63
76
  /**
64
77
  * Frame math over the scene the gesture edits; see {@link GestureFrames}.
65
78
  * Set by move, resize, rotate, and clone. Absent where no node is behind
@@ -83,12 +96,6 @@ interface GestureContext<TPose, TNode extends {
83
96
  */
84
97
  scratch: Record<string, unknown>;
85
98
  }
86
- /** Pluggable per-gesture snap rule; receives the proposed pose and returns a snapped pose or `null` to skip. */
87
- interface SnapStrategy<TPose> {
88
- snap(pose: TPose, ctx: GestureContext<TPose, {
89
- id: string;
90
- }>): TPose | null;
91
- }
92
99
  /**
93
100
  * Generalized base behavior. Each hook defines an alias that pins the
94
101
  * proposed-pose shape (TProposed) and the onMove return shape (TMoveResult).
@@ -134,29 +141,15 @@ interface BehaviorEnd {
134
141
  answered: boolean;
135
142
  }
136
143
  /**
137
- * Uniform group transform proposed by a gesture and shaped by behaviors.
138
- * Applied identically to every dragged id so a multi-select gesture cannot
139
- * drift apart. Only `'translate'` is wired end-to-end.
144
+ * The translation a drag proposes and its behaviors shape, applied identically
145
+ * to every dragged id so a multi-select gesture cannot drift apart. Resize and
146
+ * rotate behaviors answer in their own terms (`ResizeMoveResult`,
147
+ * `RotateMoveResult`), not through this.
140
148
  */
141
149
  type GroupTransform = {
142
150
  kind: 'translate';
143
151
  dx: number;
144
152
  dy: number;
145
- } | {
146
- kind: 'scale';
147
- pivot: {
148
- x: number;
149
- y: number;
150
- };
151
- sx: number;
152
- sy: number;
153
- } | {
154
- kind: 'rotate';
155
- pivot: {
156
- x: number;
157
- y: number;
158
- };
159
- angle: number;
160
153
  };
161
154
  /**
162
155
  * Per-frame result a `MoveBehavior.onMove` can return. `snap` announces a
@@ -196,23 +189,23 @@ interface MoveEnd extends BehaviorEnd {
196
189
  };
197
190
  }
198
191
  /** A behavior on a move — shapes the proposed transform during a drag.
199
- * Behaviors receive a `GroupTransform` (currently always `'translate'`) and
200
- * return a `BehaviorResult` shaping it. */
192
+ * Behaviors receive a `GroupTransform` and return a `BehaviorResult` shaping
193
+ * it. */
201
194
  type MoveBehavior<TPose> = ActionBehavior<TPose, GroupTransform, BehaviorResult<TPose>, MoveEnd>;
202
195
 
203
196
  /** Per-frame proposed resize: pose plus the anchor pinning the opposite corner. */
204
- interface ResizeProposed<TPose extends Bounds> {
197
+ interface ResizeProposed<TPose extends FramedBox> {
205
198
  pose: TPose;
206
199
  anchor: ResizeAnchor;
207
200
  }
208
201
  /** Per-frame result a `BoundsConstraint.onMove` can return to override the proposed pose. */
209
- interface ResizeMoveResult<TPose extends Bounds> {
202
+ interface ResizeMoveResult<TPose extends FramedBox> {
210
203
  pose?: TPose;
211
204
  }
212
205
  /** A bounds-frame constraint plugged into `resizeAction`.
213
206
  * Reads/writes `{x,y,width,height}` and can override the proposed pose
214
207
  * on each frame (e.g. lock-aspect, clamp-min-size, snap-to-grid). */
215
- type BoundsConstraint<TPose extends Bounds> = ActionBehavior<TPose, ResizeProposed<TPose>, ResizeMoveResult<TPose>>;
208
+ type BoundsConstraint<TPose extends FramedBox> = ActionBehavior<TPose, ResizeProposed<TPose>, ResizeMoveResult<TPose>>;
216
209
  /** Live overlay state for rendering the in-flight resize ghost. */
217
210
  interface ResizeOverlay<TPose> {
218
211
  id: string;
@@ -259,7 +252,7 @@ interface InsertPoint {
259
252
  interface InsertProposed<TPose> {
260
253
  start: InsertPoint;
261
254
  current: InsertPoint;
262
- bounds: Bounds;
255
+ bounds: FramedBox;
263
256
  pose: TPose;
264
257
  }
265
258
  /** Per-frame result an `InsertBehavior.onMove` can return to override the start/current points. */
@@ -277,7 +270,7 @@ interface InsertOverlay<TPose> {
277
270
  start: InsertPoint;
278
271
  current: InsertPoint;
279
272
  /** Axis-aligned bounding rect derived from `start`/`current`. */
280
- bounds: Bounds;
273
+ bounds: FramedBox;
281
274
  /** TPose constructed from `bounds`. */
282
275
  pose: TPose;
283
276
  }
@@ -326,45 +319,6 @@ interface LassoSelectOverlay {
326
319
  };
327
320
  shiftHeld: boolean;
328
321
  }
329
- /** Frames a point-snap behavior can return for the resize to back-solve. */
330
- type PointSnapFrame = 'dragged-corner' | 'fixed-corner' | 'center' | 'origin';
331
- /** Per-frame world-space context handed to `PointSnapBehavior.onMove`.
332
- * `draggedCorner` and `fixedCorner` are `null` for edge drags
333
- * (`anchor.x === 'free'` or `anchor.y === 'free'`). `center` and
334
- * `origin` are always present. */
335
- interface PointSnapContext<TPose extends Bounds> {
336
- draggedCorner: {
337
- worldX: number;
338
- worldY: number;
339
- } | null;
340
- fixedCorner: {
341
- worldX: number;
342
- worldY: number;
343
- } | null;
344
- center: {
345
- worldX: number;
346
- worldY: number;
347
- };
348
- origin: {
349
- worldX: number;
350
- worldY: number;
351
- };
352
- rotation: number;
353
- anchor: ResizeAnchor;
354
- proposed: TPose;
355
- modifiers: ModifierState;
356
- }
357
- /** Per-frame snap result. A behavior returns at most one. */
358
- interface PointSnapResult {
359
- frame: PointSnapFrame;
360
- worldX: number;
361
- worldY: number;
362
- }
363
- /** A point-snap behavior, plugged into `ResizePolicy.pointSnap`. */
364
- interface PointSnapBehavior<TPose extends Bounds> {
365
- id?: string;
366
- onMove(ctx: PointSnapContext<TPose>): PointSnapResult | null | undefined;
367
- }
368
322
  /** What a `CloneBehavior.onMove` can return: the translation to use for
369
323
  * every copy, and a snap target to announce. */
370
324
  type CloneBehaviorResult<TPose> = Pick<BehaviorResult<TPose>, 'transform' | 'snap'>;
@@ -379,4 +333,4 @@ type CloneBehaviorResult<TPose> = Pick<BehaviorResult<TPose>, 'transform' | 'sna
379
333
  */
380
334
  type CloneBehavior<TPose> = ActionBehavior<TPose, GroupTransform, CloneBehaviorResult<TPose>>;
381
335
 
382
- export type { ActionBehavior as A, BoundsConstraint as B, CloneBehavior as C, GestureContext as G, InsertBehavior as I, LassoSelectBehavior as L, MoveBehavior as M, PointSnapBehavior as P, RotateBehavior as R, SnapStrategy as S, AreaSelectOverlay as a, BehaviorEnd as b, BehaviorResult as c, CloneBehaviorResult as d, GestureFrames as e, GroupTransform as f, InsertMoveResult as g, InsertOverlay as h, InsertPoint as i, InsertProposed as j, LassoSelectMoveResult as k, LassoSelectOverlay as l, LassoSelectPose as m, LassoSelectProposed as n, MoveEnd as o, PointSnapContext as p, PointSnapFrame as q, PointSnapResult as r, PointerState as s, ResizeMoveResult as t, ResizeOverlay as u, ResizeProposed as v, RotateMoveResult as w, RotateOverlay as x, RotateProposed as y };
336
+ export type { ActionBehavior as A, BoundsConstraint as B, CloneBehavior as C, GestureContext as G, InsertBehavior as I, LassoSelectBehavior as L, MoveBehavior as M, PointerState as P, RotateBehavior as R, AreaSelectOverlay as a, BehaviorEnd as b, BehaviorResult as c, CloneBehaviorResult as d, GestureFrames as e, GroupTransform as f, InsertMoveResult as g, InsertOverlay as h, InsertPoint as i, InsertProposed as j, LassoSelectMoveResult as k, LassoSelectOverlay as l, LassoSelectPose as m, LassoSelectProposed as n, MoveEnd as o, ResizeMoveResult as p, ResizeOverlay as q, ResizeProposed as r, RotateMoveResult as s, RotateOverlay as t, RotateProposed as u };
package/dist/clone.d.ts CHANGED
@@ -1,7 +1,9 @@
1
- export { C as CloneBehavior, d as CloneBehaviorResult } from './clone-C0eADtS0.js';
2
- import './types-DBbbCy0i.js';
3
- import '@weasel-js/history';
1
+ export { C as CloneBehavior, d as CloneBehaviorResult } from './clone-C3e0OTuF.js';
2
+ import './types-7puAuVD2.js';
4
3
  import '@weasel-js/geom';
5
- import '@weasel-js/routing';
6
- import './poseDescriptor-Bqk-11Rl.js';
4
+ import '@weasel-js/history';
5
+ import './types-oFeQ5VjV.js';
6
+ import './poseDescriptor-DN2yfnq_.js';
7
7
  import '@weasel-js/animator';
8
+ import '@weasel-js/react';
9
+ import '@weasel-js/routing';
@@ -0,0 +1,17 @@
1
+ //#region src/core/adapters/testing/rootsTree.ts
2
+ /** The tree of a fake adapter whose nodes never nest: every id in `order` is a root, bottom
3
+ * first. `setChildOrder` rewrites `order` in place. */
4
+ function rootsTree(order = [], nodeOf = () => void 0) {
5
+ return {
6
+ getNode: nodeOf,
7
+ getParent: (_id) => null,
8
+ getChildren: (parentId) => parentId === null ? order.slice() : [],
9
+ setChildOrder: (parentId, ids) => {
10
+ if (parentId === null) order.splice(0, order.length, ...ids);
11
+ }
12
+ };
13
+ }
14
+
15
+ //#endregion
16
+ export { rootsTree };
17
+ //# sourceMappingURL=rootsTree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rootsTree.js","names":[],"sources":["../../../../src/core/adapters/testing/rootsTree.ts"],"sourcesContent":["/** The tree of a fake adapter whose nodes never nest: every id in `order` is a root, bottom\n * first. `setChildOrder` rewrites `order` in place. */\nexport function rootsTree<TNode extends { id: string } = { id: string }>(\n order: string[] = [],\n nodeOf: (id: string) => TNode | undefined = () => undefined,\n) {\n return {\n getNode: nodeOf,\n getParent: (_id: string): string | null => null,\n getChildren: (parentId: string | null): string[] => (parentId === null ? order.slice() : []),\n setChildOrder: (parentId: string | null, ids: string[]): void => {\n if (parentId === null) order.splice(0, order.length, ...ids);\n },\n };\n}\n"],"mappings":";;;AAEA,SAAgB,UACd,QAAkB,CAAC,GACnB,eAAkD,QAClD;CACA,OAAO;EACL,SAAS;EACT,YAAY,QAA+B;EAC3C,cAAc,aAAuC,aAAa,OAAO,MAAM,MAAM,IAAI,CAAC;EAC1F,gBAAgB,UAAyB,QAAwB;GAC/D,IAAI,aAAa,MAAM,MAAM,OAAO,GAAG,MAAM,QAAQ,GAAG,GAAG;EAC7D;CACF;AACF"}
@@ -1,12 +1,28 @@
1
1
  //#region src/core/applyOps.ts
2
- function e(e, t, n) {
3
- for (let n of t) n.apply(e);
2
+ /**
3
+ * Default `applyOps` implementation: apply each op in order against
4
+ * `adapter`. Used by hooks when an adapter omits `applyOps`. Apps that
5
+ * need history integration (checkpoint + push entry) supply their own
6
+ * `applyOps` instead.
7
+ *
8
+ * The `_label` parameter mirrors the `applyOps(ops, label)` signature so
9
+ * call-sites can dispatch through `(adapter.applyOps ?? applyOpsTo)` with
10
+ * matching arguments. The default ignores it.
11
+ */
12
+ function applyOpsTo(adapter, ops, _label) {
13
+ for (const op of ops) op.apply(adapter);
4
14
  }
5
- function t(t, n, r) {
6
- let i = t;
7
- i.applyOps ? i.applyOps(n, r) : e(t, n, r);
15
+ /**
16
+ * Dispatcher: invokes `adapter.applyOps` if present, otherwise falls back
17
+ * to `applyOpsTo`. Convenience for hooks so they don't repeat the
18
+ * `?? applyOpsTo` pattern at every call site.
19
+ */
20
+ function dispatchApplyBatch(adapter, ops, label) {
21
+ const a = adapter;
22
+ if (a.applyOps) a.applyOps(ops, label);
23
+ else applyOpsTo(adapter, ops, label);
8
24
  }
9
- //#endregion
10
- export { e as applyOpsTo, t as dispatchApplyBatch };
11
25
 
26
+ //#endregion
27
+ export { applyOpsTo, dispatchApplyBatch };
12
28
  //# sourceMappingURL=applyOps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"applyOps.js","names":["applyOpsTo","op","ops","adapter","dispatchApplyBatch","a","label"],"sources":["../../src/core/applyOps.ts"],"sourcesContent":["import type { Op } from './ops/types';\n\n/**\n * Default `applyOps` implementation: apply each op in order against\n * `adapter`. Used by hooks when an adapter omits `applyOps`. Apps that\n * need history integration (checkpoint + push entry) supply their own\n * `applyOps` instead.\n *\n * The `_label` parameter mirrors the `applyOps(ops, label)` signature so\n * call-sites can dispatch through `(adapter.applyOps ?? applyOpsTo)` with\n * matching arguments. The default ignores it.\n */\nexport function applyOpsTo<A>(adapter: A, ops: Op[], _label?: string): void {\n for (const op of ops) op.apply(adapter);\n}\n\n/**\n * Dispatcher: invokes `adapter.applyOps` if present, otherwise falls back\n * to `applyOpsTo`. Convenience for hooks so they don't repeat the\n * `?? applyOpsTo` pattern at every call site.\n */\nexport function dispatchApplyBatch<A>(\n adapter: A,\n ops: Op[],\n label?: string,\n): void {\n const a = adapter as { applyOps?: (ops: Op[], label?: string) => void };\n if (a.applyOps) a.applyOps(ops, label);\n else applyOpsTo(adapter, ops, label);\n}\n"],"mappings":";AAYA,SAAgBA,EAAc,GAAY,GAAW,GAAuB;CAC1E,KAAK,IAAMC,KAAMC,GAAK,EAAG,MAAMC,CAAO;AACxC;AAOA,SAAgBC,EACd,GACA,GACA,GACM;CACN,IAAMC,IAAIF;CACV,AAAIE,EAAE,WAAUA,EAAE,SAASH,GAAKI,CAAK,IAChCN,EAAWG,GAASD,GAAKI,CAAK;AACrC"}
1
+ {"version":3,"file":"applyOps.js","names":[],"sources":["../../src/core/applyOps.ts"],"sourcesContent":["import type { Op } from './ops/types';\n\n/**\n * Default `applyOps` implementation: apply each op in order against\n * `adapter`. Used by hooks when an adapter omits `applyOps`. Apps that\n * need history integration (checkpoint + push entry) supply their own\n * `applyOps` instead.\n *\n * The `_label` parameter mirrors the `applyOps(ops, label)` signature so\n * call-sites can dispatch through `(adapter.applyOps ?? applyOpsTo)` with\n * matching arguments. The default ignores it.\n */\nexport function applyOpsTo<A>(adapter: A, ops: Op[], _label?: string): void {\n for (const op of ops) op.apply(adapter);\n}\n\n/**\n * Dispatcher: invokes `adapter.applyOps` if present, otherwise falls back\n * to `applyOpsTo`. Convenience for hooks so they don't repeat the\n * `?? applyOpsTo` pattern at every call site.\n */\nexport function dispatchApplyBatch<A>(\n adapter: A,\n ops: Op[],\n label?: string,\n): void {\n const a = adapter as { applyOps?: (ops: Op[], label?: string) => void };\n if (a.applyOps) a.applyOps(ops, label);\n else applyOpsTo(adapter, ops, label);\n}\n"],"mappings":";;;;;;;;;;;AAYA,SAAgB,WAAc,SAAY,KAAW,QAAuB;CAC1E,KAAK,MAAM,MAAM,KAAK,GAAG,MAAM,OAAO;AACxC;;;;;;AAOA,SAAgB,mBACd,SACA,KACA,OACM;CACN,MAAM,IAAI;CACV,IAAI,EAAE,UAAU,EAAE,SAAS,KAAK,KAAK;MAChC,WAAW,SAAS,KAAK,KAAK;AACrC"}
@@ -1,5 +1,6 @@
1
- import { watchDevicePixelRatio as e } from "./watchDevicePixelRatio.js";
2
- import { DeviceProfileProvider as t, useDeviceProfile as n } from "./useDeviceProfile.js";
3
- import { ANCHOR_HIT_BASE_PX as r, HANDLE_BASE_PX as i, ROTATION_HANDLE_BASE_PX as a } from "./targets.js";
4
- import { COARSE_TARGET_SCALE as o, DEFAULT_DEVICE_PROFILE as s, resolveDeviceProfile as c } from "@weasel-js/routing";
5
- export { r as ANCHOR_HIT_BASE_PX, o as COARSE_TARGET_SCALE, s as DEFAULT_DEVICE_PROFILE, t as DeviceProfileProvider, i as HANDLE_BASE_PX, a as ROTATION_HANDLE_BASE_PX, c as resolveDeviceProfile, n as useDeviceProfile, e as watchDevicePixelRatio };
1
+ import { watchDevicePixelRatio } from "./watchDevicePixelRatio.js";
2
+ import { DeviceProfileProvider, useDeviceProfile } from "./useDeviceProfile.js";
3
+ import { ANCHOR_HIT_BASE_PX, HANDLE_BASE_PX, ROTATION_HANDLE_BASE_PX } from "./targets.js";
4
+ import { COARSE_TARGET_SCALE, DEFAULT_DEVICE_PROFILE as DEFAULT_DEVICE_PROFILE$1, resolveDeviceProfile as resolveDeviceProfile$1 } from "@weasel-js/routing";
5
+
6
+ export { ANCHOR_HIT_BASE_PX, COARSE_TARGET_SCALE, DEFAULT_DEVICE_PROFILE$1 as DEFAULT_DEVICE_PROFILE, DeviceProfileProvider, HANDLE_BASE_PX, ROTATION_HANDLE_BASE_PX, resolveDeviceProfile$1 as resolveDeviceProfile, useDeviceProfile, watchDevicePixelRatio };
@@ -1,17 +1,38 @@
1
1
  //#region src/core/device/targets.ts
2
- var e = {
2
+ /**
3
+ * Base sizes for grabbable chrome, in CSS pixels at `targetScale = 1`, and the
4
+ * one accessor that resolves them for a live pointer type.
5
+ *
6
+ * Paint and hit-test MUST scale together, or chrome can be seen and not
7
+ * grabbed, so every kit-internal use site goes through {@link targetSizesPx}.
8
+ * The bare constants below are the unscaled numbers, exported for consumers.
9
+ */
10
+ var BASE_PX = {
3
11
  handle: 8,
4
12
  anchor: 8,
5
13
  rotationDistance: 24
6
- }, t = e.handle, n = e.anchor, r = e.rotationDistance;
7
- function i(t = 1) {
14
+ };
15
+ /** Selection corner-handle visual size and hit radius. */
16
+ var HANDLE_BASE_PX = BASE_PX.handle;
17
+ /** Path anchor / control-point hit radius. */
18
+ var ANCHOR_HIT_BASE_PX = BASE_PX.anchor;
19
+ /** Distance from a selection's top edge to the rotation handle's center. */
20
+ var ROTATION_HANDLE_BASE_PX = BASE_PX.rotationDistance;
21
+ /**
22
+ * How big is grabbable chrome, in CSS pixels, for this pointer type?
23
+ *
24
+ * `targetScale` comes from the live {@link DeviceProfile} — 1 for a mouse,
25
+ * {@link COARSE_TARGET_SCALE} for touch. `base` replaces any of the unscaled
26
+ * sizes, as the `targets` kit settings do; the scale multiplies onto it.
27
+ */
28
+ function targetSizesPx(targetScale = 1, base = {}) {
8
29
  return {
9
- handle: e.handle * t,
10
- anchor: e.anchor * t,
11
- rotationDistance: e.rotationDistance * t
30
+ handle: (base.handle ?? BASE_PX.handle) * targetScale,
31
+ anchor: (base.anchor ?? BASE_PX.anchor) * targetScale,
32
+ rotationDistance: (base.rotationDistance ?? BASE_PX.rotationDistance) * targetScale
12
33
  };
13
34
  }
14
- //#endregion
15
- export { n as ANCHOR_HIT_BASE_PX, t as HANDLE_BASE_PX, r as ROTATION_HANDLE_BASE_PX, i as targetSizesPx };
16
35
 
36
+ //#endregion
37
+ export { ANCHOR_HIT_BASE_PX, HANDLE_BASE_PX, ROTATION_HANDLE_BASE_PX, targetSizesPx };
17
38
  //# sourceMappingURL=targets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"targets.js","names":["BASE_PX","HANDLE_BASE_PX","ANCHOR_HIT_BASE_PX","ROTATION_HANDLE_BASE_PX","targetSizesPx","targetScale"],"sources":["../../../src/core/device/targets.ts"],"sourcesContent":["/**\n * Base sizes for grabbable chrome, in CSS pixels at `targetScale = 1`, and the\n * one accessor that resolves them for a live pointer type.\n *\n * Paint and hit-test MUST scale together, or chrome can be seen and not\n * grabbed, so every kit-internal use site goes through {@link targetSizesPx}.\n * The bare constants below are the unscaled numbers, exported for consumers.\n */\n\nconst BASE_PX = {\n handle: 8,\n anchor: 8,\n rotationDistance: 24,\n} as const;\n\n/** Selection corner-handle visual size and hit radius. */\nexport const HANDLE_BASE_PX = BASE_PX.handle;\n\n/** Path anchor / control-point hit radius. */\nexport const ANCHOR_HIT_BASE_PX = BASE_PX.anchor;\n\n/** Distance from a selection's top edge to the rotation handle's center. */\nexport const ROTATION_HANDLE_BASE_PX = BASE_PX.rotationDistance;\n\n/** Grabbable-chrome sizes resolved for one pointer type, in CSS pixels. */\nexport interface TargetSizesPx {\n /** Corner-handle visual size and hit radius. */\n handle: number;\n /** Anchor / control-point hit radius. */\n anchor: number;\n /** Distance from a selection's top edge to the rotation handle's center,\n * which is also the rotate band's minimum thickness. */\n rotationDistance: number;\n}\n\n/**\n * How big is grabbable chrome, in CSS pixels, for this pointer type?\n *\n * `targetScale` comes from the live {@link DeviceProfile} — 1 for a mouse,\n * {@link COARSE_TARGET_SCALE} for touch.\n */\nexport function targetSizesPx(targetScale = 1): TargetSizesPx {\n return {\n handle: BASE_PX.handle * targetScale,\n anchor: BASE_PX.anchor * targetScale,\n rotationDistance: BASE_PX.rotationDistance * targetScale,\n };\n}\n"],"mappings":";AASA,IAAMA,IAAU;CACd,QAAQ;CACR,QAAQ;CACR,kBAAkB;AACpB,GAGaC,IAAiBD,EAAQ,QAGzBE,IAAqBF,EAAQ,QAG7BG,IAA0BH,EAAQ;AAmB/C,SAAgBI,EAAc,IAAc,GAAkB;CAC5D,OAAO;EACL,QAAQJ,EAAQ,SAASK;EACzB,QAAQL,EAAQ,SAASK;EACzB,kBAAkBL,EAAQ,mBAAmBK;CAC/C;AACF"}
1
+ {"version":3,"file":"targets.js","names":[],"sources":["../../../src/core/device/targets.ts"],"sourcesContent":["/**\n * Base sizes for grabbable chrome, in CSS pixels at `targetScale = 1`, and the\n * one accessor that resolves them for a live pointer type.\n *\n * Paint and hit-test MUST scale together, or chrome can be seen and not\n * grabbed, so every kit-internal use site goes through {@link targetSizesPx}.\n * The bare constants below are the unscaled numbers, exported for consumers.\n */\n\nconst BASE_PX = {\n handle: 8,\n anchor: 8,\n rotationDistance: 24,\n} as const;\n\n/** Selection corner-handle visual size and hit radius. */\nexport const HANDLE_BASE_PX = BASE_PX.handle;\n\n/** Path anchor / control-point hit radius. */\nexport const ANCHOR_HIT_BASE_PX = BASE_PX.anchor;\n\n/** Distance from a selection's top edge to the rotation handle's center. */\nexport const ROTATION_HANDLE_BASE_PX = BASE_PX.rotationDistance;\n\n/** Grabbable-chrome sizes resolved for one pointer type, in CSS pixels. */\nexport interface TargetSizesPx {\n /** Corner-handle visual size and hit radius. */\n handle: number;\n /** Anchor / control-point hit radius. */\n anchor: number;\n /** Distance from a selection's top edge to the rotation handle's center,\n * which is also the rotate band's minimum thickness. */\n rotationDistance: number;\n}\n\n/**\n * How big is grabbable chrome, in CSS pixels, for this pointer type?\n *\n * `targetScale` comes from the live {@link DeviceProfile} — 1 for a mouse,\n * {@link COARSE_TARGET_SCALE} for touch. `base` replaces any of the unscaled\n * sizes, as the `targets` kit settings do; the scale multiplies onto it.\n */\nexport function targetSizesPx(targetScale = 1, base: Partial<TargetSizesPx> = {}): TargetSizesPx {\n return {\n handle: (base.handle ?? BASE_PX.handle) * targetScale,\n anchor: (base.anchor ?? BASE_PX.anchor) * targetScale,\n rotationDistance: (base.rotationDistance ?? BASE_PX.rotationDistance) * targetScale,\n };\n}\n"],"mappings":";;;;;;;;;AASA,IAAM,UAAU;CACd,QAAQ;CACR,QAAQ;CACR,kBAAkB;AACpB;;AAGA,IAAa,iBAAiB,QAAQ;;AAGtC,IAAa,qBAAqB,QAAQ;;AAG1C,IAAa,0BAA0B,QAAQ;;;;;;;;AAoB/C,SAAgB,cAAc,cAAc,GAAG,OAA+B,CAAC,GAAkB;CAC/F,OAAO;EACL,SAAS,KAAK,UAAU,QAAQ,UAAU;EAC1C,SAAS,KAAK,UAAU,QAAQ,UAAU;EAC1C,mBAAmB,KAAK,oBAAoB,QAAQ,oBAAoB;CAC1E;AACF"}
@@ -1,69 +1,103 @@
1
- import { watchDevicePixelRatio as e } from "./watchDevicePixelRatio.js";
2
- import { createContext as t, createElement as n, useContext as r, useEffect as i, useMemo as a, useState as o } from "react";
3
- import { DEFAULT_DEVICE_PROFILE as s, resolveDeviceProfile as c } from "@weasel-js/routing";
1
+ import { watchDevicePixelRatio } from "./watchDevicePixelRatio.js";
2
+ import { createContext, createElement, useContext, useEffect, useMemo, useState } from "react";
3
+ import { DEFAULT_DEVICE_PROFILE, resolveDeviceProfile } from "@weasel-js/routing";
4
+
4
5
  //#region src/core/device/useDeviceProfile.ts
5
- var l = "(pointer: coarse)", u = "(hover: hover)";
6
- function d() {
7
- return typeof window < "u" && typeof window.matchMedia == "function";
6
+ var COARSE_QUERY = "(pointer: coarse)";
7
+ var HOVER_QUERY = "(hover: hover)";
8
+ function hasMatchMedia() {
9
+ return typeof window !== "undefined" && typeof window.matchMedia === "function";
8
10
  }
9
- function f() {
10
- let e = typeof window < "u" && window.devicePixelRatio || 1;
11
- return d() ? {
12
- coarsePointer: window.matchMedia(l).matches,
13
- canHover: window.matchMedia(u).matches,
14
- dpr: e
15
- } : {
16
- coarsePointer: s.coarsePointer,
17
- canHover: s.canHover,
18
- dpr: e
11
+ function detectOnce() {
12
+ const dpr = typeof window !== "undefined" && window.devicePixelRatio || 1;
13
+ if (!hasMatchMedia()) return {
14
+ coarsePointer: DEFAULT_DEVICE_PROFILE.coarsePointer,
15
+ canHover: DEFAULT_DEVICE_PROFILE.canHover,
16
+ dpr
17
+ };
18
+ return {
19
+ coarsePointer: window.matchMedia(COARSE_QUERY).matches,
20
+ canHover: window.matchMedia(HOVER_QUERY).matches,
21
+ dpr
19
22
  };
20
23
  }
21
- function p(t) {
22
- let [n, r] = o(f);
23
- return i(() => {
24
- if (!t || !d()) return;
25
- let n = window.matchMedia(l), i = window.matchMedia(u), a = (e) => r((t) => ({
26
- ...t,
24
+ /**
25
+ * Detect device facts and keep them live.
26
+ *
27
+ * Three subscriptions: pointer coarseness, hover capability, and pixel
28
+ * density. None while `watch` is false, and the facts then go stale.
29
+ */
30
+ function useDetectedFacts(watch) {
31
+ const [facts, setFacts] = useState(detectOnce);
32
+ useEffect(() => {
33
+ if (!watch || !hasMatchMedia()) return;
34
+ const coarseMq = window.matchMedia(COARSE_QUERY);
35
+ const hoverMq = window.matchMedia(HOVER_QUERY);
36
+ const onCoarse = (e) => setFacts((f) => ({
37
+ ...f,
27
38
  coarsePointer: e.matches
28
- })), o = (e) => r((t) => ({
29
- ...t,
39
+ }));
40
+ const onHover = (e) => setFacts((f) => ({
41
+ ...f,
30
42
  canHover: e.matches
31
43
  }));
32
- n.addEventListener("change", a), i.addEventListener("change", o);
33
- let s = e((e) => r((t) => t.dpr === e ? t : {
34
- ...t,
35
- dpr: e
44
+ coarseMq.addEventListener("change", onCoarse);
45
+ hoverMq.addEventListener("change", onHover);
46
+ const unwatchDensity = watchDevicePixelRatio((next) => setFacts((f) => f.dpr === next ? f : {
47
+ ...f,
48
+ dpr: next
36
49
  }));
37
- return r({
38
- coarsePointer: n.matches,
39
- canHover: i.matches,
50
+ setFacts({
51
+ coarsePointer: coarseMq.matches,
52
+ canHover: hoverMq.matches,
40
53
  dpr: window.devicePixelRatio || 1
41
- }), () => {
42
- s(), n.removeEventListener("change", a), i.removeEventListener("change", o);
54
+ });
55
+ return () => {
56
+ unwatchDensity();
57
+ coarseMq.removeEventListener("change", onCoarse);
58
+ hoverMq.removeEventListener("change", onHover);
43
59
  };
44
- }, [t]), n;
60
+ }, [watch]);
61
+ return facts;
45
62
  }
46
- var m = t(null);
47
- function h(e) {
48
- let t = r(m), n = p(t === null), i = t ?? n, { coarsePointer: o, canHover: s, dpr: l, targetScale: u } = e ?? {};
49
- return a(() => c(i, {
50
- ...o === void 0 ? {} : { coarsePointer: o },
51
- ...s === void 0 ? {} : { canHover: s },
52
- ...l === void 0 ? {} : { dpr: l },
53
- ...u === void 0 ? {} : { targetScale: u }
63
+ var DeviceProfileContext = createContext(null);
64
+ /**
65
+ * Read the ambient device profile.
66
+ *
67
+ * Uses the nearest {@link DeviceProfileProvider} when one exists, watching
68
+ * nothing of its own, and otherwise detects for itself — so a standalone overlay or a labkit panel
69
+ * rendered outside a `<SceneCanvas>` still gets correct facts.
70
+ *
71
+ * `overrides` always wins over both, which is what makes tests and
72
+ * force-touch-chrome demos possible without stubbing `matchMedia`.
73
+ */
74
+ function useDeviceProfile(overrides) {
75
+ const provided = useContext(DeviceProfileContext);
76
+ const detected = useDetectedFacts(provided === null);
77
+ const base = provided ?? detected;
78
+ const { coarsePointer, canHover, dpr, targetScale } = overrides ?? {};
79
+ return useMemo(() => resolveDeviceProfile(base, {
80
+ ...coarsePointer !== void 0 ? { coarsePointer } : {},
81
+ ...canHover !== void 0 ? { canHover } : {},
82
+ ...dpr !== void 0 ? { dpr } : {},
83
+ ...targetScale !== void 0 ? { targetScale } : {}
54
84
  }), [
55
- i,
56
- o,
57
- s,
58
- l,
59
- u
85
+ base,
86
+ coarsePointer,
87
+ canHover,
88
+ dpr,
89
+ targetScale
60
90
  ]);
61
91
  }
62
- function g({ value: e, children: t }) {
63
- let r = h(e);
64
- return n(m.Provider, { value: r }, t);
92
+ /**
93
+ * Publish one resolved profile to a subtree. `<SceneCanvas>` renders this so
94
+ * overlays, affordances, and consumer chrome all read the same object.
95
+ */
96
+ function DeviceProfileProvider({ value, children }) {
97
+ const profile = useDeviceProfile(value);
98
+ return createElement(DeviceProfileContext.Provider, { value: profile }, children);
65
99
  }
66
- //#endregion
67
- export { g as DeviceProfileProvider, h as useDeviceProfile };
68
100
 
101
+ //#endregion
102
+ export { DeviceProfileProvider, useDeviceProfile };
69
103
  //# sourceMappingURL=useDeviceProfile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDeviceProfile.js","names":["COARSE_QUERY","HOVER_QUERY","hasMatchMedia","detectOnce","dpr","DEFAULT_DEVICE_PROFILE","useDetectedFacts","facts","setFacts","useState","useEffect","watch","coarseMq","hoverMq","onCoarse","f","onHover","unwatchDensity","watchDevicePixelRatio","next","DeviceProfileContext","createContext","useDeviceProfile","provided","useContext","detected","base","overrides","useMemo","resolveDeviceProfile","coarsePointer","canHover","targetScale","DeviceProfileProvider","profile","value","createElement","children"],"sources":["../../../src/core/device/useDeviceProfile.ts"],"sourcesContent":["import {\n createContext,\n createElement,\n useContext,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from 'react';\nimport type { DetectedDeviceFacts, DeviceProfile } from './types';\nimport { DEFAULT_DEVICE_PROFILE, resolveDeviceProfile } from '@weasel-js/routing';\nimport { watchDevicePixelRatio } from './watchDevicePixelRatio';\n\nconst COARSE_QUERY = '(pointer: coarse)';\nconst HOVER_QUERY = '(hover: hover)';\n\nfunction hasMatchMedia(): boolean {\n return typeof window !== 'undefined' && typeof window.matchMedia === 'function';\n}\n\nfunction detectOnce(): DetectedDeviceFacts {\n // Density is read unconditionally: `devicePixelRatio` does not depend on\n // `matchMedia` existing. Only *watching* density needs a media query.\n // Gating this read behind `hasMatchMedia()` would report density 1 under\n // any environment without matchMedia — including jsdom, which would\n // silently break `useCanvasSize`'s existing DPR assertions.\n const dpr = (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\n if (!hasMatchMedia()) {\n return {\n coarsePointer: DEFAULT_DEVICE_PROFILE.coarsePointer,\n canHover: DEFAULT_DEVICE_PROFILE.canHover,\n dpr,\n };\n }\n return {\n coarsePointer: window.matchMedia(COARSE_QUERY).matches,\n canHover: window.matchMedia(HOVER_QUERY).matches,\n dpr,\n };\n}\n\n/**\n * Detect device facts and keep them live.\n *\n * Three subscriptions: pointer coarseness, hover capability, and pixel\n * density. None while `watch` is false, and the facts then go stale.\n */\nfunction useDetectedFacts(watch: boolean): DetectedDeviceFacts {\n const [facts, setFacts] = useState<DetectedDeviceFacts>(detectOnce);\n\n useEffect(() => {\n if (!watch || !hasMatchMedia()) return;\n\n const coarseMq = window.matchMedia(COARSE_QUERY);\n const hoverMq = window.matchMedia(HOVER_QUERY);\n\n const onCoarse = (e: MediaQueryListEvent | { matches: boolean }) =>\n setFacts((f) => ({ ...f, coarsePointer: e.matches }));\n const onHover = (e: MediaQueryListEvent | { matches: boolean }) =>\n setFacts((f) => ({ ...f, canHover: e.matches }));\n\n coarseMq.addEventListener('change', onCoarse as EventListener);\n hoverMq.addEventListener('change', onHover as EventListener);\n\n const unwatchDensity = watchDevicePixelRatio((next) =>\n setFacts((f) => (f.dpr === next ? f : { ...f, dpr: next })));\n\n // Re-sync once on mount: a query could have changed between the\n // useState initializer and the effect running.\n // eslint-disable-next-line react-hooks/set-state-in-effect -- re-syncs media queries that may have changed before subscribing\n setFacts({\n coarsePointer: coarseMq.matches,\n canHover: hoverMq.matches,\n dpr: window.devicePixelRatio || 1,\n });\n\n return () => {\n unwatchDensity();\n coarseMq.removeEventListener('change', onCoarse as EventListener);\n hoverMq.removeEventListener('change', onHover as EventListener);\n };\n }, [watch]);\n\n return facts;\n}\n\nconst DeviceProfileContext = createContext<DeviceProfile | null>(null);\n\n/**\n * Read the ambient device profile.\n *\n * Uses the nearest {@link DeviceProfileProvider} when one exists, watching\n * nothing of its own, and otherwise detects for itself — so a standalone overlay or a labkit panel\n * rendered outside a `<SceneCanvas>` still gets correct facts.\n *\n * `overrides` always wins over both, which is what makes tests and\n * force-touch-chrome demos possible without stubbing `matchMedia`.\n */\nexport function useDeviceProfile(overrides?: Partial<DeviceProfile>): DeviceProfile {\n const provided = useContext(DeviceProfileContext);\n const detected = useDetectedFacts(provided === null);\n const base: DetectedDeviceFacts = provided ?? detected;\n const { coarsePointer, canHover, dpr, targetScale } = overrides ?? {};\n return useMemo(\n () =>\n resolveDeviceProfile(base, {\n ...(coarsePointer !== undefined ? { coarsePointer } : {}),\n ...(canHover !== undefined ? { canHover } : {}),\n ...(dpr !== undefined ? { dpr } : {}),\n ...(targetScale !== undefined ? { targetScale } : {}),\n }),\n [base, coarsePointer, canHover, dpr, targetScale],\n );\n}\n\n/** Props for `<DeviceProfileProvider>`. */\nexport interface DeviceProfileProviderProps {\n /** Partial override folded over detected facts. */\n value?: Partial<DeviceProfile>;\n children: ReactNode;\n}\n\n/**\n * Publish one resolved profile to a subtree. `<SceneCanvas>` renders this so\n * overlays, affordances, and consumer chrome all read the same object.\n */\nexport function DeviceProfileProvider({ value, children }: DeviceProfileProviderProps) {\n const profile = useDeviceProfile(value);\n return createElement(DeviceProfileContext.Provider, { value: profile }, children);\n}\n"],"mappings":";;;;AAaA,IAAMA,IAAe,qBACfC,IAAc;AAEpB,SAASC,IAAyB;CAChC,OAAO,OAAO,SAAW,OAAe,OAAO,OAAO,cAAe;AACvE;AAEA,SAASC,IAAkC;CAMzC,IAAMC,IAAO,OAAO,SAAW,OAAe,OAAO,oBAAqB;CAQ1E,OAPKF,EAAc,IAOZ;EACL,eAAe,OAAO,WAAWF,CAAY,CAAC,CAAC;EAC/C,UAAU,OAAO,WAAWC,CAAW,CAAC,CAAC;EACzC;CACF,IAVS;EACL,eAAeI,EAAuB;EACtC,UAAUA,EAAuB;EACjC;CACF;AAOJ;AAQA,SAASC,EAAiB,GAAqC;CAC7D,IAAM,CAACC,GAAOC,KAAYC,EAA8BN,CAAU;CAmClE,OAjCAO,QAAgB;EACd,IAAI,CAACC,KAAS,CAACT,EAAc,GAAG;EAEhC,IAAMU,IAAW,OAAO,WAAWZ,CAAY,GACzCa,IAAU,OAAO,WAAWZ,CAAW,GAEvCa,KAAY,MAChBN,GAAU,OAAO;GAAE,GAAGO;GAAG,eAAe,EAAE;EAAQ,EAAE,GAChDC,KAAW,MACfR,GAAU,OAAO;GAAE,GAAGO;GAAG,UAAU,EAAE;EAAQ,EAAE;EAGjD,AADAH,EAAS,iBAAiB,UAAUE,CAAyB,GAC7DD,EAAQ,iBAAiB,UAAUG,CAAwB;EAE3D,IAAMC,IAAiBC,GAAuB,MAC5CV,GAAU,MAAOO,EAAE,QAAQI,IAAOJ,IAAI;GAAE,GAAGA;GAAG,KAAKI;EAAK,CAAE,CAAC;EAW7D,OANAX,EAAS;GACP,eAAeI,EAAS;GACxB,UAAUC,EAAQ;GAClB,KAAK,OAAO,oBAAoB;EAClC,CAAC,SAEY;GAGX,AAFAI,EAAe,GACfL,EAAS,oBAAoB,UAAUE,CAAyB,GAChED,EAAQ,oBAAoB,UAAUG,CAAwB;EAChE;CACF,GAAG,CAACL,CAAK,CAAC,GAEHJ;AACT;AAEA,IAAMa,IAAuBC,EAAoC,IAAI;AAYrE,SAAgBC,EAAiB,GAAmD;CAClF,IAAMC,IAAWC,EAAWJ,CAAoB,GAC1CK,IAAWnB,EAAiBiB,MAAa,IAAI,GAC7CG,IAA4BH,KAAYE,GACxC,EAAE,kBAAe,aAAU,QAAK,mBAAgBE,KAAa,CAAC;CACpE,OAAOC,QAEHC,EAAqBH,GAAM;EACzB,GAAII,MAAkB,KAAA,IAAgC,CAAC,IAArB,EAAE,iBAAc;EAClD,GAAIC,MAAa,KAAA,IAA2B,CAAC,IAAhB,EAAE,YAAS;EACxC,GAAI3B,MAAQ,KAAA,IAAsB,CAAC,IAAX,EAAE,OAAI;EAC9B,GAAI4B,MAAgB,KAAA,IAA8B,CAAC,IAAnB,EAAE,eAAY;CAChD,CAAC,GACH;EAACN;EAAMI;EAAeC;EAAU3B;EAAK4B;CAAW,CAClD;AACF;AAaA,SAAgBC,EAAsB,EAAE,UAAO,eAAwC;CACrF,IAAMC,IAAUZ,EAAiBa,CAAK;CACtC,OAAOC,EAAchB,EAAqB,UAAU,EAAE,OAAOc,EAAQ,GAAGG,CAAQ;AAClF"}
1
+ {"version":3,"file":"useDeviceProfile.js","names":[],"sources":["../../../src/core/device/useDeviceProfile.ts"],"sourcesContent":["import {\n createContext,\n createElement,\n useContext,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from 'react';\nimport type { DetectedDeviceFacts, DeviceProfile } from './types';\nimport { DEFAULT_DEVICE_PROFILE, resolveDeviceProfile } from '@weasel-js/routing';\nimport { watchDevicePixelRatio } from './watchDevicePixelRatio';\n\nconst COARSE_QUERY = '(pointer: coarse)';\nconst HOVER_QUERY = '(hover: hover)';\n\nfunction hasMatchMedia(): boolean {\n return typeof window !== 'undefined' && typeof window.matchMedia === 'function';\n}\n\nfunction detectOnce(): DetectedDeviceFacts {\n // Density is read unconditionally: `devicePixelRatio` does not depend on\n // `matchMedia` existing. Only *watching* density needs a media query.\n // Gating this read behind `hasMatchMedia()` would report density 1 under\n // any environment without matchMedia — including jsdom, which would\n // silently break `useCanvasSize`'s existing DPR assertions.\n const dpr = (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\n if (!hasMatchMedia()) {\n return {\n coarsePointer: DEFAULT_DEVICE_PROFILE.coarsePointer,\n canHover: DEFAULT_DEVICE_PROFILE.canHover,\n dpr,\n };\n }\n return {\n coarsePointer: window.matchMedia(COARSE_QUERY).matches,\n canHover: window.matchMedia(HOVER_QUERY).matches,\n dpr,\n };\n}\n\n/**\n * Detect device facts and keep them live.\n *\n * Three subscriptions: pointer coarseness, hover capability, and pixel\n * density. None while `watch` is false, and the facts then go stale.\n */\nfunction useDetectedFacts(watch: boolean): DetectedDeviceFacts {\n const [facts, setFacts] = useState<DetectedDeviceFacts>(detectOnce);\n\n useEffect(() => {\n if (!watch || !hasMatchMedia()) return;\n\n const coarseMq = window.matchMedia(COARSE_QUERY);\n const hoverMq = window.matchMedia(HOVER_QUERY);\n\n const onCoarse = (e: MediaQueryListEvent | { matches: boolean }) =>\n setFacts((f) => ({ ...f, coarsePointer: e.matches }));\n const onHover = (e: MediaQueryListEvent | { matches: boolean }) =>\n setFacts((f) => ({ ...f, canHover: e.matches }));\n\n coarseMq.addEventListener('change', onCoarse as EventListener);\n hoverMq.addEventListener('change', onHover as EventListener);\n\n const unwatchDensity = watchDevicePixelRatio((next) =>\n setFacts((f) => (f.dpr === next ? f : { ...f, dpr: next })));\n\n // Re-sync once on mount: a query could have changed between the\n // useState initializer and the effect running.\n // eslint-disable-next-line react-hooks/set-state-in-effect -- re-syncs media queries that may have changed before subscribing\n setFacts({\n coarsePointer: coarseMq.matches,\n canHover: hoverMq.matches,\n dpr: window.devicePixelRatio || 1,\n });\n\n return () => {\n unwatchDensity();\n coarseMq.removeEventListener('change', onCoarse as EventListener);\n hoverMq.removeEventListener('change', onHover as EventListener);\n };\n }, [watch]);\n\n return facts;\n}\n\nconst DeviceProfileContext = createContext<DeviceProfile | null>(null);\n\n/**\n * Read the ambient device profile.\n *\n * Uses the nearest {@link DeviceProfileProvider} when one exists, watching\n * nothing of its own, and otherwise detects for itself — so a standalone overlay or a labkit panel\n * rendered outside a `<SceneCanvas>` still gets correct facts.\n *\n * `overrides` always wins over both, which is what makes tests and\n * force-touch-chrome demos possible without stubbing `matchMedia`.\n */\nexport function useDeviceProfile(overrides?: Partial<DeviceProfile>): DeviceProfile {\n const provided = useContext(DeviceProfileContext);\n const detected = useDetectedFacts(provided === null);\n const base: DetectedDeviceFacts = provided ?? detected;\n const { coarsePointer, canHover, dpr, targetScale } = overrides ?? {};\n return useMemo(\n () =>\n resolveDeviceProfile(base, {\n ...(coarsePointer !== undefined ? { coarsePointer } : {}),\n ...(canHover !== undefined ? { canHover } : {}),\n ...(dpr !== undefined ? { dpr } : {}),\n ...(targetScale !== undefined ? { targetScale } : {}),\n }),\n [base, coarsePointer, canHover, dpr, targetScale],\n );\n}\n\n/** Props for `<DeviceProfileProvider>`. */\nexport interface DeviceProfileProviderProps {\n /** Partial override folded over detected facts. */\n value?: Partial<DeviceProfile>;\n children: ReactNode;\n}\n\n/**\n * Publish one resolved profile to a subtree. `<SceneCanvas>` renders this so\n * overlays, affordances, and consumer chrome all read the same object.\n */\nexport function DeviceProfileProvider({ value, children }: DeviceProfileProviderProps) {\n const profile = useDeviceProfile(value);\n return createElement(DeviceProfileContext.Provider, { value: profile }, children);\n}\n"],"mappings":";;;;;AAaA,IAAM,eAAe;AACrB,IAAM,cAAc;AAEpB,SAAS,gBAAyB;CAChC,OAAO,OAAO,WAAW,eAAe,OAAO,OAAO,eAAe;AACvE;AAEA,SAAS,aAAkC;CAMzC,MAAM,MAAO,OAAO,WAAW,eAAe,OAAO,oBAAqB;CAC1E,IAAI,CAAC,cAAc,GACjB,OAAO;EACL,eAAe,uBAAuB;EACtC,UAAU,uBAAuB;EACjC;CACF;CAEF,OAAO;EACL,eAAe,OAAO,WAAW,YAAY,CAAC,CAAC;EAC/C,UAAU,OAAO,WAAW,WAAW,CAAC,CAAC;EACzC;CACF;AACF;;;;;;;AAQA,SAAS,iBAAiB,OAAqC;CAC7D,MAAM,CAAC,OAAO,YAAY,SAA8B,UAAU;CAElE,gBAAgB;EACd,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG;EAEhC,MAAM,WAAW,OAAO,WAAW,YAAY;EAC/C,MAAM,UAAU,OAAO,WAAW,WAAW;EAE7C,MAAM,YAAY,MAChB,UAAU,OAAO;GAAE,GAAG;GAAG,eAAe,EAAE;EAAQ,EAAE;EACtD,MAAM,WAAW,MACf,UAAU,OAAO;GAAE,GAAG;GAAG,UAAU,EAAE;EAAQ,EAAE;EAEjD,SAAS,iBAAiB,UAAU,QAAyB;EAC7D,QAAQ,iBAAiB,UAAU,OAAwB;EAE3D,MAAM,iBAAiB,uBAAuB,SAC5C,UAAU,MAAO,EAAE,QAAQ,OAAO,IAAI;GAAE,GAAG;GAAG,KAAK;EAAK,CAAE,CAAC;EAK7D,SAAS;GACP,eAAe,SAAS;GACxB,UAAU,QAAQ;GAClB,KAAK,OAAO,oBAAoB;EAClC,CAAC;EAED,aAAa;GACX,eAAe;GACf,SAAS,oBAAoB,UAAU,QAAyB;GAChE,QAAQ,oBAAoB,UAAU,OAAwB;EAChE;CACF,GAAG,CAAC,KAAK,CAAC;CAEV,OAAO;AACT;AAEA,IAAM,uBAAuB,cAAoC,IAAI;;;;;;;;;;;AAYrE,SAAgB,iBAAiB,WAAmD;CAClF,MAAM,WAAW,WAAW,oBAAoB;CAChD,MAAM,WAAW,iBAAiB,aAAa,IAAI;CACnD,MAAM,OAA4B,YAAY;CAC9C,MAAM,EAAE,eAAe,UAAU,KAAK,gBAAgB,aAAa,CAAC;CACpE,OAAO,cAEH,qBAAqB,MAAM;EACzB,GAAI,kBAAkB,SAAY,EAAE,cAAc,IAAI,CAAC;EACvD,GAAI,aAAa,SAAY,EAAE,SAAS,IAAI,CAAC;EAC7C,GAAI,QAAQ,SAAY,EAAE,IAAI,IAAI,CAAC;EACnC,GAAI,gBAAgB,SAAY,EAAE,YAAY,IAAI,CAAC;CACrD,CAAC,GACH;EAAC;EAAM;EAAe;EAAU;EAAK;CAAW,CAClD;AACF;;;;;AAaA,SAAgB,sBAAsB,EAAE,OAAO,YAAwC;CACrF,MAAM,UAAU,iBAAiB,KAAK;CACtC,OAAO,cAAc,qBAAqB,UAAU,EAAE,OAAO,QAAQ,GAAG,QAAQ;AAClF"}
@@ -0,0 +1,23 @@
1
+ import { useMemo } from "react";
2
+ import { useKitSetting } from "@weasel-js/react";
3
+
4
+ //#region src/core/device/useTargetBasePx.ts
5
+ /** The unscaled chrome sizes the `targets` kit settings give, for `targetSizesPx`'s `base`. */
6
+ function useTargetBasePx() {
7
+ const handle = useKitSetting("targets.handlePx");
8
+ const anchor = useKitSetting("targets.anchorHitPx");
9
+ const rotationDistance = useKitSetting("targets.rotationDistancePx");
10
+ return useMemo(() => ({
11
+ handle,
12
+ anchor,
13
+ rotationDistance
14
+ }), [
15
+ handle,
16
+ anchor,
17
+ rotationDistance
18
+ ]);
19
+ }
20
+
21
+ //#endregion
22
+ export { useTargetBasePx };
23
+ //# sourceMappingURL=useTargetBasePx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTargetBasePx.js","names":[],"sources":["../../../src/core/device/useTargetBasePx.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useKitSetting } from '@weasel-js/react';\nimport type { TargetSizesPx } from './targets';\n\n/** The unscaled chrome sizes the `targets` kit settings give, for `targetSizesPx`'s `base`. */\nexport function useTargetBasePx(): Partial<TargetSizesPx> {\n const handle = useKitSetting('targets.handlePx');\n const anchor = useKitSetting('targets.anchorHitPx');\n const rotationDistance = useKitSetting('targets.rotationDistancePx');\n return useMemo(() => ({ handle, anchor, rotationDistance }), [handle, anchor, rotationDistance]);\n}\n"],"mappings":";;;;;AAKA,SAAgB,kBAA0C;CACxD,MAAM,SAAS,cAAc,kBAAkB;CAC/C,MAAM,SAAS,cAAc,qBAAqB;CAClD,MAAM,mBAAmB,cAAc,4BAA4B;CACnE,OAAO,eAAe;EAAE;EAAQ;EAAQ;CAAiB,IAAI;EAAC;EAAQ;EAAQ;CAAgB,CAAC;AACjG"}
@@ -1,17 +1,34 @@
1
1
  //#region src/core/device/watchDevicePixelRatio.ts
2
- function e(e) {
3
- if (typeof window > "u" || typeof window.matchMedia != "function") return () => {};
4
- let t = !1, n = null, r = () => {
5
- t || (i(), e(window.devicePixelRatio || 1));
2
+ /**
3
+ * Call `onChange` each time `window.devicePixelRatio` changes: the window
4
+ * moved to a display of another density, or the page zoomed. Returns the
5
+ * unsubscribe. A no-op where `matchMedia` does not exist.
6
+ *
7
+ * `(resolution: Ndppx)` stops matching as soon as density changes, so one
8
+ * listener fires once and goes dead; this arms a fresh query at the new
9
+ * density on every change.
10
+ */
11
+ function watchDevicePixelRatio(onChange) {
12
+ if (typeof window === "undefined" || typeof window.matchMedia !== "function") return () => {};
13
+ let disposed = false;
14
+ let query = null;
15
+ const onDensity = () => {
16
+ if (disposed) return;
17
+ arm();
18
+ onChange(window.devicePixelRatio || 1);
6
19
  };
7
- function i() {
8
- n?.removeEventListener("change", r), n = window.matchMedia(`(resolution: ${window.devicePixelRatio || 1}dppx)`), n.addEventListener("change", r);
20
+ function arm() {
21
+ query?.removeEventListener("change", onDensity);
22
+ query = window.matchMedia(`(resolution: ${window.devicePixelRatio || 1}dppx)`);
23
+ query.addEventListener("change", onDensity);
9
24
  }
10
- return i(), () => {
11
- t = !0, n?.removeEventListener("change", r);
25
+ arm();
26
+ return () => {
27
+ disposed = true;
28
+ query?.removeEventListener("change", onDensity);
12
29
  };
13
30
  }
14
- //#endregion
15
- export { e as watchDevicePixelRatio };
16
31
 
32
+ //#endregion
33
+ export { watchDevicePixelRatio };
17
34
  //# sourceMappingURL=watchDevicePixelRatio.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"watchDevicePixelRatio.js","names":["watchDevicePixelRatio","disposed","query","onDensity","arm","onChange"],"sources":["../../../src/core/device/watchDevicePixelRatio.ts"],"sourcesContent":["/**\n * Call `onChange` each time `window.devicePixelRatio` changes: the window\n * moved to a display of another density, or the page zoomed. Returns the\n * unsubscribe. A no-op where `matchMedia` does not exist.\n *\n * `(resolution: Ndppx)` stops matching as soon as density changes, so one\n * listener fires once and goes dead; this arms a fresh query at the new\n * density on every change.\n */\nexport function watchDevicePixelRatio(onChange: (dpr: number) => void): () => void {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return () => {};\n let disposed = false;\n let query: MediaQueryList | null = null;\n const onDensity = (): void => {\n if (disposed) return;\n arm();\n onChange(window.devicePixelRatio || 1);\n };\n function arm(): void {\n query?.removeEventListener('change', onDensity);\n query = window.matchMedia(`(resolution: ${window.devicePixelRatio || 1}dppx)`);\n query.addEventListener('change', onDensity);\n }\n arm();\n return () => {\n disposed = true;\n query?.removeEventListener('change', onDensity);\n };\n}\n"],"mappings":";AASA,SAAgBA,EAAsB,GAA6C;CACjF,IAAI,OAAO,SAAW,OAAe,OAAO,OAAO,cAAe,YAAY,aAAa,CAAC;CAC5F,IAAIC,IAAW,IACXC,IAA+B,MAC7BC,UAAwB;EAC5B,AAAIF,MACJG,EAAI,GACJC,EAAS,OAAO,oBAAoB,CAAC;CACvC;CACA,SAASD,IAAY;EAGnB,AAFAF,GAAO,oBAAoB,UAAUC,CAAS,GAC9C,IAAQ,OAAO,WAAW,gBAAgB,OAAO,oBAAoB,EAAE,MAAM,GAC7ED,EAAM,iBAAiB,UAAUC,CAAS;CAC5C;CAEA,OADAC,EAAI,SACS;EAEX,AADA,IAAW,IACXF,GAAO,oBAAoB,UAAUC,CAAS;CAChD;AACF"}
1
+ {"version":3,"file":"watchDevicePixelRatio.js","names":[],"sources":["../../../src/core/device/watchDevicePixelRatio.ts"],"sourcesContent":["/**\n * Call `onChange` each time `window.devicePixelRatio` changes: the window\n * moved to a display of another density, or the page zoomed. Returns the\n * unsubscribe. A no-op where `matchMedia` does not exist.\n *\n * `(resolution: Ndppx)` stops matching as soon as density changes, so one\n * listener fires once and goes dead; this arms a fresh query at the new\n * density on every change.\n */\nexport function watchDevicePixelRatio(onChange: (dpr: number) => void): () => void {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return () => {};\n let disposed = false;\n let query: MediaQueryList | null = null;\n const onDensity = (): void => {\n if (disposed) return;\n arm();\n onChange(window.devicePixelRatio || 1);\n };\n function arm(): void {\n query?.removeEventListener('change', onDensity);\n query = window.matchMedia(`(resolution: ${window.devicePixelRatio || 1}dppx)`);\n query.addEventListener('change', onDensity);\n }\n arm();\n return () => {\n disposed = true;\n query?.removeEventListener('change', onDensity);\n };\n}\n"],"mappings":";;;;;;;;;;AASA,SAAgB,sBAAsB,UAA6C;CACjF,IAAI,OAAO,WAAW,eAAe,OAAO,OAAO,eAAe,YAAY,aAAa,CAAC;CAC5F,IAAI,WAAW;CACf,IAAI,QAA+B;CACnC,MAAM,kBAAwB;EAC5B,IAAI,UAAU;EACd,IAAI;EACJ,SAAS,OAAO,oBAAoB,CAAC;CACvC;CACA,SAAS,MAAY;EACnB,OAAO,oBAAoB,UAAU,SAAS;EAC9C,QAAQ,OAAO,WAAW,gBAAgB,OAAO,oBAAoB,EAAE,MAAM;EAC7E,MAAM,iBAAiB,UAAU,SAAS;CAC5C;CACA,IAAI;CACJ,aAAa;EACX,WAAW;EACX,OAAO,oBAAoB,UAAU,SAAS;CAChD;AACF"}