@weasel-js/core 1.9.3 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1139) hide show
  1. package/CHANGELOG.md +1106 -0
  2. package/README.md +7 -5
  3. package/dist/WeaselProvider.js +5 -7
  4. package/dist/WeaselProvider.js.map +1 -1
  5. package/dist/affordances/composeAffordanceLayer.js +91 -93
  6. package/dist/affordances/composeAffordanceLayer.js.map +1 -1
  7. package/dist/affordances/cornerResize.js +27 -18
  8. package/dist/affordances/cornerResize.js.map +1 -1
  9. package/dist/affordances/hitAffordanceRegions.js +65 -104
  10. package/dist/affordances/hitAffordanceRegions.js.map +1 -1
  11. package/dist/affordances/pathAnchors.js.map +1 -1
  12. package/dist/affordances/rotationHandle.js +22 -21
  13. package/dist/affordances/rotationHandle.js.map +1 -1
  14. package/dist/animation/behaviors/coast.js +21 -0
  15. package/dist/animation/behaviors/coast.js.map +1 -0
  16. package/dist/animation/behaviors/coastByWrite.js +107 -0
  17. package/dist/animation/behaviors/coastByWrite.js.map +1 -0
  18. package/dist/animation/behaviors/coastOnTargets.js +94 -0
  19. package/dist/animation/behaviors/coastOnTargets.js.map +1 -0
  20. package/dist/animation/behaviors/momentum.js +38 -88
  21. package/dist/animation/behaviors/momentum.js.map +1 -1
  22. package/dist/animation/clipTargets.js +12 -0
  23. package/dist/animation/clipTargets.js.map +1 -0
  24. package/dist/animation/index.js +15 -20
  25. package/dist/animation/poseHelpers.js +112 -33
  26. package/dist/animation/poseHelpers.js.map +1 -1
  27. package/dist/animation/poseTarget.js +115 -0
  28. package/dist/animation/poseTarget.js.map +1 -0
  29. package/dist/animation/reflow.js +113 -83
  30. package/dist/animation/reflow.js.map +1 -1
  31. package/dist/animation/rewind.js +66 -0
  32. package/dist/animation/rewind.js.map +1 -0
  33. package/dist/animation/rig/bindRig.js +85 -53
  34. package/dist/animation/rig/bindRig.js.map +1 -1
  35. package/dist/animation/rig/rigNode.js +93 -0
  36. package/dist/animation/rig/rigNode.js.map +1 -0
  37. package/dist/animation/rig/rigSeat.js +26 -0
  38. package/dist/animation/rig/rigSeat.js.map +1 -0
  39. package/dist/animation/rig/skinBinding.js +56 -0
  40. package/dist/animation/rig/skinBinding.js.map +1 -0
  41. package/dist/animation/rig/useRig.js +31 -16
  42. package/dist/animation/rig/useRig.js.map +1 -1
  43. package/dist/animation/wrappers/animateLifecycle.js +32 -24
  44. package/dist/animation/wrappers/animateLifecycle.js.map +1 -1
  45. package/dist/animation/wrappers/animateOnSetPose.js +31 -29
  46. package/dist/animation/wrappers/animateOnSetPose.js.map +1 -1
  47. package/dist/animation/wrappers/instantPose.js +13 -0
  48. package/dist/animation/wrappers/instantPose.js.map +1 -0
  49. package/dist/animation/writtenPoseTarget.js +33 -0
  50. package/dist/animation/writtenPoseTarget.js.map +1 -0
  51. package/dist/{autoPoseDescriptor-vCdt55xm.d.ts → autoPoseDescriptor-DHg5KqaJ.d.ts} +1 -1
  52. package/dist/barrel/canvas.js +31 -0
  53. package/dist/barrel/chrome.js +16 -0
  54. package/dist/barrel/input.js +18 -0
  55. package/dist/barrel/interactions.js +38 -0
  56. package/dist/barrel/paint.js +11 -0
  57. package/dist/barrel/paths.js +12 -0
  58. package/dist/barrel/renderer.js +14 -0
  59. package/dist/barrel/routing.js +57 -0
  60. package/dist/barrel/scene.js +37 -0
  61. package/dist/barrel/text.js +9 -0
  62. package/dist/barrel/viewport.js +42 -0
  63. package/dist/canvas/Canvas.js +280 -559
  64. package/dist/canvas/Canvas.js.map +1 -1
  65. package/dist/canvas/CanvasView.js +147 -167
  66. package/dist/canvas/CanvasView.js.map +1 -1
  67. package/dist/canvas/CursorCoordsHud.js +53 -49
  68. package/dist/canvas/CursorCoordsHud.js.map +1 -1
  69. package/dist/canvas/DrawCanvas.js +40 -51
  70. package/dist/canvas/DrawCanvas.js.map +1 -1
  71. package/dist/canvas/ModalityHud.js.map +1 -1
  72. package/dist/canvas/NodeShape.js +55 -374
  73. package/dist/canvas/NodeShape.js.map +1 -1
  74. package/dist/canvas/PickHud.js +50 -47
  75. package/dist/canvas/PickHud.js.map +1 -1
  76. package/dist/canvas/SceneCanvas/DevHuds.js +40 -0
  77. package/dist/canvas/SceneCanvas/DevHuds.js.map +1 -0
  78. package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js +126 -0
  79. package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js.map +1 -0
  80. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +27 -31
  81. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js.map +1 -1
  82. package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js +64 -0
  83. package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js.map +1 -0
  84. package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js +16 -0
  85. package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js.map +1 -0
  86. package/dist/canvas/SceneCanvas/coordTrace.js +46 -0
  87. package/dist/canvas/SceneCanvas/coordTrace.js.map +1 -0
  88. package/dist/canvas/SceneCanvas/defaultNodeProperties.js +138 -85
  89. package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -1
  90. package/dist/canvas/SceneCanvas/defaultNodeRouting.js +9 -8
  91. package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -1
  92. package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js.map +1 -1
  93. package/dist/canvas/SceneCanvas/features.js +74 -43
  94. package/dist/canvas/SceneCanvas/features.js.map +1 -1
  95. package/dist/canvas/SceneCanvas/isDev.js +12 -0
  96. package/dist/canvas/SceneCanvas/isDev.js.map +1 -0
  97. package/dist/canvas/SceneCanvas/poseGeometry.js +31 -34
  98. package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -1
  99. package/dist/canvas/SceneCanvas/poseRegistrars.js +13 -0
  100. package/dist/canvas/SceneCanvas/poseRegistrars.js.map +1 -0
  101. package/dist/canvas/SceneCanvas/props.js +39 -0
  102. package/dist/canvas/SceneCanvas/props.js.map +1 -0
  103. package/dist/canvas/SceneCanvas/toolRegistry.js +23 -0
  104. package/dist/canvas/SceneCanvas/toolRegistry.js.map +1 -0
  105. package/dist/canvas/SceneCanvas/useActionsPropResolver.js +6 -1
  106. package/dist/canvas/SceneCanvas/useActionsPropResolver.js.map +1 -1
  107. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js +21 -62
  108. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js.map +1 -1
  109. package/dist/canvas/SceneCanvas/useBuiltinTools.js +21 -0
  110. package/dist/canvas/SceneCanvas/useBuiltinTools.js.map +1 -0
  111. package/dist/canvas/SceneCanvas/useCanvasCamera.js +38 -0
  112. package/dist/canvas/SceneCanvas/useCanvasCamera.js.map +1 -0
  113. package/dist/canvas/SceneCanvas/useCanvasDispatcher.js +20 -0
  114. package/dist/canvas/SceneCanvas/useCanvasDispatcher.js.map +1 -0
  115. package/dist/canvas/SceneCanvas/useCanvasSelection.js +16 -0
  116. package/dist/canvas/SceneCanvas/useCanvasSelection.js.map +1 -0
  117. package/dist/canvas/SceneCanvas/useCanvasTools.js +67 -0
  118. package/dist/canvas/SceneCanvas/useCanvasTools.js.map +1 -0
  119. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js +29 -29
  120. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js.map +1 -1
  121. package/dist/canvas/SceneCanvas/useHeldModifiers.js +20 -0
  122. package/dist/canvas/SceneCanvas/useHeldModifiers.js.map +1 -0
  123. package/dist/canvas/SceneCanvas/useNodeAtPoint.js +26 -0
  124. package/dist/canvas/SceneCanvas/useNodeAtPoint.js.map +1 -0
  125. package/dist/canvas/SceneCanvas/useNodeKinds.js +26 -0
  126. package/dist/canvas/SceneCanvas/useNodeKinds.js.map +1 -0
  127. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +48 -48
  128. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js.map +1 -1
  129. package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js +47 -0
  130. package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js.map +1 -0
  131. package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js +66 -0
  132. package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js.map +1 -0
  133. package/dist/canvas/SceneCanvas/useSceneChrome.js +59 -0
  134. package/dist/canvas/SceneCanvas/useSceneChrome.js.map +1 -0
  135. package/dist/canvas/SceneCanvas/useSceneRedrawSources.js +23 -0
  136. package/dist/canvas/SceneCanvas/useSceneRedrawSources.js.map +1 -0
  137. package/dist/canvas/SceneCanvas/useSceneSelectTool.js +74 -78
  138. package/dist/canvas/SceneCanvas/useSceneSelectTool.js.map +1 -1
  139. package/dist/canvas/SceneCanvas/useSceneSlotLayers.js +37 -0
  140. package/dist/canvas/SceneCanvas/useSceneSlotLayers.js.map +1 -0
  141. package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js +38 -0
  142. package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js.map +1 -0
  143. package/dist/canvas/SceneCanvas/useViewLayerGate.js +20 -0
  144. package/dist/canvas/SceneCanvas/useViewLayerGate.js.map +1 -0
  145. package/dist/canvas/SceneCanvas/useViewportActions.js +9 -1
  146. package/dist/canvas/SceneCanvas/useViewportActions.js.map +1 -1
  147. package/dist/canvas/SceneCanvas/worldPointAt.js +9 -0
  148. package/dist/canvas/SceneCanvas/worldPointAt.js.map +1 -0
  149. package/dist/canvas/SceneCanvas.js +311 -969
  150. package/dist/canvas/SceneCanvas.js.map +1 -1
  151. package/dist/canvas/SceneViewCanvas.js +42 -46
  152. package/dist/canvas/SceneViewCanvas.js.map +1 -1
  153. package/dist/canvas/adapterDerivedPath.js +26 -0
  154. package/dist/canvas/adapterDerivedPath.js.map +1 -0
  155. package/dist/canvas/affordanceAt.js +11 -1
  156. package/dist/canvas/affordanceAt.js.map +1 -1
  157. package/dist/canvas/buildSceneLayer.js +111 -0
  158. package/dist/canvas/buildSceneLayer.js.map +1 -0
  159. package/dist/canvas/buildSceneTree.js +16 -19
  160. package/dist/canvas/buildSceneTree.js.map +1 -1
  161. package/dist/canvas/canvasRenderer.js +67 -55
  162. package/dist/canvas/canvasRenderer.js.map +1 -1
  163. package/dist/canvas/colorOverrides.js.map +1 -1
  164. package/dist/canvas/defaultDrawOne.js +12 -12
  165. package/dist/canvas/defaultDrawOne.js.map +1 -1
  166. package/dist/canvas/deps/areaSelect.js +4 -4
  167. package/dist/canvas/deps/areaSelect.js.map +1 -1
  168. package/dist/canvas/deps/changes.js +13 -0
  169. package/dist/canvas/deps/changes.js.map +1 -0
  170. package/dist/canvas/deps/debug.js.map +1 -1
  171. package/dist/canvas/deps/editAnchors.js +38 -57
  172. package/dist/canvas/deps/editAnchors.js.map +1 -1
  173. package/dist/canvas/deps/geometryProjection.js.map +1 -1
  174. package/dist/canvas/deps/hitTestArea.js +31 -26
  175. package/dist/canvas/deps/hitTestArea.js.map +1 -1
  176. package/dist/canvas/deps/insert.js +130 -91
  177. package/dist/canvas/deps/insert.js.map +1 -1
  178. package/dist/canvas/deps/lassoSelect.js +5 -5
  179. package/dist/canvas/deps/lassoSelect.js.map +1 -1
  180. package/dist/canvas/deps/poseDescriptor.js +1 -1
  181. package/dist/canvas/deps/poseDescriptor.js.map +1 -1
  182. package/dist/canvas/deps/resizePolicy.js.map +1 -1
  183. package/dist/canvas/deps/slice.js +26 -26
  184. package/dist/canvas/deps/slice.js.map +1 -1
  185. package/dist/canvas/deps/textEdit.js +6 -5
  186. package/dist/canvas/deps/textEdit.js.map +1 -1
  187. package/dist/canvas/deps/view.js.map +1 -1
  188. package/dist/canvas/derivedPath.js +47 -22
  189. package/dist/canvas/derivedPath.js.map +1 -1
  190. package/dist/canvas/drawEnvelope.js +8 -4
  191. package/dist/canvas/drawEnvelope.js.map +1 -1
  192. package/dist/canvas/getNodeAtPoint.js +4 -8
  193. package/dist/canvas/getNodeAtPoint.js.map +1 -1
  194. package/dist/canvas/hud.module.js +1 -1
  195. package/dist/canvas/hud.module.js.map +1 -1
  196. package/dist/canvas/insertPreviewExtent.js.map +1 -1
  197. package/dist/canvas/kitRequirements.js +2 -2
  198. package/dist/canvas/kitRequirements.js.map +1 -1
  199. package/dist/canvas/layerOrder.js +13 -6
  200. package/dist/canvas/layerOrder.js.map +1 -1
  201. package/dist/canvas/layerSlots.js +6 -1
  202. package/dist/canvas/layerSlots.js.map +1 -1
  203. package/dist/canvas/nodeShapes/derivedPainter.js +34 -0
  204. package/dist/canvas/nodeShapes/derivedPainter.js.map +1 -0
  205. package/dist/canvas/nodeShapes/imagePainter.js +87 -0
  206. package/dist/canvas/nodeShapes/imagePainter.js.map +1 -0
  207. package/dist/canvas/nodeShapes/memo.js +9 -0
  208. package/dist/canvas/nodeShapes/memo.js.map +1 -0
  209. package/dist/canvas/nodeShapes/nodePaint.js +68 -0
  210. package/dist/canvas/nodeShapes/nodePaint.js.map +1 -0
  211. package/dist/canvas/nodeShapes/pathPainter.js +39 -0
  212. package/dist/canvas/nodeShapes/pathPainter.js.map +1 -0
  213. package/dist/canvas/nodeShapes/poseBox.js +20 -0
  214. package/dist/canvas/nodeShapes/poseBox.js.map +1 -0
  215. package/dist/canvas/nodeShapes/rectFallbackPainter.js +38 -0
  216. package/dist/canvas/nodeShapes/rectFallbackPainter.js.map +1 -0
  217. package/dist/canvas/nodeShapes/shapePainter.js +72 -0
  218. package/dist/canvas/nodeShapes/shapePainter.js.map +1 -0
  219. package/dist/canvas/nodeShapes/textPainter.js +55 -0
  220. package/dist/canvas/nodeShapes/textPainter.js.map +1 -0
  221. package/dist/canvas/overlayRoleStrokes.js.map +1 -1
  222. package/dist/canvas/paintCull.js +11 -14
  223. package/dist/canvas/paintCull.js.map +1 -1
  224. package/dist/{features/cursor → canvas}/paintedCursorLayer.js +2 -2
  225. package/dist/canvas/paintedCursorLayer.js.map +1 -0
  226. package/dist/canvas/pickWalk.js +59 -68
  227. package/dist/canvas/pickWalk.js.map +1 -1
  228. package/dist/canvas/planeClips.js +18 -19
  229. package/dist/canvas/planeClips.js.map +1 -1
  230. package/dist/canvas/poseCascade.js +41 -0
  231. package/dist/canvas/poseCascade.js.map +1 -0
  232. package/dist/canvas/poseRotation.js +9 -23
  233. package/dist/canvas/poseRotation.js.map +1 -1
  234. package/dist/canvas/rasterReadback.js +22 -0
  235. package/dist/canvas/rasterReadback.js.map +1 -0
  236. package/dist/canvas/renderDebugSnapshot.js +11 -11
  237. package/dist/canvas/renderDebugSnapshot.js.map +1 -1
  238. package/dist/canvas/renderNeeds.js +3 -3
  239. package/dist/canvas/renderNeeds.js.map +1 -1
  240. package/dist/canvas/renderSceneToPixels.js +64 -81
  241. package/dist/canvas/renderSceneToPixels.js.map +1 -1
  242. package/dist/canvas/sceneAdapter.js +68 -214
  243. package/dist/canvas/sceneAdapter.js.map +1 -1
  244. package/dist/canvas/sceneClipboard.js +112 -0
  245. package/dist/canvas/sceneClipboard.js.map +1 -0
  246. package/dist/canvas/sceneLayerPaint.js +4 -4
  247. package/dist/canvas/sceneLayerPaint.js.map +1 -1
  248. package/dist/canvas/sceneSlotWiring.js.map +1 -1
  249. package/dist/canvas/sceneViewRender.js +39 -39
  250. package/dist/canvas/sceneViewRender.js.map +1 -1
  251. package/dist/canvas/slopsDebugLayer.js +4 -4
  252. package/dist/canvas/slopsDebugLayer.js.map +1 -1
  253. package/dist/canvas/surface.module.js +6 -0
  254. package/dist/canvas/surface.module.js.map +1 -0
  255. package/dist/canvas/surfaceBox.js +16 -0
  256. package/dist/canvas/surfaceBox.js.map +1 -0
  257. package/dist/canvas/useCanvasRenderer.js +26 -6
  258. package/dist/canvas/useCanvasRenderer.js.map +1 -1
  259. package/dist/canvas/useCanvasSurface.js +31 -0
  260. package/dist/canvas/useCanvasSurface.js.map +1 -0
  261. package/dist/canvas/useCanvasView.js +67 -0
  262. package/dist/canvas/useCanvasView.js.map +1 -0
  263. package/dist/canvas/useFrameLoop.js +39 -31
  264. package/dist/canvas/useFrameLoop.js.map +1 -1
  265. package/dist/canvas/useHostAnchor.js +35 -33
  266. package/dist/canvas/useHostAnchor.js.map +1 -1
  267. package/dist/canvas/useLateContentRedraw.js +8 -8
  268. package/dist/canvas/useLateContentRedraw.js.map +1 -1
  269. package/dist/canvas/useSceneLayerList.js +11 -0
  270. package/dist/canvas/useSceneLayerList.js.map +1 -0
  271. package/dist/canvas/useSurfaceInput.js +42 -0
  272. package/dist/canvas/useSurfaceInput.js.map +1 -0
  273. package/dist/canvas/useToolCursor.js +29 -0
  274. package/dist/canvas/useToolCursor.js.map +1 -0
  275. package/dist/canvas/useViewHelpers.js +46 -85
  276. package/dist/canvas/useViewHelpers.js.map +1 -1
  277. package/dist/canvas/viewInputs.js.map +1 -1
  278. package/dist/canvas/viewRegistry.js +25 -27
  279. package/dist/canvas/viewRegistry.js.map +1 -1
  280. package/dist/canvas/watchElementMove.js +43 -0
  281. package/dist/canvas/watchElementMove.js.map +1 -0
  282. package/dist/canvas/wrapNodeOutput.js.map +1 -1
  283. package/dist/clipboard.d.ts +16 -19
  284. package/dist/{types-B_9g6hMM.d.ts → clone-2a5hVbBd.d.ts} +123 -74
  285. package/dist/clone.d.ts +4 -7
  286. package/dist/clone.js +0 -2
  287. package/dist/core/device/index.js +5 -4
  288. package/dist/core/device/targets.js.map +1 -1
  289. package/dist/core/device/useDeviceProfile.js +38 -44
  290. package/dist/core/device/useDeviceProfile.js.map +1 -1
  291. package/dist/core/device/watchDevicePixelRatio.js +17 -0
  292. package/dist/core/device/watchDevicePixelRatio.js.map +1 -0
  293. package/dist/{interactions/actions/resize → core/geometry}/autoPoseDescriptor.js +8 -7
  294. package/dist/core/geometry/autoPoseDescriptor.js.map +1 -0
  295. package/dist/core/geometry/pathPoseDescriptor.js +88 -0
  296. package/dist/core/geometry/pathPoseDescriptor.js.map +1 -0
  297. package/dist/core/geometry/poseDescriptor.js +68 -19
  298. package/dist/core/geometry/poseDescriptor.js.map +1 -1
  299. package/dist/core/geometry/regionHit.js +31 -34
  300. package/dist/core/geometry/regionHit.js.map +1 -1
  301. package/dist/core/geometry/targetFrame.js +94 -0
  302. package/dist/core/geometry/targetFrame.js.map +1 -0
  303. package/dist/core/geometry/unionBounds.js +30 -29
  304. package/dist/core/geometry/unionBounds.js.map +1 -1
  305. package/dist/core/isPlainObject.js +2 -11
  306. package/dist/core/layers/backgroundFill.js +31 -0
  307. package/dist/core/layers/backgroundFill.js.map +1 -0
  308. package/dist/{features/groups → core/layers}/children.js +1 -1
  309. package/dist/core/layers/children.js.map +1 -0
  310. package/dist/core/layers/gateLayer.js +13 -0
  311. package/dist/core/layers/gateLayer.js.map +1 -0
  312. package/dist/core/layers/layerGroup.js +40 -0
  313. package/dist/core/layers/layerGroup.js.map +1 -0
  314. package/dist/core/layers/render.js +50 -76
  315. package/dist/core/layers/render.js.map +1 -1
  316. package/dist/core/ops/arrange.js +1 -0
  317. package/dist/core/ops/arrange.js.map +1 -1
  318. package/dist/core/ops/create.js +10 -5
  319. package/dist/core/ops/create.js.map +1 -1
  320. package/dist/core/ops/createHistory.js +9 -9
  321. package/dist/core/ops/createHistory.js.map +1 -1
  322. package/dist/core/ops/delete.js +12 -24
  323. package/dist/core/ops/delete.js.map +1 -1
  324. package/dist/core/ops/reorder/index.js +43 -40
  325. package/dist/core/ops/reorder/index.js.map +1 -1
  326. package/dist/core/ops/reorder/setChildOrder.js +34 -0
  327. package/dist/core/ops/reorder/setChildOrder.js.map +1 -0
  328. package/dist/core/paint/meshKind.js +16 -0
  329. package/dist/core/paint/meshKind.js.map +1 -0
  330. package/dist/{features/meshPaint/lazyKind.js → core/paint/meshKindLazy.js} +282 -105
  331. package/dist/core/paint/meshKindLazy.js.map +1 -0
  332. package/dist/core/paint/paintKindEntry.js +8 -0
  333. package/dist/core/paint/paintKindEntry.js.map +1 -0
  334. package/dist/core/paint/paintKinds.js +144 -0
  335. package/dist/core/paint/paintKinds.js.map +1 -0
  336. package/dist/core/paint/registerMesh.js +7 -0
  337. package/dist/core/paint/registerMesh.js.map +1 -0
  338. package/dist/core/scene/NodeProperties.js.map +1 -1
  339. package/dist/core/scene/NodeRouting.js.map +1 -1
  340. package/dist/core/scene/appliedLog.js +37 -0
  341. package/dist/core/scene/appliedLog.js.map +1 -0
  342. package/dist/core/scene/arrivalWindow.js +102 -0
  343. package/dist/core/scene/arrivalWindow.js.map +1 -0
  344. package/dist/core/scene/boundOps.js +40 -0
  345. package/dist/core/scene/boundOps.js.map +1 -0
  346. package/dist/core/scene/composeFrame.js +9 -6
  347. package/dist/core/scene/composeFrame.js.map +1 -1
  348. package/dist/{features/groups → core/scene}/composePose.js +18 -18
  349. package/dist/core/scene/composePose.js.map +1 -0
  350. package/dist/core/scene/depMemo.js +31 -6
  351. package/dist/core/scene/depMemo.js.map +1 -1
  352. package/dist/core/scene/derivedPath.js +19 -20
  353. package/dist/core/scene/derivedPath.js.map +1 -1
  354. package/dist/core/scene/editMode.js +26 -0
  355. package/dist/core/scene/editMode.js.map +1 -0
  356. package/dist/core/scene/effectivePose.js +38 -39
  357. package/dist/core/scene/effectivePose.js.map +1 -1
  358. package/dist/core/scene/fieldEdits.js +98 -0
  359. package/dist/core/scene/fieldEdits.js.map +1 -0
  360. package/dist/core/scene/historyFacade.js +130 -0
  361. package/dist/core/scene/historyFacade.js.map +1 -0
  362. package/dist/core/scene/historyForm.js +6 -0
  363. package/dist/core/scene/historyForm.js.map +1 -0
  364. package/dist/core/scene/kitOps.js +185 -0
  365. package/dist/core/scene/kitOps.js.map +1 -0
  366. package/dist/core/scene/kitRegistry.js.map +1 -1
  367. package/dist/core/scene/layerStack.js +131 -0
  368. package/dist/core/scene/layerStack.js.map +1 -0
  369. package/dist/core/scene/layoutPass.js +58 -59
  370. package/dist/core/scene/layoutPass.js.map +1 -1
  371. package/dist/core/scene/lockGuard.js +37 -0
  372. package/dist/core/scene/lockGuard.js.map +1 -0
  373. package/dist/{features/groups → core/scene}/nestedHit.js +3 -3
  374. package/dist/core/scene/nestedHit.js.map +1 -0
  375. package/dist/core/scene/nodeFnFields.js +10 -11
  376. package/dist/core/scene/nodeFnFields.js.map +1 -1
  377. package/dist/core/scene/nodeMemo.js +45 -19
  378. package/dist/core/scene/nodeMemo.js.map +1 -1
  379. package/dist/core/scene/nodeStore.js +127 -0
  380. package/dist/core/scene/nodeStore.js.map +1 -0
  381. package/dist/core/scene/notifier.js +37 -0
  382. package/dist/core/scene/notifier.js.map +1 -0
  383. package/dist/core/scene/opTable.js +50 -0
  384. package/dist/core/scene/opTable.js.map +1 -0
  385. package/dist/core/scene/outerOps.js +66 -0
  386. package/dist/core/scene/outerOps.js.map +1 -0
  387. package/dist/core/scene/poseFeed.js +38 -38
  388. package/dist/core/scene/poseFeed.js.map +1 -1
  389. package/dist/core/scene/poseHold.js +39 -0
  390. package/dist/core/scene/poseHold.js.map +1 -0
  391. package/dist/core/scene/poseOverrides.js +44 -40
  392. package/dist/core/scene/poseOverrides.js.map +1 -1
  393. package/dist/core/scene/poseSnapshot.js.map +1 -1
  394. package/dist/core/scene/reconcileSpecs.js +3 -2
  395. package/dist/core/scene/reconcileSpecs.js.map +1 -1
  396. package/dist/core/scene/recorder.js +86 -0
  397. package/dist/core/scene/recorder.js.map +1 -0
  398. package/dist/core/scene/renderOrder.js +84 -0
  399. package/dist/core/scene/renderOrder.js.map +1 -0
  400. package/dist/core/scene/scene.js +80 -1266
  401. package/dist/core/scene/scene.js.map +1 -1
  402. package/dist/core/scene/sceneEdits.js +58 -0
  403. package/dist/core/scene/sceneEdits.js.map +1 -0
  404. package/dist/core/scene/sceneMutators.js +49 -0
  405. package/dist/core/scene/sceneMutators.js.map +1 -0
  406. package/dist/core/scene/scenePoseAdapter.js +16 -0
  407. package/dist/core/scene/scenePoseAdapter.js.map +1 -0
  408. package/dist/core/scene/sceneRecording.js +90 -0
  409. package/dist/core/scene/sceneRecording.js.map +1 -0
  410. package/dist/core/scene/sceneSelection.js +28 -0
  411. package/dist/core/scene/sceneSelection.js.map +1 -0
  412. package/dist/core/scene/sceneState.js +49 -0
  413. package/dist/core/scene/sceneState.js.map +1 -0
  414. package/dist/core/scene/serialization.js +71 -0
  415. package/dist/core/scene/serialization.js.map +1 -0
  416. package/dist/core/scene/staleReplay.js +51 -0
  417. package/dist/core/scene/staleReplay.js.map +1 -0
  418. package/dist/core/scene/statedFields.js +9 -0
  419. package/dist/core/scene/statedFields.js.map +1 -0
  420. package/dist/core/scene/treeEdits.js +127 -0
  421. package/dist/core/scene/treeEdits.js.map +1 -0
  422. package/dist/core/scene/treeOrder.js +13 -0
  423. package/dist/core/scene/treeOrder.js.map +1 -0
  424. package/dist/core/scene/treeReads.js +26 -0
  425. package/dist/core/scene/treeReads.js.map +1 -0
  426. package/dist/core/scene/types.js.map +1 -1
  427. package/dist/{features/groups → core/scene}/unionOfChildren.js +3 -3
  428. package/dist/core/scene/unionOfChildren.js.map +1 -0
  429. package/dist/core/scene/unitScopes.js +13 -0
  430. package/dist/core/scene/unitScopes.js.map +1 -0
  431. package/dist/core/scene/useScene.js.map +1 -1
  432. package/dist/core/selection/readOnlySelection.js +32 -0
  433. package/dist/core/selection/readOnlySelection.js.map +1 -0
  434. package/dist/core/selection/usePublishSceneSelection.js +26 -0
  435. package/dist/core/selection/usePublishSceneSelection.js.map +1 -0
  436. package/dist/core/selection/useSelection.js +34 -25
  437. package/dist/core/selection/useSelection.js.map +1 -1
  438. package/dist/core/shapeKinds.js.map +1 -1
  439. package/dist/core/stylus/stylus.js.map +1 -1
  440. package/dist/core/stylus/usePointerStylus.js.map +1 -1
  441. package/dist/core/usePaintKinds.js +1 -1
  442. package/dist/core/usePaintKinds.js.map +1 -1
  443. package/dist/core/viewport/clientToWorld.js.map +1 -1
  444. package/dist/core/viewport/fitViewToBounds.js.map +1 -1
  445. package/dist/core/viewport/parallax.js.map +1 -1
  446. package/dist/core/viewport/screenSlop.js +11 -11
  447. package/dist/core/viewport/screenSlop.js.map +1 -1
  448. package/dist/core/viewport/useCanvasSize.js.map +1 -1
  449. package/dist/core/viewport/useDecayLoop.js +8 -8
  450. package/dist/core/viewport/useDecayLoop.js.map +1 -1
  451. package/dist/core/viewport/useNodeOverlayFrame.js +84 -0
  452. package/dist/core/viewport/useNodeOverlayFrame.js.map +1 -0
  453. package/dist/core/viewport/useViewAnimation.js +102 -43
  454. package/dist/core/viewport/useViewAnimation.js.map +1 -1
  455. package/dist/core/viewport/view.js +9 -9
  456. package/dist/core/viewport/view.js.map +1 -1
  457. package/dist/core/viewport/wheelHandler.js.map +1 -1
  458. package/dist/core/viewport/zoomBounds.js +10 -8
  459. package/dist/core/viewport/zoomBounds.js.map +1 -1
  460. package/dist/{cornerHandles-BCrDp_mH.d.ts → cornerHandles-BEshc4z3.d.ts} +11 -24
  461. package/dist/debug/createDebugOverlayLayer.js +97 -97
  462. package/dist/debug/createDebugOverlayLayer.js.map +1 -1
  463. package/dist/debug/createDebugSink.js.map +1 -1
  464. package/dist/debug/flag.js +2 -41
  465. package/dist/debug/frameStats.js.map +1 -1
  466. package/dist/debug/useDebugSink.js +52 -0
  467. package/dist/debug/useDebugSink.js.map +1 -0
  468. package/dist/features/chrome-caps/buildChromeCtx.js.map +1 -1
  469. package/dist/features/chrome-caps/conditions.js.map +1 -1
  470. package/dist/features/chrome-caps/defaults.js.map +1 -1
  471. package/dist/features/chrome-caps/resolve.js.map +1 -1
  472. package/dist/features/chrome-caps/useChromeCaps.js +54 -0
  473. package/dist/features/chrome-caps/useChromeCaps.js.map +1 -0
  474. package/dist/features/chrome-caps/useHoverTracking.js +22 -17
  475. package/dist/features/chrome-caps/useHoverTracking.js.map +1 -1
  476. package/dist/features/ingestion/contentHandlers.js +28 -19
  477. package/dist/features/ingestion/contentHandlers.js.map +1 -1
  478. package/dist/features/ingestion/imageHandler.js +21 -24
  479. package/dist/features/ingestion/imageHandler.js.map +1 -1
  480. package/dist/features/ingestion/openFilePicker.js.map +1 -1
  481. package/dist/features/ingestion/placement.js +16 -0
  482. package/dist/features/ingestion/placement.js.map +1 -0
  483. package/dist/features/ingestion/registerKitHandlers.js +7 -7
  484. package/dist/features/ingestion/svgHandler.js +5 -0
  485. package/dist/features/ingestion/svgHandler.js.map +1 -1
  486. package/dist/features/ingestion/textHandler.js +28 -0
  487. package/dist/features/ingestion/textHandler.js.map +1 -0
  488. package/dist/features/ingestion/useCanvasIngestion.js +48 -0
  489. package/dist/features/ingestion/useCanvasIngestion.js.map +1 -0
  490. package/dist/features/ingestion/weaselJsonHandler.js +22 -14
  491. package/dist/features/ingestion/weaselJsonHandler.js.map +1 -1
  492. package/dist/features/longPress/longPressFeedback.js.map +1 -1
  493. package/dist/features/modes/modeLayers.js +7 -7
  494. package/dist/features/modes/modeLayers.js.map +1 -1
  495. package/dist/features/paths/editablePath.js +47 -0
  496. package/dist/features/paths/editablePath.js.map +1 -0
  497. package/dist/features/paths/index.js +9 -14
  498. package/dist/features/paths/pathEditState.js +41 -0
  499. package/dist/features/paths/pathEditState.js.map +1 -0
  500. package/dist/features/paths/pathEditingOverlayLayer.js +36 -38
  501. package/dist/features/paths/pathEditingOverlayLayer.js.map +1 -1
  502. package/dist/features/paths/pathLayer.js +3 -2
  503. package/dist/features/paths/pathLayer.js.map +1 -1
  504. package/dist/features/paths/penPreviewLayer.js +86 -88
  505. package/dist/features/paths/penPreviewLayer.js.map +1 -1
  506. package/dist/features/paths/usePathEdit.js +34 -0
  507. package/dist/features/paths/usePathEdit.js.map +1 -0
  508. package/dist/features/poseRun/usePoseRun.js +44 -52
  509. package/dist/features/poseRun/usePoseRun.js.map +1 -1
  510. package/dist/features/selection/overlay.js +171 -179
  511. package/dist/features/selection/overlay.js.map +1 -1
  512. package/dist/features/text/index.js +6 -0
  513. package/dist/features/text/textLayer.js +1 -1
  514. package/dist/features/text/textLayer.js.map +1 -1
  515. package/dist/features/text/useSceneTextEdit.js +100 -93
  516. package/dist/features/text/useSceneTextEdit.js.map +1 -1
  517. package/dist/features/viewports/viewportLayer.js +25 -36
  518. package/dist/features/viewports/viewportLayer.js.map +1 -1
  519. package/dist/index.d.ts +8473 -9141
  520. package/dist/index.js +269 -307
  521. package/dist/input/keyState.js +38 -39
  522. package/dist/input/keyState.js.map +1 -1
  523. package/dist/input/useKeyModifiers.js +11 -0
  524. package/dist/input/useKeyModifiers.js.map +1 -0
  525. package/dist/interactions/actions/actionShortcuts.js.map +1 -1
  526. package/dist/interactions/actions/{defaults/align.js → align/action.js} +18 -20
  527. package/dist/interactions/actions/align/action.js.map +1 -0
  528. package/dist/interactions/actions/align/align.js +20 -20
  529. package/dist/interactions/actions/align/align.js.map +1 -1
  530. package/dist/interactions/actions/booleans/action.js +65 -0
  531. package/dist/interactions/actions/booleans/action.js.map +1 -0
  532. package/dist/interactions/actions/booleans/booleans.js +69 -78
  533. package/dist/interactions/actions/booleans/booleans.js.map +1 -1
  534. package/dist/interactions/actions/booleans/operands.js +40 -0
  535. package/dist/interactions/actions/booleans/operands.js.map +1 -0
  536. package/dist/interactions/actions/booleans/pieces.js +45 -0
  537. package/dist/interactions/actions/booleans/pieces.js.map +1 -0
  538. package/dist/interactions/actions/booleans/placement.js +24 -0
  539. package/dist/interactions/actions/booleans/placement.js.map +1 -0
  540. package/dist/interactions/actions/booleans/useBooleans.js +11 -9
  541. package/dist/interactions/actions/booleans/useBooleans.js.map +1 -1
  542. package/dist/interactions/actions/booleans/useBooleansAdapter.js.map +1 -1
  543. package/dist/interactions/actions/{defaults/clipboard.js → clipboard/action.js} +31 -15
  544. package/dist/interactions/actions/clipboard/action.js.map +1 -0
  545. package/dist/interactions/actions/clipboard/clipboardOps.js +44 -42
  546. package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -1
  547. package/dist/interactions/actions/clipboard/materializePaste.js +10 -7
  548. package/dist/interactions/actions/clipboard/materializePaste.js.map +1 -1
  549. package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -1
  550. package/dist/interactions/actions/clone/action.js +98 -0
  551. package/dist/interactions/actions/clone/action.js.map +1 -0
  552. package/dist/interactions/actions/clone/behaviors.js +52 -0
  553. package/dist/interactions/actions/clone/behaviors.js.map +1 -0
  554. package/dist/interactions/actions/defaultCommitAdapter.js +7 -32
  555. package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -1
  556. package/dist/interactions/actions/defaults/anchorEditing.js +60 -84
  557. package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -1
  558. package/dist/interactions/actions/defaults/areaSelect.js +35 -38
  559. package/dist/interactions/actions/defaults/areaSelect.js.map +1 -1
  560. package/dist/interactions/actions/defaults/cancelGesture.js.map +1 -1
  561. package/dist/interactions/actions/defaults/clearSelection.js.map +1 -1
  562. package/dist/interactions/actions/defaults/copySubtree.js +40 -0
  563. package/dist/interactions/actions/defaults/copySubtree.js.map +1 -0
  564. package/dist/interactions/actions/defaults/createPaintAction.js.map +1 -1
  565. package/dist/interactions/actions/defaults/delete.js.map +1 -1
  566. package/dist/interactions/actions/defaults/duplicate.js +13 -53
  567. package/dist/interactions/actions/defaults/duplicate.js.map +1 -1
  568. package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -1
  569. package/dist/interactions/actions/defaults/group.js +40 -50
  570. package/dist/interactions/actions/defaults/group.js.map +1 -1
  571. package/dist/interactions/actions/defaults/icons/booleanIcons.js +24 -1
  572. package/dist/interactions/actions/defaults/icons/booleanIcons.js.map +1 -1
  573. package/dist/interactions/actions/defaults/icons/outlineIcons.js +39 -1
  574. package/dist/interactions/actions/defaults/icons/outlineIcons.js.map +1 -1
  575. package/dist/interactions/actions/defaults/ingest.js +44 -38
  576. package/dist/interactions/actions/defaults/ingest.js.map +1 -1
  577. package/dist/interactions/actions/defaults/insertPathAnchor.js +11 -12
  578. package/dist/interactions/actions/defaults/insertPathAnchor.js.map +1 -1
  579. package/dist/interactions/actions/defaults/nudge.js +40 -69
  580. package/dist/interactions/actions/defaults/nudge.js.map +1 -1
  581. package/dist/interactions/actions/defaults/nudgeSteps.js +37 -0
  582. package/dist/interactions/actions/defaults/nudgeSteps.js.map +1 -0
  583. package/dist/interactions/actions/defaults/pinchZoom.js.map +1 -1
  584. package/dist/interactions/actions/defaults/reorder.js +2 -0
  585. package/dist/interactions/actions/defaults/reorder.js.map +1 -1
  586. package/dist/interactions/actions/defaults/requiresSelection.js.map +1 -1
  587. package/dist/interactions/actions/defaults/setFill.js +14 -8
  588. package/dist/interactions/actions/defaults/setFill.js.map +1 -1
  589. package/dist/interactions/actions/defaults/setFillOpacity.js +7 -4
  590. package/dist/interactions/actions/defaults/setFillOpacity.js.map +1 -1
  591. package/dist/interactions/actions/defaults/setStroke.js +12 -12
  592. package/dist/interactions/actions/defaults/setStroke.js.map +1 -1
  593. package/dist/interactions/actions/defaults/setStrokeOpacity.js +6 -6
  594. package/dist/interactions/actions/defaults/sliceOps.js +8 -10
  595. package/dist/interactions/actions/defaults/sliceOps.js.map +1 -1
  596. package/dist/interactions/actions/defaults/toolActivate.js.map +1 -1
  597. package/dist/interactions/actions/defaults/toolResetToDefault.js.map +1 -1
  598. package/dist/interactions/actions/defaults/viewportDragPan.js +37 -26
  599. package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -1
  600. package/dist/interactions/actions/defaults/viewportWheelPan.js.map +1 -1
  601. package/dist/interactions/actions/defaults/viewportZoom.js.map +1 -1
  602. package/dist/interactions/actions/distribute/action.js +66 -0
  603. package/dist/interactions/actions/distribute/action.js.map +1 -0
  604. package/dist/interactions/actions/distribute/distribute.js +11 -11
  605. package/dist/interactions/actions/distribute/distribute.js.map +1 -1
  606. package/dist/interactions/actions/{defaults/editAnchors.js → edit-anchors/action.js} +7 -9
  607. package/dist/interactions/actions/edit-anchors/action.js.map +1 -0
  608. package/dist/interactions/actions/edit-anchors/geometry.js +30 -27
  609. package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -1
  610. package/dist/interactions/actions/flip/action.js +124 -0
  611. package/dist/interactions/actions/flip/action.js.map +1 -0
  612. package/dist/interactions/actions/flip/helpers.js +30 -17
  613. package/dist/interactions/actions/flip/helpers.js.map +1 -1
  614. package/dist/interactions/actions/gestureFrames.js +18 -0
  615. package/dist/interactions/actions/gestureFrames.js.map +1 -0
  616. package/dist/interactions/actions/gestureLifecycle.js +47 -20
  617. package/dist/interactions/actions/gestureLifecycle.js.map +1 -1
  618. package/dist/interactions/actions/hitSelection.js +8 -0
  619. package/dist/interactions/actions/hitSelection.js.map +1 -0
  620. package/dist/interactions/actions/insert/action.js +72 -0
  621. package/dist/interactions/actions/insert/action.js.map +1 -0
  622. package/dist/interactions/actions/insert/commit.js +28 -0
  623. package/dist/interactions/actions/insert/commit.js.map +1 -0
  624. package/dist/interactions/actions/insert/extras.js +65 -0
  625. package/dist/interactions/actions/insert/extras.js.map +1 -0
  626. package/dist/interactions/actions/insert/frame.js +48 -0
  627. package/dist/interactions/actions/insert/frame.js.map +1 -0
  628. package/dist/interactions/actions/insert/geometry.js +35 -0
  629. package/dist/interactions/actions/insert/geometry.js.map +1 -0
  630. package/dist/interactions/actions/insert/rotateAction.js +21 -0
  631. package/dist/interactions/actions/insert/rotateAction.js.map +1 -0
  632. package/dist/interactions/actions/insert/session.js +59 -0
  633. package/dist/interactions/actions/insert/session.js.map +1 -0
  634. package/dist/interactions/actions/insert/shape.js +34 -0
  635. package/dist/interactions/actions/insert/shape.js.map +1 -0
  636. package/dist/interactions/actions/lasso-select/action.js +143 -0
  637. package/dist/interactions/actions/lasso-select/action.js.map +1 -0
  638. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js +14 -18
  639. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js.map +1 -1
  640. package/dist/interactions/actions/move/action.js +87 -0
  641. package/dist/interactions/actions/move/action.js.map +1 -0
  642. package/dist/interactions/actions/move/behaviors/layoutDrop.js +51 -0
  643. package/dist/interactions/actions/move/behaviors/layoutDrop.js.map +1 -0
  644. package/dist/interactions/actions/move/behaviors/reparentOnDrop.js +15 -0
  645. package/dist/interactions/actions/move/behaviors/reparentOnDrop.js.map +1 -0
  646. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js +5 -5
  647. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js.map +1 -1
  648. package/dist/interactions/actions/move/behaviors/snapToContainer.js +39 -27
  649. package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -1
  650. package/dist/interactions/actions/move/capture.js +99 -0
  651. package/dist/interactions/actions/move/capture.js.map +1 -0
  652. package/dist/interactions/actions/move/commit/index.js +41 -0
  653. package/dist/interactions/actions/move/commit/index.js.map +1 -0
  654. package/dist/interactions/actions/move/commit/layoutDrop.js +44 -0
  655. package/dist/interactions/actions/move/commit/layoutDrop.js.map +1 -0
  656. package/dist/interactions/actions/move/commit/layoutRelease.js +100 -0
  657. package/dist/interactions/actions/move/commit/layoutRelease.js.map +1 -0
  658. package/dist/interactions/actions/move/commit/rebase.js +18 -0
  659. package/dist/interactions/actions/move/commit/rebase.js.map +1 -0
  660. package/dist/interactions/actions/move/commit/reparent.js +65 -0
  661. package/dist/interactions/actions/move/commit/reparent.js.map +1 -0
  662. package/dist/interactions/actions/move/delta.js +51 -0
  663. package/dist/interactions/actions/move/delta.js.map +1 -0
  664. package/dist/interactions/actions/move/frame.js +59 -0
  665. package/dist/interactions/actions/move/frame.js.map +1 -0
  666. package/dist/interactions/actions/move/gestureAdapter.js +22 -30
  667. package/dist/interactions/actions/move/gestureAdapter.js.map +1 -1
  668. package/dist/interactions/actions/move/landedDescendants.js +33 -0
  669. package/dist/interactions/actions/move/landedDescendants.js.map +1 -0
  670. package/dist/interactions/actions/move/layout/container.js +94 -0
  671. package/dist/interactions/actions/move/layout/container.js.map +1 -0
  672. package/dist/interactions/actions/move/layout/dragged.js +58 -0
  673. package/dist/interactions/actions/move/layout/dragged.js.map +1 -0
  674. package/dist/interactions/actions/move/layout/dropPass.js +122 -0
  675. package/dist/interactions/actions/move/layout/dropPass.js.map +1 -0
  676. package/dist/interactions/actions/move/layout/exits.js +38 -0
  677. package/dist/interactions/actions/move/layout/exits.js.map +1 -0
  678. package/dist/interactions/actions/move/layout/glide.js +48 -0
  679. package/dist/interactions/actions/move/layout/glide.js.map +1 -0
  680. package/dist/interactions/actions/move/session.js +63 -0
  681. package/dist/interactions/actions/move/session.js.map +1 -0
  682. package/dist/interactions/actions/move/translate.js +61 -0
  683. package/dist/interactions/actions/move/translate.js.map +1 -0
  684. package/dist/interactions/actions/outlines/createOutlines.js +16 -63
  685. package/dist/interactions/actions/outlines/createOutlines.js.map +1 -1
  686. package/dist/interactions/actions/outlines/createOutlinesAction.js +51 -0
  687. package/dist/interactions/actions/outlines/createOutlinesAction.js.map +1 -0
  688. package/dist/interactions/actions/outlines/outlineStroke.js +72 -0
  689. package/dist/interactions/actions/outlines/outlineStroke.js.map +1 -0
  690. package/dist/interactions/actions/outlines/outlineStrokeAction.js +37 -0
  691. package/dist/interactions/actions/outlines/outlineStrokeAction.js.map +1 -0
  692. package/dist/interactions/actions/outlines/replaceWithPaths.js +54 -0
  693. package/dist/interactions/actions/outlines/replaceWithPaths.js.map +1 -0
  694. package/dist/interactions/actions/outlines/strokeRegion.js +27 -0
  695. package/dist/interactions/actions/outlines/strokeRegion.js.map +1 -0
  696. package/dist/interactions/actions/planeInput.js.map +1 -1
  697. package/dist/interactions/actions/pointerState.js +12 -0
  698. package/dist/interactions/actions/pointerState.js.map +1 -0
  699. package/dist/interactions/actions/poseDescriptorDep.js +16 -4
  700. package/dist/interactions/actions/poseDescriptorDep.js.map +1 -1
  701. package/dist/interactions/actions/poseFrame.js +25 -20
  702. package/dist/interactions/actions/poseFrame.js.map +1 -1
  703. package/dist/interactions/actions/resize/action.js +55 -0
  704. package/dist/interactions/actions/resize/action.js.map +1 -0
  705. package/dist/interactions/actions/resize/behaviors/lockAspect.js.map +1 -1
  706. package/dist/interactions/actions/resize/boxFrame.js +16 -0
  707. package/dist/interactions/actions/resize/boxFrame.js.map +1 -0
  708. package/dist/interactions/actions/resize/capture.js +85 -0
  709. package/dist/interactions/actions/resize/capture.js.map +1 -0
  710. package/dist/interactions/actions/resize/commit.js +69 -0
  711. package/dist/interactions/actions/resize/commit.js.map +1 -0
  712. package/dist/interactions/actions/resize/frame.js +74 -0
  713. package/dist/interactions/actions/resize/frame.js.map +1 -0
  714. package/dist/interactions/actions/resize/pointSnap.js +111 -0
  715. package/dist/interactions/actions/resize/pointSnap.js.map +1 -0
  716. package/dist/interactions/actions/resize/ruleBounds.js +9 -0
  717. package/dist/interactions/actions/resize/ruleBounds.js.map +1 -0
  718. package/dist/interactions/actions/resize/session.js +49 -0
  719. package/dist/interactions/actions/resize/session.js.map +1 -0
  720. package/dist/interactions/actions/resolveOverlays.js.map +1 -1
  721. package/dist/interactions/actions/resolvePreviews.js.map +1 -1
  722. package/dist/interactions/actions/rotate/action.js +56 -0
  723. package/dist/interactions/actions/rotate/action.js.map +1 -0
  724. package/dist/interactions/actions/rotate/behaviors/index.js +7 -0
  725. package/dist/interactions/actions/rotate/behaviors/index.js.map +1 -0
  726. package/dist/interactions/actions/rotate/behaviors/snapRotation.js +12 -0
  727. package/dist/interactions/actions/rotate/behaviors/snapRotation.js.map +1 -0
  728. package/dist/interactions/actions/rotate/commit.js +40 -0
  729. package/dist/interactions/actions/rotate/commit.js.map +1 -0
  730. package/dist/interactions/actions/rotate/frame.js +65 -0
  731. package/dist/interactions/actions/rotate/frame.js.map +1 -0
  732. package/dist/interactions/actions/rotate/handle.js +12 -12
  733. package/dist/interactions/actions/rotate/handle.js.map +1 -1
  734. package/dist/interactions/actions/rotate/session.js +92 -0
  735. package/dist/interactions/actions/rotate/session.js.map +1 -0
  736. package/dist/interactions/actions/selectionSubtree.js +69 -0
  737. package/dist/interactions/actions/selectionSubtree.js.map +1 -0
  738. package/dist/interactions/actions/spatialReference.js.map +1 -1
  739. package/dist/interactions/actions/useStandardActions.js +87 -78
  740. package/dist/interactions/actions/useStandardActions.js.map +1 -1
  741. package/dist/interactions/gestures/dragGesture/dragGesture.js +4 -7
  742. package/dist/interactions/gestures/dragGesture/dragGesture.js.map +1 -1
  743. package/dist/interactions/gestures/dragGesture/dragPointOf.js +23 -0
  744. package/dist/interactions/gestures/dragGesture/dragPointOf.js.map +1 -0
  745. package/dist/interactions/gestures/handleDrag/handleDrag.js +21 -26
  746. package/dist/interactions/gestures/handleDrag/handleDrag.js.map +1 -1
  747. package/dist/interactions/gestures/pointerDrag/pointerDrag.js +62 -41
  748. package/dist/interactions/gestures/pointerDrag/pointerDrag.js.map +1 -1
  749. package/dist/interactions/gestures/shared/originProjection.js +1 -1
  750. package/dist/interactions/gestures/shared/originProjection.js.map +1 -1
  751. package/dist/interactions/gestures/shared/screenTolerance.js +8 -2
  752. package/dist/interactions/gestures/shared/screenTolerance.js.map +1 -1
  753. package/dist/interactions/gestures/shared/snap.js.map +1 -1
  754. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js +8 -4
  755. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js.map +1 -1
  756. package/dist/layout/arrivals.js +20 -23
  757. package/dist/layout/arrivals.js.map +1 -1
  758. package/dist/math-CYUjoyyU.d.ts +33 -0
  759. package/dist/math.d.ts +5 -3
  760. package/dist/math.js +6 -6
  761. package/dist/mesh.d.ts +4 -268
  762. package/dist/mesh.js +3 -7
  763. package/dist/move.d.ts +14 -11
  764. package/dist/{originProjection-DEklpDc_.d.ts → originProjection-PPT88jZv.d.ts} +1 -1
  765. package/dist/patterns-builtin.d.ts +1 -118
  766. package/dist/patterns-builtin.js +2 -3
  767. package/dist/{poseDescriptor-D-OH-tu5.d.ts → poseDescriptor-Bqk-11Rl.d.ts} +26 -36
  768. package/dist/renderer.d.ts +1 -91
  769. package/dist/renderer.js +2 -18
  770. package/dist/resize.d.ts +10 -22
  771. package/dist/resize.js +6 -6
  772. package/dist/style.css +1 -1
  773. package/dist/test-hook/install.js +12 -6
  774. package/dist/test-hook/install.js.map +1 -1
  775. package/dist/test-hook/useTestHook.js +22 -0
  776. package/dist/test-hook/useTestHook.js.map +1 -0
  777. package/dist/test-seams-D0pyV3pR.d.ts +149 -0
  778. package/dist/test-seams.d.ts +4 -4
  779. package/dist/test-seams.js +2 -2
  780. package/dist/tools/builtin/bone/boneActions.js +130 -0
  781. package/dist/tools/builtin/bone/boneActions.js.map +1 -0
  782. package/dist/tools/builtin/bone/boneOverlay.js +58 -0
  783. package/dist/tools/builtin/bone/boneOverlay.js.map +1 -0
  784. package/dist/tools/builtin/bone/placedRig.js +24 -0
  785. package/dist/tools/builtin/bone/placedRig.js.map +1 -0
  786. package/dist/tools/builtin/bone/rigEditState.js +21 -0
  787. package/dist/tools/builtin/bone/rigEditState.js.map +1 -0
  788. package/dist/tools/builtin/bone/useBoneTool.js +98 -0
  789. package/dist/tools/builtin/bone/useBoneTool.js.map +1 -0
  790. package/dist/tools/builtin/ellipse/useEllipseTool.js +1 -0
  791. package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -1
  792. package/dist/tools/builtin/eyedropper/useEyedropperTool.js.map +1 -1
  793. package/dist/tools/builtin/hand/useHandTool.js +1 -0
  794. package/dist/tools/builtin/hand/useHandTool.js.map +1 -1
  795. package/dist/tools/builtin/image/useImageTool.js.map +1 -1
  796. package/dist/tools/builtin/lasso/useLassoTool.js +11 -11
  797. package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -1
  798. package/dist/tools/builtin/line/useLineTool.js +1 -0
  799. package/dist/tools/builtin/line/useLineTool.js.map +1 -1
  800. package/dist/tools/builtin/pen/usePenTool.js +198 -150
  801. package/dist/tools/builtin/pen/usePenTool.js.map +1 -1
  802. package/dist/tools/builtin/pencil/usePencilTool.js +1 -0
  803. package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -1
  804. package/dist/tools/builtin/pickTopMostHit.js.map +1 -1
  805. package/dist/tools/builtin/polygon/usePolygonTool.js +13 -8
  806. package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -1
  807. package/dist/tools/builtin/rect/useRectTool.js +1 -0
  808. package/dist/tools/builtin/rect/useRectTool.js.map +1 -1
  809. package/dist/tools/builtin/select/adapterPointQuery.js +36 -0
  810. package/dist/tools/builtin/select/adapterPointQuery.js.map +1 -0
  811. package/dist/tools/builtin/select/selectionContributions.js +25 -24
  812. package/dist/tools/builtin/select/selectionContributions.js.map +1 -1
  813. package/dist/tools/builtin/select/useSelectTool.js +42 -67
  814. package/dist/tools/builtin/select/useSelectTool.js.map +1 -1
  815. package/dist/tools/builtin/shared/pointerFollower.js +17 -0
  816. package/dist/tools/builtin/shared/pointerFollower.js.map +1 -0
  817. package/dist/tools/builtin/slice/useSliceTool.js +72 -82
  818. package/dist/tools/builtin/slice/useSliceTool.js.map +1 -1
  819. package/dist/tools/builtin/star/useStarTool.js +22 -16
  820. package/dist/tools/builtin/star/useStarTool.js.map +1 -1
  821. package/dist/tools/builtin/text/useTextTool.js +9 -0
  822. package/dist/tools/builtin/text/useTextTool.js.map +1 -1
  823. package/dist/tools/builtin/weight/useWeightTool.js +77 -0
  824. package/dist/tools/builtin/weight/useWeightTool.js.map +1 -0
  825. package/dist/tools/builtin/weight/weightActions.js +112 -0
  826. package/dist/tools/builtin/weight/weightActions.js.map +1 -0
  827. package/dist/tools/builtin/weight/weightOverlay.js +61 -0
  828. package/dist/tools/builtin/weight/weightOverlay.js.map +1 -0
  829. package/dist/tools/overlayBinding.js.map +1 -1
  830. package/dist/tools/useKeybindings.js +12 -22
  831. package/dist/tools/useKeybindings.js.map +1 -1
  832. package/dist/{types-A37hYkeR.d.ts → types-CIKDwlsP.d.ts} +113 -169
  833. package/dist/util/color.js +3 -3
  834. package/dist/util/color.js.map +1 -1
  835. package/dist/util/paint.js +1 -1
  836. package/dist/util/paint.js.map +1 -1
  837. package/dist/version.js +1 -1
  838. package/package.json +28 -21
  839. package/dist/animation/colorHelpers.js +0 -135
  840. package/dist/animation/colorHelpers.js.map +0 -1
  841. package/dist/animation/colorRegistry.js +0 -37
  842. package/dist/animation/colorRegistry.js.map +0 -1
  843. package/dist/animation/engine/axes.js +0 -36
  844. package/dist/animation/engine/axes.js.map +0 -1
  845. package/dist/animation/engine/codec.js +0 -170
  846. package/dist/animation/engine/codec.js.map +0 -1
  847. package/dist/animation/engine/integrator.js +0 -12
  848. package/dist/animation/engine/integrator.js.map +0 -1
  849. package/dist/animation/loop.js +0 -62
  850. package/dist/animation/loop.js.map +0 -1
  851. package/dist/animation/observe.js +0 -23
  852. package/dist/animation/observe.js.map +0 -1
  853. package/dist/animation/rig/blendPoses.js +0 -43
  854. package/dist/animation/rig/blendPoses.js.map +0 -1
  855. package/dist/animation/rig/mirrorPose.js +0 -19
  856. package/dist/animation/rig/mirrorPose.js.map +0 -1
  857. package/dist/animation/rig/resolveSkeleton.js +0 -33
  858. package/dist/animation/rig/resolveSkeleton.js.map +0 -1
  859. package/dist/animation/rig/solveIk.js +0 -103
  860. package/dist/animation/rig/solveIk.js.map +0 -1
  861. package/dist/animation/rig/types.js +0 -12
  862. package/dist/animation/rig/types.js.map +0 -1
  863. package/dist/animation/slew.js +0 -27
  864. package/dist/animation/slew.js.map +0 -1
  865. package/dist/animation/stagger.js +0 -138
  866. package/dist/animation/stagger.js.map +0 -1
  867. package/dist/animation/timeline/booking.js +0 -106
  868. package/dist/animation/timeline/booking.js.map +0 -1
  869. package/dist/animation/timeline/createTimeline.js +0 -116
  870. package/dist/animation/timeline/createTimeline.js.map +0 -1
  871. package/dist/animation/timeline/sampleTrack.js +0 -71
  872. package/dist/animation/timeline/sampleTrack.js.map +0 -1
  873. package/dist/animation/useAnimator.js +0 -378
  874. package/dist/animation/useAnimator.js.map +0 -1
  875. package/dist/builtins-C-VgUlWI.d.ts +0 -4514
  876. package/dist/canvas/MinimapCanvas.js +0 -139
  877. package/dist/canvas/MinimapCanvas.js.map +0 -1
  878. package/dist/canvas/deps/poseComposition.js +0 -11
  879. package/dist/canvas/deps/poseComposition.js.map +0 -1
  880. package/dist/canvas/minimapMath.js +0 -80
  881. package/dist/canvas/minimapMath.js.map +0 -1
  882. package/dist/canvas/toolPreview.js +0 -39
  883. package/dist/canvas/toolPreview.js.map +0 -1
  884. package/dist/core/adapters/arrayAdapter.js +0 -85
  885. package/dist/core/adapters/arrayAdapter.js.map +0 -1
  886. package/dist/core/adapters/useArrayAdapter.js +0 -13
  887. package/dist/core/adapters/useArrayAdapter.js.map +0 -1
  888. package/dist/core/fillInPoseFrame.js +0 -102
  889. package/dist/core/fillInPoseFrame.js.map +0 -1
  890. package/dist/core/geometry/poseRotation.js +0 -58
  891. package/dist/core/geometry/poseRotation.js.map +0 -1
  892. package/dist/core/gradient.js +0 -136
  893. package/dist/core/gradient.js.map +0 -1
  894. package/dist/core/isPlainObject.js.map +0 -1
  895. package/dist/core/markerInset.js +0 -24
  896. package/dist/core/markerInset.js.map +0 -1
  897. package/dist/core/mixed.js +0 -6
  898. package/dist/core/mixed.js.map +0 -1
  899. package/dist/core/paintKinds.js +0 -156
  900. package/dist/core/paintKinds.js.map +0 -1
  901. package/dist/core/strokeMarkerShapes.js +0 -139
  902. package/dist/core/strokeMarkerShapes.js.map +0 -1
  903. package/dist/core/strokeMarkers.js +0 -28
  904. package/dist/core/strokeMarkers.js.map +0 -1
  905. package/dist/core/viewport/meanScale.js +0 -8
  906. package/dist/core/viewport/meanScale.js.map +0 -1
  907. package/dist/core/viewport/pxExtent.js +0 -42
  908. package/dist/core/viewport/pxExtent.js.map +0 -1
  909. package/dist/debug/flag.js.map +0 -1
  910. package/dist/features/cursor/paintedCursorLayer.js.map +0 -1
  911. package/dist/features/focus/gateLayer.js +0 -14
  912. package/dist/features/focus/gateLayer.js.map +0 -1
  913. package/dist/features/focus/useCanvasFocus.js +0 -29
  914. package/dist/features/focus/useCanvasFocus.js.map +0 -1
  915. package/dist/features/groups/children.js.map +0 -1
  916. package/dist/features/groups/composePose.js.map +0 -1
  917. package/dist/features/groups/nestedHit.js.map +0 -1
  918. package/dist/features/groups/unionOfChildren.js.map +0 -1
  919. package/dist/features/images/imageCache.js +0 -94
  920. package/dist/features/images/imageCache.js.map +0 -1
  921. package/dist/features/ingestion/index.js +0 -8
  922. package/dist/features/meshPaint/bake.js +0 -79
  923. package/dist/features/meshPaint/bake.js.map +0 -1
  924. package/dist/features/meshPaint/bakeCache.js +0 -59
  925. package/dist/features/meshPaint/bakeCache.js.map +0 -1
  926. package/dist/features/meshPaint/handles.js +0 -86
  927. package/dist/features/meshPaint/handles.js.map +0 -1
  928. package/dist/features/meshPaint/lazyKind.js.map +0 -1
  929. package/dist/features/meshPaint/meshPaint.js +0 -236
  930. package/dist/features/meshPaint/meshPaint.js.map +0 -1
  931. package/dist/features/meshPaint/meshShader.js +0 -6
  932. package/dist/features/meshPaint/meshShader.js.map +0 -1
  933. package/dist/features/meshPaint/register.js +0 -7
  934. package/dist/features/meshPaint/register.js.map +0 -1
  935. package/dist/features/meshPaint/surface.js +0 -110
  936. package/dist/features/meshPaint/surface.js.map +0 -1
  937. package/dist/features/minimap/actions.js +0 -53
  938. package/dist/features/minimap/actions.js.map +0 -1
  939. package/dist/features/minimap/createMinimapContribution.js +0 -96
  940. package/dist/features/minimap/createMinimapContribution.js.map +0 -1
  941. package/dist/features/minimap/layers.js +0 -103
  942. package/dist/features/minimap/layers.js.map +0 -1
  943. package/dist/features/overlays/useNodeOverlayFrame.js +0 -103
  944. package/dist/features/overlays/useNodeOverlayFrame.js.map +0 -1
  945. package/dist/features/parallax/createParallaxLayer.js +0 -26
  946. package/dist/features/parallax/createParallaxLayer.js.map +0 -1
  947. package/dist/features/parallax/createParallaxPlane.js +0 -26
  948. package/dist/features/parallax/createParallaxPlane.js.map +0 -1
  949. package/dist/features/paths/anchorEdits.js +0 -156
  950. package/dist/features/paths/anchorEdits.js.map +0 -1
  951. package/dist/features/paths/anchors.js +0 -154
  952. package/dist/features/paths/anchors.js.map +0 -1
  953. package/dist/features/paths/booleans.js +0 -2
  954. package/dist/features/paths/markerCommands.js +0 -148
  955. package/dist/features/paths/markerCommands.js.map +0 -1
  956. package/dist/features/paths/markerSites.js +0 -59
  957. package/dist/features/paths/markerSites.js.map +0 -1
  958. package/dist/features/paths/markers.js +0 -95
  959. package/dist/features/paths/markers.js.map +0 -1
  960. package/dist/features/paths/nearestAnchor.js +0 -36
  961. package/dist/features/paths/nearestAnchor.js.map +0 -1
  962. package/dist/features/paths/pathInWorld.js +0 -41
  963. package/dist/features/paths/pathInWorld.js.map +0 -1
  964. package/dist/features/paths/poseDescriptor.js +0 -39
  965. package/dist/features/paths/poseDescriptor.js.map +0 -1
  966. package/dist/features/paths/tessellate/dash.js +0 -52
  967. package/dist/features/paths/tessellate/dash.js.map +0 -1
  968. package/dist/features/paths/tessellate/insets.js +0 -32
  969. package/dist/features/paths/tessellate/insets.js.map +0 -1
  970. package/dist/features/paths/tessellate/metric.js +0 -72
  971. package/dist/features/paths/tessellate/metric.js.map +0 -1
  972. package/dist/features/paths/tessellate/stroke.js +0 -170
  973. package/dist/features/paths/tessellate/stroke.js.map +0 -1
  974. package/dist/features/paths/tessellate/vertexWidths.js +0 -32
  975. package/dist/features/paths/tessellate/vertexWidths.js.map +0 -1
  976. package/dist/features/patterns/index.js +0 -23
  977. package/dist/features/patterns/index.js.map +0 -1
  978. package/dist/features/patterns/patterns-builtin.js +0 -38
  979. package/dist/features/patterns/patterns-builtin.js.map +0 -1
  980. package/dist/features/patterns/resolveSpec.js +0 -57
  981. package/dist/features/patterns/resolveSpec.js.map +0 -1
  982. package/dist/features/patterns/tileGeometry.js +0 -158
  983. package/dist/features/patterns/tileGeometry.js.map +0 -1
  984. package/dist/features/pointer/PointerContext.js +0 -45
  985. package/dist/features/pointer/PointerContext.js.map +0 -1
  986. package/dist/features/selection/SelectionContext.js +0 -46
  987. package/dist/features/selection/SelectionContext.js.map +0 -1
  988. package/dist/features/simulation/createSimulation.js +0 -61
  989. package/dist/features/simulation/createSimulation.js.map +0 -1
  990. package/dist/features/simulation/types.js +0 -6
  991. package/dist/features/simulation/types.js.map +0 -1
  992. package/dist/features/simulation/useSimulation.js +0 -74
  993. package/dist/features/simulation/useSimulation.js.map +0 -1
  994. package/dist/features/text/domRuns.js +0 -258
  995. package/dist/features/text/domRuns.js.map +0 -1
  996. package/dist/features/text/fitTextPose.js +0 -38
  997. package/dist/features/text/fitTextPose.js.map +0 -1
  998. package/dist/features/text/hitTest.js +0 -45
  999. package/dist/features/text/hitTest.js.map +0 -1
  1000. package/dist/features/text/renderLabel.js +0 -14
  1001. package/dist/features/text/renderLabel.js.map +0 -1
  1002. package/dist/features/text/runs/effectiveRangeStyle.js +0 -66
  1003. package/dist/features/text/runs/effectiveRangeStyle.js.map +0 -1
  1004. package/dist/features/text/runs/flagRange.js +0 -53
  1005. package/dist/features/text/runs/flagRange.js.map +0 -1
  1006. package/dist/features/text/runs/rangeStyle.js +0 -135
  1007. package/dist/features/text/runs/rangeStyle.js.map +0 -1
  1008. package/dist/features/text/textCommand.js +0 -59
  1009. package/dist/features/text/textCommand.js.map +0 -1
  1010. package/dist/features/text/textToPath.js +0 -181
  1011. package/dist/features/text/textToPath.js.map +0 -1
  1012. package/dist/features/text/useTextEdit.js +0 -467
  1013. package/dist/features/text/useTextEdit.js.map +0 -1
  1014. package/dist/features/tiling/createTiledLayer.js +0 -63
  1015. package/dist/features/tiling/createTiledLayer.js.map +0 -1
  1016. package/dist/features/tiling/tiledProject.js +0 -14
  1017. package/dist/features/tiling/tiledProject.js.map +0 -1
  1018. package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js +0 -26
  1019. package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js.map +0 -1
  1020. package/dist/interactions/actions/defaults/align.js.map +0 -1
  1021. package/dist/interactions/actions/defaults/booleans.js +0 -52
  1022. package/dist/interactions/actions/defaults/booleans.js.map +0 -1
  1023. package/dist/interactions/actions/defaults/clipboard.js.map +0 -1
  1024. package/dist/interactions/actions/defaults/clone.js +0 -107
  1025. package/dist/interactions/actions/defaults/clone.js.map +0 -1
  1026. package/dist/interactions/actions/defaults/createOutlines.js +0 -47
  1027. package/dist/interactions/actions/defaults/createOutlines.js.map +0 -1
  1028. package/dist/interactions/actions/defaults/distribute.js +0 -66
  1029. package/dist/interactions/actions/defaults/distribute.js.map +0 -1
  1030. package/dist/interactions/actions/defaults/editAnchors.js.map +0 -1
  1031. package/dist/interactions/actions/defaults/flip.js +0 -119
  1032. package/dist/interactions/actions/defaults/flip.js.map +0 -1
  1033. package/dist/interactions/actions/defaults/freshNodeId.js +0 -10
  1034. package/dist/interactions/actions/defaults/freshNodeId.js.map +0 -1
  1035. package/dist/interactions/actions/defaults/insert.js +0 -288
  1036. package/dist/interactions/actions/defaults/insert.js.map +0 -1
  1037. package/dist/interactions/actions/defaults/lassoSelect.js +0 -156
  1038. package/dist/interactions/actions/defaults/lassoSelect.js.map +0 -1
  1039. package/dist/interactions/actions/defaults/move.js +0 -760
  1040. package/dist/interactions/actions/defaults/move.js.map +0 -1
  1041. package/dist/interactions/actions/defaults/resize.js +0 -335
  1042. package/dist/interactions/actions/defaults/resize.js.map +0 -1
  1043. package/dist/interactions/actions/defaults/rotate.js +0 -184
  1044. package/dist/interactions/actions/defaults/rotate.js.map +0 -1
  1045. package/dist/interactions/actions/previewOverrides.js +0 -25
  1046. package/dist/interactions/actions/previewOverrides.js.map +0 -1
  1047. package/dist/interactions/actions/resize/autoPoseDescriptor.js.map +0 -1
  1048. package/dist/math-Drrw4ewZ.d.ts +0 -160
  1049. package/dist/registerProgram-BMZRDgrh.d.ts +0 -197
  1050. package/dist/renderer/DrawCommand.js +0 -6
  1051. package/dist/renderer/DrawCommand.js.map +0 -1
  1052. package/dist/renderer/WeaselRenderer.js +0 -331
  1053. package/dist/renderer/WeaselRenderer.js.map +0 -1
  1054. package/dist/renderer/batchClip.js +0 -46
  1055. package/dist/renderer/batchClip.js.map +0 -1
  1056. package/dist/renderer/cache/GLImageCache.js +0 -64
  1057. package/dist/renderer/cache/GLImageCache.js.map +0 -1
  1058. package/dist/renderer/cache/GLMeshCache.js +0 -102
  1059. package/dist/renderer/cache/GLMeshCache.js.map +0 -1
  1060. package/dist/renderer/cache/GLTextureCache.js +0 -51
  1061. package/dist/renderer/cache/GLTextureCache.js.map +0 -1
  1062. package/dist/renderer/cache/GradientRampAtlas.js +0 -82
  1063. package/dist/renderer/cache/GradientRampAtlas.js.map +0 -1
  1064. package/dist/renderer/cache/cache.js +0 -13
  1065. package/dist/renderer/cache/cache.js.map +0 -1
  1066. package/dist/renderer/cache/markerCommandCache.js +0 -63
  1067. package/dist/renderer/cache/markerCommandCache.js.map +0 -1
  1068. package/dist/renderer/cache/outlineMeshCache.js +0 -15
  1069. package/dist/renderer/cache/outlineMeshCache.js.map +0 -1
  1070. package/dist/renderer/cache/outlineStrokeMeshCache.js +0 -36
  1071. package/dist/renderer/cache/outlineStrokeMeshCache.js.map +0 -1
  1072. package/dist/renderer/cache/strokeMeshCache.js +0 -55
  1073. package/dist/renderer/cache/strokeMeshCache.js.map +0 -1
  1074. package/dist/renderer/cullDrawCommands.js +0 -90
  1075. package/dist/renderer/cullDrawCommands.js.map +0 -1
  1076. package/dist/renderer/draw.js +0 -1135
  1077. package/dist/renderer/draw.js.map +0 -1
  1078. package/dist/renderer/drawBatch.js +0 -198
  1079. package/dist/renderer/drawBatch.js.map +0 -1
  1080. package/dist/renderer/effects/EffectTargets.js +0 -45
  1081. package/dist/renderer/effects/EffectTargets.js.map +0 -1
  1082. package/dist/renderer/effects/builtins.js +0 -31
  1083. package/dist/renderer/effects/builtins.js.map +0 -1
  1084. package/dist/renderer/effects/composite.js +0 -9
  1085. package/dist/renderer/effects/composite.js.map +0 -1
  1086. package/dist/renderer/effects/effectPrelude.js +0 -10
  1087. package/dist/renderer/effects/effectPrelude.js.map +0 -1
  1088. package/dist/renderer/effects/types.js +0 -10
  1089. package/dist/renderer/effects/types.js.map +0 -1
  1090. package/dist/renderer/glyphOutlineMesh.js +0 -67
  1091. package/dist/renderer/glyphOutlineMesh.js.map +0 -1
  1092. package/dist/renderer/index.js +0 -19
  1093. package/dist/renderer/math/color.js +0 -341
  1094. package/dist/renderer/math/color.js.map +0 -1
  1095. package/dist/renderer/math/mat3.js +0 -76
  1096. package/dist/renderer/math/mat3.js.map +0 -1
  1097. package/dist/renderer/math/patternSpace.js +0 -22
  1098. package/dist/renderer/math/patternSpace.js.map +0 -1
  1099. package/dist/renderer/math/viewToMat3.js +0 -19
  1100. package/dist/renderer/math/viewToMat3.js.map +0 -1
  1101. package/dist/renderer/paintResources.js +0 -18
  1102. package/dist/renderer/paintResources.js.map +0 -1
  1103. package/dist/renderer/paintScratch.js +0 -37
  1104. package/dist/renderer/paintScratch.js.map +0 -1
  1105. package/dist/renderer/shaders/ShaderProgram.js +0 -74
  1106. package/dist/renderer/shaders/ShaderProgram.js.map +0 -1
  1107. package/dist/renderer/shaders/batchFill.js +0 -119
  1108. package/dist/renderer/shaders/batchFill.js.map +0 -1
  1109. package/dist/renderer/shaders/customPrelude.js +0 -34
  1110. package/dist/renderer/shaders/customPrelude.js.map +0 -1
  1111. package/dist/renderer/shaders/extractUniformNames.js +0 -184
  1112. package/dist/renderer/shaders/extractUniformNames.js.map +0 -1
  1113. package/dist/renderer/shaders/glyphPaint.js +0 -61
  1114. package/dist/renderer/shaders/glyphPaint.js.map +0 -1
  1115. package/dist/renderer/shaders/gradFill.js +0 -30
  1116. package/dist/renderer/shaders/gradFill.js.map +0 -1
  1117. package/dist/renderer/shaders/imageFill.js +0 -14
  1118. package/dist/renderer/shaders/imageFill.js.map +0 -1
  1119. package/dist/renderer/shaders/pathFill.js +0 -13
  1120. package/dist/renderer/shaders/pathFill.js.map +0 -1
  1121. package/dist/renderer/shaders/patternFill.js +0 -24
  1122. package/dist/renderer/shaders/patternFill.js.map +0 -1
  1123. package/dist/renderer/shaders/registerProgram.js +0 -18
  1124. package/dist/renderer/shaders/registerProgram.js.map +0 -1
  1125. package/dist/renderer/spriteSheet.js +0 -14
  1126. package/dist/renderer/spriteSheet.js.map +0 -1
  1127. package/dist/renderer/state/GroupState.js +0 -77
  1128. package/dist/renderer/state/GroupState.js.map +0 -1
  1129. package/dist/renderer/strokeLengths.js +0 -50
  1130. package/dist/renderer/strokeLengths.js.map +0 -1
  1131. package/dist/renderer/syntheticItalic.js +0 -6
  1132. package/dist/renderer/syntheticItalic.js.map +0 -1
  1133. package/dist/renderer/textures/registerTexture.js +0 -14
  1134. package/dist/renderer/textures/registerTexture.js.map +0 -1
  1135. package/dist/scheduling/useVisibleRaf.js +0 -69
  1136. package/dist/scheduling/useVisibleRaf.js.map +0 -1
  1137. package/dist/test-seams-CuIxe0xY.d.ts +0 -356
  1138. package/dist/tools/prefs.js +0 -62
  1139. package/dist/tools/prefs.js.map +0 -1
