@oh-just-another/state 0.58.0 → 0.60.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 (272) hide show
  1. package/CHANGELOG.md +158 -0
  2. package/README.md +78 -27
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/actions/actionArrange.d.ts +13 -0
  5. package/dist/actions/actionArrange.d.ts.map +1 -0
  6. package/dist/actions/actionArrange.js +130 -0
  7. package/dist/actions/actionArrange.js.map +1 -0
  8. package/dist/actions/actionClipboard.d.ts +2 -0
  9. package/dist/actions/actionClipboard.d.ts.map +1 -1
  10. package/dist/actions/actionClipboard.js +32 -1
  11. package/dist/actions/actionClipboard.js.map +1 -1
  12. package/dist/actions/actionKeyboard.d.ts.map +1 -1
  13. package/dist/actions/actionKeyboard.js +77 -9
  14. package/dist/actions/actionKeyboard.js.map +1 -1
  15. package/dist/actions/actionMode.d.ts +4 -0
  16. package/dist/actions/actionMode.d.ts.map +1 -1
  17. package/dist/actions/actionMode.js +54 -0
  18. package/dist/actions/actionMode.js.map +1 -1
  19. package/dist/actions/actionSelection.d.ts.map +1 -1
  20. package/dist/actions/actionSelection.js +1 -0
  21. package/dist/actions/actionSelection.js.map +1 -1
  22. package/dist/actions/actionText.d.ts +5 -0
  23. package/dist/actions/actionText.d.ts.map +1 -0
  24. package/dist/actions/actionText.js +37 -0
  25. package/dist/actions/actionText.js.map +1 -0
  26. package/dist/actions/actionView.d.ts +6 -0
  27. package/dist/actions/actionView.d.ts.map +1 -1
  28. package/dist/actions/actionView.js +20 -2
  29. package/dist/actions/actionView.js.map +1 -1
  30. package/dist/actions/actionZoom.d.ts.map +1 -1
  31. package/dist/actions/actionZoom.js +5 -0
  32. package/dist/actions/actionZoom.js.map +1 -1
  33. package/dist/actions/index.d.ts +6 -4
  34. package/dist/actions/index.d.ts.map +1 -1
  35. package/dist/actions/index.js +6 -4
  36. package/dist/actions/index.js.map +1 -1
  37. package/dist/actions/registry.d.ts.map +1 -1
  38. package/dist/actions/registry.js +17 -0
  39. package/dist/actions/registry.js.map +1 -1
  40. package/dist/actions/types.d.ts +10 -1
  41. package/dist/actions/types.d.ts.map +1 -1
  42. package/dist/actions/types.js.map +1 -1
  43. package/dist/auto-layout-scheduler.d.ts +1 -3
  44. package/dist/auto-layout-scheduler.d.ts.map +1 -1
  45. package/dist/auto-layout-scheduler.js +1 -2
  46. package/dist/auto-layout-scheduler.js.map +1 -1
  47. package/dist/built-in-handlers.d.ts.map +1 -1
  48. package/dist/built-in-handlers.js +14 -1
  49. package/dist/built-in-handlers.js.map +1 -1
  50. package/dist/clipboard.d.ts +0 -14
  51. package/dist/clipboard.d.ts.map +1 -1
  52. package/dist/clipboard.js +1 -1
  53. package/dist/clipboard.js.map +1 -1
  54. package/dist/constants.d.ts +208 -41
  55. package/dist/constants.d.ts.map +1 -1
  56. package/dist/constants.js +210 -25
  57. package/dist/constants.js.map +1 -1
  58. package/dist/dom-events.d.ts +8 -2
  59. package/dist/dom-events.d.ts.map +1 -1
  60. package/dist/dom-events.js +12 -0
  61. package/dist/dom-events.js.map +1 -1
  62. package/dist/editor/animation-scene.d.ts +36 -0
  63. package/dist/editor/animation-scene.d.ts.map +1 -0
  64. package/dist/editor/animation-scene.js +194 -0
  65. package/dist/editor/animation-scene.js.map +1 -0
  66. package/dist/editor/animation.d.ts +43 -0
  67. package/dist/editor/animation.d.ts.map +1 -0
  68. package/dist/editor/animation.js +80 -0
  69. package/dist/editor/animation.js.map +1 -0
  70. package/dist/editor/applies/arrange.d.ts +46 -0
  71. package/dist/editor/applies/arrange.d.ts.map +1 -0
  72. package/dist/editor/applies/arrange.js +162 -0
  73. package/dist/editor/applies/arrange.js.map +1 -0
  74. package/dist/editor/applies/create.d.ts +0 -6
  75. package/dist/editor/applies/create.d.ts.map +1 -1
  76. package/dist/editor/applies/create.js +1 -1
  77. package/dist/editor/applies/create.js.map +1 -1
  78. package/dist/editor/applies/edge.d.ts +8 -1
  79. package/dist/editor/applies/edge.d.ts.map +1 -1
  80. package/dist/editor/applies/edge.js +31 -1
  81. package/dist/editor/applies/edge.js.map +1 -1
  82. package/dist/editor/applies/link-move.d.ts +0 -8
  83. package/dist/editor/applies/link-move.d.ts.map +1 -1
  84. package/dist/editor/applies/link-move.js +1 -1
  85. package/dist/editor/applies/link-move.js.map +1 -1
  86. package/dist/editor/applies/move.d.ts +6 -0
  87. package/dist/editor/applies/move.d.ts.map +1 -1
  88. package/dist/editor/applies/move.js +6 -0
  89. package/dist/editor/applies/move.js.map +1 -1
  90. package/dist/editor/applies/resize.d.ts +26 -5
  91. package/dist/editor/applies/resize.d.ts.map +1 -1
  92. package/dist/editor/applies/resize.js +91 -13
  93. package/dist/editor/applies/resize.js.map +1 -1
  94. package/dist/editor/caret-blink.d.ts +18 -0
  95. package/dist/editor/caret-blink.d.ts.map +1 -0
  96. package/dist/editor/caret-blink.js +42 -0
  97. package/dist/editor/caret-blink.js.map +1 -0
  98. package/dist/editor/container-ops.d.ts.map +1 -1
  99. package/dist/editor/container-ops.js +2 -2
  100. package/dist/editor/container-ops.js.map +1 -1
  101. package/dist/editor/dirty-rect.d.ts +23 -0
  102. package/dist/editor/dirty-rect.d.ts.map +1 -0
  103. package/dist/editor/dirty-rect.js +115 -0
  104. package/dist/editor/dirty-rect.js.map +1 -0
  105. package/dist/editor/gif-playback.d.ts +45 -0
  106. package/dist/editor/gif-playback.d.ts.map +1 -0
  107. package/dist/editor/gif-playback.js +125 -0
  108. package/dist/editor/gif-playback.js.map +1 -0
  109. package/dist/editor/hit-test.d.ts +3 -3
  110. package/dist/editor/hit-test.d.ts.map +1 -1
  111. package/dist/editor/hit-test.js +40 -15
  112. package/dist/editor/hit-test.js.map +1 -1
  113. package/dist/editor/interaction-state.d.ts +184 -0
  114. package/dist/editor/interaction-state.d.ts.map +1 -0
  115. package/dist/editor/interaction-state.js +139 -0
  116. package/dist/editor/interaction-state.js.map +1 -0
  117. package/dist/editor/link-handle-drag.d.ts +152 -0
  118. package/dist/editor/link-handle-drag.d.ts.map +1 -0
  119. package/dist/editor/link-handle-drag.js +300 -0
  120. package/dist/editor/link-handle-drag.js.map +1 -0
  121. package/dist/editor/long-press.d.ts.map +1 -1
  122. package/dist/editor/long-press.js +2 -2
  123. package/dist/editor/long-press.js.map +1 -1
  124. package/dist/editor/pinch.d.ts.map +1 -1
  125. package/dist/editor/pinch.js +6 -6
  126. package/dist/editor/pinch.js.map +1 -1
  127. package/dist/editor/pointer-binding.d.ts +9 -11
  128. package/dist/editor/pointer-binding.d.ts.map +1 -1
  129. package/dist/editor/pointer-binding.js +1191 -890
  130. package/dist/editor/pointer-binding.js.map +1 -1
  131. package/dist/editor/public/arrange-group.d.ts +3 -9
  132. package/dist/editor/public/arrange-group.d.ts.map +1 -1
  133. package/dist/editor/public/arrange-group.js +4 -6
  134. package/dist/editor/public/arrange-group.js.map +1 -1
  135. package/dist/editor/public/brush.d.ts +31 -12
  136. package/dist/editor/public/brush.d.ts.map +1 -1
  137. package/dist/editor/public/brush.js +66 -17
  138. package/dist/editor/public/brush.js.map +1 -1
  139. package/dist/editor/public/clipboard.d.ts +2 -4
  140. package/dist/editor/public/clipboard.d.ts.map +1 -1
  141. package/dist/editor/public/clipboard.js +2 -4
  142. package/dist/editor/public/clipboard.js.map +1 -1
  143. package/dist/editor/public/cursor.d.ts +29 -0
  144. package/dist/editor/public/cursor.d.ts.map +1 -0
  145. package/dist/editor/public/cursor.js +146 -0
  146. package/dist/editor/public/cursor.js.map +1 -0
  147. package/dist/editor/public/eraser.d.ts +55 -0
  148. package/dist/editor/public/eraser.d.ts.map +1 -0
  149. package/dist/editor/public/eraser.js +65 -0
  150. package/dist/editor/public/eraser.js.map +1 -0
  151. package/dist/editor/public/frame-name.d.ts +20 -0
  152. package/dist/editor/public/frame-name.d.ts.map +1 -0
  153. package/dist/editor/public/frame-name.js +54 -0
  154. package/dist/editor/public/frame-name.js.map +1 -0
  155. package/dist/editor/public/image-insert.d.ts +1 -1
  156. package/dist/editor/public/image-insert.d.ts.map +1 -1
  157. package/dist/editor/public/laser.d.ts +38 -0
  158. package/dist/editor/public/laser.d.ts.map +1 -0
  159. package/dist/editor/public/laser.js +42 -0
  160. package/dist/editor/public/laser.js.map +1 -0
  161. package/dist/editor/public/layers.d.ts.map +1 -1
  162. package/dist/editor/public/layers.js +2 -2
  163. package/dist/editor/public/layers.js.map +1 -1
  164. package/dist/editor/public/link.d.ts +11 -2
  165. package/dist/editor/public/link.d.ts.map +1 -1
  166. package/dist/editor/public/link.js +70 -2
  167. package/dist/editor/public/link.js.map +1 -1
  168. package/dist/editor/public/placement.d.ts +60 -2
  169. package/dist/editor/public/placement.d.ts.map +1 -1
  170. package/dist/editor/public/placement.js +193 -2
  171. package/dist/editor/public/placement.js.map +1 -1
  172. package/dist/editor/public/selection-ops.d.ts +35 -1
  173. package/dist/editor/public/selection-ops.d.ts.map +1 -1
  174. package/dist/editor/public/selection-ops.js +97 -2
  175. package/dist/editor/public/selection-ops.js.map +1 -1
  176. package/dist/editor/public/stroke-eraser-coverage.d.ts +37 -0
  177. package/dist/editor/public/stroke-eraser-coverage.d.ts.map +1 -0
  178. package/dist/editor/public/stroke-eraser-coverage.js +168 -0
  179. package/dist/editor/public/stroke-eraser-coverage.js.map +1 -0
  180. package/dist/editor/public/stroke-eraser.d.ts +50 -0
  181. package/dist/editor/public/stroke-eraser.d.ts.map +1 -0
  182. package/dist/editor/public/stroke-eraser.js +176 -0
  183. package/dist/editor/public/stroke-eraser.js.map +1 -0
  184. package/dist/editor/public/stroke-smoothing.d.ts +21 -0
  185. package/dist/editor/public/stroke-smoothing.d.ts.map +1 -0
  186. package/dist/editor/public/stroke-smoothing.js +37 -0
  187. package/dist/editor/public/stroke-smoothing.js.map +1 -0
  188. package/dist/editor/public/text-edit.d.ts +1 -10
  189. package/dist/editor/public/text-edit.d.ts.map +1 -1
  190. package/dist/editor/public/text-edit.js +2 -16
  191. package/dist/editor/public/text-edit.js.map +1 -1
  192. package/dist/editor/public/tool-ops.d.ts +130 -0
  193. package/dist/editor/public/tool-ops.d.ts.map +1 -0
  194. package/dist/editor/public/tool-ops.js +392 -0
  195. package/dist/editor/public/tool-ops.js.map +1 -0
  196. package/dist/editor/public/z-order.d.ts +1 -12
  197. package/dist/editor/public/z-order.d.ts.map +1 -1
  198. package/dist/editor/public/z-order.js +5 -5
  199. package/dist/editor/public/z-order.js.map +1 -1
  200. package/dist/editor/public/zoom-pan.d.ts +15 -4
  201. package/dist/editor/public/zoom-pan.d.ts.map +1 -1
  202. package/dist/editor/public/zoom-pan.js +39 -7
  203. package/dist/editor/public/zoom-pan.js.map +1 -1
  204. package/dist/editor/render-orchestrator.d.ts +177 -5
  205. package/dist/editor/render-orchestrator.d.ts.map +1 -1
  206. package/dist/editor/render-orchestrator.js +519 -358
  207. package/dist/editor/render-orchestrator.js.map +1 -1
  208. package/dist/editor/resize-helpers.d.ts +21 -5
  209. package/dist/editor/resize-helpers.d.ts.map +1 -1
  210. package/dist/editor/resize-helpers.js +59 -19
  211. package/dist/editor/resize-helpers.js.map +1 -1
  212. package/dist/editor/text-edit.d.ts +136 -0
  213. package/dist/editor/text-edit.d.ts.map +1 -0
  214. package/dist/editor/text-edit.js +328 -0
  215. package/dist/editor/text-edit.js.map +1 -0
  216. package/dist/editor/viewport-helpers.d.ts.map +1 -1
  217. package/dist/editor/viewport-helpers.js +3 -3
  218. package/dist/editor/viewport-helpers.js.map +1 -1
  219. package/dist/editor-events.d.ts +1 -1
  220. package/dist/editor-events.d.ts.map +1 -1
  221. package/dist/editor.d.ts +603 -346
  222. package/dist/editor.d.ts.map +1 -1
  223. package/dist/editor.js +1843 -1630
  224. package/dist/editor.js.map +1 -1
  225. package/dist/file-drop.d.ts.map +1 -1
  226. package/dist/file-drop.js +1 -2
  227. package/dist/file-drop.js.map +1 -1
  228. package/dist/frame-helpers.d.ts.map +1 -1
  229. package/dist/frame-helpers.js +5 -5
  230. package/dist/frame-helpers.js.map +1 -1
  231. package/dist/group-helpers.d.ts.map +1 -1
  232. package/dist/group-helpers.js +4 -4
  233. package/dist/group-helpers.js.map +1 -1
  234. package/dist/handle.d.ts +59 -6
  235. package/dist/handle.d.ts.map +1 -1
  236. package/dist/handle.js +99 -7
  237. package/dist/handle.js.map +1 -1
  238. package/dist/hotkeys-binding.d.ts +26 -0
  239. package/dist/hotkeys-binding.d.ts.map +1 -0
  240. package/dist/hotkeys-binding.js +35 -0
  241. package/dist/hotkeys-binding.js.map +1 -0
  242. package/dist/index.d.ts +9 -3
  243. package/dist/index.d.ts.map +1 -1
  244. package/dist/index.js +10 -3
  245. package/dist/index.js.map +1 -1
  246. package/dist/link-selection.d.ts +3 -5
  247. package/dist/link-selection.d.ts.map +1 -1
  248. package/dist/link-selection.js +3 -12
  249. package/dist/link-selection.js.map +1 -1
  250. package/dist/machine.d.ts +27 -1
  251. package/dist/machine.d.ts.map +1 -1
  252. package/dist/machine.js +38 -0
  253. package/dist/machine.js.map +1 -1
  254. package/dist/modes.d.ts +15 -1
  255. package/dist/modes.d.ts.map +1 -1
  256. package/dist/modes.js.map +1 -1
  257. package/dist/overlay.d.ts +92 -6
  258. package/dist/overlay.d.ts.map +1 -1
  259. package/dist/overlay.js +582 -125
  260. package/dist/overlay.js.map +1 -1
  261. package/dist/search.d.ts +37 -0
  262. package/dist/search.d.ts.map +1 -0
  263. package/dist/search.js +45 -0
  264. package/dist/search.js.map +1 -0
  265. package/dist/selection.d.ts.map +1 -1
  266. package/dist/selection.js +2 -10
  267. package/dist/selection.js.map +1 -1
  268. package/dist/util.d.ts +8 -0
  269. package/dist/util.d.ts.map +1 -0
  270. package/dist/util.js +17 -0
  271. package/dist/util.js.map +1 -0
  272. package/package.json +7 -7
