@weasel-js/core 1.7.0 → 1.7.2

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 (1004) hide show
  1. package/CHANGELOG.md +794 -0
  2. package/README.md +14 -8
  3. package/dist/WeaselProvider.js +15 -0
  4. package/dist/WeaselProvider.js.map +1 -0
  5. package/dist/affordances/composeAffordanceLayer.js +224 -0
  6. package/dist/affordances/composeAffordanceLayer.js.map +1 -0
  7. package/dist/affordances/cornerResize.js +69 -0
  8. package/dist/affordances/cornerResize.js.map +1 -0
  9. package/dist/affordances/hitAffordanceRegions.js +138 -0
  10. package/dist/affordances/hitAffordanceRegions.js.map +1 -0
  11. package/dist/affordances/pathAnchors.js +66 -0
  12. package/dist/affordances/pathAnchors.js.map +1 -0
  13. package/dist/affordances/rotationHandle.js +103 -0
  14. package/dist/affordances/rotationHandle.js.map +1 -0
  15. package/dist/animation/behaviors/momentum.js +118 -0
  16. package/dist/animation/behaviors/momentum.js.map +1 -0
  17. package/dist/animation/colorHelpers.js +135 -0
  18. package/dist/animation/colorHelpers.js.map +1 -0
  19. package/dist/animation/colorRegistry.js +37 -0
  20. package/dist/animation/colorRegistry.js.map +1 -0
  21. package/dist/animation/index.js +20 -0
  22. package/dist/animation/loop.js +62 -0
  23. package/dist/animation/loop.js.map +1 -0
  24. package/dist/animation/observe.js +23 -0
  25. package/dist/animation/observe.js.map +1 -0
  26. package/dist/animation/poseHelpers.js +50 -0
  27. package/dist/animation/poseHelpers.js.map +1 -0
  28. package/dist/animation/reflow.js +121 -0
  29. package/dist/animation/reflow.js.map +1 -0
  30. package/dist/animation/rig/bindRig.js +74 -0
  31. package/dist/animation/rig/bindRig.js.map +1 -0
  32. package/dist/animation/rig/blendPoses.js +43 -0
  33. package/dist/animation/rig/blendPoses.js.map +1 -0
  34. package/dist/animation/rig/mirrorPose.js +19 -0
  35. package/dist/animation/rig/mirrorPose.js.map +1 -0
  36. package/dist/animation/rig/resolveSkeleton.js +33 -0
  37. package/dist/animation/rig/resolveSkeleton.js.map +1 -0
  38. package/dist/animation/rig/solveIk.js +103 -0
  39. package/dist/animation/rig/solveIk.js.map +1 -0
  40. package/dist/animation/rig/types.js +12 -0
  41. package/dist/animation/rig/types.js.map +1 -0
  42. package/dist/animation/rig/useRig.js +23 -0
  43. package/dist/animation/rig/useRig.js.map +1 -0
  44. package/dist/animation/slew.js +27 -0
  45. package/dist/animation/slew.js.map +1 -0
  46. package/dist/animation/stagger.js +138 -0
  47. package/dist/animation/stagger.js.map +1 -0
  48. package/dist/animation/timeline/booking.js +106 -0
  49. package/dist/animation/timeline/booking.js.map +1 -0
  50. package/dist/animation/timeline/createTimeline.js +116 -0
  51. package/dist/animation/timeline/createTimeline.js.map +1 -0
  52. package/dist/animation/timeline/sampleTrack.js +29 -0
  53. package/dist/animation/timeline/sampleTrack.js.map +1 -0
  54. package/dist/animation/useAnimator.js +329 -0
  55. package/dist/animation/useAnimator.js.map +1 -0
  56. package/dist/animation/wrappers/animateLifecycle.js +40 -0
  57. package/dist/animation/wrappers/animateLifecycle.js.map +1 -0
  58. package/dist/animation/wrappers/animateOnSetPose.js +44 -0
  59. package/dist/animation/wrappers/animateOnSetPose.js.map +1 -0
  60. package/dist/{autoPoseDescriptor-_XOyF7t4.d.ts → autoPoseDescriptor-vCdt55xm.d.ts} +2 -2
  61. package/dist/{builtins-DLn2lCr_.d.ts → builtins-C-gRyVRx.d.ts} +742 -513
  62. package/dist/canvas/Canvas.js +608 -0
  63. package/dist/canvas/Canvas.js.map +1 -0
  64. package/dist/canvas/CanvasView.js +255 -0
  65. package/dist/canvas/CanvasView.js.map +1 -0
  66. package/dist/canvas/CursorCoordsHud.js +102 -0
  67. package/dist/canvas/CursorCoordsHud.js.map +1 -0
  68. package/dist/canvas/DrawCanvas.js +67 -0
  69. package/dist/canvas/DrawCanvas.js.map +1 -0
  70. package/dist/canvas/MinimapCanvas.js +139 -0
  71. package/dist/canvas/MinimapCanvas.js.map +1 -0
  72. package/dist/canvas/ModalityHud.js +66 -0
  73. package/dist/canvas/ModalityHud.js.map +1 -0
  74. package/dist/canvas/NodeShape.js +391 -0
  75. package/dist/canvas/NodeShape.js.map +1 -0
  76. package/dist/canvas/PickHud.js +93 -0
  77. package/dist/canvas/PickHud.js.map +1 -0
  78. package/dist/canvas/SceneCanvas/ActionsProviderIfRoot.js +10 -0
  79. package/dist/canvas/SceneCanvas/ActionsProviderIfRoot.js.map +1 -0
  80. package/dist/canvas/SceneCanvas/DepRegistryProviderIfRoot.js +10 -0
  81. package/dist/canvas/SceneCanvas/DepRegistryProviderIfRoot.js.map +1 -0
  82. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +51 -0
  83. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js.map +1 -0
  84. package/dist/canvas/SceneCanvas/contributionFrameHooks.js +42 -0
  85. package/dist/canvas/SceneCanvas/contributionFrameHooks.js.map +1 -0
  86. package/dist/canvas/SceneCanvas/defaultNodeProperties.js +549 -0
  87. package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -0
  88. package/dist/canvas/SceneCanvas/defaultNodeRouting.js +26 -0
  89. package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -0
  90. package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js +69 -0
  91. package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js.map +1 -0
  92. package/dist/canvas/SceneCanvas/features.js +97 -0
  93. package/dist/canvas/SceneCanvas/features.js.map +1 -0
  94. package/dist/canvas/SceneCanvas/poseGeometry.js +46 -0
  95. package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -0
  96. package/dist/canvas/SceneCanvas/useActionsPropResolver.js +48 -0
  97. package/dist/canvas/SceneCanvas/useActionsPropResolver.js.map +1 -0
  98. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js +70 -0
  99. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js.map +1 -0
  100. package/dist/canvas/SceneCanvas/useContributionRoles.js +75 -0
  101. package/dist/canvas/SceneCanvas/useContributionRoles.js.map +1 -0
  102. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js +172 -0
  103. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js.map +1 -0
  104. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +69 -0
  105. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js.map +1 -0
  106. package/dist/canvas/SceneCanvas/useSceneSelectTool.js +127 -0
  107. package/dist/canvas/SceneCanvas/useSceneSelectTool.js.map +1 -0
  108. package/dist/canvas/SceneCanvas/useViewportActions.js +30 -0
  109. package/dist/canvas/SceneCanvas/useViewportActions.js.map +1 -0
  110. package/dist/canvas/SceneCanvas.js +992 -0
  111. package/dist/canvas/SceneCanvas.js.map +1 -0
  112. package/dist/canvas/SceneViewCanvas.js +54 -0
  113. package/dist/canvas/SceneViewCanvas.js.map +1 -0
  114. package/dist/canvas/accentColor.js +9 -0
  115. package/dist/canvas/accentColor.js.map +1 -0
  116. package/dist/canvas/affordanceAt.js +63 -0
  117. package/dist/canvas/affordanceAt.js.map +1 -0
  118. package/dist/canvas/buildSceneTree.js +65 -0
  119. package/dist/canvas/buildSceneTree.js.map +1 -0
  120. package/dist/canvas/canvasRenderer.js +89 -0
  121. package/dist/canvas/canvasRenderer.js.map +1 -0
  122. package/dist/canvas/colorOverrides.js +16 -0
  123. package/dist/canvas/colorOverrides.js.map +1 -0
  124. package/dist/canvas/defaultDrawOne.js +43 -0
  125. package/dist/canvas/defaultDrawOne.js.map +1 -0
  126. package/dist/canvas/deps/areaSelect.js +19 -0
  127. package/dist/canvas/deps/areaSelect.js.map +1 -0
  128. package/dist/canvas/deps/debug.js +9 -0
  129. package/dist/canvas/deps/debug.js.map +1 -0
  130. package/dist/canvas/deps/dispatcher.js +11 -0
  131. package/dist/canvas/deps/dispatcher.js.map +1 -0
  132. package/dist/canvas/deps/editAnchors.js +101 -0
  133. package/dist/canvas/deps/editAnchors.js.map +1 -0
  134. package/dist/canvas/deps/geometryProjection.js +11 -0
  135. package/dist/canvas/deps/geometryProjection.js.map +1 -0
  136. package/dist/canvas/deps/hitTestArea.js +51 -0
  137. package/dist/canvas/deps/hitTestArea.js.map +1 -0
  138. package/dist/canvas/deps/ingestion.js +31 -0
  139. package/dist/canvas/deps/ingestion.js.map +1 -0
  140. package/dist/canvas/deps/insert.js +116 -0
  141. package/dist/canvas/deps/insert.js.map +1 -0
  142. package/dist/canvas/deps/lassoSelect.js +20 -0
  143. package/dist/canvas/deps/lassoSelect.js.map +1 -0
  144. package/dist/canvas/deps/layout.js +34 -0
  145. package/dist/canvas/deps/layout.js.map +1 -0
  146. package/dist/canvas/deps/nodeAtPoint.js +19 -0
  147. package/dist/canvas/deps/nodeAtPoint.js.map +1 -0
  148. package/dist/canvas/deps/poseComposition.js +11 -0
  149. package/dist/canvas/deps/poseComposition.js.map +1 -0
  150. package/dist/canvas/deps/poseDescriptor.js +12 -0
  151. package/dist/canvas/deps/poseDescriptor.js.map +1 -0
  152. package/dist/canvas/deps/resizePolicy.js +35 -0
  153. package/dist/canvas/deps/resizePolicy.js.map +1 -0
  154. package/dist/canvas/deps/slice.js +99 -0
  155. package/dist/canvas/deps/slice.js.map +1 -0
  156. package/dist/canvas/deps/snap.js +11 -0
  157. package/dist/canvas/deps/snap.js.map +1 -0
  158. package/dist/canvas/deps/textEdit.js +21 -0
  159. package/dist/canvas/deps/textEdit.js.map +1 -0
  160. package/dist/canvas/deps/view.js +43 -0
  161. package/dist/canvas/deps/view.js.map +1 -0
  162. package/dist/canvas/derivedPath.js +47 -0
  163. package/dist/canvas/derivedPath.js.map +1 -0
  164. package/dist/canvas/drawEnvelope.js +22 -0
  165. package/dist/canvas/drawEnvelope.js.map +1 -0
  166. package/dist/canvas/getNodeAtPoint.js +18 -0
  167. package/dist/canvas/getNodeAtPoint.js.map +1 -0
  168. package/dist/canvas/hostAnchor.js +29 -0
  169. package/dist/canvas/hostAnchor.js.map +1 -0
  170. package/dist/canvas/hud.module.js +18 -0
  171. package/dist/canvas/hud.module.js.map +1 -0
  172. package/dist/canvas/insertPreviewExtent.js +103 -0
  173. package/dist/canvas/insertPreviewExtent.js.map +1 -0
  174. package/dist/canvas/kitRequirements.js +177 -0
  175. package/dist/canvas/kitRequirements.js.map +1 -0
  176. package/dist/canvas/layerOrder.js +66 -0
  177. package/dist/canvas/layerOrder.js.map +1 -0
  178. package/dist/canvas/layerSlots.js +14 -0
  179. package/dist/canvas/layerSlots.js.map +1 -0
  180. package/dist/canvas/minimapMath.js +80 -0
  181. package/dist/canvas/minimapMath.js.map +1 -0
  182. package/dist/canvas/mountedCanvases.js +20 -0
  183. package/dist/canvas/mountedCanvases.js.map +1 -0
  184. package/dist/canvas/overlayRoleStrokes.js +17 -0
  185. package/dist/canvas/overlayRoleStrokes.js.map +1 -0
  186. package/dist/canvas/paintCull.js +20 -0
  187. package/dist/canvas/paintCull.js.map +1 -0
  188. package/dist/canvas/pickWalk.js +158 -0
  189. package/dist/canvas/pickWalk.js.map +1 -0
  190. package/dist/canvas/planeClips.js +30 -0
  191. package/dist/canvas/planeClips.js.map +1 -0
  192. package/dist/canvas/poseRotation.js +35 -0
  193. package/dist/canvas/poseRotation.js.map +1 -0
  194. package/dist/canvas/rasterToPng.js +21 -0
  195. package/dist/canvas/rasterToPng.js.map +1 -0
  196. package/dist/canvas/renderDebugSnapshot.js +32 -0
  197. package/dist/canvas/renderDebugSnapshot.js.map +1 -0
  198. package/dist/canvas/renderNeeds.js +25 -0
  199. package/dist/canvas/renderNeeds.js.map +1 -0
  200. package/dist/canvas/renderSceneToPixels.js +143 -0
  201. package/dist/canvas/renderSceneToPixels.js.map +1 -0
  202. package/dist/canvas/sceneAdapter.js +270 -0
  203. package/dist/canvas/sceneAdapter.js.map +1 -0
  204. package/dist/canvas/sceneLayerPaint.js +37 -0
  205. package/dist/canvas/sceneLayerPaint.js.map +1 -0
  206. package/dist/canvas/sceneSlotWiring.js +20 -0
  207. package/dist/canvas/sceneSlotWiring.js.map +1 -0
  208. package/dist/canvas/sceneViewRender.js +72 -0
  209. package/dist/canvas/sceneViewRender.js.map +1 -0
  210. package/dist/canvas/slopsDebugLayer.js +61 -0
  211. package/dist/canvas/slopsDebugLayer.js.map +1 -0
  212. package/dist/canvas/surfaceContribution.js +15 -0
  213. package/dist/canvas/surfaceContribution.js.map +1 -0
  214. package/dist/canvas/toolPreview.js +39 -0
  215. package/dist/canvas/toolPreview.js.map +1 -0
  216. package/dist/canvas/useCanvasRenderer.js +11 -0
  217. package/dist/canvas/useCanvasRenderer.js.map +1 -0
  218. package/dist/canvas/useFrameLoop.js +60 -0
  219. package/dist/canvas/useFrameLoop.js.map +1 -0
  220. package/dist/canvas/useHostAnchor.js +71 -0
  221. package/dist/canvas/useHostAnchor.js.map +1 -0
  222. package/dist/canvas/useLateContentRedraw.js +21 -0
  223. package/dist/canvas/useLateContentRedraw.js.map +1 -0
  224. package/dist/canvas/useRedrawOn.js +21 -0
  225. package/dist/canvas/useRedrawOn.js.map +1 -0
  226. package/dist/canvas/useViewHelpers.js +120 -0
  227. package/dist/canvas/useViewHelpers.js.map +1 -0
  228. package/dist/canvas/viewInputs.js +17 -0
  229. package/dist/canvas/viewInputs.js.map +1 -0
  230. package/dist/canvas/viewRegistry.js +61 -0
  231. package/dist/canvas/viewRegistry.js.map +1 -0
  232. package/dist/canvas/wrapNodeOutput.js +14 -0
  233. package/dist/canvas/wrapNodeOutput.js.map +1 -0
  234. package/dist/clipboard.d.ts +10 -5
  235. package/dist/clipboard.js +3 -5
  236. package/dist/clone.d.ts +3 -3
  237. package/dist/clone.js +2 -5
  238. package/dist/core/adapters/arrayAdapter.js +85 -0
  239. package/dist/core/adapters/arrayAdapter.js.map +1 -0
  240. package/dist/core/adapters/useArrayAdapter.js +13 -0
  241. package/dist/core/adapters/useArrayAdapter.js.map +1 -0
  242. package/dist/core/applyOps.js +12 -0
  243. package/dist/core/applyOps.js.map +1 -0
  244. package/dist/core/device/index.js +4 -0
  245. package/dist/core/device/targets.js +17 -0
  246. package/dist/core/device/targets.js.map +1 -0
  247. package/dist/core/device/useDeviceProfile.js +75 -0
  248. package/dist/core/device/useDeviceProfile.js.map +1 -0
  249. package/dist/core/fillInPoseFrame.js +102 -0
  250. package/dist/core/fillInPoseFrame.js.map +1 -0
  251. package/dist/core/geometry/poseDescriptor.js +93 -0
  252. package/dist/core/geometry/poseDescriptor.js.map +1 -0
  253. package/dist/core/geometry/poseRotation.js +58 -0
  254. package/dist/core/geometry/poseRotation.js.map +1 -0
  255. package/dist/core/geometry/regionHit.js +102 -0
  256. package/dist/core/geometry/regionHit.js.map +1 -0
  257. package/dist/core/geometry/unionBounds.js +60 -0
  258. package/dist/core/geometry/unionBounds.js.map +1 -0
  259. package/dist/core/gradient.js +136 -0
  260. package/dist/core/gradient.js.map +1 -0
  261. package/dist/core/isPlainObject.js +11 -0
  262. package/dist/core/isPlainObject.js.map +1 -0
  263. package/dist/core/layers/render.js +150 -0
  264. package/dist/core/layers/render.js.map +1 -0
  265. package/dist/core/markerInset.js +24 -0
  266. package/dist/core/markerInset.js.map +1 -0
  267. package/dist/core/mixed.js +6 -0
  268. package/dist/core/mixed.js.map +1 -0
  269. package/dist/core/ops/arrange.js +31 -0
  270. package/dist/core/ops/arrange.js.map +1 -0
  271. package/dist/core/ops/create.js +32 -0
  272. package/dist/core/ops/create.js.map +1 -0
  273. package/dist/core/ops/createHistory.js +20 -0
  274. package/dist/core/ops/createHistory.js.map +1 -0
  275. package/dist/core/ops/delete.js +89 -0
  276. package/dist/core/ops/delete.js.map +1 -0
  277. package/dist/core/ops/registry.js +17 -0
  278. package/dist/core/ops/registry.js.map +1 -0
  279. package/dist/core/ops/reorder/algorithms.js +55 -0
  280. package/dist/core/ops/reorder/algorithms.js.map +1 -0
  281. package/dist/core/ops/reorder/index.js +140 -0
  282. package/dist/core/ops/reorder/index.js.map +1 -0
  283. package/dist/core/ops/reparent.js +52 -0
  284. package/dist/core/ops/reparent.js.map +1 -0
  285. package/dist/core/ops/select.js +34 -0
  286. package/dist/core/ops/select.js.map +1 -0
  287. package/dist/core/ops/setData.js +34 -0
  288. package/dist/core/ops/setData.js.map +1 -0
  289. package/dist/core/ops/setLayer.js +34 -0
  290. package/dist/core/ops/setLayer.js.map +1 -0
  291. package/dist/core/ops/setLayout.js +31 -0
  292. package/dist/core/ops/setLayout.js.map +1 -0
  293. package/dist/core/ops/setPath.js +57 -0
  294. package/dist/core/ops/setPath.js.map +1 -0
  295. package/dist/core/ops/setText.js +34 -0
  296. package/dist/core/ops/setText.js.map +1 -0
  297. package/dist/core/ops/slot.js +37 -0
  298. package/dist/core/ops/slot.js.map +1 -0
  299. package/dist/core/ops/transform.js +42 -0
  300. package/dist/core/ops/transform.js.map +1 -0
  301. package/dist/core/paintKinds.js +156 -0
  302. package/dist/core/paintKinds.js.map +1 -0
  303. package/dist/core/scene/NodeProperties.js +20 -0
  304. package/dist/core/scene/NodeProperties.js.map +1 -0
  305. package/dist/core/scene/NodeRouting.js +24 -0
  306. package/dist/core/scene/NodeRouting.js.map +1 -0
  307. package/dist/core/scene/arrivals.js +12 -0
  308. package/dist/core/scene/arrivals.js.map +1 -0
  309. package/dist/core/scene/composeFrame.js +29 -0
  310. package/dist/core/scene/composeFrame.js.map +1 -0
  311. package/dist/core/scene/depMemo.js +18 -0
  312. package/dist/core/scene/depMemo.js.map +1 -0
  313. package/dist/core/scene/dependents.js +66 -0
  314. package/dist/core/scene/dependents.js.map +1 -0
  315. package/dist/core/scene/derivedPath.js +31 -0
  316. package/dist/core/scene/derivedPath.js.map +1 -0
  317. package/dist/core/scene/effectivePose.js +78 -0
  318. package/dist/core/scene/effectivePose.js.map +1 -0
  319. package/dist/core/scene/kitRegistry.js +33 -0
  320. package/dist/core/scene/kitRegistry.js.map +1 -0
  321. package/dist/core/scene/layoutPass.js +96 -0
  322. package/dist/core/scene/layoutPass.js.map +1 -0
  323. package/dist/core/scene/nodeFnFields.js +83 -0
  324. package/dist/core/scene/nodeFnFields.js.map +1 -0
  325. package/dist/core/scene/nodeMemo.js +28 -0
  326. package/dist/core/scene/nodeMemo.js.map +1 -0
  327. package/dist/core/scene/poseFeed.js +87 -0
  328. package/dist/core/scene/poseFeed.js.map +1 -0
  329. package/dist/core/scene/poseOverrides.js +52 -0
  330. package/dist/core/scene/poseOverrides.js.map +1 -0
  331. package/dist/core/scene/poseSnapshot.js +54 -0
  332. package/dist/core/scene/poseSnapshot.js.map +1 -0
  333. package/dist/core/scene/scene.js +1271 -0
  334. package/dist/core/scene/scene.js.map +1 -0
  335. package/dist/core/scene/types.js +6 -0
  336. package/dist/core/scene/types.js.map +1 -0
  337. package/dist/core/scene/useScene.js +32 -0
  338. package/dist/core/scene/useScene.js.map +1 -0
  339. package/dist/core/selection/chromeState.js +31 -0
  340. package/dist/core/selection/chromeState.js.map +1 -0
  341. package/dist/core/selection/selectionTarget.js +6 -0
  342. package/dist/core/selection/selectionTarget.js.map +1 -0
  343. package/dist/core/selection/useSelection.js +71 -0
  344. package/dist/core/selection/useSelection.js.map +1 -0
  345. package/dist/core/shapeKinds.js +54 -0
  346. package/dist/core/shapeKinds.js.map +1 -0
  347. package/dist/core/strokeMarkerShapes.js +139 -0
  348. package/dist/core/strokeMarkerShapes.js.map +1 -0
  349. package/dist/core/strokeMarkers.js +28 -0
  350. package/dist/core/strokeMarkers.js.map +1 -0
  351. package/dist/core/stylus/stylus.js +39 -0
  352. package/dist/core/stylus/stylus.js.map +1 -0
  353. package/dist/core/stylus/usePointerStylus.js +51 -0
  354. package/dist/core/stylus/usePointerStylus.js.map +1 -0
  355. package/dist/core/usePaintKinds.js +17 -0
  356. package/dist/core/usePaintKinds.js.map +1 -0
  357. package/dist/core/viewport/clampView.js +24 -0
  358. package/dist/core/viewport/clampView.js.map +1 -0
  359. package/dist/core/viewport/clientToWorld.js +8 -0
  360. package/dist/core/viewport/clientToWorld.js.map +1 -0
  361. package/dist/core/viewport/createVelocityTracker.js +39 -0
  362. package/dist/core/viewport/createVelocityTracker.js.map +1 -0
  363. package/dist/core/viewport/fitToBounds.js +18 -0
  364. package/dist/core/viewport/fitToBounds.js.map +1 -0
  365. package/dist/core/viewport/fitViewToBounds.js +36 -0
  366. package/dist/core/viewport/fitViewToBounds.js.map +1 -0
  367. package/dist/core/viewport/interpolateView.js +34 -0
  368. package/dist/core/viewport/interpolateView.js.map +1 -0
  369. package/dist/core/viewport/meanScale.js +8 -0
  370. package/dist/core/viewport/meanScale.js.map +1 -0
  371. package/dist/core/viewport/parallax.js +111 -0
  372. package/dist/core/viewport/parallax.js.map +1 -0
  373. package/dist/core/viewport/pxExtent.js +42 -0
  374. package/dist/core/viewport/pxExtent.js.map +1 -0
  375. package/dist/core/viewport/sceneNodeClientRect.js +18 -0
  376. package/dist/core/viewport/sceneNodeClientRect.js.map +1 -0
  377. package/dist/core/viewport/screenSlop.js +27 -0
  378. package/dist/core/viewport/screenSlop.js.map +1 -0
  379. package/dist/core/viewport/useAutoCenter.js +32 -0
  380. package/dist/core/viewport/useAutoCenter.js.map +1 -0
  381. package/dist/core/viewport/useCanvasSize.js +29 -0
  382. package/dist/core/viewport/useCanvasSize.js.map +1 -0
  383. package/dist/core/viewport/useDecayLoop.js +63 -0
  384. package/dist/core/viewport/useDecayLoop.js.map +1 -0
  385. package/dist/core/viewport/useVelocityTracker.js +10 -0
  386. package/dist/core/viewport/useVelocityTracker.js.map +1 -0
  387. package/dist/core/viewport/useViewAnimation.js +63 -0
  388. package/dist/core/viewport/useViewAnimation.js.map +1 -0
  389. package/dist/core/viewport/view.js +37 -0
  390. package/dist/core/viewport/view.js.map +1 -0
  391. package/dist/core/viewport/viewTransform.js +11 -0
  392. package/dist/core/viewport/viewTransform.js.map +1 -0
  393. package/dist/core/viewport/viewportWorldRect.js +13 -0
  394. package/dist/core/viewport/viewportWorldRect.js.map +1 -0
  395. package/dist/core/viewport/wheelHandler.js +30 -0
  396. package/dist/core/viewport/wheelHandler.js.map +1 -0
  397. package/dist/core/viewport/zoomAt.js +22 -0
  398. package/dist/core/viewport/zoomAt.js.map +1 -0
  399. package/dist/core/viewport/zoomBounds.js +20 -0
  400. package/dist/core/viewport/zoomBounds.js.map +1 -0
  401. package/dist/{pointSnapToGrid-Dp2IxLGb.d.ts → cornerHandles-BCrDp_mH.d.ts} +3 -13
  402. package/dist/debug/createDebugOverlayLayer.js +358 -0
  403. package/dist/debug/createDebugOverlayLayer.js.map +1 -0
  404. package/dist/debug/createDebugSink.js +83 -0
  405. package/dist/debug/createDebugSink.js.map +1 -0
  406. package/dist/debug/defaultTheme.js +31 -0
  407. package/dist/debug/defaultTheme.js.map +1 -0
  408. package/dist/debug/flag.js +41 -0
  409. package/dist/debug/flag.js.map +1 -0
  410. package/dist/debug/frameStats.js +16 -0
  411. package/dist/debug/frameStats.js.map +1 -0
  412. package/dist/debug/parseDebugFlags.js +32 -0
  413. package/dist/debug/parseDebugFlags.js.map +1 -0
  414. package/dist/features/chrome-caps/buildChromeCtx.js +16 -0
  415. package/dist/features/chrome-caps/buildChromeCtx.js.map +1 -0
  416. package/dist/features/chrome-caps/conditions.js +36 -0
  417. package/dist/features/chrome-caps/conditions.js.map +1 -0
  418. package/dist/features/chrome-caps/defaults.js +26 -0
  419. package/dist/features/chrome-caps/defaults.js.map +1 -0
  420. package/dist/features/chrome-caps/index.js +7 -0
  421. package/dist/features/chrome-caps/resolve.js +23 -0
  422. package/dist/features/chrome-caps/resolve.js.map +1 -0
  423. package/dist/features/chrome-caps/useHoverTracking.js +27 -0
  424. package/dist/features/chrome-caps/useHoverTracking.js.map +1 -0
  425. package/dist/features/cursor/paintedCursorLayer.js +60 -0
  426. package/dist/features/cursor/paintedCursorLayer.js.map +1 -0
  427. package/dist/features/focus/gateLayer.js +14 -0
  428. package/dist/features/focus/gateLayer.js.map +1 -0
  429. package/dist/features/focus/useCanvasFocus.js +29 -0
  430. package/dist/features/focus/useCanvasFocus.js.map +1 -0
  431. package/dist/features/groups/children.js +23 -0
  432. package/dist/features/groups/children.js.map +1 -0
  433. package/dist/features/groups/composePose.js +67 -0
  434. package/dist/features/groups/composePose.js.map +1 -0
  435. package/dist/features/groups/nestedHit.js +40 -0
  436. package/dist/features/groups/nestedHit.js.map +1 -0
  437. package/dist/features/groups/unionOfChildren.js +15 -0
  438. package/dist/features/groups/unionOfChildren.js.map +1 -0
  439. package/dist/features/images/imageCache.js +94 -0
  440. package/dist/features/images/imageCache.js.map +1 -0
  441. package/dist/features/ingestion/contentHandlers.js +37 -0
  442. package/dist/features/ingestion/contentHandlers.js.map +1 -0
  443. package/dist/features/ingestion/imageHandler.js +45 -0
  444. package/dist/features/ingestion/imageHandler.js.map +1 -0
  445. package/dist/features/ingestion/index.js +8 -0
  446. package/dist/features/ingestion/openFilePicker.js +15 -0
  447. package/dist/features/ingestion/openFilePicker.js.map +1 -0
  448. package/dist/features/ingestion/registerKitHandlers.js +26 -0
  449. package/dist/features/ingestion/registerKitHandlers.js.map +1 -0
  450. package/dist/features/ingestion/svgHandler.js +58 -0
  451. package/dist/features/ingestion/svgHandler.js.map +1 -0
  452. package/dist/features/ingestion/weaselJsonHandler.js +39 -0
  453. package/dist/features/ingestion/weaselJsonHandler.js.map +1 -0
  454. package/dist/features/longPress/longPressFeedback.js +96 -0
  455. package/dist/features/longPress/longPressFeedback.js.map +1 -0
  456. package/dist/features/meshPaint/bake.js +79 -0
  457. package/dist/features/meshPaint/bake.js.map +1 -0
  458. package/dist/features/meshPaint/bakeCache.js +59 -0
  459. package/dist/features/meshPaint/bakeCache.js.map +1 -0
  460. package/dist/features/meshPaint/handles.js +86 -0
  461. package/dist/features/meshPaint/handles.js.map +1 -0
  462. package/dist/features/meshPaint/lazyKind.js +1298 -0
  463. package/dist/features/meshPaint/lazyKind.js.map +1 -0
  464. package/dist/features/meshPaint/meshPaint.js +236 -0
  465. package/dist/features/meshPaint/meshPaint.js.map +1 -0
  466. package/dist/features/meshPaint/meshShader.js +6 -0
  467. package/dist/features/meshPaint/meshShader.js.map +1 -0
  468. package/dist/features/meshPaint/register.js +7 -0
  469. package/dist/features/meshPaint/register.js.map +1 -0
  470. package/dist/features/meshPaint/surface.js +110 -0
  471. package/dist/features/meshPaint/surface.js.map +1 -0
  472. package/dist/features/minimap/actions.js +53 -0
  473. package/dist/features/minimap/actions.js.map +1 -0
  474. package/dist/features/minimap/createMinimapContribution.js +96 -0
  475. package/dist/features/minimap/createMinimapContribution.js.map +1 -0
  476. package/dist/features/minimap/layers.js +103 -0
  477. package/dist/features/minimap/layers.js.map +1 -0
  478. package/dist/features/modes/modeLayers.js +113 -0
  479. package/dist/features/modes/modeLayers.js.map +1 -0
  480. package/dist/features/overlays/useNodeOverlayFrame.js +103 -0
  481. package/dist/features/overlays/useNodeOverlayFrame.js.map +1 -0
  482. package/dist/features/parallax/createParallaxLayer.js +26 -0
  483. package/dist/features/parallax/createParallaxLayer.js.map +1 -0
  484. package/dist/features/parallax/createParallaxPlane.js +26 -0
  485. package/dist/features/parallax/createParallaxPlane.js.map +1 -0
  486. package/dist/features/paths/anchorEdits.js +156 -0
  487. package/dist/features/paths/anchorEdits.js.map +1 -0
  488. package/dist/features/paths/anchors.js +154 -0
  489. package/dist/features/paths/anchors.js.map +1 -0
  490. package/dist/features/paths/booleans.js +2 -0
  491. package/dist/features/paths/index.js +15 -0
  492. package/dist/features/paths/markerCommands.js +116 -0
  493. package/dist/features/paths/markerCommands.js.map +1 -0
  494. package/dist/features/paths/markerSites.js +59 -0
  495. package/dist/features/paths/markerSites.js.map +1 -0
  496. package/dist/features/paths/markers.js +95 -0
  497. package/dist/features/paths/markers.js.map +1 -0
  498. package/dist/features/paths/nearestAnchor.js +36 -0
  499. package/dist/features/paths/nearestAnchor.js.map +1 -0
  500. package/dist/features/paths/originProjection.js +16 -0
  501. package/dist/features/paths/originProjection.js.map +1 -0
  502. package/dist/features/paths/pathEditingOverlayLayer.js +137 -0
  503. package/dist/features/paths/pathEditingOverlayLayer.js.map +1 -0
  504. package/dist/features/paths/pathInWorld.js +41 -0
  505. package/dist/features/paths/pathInWorld.js.map +1 -0
  506. package/dist/features/paths/pathLayer.js +44 -0
  507. package/dist/features/paths/pathLayer.js.map +1 -0
  508. package/dist/features/paths/penPreviewLayer.js +220 -0
  509. package/dist/features/paths/penPreviewLayer.js.map +1 -0
  510. package/dist/features/paths/poseDescriptor.js +39 -0
  511. package/dist/features/paths/poseDescriptor.js.map +1 -0
  512. package/dist/features/paths/tessellate/stroke.js +230 -0
  513. package/dist/features/paths/tessellate/stroke.js.map +1 -0
  514. package/dist/features/patterns/index.js +23 -0
  515. package/dist/features/patterns/index.js.map +1 -0
  516. package/dist/features/patterns/patterns-builtin.js +38 -0
  517. package/dist/features/patterns/patterns-builtin.js.map +1 -0
  518. package/dist/features/patterns/resolveSpec.js +57 -0
  519. package/dist/features/patterns/resolveSpec.js.map +1 -0
  520. package/dist/features/patterns/tileGeometry.js +158 -0
  521. package/dist/features/patterns/tileGeometry.js.map +1 -0
  522. package/dist/features/pointer/PointerContext.js +45 -0
  523. package/dist/features/pointer/PointerContext.js.map +1 -0
  524. package/dist/features/poseRun/usePoseRun.js +70 -0
  525. package/dist/features/poseRun/usePoseRun.js.map +1 -0
  526. package/dist/features/selection/SelectionContext.js +46 -0
  527. package/dist/features/selection/SelectionContext.js.map +1 -0
  528. package/dist/features/selection/overlay.js +442 -0
  529. package/dist/features/selection/overlay.js.map +1 -0
  530. package/dist/features/simulation/createSimulation.js +61 -0
  531. package/dist/features/simulation/createSimulation.js.map +1 -0
  532. package/dist/features/simulation/types.js +6 -0
  533. package/dist/features/simulation/types.js.map +1 -0
  534. package/dist/features/simulation/useSimulation.js +74 -0
  535. package/dist/features/simulation/useSimulation.js.map +1 -0
  536. package/dist/features/text/domRuns.js +258 -0
  537. package/dist/features/text/domRuns.js.map +1 -0
  538. package/dist/features/text/fitTextPose.js +38 -0
  539. package/dist/features/text/fitTextPose.js.map +1 -0
  540. package/dist/features/text/hitTest.js +45 -0
  541. package/dist/features/text/hitTest.js.map +1 -0
  542. package/dist/features/text/renderLabel.js +14 -0
  543. package/dist/features/text/renderLabel.js.map +1 -0
  544. package/dist/features/text/runs/effectiveRangeStyle.js +66 -0
  545. package/dist/features/text/runs/effectiveRangeStyle.js.map +1 -0
  546. package/dist/features/text/runs/flagRange.js +53 -0
  547. package/dist/features/text/runs/flagRange.js.map +1 -0
  548. package/dist/features/text/runs/rangeStyle.js +135 -0
  549. package/dist/features/text/runs/rangeStyle.js.map +1 -0
  550. package/dist/features/text/textCommand.js +59 -0
  551. package/dist/features/text/textCommand.js.map +1 -0
  552. package/dist/features/text/textLayer.js +35 -0
  553. package/dist/features/text/textLayer.js.map +1 -0
  554. package/dist/features/text/textToPath.js +181 -0
  555. package/dist/features/text/textToPath.js.map +1 -0
  556. package/dist/features/text/useSceneTextEdit.js +138 -0
  557. package/dist/features/text/useSceneTextEdit.js.map +1 -0
  558. package/dist/features/text/useTextEdit.js +465 -0
  559. package/dist/features/text/useTextEdit.js.map +1 -0
  560. package/dist/features/tiling/createTiledLayer.js +63 -0
  561. package/dist/features/tiling/createTiledLayer.js.map +1 -0
  562. package/dist/features/tiling/tiledProject.js +14 -0
  563. package/dist/features/tiling/tiledProject.js.map +1 -0
  564. package/dist/features/viewports/viewResolver.js +59 -0
  565. package/dist/features/viewports/viewResolver.js.map +1 -0
  566. package/dist/features/viewports/viewportLayer.js +58 -0
  567. package/dist/features/viewports/viewportLayer.js.map +1 -0
  568. package/dist/icons/ArrowIcon.js +23 -0
  569. package/dist/icons/ArrowIcon.js.map +1 -0
  570. package/dist/icons/EllipseIcon.js +21 -0
  571. package/dist/icons/EllipseIcon.js.map +1 -0
  572. package/dist/icons/EyedropperIcon.js +49 -0
  573. package/dist/icons/EyedropperIcon.js.map +1 -0
  574. package/dist/icons/HandIcon.js +59 -0
  575. package/dist/icons/HandIcon.js.map +1 -0
  576. package/dist/icons/ImageIcon.js +34 -0
  577. package/dist/icons/ImageIcon.js.map +1 -0
  578. package/dist/icons/LassoIcon.js +22 -0
  579. package/dist/icons/LassoIcon.js.map +1 -0
  580. package/dist/icons/LineIcon.js +22 -0
  581. package/dist/icons/LineIcon.js.map +1 -0
  582. package/dist/icons/PenIcon.js +36 -0
  583. package/dist/icons/PenIcon.js.map +1 -0
  584. package/dist/icons/PencilIcon.js +25 -0
  585. package/dist/icons/PencilIcon.js.map +1 -0
  586. package/dist/icons/PolygonIcon.js +19 -0
  587. package/dist/icons/PolygonIcon.js.map +1 -0
  588. package/dist/icons/RectIcon.js +37 -0
  589. package/dist/icons/RectIcon.js.map +1 -0
  590. package/dist/icons/SelectIcon.js +20 -0
  591. package/dist/icons/SelectIcon.js.map +1 -0
  592. package/dist/icons/StarIcon.js +19 -0
  593. package/dist/icons/StarIcon.js.map +1 -0
  594. package/dist/icons/TextIcon.js +19 -0
  595. package/dist/icons/TextIcon.js.map +1 -0
  596. package/dist/icons/UnknownIcon.js +33 -0
  597. package/dist/icons/UnknownIcon.js.map +1 -0
  598. package/dist/icons/_base.js +12 -0
  599. package/dist/icons/_base.js.map +1 -0
  600. package/dist/index.d.ts +1960 -1891
  601. package/dist/index.js +312 -13
  602. package/dist/input/keyState.js +76 -0
  603. package/dist/input/keyState.js.map +1 -0
  604. package/dist/input/useKeyState.js +22 -0
  605. package/dist/input/useKeyState.js.map +1 -0
  606. package/dist/interactions/actions/actionShortcuts.js +32 -0
  607. package/dist/interactions/actions/actionShortcuts.js.map +1 -0
  608. package/dist/interactions/actions/align/align.js +81 -0
  609. package/dist/interactions/actions/align/align.js.map +1 -0
  610. package/dist/interactions/actions/booleans/booleans.js +120 -0
  611. package/dist/interactions/actions/booleans/booleans.js.map +1 -0
  612. package/dist/interactions/actions/booleans/useBooleans.js +20 -0
  613. package/dist/interactions/actions/booleans/useBooleans.js.map +1 -0
  614. package/dist/interactions/actions/booleans/useBooleansAdapter.js +9 -0
  615. package/dist/interactions/actions/booleans/useBooleansAdapter.js.map +1 -0
  616. package/dist/interactions/actions/clipboard/clipboardOps.js +94 -0
  617. package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -0
  618. package/dist/interactions/actions/clipboard/materializePaste.js +25 -0
  619. package/dist/interactions/actions/clipboard/materializePaste.js.map +1 -0
  620. package/dist/interactions/actions/clipboard/wireFormat.js +43 -0
  621. package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -0
  622. package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js +26 -0
  623. package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js.map +1 -0
  624. package/dist/interactions/actions/defaultCommitAdapter.js +42 -0
  625. package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -0
  626. package/dist/interactions/actions/defaults/align.js +71 -0
  627. package/dist/interactions/actions/defaults/align.js.map +1 -0
  628. package/dist/interactions/actions/defaults/anchorEditing.js +235 -0
  629. package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -0
  630. package/dist/interactions/actions/defaults/areaSelect.js +75 -0
  631. package/dist/interactions/actions/defaults/areaSelect.js.map +1 -0
  632. package/dist/interactions/actions/defaults/booleans.js +52 -0
  633. package/dist/interactions/actions/defaults/booleans.js.map +1 -0
  634. package/dist/interactions/actions/defaults/cancelGesture.js +24 -0
  635. package/dist/interactions/actions/defaults/cancelGesture.js.map +1 -0
  636. package/dist/interactions/actions/defaults/clearSelection.js +19 -0
  637. package/dist/interactions/actions/defaults/clearSelection.js.map +1 -0
  638. package/dist/interactions/actions/defaults/clipboard.js +78 -0
  639. package/dist/interactions/actions/defaults/clipboard.js.map +1 -0
  640. package/dist/interactions/actions/defaults/clone.js +107 -0
  641. package/dist/interactions/actions/defaults/clone.js.map +1 -0
  642. package/dist/interactions/actions/defaults/createOutlines.js +47 -0
  643. package/dist/interactions/actions/defaults/createOutlines.js.map +1 -0
  644. package/dist/interactions/actions/defaults/createPaintAction.js +85 -0
  645. package/dist/interactions/actions/defaults/createPaintAction.js.map +1 -0
  646. package/dist/interactions/actions/defaults/delete.js +61 -0
  647. package/dist/interactions/actions/defaults/delete.js.map +1 -0
  648. package/dist/interactions/actions/defaults/distribute.js +66 -0
  649. package/dist/interactions/actions/defaults/distribute.js.map +1 -0
  650. package/dist/interactions/actions/defaults/duplicate.js +83 -0
  651. package/dist/interactions/actions/defaults/duplicate.js.map +1 -0
  652. package/dist/interactions/actions/defaults/editAnchors.js +100 -0
  653. package/dist/interactions/actions/defaults/editAnchors.js.map +1 -0
  654. package/dist/interactions/actions/defaults/enterPathEdit.js +29 -0
  655. package/dist/interactions/actions/defaults/enterPathEdit.js.map +1 -0
  656. package/dist/interactions/actions/defaults/enterTextEdit.js +20 -0
  657. package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -0
  658. package/dist/interactions/actions/defaults/escape.js +26 -0
  659. package/dist/interactions/actions/defaults/escape.js.map +1 -0
  660. package/dist/interactions/actions/defaults/exitPathEdit.js +22 -0
  661. package/dist/interactions/actions/defaults/exitPathEdit.js.map +1 -0
  662. package/dist/interactions/actions/defaults/flip.js +119 -0
  663. package/dist/interactions/actions/defaults/flip.js.map +1 -0
  664. package/dist/interactions/actions/defaults/freshNodeId.js +10 -0
  665. package/dist/interactions/actions/defaults/freshNodeId.js.map +1 -0
  666. package/dist/interactions/actions/defaults/group.js +131 -0
  667. package/dist/interactions/actions/defaults/group.js.map +1 -0
  668. package/dist/interactions/actions/defaults/icons/actionGlyphIcons.js +40 -0
  669. package/dist/interactions/actions/defaults/icons/actionGlyphIcons.js.map +1 -0
  670. package/dist/interactions/actions/defaults/icons/actionGlyphs.js +10 -0
  671. package/dist/interactions/actions/defaults/icons/actionGlyphs.js.map +1 -0
  672. package/dist/interactions/actions/defaults/icons/alignIcons.js +173 -0
  673. package/dist/interactions/actions/defaults/icons/alignIcons.js.map +1 -0
  674. package/dist/interactions/actions/defaults/icons/booleanIcons.js +171 -0
  675. package/dist/interactions/actions/defaults/icons/booleanIcons.js.map +1 -0
  676. package/dist/interactions/actions/defaults/icons/distributeIcons.js +63 -0
  677. package/dist/interactions/actions/defaults/icons/distributeIcons.js.map +1 -0
  678. package/dist/interactions/actions/defaults/icons/editIcons.js +280 -0
  679. package/dist/interactions/actions/defaults/icons/editIcons.js.map +1 -0
  680. package/dist/interactions/actions/defaults/icons/outlineIcons.js +53 -0
  681. package/dist/interactions/actions/defaults/icons/outlineIcons.js.map +1 -0
  682. package/dist/interactions/actions/defaults/ingest.js +58 -0
  683. package/dist/interactions/actions/defaults/ingest.js.map +1 -0
  684. package/dist/interactions/actions/defaults/insert.js +288 -0
  685. package/dist/interactions/actions/defaults/insert.js.map +1 -0
  686. package/dist/interactions/actions/defaults/insertPathAnchor.js +50 -0
  687. package/dist/interactions/actions/defaults/insertPathAnchor.js.map +1 -0
  688. package/dist/interactions/actions/defaults/lassoSelect.js +156 -0
  689. package/dist/interactions/actions/defaults/lassoSelect.js.map +1 -0
  690. package/dist/interactions/actions/defaults/move.js +760 -0
  691. package/dist/interactions/actions/defaults/move.js.map +1 -0
  692. package/dist/interactions/actions/defaults/nudge.js +110 -0
  693. package/dist/interactions/actions/defaults/nudge.js.map +1 -0
  694. package/dist/interactions/actions/defaults/pinchZoom.js +63 -0
  695. package/dist/interactions/actions/defaults/pinchZoom.js.map +1 -0
  696. package/dist/interactions/actions/defaults/reorder.js +143 -0
  697. package/dist/interactions/actions/defaults/reorder.js.map +1 -0
  698. package/dist/interactions/actions/defaults/requiresSelection.js +10 -0
  699. package/dist/interactions/actions/defaults/requiresSelection.js.map +1 -0
  700. package/dist/interactions/actions/defaults/resize.js +335 -0
  701. package/dist/interactions/actions/defaults/resize.js.map +1 -0
  702. package/dist/interactions/actions/defaults/rotate.js +184 -0
  703. package/dist/interactions/actions/defaults/rotate.js.map +1 -0
  704. package/dist/interactions/actions/defaults/selectAll.js +27 -0
  705. package/dist/interactions/actions/defaults/selectAll.js.map +1 -0
  706. package/dist/interactions/actions/defaults/setFill.js +27 -0
  707. package/dist/interactions/actions/defaults/setFill.js.map +1 -0
  708. package/dist/interactions/actions/defaults/setFillOpacity.js +15 -0
  709. package/dist/interactions/actions/defaults/setFillOpacity.js.map +1 -0
  710. package/dist/interactions/actions/defaults/setStroke.js +36 -0
  711. package/dist/interactions/actions/defaults/setStroke.js.map +1 -0
  712. package/dist/interactions/actions/defaults/setStrokeOpacity.js +21 -0
  713. package/dist/interactions/actions/defaults/setStrokeOpacity.js.map +1 -0
  714. package/dist/interactions/actions/defaults/slice.js +39 -0
  715. package/dist/interactions/actions/defaults/slice.js.map +1 -0
  716. package/dist/interactions/actions/defaults/sliceOps.js +60 -0
  717. package/dist/interactions/actions/defaults/sliceOps.js.map +1 -0
  718. package/dist/interactions/actions/defaults/toolActivate.js +35 -0
  719. package/dist/interactions/actions/defaults/toolActivate.js.map +1 -0
  720. package/dist/interactions/actions/defaults/toolResetToDefault.js +26 -0
  721. package/dist/interactions/actions/defaults/toolResetToDefault.js.map +1 -0
  722. package/dist/interactions/actions/defaults/undoRedo.js +51 -0
  723. package/dist/interactions/actions/defaults/undoRedo.js.map +1 -0
  724. package/dist/interactions/actions/defaults/viewportDragPan.js +88 -0
  725. package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -0
  726. package/dist/interactions/actions/defaults/viewportWheelPan.js +57 -0
  727. package/dist/interactions/actions/defaults/viewportWheelPan.js.map +1 -0
  728. package/dist/interactions/actions/defaults/viewportZoom.js +143 -0
  729. package/dist/interactions/actions/defaults/viewportZoom.js.map +1 -0
  730. package/dist/interactions/actions/distribute/distribute.js +42 -0
  731. package/dist/interactions/actions/distribute/distribute.js.map +1 -0
  732. package/dist/interactions/actions/distribute/plan.js +29 -0
  733. package/dist/interactions/actions/distribute/plan.js.map +1 -0
  734. package/dist/interactions/actions/edit-anchors/geometry.js +61 -0
  735. package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -0
  736. package/dist/interactions/actions/edit-anchors/handles.js +43 -0
  737. package/dist/interactions/actions/edit-anchors/handles.js.map +1 -0
  738. package/dist/interactions/actions/flip/helpers.js +35 -0
  739. package/dist/interactions/actions/flip/helpers.js.map +1 -0
  740. package/dist/interactions/actions/geometryProjection.js +18 -0
  741. package/dist/interactions/actions/geometryProjection.js.map +1 -0
  742. package/dist/interactions/actions/gestureLifecycle.js +44 -0
  743. package/dist/interactions/actions/gestureLifecycle.js.map +1 -0
  744. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js +39 -0
  745. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js.map +1 -0
  746. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js +36 -0
  747. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js.map +1 -0
  748. package/dist/interactions/actions/move/behaviors/snapToContainer.js +67 -0
  749. package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -0
  750. package/dist/interactions/actions/move/gestureAdapter.js +37 -0
  751. package/dist/interactions/actions/move/gestureAdapter.js.map +1 -0
  752. package/dist/interactions/actions/outlines/createOutlines.js +84 -0
  753. package/dist/interactions/actions/outlines/createOutlines.js.map +1 -0
  754. package/dist/interactions/actions/outlines/useCreateOutlinesAdapter.js +9 -0
  755. package/dist/interactions/actions/outlines/useCreateOutlinesAdapter.js.map +1 -0
  756. package/dist/interactions/actions/planeInput.js +181 -0
  757. package/dist/interactions/actions/planeInput.js.map +1 -0
  758. package/dist/interactions/actions/poseDescriptorDep.js +9 -0
  759. package/dist/interactions/actions/poseDescriptorDep.js.map +1 -0
  760. package/dist/interactions/actions/poseFrame.js +38 -0
  761. package/dist/interactions/actions/poseFrame.js.map +1 -0
  762. package/dist/interactions/actions/previewOverrides.js +25 -0
  763. package/dist/interactions/actions/previewOverrides.js.map +1 -0
  764. package/dist/interactions/actions/resize/autoPoseDescriptor.js +31 -0
  765. package/dist/interactions/actions/resize/autoPoseDescriptor.js.map +1 -0
  766. package/dist/interactions/actions/resize/behaviors/clampMinSize.js +18 -0
  767. package/dist/interactions/actions/resize/behaviors/clampMinSize.js.map +1 -0
  768. package/dist/interactions/actions/resize/behaviors/index.js +8 -0
  769. package/dist/interactions/actions/resize/behaviors/index.js.map +1 -0
  770. package/dist/interactions/actions/resize/behaviors/lockAspect.js +24 -0
  771. package/dist/interactions/actions/resize/behaviors/lockAspect.js.map +1 -0
  772. package/dist/interactions/actions/resize/cornerHandles.js +72 -0
  773. package/dist/interactions/actions/resize/cornerHandles.js.map +1 -0
  774. package/dist/interactions/actions/resolveOverlays.js +60 -0
  775. package/dist/interactions/actions/resolveOverlays.js.map +1 -0
  776. package/dist/interactions/actions/resolvePreviews.js +61 -0
  777. package/dist/interactions/actions/resolvePreviews.js.map +1 -0
  778. package/dist/interactions/actions/rotate/geometry.js +46 -0
  779. package/dist/interactions/actions/rotate/geometry.js.map +1 -0
  780. package/dist/interactions/actions/rotate/handle.js +27 -0
  781. package/dist/interactions/actions/rotate/handle.js.map +1 -0
  782. package/dist/interactions/actions/spatialReference.js +42 -0
  783. package/dist/interactions/actions/spatialReference.js.map +1 -0
  784. package/dist/interactions/actions/useStandardActions.js +142 -0
  785. package/dist/interactions/actions/useStandardActions.js.map +1 -0
  786. package/dist/interactions/gestures/dragGesture/dragGesture.js +111 -0
  787. package/dist/interactions/gestures/dragGesture/dragGesture.js.map +1 -0
  788. package/dist/interactions/gestures/dragRadial/dragRadial.js +117 -0
  789. package/dist/interactions/gestures/dragRadial/dragRadial.js.map +1 -0
  790. package/dist/interactions/gestures/dragRect/dragRect.js +164 -0
  791. package/dist/interactions/gestures/dragRect/dragRect.js.map +1 -0
  792. package/dist/interactions/gestures/handleDrag/handleDrag.js +46 -0
  793. package/dist/interactions/gestures/handleDrag/handleDrag.js.map +1 -0
  794. package/dist/interactions/gestures/pointerDrag/pointerDrag.js +118 -0
  795. package/dist/interactions/gestures/pointerDrag/pointerDrag.js.map +1 -0
  796. package/dist/interactions/gestures/shared/originProjection.js +42 -0
  797. package/dist/interactions/gestures/shared/originProjection.js.map +1 -0
  798. package/dist/interactions/gestures/shared/screenTolerance.js +21 -0
  799. package/dist/interactions/gestures/shared/screenTolerance.js.map +1 -0
  800. package/dist/interactions/gestures/shared/snap.js +24 -0
  801. package/dist/interactions/gestures/shared/snap.js.map +1 -0
  802. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js +30 -0
  803. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js.map +1 -0
  804. package/dist/layout/arrivals.js +36 -0
  805. package/dist/layout/arrivals.js.map +1 -0
  806. package/dist/{math-MCQcf_gc.d.ts → math-Drrw4ewZ.d.ts} +8 -116
  807. package/dist/math.d.ts +4 -5
  808. package/dist/math.js +6 -4
  809. package/dist/mesh.d.ts +268 -0
  810. package/dist/mesh.js +7 -0
  811. package/dist/move.d.ts +7 -49
  812. package/dist/move.js +3 -142
  813. package/dist/originProjection-DEklpDc_.d.ts +57 -0
  814. package/dist/patterns-builtin.js +3 -3
  815. package/dist/{poseDescriptor-rZa9W5hJ.d.ts → poseDescriptor-D-OH-tu5.d.ts} +0 -4
  816. package/dist/registerProgram-ateHDGjw.d.ts +193 -0
  817. package/dist/renderer/DrawCommand.js +6 -0
  818. package/dist/renderer/DrawCommand.js.map +1 -0
  819. package/dist/renderer/WeaselRenderer.js +328 -0
  820. package/dist/renderer/WeaselRenderer.js.map +1 -0
  821. package/dist/renderer/cache/GLImageCache.js +64 -0
  822. package/dist/renderer/cache/GLImageCache.js.map +1 -0
  823. package/dist/renderer/cache/GLMeshCache.js +102 -0
  824. package/dist/renderer/cache/GLMeshCache.js.map +1 -0
  825. package/dist/renderer/cache/GLTextureCache.js +51 -0
  826. package/dist/renderer/cache/GLTextureCache.js.map +1 -0
  827. package/dist/renderer/cache/GradientRampAtlas.js +82 -0
  828. package/dist/renderer/cache/GradientRampAtlas.js.map +1 -0
  829. package/dist/renderer/cache/cache.js +13 -0
  830. package/dist/renderer/cache/cache.js.map +1 -0
  831. package/dist/renderer/cache/markerCommandCache.js +59 -0
  832. package/dist/renderer/cache/markerCommandCache.js.map +1 -0
  833. package/dist/renderer/cache/outlineMeshCache.js +15 -0
  834. package/dist/renderer/cache/outlineMeshCache.js.map +1 -0
  835. package/dist/renderer/cache/outlineStrokeMeshCache.js +31 -0
  836. package/dist/renderer/cache/outlineStrokeMeshCache.js.map +1 -0
  837. package/dist/renderer/cache/strokeMeshCache.js +44 -0
  838. package/dist/renderer/cache/strokeMeshCache.js.map +1 -0
  839. package/dist/renderer/cullDrawCommands.js +89 -0
  840. package/dist/renderer/cullDrawCommands.js.map +1 -0
  841. package/dist/renderer/draw.js +1109 -0
  842. package/dist/renderer/draw.js.map +1 -0
  843. package/dist/renderer/drawBatch.js +168 -0
  844. package/dist/renderer/drawBatch.js.map +1 -0
  845. package/dist/renderer/effects/EffectTargets.js +45 -0
  846. package/dist/renderer/effects/EffectTargets.js.map +1 -0
  847. package/dist/renderer/effects/builtins.js +31 -0
  848. package/dist/renderer/effects/builtins.js.map +1 -0
  849. package/dist/renderer/effects/composite.js +9 -0
  850. package/dist/renderer/effects/composite.js.map +1 -0
  851. package/dist/renderer/effects/effectPrelude.js +10 -0
  852. package/dist/renderer/effects/effectPrelude.js.map +1 -0
  853. package/dist/renderer/effects/types.js +10 -0
  854. package/dist/renderer/effects/types.js.map +1 -0
  855. package/dist/renderer/index.js +19 -0
  856. package/dist/renderer/math/color.js +341 -0
  857. package/dist/renderer/math/color.js.map +1 -0
  858. package/dist/renderer/math/mat3.js +71 -0
  859. package/dist/renderer/math/mat3.js.map +1 -0
  860. package/dist/renderer/math/patternSpace.js +22 -0
  861. package/dist/renderer/math/patternSpace.js.map +1 -0
  862. package/dist/renderer/math/viewToMat3.js +19 -0
  863. package/dist/renderer/math/viewToMat3.js.map +1 -0
  864. package/dist/renderer/paintResources.js +18 -0
  865. package/dist/renderer/paintResources.js.map +1 -0
  866. package/dist/renderer/paintScratch.js +37 -0
  867. package/dist/renderer/paintScratch.js.map +1 -0
  868. package/dist/renderer/shaders/ShaderProgram.js +74 -0
  869. package/dist/renderer/shaders/ShaderProgram.js.map +1 -0
  870. package/dist/renderer/shaders/batchFill.js +118 -0
  871. package/dist/renderer/shaders/batchFill.js.map +1 -0
  872. package/dist/renderer/shaders/customPrelude.js +34 -0
  873. package/dist/renderer/shaders/customPrelude.js.map +1 -0
  874. package/dist/renderer/shaders/extractUniformNames.js +184 -0
  875. package/dist/renderer/shaders/extractUniformNames.js.map +1 -0
  876. package/dist/renderer/shaders/glyphPaint.js +61 -0
  877. package/dist/renderer/shaders/glyphPaint.js.map +1 -0
  878. package/dist/renderer/shaders/gradFill.js +30 -0
  879. package/dist/renderer/shaders/gradFill.js.map +1 -0
  880. package/dist/renderer/shaders/imageFill.js +14 -0
  881. package/dist/renderer/shaders/imageFill.js.map +1 -0
  882. package/dist/renderer/shaders/pathFill.js +13 -0
  883. package/dist/renderer/shaders/pathFill.js.map +1 -0
  884. package/dist/renderer/shaders/patternFill.js +24 -0
  885. package/dist/renderer/shaders/patternFill.js.map +1 -0
  886. package/dist/renderer/shaders/registerProgram.js +18 -0
  887. package/dist/renderer/shaders/registerProgram.js.map +1 -0
  888. package/dist/renderer/spriteSheet.js +14 -0
  889. package/dist/renderer/spriteSheet.js.map +1 -0
  890. package/dist/renderer/state/GroupState.js +77 -0
  891. package/dist/renderer/state/GroupState.js.map +1 -0
  892. package/dist/renderer/syntheticItalic.js +6 -0
  893. package/dist/renderer/syntheticItalic.js.map +1 -0
  894. package/dist/renderer/textures/registerTexture.js +14 -0
  895. package/dist/renderer/textures/registerTexture.js.map +1 -0
  896. package/dist/renderer.d.ts +11 -21
  897. package/dist/renderer.js +18 -13
  898. package/dist/resize.d.ts +10 -46
  899. package/dist/resize.js +7 -5
  900. package/dist/routing.js +2 -3
  901. package/dist/scheduling/useVisibleRaf.js +69 -0
  902. package/dist/scheduling/useVisibleRaf.js.map +1 -0
  903. package/dist/style.css +2 -0
  904. package/dist/test-hook/createTestHook.js +39 -0
  905. package/dist/test-hook/createTestHook.js.map +1 -0
  906. package/dist/test-hook/install.js +12 -0
  907. package/dist/test-hook/install.js.map +1 -0
  908. package/dist/test-seams-fYf6m5pu.d.ts +356 -0
  909. package/dist/test-seams.d.ts +6 -0
  910. package/dist/test-seams.js +3 -0
  911. package/dist/tools/builtin/ellipse/useEllipseTool.js +33 -0
  912. package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -0
  913. package/dist/tools/builtin/eyedropper/useEyedropperTool.js +55 -0
  914. package/dist/tools/builtin/eyedropper/useEyedropperTool.js.map +1 -0
  915. package/dist/tools/builtin/hand/dragPanContribution.js +17 -0
  916. package/dist/tools/builtin/hand/dragPanContribution.js.map +1 -0
  917. package/dist/tools/builtin/hand/useHandTool.js +31 -0
  918. package/dist/tools/builtin/hand/useHandTool.js.map +1 -0
  919. package/dist/tools/builtin/image/useImageTool.js +41 -0
  920. package/dist/tools/builtin/image/useImageTool.js.map +1 -0
  921. package/dist/tools/builtin/lasso/useLassoTool.js +42 -0
  922. package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -0
  923. package/dist/tools/builtin/line/useLineTool.js +33 -0
  924. package/dist/tools/builtin/line/useLineTool.js.map +1 -0
  925. package/dist/tools/builtin/pen/usePenTool.js +414 -0
  926. package/dist/tools/builtin/pen/usePenTool.js.map +1 -0
  927. package/dist/tools/builtin/pencil/usePencilTool.js +36 -0
  928. package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -0
  929. package/dist/tools/builtin/pickTopMostHit.js +45 -0
  930. package/dist/tools/builtin/pickTopMostHit.js.map +1 -0
  931. package/dist/tools/builtin/polygon/usePolygonTool.js +81 -0
  932. package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -0
  933. package/dist/tools/builtin/rect/useRectTool.js +32 -0
  934. package/dist/tools/builtin/rect/useRectTool.js.map +1 -0
  935. package/dist/tools/builtin/select/selectionContributions.js +109 -0
  936. package/dist/tools/builtin/select/selectionContributions.js.map +1 -0
  937. package/dist/tools/builtin/select/useSelectTool.js +162 -0
  938. package/dist/tools/builtin/select/useSelectTool.js.map +1 -0
  939. package/dist/tools/builtin/shared/insertToolOptions.js +8 -0
  940. package/dist/tools/builtin/shared/insertToolOptions.js.map +1 -0
  941. package/dist/tools/builtin/slice/useSliceTool.js +263 -0
  942. package/dist/tools/builtin/slice/useSliceTool.js.map +1 -0
  943. package/dist/tools/builtin/star/useStarTool.js +82 -0
  944. package/dist/tools/builtin/star/useStarTool.js.map +1 -0
  945. package/dist/tools/builtin/text/useTextTool.js +177 -0
  946. package/dist/tools/builtin/text/useTextTool.js.map +1 -0
  947. package/dist/tools/overlayBinding.js +8 -0
  948. package/dist/tools/overlayBinding.js.map +1 -0
  949. package/dist/tools/prefs.js +47 -0
  950. package/dist/tools/prefs.js.map +1 -0
  951. package/dist/tools/useKeybindings.js +66 -0
  952. package/dist/tools/useKeybindings.js.map +1 -0
  953. package/dist/{types-D-9QWBy5.d.ts → types-A37hYkeR.d.ts} +185 -15
  954. package/dist/{types-qYpyTAiZ.d.ts → types-B_9g6hMM.d.ts} +32 -6
  955. package/dist/util/color.js +26 -0
  956. package/dist/util/color.js.map +1 -0
  957. package/dist/util/constrainTo45.js +17 -0
  958. package/dist/util/constrainTo45.js.map +1 -0
  959. package/dist/util/paint.js +72 -0
  960. package/dist/util/paint.js.map +1 -0
  961. package/dist/version.js +6 -0
  962. package/dist/version.js.map +1 -0
  963. package/package.json +31 -19
  964. package/dist/chunk-3TY6FHAF.js +0 -170
  965. package/dist/chunk-3TY6FHAF.js.map +0 -1
  966. package/dist/chunk-DGWNNKGD.js +0 -248
  967. package/dist/chunk-DGWNNKGD.js.map +0 -1
  968. package/dist/chunk-G4ZGQMY7.js +0 -33372
  969. package/dist/chunk-G4ZGQMY7.js.map +0 -1
  970. package/dist/chunk-L5YNZYEG.js +0 -648
  971. package/dist/chunk-L5YNZYEG.js.map +0 -1
  972. package/dist/chunk-LU4IJ52W.js +0 -111
  973. package/dist/chunk-LU4IJ52W.js.map +0 -1
  974. package/dist/chunk-M24CLARN.js +0 -28
  975. package/dist/chunk-M24CLARN.js.map +0 -1
  976. package/dist/chunk-NE27EOLP.js +0 -146
  977. package/dist/chunk-NE27EOLP.js.map +0 -1
  978. package/dist/chunk-PNNZSYRD.js +0 -318
  979. package/dist/chunk-PNNZSYRD.js.map +0 -1
  980. package/dist/chunk-UPZY4ART.js +0 -29
  981. package/dist/chunk-UPZY4ART.js.map +0 -1
  982. package/dist/chunk-WPNA6L5O.js +0 -250
  983. package/dist/chunk-WPNA6L5O.js.map +0 -1
  984. package/dist/chunk-XMAWPGTK.js +0 -128
  985. package/dist/chunk-XMAWPGTK.js.map +0 -1
  986. package/dist/clipboard.js.map +0 -1
  987. package/dist/clone.js.map +0 -1
  988. package/dist/grid-CY5UKlZh.d.ts +0 -98
  989. package/dist/index.css +0 -62
  990. package/dist/index.css.map +0 -1
  991. package/dist/index.js.map +0 -1
  992. package/dist/insert.d.ts +0 -36
  993. package/dist/insert.js +0 -81
  994. package/dist/insert.js.map +0 -1
  995. package/dist/math.js.map +0 -1
  996. package/dist/move.js.map +0 -1
  997. package/dist/path-JEV2c5If.d.ts +0 -48
  998. package/dist/patterns-builtin.js.map +0 -1
  999. package/dist/renderer.css +0 -62
  1000. package/dist/renderer.css.map +0 -1
  1001. package/dist/renderer.js.map +0 -1
  1002. package/dist/resize.js.map +0 -1
  1003. package/dist/routing.js.map +0 -1
  1004. package/dist/types-D2tTKEU0.d.ts +0 -18
