@weasel-js/core 1.9.2 → 1.9.4

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 (542) hide show
  1. package/CHANGELOG.md +393 -0
  2. package/README.md +2 -2
  3. package/dist/WeaselProvider.js +5 -5
  4. package/dist/affordances/composeAffordanceLayer.js +10 -20
  5. package/dist/affordances/composeAffordanceLayer.js.map +1 -1
  6. package/dist/affordances/cornerResize.js +25 -17
  7. package/dist/affordances/cornerResize.js.map +1 -1
  8. package/dist/affordances/hitAffordanceRegions.js +27 -20
  9. package/dist/affordances/hitAffordanceRegions.js.map +1 -1
  10. package/dist/affordances/rotationHandle.js +18 -18
  11. package/dist/affordances/rotationHandle.js.map +1 -1
  12. package/dist/animation/behaviors/momentum.js +93 -55
  13. package/dist/animation/behaviors/momentum.js.map +1 -1
  14. package/dist/animation/loop.js +10 -12
  15. package/dist/animation/loop.js.map +1 -1
  16. package/dist/animation/reflow.js +8 -8
  17. package/dist/animation/reflow.js.map +1 -1
  18. package/dist/animation/stagger.js +64 -56
  19. package/dist/animation/stagger.js.map +1 -1
  20. package/dist/animation/timeline/booking.js +62 -54
  21. package/dist/animation/timeline/booking.js.map +1 -1
  22. package/dist/animation/timeline/createTimeline.js +85 -76
  23. package/dist/animation/timeline/createTimeline.js.map +1 -1
  24. package/dist/animation/timeline/sampleTrack.js +13 -5
  25. package/dist/animation/timeline/sampleTrack.js.map +1 -1
  26. package/dist/animation/useAnimator.js +45 -35
  27. package/dist/animation/useAnimator.js.map +1 -1
  28. package/dist/animation/wrappers/animateLifecycle.js +31 -24
  29. package/dist/animation/wrappers/animateLifecycle.js.map +1 -1
  30. package/dist/animation/wrappers/animateOnSetPose.js +28 -26
  31. package/dist/animation/wrappers/animateOnSetPose.js.map +1 -1
  32. package/dist/animation/wrappers/instantPose.js +13 -0
  33. package/dist/animation/wrappers/instantPose.js.map +1 -0
  34. package/dist/{poseDescriptor-D-OH-tu5.d.ts → autoPoseDescriptor-Ct7yqivU.d.ts} +28 -3
  35. package/dist/barrel/chrome.js +16 -0
  36. package/dist/barrel/input.js +19 -0
  37. package/dist/barrel/interactions.js +42 -0
  38. package/dist/barrel/paint.js +18 -0
  39. package/dist/barrel/paths.js +19 -0
  40. package/dist/barrel/renderer.js +20 -0
  41. package/dist/barrel/routing.js +51 -0
  42. package/dist/barrel/text.js +18 -0
  43. package/dist/barrel/viewport.js +52 -0
  44. package/dist/builtins-DPcdghtB.d.ts +1223 -0
  45. package/dist/canvas/Canvas.js +363 -448
  46. package/dist/canvas/Canvas.js.map +1 -1
  47. package/dist/canvas/CanvasView.js +164 -165
  48. package/dist/canvas/CanvasView.js.map +1 -1
  49. package/dist/canvas/CursorCoordsHud.js +37 -32
  50. package/dist/canvas/CursorCoordsHud.js.map +1 -1
  51. package/dist/canvas/DrawCanvas.js +49 -43
  52. package/dist/canvas/DrawCanvas.js.map +1 -1
  53. package/dist/canvas/MinimapCanvas.js +26 -25
  54. package/dist/canvas/MinimapCanvas.js.map +1 -1
  55. package/dist/canvas/NodeShape.js +59 -377
  56. package/dist/canvas/NodeShape.js.map +1 -1
  57. package/dist/canvas/PickHud.js +50 -47
  58. package/dist/canvas/PickHud.js.map +1 -1
  59. package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js +167 -0
  60. package/dist/canvas/SceneCanvas/GestureDispatcherMounter.js.map +1 -0
  61. package/dist/canvas/SceneCanvas/PointerProviderIfRoot.js +13 -13
  62. package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js +67 -0
  63. package/dist/canvas/SceneCanvas/StandardActionsRegistrar.js.map +1 -0
  64. package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js +16 -0
  65. package/dist/canvas/SceneCanvas/ToolKeybindingsMounter.js.map +1 -0
  66. package/dist/canvas/SceneCanvas/coordTrace.js +10 -0
  67. package/dist/canvas/SceneCanvas/coordTrace.js.map +1 -0
  68. package/dist/canvas/SceneCanvas/defaultNodeProperties.js +146 -92
  69. package/dist/canvas/SceneCanvas/defaultNodeProperties.js.map +1 -1
  70. package/dist/canvas/SceneCanvas/defaultNodeRouting.js +9 -8
  71. package/dist/canvas/SceneCanvas/defaultNodeRouting.js.map +1 -1
  72. package/dist/canvas/SceneCanvas/features.js +1 -0
  73. package/dist/canvas/SceneCanvas/features.js.map +1 -1
  74. package/dist/canvas/SceneCanvas/isDev.js +12 -0
  75. package/dist/canvas/SceneCanvas/isDev.js.map +1 -0
  76. package/dist/canvas/SceneCanvas/poseGeometry.js +29 -28
  77. package/dist/canvas/SceneCanvas/poseGeometry.js.map +1 -1
  78. package/dist/canvas/SceneCanvas/poseRegistrars.js +13 -0
  79. package/dist/canvas/SceneCanvas/poseRegistrars.js.map +1 -0
  80. package/dist/canvas/SceneCanvas/props.js +38 -0
  81. package/dist/canvas/SceneCanvas/props.js.map +1 -0
  82. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js +21 -62
  83. package/dist/canvas/SceneCanvas/useBuiltinShapeTools.js.map +1 -1
  84. package/dist/canvas/SceneCanvas/useDispatcherOverlayLayer.js.map +1 -1
  85. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js +46 -48
  86. package/dist/canvas/SceneCanvas/usePreviewGhostLayer.js.map +1 -1
  87. package/dist/canvas/SceneCanvas/useSceneSelectTool.js +33 -33
  88. package/dist/canvas/SceneCanvas/useSceneSelectTool.js.map +1 -1
  89. package/dist/canvas/SceneCanvas.js +534 -788
  90. package/dist/canvas/SceneCanvas.js.map +1 -1
  91. package/dist/canvas/SceneViewCanvas.js +45 -43
  92. package/dist/canvas/SceneViewCanvas.js.map +1 -1
  93. package/dist/canvas/buildSceneLayer.js +91 -0
  94. package/dist/canvas/buildSceneLayer.js.map +1 -0
  95. package/dist/canvas/buildSceneTree.js +16 -19
  96. package/dist/canvas/buildSceneTree.js.map +1 -1
  97. package/dist/canvas/canvasRenderer.js +68 -52
  98. package/dist/canvas/canvasRenderer.js.map +1 -1
  99. package/dist/canvas/deps/changes.js +13 -0
  100. package/dist/canvas/deps/changes.js.map +1 -0
  101. package/dist/canvas/deps/editAnchors.js +28 -28
  102. package/dist/canvas/deps/insert.js +119 -91
  103. package/dist/canvas/deps/insert.js.map +1 -1
  104. package/dist/canvas/deps/slice.js +46 -45
  105. package/dist/canvas/deps/slice.js.map +1 -1
  106. package/dist/canvas/deps/textEdit.js +10 -9
  107. package/dist/canvas/deps/textEdit.js.map +1 -1
  108. package/dist/canvas/derivedPath.js +46 -23
  109. package/dist/canvas/derivedPath.js.map +1 -1
  110. package/dist/canvas/getNodeAtPoint.js +7 -7
  111. package/dist/canvas/getNodeAtPoint.js.map +1 -1
  112. package/dist/canvas/hud.module.js +1 -1
  113. package/dist/canvas/hud.module.js.map +1 -1
  114. package/dist/canvas/kitRequirements.js +2 -2
  115. package/dist/canvas/kitRequirements.js.map +1 -1
  116. package/dist/canvas/layerOrder.js +13 -6
  117. package/dist/canvas/layerOrder.js.map +1 -1
  118. package/dist/canvas/minimapMath.js +12 -10
  119. package/dist/canvas/minimapMath.js.map +1 -1
  120. package/dist/canvas/nodeShapes/derivedPainter.js +34 -0
  121. package/dist/canvas/nodeShapes/derivedPainter.js.map +1 -0
  122. package/dist/canvas/nodeShapes/imagePainter.js +87 -0
  123. package/dist/canvas/nodeShapes/imagePainter.js.map +1 -0
  124. package/dist/canvas/nodeShapes/memo.js +9 -0
  125. package/dist/canvas/nodeShapes/memo.js.map +1 -0
  126. package/dist/canvas/nodeShapes/nodePaint.js +57 -0
  127. package/dist/canvas/nodeShapes/nodePaint.js.map +1 -0
  128. package/dist/canvas/nodeShapes/pathPainter.js +38 -0
  129. package/dist/canvas/nodeShapes/pathPainter.js.map +1 -0
  130. package/dist/canvas/nodeShapes/poseBox.js +20 -0
  131. package/dist/canvas/nodeShapes/poseBox.js.map +1 -0
  132. package/dist/canvas/nodeShapes/rectFallbackPainter.js +38 -0
  133. package/dist/canvas/nodeShapes/rectFallbackPainter.js.map +1 -0
  134. package/dist/canvas/nodeShapes/shapePainter.js +72 -0
  135. package/dist/canvas/nodeShapes/shapePainter.js.map +1 -0
  136. package/dist/canvas/nodeShapes/textPainter.js +55 -0
  137. package/dist/canvas/nodeShapes/textPainter.js.map +1 -0
  138. package/dist/canvas/overlayRoleStrokes.js.map +1 -1
  139. package/dist/canvas/paintCull.js +10 -11
  140. package/dist/canvas/paintCull.js.map +1 -1
  141. package/dist/canvas/pickWalk.js +52 -63
  142. package/dist/canvas/pickWalk.js.map +1 -1
  143. package/dist/canvas/poseRotation.js +11 -23
  144. package/dist/canvas/poseRotation.js.map +1 -1
  145. package/dist/canvas/renderDebugSnapshot.js +5 -5
  146. package/dist/canvas/renderSceneToPixels.js +3 -1
  147. package/dist/canvas/renderSceneToPixels.js.map +1 -1
  148. package/dist/canvas/sceneAdapter.js +66 -148
  149. package/dist/canvas/sceneAdapter.js.map +1 -1
  150. package/dist/canvas/sceneClipboard.js +112 -0
  151. package/dist/canvas/sceneClipboard.js.map +1 -0
  152. package/dist/canvas/sceneSlotWiring.js +4 -4
  153. package/dist/canvas/sceneSlotWiring.js.map +1 -1
  154. package/dist/canvas/sceneViewRender.js +39 -40
  155. package/dist/canvas/sceneViewRender.js.map +1 -1
  156. package/dist/canvas/useCanvasRenderer.js +14 -6
  157. package/dist/canvas/useCanvasRenderer.js.map +1 -1
  158. package/dist/canvas/useCanvasView.js +58 -0
  159. package/dist/canvas/useCanvasView.js.map +1 -0
  160. package/dist/canvas/useFrameLoop.js +35 -26
  161. package/dist/canvas/useFrameLoop.js.map +1 -1
  162. package/dist/canvas/useSceneLayerList.js +21 -0
  163. package/dist/canvas/useSceneLayerList.js.map +1 -0
  164. package/dist/clipboard.d.ts +10 -6
  165. package/dist/clone.d.ts +4 -3
  166. package/dist/core/adapters/arrayAdapter.js +48 -39
  167. package/dist/core/adapters/arrayAdapter.js.map +1 -1
  168. package/dist/core/device/index.js +5 -4
  169. package/dist/core/device/useDeviceProfile.js +38 -44
  170. package/dist/core/device/useDeviceProfile.js.map +1 -1
  171. package/dist/core/device/watchDevicePixelRatio.js +17 -0
  172. package/dist/core/device/watchDevicePixelRatio.js.map +1 -0
  173. package/dist/core/fillInPoseFrame.js.map +1 -1
  174. package/dist/core/geometry/poseDescriptor.js +21 -19
  175. package/dist/core/geometry/poseDescriptor.js.map +1 -1
  176. package/dist/core/geometry/poseFrame.js +44 -0
  177. package/dist/core/geometry/poseFrame.js.map +1 -0
  178. package/dist/core/geometry/poseRotation.js.map +1 -1
  179. package/dist/core/geometry/regionHit.js +9 -10
  180. package/dist/core/geometry/regionHit.js.map +1 -1
  181. package/dist/core/geometry/unionBounds.js +31 -29
  182. package/dist/core/geometry/unionBounds.js.map +1 -1
  183. package/dist/core/isPlainObject.js +2 -11
  184. package/dist/core/ops/arrange.js +1 -0
  185. package/dist/core/ops/arrange.js.map +1 -1
  186. package/dist/core/ops/create.js +10 -5
  187. package/dist/core/ops/create.js.map +1 -1
  188. package/dist/core/ops/delete.js +12 -24
  189. package/dist/core/ops/delete.js.map +1 -1
  190. package/dist/core/ops/reorder/index.js +43 -40
  191. package/dist/core/ops/reorder/index.js.map +1 -1
  192. package/dist/core/ops/reorder/setChildOrder.js +34 -0
  193. package/dist/core/ops/reorder/setChildOrder.js.map +1 -0
  194. package/dist/core/paintKinds.js +5 -5
  195. package/dist/core/paintKinds.js.map +1 -1
  196. package/dist/core/scene/NodeProperties.js.map +1 -1
  197. package/dist/core/scene/appliedLog.js +37 -0
  198. package/dist/core/scene/appliedLog.js.map +1 -0
  199. package/dist/core/scene/arrivalWindow.js +101 -0
  200. package/dist/core/scene/arrivalWindow.js.map +1 -0
  201. package/dist/core/scene/derivedPath.js.map +1 -1
  202. package/dist/core/scene/historyFacade.js +84 -0
  203. package/dist/core/scene/historyFacade.js.map +1 -0
  204. package/dist/core/scene/kitOps.js +173 -0
  205. package/dist/core/scene/kitOps.js.map +1 -0
  206. package/dist/core/scene/layerStack.js +38 -0
  207. package/dist/core/scene/layerStack.js.map +1 -0
  208. package/dist/core/scene/lockGuard.js +37 -0
  209. package/dist/core/scene/lockGuard.js.map +1 -0
  210. package/dist/core/scene/nodeFnFields.js +5 -6
  211. package/dist/core/scene/nodeFnFields.js.map +1 -1
  212. package/dist/core/scene/nodeMemo.js +45 -19
  213. package/dist/core/scene/nodeMemo.js.map +1 -1
  214. package/dist/core/scene/nodeStore.js +126 -0
  215. package/dist/core/scene/nodeStore.js.map +1 -0
  216. package/dist/core/scene/pickability.js +6 -0
  217. package/dist/core/scene/pickability.js.map +1 -0
  218. package/dist/core/scene/poseFeed.js +38 -38
  219. package/dist/core/scene/poseFeed.js.map +1 -1
  220. package/dist/core/scene/poseOverrides.js +34 -38
  221. package/dist/core/scene/poseOverrides.js.map +1 -1
  222. package/dist/core/scene/renderOrder.js +84 -0
  223. package/dist/core/scene/renderOrder.js.map +1 -0
  224. package/dist/core/scene/scene.js +289 -866
  225. package/dist/core/scene/scene.js.map +1 -1
  226. package/dist/core/scene/serialization.js +68 -0
  227. package/dist/core/scene/serialization.js.map +1 -0
  228. package/dist/core/scene/treeOrder.js +13 -0
  229. package/dist/core/scene/treeOrder.js.map +1 -0
  230. package/dist/core/scene/types.js.map +1 -1
  231. package/dist/core/viewport/meanScale.js +1 -1
  232. package/dist/core/viewport/meanScale.js.map +1 -1
  233. package/dist/core/viewport/view.js +12 -12
  234. package/dist/core/viewport/view.js.map +1 -1
  235. package/dist/core/viewport/zoomBounds.js +10 -8
  236. package/dist/core/viewport/zoomBounds.js.map +1 -1
  237. package/dist/{cornerHandles-BCrDp_mH.d.ts → cornerHandles-CtCb8a3G.d.ts} +1 -1
  238. package/dist/debug/createDebugOverlayLayer.js +14 -14
  239. package/dist/debug/createDebugOverlayLayer.js.map +1 -1
  240. package/dist/debug/flag.js +2 -41
  241. package/dist/features/chrome-caps/useHoverTracking.js +22 -17
  242. package/dist/features/chrome-caps/useHoverTracking.js.map +1 -1
  243. package/dist/features/focus/gateLayer.js +3 -4
  244. package/dist/features/focus/gateLayer.js.map +1 -1
  245. package/dist/features/images/imageCache.js +19 -9
  246. package/dist/features/images/imageCache.js.map +1 -1
  247. package/dist/features/ingestion/contentHandlers.js +14 -11
  248. package/dist/features/ingestion/contentHandlers.js.map +1 -1
  249. package/dist/features/ingestion/index.js +1 -1
  250. package/dist/features/ingestion/registerKitHandlers.js +7 -7
  251. package/dist/features/ingestion/weaselJsonHandler.js +17 -14
  252. package/dist/features/ingestion/weaselJsonHandler.js.map +1 -1
  253. package/dist/features/meshPaint/lazyKind.js +201 -35
  254. package/dist/features/meshPaint/lazyKind.js.map +1 -1
  255. package/dist/features/meshPaint/meshPaint.js +82 -79
  256. package/dist/features/meshPaint/meshPaint.js.map +1 -1
  257. package/dist/features/minimap/createMinimapContribution.js +42 -42
  258. package/dist/features/minimap/layers.js +44 -62
  259. package/dist/features/minimap/layers.js.map +1 -1
  260. package/dist/features/parallax/createParallaxPlane.js +10 -14
  261. package/dist/features/parallax/createParallaxPlane.js.map +1 -1
  262. package/dist/features/paths/anchorEdits.js +19 -8
  263. package/dist/features/paths/anchorEdits.js.map +1 -1
  264. package/dist/features/paths/anchors.js +31 -26
  265. package/dist/features/paths/anchors.js.map +1 -1
  266. package/dist/features/paths/booleans.js +2 -2
  267. package/dist/features/paths/index.js +13 -11
  268. package/dist/features/paths/markerCommands.js +37 -36
  269. package/dist/features/paths/markerCommands.js.map +1 -1
  270. package/dist/features/paths/pathInWorld.js +19 -19
  271. package/dist/features/paths/pathInWorld.js.map +1 -1
  272. package/dist/features/paths/pathLayer.js.map +1 -1
  273. package/dist/features/paths/strokeToPath.js +40 -0
  274. package/dist/features/paths/strokeToPath.js.map +1 -0
  275. package/dist/features/paths/tessellate/stroke.js.map +1 -1
  276. package/dist/features/patterns/commandPaint.js +18 -0
  277. package/dist/features/patterns/commandPaint.js.map +1 -0
  278. package/dist/features/patterns/index.js +5 -17
  279. package/dist/features/patterns/index.js.map +1 -1
  280. package/dist/features/patterns/rasterizeTile.js +17 -0
  281. package/dist/features/patterns/rasterizeTile.js.map +1 -0
  282. package/dist/features/patterns/resolveSpec.js +52 -44
  283. package/dist/features/patterns/resolveSpec.js.map +1 -1
  284. package/dist/features/poseRun/usePoseRun.js +8 -3
  285. package/dist/features/poseRun/usePoseRun.js.map +1 -1
  286. package/dist/features/selection/SelectionContext.js +5 -0
  287. package/dist/features/selection/SelectionContext.js.map +1 -1
  288. package/dist/features/selection/overlay.js +18 -18
  289. package/dist/features/selection/overlay.js.map +1 -1
  290. package/dist/features/text/domOffsets.js +82 -0
  291. package/dist/features/text/domOffsets.js.map +1 -0
  292. package/dist/features/text/domRuns.js +103 -131
  293. package/dist/features/text/domRuns.js.map +1 -1
  294. package/dist/features/text/hitTest.js +5 -2
  295. package/dist/features/text/hitTest.js.map +1 -1
  296. package/dist/features/text/isTextData.js +8 -0
  297. package/dist/features/text/isTextData.js.map +1 -0
  298. package/dist/features/text/overlayDirection.js +15 -0
  299. package/dist/features/text/overlayDirection.js.map +1 -0
  300. package/dist/features/text/runs/rangeStyle.js +32 -34
  301. package/dist/features/text/runs/rangeStyle.js.map +1 -1
  302. package/dist/features/text/textCommand.js +34 -33
  303. package/dist/features/text/textCommand.js.map +1 -1
  304. package/dist/features/text/textToPath.js +40 -40
  305. package/dist/features/text/textToPath.js.map +1 -1
  306. package/dist/features/text/useSceneTextEdit.js +76 -82
  307. package/dist/features/text/useSceneTextEdit.js.map +1 -1
  308. package/dist/features/text/useTextEdit.js +184 -160
  309. package/dist/features/text/useTextEdit.js.map +1 -1
  310. package/dist/features/tiling/createTiledLayer.js +24 -22
  311. package/dist/features/tiling/createTiledLayer.js.map +1 -1
  312. package/dist/index.d.ts +11010 -7700
  313. package/dist/index.js +316 -309
  314. package/dist/input/keyState.js +42 -43
  315. package/dist/input/keyState.js.map +1 -1
  316. package/dist/input/useKeyModifiers.js +11 -0
  317. package/dist/input/useKeyModifiers.js.map +1 -0
  318. package/dist/interactions/actions/align/align.js +8 -8
  319. package/dist/interactions/actions/clipboard/clipboardOps.js +34 -32
  320. package/dist/interactions/actions/clipboard/clipboardOps.js.map +1 -1
  321. package/dist/interactions/actions/clipboard/materializePaste.js +10 -7
  322. package/dist/interactions/actions/clipboard/materializePaste.js.map +1 -1
  323. package/dist/interactions/actions/clipboard/wireFormat.js.map +1 -1
  324. package/dist/interactions/actions/clone/behaviors/cloneByAltDrag.js.map +1 -1
  325. package/dist/interactions/actions/defaultCommitAdapter.js +20 -18
  326. package/dist/interactions/actions/defaultCommitAdapter.js.map +1 -1
  327. package/dist/interactions/actions/defaults/align.js +9 -10
  328. package/dist/interactions/actions/defaults/align.js.map +1 -1
  329. package/dist/interactions/actions/defaults/anchorEditing.js +59 -81
  330. package/dist/interactions/actions/defaults/anchorEditing.js.map +1 -1
  331. package/dist/interactions/actions/defaults/areaSelect.js +35 -38
  332. package/dist/interactions/actions/defaults/areaSelect.js.map +1 -1
  333. package/dist/interactions/actions/defaults/clipboard.js +26 -10
  334. package/dist/interactions/actions/defaults/clipboard.js.map +1 -1
  335. package/dist/interactions/actions/defaults/clone.js +44 -60
  336. package/dist/interactions/actions/defaults/clone.js.map +1 -1
  337. package/dist/interactions/actions/defaults/copySubtree.js +40 -0
  338. package/dist/interactions/actions/defaults/copySubtree.js.map +1 -0
  339. package/dist/interactions/actions/defaults/distribute.js +14 -13
  340. package/dist/interactions/actions/defaults/distribute.js.map +1 -1
  341. package/dist/interactions/actions/defaults/duplicate.js +17 -57
  342. package/dist/interactions/actions/defaults/duplicate.js.map +1 -1
  343. package/dist/interactions/actions/defaults/editAnchors.js +18 -18
  344. package/dist/interactions/actions/defaults/enterTextEdit.js.map +1 -1
  345. package/dist/interactions/actions/defaults/flip.js +52 -46
  346. package/dist/interactions/actions/defaults/flip.js.map +1 -1
  347. package/dist/interactions/actions/defaults/group.js +43 -48
  348. package/dist/interactions/actions/defaults/group.js.map +1 -1
  349. package/dist/interactions/actions/defaults/ingest.js +35 -33
  350. package/dist/interactions/actions/defaults/ingest.js.map +1 -1
  351. package/dist/interactions/actions/defaults/insert.js +50 -51
  352. package/dist/interactions/actions/defaults/insert.js.map +1 -1
  353. package/dist/interactions/actions/defaults/insertPathAnchor.js +7 -7
  354. package/dist/interactions/actions/defaults/lassoSelect.js +67 -70
  355. package/dist/interactions/actions/defaults/lassoSelect.js.map +1 -1
  356. package/dist/interactions/actions/defaults/move.js +267 -249
  357. package/dist/interactions/actions/defaults/move.js.map +1 -1
  358. package/dist/interactions/actions/defaults/nudge.js +40 -68
  359. package/dist/interactions/actions/defaults/nudge.js.map +1 -1
  360. package/dist/interactions/actions/defaults/nudgeSteps.js +37 -0
  361. package/dist/interactions/actions/defaults/nudgeSteps.js.map +1 -0
  362. package/dist/interactions/actions/defaults/reorder.js +2 -0
  363. package/dist/interactions/actions/defaults/reorder.js.map +1 -1
  364. package/dist/interactions/actions/defaults/resize.js +104 -98
  365. package/dist/interactions/actions/defaults/resize.js.map +1 -1
  366. package/dist/interactions/actions/defaults/rotate.js +111 -110
  367. package/dist/interactions/actions/defaults/rotate.js.map +1 -1
  368. package/dist/interactions/actions/defaults/setFill.js +7 -7
  369. package/dist/interactions/actions/defaults/setFillOpacity.js +4 -4
  370. package/dist/interactions/actions/defaults/setStroke.js +12 -12
  371. package/dist/interactions/actions/defaults/setStrokeOpacity.js +6 -6
  372. package/dist/interactions/actions/defaults/sliceOps.js +19 -19
  373. package/dist/interactions/actions/defaults/viewportDragPan.js +37 -26
  374. package/dist/interactions/actions/defaults/viewportDragPan.js.map +1 -1
  375. package/dist/interactions/actions/edit-anchors/geometry.js +28 -23
  376. package/dist/interactions/actions/edit-anchors/geometry.js.map +1 -1
  377. package/dist/interactions/actions/flip/helpers.js +30 -17
  378. package/dist/interactions/actions/flip/helpers.js.map +1 -1
  379. package/dist/interactions/actions/hitSelection.js +8 -0
  380. package/dist/interactions/actions/hitSelection.js.map +1 -0
  381. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js +14 -18
  382. package/dist/interactions/actions/lasso-select/behaviors/selectFromLasso.js.map +1 -1
  383. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js +5 -5
  384. package/dist/interactions/actions/move/behaviors/snapBackOrDelete.js.map +1 -1
  385. package/dist/interactions/actions/move/behaviors/snapToContainer.js +32 -21
  386. package/dist/interactions/actions/move/behaviors/snapToContainer.js.map +1 -1
  387. package/dist/interactions/actions/move/gestureAdapter.js +32 -15
  388. package/dist/interactions/actions/move/gestureAdapter.js.map +1 -1
  389. package/dist/interactions/actions/move/landedDescendants.js +33 -0
  390. package/dist/interactions/actions/move/landedDescendants.js.map +1 -0
  391. package/dist/interactions/actions/outlines/createOutlines.js +18 -18
  392. package/dist/interactions/actions/poseDescriptorDep.js +16 -4
  393. package/dist/interactions/actions/poseDescriptorDep.js.map +1 -1
  394. package/dist/interactions/actions/poseFrame.js +11 -6
  395. package/dist/interactions/actions/poseFrame.js.map +1 -1
  396. package/dist/interactions/actions/previewOverrides.js +5 -5
  397. package/dist/interactions/actions/previewOverrides.js.map +1 -1
  398. package/dist/interactions/actions/selectionSubtree.js +69 -0
  399. package/dist/interactions/actions/selectionSubtree.js.map +1 -0
  400. package/dist/interactions/actions/useStandardActions.js +66 -62
  401. package/dist/interactions/actions/useStandardActions.js.map +1 -1
  402. package/dist/interactions/gestures/dragGesture/dragGesture.js +4 -7
  403. package/dist/interactions/gestures/dragGesture/dragGesture.js.map +1 -1
  404. package/dist/interactions/gestures/dragGesture/dragPointOf.js +23 -0
  405. package/dist/interactions/gestures/dragGesture/dragPointOf.js.map +1 -0
  406. package/dist/interactions/gestures/handleDrag/handleDrag.js +21 -26
  407. package/dist/interactions/gestures/handleDrag/handleDrag.js.map +1 -1
  408. package/dist/interactions/gestures/pointerDrag/pointerDrag.js +8 -6
  409. package/dist/interactions/gestures/pointerDrag/pointerDrag.js.map +1 -1
  410. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js +8 -4
  411. package/dist/interactions/gestures/thresholdDrag/thresholdDrag.js.map +1 -1
  412. package/dist/{math-Drrw4ewZ.d.ts → math-J-ACHyEg.d.ts} +1 -2
  413. package/dist/math.d.ts +2 -3
  414. package/dist/move.d.ts +12 -11
  415. package/dist/{originProjection-DEklpDc_.d.ts → originProjection-gHnOup4e.d.ts} +1 -1
  416. package/dist/{registerProgram-BMZRDgrh.d.ts → registerProgram-T9S_PfAX.d.ts} +18 -7
  417. package/dist/renderer/DrawCommand.js.map +1 -1
  418. package/dist/renderer/WeaselRenderer.js +75 -73
  419. package/dist/renderer/WeaselRenderer.js.map +1 -1
  420. package/dist/renderer/cache/GLImageCache.js +15 -5
  421. package/dist/renderer/cache/GLImageCache.js.map +1 -1
  422. package/dist/renderer/cache/GLMeshCache.js +23 -23
  423. package/dist/renderer/cache/GLMeshCache.js.map +1 -1
  424. package/dist/renderer/cache/GLTextureCache.js +18 -1
  425. package/dist/renderer/cache/GLTextureCache.js.map +1 -1
  426. package/dist/renderer/cache/cache.js.map +1 -1
  427. package/dist/renderer/cache/markerCommandCache.js.map +1 -1
  428. package/dist/renderer/cache/strokeMeshCache.js.map +1 -1
  429. package/dist/renderer/cullDrawCommands.js +11 -11
  430. package/dist/renderer/draw/batch.js +133 -0
  431. package/dist/renderer/draw/batch.js.map +1 -0
  432. package/dist/renderer/draw/clip.js +89 -0
  433. package/dist/renderer/draw/clip.js.map +1 -0
  434. package/dist/renderer/draw/customShader.js +230 -0
  435. package/dist/renderer/draw/customShader.js.map +1 -0
  436. package/dist/renderer/draw/drawTriangles.js +8 -0
  437. package/dist/renderer/draw/drawTriangles.js.map +1 -0
  438. package/dist/renderer/draw/effects.js +28 -0
  439. package/dist/renderer/draw/effects.js.map +1 -0
  440. package/dist/renderer/draw/flushBatch.js +35 -0
  441. package/dist/renderer/draw/flushBatch.js.map +1 -0
  442. package/dist/renderer/draw/gradient.js +90 -0
  443. package/dist/renderer/draw/gradient.js.map +1 -0
  444. package/dist/renderer/draw/image.js +38 -0
  445. package/dist/renderer/draw/image.js.map +1 -0
  446. package/dist/renderer/draw/mesh.js +16 -0
  447. package/dist/renderer/draw/mesh.js.map +1 -0
  448. package/dist/renderer/draw/paintBind.js +70 -0
  449. package/dist/renderer/draw/paintBind.js.map +1 -0
  450. package/dist/renderer/draw/pathPaint.js +142 -0
  451. package/dist/renderer/draw/pathPaint.js.map +1 -0
  452. package/dist/renderer/draw/scratchPass.js +83 -0
  453. package/dist/renderer/draw/scratchPass.js.map +1 -0
  454. package/dist/renderer/draw/stencil.js +28 -0
  455. package/dist/renderer/draw/stencil.js.map +1 -0
  456. package/dist/renderer/draw/text.js +167 -0
  457. package/dist/renderer/draw/text.js.map +1 -0
  458. package/dist/renderer/draw/uniforms.js +77 -0
  459. package/dist/renderer/draw/uniforms.js.map +1 -0
  460. package/dist/renderer/draw.js +60 -1116
  461. package/dist/renderer/draw.js.map +1 -1
  462. package/dist/renderer/effects/EffectTargets.js +3 -0
  463. package/dist/renderer/effects/EffectTargets.js.map +1 -1
  464. package/dist/renderer/effects/composite.js +7 -5
  465. package/dist/renderer/effects/composite.js.map +1 -1
  466. package/dist/renderer/index.js +18 -17
  467. package/dist/renderer/math/color.js +63 -83
  468. package/dist/renderer/math/color.js.map +1 -1
  469. package/dist/renderer/math/mat3.js +15 -11
  470. package/dist/renderer/math/mat3.js.map +1 -1
  471. package/dist/renderer/math/viewToMat3.js +1 -1
  472. package/dist/renderer/math/viewToMat3.js.map +1 -1
  473. package/dist/renderer/shaders/ShaderProgram.js +13 -13
  474. package/dist/renderer/shaders/ShaderProgram.js.map +1 -1
  475. package/dist/renderer/shaders/glyphPaint.js +3 -3
  476. package/dist/renderer/shaders/glyphPaint.js.map +1 -1
  477. package/dist/renderer/shaders/gradFill.js +2 -1
  478. package/dist/renderer/shaders/gradFill.js.map +1 -1
  479. package/dist/renderer/shaders/pathFill.js +2 -1
  480. package/dist/renderer/shaders/pathFill.js.map +1 -1
  481. package/dist/renderer/shaders/patternFill.js +2 -1
  482. package/dist/renderer/shaders/patternFill.js.map +1 -1
  483. package/dist/renderer/shaders/registerProgram.js.map +1 -1
  484. package/dist/renderer/strokeLengths.js.map +1 -1
  485. package/dist/renderer/textures/registerTexture.js +25 -5
  486. package/dist/renderer/textures/registerTexture.js.map +1 -1
  487. package/dist/renderer.d.ts +16 -15
  488. package/dist/renderer.js +17 -16
  489. package/dist/resize.d.ts +5 -6
  490. package/dist/resize.js +5 -5
  491. package/dist/style.css +1 -1
  492. package/dist/test-hook/install.js +12 -6
  493. package/dist/test-hook/install.js.map +1 -1
  494. package/dist/{test-seams-CuIxe0xY.d.ts → test-seams-DM2B87-g.d.ts} +4 -4
  495. package/dist/test-seams.d.ts +2 -2
  496. package/dist/tools/builtin/ellipse/useEllipseTool.js +1 -0
  497. package/dist/tools/builtin/ellipse/useEllipseTool.js.map +1 -1
  498. package/dist/tools/builtin/hand/useHandTool.js +1 -0
  499. package/dist/tools/builtin/hand/useHandTool.js.map +1 -1
  500. package/dist/tools/builtin/lasso/useLassoTool.js +11 -11
  501. package/dist/tools/builtin/lasso/useLassoTool.js.map +1 -1
  502. package/dist/tools/builtin/line/useLineTool.js +1 -0
  503. package/dist/tools/builtin/line/useLineTool.js.map +1 -1
  504. package/dist/tools/builtin/pen/usePenTool.js +153 -103
  505. package/dist/tools/builtin/pen/usePenTool.js.map +1 -1
  506. package/dist/tools/builtin/pencil/usePencilTool.js +1 -0
  507. package/dist/tools/builtin/pencil/usePencilTool.js.map +1 -1
  508. package/dist/tools/builtin/polygon/usePolygonTool.js +13 -8
  509. package/dist/tools/builtin/polygon/usePolygonTool.js.map +1 -1
  510. package/dist/tools/builtin/rect/useRectTool.js +1 -0
  511. package/dist/tools/builtin/rect/useRectTool.js.map +1 -1
  512. package/dist/tools/builtin/select/selectionContributions.js +24 -23
  513. package/dist/tools/builtin/select/selectionContributions.js.map +1 -1
  514. package/dist/tools/builtin/select/useSelectTool.js +51 -48
  515. package/dist/tools/builtin/select/useSelectTool.js.map +1 -1
  516. package/dist/tools/builtin/shared/pointerFollower.js +17 -0
  517. package/dist/tools/builtin/shared/pointerFollower.js.map +1 -0
  518. package/dist/tools/builtin/slice/useSliceTool.js +49 -54
  519. package/dist/tools/builtin/slice/useSliceTool.js.map +1 -1
  520. package/dist/tools/builtin/star/useStarTool.js +22 -16
  521. package/dist/tools/builtin/star/useStarTool.js.map +1 -1
  522. package/dist/tools/builtin/text/useTextTool.js +13 -2
  523. package/dist/tools/builtin/text/useTextTool.js.map +1 -1
  524. package/dist/tools/useKeybindings.js +14 -30
  525. package/dist/tools/useKeybindings.js.map +1 -1
  526. package/dist/{types-B_9g6hMM.d.ts → types-B4iJRHC3.d.ts} +5 -1
  527. package/dist/{types-A37hYkeR.d.ts → types-k-5Oqh-U.d.ts} +31 -7
  528. package/dist/util/color.js +3 -3
  529. package/dist/util/color.js.map +1 -1
  530. package/dist/util/paint.js.map +1 -1
  531. package/dist/version.js +1 -1
  532. package/package.json +20 -18
  533. package/dist/autoPoseDescriptor-vCdt55xm.d.ts +0 -27
  534. package/dist/builtins-C-VgUlWI.d.ts +0 -4514
  535. package/dist/core/isPlainObject.js.map +0 -1
  536. package/dist/debug/flag.js.map +0 -1
  537. package/dist/interactions/actions/defaults/freshNodeId.js +0 -10
  538. package/dist/interactions/actions/defaults/freshNodeId.js.map +0 -1
  539. package/dist/renderer/shaders/imageFill.js +0 -14
  540. package/dist/renderer/shaders/imageFill.js.map +0 -1
  541. package/dist/tools/prefs.js +0 -47
  542. package/dist/tools/prefs.js.map +0 -1
