@weasel-js/core 1.7.0 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1003) hide show
  1. package/CHANGELOG.md +764 -0
  2. package/README.md +7 -8
  3. package/dist/WeaselProvider.js +15 -0
  4. package/dist/WeaselProvider.js.map +1 -0
  5. package/dist/affordances/composeAffordanceLayer.js +224 -0
  6. package/dist/affordances/composeAffordanceLayer.js.map +1 -0
  7. package/dist/affordances/cornerResize.js +69 -0
  8. package/dist/affordances/cornerResize.js.map +1 -0
  9. package/dist/affordances/hitAffordanceRegions.js +138 -0
  10. package/dist/affordances/hitAffordanceRegions.js.map +1 -0
  11. package/dist/affordances/pathAnchors.js +66 -0
  12. package/dist/affordances/pathAnchors.js.map +1 -0
  13. package/dist/affordances/rotationHandle.js +103 -0
  14. package/dist/affordances/rotationHandle.js.map +1 -0
  15. package/dist/animation/behaviors/momentum.js +118 -0
  16. package/dist/animation/behaviors/momentum.js.map +1 -0
  17. package/dist/animation/colorHelpers.js +135 -0
  18. package/dist/animation/colorHelpers.js.map +1 -0
  19. package/dist/animation/colorRegistry.js +37 -0
  20. package/dist/animation/colorRegistry.js.map +1 -0
  21. package/dist/animation/index.js +20 -0
  22. package/dist/animation/loop.js +62 -0
  23. package/dist/animation/loop.js.map +1 -0
  24. package/dist/animation/observe.js +23 -0
  25. package/dist/animation/observe.js.map +1 -0
  26. package/dist/animation/poseHelpers.js +50 -0
  27. package/dist/animation/poseHelpers.js.map +1 -0
  28. package/dist/animation/reflow.js +121 -0
  29. package/dist/animation/reflow.js.map +1 -0
  30. package/dist/animation/rig/bindRig.js +74 -0
  31. package/dist/animation/rig/bindRig.js.map +1 -0
  32. package/dist/animation/rig/blendPoses.js +43 -0
  33. package/dist/animation/rig/blendPoses.js.map +1 -0
  34. package/dist/animation/rig/mirrorPose.js +19 -0
  35. package/dist/animation/rig/mirrorPose.js.map +1 -0
  36. package/dist/animation/rig/resolveSkeleton.js +33 -0
  37. package/dist/animation/rig/resolveSkeleton.js.map +1 -0
  38. package/dist/animation/rig/solveIk.js +103 -0
  39. package/dist/animation/rig/solveIk.js.map +1 -0
  40. package/dist/animation/rig/types.js +12 -0
  41. package/dist/animation/rig/types.js.map +1 -0
  42. package/dist/animation/rig/useRig.js +23 -0
  43. package/dist/animation/rig/useRig.js.map +1 -0
  44. package/dist/animation/slew.js +27 -0
  45. package/dist/animation/slew.js.map +1 -0
  46. package/dist/animation/stagger.js +138 -0
  47. package/dist/animation/stagger.js.map +1 -0
  48. package/dist/animation/timeline/booking.js +106 -0
  49. package/dist/animation/timeline/booking.js.map +1 -0
  50. package/dist/animation/timeline/createTimeline.js +116 -0
  51. package/dist/animation/timeline/createTimeline.js.map +1 -0
  52. package/dist/animation/timeline/sampleTrack.js +29 -0
  53. package/dist/animation/timeline/sampleTrack.js.map +1 -0
  54. package/dist/animation/useAnimator.js +329 -0
  55. package/dist/animation/useAnimator.js.map +1 -0
  56. package/dist/animation/wrappers/animateLifecycle.js +40 -0
  57. package/dist/animation/wrappers/animateLifecycle.js.map +1 -0
  58. package/dist/animation/wrappers/animateOnSetPose.js +44 -0
  59. package/dist/animation/wrappers/animateOnSetPose.js.map +1 -0
  60. package/dist/{autoPoseDescriptor-_XOyF7t4.d.ts → autoPoseDescriptor-BT_vp9FO.d.ts} +2 -2
  61. package/dist/{builtins-DLn2lCr_.d.ts → builtins-BSUfH8nU.d.ts} +738 -513
  62. package/dist/canvas/Canvas.js +608 -0
  63. package/dist/canvas/Canvas.js.map +1 -0
  64. package/dist/canvas/CanvasView.js +255 -0
  65. package/dist/canvas/CanvasView.js.map +1 -0
  66. package/dist/canvas/CursorCoordsHud.js +75 -0
  67. package/dist/canvas/CursorCoordsHud.js.map +1 -0
  68. package/dist/canvas/DrawCanvas.js +67 -0
  69. package/dist/canvas/DrawCanvas.js.map +1 -0
  70. package/dist/canvas/MinimapCanvas.js +139 -0
  71. package/dist/canvas/MinimapCanvas.js.map +1 -0
  72. package/dist/canvas/ModalityHud.js +66 -0
  73. package/dist/canvas/ModalityHud.js.map +1 -0
  74. package/dist/canvas/NodeShape.js +391 -0
  75. package/dist/canvas/NodeShape.js.map +1 -0
  76. package/dist/canvas/PickHud.js +93 -0
  77. package/dist/canvas/PickHud.js.map +1 -0
  78. package/dist/canvas/SceneCanvas/ActionsProviderIfRoot.js +10 -0
  79. package/dist/canvas/SceneCanvas/ActionsProviderIfRoot.js.map +1 -0
  80. package/dist/canvas/SceneCanvas/DepRegistryProviderIfRoot.js +10 -0
  81. package/dist/canvas/SceneCanvas/DepRegistryProviderIfRoot.js.map +1 -0
  82. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +51 -0
  83. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js.map +1 -0
  84. package/dist/canvas/SceneCanvas/contributionFrameHooks.js +42 -0
  85. package/dist/canvas/SceneCanvas/contributionFrameHooks.js.map +1 -0
  86. package/dist/canvas/SceneCanvas/defaultNodeProperties.js +549 -0
  87. package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -0
  88. package/dist/canvas/SceneCanvas/defaultNodeRouting.js +26 -0
  89. package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -0
  90. package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js +69 -0
  91. package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js.map +1 -0
  92. package/dist/canvas/SceneCanvas/features.js +97 -0
  93. package/dist/canvas/SceneCanvas/features.js.map +1 -0
  94. package/dist/canvas/SceneCanvas/poseGeometry.js +46 -0
  95. package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -0
  96. package/dist/canvas/SceneCanvas/useActionsPropResolver.js +48 -0
  97. package/dist/canvas/SceneCanvas/useActionsPropResolver.js.map +1 -0
  98. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js +70 -0
  99. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js.map +1 -0
  100. package/dist/canvas/SceneCanvas/useContributionRoles.js +75 -0
  101. package/dist/canvas/SceneCanvas/useContributionRoles.js.map +1 -0
  102. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js +172 -0
  103. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js.map +1 -0
  104. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +69 -0
  105. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js.map +1 -0
  106. package/dist/canvas/SceneCanvas/useSceneSelectTool.js +127 -0
  107. package/dist/canvas/SceneCanvas/useSceneSelectTool.js.map +1 -0
  108. package/dist/canvas/SceneCanvas/useViewportActions.js +30 -0
  109. package/dist/canvas/SceneCanvas/useViewportActions.js.map +1 -0
  110. package/dist/canvas/SceneCanvas.js +992 -0
  111. package/dist/canvas/SceneCanvas.js.map +1 -0
  112. package/dist/canvas/SceneViewCanvas.js +54 -0
  113. package/dist/canvas/SceneViewCanvas.js.map +1 -0
  114. package/dist/canvas/accentColor.js +9 -0
  115. package/dist/canvas/accentColor.js.map +1 -0
  116. package/dist/canvas/affordanceAt.js +63 -0
  117. package/dist/canvas/affordanceAt.js.map +1 -0
  118. package/dist/canvas/buildSceneTree.js +65 -0
  119. package/dist/canvas/buildSceneTree.js.map +1 -0
  120. package/dist/canvas/canvasRenderer.js +89 -0
  121. package/dist/canvas/canvasRenderer.js.map +1 -0
  122. package/dist/canvas/colorOverrides.js +16 -0
  123. package/dist/canvas/colorOverrides.js.map +1 -0
  124. package/dist/canvas/defaultDrawOne.js +43 -0
  125. package/dist/canvas/defaultDrawOne.js.map +1 -0
  126. package/dist/canvas/deps/areaSelect.js +19 -0
  127. package/dist/canvas/deps/areaSelect.js.map +1 -0
  128. package/dist/canvas/deps/debug.js +9 -0
  129. package/dist/canvas/deps/debug.js.map +1 -0
  130. package/dist/canvas/deps/dispatcher.js +11 -0
  131. package/dist/canvas/deps/dispatcher.js.map +1 -0
  132. package/dist/canvas/deps/editAnchors.js +101 -0
  133. package/dist/canvas/deps/editAnchors.js.map +1 -0
  134. package/dist/canvas/deps/geometryProjection.js +11 -0
  135. package/dist/canvas/deps/geometryProjection.js.map +1 -0
  136. package/dist/canvas/deps/hitTestArea.js +51 -0
  137. package/dist/canvas/deps/hitTestArea.js.map +1 -0
  138. package/dist/canvas/deps/ingestion.js +31 -0
  139. package/dist/canvas/deps/ingestion.js.map +1 -0
  140. package/dist/canvas/deps/insert.js +116 -0
  141. package/dist/canvas/deps/insert.js.map +1 -0
  142. package/dist/canvas/deps/lassoSelect.js +20 -0
  143. package/dist/canvas/deps/lassoSelect.js.map +1 -0
  144. package/dist/canvas/deps/layout.js +34 -0
  145. package/dist/canvas/deps/layout.js.map +1 -0
  146. package/dist/canvas/deps/nodeAtPoint.js +19 -0
  147. package/dist/canvas/deps/nodeAtPoint.js.map +1 -0
  148. package/dist/canvas/deps/poseComposition.js +11 -0
  149. package/dist/canvas/deps/poseComposition.js.map +1 -0
  150. package/dist/canvas/deps/poseDescriptor.js +12 -0
  151. package/dist/canvas/deps/poseDescriptor.js.map +1 -0
  152. package/dist/canvas/deps/resizePolicy.js +35 -0
  153. package/dist/canvas/deps/resizePolicy.js.map +1 -0
  154. package/dist/canvas/deps/slice.js +99 -0
  155. package/dist/canvas/deps/slice.js.map +1 -0
  156. package/dist/canvas/deps/snap.js +11 -0
  157. package/dist/canvas/deps/snap.js.map +1 -0
  158. package/dist/canvas/deps/textEdit.js +21 -0
  159. package/dist/canvas/deps/textEdit.js.map +1 -0
  160. package/dist/canvas/deps/view.js +43 -0
  161. package/dist/canvas/deps/view.js.map +1 -0
  162. package/dist/canvas/derivedPath.js +47 -0
  163. package/dist/canvas/derivedPath.js.map +1 -0
  164. package/dist/canvas/drawEnvelope.js +22 -0
  165. package/dist/canvas/drawEnvelope.js.map +1 -0
  166. package/dist/canvas/getNodeAtPoint.js +18 -0
  167. package/dist/canvas/getNodeAtPoint.js.map +1 -0
  168. package/dist/canvas/hostAnchor.js +29 -0
  169. package/dist/canvas/hostAnchor.js.map +1 -0
  170. package/dist/canvas/hud.module.js +18 -0
  171. package/dist/canvas/hud.module.js.map +1 -0
  172. package/dist/canvas/insertPreviewExtent.js +103 -0
  173. package/dist/canvas/insertPreviewExtent.js.map +1 -0
  174. package/dist/canvas/kitRequirements.js +177 -0
  175. package/dist/canvas/kitRequirements.js.map +1 -0
  176. package/dist/canvas/layerOrder.js +66 -0
  177. package/dist/canvas/layerOrder.js.map +1 -0
  178. package/dist/canvas/layerSlots.js +14 -0
  179. package/dist/canvas/layerSlots.js.map +1 -0
  180. package/dist/canvas/minimapMath.js +80 -0
  181. package/dist/canvas/minimapMath.js.map +1 -0
  182. package/dist/canvas/mountedCanvases.js +20 -0
  183. package/dist/canvas/mountedCanvases.js.map +1 -0
  184. package/dist/canvas/overlayRoleStrokes.js +17 -0
  185. package/dist/canvas/overlayRoleStrokes.js.map +1 -0
  186. package/dist/canvas/paintCull.js +20 -0
  187. package/dist/canvas/paintCull.js.map +1 -0
  188. package/dist/canvas/pickWalk.js +158 -0
  189. package/dist/canvas/pickWalk.js.map +1 -0
  190. package/dist/canvas/planeClips.js +30 -0
  191. package/dist/canvas/planeClips.js.map +1 -0
  192. package/dist/canvas/poseRotation.js +35 -0
  193. package/dist/canvas/poseRotation.js.map +1 -0
  194. package/dist/canvas/rasterToPng.js +21 -0
  195. package/dist/canvas/rasterToPng.js.map +1 -0
  196. package/dist/canvas/renderDebugSnapshot.js +32 -0
  197. package/dist/canvas/renderDebugSnapshot.js.map +1 -0
  198. package/dist/canvas/renderNeeds.js +25 -0
  199. package/dist/canvas/renderNeeds.js.map +1 -0
  200. package/dist/canvas/renderSceneToPixels.js +143 -0
  201. package/dist/canvas/renderSceneToPixels.js.map +1 -0
  202. package/dist/canvas/sceneAdapter.js +270 -0
  203. package/dist/canvas/sceneAdapter.js.map +1 -0
  204. package/dist/canvas/sceneLayerPaint.js +37 -0
  205. package/dist/canvas/sceneLayerPaint.js.map +1 -0
  206. package/dist/canvas/sceneSlotWiring.js +20 -0
  207. package/dist/canvas/sceneSlotWiring.js.map +1 -0
  208. package/dist/canvas/sceneViewRender.js +72 -0
  209. package/dist/canvas/sceneViewRender.js.map +1 -0
  210. package/dist/canvas/slopsDebugLayer.js +61 -0
  211. package/dist/canvas/slopsDebugLayer.js.map +1 -0
  212. package/dist/canvas/surfaceContribution.js +15 -0
  213. package/dist/canvas/surfaceContribution.js.map +1 -0
  214. package/dist/canvas/toolPreview.js +39 -0
  215. package/dist/canvas/toolPreview.js.map +1 -0
  216. package/dist/canvas/useCanvasRenderer.js +11 -0
  217. package/dist/canvas/useCanvasRenderer.js.map +1 -0
  218. package/dist/canvas/useFrameLoop.js +60 -0
  219. package/dist/canvas/useFrameLoop.js.map +1 -0
  220. package/dist/canvas/useHostAnchor.js +71 -0
  221. package/dist/canvas/useHostAnchor.js.map +1 -0
  222. package/dist/canvas/useLateContentRedraw.js +21 -0
  223. package/dist/canvas/useLateContentRedraw.js.map +1 -0
  224. package/dist/canvas/useRedrawOn.js +21 -0
  225. package/dist/canvas/useRedrawOn.js.map +1 -0
  226. package/dist/canvas/useViewHelpers.js +120 -0
  227. package/dist/canvas/useViewHelpers.js.map +1 -0
  228. package/dist/canvas/viewInputs.js +17 -0
  229. package/dist/canvas/viewInputs.js.map +1 -0
  230. package/dist/canvas/viewRegistry.js +61 -0
  231. package/dist/canvas/viewRegistry.js.map +1 -0
  232. package/dist/canvas/wrapNodeOutput.js +14 -0
  233. package/dist/canvas/wrapNodeOutput.js.map +1 -0
  234. package/dist/clipboard.d.ts +10 -5
  235. package/dist/clipboard.js +3 -5
  236. package/dist/clone.d.ts +3 -3
  237. package/dist/clone.js +2 -5
  238. package/dist/core/adapters/arrayAdapter.js +85 -0
  239. package/dist/core/adapters/arrayAdapter.js.map +1 -0
  240. package/dist/core/adapters/useArrayAdapter.js +13 -0
  241. package/dist/core/adapters/useArrayAdapter.js.map +1 -0
  242. package/dist/core/applyOps.js +12 -0
  243. package/dist/core/applyOps.js.map +1 -0
  244. package/dist/core/device/index.js +4 -0
  245. package/dist/core/device/targets.js +17 -0
  246. package/dist/core/device/targets.js.map +1 -0
  247. package/dist/core/device/useDeviceProfile.js +75 -0
  248. package/dist/core/device/useDeviceProfile.js.map +1 -0
  249. package/dist/core/fillInPoseFrame.js +102 -0
  250. package/dist/core/fillInPoseFrame.js.map +1 -0
  251. package/dist/core/geometry/poseDescriptor.js +98 -0
  252. package/dist/core/geometry/poseDescriptor.js.map +1 -0
  253. package/dist/core/geometry/poseRotation.js +58 -0
  254. package/dist/core/geometry/poseRotation.js.map +1 -0
  255. package/dist/core/geometry/regionHit.js +102 -0
  256. package/dist/core/geometry/regionHit.js.map +1 -0
  257. package/dist/core/geometry/unionBounds.js +60 -0
  258. package/dist/core/geometry/unionBounds.js.map +1 -0
  259. package/dist/core/gradient.js +136 -0
  260. package/dist/core/gradient.js.map +1 -0
  261. package/dist/core/isPlainObject.js +11 -0
  262. package/dist/core/isPlainObject.js.map +1 -0
  263. package/dist/core/layers/render.js +150 -0
  264. package/dist/core/layers/render.js.map +1 -0
  265. package/dist/core/markerInset.js +24 -0
  266. package/dist/core/markerInset.js.map +1 -0
  267. package/dist/core/mixed.js +6 -0
  268. package/dist/core/mixed.js.map +1 -0
  269. package/dist/core/ops/arrange.js +31 -0
  270. package/dist/core/ops/arrange.js.map +1 -0
  271. package/dist/core/ops/create.js +32 -0
  272. package/dist/core/ops/create.js.map +1 -0
  273. package/dist/core/ops/createHistory.js +20 -0
  274. package/dist/core/ops/createHistory.js.map +1 -0
  275. package/dist/core/ops/delete.js +89 -0
  276. package/dist/core/ops/delete.js.map +1 -0
  277. package/dist/core/ops/registry.js +17 -0
  278. package/dist/core/ops/registry.js.map +1 -0
  279. package/dist/core/ops/reorder/algorithms.js +55 -0
  280. package/dist/core/ops/reorder/algorithms.js.map +1 -0
  281. package/dist/core/ops/reorder/index.js +140 -0
  282. package/dist/core/ops/reorder/index.js.map +1 -0
  283. package/dist/core/ops/reparent.js +52 -0
  284. package/dist/core/ops/reparent.js.map +1 -0
  285. package/dist/core/ops/select.js +34 -0
  286. package/dist/core/ops/select.js.map +1 -0
  287. package/dist/core/ops/setData.js +34 -0
  288. package/dist/core/ops/setData.js.map +1 -0
  289. package/dist/core/ops/setLayer.js +34 -0
  290. package/dist/core/ops/setLayer.js.map +1 -0
  291. package/dist/core/ops/setLayout.js +31 -0
  292. package/dist/core/ops/setLayout.js.map +1 -0
  293. package/dist/core/ops/setPath.js +57 -0
  294. package/dist/core/ops/setPath.js.map +1 -0
  295. package/dist/core/ops/setText.js +34 -0
  296. package/dist/core/ops/setText.js.map +1 -0
  297. package/dist/core/ops/slot.js +37 -0
  298. package/dist/core/ops/slot.js.map +1 -0
  299. package/dist/core/ops/transform.js +42 -0
  300. package/dist/core/ops/transform.js.map +1 -0
  301. package/dist/core/paintKinds.js +156 -0
  302. package/dist/core/paintKinds.js.map +1 -0
  303. package/dist/core/scene/NodeProperties.js +20 -0
  304. package/dist/core/scene/NodeProperties.js.map +1 -0
  305. package/dist/core/scene/NodeRouting.js +24 -0
  306. package/dist/core/scene/NodeRouting.js.map +1 -0
  307. package/dist/core/scene/arrivals.js +12 -0
  308. package/dist/core/scene/arrivals.js.map +1 -0
  309. package/dist/core/scene/composeFrame.js +29 -0
  310. package/dist/core/scene/composeFrame.js.map +1 -0
  311. package/dist/core/scene/depMemo.js +18 -0
  312. package/dist/core/scene/depMemo.js.map +1 -0
  313. package/dist/core/scene/dependents.js +66 -0
  314. package/dist/core/scene/dependents.js.map +1 -0
  315. package/dist/core/scene/derivedPath.js +31 -0
  316. package/dist/core/scene/derivedPath.js.map +1 -0
  317. package/dist/core/scene/effectivePose.js +78 -0
  318. package/dist/core/scene/effectivePose.js.map +1 -0
  319. package/dist/core/scene/kitRegistry.js +33 -0
  320. package/dist/core/scene/kitRegistry.js.map +1 -0
  321. package/dist/core/scene/layoutPass.js +96 -0
  322. package/dist/core/scene/layoutPass.js.map +1 -0
  323. package/dist/core/scene/nodeFnFields.js +83 -0
  324. package/dist/core/scene/nodeFnFields.js.map +1 -0
  325. package/dist/core/scene/nodeMemo.js +28 -0
  326. package/dist/core/scene/nodeMemo.js.map +1 -0
  327. package/dist/core/scene/poseFeed.js +87 -0
  328. package/dist/core/scene/poseFeed.js.map +1 -0
  329. package/dist/core/scene/poseOverrides.js +52 -0
  330. package/dist/core/scene/poseOverrides.js.map +1 -0
  331. package/dist/core/scene/poseSnapshot.js +54 -0
  332. package/dist/core/scene/poseSnapshot.js.map +1 -0
  333. package/dist/core/scene/scene.js +1271 -0
  334. package/dist/core/scene/scene.js.map +1 -0
  335. package/dist/core/scene/types.js +6 -0
  336. package/dist/core/scene/types.js.map +1 -0
  337. package/dist/core/scene/useScene.js +32 -0
  338. package/dist/core/scene/useScene.js.map +1 -0
  339. package/dist/core/selection/chromeState.js +31 -0
  340. package/dist/core/selection/chromeState.js.map +1 -0
  341. package/dist/core/selection/selectionTarget.js +6 -0
  342. package/dist/core/selection/selectionTarget.js.map +1 -0
  343. package/dist/core/selection/useSelection.js +71 -0
  344. package/dist/core/selection/useSelection.js.map +1 -0
  345. package/dist/core/shapeKinds.js +54 -0
  346. package/dist/core/shapeKinds.js.map +1 -0
  347. package/dist/core/strokeMarkerShapes.js +139 -0
  348. package/dist/core/strokeMarkerShapes.js.map +1 -0
  349. package/dist/core/strokeMarkers.js +28 -0
  350. package/dist/core/strokeMarkers.js.map +1 -0
  351. package/dist/core/stylus/stylus.js +39 -0
  352. package/dist/core/stylus/stylus.js.map +1 -0
  353. package/dist/core/stylus/usePointerStylus.js +51 -0
  354. package/dist/core/stylus/usePointerStylus.js.map +1 -0
  355. package/dist/core/usePaintKinds.js +17 -0
  356. package/dist/core/usePaintKinds.js.map +1 -0
  357. package/dist/core/viewport/clampView.js +24 -0
  358. package/dist/core/viewport/clampView.js.map +1 -0
  359. package/dist/core/viewport/clientToWorld.js +8 -0
  360. package/dist/core/viewport/clientToWorld.js.map +1 -0
  361. package/dist/core/viewport/createVelocityTracker.js +39 -0
  362. package/dist/core/viewport/createVelocityTracker.js.map +1 -0
  363. package/dist/core/viewport/fitToBounds.js +18 -0
  364. package/dist/core/viewport/fitToBounds.js.map +1 -0
  365. package/dist/core/viewport/fitViewToBounds.js +36 -0
  366. package/dist/core/viewport/fitViewToBounds.js.map +1 -0
  367. package/dist/core/viewport/interpolateView.js +34 -0
  368. package/dist/core/viewport/interpolateView.js.map +1 -0
  369. package/dist/core/viewport/meanScale.js +8 -0
  370. package/dist/core/viewport/meanScale.js.map +1 -0
  371. package/dist/core/viewport/parallax.js +111 -0
  372. package/dist/core/viewport/parallax.js.map +1 -0
  373. package/dist/core/viewport/pxExtent.js +42 -0
  374. package/dist/core/viewport/pxExtent.js.map +1 -0
  375. package/dist/core/viewport/sceneNodeClientRect.js +18 -0
  376. package/dist/core/viewport/sceneNodeClientRect.js.map +1 -0
  377. package/dist/core/viewport/screenSlop.js +27 -0
  378. package/dist/core/viewport/screenSlop.js.map +1 -0
  379. package/dist/core/viewport/useAutoCenter.js +32 -0
  380. package/dist/core/viewport/useAutoCenter.js.map +1 -0
  381. package/dist/core/viewport/useCanvasSize.js +29 -0
  382. package/dist/core/viewport/useCanvasSize.js.map +1 -0
  383. package/dist/core/viewport/useDecayLoop.js +63 -0
  384. package/dist/core/viewport/useDecayLoop.js.map +1 -0
  385. package/dist/core/viewport/useVelocityTracker.js +10 -0
  386. package/dist/core/viewport/useVelocityTracker.js.map +1 -0
  387. package/dist/core/viewport/useViewAnimation.js +63 -0
  388. package/dist/core/viewport/useViewAnimation.js.map +1 -0
  389. package/dist/core/viewport/view.js +37 -0
  390. package/dist/core/viewport/view.js.map +1 -0
  391. package/dist/core/viewport/viewTransform.js +11 -0
  392. package/dist/core/viewport/viewTransform.js.map +1 -0
  393. package/dist/core/viewport/viewportWorldRect.js +13 -0
  394. package/dist/core/viewport/viewportWorldRect.js.map +1 -0
  395. package/dist/core/viewport/wheelHandler.js +30 -0
  396. package/dist/core/viewport/wheelHandler.js.map +1 -0
  397. package/dist/core/viewport/zoomAt.js +22 -0
  398. package/dist/core/viewport/zoomAt.js.map +1 -0
  399. package/dist/core/viewport/zoomBounds.js +20 -0
  400. package/dist/core/viewport/zoomBounds.js.map +1 -0
  401. package/dist/{pointSnapToGrid-Dp2IxLGb.d.ts → cornerHandles-CDcZOV8h.d.ts} +3 -13
  402. package/dist/debug/createDebugOverlayLayer.js +358 -0
  403. package/dist/debug/createDebugOverlayLayer.js.map +1 -0
  404. package/dist/debug/createDebugSink.js +83 -0
  405. package/dist/debug/createDebugSink.js.map +1 -0
  406. package/dist/debug/defaultTheme.js +31 -0
  407. package/dist/debug/defaultTheme.js.map +1 -0
  408. package/dist/debug/flag.js +41 -0
  409. package/dist/debug/flag.js.map +1 -0
  410. package/dist/debug/frameStats.js +16 -0
  411. package/dist/debug/frameStats.js.map +1 -0
  412. package/dist/debug/parseDebugFlags.js +32 -0
  413. package/dist/debug/parseDebugFlags.js.map +1 -0
  414. package/dist/features/chrome-caps/buildChromeCtx.js +16 -0
  415. package/dist/features/chrome-caps/buildChromeCtx.js.map +1 -0
  416. package/dist/features/chrome-caps/conditions.js +36 -0
  417. package/dist/features/chrome-caps/conditions.js.map +1 -0
  418. package/dist/features/chrome-caps/defaults.js +26 -0
  419. package/dist/features/chrome-caps/defaults.js.map +1 -0
  420. package/dist/features/chrome-caps/index.js +7 -0
  421. package/dist/features/chrome-caps/resolve.js +23 -0
  422. package/dist/features/chrome-caps/resolve.js.map +1 -0
  423. package/dist/features/chrome-caps/useHoverTracking.js +27 -0
  424. package/dist/features/chrome-caps/useHoverTracking.js.map +1 -0
  425. package/dist/features/cursor/paintedCursorLayer.js +60 -0
  426. package/dist/features/cursor/paintedCursorLayer.js.map +1 -0
  427. package/dist/features/focus/gateLayer.js +14 -0
  428. package/dist/features/focus/gateLayer.js.map +1 -0
  429. package/dist/features/focus/useCanvasFocus.js +29 -0
  430. package/dist/features/focus/useCanvasFocus.js.map +1 -0
  431. package/dist/features/groups/children.js +23 -0
  432. package/dist/features/groups/children.js.map +1 -0
  433. package/dist/features/groups/composePose.js +67 -0
  434. package/dist/features/groups/composePose.js.map +1 -0
  435. package/dist/features/groups/nestedHit.js +40 -0
  436. package/dist/features/groups/nestedHit.js.map +1 -0
  437. package/dist/features/groups/unionOfChildren.js +15 -0
  438. package/dist/features/groups/unionOfChildren.js.map +1 -0
  439. package/dist/features/images/imageCache.js +94 -0
  440. package/dist/features/images/imageCache.js.map +1 -0
  441. package/dist/features/ingestion/contentHandlers.js +37 -0
  442. package/dist/features/ingestion/contentHandlers.js.map +1 -0
  443. package/dist/features/ingestion/imageHandler.js +45 -0
  444. package/dist/features/ingestion/imageHandler.js.map +1 -0
  445. package/dist/features/ingestion/index.js +8 -0
  446. package/dist/features/ingestion/openFilePicker.js +15 -0
  447. package/dist/features/ingestion/openFilePicker.js.map +1 -0
  448. package/dist/features/ingestion/registerKitHandlers.js +26 -0
  449. package/dist/features/ingestion/registerKitHandlers.js.map +1 -0
  450. package/dist/features/ingestion/svgHandler.js +58 -0
  451. package/dist/features/ingestion/svgHandler.js.map +1 -0
  452. package/dist/features/ingestion/weaselJsonHandler.js +39 -0
  453. package/dist/features/ingestion/weaselJsonHandler.js.map +1 -0
  454. package/dist/features/longPress/longPressFeedback.js +96 -0
  455. package/dist/features/longPress/longPressFeedback.js.map +1 -0
  456. package/dist/features/meshPaint/bake.js +79 -0
  457. package/dist/features/meshPaint/bake.js.map +1 -0
  458. package/dist/features/meshPaint/bakeCache.js +59 -0
  459. package/dist/features/meshPaint/bakeCache.js.map +1 -0
  460. package/dist/features/meshPaint/handles.js +86 -0
  461. package/dist/features/meshPaint/handles.js.map +1 -0
  462. package/dist/features/meshPaint/lazyKind.js +1298 -0
  463. package/dist/features/meshPaint/lazyKind.js.map +1 -0
  464. package/dist/features/meshPaint/meshPaint.js +236 -0
  465. package/dist/features/meshPaint/meshPaint.js.map +1 -0
  466. package/dist/features/meshPaint/meshShader.js +6 -0
  467. package/dist/features/meshPaint/meshShader.js.map +1 -0
  468. package/dist/features/meshPaint/register.js +7 -0
  469. package/dist/features/meshPaint/register.js.map +1 -0
  470. package/dist/features/meshPaint/surface.js +110 -0
  471. package/dist/features/meshPaint/surface.js.map +1 -0
  472. package/dist/features/minimap/actions.js +53 -0
  473. package/dist/features/minimap/actions.js.map +1 -0
  474. package/dist/features/minimap/createMinimapContribution.js +96 -0
  475. package/dist/features/minimap/createMinimapContribution.js.map +1 -0
  476. package/dist/features/minimap/layers.js +103 -0
  477. package/dist/features/minimap/layers.js.map +1 -0
  478. package/dist/features/modes/modeLayers.js +113 -0
  479. package/dist/features/modes/modeLayers.js.map +1 -0
  480. package/dist/features/overlays/useNodeOverlayFrame.js +103 -0
  481. package/dist/features/overlays/useNodeOverlayFrame.js.map +1 -0
  482. package/dist/features/parallax/createParallaxLayer.js +26 -0
  483. package/dist/features/parallax/createParallaxLayer.js.map +1 -0
  484. package/dist/features/parallax/createParallaxPlane.js +26 -0
  485. package/dist/features/parallax/createParallaxPlane.js.map +1 -0
  486. package/dist/features/paths/anchorEdits.js +156 -0
  487. package/dist/features/paths/anchorEdits.js.map +1 -0
  488. package/dist/features/paths/anchors.js +154 -0
  489. package/dist/features/paths/anchors.js.map +1 -0
  490. package/dist/features/paths/booleans.js +2 -0
  491. package/dist/features/paths/index.js +15 -0
  492. package/dist/features/paths/markerCommands.js +116 -0
  493. package/dist/features/paths/markerCommands.js.map +1 -0
  494. package/dist/features/paths/markerSites.js +59 -0
  495. package/dist/features/paths/markerSites.js.map +1 -0
  496. package/dist/features/paths/markers.js +95 -0
  497. package/dist/features/paths/markers.js.map +1 -0
  498. package/dist/features/paths/nearestAnchor.js +36 -0
  499. package/dist/features/paths/nearestAnchor.js.map +1 -0
  500. package/dist/features/paths/originProjection.js +16 -0
  501. package/dist/features/paths/originProjection.js.map +1 -0
  502. package/dist/features/paths/pathEditingOverlayLayer.js +137 -0
  503. package/dist/features/paths/pathEditingOverlayLayer.js.map +1 -0
  504. package/dist/features/paths/pathInWorld.js +41 -0
  505. package/dist/features/paths/pathInWorld.js.map +1 -0
  506. package/dist/features/paths/pathLayer.js +44 -0
  507. package/dist/features/paths/pathLayer.js.map +1 -0
  508. package/dist/features/paths/penPreviewLayer.js +220 -0
  509. package/dist/features/paths/penPreviewLayer.js.map +1 -0
  510. package/dist/features/paths/poseDescriptor.js +44 -0
  511. package/dist/features/paths/poseDescriptor.js.map +1 -0
  512. package/dist/features/paths/tessellate/stroke.js +230 -0
  513. package/dist/features/paths/tessellate/stroke.js.map +1 -0
  514. package/dist/features/patterns/index.js +23 -0
  515. package/dist/features/patterns/index.js.map +1 -0
  516. package/dist/features/patterns/patterns-builtin.js +38 -0
  517. package/dist/features/patterns/patterns-builtin.js.map +1 -0
  518. package/dist/features/patterns/resolveSpec.js +57 -0
  519. package/dist/features/patterns/resolveSpec.js.map +1 -0
  520. package/dist/features/patterns/tileGeometry.js +158 -0
  521. package/dist/features/patterns/tileGeometry.js.map +1 -0
  522. package/dist/features/pointer/PointerContext.js +45 -0
  523. package/dist/features/pointer/PointerContext.js.map +1 -0
  524. package/dist/features/poseRun/usePoseRun.js +70 -0
  525. package/dist/features/poseRun/usePoseRun.js.map +1 -0
  526. package/dist/features/selection/SelectionContext.js +46 -0
  527. package/dist/features/selection/SelectionContext.js.map +1 -0
  528. package/dist/features/selection/overlay.js +442 -0
  529. package/dist/features/selection/overlay.js.map +1 -0
  530. package/dist/features/simulation/createSimulation.js +61 -0
  531. package/dist/features/simulation/createSimulation.js.map +1 -0
  532. package/dist/features/simulation/types.js +6 -0
  533. package/dist/features/simulation/types.js.map +1 -0
  534. package/dist/features/simulation/useSimulation.js +74 -0
  535. package/dist/features/simulation/useSimulation.js.map +1 -0
  536. package/dist/features/text/domRuns.js +258 -0
  537. package/dist/features/text/domRuns.js.map +1 -0
  538. package/dist/features/text/fitTextPose.js +38 -0
  539. package/dist/features/text/fitTextPose.js.map +1 -0
  540. package/dist/features/text/hitTest.js +45 -0
  541. package/dist/features/text/hitTest.js.map +1 -0
  542. package/dist/features/text/renderLabel.js +14 -0
  543. package/dist/features/text/renderLabel.js.map +1 -0
  544. package/dist/features/text/runs/effectiveRangeStyle.js +66 -0
  545. package/dist/features/text/runs/effectiveRangeStyle.js.map +1 -0
  546. package/dist/features/text/runs/flagRange.js +53 -0
  547. package/dist/features/text/runs/flagRange.js.map +1 -0
  548. package/dist/features/text/runs/rangeStyle.js +135 -0
  549. package/dist/features/text/runs/rangeStyle.js.map +1 -0
  550. package/dist/features/text/textCommand.js +59 -0
  551. package/dist/features/text/textCommand.js.map +1 -0
  552. package/dist/features/text/textLayer.js +35 -0
  553. package/dist/features/text/textLayer.js.map +1 -0
  554. package/dist/features/text/textToPath.js +181 -0
  555. package/dist/features/text/textToPath.js.map +1 -0
  556. package/dist/features/text/useSceneTextEdit.js +138 -0
  557. package/dist/features/text/useSceneTextEdit.js.map +1 -0
  558. package/dist/features/text/useTextEdit.js +465 -0
  559. package/dist/features/text/useTextEdit.js.map +1 -0
  560. package/dist/features/tiling/createTiledLayer.js +63 -0
  561. package/dist/features/tiling/createTiledLayer.js.map +1 -0
  562. package/dist/features/tiling/tiledProject.js +14 -0
  563. package/dist/features/tiling/tiledProject.js.map +1 -0
  564. package/dist/features/viewports/viewResolver.js +59 -0
  565. package/dist/features/viewports/viewResolver.js.map +1 -0
  566. package/dist/features/viewports/viewportLayer.js +58 -0
  567. package/dist/features/viewports/viewportLayer.js.map +1 -0
  568. package/dist/icons/ArrowIcon.js +23 -0
  569. package/dist/icons/ArrowIcon.js.map +1 -0
  570. package/dist/icons/EllipseIcon.js +21 -0
  571. package/dist/icons/EllipseIcon.js.map +1 -0
  572. package/dist/icons/EyedropperIcon.js +49 -0
  573. package/dist/icons/EyedropperIcon.js.map +1 -0
  574. package/dist/icons/HandIcon.js +59 -0
  575. package/dist/icons/HandIcon.js.map +1 -0
  576. package/dist/icons/ImageIcon.js +34 -0
  577. package/dist/icons/ImageIcon.js.map +1 -0
  578. package/dist/icons/LassoIcon.js +22 -0
  579. package/dist/icons/LassoIcon.js.map +1 -0
  580. package/dist/icons/LineIcon.js +22 -0
  581. package/dist/icons/LineIcon.js.map +1 -0
  582. package/dist/icons/PenIcon.js +36 -0
  583. package/dist/icons/PenIcon.js.map +1 -0
  584. package/dist/icons/PencilIcon.js +25 -0
  585. package/dist/icons/PencilIcon.js.map +1 -0
  586. package/dist/icons/PolygonIcon.js +19 -0
  587. package/dist/icons/PolygonIcon.js.map +1 -0
  588. package/dist/icons/RectIcon.js +37 -0
  589. package/dist/icons/RectIcon.js.map +1 -0
  590. package/dist/icons/SelectIcon.js +20 -0
  591. package/dist/icons/SelectIcon.js.map +1 -0
  592. package/dist/icons/StarIcon.js +19 -0
  593. package/dist/icons/StarIcon.js.map +1 -0
  594. package/dist/icons/TextIcon.js +19 -0
  595. package/dist/icons/TextIcon.js.map +1 -0
  596. package/dist/icons/UnknownIcon.js +33 -0
  597. package/dist/icons/UnknownIcon.js.map +1 -0
  598. package/dist/icons/_base.js +12 -0
  599. package/dist/icons/_base.js.map +1 -0
  600. package/dist/index.css +2 -62
  601. package/dist/index.d.ts +1955 -1891
  602. package/dist/index.js +312 -13
  603. package/dist/input/keyState.js +76 -0
  604. package/dist/input/keyState.js.map +1 -0
  605. package/dist/input/useKeyState.js +22 -0
  606. package/dist/input/useKeyState.js.map +1 -0
  607. package/dist/interactions/actions/actionShortcuts.js +32 -0
  608. package/dist/interactions/actions/actionShortcuts.js.map +1 -0
  609. package/dist/interactions/actions/align/align.js +81 -0
  610. package/dist/interactions/actions/align/align.js.map +1 -0
  611. package/dist/interactions/actions/booleans/booleans.js +120 -0
  612. package/dist/interactions/actions/booleans/booleans.js.map +1 -0
  613. package/dist/interactions/actions/booleans/useBooleans.js +20 -0
  614. package/dist/interactions/actions/booleans/useBooleans.js.map +1 -0
  615. package/dist/interactions/actions/booleans/useBooleansAdapter.js +9 -0
  616. package/dist/interactions/actions/booleans/useBooleansAdapter.js.map +1 -0
  617. package/dist/interactions/actions/clipboard/clipboardOps.js +94 -0
  618. package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -0
  619. package/dist/interactions/actions/clipboard/materializePaste.js +25 -0
  620. package/dist/interactions/actions/clipboard/materializePaste.js.map +1 -0
  621. package/dist/interactions/actions/clipboard/wireFormat.js +43 -0
  622. package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -0
  623. package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js +26 -0
  624. package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js.map +1 -0
  625. package/dist/interactions/actions/defaultCommitAdapter.js +42 -0
  626. package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -0
  627. package/dist/interactions/actions/defaults/align.js +71 -0
  628. package/dist/interactions/actions/defaults/align.js.map +1 -0
  629. package/dist/interactions/actions/defaults/anchorEditing.js +235 -0
  630. package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -0
  631. package/dist/interactions/actions/defaults/areaSelect.js +75 -0
  632. package/dist/interactions/actions/defaults/areaSelect.js.map +1 -0
  633. package/dist/interactions/actions/defaults/booleans.js +52 -0
  634. package/dist/interactions/actions/defaults/booleans.js.map +1 -0
  635. package/dist/interactions/actions/defaults/cancelGesture.js +24 -0
  636. package/dist/interactions/actions/defaults/cancelGesture.js.map +1 -0
  637. package/dist/interactions/actions/defaults/clearSelection.js +19 -0
  638. package/dist/interactions/actions/defaults/clearSelection.js.map +1 -0
  639. package/dist/interactions/actions/defaults/clipboard.js +78 -0
  640. package/dist/interactions/actions/defaults/clipboard.js.map +1 -0
  641. package/dist/interactions/actions/defaults/clone.js +96 -0
  642. package/dist/interactions/actions/defaults/clone.js.map +1 -0
  643. package/dist/interactions/actions/defaults/createOutlines.js +47 -0
  644. package/dist/interactions/actions/defaults/createOutlines.js.map +1 -0
  645. package/dist/interactions/actions/defaults/createPaintAction.js +85 -0
  646. package/dist/interactions/actions/defaults/createPaintAction.js.map +1 -0
  647. package/dist/interactions/actions/defaults/delete.js +61 -0
  648. package/dist/interactions/actions/defaults/delete.js.map +1 -0
  649. package/dist/interactions/actions/defaults/distribute.js +66 -0
  650. package/dist/interactions/actions/defaults/distribute.js.map +1 -0
  651. package/dist/interactions/actions/defaults/duplicate.js +83 -0
  652. package/dist/interactions/actions/defaults/duplicate.js.map +1 -0
  653. package/dist/interactions/actions/defaults/editAnchors.js +100 -0
  654. package/dist/interactions/actions/defaults/editAnchors.js.map +1 -0
  655. package/dist/interactions/actions/defaults/enterPathEdit.js +29 -0
  656. package/dist/interactions/actions/defaults/enterPathEdit.js.map +1 -0
  657. package/dist/interactions/actions/defaults/enterTextEdit.js +20 -0
  658. package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -0
  659. package/dist/interactions/actions/defaults/escape.js +26 -0
  660. package/dist/interactions/actions/defaults/escape.js.map +1 -0
  661. package/dist/interactions/actions/defaults/exitPathEdit.js +22 -0
  662. package/dist/interactions/actions/defaults/exitPathEdit.js.map +1 -0
  663. package/dist/interactions/actions/defaults/flip.js +119 -0
  664. package/dist/interactions/actions/defaults/flip.js.map +1 -0
  665. package/dist/interactions/actions/defaults/freshNodeId.js +10 -0
  666. package/dist/interactions/actions/defaults/freshNodeId.js.map +1 -0
  667. package/dist/interactions/actions/defaults/group.js +131 -0
  668. package/dist/interactions/actions/defaults/group.js.map +1 -0
  669. package/dist/interactions/actions/defaults/icons/actionGlyphIcons.js +40 -0
  670. package/dist/interactions/actions/defaults/icons/actionGlyphIcons.js.map +1 -0
  671. package/dist/interactions/actions/defaults/icons/actionGlyphs.js +10 -0
  672. package/dist/interactions/actions/defaults/icons/actionGlyphs.js.map +1 -0
  673. package/dist/interactions/actions/defaults/icons/alignIcons.js +173 -0
  674. package/dist/interactions/actions/defaults/icons/alignIcons.js.map +1 -0
  675. package/dist/interactions/actions/defaults/icons/booleanIcons.js +171 -0
  676. package/dist/interactions/actions/defaults/icons/booleanIcons.js.map +1 -0
  677. package/dist/interactions/actions/defaults/icons/distributeIcons.js +63 -0
  678. package/dist/interactions/actions/defaults/icons/distributeIcons.js.map +1 -0
  679. package/dist/interactions/actions/defaults/icons/editIcons.js +280 -0
  680. package/dist/interactions/actions/defaults/icons/editIcons.js.map +1 -0
  681. package/dist/interactions/actions/defaults/icons/outlineIcons.js +53 -0
  682. package/dist/interactions/actions/defaults/icons/outlineIcons.js.map +1 -0
  683. package/dist/interactions/actions/defaults/ingest.js +58 -0
  684. package/dist/interactions/actions/defaults/ingest.js.map +1 -0
  685. package/dist/interactions/actions/defaults/insert.js +288 -0
  686. package/dist/interactions/actions/defaults/insert.js.map +1 -0
  687. package/dist/interactions/actions/defaults/insertPathAnchor.js +50 -0
  688. package/dist/interactions/actions/defaults/insertPathAnchor.js.map +1 -0
  689. package/dist/interactions/actions/defaults/lassoSelect.js +156 -0
  690. package/dist/interactions/actions/defaults/lassoSelect.js.map +1 -0
  691. package/dist/interactions/actions/defaults/move.js +656 -0
  692. package/dist/interactions/actions/defaults/move.js.map +1 -0
  693. package/dist/interactions/actions/defaults/nudge.js +110 -0
  694. package/dist/interactions/actions/defaults/nudge.js.map +1 -0
  695. package/dist/interactions/actions/defaults/pinchZoom.js +63 -0
  696. package/dist/interactions/actions/defaults/pinchZoom.js.map +1 -0
  697. package/dist/interactions/actions/defaults/reorder.js +143 -0
  698. package/dist/interactions/actions/defaults/reorder.js.map +1 -0
  699. package/dist/interactions/actions/defaults/requiresSelection.js +10 -0
  700. package/dist/interactions/actions/defaults/requiresSelection.js.map +1 -0
  701. package/dist/interactions/actions/defaults/resize.js +332 -0
  702. package/dist/interactions/actions/defaults/resize.js.map +1 -0
  703. package/dist/interactions/actions/defaults/rotate.js +181 -0
  704. package/dist/interactions/actions/defaults/rotate.js.map +1 -0
  705. package/dist/interactions/actions/defaults/selectAll.js +27 -0
  706. package/dist/interactions/actions/defaults/selectAll.js.map +1 -0
  707. package/dist/interactions/actions/defaults/setFill.js +27 -0
  708. package/dist/interactions/actions/defaults/setFill.js.map +1 -0
  709. package/dist/interactions/actions/defaults/setFillOpacity.js +15 -0
  710. package/dist/interactions/actions/defaults/setFillOpacity.js.map +1 -0
  711. package/dist/interactions/actions/defaults/setStroke.js +36 -0
  712. package/dist/interactions/actions/defaults/setStroke.js.map +1 -0
  713. package/dist/interactions/actions/defaults/setStrokeOpacity.js +21 -0
  714. package/dist/interactions/actions/defaults/setStrokeOpacity.js.map +1 -0
  715. package/dist/interactions/actions/defaults/slice.js +39 -0
  716. package/dist/interactions/actions/defaults/slice.js.map +1 -0
  717. package/dist/interactions/actions/defaults/sliceOps.js +60 -0
  718. package/dist/interactions/actions/defaults/sliceOps.js.map +1 -0
  719. package/dist/interactions/actions/defaults/toolActivate.js +35 -0
  720. package/dist/interactions/actions/defaults/toolActivate.js.map +1 -0
  721. package/dist/interactions/actions/defaults/toolResetToDefault.js +26 -0
  722. package/dist/interactions/actions/defaults/toolResetToDefault.js.map +1 -0
  723. package/dist/interactions/actions/defaults/undoRedo.js +51 -0
  724. package/dist/interactions/actions/defaults/undoRedo.js.map +1 -0
  725. package/dist/interactions/actions/defaults/viewportDragPan.js +88 -0
  726. package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -0
  727. package/dist/interactions/actions/defaults/viewportWheelPan.js +57 -0
  728. package/dist/interactions/actions/defaults/viewportWheelPan.js.map +1 -0
  729. package/dist/interactions/actions/defaults/viewportZoom.js +143 -0
  730. package/dist/interactions/actions/defaults/viewportZoom.js.map +1 -0
  731. package/dist/interactions/actions/distribute/distribute.js +42 -0
  732. package/dist/interactions/actions/distribute/distribute.js.map +1 -0
  733. package/dist/interactions/actions/distribute/plan.js +29 -0
  734. package/dist/interactions/actions/distribute/plan.js.map +1 -0
  735. package/dist/interactions/actions/edit-anchors/geometry.js +61 -0
  736. package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -0
  737. package/dist/interactions/actions/edit-anchors/handles.js +43 -0
  738. package/dist/interactions/actions/edit-anchors/handles.js.map +1 -0
  739. package/dist/interactions/actions/flip/helpers.js +35 -0
  740. package/dist/interactions/actions/flip/helpers.js.map +1 -0
  741. package/dist/interactions/actions/geometryProjection.js +18 -0
  742. package/dist/interactions/actions/geometryProjection.js.map +1 -0
  743. package/dist/interactions/actions/gestureLifecycle.js +44 -0
  744. package/dist/interactions/actions/gestureLifecycle.js.map +1 -0
  745. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js +39 -0
  746. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js.map +1 -0
  747. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js +36 -0
  748. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js.map +1 -0
  749. package/dist/interactions/actions/move/behaviors/snapToContainer.js +67 -0
  750. package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -0
  751. package/dist/interactions/actions/move/gestureAdapter.js +37 -0
  752. package/dist/interactions/actions/move/gestureAdapter.js.map +1 -0
  753. package/dist/interactions/actions/outlines/createOutlines.js +84 -0
  754. package/dist/interactions/actions/outlines/createOutlines.js.map +1 -0
  755. package/dist/interactions/actions/outlines/useCreateOutlinesAdapter.js +9 -0
  756. package/dist/interactions/actions/outlines/useCreateOutlinesAdapter.js.map +1 -0
  757. package/dist/interactions/actions/planeInput.js +168 -0
  758. package/dist/interactions/actions/planeInput.js.map +1 -0
  759. package/dist/interactions/actions/poseDescriptorDep.js +9 -0
  760. package/dist/interactions/actions/poseDescriptorDep.js.map +1 -0
  761. package/dist/interactions/actions/poseFrame.js +38 -0
  762. package/dist/interactions/actions/poseFrame.js.map +1 -0
  763. package/dist/interactions/actions/previewOverrides.js +25 -0
  764. package/dist/interactions/actions/previewOverrides.js.map +1 -0
  765. package/dist/interactions/actions/resize/autoPoseDescriptor.js +32 -0
  766. package/dist/interactions/actions/resize/autoPoseDescriptor.js.map +1 -0
  767. package/dist/interactions/actions/resize/behaviors/clampMinSize.js +18 -0
  768. package/dist/interactions/actions/resize/behaviors/clampMinSize.js.map +1 -0
  769. package/dist/interactions/actions/resize/behaviors/index.js +8 -0
  770. package/dist/interactions/actions/resize/behaviors/index.js.map +1 -0
  771. package/dist/interactions/actions/resize/behaviors/lockAspect.js +24 -0
  772. package/dist/interactions/actions/resize/behaviors/lockAspect.js.map +1 -0
  773. package/dist/interactions/actions/resize/cornerHandles.js +72 -0
  774. package/dist/interactions/actions/resize/cornerHandles.js.map +1 -0
  775. package/dist/interactions/actions/resolveOverlays.js +60 -0
  776. package/dist/interactions/actions/resolveOverlays.js.map +1 -0
  777. package/dist/interactions/actions/resolvePreviews.js +61 -0
  778. package/dist/interactions/actions/resolvePreviews.js.map +1 -0
  779. package/dist/interactions/actions/rotate/geometry.js +46 -0
  780. package/dist/interactions/actions/rotate/geometry.js.map +1 -0
  781. package/dist/interactions/actions/rotate/handle.js +27 -0
  782. package/dist/interactions/actions/rotate/handle.js.map +1 -0
  783. package/dist/interactions/actions/spatialReference.js +42 -0
  784. package/dist/interactions/actions/spatialReference.js.map +1 -0
  785. package/dist/interactions/actions/useStandardActions.js +142 -0
  786. package/dist/interactions/actions/useStandardActions.js.map +1 -0
  787. package/dist/interactions/gestures/dragGesture/dragGesture.js +111 -0
  788. package/dist/interactions/gestures/dragGesture/dragGesture.js.map +1 -0
  789. package/dist/interactions/gestures/dragRadial/dragRadial.js +117 -0
  790. package/dist/interactions/gestures/dragRadial/dragRadial.js.map +1 -0
  791. package/dist/interactions/gestures/dragRect/dragRect.js +164 -0
  792. package/dist/interactions/gestures/dragRect/dragRect.js.map +1 -0
  793. package/dist/interactions/gestures/handleDrag/handleDrag.js +46 -0
  794. package/dist/interactions/gestures/handleDrag/handleDrag.js.map +1 -0
  795. package/dist/interactions/gestures/pointerDrag/pointerDrag.js +118 -0
  796. package/dist/interactions/gestures/pointerDrag/pointerDrag.js.map +1 -0
  797. package/dist/interactions/gestures/shared/originProjection.js +42 -0
  798. package/dist/interactions/gestures/shared/originProjection.js.map +1 -0
  799. package/dist/interactions/gestures/shared/screenTolerance.js +21 -0
  800. package/dist/interactions/gestures/shared/screenTolerance.js.map +1 -0
  801. package/dist/interactions/gestures/shared/snap.js +24 -0
  802. package/dist/interactions/gestures/shared/snap.js.map +1 -0
  803. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js +30 -0
  804. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js.map +1 -0
  805. package/dist/layout/arrivals.js +36 -0
  806. package/dist/layout/arrivals.js.map +1 -0
  807. package/dist/{math-MCQcf_gc.d.ts → math-CUMxmZzn.d.ts} +8 -116
  808. package/dist/math.d.ts +4 -5
  809. package/dist/math.js +6 -4
  810. package/dist/mesh.d.ts +268 -0
  811. package/dist/mesh.js +7 -0
  812. package/dist/move.d.ts +7 -49
  813. package/dist/move.js +3 -142
  814. package/dist/originProjection-BSn4xiEy.d.ts +57 -0
  815. package/dist/patterns-builtin.js +3 -3
  816. package/dist/{poseDescriptor-rZa9W5hJ.d.ts → poseDescriptor-CjSXMf8X.d.ts} +3 -3
  817. package/dist/registerProgram-ateHDGjw.d.ts +193 -0
  818. package/dist/renderer/DrawCommand.js +6 -0
  819. package/dist/renderer/DrawCommand.js.map +1 -0
  820. package/dist/renderer/WeaselRenderer.js +328 -0
  821. package/dist/renderer/WeaselRenderer.js.map +1 -0
  822. package/dist/renderer/cache/GLImageCache.js +64 -0
  823. package/dist/renderer/cache/GLImageCache.js.map +1 -0
  824. package/dist/renderer/cache/GLMeshCache.js +102 -0
  825. package/dist/renderer/cache/GLMeshCache.js.map +1 -0
  826. package/dist/renderer/cache/GLTextureCache.js +51 -0
  827. package/dist/renderer/cache/GLTextureCache.js.map +1 -0
  828. package/dist/renderer/cache/GradientRampAtlas.js +82 -0
  829. package/dist/renderer/cache/GradientRampAtlas.js.map +1 -0
  830. package/dist/renderer/cache/cache.js +13 -0
  831. package/dist/renderer/cache/cache.js.map +1 -0
  832. package/dist/renderer/cache/markerCommandCache.js +59 -0
  833. package/dist/renderer/cache/markerCommandCache.js.map +1 -0
  834. package/dist/renderer/cache/outlineMeshCache.js +15 -0
  835. package/dist/renderer/cache/outlineMeshCache.js.map +1 -0
  836. package/dist/renderer/cache/outlineStrokeMeshCache.js +31 -0
  837. package/dist/renderer/cache/outlineStrokeMeshCache.js.map +1 -0
  838. package/dist/renderer/cache/strokeMeshCache.js +44 -0
  839. package/dist/renderer/cache/strokeMeshCache.js.map +1 -0
  840. package/dist/renderer/cullDrawCommands.js +89 -0
  841. package/dist/renderer/cullDrawCommands.js.map +1 -0
  842. package/dist/renderer/draw.js +1109 -0
  843. package/dist/renderer/draw.js.map +1 -0
  844. package/dist/renderer/drawBatch.js +168 -0
  845. package/dist/renderer/drawBatch.js.map +1 -0
  846. package/dist/renderer/effects/EffectTargets.js +45 -0
  847. package/dist/renderer/effects/EffectTargets.js.map +1 -0
  848. package/dist/renderer/effects/builtins.js +31 -0
  849. package/dist/renderer/effects/builtins.js.map +1 -0
  850. package/dist/renderer/effects/composite.js +9 -0
  851. package/dist/renderer/effects/composite.js.map +1 -0
  852. package/dist/renderer/effects/effectPrelude.js +10 -0
  853. package/dist/renderer/effects/effectPrelude.js.map +1 -0
  854. package/dist/renderer/effects/types.js +10 -0
  855. package/dist/renderer/effects/types.js.map +1 -0
  856. package/dist/renderer/index.js +19 -0
  857. package/dist/renderer/math/color.js +341 -0
  858. package/dist/renderer/math/color.js.map +1 -0
  859. package/dist/renderer/math/mat3.js +71 -0
  860. package/dist/renderer/math/mat3.js.map +1 -0
  861. package/dist/renderer/math/patternSpace.js +22 -0
  862. package/dist/renderer/math/patternSpace.js.map +1 -0
  863. package/dist/renderer/math/viewToMat3.js +19 -0
  864. package/dist/renderer/math/viewToMat3.js.map +1 -0
  865. package/dist/renderer/paintResources.js +18 -0
  866. package/dist/renderer/paintResources.js.map +1 -0
  867. package/dist/renderer/paintScratch.js +37 -0
  868. package/dist/renderer/paintScratch.js.map +1 -0
  869. package/dist/renderer/shaders/ShaderProgram.js +74 -0
  870. package/dist/renderer/shaders/ShaderProgram.js.map +1 -0
  871. package/dist/renderer/shaders/batchFill.js +118 -0
  872. package/dist/renderer/shaders/batchFill.js.map +1 -0
  873. package/dist/renderer/shaders/customPrelude.js +34 -0
  874. package/dist/renderer/shaders/customPrelude.js.map +1 -0
  875. package/dist/renderer/shaders/extractUniformNames.js +184 -0
  876. package/dist/renderer/shaders/extractUniformNames.js.map +1 -0
  877. package/dist/renderer/shaders/glyphPaint.js +61 -0
  878. package/dist/renderer/shaders/glyphPaint.js.map +1 -0
  879. package/dist/renderer/shaders/gradFill.js +30 -0
  880. package/dist/renderer/shaders/gradFill.js.map +1 -0
  881. package/dist/renderer/shaders/imageFill.js +14 -0
  882. package/dist/renderer/shaders/imageFill.js.map +1 -0
  883. package/dist/renderer/shaders/pathFill.js +13 -0
  884. package/dist/renderer/shaders/pathFill.js.map +1 -0
  885. package/dist/renderer/shaders/patternFill.js +24 -0
  886. package/dist/renderer/shaders/patternFill.js.map +1 -0
  887. package/dist/renderer/shaders/registerProgram.js +18 -0
  888. package/dist/renderer/shaders/registerProgram.js.map +1 -0
  889. package/dist/renderer/spriteSheet.js +14 -0
  890. package/dist/renderer/spriteSheet.js.map +1 -0
  891. package/dist/renderer/state/GroupState.js +77 -0
  892. package/dist/renderer/state/GroupState.js.map +1 -0
  893. package/dist/renderer/syntheticItalic.js +6 -0
  894. package/dist/renderer/syntheticItalic.js.map +1 -0
  895. package/dist/renderer/textures/registerTexture.js +14 -0
  896. package/dist/renderer/textures/registerTexture.js.map +1 -0
  897. package/dist/renderer.d.ts +11 -21
  898. package/dist/renderer.js +18 -13
  899. package/dist/resize.d.ts +10 -46
  900. package/dist/resize.js +7 -5
  901. package/dist/routing.js +2 -3
  902. package/dist/scheduling/useVisibleRaf.js +69 -0
  903. package/dist/scheduling/useVisibleRaf.js.map +1 -0
  904. package/dist/test-hook/createTestHook.js +39 -0
  905. package/dist/test-hook/createTestHook.js.map +1 -0
  906. package/dist/test-hook/install.js +12 -0
  907. package/dist/test-hook/install.js.map +1 -0
  908. package/dist/test-seams-fYf6m5pu.d.ts +356 -0
  909. package/dist/test-seams.d.ts +6 -0
  910. package/dist/test-seams.js +3 -0
  911. package/dist/tools/builtin/ellipse/useEllipseTool.js +33 -0
  912. package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -0
  913. package/dist/tools/builtin/eyedropper/useEyedropperTool.js +55 -0
  914. package/dist/tools/builtin/eyedropper/useEyedropperTool.js.map +1 -0
  915. package/dist/tools/builtin/hand/dragPanContribution.js +17 -0
  916. package/dist/tools/builtin/hand/dragPanContribution.js.map +1 -0
  917. package/dist/tools/builtin/hand/useHandTool.js +31 -0
  918. package/dist/tools/builtin/hand/useHandTool.js.map +1 -0
  919. package/dist/tools/builtin/image/useImageTool.js +41 -0
  920. package/dist/tools/builtin/image/useImageTool.js.map +1 -0
  921. package/dist/tools/builtin/lasso/useLassoTool.js +42 -0
  922. package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -0
  923. package/dist/tools/builtin/line/useLineTool.js +33 -0
  924. package/dist/tools/builtin/line/useLineTool.js.map +1 -0
  925. package/dist/tools/builtin/pen/usePenTool.js +414 -0
  926. package/dist/tools/builtin/pen/usePenTool.js.map +1 -0
  927. package/dist/tools/builtin/pencil/usePencilTool.js +36 -0
  928. package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -0
  929. package/dist/tools/builtin/pickTopMostHit.js +45 -0
  930. package/dist/tools/builtin/pickTopMostHit.js.map +1 -0
  931. package/dist/tools/builtin/polygon/usePolygonTool.js +81 -0
  932. package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -0
  933. package/dist/tools/builtin/rect/useRectTool.js +32 -0
  934. package/dist/tools/builtin/rect/useRectTool.js.map +1 -0
  935. package/dist/tools/builtin/select/selectionContributions.js +109 -0
  936. package/dist/tools/builtin/select/selectionContributions.js.map +1 -0
  937. package/dist/tools/builtin/select/useSelectTool.js +162 -0
  938. package/dist/tools/builtin/select/useSelectTool.js.map +1 -0
  939. package/dist/tools/builtin/shared/insertToolOptions.js +8 -0
  940. package/dist/tools/builtin/shared/insertToolOptions.js.map +1 -0
  941. package/dist/tools/builtin/slice/useSliceTool.js +263 -0
  942. package/dist/tools/builtin/slice/useSliceTool.js.map +1 -0
  943. package/dist/tools/builtin/star/useStarTool.js +82 -0
  944. package/dist/tools/builtin/star/useStarTool.js.map +1 -0
  945. package/dist/tools/builtin/text/useTextTool.js +177 -0
  946. package/dist/tools/builtin/text/useTextTool.js.map +1 -0
  947. package/dist/tools/overlayBinding.js +8 -0
  948. package/dist/tools/overlayBinding.js.map +1 -0
  949. package/dist/tools/prefs.js +47 -0
  950. package/dist/tools/prefs.js.map +1 -0
  951. package/dist/tools/useKeybindings.js +66 -0
  952. package/dist/tools/useKeybindings.js.map +1 -0
  953. package/dist/{types-D-9QWBy5.d.ts → types-CA54-mAZ.d.ts} +181 -13
  954. package/dist/{types-qYpyTAiZ.d.ts → types-DSjd6W3n.d.ts} +32 -6
  955. package/dist/util/color.js +26 -0
  956. package/dist/util/color.js.map +1 -0
  957. package/dist/util/constrainTo45.js +17 -0
  958. package/dist/util/constrainTo45.js.map +1 -0
  959. package/dist/util/paint.js +72 -0
  960. package/dist/util/paint.js.map +1 -0
  961. package/dist/version.js +6 -0
  962. package/dist/version.js.map +1 -0
  963. package/package.json +29 -19
  964. package/dist/chunk-3TY6FHAF.js +0 -170
  965. package/dist/chunk-3TY6FHAF.js.map +0 -1
  966. package/dist/chunk-DGWNNKGD.js +0 -248
  967. package/dist/chunk-DGWNNKGD.js.map +0 -1
  968. package/dist/chunk-G4ZGQMY7.js +0 -33372
  969. package/dist/chunk-G4ZGQMY7.js.map +0 -1
  970. package/dist/chunk-L5YNZYEG.js +0 -648
  971. package/dist/chunk-L5YNZYEG.js.map +0 -1
  972. package/dist/chunk-LU4IJ52W.js +0 -111
  973. package/dist/chunk-LU4IJ52W.js.map +0 -1
  974. package/dist/chunk-M24CLARN.js +0 -28
  975. package/dist/chunk-M24CLARN.js.map +0 -1
  976. package/dist/chunk-NE27EOLP.js +0 -146
  977. package/dist/chunk-NE27EOLP.js.map +0 -1
  978. package/dist/chunk-PNNZSYRD.js +0 -318
  979. package/dist/chunk-PNNZSYRD.js.map +0 -1
  980. package/dist/chunk-UPZY4ART.js +0 -29
  981. package/dist/chunk-UPZY4ART.js.map +0 -1
  982. package/dist/chunk-WPNA6L5O.js +0 -250
  983. package/dist/chunk-WPNA6L5O.js.map +0 -1
  984. package/dist/chunk-XMAWPGTK.js +0 -128
  985. package/dist/chunk-XMAWPGTK.js.map +0 -1
  986. package/dist/clipboard.js.map +0 -1
  987. package/dist/clone.js.map +0 -1
  988. package/dist/grid-CY5UKlZh.d.ts +0 -98
  989. package/dist/index.css.map +0 -1
  990. package/dist/index.js.map +0 -1
  991. package/dist/insert.d.ts +0 -36
  992. package/dist/insert.js +0 -81
  993. package/dist/insert.js.map +0 -1
  994. package/dist/math.js.map +0 -1
  995. package/dist/move.js.map +0 -1
  996. package/dist/path-JEV2c5If.d.ts +0 -48
  997. package/dist/patterns-builtin.js.map +0 -1
  998. package/dist/renderer.css +0 -62
  999. package/dist/renderer.css.map +0 -1
  1000. package/dist/renderer.js.map +0 -1
  1001. package/dist/resize.js.map +0 -1
  1002. package/dist/routing.js.map +0 -1
  1003. package/dist/types-D2tTKEU0.d.ts +0 -18