@@ -0,0 +1,118 @@
1
+ import { useCallback as e, useEffect as t, useRef as n } from "react";
2
+ import { useLatest as r } from "@weasel-js/react";
3
+ import { openPointerSession as i, pastDragThreshold as a } from "@weasel-js/routing";
4
+ //#region src/interactions/gestures/pointerDrag/pointerDrag.ts
5
+ var o = /* @__PURE__ */ new Set(), s = null;
6
+ function c(e) {
7
+ return o.add(e), () => {
8
+ s?.lastZone === e && (s.lastZone = null), o.delete(e);
9
+ };
10
+ }
11
+ function l(e, t, n) {
12
+ let r = document.elementFromPoint(e, t);
13
+ if (!r) return null;
14
+ for (let e of o) if (e.el.contains(r) && e.accepts(n)) return e;
15
+ return null;
16
+ }
17
+ function u(e, t) {
18
+ let n = e.getBoundingClientRect(), r = e.cloneNode(!0);
19
+ if (r.style.position = "fixed", r.style.left = "0", r.style.top = "0", r.style.width = `${n.width}px`, r.style.height = `${n.height}px`, r.style.margin = "0", r.style.pointerEvents = "none", r.style.opacity = "0.85", r.style.zIndex = "10000", r.style.transition = "none", r.style.transformOrigin = "center center", t.ids.length > 1) {
20
+ let e = document.createElement("div");
21
+ e.textContent = String(t.ids.length), e.style.position = "absolute", e.style.top = "-6px", e.style.right = "-6px", e.style.background = "#FFC857", e.style.color = "#000", e.style.borderRadius = "999px", e.style.padding = "2px 8px", e.style.fontWeight = "bold", e.style.fontSize = "12px", e.style.boxShadow = "0 2px 6px rgba(0,0,0,0.4)", r.appendChild(e);
22
+ }
23
+ return r;
24
+ }
25
+ function d(e, t, n) {
26
+ e.style.transform = `translate(${t - e.offsetWidth / 2}px, ${n - e.offsetHeight / 2}px) scale(0.92)`;
27
+ }
28
+ function f(e, t, n, r, i) {
29
+ if (s) return null;
30
+ let a = i(t, e);
31
+ document.body.appendChild(a), d(a, n, r), s = {
32
+ payload: e,
33
+ ghost: a,
34
+ lastZone: null
35
+ };
36
+ let o = () => {
37
+ s?.ghost.remove(), s = null;
38
+ };
39
+ return {
40
+ move(t) {
41
+ if (!s) return;
42
+ d(s.ghost, t.clientX, t.clientY);
43
+ let n = l(t.clientX, t.clientY, e.kind);
44
+ n !== s.lastZone && (s.lastZone?.onOver?.(!1), n?.onOver?.(!0), s.lastZone = n), n?.onMove?.(e, t.clientX, t.clientY);
45
+ },
46
+ drop(t) {
47
+ if (!s) return;
48
+ let n = l(t.clientX, t.clientY, e.kind), r = s.payload;
49
+ s.lastZone?.onOver?.(!1);
50
+ try {
51
+ n && n.onDrop(r, t.clientX, t.clientY);
52
+ } catch (e) {
53
+ console.error("weasel pointerDrag: drop zone onDrop threw", e);
54
+ } finally {
55
+ o();
56
+ }
57
+ },
58
+ cancel() {
59
+ s?.lastZone?.onOver?.(!1), o();
60
+ }
61
+ };
62
+ }
63
+ function p(o, s) {
64
+ let c = r(s), l = n(null);
65
+ return t(() => () => {
66
+ l.current?.cancel();
67
+ }, []), {
68
+ onPointerDown: e((e) => {
69
+ if (e.pointerType === "mouse" && e.button !== 0) return;
70
+ let t = e.currentTarget;
71
+ if (e.target instanceof HTMLElement && e.target.closest("input, button, select, textarea")) return;
72
+ let n = {
73
+ clientX: e.clientX,
74
+ clientY: e.clientY
75
+ }, r = null, s = !1;
76
+ l.current = i(t, e, {
77
+ onMove: (e) => {
78
+ if (r) {
79
+ r.move(e);
80
+ return;
81
+ }
82
+ if (s || !a(n, e)) return;
83
+ s = !0;
84
+ let i = o();
85
+ i && (t.addEventListener("click", (e) => {
86
+ e.stopPropagation(), e.preventDefault();
87
+ }, {
88
+ capture: !0,
89
+ once: !0
90
+ }), r = f(i, t, e.clientX, e.clientY, c.current?.createGhost ?? u));
91
+ },
92
+ onEnd: (e) => {
93
+ l.current = null, r?.drop(e);
94
+ },
95
+ onCancel: () => {
96
+ l.current = null, r?.cancel();
97
+ }
98
+ }, { capture: !1 });
99
+ }, [o, c]),
100
+ style: { touchAction: "none" }
101
+ };
102
+ }
103
+ function m(t) {
104
+ let i = r(t), a = n(null);
105
+ return e((e) => {
106
+ a.current?.(), a.current = null, e && (a.current = c({
107
+ el: e,
108
+ accepts: (e) => i.current.accepts(e),
109
+ onDrop: (e, t, n) => i.current.onDrop(e, t, n),
110
+ onOver: (e) => i.current.onOver?.(e),
111
+ onMove: (e, t, n) => i.current.onMove?.(e, t, n)
112
+ }));
113
+ }, [i]);
114
+ }
115
+ //#endregion
116
+ export { p as useDragHandle, m as useDropZone };
117
+
118
+ //# sourceMappingURL=pointerDrag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pointerDrag.js","names":["dropZones","activeDrag","registerDropZone","zone","findZone","el","x","y","z","kind","defaultGhost","rect","source","clone","payload","badge","positionGhost","beginPointerDrag","ghost","ghostFn","startX","startY","teardown","e","dropped","err","useDragHandle","optsRef","useLatest","options","live","useRef","useEffect","useCallback","target","start","past","openPointerSession","ev","pastDragThreshold","getPayload","ce","useDropZone","opts","cleanupRef","k","p","a"],"sources":["../../../../src/interactions/gestures/pointerDrag/pointerDrag.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\nimport { useLatest } from '@weasel-js/react';\nimport { openPointerSession, pastDragThreshold, type PointerSession } from '@weasel-js/routing';\n\n/** Payload carried by an in-flight pointer drag — `kind` routes to drop zones, `ids` lists the dragged items. */\nexport interface DragPayload {\n kind: string;\n ids: string[];\n data?: unknown;\n}\n\ninterface DropZone {\n el: HTMLElement;\n accepts: (kind: string) => boolean;\n onDrop: (payload: DragPayload, clientX: number, clientY: number) => void;\n onOver?: (active: boolean) => void;\n onMove?: (payload: DragPayload, clientX: number, clientY: number) => void;\n}\n\nconst dropZones = new Set<DropZone>();\nlet activeDrag: { payload: DragPayload; ghost: HTMLElement; lastZone: DropZone | null } | null = null;\n\nfunction registerDropZone(zone: DropZone): () => void {\n dropZones.add(zone);\n return () => {\n if (activeDrag?.lastZone === zone) activeDrag.lastZone = null;\n dropZones.delete(zone);\n };\n}\n\nfunction findZone(x: number, y: number, kind: string): DropZone | null {\n const el = document.elementFromPoint(x, y);\n if (!el) return null;\n for (const z of dropZones) {\n if (z.el.contains(el) && z.accepts(kind)) return z;\n }\n return null;\n}\n\nfunction defaultGhost(source: HTMLElement, payload: DragPayload): HTMLElement {\n const rect = source.getBoundingClientRect();\n const clone = source.cloneNode(true) as HTMLElement;\n clone.style.position = 'fixed';\n clone.style.left = '0';\n clone.style.top = '0';\n clone.style.width = `${rect.width}px`;\n clone.style.height = `${rect.height}px`;\n clone.style.margin = '0';\n clone.style.pointerEvents = 'none';\n clone.style.opacity = '0.85';\n clone.style.zIndex = '10000';\n clone.style.transition = 'none';\n clone.style.transformOrigin = 'center center';\n if (payload.ids.length > 1) {\n const badge = document.createElement('div');\n badge.textContent = String(payload.ids.length);\n badge.style.position = 'absolute';\n badge.style.top = '-6px';\n badge.style.right = '-6px';\n badge.style.background = '#FFC857';\n badge.style.color = '#000';\n badge.style.borderRadius = '999px';\n badge.style.padding = '2px 8px';\n badge.style.fontWeight = 'bold';\n badge.style.fontSize = '12px';\n badge.style.boxShadow = '0 2px 6px rgba(0,0,0,0.4)';\n clone.appendChild(badge);\n }\n return clone;\n}\n\nfunction positionGhost(el: HTMLElement, x: number, y: number) {\n el.style.transform = `translate(${x - el.offsetWidth / 2}px, ${y - el.offsetHeight / 2}px) scale(0.92)`;\n}\n\n/** The ghost-and-zones half of a drag, driven by whoever owns the pointer. */\ninterface GhostDrag {\n move: (e: PointerEvent) => void;\n drop: (e: PointerEvent) => void;\n cancel: () => void;\n}\n\nfunction beginPointerDrag(\n payload: DragPayload,\n source: HTMLElement,\n startX: number,\n startY: number,\n ghostFn: (source: HTMLElement, payload: DragPayload) => HTMLElement,\n): GhostDrag | null {\n if (activeDrag) return null;\n const ghost = ghostFn(source, payload);\n document.body.appendChild(ghost);\n positionGhost(ghost, startX, startY);\n activeDrag = { payload, ghost, lastZone: null };\n\n const teardown = () => {\n activeDrag?.ghost.remove();\n activeDrag = null;\n };\n\n return {\n move(e) {\n if (!activeDrag) return;\n positionGhost(activeDrag.ghost, e.clientX, e.clientY);\n const zone = findZone(e.clientX, e.clientY, payload.kind);\n if (zone !== activeDrag.lastZone) {\n activeDrag.lastZone?.onOver?.(false);\n zone?.onOver?.(true);\n activeDrag.lastZone = zone;\n }\n zone?.onMove?.(payload, e.clientX, e.clientY);\n },\n drop(e) {\n if (!activeDrag) return;\n const zone = findZone(e.clientX, e.clientY, payload.kind);\n const dropped = activeDrag.payload;\n activeDrag.lastZone?.onOver?.(false);\n // `activeDrag` is module state and gates every future drag, so a throwing\n // consumer `onDrop` must not be able to strand it.\n try {\n if (zone) zone.onDrop(dropped, e.clientX, e.clientY);\n } catch (err) {\n console.error('weasel pointerDrag: drop zone onDrop threw', err);\n } finally {\n teardown();\n }\n },\n cancel() {\n activeDrag?.lastZone?.onOver?.(false);\n teardown();\n },\n };\n}\n\n/** Options for `useDragHandle`; supply `createGhost` to override the default DOM-clone ghost. */\nexport interface DragHandleOptions {\n createGhost?: (source: HTMLElement, payload: DragPayload) => HTMLElement;\n}\n\n/** Attach a pointer-driven drag handle: `getPayload` is read at threshold-cross time and a ghost follows the pointer. */\nexport function useDragHandle(\n getPayload: () => DragPayload | null,\n options?: DragHandleOptions,\n) {\n const optsRef = useLatest(options);\n // One session spans the whole press, threshold and all, so a release that\n // never arrives — the row unmounts under the pointer — cannot strand the\n // ghost or its listeners. Before, the two phases owned separate listener\n // triples and only the pre-threshold one was torn down on unmount.\n const live = useRef<PointerSession | null>(null);\n useEffect(() => () => { live.current?.cancel(); }, []);\n\n const onPointerDown = useCallback((e: React.PointerEvent<HTMLElement>) => {\n if (e.pointerType === 'mouse' && e.button !== 0) return;\n const target = e.currentTarget as HTMLElement;\n if (e.target instanceof HTMLElement && e.target.closest('input, button, select, textarea')) return;\n const start = { clientX: e.clientX, clientY: e.clientY };\n let ghost: GhostDrag | null = null;\n let past = false;\n\n // No pointer capture: zones are resolved with `document.elementFromPoint`,\n // which capture would not help, and the source row is free to be removed\n // and re-rendered under the drag.\n live.current = openPointerSession(target, e, {\n onMove: (ev) => {\n if (ghost) { ghost.move(ev); return; }\n if (past) return;\n if (!pastDragThreshold(start, ev)) return;\n past = true;\n const payload = getPayload();\n if (!payload) return;\n target.addEventListener(\n 'click',\n (ce) => { ce.stopPropagation(); ce.preventDefault(); },\n { capture: true, once: true },\n );\n ghost = beginPointerDrag(\n payload, target, ev.clientX, ev.clientY,\n optsRef.current?.createGhost ?? defaultGhost,\n );\n },\n onEnd: (ev) => { live.current = null; ghost?.drop(ev); },\n onCancel: () => { live.current = null; ghost?.cancel(); },\n }, { capture: false });\n }, [getPayload, optsRef]);\n\n return { onPointerDown, style: { touchAction: 'none' as const } };\n}\n\n/** Options for `useDropZone`; `accepts` filters by `payload.kind`. */\nexport interface DropZoneOptions {\n accepts: (kind: string) => boolean;\n onDrop: (payload: DragPayload, clientX: number, clientY: number) => void;\n onOver?: (active: boolean) => void;\n onMove?: (payload: DragPayload, clientX: number, clientY: number) => void;\n}\n\n/** Register an element as a drop zone for `useDragHandle` payloads. Returns a ref-callback. */\nexport function useDropZone<T extends HTMLElement>(opts: DropZoneOptions): (el: T | null) => void {\n const optsRef = useLatest(opts);\n const cleanupRef = useRef<(() => void) | null>(null);\n return useCallback((el: T | null) => {\n cleanupRef.current?.();\n cleanupRef.current = null;\n if (!el) return;\n cleanupRef.current = registerDropZone({\n el,\n accepts: (k) => optsRef.current.accepts(k),\n onDrop: (p, x, y) => optsRef.current.onDrop(p, x, y),\n onOver: (a) => optsRef.current.onOver?.(a),\n onMove: (p, x, y) => optsRef.current.onMove?.(p, x, y),\n });\n }, [optsRef]);\n}\n"],"mappings":";;;;AAmBA,IAAMA,oBAAY,IAAI,IAAc,GAChCC,IAA6F;AAEjG,SAASC,EAAiB,GAA4B;CAEpD,OADAF,EAAU,IAAIG,CAAI,SACL;EAEX,AADIF,GAAY,aAAaE,MAAM,EAAW,WAAW,OACzDH,EAAU,OAAOG,CAAI;CACvB;AACF;AAEA,SAASC,EAAS,GAAW,GAAW,GAA+B;CACrE,IAAMC,IAAK,SAAS,iBAAiBC,GAAGC,CAAC;CACzC,IAAI,CAACF,GAAI,OAAO;CAChB,KAAK,IAAMG,KAAKR,GACd,IAAIQ,EAAE,GAAG,SAASH,CAAE,KAAKG,EAAE,QAAQC,CAAI,GAAG,OAAOD;CAEnD,OAAO;AACT;AAEA,SAASE,EAAa,GAAqB,GAAmC;CAC5E,IAAMC,IAAOC,EAAO,sBAAsB,GACpCC,IAAQD,EAAO,UAAU,EAAI;CAYnC,IAXA,EAAM,MAAM,WAAW,SACvB,EAAM,MAAM,OAAO,KACnB,EAAM,MAAM,MAAM,KAClB,EAAM,MAAM,QAAQ,GAAGD,EAAK,MAAM,KAClC,EAAM,MAAM,SAAS,GAAGA,EAAK,OAAO,KACpC,EAAM,MAAM,SAAS,KACrB,EAAM,MAAM,gBAAgB,QAC5B,EAAM,MAAM,UAAU,QACtB,EAAM,MAAM,SAAS,SACrB,EAAM,MAAM,aAAa,QACzB,EAAM,MAAM,kBAAkB,iBAC1BG,EAAQ,IAAI,SAAS,GAAG;EAC1B,IAAMC,IAAQ,SAAS,cAAc,KAAK;EAY1C,AAXA,EAAM,cAAc,OAAOD,EAAQ,IAAI,MAAM,GAC7C,EAAM,MAAM,WAAW,YACvB,EAAM,MAAM,MAAM,QAClB,EAAM,MAAM,QAAQ,QACpB,EAAM,MAAM,aAAa,WACzB,EAAM,MAAM,QAAQ,QACpB,EAAM,MAAM,eAAe,SAC3B,EAAM,MAAM,UAAU,WACtB,EAAM,MAAM,aAAa,QACzB,EAAM,MAAM,WAAW,QACvB,EAAM,MAAM,YAAY,6BACxBD,EAAM,YAAYE,CAAK;CACzB;CACA,OAAOF;AACT;AAEA,SAASG,EAAc,GAAiB,GAAW,GAAW;CAC5D,EAAG,MAAM,YAAY,aAAaV,IAAID,EAAG,cAAc,EAAE,MAAME,IAAIF,EAAG,eAAe,EAAE;AACzF;AASA,SAASY,EACP,GACA,GACA,GACA,GACA,GACkB;CAClB,IAAIhB,GAAY,OAAO;CACvB,IAAMiB,IAAQC,EAAQP,GAAQE,CAAO;CAGrC,AAFA,SAAS,KAAK,YAAYI,CAAK,GAC/BF,EAAcE,GAAOE,GAAQC,CAAM,GACnC,IAAa;EAAE;EAAS;EAAO,UAAU;CAAK;CAE9C,IAAMC,UAAiB;EAErB,AADArB,GAAY,MAAM,OAAO,GACzB,IAAa;CACf;CAEA,OAAO;EACL,KAAK,GAAG;GACN,IAAI,CAACA,GAAY;GACjB,EAAcA,EAAW,OAAOsB,EAAE,SAASA,EAAE,OAAO;GACpD,IAAMpB,IAAOC,EAASmB,EAAE,SAASA,EAAE,SAAST,EAAQ,IAAI;GAMxD,AALIX,MAASF,EAAW,aACtBA,EAAW,UAAU,SAAS,EAAK,GACnCE,GAAM,SAAS,EAAI,GACnB,EAAW,WAAWA,IAExBA,GAAM,SAASW,GAASS,EAAE,SAASA,EAAE,OAAO;EAC9C;EACA,KAAK,GAAG;GACN,IAAI,CAACtB,GAAY;GACjB,IAAME,IAAOC,EAASmB,EAAE,SAASA,EAAE,SAAST,EAAQ,IAAI,GAClDU,IAAUvB,EAAW;GAC3B,EAAW,UAAU,SAAS,EAAK;GAGnC,IAAI;IACF,AAAIE,KAAMA,EAAK,OAAOqB,GAASD,EAAE,SAASA,EAAE,OAAO;GACrD,SAASE,GAAK;IACZ,QAAQ,MAAM,8CAA8CA,CAAG;GACjE,UAAU;IACR,EAAS;GACX;EACF;EACA,SAAS;GAEP,AADAxB,GAAY,UAAU,SAAS,EAAK,GACpCqB,EAAS;EACX;CACF;AACF;AAQA,SAAgBI,EACd,GACA,GACA;CACA,IAAMC,IAAUC,EAAUC,CAAO,GAK3BC,IAAOC,EAA8B,IAAI;CAqC/C,OApCAC,cAAsB;EAAE,EAAK,SAAS,OAAO;CAAG,GAAG,CAAC,CAAC,GAoC9C;EAAE,eAlCaC,GAAa,MAAuC;GACxE,IAAI,EAAE,gBAAgB,WAAW,EAAE,WAAW,GAAG;GACjD,IAAMC,IAAS,EAAE;GACjB,IAAI,EAAE,kBAAkB,eAAe,EAAE,OAAO,QAAQ,iCAAiC,GAAG;GAC5F,IAAMC,IAAQ;IAAE,SAAS,EAAE;IAAS,SAAS,EAAE;GAAQ,GACnDjB,IAA0B,MAC1BkB,IAAO;GAKX,EAAK,UAAUC,EAAmBH,GAAQ,GAAG;IAC3C,SAAS,MAAO;KACd,IAAIhB,GAAO;MAAE,EAAM,KAAKoB,CAAE;MAAG;KAAQ;KAErC,IADIF,KACA,CAACG,EAAkBJ,GAAOG,CAAE,GAAG;KACnC,IAAO;KACP,IAAMxB,IAAU0B,EAAW;KAC3B,AAAK1B,MACLoB,EAAO,iBACL,UACC,MAAO;MAAwB,AAAtBO,EAAG,gBAAgB,GAAGA,EAAG,eAAe;KAAG,GACrD;MAAE,SAAS;MAAM,MAAM;KAAK,CAC9B,GACA,IAAQxB,EACNH,GAASoB,GAAQI,EAAG,SAASA,EAAG,SAChCX,EAAQ,SAAS,eAAejB,CAClC;IACF;IACA,QAAQ,MAAO;KAAuB,AAArB,EAAK,UAAU,MAAMQ,GAAO,KAAKoB,CAAE;IAAG;IACvD,gBAAgB;KAAuB,AAArB,EAAK,UAAU,MAAMpB,GAAO,OAAO;IAAG;GAC1D,GAAG,EAAE,SAAS,GAAM,CAAC;EACvB,GAAG,CAACsB,GAAYb,CAAO,CAEd;EAAe,OAAO,EAAE,aAAa,OAAgB;CAAE;AAClE;AAWA,SAAgBe,EAAmC,GAA+C;CAChG,IAAMf,IAAUC,EAAUe,CAAI,GACxBC,IAAab,EAA4B,IAAI;CACnD,OAAOE,GAAa,MAAiB;EAGnC,AAFAW,EAAW,UAAU,GACrB,EAAW,UAAU,MAChBvC,MACL,EAAW,UAAUH,EAAiB;GACpC;GACA,UAAU,MAAMyB,EAAQ,QAAQ,QAAQkB,CAAC;GACzC,SAAS,GAAG,GAAG,MAAMlB,EAAQ,QAAQ,OAAOmB,GAAGxC,GAAGC,CAAC;GACnD,SAAS,MAAMoB,EAAQ,QAAQ,SAASoB,CAAC;GACzC,SAAS,GAAG,GAAG,MAAMpB,EAAQ,QAAQ,SAASmB,GAAGxC,GAAGC,CAAC;EACvD,CAAC;CACH,GAAG,CAACoB,CAAO,CAAC;AACd"}
@@ -0,0 +1,42 @@
1
+ import { isPathLike as e } from "../../actions/resize/autoPoseDescriptor.js";
2
+ import { boundsOfPath as t, translatePath as n } from "@weasel-js/geom";
3
+ //#region src/interactions/gestures/shared/originProjection.ts
4
+ var r = {
5
+ getOrigin: (e) => ({
6
+ x: e.x,
7
+ y: e.y
8
+ }),
9
+ translate: (e, t, n) => ({
10
+ ...e,
11
+ x: e.x + t,
12
+ y: e.y + n
13
+ })
14
+ }, i = {
15
+ getOrigin: (n) => {
16
+ if (e(n)) {
17
+ let e = t(n);
18
+ return {
19
+ x: e.x,
20
+ y: e.y
21
+ };
22
+ }
23
+ let r = n;
24
+ return {
25
+ x: r.x,
26
+ y: r.y
27
+ };
28
+ },
29
+ translate: (t, r, i) => {
30
+ if (e(t)) return n(t, r, i);
31
+ let a = t;
32
+ return {
33
+ ...a,
34
+ x: a.x + r,
35
+ y: a.y + i
36
+ };
37
+ }
38
+ };
39
+ //#endregion
40
+ export { i as AUTO_ORIGIN_PROJECTION, r as RECT_ORIGIN_PROJECTION };
41
+
42
+ //# sourceMappingURL=originProjection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"originProjection.js","names":["RECT_ORIGIN_PROJECTION","p","dx","dy","AUTO_ORIGIN_PROJECTION","isPathLike","b","boundsOfPath","translatePath","r"],"sources":["../../../../src/interactions/gestures/shared/originProjection.ts"],"sourcesContent":["import { isPathLike } from 'interactions/actions/resize/autoPoseDescriptor';\nimport { boundsOfPath, translatePath, type Path } from '@weasel-js/geom';\n\n/**\n * How a snap reads and moves a pose that doesn't expose `{x,y}` directly\n * (Path, polygon, etc.): `getOrigin` gives the point a snap strategy rounds,\n * and `translate` moves the pose by the resulting delta.\n */\nexport interface OriginProjection<TPose> {\n getOrigin(pose: TPose): { x: number; y: number };\n translate(pose: TPose, dx: number, dy: number): TPose;\n}\n\n/** Identity projection for `TPose extends { x; y }`. */\nexport const RECT_ORIGIN_PROJECTION: OriginProjection<{ x: number; y: number }> = {\n getOrigin: (p) => ({ x: p.x, y: p.y }),\n translate: (p, dx, dy) => ({ ...p, x: p.x + dx, y: p.y + dy }),\n};\n\n/** Per-call dispatch: routes Path-shaped poses to the path origin/translate\n * helpers and everything else to `RECT_ORIGIN_PROJECTION`. The default for\n * `snap` and the snap strategies, so consumers with Path TPose don't have to\n * thread `pathOriginProjection` explicitly. */\nexport const AUTO_ORIGIN_PROJECTION: OriginProjection<unknown> = {\n getOrigin: (p) => {\n if (isPathLike(p)) {\n const b = boundsOfPath(p as Path);\n return { x: b.x, y: b.y };\n }\n const r = p as { x: number; y: number };\n return { x: r.x, y: r.y };\n },\n translate: (p, dx, dy) => {\n if (isPathLike(p)) return translatePath(p as Path, dx, dy);\n const r = p as { x: number; y: number };\n return { ...r, x: r.x + dx, y: r.y + dy };\n },\n};\n"],"mappings":";;;AAcA,IAAaA,IAAqE;CAChF,YAAY,OAAO;EAAE,GAAGC,EAAE;EAAG,GAAGA,EAAE;CAAE;CACpC,YAAY,GAAG,GAAI,OAAQ;EAAE,GAAGA;EAAG,GAAGA,EAAE,IAAIC;EAAI,GAAGD,EAAE,IAAIE;CAAG;AAC9D,GAMaC,IAAoD;CAC/D,YAAY,MAAM;EAChB,IAAIC,EAAWJ,CAAC,GAAG;GACjB,IAAMK,IAAIC,EAAaN,CAAS;GAChC,OAAO;IAAE,GAAGK,EAAE;IAAG,GAAGA,EAAE;GAAE;EAC1B;EACA,IAAM,IAAIL;EACV,OAAO;GAAE,GAAG,EAAE;GAAG,GAAG,EAAE;EAAE;CAC1B;CACA,YAAY,GAAG,GAAI,MAAO;EACxB,IAAII,EAAWJ,CAAC,GAAG,OAAOO,EAAcP,GAAWC,GAAIC,CAAE;EACzD,IAAMM,IAAIR;EACV,OAAO;GAAE,GAAGQ;GAAG,GAAGA,EAAE,IAAIP;GAAI,GAAGO,EAAE,IAAIN;EAAG;CAC1C;AACF"}
@@ -0,0 +1,21 @@
1
+ import { pxExtent as e } from "../../../core/viewport/pxExtent.js";
2
+ //#region src/interactions/gestures/shared/screenTolerance.ts
3
+ function t(t, n) {
4
+ let r = n.view;
5
+ return r ? e(t, r.scale) : {
6
+ x: t,
7
+ y: t
8
+ };
9
+ }
10
+ function n(e) {
11
+ let t = e.view;
12
+ return () => t?.get() ?? null;
13
+ }
14
+ function r(e) {
15
+ let t = e.view;
16
+ return () => t?.plane?.() ?? null;
17
+ }
18
+ //#endregion
19
+ export { r as gesturePlaneReader, n as gestureViewReader, t as screenTolerance };
20
+
21
+ //# sourceMappingURL=screenTolerance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenTolerance.js","names":["screenTolerance","view","ctx","pxExtent","px","gestureViewReader","api","deps","gesturePlaneReader"],"sources":["../../../../src/interactions/gestures/shared/screenTolerance.ts"],"sourcesContent":["import type { View } from 'core/viewport/view';\nimport type { PlaneMap } from 'core/viewport/parallax';\nimport { pxExtent } from 'core/viewport/pxExtent';\nimport type { GestureContext } from '../types';\nimport type { ViewApi } from 'interactions/actions/depSchema';\n\n/** A screen-pixel tolerance in world units, per axis, through the camera of\n * the view the gesture landed in. With no view, one pixel is one unit. */\nexport function screenTolerance(\n px: number,\n ctx: Pick<GestureContext<unknown>, 'view'>,\n): { x: number; y: number } {\n const view: View | null = ctx.view;\n return view ? pxExtent(px, view.scale) : { x: px, y: px };\n}\n\n/** Reads the camera the gesture's `deps.view` answers for — the routed\n * view's, when the surface hosts several. Capture it at `start`: the\n * dispatcher hands `onMove` no deps. */\nexport function gestureViewReader(deps: { view?: unknown }): () => View | null {\n const api = deps.view as ViewApi | undefined;\n return () => api?.get() ?? null;\n}\n\n/** Reads the plane the gesture edits in, off the same `deps.view` — see\n * `ViewApi.plane`. Null in the camera's own world. */\nexport function gesturePlaneReader(deps: { view?: unknown }): () => PlaneMap | null {\n const api = deps.view as ViewApi | undefined;\n return () => api?.plane?.() ?? null;\n}\n"],"mappings":";;AAQA,SAAgBA,EACd,GACA,GAC0B;CAC1B,IAAMC,IAAoBC,EAAI;CAC9B,OAAOD,IAAOE,EAASC,GAAIH,EAAK,KAAK,IAAI;EAAE,GAAGG;EAAI,GAAGA;CAAG;AAC1D;AAKA,SAAgBC,EAAkB,GAA6C;CAC7E,IAAMC,IAAMC,EAAK;CACjB,aAAaD,GAAK,IAAI,KAAK;AAC7B;AAIA,SAAgBE,EAAmB,GAAiD;CAClF,IAAMF,IAAMC,EAAK;CACjB,aAAaD,GAAK,QAAQ,KAAK;AACjC"}
@@ -0,0 +1,24 @@
1
+ import { AUTO_ORIGIN_PROJECTION as e } from "./originProjection.js";
2
+ //#region src/interactions/gestures/shared/snap.ts
3
+ function t(t, n = {}) {
4
+ let { bypassKey: r } = n, i = n.origin ?? e;
5
+ return { onMove(e, n) {
6
+ if (r && e.modifiers[r] || n.kind !== "translate") return;
7
+ let a = e.draggedIds[0];
8
+ if (a === void 0) return;
9
+ let o = e.origin.get(a);
10
+ if (o === void 0) return;
11
+ let s = i.translate(o, n.dx, n.dy), c = t.snap(s, e);
12
+ if (c === null) return;
13
+ let l = i.getOrigin(o), u = i.getOrigin(c);
14
+ return { transform: {
15
+ kind: "translate",
16
+ dx: u.x - l.x,
17
+ dy: u.y - l.y
18
+ } };
19
+ } };
20
+ }
21
+ //#endregion
22
+ export { t as snap };
23
+
24
+ //# sourceMappingURL=snap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snap.js","names":["snap","opts","proj","AUTO_ORIGIN_PROJECTION","bypassKey","ctx","transform","primaryId","originPose","proposed","snapped","strategy","o0","o1"],"sources":["../../../../src/interactions/gestures/shared/snap.ts"],"sourcesContent":["import type { MoveBehavior, ModifierState, SnapStrategy } from '../types';\nimport {\n AUTO_ORIGIN_PROJECTION,\n type OriginProjection,\n} from './originProjection';\n\ntype ModKey = keyof ModifierState;\n\n/**\n * Generic snap behavior factory: wraps a `SnapStrategy` and returns a\n * `MoveBehavior` whose `onMove` returns a uniform `GroupTransform`.\n *\n * Implementation:\n * 1. Compute the primary's proposed pose by applying the gesture's\n * `transform` (translate) to `origin.get(primaryId)`.\n * 2. Call `strategy.snap(proposed)`. If null, no-op.\n * 3. Derive the snapped delta via the `OriginProjection`:\n * dx = origin(snapped).x - origin(originPose).x\n * ...so the gesture applies the same delta to every dragged id.\n *\n * The pose-shape-aware delta extraction lives here — gestures stay pose-shape\n * agnostic. Default projection reads a rect's `{x, y}` or a Path's bounds\n * origin, the same default the snap strategies use.\n * Pass `origin` for exotic poses.\n */\nexport function snap<TPose>(\n strategy: SnapStrategy<TPose>,\n opts: { bypassKey?: ModKey; origin?: OriginProjection<TPose> } = {},\n): MoveBehavior<TPose> {\n const { bypassKey } = opts;\n const proj: OriginProjection<TPose> = opts.origin\n ?? (AUTO_ORIGIN_PROJECTION as unknown as OriginProjection<TPose>);\n return {\n onMove(ctx, transform) {\n if (bypassKey && ctx.modifiers[bypassKey]) return;\n // The new contract: behaviors see a GroupTransform, not a pose. But\n // strategies still operate on poses. Reconstruct the proposed pose\n // by applying the (translate) transform to the primary's origin.\n if (transform.kind !== 'translate') return;\n const primaryId = ctx.draggedIds[0];\n if (primaryId === undefined) return;\n const originPose = ctx.origin.get(primaryId);\n if (originPose === undefined) return;\n const proposed = proj.translate(originPose, transform.dx, transform.dy);\n const snapped = strategy.snap(proposed, ctx);\n if (snapped === null) return;\n const o0 = proj.getOrigin(originPose);\n const o1 = proj.getOrigin(snapped);\n return {\n transform: { kind: 'translate', dx: o1.x - o0.x, dy: o1.y - o0.y },\n };\n },\n };\n}\n"],"mappings":";;AAyBA,SAAgBA,EACd,GACA,IAAiE,CAAC,GAC7C;CACrB,IAAM,EAAE,iBAAcC,GAChBC,IAAgCD,EAAK,UACrCE;CACN,OAAO,EACL,OAAO,GAAK,GAAW;EAKrB,IAJIC,KAAaC,EAAI,UAAUD,MAI3BE,EAAU,SAAS,aAAa;EACpC,IAAMC,IAAYF,EAAI,WAAW;EACjC,IAAIE,MAAc,KAAA,GAAW;EAC7B,IAAMC,IAAaH,EAAI,OAAO,IAAIE,CAAS;EAC3C,IAAIC,MAAe,KAAA,GAAW;EAC9B,IAAMC,IAAWP,EAAK,UAAUM,GAAYF,EAAU,IAAIA,EAAU,EAAE,GAChEI,IAAUC,EAAS,KAAKF,GAAUJ,CAAG;EAC3C,IAAIK,MAAY,MAAM;EACtB,IAAME,IAAKV,EAAK,UAAUM,CAAU,GAC9BK,IAAKX,EAAK,UAAUQ,CAAO;EACjC,OAAO,EACL,WAAW;GAAE,MAAM;GAAa,IAAIG,EAAG,IAAID,EAAG;GAAG,IAAIC,EAAG,IAAID,EAAG;EAAE,EACnE;CACF,EACF;AACF"}
@@ -0,0 +1,30 @@
1
+ import { openPointerSession as e, pastDragThreshold as t } from "@weasel-js/routing";
2
+ //#region src/interactions/gestures/thresholdDrag/thresholdDrag.ts
3
+ function n(n, r) {
4
+ let i = {
5
+ clientX: n.clientX,
6
+ clientY: n.clientY
7
+ }, a = !1, o = (e) => {
8
+ a || t(i, e, r.threshold) && (a = !0, r.onActivate?.(e));
9
+ }, s = e(r.origin ?? n.currentTarget, n, {
10
+ onMove: (e) => {
11
+ o(e), a && r.onMove(e);
12
+ },
13
+ onEnd: (e) => {
14
+ a ? r.onCommit(e) : r.onClick?.(e);
15
+ },
16
+ onCancel: () => {
17
+ r.onCancel?.();
18
+ }
19
+ });
20
+ return {
21
+ isDragging: () => a,
22
+ cancel: () => {
23
+ s.cancel();
24
+ }
25
+ };
26
+ }
27
+ //#endregion
28
+ export { n as startThresholdDrag };
29
+
30
+ //# sourceMappingURL=thresholdDrag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thresholdDrag.js","names":["startThresholdDrag","start","e","activated","maybeActivate","pastDragThreshold","ev","opts","session","openPointerSession"],"sources":["../../../../src/interactions/gestures/thresholdDrag/thresholdDrag.ts"],"sourcesContent":["import { openPointerSession, pastDragThreshold } from '@weasel-js/routing';\n\n/**\n * A drag that does not start until the pointer has moved far enough to mean\n * it. Below the threshold the gesture is still a click; above it, `onActivate`\n * fires once and every later move is a drag.\n *\n * The pointer lifecycle underneath — capture, pointer identity, lost-capture\n * and missed-release recovery, teardown — belongs to `openPointerSession`.\n */\nexport interface ThresholdDragOptions {\n /** Travel, in CSS pixels, that makes the press a drag. Default `DRAG_THRESHOLD_PX`. */\n threshold?: number;\n /** Element the session opens on. Defaults to `e.currentTarget`; a list must\n * pass its container, since a grabbed row unmounting drops capture. */\n origin?: Element;\n onActivate?: (e: PointerEvent) => void;\n onMove: (e: PointerEvent) => void;\n onCommit: (e: PointerEvent) => void;\n /** Released below the threshold — the click the press turned out to be. */\n onClick?: (e: PointerEvent) => void;\n /** Ended without a release: pointercancel, lost capture, or `cancel()`. */\n onCancel?: () => void;\n}\n\n/** Handle returned by `startThresholdDrag` exposing live gesture state. */\nexport interface ThresholdDragHandle {\n /** True after the pointer has moved past `threshold` and the drag is live. */\n isDragging: () => boolean;\n /** End the gesture now, as a cancel. For an unmount, an Escape, or any other\n * rule the caller owns. */\n cancel: () => void;\n}\n\n/** Begin a threshold-gated drag from a React PointerDown event; returns a handle exposing live state. */\nexport function startThresholdDrag(\n e: React.PointerEvent,\n opts: ThresholdDragOptions,\n): ThresholdDragHandle {\n const start = { clientX: e.clientX, clientY: e.clientY };\n let activated = false;\n\n const maybeActivate = (ev: PointerEvent) => {\n if (activated) return;\n if (!pastDragThreshold(start, ev, opts.threshold)) return;\n activated = true;\n opts.onActivate?.(ev);\n };\n\n const session = openPointerSession(opts.origin ?? (e.currentTarget as Element), e, {\n onMove: (ev) => {\n maybeActivate(ev);\n if (activated) opts.onMove(ev);\n },\n onEnd: (ev) => {\n if (activated) opts.onCommit(ev);\n else opts.onClick?.(ev);\n },\n onCancel: () => { opts.onCancel?.(); },\n });\n\n return {\n isDragging: () => activated,\n cancel: () => { session.cancel(); },\n };\n}\n"],"mappings":";;AAmCA,SAAgBA,EACd,GACA,GACqB;CACrB,IAAMC,IAAQ;EAAE,SAASC,EAAE;EAAS,SAASA,EAAE;CAAQ,GACnDC,IAAY,IAEVC,KAAiB,MAAqB;EAC1C,AAAID,KACCE,EAAkBJ,GAAOK,GAAIC,EAAK,SAAS,MAChD,IAAY,IACZA,EAAK,aAAaD,CAAE;CACtB,GAEME,IAAUC,EAAmBF,EAAK,UAAWL,EAAE,eAA2BA,GAAG;EACjF,SAAS,MAAO;GAEd,AADAE,EAAcE,CAAE,GACZH,KAAWI,EAAK,OAAOD,CAAE;EAC/B;EACA,QAAQ,MAAO;GACb,AAAIH,IAAWI,EAAK,SAASD,CAAE,IAC1BC,EAAK,UAAUD,CAAE;EACxB;EACA,gBAAgB;GAAE,EAAK,WAAW;EAAG;CACvC,CAAC;CAED,OAAO;EACL,kBAAkBH;EAClB,cAAc;GAAE,EAAQ,OAAO;EAAG;CACpC;AACF"}
@@ -0,0 +1,36 @@
1
+ import { IDENTITY_POSE_COMPOSITION as e } from "../core/scene/composeFrame.js";
2
+ import { poseDescriptorForNode as t } from "../core/geometry/poseDescriptor.js";
3
+ import { AUTO_POSE_DESCRIPTOR as n } from "../interactions/actions/resize/autoPoseDescriptor.js";
4
+ import { runLayoutPass as r } from "../core/scene/layoutPass.js";
5
+ import { useEffect as i } from "react";
6
+ import { useLatest as a } from "@weasel-js/react";
7
+ //#region src/layout/arrivals.ts
8
+ function o(i, a) {
9
+ let { layouts: o } = a, s = typeof o == "function" ? o : (e) => o[e] ?? null, c = (e) => i.layoutOf(e) ?? s(e), l = a.poseDescriptor ?? n, u = (e) => t(l, i.get(e)), d = {
10
+ bounds: (e, t) => u(t).getBounds(e),
11
+ remap: (e, t, n, r) => u(r).remapBounds(e, t, n),
12
+ composition: a.poseComposition ?? e
13
+ };
14
+ return (e, t, n) => r(i, c, e, t, d, n);
15
+ }
16
+ function s(e, t) {
17
+ let n = a(t), r = t.layouts !== void 0;
18
+ i(() => {
19
+ if (r) return e.setArrivalHandler((t, r, i) => {
20
+ let { layouts: a, poseDescriptor: s, poseComposition: c } = n.current;
21
+ return a ? o(e, {
22
+ layouts: a,
23
+ poseDescriptor: s,
24
+ poseComposition: c
25
+ })(t, r, i) : /* @__PURE__ */ new Map();
26
+ });
27
+ }, [
28
+ e,
29
+ r,
30
+ n
31
+ ]);
32
+ }
33
+ //#endregion
34
+ export { o as layoutArrivalHandler, s as useLayoutArrivals };
35
+
36
+ //# sourceMappingURL=arrivals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrivals.js","names":["layoutArrivalHandler","opts","getLayout","layouts","id","layoutOf","scene","d","AUTO_POSE_DESCRIPTOR","descriptorOf","poseDescriptorForNode","frame","pose","from","to","IDENTITY_POSE_COMPOSITION","runLayoutPass","arrivals","changed","departures","useLayoutArrivals","latest","useLatest","wired"],"sources":["../../src/layout/arrivals.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { useLatest } from '@weasel-js/react';\nimport { runLayoutPass, type ResolvedLayoutFrame } from 'core/scene/layoutPass';\nimport type { NodeId, Scene, SceneArrivalHandler } from 'core/scene/types';\nimport { poseDescriptorForNode, type PoseDescriptor } from 'core/geometry/poseDescriptor';\nimport { AUTO_POSE_DESCRIPTOR } from 'interactions/actions/resize/autoPoseDescriptor';\nimport { IDENTITY_POSE_COMPOSITION, type PoseComposition } from 'features/groups/composePose';\nimport type { LayoutStrategy } from './types';\n\n/** Where a container's layout comes from: a map by container id, or a\n * resolver. The same shape `<SceneCanvas layouts>` takes. */\nexport type LayoutSource<TPose> =\n | Record<string, LayoutStrategy<TPose>>\n | ((containerId: string) => LayoutStrategy<TPose> | null);\n\n/** Options for {@link layoutArrivalHandler} and {@link useLayoutArrivals}. */\nexport interface LayoutArrivalOptions<TPose> {\n layouts: LayoutSource<TPose>;\n /** How poses are read and resized. Default `AUTO_POSE_DESCRIPTOR`. */\n poseDescriptor?: PoseDescriptor<TPose>;\n /** How a child's stored pose folds into its parent's frame. Default: the\n * absolute-pose model, where it does not. */\n poseComposition?: PoseComposition<TPose>;\n}\n\n/**\n * A scene arrival handler over `layouts`: the scene's own layout pass\n * (`depart` for children that left a container, `arrive` for children that\n * joined it, `childPoses` for any other change to its children or size),\n * measured through the canvas's pose\n * descriptor and composition. A container that declares its own layout\n * (`ContainerNode.layout`) is arranged by that one; `layouts` fills in for\n * the rest.\n */\nexport function layoutArrivalHandler<TData, TLayer extends string, TPose>(\n scene: Scene<TData, TLayer, TPose>,\n opts: LayoutArrivalOptions<TPose>,\n): SceneArrivalHandler<TPose> {\n const { layouts } = opts;\n const getLayout = typeof layouts === 'function'\n ? layouts\n : (id: string) => layouts[id] ?? null;\n const layoutOf = (id: NodeId) => scene.layoutOf(id) ?? getLayout(id as string);\n const d = (opts.poseDescriptor ?? AUTO_POSE_DESCRIPTOR) as PoseDescriptor<TPose>;\n const descriptorOf = (id: NodeId) => poseDescriptorForNode(d, scene.get(id));\n const frame: ResolvedLayoutFrame<TPose> = {\n bounds: (pose, id) => descriptorOf(id).getBounds(pose),\n remap: (pose, from, to, id) => descriptorOf(id).remapBounds(pose, from, to),\n composition: (opts.poseComposition ?? IDENTITY_POSE_COMPOSITION) as PoseComposition<TPose>,\n };\n return (arrivals, changed, departures) =>\n runLayoutPass(scene, layoutOf, arrivals, changed, frame, departures);\n}\n\n/**\n * Install {@link layoutArrivalHandler} on `scene` for as long as the calling\n * component is mounted. `<SceneCanvas layouts>` does this itself; call it\n * when a canvas is wired by hand through `sceneToAdapter({ layouts })`.\n */\nexport function useLayoutArrivals<TData, TLayer extends string, TPose>(\n scene: Scene<TData, TLayer, TPose>,\n opts: Partial<LayoutArrivalOptions<TPose>>,\n): void {\n const latest = useLatest(opts);\n const wired = opts.layouts !== undefined;\n useEffect(() => {\n if (!wired) return;\n return scene.setArrivalHandler((arrivals, changed, departures) => {\n const { layouts, poseDescriptor, poseComposition } = latest.current;\n if (!layouts) return new Map();\n return layoutArrivalHandler(scene, { layouts, poseDescriptor, poseComposition })(arrivals, changed, departures);\n });\n }, [scene, wired, latest]);\n}\n"],"mappings":";;;;;;;AAkCA,SAAgBA,EACd,GACA,GAC4B;CAC5B,IAAM,EAAE,eAAYC,GACdC,IAAY,OAAOC,KAAY,aACjCA,KACC,MAAeA,EAAQC,MAAO,MAC7BC,KAAY,MAAeC,EAAM,SAASF,CAAE,KAAKF,EAAUE,CAAY,GACvEG,IAAKN,EAAK,kBAAkBO,GAC5BC,KAAgB,MAAeC,EAAsBH,GAAGD,EAAM,IAAIF,CAAE,CAAC,GACrEO,IAAoC;EACxC,SAAS,GAAM,MAAOF,EAAaL,CAAE,CAAC,CAAC,UAAUQ,CAAI;EACrD,QAAQ,GAAM,GAAM,GAAI,MAAOH,EAAaL,CAAE,CAAC,CAAC,YAAYQ,GAAMC,GAAMC,CAAE;EAC1E,aAAcb,EAAK,mBAAmBc;CACxC;CACA,QAAQ,GAAU,GAAS,MACzBC,EAAcV,GAAOD,GAAUY,GAAUC,GAASP,GAAOQ,CAAU;AACvE;AAOA,SAAgBC,EACd,GACA,GACM;CACN,IAAMC,IAASC,EAAUrB,CAAI,GACvBsB,IAAQtB,EAAK,YAAY,KAAA;CAC/B,QAAgB;EACd,IAAKsB,GACL,OAAOjB,EAAM,mBAAmB,GAAU,GAAS,MAAe;GAChE,IAAM,EAAE,YAAS,mBAAgB,uBAAoBe,EAAO;GAE5D,OADKlB,IACEH,EAAqBM,GAAO;IAAE;IAAS;IAAgB;GAAgB,CAAC,CAAC,CAACW,GAAUC,GAASC,CAAU,oBADzF,IAAI,IAAI;EAE/B,CAAC;CACH,GAAG;EAACb;EAAOiB;EAAOF;CAAM,CAAC;AAC3B"}
@@ -1,119 +1,7 @@
1
- import { a as PolygonPath, b as PathFillRule, R as RectPath, P as Path } from './path-JEV2c5If.js';
2
- import { Point2, Bounds } from '@weasel-js/routing';
3
- import { b as RotatedPose } from './poseDescriptor-rZa9W5hJ.js';
4
1
  import '@weasel-js/geom';