@@ -0,0 +1,130 @@
1
+ import { hasSelection } from "./types.js";
2
+ /**
3
+ * Arrange actions — flip and align the selection. Distribution actions join
4
+ * this bundle as they land.
5
+ */
6
+ /** Alignment needs at least two elements to have a meaningful reference box. */
7
+ const hasMultiSelection = (ctx) => ctx.editor.selection.size >= 2;
8
+ /** Distribution needs at least three elements (outer two pin the span). */
9
+ const hasThreePlus = (ctx) => ctx.editor.selection.size >= 3;
10
+ export const actionFlipHorizontal = {
11
+ id: "flip-horizontal",
12
+ label: "Flip horizontal",
13
+ category: "arrange",
14
+ hotkey: { key: "h", shift: true },
15
+ iconId: "flip-horizontal",
16
+ predicate: hasSelection,
17
+ perform: ({ editor }) => {
18
+ editor.flipSelection("horizontal");
19
+ },
20
+ };
21
+ export const actionFlipVertical = {
22
+ id: "flip-vertical",
23
+ label: "Flip vertical",
24
+ category: "arrange",
25
+ hotkey: { key: "v", shift: true },
26
+ iconId: "flip-vertical",
27
+ predicate: hasSelection,
28
+ perform: ({ editor }) => {
29
+ editor.flipSelection("vertical");
30
+ },
31
+ };
32
+ export const actionAlignLeft = {
33
+ id: "align-left",
34
+ label: "Align left",
35
+ category: "arrange",
36
+ hotkey: { key: "ArrowLeft", meta: true, shift: true },
37
+ iconId: "align-left",
38
+ predicate: hasMultiSelection,
39
+ perform: ({ editor }) => {
40
+ editor.alignSelection("left");
41
+ },
42
+ };
43
+ export const actionAlignHCenter = {
44
+ id: "align-h-center",
45
+ label: "Align horizontal centres",
46
+ category: "arrange",
47
+ iconId: "align-h-center",
48
+ predicate: hasMultiSelection,
49
+ perform: ({ editor }) => {
50
+ editor.alignSelection("h-center");
51
+ },
52
+ };
53
+ export const actionAlignRight = {
54
+ id: "align-right",
55
+ label: "Align right",
56
+ category: "arrange",
57
+ hotkey: { key: "ArrowRight", meta: true, shift: true },
58
+ iconId: "align-right",
59
+ predicate: hasMultiSelection,
60
+ perform: ({ editor }) => {
61
+ editor.alignSelection("right");
62
+ },
63
+ };
64
+ export const actionAlignTop = {
65
+ id: "align-top",
66
+ label: "Align top",
67
+ category: "arrange",
68
+ hotkey: { key: "ArrowUp", meta: true, shift: true },
69
+ iconId: "align-top",
70
+ predicate: hasMultiSelection,
71
+ perform: ({ editor }) => {
72
+ editor.alignSelection("top");
73
+ },
74
+ };
75
+ export const actionAlignVCenter = {
76
+ id: "align-v-center",
77
+ label: "Align vertical centres",
78
+ category: "arrange",
79
+ iconId: "align-v-center",
80
+ predicate: hasMultiSelection,
81
+ perform: ({ editor }) => {
82
+ editor.alignSelection("v-center");
83
+ },
84
+ };
85
+ export const actionAlignBottom = {
86
+ id: "align-bottom",
87
+ label: "Align bottom",
88
+ category: "arrange",
89
+ hotkey: { key: "ArrowDown", meta: true, shift: true },
90
+ iconId: "align-bottom",
91
+ predicate: hasMultiSelection,
92
+ perform: ({ editor }) => {
93
+ editor.alignSelection("bottom");
94
+ },
95
+ };
96
+ export const actionDistributeHorizontal = {
97
+ id: "distribute-horizontal",
98
+ label: "Distribute horizontally",
99
+ category: "arrange",
100
+ hotkey: { key: "h", alt: true },
101
+ iconId: "distribute-horizontal",
102
+ predicate: hasThreePlus,
103
+ perform: ({ editor }) => {
104
+ editor.distributeSelection("horizontal");
105
+ },
106
+ };
107
+ export const actionDistributeVertical = {
108
+ id: "distribute-vertical",
109
+ label: "Distribute vertically",
110
+ category: "arrange",
111
+ hotkey: { key: "v", alt: true },
112
+ iconId: "distribute-vertical",
113
+ predicate: hasThreePlus,
114
+ perform: ({ editor }) => {
115
+ editor.distributeSelection("vertical");
116
+ },
117
+ };
118
+ export const arrangeActions = [
119
+ actionFlipHorizontal,
120
+ actionFlipVertical,
121
+ actionAlignLeft,
122
+ actionAlignHCenter,
123
+ actionAlignRight,
124
+ actionAlignTop,
125
+ actionAlignVCenter,
126
+ actionAlignBottom,
127
+ actionDistributeHorizontal,
128
+ actionDistributeVertical,
129
+ ];
130
+ //# sourceMappingURL=actionArrange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actionArrange.js","sourceRoot":"","sources":["../../src/actions/actionArrange.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,7 @@ import { type Action } from "./types.js";
2
2
  export declare const actionCopy: Action;