@@ -1,10 +1,12 @@
1
1
  import { useVisibleRaf as e } from "../../scheduling/useVisibleRaf.js";
2
- import { SMALL_CAPS_SCALE_PROPERTY as t, appendOverlayText as n, charOffsetToDomPosition as r, domPositionToCharOffset as i, domToRuns as a, normalizeSmallCaps as o, runsToDom as s } from "./domRuns.js";
2
+ import { charOffsetToDomPosition as t, domPositionToCharOffset as n } from "./domOffsets.js";
3
+ import { SMALL_CAPS_SCALE_PROPERTY as r, appendOverlayText as i, domToRuns as a, normalizeSmallCaps as o, runsToDom as s } from "./domRuns.js";
3
4
  import { applyStyleToRange as c, patchRangeStyle as l, runsCarryStyling as u, styleAtRange as d, supersededKey as f } from "./runs/rangeStyle.js";
4
5
  import { nodeHasFlag as p, setFlagOverRange as m, unboldPatch as h } from "./runs/flagRange.js";
5
6
  import { rangeWeight as g } from "./runs/effectiveRangeStyle.js";
6
- import { cssFontFamily as _, cssFontFamilyLoading as v, isCanvasFont as y } from "@weasel-js/font";
7
- import { fontString as b, layoutTextPose as x, numericWeight as S, resolveAlign as C, resolveTextStyle as w, runsToPlainText as T, scriptMetricsFor as E, smallCapsScaleFor as D, verticalAlignOffset as O } from "@weasel-js/text";
7
+ import { applyOverlayDirection as _, overlayAlignEdge as v } from "./overlayDirection.js";
8
+ import { cssFontFamily as y, cssFontFamilyLoading as b, isCanvasFont as x } from "@weasel-js/font";
9
+ import { fontString as S, layoutTextPose as C, numericWeight as w, resolveTextStyle as ee, runsToPlainText as T, scriptMetricsFor as E, smallCapsScaleFor as D, verticalAlignOffset as O } from "@weasel-js/text";
8
10
  import { useCallback as k, useEffect as A, useRef as j, useState as M } from "react";