@@ -2,92 +2,86 @@ import { normalizeView as e } from "../core/viewport/view.js";
2
2
  import { createViewportLayer as t } from "../features/viewports/viewportLayer.js";
3
3
  import { useDeviceProfile as n } from "../core/device/useDeviceProfile.js";
4
4
  import { clientToWorld as r } from "../core/viewport/clientToWorld.js";
5
- import { clampView as i } from "../core/viewport/clampView.js";
6
- import { AUTO_POSE_DESCRIPTOR as a } from "../interactions/actions/resize/autoPoseDescriptor.js";
7
- import { pathFromPlane as o } from "./planeClips.js";
8
- import { createSceneLayerGate as s, paintedLayers as c } from "./sceneLayerPaint.js";
5
+ import { viewportWorldRect as i } from "../core/viewport/viewportWorldRect.js";
6
+ import { useSelection as a } from "../core/selection/useSelection.js";
7
+ import { AUTO_POSE_DESCRIPTOR as o } from "../core/geometry/autoPoseDescriptor.js";
9
8
  import { useViewHelpers as ee } from "./useViewHelpers.js";
10
- import { IDENTITY_VIEW as l, UNMEASURED_DIMS as u, useOptionalViewRegistry as te } from "./viewRegistry.js";
11
- import { useSelection as ne } from "../core/selection/useSelection.js";
12
- import { useOptionalViewInputs as re } from "./viewInputs.js";
13
- import { viewportWorldRect as ie } from "../core/viewport/viewportWorldRect.js";
14
- import { anchorStateFrom as ae, buildAffordanceAt as oe, buildClassifyTarget as se } from "./affordanceAt.js";
15
- import { createDispatcherPreviewSources as ce, createGestureSource as le } from "./SceneCanvas/dispatcherGestureBounds.js";
16
- import { useCallback as d, useEffect as f, useMemo as p, useRef as ue, useState as m } from "react";
17
- import { useLatest as h } from "@weasel-js/react";
18
- import { createDispatcher as de } from "@weasel-js/routing";
19
- import { useOptionalDepRegistry as fe } from "@weasel-js/routing/react";
9
+ import { useCanvasView as te } from "./useCanvasView.js";
10
+ import { anchorStateFrom as ne, buildAffordanceAt as re, buildClassifyTarget as ie, layerAffordance as ae } from "./affordanceAt.js";
11
+ import { pathFromPlane as oe } from "./planeClips.js";
12
+ import { createDispatcherPreviewSources as se, createGestureSource as ce } from "./SceneCanvas/dispatcherGestureBounds.js";
13
+ import { useOptionalViewInputs as le } from "./viewInputs.js";
14
+ import { createSceneLayerGate as ue, viewPaintedLayers as de } from "./sceneLayerPaint.js";
15
+ import { IDENTITY_VIEW as s, UNMEASURED_DIMS as c, useOptionalViewRegistry as fe } from "./viewRegistry.js";
16
+ import { useCallback as l, useEffect as u, useImperativeHandle as pe, useInsertionEffect as me, useLayoutEffect as he, useMemo as d, useRef as ge, useState as _e } from "react";
17
+ import { useLatest as f } from "@weasel-js/react";
18
+ import { createDispatcher as ve } from "@weasel-js/routing";
19
+ import { useOptionalDepRegistry as ye } from "@weasel-js/routing/react";
20
20
  //#region src/canvas/CanvasView.tsx