@@ -0,0 +1,110 @@
1
+ //#region src/features/meshPaint/surface.ts
2
+ function e(e, t) {
3
+ return e.points[(t & 3) * 3];
4
+ }
5
+ function t(e) {
6
+ return e.points.length >= 16;
7
+ }
8
+ function n(e) {
9
+ return e.points.length === 12 || e.points.length === 16;
10
+ }
11
+ function r(e, t, n, r, i) {
12
+ let a = 1 - i, o = a * a * a, s = 3 * a * a * i, c = 3 * a * i * i, l = i * i * i;
13
+ return {
14
+ x: o * e.x + s * t.x + c * n.x + l * r.x,
15
+ y: o * e.y + s * t.y + c * n.y + l * r.y
16
+ };
17
+ }
18
+ function i(e, t) {
19
+ let n = e.points, r = (t & 3) * 3;
20
+ return [
21
+ n[r],
22
+ n[r + 1],
23
+ n[r + 2],
24
+ n[(t + 1 & 3) * 3]
25
+ ];
26
+ }
27
+ function a(e, n, r) {
28
+ return t(e) ? l(e, n, r) : o(e, n, r);
29
+ }
30
+ function o(t, n, a) {
31
+ let [o, s, c, l] = i(t, 0), [u, d, f, p] = i(t, 1), [m, h, g, _] = i(t, 2), [v, y, b, x] = i(t, 3), S = r(o, s, c, l, n), C = r(m, h, g, _, 1 - n), w = r(u, d, f, p, a), T = r(v, y, b, x, 1 - a), E = e(t, 0), D = e(t, 1), O = e(t, 2), k = e(t, 3), A = (e, t) => (1 - a) * e + a * t, j = (e, t) => (1 - n) * e + n * t, M = (e, t, r, i) => (1 - n) * (1 - a) * e + n * (1 - a) * t + n * a * r + (1 - n) * a * i;
32
+ return {
33
+ x: A(S.x, C.x) + j(T.x, w.x) - M(E.x, D.x, O.x, k.x),
34
+ y: A(S.y, C.y) + j(T.y, w.y) - M(E.y, D.y, O.y, k.y)
35
+ };
36
+ }
37
+ function s(e) {
38
+ let t = e.points;
39
+ return [
40
+ [
41
+ t[0],
42
+ t[11],
43
+ t[10],
44
+ t[9]
45
+ ],
46
+ [
47
+ t[1],
48
+ t[12],
49
+ t[13],
50
+ t[8]
51
+ ],
52
+ [
53
+ t[2],
54
+ t[15],
55
+ t[14],
56
+ t[7]
57
+ ],
58
+ [
59
+ t[3],
60
+ t[4],
61
+ t[5],
62
+ t[6]
63
+ ]
64
+ ];
65
+ }
66
+ var c = (e) => {
67
+ let t = 1 - e;
68
+ return [
69
+ t * t * t,
70
+ 3 * t * t * e,
71
+ 3 * t * e * e,
72
+ e * e * e
73
+ ];
74
+ };
75
+ function l(e, t, n) {
76
+ let r = s(e), i = c(t), a = c(n), o = 0, l = 0;
77
+ for (let e = 0; e < 4; e++) for (let t = 0; t < 4; t++) {
78
+ let n = i[e] * a[t];
79
+ o += n * r[e][t].x, l += n * r[e][t].y;
80
+ }
81
+ return {
82
+ x: o,
83
+ y: l
84
+ };
85
+ }
86
+ function u(e, t) {
87
+ return [
88
+ (1 - e) * (1 - t),
89
+ e * (1 - t),
90
+ e * t,
91
+ (1 - e) * t
92
+ ];
93
+ }
94
+ function d(e, t = 8) {
95
+ let n = Infinity, r = Infinity, i = -Infinity, o = -Infinity;
96
+ for (let s = 0; s <= t; s++) for (let c = 0; c <= t; c++) {
97
+ let l = a(e, s / t, c / t);
98
+ l.x < n && (n = l.x), l.y < r && (r = l.y), l.x > i && (i = l.x), l.y > o && (o = l.y);
99
+ }
100
+ return {
101
+ x: n,
102
+ y: r,
103
+ width: i - n,
104
+ height: o - r
105
+ };
106
+ }
107
+ //#endregion
108
+ export { u as cornerWeights, a as evalPatch, t as isTensorPatch, n as isValidPatch, d as patchBounds, e as patchCorner };
109
+
110
+ //# sourceMappingURL=surface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surface.js","names":["patchCorner","patch","i","isTensorPatch","isValidPatch","bezier","s","t","a","b","d","p0","p1","p2","p3","edge","p","evalPatch","evalTensor","u","v","evalCoons","b0","b1","b2","b3","r0","r1","r2","r3","t0","t1","t2","t3","l0","l1","l2","l3","bottom","top","right","left","c0","c1","c2","c3","ruledU","ruledV","corner","k0","k1","k2","k3","tensorNet","BERNSTEIN","net","bu","bv","x","y","j","w","cornerWeights","patchBounds","minX","minY","maxX","maxY","steps"],"sources":["../../../src/features/meshPaint/surface.ts"],"sourcesContent":["/**\n * Coons and tensor-product patch surfaces — PDF's shading types 6 and 7, as\n * pure geometry.\n *\n * A patch is a curved quadrilateral: four cubic Bézier edges and a color at\n * each corner. The interior is what the edges imply — a Coons patch reads it\n * off the boundary alone; a tensor patch adds four interior control points\n * that pull it around. Both evaluate at a `(u, v)` in the unit square, which\n * is what lets the renderer subdivide a patch into as many triangles as it\n * wants without the patch knowing.\n *\n * Nothing here touches GL, a color string, or a scene. `evalPatch` is the\n * whole contract.\n */\n\n/** A point in the patch's own space. */\nexport interface MeshPoint {\n x: number;\n y: number;\n}\n\n/**\n * One patch.\n *\n * `points` walks the boundary: corner 0, the two control points of the edge\n * leaving it, corner 1, its two, and so on — twelve points, ending with the\n * two controls that return to corner 0. A tensor patch appends its four\n * interior points, in the order `(1,1)`, `(1,2)`, `(2,2)`, `(2,1)` of the\n * bicubic control net, which is PDF's own order.\n *\n * Twelve points is a Coons patch and sixteen is a tensor patch; there is no\n * flag, because the count already says which it is.\n *\n * `colors` are the corner colors in the same walk order, as whatever color\n * form the caller resolves — the renderer hands premultiplied RGBA in, the\n * serializer hands CSS strings.\n */\nexport interface MeshPatch<TColor = string> {\n points: readonly MeshPoint[];\n colors: readonly [TColor, TColor, TColor, TColor];\n}\n\n/** Corner `i` of the boundary walk. */\nexport function patchCorner(patch: MeshPatch<unknown>, i: number): MeshPoint {\n return patch.points[(i & 3) * 3];\n}\n\n/** `true` when the patch carries the four interior points a tensor patch adds. */\nexport function isTensorPatch(patch: MeshPatch<unknown>): boolean {\n return patch.points.length >= 16;\n}\n\n/** A patch is twelve boundary points, or sixteen with the interior. Anything\n * else cannot be evaluated, and saying so here beats painting nonsense. */\nexport function isValidPatch(patch: MeshPatch<unknown>): boolean {\n return patch.points.length === 12 || patch.points.length === 16;\n}\n\nfunction bezier(p0: MeshPoint, p1: MeshPoint, p2: MeshPoint, p3: MeshPoint, t: number): MeshPoint {\n const s = 1 - t;\n const a = s * s * s;\n const b = 3 * s * s * t;\n const c = 3 * s * t * t;\n const d = t * t * t;\n return {\n x: a * p0.x + b * p1.x + c * p2.x + d * p3.x,\n y: a * p0.y + b * p1.y + c * p2.y + d * p3.y,\n };\n}\n\n/** The edge leaving corner `i`, as its four control points. */\nfunction edge(patch: MeshPatch<unknown>, i: number): [MeshPoint, MeshPoint, MeshPoint, MeshPoint] {\n const p = patch.points;\n const a = (i & 3) * 3;\n return [p[a], p[a + 1], p[a + 2], p[((i + 1) & 3) * 3]];\n}\n\n/**\n * The patch surface at `(u, v)`, both in `0..1`.\n *\n * `u` runs along the edge leaving corner 0 and `v` along the edge leaving\n * corner 1, so `(0,0)` is corner 0, `(1,0)` corner 1, `(1,1)` corner 2 and\n * `(0,1)` corner 3 — the same walk `colors` is in.\n */\nexport function evalPatch(patch: MeshPatch<unknown>, u: number, v: number): MeshPoint {\n return isTensorPatch(patch) ? evalTensor(patch, u, v) : evalCoons(patch, u, v);\n}\n\nfunction evalCoons(patch: MeshPatch<unknown>, u: number, v: number): MeshPoint {\n const [b0, b1, b2, b3] = edge(patch, 0); // corner 0 → 1, along u at v=0\n const [r0, r1, r2, r3] = edge(patch, 1); // corner 1 → 2, along v at u=1\n const [t0, t1, t2, t3] = edge(patch, 2); // corner 2 → 3, along u at v=1\n const [l0, l1, l2, l3] = edge(patch, 3); // corner 3 → 0, along v at u=0\n\n const bottom = bezier(b0, b1, b2, b3, u);\n const top = bezier(t0, t1, t2, t3, 1 - u); // walks 2 → 3, so reverse it\n const right = bezier(r0, r1, r2, r3, v);\n const left = bezier(l0, l1, l2, l3, 1 - v); // walks 3 → 0, so reverse it\n\n const c0 = patchCorner(patch, 0);\n const c1 = patchCorner(patch, 1);\n const c2 = patchCorner(patch, 2);\n const c3 = patchCorner(patch, 3);\n\n // The Coons construction: the two ruled surfaces between opposite edges,\n // minus the bilinear surface through the corners they both already carry.\n const ruledU = (a: number, b: number): number => (1 - v) * a + v * b;\n const ruledV = (a: number, b: number): number => (1 - u) * a + u * b;\n const corner = (k0: number, k1: number, k2: number, k3: number): number =>\n (1 - u) * (1 - v) * k0 + u * (1 - v) * k1 + u * v * k2 + (1 - u) * v * k3;\n\n return {\n x: ruledU(bottom.x, top.x) + ruledV(left.x, right.x)\n - corner(c0.x, c1.x, c2.x, c3.x),\n y: ruledU(bottom.y, top.y) + ruledV(left.y, right.y)\n - corner(c0.y, c1.y, c2.y, c3.y),\n };\n}\n\n/** The bicubic control net a tensor patch's sixteen points make, as\n * `net[i][j]` with `i` along `u` and `j` along `v`. */\nfunction tensorNet(patch: MeshPatch<unknown>): MeshPoint[][] {\n const p = patch.points;\n // Boundary, read off the same walk; interior from the four trailing points.\n return [\n [p[0], p[11], p[10], p[9]],\n [p[1], p[12], p[13], p[8]],\n [p[2], p[15], p[14], p[7]],\n [p[3], p[4], p[5], p[6]],\n ];\n}\n\nconst BERNSTEIN = (t: number): [number, number, number, number] => {\n const s = 1 - t;\n return [s * s * s, 3 * s * s * t, 3 * s * t * t, t * t * t];\n};\n\nfunction evalTensor(patch: MeshPatch<unknown>, u: number, v: number): MeshPoint {\n const net = tensorNet(patch);\n const bu = BERNSTEIN(u);\n const bv = BERNSTEIN(v);\n let x = 0;\n let y = 0;\n for (let i = 0; i < 4; i++) {\n for (let j = 0; j < 4; j++) {\n const w = bu[i] * bv[j];\n x += w * net[i][j].x;\n y += w * net[i][j].y;\n }\n }\n return { x, y };\n}\n\n/**\n * The four corner weights at `(u, v)` — bilinear, in the corner walk order.\n *\n * Color is separate from position on purpose: it interpolates in whatever\n * space the caller chose, which is not a thing the surface can do for it.\n */\nexport function cornerWeights(u: number, v: number): [number, number, number, number] {\n return [(1 - u) * (1 - v), u * (1 - v), u * v, (1 - u) * v];\n}\n\n/** Axis-aligned bounds of a patch, sampled on a grid. Control points alone\n * bound a Bézier but not tightly, and a mesh paint is baked into a texture\n * sized from this — a loose box wastes texels on every side. */\nexport function patchBounds(\n patch: MeshPatch<unknown>, steps = 8,\n): { x: number; y: number; width: number; height: number } {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n for (let i = 0; i <= steps; i++) {\n for (let j = 0; j <= steps; j++) {\n const p = evalPatch(patch, i / steps, j / steps);\n if (p.x < minX) minX = p.x;\n if (p.y < minY) minY = p.y;\n if (p.x > maxX) maxX = p.x;\n if (p.y > maxY) maxY = p.y;\n }\n }\n return { x: minX, y: minY, width: maxX - minX, height: maxY - minY };\n}\n"],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ //#region src/features/minimap/actions.ts
2
+ var e = "minimap.center", t = "minimap.pan";
3
+ function n(e, t, n) {
4
+ let r = e.hostSize?.();
5
+ if (!r) return;
6
+ let i = e.get();
7
+ e.set({
8
+ x: t - r.width / (2 * i.scale.x),
9
+ y: n - r.height / (2 * i.scale.y),
10
+ scale: i.scale
11
+ });
12
+ }
13
+ function r(e) {
14
+ return e.rootView;
15
+ }
16
+ function i() {
17
+ return {
18
+ id: e,
19
+ label: "Minimap — center the view here",
20
+ requires: ["rootView"],
21
+ invoker: {
22
+ timing: "immediate",
23
+ run: (e, t) => {
24
+ let i = t, a = r(e);
25
+ a && i?.worldX !== void 0 && i.worldY !== void 0 && n(a, i.worldX, i.worldY);
26
+ }
27
+ }
28
+ };
29
+ }
30
+ function a() {
31
+ return {
32
+ id: t,
33
+ label: "Minimap — pan the view",
34
+ requires: ["rootView"],
35
+ invoker: {
36
+ timing: "ongoing",
37
+ start(e) {
38
+ let t = r(e.deps);
39
+ return t ? {
40
+ onMove: (e) => {
41
+ let r = e.drag?.current ?? e.world;
42
+ n(t, r.x, r.y);
43
+ },
44
+ onEnd: () => {}
45
+ } : {};
46
+ }
47
+ }
48
+ };
49
+ }
50
+ //#endregion
51
+ export { e as MINIMAP_CENTER, t as MINIMAP_PAN, n as centerRootOn, i as minimapCenterAction, a as minimapPanAction };
52
+
53
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","names":["MINIMAP_CENTER","MINIMAP_PAN","centerRootOn","size","root","v","x","y","rootOf","deps","minimapCenterAction","p","params","minimapPanAction","ctx","m"],"sources":["../../../src/features/minimap/actions.ts"],"sourcesContent":["/**\n * The minimap's input: press to recenter the main camera on a world point,\n * drag to keep it there. Both read `rootView` — never `view`, which inside the\n * minimap's own view answers the minimap's camera.\n */\nimport type { Action, InvocationCtx, OngoingHandle } from '@weasel-js/routing';\nimport type { ViewApi } from 'interactions/actions/depSchema';\n\n/** Action id for `minimapCenterAction`. */\nexport const MINIMAP_CENTER = 'minimap.center';\n/** Action id for `minimapPanAction`. */\nexport const MINIMAP_PAN = 'minimap.pan';\n\n/** Move `root` so world point (`x`, `y`) sits at the center of its host,\n * keeping its scale. A no-op while the host is unmeasured. */\nexport function centerRootOn(root: ViewApi, x: number, y: number): void {\n const size = root.hostSize?.();\n if (!size) return;\n const v = root.get();\n root.set({\n x: x - size.width / (2 * v.scale.x),\n y: y - size.height / (2 * v.scale.y),\n scale: v.scale,\n });\n}\n\nfunction rootOf(deps: InvocationCtx['deps']): ViewApi | undefined {\n return deps.rootView as ViewApi | undefined;\n}\n\n/** Recenter the main camera on the pressed world point. */\nexport function minimapCenterAction(): Action {\n return {\n id: MINIMAP_CENTER,\n label: 'Minimap — center the view here',\n requires: ['rootView'],\n invoker: {\n timing: 'immediate',\n run: (deps, params) => {\n const p = params as { worldX?: number; worldY?: number } | undefined;\n const root = rootOf(deps);\n if (!root || p?.worldX === undefined || p.worldY === undefined) return;\n centerRootOn(root, p.worldX, p.worldY);\n },\n },\n };\n}\n\n/** Keep the main camera centered on the pointer's world point while dragging.\n * Pair it with `minimap.center` on `pointerDown`, which handles the press.\n * A recenter lands the moment it is computed, so there is nothing to commit\n * and a cancel ends where a release does. */\nexport function minimapPanAction(): Action {\n return {\n id: MINIMAP_PAN,\n label: 'Minimap — pan the view',\n requires: ['rootView'],\n invoker: {\n timing: 'ongoing',\n start(ctx: InvocationCtx): OngoingHandle {\n const root = rootOf(ctx.deps);\n if (!root) return {};\n // The press already centered (`minimap.center`); the move that crossed\n // the drag threshold is pumped to `onMove` like every later one.\n return {\n onMove: (m) => {\n const p = m.drag?.current ?? m.world;\n centerRootOn(root, p.x, p.y);\n },\n onEnd: () => {},\n };\n },\n },\n };\n}\n"],"mappings":";AASA,IAAaA,IAAiB,kBAEjBC,IAAc;AAI3B,SAAgBC,EAAa,GAAe,GAAW,GAAiB;CACtE,IAAMC,IAAOC,EAAK,WAAW;CAC7B,IAAI,CAACD,GAAM;CACX,IAAME,IAAID,EAAK,IAAI;CACnB,EAAK,IAAI;EACP,GAAGE,IAAIH,EAAK,SAAS,IAAIE,EAAE,MAAM;EACjC,GAAGE,IAAIJ,EAAK,UAAU,IAAIE,EAAE,MAAM;EAClC,OAAOA,EAAE;CACX,CAAC;AACH;AAEA,SAASG,EAAO,GAAkD;CAChE,OAAOC,EAAK;AACd;AAGA,SAAgBC,IAA8B;CAC5C,OAAO;EACL,IAAIV;EACJ,OAAO;EACP,UAAU,CAAC,UAAU;EACrB,SAAS;GACP,QAAQ;GACR,MAAM,GAAM,MAAW;IACrB,IAAMW,IAAIC,GACJR,IAAOI,EAAOC,CAAI;IACxB,AAAKL,KAAQO,GAAG,WAAW,KAAA,KAAaA,EAAE,WAAW,KAAA,KACrDT,EAAaE,GAAMO,EAAE,QAAQA,EAAE,MAAM;GACvC;EACF;CACF;AACF;AAMA,SAAgBE,IAA2B;CACzC,OAAO;EACL,IAAIZ;EACJ,OAAO;EACP,UAAU,CAAC,UAAU;EACrB,SAAS;GACP,QAAQ;GACR,MAAM,GAAmC;IACvC,IAAMG,IAAOI,EAAOM,EAAI,IAAI;IAI5B,OAHKV,IAGE;KACL,SAAS,MAAM;MACb,IAAMO,IAAII,EAAE,MAAM,WAAWA,EAAE;MAC/B,EAAaX,GAAMO,EAAE,GAAGA,EAAE,CAAC;KAC7B;KACA,aAAa,CAAC;IAChB,IATkB,CAAC;GAUrB;EACF;CACF;AACF"}
@@ -0,0 +1,96 @@
1
+ import { AUTO_POSE_DESCRIPTOR as e } from "../../interactions/actions/resize/autoPoseDescriptor.js";
2
+ import { FALLBACK_ACCENT as t, accentColorOf as n } from "../../canvas/accentColor.js";
3
+ import { MINIMAP_CENTER as r, MINIMAP_PAN as i, minimapCenterAction as a, minimapPanAction as o } from "./actions.js";
4
+ import { createIndicatorLayer as s, createLinkedCursorLayer as c } from "./layers.js";
5
+ import { FALLBACK_FIT_VIEW as l, computeFitView as u } from "../../canvas/minimapMath.js";
6
+ //#region src/features/minimap/createMinimapContribution.ts
7
+ function d(e, r) {
8
+ let i = null, a = t, o = (e) => e !== null && r.some((t) => t !== e.viewId);
9
+ return {
10
+ layer: c({
11
+ id: e,
12
+ pointer: () => i,
13
+ color: () => a,
14
+ views: r
15
+ }),
16
+ attach: (e, t) => {
17
+ let r = t.get("pointer");
18
+ if (!r) return () => {};
19
+ a = n(e.element), i = r.get();
20
+ let s = r.subscribe(() => {
21
+ let t = i;
22
+ i = r.get(), (o(t) || o(i)) && e.requestRedraw();
23
+ });
24
+ return () => {
25
+ s(), i = null, e.requestRedraw();
26
+ };
27
+ }
28
+ };
29
+ }
30
+ function f(e = {}) {
31
+ let t = e.id ?? "linked-cursor", n = d(t, e.views ?? [null]);
32
+ return {
33
+ id: t,
34
+ eligibility: { always: !0 },
35
+ overlay: n.layer,
36
+ attach: n.attach
37
+ };
38
+ }
39
+ var p = "#18181c";
40
+ function m(t) {
41
+ let n = t.id ?? "minimap", c = t.fit ?? "scene", f = null, m = null, h = (n, r) => {
42
+ let i = f?.get("scene");
43
+ if (!i) return l;
44
+ let a = typeof t.rect == "function" ? t.rect(n, r) : t.rect, o = i.getVersion();
45
+ if (m && m.scene === i && m.version === o && m.w === a.w && m.h === a.h) return m.view;
46
+ let s = f?.get("poseDescriptor") ?? e, d = u(i, {
47
+ width: a.w,
48
+ height: a.h
49
+ }, c, s);
50
+ return m = {
51
+ scene: i,
52
+ version: o,
53
+ w: a.w,
54
+ h: a.h,
55
+ view: d
56
+ }, d;
57
+ }, g = d(`${n}.cursor`, [null, n]), _ = s({
58
+ viewId: n,
59
+ root: () => f?.get("rootView"),
60
+ ...t.indicatorStyle ? { style: t.indicatorStyle } : {}
61
+ });
62
+ return {
63
+ id: n,
64
+ eligibility: { always: !0 },
65
+ views: [{
66
+ id: n,
67
+ bounds: t.rect,
68
+ view: h,
69
+ interactive: !0,
70
+ background: t.background ?? p,
71
+ ...t.layers ? { layers: t.layers } : {}
72
+ }],
73
+ actions: [a(), o()],
74
+ bindings: [{
75
+ spec: { kind: "pointerDown" },
76
+ actionId: r,
77
+ opts: { views: [n] }
78
+ }, {
79
+ spec: { kind: "drag" },
80
+ actionId: i,
81
+ opts: { views: [n] }
82
+ }],
83
+ overlay: [_, g.layer],
84
+ attach: (e, t) => {
85
+ f = t;
86
+ let n = g.attach(e, t);
87
+ return e.requestRedraw(), () => {
88
+ n(), f = null, m = null;
89
+ };
90
+ }
91
+ };
92
+ }
93
+ //#endregion
94
+ export { f as createLinkedCursorContribution, m as createMinimapContribution };
95
+
96
+ //# sourceMappingURL=createMinimapContribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMinimapContribution.js","names":["linkedCursor","pointer","color","FALLBACK_ACCENT","visible","p","ownViews","v","createLinkedCursorLayer","store","deps","accentColorOf","api","off","prev","createLinkedCursorContribution","id","opts","cursor","DEFAULT_BACKGROUND","createMinimapContribution","fit","cached","fitCamera","scene","FALLBACK_FIT_VIEW","r","outer","dims","version","descriptor","AUTO_POSE_DESCRIPTOR","view","computeFitView","indicator","createIndicatorLayer","minimapCenterAction","minimapPanAction","MINIMAP_CENTER","MINIMAP_PAN","reader","detachCursor"],"sources":["../../../src/features/minimap/createMinimapContribution.ts"],"sourcesContent":["/**\n * A minimap over a `<SceneCanvas>`, written as one `SurfaceContribution`: a\n * view through a fit camera, the pan that moves the main camera from inside\n * it, the visible-rect indicator, and a linked crosshair.\n */\nimport type { Dims, RenderLayer } from 'core/layers/render';\nimport type { View } from 'core/viewport/view';\nimport type { Scene } from 'core/scene/types';\nimport type { PoseDescriptor } from 'core/geometry/poseDescriptor';\nimport { AUTO_POSE_DESCRIPTOR } from 'interactions/actions/resize/autoPoseDescriptor';\nimport type { PointerWorldPos } from 'features/pointer/PointerContext';\nimport type { CanvasExtensionApi } from '../../canvas/canvasExtension';\nimport type { ViewRect } from '../../canvas/CanvasView';\nimport type { ContributionDepReader, SurfaceContribution } from '../../canvas/surfaceContribution';\nimport {\n computeFitView, FALLBACK_FIT_VIEW, type IndicatorStyle, type MinimapFit,\n} from '../../canvas/minimapMath';\nimport {\n MINIMAP_CENTER, MINIMAP_PAN, minimapCenterAction, minimapPanAction,\n} from './actions';\nimport { createIndicatorLayer, createLinkedCursorLayer } from './layers';\nimport { accentColorOf, FALLBACK_ACCENT } from '../../canvas/accentColor';\n\n\n/**\n * The linked crosshair's live half: follows the pointer store, and asks the\n * surface to repaint whenever the crosshair shows, moves, or has just hidden.\n * `ownViews` are the view ids this surface paints; the crosshair shows in any\n * of them the pointer is not over.\n */\nfunction linkedCursor(id: string, ownViews: readonly (string | null)[]) {\n let pointer: PointerWorldPos = null;\n let color = FALLBACK_ACCENT;\n const visible = (p: PointerWorldPos): boolean =>\n p !== null && ownViews.some((v) => v !== p.viewId);\n const layer = createLinkedCursorLayer({ id, pointer: () => pointer, color: () => color, views: ownViews });\n const attach = (api: CanvasExtensionApi, deps: ContributionDepReader): (() => void) => {\n const store = deps.get('pointer');\n if (!store) return () => {};\n color = accentColorOf(api.element);\n pointer = store.get();\n const off = store.subscribe(() => {\n const prev = pointer;\n pointer = store.get();\n if (visible(prev) || visible(pointer)) api.requestRedraw();\n });\n return () => {\n off();\n pointer = null;\n api.requestRedraw();\n };\n };\n return { layer, attach };\n}\n\n/** Options for {@link createLinkedCursorContribution}. */\nexport interface LinkedCursorOptions {\n /** Entry id. Default `'linked-cursor'`. */\n id?: string;\n /** Views on this surface the crosshair may paint in. Default `[null]`, the\n * surface's own camera — the main canvas beside a detached minimap. */\n views?: readonly (string | null)[];\n}\n\n/**\n * The linked crosshair alone: this surface paints the pointer's position\n * whenever the pointer is over some other view — another surface under the\n * same `<PointerContextProvider>`, such as a detached `<MinimapCanvas>`.\n *\n * A surface carrying `createMinimapContribution` already has one, in both its\n * views; this is for a surface without.\n */\nexport function createLinkedCursorContribution(opts: LinkedCursorOptions = {}): SurfaceContribution {\n const id = opts.id ?? 'linked-cursor';\n const cursor = linkedCursor(id, opts.views ?? [null]);\n return { id, eligibility: { always: true }, overlay: cursor.layer, attach: cursor.attach };\n}\n\n/** Options for {@link createMinimapContribution}. */\nexport interface MinimapContributionOptions<TData = unknown, TLayer extends string = string, TPose = unknown> {\n /** View and entry id. Default `'minimap'`. */\n id?: string;\n /** Where the minimap paints, in CSS pixels from the canvas top-left. A\n * function is re-read every frame, so it can follow the canvas's size. */\n rect: ViewRect | ((outer: View, dims: Dims) => ViewRect);\n /** What the minimap frames. Default `'scene'`, the union of leaf poses. */\n fit?: MinimapFit<TData, TLayer, TPose>;\n /** The surface layers the minimap paints. Default: all of them. */\n layers?: (surface: readonly RenderLayer<unknown>[]) => readonly RenderLayer<unknown>[];\n /** Ground painted before the minimap's layers, so the main canvas does not\n * show through. */\n background?: string;\n /** The visible-rect indicator's stroke. */\n indicatorStyle?: IndicatorStyle;\n}\n\nconst DEFAULT_BACKGROUND = '#18181c';\n\n/**\n * A minimap inside a `<SceneCanvas>`, installed with one entry:\n *\n * ```tsx\n * const minimap = useMemo(() => createMinimapContribution({ rect: { x: 8, y: 8, w: 160, h: 110 } }), []);\n * <SceneCanvas ambient={[minimap]} … />\n * ```\n *\n * Press in it to center the main camera on that point, drag to keep it there.\n * It shows the main camera's visible rect, and a crosshair where the pointer is\n * over the other view. Build it once — each instance keeps the live state its\n * layers read.\n */\nexport function createMinimapContribution<TData = unknown, TLayer extends string = string, TPose = unknown>(\n opts: MinimapContributionOptions<TData, TLayer, TPose>,\n): SurfaceContribution {\n const id = opts.id ?? 'minimap';\n const fit = (opts.fit ?? 'scene') as MinimapFit<unknown, string, unknown>;\n let deps: ContributionDepReader | null = null;\n\n // The fit follows the scene, so it is recomputed only when the scene's\n // version or the minimap's size changes — it is read on every frame and\n // every event.\n let cached: { scene: unknown; version: number; w: number; h: number; view: View } | null = null;\n const fitCamera = (outer: View, dims: Dims): View => {\n const scene = deps?.get('scene') as Scene<unknown, string, unknown> | undefined;\n if (!scene) return FALLBACK_FIT_VIEW;\n const r = typeof opts.rect === 'function' ? opts.rect(outer, dims) : opts.rect;\n const version = scene.getVersion();\n if (cached && cached.scene === scene && cached.version === version && cached.w === r.w && cached.h === r.h) {\n return cached.view;\n }\n const descriptor = (deps?.get('poseDescriptor') ?? AUTO_POSE_DESCRIPTOR) as PoseDescriptor<unknown>;\n const view = computeFitView(scene, { width: r.w, height: r.h }, fit, descriptor);\n cached = { scene, version, w: r.w, h: r.h, view };\n return view;\n };\n\n const cursor = linkedCursor(`${id}.cursor`, [null, id]);\n const indicator = createIndicatorLayer({\n viewId: id,\n root: () => deps?.get('rootView'),\n ...(opts.indicatorStyle ? { style: opts.indicatorStyle } : {}),\n });\n\n return {\n id,\n eligibility: { always: true },\n views: [{\n id,\n bounds: opts.rect,\n view: fitCamera,\n interactive: true,\n background: opts.background ?? DEFAULT_BACKGROUND,\n ...(opts.layers ? { layers: opts.layers } : {}),\n }],\n actions: [minimapCenterAction(), minimapPanAction()],\n bindings: [\n { spec: { kind: 'pointerDown' }, actionId: MINIMAP_CENTER, opts: { views: [id] } },\n { spec: { kind: 'drag' }, actionId: MINIMAP_PAN, opts: { views: [id] } },\n ],\n overlay: [indicator, cursor.layer],\n attach: (api, reader) => {\n deps = reader;\n const detachCursor = cursor.attach(api, reader);\n // The fit camera had no scene until now.\n api.requestRedraw();\n return () => {\n detachCursor();\n deps = null;\n cached = null;\n };\n },\n };\n}\n"],"mappings":";;;;;;AA8BA,SAASA,EAAa,GAAY,GAAsC;CACtE,IAAIC,IAA2B,MAC3BC,IAAQC,GACNC,KAAW,MACfC,MAAM,QAAQC,EAAS,MAAM,MAAMC,MAAMF,EAAE,MAAM;CAkBnD,OAAO;EAAE,OAjBKG,EAAwB;GAAE;GAAI,eAAeP;GAAS,aAAaC;GAAO,OAAOI;EAAS,CAiB/F;EAAO,SAhBA,GAAyB,MAA8C;GACrF,IAAMG,IAAQC,EAAK,IAAI,SAAS;GAChC,IAAI,CAACD,GAAO,aAAa,CAAC;GAE1B,AADA,IAAQE,EAAcC,EAAI,OAAO,GACjC,IAAUH,EAAM,IAAI;GACpB,IAAMI,IAAMJ,EAAM,gBAAgB;IAChC,IAAMK,IAAOb;IAEb,AADA,IAAUQ,EAAM,IAAI,IAChBL,EAAQU,CAAI,KAAKV,EAAQH,CAAO,MAAGW,EAAI,cAAc;GAC3D,CAAC;GACD,aAAa;IAGX,AAFAC,EAAI,GACJ,IAAU,MACVD,EAAI,cAAc;GACpB;EACF;CACuB;AACzB;AAmBA,SAAgBG,EAA+B,IAA4B,CAAC,GAAwB;CAClG,IAAMC,IAAKC,EAAK,MAAM,iBAChBC,IAASlB,EAAagB,GAAIC,EAAK,SAAS,CAAC,IAAI,CAAC;CACpD,OAAO;EAAE;EAAI,aAAa,EAAE,QAAQ,GAAK;EAAG,SAASC,EAAO;EAAO,QAAQA,EAAO;CAAO;AAC3F;AAoBA,IAAMC,IAAqB;AAe3B,SAAgBC,EACd,GACqB;CACrB,IAAMJ,IAAKC,EAAK,MAAM,WAChBI,IAAOJ,EAAK,OAAO,SACrBP,IAAqC,MAKrCY,IAAuF,MACrFC,KAAa,GAAa,MAAqB;EACnD,IAAMC,IAAQd,GAAM,IAAI,OAAO;EAC/B,IAAI,CAACc,GAAO,OAAOC;EACnB,IAAMC,IAAI,OAAOT,EAAK,QAAS,aAAaA,EAAK,KAAKU,GAAOC,CAAI,IAAIX,EAAK,MACpEY,IAAUL,EAAM,WAAW;EACjC,IAAIF,KAAUA,EAAO,UAAUE,KAASF,EAAO,YAAYO,KAAWP,EAAO,MAAMI,EAAE,KAAKJ,EAAO,MAAMI,EAAE,GACvG,OAAOJ,EAAO;EAEhB,IAAMQ,IAAcpB,GAAM,IAAI,gBAAgB,KAAKqB,GAC7CC,IAAOC,EAAeT,GAAO;GAAE,OAAOE,EAAE;GAAG,QAAQA,EAAE;EAAE,GAAGL,GAAKS,CAAU;EAE/E,OADA,IAAS;GAAE;GAAO;GAAS,GAAGJ,EAAE;GAAG,GAAGA,EAAE;GAAG;EAAK,GACzCM;CACT,GAEMd,IAASlB,EAAa,GAAGgB,EAAG,UAAU,CAAC,MAAMA,CAAE,CAAC,GAChDkB,IAAYC,EAAqB;EACrC,QAAQnB;EACR,YAAYN,GAAM,IAAI,UAAU;EAChC,GAAIO,EAAK,iBAAiB,EAAE,OAAOA,EAAK,eAAe,IAAI,CAAC;CAC9D,CAAC;CAED,OAAO;EACL;EACA,aAAa,EAAE,QAAQ,GAAK;EAC5B,OAAO,CAAC;GACN;GACA,QAAQA,EAAK;GACb,MAAMM;GACN,aAAa;GACb,YAAYN,EAAK,cAAcE;GAC/B,GAAIF,EAAK,SAAS,EAAE,QAAQA,EAAK,OAAO,IAAI,CAAC;EAC/C,CAAC;EACD,SAAS,CAACmB,EAAoB,GAAGC,EAAiB,CAAC;EACnD,UAAU,CACR;GAAE,MAAM,EAAE,MAAM,cAAc;GAAG,UAAUC;GAAgB,MAAM,EAAE,OAAO,CAACtB,CAAE,EAAE;EAAE,GACjF;GAAE,MAAM,EAAE,MAAM,OAAO;GAAG,UAAUuB;GAAa,MAAM,EAAE,OAAO,CAACvB,CAAE,EAAE;EAAE,CACzE;EACA,SAAS,CAACkB,GAAWhB,EAAO,KAAK;EACjC,SAAS,GAAK,MAAW;GACvB,IAAOsB;GACP,IAAMC,IAAevB,EAAO,OAAON,GAAK4B,CAAM;GAG9C,OADA5B,EAAI,cAAc,SACL;IAGX,AAFA6B,EAAa,GACb,IAAO,MACP,IAAS;GACX;EACF;CACF;AACF"}
@@ -0,0 +1,103 @@
1
+ //#region src/features/minimap/layers.ts
2
+ function e(e) {
3
+ return e?.viewId ?? null;
4
+ }
5
+ function t(t) {
6
+ let { viewId: n, root: r, style: i = {} } = t;
7
+ return {
8
+ id: `${n}.indicator`,
9
+ label: "Minimap indicator",
10
+ draw: (t, a) => {
11
+ if (e(t) !== n) return [];
12
+ let o = r(), s = o?.hostSize?.();
13
+ if (!o || !s) return [];
14
+ let c = o.get(), l = 1 / a.scale.x;
15
+ return [{
16
+ kind: "path",
17
+ path: {
18
+ kind: "rect",
19
+ x: c.x,
20
+ y: c.y,
21
+ width: s.width / c.scale.x,
22
+ height: s.height / c.scale.y
23
+ },
24
+ stroke: {
25
+ paint: {
26
+ fill: "solid",
27
+ color: i.stroke ?? "#ffffff"
28
+ },
29
+ width: (i.width ?? 1) * l,
30
+ dash: (i.dash ?? [2, 3]).map((e) => e * l)
31
+ }
32
+ }];
33
+ }
34
+ };
35
+ }
36
+ var n = "rgba(0, 0, 0, 0.6)";
37
+ function r(e, t, n) {
38
+ let r = n, i = 9 * r, a = 3 * r, o = 2 * r, s = 1 * r, c = [
39
+ {
40
+ x: e - a - i,
41
+ y: t - o / 2,
42
+ w: i,
43
+ h: o
44
+ },
45
+ {
46
+ x: e + a,
47
+ y: t - o / 2,
48
+ w: i,
49
+ h: o
50
+ },
51
+ {
52
+ x: e - o / 2,
53
+ y: t - a - i,
54
+ w: o,
55
+ h: i
56
+ },
57
+ {
58
+ x: e - o / 2,
59
+ y: t + a,
60
+ w: o,
61
+ h: i
62
+ }
63
+ ];
64
+ return {
65
+ halo: c.map((e) => ({
66
+ x: e.x - s,
67
+ y: e.y - s,
68
+ w: e.w + 2 * s,
69
+ h: e.h + 2 * s
70
+ })),
71
+ bars: c
72
+ };
73
+ }
74
+ function i(t) {
75
+ let { id: i, pointer: a, color: o, views: s } = t;
76
+ return {
77
+ id: i,
78
+ label: "Linked cursor",
79
+ draw: (t, i) => {
80
+ let c = a(), l = e(t);
81
+ if (!c || c.viewId === l || s && !s.includes(l)) return [];
82
+ let { halo: u, bars: d } = r(c.worldX, c.worldY, 1 / i.scale.x), f = (e, t) => ({
83
+ kind: "path",
84
+ path: {
85
+ kind: "rect",
86
+ x: e.x,
87
+ y: e.y,
88
+ width: e.w,
89
+ height: e.h
90
+ },
91
+ fill: {
92
+ fill: "solid",
93
+ color: t
94
+ }
95
+ }), p = o();
96
+ return [...u.map((e) => f(e, n)), ...d.map((e) => f(e, p))];
97
+ }
98
+ };
99
+ }
100
+ //#endregion
101
+ export { n as CROSSHAIR_HALO, t as createIndicatorLayer, i as createLinkedCursorLayer, r as crosshairRects };
102
+
103
+ //# sourceMappingURL=layers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layers.js","names":["viewIdOf","data","createIndicatorLayer","opts","viewId","r","root","size","v","px","view","style","d","CROSSHAIR_HALO","crosshairRects","k","unitsPerPx","arm","gap","t","h","bars","x","y","b","createLinkedCursorLayer","p","pointer","here","views","rect","c","accent","color","halo"],"sources":["../../../src/features/minimap/layers.ts"],"sourcesContent":["/**\n * The minimap's chrome: the main camera's visible rect, drawn in the minimap,\n * and the linked crosshair, drawn in every view the pointer is not over.\n */\nimport type { RenderLayer } from 'core/layers/render';\nimport type { View } from 'core/viewport/view';\nimport type { DrawCommand } from '../../renderer/DrawCommand';\nimport type { ViewApi } from 'interactions/actions/depSchema';\nimport type { PointerWorldPos } from 'features/pointer/PointerContext';\nimport type { IndicatorStyle } from '../../canvas/minimapMath';\n\n/** What a layer's `data` carries for this feature: the view it draws for. */\nfunction viewIdOf(data: unknown): string | null {\n return (data as { viewId?: string | null } | null)?.viewId ?? null;\n}\n\n/**\n * The main camera's visible world rect, painted only in view `viewId`. Its\n * stroke and dash are screen pixels whatever the minimap's scale.\n */\nexport function createIndicatorLayer(opts: {\n viewId: string;\n root: () => ViewApi | undefined;\n style?: IndicatorStyle;\n}): RenderLayer<unknown> {\n const { viewId, root, style = {} } = opts;\n return {\n id: `${viewId}.indicator`,\n label: 'Minimap indicator',\n draw: (data, view: View): DrawCommand[] => {\n if (viewIdOf(data) !== viewId) return [];\n const r = root();\n const size = r?.hostSize?.();\n if (!r || !size) return [];\n const v = r.get();\n const px = 1 / view.scale.x;\n return [{\n kind: 'path',\n path: { kind: 'rect', x: v.x, y: v.y, width: size.width / v.scale.x, height: size.height / v.scale.y },\n stroke: {\n paint: { fill: 'solid', color: style.stroke ?? '#ffffff' },\n width: (style.width ?? 1) * px,\n dash: (style.dash ?? [2, 3]).map((d) => d * px),\n },\n }];\n },\n };\n}\n\n/** Screen-pixel geometry of the crosshair: arm length, the gap at its center,\n * line thickness, and the dark halo that keeps it legible over any content. */\nconst ARM = 9;\nconst GAP = 3;\nconst THICK = 2;\nconst HALO = 1;\n/** The halo's color: dark enough to separate the accent from any content. */\nexport const CROSSHAIR_HALO = 'rgba(0, 0, 0, 0.6)';\n\n/** An axis-aligned rect, `{ x, y, w, h }`. */\nexport interface CrosshairRect { x: number; y: number; w: number; h: number }\n\n/**\n * The linked crosshair at (`x`, `y`) as rects in the caller's units, where one\n * screen pixel is `unitsPerPx` of them: four halo rects to paint first, then\n * four bars. A painter with no weasel renderer — a 2D canvas — draws the same\n * crosshair from these.\n */\nexport function crosshairRects(\n x: number, y: number, unitsPerPx: number,\n): { halo: CrosshairRect[]; bars: CrosshairRect[] } {\n const k = unitsPerPx;\n const arm = ARM * k, gap = GAP * k, t = THICK * k, h = HALO * k;\n const bars: CrosshairRect[] = [\n { x: x - gap - arm, y: y - t / 2, w: arm, h: t },\n { x: x + gap, y: y - t / 2, w: arm, h: t },\n { x: x - t / 2, y: y - gap - arm, w: t, h: arm },\n { x: x - t / 2, y: y + gap, w: t, h: arm },\n ];\n const halo = bars.map((b) => ({ x: b.x - h, y: b.y - h, w: b.w + 2 * h, h: b.h + 2 * h }));\n return { halo, bars };\n}\n\n/**\n * A crosshair at the pointer's world point, in each of `views` the pointer is\n * not over — the other side of a linked cursor. A fixed screen size in every\n * view. `views` omitted paints in every view.\n */\nexport function createLinkedCursorLayer(opts: {\n id: string;\n pointer: () => PointerWorldPos;\n color: () => string;\n views?: readonly (string | null)[];\n}): RenderLayer<unknown> {\n const { id, pointer, color, views } = opts;\n return {\n id,\n label: 'Linked cursor',\n draw: (data, view: View): DrawCommand[] => {\n const p = pointer();\n const here = viewIdOf(data);\n if (!p || p.viewId === here || (views && !views.includes(here))) return [];\n const { halo, bars } = crosshairRects(p.worldX, p.worldY, 1 / view.scale.x);\n const rect = (r: CrosshairRect, c: string): DrawCommand => ({\n kind: 'path',\n path: { kind: 'rect', x: r.x, y: r.y, width: r.w, height: r.h },\n fill: { fill: 'solid', color: c },\n });\n const accent = color();\n return [\n ...halo.map((r) => rect(r, CROSSHAIR_HALO)),\n ...bars.map((r) => rect(r, accent)),\n ];\n },\n };\n}\n"],"mappings":";AAYA,SAASA,EAAS,GAA8B;CAC9C,OAAQC,GAA4C,UAAU;AAChE;AAMA,SAAgBC,EAAqB,GAIZ;CACvB,IAAM,EAAE,WAAQ,SAAM,WAAQ,CAAC,MAAMC;CACrC,OAAO;EACL,IAAI,GAAGC,EAAO;EACd,OAAO;EACP,OAAO,GAAM,MAA8B;GACzC,IAAIJ,EAASC,CAAI,MAAMG,GAAQ,OAAO,CAAC;GACvC,IAAMC,IAAIC,EAAK,GACTC,IAAOF,GAAG,WAAW;GAC3B,IAAI,CAACA,KAAK,CAACE,GAAM,OAAO,CAAC;GACzB,IAAMC,IAAIH,EAAE,IAAI,GACVI,IAAK,IAAIC,EAAK,MAAM;GAC1B,OAAO,CAAC;IACN,MAAM;IACN,MAAM;KAAE,MAAM;KAAQ,GAAGF,EAAE;KAAG,GAAGA,EAAE;KAAG,OAAOD,EAAK,QAAQC,EAAE,MAAM;KAAG,QAAQD,EAAK,SAASC,EAAE,MAAM;IAAE;IACrG,QAAQ;KACN,OAAO;MAAE,MAAM;MAAS,OAAOG,EAAM,UAAU;KAAU;KACzD,QAAQA,EAAM,SAAS,KAAKF;KAC5B,OAAOE,EAAM,QAAQ,CAAC,GAAG,CAAC,EAAA,CAAG,KAAK,MAAMC,IAAIH,CAAE;IAChD;GACF,CAAC;EACH;CACF;AACF;AAIA,IAKaI,IAAiB;AAW9B,SAAgBC,EACd,GAAW,GAAW,GAC4B;CAClD,IAAMC,IAAIC,GACJC,IAAM,IAAMF,GAAGG,IAAM,IAAMH,GAAGI,IAAI,IAAQJ,GAAGK,IAAI,IAAOL,GACxDM,IAAwB;EAC5B;GAAE,GAAGC,IAAIJ,IAAMD;GAAK,GAAGM,IAAIJ,IAAI;GAAG,GAAGF;GAAK,GAAGE;EAAE;EAC/C;GAAE,GAAGG,IAAIJ;GAAK,GAAGK,IAAIJ,IAAI;GAAG,GAAGF;GAAK,GAAGE;EAAE;EACzC;GAAE,GAAGG,IAAIH,IAAI;GAAG,GAAGI,IAAIL,IAAMD;GAAK,GAAGE;GAAG,GAAGF;EAAI;EAC/C;GAAE,GAAGK,IAAIH,IAAI;GAAG,GAAGI,IAAIL;GAAK,GAAGC;GAAG,GAAGF;EAAI;CAC3C;CAEA,OAAO;EAAE,MADII,EAAK,KAAK,OAAO;GAAE,GAAGG,EAAE,IAAIJ;GAAG,GAAGI,EAAE,IAAIJ;GAAG,GAAGI,EAAE,IAAI,IAAIJ;GAAG,GAAGI,EAAE,IAAI,IAAIJ;EAAE,EAC9E;EAAM;CAAK;AACtB;AAOA,SAAgBK,EAAwB,GAKf;CACvB,IAAM,EAAE,OAAI,YAAS,UAAO,aAAUtB;CACtC,OAAO;EACL;EACA,OAAO;EACP,OAAO,GAAM,MAA8B;GACzC,IAAMuB,IAAIC,EAAQ,GACZC,IAAO5B,EAASC,CAAI;GAC1B,IAAI,CAACyB,KAAKA,EAAE,WAAWE,KAASC,KAAS,CAACA,EAAM,SAASD,CAAI,GAAI,OAAO,CAAC;GACzE,IAAM,EAAE,SAAM,YAASd,EAAeY,EAAE,QAAQA,EAAE,QAAQ,IAAIhB,EAAK,MAAM,CAAC,GACpEoB,KAAQ,GAAkB,OAA4B;IAC1D,MAAM;IACN,MAAM;KAAE,MAAM;KAAQ,GAAGzB,EAAE;KAAG,GAAGA,EAAE;KAAG,OAAOA,EAAE;KAAG,QAAQA,EAAE;IAAE;IAC9D,MAAM;KAAE,MAAM;KAAS,OAAO0B;IAAE;GAClC,IACMC,IAASC,EAAM;GACrB,OAAO,CACL,GAAGC,EAAK,KAAK,MAAMJ,EAAKzB,GAAGQ,CAAc,CAAC,GAC1C,GAAGQ,EAAK,KAAK,MAAMS,EAAKzB,GAAG2B,CAAM,CAAC,CACpC;EACF;CACF;AACF"}
@@ -0,0 +1,113 @@
1
+ import { viewToTransform as e } from "../../core/viewport/view.js";
2
+ import { worldToScreen as t } from "../../core/viewport/viewTransform.js";
3
+ //#region src/features/modes/modeLayers.ts
4
+ var n = .12;
5
+ function r(r) {
6
+ let { registry: i } = r;
7
+ return {
8
+ id: r.id ?? "mode-tint",
9
+ label: r.label ?? "Mode tint",
10
+ space: "screen",
11
+ subscribe: i.subscribe,
12
+ draw: (a, o, s) => {
13
+ let c = i.current().workspace, l = c?.tint;
14
+ if (!l || l === "transparent") return [];
15
+ let u = r.intensity ?? c.intensity ?? n, { width: d, height: f } = s, p = (e, t, n, r, i, a) => ({
16
+ kind: "path",
17
+ path: {
18
+ kind: "rect",
19
+ x: e,
20
+ y: t,
21
+ width: n,
22
+ height: r
23
+ },
24
+ fill: c.gradient ? {
25
+ fill: "linear-gradient",
26
+ from: i,
27
+ to: a,
28
+ stops: [{
29
+ offset: 0,
30
+ color: l
31
+ }, {
32
+ offset: 1,
33
+ color: "transparent"
34
+ }],
35
+ opacity: u
36
+ } : {
37
+ fill: "solid",
38
+ color: l,
39
+ opacity: u
40
+ }
41
+ }), m = () => [c.gradient === "top-down" ? p(0, 0, d, f, {
42
+ x: 0,
43
+ y: 0
44
+ }, {
45
+ x: 0,
46
+ y: f
47
+ }) : p(0, 0, d, f, {
48
+ x: 0,
49
+ y: f
50
+ }, {
51
+ x: 0,
52
+ y: 0
53
+ })], h = r.page?.();
54
+ if (!h) return m();
55
+ let g = e(o), [_, v] = t(h.x, h.y, g), [y, b] = t(h.x + h.width, h.y + h.height, g), x = Math.max(0, Math.min(_, y)), S = Math.max(0, Math.min(v, b)), C = Math.min(d, Math.max(_, y)), w = Math.min(f, Math.max(v, b));
56
+ if (C <= x || w <= S) return [{
57
+ kind: "path",
58
+ path: {
59
+ kind: "rect",
60
+ x: 0,
61
+ y: 0,
62
+ width: d,
63
+ height: f
64
+ },
65
+ fill: {
66
+ fill: "solid",
67
+ color: l,
68
+ opacity: u
69
+ }
70
+ }];
71
+ let T = [], E = (e, t, n, r, i, a) => {
72
+ n > 0 && r > 0 && T.push(p(e, t, n, r, i, a));
73
+ };
74
+ return E(0, 0, d, S, {
75
+ x: 0,
76
+ y: 0
77
+ }, {
78
+ x: 0,
79
+ y: S
80
+ }), E(0, w, d, f - w, {
81
+ x: 0,
82
+ y: f
83
+ }, {
84
+ x: 0,
85
+ y: w
86
+ }), E(0, S, x, w - S, {
87
+ x: 0,
88
+ y: 0
89
+ }, {
90
+ x,
91
+ y: 0
92
+ }), E(C, S, d - C, w - S, {
93
+ x: d,
94
+ y: 0
95
+ }, {
96
+ x: C,
97
+ y: 0
98
+ }), T;
99
+ }
100
+ };
101
+ }
102
+ function i(e, t = {}) {
103
+ return {
104
+ id: t.id ?? "mode-decorations",
105
+ label: t.label ?? "Mode decorations",
106
+ subscribe: e.subscribe,
107
+ draw: () => e.paint()
108
+ };
109
+ }
110
+ //#endregion
111
+ export { i as modeDecorationLayer, r as workspaceTintLayer };
112
+
113
+ //# sourceMappingURL=modeLayers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modeLayers.js","names":["DEFAULT_INTENSITY","workspaceTintLayer","opts","registry","ws","tint","opacity","W","H","dims","strip","whole","page","t","viewToTransform","view","sx0","sy0","worldToScreen","sx1","sy1","pl","pt","pr","pb","cmds","push","w","h","x","y","from","to","modeDecorationLayer","decorations"],"sources":["../../../src/features/modes/modeLayers.ts"],"sourcesContent":["import type { Rect } from '@weasel-js/geom';\nimport type { ModeDecorations, ModeRegistry } from '@weasel-js/modes';\nimport type { DrawCommand } from '../../renderer';\nimport type { RenderLayer } from 'core/layers/render';\nimport { viewToTransform } from 'core/viewport/view';\nimport { worldToScreen } from 'core/viewport/viewTransform';\n\n/** Options for {@link workspaceTintLayer}. */\nexport interface WorkspaceTintLayerOptions {\n registry: ModeRegistry;\n /** The page, in world coordinates. When given, the tint covers only the\n * workspace around it, each strip fading toward the page edge if the mode\n * names a gradient. Without it the tint covers the whole canvas. */\n page?: () => Rect | null;\n /** Opacity for every mode's tint, in place of its `workspace.intensity`. */\n intensity?: number;\n id?: string;\n label?: string;\n}\n\nconst DEFAULT_INTENSITY = 0.12;\n\n/**\n * A screen-space layer painting the active mode's `WorkspaceVisual`: nothing in\n * a mode without a tint, otherwise a wash at the mode's intensity, bottom-up or\n * top-down when the mode names a gradient. It subscribes to the registry, so a\n * mode switch repaints it.\n */\nexport function workspaceTintLayer(opts: WorkspaceTintLayerOptions): RenderLayer<unknown> {\n const { registry } = opts;\n return {\n id: opts.id ?? 'mode-tint',\n label: opts.label ?? 'Mode tint',\n space: 'screen',\n subscribe: registry.subscribe,\n draw: (_data, view, dims) => {\n const ws = registry.current().workspace;\n const tint = ws?.tint;\n if (!tint || tint === 'transparent') return [];\n const opacity = opts.intensity ?? ws.intensity ?? DEFAULT_INTENSITY;\n const { width: W, height: H } = dims;\n\n const strip = (\n x: number, y: number, width: number, height: number,\n from: { x: number; y: number }, to: { x: number; y: number },\n ): DrawCommand => ({\n kind: 'path',\n path: { kind: 'rect', x, y, width, height },\n fill: ws.gradient\n ? { fill: 'linear-gradient', from, to, stops: [{ offset: 0, color: tint }, { offset: 1, color: 'transparent' }], opacity }\n : { fill: 'solid', color: tint, opacity },\n });\n\n const whole = (): DrawCommand[] => [\n ws.gradient === 'top-down'\n ? strip(0, 0, W, H, { x: 0, y: 0 }, { x: 0, y: H })\n : strip(0, 0, W, H, { x: 0, y: H }, { x: 0, y: 0 }),\n ];\n\n const page = opts.page?.();\n if (!page) return whole();\n\n const t = viewToTransform(view);\n const [sx0, sy0] = worldToScreen(page.x, page.y, t);\n const [sx1, sy1] = worldToScreen(page.x + page.width, page.y + page.height, t);\n const pl = Math.max(0, Math.min(sx0, sx1));\n const pt = Math.max(0, Math.min(sy0, sy1));\n const pr = Math.min(W, Math.max(sx0, sx1));\n const pb = Math.min(H, Math.max(sy0, sy1));\n if (pr <= pl || pb <= pt) {\n return [{ kind: 'path', path: { kind: 'rect', x: 0, y: 0, width: W, height: H }, fill: { fill: 'solid', color: tint, opacity } }];\n }\n\n const cmds: DrawCommand[] = [];\n const push = (\n x: number, y: number, w: number, h: number,\n from: { x: number; y: number }, to: { x: number; y: number },\n ): void => { if (w > 0 && h > 0) cmds.push(strip(x, y, w, h, from, to)); };\n push(0, 0, W, pt, { x: 0, y: 0 }, { x: 0, y: pt });\n push(0, pb, W, H - pb, { x: 0, y: H }, { x: 0, y: pb });\n push(0, pt, pl, pb - pt, { x: 0, y: 0 }, { x: pl, y: 0 });\n push(pr, pt, W - pr, pb - pt, { x: W, y: 0 }, { x: pr, y: 0 });\n return cmds;\n },\n };\n}\n\n/** A world-space layer drawing a `ModeDecorations`' active painter. It\n * subscribes to the decorations, so a mode switch or a new painter repaints\n * it. */\nexport function modeDecorationLayer(\n decorations: ModeDecorations,\n opts: { id?: string; label?: string } = {},\n): RenderLayer<unknown> {\n return {\n id: opts.id ?? 'mode-decorations',\n label: opts.label ?? 'Mode decorations',\n subscribe: decorations.subscribe,\n draw: () => decorations.paint() as DrawCommand[],\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ import { useCanvasSize as e } from "../../core/viewport/useCanvasSize.js";
2
+ import { composeWorldPose as t } from "../../core/scene/composeFrame.js";
3
+ import { composeRectPose as n } from "../groups/composePose.js";
4
+ import { effectivePose as r } from "../../core/scene/effectivePose.js";
5
+ import { poseRotationOf as i } from "../../core/geometry/poseRotation.js";
6
+ import { applyToPoint as a, invert as o, multiply as s } from "@weasel-js/geom";
7
+ import { useCallback as c, useInsertionEffect as l, useRef as u } from "react";
8
+ //#region src/features/overlays/useNodeOverlayFrame.ts
9
+ function d(t, n, r, i = {}) {
10
+ let { width: d, height: g } = e(n), { view: _, compose: v } = i, y = c(() => {
11
+ let e = p(t, r, v);
12
+ return e ? s(m(f(_)), h(e)) : null;
13
+ }, [
14
+ t,
15
+ r,
16
+ v,
17
+ _
18
+ ]), b = c((e) => {
19
+ let t = y();
20
+ if (!t) return e;
21
+ let [n, r] = a(t, e.x, e.y);
22
+ return {
23
+ x: n,
24
+ y: r
25
+ };
26
+ }, [y]), x = u(null), S = c((e) => {
27
+ let t = y(), n = t && o(t);
28
+ n && (x.current = n);
29
+ let [r, i] = a(n ?? x.current, e.x, e.y);
30
+ return {
31
+ x: r,
32
+ y: i
33
+ };
34
+ }, [y]), C = p(t, r, v), w = C && d !== 0 && g !== 0 ? y() : null, T = w && o(w);
35
+ return l(() => {
36
+ T && (x.current = T);
37
+ }), !C || !T ? null : {
38
+ box: {
39
+ x: C.x,
40
+ y: C.y,
41
+ width: C.width,
42
+ height: C.height
43
+ },
44
+ toScreen: b,
45
+ toLocal: S,
46
+ width: d,
47
+ height: g
48
+ };
49
+ }
50
+ function f(e) {
51
+ return typeof e == "function" ? e() : e;
52
+ }
53
+ function p(e, i, a) {
54
+ if (i == null) return null;
55
+ let o = e.nodes;
56
+ return o.has(i) ? t({
57
+ getPose: (t) => r(e, o.get(t)),
58
+ getParent: (e) => o.get(e)?.parent ?? null
59
+ }, i, a ?? n) : null;
60
+ }
61
+ function m(e) {
62
+ if (!e) return [
63
+ 1,
64
+ 0,
65
+ 0,
66
+ 1,
67
+ 0,
68
+ 0
69
+ ];
70
+ let { x: t, y: n } = e.scale;
71
+ return [
72
+ t,
73
+ 0,
74
+ 0,
75
+ n,
76
+ -e.x * t,
77
+ -e.y * n
78
+ ];
79
+ }
80
+ function h(e) {
81
+ let t = i(e);
82
+ if (!t) return [
83
+ 1,
84
+ 0,
85
+ 0,
86
+ 1,
87
+ 0,
88
+ 0
89
+ ];
90
+ let n = Math.cos(t.rotation), r = Math.sin(t.rotation);
91
+ return [
92
+ n,
93
+ r,
94
+ -r,
95
+ n,
96
+ t.cx - t.cx * n + t.cy * r,
97
+ t.cy - t.cx * r - t.cy * n
98
+ ];
99
+ }
100
+ //#endregion
101
+ export { d as useNodeOverlayFrame };
102
+
103
+ //# sourceMappingURL=useNodeOverlayFrame.js.map