@weasel-js/core 1.9.4 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1092) hide show
  1. package/CHANGELOG.md +750 -0
  2. package/README.md +5 -3
  3. package/dist/WeaselProvider.js +5 -7
  4. package/dist/WeaselProvider.js.map +1 -1
  5. package/dist/affordances/composeAffordanceLayer.js +91 -83
  6. package/dist/affordances/composeAffordanceLayer.js.map +1 -1
  7. package/dist/affordances/cornerResize.js +3 -2
  8. package/dist/affordances/cornerResize.js.map +1 -1
  9. package/dist/affordances/hitAffordanceRegions.js +54 -100
  10. package/dist/affordances/hitAffordanceRegions.js.map +1 -1
  11. package/dist/affordances/pathAnchors.js.map +1 -1
  12. package/dist/affordances/rotationHandle.js +5 -4
  13. package/dist/affordances/rotationHandle.js.map +1 -1
  14. package/dist/animation/behaviors/coast.js +21 -0
  15. package/dist/animation/behaviors/coast.js.map +1 -0
  16. package/dist/animation/behaviors/coastByWrite.js +107 -0
  17. package/dist/animation/behaviors/coastByWrite.js.map +1 -0
  18. package/dist/animation/behaviors/coastOnTargets.js +94 -0
  19. package/dist/animation/behaviors/coastOnTargets.js.map +1 -0
  20. package/dist/animation/behaviors/momentum.js +48 -136
  21. package/dist/animation/behaviors/momentum.js.map +1 -1
  22. package/dist/animation/clipTargets.js +12 -0
  23. package/dist/animation/clipTargets.js.map +1 -0
  24. package/dist/animation/index.js +15 -20
  25. package/dist/animation/poseHelpers.js +112 -33
  26. package/dist/animation/poseHelpers.js.map +1 -1
  27. package/dist/animation/poseTarget.js +115 -0
  28. package/dist/animation/poseTarget.js.map +1 -0
  29. package/dist/animation/reflow.js +113 -83
  30. package/dist/animation/reflow.js.map +1 -1
  31. package/dist/animation/rewind.js +66 -0
  32. package/dist/animation/rewind.js.map +1 -0
  33. package/dist/animation/rig/bindRig.js +85 -53
  34. package/dist/animation/rig/bindRig.js.map +1 -1
  35. package/dist/animation/rig/rigNode.js +93 -0
  36. package/dist/animation/rig/rigNode.js.map +1 -0
  37. package/dist/animation/rig/rigSeat.js +26 -0
  38. package/dist/animation/rig/rigSeat.js.map +1 -0
  39. package/dist/animation/rig/skinBinding.js +56 -0
  40. package/dist/animation/rig/skinBinding.js.map +1 -0
  41. package/dist/animation/rig/useRig.js +31 -16
  42. package/dist/animation/rig/useRig.js.map +1 -1
  43. package/dist/animation/wrappers/animateLifecycle.js +8 -7
  44. package/dist/animation/wrappers/animateLifecycle.js.map +1 -1
  45. package/dist/animation/wrappers/animateOnSetPose.js +31 -31
  46. package/dist/animation/wrappers/animateOnSetPose.js.map +1 -1
  47. package/dist/animation/wrappers/instantPose.js.map +1 -1
  48. package/dist/animation/writtenPoseTarget.js +33 -0
  49. package/dist/animation/writtenPoseTarget.js.map +1 -0
  50. package/dist/autoPoseDescriptor-DHg5KqaJ.d.ts +27 -0
  51. package/dist/barrel/canvas.js +31 -0
  52. package/dist/barrel/chrome.js +10 -10
  53. package/dist/barrel/input.js +16 -17
  54. package/dist/barrel/interactions.js +35 -39
  55. package/dist/barrel/paint.js +11 -18
  56. package/dist/barrel/paths.js +12 -19
  57. package/dist/barrel/renderer.js +14 -20
  58. package/dist/barrel/routing.js +42 -36
  59. package/dist/barrel/scene.js +37 -0
  60. package/dist/barrel/text.js +9 -18
  61. package/dist/barrel/viewport.js +41 -51
  62. package/dist/canvas/Canvas.js +281 -475
  63. package/dist/canvas/Canvas.js.map +1 -1
  64. package/dist/canvas/CanvasView.js +169 -188
  65. package/dist/canvas/CanvasView.js.map +1 -1
  66. package/dist/canvas/CursorCoordsHud.js +22 -23
  67. package/dist/canvas/CursorCoordsHud.js.map +1 -1
  68. package/dist/canvas/DrawCanvas.js +39 -56
  69. package/dist/canvas/DrawCanvas.js.map +1 -1
  70. package/dist/canvas/ModalityHud.js.map +1 -1
  71. package/dist/canvas/NodeShape.js +28 -29
  72. package/dist/canvas/NodeShape.js.map +1 -1
  73. package/dist/canvas/PickHud.js.map +1 -1
  74. package/dist/canvas/SceneCanvas/DevHuds.js +40 -0
  75. package/dist/canvas/SceneCanvas/DevHuds.js.map +1 -0
  76. package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js +66 -107
  77. package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js.map +1 -1
  78. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +27 -31
  79. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js.map +1 -1
  80. package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js +51 -54
  81. package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js.map +1 -1
  82. package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js +3 -3
  83. package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js.map +1 -1
  84. package/dist/canvas/SceneCanvas/coordTrace.js +37 -1
  85. package/dist/canvas/SceneCanvas/coordTrace.js.map +1 -1
  86. package/dist/canvas/SceneCanvas/defaultNodeProperties.js +40 -29
  87. package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -1
  88. package/dist/canvas/SceneCanvas/defaultNodeRouting.js +1 -1
  89. package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -1
  90. package/dist/canvas/SceneCanvas/dispatcherGestureBounds.js.map +1 -1
  91. package/dist/canvas/SceneCanvas/features.js +73 -43
  92. package/dist/canvas/SceneCanvas/features.js.map +1 -1
  93. package/dist/canvas/SceneCanvas/isDev.js.map +1 -1
  94. package/dist/canvas/SceneCanvas/poseGeometry.js +33 -37
  95. package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -1
  96. package/dist/canvas/SceneCanvas/props.js +15 -14
  97. package/dist/canvas/SceneCanvas/props.js.map +1 -1
  98. package/dist/canvas/SceneCanvas/toolRegistry.js +23 -0
  99. package/dist/canvas/SceneCanvas/toolRegistry.js.map +1 -0
  100. package/dist/canvas/SceneCanvas/useActionsPropResolver.js +6 -1
  101. package/dist/canvas/SceneCanvas/useActionsPropResolver.js.map +1 -1
  102. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js.map +1 -1
  103. package/dist/canvas/SceneCanvas/useBuiltinTools.js +21 -0
  104. package/dist/canvas/SceneCanvas/useBuiltinTools.js.map +1 -0
  105. package/dist/canvas/SceneCanvas/useCanvasCamera.js +38 -0
  106. package/dist/canvas/SceneCanvas/useCanvasCamera.js.map +1 -0
  107. package/dist/canvas/SceneCanvas/useCanvasDispatcher.js +20 -0
  108. package/dist/canvas/SceneCanvas/useCanvasDispatcher.js.map +1 -0
  109. package/dist/canvas/SceneCanvas/useCanvasSelection.js +16 -0
  110. package/dist/canvas/SceneCanvas/useCanvasSelection.js.map +1 -0
  111. package/dist/canvas/SceneCanvas/useCanvasTools.js +67 -0
  112. package/dist/canvas/SceneCanvas/useCanvasTools.js.map +1 -0
  113. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js +29 -29
  114. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js.map +1 -1
  115. package/dist/canvas/SceneCanvas/useHeldModifiers.js +20 -0
  116. package/dist/canvas/SceneCanvas/useHeldModifiers.js.map +1 -0
  117. package/dist/canvas/SceneCanvas/useNodeAtPoint.js +26 -0
  118. package/dist/canvas/SceneCanvas/useNodeAtPoint.js.map +1 -0
  119. package/dist/canvas/SceneCanvas/useNodeKinds.js +26 -0
  120. package/dist/canvas/SceneCanvas/useNodeKinds.js.map +1 -0
  121. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +39 -37
  122. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js.map +1 -1
  123. package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js +47 -0
  124. package/dist/canvas/SceneCanvas/useSceneCanvasHandle.js.map +1 -0
  125. package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js +66 -0
  126. package/dist/canvas/SceneCanvas/useSceneCanvasLayers.js.map +1 -0
  127. package/dist/canvas/SceneCanvas/useSceneChrome.js +59 -0
  128. package/dist/canvas/SceneCanvas/useSceneChrome.js.map +1 -0
  129. package/dist/canvas/SceneCanvas/useSceneRedrawSources.js +23 -0
  130. package/dist/canvas/SceneCanvas/useSceneRedrawSources.js.map +1 -0
  131. package/dist/canvas/SceneCanvas/useSceneSelectTool.js +76 -80
  132. package/dist/canvas/SceneCanvas/useSceneSelectTool.js.map +1 -1
  133. package/dist/canvas/SceneCanvas/useSceneSlotLayers.js +37 -0
  134. package/dist/canvas/SceneCanvas/useSceneSlotLayers.js.map +1 -0
  135. package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js +38 -0
  136. package/dist/canvas/SceneCanvas/useSelectionOverlayLayer.js.map +1 -0
  137. package/dist/canvas/SceneCanvas/useViewLayerGate.js +20 -0
  138. package/dist/canvas/SceneCanvas/useViewLayerGate.js.map +1 -0
  139. package/dist/canvas/SceneCanvas/useViewportActions.js +9 -1
  140. package/dist/canvas/SceneCanvas/useViewportActions.js.map +1 -1
  141. package/dist/canvas/SceneCanvas/worldPointAt.js +9 -0
  142. package/dist/canvas/SceneCanvas/worldPointAt.js.map +1 -0
  143. package/dist/canvas/SceneCanvas.js +303 -707
  144. package/dist/canvas/SceneCanvas.js.map +1 -1
  145. package/dist/canvas/SceneViewCanvas.js +41 -47
  146. package/dist/canvas/SceneViewCanvas.js.map +1 -1
  147. package/dist/canvas/adapterDerivedPath.js +26 -0
  148. package/dist/canvas/adapterDerivedPath.js.map +1 -0
  149. package/dist/canvas/affordanceAt.js +11 -1
  150. package/dist/canvas/affordanceAt.js.map +1 -1
  151. package/dist/canvas/buildSceneLayer.js +81 -61
  152. package/dist/canvas/buildSceneLayer.js.map +1 -1
  153. package/dist/canvas/buildSceneTree.js.map +1 -1
  154. package/dist/canvas/canvasRenderer.js +40 -44
  155. package/dist/canvas/canvasRenderer.js.map +1 -1
  156. package/dist/canvas/colorOverrides.js.map +1 -1
  157. package/dist/canvas/defaultDrawOne.js +12 -12
  158. package/dist/canvas/defaultDrawOne.js.map +1 -1
  159. package/dist/canvas/deps/areaSelect.js +4 -4
  160. package/dist/canvas/deps/areaSelect.js.map +1 -1
  161. package/dist/canvas/deps/debug.js.map +1 -1
  162. package/dist/canvas/deps/editAnchors.js +49 -68
  163. package/dist/canvas/deps/editAnchors.js.map +1 -1
  164. package/dist/canvas/deps/geometryProjection.js.map +1 -1
  165. package/dist/canvas/deps/hitTestArea.js +31 -26
  166. package/dist/canvas/deps/hitTestArea.js.map +1 -1
  167. package/dist/canvas/deps/insert.js +65 -54
  168. package/dist/canvas/deps/insert.js.map +1 -1
  169. package/dist/canvas/deps/lassoSelect.js +5 -5
  170. package/dist/canvas/deps/lassoSelect.js.map +1 -1
  171. package/dist/canvas/deps/poseDescriptor.js +1 -1
  172. package/dist/canvas/deps/poseDescriptor.js.map +1 -1
  173. package/dist/canvas/deps/resizePolicy.js.map +1 -1
  174. package/dist/canvas/deps/slice.js +44 -45
  175. package/dist/canvas/deps/slice.js.map +1 -1
  176. package/dist/canvas/deps/textEdit.js +8 -8
  177. package/dist/canvas/deps/textEdit.js.map +1 -1
  178. package/dist/canvas/deps/view.js.map +1 -1
  179. package/dist/canvas/derivedPath.js +43 -41
  180. package/dist/canvas/derivedPath.js.map +1 -1
  181. package/dist/canvas/drawEnvelope.js +8 -4
  182. package/dist/canvas/drawEnvelope.js.map +1 -1
  183. package/dist/canvas/getNodeAtPoint.js +2 -6
  184. package/dist/canvas/getNodeAtPoint.js.map +1 -1
  185. package/dist/canvas/hud.module.js.map +1 -1
  186. package/dist/canvas/insertPreviewExtent.js.map +1 -1
  187. package/dist/canvas/layerOrder.js.map +1 -1
  188. package/dist/canvas/layerSlots.js +6 -1
  189. package/dist/canvas/layerSlots.js.map +1 -1
  190. package/dist/canvas/nodeShapes/derivedPainter.js +12 -12
  191. package/dist/canvas/nodeShapes/derivedPainter.js.map +1 -1
  192. package/dist/canvas/nodeShapes/imagePainter.js +10 -10
  193. package/dist/canvas/nodeShapes/imagePainter.js.map +1 -1
  194. package/dist/canvas/nodeShapes/memo.js.map +1 -1
  195. package/dist/canvas/nodeShapes/nodePaint.js +34 -23
  196. package/dist/canvas/nodeShapes/nodePaint.js.map +1 -1
  197. package/dist/canvas/nodeShapes/pathPainter.js +23 -22
  198. package/dist/canvas/nodeShapes/pathPainter.js.map +1 -1
  199. package/dist/canvas/nodeShapes/poseBox.js +6 -6
  200. package/dist/canvas/nodeShapes/poseBox.js.map +1 -1
  201. package/dist/canvas/nodeShapes/rectFallbackPainter.js +8 -8
  202. package/dist/canvas/nodeShapes/rectFallbackPainter.js.map +1 -1
  203. package/dist/canvas/nodeShapes/shapePainter.js +16 -16
  204. package/dist/canvas/nodeShapes/shapePainter.js.map +1 -1
  205. package/dist/canvas/nodeShapes/textPainter.js +1 -1
  206. package/dist/canvas/nodeShapes/textPainter.js.map +1 -1
  207. package/dist/canvas/overlayRoleStrokes.js.map +1 -1
  208. package/dist/canvas/paintCull.js +6 -8
  209. package/dist/canvas/paintCull.js.map +1 -1
  210. package/dist/{features/cursor → canvas}/paintedCursorLayer.js +2 -2
  211. package/dist/canvas/paintedCursorLayer.js.map +1 -0
  212. package/dist/canvas/pickWalk.js +52 -50
  213. package/dist/canvas/pickWalk.js.map +1 -1
  214. package/dist/canvas/planeClips.js +18 -19
  215. package/dist/canvas/planeClips.js.map +1 -1
  216. package/dist/canvas/poseCascade.js +41 -0
  217. package/dist/canvas/poseCascade.js.map +1 -0
  218. package/dist/canvas/poseRotation.js +1 -3
  219. package/dist/canvas/poseRotation.js.map +1 -1
  220. package/dist/canvas/rasterReadback.js +22 -0
  221. package/dist/canvas/rasterReadback.js.map +1 -0
  222. package/dist/canvas/renderDebugSnapshot.js +12 -12
  223. package/dist/canvas/renderDebugSnapshot.js.map +1 -1
  224. package/dist/canvas/renderNeeds.js +3 -3
  225. package/dist/canvas/renderNeeds.js.map +1 -1
  226. package/dist/canvas/renderSceneToPixels.js +64 -83
  227. package/dist/canvas/renderSceneToPixels.js.map +1 -1
  228. package/dist/canvas/sceneAdapter.js +68 -132
  229. package/dist/canvas/sceneAdapter.js.map +1 -1
  230. package/dist/canvas/sceneClipboard.js +1 -1
  231. package/dist/canvas/sceneClipboard.js.map +1 -1
  232. package/dist/canvas/sceneLayerPaint.js +4 -4
  233. package/dist/canvas/sceneLayerPaint.js.map +1 -1
  234. package/dist/canvas/sceneSlotWiring.js +4 -4
  235. package/dist/canvas/sceneSlotWiring.js.map +1 -1
  236. package/dist/canvas/sceneViewRender.js +36 -35
  237. package/dist/canvas/sceneViewRender.js.map +1 -1
  238. package/dist/canvas/slopsDebugLayer.js +4 -4
  239. package/dist/canvas/slopsDebugLayer.js.map +1 -1
  240. package/dist/canvas/surface.module.js +6 -0
  241. package/dist/canvas/surface.module.js.map +1 -0
  242. package/dist/canvas/surfaceBox.js +16 -0
  243. package/dist/canvas/surfaceBox.js.map +1 -0
  244. package/dist/canvas/useCanvasRenderer.js +23 -11
  245. package/dist/canvas/useCanvasRenderer.js.map +1 -1
  246. package/dist/canvas/useCanvasSurface.js +31 -0
  247. package/dist/canvas/useCanvasSurface.js.map +1 -0
  248. package/dist/canvas/useCanvasView.js +46 -37
  249. package/dist/canvas/useCanvasView.js.map +1 -1
  250. package/dist/canvas/useFrameLoop.js +11 -12
  251. package/dist/canvas/useFrameLoop.js.map +1 -1
  252. package/dist/canvas/useHostAnchor.js +35 -33
  253. package/dist/canvas/useHostAnchor.js.map +1 -1
  254. package/dist/canvas/useLateContentRedraw.js +8 -8
  255. package/dist/canvas/useLateContentRedraw.js.map +1 -1
  256. package/dist/canvas/useSceneLayerList.js +4 -14
  257. package/dist/canvas/useSceneLayerList.js.map +1 -1
  258. package/dist/canvas/useSurfaceInput.js +42 -0
  259. package/dist/canvas/useSurfaceInput.js.map +1 -0
  260. package/dist/canvas/useToolCursor.js +29 -0
  261. package/dist/canvas/useToolCursor.js.map +1 -0
  262. package/dist/canvas/useViewHelpers.js +46 -85
  263. package/dist/canvas/useViewHelpers.js.map +1 -1
  264. package/dist/canvas/viewInputs.js.map +1 -1
  265. package/dist/canvas/viewRegistry.js +25 -27
  266. package/dist/canvas/viewRegistry.js.map +1 -1
  267. package/dist/canvas/watchElementMove.js +43 -0
  268. package/dist/canvas/watchElementMove.js.map +1 -0
  269. package/dist/canvas/wrapNodeOutput.js.map +1 -1
  270. package/dist/clipboard.d.ts +7 -14
  271. package/dist/{types-B4iJRHC3.d.ts → clone-2a5hVbBd.d.ts} +122 -77
  272. package/dist/clone.d.ts +4 -8
  273. package/dist/clone.js +0 -2
  274. package/dist/core/device/targets.js.map +1 -1
  275. package/dist/core/device/useDeviceProfile.js +13 -13
  276. package/dist/core/device/useDeviceProfile.js.map +1 -1
  277. package/dist/{interactions/actions/resize → core/geometry}/autoPoseDescriptor.js +8 -7
  278. package/dist/core/geometry/autoPoseDescriptor.js.map +1 -0
  279. package/dist/core/geometry/pathPoseDescriptor.js +88 -0
  280. package/dist/core/geometry/pathPoseDescriptor.js.map +1 -0
  281. package/dist/core/geometry/poseDescriptor.js +61 -14
  282. package/dist/core/geometry/poseDescriptor.js.map +1 -1
  283. package/dist/core/geometry/regionHit.js +35 -37
  284. package/dist/core/geometry/regionHit.js.map +1 -1
  285. package/dist/core/geometry/targetFrame.js +94 -0
  286. package/dist/core/geometry/targetFrame.js.map +1 -0
  287. package/dist/core/geometry/unionBounds.js +4 -5
  288. package/dist/core/geometry/unionBounds.js.map +1 -1
  289. package/dist/core/layers/backgroundFill.js +31 -0
  290. package/dist/core/layers/backgroundFill.js.map +1 -0
  291. package/dist/{features/groups → core/layers}/children.js +1 -1
  292. package/dist/core/layers/children.js.map +1 -0
  293. package/dist/{features/focus → core/layers}/gateLayer.js +2 -2
  294. package/dist/core/layers/gateLayer.js.map +1 -0
  295. package/dist/core/layers/layerGroup.js +40 -0
  296. package/dist/core/layers/layerGroup.js.map +1 -0
  297. package/dist/core/layers/render.js +50 -76
  298. package/dist/core/layers/render.js.map +1 -1
  299. package/dist/core/ops/createHistory.js +9 -9
  300. package/dist/core/ops/createHistory.js.map +1 -1
  301. package/dist/core/ops/delete.js.map +1 -1
  302. package/dist/core/paint/meshKind.js +16 -0
  303. package/dist/core/paint/meshKind.js.map +1 -0
  304. package/dist/{features/meshPaint/lazyKind.js → core/paint/meshKindLazy.js} +103 -92
  305. package/dist/core/paint/meshKindLazy.js.map +1 -0
  306. package/dist/core/paint/paintKindEntry.js +8 -0
  307. package/dist/core/paint/paintKindEntry.js.map +1 -0
  308. package/dist/core/paint/paintKinds.js +144 -0
  309. package/dist/core/paint/paintKinds.js.map +1 -0
  310. package/dist/core/paint/registerMesh.js +7 -0
  311. package/dist/core/paint/registerMesh.js.map +1 -0
  312. package/dist/core/scene/NodeProperties.js.map +1 -1
  313. package/dist/core/scene/NodeRouting.js.map +1 -1
  314. package/dist/core/scene/arrivalWindow.js +65 -64
  315. package/dist/core/scene/arrivalWindow.js.map +1 -1
  316. package/dist/core/scene/boundOps.js +40 -0
  317. package/dist/core/scene/boundOps.js.map +1 -0
  318. package/dist/core/scene/composeFrame.js +9 -6
  319. package/dist/core/scene/composeFrame.js.map +1 -1
  320. package/dist/{features/groups → core/scene}/composePose.js +18 -18
  321. package/dist/core/scene/composePose.js.map +1 -0
  322. package/dist/core/scene/depMemo.js +31 -6
  323. package/dist/core/scene/depMemo.js.map +1 -1
  324. package/dist/core/scene/derivedPath.js +19 -20
  325. package/dist/core/scene/derivedPath.js.map +1 -1
  326. package/dist/core/scene/editMode.js +26 -0
  327. package/dist/core/scene/editMode.js.map +1 -0
  328. package/dist/core/scene/effectivePose.js +38 -39
  329. package/dist/core/scene/effectivePose.js.map +1 -1
  330. package/dist/core/scene/fieldEdits.js +98 -0
  331. package/dist/core/scene/fieldEdits.js.map +1 -0
  332. package/dist/core/scene/historyFacade.js +116 -70
  333. package/dist/core/scene/historyFacade.js.map +1 -1
  334. package/dist/core/scene/historyForm.js +6 -0
  335. package/dist/core/scene/historyForm.js.map +1 -0
  336. package/dist/core/scene/kitOps.js +83 -71
  337. package/dist/core/scene/kitOps.js.map +1 -1
  338. package/dist/core/scene/kitRegistry.js.map +1 -1
  339. package/dist/core/scene/layerStack.js +105 -12
  340. package/dist/core/scene/layerStack.js.map +1 -1
  341. package/dist/core/scene/layoutPass.js +58 -59
  342. package/dist/core/scene/layoutPass.js.map +1 -1
  343. package/dist/{features/groups → core/scene}/nestedHit.js +3 -3
  344. package/dist/core/scene/nestedHit.js.map +1 -0
  345. package/dist/core/scene/nodeFnFields.js +9 -9
  346. package/dist/core/scene/nodeFnFields.js.map +1 -1
  347. package/dist/core/scene/nodeMemo.js.map +1 -1
  348. package/dist/core/scene/nodeStore.js +72 -71
  349. package/dist/core/scene/nodeStore.js.map +1 -1
  350. package/dist/core/scene/notifier.js +37 -0
  351. package/dist/core/scene/notifier.js.map +1 -0
  352. package/dist/core/scene/opTable.js +50 -0
  353. package/dist/core/scene/opTable.js.map +1 -0
  354. package/dist/core/scene/outerOps.js +66 -0
  355. package/dist/core/scene/outerOps.js.map +1 -0
  356. package/dist/core/scene/poseHold.js +39 -0
  357. package/dist/core/scene/poseHold.js.map +1 -0
  358. package/dist/core/scene/poseOverrides.js +44 -36
  359. package/dist/core/scene/poseOverrides.js.map +1 -1
  360. package/dist/core/scene/poseSnapshot.js.map +1 -1
  361. package/dist/core/scene/reconcileSpecs.js +3 -2
  362. package/dist/core/scene/reconcileSpecs.js.map +1 -1
  363. package/dist/core/scene/recorder.js +86 -0
  364. package/dist/core/scene/recorder.js.map +1 -0
  365. package/dist/core/scene/renderOrder.js.map +1 -1
  366. package/dist/core/scene/scene.js +81 -690
  367. package/dist/core/scene/scene.js.map +1 -1
  368. package/dist/core/scene/sceneEdits.js +58 -0
  369. package/dist/core/scene/sceneEdits.js.map +1 -0
  370. package/dist/core/scene/sceneMutators.js +49 -0
  371. package/dist/core/scene/sceneMutators.js.map +1 -0
  372. package/dist/core/scene/scenePoseAdapter.js +16 -0
  373. package/dist/core/scene/scenePoseAdapter.js.map +1 -0
  374. package/dist/core/scene/sceneRecording.js +90 -0
  375. package/dist/core/scene/sceneRecording.js.map +1 -0
  376. package/dist/core/scene/sceneSelection.js +28 -0
  377. package/dist/core/scene/sceneSelection.js.map +1 -0
  378. package/dist/core/scene/sceneState.js +49 -0
  379. package/dist/core/scene/sceneState.js.map +1 -0
  380. package/dist/core/scene/serialization.js +8 -5
  381. package/dist/core/scene/serialization.js.map +1 -1
  382. package/dist/core/scene/staleReplay.js +51 -0
  383. package/dist/core/scene/staleReplay.js.map +1 -0
  384. package/dist/core/scene/statedFields.js +9 -0
  385. package/dist/core/scene/statedFields.js.map +1 -0
  386. package/dist/core/scene/treeEdits.js +127 -0
  387. package/dist/core/scene/treeEdits.js.map +1 -0
  388. package/dist/core/scene/treeReads.js +26 -0
  389. package/dist/core/scene/treeReads.js.map +1 -0
  390. package/dist/core/scene/types.js.map +1 -1
  391. package/dist/{features/groups → core/scene}/unionOfChildren.js +3 -3
  392. package/dist/core/scene/unionOfChildren.js.map +1 -0
  393. package/dist/core/scene/unitScopes.js +13 -0
  394. package/dist/core/scene/unitScopes.js.map +1 -0
  395. package/dist/core/scene/useScene.js.map +1 -1
  396. package/dist/core/selection/readOnlySelection.js +32 -0
  397. package/dist/core/selection/readOnlySelection.js.map +1 -0
  398. package/dist/core/selection/usePublishSceneSelection.js +26 -0
  399. package/dist/core/selection/usePublishSceneSelection.js.map +1 -0
  400. package/dist/core/selection/useSelection.js +34 -25
  401. package/dist/core/selection/useSelection.js.map +1 -1
  402. package/dist/core/shapeKinds.js.map +1 -1
  403. package/dist/core/stylus/stylus.js.map +1 -1
  404. package/dist/core/stylus/usePointerStylus.js.map +1 -1
  405. package/dist/core/usePaintKinds.js +1 -1
  406. package/dist/core/usePaintKinds.js.map +1 -1
  407. package/dist/core/viewport/clientToWorld.js.map +1 -1
  408. package/dist/core/viewport/fitViewToBounds.js.map +1 -1
  409. package/dist/core/viewport/parallax.js.map +1 -1
  410. package/dist/core/viewport/screenSlop.js +11 -11
  411. package/dist/core/viewport/screenSlop.js.map +1 -1
  412. package/dist/core/viewport/useCanvasSize.js.map +1 -1
  413. package/dist/core/viewport/useDecayLoop.js +8 -8
  414. package/dist/core/viewport/useDecayLoop.js.map +1 -1
  415. package/dist/core/viewport/useNodeOverlayFrame.js +84 -0
  416. package/dist/core/viewport/useNodeOverlayFrame.js.map +1 -0
  417. package/dist/core/viewport/useViewAnimation.js +102 -43
  418. package/dist/core/viewport/useViewAnimation.js.map +1 -1
  419. package/dist/core/viewport/view.js +7 -7
  420. package/dist/core/viewport/view.js.map +1 -1
  421. package/dist/core/viewport/wheelHandler.js.map +1 -1
  422. package/dist/{cornerHandles-CtCb8a3G.d.ts → cornerHandles-BEshc4z3.d.ts} +11 -24
  423. package/dist/debug/createDebugOverlayLayer.js +100 -100
  424. package/dist/debug/createDebugOverlayLayer.js.map +1 -1
  425. package/dist/debug/createDebugSink.js.map +1 -1
  426. package/dist/debug/frameStats.js.map +1 -1
  427. package/dist/debug/useDebugSink.js +52 -0
  428. package/dist/debug/useDebugSink.js.map +1 -0
  429. package/dist/features/chrome-caps/buildChromeCtx.js.map +1 -1
  430. package/dist/features/chrome-caps/conditions.js.map +1 -1
  431. package/dist/features/chrome-caps/defaults.js.map +1 -1
  432. package/dist/features/chrome-caps/resolve.js.map +1 -1
  433. package/dist/features/chrome-caps/useChromeCaps.js +54 -0
  434. package/dist/features/chrome-caps/useChromeCaps.js.map +1 -0
  435. package/dist/features/chrome-caps/useHoverTracking.js.map +1 -1
  436. package/dist/features/ingestion/contentHandlers.js +25 -19
  437. package/dist/features/ingestion/contentHandlers.js.map +1 -1
  438. package/dist/features/ingestion/imageHandler.js +21 -24
  439. package/dist/features/ingestion/imageHandler.js.map +1 -1
  440. package/dist/features/ingestion/openFilePicker.js.map +1 -1
  441. package/dist/features/ingestion/placement.js +16 -0
  442. package/dist/features/ingestion/placement.js.map +1 -0
  443. package/dist/features/ingestion/svgHandler.js +5 -0
  444. package/dist/features/ingestion/svgHandler.js.map +1 -1
  445. package/dist/features/ingestion/textHandler.js +28 -0
  446. package/dist/features/ingestion/textHandler.js.map +1 -0
  447. package/dist/features/ingestion/useCanvasIngestion.js +48 -0
  448. package/dist/features/ingestion/useCanvasIngestion.js.map +1 -0
  449. package/dist/features/ingestion/weaselJsonHandler.js +5 -0
  450. package/dist/features/ingestion/weaselJsonHandler.js.map +1 -1
  451. package/dist/features/longPress/longPressFeedback.js.map +1 -1
  452. package/dist/features/modes/modeLayers.js +7 -7
  453. package/dist/features/modes/modeLayers.js.map +1 -1
  454. package/dist/features/paths/editablePath.js +47 -0
  455. package/dist/features/paths/editablePath.js.map +1 -0
  456. package/dist/features/paths/index.js +9 -16
  457. package/dist/features/paths/pathEditState.js +41 -0
  458. package/dist/features/paths/pathEditState.js.map +1 -0
  459. package/dist/features/paths/pathEditingOverlayLayer.js +36 -38
  460. package/dist/features/paths/pathEditingOverlayLayer.js.map +1 -1
  461. package/dist/features/paths/pathLayer.js +3 -2
  462. package/dist/features/paths/pathLayer.js.map +1 -1
  463. package/dist/features/paths/penPreviewLayer.js +86 -88
  464. package/dist/features/paths/penPreviewLayer.js.map +1 -1
  465. package/dist/features/paths/usePathEdit.js +34 -0
  466. package/dist/features/paths/usePathEdit.js.map +1 -0
  467. package/dist/features/poseRun/usePoseRun.js +42 -55
  468. package/dist/features/poseRun/usePoseRun.js.map +1 -1
  469. package/dist/features/selection/overlay.js +170 -178
  470. package/dist/features/selection/overlay.js.map +1 -1
  471. package/dist/features/text/index.js +6 -0
  472. package/dist/features/text/textLayer.js +1 -1
  473. package/dist/features/text/textLayer.js.map +1 -1
  474. package/dist/features/text/useSceneTextEdit.js +95 -82
  475. package/dist/features/text/useSceneTextEdit.js.map +1 -1
  476. package/dist/features/viewports/viewportLayer.js +25 -36
  477. package/dist/features/viewports/viewportLayer.js.map +1 -1
  478. package/dist/index.d.ts +4507 -8459
  479. package/dist/index.js +275 -320
  480. package/dist/input/keyState.js +14 -14
  481. package/dist/interactions/actions/actionShortcuts.js.map +1 -1
  482. package/dist/interactions/actions/{defaults/align.js → align/action.js} +15 -16
  483. package/dist/interactions/actions/align/action.js.map +1 -0
  484. package/dist/interactions/actions/align/align.js +23 -23
  485. package/dist/interactions/actions/align/align.js.map +1 -1
  486. package/dist/interactions/actions/booleans/action.js +65 -0
  487. package/dist/interactions/actions/booleans/action.js.map +1 -0
  488. package/dist/interactions/actions/booleans/booleans.js +69 -78
  489. package/dist/interactions/actions/booleans/booleans.js.map +1 -1
  490. package/dist/interactions/actions/booleans/operands.js +40 -0
  491. package/dist/interactions/actions/booleans/operands.js.map +1 -0
  492. package/dist/interactions/actions/booleans/pieces.js +45 -0
  493. package/dist/interactions/actions/booleans/pieces.js.map +1 -0
  494. package/dist/interactions/actions/booleans/placement.js +24 -0
  495. package/dist/interactions/actions/booleans/placement.js.map +1 -0
  496. package/dist/interactions/actions/booleans/useBooleans.js +11 -9
  497. package/dist/interactions/actions/booleans/useBooleans.js.map +1 -1
  498. package/dist/interactions/actions/booleans/useBooleansAdapter.js.map +1 -1
  499. package/dist/interactions/actions/{defaults/clipboard.js → clipboard/action.js} +19 -19
  500. package/dist/interactions/actions/clipboard/action.js.map +1 -0
  501. package/dist/interactions/actions/clipboard/clipboardOps.js +15 -15
  502. package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -1
  503. package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -1
  504. package/dist/interactions/actions/clone/action.js +98 -0
  505. package/dist/interactions/actions/clone/action.js.map +1 -0
  506. package/dist/interactions/actions/clone/behaviors.js +52 -0
  507. package/dist/interactions/actions/clone/behaviors.js.map +1 -0
  508. package/dist/interactions/actions/defaultCommitAdapter.js +10 -37
  509. package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -1
  510. package/dist/interactions/actions/defaults/anchorEditing.js +41 -43
  511. package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -1
  512. package/dist/interactions/actions/defaults/areaSelect.js.map +1 -1
  513. package/dist/interactions/actions/defaults/cancelGesture.js.map +1 -1
  514. package/dist/interactions/actions/defaults/clearSelection.js.map +1 -1
  515. package/dist/interactions/actions/defaults/createPaintAction.js.map +1 -1
  516. package/dist/interactions/actions/defaults/delete.js.map +1 -1
  517. package/dist/interactions/actions/defaults/duplicate.js +19 -19
  518. package/dist/interactions/actions/defaults/duplicate.js.map +1 -1
  519. package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -1
  520. package/dist/interactions/actions/defaults/group.js +35 -40
  521. package/dist/interactions/actions/defaults/group.js.map +1 -1
  522. package/dist/interactions/actions/defaults/icons/booleanIcons.js +24 -1
  523. package/dist/interactions/actions/defaults/icons/booleanIcons.js.map +1 -1
  524. package/dist/interactions/actions/defaults/icons/outlineIcons.js +39 -1
  525. package/dist/interactions/actions/defaults/icons/outlineIcons.js.map +1 -1
  526. package/dist/interactions/actions/defaults/ingest.js +19 -15
  527. package/dist/interactions/actions/defaults/ingest.js.map +1 -1
  528. package/dist/interactions/actions/defaults/insertPathAnchor.js +14 -15
  529. package/dist/interactions/actions/defaults/insertPathAnchor.js.map +1 -1
  530. package/dist/interactions/actions/defaults/nudge.js +30 -31
  531. package/dist/interactions/actions/defaults/nudge.js.map +1 -1
  532. package/dist/interactions/actions/defaults/pinchZoom.js.map +1 -1
  533. package/dist/interactions/actions/defaults/requiresSelection.js.map +1 -1
  534. package/dist/interactions/actions/defaults/setFill.js +9 -3
  535. package/dist/interactions/actions/defaults/setFill.js.map +1 -1
  536. package/dist/interactions/actions/defaults/setFillOpacity.js +4 -1
  537. package/dist/interactions/actions/defaults/setFillOpacity.js.map +1 -1
  538. package/dist/interactions/actions/defaults/setStroke.js.map +1 -1
  539. package/dist/interactions/actions/defaults/sliceOps.js +20 -22
  540. package/dist/interactions/actions/defaults/sliceOps.js.map +1 -1
  541. package/dist/interactions/actions/defaults/toolActivate.js.map +1 -1
  542. package/dist/interactions/actions/defaults/toolResetToDefault.js.map +1 -1
  543. package/dist/interactions/actions/defaults/viewportDragPan.js +1 -1
  544. package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -1
  545. package/dist/interactions/actions/defaults/viewportWheelPan.js.map +1 -1
  546. package/dist/interactions/actions/defaults/viewportZoom.js.map +1 -1
  547. package/dist/interactions/actions/{defaults/distribute.js → distribute/action.js} +18 -19
  548. package/dist/interactions/actions/distribute/action.js.map +1 -0
  549. package/dist/interactions/actions/distribute/distribute.js +11 -11
  550. package/dist/interactions/actions/distribute/distribute.js.map +1 -1
  551. package/dist/interactions/actions/{defaults/editAnchors.js → edit-anchors/action.js} +19 -21
  552. package/dist/interactions/actions/edit-anchors/action.js.map +1 -0
  553. package/dist/interactions/actions/edit-anchors/geometry.js +2 -4
  554. package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -1
  555. package/dist/interactions/actions/flip/action.js +124 -0
  556. package/dist/interactions/actions/flip/action.js.map +1 -0
  557. package/dist/interactions/actions/flip/helpers.js +1 -1
  558. package/dist/interactions/actions/flip/helpers.js.map +1 -1
  559. package/dist/interactions/actions/gestureFrames.js +18 -0
  560. package/dist/interactions/actions/gestureFrames.js.map +1 -0
  561. package/dist/interactions/actions/gestureLifecycle.js +47 -20
  562. package/dist/interactions/actions/gestureLifecycle.js.map +1 -1
  563. package/dist/interactions/actions/insert/action.js +72 -0
  564. package/dist/interactions/actions/insert/action.js.map +1 -0
  565. package/dist/interactions/actions/insert/commit.js +28 -0
  566. package/dist/interactions/actions/insert/commit.js.map +1 -0
  567. package/dist/interactions/actions/insert/extras.js +65 -0
  568. package/dist/interactions/actions/insert/extras.js.map +1 -0
  569. package/dist/interactions/actions/insert/frame.js +48 -0
  570. package/dist/interactions/actions/insert/frame.js.map +1 -0
  571. package/dist/interactions/actions/insert/geometry.js +35 -0
  572. package/dist/interactions/actions/insert/geometry.js.map +1 -0
  573. package/dist/interactions/actions/insert/rotateAction.js +21 -0
  574. package/dist/interactions/actions/insert/rotateAction.js.map +1 -0
  575. package/dist/interactions/actions/insert/session.js +59 -0
  576. package/dist/interactions/actions/insert/session.js.map +1 -0
  577. package/dist/interactions/actions/insert/shape.js +34 -0
  578. package/dist/interactions/actions/insert/shape.js.map +1 -0
  579. package/dist/interactions/actions/lasso-select/action.js +143 -0
  580. package/dist/interactions/actions/lasso-select/action.js.map +1 -0
  581. package/dist/interactions/actions/move/action.js +87 -0
  582. package/dist/interactions/actions/move/action.js.map +1 -0
  583. package/dist/interactions/actions/move/behaviors/layoutDrop.js +51 -0
  584. package/dist/interactions/actions/move/behaviors/layoutDrop.js.map +1 -0
  585. package/dist/interactions/actions/move/behaviors/reparentOnDrop.js +15 -0
  586. package/dist/interactions/actions/move/behaviors/reparentOnDrop.js.map +1 -0
  587. package/dist/interactions/actions/move/behaviors/snapToContainer.js +24 -23
  588. package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -1
  589. package/dist/interactions/actions/move/capture.js +99 -0
  590. package/dist/interactions/actions/move/capture.js.map +1 -0
  591. package/dist/interactions/actions/move/commit/index.js +41 -0
  592. package/dist/interactions/actions/move/commit/index.js.map +1 -0
  593. package/dist/interactions/actions/move/commit/layoutDrop.js +44 -0
  594. package/dist/interactions/actions/move/commit/layoutDrop.js.map +1 -0
  595. package/dist/interactions/actions/move/commit/layoutRelease.js +100 -0
  596. package/dist/interactions/actions/move/commit/layoutRelease.js.map +1 -0
  597. package/dist/interactions/actions/move/commit/rebase.js +18 -0
  598. package/dist/interactions/actions/move/commit/rebase.js.map +1 -0
  599. package/dist/interactions/actions/move/commit/reparent.js +65 -0
  600. package/dist/interactions/actions/move/commit/reparent.js.map +1 -0
  601. package/dist/interactions/actions/move/delta.js +51 -0
  602. package/dist/interactions/actions/move/delta.js.map +1 -0
  603. package/dist/interactions/actions/move/frame.js +59 -0
  604. package/dist/interactions/actions/move/frame.js.map +1 -0
  605. package/dist/interactions/actions/move/gestureAdapter.js +15 -40
  606. package/dist/interactions/actions/move/gestureAdapter.js.map +1 -1
  607. package/dist/interactions/actions/move/landedDescendants.js +8 -8
  608. package/dist/interactions/actions/move/layout/container.js +94 -0
  609. package/dist/interactions/actions/move/layout/container.js.map +1 -0
  610. package/dist/interactions/actions/move/layout/dragged.js +58 -0
  611. package/dist/interactions/actions/move/layout/dragged.js.map +1 -0
  612. package/dist/interactions/actions/move/layout/dropPass.js +122 -0
  613. package/dist/interactions/actions/move/layout/dropPass.js.map +1 -0
  614. package/dist/interactions/actions/move/layout/exits.js +38 -0
  615. package/dist/interactions/actions/move/layout/exits.js.map +1 -0
  616. package/dist/interactions/actions/move/layout/glide.js +48 -0
  617. package/dist/interactions/actions/move/layout/glide.js.map +1 -0
  618. package/dist/interactions/actions/move/session.js +63 -0
  619. package/dist/interactions/actions/move/session.js.map +1 -0
  620. package/dist/interactions/actions/move/translate.js +61 -0
  621. package/dist/interactions/actions/move/translate.js.map +1 -0
  622. package/dist/interactions/actions/outlines/createOutlines.js +17 -64
  623. package/dist/interactions/actions/outlines/createOutlines.js.map +1 -1
  624. package/dist/interactions/actions/outlines/createOutlinesAction.js +51 -0
  625. package/dist/interactions/actions/outlines/createOutlinesAction.js.map +1 -0
  626. package/dist/interactions/actions/outlines/outlineStroke.js +72 -0
  627. package/dist/interactions/actions/outlines/outlineStroke.js.map +1 -0
  628. package/dist/interactions/actions/outlines/outlineStrokeAction.js +37 -0
  629. package/dist/interactions/actions/outlines/outlineStrokeAction.js.map +1 -0
  630. package/dist/interactions/actions/outlines/replaceWithPaths.js +54 -0
  631. package/dist/interactions/actions/outlines/replaceWithPaths.js.map +1 -0
  632. package/dist/interactions/actions/outlines/strokeRegion.js +27 -0
  633. package/dist/interactions/actions/outlines/strokeRegion.js.map +1 -0
  634. package/dist/interactions/actions/planeInput.js.map +1 -1
  635. package/dist/interactions/actions/pointerState.js +12 -0
  636. package/dist/interactions/actions/pointerState.js.map +1 -0
  637. package/dist/interactions/actions/poseDescriptorDep.js +1 -1
  638. package/dist/interactions/actions/poseDescriptorDep.js.map +1 -1
  639. package/dist/interactions/actions/poseFrame.js +26 -26
  640. package/dist/interactions/actions/poseFrame.js.map +1 -1
  641. package/dist/interactions/actions/resize/action.js +55 -0
  642. package/dist/interactions/actions/resize/action.js.map +1 -0
  643. package/dist/interactions/actions/resize/behaviors/lockAspect.js.map +1 -1
  644. package/dist/interactions/actions/resize/boxFrame.js +16 -0
  645. package/dist/interactions/actions/resize/boxFrame.js.map +1 -0
  646. package/dist/interactions/actions/resize/capture.js +85 -0
  647. package/dist/interactions/actions/resize/capture.js.map +1 -0
  648. package/dist/interactions/actions/resize/commit.js +69 -0
  649. package/dist/interactions/actions/resize/commit.js.map +1 -0
  650. package/dist/interactions/actions/resize/frame.js +74 -0
  651. package/dist/interactions/actions/resize/frame.js.map +1 -0
  652. package/dist/interactions/actions/resize/pointSnap.js +111 -0
  653. package/dist/interactions/actions/resize/pointSnap.js.map +1 -0
  654. package/dist/interactions/actions/resize/ruleBounds.js +9 -0
  655. package/dist/interactions/actions/resize/ruleBounds.js.map +1 -0
  656. package/dist/interactions/actions/resize/session.js +49 -0
  657. package/dist/interactions/actions/resize/session.js.map +1 -0
  658. package/dist/interactions/actions/resolveOverlays.js.map +1 -1
  659. package/dist/interactions/actions/resolvePreviews.js.map +1 -1
  660. package/dist/interactions/actions/rotate/action.js +56 -0
  661. package/dist/interactions/actions/rotate/action.js.map +1 -0
  662. package/dist/interactions/actions/rotate/behaviors/index.js +7 -0
  663. package/dist/interactions/actions/rotate/behaviors/index.js.map +1 -0
  664. package/dist/interactions/actions/rotate/behaviors/snapRotation.js +12 -0
  665. package/dist/interactions/actions/rotate/behaviors/snapRotation.js.map +1 -0
  666. package/dist/interactions/actions/rotate/commit.js +40 -0
  667. package/dist/interactions/actions/rotate/commit.js.map +1 -0
  668. package/dist/interactions/actions/rotate/frame.js +65 -0
  669. package/dist/interactions/actions/rotate/frame.js.map +1 -0
  670. package/dist/interactions/actions/rotate/handle.js +12 -12
  671. package/dist/interactions/actions/rotate/handle.js.map +1 -1
  672. package/dist/interactions/actions/rotate/session.js +92 -0
  673. package/dist/interactions/actions/rotate/session.js.map +1 -0
  674. package/dist/interactions/actions/spatialReference.js.map +1 -1
  675. package/dist/interactions/actions/useStandardActions.js +77 -72
  676. package/dist/interactions/actions/useStandardActions.js.map +1 -1
  677. package/dist/interactions/gestures/pointerDrag/pointerDrag.js +61 -42
  678. package/dist/interactions/gestures/pointerDrag/pointerDrag.js.map +1 -1
  679. package/dist/interactions/gestures/shared/originProjection.js +1 -1
  680. package/dist/interactions/gestures/shared/originProjection.js.map +1 -1
  681. package/dist/interactions/gestures/shared/screenTolerance.js +8 -2
  682. package/dist/interactions/gestures/shared/screenTolerance.js.map +1 -1
  683. package/dist/interactions/gestures/shared/snap.js.map +1 -1
  684. package/dist/layout/arrivals.js +20 -23
  685. package/dist/layout/arrivals.js.map +1 -1
  686. package/dist/math-CYUjoyyU.d.ts +33 -0
  687. package/dist/math.d.ts +5 -2
  688. package/dist/math.js +6 -6
  689. package/dist/mesh.d.ts +4 -268
  690. package/dist/mesh.js +3 -7
  691. package/dist/move.d.ts +6 -4
  692. package/dist/{originProjection-gHnOup4e.d.ts → originProjection-PPT88jZv.d.ts} +1 -1
  693. package/dist/patterns-builtin.d.ts +1 -118
  694. package/dist/patterns-builtin.js +2 -3
  695. package/dist/poseDescriptor-Bqk-11Rl.d.ts +73 -0
  696. package/dist/renderer.d.ts +1 -92
  697. package/dist/renderer.js +2 -19
  698. package/dist/resize.d.ts +11 -22
  699. package/dist/resize.js +1 -1
  700. package/dist/style.css +1 -1
  701. package/dist/test-hook/install.js.map +1 -1
  702. package/dist/test-hook/useTestHook.js +22 -0
  703. package/dist/test-hook/useTestHook.js.map +1 -0
  704. package/dist/test-seams-D0pyV3pR.d.ts +149 -0
  705. package/dist/test-seams.d.ts +4 -4
  706. package/dist/test-seams.js +2 -2
  707. package/dist/tools/builtin/bone/boneActions.js +130 -0
  708. package/dist/tools/builtin/bone/boneActions.js.map +1 -0
  709. package/dist/tools/builtin/bone/boneOverlay.js +58 -0
  710. package/dist/tools/builtin/bone/boneOverlay.js.map +1 -0
  711. package/dist/tools/builtin/bone/placedRig.js +24 -0
  712. package/dist/tools/builtin/bone/placedRig.js.map +1 -0
  713. package/dist/tools/builtin/bone/rigEditState.js +21 -0
  714. package/dist/tools/builtin/bone/rigEditState.js.map +1 -0
  715. package/dist/tools/builtin/bone/useBoneTool.js +98 -0
  716. package/dist/tools/builtin/bone/useBoneTool.js.map +1 -0
  717. package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -1
  718. package/dist/tools/builtin/eyedropper/useEyedropperTool.js.map +1 -1
  719. package/dist/tools/builtin/hand/useHandTool.js.map +1 -1
  720. package/dist/tools/builtin/image/useImageTool.js.map +1 -1
  721. package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -1
  722. package/dist/tools/builtin/line/useLineTool.js.map +1 -1
  723. package/dist/tools/builtin/pen/usePenTool.js +161 -163
  724. package/dist/tools/builtin/pen/usePenTool.js.map +1 -1
  725. package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -1
  726. package/dist/tools/builtin/pickTopMostHit.js.map +1 -1
  727. package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -1
  728. package/dist/tools/builtin/rect/useRectTool.js.map +1 -1
  729. package/dist/tools/builtin/select/adapterPointQuery.js +36 -0
  730. package/dist/tools/builtin/select/adapterPointQuery.js.map +1 -0
  731. package/dist/tools/builtin/select/selectionContributions.js +4 -4
  732. package/dist/tools/builtin/select/selectionContributions.js.map +1 -1
  733. package/dist/tools/builtin/select/useSelectTool.js +43 -71
  734. package/dist/tools/builtin/select/useSelectTool.js.map +1 -1
  735. package/dist/tools/builtin/shared/pointerFollower.js.map +1 -1
  736. package/dist/tools/builtin/slice/useSliceTool.js +67 -72
  737. package/dist/tools/builtin/slice/useSliceTool.js.map +1 -1
  738. package/dist/tools/builtin/star/useStarTool.js.map +1 -1
  739. package/dist/tools/builtin/text/useTextTool.js +8 -0
  740. package/dist/tools/builtin/text/useTextTool.js.map +1 -1
  741. package/dist/tools/builtin/weight/useWeightTool.js +77 -0
  742. package/dist/tools/builtin/weight/useWeightTool.js.map +1 -0
  743. package/dist/tools/builtin/weight/weightActions.js +112 -0
  744. package/dist/tools/builtin/weight/weightActions.js.map +1 -0
  745. package/dist/tools/builtin/weight/weightOverlay.js +61 -0
  746. package/dist/tools/builtin/weight/weightOverlay.js.map +1 -0
  747. package/dist/tools/overlayBinding.js.map +1 -1
  748. package/dist/tools/useKeybindings.js +20 -14
  749. package/dist/tools/useKeybindings.js.map +1 -1
  750. package/dist/{types-k-5Oqh-U.d.ts → types-CIKDwlsP.d.ts} +84 -164
  751. package/dist/util/paint.js +1 -1
  752. package/dist/util/paint.js.map +1 -1
  753. package/dist/version.js +1 -1
  754. package/package.json +26 -21
  755. package/dist/animation/colorHelpers.js +0 -135
  756. package/dist/animation/colorHelpers.js.map +0 -1
  757. package/dist/animation/colorRegistry.js +0 -37
  758. package/dist/animation/colorRegistry.js.map +0 -1
  759. package/dist/animation/engine/axes.js +0 -36
  760. package/dist/animation/engine/axes.js.map +0 -1
  761. package/dist/animation/engine/codec.js +0 -170
  762. package/dist/animation/engine/codec.js.map +0 -1
  763. package/dist/animation/engine/integrator.js +0 -12
  764. package/dist/animation/engine/integrator.js.map +0 -1
  765. package/dist/animation/loop.js +0 -60
  766. package/dist/animation/loop.js.map +0 -1
  767. package/dist/animation/observe.js +0 -23
  768. package/dist/animation/observe.js.map +0 -1
  769. package/dist/animation/rig/blendPoses.js +0 -43
  770. package/dist/animation/rig/blendPoses.js.map +0 -1
  771. package/dist/animation/rig/mirrorPose.js +0 -19
  772. package/dist/animation/rig/mirrorPose.js.map +0 -1
  773. package/dist/animation/rig/resolveSkeleton.js +0 -33
  774. package/dist/animation/rig/resolveSkeleton.js.map +0 -1
  775. package/dist/animation/rig/solveIk.js +0 -103
  776. package/dist/animation/rig/solveIk.js.map +0 -1
  777. package/dist/animation/rig/types.js +0 -12
  778. package/dist/animation/rig/types.js.map +0 -1
  779. package/dist/animation/slew.js +0 -27
  780. package/dist/animation/slew.js.map +0 -1
  781. package/dist/animation/stagger.js +0 -146
  782. package/dist/animation/stagger.js.map +0 -1
  783. package/dist/animation/timeline/booking.js +0 -114
  784. package/dist/animation/timeline/booking.js.map +0 -1
  785. package/dist/animation/timeline/createTimeline.js +0 -125
  786. package/dist/animation/timeline/createTimeline.js.map +0 -1
  787. package/dist/animation/timeline/sampleTrack.js +0 -79
  788. package/dist/animation/timeline/sampleTrack.js.map +0 -1
  789. package/dist/animation/useAnimator.js +0 -388
  790. package/dist/animation/useAnimator.js.map +0 -1
  791. package/dist/autoPoseDescriptor-Ct7yqivU.d.ts +0 -108
  792. package/dist/builtins-DPcdghtB.d.ts +0 -1223
  793. package/dist/canvas/MinimapCanvas.js +0 -140
  794. package/dist/canvas/MinimapCanvas.js.map +0 -1
  795. package/dist/canvas/deps/poseComposition.js +0 -11
  796. package/dist/canvas/deps/poseComposition.js.map +0 -1
  797. package/dist/canvas/minimapMath.js +0 -82
  798. package/dist/canvas/minimapMath.js.map +0 -1
  799. package/dist/canvas/toolPreview.js +0 -39
  800. package/dist/canvas/toolPreview.js.map +0 -1
  801. package/dist/core/adapters/arrayAdapter.js +0 -94
  802. package/dist/core/adapters/arrayAdapter.js.map +0 -1
  803. package/dist/core/adapters/useArrayAdapter.js +0 -13
  804. package/dist/core/adapters/useArrayAdapter.js.map +0 -1
  805. package/dist/core/fillInPoseFrame.js +0 -102
  806. package/dist/core/fillInPoseFrame.js.map +0 -1
  807. package/dist/core/geometry/poseFrame.js +0 -44
  808. package/dist/core/geometry/poseFrame.js.map +0 -1
  809. package/dist/core/geometry/poseRotation.js +0 -58
  810. package/dist/core/geometry/poseRotation.js.map +0 -1
  811. package/dist/core/gradient.js +0 -136
  812. package/dist/core/gradient.js.map +0 -1
  813. package/dist/core/markerInset.js +0 -24
  814. package/dist/core/markerInset.js.map +0 -1
  815. package/dist/core/mixed.js +0 -6
  816. package/dist/core/mixed.js.map +0 -1
  817. package/dist/core/paintKinds.js +0 -156
  818. package/dist/core/paintKinds.js.map +0 -1
  819. package/dist/core/scene/pickability.js +0 -6
  820. package/dist/core/scene/pickability.js.map +0 -1
  821. package/dist/core/strokeMarkerShapes.js +0 -139
  822. package/dist/core/strokeMarkerShapes.js.map +0 -1
  823. package/dist/core/strokeMarkers.js +0 -28
  824. package/dist/core/strokeMarkers.js.map +0 -1
  825. package/dist/core/viewport/meanScale.js +0 -8
  826. package/dist/core/viewport/meanScale.js.map +0 -1
  827. package/dist/core/viewport/pxExtent.js +0 -42
  828. package/dist/core/viewport/pxExtent.js.map +0 -1
  829. package/dist/features/cursor/paintedCursorLayer.js.map +0 -1
  830. package/dist/features/focus/gateLayer.js.map +0 -1
  831. package/dist/features/focus/useCanvasFocus.js +0 -29
  832. package/dist/features/focus/useCanvasFocus.js.map +0 -1
  833. package/dist/features/groups/children.js.map +0 -1
  834. package/dist/features/groups/composePose.js.map +0 -1
  835. package/dist/features/groups/nestedHit.js.map +0 -1
  836. package/dist/features/groups/unionOfChildren.js.map +0 -1
  837. package/dist/features/images/imageCache.js +0 -104
  838. package/dist/features/images/imageCache.js.map +0 -1
  839. package/dist/features/ingestion/index.js +0 -8
  840. package/dist/features/meshPaint/bake.js +0 -79
  841. package/dist/features/meshPaint/bake.js.map +0 -1
  842. package/dist/features/meshPaint/bakeCache.js +0 -59
  843. package/dist/features/meshPaint/bakeCache.js.map +0 -1
  844. package/dist/features/meshPaint/handles.js +0 -86
  845. package/dist/features/meshPaint/handles.js.map +0 -1
  846. package/dist/features/meshPaint/lazyKind.js.map +0 -1
  847. package/dist/features/meshPaint/meshPaint.js +0 -239
  848. package/dist/features/meshPaint/meshPaint.js.map +0 -1
  849. package/dist/features/meshPaint/meshShader.js +0 -6
  850. package/dist/features/meshPaint/meshShader.js.map +0 -1
  851. package/dist/features/meshPaint/register.js +0 -7
  852. package/dist/features/meshPaint/register.js.map +0 -1
  853. package/dist/features/meshPaint/surface.js +0 -110
  854. package/dist/features/meshPaint/surface.js.map +0 -1
  855. package/dist/features/minimap/actions.js +0 -53
  856. package/dist/features/minimap/actions.js.map +0 -1
  857. package/dist/features/minimap/createMinimapContribution.js +0 -96
  858. package/dist/features/minimap/createMinimapContribution.js.map +0 -1
  859. package/dist/features/minimap/layers.js +0 -85
  860. package/dist/features/minimap/layers.js.map +0 -1
  861. package/dist/features/overlays/useNodeOverlayFrame.js +0 -103
  862. package/dist/features/overlays/useNodeOverlayFrame.js.map +0 -1
  863. package/dist/features/parallax/createParallaxLayer.js +0 -26
  864. package/dist/features/parallax/createParallaxLayer.js.map +0 -1
  865. package/dist/features/parallax/createParallaxPlane.js +0 -22
  866. package/dist/features/parallax/createParallaxPlane.js.map +0 -1
  867. package/dist/features/paths/anchorEdits.js +0 -167
  868. package/dist/features/paths/anchorEdits.js.map +0 -1
  869. package/dist/features/paths/anchors.js +0 -159
  870. package/dist/features/paths/anchors.js.map +0 -1
  871. package/dist/features/paths/booleans.js +0 -2
  872. package/dist/features/paths/markerCommands.js +0 -149
  873. package/dist/features/paths/markerCommands.js.map +0 -1
  874. package/dist/features/paths/markerSites.js +0 -59
  875. package/dist/features/paths/markerSites.js.map +0 -1
  876. package/dist/features/paths/markers.js +0 -95
  877. package/dist/features/paths/markers.js.map +0 -1
  878. package/dist/features/paths/nearestAnchor.js +0 -36
  879. package/dist/features/paths/nearestAnchor.js.map +0 -1
  880. package/dist/features/paths/pathInWorld.js +0 -41
  881. package/dist/features/paths/pathInWorld.js.map +0 -1
  882. package/dist/features/paths/poseDescriptor.js +0 -39
  883. package/dist/features/paths/poseDescriptor.js.map +0 -1
  884. package/dist/features/paths/strokeToPath.js +0 -40
  885. package/dist/features/paths/strokeToPath.js.map +0 -1
  886. package/dist/features/paths/tessellate/dash.js +0 -52
  887. package/dist/features/paths/tessellate/dash.js.map +0 -1
  888. package/dist/features/paths/tessellate/insets.js +0 -32
  889. package/dist/features/paths/tessellate/insets.js.map +0 -1
  890. package/dist/features/paths/tessellate/metric.js +0 -72
  891. package/dist/features/paths/tessellate/metric.js.map +0 -1
  892. package/dist/features/paths/tessellate/stroke.js +0 -170
  893. package/dist/features/paths/tessellate/stroke.js.map +0 -1
  894. package/dist/features/paths/tessellate/vertexWidths.js +0 -32
  895. package/dist/features/paths/tessellate/vertexWidths.js.map +0 -1
  896. package/dist/features/patterns/commandPaint.js +0 -18
  897. package/dist/features/patterns/commandPaint.js.map +0 -1
  898. package/dist/features/patterns/index.js +0 -11
  899. package/dist/features/patterns/index.js.map +0 -1
  900. package/dist/features/patterns/patterns-builtin.js +0 -38
  901. package/dist/features/patterns/patterns-builtin.js.map +0 -1
  902. package/dist/features/patterns/rasterizeTile.js +0 -17
  903. package/dist/features/patterns/rasterizeTile.js.map +0 -1
  904. package/dist/features/patterns/resolveSpec.js +0 -65
  905. package/dist/features/patterns/resolveSpec.js.map +0 -1
  906. package/dist/features/patterns/tileGeometry.js +0 -158
  907. package/dist/features/patterns/tileGeometry.js.map +0 -1
  908. package/dist/features/pointer/PointerContext.js +0 -45
  909. package/dist/features/pointer/PointerContext.js.map +0 -1
  910. package/dist/features/selection/SelectionContext.js +0 -51
  911. package/dist/features/selection/SelectionContext.js.map +0 -1
  912. package/dist/features/simulation/createSimulation.js +0 -61
  913. package/dist/features/simulation/createSimulation.js.map +0 -1
  914. package/dist/features/simulation/types.js +0 -6
  915. package/dist/features/simulation/types.js.map +0 -1
  916. package/dist/features/simulation/useSimulation.js +0 -74
  917. package/dist/features/simulation/useSimulation.js.map +0 -1
  918. package/dist/features/text/domOffsets.js +0 -82
  919. package/dist/features/text/domOffsets.js.map +0 -1
  920. package/dist/features/text/domRuns.js +0 -230
  921. package/dist/features/text/domRuns.js.map +0 -1
  922. package/dist/features/text/fitTextPose.js +0 -38
  923. package/dist/features/text/fitTextPose.js.map +0 -1
  924. package/dist/features/text/hitTest.js +0 -48
  925. package/dist/features/text/hitTest.js.map +0 -1
  926. package/dist/features/text/isTextData.js +0 -8
  927. package/dist/features/text/isTextData.js.map +0 -1
  928. package/dist/features/text/overlayDirection.js +0 -15
  929. package/dist/features/text/overlayDirection.js.map +0 -1
  930. package/dist/features/text/renderLabel.js +0 -14
  931. package/dist/features/text/renderLabel.js.map +0 -1
  932. package/dist/features/text/runs/effectiveRangeStyle.js +0 -66
  933. package/dist/features/text/runs/effectiveRangeStyle.js.map +0 -1
  934. package/dist/features/text/runs/flagRange.js +0 -53
  935. package/dist/features/text/runs/flagRange.js.map +0 -1
  936. package/dist/features/text/runs/rangeStyle.js +0 -133
  937. package/dist/features/text/runs/rangeStyle.js.map +0 -1
  938. package/dist/features/text/textCommand.js +0 -60
  939. package/dist/features/text/textCommand.js.map +0 -1
  940. package/dist/features/text/textToPath.js +0 -181
  941. package/dist/features/text/textToPath.js.map +0 -1
  942. package/dist/features/text/useTextEdit.js +0 -491
  943. package/dist/features/text/useTextEdit.js.map +0 -1
  944. package/dist/features/tiling/createTiledLayer.js +0 -65
  945. package/dist/features/tiling/createTiledLayer.js.map +0 -1
  946. package/dist/features/tiling/tiledProject.js +0 -14
  947. package/dist/features/tiling/tiledProject.js.map +0 -1
  948. package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js +0 -26
  949. package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js.map +0 -1
  950. package/dist/interactions/actions/defaults/align.js.map +0 -1
  951. package/dist/interactions/actions/defaults/booleans.js +0 -52
  952. package/dist/interactions/actions/defaults/booleans.js.map +0 -1
  953. package/dist/interactions/actions/defaults/clipboard.js.map +0 -1
  954. package/dist/interactions/actions/defaults/clone.js +0 -91
  955. package/dist/interactions/actions/defaults/clone.js.map +0 -1
  956. package/dist/interactions/actions/defaults/createOutlines.js +0 -47
  957. package/dist/interactions/actions/defaults/createOutlines.js.map +0 -1
  958. package/dist/interactions/actions/defaults/distribute.js.map +0 -1
  959. package/dist/interactions/actions/defaults/editAnchors.js.map +0 -1
  960. package/dist/interactions/actions/defaults/flip.js +0 -125
  961. package/dist/interactions/actions/defaults/flip.js.map +0 -1
  962. package/dist/interactions/actions/defaults/insert.js +0 -287
  963. package/dist/interactions/actions/defaults/insert.js.map +0 -1
  964. package/dist/interactions/actions/defaults/lassoSelect.js +0 -153
  965. package/dist/interactions/actions/defaults/lassoSelect.js.map +0 -1
  966. package/dist/interactions/actions/defaults/move.js +0 -778
  967. package/dist/interactions/actions/defaults/move.js.map +0 -1
  968. package/dist/interactions/actions/defaults/resize.js +0 -341
  969. package/dist/interactions/actions/defaults/resize.js.map +0 -1
  970. package/dist/interactions/actions/defaults/rotate.js +0 -185
  971. package/dist/interactions/actions/defaults/rotate.js.map +0 -1
  972. package/dist/interactions/actions/previewOverrides.js +0 -25
  973. package/dist/interactions/actions/previewOverrides.js.map +0 -1
  974. package/dist/interactions/actions/resize/autoPoseDescriptor.js.map +0 -1
  975. package/dist/math-J-ACHyEg.d.ts +0 -159
  976. package/dist/registerProgram-T9S_PfAX.d.ts +0 -208
  977. package/dist/renderer/DrawCommand.js +0 -6
  978. package/dist/renderer/DrawCommand.js.map +0 -1
  979. package/dist/renderer/WeaselRenderer.js +0 -333
  980. package/dist/renderer/WeaselRenderer.js.map +0 -1
  981. package/dist/renderer/batchClip.js +0 -46
  982. package/dist/renderer/batchClip.js.map +0 -1
  983. package/dist/renderer/cache/GLImageCache.js +0 -74
  984. package/dist/renderer/cache/GLImageCache.js.map +0 -1
  985. package/dist/renderer/cache/GLMeshCache.js +0 -102
  986. package/dist/renderer/cache/GLMeshCache.js.map +0 -1
  987. package/dist/renderer/cache/GLTextureCache.js +0 -68
  988. package/dist/renderer/cache/GLTextureCache.js.map +0 -1
  989. package/dist/renderer/cache/GradientRampAtlas.js +0 -82
  990. package/dist/renderer/cache/GradientRampAtlas.js.map +0 -1
  991. package/dist/renderer/cache/cache.js +0 -13
  992. package/dist/renderer/cache/cache.js.map +0 -1
  993. package/dist/renderer/cache/markerCommandCache.js +0 -63
  994. package/dist/renderer/cache/markerCommandCache.js.map +0 -1
  995. package/dist/renderer/cache/outlineMeshCache.js +0 -15
  996. package/dist/renderer/cache/outlineMeshCache.js.map +0 -1
  997. package/dist/renderer/cache/outlineStrokeMeshCache.js +0 -36
  998. package/dist/renderer/cache/outlineStrokeMeshCache.js.map +0 -1
  999. package/dist/renderer/cache/strokeMeshCache.js +0 -55
  1000. package/dist/renderer/cache/strokeMeshCache.js.map +0 -1
  1001. package/dist/renderer/cullDrawCommands.js +0 -90
  1002. package/dist/renderer/cullDrawCommands.js.map +0 -1
  1003. package/dist/renderer/draw/batch.js +0 -133
  1004. package/dist/renderer/draw/batch.js.map +0 -1
  1005. package/dist/renderer/draw/clip.js +0 -89
  1006. package/dist/renderer/draw/clip.js.map +0 -1
  1007. package/dist/renderer/draw/customShader.js +0 -230
  1008. package/dist/renderer/draw/customShader.js.map +0 -1
  1009. package/dist/renderer/draw/drawTriangles.js +0 -8
  1010. package/dist/renderer/draw/drawTriangles.js.map +0 -1
  1011. package/dist/renderer/draw/effects.js +0 -28
  1012. package/dist/renderer/draw/effects.js.map +0 -1
  1013. package/dist/renderer/draw/flushBatch.js +0 -35
  1014. package/dist/renderer/draw/flushBatch.js.map +0 -1
  1015. package/dist/renderer/draw/gradient.js +0 -90
  1016. package/dist/renderer/draw/gradient.js.map +0 -1
  1017. package/dist/renderer/draw/image.js +0 -38
  1018. package/dist/renderer/draw/image.js.map +0 -1
  1019. package/dist/renderer/draw/mesh.js +0 -16
  1020. package/dist/renderer/draw/mesh.js.map +0 -1
  1021. package/dist/renderer/draw/paintBind.js +0 -70
  1022. package/dist/renderer/draw/paintBind.js.map +0 -1
  1023. package/dist/renderer/draw/pathPaint.js +0 -142
  1024. package/dist/renderer/draw/pathPaint.js.map +0 -1
  1025. package/dist/renderer/draw/scratchPass.js +0 -83
  1026. package/dist/renderer/draw/scratchPass.js.map +0 -1
  1027. package/dist/renderer/draw/stencil.js +0 -28
  1028. package/dist/renderer/draw/stencil.js.map +0 -1
  1029. package/dist/renderer/draw/text.js +0 -167
  1030. package/dist/renderer/draw/text.js.map +0 -1
  1031. package/dist/renderer/draw/uniforms.js +0 -77
  1032. package/dist/renderer/draw/uniforms.js.map +0 -1
  1033. package/dist/renderer/draw.js +0 -79
  1034. package/dist/renderer/draw.js.map +0 -1
  1035. package/dist/renderer/drawBatch.js +0 -198
  1036. package/dist/renderer/drawBatch.js.map +0 -1
  1037. package/dist/renderer/effects/EffectTargets.js +0 -48
  1038. package/dist/renderer/effects/EffectTargets.js.map +0 -1
  1039. package/dist/renderer/effects/builtins.js +0 -31
  1040. package/dist/renderer/effects/builtins.js.map +0 -1
  1041. package/dist/renderer/effects/composite.js +0 -11
  1042. package/dist/renderer/effects/composite.js.map +0 -1
  1043. package/dist/renderer/effects/effectPrelude.js +0 -10
  1044. package/dist/renderer/effects/effectPrelude.js.map +0 -1
  1045. package/dist/renderer/effects/types.js +0 -10
  1046. package/dist/renderer/effects/types.js.map +0 -1
  1047. package/dist/renderer/glyphOutlineMesh.js +0 -67
  1048. package/dist/renderer/glyphOutlineMesh.js.map +0 -1
  1049. package/dist/renderer/index.js +0 -20
  1050. package/dist/renderer/math/color.js +0 -321
  1051. package/dist/renderer/math/color.js.map +0 -1
  1052. package/dist/renderer/math/mat3.js +0 -80
  1053. package/dist/renderer/math/mat3.js.map +0 -1
  1054. package/dist/renderer/math/patternSpace.js +0 -22
  1055. package/dist/renderer/math/patternSpace.js.map +0 -1
  1056. package/dist/renderer/math/viewToMat3.js +0 -19
  1057. package/dist/renderer/math/viewToMat3.js.map +0 -1
  1058. package/dist/renderer/paintResources.js +0 -18
  1059. package/dist/renderer/paintResources.js.map +0 -1
  1060. package/dist/renderer/paintScratch.js +0 -37
  1061. package/dist/renderer/paintScratch.js.map +0 -1
  1062. package/dist/renderer/shaders/ShaderProgram.js +0 -74
  1063. package/dist/renderer/shaders/ShaderProgram.js.map +0 -1
  1064. package/dist/renderer/shaders/batchFill.js +0 -119
  1065. package/dist/renderer/shaders/batchFill.js.map +0 -1
  1066. package/dist/renderer/shaders/customPrelude.js +0 -34
  1067. package/dist/renderer/shaders/customPrelude.js.map +0 -1
  1068. package/dist/renderer/shaders/extractUniformNames.js +0 -184
  1069. package/dist/renderer/shaders/extractUniformNames.js.map +0 -1
  1070. package/dist/renderer/shaders/glyphPaint.js +0 -61
  1071. package/dist/renderer/shaders/glyphPaint.js.map +0 -1
  1072. package/dist/renderer/shaders/gradFill.js +0 -31
  1073. package/dist/renderer/shaders/gradFill.js.map +0 -1
  1074. package/dist/renderer/shaders/pathFill.js +0 -14
  1075. package/dist/renderer/shaders/pathFill.js.map +0 -1
  1076. package/dist/renderer/shaders/patternFill.js +0 -25
  1077. package/dist/renderer/shaders/patternFill.js.map +0 -1
  1078. package/dist/renderer/shaders/registerProgram.js +0 -18
  1079. package/dist/renderer/shaders/registerProgram.js.map +0 -1
  1080. package/dist/renderer/spriteSheet.js +0 -14
  1081. package/dist/renderer/spriteSheet.js.map +0 -1
  1082. package/dist/renderer/state/GroupState.js +0 -77
  1083. package/dist/renderer/state/GroupState.js.map +0 -1
  1084. package/dist/renderer/strokeLengths.js +0 -50
  1085. package/dist/renderer/strokeLengths.js.map +0 -1
  1086. package/dist/renderer/syntheticItalic.js +0 -6
  1087. package/dist/renderer/syntheticItalic.js.map +0 -1
  1088. package/dist/renderer/textures/registerTexture.js +0 -34
  1089. package/dist/renderer/textures/registerTexture.js.map +0 -1
  1090. package/dist/scheduling/useVisibleRaf.js +0 -69
  1091. package/dist/scheduling/useVisibleRaf.js.map +0 -1
  1092. package/dist/test-seams-DM2B87-g.d.ts +0 -356