21
- var pe = {
21
+ var be = {
22
22
  adapter: void 0,
23
- geometry: a,
24
- boundsOf: void 0,
25
- tools: void 0
26
- }, me = () => !0, he = (e) => e;
27
- function g(a) {
28
- let { id: g, bounds: ge, view: _, defaultView: _e, onViewChange: ve, viewBounds: ye, layers: be = he, layerVisibility: xe, layerOrder: Se, background: v, order: y = Infinity, label: b, selection: Ce, selectionOptions: x, interactive: S = !0, paint: C = !0 } = a, w = te(), we = fe(), T = h(we), E = ne(x), D = Ce ?? (x ? E : void 0), [Te, Ee] = m(() => e(_e ?? l)), O = _ ?? Te, k = re(), A = D ?? k?.selectionApi ?? E, j = h({
29
- view: O,
30
- bounds: ge,
31
- layers: be,
32
- layerVisibility: xe,
33
- layerOrder: Se,
34
- onViewChange: ve,
35
- viewBounds: ye,
36
- viewProp: _,
37
- viewSelection: D,
38
- selection: A
39
- }), M = d((e, t) => {
40
- let n = j.current.bounds;
23
+ geometry: o,
24
+ boundsOf: void 0
25
+ }, xe = () => !0, p = (e) => ({
26
+ width: e.w,
27
+ height: e.h
28
+ }), Se = (e) => e;
29
+ function m(o) {
30
+ let { id: m, bounds: Ce, view: h, defaultView: we, onViewChange: Te, viewBounds: Ee, layers: De = Se, layerVisibility: Oe, layerOrder: ke, background: g, order: _ = Infinity, label: v, cameraRef: Ae, selection: je, selectionOptions: y, interactive: b = !0, paint: x = !0 } = o, S = fe(), Me = ye(), C = f(Me), w = a(y), T = je ?? (y ? w : void 0), E = le(), D = T ?? E?.selectionApi ?? w, O = f({
31
+ bounds: Ce,
32
+ layers: De,
33
+ layerVisibility: Oe,
34
+ layerOrder: ke,
35
+ viewProp: h,
36
+ viewSelection: T,
37
+ selection: D
38
+ }), k = l((e, t) => {
39
+ let n = O.current.bounds;
41
40
  return typeof n == "function" ? n(e, t) : n;
42
- }, [j]), N = d(() => {
43
- let e = w?.surface();
44
- return M(e?.view() ?? l, e?.dims() ?? u);
45
- }, [w, M]), P = d((t, n) => {
46
- let r = j.current.view;
47
- return e(typeof r == "function" ? r(t, n) : r);
48
- }, [j]), F = d(() => {
49
- let e = w?.surface();
50
- return P(e?.view() ?? l, e?.dims() ?? u);
51
- }, [w, P]), I = d(() => c(w?.surface()?.layers() ?? [], j.current), [w, j]), [L] = m(s), R = d((e) => L(w?.surface()?.layers() ?? [], j.current)(e), [
52
- w,
53
- L,
54
- j
55
- ]), z = d((t) => {
56
- let { viewBounds: n, onViewChange: r, viewProp: a } = j.current, o = N(), s = e(t), c = n ? i(s, n, {
57
- width: o.w,
58
- height: o.h
59
- }) : s;
60
- a === void 0 && Ee(c), r?.(c), w?.surface()?.requestRedraw();
61
- }, [
62
- w,
63
- N,
64
- j
65
- ]), B = p(() => ({
66
- get: F,
67
- set: z,
68
- hostSize: () => {
69
- let e = N();
70
- return {
71
- width: e.w,
72
- height: e.h
73
- };
74
- },
75
- layerIsPainted: R
41
+ }, [O]), A = l(() => {
42
+ let e = S?.surface();
43
+ return k(e?.view() ?? s, e?.dims() ?? c);
44
+ }, [S, k]), { getView: j, setView: M, setViewFromInput: N, subscribeView: P, adoptControlled: Ne, announceControlled: Pe, clearSubscribers: F } = te({
45
+ view: typeof h == "function" ? () => {
46
+ let e = S?.surface();
47
+ return h(e?.view() ?? s, e?.dims() ?? c);
48
+ } : h,
49
+ defaultView: we,
50
+ onViewChange: Te,
51
+ viewBounds: Ee,
52
+ dims: () => p(A()),
53
+ requestRedraw: () => S?.surface()?.requestRedraw()
54
+ });
55
+ me(Ne), he(Pe), u(() => F, [F]), pe(Ae, () => ({
56
+ getView: j,
57
+ setView: M,
58
+ subscribeView: P
76
59
  }), [
77
- F,
60
+ j,
61
+ M,
62
+ P
63
+ ]);
64
+ let I = l((t, n) => {
65
+ let r = O.current.viewProp;
66
+ return typeof r == "function" ? e(r(t, n)) : j();
67
+ }, [O, j]), L = l(() => de(S?.surface()?.layers() ?? [], O.current), [S, O]), [R] = _e(ue), z = l((e) => R(S?.surface()?.layers() ?? [], O.current)(e), [
68
+ S,
69
+ R,
70
+ O
71
+ ]), B = d(() => ({
72
+ get: j,
73
+ set: N,
74
+ hostSize: () => p(A()),
75
+ layerIsPainted: z
76
+ }), [
77
+ j,
78
+ A,
78
79
  N,
79
- z,
80
- R
81
- ]), V = p(() => {
82
- let e = () => T.current?.get("ingestion");
80
+ z
81
+ ]), V = d(() => {
82
+ let e = () => C.current?.get("ingestion");
83
83
  return {
84
- viewportWorldRect: () => {
85
- let e = N();
86
- return ie(F(), {
87
- width: e.w,
88
- height: e.h
89
- });
90
- },
84
+ viewportWorldRect: () => i(j(), p(A())),
91
85
  get resolveSrc() {
92
86
  return e()?.resolveSrc;
93
87
  },
@@ -99,86 +93,72 @@ function g(a) {
99
93
  }
100
94
  };
101
95
  }, [
102
- F,
103
- N,
104
- T
105
- ]), H = ue(null);
106
- H.current ||= de();
107
- let U = k?.rotationBadge ?? null, De = p(() => ({
108
- gestureSource: le(() => H.current),
109
- ...ce(() => H.current)
110
- }), []), W = h(k), G = d(() => ({
111
- selection: j.current.selection.get(),
112
- view: F(),
96
+ j,
97
+ A,
98
+ C
99
+ ]), H = ge(null);
100
+ H.current ||= ve();
101
+ let U = E?.rotationBadge ?? null, Fe = d(() => ({
102
+ gestureSource: ce(() => H.current),
103
+ ...se(() => H.current)
104
+ }), []), W = f(E), G = l(() => ({
105
+ selection: O.current.selection.get(),
106
+ view: j(),
113
107
  action: H.current.getActiveAction()
114
- }), [F, j]), K = k?.boundsOf, Oe = p(() => K ? (e) => K(e, F()) : void 0, [K, F]), q = k?.boundsOfPose, ke = p(() => q ? (e, t) => q(e, t, F()) : void 0, [q, F]), { helpers: Ae } = ee({
115
- ...k ?? pe,
116
- boundsOf: Oe,
117
- boundsOfPose: ke,
118
- ...De,
119
- selection: A.current,
120
- getIsVisible: () => W.current?.chromeCaps?.isVisible(G()) ?? me
121
- }), J = h(Ae), Y = d((e, t) => {
122
- let n = w?.surface()?.origin() ?? {
108
+ }), [j, O]), K = E?.boundsOf, Ie = d(() => K ? (e) => K(e, j()) : void 0, [K, j]), q = E?.boundsOfPose, Le = d(() => q ? (e, t) => q(e, t, j()) : void 0, [q, j]), { helpers: Re } = ee({
109
+ ...E ?? be,
110
+ boundsOf: Ie,
111
+ boundsOfPose: Le,
112
+ ...Fe,
113
+ selection: D.current,
114
+ getIsVisible: () => W.current?.chromeCaps?.isVisible(G()) ?? xe
115
+ }), J = f(Re), Y = l((e, t) => {
116
+ let n = S?.surface()?.origin() ?? {
123
117
  left: 0,
124
118
  top: 0
125
- }, i = N(), [a, o] = r(e, t, {
119
+ }, i = A(), [a, o] = r(e, t, {
126
120
  left: n.left + i.x,
127
121
  top: n.top + i.y
128
- }, F());
122
+ }, j());
129
123
  return {
130
124
  x: a,
131
125
  y: o
132
126
  };
133
127
  }, [
134
- w,
135
- N,
136
- F
137
- ]), X = p(() => ae(() => T.current, (e, t) => o(t, W.current?.planeOfNode?.(e, F()) ?? null)), [
138
- F,
139
- T,
128
+ S,
129
+ A,
130
+ j
131
+ ]), X = d(() => ne(() => C.current, (e, t) => oe(t, W.current?.planeOfNode?.(e, j()) ?? null)), [
132
+ j,
133
+ C,
140
134
  W
141
- ]), { targetScale: Z } = n(), Q = p(() => {
142
- let e = oe({
135
+ ]), { targetScale: Z } = n(), Q = d(() => {
136
+ let e = re({
143
137
  getChromeState: () => J.current.getChromeState(),
144
- getView: F,
138
+ getView: j,
145
139
  targetScale: Z,
146
140
  rotationBadge: U,
147
141
  getAnchorState: X,
148
142
  getIsVisible: () => J.current.getIsVisible()
149
143
  });
150
144
  return (t) => {
151
- let n = N(), r = (w?.surface())?.hitTestExtras(t.x, t.y, F(), {
152
- width: n.w,
153
- height: n.h
154
- }, J.current, I());
155
- if (r) {
156
- let e = r.hit;
157
- return {
158
- kind: `layer:${r.layerId}`,
159
- owner: r.layerId,
160
- strength: e.strength ?? "shared",
161
- ...e.claimedKinds === void 0 ? {} : { claimedKinds: e.claimedKinds },
162
- ...e.cursor === void 0 ? {} : { cursor: e.cursor },
163
- ...e.initialScratch === void 0 ? {} : { payload: e.initialScratch }
164
- };
165
- }
166
- return e(t);
145
+ let n = S?.surface()?.hitTestExtras(t.x, t.y, j(), p(A()), J.current, L());
146
+ return n ? ae(n.layerId, n.hit) : e(t);
167
147
  };
168
148
  }, [
169
149
  X,
170
- N,
171
- w,
150
+ A,
151
+ S,
172
152
  Z,
173
- F,
174
- I,
153
+ j,
154
+ L,
175
155
  U,
176
156
  J
177
- ]), je = p(() => {
178
- let e = se(() => j.current.selection.get(), (e, t) => {
157
+ ]), ze = d(() => {
158
+ let e = ie(() => O.current.selection.get(), (e, t) => {
179
159
  let n = W.current, r = {
180
- ...F(),
181
- layerIsPainted: R
160
+ ...j(),
161
+ layerIsPainted: z
182
162
  };
183
163
  if (n?.pickBest) return n.pickBest(e, t, r);
184
164
  let i = n?.pickEvery?.(e, t, r) ?? [];
@@ -186,70 +166,70 @@ function g(a) {
186
166
  }, (e) => W.current?.kindOfNode?.(e));
187
167
  return (t) => e(t);
188
168
  }, [
189
- F,
190
- R,
191
169
  j,
170
+ z,
171
+ O,
192
172
  W
193
- ]), $ = p(() => ({
194
- id: g,
195
- order: y,
196
- interactive: S,
197
- paint: C,
173
+ ]), $ = d(() => ({
174
+ id: m,
175
+ order: _,
176
+ interactive: b,
177
+ paint: x,
198
178
  layer: t({
199
- id: g,
200
- label: b ?? g,
201
- source: I,
202
- view: P,
203
- bounds: (e, t) => M(e, t),
179
+ id: m,
180
+ label: v ?? m,
181
+ source: L,
182
+ view: I,
183
+ bounds: (e, t) => k(e, t),
204
184
  data: (e) => ({
205
185
  ...e,
206
186
  ...J.current,
207
- viewId: g
187
+ viewId: m
208
188
  }),
209
- ...v === void 0 ? {} : { background: v }
189
+ ...g === void 0 ? {} : { background: g }
210
190
  }),
211
- layerIsPainted: R,
191
+ layerIsPainted: z,
212
192
  target: {
213
193
  dispatcher: H.current,
214
194
  affordanceAt: Q,
215
- classifyTarget: je,
195
+ classifyTarget: ze,
216
196
  clientToWorld: Y,
217
197
  deps: () => ({
218
198
  view: B,
219
199
  ingestion: V,
220
200
  dispatcher: { cancelAll: (e) => H.current.cancelAll(e) },
221
- ...j.current.viewSelection ? { selection: j.current.viewSelection } : {}
201
+ ...O.current.viewSelection ? { selection: O.current.viewSelection } : {}
222
202
  }),
223
203
  getRuleCtx: () => W.current?.chromeCaps?.ruleCtx(G())
224
204
  }
225
205
  }), [
226
- g,
227
- y,
228
- S,
229
- C,
206
+ m,
207
+ _,
230
208
  b,
209
+ x,
231
210
  v,
232
- M,
233
- P,
211
+ g,
212
+ k,
213
+ I,
234
214
  B,
235
215
  Q,
236
- je,
216
+ ze,
237
217
  Y,
238
218
  G,
239
219
  V,
240
- I,
241
- R,
242
- j,
220
+ L,
221
+ z,
222
+ O,
243
223
  W,
244
224
  J
245
225
  ]);
246
- return f(() => {
247
- if (w) return w.register($);
248
- }, [w, $]), f(() => {
249
- w?.surface()?.requestRedraw();
250
- }, [w, O]), null;
226
+ return u(() => {
227
+ if (S) return S.register($);
228
+ }, [S, $]), u(() => () => H.current?.cancelAll("cancel"), []), u(() => {
229
+ S?.surface()?.requestRedraw();
230
+ }, [S, h]), null;
251
231
  }
252
232
  //#endregion
253
- export { g as CanvasView };
233
+ export { m as CanvasView };
254
234
 
255
235
  //# sourceMappingURL=CanvasView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CanvasView.js","names":["NO_INPUTS","AUTO_POSE_DESCRIPTOR","ALWAYS_VISIBLE","ALL_LAYERS","s","CanvasView","viewProp","selectionProp","props","registry","useOptionalViewRegistry","depRegistry","useOptionalDepRegistry","depRegistryRef","useLatest","ownSelection","useSelection","selectionOptions","viewSelection","internalView","setInternalView","useState","normalizeView","defaultView","IDENTITY_VIEW","effectiveView","inputs","useOptionalViewInputs","selection","live","rectAt","useCallback","b","outer","dims","rectNow","surface","UNMEASURED_DIMS","cameraAt","v","camera","drawnLayers","paintedLayers","sceneLayerGate","createSceneLayerGate","layerIsPainted","layerId","setView","vb","cb","controlled","rect","valid","next","clamped","clampView","viewApi","useMemo","ingestionApi","base","viewportWorldRect","dispatcherRef","useRef","createDispatcher","rotationBadge","own","createGestureSource","createDispatcherPreviewSources","inputsRef","ruleInputs","surfaceBoundsOf","boundsOf","id","surfaceBoundsOfPose","boundsOfPose","pose","useViewHelpers","helpersRef","helpers","clientToWorldHere","canvas","x","y","clientToWorld","cx","cy","getAnchorState","anchorStateFrom","pathFromPlane","path","useDeviceProfile","affordanceAt","inner","buildAffordanceAt","extra","world","claim","targetScale","classifyTarget","buildClassifyTarget","i","frame","wx","wy","ids","registration","createViewportLayer","label","background","reason","order","interactive","paint","useEffect"],"sources":["../../src/canvas/CanvasView.tsx"],"sourcesContent":["/**\n * `<CanvasView>` — a second view on an existing canvas: its own camera over a\n * rect of the surface, with input routed to it.\n *\n * Mount one inside `<SceneCanvas>`, or declare the same thing through the\n * surface's `views` prop, which renders one of these per descriptor.\n */\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { Dims, RenderLayer } from 'core/layers/render';\nimport { normalizeView, type View } from 'core/viewport/view';\nimport { clientToWorld } from 'core/viewport/clientToWorld';\nimport { clampView } from 'core/viewport/clampView';\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\nimport { createViewportLayer } from 'features/viewports/viewportLayer';\nimport { createDispatcher } from '@weasel-js/routing';\nimport type { IngestionDep, ViewApi } from 'interactions/actions/depSchema';\nimport { viewportWorldRect } from 'core/viewport/viewportWorldRect';\nimport { useSelection, type SelectionApi, type UseSelectionOptions } from 'core/selection/useSelection';\nimport { AUTO_POSE_DESCRIPTOR } from 'interactions/actions/resize/autoPoseDescriptor';\nimport type { PoseDescriptor } from 'interactions/actions/resize/geometry';\nimport { useViewHelpers } from './useViewHelpers';\nimport { anchorStateFrom, buildAffordanceAt, buildClassifyTarget } from './affordanceAt';\nimport { pathFromPlane } from './planeClips';\nimport { useOptionalDepRegistry } from '@weasel-js/routing/react';\nimport { useLatest } from '@weasel-js/react';\nimport { useDeviceProfile } from 'core/device/useDeviceProfile';\nimport {\n createGestureSource,\n createDispatcherPreviewSources,\n} from './SceneCanvas/dispatcherGestureBounds';\nimport { useOptionalViewInputs, type SurfaceViewInputs, type ViewRuleInputs } from './viewInputs';\nimport { createSceneLayerGate, paintedLayers } from './sceneLayerPaint';\nimport {\n useOptionalViewRegistry,\n IDENTITY_VIEW,\n UNMEASURED_DIMS,\n type ViewRegistration,\n} from './viewRegistry';\n\n/** A rect on the surface, in CSS pixels from the canvas top-left. */\nexport interface ViewRect { x: number; y: number; w: number; h: number }\n\n/** Props for `<CanvasView>`. @experimental */\nexport interface CanvasViewProps {\n /** Identifies the view to the surface and to input routing. Must be unique\n * among the views on one canvas. */\n id: string;\n /** Where this view paints, recomputed every frame so the rect can track the\n * outer camera. A plain rect is accepted for a fixed panel. */\n bounds: ViewRect | ((outer: View, dims: Dims) => ViewRect);\n /** Camera. Supply this to control it; otherwise the view keeps its own,\n * seeded from `defaultView`. `onViewChange` fires either way.\n *\n * A thunk is a camera derived from the canvas's — a loupe following the\n * pointer — read fresh at every paint and every event, so the two cannot\n * disagree mid-gesture. It is controlled: a pan inside the view reaches\n * only `onViewChange`. */\n view?: View | ((outer: View, dims: Dims) => View);\n defaultView?: View;\n onViewChange?: (v: View) => void;\n /** Pan limits, applied to every camera change the same way `<Canvas>`\n * applies its own. */\n viewBounds?: Bounds;\n /** Which of the surface's layers this view paints. Defaults to all of them —\n * the same content through a second camera. */\n layers?: (surface: readonly RenderLayer<unknown>[]) => readonly RenderLayer<unknown>[];\n /**\n * Show or hide layers in this view only, by id — the map `<Canvas>` takes,\n * applied after `layers` narrows the stack. A scene layer paints as\n * `scene:<layerId>`; one hidden here neither paints nor picks in this view,\n * and a marquee or Cmd+A routed here passes over it. The surface and every\n * other view are unaffected.\n */\n layerVisibility?: Record<string, boolean>;\n /** Draw order for this view, by layer id, bottom first. A listed order is\n * the whole list, so a layer left out of it is neither painted nor picked\n * here. */\n layerOrder?: string[];\n /** Opaque ground painted before the source layers, so the surface does not\n * show through where the inner camera sees nothing. */\n background?: string;\n /** Paint and hit order. Defaults to `Infinity` — after every view the\n * surface declared as a prop. */\n order?: number;\n /** Label for debug overlays. Defaults to the id. */\n label?: string;\n /**\n * Whether input over the view resolves through its camera. Default `true`:\n * a press selects what the view shows, and a drag moves it in the view's\n * world units. `false` paints only, and input over it reaches the canvas\n * beneath as though the view were not there.\n *\n * Views do not nest. A view paints and routes the surface's own stack,\n * never another view; overlapping views are hit in paint order.\n */\n interactive?: boolean;\n /**\n * Whether the surface paints the view. Default `true`. `false` is for a\n * host that draws the view inside chrome of its own — a HUD window's\n * interior — through `SceneCanvasApi.addView`'s `draw`, so it lands in\n * that chrome's z-order rather than the surface's.\n */\n paint?: boolean;\n /** A selection of this view's own, which actions dispatched inside it read\n * and write instead of the surface's. Omit both this and\n * `selectionOptions` and the view shares the surface's selection — the\n * default, so undo restores one selection rather than N. */\n selection?: SelectionApi;\n /** Opts this view into owning a selection, configured thus. Ignored when\n * `selection` is supplied. */\n selectionOptions?: UseSelectionOptions;\n}\n\n/** What a view builds its helpers from outside a surface: nothing but the\n * default geometry, which answers `null` for every lookup. */\n// A view outside a surface has no inputs to inherit — including a selection,\n// so it falls back to owning one.\nconst NO_INPUTS: Omit<SurfaceViewInputs, 'selectionApi'> = {\n adapter: undefined,\n geometry: AUTO_POSE_DESCRIPTOR as unknown as PoseDescriptor<unknown>,\n boundsOf: undefined,\n tools: undefined,\n};\n\nconst ALWAYS_VISIBLE = (): boolean => true;\n\nconst ALL_LAYERS = (s: readonly RenderLayer<unknown>[]): readonly RenderLayer<unknown>[] => s;\n\n/**\n * @experimental\n *\n * One view on a shared canvas. Owns a camera, contributes the viewport node\n * that paints it, and registers the dispatch record that sends gestures inside\n * its rect to that camera rather than to the canvas's.\n *\n * Renders nothing itself — it is a declaration, and the surface does the\n * drawing. Outside a surface that mounts a view registry it is inert.\n */\nexport function CanvasView(props: CanvasViewProps): null {\n const {\n id, bounds, view: viewProp, defaultView, onViewChange, viewBounds,\n layers = ALL_LAYERS, layerVisibility, layerOrder, background, order = Infinity, label,\n selection: selectionProp, selectionOptions, interactive = true, paint = true,\n } = props;\n\n const registry = useOptionalViewRegistry();\n const depRegistry = useOptionalDepRegistry();\n const depRegistryRef = useLatest(depRegistry);\n\n // Hooks run unconditionally; the owned selection goes unused unless this\n // view asked for one.\n const ownSelection = useSelection(selectionOptions);\n const viewSelection = selectionProp ?? (selectionOptions ? ownSelection : undefined);\n\n const [internalView, setInternalView] = useState<View>(() => normalizeView(defaultView ?? IDENTITY_VIEW));\n const effectiveView = viewProp ?? internalView;\n\n const inputs = useOptionalViewInputs();\n // The selection this view acts on: its own when it has one, the surface's\n // otherwise.\n const selection = viewSelection ?? inputs?.selectionApi ?? ownSelection;\n\n // Everything the registration reads is behind a ref: the registration object\n // is registered once and must not churn, but what it answers with has to be\n // the last committed render's.\n const live = useLatest({\n view: effectiveView, bounds, layers, layerVisibility, layerOrder, onViewChange, viewBounds, viewProp,\n viewSelection, selection,\n });\n\n const rectAt = useCallback((outer: View, dims: Dims): ViewRect => {\n const b = live.current.bounds;\n return typeof b === 'function' ? b(outer, dims) : b;\n }, [live]);\n\n /** The rect for the surface's current frame — what a client point and a\n * clamp are measured against outside a draw call. */\n const rectNow = useCallback((): ViewRect => {\n const surface = registry?.surface();\n return rectAt(surface?.view() ?? IDENTITY_VIEW, surface?.dims() ?? UNMEASURED_DIMS);\n }, [registry, rectAt]);\n\n const cameraAt = useCallback((outer: View, dims: Dims): View => {\n const v = live.current.view;\n return normalizeView(typeof v === 'function' ? v(outer, dims) : v);\n }, [live]);\n\n /** The camera for the surface's current frame. */\n const camera = useCallback((): View => {\n const surface = registry?.surface();\n return cameraAt(surface?.view() ?? IDENTITY_VIEW, surface?.dims() ?? UNMEASURED_DIMS);\n }, [registry, cameraAt]);\n\n /** The surface's layers this view draws, in the order it draws them. */\n const drawnLayers = useCallback((): readonly RenderLayer<unknown>[] => (\n paintedLayers(registry?.surface()?.layers() ?? [], live.current)\n ), [registry, live]);\n\n const [sceneLayerGate] = useState(createSceneLayerGate);\n /** What this view's picks, marquees and select-alls ask of a scene layer. */\n const layerIsPainted = useCallback((layerId: string): boolean => (\n sceneLayerGate(registry?.surface()?.layers() ?? [], live.current)(layerId)\n ), [registry, sceneLayerGate, live]);\n\n const setView = useCallback((next: View) => {\n const { viewBounds: vb, onViewChange: cb, viewProp: controlled } = live.current;\n const rect = rectNow();\n const valid = normalizeView(next);\n const clamped = vb ? clampView(valid, vb, { width: rect.w, height: rect.h }) : valid;\n if (controlled === undefined) setInternalView(clamped);\n cb?.(clamped);\n registry?.surface()?.requestRedraw();\n }, [registry, rectNow, live]);\n\n const viewApi = useMemo<ViewApi>(() => ({\n get: camera,\n set: setView,\n hostSize: () => {\n const rect = rectNow();\n return { width: rect.w, height: rect.h };\n },\n layerIsPainted,\n }), [camera, rectNow, setView, layerIsPainted]);\n\n // Paste placement is a camera question, so it is this view's when the paste\n // routed here. The rest of the dep — `resolveSrc`, `svg`, `clipboard` — is\n // the surface's one wiring, read live off the canvas registry.\n const ingestionApi = useMemo<IngestionDep>(() => {\n const base = (): IngestionDep | undefined => depRegistryRef.current?.get('ingestion');\n return {\n viewportWorldRect: () => {\n const rect = rectNow();\n return viewportWorldRect(camera(), { width: rect.w, height: rect.h });\n },\n get resolveSrc() { return base()?.resolveSrc; },\n get svg() { return base()?.svg; },\n get clipboard() { return base()?.clipboard; },\n };\n }, [camera, rectNow, depRegistryRef]);\n\n // One dispatcher per view: in-flight handles are per-view state, and two\n // views must not be able to see each other's.\n const dispatcherRef = useRef<ReturnType<typeof createDispatcher> | null>(null);\n if (!dispatcherRef.current) dispatcherRef.current = createDispatcher();\n\n // This view's overlay-aware state. The scene half comes from the surface —\n // same adapter, same tools — but everything gesture-shaped is read off this\n // view's own dispatcher, which is where a gesture inside this view lands.\n const rotationBadge = inputs?.rotationBadge ?? null;\n const own = useMemo(() => ({\n gestureSource: createGestureSource(() => dispatcherRef.current),\n ...createDispatcherPreviewSources(() => dispatcherRef.current),\n }), []);\n\n const inputsRef = useLatest(inputs);\n\n /** The chrome-caps context this view answers for: its selection, its camera,\n * its dispatcher's in-flight action. */\n const ruleInputs = useCallback((): ViewRuleInputs => ({\n selection: live.current.selection.get(),\n view: camera(),\n action: dispatcherRef.current!.getActiveAction(),\n }), [camera, live]);\n\n // The surface's resolver, asked for this view's camera.\n const surfaceBoundsOf = inputs?.boundsOf;\n const boundsOf = useMemo(\n () => (surfaceBoundsOf ? (id: string) => surfaceBoundsOf(id, camera()) : undefined),\n [surfaceBoundsOf, camera],\n );\n const surfaceBoundsOfPose = inputs?.boundsOfPose;\n const boundsOfPose = useMemo(\n () => (surfaceBoundsOfPose\n ? (id: string, pose: unknown) => surfaceBoundsOfPose(id, pose, camera())\n : undefined),\n [surfaceBoundsOfPose, camera],\n );\n\n const { helpers } = useViewHelpers<unknown>({\n ...(inputs ?? NO_INPUTS),\n boundsOf,\n boundsOfPose,\n ...own,\n selection: selection.current,\n getIsVisible: () =>\n inputsRef.current?.chromeCaps?.isVisible(ruleInputs()) ?? ALWAYS_VISIBLE,\n });\n const helpersRef = useLatest(helpers);\n\n /** A client point in this view's world. The rect moves with the outer\n * camera, so it is read per call rather than closed over. */\n const clientToWorldHere = useCallback((cx: number, cy: number): { x: number; y: number } => {\n const canvas = registry?.surface()?.origin() ?? { left: 0, top: 0 };\n const rect = rectNow();\n const [x, y] = clientToWorld(\n cx, cy,\n { left: canvas.left + rect.x, top: canvas.top + rect.y },\n camera(),\n );\n return { x, y };\n }, [registry, rectNow, camera]);\n\n // Anchors are hit in this view's camera world, where its plane draws them.\n const getAnchorState = useMemo(() => anchorStateFrom(\n () => depRegistryRef.current,\n (id, path) => pathFromPlane(path, inputsRef.current?.planeOfNode?.(id, camera()) ?? null),\n ), [camera, depRegistryRef, inputsRef]);\n\n const { targetScale } = useDeviceProfile();\n\n // Selection chrome hit-testing for this view: same construction the surface\n // does for its own, against this view's chrome and camera.\n const affordanceAt = useMemo(() => {\n const inner = buildAffordanceAt({\n getChromeState: () => helpersRef.current.getChromeState(),\n getView: camera,\n targetScale,\n rotationBadge,\n getAnchorState,\n getIsVisible: () => helpersRef.current.getIsVisible(),\n });\n return (world: { x: number; y: number }) => {\n // A registered layer this view paints gets first refusal, on this\n // view's frame and envelope. One painted over the surface already had\n // its chance: it occludes the view before routing reaches here.\n const rect = rectNow();\n const surface = registry?.surface();\n const extra = surface?.hitTestExtras(\n world.x, world.y, camera(), { width: rect.w, height: rect.h },\n helpersRef.current, drawnLayers(),\n );\n if (extra) {\n const claim = extra.hit;\n return {\n kind: `layer:${extra.layerId}`,\n owner: extra.layerId,\n strength: claim.strength ?? 'shared',\n ...(claim.claimedKinds !== undefined ? { claimedKinds: claim.claimedKinds } : {}),\n ...(claim.cursor !== undefined ? { cursor: claim.cursor } : {}),\n ...(claim.initialScratch !== undefined ? { payload: claim.initialScratch } : {}),\n };\n }\n return inner(world);\n };\n }, [getAnchorState, rectNow, registry, targetScale, camera, drawnLayers, rotationBadge, helpersRef]);\n\n const classifyTarget = useMemo(() => {\n const inner = buildClassifyTarget(\n () => live.current.selection.get(),\n (wx, wy) => {\n const i = inputsRef.current;\n // This view's camera: the dispatcher converted with `clientToWorldHere`,\n // and a screen-pixel tolerance needs the scale that produced it. The\n // layer gate is this view's too, never the surface's.\n const frame = { ...camera(), layerIsPainted };\n if (i?.pickBest) return i.pickBest(wx, wy, frame);\n const ids = i?.pickEvery?.(wx, wy, frame) ?? [];\n return ids.length > 0 ? ids[ids.length - 1]! : null;\n },\n (id) => inputsRef.current?.kindOfNode?.(id),\n );\n return (world: { x: number; y: number }) => inner(world);\n }, [camera, layerIsPainted, live, inputsRef]);\n\n const registration = useMemo<ViewRegistration>(() => ({\n id,\n order,\n interactive,\n paint,\n layer: createViewportLayer<unknown, unknown>({\n id,\n label: label ?? id,\n source: drawnLayers,\n view: cameraAt,\n bounds: (outer, dims) => rectAt(outer, dims),\n // The surface half of the envelope passes through; the view half is\n // this view's, so its layers paint its chrome rather than the\n // surface's.\n data: (outer) => ({ ...(outer as object), ...helpersRef.current, viewId: id }),\n ...(background !== undefined ? { background } : {}),\n }),\n layerIsPainted,\n target: {\n dispatcher: dispatcherRef.current!,\n affordanceAt,\n classifyTarget,\n clientToWorld: clientToWorldHere,\n deps: () => ({\n view: viewApi,\n ingestion: ingestionApi,\n // An Escape here cancels what is in flight here.\n dispatcher: { cancelAll: (reason) => dispatcherRef.current!.cancelAll(reason) },\n // Only a view with its own selection overlays that one; otherwise the\n // surface's answer stands, wrappers (`selectable`) included.\n ...(live.current.viewSelection ? { selection: live.current.viewSelection } : {}),\n }),\n // Action eligibility is chrome-caps evaluated against this view, so a\n // rule that hides an action in one panel cannot decline a gesture in\n // another.\n getRuleCtx: () => inputsRef.current?.chromeCaps?.ruleCtx(ruleInputs()),\n },\n }), [id, order, interactive, paint, label, background, rectAt, cameraAt, viewApi,\n affordanceAt, classifyTarget, clientToWorldHere, ruleInputs, ingestionApi, drawnLayers,\n layerIsPainted, live, inputsRef, helpersRef]);\n\n useEffect(() => {\n if (!registry) return;\n return registry.register(registration);\n }, [registry, registration]);\n\n // A camera change is invisible until the surface repaints, and nothing else\n // observes this component's state.\n useEffect(() => {\n registry?.surface()?.requestRedraw();\n }, [registry, effectiveView]);\n\n return null;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAqHA,IAAMA,KAAqD;CACzD,SAAS,KAAA;CACT,UAAUC;CACV,UAAU,KAAA;CACV,OAAO,KAAA;AACT,GAEMC,WAAgC,IAEhCC,MAAc,MAAwEC;AAY5F,SAAgBC,EAAW,GAA8B;CACvD,IAAM,EACJ,OAAI,YAAQ,MAAMC,GAAU,iBAAa,kBAAc,gBACvD,aAASH,IAAY,qBAAiB,gBAAY,eAAY,WAAQ,UAAU,UAChF,WAAWI,IAAe,qBAAkB,iBAAc,IAAM,WAAQ,OACtEC,GAEEC,IAAWC,GAAwB,GACnCC,KAAcC,GAAuB,GACrCC,IAAiBC,EAAUH,EAAW,GAItCI,IAAeC,GAAaC,CAAgB,GAC5CC,IAAgBX,OAAkBU,IAAmBF,IAAe,KAAA,IAEpE,CAACI,IAAcC,MAAmBC,QAAqBC,EAAcC,MAAeC,CAAa,CAAC,GAClGC,IAAgBnB,KAAYa,IAE5BO,IAASC,GAAsB,GAG/BC,IAAYV,KAAiBQ,GAAQ,gBAAgBX,GAKrDc,IAAOf,EAAU;EACrB,MAAMW;EAAe;EAAQ;EAAQ;EAAiB;EAAY;EAAc;EAAY;EAC5F;EAAe;CACjB,CAAC,GAEKK,IAASC,GAAa,GAAa,MAAyB;EAChE,IAAMC,IAAIH,EAAK,QAAQ;EACvB,OAAO,OAAOG,KAAM,aAAaA,EAAEC,GAAOC,CAAI,IAAIF;CACpD,GAAG,CAACH,CAAI,CAAC,GAIHM,IAAUJ,QAA4B;EAC1C,IAAMK,IAAU3B,GAAU,QAAQ;EAClC,OAAOqB,EAAOM,GAAS,KAAK,KAAKZ,GAAeY,GAAS,KAAK,KAAKC,CAAe;CACpF,GAAG,CAAC5B,GAAUqB,CAAM,CAAC,GAEfQ,IAAWP,GAAa,GAAa,MAAqB;EAC9D,IAAMQ,IAAIV,EAAK,QAAQ;EACvB,OAAOP,EAAc,OAAOiB,KAAM,aAAaA,EAAEN,GAAOC,CAAI,IAAIK,CAAC;CACnE,GAAG,CAACV,CAAI,CAAC,GAGHW,IAAST,QAAwB;EACrC,IAAMK,IAAU3B,GAAU,QAAQ;EAClC,OAAO6B,EAASF,GAAS,KAAK,KAAKZ,GAAeY,GAAS,KAAK,KAAKC,CAAe;CACtF,GAAG,CAAC5B,GAAU6B,CAAQ,CAAC,GAGjBG,IAAcV,QAClBW,EAAcjC,GAAU,QAAQ,CAAC,EAAE,OAAO,KAAK,CAAC,GAAGoB,EAAK,OAAO,GAC9D,CAACpB,GAAUoB,CAAI,CAAC,GAEb,CAACc,KAAkBtB,EAASuB,CAAoB,GAEhDC,IAAiBd,GAAa,MAClCY,EAAelC,GAAU,QAAQ,CAAC,EAAE,OAAO,KAAK,CAAC,GAAGoB,EAAK,OAAO,CAAC,CAACiB,CAAO,GACxE;EAACrC;EAAUkC;EAAgBd;CAAI,CAAC,GAE7BkB,IAAUhB,GAAa,MAAe;EAC1C,IAAM,EAAE,YAAYiB,GAAI,cAAcC,GAAI,UAAUC,MAAerB,EAAK,SAClEsB,IAAOhB,EAAQ,GACfiB,IAAQ9B,EAAc+B,CAAI,GAC1BC,IAAUN,IAAKO,EAAUH,GAAOJ,GAAI;GAAE,OAAOG,EAAK;GAAG,QAAQA,EAAK;EAAE,CAAC,IAAIC;EAG/E,AAFIF,MAAe,KAAA,KAAW9B,GAAgBkC,CAAO,GACrDL,IAAKK,CAAO,GACZ7C,GAAU,QAAQ,CAAC,EAAE,cAAc;CACrC,GAAG;EAACA;EAAU0B;EAASN;CAAI,CAAC,GAEtB2B,IAAUC,SAAwB;EACtC,KAAKjB;EACL,KAAKO;EACL,gBAAgB;GACd,IAAMI,IAAOhB,EAAQ;GACrB,OAAO;IAAE,OAAOgB,EAAK;IAAG,QAAQA,EAAK;GAAE;EACzC;EACA;CACF,IAAI;EAACX;EAAQL;EAASY;EAASF;CAAc,CAAC,GAKxCa,IAAeD,QAA4B;EAC/C,IAAME,UAAuC9C,EAAe,SAAS,IAAI,WAAW;EACpF,OAAO;GACL,yBAAyB;IACvB,IAAMsC,IAAOhB,EAAQ;IACrB,OAAOyB,GAAkBpB,EAAO,GAAG;KAAE,OAAOW,EAAK;KAAG,QAAQA,EAAK;IAAE,CAAC;GACtE;GACA,IAAI,aAAa;IAAE,OAAOQ,EAAK,CAAC,EAAE;GAAY;GAC9C,IAAI,MAAM;IAAE,OAAOA,EAAK,CAAC,EAAE;GAAK;GAChC,IAAI,YAAY;IAAE,OAAOA,EAAK,CAAC,EAAE;GAAW;EAC9C;CACF,GAAG;EAACnB;EAAQL;EAAStB;CAAc,CAAC,GAI9BgD,IAAgBC,GAAmD,IAAI;CAC7E,AAA4BD,EAAc,YAAUE,GAAiB;CAKrE,IAAMC,IAAgBtC,GAAQ,iBAAiB,MACzCuC,KAAMR,SAAe;EACzB,eAAeS,SAA0BL,EAAc,OAAO;EAC9D,GAAGM,SAAqCN,EAAc,OAAO;CAC/D,IAAI,CAAC,CAAC,GAEAO,IAAYtD,EAAUY,CAAM,GAI5B2C,IAAatC,SAAmC;EACpD,WAAWF,EAAK,QAAQ,UAAU,IAAI;EACtC,MAAMW,EAAO;EACb,QAAQqB,EAAc,QAAS,gBAAgB;CACjD,IAAI,CAACrB,GAAQX,CAAI,CAAC,GAGZyC,IAAkB5C,GAAQ,UAC1B6C,KAAWd,QACRa,KAAmB,MAAeA,EAAgBE,GAAIhC,EAAO,CAAC,IAAI,KAAA,GACzE,CAAC8B,GAAiB9B,CAAM,CAC1B,GACMiC,IAAsB/C,GAAQ,cAC9BgD,KAAejB,QACZgB,KACF,GAAY,MAAkBA,EAAoBD,GAAIG,GAAMnC,EAAO,CAAC,IACrE,KAAA,GACJ,CAACiC,GAAqBjC,CAAM,CAC9B,GAEM,EAAE,gBAAYoC,GAAwB;EAC1C,GAAIlD,KAAU1B;EACd;EACA;EACA,GAAGiE;EACH,WAAWrC,EAAU;EACrB,oBACEwC,EAAU,SAAS,YAAY,UAAUC,EAAW,CAAC,KAAKnE;CAC9D,CAAC,GACK2E,IAAa/D,EAAUgE,EAAO,GAI9BC,IAAoBhD,GAAa,GAAY,MAAyC;EAC1F,IAAMiD,IAASvE,GAAU,QAAQ,CAAC,EAAE,OAAO,KAAK;GAAE,MAAM;GAAG,KAAK;EAAE,GAC5D0C,IAAOhB,EAAQ,GACf,CAAC8C,GAAGC,KAAKC,EACbC,GAAIC,GACJ;GAAE,MAAML,EAAO,OAAO7B,EAAK;GAAG,KAAK6B,EAAO,MAAM7B,EAAK;EAAE,GACvDX,EAAO,CACT;EACA,OAAO;GAAE;GAAG;EAAE;CAChB,GAAG;EAAC/B;EAAU0B;EAASK;CAAM,CAAC,GAGxB8C,IAAiB7B,QAAc8B,SAC7B1E,EAAe,UACpB,GAAI,MAAS2E,EAAcC,GAAMrB,EAAU,SAAS,cAAcI,GAAIhC,EAAO,CAAC,KAAK,IAAI,CAC1F,GAAG;EAACA;EAAQ3B;EAAgBuD;CAAS,CAAC,GAEhC,EAAE,mBAAgBsB,EAAiB,GAInCC,IAAelC,QAAc;EACjC,IAAMmC,IAAQC,GAAkB;GAC9B,sBAAsBhB,EAAW,QAAQ,eAAe;GACxD,SAASrC;GACT;GACA;GACA;GACA,oBAAoBqC,EAAW,QAAQ,aAAa;EACtD,CAAC;EACD,QAAQ,MAAoC;GAI1C,IAAM1B,IAAOhB,EAAQ,GAEf2D,KADUrF,GAAU,QAAQ,EAAA,EACX,cACrBsF,EAAM,GAAGA,EAAM,GAAGvD,EAAO,GAAG;IAAE,OAAOW,EAAK;IAAG,QAAQA,EAAK;GAAE,GAC5D0B,EAAW,SAASpC,EAAY,CAClC;GACA,IAAIqD,GAAO;IACT,IAAME,IAAQF,EAAM;IACpB,OAAO;KACL,MAAM,SAASA,EAAM;KACrB,OAAOA,EAAM;KACb,UAAUE,EAAM,YAAY;KAC5B,GAAIA,EAAM,iBAAiB,KAAA,IAAmD,CAAC,IAAxC,EAAE,cAAcA,EAAM,aAAa;KAC1E,GAAIA,EAAM,WAAW,KAAA,IAAuC,CAAC,IAA5B,EAAE,QAAQA,EAAM,OAAO;KACxD,GAAIA,EAAM,mBAAmB,KAAA,IAAgD,CAAC,IAArC,EAAE,SAASA,EAAM,eAAe;IAC3E;GACF;GACA,OAAOJ,EAAMG,CAAK;EACpB;CACF,GAAG;EAACT;EAAgBnD;EAAS1B;EAAUwF;EAAazD;EAAQC;EAAauB;EAAea;CAAU,CAAC,GAE7FqB,KAAiBzC,QAAc;EACnC,IAAMmC,IAAQO,SACNtE,EAAK,QAAQ,UAAU,IAAI,IAChC,GAAI,MAAO;GACV,IAAMuE,IAAIhC,EAAU,SAIdiC,IAAQ;IAAE,GAAG7D,EAAO;IAAG;GAAe;GAC5C,IAAI4D,GAAG,UAAU,OAAOA,EAAE,SAASE,GAAIC,GAAIF,CAAK;GAChD,IAAMG,IAAMJ,GAAG,YAAYE,GAAIC,GAAIF,CAAK,KAAK,CAAC;GAC9C,OAAOG,EAAI,SAAS,IAAIA,EAAIA,EAAI,SAAS,KAAM;EACjD,IACC,MAAOpC,EAAU,SAAS,aAAaI,CAAE,CAC5C;EACA,QAAQ,MAAoCoB,EAAMG,CAAK;CACzD,GAAG;EAACvD;EAAQK;EAAgBhB;EAAMuC;CAAS,CAAC,GAEtCqC,IAAehD,SAAiC;EACpD;EACA;EACA;EACA;EACA,OAAOiD,EAAsC;GAC3C;GACA,OAAOC,KAASnC;GAChB,QAAQ/B;GACR,MAAMH;GACN,SAAS,GAAO,MAASR,EAAOG,GAAOC,CAAI;GAI3C,OAAO,OAAW;IAAE,GAAID;IAAkB,GAAG4C,EAAW;IAAS,QAAQL;GAAG;GAC5E,GAAIoC,MAAe,KAAA,IAA6B,CAAC,IAAlB,EAAE,cAAW;EAC9C,CAAC;EACD;EACA,QAAQ;GACN,YAAY/C,EAAc;GAC1B;GACA;GACA,eAAekB;GACf,aAAa;IACX,MAAMvB;IACN,WAAWE;IAEX,YAAY,EAAE,YAAY,MAAWG,EAAc,QAAS,UAAUgD,CAAM,EAAE;IAG9E,GAAIhF,EAAK,QAAQ,gBAAgB,EAAE,WAAWA,EAAK,QAAQ,cAAc,IAAI,CAAC;GAChF;GAIA,kBAAkBuC,EAAU,SAAS,YAAY,QAAQC,EAAW,CAAC;EACvE;CACF,IAAI;EAACG;EAAIsC;EAAOC;EAAaC;EAAOL;EAAOC;EAAY9E;EAAQQ;EAAUkB;EACpEmC;EAAcO;EAAgBnB;EAAmBV;EAAYX;EAAcjB;EAC3EI;EAAgBhB;EAAMuC;EAAWS;CAAU,CAAC;CAajD,OAXAoC,QAAgB;EACd,IAAKxG,GACL,OAAOA,EAAS,SAASgG,CAAY;CACvC,GAAG,CAAChG,GAAUgG,CAAY,CAAC,GAI3BQ,QAAgB;EACd,GAAU,QAAQ,CAAC,EAAE,cAAc;CACrC,GAAG,CAACxG,GAAUgB,CAAa,CAAC,GAErB;AACT"}
1
+ {"version":3,"file":"CanvasView.js","names":["NO_INPUTS","AUTO_POSE_DESCRIPTOR","ALWAYS_VISIBLE","sizeOf","rect","ALL_LAYERS","s","CanvasView","viewProp","selectionProp","props","registry","useOptionalViewRegistry","depRegistry","useOptionalDepRegistry","depRegistryRef","useLatest","ownSelection","useSelection","selectionOptions","viewSelection","inputs","useOptionalViewInputs","selection","live","rectAt","useCallback","b","outer","dims","rectNow","surface","IDENTITY_VIEW","UNMEASURED_DIMS","camera","useCanvasView","useInsertionEffect","adoptControlled","useLayoutEffect","announceControlled","useEffect","clearSubscribers","useImperativeHandle","cameraRef","setView","subscribeView","cameraAt","v","normalizeView","drawnLayers","viewPaintedLayers","sceneLayerGate","useState","createSceneLayerGate","layerIsPainted","layerId","viewApi","useMemo","setViewFromInput","ingestionApi","base","viewportWorldRect","dispatcherRef","useRef","createDispatcher","rotationBadge","own","createGestureSource","createDispatcherPreviewSources","inputsRef","ruleInputs","surfaceBoundsOf","boundsOf","id","surfaceBoundsOfPose","boundsOfPose","pose","useViewHelpers","helpersRef","helpers","clientToWorldHere","canvas","x","y","clientToWorld","cx","cy","getAnchorState","anchorStateFrom","pathFromPlane","path","useDeviceProfile","affordanceAt","inner","buildAffordanceAt","extra","world","layerAffordance","targetScale","classifyTarget","buildClassifyTarget","i","frame","wx","wy","ids","registration","createViewportLayer","label","background","reason","order","interactive","paint"],"sources":["../../src/canvas/CanvasView.tsx"],"sourcesContent":["/**\n * `<CanvasView>` — a second view on an existing canvas: its own camera over a\n * rect of the surface, with input routed to it.\n *\n * Mount one inside `<SceneCanvas>`, or declare the same thing through the\n * surface's `views` prop, which renders one of these per descriptor.\n */\nimport {\n useCallback, useEffect, useImperativeHandle, useInsertionEffect, useLayoutEffect, useMemo, useRef, useState,\n type Ref,\n} from 'react';\nimport type { CanvasViewCamera } from './canvasExtension';\nimport type { Dims, RenderLayer } from 'core/layers/render';\nimport { normalizeView, type View } from 'core/viewport/view';\nimport { clientToWorld } from 'core/viewport/clientToWorld';\nimport type { Bounds } from 'core/viewport/fitViewToBounds';\nimport { createViewportLayer } from 'features/viewports/viewportLayer';\nimport { createDispatcher } from '@weasel-js/routing';\nimport type { IngestionDep, ViewApi } from 'interactions/actions/depSchema';\nimport { viewportWorldRect } from 'core/viewport/viewportWorldRect';\nimport { useSelection, type SelectionApi, type UseSelectionOptions } from 'core/selection/useSelection';\nimport { AUTO_POSE_DESCRIPTOR } from 'core/geometry/autoPoseDescriptor';\nimport type { PoseDescriptor } from 'interactions/actions/resize/geometry';\nimport { useViewHelpers } from './useViewHelpers';\nimport { useCanvasView } from './useCanvasView';\nimport { anchorStateFrom, buildAffordanceAt, buildClassifyTarget, layerAffordance } from './affordanceAt';\nimport { pathFromPlane } from './planeClips';\nimport { useOptionalDepRegistry } from '@weasel-js/routing/react';\nimport { useLatest } from '@weasel-js/react';\nimport { useDeviceProfile } from 'core/device/useDeviceProfile';\nimport {\n createGestureSource,\n createDispatcherPreviewSources,\n} from './SceneCanvas/dispatcherGestureBounds';\nimport { useOptionalViewInputs, type SurfaceViewInputs, type ViewRuleInputs } from './viewInputs';\nimport { createSceneLayerGate, viewPaintedLayers } from './sceneLayerPaint';\nimport {\n useOptionalViewRegistry,\n IDENTITY_VIEW,\n UNMEASURED_DIMS,\n type ViewRegistration,\n} from './viewRegistry';\n\n/** A rect on the surface, in CSS pixels from the canvas top-left. */\nexport interface ViewRect { x: number; y: number; w: number; h: number }\n\n/** Props for `<CanvasView>`. @experimental */\nexport interface CanvasViewProps {\n /** Identifies the view to the surface and to input routing. Must be unique\n * among the views on one canvas. */\n id: string;\n /** Where this view paints, recomputed every frame so the rect can track the\n * outer camera. A plain rect is accepted for a fixed panel. */\n bounds: ViewRect | ((outer: View, dims: Dims) => ViewRect);\n /** Camera. Supply this to control it; otherwise the view keeps its own,\n * seeded from `defaultView`. `onViewChange` fires either way.\n *\n * A thunk is a camera derived from the canvas's — a loupe following the\n * pointer — read fresh at every paint and every event, so the two cannot\n * disagree mid-gesture. It is controlled: a pan inside the view reaches\n * only `onViewChange`. */\n view?: View | ((outer: View, dims: Dims) => View);\n defaultView?: View;\n onViewChange?: (v: View) => void;\n /** Pan limits, applied to every camera change the same way `<Canvas>`\n * applies its own. */\n viewBounds?: Bounds;\n /** Receives this view's camera, to read, drive, and watch from outside it. */\n cameraRef?: Ref<CanvasViewCamera>;\n /** Which of the surface's layers this view paints. Defaults to all of them —\n * the same content through a second camera. */\n layers?: (surface: readonly RenderLayer<unknown>[]) => readonly RenderLayer<unknown>[];\n /**\n * Show or hide layers in this view only, by id — the map `<Canvas>` takes,\n * applied after `layers` narrows the stack. A scene layer paints as\n * `scene:<layerId>`; one hidden here neither paints nor picks in this view,\n * and a marquee or Cmd+A routed here passes over it. The surface and every\n * other view are unaffected.\n */\n layerVisibility?: Record<string, boolean>;\n /** Draw order for this view, by layer id, bottom first. A listed order is\n * the whole list, so a layer left out of it is neither painted nor picked\n * here. */\n layerOrder?: string[];\n /** Opaque ground painted before the source layers, so the surface does not\n * show through where the inner camera sees nothing. */\n background?: string;\n /** Paint and hit order. Defaults to `Infinity` — after every view the\n * surface declared as a prop. */\n order?: number;\n /** Label for debug overlays. Defaults to the id. */\n label?: string;\n /**\n * Whether input over the view resolves through its camera. Default `true`:\n * a press selects what the view shows, and a drag moves it in the view's\n * world units. `false` paints only, and input over it reaches the canvas\n * beneath as though the view were not there.\n *\n * Views do not nest. A view paints and routes the surface's own stack,\n * never another view; overlapping views are hit in paint order.\n */\n interactive?: boolean;\n /**\n * Whether the surface paints the view. Default `true`. `false` is for a\n * host that draws the view inside chrome of its own — a HUD window's\n * interior — through `SceneCanvasApi.addView`'s `draw`, so it lands in\n * that chrome's z-order rather than the surface's.\n */\n paint?: boolean;\n /** A selection of this view's own, which actions dispatched inside it read\n * and write instead of the surface's. Omit both this and\n * `selectionOptions` and the view shares the surface's selection — the\n * default, so undo restores one selection rather than N. */\n selection?: SelectionApi;\n /** Opts this view into owning a selection, configured thus. Ignored when\n * `selection` is supplied. */\n selectionOptions?: UseSelectionOptions;\n}\n\n/** What a view builds its helpers from outside a surface: nothing but the\n * default geometry, which answers `null` for every lookup. */\n// A view outside a surface has no inputs to inherit — including a selection,\n// so it falls back to owning one.\nconst NO_INPUTS: Omit<SurfaceViewInputs, 'selectionApi'> = {\n adapter: undefined,\n geometry: AUTO_POSE_DESCRIPTOR as unknown as PoseDescriptor<unknown>,\n boundsOf: undefined,\n};\n\nconst ALWAYS_VISIBLE = (): boolean => true;\n\nconst sizeOf = (rect: ViewRect): Dims => ({ width: rect.w, height: rect.h });\n\nconst ALL_LAYERS = (s: readonly RenderLayer<unknown>[]): readonly RenderLayer<unknown>[] => s;\n\n/**\n * @experimental\n *\n * One view on a shared canvas. Owns a camera, contributes the viewport node\n * that paints it, and registers the dispatch record that sends gestures inside\n * its rect to that camera rather than to the canvas's.\n *\n * Renders nothing itself — it is a declaration, and the surface does the\n * drawing. Outside a surface that mounts a view registry it is inert.\n */\nexport function CanvasView(props: CanvasViewProps): null {\n const {\n id, bounds, view: viewProp, defaultView, onViewChange, viewBounds,\n layers = ALL_LAYERS, layerVisibility, layerOrder, background, order = Infinity, label, cameraRef,\n selection: selectionProp, selectionOptions, interactive = true, paint = true,\n } = props;\n\n const registry = useOptionalViewRegistry();\n const depRegistry = useOptionalDepRegistry();\n const depRegistryRef = useLatest(depRegistry);\n\n // Hooks run unconditionally; the owned selection goes unused unless this\n // view asked for one.\n const ownSelection = useSelection(selectionOptions);\n const viewSelection = selectionProp ?? (selectionOptions ? ownSelection : undefined);\n\n const inputs = useOptionalViewInputs();\n // The selection this view acts on: its own when it has one, the surface's\n // otherwise.\n const selection = viewSelection ?? inputs?.selectionApi ?? ownSelection;\n\n // Everything the registration reads is behind a ref: the registration object\n // is registered once and must not churn, but what it answers with has to be\n // the last committed render's.\n const live = useLatest({\n bounds, layers, layerVisibility, layerOrder, viewProp, viewSelection, selection,\n });\n\n const rectAt = useCallback((outer: View, dims: Dims): ViewRect => {\n const b = live.current.bounds;\n return typeof b === 'function' ? b(outer, dims) : b;\n }, [live]);\n\n /** The rect for the surface's current frame — what a client point and a\n * clamp are measured against outside a draw call. */\n const rectNow = useCallback((): ViewRect => {\n const surface = registry?.surface();\n return rectAt(surface?.view() ?? IDENTITY_VIEW, surface?.dims() ?? UNMEASURED_DIMS);\n }, [registry, rectAt]);\n\n const {\n getView: camera, setView, setViewFromInput, subscribeView,\n adoptControlled, announceControlled, clearSubscribers,\n } = useCanvasView({\n view: typeof viewProp === 'function'\n ? () => {\n const surface = registry?.surface();\n return viewProp(surface?.view() ?? IDENTITY_VIEW, surface?.dims() ?? UNMEASURED_DIMS);\n }\n : viewProp,\n defaultView,\n onViewChange,\n viewBounds,\n dims: () => sizeOf(rectNow()),\n requestRedraw: () => registry?.surface()?.requestRedraw(),\n });\n useInsertionEffect(adoptControlled);\n useLayoutEffect(announceControlled);\n useEffect(() => clearSubscribers, [clearSubscribers]);\n useImperativeHandle(cameraRef, () => ({ getView: camera, setView, subscribeView }), [camera, setView, subscribeView]);\n\n /** The camera for a frame the caller names. A derived camera is asked for\n * that frame; any other is the same whatever the surface is doing. */\n const cameraAt = useCallback((outer: View, dims: Dims): View => {\n const v = live.current.viewProp;\n return typeof v === 'function' ? normalizeView(v(outer, dims)) : camera();\n }, [live, camera]);\n\n /** The surface's layers this view draws, in the order it draws them. */\n const drawnLayers = useCallback((): readonly RenderLayer<unknown>[] => (\n viewPaintedLayers(registry?.surface()?.layers() ?? [], live.current)\n ), [registry, live]);\n\n const [sceneLayerGate] = useState(createSceneLayerGate);\n /** What this view's picks, marquees and select-alls ask of a scene layer. */\n const layerIsPainted = useCallback((layerId: string): boolean => (\n sceneLayerGate(registry?.surface()?.layers() ?? [], live.current)(layerId)\n ), [registry, sceneLayerGate, live]);\n\n const viewApi = useMemo<ViewApi>(() => ({\n get: camera,\n set: setViewFromInput,\n hostSize: () => sizeOf(rectNow()),\n layerIsPainted,\n }), [camera, rectNow, setViewFromInput, layerIsPainted]);\n\n // Paste placement is a camera question, so it is this view's when the paste\n // routed here. The rest of the dep — `resolveSrc`, `svg`, `clipboard` — is\n // the surface's one wiring, read live off the canvas registry.\n const ingestionApi = useMemo<IngestionDep>(() => {\n const base = (): IngestionDep | undefined => depRegistryRef.current?.get('ingestion');\n return {\n viewportWorldRect: () => viewportWorldRect(camera(), sizeOf(rectNow())),\n get resolveSrc() { return base()?.resolveSrc; },\n get svg() { return base()?.svg; },\n get clipboard() { return base()?.clipboard; },\n };\n }, [camera, rectNow, depRegistryRef]);\n\n // One dispatcher per view: in-flight handles are per-view state, and two\n // views must not be able to see each other's.\n const dispatcherRef = useRef<ReturnType<typeof createDispatcher> | null>(null);\n if (!dispatcherRef.current) dispatcherRef.current = createDispatcher();\n\n // This view's overlay-aware state. The scene half comes from the surface —\n // same adapter, same tools — but everything gesture-shaped is read off this\n // view's own dispatcher, which is where a gesture inside this view lands.\n const rotationBadge = inputs?.rotationBadge ?? null;\n const own = useMemo(() => ({\n gestureSource: createGestureSource(() => dispatcherRef.current),\n ...createDispatcherPreviewSources(() => dispatcherRef.current),\n }), []);\n\n const inputsRef = useLatest(inputs);\n\n /** The chrome-caps context this view answers for: its selection, its camera,\n * its dispatcher's in-flight action. */\n const ruleInputs = useCallback((): ViewRuleInputs => ({\n selection: live.current.selection.get(),\n view: camera(),\n action: dispatcherRef.current!.getActiveAction(),\n }), [camera, live]);\n\n // The surface's resolver, asked for this view's camera.\n const surfaceBoundsOf = inputs?.boundsOf;\n const boundsOf = useMemo(\n () => (surfaceBoundsOf ? (id: string) => surfaceBoundsOf(id, camera()) : undefined),\n [surfaceBoundsOf, camera],\n );\n const surfaceBoundsOfPose = inputs?.boundsOfPose;\n const boundsOfPose = useMemo(\n () => (surfaceBoundsOfPose\n ? (id: string, pose: unknown) => surfaceBoundsOfPose(id, pose, camera())\n : undefined),\n [surfaceBoundsOfPose, camera],\n );\n\n const { helpers } = useViewHelpers<unknown>({\n ...(inputs ?? NO_INPUTS),\n boundsOf,\n boundsOfPose,\n ...own,\n selection: selection.current,\n getIsVisible: () =>\n inputsRef.current?.chromeCaps?.isVisible(ruleInputs()) ?? ALWAYS_VISIBLE,\n });\n const helpersRef = useLatest(helpers);\n\n /** A client point in this view's world. The rect moves with the outer\n * camera, so it is read per call rather than closed over. */\n const clientToWorldHere = useCallback((cx: number, cy: number): { x: number; y: number } => {\n const canvas = registry?.surface()?.origin() ?? { left: 0, top: 0 };\n const rect = rectNow();\n const [x, y] = clientToWorld(\n cx, cy,\n { left: canvas.left + rect.x, top: canvas.top + rect.y },\n camera(),\n );\n return { x, y };\n }, [registry, rectNow, camera]);\n\n // Anchors are hit in this view's camera world, where its plane draws them.\n const getAnchorState = useMemo(() => anchorStateFrom(\n () => depRegistryRef.current,\n (id, path) => pathFromPlane(path, inputsRef.current?.planeOfNode?.(id, camera()) ?? null),\n ), [camera, depRegistryRef, inputsRef]);\n\n const { targetScale } = useDeviceProfile();\n\n // Selection chrome hit-testing for this view: same construction the surface\n // does for its own, against this view's chrome and camera.\n const affordanceAt = useMemo(() => {\n const inner = buildAffordanceAt({\n getChromeState: () => helpersRef.current.getChromeState(),\n getView: camera,\n targetScale,\n rotationBadge,\n getAnchorState,\n getIsVisible: () => helpersRef.current.getIsVisible(),\n });\n return (world: { x: number; y: number }) => {\n // A registered layer this view paints gets first refusal, on this\n // view's frame and envelope. One painted over the surface already had\n // its chance: it occludes the view before routing reaches here.\n const extra = registry?.surface()?.hitTestExtras(\n world.x, world.y, camera(), sizeOf(rectNow()), helpersRef.current, drawnLayers(),\n );\n return extra ? layerAffordance(extra.layerId, extra.hit) : inner(world);\n };\n }, [getAnchorState, rectNow, registry, targetScale, camera, drawnLayers, rotationBadge, helpersRef]);\n\n const classifyTarget = useMemo(() => {\n const inner = buildClassifyTarget(\n () => live.current.selection.get(),\n (wx, wy) => {\n const i = inputsRef.current;\n // This view's camera: the dispatcher converted with `clientToWorldHere`,\n // and a screen-pixel tolerance needs the scale that produced it. The\n // layer gate is this view's too, never the surface's.\n const frame = { ...camera(), layerIsPainted };\n if (i?.pickBest) return i.pickBest(wx, wy, frame);\n const ids = i?.pickEvery?.(wx, wy, frame) ?? [];\n return ids.length > 0 ? ids[ids.length - 1]! : null;\n },\n (id) => inputsRef.current?.kindOfNode?.(id),\n );\n return (world: { x: number; y: number }) => inner(world);\n }, [camera, layerIsPainted, live, inputsRef]);\n\n const registration = useMemo<ViewRegistration>(() => ({\n id,\n order,\n interactive,\n paint,\n layer: createViewportLayer<unknown, unknown>({\n id,\n label: label ?? id,\n source: drawnLayers,\n view: cameraAt,\n bounds: (outer, dims) => rectAt(outer, dims),\n // The surface half of the envelope passes through; the view half is\n // this view's, so its layers paint its chrome rather than the\n // surface's.\n data: (outer) => ({ ...(outer as object), ...helpersRef.current, viewId: id }),\n ...(background !== undefined ? { background } : {}),\n }),\n layerIsPainted,\n target: {\n dispatcher: dispatcherRef.current!,\n affordanceAt,\n classifyTarget,\n clientToWorld: clientToWorldHere,\n deps: () => ({\n view: viewApi,\n ingestion: ingestionApi,\n // An Escape here cancels what is in flight here.\n dispatcher: { cancelAll: (reason) => dispatcherRef.current!.cancelAll(reason) },\n // Only a view with its own selection overlays that one; otherwise the\n // surface's answer stands, wrappers (`selectable`) included.\n ...(live.current.viewSelection ? { selection: live.current.viewSelection } : {}),\n }),\n // Action eligibility is chrome-caps evaluated against this view, so a\n // rule that hides an action in one panel cannot decline a gesture in\n // another.\n getRuleCtx: () => inputsRef.current?.chromeCaps?.ruleCtx(ruleInputs()),\n },\n }), [id, order, interactive, paint, label, background, rectAt, cameraAt, viewApi,\n affordanceAt, classifyTarget, clientToWorldHere, ruleInputs, ingestionApi, drawnLayers,\n layerIsPainted, live, inputsRef, helpersRef]);\n\n useEffect(() => {\n if (!registry) return;\n return registry.register(registration);\n }, [registry, registration]);\n\n // Apart from the registration, which is replaced whenever a prop it reads\n // changes: only the view going away ends what is in flight over it.\n useEffect(() => () => dispatcherRef.current?.cancelAll('cancel'), []);\n\n // A controlled camera change is invisible until the surface repaints; an\n // uncontrolled one asks for its repaint in `setView`.\n useEffect(() => {\n registry?.surface()?.requestRedraw();\n }, [registry, viewProp]);\n\n return null;\n}\n"],"mappings":"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"}