5
- import './autoPoseDescriptor-_XOyF7t4.js';
6
-
7
- /**
8
- * Fluent builder for `PolygonPath`. Hides the `Uint8Array` / `Float32Array`
9
- * encoding behind move/line/curve/close calls and a final `build()`. Use
10
- * this to construct paths in tests and demos; production callers that need
11
- * to mutate large paths in place should reach for the raw arrays directly.
12
- *
13
- * Numeric capacity grows by doubling — typical for amortized O(1) push.
14
- *
15
- * Also exposes `rectPath` / `polygonFromPoints` shortcuts for the common
16
- * cases. `rectPath` returns the lighter `RectPath` subtype, not a polygon.
17
- */
18
-
19
- /** Fluent builder for `PolygonPath`; hides the `Uint8Array`/`Float32Array` encoding behind move/line/curve/close calls. */
20
- declare class PathBuilder {
21
- private cmds;
22
- private xs;
23
- private fillRule;
24
- /** Seed a builder with an existing `PolygonPath`. Useful for extending
25
- * an in-flight path with another segment (e.g. appending a cubic to
26
- * the end of a curve in response to a user action) without hand-
27
- * reaching into the `commands` / `coords` typed arrays.
28
- *
29
- * ```ts
30
- * const next = PathBuilder.fromPath(current).curveTo(...).build();
31
- * ```
32
- */
33
- static fromPath(path: PolygonPath): PathBuilder;
34
- setFillRule(rule: PathFillRule): this;
35
- moveTo(x: number, y: number): this;
36
- lineTo(x: number, y: number): this;
37
- /** Cubic bezier to (x, y) with control points (x1, y1) and (x2, y2). */
38
- curveTo(x1: number, y1: number, x2: number, y2: number, x: number, y: number): this;
39
- /** Quadratic bezier to (x, y) with control point (x1, y1). */
40
- quadTo(x1: number, y1: number, x: number, y: number): this;
41
- close(): this;
42
- build(): PolygonPath;
43
- }
44
- /** Construct a `RectPath` (the fast-path subtype). */
45
- declare function rectPath(x: number, y: number, width: number, height: number): RectPath;
46
- /** Build an open polyline from a flat list of points — the same geometry as
47
- * {@link polygonFromPoints} without the closing edge. A freehand stroke and a
48
- * measurement line want this; a region wants the closed one. */
49
- declare function polylineFromPoints(points: readonly {
50
- x: number;
51
- y: number;
52
- }[]): PolygonPath | RectPath;
53
- /** Build a closed polygon from a flat list of points. */
54
- declare function polygonFromPoints(points: readonly {
55
- x: number;
56
- y: number;
57
- }[], opts?: {
58
- fillRule?: PathFillRule;
59
- }): PolygonPath;
60
- /** Closed ellipse inscribed in `bounds`, as a 4-cubic-Bezier `PolygonPath`.
61
- * Matches the geometry `useEllipseTool`'s overlay paints. */
62
- declare function ellipsePath(bounds: {
63
- x: number;
64
- y: number;
65
- width: number;
66
- height: number;
67
- }): PolygonPath;
68
- /** Closed regular n-gon centered at `center`, circumscribed by `radius`.
69
- * `rotation` is in radians; default 0 puts the first vertex on the +x axis. */
70
- declare function regularPolygonPath(center: {
71
- x: number;
72
- y: number;
73
- }, radius: number, sides: number, rotation?: number): PolygonPath;
74
- /** Closed n-pointed star centered at `center`, alternating `outerRadius` and
75
- * `innerRadius` (default `outerRadius / 2`). `rotation` is in radians. */
76
- declare function starPath(center: {
77
- x: number;
78
- y: number;
79
- }, outerRadius: number, points?: number, innerRadius?: number, rotation?: number): PolygonPath;
80
- /** Open 2-vertex polyline from `a` to `b` — strokeable, not fillable. */
81
- declare function linePath(a: {
82
- x: number;
83
- y: number;
84
- }, b: {
85
- x: number;
86
- y: number;
87
- }): PolygonPath;
88
-
89
- /**
90
- * A station along a path: where it is at a fraction of its length, and which
91
- * way it is heading there.
92
- *
93
- * For anything positioned *along* geometry rather than beside it — a label on a
94
- * routed edge, a tick on a curve, a badge near an arrowhead. Curves are
95
- * flattened first, so the fraction is arc length along the drawn shape rather
96
- * than a curve parameter, which is what makes 0.5 look like the middle.
97
- */
98
-
99
- interface PathStation {
100
- point: Point2;
101
- /** Unit vector along the path at `point`, pointing toward the end. */
102
- tangent: Point2;
103
- }
104
- interface PointAlongPathOptions {
105
- /** Curve flattening tolerance, in world units. Default 0.5. */
106
- flattenTolerance?: number;
107
- }
108
- /**
109
- * Where `path` is at `t` of its total length, and its heading there.
110
- *
111
- * `t` is clamped to 0..1. Subpaths are measured in order and treated as one
112
- * run, the way a browser measures a whole `<path>`. Returns `null` for a path
113
- * with no points at all; a path of zero length answers at its single point,
114
- * heading along +X.
115
- */
116
- declare function pointAlongPath(path: Path, t: number, opts?: PointAlongPathOptions): PathStation | null;
2
+ import { Bounds } from '@weasel-js/routing';
3
+ import { b as RotatedPose } from './poseDescriptor-D-OH-tu5.js';
4
+ import './autoPoseDescriptor-vCdt55xm.js';
117
5
 
