@oh-just-another/state 0.62.0 → 0.63.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 (259) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/actions/registry.js +1 -1
  4. package/dist/actions/registry.js.map +1 -1
  5. package/dist/constants.d.ts +162 -8
  6. package/dist/constants.d.ts.map +1 -1
  7. package/dist/constants.js +132 -8
  8. package/dist/constants.js.map +1 -1
  9. package/dist/editor/animation-scene.d.ts.map +1 -1
  10. package/dist/editor/animation-scene.js +27 -39
  11. package/dist/editor/animation-scene.js.map +1 -1
  12. package/dist/editor/animation.js +1 -1
  13. package/dist/editor/animation.js.map +1 -1
  14. package/dist/editor/applies/arrange-units.d.ts +24 -0
  15. package/dist/editor/applies/arrange-units.d.ts.map +1 -0
  16. package/dist/editor/applies/arrange-units.js +56 -0
  17. package/dist/editor/applies/arrange-units.js.map +1 -0
  18. package/dist/editor/applies/arrange.d.ts +16 -15
  19. package/dist/editor/applies/arrange.d.ts.map +1 -1
  20. package/dist/editor/applies/arrange.js +33 -48
  21. package/dist/editor/applies/arrange.js.map +1 -1
  22. package/dist/editor/applies/create.d.ts +16 -10
  23. package/dist/editor/applies/create.d.ts.map +1 -1
  24. package/dist/editor/applies/create.js +32 -12
  25. package/dist/editor/applies/create.js.map +1 -1
  26. package/dist/editor/applies/edge.d.ts +1 -1
  27. package/dist/editor/applies/edge.d.ts.map +1 -1
  28. package/dist/editor/applies/object-snap.d.ts +87 -0
  29. package/dist/editor/applies/object-snap.d.ts.map +1 -0
  30. package/dist/editor/applies/object-snap.js +198 -0
  31. package/dist/editor/applies/object-snap.js.map +1 -0
  32. package/dist/editor/applies/resize.d.ts +1 -1
  33. package/dist/editor/applies/resize.d.ts.map +1 -1
  34. package/dist/editor/applies/resize.js +6 -4
  35. package/dist/editor/applies/resize.js.map +1 -1
  36. package/dist/editor/applies/selection.d.ts +5 -5
  37. package/dist/editor/applies/selection.d.ts.map +1 -1
  38. package/dist/editor/applies/selection.js +15 -7
  39. package/dist/editor/applies/selection.js.map +1 -1
  40. package/dist/editor/applies/snap-grid.d.ts +1 -1
  41. package/dist/editor/applies/snap-grid.d.ts.map +1 -1
  42. package/dist/editor/container-ops.d.ts +1 -1
  43. package/dist/editor/container-ops.d.ts.map +1 -1
  44. package/dist/{editor-events.d.ts → editor/editor-events.d.ts} +2 -2
  45. package/dist/editor/editor-events.d.ts.map +1 -0
  46. package/dist/{editor-events.js.map → editor/editor-events.js.map} +1 -1
  47. package/dist/editor/event-fanout.d.ts +3 -3
  48. package/dist/editor/event-fanout.d.ts.map +1 -1
  49. package/dist/editor/gesture-tx.d.ts +1 -1
  50. package/dist/editor/gesture-tx.d.ts.map +1 -1
  51. package/dist/editor/hit-test.d.ts +5 -3
  52. package/dist/editor/hit-test.d.ts.map +1 -1
  53. package/dist/editor/hit-test.js +18 -10
  54. package/dist/editor/hit-test.js.map +1 -1
  55. package/dist/editor/interaction-state.d.ts +29 -2
  56. package/dist/editor/interaction-state.d.ts.map +1 -1
  57. package/dist/editor/interaction-state.js +34 -0
  58. package/dist/editor/interaction-state.js.map +1 -1
  59. package/dist/editor/link-handle-drag.d.ts +1 -1
  60. package/dist/editor/link-handle-drag.d.ts.map +1 -1
  61. package/dist/editor/link-handle-drag.js +1 -1
  62. package/dist/editor/link-handle-drag.js.map +1 -1
  63. package/dist/editor/pointer-binding.d.ts.map +1 -1
  64. package/dist/editor/pointer-binding.js +86 -24
  65. package/dist/editor/pointer-binding.js.map +1 -1
  66. package/dist/editor/public/arrange-group.d.ts +6 -5
  67. package/dist/editor/public/arrange-group.d.ts.map +1 -1
  68. package/dist/editor/public/arrange-group.js +39 -23
  69. package/dist/editor/public/arrange-group.js.map +1 -1
  70. package/dist/editor/public/clipboard.d.ts +1 -1
  71. package/dist/editor/public/clipboard.d.ts.map +1 -1
  72. package/dist/editor/public/clipboard.js +2 -2
  73. package/dist/editor/public/clipboard.js.map +1 -1
  74. package/dist/editor/public/cursor.js +1 -1
  75. package/dist/editor/public/cursor.js.map +1 -1
  76. package/dist/editor/public/eraser.js +1 -1
  77. package/dist/editor/public/eraser.js.map +1 -1
  78. package/dist/editor/public/image-insert.d.ts.map +1 -1
  79. package/dist/editor/public/image-insert.js +4 -1
  80. package/dist/editor/public/image-insert.js.map +1 -1
  81. package/dist/editor/public/label-seed.d.ts +12 -0
  82. package/dist/editor/public/label-seed.d.ts.map +1 -0
  83. package/dist/editor/public/label-seed.js +20 -0
  84. package/dist/editor/public/label-seed.js.map +1 -0
  85. package/dist/editor/public/layers.d.ts +1 -1
  86. package/dist/editor/public/layers.d.ts.map +1 -1
  87. package/dist/editor/public/placement.d.ts +6 -1
  88. package/dist/editor/public/placement.d.ts.map +1 -1
  89. package/dist/editor/public/placement.js +47 -17
  90. package/dist/editor/public/placement.js.map +1 -1
  91. package/dist/editor/public/selection-ops.d.ts +1 -1
  92. package/dist/editor/public/selection-ops.d.ts.map +1 -1
  93. package/dist/editor/public/selection-ops.js +31 -2
  94. package/dist/editor/public/selection-ops.js.map +1 -1
  95. package/dist/editor/public/stroke-eraser-coverage.js +1 -1
  96. package/dist/editor/public/stroke-eraser-coverage.js.map +1 -1
  97. package/dist/editor/public/stroke-eraser.js +1 -1
  98. package/dist/editor/public/stroke-eraser.js.map +1 -1
  99. package/dist/editor/public/text-edit.d.ts +4 -2
  100. package/dist/editor/public/text-edit.d.ts.map +1 -1
  101. package/dist/editor/public/text-edit.js +8 -4
  102. package/dist/editor/public/text-edit.js.map +1 -1
  103. package/dist/editor/public/tool-ops.d.ts +10 -7
  104. package/dist/editor/public/tool-ops.d.ts.map +1 -1
  105. package/dist/editor/public/tool-ops.js +141 -14
  106. package/dist/editor/public/tool-ops.js.map +1 -1
  107. package/dist/editor/public/zoom-pan.d.ts +10 -1
  108. package/dist/editor/public/zoom-pan.d.ts.map +1 -1
  109. package/dist/editor/public/zoom-pan.js +49 -0
  110. package/dist/editor/public/zoom-pan.js.map +1 -1
  111. package/dist/editor/render-orchestrator.d.ts +17 -11
  112. package/dist/editor/render-orchestrator.d.ts.map +1 -1
  113. package/dist/editor/render-orchestrator.js +45 -31
  114. package/dist/editor/render-orchestrator.js.map +1 -1
  115. package/dist/editor/resize-helpers.d.ts +1 -1
  116. package/dist/editor/resize-helpers.d.ts.map +1 -1
  117. package/dist/editor/shape-traits.d.ts +1 -1
  118. package/dist/editor/shape-traits.d.ts.map +1 -1
  119. package/dist/editor/shape-traits.js +1 -1
  120. package/dist/editor/shape-traits.js.map +1 -1
  121. package/dist/editor/text-edit.d.ts +24 -11
  122. package/dist/editor/text-edit.d.ts.map +1 -1
  123. package/dist/editor/text-edit.js +225 -45
  124. package/dist/editor/text-edit.js.map +1 -1
  125. package/dist/editor.d.ts +306 -18
  126. package/dist/editor.d.ts.map +1 -1
  127. package/dist/editor.js +1233 -67
  128. package/dist/editor.js.map +1 -1
  129. package/dist/features/built-in-handlers.d.ts.map +1 -0
  130. package/dist/{built-in-handlers.js → features/built-in-handlers.js} +7 -1
  131. package/dist/features/built-in-handlers.js.map +1 -0
  132. package/dist/{clipboard.d.ts → features/clipboard.d.ts} +14 -0
  133. package/dist/features/clipboard.d.ts.map +1 -0
  134. package/dist/{clipboard.js → features/clipboard.js} +1 -1
  135. package/dist/features/clipboard.js.map +1 -0
  136. package/dist/{file-drop.d.ts → features/file-drop.d.ts} +20 -1
  137. package/dist/features/file-drop.d.ts.map +1 -0
  138. package/dist/{file-drop.js → features/file-drop.js} +47 -19
  139. package/dist/features/file-drop.js.map +1 -0
  140. package/dist/features/insert-scene.d.ts +19 -0
  141. package/dist/features/insert-scene.d.ts.map +1 -0
  142. package/dist/features/insert-scene.js +145 -0
  143. package/dist/features/insert-scene.js.map +1 -0
  144. package/dist/features/search.d.ts.map +1 -0
  145. package/dist/features/search.js.map +1 -0
  146. package/dist/helpers/auto-compact.d.ts.map +1 -0
  147. package/dist/{auto-compact.js → helpers/auto-compact.js} +1 -1
  148. package/dist/helpers/auto-compact.js.map +1 -0
  149. package/dist/helpers/auto-layout-scheduler.d.ts.map +1 -0
  150. package/dist/helpers/auto-layout-scheduler.js.map +1 -0
  151. package/dist/helpers/frame-helpers.d.ts.map +1 -0
  152. package/dist/helpers/frame-helpers.js.map +1 -0
  153. package/dist/helpers/group-helpers.d.ts.map +1 -0
  154. package/dist/helpers/group-helpers.js.map +1 -0
  155. package/dist/helpers/util.d.ts.map +1 -0
  156. package/dist/helpers/util.js.map +1 -0
  157. package/dist/index.d.ts +23 -21
  158. package/dist/index.d.ts.map +1 -1
  159. package/dist/index.js +12 -12
  160. package/dist/index.js.map +1 -1
  161. package/dist/input/dom-events.d.ts.map +1 -0
  162. package/dist/input/dom-events.js.map +1 -0
  163. package/dist/{hotkeys-binding.d.ts → input/hotkeys-binding.d.ts} +2 -2
  164. package/dist/input/hotkeys-binding.d.ts.map +1 -0
  165. package/dist/{hotkeys-binding.js → input/hotkeys-binding.js} +1 -1
  166. package/dist/input/hotkeys-binding.js.map +1 -0
  167. package/dist/input/platform.d.ts.map +1 -0
  168. package/dist/input/platform.js.map +1 -0
  169. package/dist/{handle.d.ts → interaction/handle.d.ts} +1 -1
  170. package/dist/interaction/handle.d.ts.map +1 -0
  171. package/dist/{handle.js → interaction/handle.js} +1 -1
  172. package/dist/interaction/handle.js.map +1 -0
  173. package/dist/interaction/interactive.d.ts.map +1 -0
  174. package/dist/interaction/interactive.js.map +1 -0
  175. package/dist/interaction/machine.d.ts.map +1 -0
  176. package/dist/interaction/machine.js.map +1 -0
  177. package/dist/interaction/modes.d.ts.map +1 -0
  178. package/dist/interaction/modes.js.map +1 -0
  179. package/dist/render/animation-tick.d.ts.map +1 -0
  180. package/dist/render/animation-tick.js.map +1 -0
  181. package/dist/{overlay.d.ts → render/overlay.d.ts} +42 -38
  182. package/dist/render/overlay.d.ts.map +1 -0
  183. package/dist/{overlay.js → render/overlay.js} +174 -59
  184. package/dist/render/overlay.js.map +1 -0
  185. package/dist/selection/link-selection.d.ts.map +1 -0
  186. package/dist/{link-selection.js → selection/link-selection.js} +1 -1
  187. package/dist/selection/link-selection.js.map +1 -0
  188. package/dist/selection/selection.d.ts.map +1 -0
  189. package/dist/{selection.js → selection/selection.js} +1 -1
  190. package/dist/selection/selection.js.map +1 -0
  191. package/package.json +5 -5
  192. package/dist/animation-tick.d.ts.map +0 -1
  193. package/dist/animation-tick.js.map +0 -1
  194. package/dist/auto-compact.d.ts.map +0 -1
  195. package/dist/auto-compact.js.map +0 -1
  196. package/dist/auto-layout-scheduler.d.ts.map +0 -1
  197. package/dist/auto-layout-scheduler.js.map +0 -1
  198. package/dist/built-in-handlers.d.ts.map +0 -1
  199. package/dist/built-in-handlers.js.map +0 -1
  200. package/dist/clipboard.d.ts.map +0 -1
  201. package/dist/clipboard.js.map +0 -1
  202. package/dist/dom-events.d.ts.map +0 -1
  203. package/dist/dom-events.js.map +0 -1
  204. package/dist/editor-events.d.ts.map +0 -1
  205. package/dist/file-drop.d.ts.map +0 -1
  206. package/dist/file-drop.js.map +0 -1
  207. package/dist/frame-helpers.d.ts.map +0 -1
  208. package/dist/frame-helpers.js.map +0 -1
  209. package/dist/group-helpers.d.ts.map +0 -1
  210. package/dist/group-helpers.js.map +0 -1
  211. package/dist/handle.d.ts.map +0 -1
  212. package/dist/handle.js.map +0 -1
  213. package/dist/hotkeys-binding.d.ts.map +0 -1
  214. package/dist/hotkeys-binding.js.map +0 -1
  215. package/dist/interactive.d.ts.map +0 -1
  216. package/dist/interactive.js.map +0 -1
  217. package/dist/link-selection.d.ts.map +0 -1
  218. package/dist/link-selection.js.map +0 -1
  219. package/dist/machine.d.ts.map +0 -1
  220. package/dist/machine.js.map +0 -1
  221. package/dist/modes.d.ts.map +0 -1
  222. package/dist/modes.js.map +0 -1
  223. package/dist/overlay.d.ts.map +0 -1
  224. package/dist/overlay.js.map +0 -1
  225. package/dist/platform.d.ts.map +0 -1
  226. package/dist/platform.js.map +0 -1
  227. package/dist/search.d.ts.map +0 -1
  228. package/dist/search.js.map +0 -1
  229. package/dist/selection.d.ts.map +0 -1
  230. package/dist/selection.js.map +0 -1
  231. package/dist/util.d.ts.map +0 -1
  232. package/dist/util.js.map +0 -1
  233. /package/dist/{editor-events.js → editor/editor-events.js} +0 -0
  234. /package/dist/{built-in-handlers.d.ts → features/built-in-handlers.d.ts} +0 -0
  235. /package/dist/{search.d.ts → features/search.d.ts} +0 -0
  236. /package/dist/{search.js → features/search.js} +0 -0
  237. /package/dist/{auto-compact.d.ts → helpers/auto-compact.d.ts} +0 -0
  238. /package/dist/{auto-layout-scheduler.d.ts → helpers/auto-layout-scheduler.d.ts} +0 -0
  239. /package/dist/{auto-layout-scheduler.js → helpers/auto-layout-scheduler.js} +0 -0
  240. /package/dist/{frame-helpers.d.ts → helpers/frame-helpers.d.ts} +0 -0
  241. /package/dist/{frame-helpers.js → helpers/frame-helpers.js} +0 -0
  242. /package/dist/{group-helpers.d.ts → helpers/group-helpers.d.ts} +0 -0
  243. /package/dist/{group-helpers.js → helpers/group-helpers.js} +0 -0
  244. /package/dist/{util.d.ts → helpers/util.d.ts} +0 -0
  245. /package/dist/{util.js → helpers/util.js} +0 -0
  246. /package/dist/{dom-events.d.ts → input/dom-events.d.ts} +0 -0
  247. /package/dist/{dom-events.js → input/dom-events.js} +0 -0
  248. /package/dist/{platform.d.ts → input/platform.d.ts} +0 -0
  249. /package/dist/{platform.js → input/platform.js} +0 -0
  250. /package/dist/{interactive.d.ts → interaction/interactive.d.ts} +0 -0
  251. /package/dist/{interactive.js → interaction/interactive.js} +0 -0
  252. /package/dist/{machine.d.ts → interaction/machine.d.ts} +0 -0
  253. /package/dist/{machine.js → interaction/machine.js} +0 -0
  254. /package/dist/{modes.d.ts → interaction/modes.d.ts} +0 -0
  255. /package/dist/{modes.js → interaction/modes.js} +0 -0
  256. /package/dist/{animation-tick.d.ts → render/animation-tick.d.ts} +0 -0
  257. /package/dist/{animation-tick.js → render/animation-tick.js} +0 -0
  258. /package/dist/{link-selection.d.ts → selection/link-selection.d.ts} +0 -0
  259. /package/dist/{selection.d.ts → selection/selection.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"render-orchestrator.js","sourceRoot":"","sources":["../../src/editor/render-orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-orchestrator.js","sourceRoot":"","sources":["../../src/editor/render-orchestrator.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { Bounds, Vec2 } from "@oh-just-another/types";
2
- import type { HandleId } from "../handle.js";
2
+ import type { HandleId } from "../interaction/handle.js";
3
3
  /**
4
4
  * Resize a world-space AABB by applying the handle delta directly, for the
5
5
  * case where the shape's local AABB starts at (0, 0) — operating on the world
@@ -1 +1 @@
1
- {"version":3,"file":"resize-helpers.d.ts","sourceRoot":"","sources":["../../src/editor/resize-helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,GAAG,MAAM,EAAE,QAAQ,QAAQ,EAAE,OAAO,IAAI,KAAG,MA0C3E,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,EAAE,KAAK,MAAM,KAAG,MAMhE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAAI,UAAU,MAAM,EAAE,KAAK,MAAM,KAAG,MAW/D,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAOD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,GACjC,UAAU,MAAM,EAChB,KAAK,MAAM,EACX,QAAQ,QAAQ,EAChB,aAAa,iBAAiB,EAC9B,oBAAkB,KACjB,MAyDF,CAAC"}
1
+ {"version":3,"file":"resize-helpers.d.ts","sourceRoot":"","sources":["../../src/editor/resize-helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,GAAG,MAAM,EAAE,QAAQ,QAAQ,EAAE,OAAO,IAAI,KAAG,MA0C3E,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,EAAE,KAAK,MAAM,KAAG,MAMhE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAAI,UAAU,MAAM,EAAE,KAAK,MAAM,KAAG,MAW/D,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAOD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,GACjC,UAAU,MAAM,EAChB,KAAK,MAAM,EACX,QAAQ,QAAQ,EAChB,aAAa,iBAAiB,EAC9B,oBAAkB,KACjB,MAyDF,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { Element, ElementBase } from "@oh-just-another/scene";
2
- import { type HandleId } from "../handle.js";
2
+ import { type HandleId } from "../interaction/handle.js";
3
3
  /**
4
4
  * True when the shape's geometry is parametrised by `width` / `height` fields
5
5
  * the editor can rewrite directly during a resize. Anything else (paths,
@@ -1 +1 @@
1
- {"version":3,"file":"shape-traits.d.ts","sourceRoot":"","sources":["../../src/editor/shape-traits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,OAAO,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAKtE,CAAC;AAgBrB,eAAO,MAAM,WAAW,GAAI,OAAO,WAAW,KAAG,OAA0C,CAAC;AAE5F,oEAAoE;AACpE,eAAO,MAAM,gBAAgB,GAAI,QAAQ,WAAW,KAAG,SAAS,QAAQ,EAAiB,CAAC"}
1
+ {"version":3,"file":"shape-traits.d.ts","sourceRoot":"","sources":["../../src/editor/shape-traits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEtE;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,OAAO,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAKtE,CAAC;AAgBrB,eAAO,MAAM,WAAW,GAAI,OAAO,WAAW,KAAG,OAA0C,CAAC;AAE5F,oEAAoE;AACpE,eAAO,MAAM,gBAAgB,GAAI,QAAQ,WAAW,KAAG,SAAS,QAAQ,EAAiB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { ALL_HANDLES } from "../handle.js";
1
+ import { ALL_HANDLES } from "../interaction/handle.js";
2
2
  /**
3
3
  * True when the shape's geometry is parametrised by `width` / `height` fields
4
4
  * the editor can rewrite directly during a resize. Anything else (paths,
@@ -1 +1 @@
1
- {"version":3,"file":"shape-traits.js","sourceRoot":"","sources":["../../src/editor/shape-traits.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAiB,MAAM,cAAc,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAU,EAAoD,EAAE,CAC7F,CAAC,CAAC,IAAI,KAAK,WAAW;IACtB,CAAC,CAAC,IAAI,KAAK,SAAS;IACpB,CAAC,CAAC,IAAI,KAAK,OAAO;IAClB,CAAC,CAAC,IAAI,KAAK,UAAU;IACrB,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;AAErB;;;;;GAKG;AACH,MAAM,eAAe,GAAwB,IAAI,GAAG,CAAC;IACnD,WAAW;IACX,SAAS;IACT,UAAU;IACV,MAAM;IACN,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAkB,EAAW,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAE5F,oEAAoE;AACpE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAmB,EAAuB,EAAE,CAAC,WAAW,CAAC"}
1
+ {"version":3,"file":"shape-traits.js","sourceRoot":"","sources":["../../src/editor/shape-traits.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAU,EAAoD,EAAE,CAC7F,CAAC,CAAC,IAAI,KAAK,WAAW;IACtB,CAAC,CAAC,IAAI,KAAK,SAAS;IACpB,CAAC,CAAC,IAAI,KAAK,OAAO;IAClB,CAAC,CAAC,IAAI,KAAK,UAAU;IACrB,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;AAErB;;;;;GAKG;AACH,MAAM,eAAe,GAAwB,IAAI,GAAG,CAAC;IACnD,WAAW;IACX,SAAS;IACT,UAAU;IACV,MAAM;IACN,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAkB,EAAW,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAE5F,oEAAoE;AACpE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAmB,EAAuB,EAAE,CAAC,WAAW,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { type RenderTarget } from "@oh-just-another/renderer-core";
2
2
  import { type Patch, type Scene } from "@oh-just-another/scene";
3
- import type { Bounds, ElementId, LayerId, Vec2 } from "@oh-just-another/types";
3
+ import type { ElementId, LayerId, Vec2 } from "@oh-just-another/types";
4
+ import type { EditingTextOverlay } from "../render/overlay.js";
4
5
  /** Live selection inside the edited text (source offsets; `dir` is the anchored end). */
5
6
  export interface TextSelection {
6
7
  start: number;
@@ -80,6 +81,24 @@ export declare class TextEditController {
80
81
  * (only one shape at a time). Caret defaults to the end of the text.
81
82
  */
82
83
  begin(id: ElementId): void;
84
+ /** Flat text of the edited shape — its own for text, the label's otherwise. */
85
+ private editedText;
86
+ /**
87
+ * Content view of the edited shape: the element itself for text shapes,
88
+ * the embedded label as a synthetic text element PLUS its local-space
89
+ * offset for labelled shapes (same geometry the renderer draws with,
90
+ * via `shapeLabelLayout` — caret and glyphs can't drift apart).
91
+ */
92
+ private editView;
93
+ /**
94
+ * Keep the caret inside the label's visible line window by adjusting
95
+ * the transient `metadata.labelScrollLines` on the edited shape (live,
96
+ * no history — stripped again on commit / cancel). No-op for text
97
+ * elements (they have no clip window).
98
+ */
99
+ private followLabelCaret;
100
+ /** Drop the transient label-scroll hint when the edit session ends. */
101
+ private clearLabelScroll;
83
102
  /**
84
103
  * Live edit transport from the hidden `<textarea>`: replace the
85
104
  * shape's text + selection as the user types / pastes / composes.
@@ -97,7 +116,8 @@ export declare class TextEditController {
97
116
  caretIndexAtWorldPoint(worldPoint: Vec2): number | null;
98
117
  /**
99
118
  * `true` when a point is inside the currently-edited text shape's
100
- * world bounds. Used by the pointer binding to decide between
119
+ * body (its local bounds, so a rotated shape tests its real outline,
120
+ * not the world AABB). Used by the pointer binding to decide between
101
121
  * repositioning the caret (inside) and committing (outside).
102
122
  */
103
123
  editedElementContainsPoint(worldPoint: Vec2): boolean;
@@ -116,20 +136,13 @@ export declare class TextEditController {
116
136
  * selection geometry therefore lines up exactly with the glyphs.
117
137
  */
118
138
  private measureFor;
139
+ private measureForFont;
119
140
  /**
120
141
  * World-space caret + selection geometry for the overlay pass.
121
142
  * Returns `null` when not editing. The caret is `null` while blinked
122
143
  * off so the overlay can simply skip drawing it.
123
144
  */
124
- overlay(): {
125
- caret: {
126
- x: number;
127
- y: number;
128
- height: number;
129
- } | null;
130
- caretColor: string;
131
- selectionRects: readonly Bounds[];
132
- } | null;
145
+ overlay(): EditingTextOverlay | null;
133
146
  commit(next?: string): void;
134
147
  cancel(): void;
135
148
  }
@@ -1 +1 @@
1
- {"version":3,"file":"text-edit.d.ts","sourceRoot":"","sources":["../../src/editor/text-edit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text-edit.d.ts","sourceRoot":"","sources":["../../src/editor/text-edit.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import { caretGeometry, layoutText, pointToCaretIndex, selectionRects as textSelectionRects, } from "@oh-just-another/renderer-core";
2
- import { getElement, getElementWorldBounds, isText, removeElement, updateElement, } from "@oh-just-another/scene";
2
+ import { getElement, getElementLocalBounds, isText, removeElement, remapParagraphsForTextChange, updateElement, worldToLocal, } from "@oh-just-another/scene";
3
+ import { shapeLabelLayout } from "@oh-just-another/renderer-core";
3
4
  import { CaretBlinkController } from "./caret-blink.js";
4
5
  import { canBeginTextEdit } from "./public/text-edit.js";
6
+ import { seedLabel } from "./public/label-seed.js";
5
7
  /**
6
8
  * Owns the inline text-edit session state (edited shape, pending creation,
7
9
  * origin snapshot, live selection, canvas drag-select anchor and caret blink).
@@ -82,12 +84,99 @@ export class TextEditController {
82
84
  this.commit();
83
85
  this._editingElement = id;
84
86
  this._origin = this._pendingCreate === id ? null : (getElement(this.host.scene, id) ?? null);
85
- const shape = getElement(this.host.scene, id);
86
- const len = shape !== undefined && isText(shape) ? shape.text.length : 0;
87
+ let shape = getElement(this.host.scene, id);
88
+ // A labelable shape without a label yet gets an empty one live (no
89
+ // history — the commit patch covers it, the origin snapshot lacks it).
90
+ if (shape !== undefined && !isText(shape) && shape.label === undefined) {
91
+ const r = updateElement(this.host.scene, id, (s) => ({ ...s, label: seedLabel(s) }));
92
+ this.host.scene = r.scene;
93
+ shape = getElement(this.host.scene, id);
94
+ }
95
+ const len = shape !== undefined ? this.editedText(shape).length : 0;
87
96
  this._sel = { start: len, end: len, dir: "forward" };
88
97
  this.caretBlink.start();
89
98
  this.host.notify();
90
99
  }
100
+ /** Flat text of the edited shape — its own for text, the label's otherwise. */
101
+ editedText(shape) {
102
+ if (isText(shape))
103
+ return shape.text;
104
+ return shape.label?.text ?? "";
105
+ }
106
+ /**
107
+ * Content view of the edited shape: the element itself for text shapes,
108
+ * the embedded label as a synthetic text element PLUS its local-space
109
+ * offset for labelled shapes (same geometry the renderer draws with,
110
+ * via `shapeLabelLayout` — caret and glyphs can't drift apart).
111
+ */
112
+ editView(shape) {
113
+ if (isText(shape))
114
+ return { text: shape, offX: 0, offY: 0 };
115
+ const label = shape.label;
116
+ if (label === undefined)
117
+ return null;
118
+ const measure = this.measureForFont(label.fontFamily, label.fontSize, label.style?.fontWeight, label.style?.fontStyle);
119
+ const placed = shapeLabelLayout(shape, measure);
120
+ if (!placed)
121
+ return null;
122
+ return {
123
+ text: placed.synthetic,
124
+ offX: placed.offsetX,
125
+ offY: placed.offsetY,
126
+ window: { top: placed.windowTop, bottom: placed.windowBottom },
127
+ };
128
+ }
129
+ /**
130
+ * Keep the caret inside the label's visible line window by adjusting
131
+ * the transient `metadata.labelScrollLines` on the edited shape (live,
132
+ * no history — stripped again on commit / cancel). No-op for text
133
+ * elements (they have no clip window).
134
+ */
135
+ followLabelCaret() {
136
+ const id = this._editingElement;
137
+ if (!id || !this._sel)
138
+ return;
139
+ const shape = getElement(this.host.scene, id);
140
+ if (!shape || isText(shape) || shape.label === undefined)
141
+ return;
142
+ const view = this.editView(shape);
143
+ if (!view)
144
+ return;
145
+ const layout = this.editingTextLayout(view.text);
146
+ const win = view.window;
147
+ if (!layout || !win)
148
+ return;
149
+ const clipLines = Math.max(1, Math.round((win.bottom - win.top) / layout.lineHeight));
150
+ const caretIdx = this._sel.dir === "backward" ? this._sel.start : this._sel.end;
151
+ const g = caretGeometry(layout, caretIdx, this.measureFor(view.text), view.text.fontSize, "left");
152
+ const scroll = Math.round(win.top / layout.lineHeight);
153
+ let next = scroll;
154
+ if (g.line < scroll)
155
+ next = g.line;
156
+ else if (g.line >= scroll + clipLines)
157
+ next = g.line - clipLines + 1;
158
+ if (next === scroll)
159
+ return;
160
+ this.host.scene = updateElement(this.host.scene, id, (sh) => ({
161
+ ...sh,
162
+ metadata: { ...sh.metadata, labelScrollLines: next },
163
+ })).scene;
164
+ }
165
+ /** Drop the transient label-scroll hint when the edit session ends. */
166
+ clearLabelScroll(id) {
167
+ const shape = getElement(this.host.scene, id);
168
+ if (shape?.metadata?.labelScrollLines === undefined)
169
+ return;
170
+ this.host.scene = updateElement(this.host.scene, id, (sh) => {
171
+ const { labelScrollLines: _drop, ...rest } = sh.metadata ?? {};
172
+ const copy = { ...sh };
173
+ if (Object.keys(rest).length > 0)
174
+ copy.metadata = rest;
175
+ else
176
+ delete copy.metadata;
177
+ return copy;
178
+ }).scene;
179
+ }
91
180
  /**
92
181
  * Live edit transport from the hidden `<textarea>`: replace the
93
182
  * shape's text + selection as the user types / pastes / composes.
@@ -98,9 +187,35 @@ export class TextEditController {
98
187
  const id = this._editingElement;
99
188
  if (!id)
100
189
  return;
101
- const r = updateElement(this.host.scene, id, (s) => ({ ...s, text: value }));
190
+ const r = updateElement(this.host.scene, id, (s) => {
191
+ // Label mode: the typed text lands on the embedded label.
192
+ if (!isText(s) && s.label !== undefined) {
193
+ const label = { ...s.label, text: value };
194
+ if (s.label.paragraphs !== undefined) {
195
+ const remapped = remapParagraphsForTextChange(s.label.text, value, s.label.paragraphs);
196
+ if (remapped !== undefined)
197
+ label.paragraphs = remapped;
198
+ else
199
+ delete label.paragraphs;
200
+ }
201
+ return { ...s, label };
202
+ }
203
+ const next = { ...s, text: value };
204
+ // Keep paragraph list attrs aligned as newlines come and go —
205
+ // Enter inside a list item continues the list, deleting a line
206
+ // drops its attrs.
207
+ if (isText(s) && s.paragraphs !== undefined) {
208
+ const remapped = remapParagraphsForTextChange(s.text, value, s.paragraphs);
209
+ if (remapped !== undefined)
210
+ next.paragraphs = remapped;
211
+ else
212
+ delete next.paragraphs;
213
+ }
214
+ return next;
215
+ });
102
216
  this.host.scene = r.scene;
103
217
  this._sel = { start: selStart, end: selEnd, dir };
218
+ this.followLabelCaret();
104
219
  this.caretBlink.wake();
105
220
  this.host.notify();
106
221
  }
@@ -109,6 +224,7 @@ export class TextEditController {
109
224
  if (!this._editingElement)
110
225
  return;
111
226
  this._sel = { start: selStart, end: selEnd, dir };
227
+ this.followLabelCaret();
112
228
  this.caretBlink.wake();
113
229
  this.host.notify();
114
230
  }
@@ -122,26 +238,26 @@ export class TextEditController {
122
238
  if (!id)
123
239
  return null;
124
240
  const shape = getElement(this.host.scene, id);
125
- if (shape === undefined || !isText(shape))
241
+ if (shape === undefined)
242
+ return null;
243
+ const view = this.editView(shape);
244
+ if (!view)
126
245
  return null;
127
- const layout = this.editingTextLayout(shape);
246
+ const layout = this.editingTextLayout(view.text);
128
247
  if (!layout)
129
248
  return null;
130
- // World → shape-local: undo the element transform so the hit lands on the
131
- // right glyph. Translate by position, then divide out scale (rotation
132
- // while editing text is not handled — an uncommon case).
133
- const sx = shape.scale.x || 1;
134
- const sy = shape.scale.y || 1;
135
- const local = {
136
- x: (worldPoint.x - shape.position.x) / sx,
137
- y: (worldPoint.y - shape.position.y) / sy,
138
- };
139
- const align = shape.style.textAlign ?? "left";
140
- return pointToCaretIndex(layout, local, this.measureFor(shape), align);
249
+ // World → shape-local: undo the element transform (translate, rotate,
250
+ // scale) so the hit lands on the right glyph, then strip the label
251
+ // offset for embedded labels.
252
+ const p = worldToLocal(shape, worldPoint);
253
+ const local = { x: p.x - view.offX, y: p.y - view.offY };
254
+ const align = view.text.style.textAlign ?? "left";
255
+ return pointToCaretIndex(layout, local, this.measureFor(view.text), align);
141
256
  }
142
257
  /**
143
258
  * `true` when a point is inside the currently-edited text shape's
144
- * world bounds. Used by the pointer binding to decide between
259
+ * body (its local bounds, so a rotated shape tests its real outline,
260
+ * not the world AABB). Used by the pointer binding to decide between
145
261
  * repositioning the caret (inside) and committing (outside).
146
262
  */
147
263
  editedElementContainsPoint(worldPoint) {
@@ -151,11 +267,9 @@ export class TextEditController {
151
267
  const shape = getElement(this.host.scene, id);
152
268
  if (!shape)
153
269
  return false;
154
- const b = getElementWorldBounds(shape);
155
- return (worldPoint.x >= b.x &&
156
- worldPoint.x <= b.x + b.width &&
157
- worldPoint.y >= b.y &&
158
- worldPoint.y <= b.y + b.height);
270
+ const b = getElementLocalBounds(shape);
271
+ const p = worldToLocal(shape, worldPoint);
272
+ return p.x >= b.x && p.x <= b.x + b.width && p.y >= b.y && p.y <= b.y + b.height;
159
273
  }
160
274
  /** Place a collapsed caret at the clicked point and start a drag-select. */
161
275
  setCaretFromPoint(worldPoint) {
@@ -187,6 +301,7 @@ export class TextEditController {
187
301
  return layoutText(shape.text, this.measureFor(shape), {
188
302
  fontSize: shape.fontSize,
189
303
  ...(shape.maxWidth !== undefined ? { maxWidth: shape.maxWidth } : {}),
304
+ ...(shape.paragraphs !== undefined ? { paragraphs: shape.paragraphs } : {}),
190
305
  });
191
306
  }
192
307
  /**
@@ -196,12 +311,15 @@ export class TextEditController {
196
311
  * selection geometry therefore lines up exactly with the glyphs.
197
312
  */
198
313
  measureFor(shape) {
314
+ return this.measureForFont(shape.fontFamily, shape.fontSize, shape.style.fontWeight, shape.style.fontStyle);
315
+ }
316
+ measureForFont(fontFamily, fontSize, weight, style) {
199
317
  const target = this.host.mainTarget;
200
318
  // Match the rendered weight/style so caret / selection geometry lines
201
319
  // up with bold / italic glyphs (which have different advances).
202
- target.setFont(shape.fontFamily, shape.fontSize, {
203
- ...(shape.style.fontWeight === "bold" ? { weight: "bold" } : {}),
204
- ...(shape.style.fontStyle === "italic" ? { style: "italic" } : {}),
320
+ target.setFont(fontFamily, fontSize, {
321
+ ...(weight === "bold" ? { weight: "bold" } : {}),
322
+ ...(style === "italic" ? { style: "italic" } : {}),
205
323
  });
206
324
  return (s) => target.measureText(s).width;
207
325
  }
@@ -215,21 +333,38 @@ export class TextEditController {
215
333
  if (!id || !this._sel)
216
334
  return null;
217
335
  const shape = getElement(this.host.scene, id);
218
- if (shape === undefined || !isText(shape))
336
+ if (shape === undefined)
337
+ return null;
338
+ const view = this.editView(shape);
339
+ if (!view)
219
340
  return null;
220
- const layout = this.editingTextLayout(shape);
341
+ const layout = this.editingTextLayout(view.text);
221
342
  if (!layout)
222
343
  return null;
223
- const align = shape.style.textAlign ?? "left";
224
- const measure = this.measureFor(shape);
225
- const { x: px, y: py } = shape.position;
344
+ const align = view.text.style.textAlign ?? "left";
345
+ const measure = this.measureFor(view.text);
226
346
  // The layout is in the shape's own (unscaled) space; the renderer draws it
227
347
  // through the element transform, so caret + selection geometry must scale
228
- // too or they trail the rendered text on a scaled element. (Rotation while
229
- // editing text is not handled an uncommon case.)
348
+ // too or they trail the rendered text on a scaled element. Rotation is
349
+ // left to the overlay (it rotates the result about the position) so the
350
+ // rects stay axis-aligned here. Embedded labels add their local offset
351
+ // before the transform.
230
352
  const sx = shape.scale.x;
231
353
  const sy = shape.scale.y;
232
- const local = textSelectionRects(layout, this._sel.start, this._sel.end, measure, align);
354
+ const px = shape.position.x + view.offX * sx;
355
+ const py = shape.position.y + view.offY * sy;
356
+ // Clip highlight rects (and the caret) to the label's visible window
357
+ // so nothing paints outside the shape body.
358
+ const win = view.window;
359
+ const local = textSelectionRects(layout, this._sel.start, this._sel.end, measure, align)
360
+ .map((r) => {
361
+ if (!win)
362
+ return r;
363
+ const top = Math.max(r.y, win.top);
364
+ const bottom = Math.min(r.y + r.height, win.bottom);
365
+ return { ...r, y: top, height: bottom - top };
366
+ })
367
+ .filter((r) => r.height > 0);
233
368
  const selectionRects = local.map((r) => ({
234
369
  x: px + Math.min(r.x * sx, (r.x + r.width) * sx),
235
370
  y: py + Math.min(r.y * sy, (r.y + r.height) * sy),
@@ -239,21 +374,33 @@ export class TextEditController {
239
374
  let caret = null;
240
375
  if (this.caretBlink.on) {
241
376
  const cIdx = this._sel.dir === "backward" ? this._sel.start : this._sel.end;
242
- const g = caretGeometry(layout, cIdx, measure, shape.fontSize, align);
243
- caret = { x: px + g.x * sx, y: py + g.y * sy, height: g.height * Math.abs(sy) };
377
+ const g = caretGeometry(layout, cIdx, measure, view.text.fontSize, align);
378
+ const visible = !win || (g.y >= win.top && g.y < win.bottom);
379
+ if (visible) {
380
+ caret = { x: px + g.x * sx, y: py + g.y * sy, height: g.height * Math.abs(sy) };
381
+ }
244
382
  }
245
- return { caret, caretColor: shape.style.fill ?? "#1a1a1a", selectionRects };
383
+ return {
384
+ caret,
385
+ caretColor: view.text.style.fill ?? "#1a1a1a",
386
+ selectionRects,
387
+ rotation: shape.rotation,
388
+ pivot: shape.position,
389
+ };
246
390
  }
247
391
  commit(next) {
248
392
  const id = this._editingElement;
249
393
  if (!id)
250
394
  return;
395
+ this.clearLabelScroll(id);
251
396
  const pending = this._pendingCreate === id;
252
397
  const origin = this._origin;
253
398
  // Optional explicit text (keyboard / test callers); the live path
254
399
  // passes nothing because the scene already holds the typed text.
255
400
  if (next !== undefined) {
256
- this.host.scene = updateElement(this.host.scene, id, (s) => ({ ...s, text: next })).scene;
401
+ this.host.scene = updateElement(this.host.scene, id, (s) => !isText(s) && s.label !== undefined
402
+ ? { ...s, label: { ...s.label, text: next } }
403
+ : { ...s, text: next }).scene;
257
404
  }
258
405
  this._editingElement = null;
259
406
  this._pendingCreate = null;
@@ -261,6 +408,32 @@ export class TextEditController {
261
408
  this._sel = null;
262
409
  this.caretBlink.stop();
263
410
  const committed = getElement(this.host.scene, id);
411
+ // Label mode commits separately: an empty label is stripped from the
412
+ // shape (the shape itself stays), a non-empty one records a single
413
+ // whole-element patch against the origin.
414
+ if (committed !== undefined && !isText(committed)) {
415
+ if ((committed.label?.text ?? "").trim() === "") {
416
+ const r = updateElement(this.host.scene, id, (s) => {
417
+ const copy = { ...s };
418
+ delete copy.label;
419
+ return copy;
420
+ });
421
+ this.host.scene = r.scene;
422
+ if (origin?.label !== undefined) {
423
+ this.host.pushHistory({
424
+ kind: "element",
425
+ id,
426
+ before: origin,
427
+ after: getElement(this.host.scene, id) ?? origin,
428
+ });
429
+ }
430
+ }
431
+ else if (origin && origin.label?.text !== committed.label?.text) {
432
+ this.host.pushHistory({ kind: "element", id, before: origin, after: committed });
433
+ }
434
+ this.host.notify();
435
+ return;
436
+ }
264
437
  const finalElement = committed !== undefined && isText(committed) ? committed : undefined;
265
438
  const text = finalElement?.text ?? "";
266
439
  // Empty (whitespace-only) text removes the shape. Pending = silent
@@ -298,6 +471,7 @@ export class TextEditController {
298
471
  const id = this._editingElement;
299
472
  if (id === null)
300
473
  return;
474
+ this.clearLabelScroll(id);
301
475
  const pending = this._pendingCreate === id;
302
476
  const origin = this._origin;
303
477
  this._editingElement = null;
@@ -306,8 +480,8 @@ export class TextEditController {
306
480
  this._sel = null;
307
481
  this.caretBlink.stop();
308
482
  // Revert live edits with no history entry. Pending creations are
309
- // removed entirely; existing shapes have only their TEXT restored
310
- // (panel-driven field changes during the edit keep their own
483
+ // removed entirely; existing shapes have only their TEXT (or label)
484
+ // restored (panel-driven field changes during the edit keep their own
311
485
  // committed history and must survive the cancel).
312
486
  if (pending) {
313
487
  if (getElement(this.host.scene, id)) {
@@ -316,11 +490,17 @@ export class TextEditController {
316
490
  }
317
491
  }
318
492
  else if (origin) {
319
- const originText = isText(origin) ? origin.text : "";
320
- this.host.scene = updateElement(this.host.scene, id, (s) => ({
321
- ...s,
322
- text: originText,
323
- })).scene;
493
+ this.host.scene = updateElement(this.host.scene, id, (s) => {
494
+ if (!isText(s)) {
495
+ const copy = { ...s };
496
+ if (origin.label !== undefined)
497
+ copy.label = origin.label;
498
+ else
499
+ delete copy.label;
500
+ return copy;
501
+ }
502
+ return { ...s, text: isText(origin) ? origin.text : "" };
503
+ }).scene;
324
504
  }
325
505
  this.host.notify();
326
506
  }