9
11
  import { useLatest as N } from "@weasel-js/react";
10
12
  //#region src/features/text/useTextEdit.ts
@@ -43,7 +45,7 @@ var P = [
43
45
  "+": "=",
44
46
  _: "-"
45
47
  };
46
- function ee(e) {
48
+ function te(e) {
47
49
  if (!e.metaKey && !e.ctrlKey) return null;
48
50
  let t = e.key.toLowerCase(), n = F[t] ?? t;
49
51
  return P.find((t) => t.key === n && t.shift === e.shiftKey)?.toggle ?? null;
@@ -56,7 +58,7 @@ function I(e, t, n) {
56
58
  function L(e, t) {
57
59
  return t > 0 ? d(e, t - 1, t) : d(e, 0, 1);
58
60
  }
59
- function te(e, t, n) {
61
+ function ne(e, t, n) {
60
62
  let r = [], i = 0, a = !1;
61
63
  for (let o of e) {
62
64
  let e = i + o.text.length;
@@ -74,16 +76,16 @@ function te(e, t, n) {
74
76
  }
75
77
  return a || r.push(n), c(r, 0, 0, {});
76
78
  }
77
- function R(e, t) {
78
- let n = document.activeElement;
79
- if (n === e || e.contains(n) || n instanceof HTMLInputElement || n instanceof HTMLTextAreaElement || n instanceof HTMLElement && n.isContentEditable || n instanceof Element && n.closest("[role=\"dialog\"]") !== null) return;
79
+ function R(e, n) {
80
+ let r = document.activeElement;
81
+ if (r === e || e.contains(r) || r instanceof HTMLInputElement || r instanceof HTMLTextAreaElement || r instanceof HTMLElement && r.isContentEditable || r instanceof Element && r.closest("[role=\"dialog\"]") !== null) return;
80
82
  e.focus();
81
- let i = r(e, t.start), a = r(e, t.end), o = window.getSelection();
83
+ let i = t(e, n.start), a = t(e, n.end), o = window.getSelection();
82
84
  if (!i || !a || !o) return;
83
85
  let s = document.createRange();
84
86
  s.setStart(i.node, i.offset), s.setEnd(a.node, a.offset), o.removeAllRanges(), o.addRange(s);
85
87
  }
86
- function ne(e, t, n) {
88
+ function re(e, t, n) {
87
89
  let r = 0, i = -1;
88
90
  for (let e = 0; e < t.length; e++) {
89
91
  if (r += t[e].text.length, r === n) {
@@ -98,7 +100,7 @@ function ne(e, t, n) {
98
100
  s.setStartAfter(a), s.collapse(!0), o.removeAllRanges(), o.addRange(s);
99
101
  }
100
102
  var z = Object.freeze({});
101
- function re(e, t) {
103
+ function ie(e, t) {
102
104
  let n = { ...e }, r = f(t);
103
105
  r !== void 0 && delete n[r];
104
106
  for (let [e, r] of Object.entries(t)) r === void 0 || r === !1 ? delete n[e] : n[e] = r;
@@ -107,26 +109,26 @@ function re(e, t) {
107
109
  function B(e) {
108
110
  let t = window.getSelection();
109
111
  if (!t || t.rangeCount === 0) return null;
110
- let n = t.getRangeAt(0);
111
- if (!e.contains(n.startContainer) || !e.contains(n.endContainer)) return null;
112
- let r = i(e, n.startContainer, n.startOffset), a = i(e, n.endContainer, n.endOffset);
113
- return r <= a ? {
114
- start: r,
112
+ let r = t.getRangeAt(0);
113
+ if (!e.contains(r.startContainer) || !e.contains(r.endContainer)) return null;
114
+ let i = n(e, r.startContainer, r.startOffset), a = n(e, r.endContainer, r.endOffset);
115
+ return i <= a ? {
116
+ start: i,
115
117
  end: a
116
118
  } : {
117
119
  start: a,
118
- end: r
120
+ end: i
119
121
  };
120
122
  }
121
- function V(e, t, n, i, a) {
123
+ function ae(e, n, r, i, a) {
122
124
  let o = document.activeElement, c = o !== e && !e.contains(o) && (o instanceof HTMLInputElement || o instanceof HTMLTextAreaElement || o instanceof HTMLElement && o.isContentEditable);
123
- if (s(t, e, a), c) return;
124
- let l = r(e, n), u = r(e, i), d = window.getSelection();
125
+ if (s(n, e, a), c) return;
126
+ let l = t(e, r), u = t(e, i), d = window.getSelection();
125
127
  if (!l || !u || !d) return;
126
128
  let f = document.createRange();
127
129
  f.setStart(l.node, l.offset), f.setEnd(u.node, u.offset), d.removeAllRanges(), d.addRange(f);
128
130
  }
129
- function ie(e) {
131
+ function oe(e) {
130
132
  let t = e[e.length - 1];
131
133
  if (t === void 0 || !t.text.endsWith("\n")) return e;
132
134
  let n = {
@@ -135,136 +137,157 @@ function ie(e) {
135
137
  }, r = e.slice(0, -1);
136
138
  return n.text === "" ? r : [...r, n];
137
139
  }
138
- function ae(e, t) {
140
+ function se(e, t) {
139
141
  return e === null || t === null ? e === t : e.start === t.start && e.end === t.end;
140
142
  }
141
- var H = 100;
142
- function U(t) {
143
- let i = N(t), [f, g] = M(null), _ = N(f), v = j(null), y = j(w(void 0)), b = j(() => {}), x = e(() => {
144
- b.current();
145
- }), S = j("all"), [C, E] = M(null), [D, O] = M(null), [P, F] = M(z), U = j(z), W = j(null), G = k((e, t) => {
143
+ var ce = 100;
144
+ function V(n) {
145
+ let r = N(n), [f, g] = M(null), _ = N(f), v = j(null), y = j(ee(void 0)), [b, x] = M(null), S = j(null), C = k((e) => {
146
+ S.current = e, x(e);
147
+ }, []), w = k((e) => S.current ?? r.current.getStyle(e), [r]), E = j(() => {}), D = e(() => {
148
+ E.current();
149
+ }), O = j("all"), P = j(null), [F, V] = M(null), [he, H] = M(null), [U, W] = M(z), G = j(z), K = j(null), q = k((e, t) => {
146
150
  let n = Object.keys(e).length === 0;
147
- U.current = n ? z : e, W.current = n ? null : t, F(U.current);
148
- }, []), K = k(() => {
149
- W.current !== null && (U.current = z, W.current = null, F(z));
150
- }, []), q = j(null), J = k((e, t) => {
151
+ G.current = n ? z : e, K.current = n ? null : t, W(G.current);
152
+ }, []), J = k(() => {
153
+ K.current !== null && (G.current = z, K.current = null, W(z));
154
+ }, []), Y = j(null), X = k((e, t) => {
151
155
  let n = t.start === t.end;
152
- W.current !== null && !(n && t.start === W.current) && K(), q.current = t, E((e) => ae(e, t) ? e : t);
156
+ K.current !== null && !(n && t.start === K.current) && J(), Y.current = t, V((e) => se(e, t) ? e : t);
153
157
  let r = a(e);
154
- O(n ? L(r, t.start) : d(r, t.start, t.end));
155
- }, [K]), Y = k(() => {
158
+ H(n ? L(r, t.start) : d(r, t.start, t.end));
159
+ }, [J]), Z = k(() => {
156
160
  let e = v.current;
157
161
  if (!e) return;
158
162
  let t = B(e);
159
- t !== null && J(e, t);
160
- }, [J]), pe = k(() => {
161
- q.current = null, E(null), O(null), K();
162
- }, [K]), X = k(() => {
163
+ t !== null && X(e, t);
164
+ }, [X]), _e = k(() => {
165
+ Y.current = null, V(null), H(null), J();
166
+ }, [J]), ve = k(() => {
163
167
  g(null);
164
- }, []), Z = k(() => {
168
+ }, []), Q = k(() => {
165
169
  let e = f, t = v.current;
166
170
  if (e == null || !t) {
167
171
  g(null);
168
172
  return;
169
173
  }
170
- let n = i.current.getRuns?.(e), r = i.current.setRuns, o = ie(a(t)), s = n != null && n.length > 0;
171
- i.current.setText(e, T(o)), r && (s || u(o)) && r(e, o), g(null);
172
- }, [f, i]), me = k((e, t) => {
173
- S.current = t?.caret ?? "all", g(e);
174
- }, []), he = k((e) => f === e, [f]), Q = k((e) => {
174
+ let { getRuns: n, setRuns: i, setText: o, setStyle: s, commit: c } = r.current, l = n?.(e), d = a(t), p = S.current;
175
+ if (!p && JSON.stringify(d) === P.current) {
176
+ g(null);
177
+ return;
178
+ }
179
+ let m = oe(d), h = l != null && l.length > 0 || u(m), _ = T(m);
180
+ C(null), c ? c(e, {
181
+ text: _,
182
+ ...h ? { runs: m } : {},
183
+ ...p ? { style: p } : {}
184
+ }) : (p && s?.(e, p), o?.(e, _), i && h && i(e, m)), g(null);
185
+ }, [
186
+ f,
187
+ r,
188
+ C
189
+ ]), ye = k((e, t) => {
190
+ O.current = t?.caret ?? "all", g(e);
191
+ }, []), be = k((e) => f === e, [f]), $ = k((e) => {
175
192
  let t = v.current;
176
193
  if (!t || Object.keys(e).length === 0) return;
177
- let n = B(t) ?? q.current;
194
+ let n = B(t) ?? Y.current;
178
195
  if (!n) return;
179
- let r = _.current, o = i.current.setStyle, s = a(t);
180
- e.bold === !1 && !("fontWeight" in e) && r !== null && (e = {
196
+ let i = _.current, o = r.current.setStyle !== void 0 || r.current.commit !== void 0, s = a(t);
197
+ e.bold === !1 && !("fontWeight" in e) && i !== null && (e = {
181
198
  ...e,
182
- ...h(i.current.getStyle(r) ?? {})
199
+ ...h(w(i) ?? {})
183
200
  });
184
- let l = r !== null && o ? Object.keys(e).find((t) => t !== "bold" && e[t] === !1 && p(i.current.getStyle(r) ?? {}, t)) : void 0;
185
- if (l !== void 0 && r !== null && o) {
186
- let a = i.current.getStyle(r) ?? {}, c = m(s, a, n.start, n.end, l, !1);
187
- o(r, c.style), V(t, c.runs, n.start, n.end, y.current), J(t, n), n.start === n.end && G({
188
- ...U.current,
201
+ let l = i !== null && o ? Object.keys(e).find((t) => t !== "bold" && e[t] === !1 && p(w(i) ?? {}, t)) : void 0;
202
+ if (l !== void 0 && i !== null) {
203
+ let a = m(s, w(i) ?? {}, n.start, n.end, l, !1);
204
+ C(a.style);
205
+ let o = ee(a.style, r.current.getPaint?.(i));
206
+ y.current = o, pe(t, o), ae(t, a.runs, n.start, n.end, o), X(t, n), n.start === n.end && q({
207
+ ...G.current,
189
208
  [l]: !1
190
209
  }, n.start), R(t, n);
191
- let u = { ...e };
192
- delete u[l], Object.keys(u).length > 0 && Q(u);
210
+ let c = { ...e };
211
+ delete c[l], Object.keys(c).length > 0 && $(c);
193
212
  return;
194
213
  }
195
214
  if (n.start === n.end) {
196
- G(re(U.current, e), n.start), R(t, n);
215
+ q(ie(G.current, e), n.start), R(t, n);
197
216
  return;
198
217
  }
199
- V(t, c(s, n.start, n.end, e), n.start, n.end, y.current), R(t, n), J(t, n);
218
+ ae(t, c(s, n.start, n.end, e), n.start, n.end, y.current), R(t, n), X(t, n);
200
219
  }, [
201
- J,
202
- G,
220
+ X,
221
+ q,
203
222
  _,
204
- i
205
- ]), $ = k((e) => {
223
+ r,
224
+ w,
225
+ C
226
+ ]), xe = k((e) => {
206
227
  let t = v.current;
207
228
  if (!t) return;
208
- let n = B(t) ?? q.current;
229
+ let n = B(t) ?? Y.current;
209
230
  if (!n) return;
210
- let r = a(t), o = _.current, s = (o === null ? void 0 : i.current.getStyle(o)) ?? {}, c = n.start === n.end ? l(L(r, n.start), U.current) : d(r, n.start, n.end);
211
- Q(I(c, e, s));
231
+ let r = a(t), i = _.current, o = (i === null ? void 0 : w(i)) ?? {}, s = n.start === n.end ? l(L(r, n.start), G.current) : d(r, n.start, n.end);
232
+ $(I(s, e, o));
212
233
  }, [
213
- Q,
234
+ $,
214
235
  _,
215
- i
236
+ w
216
237
  ]);
217
238
  return A(() => {
218
239
  if (f == null) return;
219
- let { container: e, getText: t, getStyle: c, getPaint: l } = i.current;
240
+ let { container: e, getText: n, getStyle: c, getPaint: l } = r.current;
220
241
  if (!e) return;
221
- let u = w(c(f), l?.(f)), d = document.createElement("div"), p = `weasel-text-edit-${++oe}`;
242
+ C(null);
243
+ let u = ee(c(f), l?.(f)), d = document.createElement("div"), p = `weasel-text-edit-${++le}`;
222
244
  d.classList.add(p), d.setAttribute("contenteditable", "true"), d.spellcheck = !1, y.current = u;
223
- let m = i.current.getRuns?.(f);
224
- m && m.length > 0 ? s(m, d, u) : u.fontVariantCaps === "small-caps" ? s([{ text: t(f) }], d, u) : n(d, t(f)), ue(d, u);
225
- let h = se(u, m ?? []);
245
+ let m = r.current.getRuns?.(f);
246
+ m && m.length > 0 ? s(m, d, u) : u.fontVariantCaps === "small-caps" ? s([{ text: n(f) }], d, u) : i(d, n(f)), P.current = JSON.stringify(a(d)), pe(d, u);
247
+ let h = ue(u, m ?? []);
226
248
  h && (d.style.opacity = "0");
227
- let g = de(p, u), _ = le();
249
+ let g = me(p, u), _ = fe();
228
250
  _.appendChild(d), e.appendChild(_), v.current = d;
229
- let C = () => {
230
- let e = i.current.getClipRect?.() ?? null;
231
- fe(d, _, i.current.getScreenPose(f), e, u);
251
+ let b = () => {
252
+ let e = r.current.getClipRect?.() ?? null;
253
+ ge(d, _, r.current.getScreenPose(f), e, u);
232
254
  };
233
- C();
234
- let T = h !== null, E = () => {
235
- T && (T = !1, clearTimeout(D), C(), d.style.opacity = "");
236
- }, D = T ? setTimeout(E, i.current.fontHold ?? H) : void 0;
237
- h?.then(E);
238
- let O = document.createRange(), k = S.current;
239
- k === "all" ? O.selectNodeContents(d) : ce(d, O, k), d.focus();
255
+ b();
256
+ let x = h !== null, S = () => {
257
+ x && (x = !1, clearTimeout(w), b(), d.style.opacity = "");
258
+ }, w = x ? setTimeout(S, r.current.fontHold ?? ce) : void 0;
259
+ h?.then(S);
260
+ let T = document.createRange(), k = O.current;
261
+ k === "all" ? T.selectNodeContents(d) : de(d, T, k), d.focus();
240
262
  let A = window.getSelection();
241
- A?.removeAllRanges(), A?.addRange(O), Y();
263
+ A?.removeAllRanges(), A?.addRange(T), Z();
242
264
  let j = (e) => {
265
+ if (e.isComposing || e.keyCode === 229) return;
243
266
  if (e.key === "Enter" && !e.shiftKey) {
244
- e.preventDefault(), Z();
267
+ e.preventDefault(), Q();
245
268
  return;
246
269
  }
247
270
  if (e.key === "Escape") {
248
- e.preventDefault(), i.current.escape === "commit" ? Z() : X();
271
+ e.preventDefault(), r.current.escape === "commit" ? Q() : ve();
249
272
  return;
250
273
  }
251
- let t = ee(e);
252
- t && (e.preventDefault(), $(t));
274
+ let t = te(e);
275
+ t && (e.preventDefault(), xe(t));
253
276
  }, M = (e) => {
254
- let t = e.relatedTarget, n = i.current.isEditorChrome;
255
- n && t instanceof Element && n(t) || Z();
277
+ let t = e.relatedTarget, n = r.current.isEditorChrome;
278
+ n && t instanceof Element && n(t) || Q();
256
279
  }, N = (e) => {
257
280
  if (e.inputType !== "insertText" || !e.data) return;
258
- let t = U.current;
281
+ let t = G.current;
259
282
  if (Object.keys(t).length > 0) {
260
- let n = B(d) ?? q.current;
283
+ let n = B(d) ?? Y.current;
261
284
  if (!n || n.start !== n.end) return;
262
285
  e.preventDefault();
263
- let r = te(a(d), n.start, {
286
+ let r = ne(a(d), n.start, {
264
287
  ...t,
265
288
  text: e.data
266
289
  }), i = n.start + e.data.length;
267
- V(d, r, i, i, y.current), ne(d, r, i), K(), J(d, {
290
+ ae(d, r, i, i, y.current), re(d, r, i), J(), X(d, {
268
291
  start: i,
269
292
  end: i
270
293
  });
@@ -281,64 +304,67 @@ function U(t) {
281
304
  let i = document.createRange();
282
305
  i.setStartAfter(t), i.collapse(!0), n.removeAllRanges(), n.addRange(i);
283
306
  }
284
- P();
285
- }, P = (e) => {
307
+ F();
308
+ }, F = (e) => {
286
309
  if (e instanceof InputEvent && e.isComposing) return;
287
- let t = B(d);
288
- if (!o(d) || !t) return;
289
- let n = r(d, t.start), i = r(d, t.end), a = window.getSelection();
290
- if (!n || !i || !a) return;
310
+ let n = B(d);
311
+ if (!o(d) || !n) return;
312
+ let r = t(d, n.start), i = t(d, n.end), a = window.getSelection();
313
+ if (!r || !i || !a) return;
291
314
  let s = document.createRange();
292
- s.setStart(n.node, n.offset), s.setEnd(i.node, i.offset), a.removeAllRanges(), a.addRange(s);
293
- }, F = (e) => {
294
- P(e), C();
315
+ s.setStart(r.node, r.offset), s.setEnd(i.node, i.offset), a.removeAllRanges(), a.addRange(s);
295
316
  }, I = (e) => {
317
+ F(e), b();
318
+ }, L = (e) => {
296
319
  let t = e.target;
297
320
  if (!(t instanceof Node) || d.contains(t)) return;
298
- let n = i.current.isEditorChrome;
299
- n && t instanceof Element && n(t) || Z();
321
+ let n = r.current.isEditorChrome;
322
+ n && t instanceof Element && n(t) || Q();
300
323
  };
301
- return d.addEventListener("keydown", j), d.addEventListener("blur", M), d.addEventListener("input", F), d.addEventListener("beforeinput", N), document.addEventListener("pointerdown", I, !0), document.addEventListener("selectionchange", Y), b.current = () => {
302
- C(), x.request();
303
- }, x.request(), () => {
304
- T = !1, clearTimeout(D), x.cancel(), b.current = () => {}, d.removeEventListener("keydown", j), d.removeEventListener("blur", M), d.removeEventListener("input", F), d.removeEventListener("beforeinput", N), document.removeEventListener("pointerdown", I, !0), document.removeEventListener("selectionchange", Y), _.remove(), g?.remove(), v.current = null, pe();
324
+ return d.addEventListener("keydown", j), d.addEventListener("blur", M), d.addEventListener("input", I), d.addEventListener("beforeinput", N), document.addEventListener("pointerdown", L, !0), document.addEventListener("selectionchange", Z), E.current = () => {
325
+ b(), D.request();
326
+ }, D.request(), () => {
327
+ x = !1, clearTimeout(w), D.cancel(), E.current = () => {}, d.removeEventListener("keydown", j), d.removeEventListener("blur", M), d.removeEventListener("input", I), d.removeEventListener("beforeinput", N), document.removeEventListener("pointerdown", L, !0), document.removeEventListener("selectionchange", Z), _.remove(), g?.remove(), v.current = null, C(null), _e();
305
328
  };
306
329
  }, [
307
330
  f,
308
- i,
331
+ n.container,
332
+ r,
333
+ Q,
334
+ ve,
309
335
  Z,
336
+ _e,
337
+ D,
338
+ xe,
339
+ J,
310
340
  X,
311
- Y,
312
- pe,
313
- x,
314
- $,
315
- K,
316
- J
341
+ C
317
342
  ]), {
318
343
  editingId: f,
319
- startEdit: me,
320
- cancelEdit: X,
321
- commit: Z,
322
- isEditing: he,
323
- selection: C,
324
- rangeStyle: D,
325
- pendingStyle: P,
326
- applyStyleToSelection: Q,
327
- toggleStyle: $
344
+ startEdit: ye,
345
+ cancelEdit: ve,
346
+ commit: Q,
347
+ isEditing: be,
348
+ nodeStyle: b,
349
+ selection: F,
350
+ rangeStyle: he,
351
+ pendingStyle: U,
352
+ applyStyleToSelection: $,
353
+ toggleStyle: xe
328
354
  };
329
355
  }
330
- var oe = 0;
331
- function se(e, t) {
332
- let n = [v(e.fontFamily, {
333
- weight: S(e.fontWeight),
356
+ var le = 0;
357
+ function ue(e, t) {
358
+ let n = [b(e.fontFamily, {
359
+ weight: w(e.fontWeight),
334
360
  style: e.fontStyle
335
- }), ...t.filter((e) => e.fontFamily != null).map((e) => v(e.fontFamily, {
361
+ }), ...t.filter((e) => e.fontFamily != null).map((e) => b(e.fontFamily, {
336
362
  weight: e.fontWeight ?? (e.bold ? 700 : void 0),
337
363
  style: e.italic ? "italic" : void 0
338
364
  }))].filter((e) => e !== null);
339
365
  return n.length === 0 ? null : Promise.all(n);
340
366
  }
341
- function ce(e, t, n) {
367
+ function de(e, t, n) {
342
368
  let r = n, i = document.createTreeWalker(e, NodeFilter.SHOW_TEXT), a = i.nextNode();
343
369
  for (; a;) {
344
370
  let e = a.data.length;
@@ -350,41 +376,39 @@ function ce(e, t, n) {
350
376
  }
351
377
  t.selectNodeContents(e), t.collapse(!1);
352
378
  }
353
- function le() {
379
+ function fe() {
354
380
  let e = document.createElement("div");
355
381
  return e.style.position = "absolute", e.style.margin = "0", e.style.padding = "0", e.style.border = "0", e.style.pointerEvents = "none", e;
356
382
  }
357
- function ue(e, n) {
358
- e.style.position = "absolute", e.style.pointerEvents = "auto", e.style.boxSizing = "border-box", e.style.margin = "0", e.style.padding = "0", e.style.border = "0", e.style.outline = "none", e.style.background = "transparent", e.style.color = n.fill !== null && "color" in n.fill ? n.fill.color : "#000", e.style.caretColor = n.caretColor;
359
- let r = _(n.fontFamily, {
360
- weight: S(n.fontWeight),
361
- style: n.fontStyle
383
+ function pe(e, t) {
384
+ e.style.position = "absolute", e.style.pointerEvents = "auto", e.style.boxSizing = "border-box", e.style.margin = "0", e.style.padding = "0", e.style.border = "0", e.style.outline = "none", e.style.background = "transparent", e.style.color = t.fill !== null && "color" in t.fill ? t.fill.color : "#000", e.style.caretColor = t.caretColor;
385
+ let n = y(t.fontFamily, {
386
+ weight: w(t.fontWeight),
387
+ style: t.fontStyle
362
388
  });
363
- e.style.font = b({
364
- ...n,
365
- fontFamily: r
366
- }), e.style.textRendering = y(n.fontFamily) ? "" : "geometricPrecision", e.style.lineHeight = String(n.lineHeight);
367
- let i = C(n.align, n.direction);
368
- e.style.textAlign = n.align === "justify" ? "justify" : i, e.style.setProperty("text-align-last", n.align === "justify" ? i : "");
369
- let a = [];
370
- n.underline && a.push("underline"), n.strikethrough && a.push("line-through"), n.overline && a.push("overline"), e.style.textDecoration = a.length > 0 ? a.join(" ") : "none", e.style.textTransform = n.textTransform, e.style.fontVariant = n.fontVariantCaps, e.style.setProperty(t, n.fontVariantCaps === "small-caps" ? String(D(n.fontFamily, S(n.fontWeight), n.fontStyle)) : ""), e.style.whiteSpace = n.wrap ? "pre-wrap" : "pre", e.style.overflowWrap = "normal", e.style.wordBreak = "normal";
389
+ e.style.font = S({
390
+ ...t,
391
+ fontFamily: n
392
+ }), e.style.textRendering = x(t.fontFamily) ? "" : "geometricPrecision", e.style.lineHeight = String(t.lineHeight), _(e, t);
393
+ let i = [];
394
+ t.underline && i.push("underline"), t.strikethrough && i.push("line-through"), t.overline && i.push("overline"), e.style.textDecoration = i.length > 0 ? i.join(" ") : "none", e.style.textTransform = t.textTransform, e.style.fontVariant = t.fontVariantCaps, e.style.setProperty(r, t.fontVariantCaps === "small-caps" ? String(D(t.fontFamily, w(t.fontWeight), t.fontStyle)) : ""), e.style.whiteSpace = t.wrap ? "pre-wrap" : "pre", e.style.overflowWrap = "normal", e.style.wordBreak = "normal";
371
395
  }
372
- function de(e, t) {
396
+ function me(e, t) {
373
397
  if (t.selectionBackground == null && t.selectionColor == null) return null;
374
398
  let n = document.createElement("style"), r = [];
375
399
  return t.selectionBackground != null && r.push(`background: ${t.selectionBackground};`), t.selectionColor != null && r.push(`color: ${t.selectionColor};`), n.textContent = `.${e}::selection { ${r.join(" ")} }`, document.head.appendChild(n), n;
376
400
  }
377
- var W = {
401
+ var he = {
378
402
  left: 0,
379
403
  center: .5,
380
404
  right: 1
381
405
  };
382
- function G(e, t, n = 0) {
406
+ function H(e, t, n = 0) {
383
407
  let r = O(e.verticalAlign, e.height, t);
384
408
  return e.y + (r + n) * (e.zoom ?? 1);
385
409
  }
386
- function K(e, t, n, r) {
387
- let i = x({
410
+ function U(e, t, n, r) {
411
+ let i = C({
388
412
  x: 0,
389
413
  y: 0,
390
414
  width: n.width,
@@ -398,11 +422,11 @@ function K(e, t, n, r) {
398
422
  lineHeight: r,
399
423
  script: t.script
400
424
  }
401
- }).laid.lines[0]?.baselineY ?? 0, a = J(e);
425
+ }).laid.lines[0]?.baselineY ?? 0, a = G(e);
402
426
  return i > 0 && a > 0 ? i - a : 0;
403
427
  }
404
- var q = /* @__PURE__ */ new Map();
405
- function J(e) {
428
+ var W = /* @__PURE__ */ new Map();
429
+ function G(e) {
406
430
  let t = e.parentElement;
407
431
  if (!t) return 0;
408
432
  let { fontFamily: n, fontWeight: r, fontStyle: i, fontSize: a, lineHeight: o, textRendering: s } = e.style, c = [
@@ -412,7 +436,7 @@ function J(e) {
412
436
  a,
413
437
  o,
414
438
  s
415
- ].join("|"), l = q.get(c);
439
+ ].join("|"), l = W.get(c);
416
440
  if (l !== void 0) return l;
417
441
  let u = document.createElement("div");
418
442
  Object.assign(u.style, {
@@ -440,28 +464,28 @@ function J(e) {
440
464
  verticalAlign: "baseline"
441
465
  }), u.appendChild(d), t.appendChild(u);
442
466
  let f = u.getBoundingClientRect(), p = f.width / 100, m = p > 0 ? (d.getBoundingClientRect().top - f.top) / p : 0;
443
- return u.remove(), m > 0 && document.fonts?.status !== "loading" && (q.size >= 64 && q.clear(), q.set(c, m)), m;
467
+ return u.remove(), m > 0 && document.fonts?.status !== "loading" && (W.size >= 64 && W.clear(), W.set(c, m)), m;
444
468
  }
445
- function fe(e, t, n, r, i) {
469
+ function ge(e, t, n, r, i) {
446
470
  if (!n) {
447
471
  e.style.display = "none";
448
472
  return;
449
473
  }
450
474
  t.style.overflow = r ? "clip" : "visible", t.style.left = `${r?.x ?? 0}px`, t.style.top = `${r?.y ?? 0}px`, t.style.width = `${r?.width ?? 0}px`, t.style.height = `${r?.height ?? 0}px`, e.style.display = "";
451
- let a = i.wrap ? 0 : W[C(i.align, i.direction)];
475
+ let a = i.wrap ? 0 : he[v(e, i)];
452
476
  e.style.left = `${n.x + n.width * (n.zoom ?? 1) * a - (r?.x ?? 0)}px`, e.style.width = i.wrap ? `${n.width}px` : "max-content", e.style.minWidth = i.wrap ? "" : `${n.width}px`;
453
- let o = i.script ? E(i.fontFamily, S(i.fontWeight), i.fontStyle)[i.script] : void 0, s = n.lineHeight ?? i.lineHeight;
477
+ let o = i.script ? E(i.fontFamily, w(i.fontWeight), i.fontStyle)[i.script] : void 0, s = n.lineHeight ?? i.lineHeight;
454
478
  e.style.fontSize = `${n.fontSize * (o?.size ?? 1)}px`, e.style.lineHeight = o ? `${n.fontSize * s}px` : String(s);
455
479
  let c = n.verticalAlign !== void 0 && n.verticalAlign !== "top";
456
480
  e.style.minHeight = c ? "" : `${n.height}px`;
457
- let l = K(e, i, n, s) - (o?.shift ?? 0) * n.fontSize;
458
- e.style.top = `${G(n, c ? e.offsetHeight : n.height, l) - (r?.y ?? 0)}px`, e.style.transformOrigin = "0 0";
481
+ let l = U(e, i, n, s) - (o?.shift ?? 0) * n.fontSize;
482
+ e.style.top = `${H(n, c ? e.offsetHeight : n.height, l) - (r?.y ?? 0)}px`, e.style.transformOrigin = "0 0";
459
483
  let u = [];
460
484
  n.zoom !== void 0 && n.zoom !== 1 && u.push(`scale(${n.zoom})`), a !== 0 && u.push(`translateX(${-a * 100}%)`), e.style.transform = u.length > 0 ? u.join(" ") : "none";
461
485
  let d = n.zoom === void 0 && i.fontSize > 0 ? n.fontSize / i.fontSize : 1;
462
486
  e.style.letterSpacing = `${i.letterSpacing * d}px`;
463
487
  }
464
488
  //#endregion
465
- export { H as TEXT_EDIT_FONT_HOLD, K as baselineDrop, G as overlayTop, U as useTextEdit };
489
+ export { ce as TEXT_EDIT_FONT_HOLD, U as baselineDrop, H as overlayTop, V as useTextEdit };
466
490
 
467
491
  //# sourceMappingURL=useTextEdit.js.map