118
6
  /**
119
7
  * Minimal node interface for the simulation primitive. Matches d3-force's
@@ -237,6 +125,10 @@ declare const DEFAULT_VELOCITY_DECAY = 0.4;
237
125
  * this one.
238
126
  */
239
127
 
128
+ /**
129
+ * A d3-force-compatible simulation with no clock: nothing moves until `tick()`.
130
+ * Nodes are mutated in place, and primed with `index`, `vx` and `vy` on creation.
131
+ */
240
132
  declare function createSimulation<TNode extends SimulationNode>(opts: SimulationOptions<TNode>): SimulationCore<TNode>;
241
133
 
242
134
  /** AABB center of an unrotated rect — the canonical rotation pivot. */
@@ -265,4 +157,4 @@ declare function rotatedRectCorners(pose: RotatedPose): {
265
157
  * rect's local frame. */
266
158
  declare function pointInRotatedRect(pose: RotatedPose, worldX: number, worldY: number): boolean;
267
159
 
268
- export { DEFAULT_ALPHA_DECAY as D, PathBuilder as P, type SimulationNode as S, type UseSimulationOptions as U, type Simulation as a, DEFAULT_ALPHA_MIN as b, DEFAULT_VELOCITY_DECAY as c, type PathStation as d, type PointAlongPathOptions as e, type SimulationCore as f, type SimulationForce as g, type SimulationOptions as h, aabbCenter as i, createSimulation as j, ellipsePath as k, linePath as l, pointInRotatedRect as m, polygonFromPoints as n, polylineFromPoints as o, pointAlongPath as p, rectPath as q, rectCorners as r, regularPolygonPath as s, rotatePoint as t, rotatedRectCorners as u, starPath as v };
160
+ export { DEFAULT_ALPHA_DECAY as D, type SimulationNode as S, type UseSimulationOptions as U, type Simulation as a, DEFAULT_ALPHA_MIN as b, DEFAULT_VELOCITY_DECAY as c, type SimulationCore as d, type SimulationForce as e, type SimulationOptions as f, aabbCenter as g, createSimulation as h, rotatePoint as i, rotatedRectCorners as j, pointInRotatedRect as p, rectCorners as r };
package/dist/math.d.ts CHANGED
@@ -1,6 +1,5 @@
1
- export { P as Path, b as PathFillRule, a as PolygonPath, R as RectPath } from './path-JEV2c5If.js';
1
+ export { DEFAULT_FLATTEN_TOLERANCE, PATH_C, PATH_CMD_LENGTHS, PATH_L, PATH_M, PATH_Q, PATH_Z, Path, PathBuilder, PathFillRule, PolygonPath, RectPath, flattenCubic, flattenCubicWithArcLen, flattenQuadratic, flattenQuadraticWithArcLen, pathCommandCoordCount, pointAlongPath, polygonFromPoints, polylineFromPoints, rectPath } from '@weasel-js/geom';
2
2
  export { Point2 as Vec2 } from '@weasel-js/routing';
3
- export { P as PoseDescriptor, t as translatePoseViaDescriptor } from './poseDescriptor-rZa9W5hJ.js';
4
- export { P as PathBuilder, a as Simulation, f as SimulationCore, g as SimulationForce, S as SimulationNode, h as SimulationOptions, j as createSimulation, p as pointAlongPath, n as polygonFromPoints, o as polylineFromPoints, q as rectPath, t as rotatePoint } from './math-MCQcf_gc.js';
5
- export { DEFAULT_FLATTEN_TOLERANCE, PATH_C, PATH_CMD_LENGTHS, PATH_L, PATH_M, PATH_Q, PATH_Z, flattenCubic, flattenCubicWithArcLen, flattenQuadratic, flattenQuadraticWithArcLen, pathCommandCoordCount } from '@weasel-js/geom';
6
- export { A as AUTO_POSE_DESCRIPTOR } from './autoPoseDescriptor-_XOyF7t4.js';
3
+ export { P as PoseDescriptor, t as translatePoseViaDescriptor } from './poseDescriptor-D-OH-tu5.js';
4
+ export { a as Simulation, d as SimulationCore, e as SimulationForce, S as SimulationNode, f as SimulationOptions, h as createSimulation, i as rotatePoint } from './math-Drrw4ewZ.js';
5
+ export { A as AUTO_POSE_DESCRIPTOR } from './autoPoseDescriptor-vCdt55xm.js';
package/dist/math.js CHANGED
@@ -1,4 +1,6 @@
1
- export { createSimulation, pointAlongPath, rotatePoint } from './chunk-PNNZSYRD.js';
2
- export { AUTO_POSE_DESCRIPTOR, DEFAULT_FLATTEN_TOLERANCE, PATH_C, PATH_CMD_LENGTHS, PATH_L, PATH_M, PATH_Q, PATH_Z, PathBuilder, flattenCubic, flattenCubicWithArcLen, flattenQuadratic, flattenQuadraticWithArcLen, pathCommandCoordCount, polygonFromPoints, polylineFromPoints, rectPath, translatePoseViaDescriptor } from './chunk-L5YNZYEG.js';
3
- //# sourceMappingURL=math.js.map
4
- //# sourceMappingURL=math.js.map
1
+ import { createSimulation as e } from "./features/simulation/createSimulation.js";
2
+ import { translatePoseViaDescriptor as t } from "./core/geometry/poseDescriptor.js";
3
+ import { AUTO_POSE_DESCRIPTOR as n } from "./interactions/actions/resize/autoPoseDescriptor.js";
4
+ import { rotatePoint as r } from "./interactions/actions/rotate/geometry.js";
5
+ import { DEFAULT_FLATTEN_TOLERANCE as i, PATH_C as a, PATH_CMD_LENGTHS as o, PATH_L as s, PATH_M as c, PATH_Q as l, PATH_Z as u, PathBuilder as d, flattenCubic as f, flattenCubicWithArcLen as p, flattenQuadratic as m, flattenQuadraticWithArcLen as h, pathCommandCoordCount as g, pointAlongPath as _, polygonFromPoints as v, polylineFromPoints as y, rectPath as b } from "@weasel-js/geom";
6
+ export { n as AUTO_POSE_DESCRIPTOR, i as DEFAULT_FLATTEN_TOLERANCE, a as PATH_C, o as PATH_CMD_LENGTHS, s as PATH_L, c as PATH_M, l as PATH_Q, u as PATH_Z, d as PathBuilder, e as createSimulation, f as flattenCubic, p as flattenCubicWithArcLen, m as flattenQuadratic, h as flattenQuadraticWithArcLen, g as pathCommandCoordCount, _ as pointAlongPath, v as polygonFromPoints, y as polylineFromPoints, b as rectPath, r as rotatePoint, t as translatePoseViaDescriptor };