@@ -1 +0,0 @@
1
- {"version":3,"file":"EffectTargets.js","names":["EffectTargets","gl","width","height","pooled","made","target","texture","stencil","fbo"],"sources":["../../../src/renderer/effects/EffectTargets.ts"],"sourcesContent":["/**\n * Offscreen colour buffers for effect passes, pooled per renderer.\n *\n * Nothing is allocated until a group with effects asks for one, so a canvas\n * with no effects pays nothing — which is the whole cost story for a feature\n * that would otherwise carry a device-resolution buffer per frame.\n *\n * Every target is the size of the drawing buffer. A group's effects run in\n * screen space, so a smaller buffer would have to reason about where the\n * group's content lands and how far a kernel reaches past it; that is a real\n * optimisation and not the first version of one.\n *\n * The stencil is the part that is easy to get wrong. Clips and even-odd fills\n * live in the stencil buffer, and an FBO does not inherit the default\n * framebuffer's — one without its own attachment renders even-odd paths with\n * their holes filled and clips that do not clip, with no GL error and nothing\n * in a call-sequence test to catch it. Every target here gets a\n * DEPTH24_STENCIL8 renderbuffer of its own.\n */\n\nexport interface EffectTarget {\n readonly fbo: WebGLFramebuffer;\n readonly texture: WebGLTexture;\n /** @internal — the pool's own bookkeeping. */\n readonly stencil: WebGLRenderbuffer;\n}\n\nexport class EffectTargets {\n private readonly gl: WebGL2RenderingContext;\n private readonly all: EffectTarget[] = [];\n private free: EffectTarget[] = [];\n private width = 0;\n private height = 0;\n\n constructor(gl: WebGL2RenderingContext) {\n this.gl = gl;\n }\n\n /** True once anything has been allocated — what a test asks instead of\n * reaching for the private arrays. */\n get allocated(): boolean {\n return this.all.length > 0;\n }\n\n /**\n * Borrow a target sized `width` × `height` device pixels. A size change\n * drops every pooled buffer rather than resizing in place: a borrowed one\n * cannot be resized under its holder, and a resize is not a per-frame event.\n */\n acquire(width: number, height: number): EffectTarget {\n if (width !== this.width || height !== this.height) {\n this.free = [];\n this.releaseAll();\n this.width = width;\n this.height = height;\n }\n const pooled = this.free.pop();\n if (pooled) return pooled;\n const made = this.create(width, height);\n this.all.push(made);\n return made;\n }\n\n /** Hand one back. Order does not matter — every target is interchangeable. */\n release(target: EffectTarget): void {\n this.free.push(target);\n }\n\n /** Take back every target still out on loan. A frame that threw inside a\n * group with effects never released the one it was drawing into. */\n reclaim(): void {\n if (this.free.length !== this.all.length) this.free = [...this.all];\n }\n\n /** Drop every buffer. Called on dispose and on context loss, where the\n * handles are already invalid and only the bookkeeping has to go. */\n releaseAll(): void {\n const gl = this.gl;\n for (const t of this.all) {\n gl.deleteFramebuffer(t.fbo);\n gl.deleteTexture(t.texture);\n gl.deleteRenderbuffer(t.stencil);\n }\n this.all.length = 0;\n this.free = [];\n this.width = 0;\n this.height = 0;\n }\n\n private create(width: number, height: number): EffectTarget {\n const gl = this.gl;\n const texture = gl.createTexture()!;\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA8, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n // LINEAR so an effect can sample between texels; CLAMP_TO_EDGE so a kernel\n // reaching past the edge repeats the border instead of wrapping the\n // opposite side of the screen into frame.\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n\n const stencil = gl.createRenderbuffer()!;\n gl.bindRenderbuffer(gl.RENDERBUFFER, stencil);\n gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH24_STENCIL8, width, height);\n gl.bindRenderbuffer(gl.RENDERBUFFER, null);\n\n const fbo = gl.createFramebuffer()!;\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, stencil);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n return { fbo, texture, stencil };\n }\n}\n"],"mappings":";AA2BA,IAAaA,IAAb,MAA2B;CACzB;CACA,MAAuC,CAAC;CACxC,OAA+B,CAAC;CAChC,QAAgB;CAChB,SAAiB;CAEjB,YAAY,GAA4B;EACtC,KAAK,KAAKC;CACZ;CAIA,IAAI,YAAqB;EACvB,OAAO,KAAK,IAAI,SAAS;CAC3B;CAOA,QAAQ,GAAe,GAA8B;EACnD,CAAIC,MAAU,KAAK,SAASC,MAAW,KAAK,YAC1C,KAAK,OAAO,CAAC,GACb,KAAK,WAAW,GAChB,KAAK,QAAQD,GACb,KAAK,SAASC;EAEhB,IAAMC,IAAS,KAAK,KAAK,IAAI;EAC7B,IAAIA,GAAQ,OAAOA;EACnB,IAAMC,IAAO,KAAK,OAAOH,GAAOC,CAAM;EAEtC,OADA,KAAK,IAAI,KAAKE,CAAI,GACXA;CACT;CAGA,QAAQ,GAA4B;EAClC,KAAK,KAAK,KAAKC,CAAM;CACvB;CAIA,UAAgB;EACd,AAAI,KAAK,KAAK,WAAW,KAAK,IAAI,WAAQ,KAAK,OAAO,CAAC,GAAG,KAAK,GAAG;CACpE;CAIA,aAAmB;EACjB,IAAML,IAAK,KAAK;EAChB,KAAK,IAAM,KAAK,KAAK,KAGnB,AAFAA,EAAG,kBAAkB,EAAE,GAAG,GAC1BA,EAAG,cAAc,EAAE,OAAO,GAC1BA,EAAG,mBAAmB,EAAE,OAAO;EAKjC,AAHA,KAAK,IAAI,SAAS,GAClB,KAAK,OAAO,CAAC,GACb,KAAK,QAAQ,GACb,KAAK,SAAS;CAChB;CAEA,OAAe,GAAe,GAA8B;EAC1D,IAAMA,IAAK,KAAK,IACVM,IAAUN,EAAG,cAAc;EAUjC,AATAA,EAAG,YAAYA,EAAG,YAAYM,CAAO,GACrCN,EAAG,WAAWA,EAAG,YAAY,GAAGA,EAAG,OAAOC,GAAOC,GAAQ,GAAGF,EAAG,MAAMA,EAAG,eAAe,IAAI,GAI3FA,EAAG,cAAcA,EAAG,YAAYA,EAAG,oBAAoBA,EAAG,MAAM,GAChEA,EAAG,cAAcA,EAAG,YAAYA,EAAG,oBAAoBA,EAAG,MAAM,GAChEA,EAAG,cAAcA,EAAG,YAAYA,EAAG,gBAAgBA,EAAG,aAAa,GACnEA,EAAG,cAAcA,EAAG,YAAYA,EAAG,gBAAgBA,EAAG,aAAa,GACnEA,EAAG,YAAYA,EAAG,YAAY,IAAI;EAElC,IAAMO,IAAUP,EAAG,mBAAmB;EAGtC,AAFAA,EAAG,iBAAiBA,EAAG,cAAcO,CAAO,GAC5CP,EAAG,oBAAoBA,EAAG,cAAcA,EAAG,kBAAkBC,GAAOC,CAAM,GAC1EF,EAAG,iBAAiBA,EAAG,cAAc,IAAI;EAEzC,IAAMQ,IAAMR,EAAG,kBAAkB;EAMjC,OALAA,EAAG,gBAAgBA,EAAG,aAAaQ,CAAG,GACtCR,EAAG,qBAAqBA,EAAG,aAAaA,EAAG,mBAAmBA,EAAG,YAAYM,GAAS,CAAC,GACvFN,EAAG,wBAAwBA,EAAG,aAAaA,EAAG,0BAA0BA,EAAG,cAAcO,CAAO,GAChGP,EAAG,gBAAgBA,EAAG,aAAa,IAAI,GAEhC;GAAE;GAAK;GAAS;EAAQ;CACjC;AACF"}
@@ -1,31 +0,0 @@
1
- import { registerEffect as e } from "./types.js";
2
- //#region src/renderer/effects/builtins.ts
3
- var t = "#version 300 es\nprecision highp float;\nin vec2 v_uv;\nuniform sampler2D u_source;\nuniform vec2 u_texel;\nuniform vec2 u_direction;\nuniform float u_radius;\nout vec4 outColor;\n\nvoid main() {\n // Nine taps on a Gaussian, spread across the requested radius. The weights\n // are a normalized binomial row, so a radius of 0 collapses to a copy.\n const float W[5] = float[5](0.2270270, 0.1945946, 0.1216216, 0.0540541, 0.0162162);\n vec2 step = u_direction * u_texel * (u_radius / 4.0);\n vec4 sum = texture(u_source, v_uv) * W[0];\n for (int i = 1; i < 5; i++) {\n vec2 off = step * float(i);\n sum += texture(u_source, v_uv + off) * W[i];\n sum += texture(u_source, v_uv - off) * W[i];\n }\n outColor = sum;\n}\n", n = "#version 300 es\nprecision highp float;\nin vec2 v_uv;\nuniform sampler2D u_source;\nuniform float u_amount;\nuniform float u_feather;\nout vec4 outColor;\n\nvoid main() {\n vec4 src = texture(u_source, v_uv);\n float d = distance(v_uv, vec2(0.5)) * 1.41421356;\n float shade = 1.0 - u_amount * smoothstep(1.0 - u_feather, 1.0, d);\n // Premultiplied in, premultiplied out: scaling all four channels darkens\n // toward transparent black, which is what a vignette over a transparent\n // canvas should do.\n outColor = src * shade;\n}\n", r = e("weasel:blur", t), i = e("weasel:vignette", n);
4
- function a({ radius: e }) {
5
- return [{
6
- program: r,
7
- uniforms: {
8
- u_direction: [1, 0],
9
- u_radius: e
10
- }
11
- }, {
12
- program: r,
13
- uniforms: {
14
- u_direction: [0, 1],
15
- u_radius: e
16
- }
17
- }];
18
- }
19
- function o({ amount: e, feather: t = .6 }) {
20
- return [{
21
- program: i,
22
- uniforms: {
23
- u_amount: e,
24
- u_feather: t
25
- }
26
- }];
27
- }
28
- //#endregion
29
- export { a as blur, o as vignette };
30
-
31
- //# sourceMappingURL=builtins.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builtins.js","names":["BLUR_FRAG","VIGNETTE_FRAG","BLUR","registerEffect","VIGNETTE","blur","radius","vignette","amount","feather"],"sources":["../../../src/renderer/effects/builtins.ts"],"sourcesContent":["/**\n * Effects that ship with the kit.\n *\n * Each is a function returning `Effect[]`, not a single `Effect`, because a\n * separable kernel is genuinely two passes and hiding that behind one entry\n * would make the cost invisible at the callsite:\n *\n * effects={[...blur({ radius: 4 }), ...vignette({ amount: 0.6 })]}\n */\nimport type { Effect } from './types';\nimport { registerEffect } from './types';\n\nconst BLUR_FRAG = /* glsl */ `#version 300 es\nprecision highp float;\nin vec2 v_uv;\nuniform sampler2D u_source;\nuniform vec2 u_texel;\nuniform vec2 u_direction;\nuniform float u_radius;\nout vec4 outColor;\n\nvoid main() {\n // Nine taps on a Gaussian, spread across the requested radius. The weights\n // are a normalized binomial row, so a radius of 0 collapses to a copy.\n const float W[5] = float[5](0.2270270, 0.1945946, 0.1216216, 0.0540541, 0.0162162);\n vec2 step = u_direction * u_texel * (u_radius / 4.0);\n vec4 sum = texture(u_source, v_uv) * W[0];\n for (int i = 1; i < 5; i++) {\n vec2 off = step * float(i);\n sum += texture(u_source, v_uv + off) * W[i];\n sum += texture(u_source, v_uv - off) * W[i];\n }\n outColor = sum;\n}\n`;\n\nconst VIGNETTE_FRAG = /* glsl */ `#version 300 es\nprecision highp float;\nin vec2 v_uv;\nuniform sampler2D u_source;\nuniform float u_amount;\nuniform float u_feather;\nout vec4 outColor;\n\nvoid main() {\n vec4 src = texture(u_source, v_uv);\n float d = distance(v_uv, vec2(0.5)) * 1.41421356;\n float shade = 1.0 - u_amount * smoothstep(1.0 - u_feather, 1.0, d);\n // Premultiplied in, premultiplied out: scaling all four channels darkens\n // toward transparent black, which is what a vignette over a transparent\n // canvas should do.\n outColor = src * shade;\n}\n`;\n\nconst BLUR = registerEffect('weasel:blur', BLUR_FRAG);\nconst VIGNETTE = registerEffect('weasel:vignette', VIGNETTE_FRAG);\n\n/**\n * Gaussian blur, as a horizontal pass followed by a vertical one.\n *\n * `radius` is in device pixels and is the distance of the outermost tap, not a\n * standard deviation — 0 is a copy, and the falloff is the same nine-tap\n * kernel at every radius, so a large one is a wide blur rather than a better\n * one. Two passes at O(9) beat one at O(81) and look the same.\n */\nexport function blur({ radius }: { radius: number }): Effect[] {\n return [\n { program: BLUR, uniforms: { u_direction: [1, 0], u_radius: radius } },\n { program: BLUR, uniforms: { u_direction: [0, 1], u_radius: radius } },\n ];\n}\n\n/**\n * Darken toward the corners. `amount` is how dark the corner gets (0..1) and\n * `feather` how much of the radius the falloff occupies.\n */\nexport function vignette(\n { amount, feather = 0.6 }: { amount: number; feather?: number },\n): Effect[] {\n return [{ program: VIGNETTE, uniforms: { u_amount: amount, u_feather: feather } }];\n}\n"],"mappings":";;AAYA,IAAMA,IAAuB,kuBAwBvBC,IAA2B,miBAmB3BC,IAAOC,EAAe,eAAeH,CAAS,GAC9CI,IAAWD,EAAe,mBAAmBF,CAAa;AAUhE,SAAgBI,EAAK,EAAE,aAAwC;CAC7D,OAAO,CACL;EAAE,SAASH;EAAM,UAAU;GAAE,aAAa,CAAC,GAAG,CAAC;GAAG,UAAUI;EAAO;CAAE,GACrE;EAAE,SAASJ;EAAM,UAAU;GAAE,aAAa,CAAC,GAAG,CAAC;GAAG,UAAUI;EAAO;CAAE,CACvE;AACF;AAMA,SAAgBC,EACd,EAAE,WAAQ,aAAU,MACV;CACV,OAAO,CAAC;EAAE,SAASH;EAAU,UAAU;GAAE,UAAUI;GAAQ,WAAWC;EAAQ;CAAE,CAAC;AACnF"}
@@ -1,11 +0,0 @@
1
- import { getProgramSource as e, registerProgram as t } from "../shaders/registerProgram.js";
2
- import { COMPOSITE_FRAG_SRC as n, EFFECT_VERT_SRC as r } from "./effectPrelude.js";
3
- //#region src/renderer/effects/composite.ts
4
- var i = "weasel:effect-composite";
5
- function a() {
6
- return e(i) || t(i, r, n), i;
7
- }
8
- //#endregion
9
- export { i as COMPOSITE_PROGRAM_ID, a as compositeProgramId };
10
-
11
- //# sourceMappingURL=composite.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"composite.js","names":["COMPOSITE_PROGRAM_ID","compositeProgramId","getProgramSource","registerProgram","EFFECT_VERT_SRC","COMPOSITE_FRAG_SRC"],"sources":["../../../src/renderer/effects/composite.ts"],"sourcesContent":["/**\n * The pass that puts a group's finished texture back into its parent, and the\n * shared mechanics every effect pass uses to draw a full-screen quad.\n *\n * Registered as an ordinary program so it compiles through the same\n * `ensureProgram` path a consumer's effect does — one compile path, one place\n * a compile failure is reported.\n */\nimport { getProgramSource, registerProgram } from '../shaders/registerProgram';\nimport { EFFECT_VERT_SRC, COMPOSITE_FRAG_SRC } from './effectPrelude';\n\n/** Reserved id. The `weasel:` prefix is not enforced anywhere; it is here so a\n * consumer reading a shader-compile error knows whose program it is. */\nexport const COMPOSITE_PROGRAM_ID = 'weasel:effect-composite';\n\n/**\n * The composite program's id, registering the program on first ask. Not done\n * at module load: a bundler may drop an import kept only for its side effect.\n */\nexport function compositeProgramId(): string {\n if (!getProgramSource(COMPOSITE_PROGRAM_ID)) {\n registerProgram(COMPOSITE_PROGRAM_ID, EFFECT_VERT_SRC, COMPOSITE_FRAG_SRC);\n }\n return COMPOSITE_PROGRAM_ID;\n}\n"],"mappings":";;;AAaA,IAAaA,IAAuB;AAMpC,SAAgBC,IAA6B;CAI3C,OAHKC,EAAiBF,CAAoB,KACxCG,EAAgBH,GAAsBI,GAAiBC,CAAkB,GAEpEL;AACT"}
@@ -1,10 +0,0 @@
1
- //#region src/renderer/effects/effectPrelude.ts
2
- var e = "#version 300 es\nin vec2 a_position;\nin vec2 a_uv;\nout vec2 v_uv;\n\nvoid main() {\n v_uv = a_uv;\n gl_Position = vec4(a_position, 0.0, 1.0);\n}\n", t = [
3
- "u_source",
4
- "u_resolution",
5
- "u_texel"
6
- ], n = "#version 300 es\nprecision highp float;\nin vec2 v_uv;\nuniform sampler2D u_source;\nuniform float u_alpha;\nuniform mat4 u_colorMatrix;\nuniform vec4 u_colorBias;\nout vec4 outColor;\n\nvoid main() {\n vec4 src = texture(u_source, v_uv);\n // Undo premultiplication before the colour matrix, which is defined on\n // straight alpha, then put it back for the blend.\n float a = src.a;\n vec3 rgb = a > 0.0 ? src.rgb / a : vec3(0.0);\n vec4 c = u_colorMatrix * vec4(rgb, a) + u_colorBias;\n c.a *= u_alpha;\n outColor = vec4(clamp(c.rgb, 0.0, 1.0) * c.a, c.a);\n}\n";
7
- //#endregion
8
- export { n as COMPOSITE_FRAG_SRC, t as EFFECT_KIT_UNIFORMS, e as EFFECT_VERT_SRC };
9
-
10
- //# sourceMappingURL=effectPrelude.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"effectPrelude.js","names":["EFFECT_VERT_SRC","EFFECT_KIT_UNIFORMS","COMPOSITE_FRAG_SRC"],"sources":["../../../src/renderer/effects/effectPrelude.ts"],"sourcesContent":["/**\n * Kit-supplied vertex shader for a full-screen effect pass.\n *\n * Distinct from `CUSTOM_VERT_SRC` on purpose. That one places its quad through\n * `u_bounds` and `u_proj`, so its `v_uv` runs top-down in *screen* space; an\n * effect samples a texture the scene was just rendered into, whose v axis runs\n * the other way. Passing `a_position` straight to `gl_Position` and `a_uv`\n * straight out keeps the two aligned — `QUAD_VERTICES` already carries\n * `a_uv == (a_position + 1) / 2` on both axes.\n *\n * PUBLIC CONTRACT — what every effect fragment shader may read:\n *\n * in vec2 v_uv 0..1 across the source texture\n * uniform sampler2D u_source what has been drawn so far\n * uniform vec2 u_resolution source size in device pixels\n * uniform vec2 u_texel 1.0 / u_resolution — one texel step\n *\n * PREMULTIPLIED ALPHA: `u_source` holds premultiplied RGBA, because that is\n * what the scene blends into it. An effect that weights neighbouring samples\n * (a blur) is doing the right thing on premultiplied values; one that\n * manipulates rgb against a must premultiply its own output the same way the\n * custom-shader prelude requires.\n */\nexport const EFFECT_VERT_SRC = /* glsl */ `#version 300 es\nin vec2 a_position;\nin vec2 a_uv;\nout vec2 v_uv;\n\nvoid main() {\n v_uv = a_uv;\n gl_Position = vec4(a_position, 0.0, 1.0);\n}\n`;\n\n/** Attribute names the effect vertex shader binds. Same layout as the custom\n * prelude's, so `QUAD_VERTICES` serves both. */\nexport const EFFECT_ATTRIBUTES = ['a_position', 'a_uv'] as const;\n\n/** Uniforms the renderer sets on every effect pass. An effect must not\n * redeclare them with different meanings; it may leave any of them out. */\nexport const EFFECT_KIT_UNIFORMS = ['u_source', 'u_resolution', 'u_texel'] as const;\n\n/** The pass that puts a group's finished texture back into its parent. Not an\n * effect — no consumer registers it — but it runs on the same quad and the\n * same vertex shader. `u_alpha` and the colour matrix are the parent group's,\n * applied here rather than inside the offscreen render, so an effect samples\n * the group's own pixels rather than pixels the parent has already faded. */\nexport const COMPOSITE_FRAG_SRC = /* glsl */ `#version 300 es\nprecision highp float;\nin vec2 v_uv;\nuniform sampler2D u_source;\nuniform float u_alpha;\nuniform mat4 u_colorMatrix;\nuniform vec4 u_colorBias;\nout vec4 outColor;\n\nvoid main() {\n vec4 src = texture(u_source, v_uv);\n // Undo premultiplication before the colour matrix, which is defined on\n // straight alpha, then put it back for the blend.\n float a = src.a;\n vec3 rgb = a > 0.0 ? src.rgb / a : vec3(0.0);\n vec4 c = u_colorMatrix * vec4(rgb, a) + u_colorBias;\n c.a *= u_alpha;\n outColor = vec4(clamp(c.rgb, 0.0, 1.0) * c.a, c.a);\n}\n`;\n"],"mappings":";AAuBA,IAAaA,IAA6B,0JAiB7BC,IAAsB;CAAC;CAAY;CAAgB;AAAS,GAO5DC,IAAgC"}
@@ -1,10 +0,0 @@
1
- import { registerProgram as e } from "../shaders/registerProgram.js";
2
- import { EFFECT_VERT_SRC as t } from "./effectPrelude.js";
3
- //#region src/renderer/effects/types.ts
4
- function n(n, r) {
5
- return e(n, t, r);
6
- }
7
- //#endregion
8
- export { n as registerEffect };
9
-
10
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","names":["registerEffect","registerProgram","id","EFFECT_VERT_SRC","frag"],"sources":["../../../src/renderer/effects/types.ts"],"sourcesContent":["import { registerProgram, type ShaderProgramHandle, type ShaderUniform } from '../shaders/registerProgram';\nimport { EFFECT_VERT_SRC } from './effectPrelude';\n\n/**\n * One full-screen pass over what a group has already drawn.\n *\n * The renderer runs a group's effects in order, each reading the previous\n * one's output through `u_source` and writing a whole new buffer — so an\n * effect is free to read neighbouring pixels, which is the entire point and\n * the one thing `colorMatrix` can never do.\n *\n * `uniforms` are the effect's own; `u_source`, `u_resolution` and `u_texel`\n * come from the renderer and must not be passed here.\n */\nexport interface Effect {\n program: ShaderProgramHandle;\n uniforms?: Record<string, ShaderUniform>;\n}\n\n/**\n * Register a fragment shader as an effect. Sugar over `registerProgram` with\n * the effect vertex shader, and the reason a consumer never imports the\n * prelude: an effect that registers with the *custom-shader* vertex shader\n * compiles, runs, and samples its source upside down.\n *\n * The fragment shader reads `v_uv` and `u_source`, and may declare\n * `u_resolution` / `u_texel`. See `effectPrelude.ts` for the full contract,\n * including the premultiplied-alpha requirement.\n *\n * @experimental\n */\nexport function registerEffect(id: string, frag: string): ShaderProgramHandle {\n return registerProgram(id, EFFECT_VERT_SRC, frag);\n}\n"],"mappings":";;;AA+BA,SAAgBA,EAAe,GAAY,GAAmC;CAC5E,OAAOC,EAAgBC,GAAIC,GAAiBC,CAAI;AAClD"}
@@ -1,67 +0,0 @@
1
- import { strokeSpaceOf as e } from "../features/paths/tessellate/metric.js";
2
- import { quantizeStrokeScale as t } from "./cache/strokeMeshCache.js";
3
- import { outlineMesh as n } from "./cache/outlineMeshCache.js";
4
- import { outlineStrokeMesh as r, quantizeEmWidth as i } from "./cache/outlineStrokeMeshCache.js";
5
- import { SYNTHETIC_ITALIC_RADIANS as a } from "./syntheticItalic.js";
6
- //#region src/renderer/glyphOutlineMesh.ts
7
- function o(e, t, r) {
8
- return l(e, t, r, (e) => n(e.key, e.d));
9
- }
10
- function s(n, a, o, s) {
11
- let u = n.stroke;
12
- if (!u) return null;
13
- let d = u.width ?? 1;
14
- if (typeof d == "object") {
15
- if (!(d.px > 0)) return null;
16
- let i = c(n), [f, p, m, h] = [
17
- s[0],
18
- s[1],
19
- s[3],
20
- s[4]
21
- ];
22
- return l(n, a, o, (n) => {
23
- if (!(n.scale > 0)) return null;
24
- let a = n.scale, o = e(a * f, a * p, a * (m - f * i), a * (h - p * i)), s = t(d.px, o.scale);
25
- if (!(s > 0)) return null;
26
- let c = u.dash?.map((e) => e / s);
27
- return r(n.key, n.d, d.px / s, {
28
- ...u,
29
- dash: c
30
- }, o.metric ?? void 0);
31
- });
32
- }
33
- return d > 0 ? l(n, a, o, (e) => e.scale > 0 ? r(e.key, e.d, i(d / e.scale), {
34
- ...u,
35
- dash: u.dash?.map((t) => t / e.scale)
36
- }) : null) : null;
37
- }
38
- var c = (e) => e.synthetic.italic ? Math.tan(a) : 0;
39
- function l(e, t, n, r) {
40
- let i = [], a = 0, o = 0;
41
- for (let t of e.glyphs) {
42
- let e = r(t);
43
- e && e.indices.length !== 0 && (i.push({
44
- mesh: e,
45
- glyph: t
46
- }), a += e.vertices.length, o += e.indices.length);
47
- }
48
- if (i.length === 0) return null;
49
- let s = c(e), l = new Float32Array(a), u = new Uint32Array(o), d = 0, f = 0, p = 0;
50
- for (let { mesh: e, glyph: r } of i) {
51
- let { x: i, baselineY: a, scale: o } = r;
52
- for (let r = 0; r < e.vertices.length; r += 2) {
53
- let c = e.vertices[r], u = e.vertices[r + 1];
54
- l[d++] = i + t + (c - u * s) * o, l[d++] = a + n + u * o;
55
- }
56
- for (let t = 0; t < e.indices.length; t++) u[f++] = p + e.indices[t];
57
- p += e.vertices.length / 2;
58
- }
59
- return {
60
- vertices: l,
61
- indices: u
62
- };
63
- }
64
- //#endregion
65
- export { o as outlineGroupMesh, s as outlineGroupStrokeMesh };
66
-
67
- //# sourceMappingURL=glyphOutlineMesh.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"glyphOutlineMesh.js","names":["outlineGroupMesh","mergeGlyphMeshes","group","dx","dy","outlineMesh","glyph","outlineGroupStrokeMesh","stroke","width","shear","shearOf","a","b","c","d","transform","s","space","strokeSpaceOf","pxPerEm","quantizeStrokeScale","dash","v","outlineStrokeMesh","quantizeEmWidth","SYNTHETIC_ITALIC_RADIANS","parts","vertexFloats","indexCount","mesh","meshFor","vertices","indices","vi","ii","base","k","ex","ey","x","scale","baselineY"],"sources":["../../src/renderer/glyphOutlineMesh.ts"],"sourcesContent":["/**\n * Glyph outlines as world-space meshes: each glyph's em-space fill or stroke\n * mesh, placed and concatenated so a run of outlined text is one draw.\n */\nimport type { Mesh } from '@weasel-js/geom/tessellate';\nimport type { LaidOutGroup, LaidOutOutlineGlyph } from '@weasel-js/text';\nimport { strokeSpaceOf } from 'features/paths/tessellate/metric';\nimport type { GlMat3 } from './math/mat3';\nimport { quantizeStrokeScale } from './cache/strokeMeshCache';\nimport { outlineMesh } from './cache/outlineMeshCache';\nimport { outlineStrokeMesh, quantizeEmWidth } from './cache/outlineStrokeMeshCache';\nimport { SYNTHETIC_ITALIC_RADIANS } from './syntheticItalic';\n\n/**\n * Merge a group's glyphs into one world-space mesh, or `null` when nothing in\n * it has area.\n *\n * Every glyph mesh here is `'nonzero'` (that is what `pathFromD` produces and\n * what a font outline means), so none of them sets `requiresStencil` and\n * concatenating their triangles is sound — an even-odd mesh would be a naive\n * per-contour fan that only resolves correctly through a stencil pass, and\n * merging one into a batch would fill its counters solid.\n */\nexport function outlineGroupMesh(group: LaidOutGroup, dx: number, dy: number): Mesh | null {\n return mergeGlyphMeshes(group, dx, dy, (glyph) => outlineMesh(glyph.key, glyph.d));\n}\n\n/**\n * The same merge for the group's stroke: one ribbon per glyph, tessellated in\n * em space and batched into one buffer, so a stroked paragraph is one extra\n * draw call rather than one per glyph.\n *\n * A world width crosses into em space by dividing by the glyph's `scale`,\n * which is world units per em — so `stroke.width` stays a world-unit measure\n * and does not grow with `fontSize`, matching every other stroke in the kit.\n * Dashes cross with it.\n *\n * A synthetic oblique shears a world-width ribbon along with the glyph. That\n * is a real (small) distortion — a sheared circle is an ellipse, so the\n * outline is marginally thicker across the lean than along it — and it is\n * deliberate: shearing the finished ribbon is what keeps the outline glued to\n * the glyph it outlines, which re-tessellating in sheared space would not.\n *\n * A `{ px }` ribbon is built in the stretch of the whole em-to-screen map,\n * shear included, as a path's is in its transform's (see `metric.ts`), so it\n * is that many pixels wide in every direction on every glyph.\n */\nexport function outlineGroupStrokeMesh(\n group: LaidOutGroup,\n dx: number,\n dy: number,\n transform: GlMat3,\n): Mesh | null {\n const stroke = group.stroke;\n if (!stroke) return null;\n const width = stroke.width ?? 1;\n if (typeof width === 'object') {\n if (!(width.px > 0)) return null;\n const shear = shearOf(group);\n const [a, b, c, d] = [transform[0], transform[1], transform[3], transform[4]];\n return mergeGlyphMeshes(group, dx, dy, (glyph) => {\n if (!(glyph.scale > 0)) return null;\n const s = glyph.scale;\n const space = strokeSpaceOf(s * a, s * b, s * (c - a * shear), s * (d - b * shear));\n const pxPerEm = quantizeStrokeScale(width.px, space.scale);\n if (!(pxPerEm > 0)) return null;\n const dash = stroke.dash?.map((v) => v / pxPerEm);\n return outlineStrokeMesh(\n glyph.key, glyph.d, width.px / pxPerEm, { ...stroke, dash }, space.metric ?? undefined,\n );\n });\n }\n if (!(width > 0)) return null;\n return mergeGlyphMeshes(group, dx, dy, (glyph) =>\n glyph.scale > 0\n ? outlineStrokeMesh(\n glyph.key, glyph.d, quantizeEmWidth(width / glyph.scale),\n { ...stroke, dash: stroke.dash?.map((v) => v / glyph.scale) },\n )\n : null);\n}\n\nconst shearOf = (group: LaidOutGroup): number =>\n group.synthetic.italic ? Math.tan(SYNTHETIC_ITALIC_RADIANS) : 0;\n\n/**\n * Transform each glyph's em-space mesh into world space and concatenate.\n * Shared by the fill and stroke paths, which differ only in which mesh they\n * ask for per glyph — the placement math must not fork, or an outline would\n * drift off the glyph it outlines.\n */\nfunction mergeGlyphMeshes(\n group: LaidOutGroup,\n dx: number,\n dy: number,\n meshFor: (glyph: LaidOutOutlineGlyph) => Mesh | null,\n): Mesh | null {\n const parts: { mesh: Mesh; glyph: LaidOutOutlineGlyph }[] = [];\n let vertexFloats = 0;\n let indexCount = 0;\n for (const glyph of group.glyphs) {\n const mesh = meshFor(glyph);\n if (!mesh || mesh.indices.length === 0) continue;\n parts.push({ mesh, glyph });\n vertexFloats += mesh.vertices.length;\n indexCount += mesh.indices.length;\n }\n if (parts.length === 0) return null;\n\n // Matches the SDF vertex shader's skew exactly: x moves by\n // `(baselineY - y) * tan(angle)`, and in em space `baselineY - y` is\n // `-ey * scale`, so above-baseline vertices (negative ey) lean right.\n const shear = shearOf(group);\n\n const vertices = new Float32Array(vertexFloats);\n const indices = new Uint32Array(indexCount);\n let vi = 0;\n let ii = 0;\n let base = 0;\n for (const { mesh, glyph } of parts) {\n const { x, baselineY, scale } = glyph;\n for (let k = 0; k < mesh.vertices.length; k += 2) {\n const ex = mesh.vertices[k];\n const ey = mesh.vertices[k + 1];\n vertices[vi++] = x + dx + (ex - ey * shear) * scale;\n vertices[vi++] = baselineY + dy + ey * scale;\n }\n for (let k = 0; k < mesh.indices.length; k++) indices[ii++] = base + mesh.indices[k];\n base += mesh.vertices.length / 2;\n }\n return { vertices, indices };\n}\n"],"mappings":";;;;;;AAuBA,SAAgBA,EAAiB,GAAqB,GAAY,GAAyB;CACzF,OAAOC,EAAiBC,GAAOC,GAAIC,IAAK,MAAUC,EAAYC,EAAM,KAAKA,EAAM,CAAC,CAAC;AACnF;AAsBA,SAAgBC,EACd,GACA,GACA,GACA,GACa;CACb,IAAMC,IAASN,EAAM;CACrB,IAAI,CAACM,GAAQ,OAAO;CACpB,IAAMC,IAAQD,EAAO,SAAS;CAC9B,IAAI,OAAOC,KAAU,UAAU;EAC7B,IAAI,EAAEA,EAAM,KAAK,IAAI,OAAO;EAC5B,IAAMC,IAAQC,EAAQT,CAAK,GACrB,CAACU,GAAGC,GAAGC,GAAGC,KAAK;GAACC,EAAU;GAAIA,EAAU;GAAIA,EAAU;GAAIA,EAAU;EAAE;EAC5E,OAAOf,EAAiBC,GAAOC,GAAIC,IAAK,MAAU;GAChD,IAAI,EAAEE,EAAM,QAAQ,IAAI,OAAO;GAC/B,IAAMW,IAAIX,EAAM,OACVY,IAAQC,EAAcF,IAAIL,GAAGK,IAAIJ,GAAGI,KAAKH,IAAIF,IAAIF,IAAQO,KAAKF,IAAIF,IAAIH,EAAM,GAC5EU,IAAUC,EAAoBZ,EAAM,IAAIS,EAAM,KAAK;GACzD,IAAI,EAAEE,IAAU,IAAI,OAAO;GAC3B,IAAME,IAAOd,EAAO,MAAM,KAAK,MAAMe,IAAIH,CAAO;GAChD,OAAOI,EACLlB,EAAM,KAAKA,EAAM,GAAGG,EAAM,KAAKW,GAAS;IAAE,GAAGZ;IAAQ;GAAK,GAAGU,EAAM,UAAU,KAAA,CAC/E;EACF,CAAC;CACH;CAEA,OADMT,IAAQ,IACPR,EAAiBC,GAAOC,GAAIC,IAAK,MACtCE,EAAM,QAAQ,IACVkB,EACAlB,EAAM,KAAKA,EAAM,GAAGmB,EAAgBhB,IAAQH,EAAM,KAAK,GACvD;EAAE,GAAGE;EAAQ,MAAMA,EAAO,MAAM,KAAK,MAAMe,IAAIjB,EAAM,KAAK;CAAE,CAC9D,IACE,IAAI,IAPe;AAQ3B;AAEA,IAAMK,KAAW,MACfT,EAAM,UAAU,SAAS,KAAK,IAAIwB,CAAwB,IAAI;AAQhE,SAASzB,EACP,GACA,GACA,GACA,GACa;CACb,IAAM0B,IAAsD,CAAC,GACzDC,IAAe,GACfC,IAAa;CACjB,KAAK,IAAMvB,KAASJ,EAAM,QAAQ;EAChC,IAAM4B,IAAOC,EAAQzB,CAAK;EAC1B,AAAKwB,KAAQA,EAAK,QAAQ,WAAW,MACrCH,EAAM,KAAK;GAAE;GAAM;EAAM,CAAC,GAC1B,KAAgBG,EAAK,SAAS,QAC9B,KAAcA,EAAK,QAAQ;CAC7B;CACA,IAAIH,EAAM,WAAW,GAAG,OAAO;CAK/B,IAAMjB,IAAQC,EAAQT,CAAK,GAErB8B,IAAW,IAAI,aAAaJ,CAAY,GACxCK,IAAU,IAAI,YAAYJ,CAAU,GACtCK,IAAK,GACLC,IAAK,GACLC,IAAO;CACX,KAAK,IAAM,EAAE,SAAM,cAAWT,GAAO;EACnC,IAAM,EAAE,MAAG,cAAW,aAAUrB;EAChC,KAAK,IAAI+B,IAAI,GAAGA,IAAIP,EAAK,SAAS,QAAQ,KAAK,GAAG;GAChD,IAAMQ,IAAKR,EAAK,SAASO,IACnBE,IAAKT,EAAK,SAASO,IAAI;GAE7B,AADA,EAAS,OAAQG,IAAIrC,KAAMmC,IAAKC,IAAK7B,KAAS+B,GAC9C,EAAS,OAAQC,IAAYtC,IAAKmC,IAAKE;EACzC;EACA,KAAK,IAAIJ,IAAI,GAAGA,IAAIP,EAAK,QAAQ,QAAQ,KAAK,EAAQ,OAAQM,IAAON,EAAK,QAAQO;EAClF,KAAQP,EAAK,SAAS,SAAS;CACjC;CACA,OAAO;EAAE;EAAU;CAAQ;AAC7B"}
@@ -1,20 +0,0 @@
1
- import { ShaderCompileError as e } from "./shaders/ShaderProgram.js";
2
- import { registerTexture as t, textureRegistry as n, unregisterTexture as r } from "./textures/registerTexture.js";
3
- import { releaseImageSource as i } from "./cache/GLImageCache.js";
4
- import { buildGradientRamp as a } from "./cache/GradientRampAtlas.js";
5
- import { mat3 as o } from "./math/mat3.js";
6
- import { IDENTITY_COLOR_MATRIX as s } from "./state/GroupState.js";
7
- import { programSourceRegistry as c, registerProgram as l } from "./shaders/registerProgram.js";
8
- import { EFFECT_KIT_UNIFORMS as u, EFFECT_VERT_SRC as d } from "./effects/effectPrelude.js";
9
- import { tessellateStroke as f } from "../features/paths/tessellate/stroke.js";
10
- import { OUTLINE_MIN_SCREEN_PX as p } from "./draw/text.js";
11
- import { SPRITE_STRIDE as m } from "./DrawCommand.js";
12
- import { WeaselRenderer as h } from "./WeaselRenderer.js";
13
- import { frameRect as g } from "./spriteSheet.js";
14
- import { viewToMat3 as _ } from "./math/viewToMat3.js";
15
- import { cullDrawCommands as v } from "./cullDrawCommands.js";
16
- import { registerEffect as y } from "./effects/types.js";
17
- import { blur as b, vignette as x } from "./effects/builtins.js";
18
- import { canQueryLocalFonts as S, cssFontFamily as C, cssFontFamilyLoading as w, enableLocalFontOutlines as T, fontOutlineRegistry as E, fontRegistry as D, hasFontOutlines as O, isCanvasFont as k, listFontOutlines as A, loadFontOutlines as j, outlineStatus as M, registerCanvasFont as N, registerFont as P, registerFontOutlines as F, subscribeGlyphReady as I, unregisterCanvasFont as L, unregisterFontOutlines as R } from "@weasel-js/font";
19
- import { tessellate as z } from "@weasel-js/geom/tessellate";
20
- export { u as EFFECT_KIT_UNIFORMS, d as EFFECT_VERT_SRC, s as IDENTITY_COLOR_MATRIX, p as OUTLINE_MIN_SCREEN_PX, m as SPRITE_STRIDE, e as ShaderCompileError, h as WeaselRenderer, b as blur, a as buildGradientRamp, S as canQueryLocalFonts, C as cssFontFamily, w as cssFontFamilyLoading, v as cullDrawCommands, T as enableLocalFontOutlines, E as fontOutlineRegistry, D as fontRegistry, g as frameRect, O as hasFontOutlines, k as isCanvasFont, A as listFontOutlines, j as loadFontOutlines, o as mat3, M as outlineStatus, c as programSourceRegistry, N as registerCanvasFont, y as registerEffect, P as registerFont, F as registerFontOutlines, l as registerProgram, t as registerTexture, i as releaseImageSource, I as subscribeGlyphReady, z as tessellate, f as tessellateStroke, n as textureRegistry, L as unregisterCanvasFont, R as unregisterFontOutlines, r as unregisterTexture, _ as viewToMat3, x as vignette };
@@ -1,321 +0,0 @@
1
- import { hslToSrgb as e, parseHexBytes as t } from "@weasel-js/paint";
2
- //#region src/renderer/math/color.ts
3
- function n(e) {
4
- let t = r.get(e);
5
- if (t !== void 0) return t;
6
- let n = a(e);
7
- return r.size >= i && r.clear(), r.set(e, n), n;
8
- }
9
- var r = /* @__PURE__ */ new Map(), i = 1024;
10
- function a(e) {
11
- let t = e.trim();
12
- if (t.startsWith("#")) return p(t);
13
- let n = t.toLowerCase(), r = w[n];
14
- if (r !== void 0) return r;
15
- if (n.startsWith("rgb")) {
16
- let e = v(n);
17
- if (e) return e;
18
- }
19
- if (n.startsWith("hsl")) {
20
- let e = y(n);
21
- if (e) return e;
22
- }
23
- throw Error(`parseColor: unrecognized color "${e}"`);
24
- }
25
- var o = 1024, s = /* @__PURE__ */ new Map();
26
- function c(e) {
27
- let t = s.get(e);
28
- if (t) return t;
29
- s.size >= o && s.clear();
30
- let r = n(e);
31
- return s.set(e, r), r;
32
- }
33
- function l(e) {
34
- let [t, r, i, a] = n(e);
35
- return [
36
- Math.round(t * 255),
37
- Math.round(r * 255),
38
- Math.round(i * 255),
39
- Math.round(a * 255)
40
- ];
41
- }
42
- function u(e) {
43
- let n = e.trim(), r = n.startsWith("#") ? n : `#${n}`, i = t(r);
44
- if (!i) throw Error(`normalizeHex: invalid hex "${e}"`);
45
- let a = i.map((e) => e.toString(16).padStart(2, "0")).join("");
46
- return `#${r.length === 5 || r.length === 9 ? a : a.slice(0, 6)}`;
47
- }
48
- function d(e) {
49
- return p(u(e));
50
- }
51
- function f(e) {
52
- let [t, n, r] = e, i = e.length === 4 ? e[3] : 1, a = (e) => Math.max(0, Math.min(255, Math.round(e * 255))).toString(16).padStart(2, "0"), o = `#${a(t)}${a(n)}${a(r)}`;
53
- return i >= 1 ? o : `${o}${a(i)}`;
54
- }
55
- function p(e) {
56
- let n = t(e);
57
- if (!n) throw Error(`parseColor: invalid hex "${e}"`);
58
- return [
59
- n[0] / 255,
60
- n[1] / 255,
61
- n[2] / 255,
62
- n[3] / 255
63
- ];
64
- }
65
- function m(e, t) {
66
- return !e.startsWith(t + "(") || !e.endsWith(")") ? null : e.slice(t.length + 1, -1).trim();
67
- }
68
- function h(e) {
69
- if (e.includes(",")) {
70
- let t = e.split(",").map((e) => e.trim());
71
- return t.length !== 3 && t.length !== 4 ? null : {
72
- rgb: [
73
- t[0],
74
- t[1],
75
- t[2]
76
- ],
77
- alpha: t.length === 4 ? t[3] : null
78
- };
79
- }
80
- let t = e.indexOf("/"), n = (t === -1 ? e : e.slice(0, t)).trim(), r = t === -1 ? null : e.slice(t + 1).trim(), i = n.split(/\s+/);
81
- return i.length !== 3 || r !== null && r === "" ? null : {
82
- rgb: [
83
- i[0],
84
- i[1],
85
- i[2]
86
- ],
87
- alpha: r
88
- };
89
- }
90
- function g(e, t) {
91
- if (e.endsWith("%")) {
92
- let t = Number(e.slice(0, -1));
93
- return Number.isFinite(t) ? C(t / 100) : null;
94
- }
95
- let n = Number(e);
96
- return Number.isFinite(n) ? C(n / t) : null;
97
- }
98
- function _(e) {
99
- if (e === null) return 1;
100
- if (e.endsWith("%")) {
101
- let t = Number(e.slice(0, -1));
102
- return Number.isFinite(t) ? C(t / 100) : 1;
103
- }
104
- let t = Number(e);
105
- return Number.isFinite(t) ? C(t) : 1;
106
- }
107
- function v(e) {
108
- let t = m(e, "rgba") ?? m(e, "rgb");
109
- if (t === null) return null;
110
- let n = h(t);
111
- if (!n) return null;
112
- let r = g(n.rgb[0], 255), i = g(n.rgb[1], 255), a = g(n.rgb[2], 255);
113
- return r === null || i === null || a === null ? null : [
114
- r,
115
- i,
116
- a,
117
- _(n.alpha)
118
- ];
119
- }
120
- function y(e) {
121
- let t = m(e, "hsla") ?? m(e, "hsl");
122
- if (t === null) return null;
123
- let n = h(t);
124
- if (!n) return null;
125
- let r = b(n.rgb[0]), i = x(n.rgb[1]), a = x(n.rgb[2]);
126
- if (r === null || i === null || a === null) return null;
127
- let [o, s, c] = S(r, i, a);
128
- return [
129
- o,
130
- s,
131
- c,
132
- _(n.alpha)
133
- ];
134
- }
135
- function b(e) {
136
- let t;
137
- return t = e.endsWith("deg") ? Number(e.slice(0, -3)) : e.endsWith("grad") ? Number(e.slice(0, -4)) * .9 : e.endsWith("rad") ? Number(e.slice(0, -3)) * (180 / Math.PI) : e.endsWith("turn") ? Number(e.slice(0, -4)) * 360 : Number(e), Number.isFinite(t) ? (t % 360 + 360) % 360 : null;
138
- }
139
- function x(e) {
140
- if (e.endsWith("%")) {
141
- let t = Number(e.slice(0, -1));
142
- return Number.isFinite(t) ? C(t / 100) : null;
143
- }
144
- let t = Number(e);
145
- return Number.isFinite(t) ? C(t) : null;
146
- }
147
- var S = e;
148
- function C(e) {
149
- return e < 0 ? 0 : e > 1 ? 1 : e;
150
- }
151
- var w = (() => {
152
- let e = {
153
- aliceblue: 15792383,
154
- antiquewhite: 16444375,
155
- aqua: 65535,
156
- aquamarine: 8388564,
157
- azure: 15794175,
158
- beige: 16119260,
159
- bisque: 16770244,
160
- black: 0,
161
- blanchedalmond: 16772045,
162
- blue: 255,
163
- blueviolet: 9055202,
164
- brown: 10824234,
165
- burlywood: 14596231,
166
- cadetblue: 6266528,
167
- chartreuse: 8388352,
168
- chocolate: 13789470,
169
- coral: 16744272,
170
- cornflowerblue: 6591981,
171
- cornsilk: 16775388,
172
- crimson: 14423100,
173
- cyan: 65535,
174
- darkblue: 139,
175
- darkcyan: 35723,
176
- darkgoldenrod: 12092939,
177
- darkgray: 11119017,
178
- darkgreen: 25600,
179
- darkgrey: 11119017,
180
- darkkhaki: 12433259,
181
- darkmagenta: 9109643,
182
- darkolivegreen: 5597999,
183
- darkorange: 16747520,
184
- darkorchid: 10040012,
185
- darkred: 9109504,
186
- darksalmon: 15308410,
187
- darkseagreen: 9419919,
188
- darkslateblue: 4734347,
189
- darkslategray: 3100495,
190
- darkslategrey: 3100495,
191
- darkturquoise: 52945,
192
- darkviolet: 9699539,
193
- deeppink: 16716947,
194
- deepskyblue: 49151,
195
- dimgray: 6908265,
196
- dimgrey: 6908265,
197
- dodgerblue: 2003199,
198
- firebrick: 11674146,
199
- floralwhite: 16775920,
200
- forestgreen: 2263842,
201
- fuchsia: 16711935,
202
- gainsboro: 14474460,
203
- ghostwhite: 16316671,
204
- gold: 16766720,
205
- goldenrod: 14329120,
206
- gray: 8421504,
207
- green: 32768,
208
- greenyellow: 11403055,
209
- grey: 8421504,
210
- honeydew: 15794160,
211
- hotpink: 16738740,
212
- indianred: 13458524,
213
- indigo: 4915330,
214
- ivory: 16777200,
215
- khaki: 15787660,
216
- lavender: 15132410,
217
- lavenderblush: 16773365,
218
- lawngreen: 8190976,
219
- lemonchiffon: 16775885,
220
- lightblue: 11393254,
221
- lightcoral: 15761536,
222
- lightcyan: 14745599,
223
- lightgoldenrodyellow: 16448210,
224
- lightgray: 13882323,
225
- lightgreen: 9498256,
226
- lightgrey: 13882323,
227
- lightpink: 16758465,
228
- lightsalmon: 16752762,
229
- lightseagreen: 2142890,
230
- lightskyblue: 8900346,
231
- lightslategray: 7833753,
232
- lightslategrey: 7833753,
233
- lightsteelblue: 11584734,
234
- lightyellow: 16777184,
235
- lime: 65280,
236
- limegreen: 3329330,
237
- linen: 16445670,
238
- magenta: 16711935,
239
- maroon: 8388608,
240
- mediumaquamarine: 6737322,
241
- mediumblue: 205,
242
- mediumorchid: 12211667,
243
- mediumpurple: 9662683,
244
- mediumseagreen: 3978097,
245
- mediumslateblue: 8087790,
246
- mediumspringgreen: 64154,
247
- mediumturquoise: 4772300,
248
- mediumvioletred: 13047173,
249
- midnightblue: 1644912,
250
- mintcream: 16121850,
251
- mistyrose: 16770273,
252
- moccasin: 16770229,
253
- navajowhite: 16768685,
254
- navy: 128,
255
- oldlace: 16643558,
256
- olive: 8421376,
257
- olivedrab: 7048739,
258
- orange: 16753920,
259
- orangered: 16729344,
260
- orchid: 14315734,
261
- palegoldenrod: 15657130,
262
- palegreen: 10025880,
263
- paleturquoise: 11529966,
264
- palevioletred: 14381203,
265
- papayawhip: 16773077,
266
- peachpuff: 16767673,
267
- peru: 13468991,
268
- pink: 16761035,
269
- plum: 14524637,
270
- powderblue: 11591910,
271
- purple: 8388736,
272
- rebeccapurple: 6697881,
273
- red: 16711680,
274
- rosybrown: 12357519,
275
- royalblue: 4286945,
276
- saddlebrown: 9127187,
277
- salmon: 16416882,
278
- sandybrown: 16032864,
279
- seagreen: 3050327,
280
- seashell: 16774638,
281
- sienna: 10506797,
282
- silver: 12632256,
283
- skyblue: 8900331,
284
- slateblue: 6970061,
285
- slategray: 7372944,
286
- slategrey: 7372944,
287
- snow: 16775930,
288
- springgreen: 65407,
289
- steelblue: 4620980,
290
- tan: 13808780,
291
- teal: 32896,
292
- thistle: 14204888,
293
- tomato: 16737095,
294
- turquoise: 4251856,
295
- violet: 15631086,
296
- wheat: 16113331,
297
- white: 16777215,
298
- whitesmoke: 16119285,
299
- yellow: 16776960,
300
- yellowgreen: 10145074
301
- }, t = { transparent: [
302
- 0,
303
- 0,
304
- 0,
305
- 0
306
- ] };
307
- for (let n in e) {
308
- let r = e[n];
309
- t[n] = [
310
- (r >> 16 & 255) / 255,
311
- (r >> 8 & 255) / 255,
312
- (r & 255) / 255,
313
- 1
314
- ];
315
- }
316
- return t;
317
- })();
318
- //#endregion
319
- export { d as hexToRgba, S as hslToRgb, u as normalizeHex, n as parseColor, l as parseColorToRgba255, c as resolveColor, f as rgbaToHex };
320
-
321
- //# sourceMappingURL=color.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"color.js","names":["parseColor","cached","CACHE","input","result","parseColorUncached","CACHE_MAX","s","parseHex","lower","named","NAMED_COLORS","parsed","parseRgbFunction","parseHslFunction","RESOLVE_COLOR_CACHE_CAP","resolveColorCache","resolveColor","hit","frozen","parseColorToRgba255","r","g","b","normalizeHex","trimmed","hashed","bytes","parseHexBytes","digits","n","hexToRgba","rgbaToHex","rgba","a","f","base","unwrapFn","name","splitChannels","body","parts","p","slash","head","alpha","parseChannel","tok","clamp01","max","parseAlpha","channels","h","parseHue","sat","parsePercentOrNumber","lit","hslToRgb","hslToSrgb","hex","out"],"sources":["../../../src/renderer/math/color.ts"],"sourcesContent":["import { hslToSrgb, parseHexBytes } from '@weasel-js/paint';\n\n/**\n * Parse a CSS color string into [r, g, b, a] with 0..1 components.\n *\n * Supported forms:\n * - Hex: `#rgb`, `#rgba`, `#rrggbb`, `#rrggbbaa` (any case)\n * - `rgb()` / `rgba()` with integer, float, or percent R/G/B; number or\n * percent alpha; commas or modern space-separated `R G B / A` syntax\n * - `hsl()` / `hsla()` with hue as a unitless number (deg) or with `deg`,\n * `rad`, `grad`, `turn` units; saturation/lightness as percent (or\n * unitless in the modern syntax); same alpha rules and separator rules\n * as `rgb()`\n * - The 148 CSS named colors plus `transparent`\n *\n * Not supported: `oklch()`, `lab()`, `color()`, `currentColor`, system\n * colors. Throws on anything unrecognized.\n *\n * Results are cached by input-string identity. Callers MUST treat the\n * returned tuple as read-only — mutation would corrupt the cache.\n */\nexport function parseColor(input: string): [number, number, number, number] {\n const cached = CACHE.get(input);\n if (cached !== undefined) return cached;\n const result = parseColorUncached(input);\n if (CACHE.size >= CACHE_MAX) CACHE.clear();\n CACHE.set(input, result);\n return result;\n}\n\nconst CACHE = new Map<string, [number, number, number, number]>();\nconst CACHE_MAX = 1024;\n\nfunction parseColorUncached(input: string): [number, number, number, number] {\n const s = input.trim();\n if (s.startsWith('#')) return parseHex(s);\n\n const lower = s.toLowerCase();\n\n // Named colors and `transparent` are checked before fn() forms because the\n // fn() regexes won't match them anyway and the lookup is cheaper than a\n // failed regex match.\n const named = NAMED_COLORS[lower];\n if (named !== undefined) return named;\n\n if (lower.startsWith('rgb')) {\n const parsed = parseRgbFunction(lower);\n if (parsed) return parsed;\n }\n if (lower.startsWith('hsl')) {\n const parsed = parseHslFunction(lower);\n if (parsed) return parsed;\n }\n\n throw new Error(`parseColor: unrecognized color \"${input}\"`);\n}\n\nconst RESOLVE_COLOR_CACHE_CAP = 1024;\nconst resolveColorCache = new Map<string, readonly [number, number, number, number]>();\n\n/** Cached `parseColor`. Use this from renderer hot paths (per-frame draw\n * callbacks, gradient ramp builds) so repeated color strings — which are\n * common when many objects share a fill — don't re-tokenize each frame.\n *\n * Cache is keyed by input-string identity, capped at ~1024 entries, and\n * cleared wholesale on overflow (no LRU tracking — simple is fine since\n * the working set in any one app is typically much smaller than the cap). */\nexport function resolveColor(input: string): readonly [number, number, number, number] {\n const hit = resolveColorCache.get(input);\n if (hit) return hit;\n if (resolveColorCache.size >= RESOLVE_COLOR_CACHE_CAP) {\n resolveColorCache.clear();\n }\n const parsed = parseColor(input);\n const frozen = parsed as readonly [number, number, number, number];\n resolveColorCache.set(input, frozen);\n return frozen;\n}\n\n/** @internal Test-only: drops the resolveColor memoization cache so tests\n * can assert behavior in isolation. Never call from production code. */\nexport function __resetResolveColorCache(): void {\n resolveColorCache.clear();\n}\n\n/** Same as `parseColor` but returns integer 0..255 components. */\nexport function parseColorToRgba255(input: string): [number, number, number, number] {\n const [r, g, b, a] = parseColor(input);\n return [\n Math.round(r * 255),\n Math.round(g * 255),\n Math.round(b * 255),\n Math.round(a * 255),\n ];\n}\n\n/**\n * Canonicalize a hex color string to lowercase `#rrggbb` or `#rrggbbaa`.\n *\n * Accepts: `#rgb`, `#rgba`, `#rrggbb`, `#rrggbbaa`, with or without the\n * leading `#`, any case. Throws on other inputs.\n */\nexport function normalizeHex(input: string): string {\n const trimmed = input.trim();\n const hashed = trimmed.startsWith('#') ? trimmed : `#${trimmed}`;\n const bytes = parseHexBytes(hashed);\n if (!bytes) throw new Error(`normalizeHex: invalid hex \"${input}\"`);\n const digits = bytes.map((n) => n.toString(16).padStart(2, '0')).join('');\n const namesAlpha = hashed.length === 5 || hashed.length === 9;\n return `#${namesAlpha ? digits : digits.slice(0, 6)}`;\n}\n\n/**\n * Parse a hex color into [r, g, b, a] with 0..1 components. Accepts the same\n * forms as `normalizeHex`, including a missing leading `#`.\n */\nexport function hexToRgba(input: string): [number, number, number, number] {\n return parseHex(normalizeHex(input));\n}\n\n/**\n * Format [r, g, b, a] (0..1 components) as a hex string. Emits `#rrggbb` when\n * alpha is exactly 1 (or omitted), otherwise `#rrggbbaa`.\n */\nexport function rgbaToHex(rgba: readonly [number, number, number, number] | readonly [number, number, number]): string {\n const [r, g, b] = rgba;\n const a = rgba.length === 4 ? rgba[3] : 1;\n const f = (n: number) => Math.max(0, Math.min(255, Math.round(n * 255))).toString(16).padStart(2, '0');\n const base = `#${f(r)}${f(g)}${f(b)}`;\n return a >= 1 ? base : `${base}${f(a)}`;\n}\n\nfunction parseHex(s: string): [number, number, number, number] {\n const bytes = parseHexBytes(s);\n if (!bytes) throw new Error(`parseColor: invalid hex \"${s}\"`);\n return [bytes[0] / 255, bytes[1] / 255, bytes[2] / 255, bytes[3] / 255];\n}\n\n/** Match `name( body )` and return the trimmed body, or null. */\nfunction unwrapFn(s: string, name: string): string | null {\n if (!s.startsWith(name + '(') || !s.endsWith(')')) return null;\n return s.slice(name.length + 1, -1).trim();\n}\n\n/**\n * Split a function body into the value tokens (3 channels + optional alpha).\n * Supports both legacy `r, g, b[, a]` and modern `r g b[ / a]` separators.\n * Returns null if the token count is wrong.\n */\nfunction splitChannels(body: string): { rgb: [string, string, string]; alpha: string | null } | null {\n if (body.includes(',')) {\n const parts = body.split(',').map((p) => p.trim());\n if (parts.length !== 3 && parts.length !== 4) return null;\n return {\n rgb: [parts[0], parts[1], parts[2]],\n alpha: parts.length === 4 ? parts[3] : null,\n };\n }\n // Modern syntax: whitespace-separated, with optional `/ alpha` tail.\n const slash = body.indexOf('/');\n const head = (slash === -1 ? body : body.slice(0, slash)).trim();\n const alpha = slash === -1 ? null : body.slice(slash + 1).trim();\n const parts = head.split(/\\s+/);\n if (parts.length !== 3) return null;\n if (alpha !== null && alpha === '') return null;\n return { rgb: [parts[0], parts[1], parts[2]], alpha };\n}\n\n/** Parse a channel value: integer, float, or percent. Returns 0..1 (with `max` as the integer scale). */\nfunction parseChannel(tok: string, max: number): number | null {\n if (tok.endsWith('%')) {\n const n = Number(tok.slice(0, -1));\n if (!Number.isFinite(n)) return null;\n return clamp01(n / 100);\n }\n const n = Number(tok);\n if (!Number.isFinite(n)) return null;\n return clamp01(n / max);\n}\n\n/** Alpha may be a number 0..1 or a percent. */\nfunction parseAlpha(tok: string | null): number {\n if (tok === null) return 1;\n if (tok.endsWith('%')) {\n const n = Number(tok.slice(0, -1));\n return Number.isFinite(n) ? clamp01(n / 100) : 1;\n }\n const n = Number(tok);\n return Number.isFinite(n) ? clamp01(n) : 1;\n}\n\nfunction parseRgbFunction(s: string): [number, number, number, number] | null {\n const body = unwrapFn(s, 'rgba') ?? unwrapFn(s, 'rgb');\n if (body === null) return null;\n const channels = splitChannels(body);\n if (!channels) return null;\n const r = parseChannel(channels.rgb[0], 255);\n const g = parseChannel(channels.rgb[1], 255);\n const b = parseChannel(channels.rgb[2], 255);\n if (r === null || g === null || b === null) return null;\n return [r, g, b, parseAlpha(channels.alpha)];\n}\n\nfunction parseHslFunction(s: string): [number, number, number, number] | null {\n const body = unwrapFn(s, 'hsla') ?? unwrapFn(s, 'hsl');\n if (body === null) return null;\n const channels = splitChannels(body);\n if (!channels) return null;\n const h = parseHue(channels.rgb[0]);\n const sat = parsePercentOrNumber(channels.rgb[1]);\n const lit = parsePercentOrNumber(channels.rgb[2]);\n if (h === null || sat === null || lit === null) return null;\n const [r, g, b] = hslToRgb(h, sat, lit);\n return [r, g, b, parseAlpha(channels.alpha)];\n}\n\n/** Parse a hue token: `<number>`, `<number>deg`, `<number>rad`, `<number>grad`, `<number>turn`. Returns degrees 0..360 (modulo). */\nfunction parseHue(tok: string): number | null {\n let n: number;\n if (tok.endsWith('deg')) n = Number(tok.slice(0, -3));\n else if (tok.endsWith('grad')) n = Number(tok.slice(0, -4)) * 0.9; // 400grad = 360deg\n else if (tok.endsWith('rad')) n = Number(tok.slice(0, -3)) * (180 / Math.PI);\n else if (tok.endsWith('turn')) n = Number(tok.slice(0, -4)) * 360;\n else n = Number(tok);\n if (!Number.isFinite(n)) return null;\n return ((n % 360) + 360) % 360;\n}\n\n/** Saturation/lightness may be percent (CSS Color 3) or unitless number 0..1 (modern). */\nfunction parsePercentOrNumber(tok: string): number | null {\n if (tok.endsWith('%')) {\n const n = Number(tok.slice(0, -1));\n return Number.isFinite(n) ? clamp01(n / 100) : null;\n }\n const n = Number(tok);\n return Number.isFinite(n) ? clamp01(n) : null;\n}\n\n/**\n * HSL → RGB, all components 0..1 except hue in degrees (0..360). paint's\n * `hslToSrgb` under the name this file's callers use.\n *\n * @internal Not part of the public API; not re-exported from the barrel.\n */\nexport const hslToRgb = hslToSrgb;\n\nfunction clamp01(n: number): number {\n return n < 0 ? 0 : n > 1 ? 1 : n;\n}\n\n// CSS Color Module Level 4 named colors. Stored as already-resolved tuples so\n// lookup is O(1) and avoids a second parse hop.\nconst NAMED_COLORS: Record<string, [number, number, number, number]> = (() => {\n const hex: Record<string, number> = {\n aliceblue: 0xf0f8ff, antiquewhite: 0xfaebd7, aqua: 0x00ffff, aquamarine: 0x7fffd4,\n azure: 0xf0ffff, beige: 0xf5f5dc, bisque: 0xffe4c4, black: 0x000000,\n blanchedalmond: 0xffebcd, blue: 0x0000ff, blueviolet: 0x8a2be2, brown: 0xa52a2a,\n burlywood: 0xdeb887, cadetblue: 0x5f9ea0, chartreuse: 0x7fff00, chocolate: 0xd2691e,\n coral: 0xff7f50, cornflowerblue: 0x6495ed, cornsilk: 0xfff8dc, crimson: 0xdc143c,\n cyan: 0x00ffff, darkblue: 0x00008b, darkcyan: 0x008b8b, darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9, darkgreen: 0x006400, darkgrey: 0xa9a9a9, darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b, darkolivegreen: 0x556b2f, darkorange: 0xff8c00, darkorchid: 0x9932cc,\n darkred: 0x8b0000, darksalmon: 0xe9967a, darkseagreen: 0x8fbc8f, darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f, darkslategrey: 0x2f4f4f, darkturquoise: 0x00ced1, darkviolet: 0x9400d3,\n deeppink: 0xff1493, deepskyblue: 0x00bfff, dimgray: 0x696969, dimgrey: 0x696969,\n dodgerblue: 0x1e90ff, firebrick: 0xb22222, floralwhite: 0xfffaf0, forestgreen: 0x228b22,\n fuchsia: 0xff00ff, gainsboro: 0xdcdcdc, ghostwhite: 0xf8f8ff, gold: 0xffd700,\n goldenrod: 0xdaa520, gray: 0x808080, green: 0x008000, greenyellow: 0xadff2f,\n grey: 0x808080, honeydew: 0xf0fff0, hotpink: 0xff69b4, indianred: 0xcd5c5c,\n indigo: 0x4b0082, ivory: 0xfffff0, khaki: 0xf0e68c, lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5, lawngreen: 0x7cfc00, lemonchiffon: 0xfffacd, lightblue: 0xadd8e6,\n lightcoral: 0xf08080, lightcyan: 0xe0ffff, lightgoldenrodyellow: 0xfafad2, lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90, lightgrey: 0xd3d3d3, lightpink: 0xffb6c1, lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa, lightskyblue: 0x87cefa, lightslategray: 0x778899, lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de, lightyellow: 0xffffe0, lime: 0x00ff00, limegreen: 0x32cd32,\n linen: 0xfaf0e6, magenta: 0xff00ff, maroon: 0x800000, mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd, mediumorchid: 0xba55d3, mediumpurple: 0x9370db, mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee, mediumspringgreen: 0x00fa9a, mediumturquoise: 0x48d1cc, mediumvioletred: 0xc71585,\n midnightblue: 0x191970, mintcream: 0xf5fffa, mistyrose: 0xffe4e1, moccasin: 0xffe4b5,\n navajowhite: 0xffdead, navy: 0x000080, oldlace: 0xfdf5e6, olive: 0x808000,\n olivedrab: 0x6b8e23, orange: 0xffa500, orangered: 0xff4500, orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa, palegreen: 0x98fb98, paleturquoise: 0xafeeee, palevioletred: 0xdb7093,\n papayawhip: 0xffefd5, peachpuff: 0xffdab9, peru: 0xcd853f, pink: 0xffc0cb,\n plum: 0xdda0dd, powderblue: 0xb0e0e6, purple: 0x800080, rebeccapurple: 0x663399,\n red: 0xff0000, rosybrown: 0xbc8f8f, royalblue: 0x4169e1, saddlebrown: 0x8b4513,\n salmon: 0xfa8072, sandybrown: 0xf4a460, seagreen: 0x2e8b57, seashell: 0xfff5ee,\n sienna: 0xa0522d, silver: 0xc0c0c0, skyblue: 0x87ceeb, slateblue: 0x6a5acd,\n slategray: 0x708090, slategrey: 0x708090, snow: 0xfffafa, springgreen: 0x00ff7f,\n steelblue: 0x4682b4, tan: 0xd2b48c, teal: 0x008080, thistle: 0xd8bfd8,\n tomato: 0xff6347, turquoise: 0x40e0d0, violet: 0xee82ee, wheat: 0xf5deb3,\n white: 0xffffff, whitesmoke: 0xf5f5f5, yellow: 0xffff00, yellowgreen: 0x9acd32,\n };\n const out: Record<string, [number, number, number, number]> = {\n transparent: [0, 0, 0, 0],\n };\n for (const name in hex) {\n const n = hex[name];\n out[name] = [((n >> 16) & 0xff) / 255, ((n >> 8) & 0xff) / 255, (n & 0xff) / 255, 1];\n }\n return out;\n})();\n"],"mappings":"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"}