3
3
  export declare const actionCut: Action;
4
4
  export declare const actionPaste: Action;
5
+ export declare const actionCopyStyle: Action;
6
+ export declare const actionPasteStyle: Action;
5
7
  export declare const clipboardActions: readonly Action[];
6
8
  //# sourceMappingURL=actionClipboard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"actionClipboard.d.ts","sourceRoot":"","sources":["../../src/actions/actionClipboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,YAAY,CAAC;AAEvD,eAAO,MAAM,UAAU,EAAE,MASxB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,MASvB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAQzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAAyC,CAAC"}
1
+ {"version":3,"file":"actionClipboard.d.ts","sourceRoot":"","sources":["../../src/actions/actionClipboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,YAAY,CAAC;AAEvD,eAAO,MAAM,UAAU,EAAE,MAYxB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,MASvB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAQzB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAW7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAS9B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAM7C,CAAC"}
@@ -3,6 +3,9 @@ export const actionCopy = {
3
3
  id: "copy",
4
4
  label: "Copy",
5
5
  category: "clipboard",
6
+ // Reading the selection into the clipboard mutates nothing — stays live
7
+ // in read-only / view mode.
8
+ viewMode: true,
6
9
  hotkey: { key: "c", meta: true },
7
10
  predicate: hasSelection,
8
11
  perform: ({ editor }) => {
@@ -28,5 +31,33 @@ export const actionPaste = {
28
31
  editor.paste();
29
32
  },
30
33
  };
31
- export const clipboardActions = [actionCopy, actionCut, actionPaste];
34
+ export const actionCopyStyle = {
35
+ id: "copy-style",
36
+ label: "Copy style",
37
+ category: "clipboard",
38
+ // Sampling the selection's style into the style clipboard is non-mutating.
39
+ viewMode: true,
40
+ hotkey: { key: "c", meta: true, alt: true },
41
+ predicate: hasSelection,
42
+ perform: ({ editor }) => {
43
+ editor.copySelectionStyle();
44
+ },
45
+ };
46
+ export const actionPasteStyle = {
47
+ id: "paste-style",
48
+ label: "Paste style",
49
+ category: "clipboard",
50
+ hotkey: { key: "v", meta: true, alt: true },
51
+ predicate: ({ editor }) => editor.selection.size > 0 && editor.hasStyleClipboard,
52
+ perform: ({ editor }) => {
53
+ editor.pasteSelectionStyle();
54
+ },
55
+ };
56
+ export const clipboardActions = [
57
+ actionCopy,
58
+ actionCut,
59
+ actionPaste,
60
+ actionCopyStyle,
61
+ actionPasteStyle,
62
+ ];
32
63
  //# sourceMappingURL=actionClipboard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"actionClipboard.js","sourceRoot":"","sources":["../../src/actions/actionClipboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,YAAY,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,CAAC,MAAM,UAAU,GAAW;IAChC,EAAE,EAAE,MAAM;IACV,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;IAChC,SAAS,EAAE,YAAY;IACvB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAW;IAC/B,EAAE,EAAE,KAAK;IACT,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;IAChC,SAAS,EAAE,YAAY;IACvB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAW;IACjC,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;IAChC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAsB,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC"}
1
+ {"version":3,"file":"actionClipboard.js","sourceRoot":"","sources":["../../src/actions/actionClipboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,YAAY,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,CAAC,MAAM,UAAU,GAAW;IAChC,EAAE,EAAE,MAAM;IACV,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,WAAW;IACrB,wEAAwE;IACxE,4BAA4B;IAC5B,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;IAChC,SAAS,EAAE,YAAY;IACvB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAW;IAC/B,EAAE,EAAE,KAAK;IACT,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;IAChC,SAAS,EAAE,YAAY;IACvB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAW;IACjC,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;IAChC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAW;IACrC,EAAE,EAAE,YAAY;IAChB,KAAK,EAAE,YAAY;IACnB,QAAQ,EAAE,WAAW;IACrB,2EAA2E;IAC3E,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;IAC3C,SAAS,EAAE,YAAY;IACvB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAW;IACtC,EAAE,EAAE,aAAa;IACjB,KAAK,EAAE,aAAa;IACpB,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;IAC3C,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,iBAAiB;IAChF,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,mBAAmB,EAAE,CAAC;IAC/B,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,UAAU;IACV,SAAS;IACT,WAAW;IACX,eAAe;IACf,gBAAgB;CACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"actionKeyboard.d.ts","sourceRoot":"","sources":["../../src/actions/actionKeyboard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAoIzC,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAM5C,CAAC"}
1
+ {"version":3,"file":"actionKeyboard.d.ts","sourceRoot":"","sources":["../../src/actions/actionKeyboard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAwMzC,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAO5C,CAAC"}
@@ -6,11 +6,21 @@ import { NUDGE_STEP_PX, NUDGE_STEP_SHIFT_PX } from "../constants.js";
6
6
  * host-/component-registered — they need the DOM, which the L2 kernel can't
7
7
  * import.
8
8
  */
9
- /** Arrow keys nudge the selection (Shift = coarse step). Always consumes the arrow. */
9
+ /**
10
+ * Arrow keys nudge the selection (Shift = coarse step). Always consumes the
11
+ * arrow. `displayHotkey` only feeds the help-dialog chips — dispatch runs
12
+ * purely off `keyTest`, so the declarative entries never fire.
13
+ */
10
14
  const nudgeSelection = {
11
15
  id: "nudge-selection",
12
16
  label: "Nudge selection",
13
17
  category: "selection",
18
+ displayHotkey: [
19
+ { key: "ArrowLeft" },
20
+ { key: "ArrowRight" },
21
+ { key: "ArrowUp" },
22
+ { key: "ArrowDown" },
23
+ ],
14
24
  keyTest: (ev) => (ev.key === "ArrowLeft" ||
15
25
  ev.key === "ArrowRight" ||
16
26
  ev.key === "ArrowUp" ||
@@ -39,14 +49,68 @@ const nudgeSelection = {
39
49
  },
40
50
  };
41
51
  /**
42
- * `⌘`/`Ctrl` + arrows select the nearest element in that direction.
43
- * Distinct from plain arrows (nudge) by the modifier. Always consumes the
44
- * combo so the page doesn't scroll.
52
+ * `⌥`/`Alt` + arrows navigate the selection to the adjacent node: a graph
53
+ * neighbour (linked node) best aligned with the arrow, falling back to the
54
+ * spatially nearest element that way. Distinct from plain arrows (nudge) by the
55
+ * modifier. Always consumes the combo so the page doesn't scroll.
56
+ * `displayHotkey` only feeds the help-dialog chips; dispatch runs off `keyTest`.
45
57
  */
46
58
  const selectClosest = {
47
59
  id: "select-closest",
48
- label: "Select closest in direction",
60
+ label: "Navigate to adjacent node",
49
61
  category: "selection",
62
+ displayHotkey: [
63
+ { key: "ArrowLeft", alt: true },
64
+ { key: "ArrowRight", alt: true },
65
+ { key: "ArrowUp", alt: true },
66
+ { key: "ArrowDown", alt: true },
67
+ ],
68
+ keyTest: (ev) => ev.altKey &&
69
+ !ev.metaKey &&
70
+ !ev.ctrlKey &&
71
+ !ev.shiftKey &&
72
+ (ev.key === "ArrowLeft" ||
73
+ ev.key === "ArrowRight" ||
74
+ ev.key === "ArrowUp" ||
75
+ ev.key === "ArrowDown"),
76
+ perform: ({ editor, event }) => {
77
+ if (!event)
78
+ return;
79
+ switch (event.key) {
80
+ case "ArrowLeft":
81
+ editor.navigateFlowchart("left");
82
+ return;
83
+ case "ArrowRight":
84
+ editor.navigateFlowchart("right");
85
+ return;
86
+ case "ArrowUp":
87
+ editor.navigateFlowchart("up");
88
+ return;
89
+ case "ArrowDown":
90
+ editor.navigateFlowchart("down");
91
+ return;
92
+ }
93
+ },
94
+ };
95
+ /**
96
+ * `⌘`/`Ctrl` + arrows grow a flowchart CREATE session from the single selected
97
+ * node in that direction: each press adds a pending connected sibling (preview
98
+ * only) until `Cmd/Ctrl` is released (commit) or `Escape` (cancel). Distinct
99
+ * from plain arrows (nudge), Alt+arrows (navigate) and Cmd+Shift+arrows (align)
100
+ * by requiring meta without alt/shift. No-op unless exactly one element is
101
+ * selected. `displayHotkey` only feeds the help-dialog chips; dispatch runs off
102
+ * `keyTest`.
103
+ */
104
+ const spawnConnected = {
105
+ id: "spawn-connected",
106
+ label: "Create connected node",
107
+ category: "edit",
108
+ displayHotkey: [
109
+ { key: "ArrowLeft", meta: true },
110
+ { key: "ArrowRight", meta: true },
111
+ { key: "ArrowUp", meta: true },
112
+ { key: "ArrowDown", meta: true },
113
+ ],
50
114
  keyTest: (ev) => (ev.metaKey || ev.ctrlKey) &&
51
115
  !ev.altKey &&
52
116
  !ev.shiftKey &&
@@ -54,21 +118,22 @@ const selectClosest = {
54
118
  ev.key === "ArrowRight" ||
55
119
  ev.key === "ArrowUp" ||
56
120
  ev.key === "ArrowDown"),
121
+ predicate: ({ editor }) => editor.selection.size === 1,
57
122
  perform: ({ editor, event }) => {
58
123
  if (!event)
59
124
  return;
60
125
  switch (event.key) {
61
126
  case "ArrowLeft":
62
- editor.selectClosest("left");
127
+ editor.growFlowchart("left");
63
128
  return;
64
129
  case "ArrowRight":
65
- editor.selectClosest("right");
130
+ editor.growFlowchart("right");
66
131
  return;
67
132
  case "ArrowUp":
68
- editor.selectClosest("up");
133
+ editor.growFlowchart("up");
69
134
  return;
70
135
  case "ArrowDown":
71
- editor.selectClosest("down");
136
+ editor.growFlowchart("down");
72
137
  return;
73
138
  }
74
139
  },
@@ -102,6 +167,8 @@ const editOrCreate = {
102
167
  id: "edit-or-create",
103
168
  label: "Edit / create",
104
169
  category: "edit",
170
+ // Display-only chip; `keyTest` drives dispatch.
171
+ displayHotkey: { key: "Enter" },
105
172
  keyTest: (ev) => ev.key === "Enter" && !ev.metaKey && !ev.ctrlKey && !ev.altKey,
106
173
  predicate: ({ editor }) => {
107
174
  if (editor.selection.size === 1) {
@@ -127,6 +194,7 @@ const editOrCreate = {
127
194
  export const keyboardActions = [
128
195
  nudgeSelection,
129
196
  selectClosest,
197
+ spawnConnected,
130
198
  focusNext,
131
199
  focusPrev,
132
200
  editOrCreate,
@@ -1 +1 @@
1
- {"version":3,"file":"actionKeyboard.js","sourceRoot":"","sources":["../../src/actions/actionKeyboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actionKeyboard.js","sourceRoot":"","sources":["../../src/actions/actionKeyboard.ts"],"names":[],"mappings":"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"}
@@ -6,8 +6,12 @@ export declare const actionModeEllipse: Action;
6
6
  export declare const actionModeText: Action;
7
7
  export declare const actionModeLink: Action;
8
8
  export declare const actionModeBrush: Action;
9
+ export declare const actionModeErase: Action;
10
+ export declare const actionModeLaser: Action;
9
11
  export declare const actionModeFrame: Action;
10
12
  export declare const actionToggleToolLock: Action;
13
+ export declare const actionCommitCrop: Action;
14
+ export declare const actionCancelCrop: Action;
11
15
  export declare const actionCancel: Action;
12
16
  export declare const modeActions: readonly Action[];
13
17
  //# sourceMappingURL=actionMode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"actionMode.d.ts","sourceRoot":"","sources":["../../src/actions/actionMode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAMzC,eAAO,MAAM,gBAAgB,EAAE,MAW9B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAW5B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAW5B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAY/B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAW5B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAW5B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAW7B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAW7B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAalC,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAQ1B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAWxC,CAAC"}
1
+ {"version":3,"file":"actionMode.d.ts","sourceRoot":"","sources":["../../src/actions/actionMode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAMzC,eAAO,MAAM,gBAAgB,EAAE,MAY9B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAY5B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAW5B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAY/B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAW5B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAW5B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAW7B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAW7B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAa7B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAW7B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAalC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAS9B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAU9B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAS1B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAexC,CAAC"}
@@ -5,6 +5,7 @@ export const actionModeSelect = {
5
5
  id: "mode-select",
6
6
  label: "Select tool",
7
7
  category: "mode",
8
+ viewMode: true,
8
9
  hotkey: { key: "v" },
9
10
  iconId: "mode-select",
10
11
  uiKind: "toggle",
@@ -17,6 +18,7 @@ export const actionModeHand = {
17
18
  id: "mode-hand",
18
19
  label: "Hand tool",
19
20
  category: "mode",
21
+ viewMode: true,
20
22
  hotkey: { key: "h" },
21
23
  iconId: "mode-hand",
22
24
  uiKind: "toggle",
@@ -86,6 +88,32 @@ export const actionModeBrush = {
86
88
  editor.setMode("brush");
87
89
  },
88
90
  };
91
+ export const actionModeErase = {
92
+ id: "mode-erase",
93
+ label: "Eraser tool",
94
+ category: "mode",
95
+ hotkey: { key: "e" },
96
+ iconId: "mode-erase",
97
+ uiKind: "toggle",
98
+ checked: ({ editor }) => editor.mode === "erase",
99
+ perform: ({ editor }) => {
100
+ editor.setMode("erase");
101
+ },
102
+ };
103
+ export const actionModeLaser = {
104
+ id: "mode-laser",
105
+ label: "Laser pointer",
106
+ category: "mode",
107
+ // Laser is presentation-only (no scene mutation) → available in read-only.
108
+ viewMode: true,
109
+ hotkey: { key: "k" },
110
+ iconId: "mode-laser",
111
+ uiKind: "toggle",
112
+ checked: ({ editor }) => editor.mode === "laser",
113
+ perform: ({ editor }) => {
114
+ editor.setMode("laser");
115
+ },
116
+ };
89
117
  export const actionModeFrame = {
90
118
  id: "mode-frame",
91
119
  label: "Frame tool",
@@ -112,10 +140,32 @@ export const actionToggleToolLock = {
112
140
  editor.setToolLocked(!editor.toolLocked);
113
141
  },
114
142
  };
143
+ export const actionCommitCrop = {
144
+ id: "commit-image-crop",
145
+ label: "Apply crop",
146
+ category: "edit",
147
+ hotkey: { key: "Enter" },
148
+ predicate: ({ editor }) => editor.mode === "crop",
149
+ perform: ({ editor }) => {
150
+ editor.commitImageCrop();
151
+ },
152
+ };
153
+ export const actionCancelCrop = {
154
+ id: "cancel-image-crop",
155
+ label: "Cancel crop",
156
+ category: "edit",
157
+ viewMode: true,
158
+ hotkey: { key: "Escape" },
159
+ predicate: ({ editor }) => editor.mode === "crop",
160
+ perform: ({ editor }) => {
161
+ editor.cancelImageCrop();
162
+ },
163
+ };
115
164
  export const actionCancel = {
116
165
  id: "cancel",
117
166
  label: "Cancel / clear selection",
118
167
  category: "edit",
168
+ viewMode: true,
119
169
  hotkey: { key: "Escape" },
120
170
  perform: ({ editor }) => {
121
171
  editor.cancelInteraction();
@@ -129,8 +179,12 @@ export const modeActions = [
129
179
  actionModeText,
130
180
  actionModeLink,
131
181
  actionModeBrush,
182
+ actionModeErase,
183
+ actionModeLaser,
132
184
  actionModeFrame,
133
185
  actionToggleToolLock,
186
+ actionCommitCrop,
187
+ actionCancelCrop,
134
188
  actionCancel,
135
189
  ];
136
190
  //# sourceMappingURL=actionMode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"actionMode.js","sourceRoot":"","sources":["../../src/actions/actionMode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actionMode.js","sourceRoot":"","sources":["../../src/actions/actionMode.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"actionSelection.d.ts","sourceRoot":"","sources":["../../src/actions/actionSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAoC,MAAM,YAAY,CAAC;AAE3E,eAAO,MAAM,eAAe,EAAE,MAQ7B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MASnC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,MAStC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAS9B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MASlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MASjC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAO7C,CAAC"}
1
+ {"version":3,"file":"actionSelection.d.ts","sourceRoot":"","sources":["../../src/actions/actionSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAoC,MAAM,YAAY,CAAC;AAE3E,eAAO,MAAM,eAAe,EAAE,MAS7B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MASnC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,MAStC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAS9B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MASlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MASjC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAO7C,CAAC"}
@@ -3,6 +3,7 @@ export const actionSelectAll = {
3
3
  id: "select-all",
4
4
  label: "Select all",
5
5
  category: "selection",
6
+ viewMode: true,
6
7
  hotkey: { key: "a", meta: true },
7
8
  perform: ({ editor }) => {
8
9
  editor.selectAll();
@@ -1 +1 @@
1
- {"version":3,"file":"actionSelection.js","sourceRoot":"","sources":["../../src/actions/actionSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE3E,MAAM,CAAC,MAAM,eAAe,GAAW;IACrC,EAAE,EAAE,YAAY;IAChB,KAAK,EAAE,YAAY;IACnB,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;IAChC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,SAAS,EAAE,CAAC;IACrB,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAW;IAC3C,EAAE,EAAE,kBAAkB;IACtB,KAAK,EAAE,QAAQ;IACf,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;IACjD,SAAS,EAAE,kBAAkB;IAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,cAAc,EAAE,CAAC;IAC1B,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAW;IAC9C,EAAE,EAAE,qBAAqB;IACzB,KAAK,EAAE,WAAW;IAClB,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;IAChC,SAAS,EAAE,YAAY;IACvB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,iBAAiB,EAAE,CAAC;IAC7B,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAW;IACtC,EAAE,EAAE,aAAa;IACjB,KAAK,EAAE,eAAe;IACtB,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IAC7C,SAAS,EAAE,YAAY;IACvB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,mBAAmB,EAAE,CAAC;IAC/B,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAW;IAC1C,EAAE,EAAE,iBAAiB;IACrB,KAAK,EAAE,iBAAiB;IACxB,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IACrD,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC;IACtD,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,cAAc,EAAE,CAAC;IAC1B,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAW;IACzC,EAAE,EAAE,gBAAgB;IACpB,KAAK,EAAE,gBAAgB;IACvB,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IACnD,SAAS,EAAE,YAAY;IACvB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,eAAe;IACf,qBAAqB;IACrB,wBAAwB;IACxB,gBAAgB;IAChB,oBAAoB;IACpB,mBAAmB;CACpB,CAAC"}
1
+ {"version":3,"file":"actionSelection.js","sourceRoot":"","sources":["../../src/actions/actionSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE3E,MAAM,CAAC,MAAM,eAAe,GAAW;IACrC,EAAE,EAAE,YAAY;IAChB,KAAK,EAAE,YAAY;IACnB,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;IAChC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,SAAS,EAAE,CAAC;IACrB,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAW;IAC3C,EAAE,EAAE,kBAAkB;IACtB,KAAK,EAAE,QAAQ;IACf,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;IACjD,SAAS,EAAE,kBAAkB;IAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,cAAc,EAAE,CAAC;IAC1B,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAW;IAC9C,EAAE,EAAE,qBAAqB;IACzB,KAAK,EAAE,WAAW;IAClB,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;IAChC,SAAS,EAAE,YAAY;IACvB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,iBAAiB,EAAE,CAAC;IAC7B,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAW;IACtC,EAAE,EAAE,aAAa;IACjB,KAAK,EAAE,eAAe;IACtB,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IAC7C,SAAS,EAAE,YAAY;IACvB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,mBAAmB,EAAE,CAAC;IAC/B,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAW;IAC1C,EAAE,EAAE,iBAAiB;IACrB,KAAK,EAAE,iBAAiB;IACxB,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IACrD,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC;IACtD,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,cAAc,EAAE,CAAC;IAC1B,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAW;IACzC,EAAE,EAAE,gBAAgB;IACpB,KAAK,EAAE,gBAAgB;IACvB,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IACnD,SAAS,EAAE,YAAY;IACvB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,eAAe;IACf,qBAAqB;IACrB,wBAAwB;IACxB,gBAAgB;IAChB,oBAAoB;IACpB,mBAAmB;CACpB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { type Action } from "./types.js";
2
+ export declare const actionIncreaseFontSize: Action;
3
+ export declare const actionDecreaseFontSize: Action;
4
+ export declare const textActions: readonly Action[];
5
+ //# sourceMappingURL=actionText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actionText.d.ts","sourceRoot":"","sources":["../../src/actions/actionText.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAsB,MAAM,YAAY,CAAC;AAY7D,eAAO,MAAM,sBAAsB,EAAE,MAWpC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,MAUpC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAAqD,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { getElement, isText } from "@oh-just-another/scene";
2
+ import {} from "./types.js";
3
+ /** A text shape is in the current selection (font-size steps need one). */
4
+ const hasTextSelection = (ctx) => {
5
+ const { editor } = ctx;
6
+ for (const id of editor.selection) {
7
+ const el = getElement(editor.scene, id);
8
+ if (el !== undefined && isText(el))
9
+ return true;
10
+ }
11
+ return false;
12
+ };
13
+ export const actionIncreaseFontSize = {
14
+ id: "increase-font-size",
15
+ label: "Increase font size",
16
+ category: "edit",
17
+ // ⌘⇧> — the `>` key is `Period` shifted; match by code so it works across
18
+ // keyboard layouts.
19
+ hotkey: { code: "Period", meta: true, shift: true },
20
+ predicate: hasTextSelection,
21
+ perform: ({ editor }) => {
22
+ editor.adjustSelectionFontSize("increase");
23
+ },
24
+ };
25
+ export const actionDecreaseFontSize = {
26
+ id: "decrease-font-size",
27
+ label: "Decrease font size",
28
+ category: "edit",
29
+ // ⌘⇧< — the `<` key is `Comma` shifted.
30
+ hotkey: { code: "Comma", meta: true, shift: true },
31
+ predicate: hasTextSelection,
32
+ perform: ({ editor }) => {
33
+ editor.adjustSelectionFontSize("decrease");
34
+ },
35
+ };
36
+ export const textActions = [actionIncreaseFontSize, actionDecreaseFontSize];
37
+ //# sourceMappingURL=actionText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actionText.js","sourceRoot":"","sources":["../../src/actions/actionText.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAmC,MAAM,YAAY,CAAC;AAE7D,2EAA2E;AAC3E,MAAM,gBAAgB,GAAG,CAAC,GAAkB,EAAW,EAAE;IACvD,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IACvB,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACxC,IAAI,EAAE,KAAK,SAAS,IAAI,MAAM,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;IAClD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAW;IAC5C,EAAE,EAAE,oBAAoB;IACxB,KAAK,EAAE,oBAAoB;IAC3B,QAAQ,EAAE,MAAM;IAChB,0EAA0E;IAC1E,oBAAoB;IACpB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IACnD,SAAS,EAAE,gBAAgB;IAC3B,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAW;IAC5C,EAAE,EAAE,oBAAoB;IACxB,KAAK,EAAE,oBAAoB;IAC3B,QAAQ,EAAE,MAAM;IAChB,wCAAwC;IACxC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IAClD,SAAS,EAAE,gBAAgB;IAC3B,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAsB,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,CAAC"}
@@ -3,5 +3,11 @@ import type { Action } from "./types.js";
3
3
  * View toggles (grid, …) — not part of the document, not in history.
4
4
  */
5
5
  export declare const actionToggleGrid: Action;
6
+ /**
7
+ * Read-only / view mode toggle (`⌥R`). Flagged `viewMode` so it stays
8
+ * live once the editor is read-only — otherwise you could enter view
9
+ * mode but never leave it via the keyboard.
10
+ */
11
+ export declare const actionToggleReadOnly: Action;
6
12
  export declare const viewActions: readonly Action[];
7
13
  //# sourceMappingURL=actionView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"actionView.d.ts","sourceRoot":"","sources":["../../src/actions/actionView.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;GAEG;AAEH,eAAO,MAAM,gBAAgB,EAAE,MAU9B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAAuB,CAAC"}
1
+ {"version":3,"file":"actionView.d.ts","sourceRoot":"","sources":["../../src/actions/actionView.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;GAEG;AAEH,eAAO,MAAM,gBAAgB,EAAE,MAW9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAWlC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAA6C,CAAC"}
@@ -5,12 +5,30 @@ export const actionToggleGrid = {
5
5
  id: "toggle-grid",
6
6
  label: "Toggle grid",
7
7
  category: "other",
8
+ viewMode: true,
8
9
  hotkey: { key: "g" },
9
10
  uiKind: "toggle",
10
- checked: ({ editor }) => editor.gridVisible,
11
+ checked: ({ editor }) => editor.gridEnabled,
11
12
  perform: ({ editor }) => {
12
13
  editor.toggleGrid();
13
14
  },
14
15
  };
15
- export const viewActions = [actionToggleGrid];
16
+ /**
17
+ * Read-only / view mode toggle (`⌥R`). Flagged `viewMode` so it stays
18
+ * live once the editor is read-only — otherwise you could enter view
19
+ * mode but never leave it via the keyboard.
20
+ */
21
+ export const actionToggleReadOnly = {
22
+ id: "toggle-read-only",
23
+ label: "Read-only mode",
24
+ category: "other",
25
+ viewMode: true,
26
+ hotkey: { key: "r", alt: true },
27
+ uiKind: "toggle",
28
+ checked: ({ editor }) => editor.readOnly,
29
+ perform: ({ editor }) => {
30
+ editor.toggleReadOnly();
31
+ },
32
+ };
33
+ export const viewActions = [actionToggleGrid, actionToggleReadOnly];
16
34
  //# sourceMappingURL=actionView.js.map