@canvus/core 0.1.1 → 0.1.3

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 (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +32 -1
  3. package/dist/drop-zone.d.ts.map +1 -1
  4. package/dist/drop-zone.js +16 -0
  5. package/dist/drop-zone.js.map +1 -1
  6. package/dist/handlers/clipboard.handler.d.ts +22 -0
  7. package/dist/handlers/clipboard.handler.d.ts.map +1 -0
  8. package/dist/handlers/clipboard.handler.js +349 -0
  9. package/dist/handlers/clipboard.handler.js.map +1 -0
  10. package/dist/handlers/command.handler.d.ts +18 -0
  11. package/dist/handlers/command.handler.d.ts.map +1 -0
  12. package/dist/handlers/command.handler.js +430 -0
  13. package/dist/handlers/command.handler.js.map +1 -0
  14. package/dist/handlers/drag.handler.d.ts +22 -0
  15. package/dist/handlers/drag.handler.d.ts.map +1 -0
  16. package/dist/handlers/drag.handler.js +669 -0
  17. package/dist/handlers/drag.handler.js.map +1 -0
  18. package/dist/handlers/draw.handler.d.ts +37 -0
  19. package/dist/handlers/draw.handler.d.ts.map +1 -0
  20. package/dist/handlers/draw.handler.js +210 -0
  21. package/dist/handlers/draw.handler.js.map +1 -0
  22. package/dist/handlers/index.d.ts +10 -0
  23. package/dist/handlers/index.d.ts.map +1 -0
  24. package/dist/handlers/index.js +12 -0
  25. package/dist/handlers/index.js.map +1 -0
  26. package/dist/handlers/pan.handler.d.ts +34 -0
  27. package/dist/handlers/pan.handler.d.ts.map +1 -0
  28. package/dist/handlers/pan.handler.js +95 -0
  29. package/dist/handlers/pan.handler.js.map +1 -0
  30. package/dist/handlers/resize.handler.d.ts +26 -0
  31. package/dist/handlers/resize.handler.d.ts.map +1 -0
  32. package/dist/handlers/resize.handler.js +487 -0
  33. package/dist/handlers/resize.handler.js.map +1 -0
  34. package/dist/handlers/selection.handler.d.ts +22 -0
  35. package/dist/handlers/selection.handler.d.ts.map +1 -0
  36. package/dist/handlers/selection.handler.js +259 -0
  37. package/dist/handlers/selection.handler.js.map +1 -0
  38. package/dist/handlers/spacing.handler.d.ts +29 -0
  39. package/dist/handlers/spacing.handler.d.ts.map +1 -0
  40. package/dist/handlers/spacing.handler.js +326 -0
  41. package/dist/handlers/spacing.handler.js.map +1 -0
  42. package/dist/handlers/types.d.ts +204 -0
  43. package/dist/handlers/types.d.ts.map +1 -0
  44. package/dist/handlers/types.js +10 -0
  45. package/dist/handlers/types.js.map +1 -0
  46. package/dist/index.d.ts +1 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/shadow-mount.d.ts.map +1 -1
  49. package/dist/shadow-mount.js +51 -2
  50. package/dist/shadow-mount.js.map +1 -1
  51. package/dist/workspace.d.ts +149 -68
  52. package/dist/workspace.d.ts.map +1 -1
  53. package/dist/workspace.js +349 -2208
  54. package/dist/workspace.js.map +1 -1
  55. package/package.json +4 -1
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Canvus Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -3,8 +3,14 @@
3
3
  [![npm version](https://img.shields.io/npm/v/@canvus/core.svg)](https://www.npmjs.com/package/@canvus/core)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
5
5
 
6
+ > ⚠️ **Beta Release (v0.1.2)**: Canvus is currently in active development (public beta). APIs and configuration options may evolve before the v1.0.0 stable release.
7
+
6
8
  Canvus is a headless, framework-agnostic vanilla TypeScript SDK for building visual layout editing workspaces. By separating rendering and visual handles, it enables developers to construct CMS page-builder canvases, A/B testing editors, and high-performance visual IDE tools with web-native performance.
7
9
 
10
+ [Documentation](https://canvus.io/)
11
+
12
+ [Demo](https://canvus.io/playground)
13
+
8
14
  ---
9
15
 
10
16
  ## 🚀 Key Features
@@ -25,6 +31,9 @@ canvus/
25
31
  ├── demo/ # Dev Workbench (Interactive local testing site)
26
32
  ├── dist/ # Compiled SDK ESM build and type declarations
27
33
  ├── docs/ # Developer documentation & Architecture Decision Records (ADRs)
34
+ ├── packages/ # Workspace monorepo packages
35
+ │ ├── react/ # React bindings (@canvus/react)
36
+ │ └── react-demo/ # React Demo App
28
37
  ├── src/ # SDK Core source code (TypeScript)
29
38
  ├── skills/ # Custom Agent/AI skills for codebase tasks
30
39
  └── package.json # Scripts, build rules, and dependencies
@@ -37,12 +46,20 @@ For a detailed walkthrough of each source file and their individual roles, see t
37
46
  ## 🛠️ Quick Start
38
47
 
39
48
  ### 1. Installation
40
- Install via npm:
49
+
50
+ Install the core SDK:
41
51
  ```bash
42
52
  npm install @canvus/core
43
53
  ```
44
54
 
55
+ Or install the React bindings:
56
+ ```bash
57
+ npm install @canvus/react @canvus/core
58
+ ```
59
+
45
60
  ### 2. Basic Usage
61
+
62
+ #### Vanilla TS/JS
46
63
  Import and initialize a workspace in your project:
47
64
  ```ts
48
65
  import { Workspace } from "@canvus/core";
@@ -55,6 +72,20 @@ const workspace = new Workspace(container, {
55
72
  });
56
73
  ```
57
74
 
75
+ #### React
76
+ See the [@canvus/react README](packages/react/README.md) for full instructions:
77
+ ```tsx
78
+ import { Canvus } from "@canvus/react";
79
+
80
+ function App() {
81
+ return (
82
+ <Canvus style={{ width: "100%", height: "100vh" }}>
83
+ {/* Canvas workspace children */}
84
+ </Canvus>
85
+ );
86
+ }
87
+ ```
88
+
58
89
  The SDK exports all core primitives — see the [API Reference](docs/api.md) for the full surface.
59
90
 
60
91
  ### 3. Development (Contributing)
@@ -1 +1 @@
1
- {"version":3,"file":"drop-zone.d.ts","sourceRoot":"","sources":["../src/drop-zone.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,wEAAwE;IACxE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC1B;AAED,uCAAuC;AACvC,MAAM,WAAW,UAAU;IACzB,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,SAAS,EAAE,kBAAkB,CAAC;IAC9B,8EAA8E;IAC9E,aAAa,CAAC,EAAE;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,IAAI,CAAC;KACZ,CAAC;CACH;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EACnC,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,WAAW,GAAG,IAAI,EAC9C,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,WAAW,GAAG,IAAI,GAClD,UAAU,GAAG,IAAI,CAgOnB"}
1
+ {"version":3,"file":"drop-zone.d.ts","sourceRoot":"","sources":["../src/drop-zone.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,wEAAwE;IACxE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC1B;AAED,uCAAuC;AACvC,MAAM,WAAW,UAAU;IACzB,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,SAAS,EAAE,kBAAkB,CAAC;IAC9B,8EAA8E;IAC9E,aAAa,CAAC,EAAE;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,IAAI,CAAC;KACZ,CAAC;CACH;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EACnC,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,WAAW,GAAG,IAAI,EAC9C,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,WAAW,GAAG,IAAI,GAClD,UAAU,GAAG,IAAI,CAiPnB"}
package/dist/drop-zone.js CHANGED
@@ -30,6 +30,22 @@ export function findDropTarget(draggedId, canvasPos, tree, getWrapper, getConten
30
30
  if (!tree.isContainer(node.id)) {
31
31
  continue;
32
32
  }
33
+ // Sibling-in-layout constraint: if the container is a sibling of the dragged node
34
+ // in a layout parent (flex or grid), do not drop inside it unless it is a layout container
35
+ // itself or already has children.
36
+ if (node.parentId !== null && node.parentId === tree.get(draggedId)?.parentId) {
37
+ const parentNode = tree.get(node.parentId);
38
+ if (parentNode) {
39
+ const pMode = parentNode.layoutMode;
40
+ const parentIsLayout = pMode === "flex" || pMode === "inline-flex" || pMode === "grid" || pMode === "inline-grid";
41
+ if (parentIsLayout) {
42
+ const isTargetLayout = node.layoutMode === "flex" || node.layoutMode === "inline-flex" || node.layoutMode === "grid" || node.layoutMode === "inline-grid";
43
+ if (!isTargetLayout && node.childIds.length === 0) {
44
+ continue;
45
+ }
46
+ }
47
+ }
48
+ }
33
49
  if (node.currentRect && isPointInElement(canvasPos.x, canvasPos.y, node.currentRect)) {
34
50
  targetContainer = node;
35
51
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"drop-zone.js","sourceRoot":"","sources":["../src/drop-zone.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drop-zone.js","sourceRoot":"","sources":["../src/drop-zone.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { KeyboardHandler, WorkspaceContext } from "./types.js";
2
+ /**
3
+ * Manages copy, cut, paste, duplicate, and delete operations.
4
+ */
5
+ export declare class ClipboardHandler implements KeyboardHandler {
6
+ readonly id = "clipboard";
7
+ private ctx;
8
+ private clipboardItems;
9
+ constructor(ctx: WorkspaceContext);
10
+ onKeyDown(e: KeyboardEvent): boolean;
11
+ /** Deletes the currently selected node from the workspace. */
12
+ deleteSelectedNode(): void;
13
+ /** Duplicates the selected node right next to it as a sibling. */
14
+ duplicateSelectedNode(): void;
15
+ /** Copies the selected node to the internal clipboard. */
16
+ copySelectedNode(): void;
17
+ /** Cuts the selected node to the clipboard, removing it from the canvas. */
18
+ cutSelectedNode(): void;
19
+ /** Pastes the node currently in the clipboard into the canvas. */
20
+ pasteNode(): void;
21
+ }
22
+ //# sourceMappingURL=clipboard.handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.handler.d.ts","sourceRoot":"","sources":["../../src/handlers/clipboard.handler.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AASpE;;GAEG;AACH,qBAAa,gBAAiB,YAAW,eAAe;IACtD,QAAQ,CAAC,EAAE,eAAe;IAE1B,OAAO,CAAC,GAAG,CAAmB;IAC9B,OAAO,CAAC,cAAc,CAAuB;gBAEjC,GAAG,EAAE,gBAAgB;IAMjC,SAAS,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO;IAyBpC,8DAA8D;IAC9D,kBAAkB,IAAI,IAAI;IAwD1B,kEAAkE;IAClE,qBAAqB,IAAI,IAAI;IA2F7B,0DAA0D;IAC1D,gBAAgB,IAAI,IAAI;IAmBxB,4EAA4E;IAC5E,eAAe,IAAI,IAAI;IAKvB,kEAAkE;IAClE,SAAS,IAAI,IAAI;CAsKlB"}
@@ -0,0 +1,349 @@
1
+ // ─────────────────────────────────────────────────────────────
2
+ // canvus/src/handlers/clipboard.handler.ts
3
+ // Handles clipboard keyboard shortcuts and operations: copy, cut, paste, duplicate, delete.
4
+ // ─────────────────────────────────────────────────────────────
5
+ /**
6
+ * Manages copy, cut, paste, duplicate, and delete operations.
7
+ */
8
+ export class ClipboardHandler {
9
+ id = "clipboard";
10
+ ctx;
11
+ clipboardItems = [];
12
+ constructor(ctx) {
13
+ this.ctx = ctx;
14
+ }
15
+ // ── KeyboardHandler Interface ───────────────────────
16
+ onKeyDown(e) {
17
+ if (e.key === "Delete" || e.key === "Backspace") {
18
+ if (!e.metaKey && !e.ctrlKey) {
19
+ this.deleteSelectedNode();
20
+ return true;
21
+ }
22
+ }
23
+ else if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "d") {
24
+ e.preventDefault();
25
+ this.duplicateSelectedNode();
26
+ return true;
27
+ }
28
+ else if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "c") {
29
+ this.copySelectedNode();
30
+ return true;
31
+ }
32
+ else if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "x") {
33
+ this.cutSelectedNode();
34
+ return true;
35
+ }
36
+ else if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "v") {
37
+ this.pasteNode();
38
+ return true;
39
+ }
40
+ return false;
41
+ }
42
+ // ── Public API Methods ──────────────────────────────
43
+ /** Deletes the currently selected node from the workspace. */
44
+ deleteSelectedNode() {
45
+ const topLevelIds = this.ctx.getTopLevelSelectedIds();
46
+ if (topLevelIds.length === 0)
47
+ return;
48
+ this.ctx.mount.setTransitionsEnabled(false);
49
+ const ops = [];
50
+ const parentsToRemeasure = new Set();
51
+ for (const id of topLevelIds) {
52
+ const node = this.ctx.tree.get(id);
53
+ if (!node)
54
+ continue;
55
+ const parentId = node.parentId;
56
+ const rawMarkup = node.rawMarkup;
57
+ const rect = node.currentRect;
58
+ const removed = this.ctx.removeNode(id);
59
+ if (removed) {
60
+ ops.push({
61
+ type: "delete-node",
62
+ nodeId: id,
63
+ payload: { parentId },
64
+ undoPayload: { parentId, rawMarkup, rect }
65
+ });
66
+ if (parentId) {
67
+ parentsToRemeasure.add(parentId);
68
+ }
69
+ }
70
+ }
71
+ if (ops.length > 0) {
72
+ this.ctx.callbacks.onOperationsGenerated?.(ops);
73
+ // Commit HTML for affected parent containers or root
74
+ for (const parentId of parentsToRemeasure) {
75
+ this.ctx.remeasureSubtree(parentId);
76
+ const html = this.ctx.mount.extractHTML(parentId);
77
+ if (html) {
78
+ this.ctx.callbacks.onHTMLCommit?.(parentId, html);
79
+ }
80
+ }
81
+ // If any deleted node was a root node, commit HTML for it
82
+ for (const op of ops) {
83
+ if (!op.payload.parentId) {
84
+ this.ctx.callbacks.onHTMLCommit?.(op.nodeId, "");
85
+ }
86
+ }
87
+ this.ctx.deselectAll();
88
+ }
89
+ this.ctx.mount.setTransitionsEnabled(true);
90
+ this.ctx.render();
91
+ }
92
+ /** Duplicates the selected node right next to it as a sibling. */
93
+ duplicateSelectedNode() {
94
+ const topLevelIds = this.ctx.getTopLevelSelectedIds();
95
+ if (topLevelIds.length === 0)
96
+ return;
97
+ this.ctx.mount.setTransitionsEnabled(false);
98
+ const newSelectedIds = [];
99
+ const ops = [];
100
+ const parentsToCommit = new Set();
101
+ const rootsToCommit = [];
102
+ for (const originalId of topLevelIds) {
103
+ const originalNode = this.ctx.tree.get(originalId);
104
+ if (!originalNode)
105
+ continue;
106
+ const rawMarkup = this.ctx.mount.extractHTML(originalId);
107
+ if (!rawMarkup)
108
+ continue;
109
+ const duplicateId = `cloned-${this.ctx.nextElementId()}-${Date.now().toString(36)}`;
110
+ const parentId = originalNode.parentId;
111
+ let rect = originalNode.currentRect ? { ...originalNode.currentRect } : null;
112
+ let index;
113
+ if (parentId !== null) {
114
+ index = this.ctx.tree.getChildIndex(originalId) + 1;
115
+ }
116
+ else if (rect) {
117
+ rect.x += 20;
118
+ rect.y += 20;
119
+ }
120
+ this.ctx.addNode({
121
+ id: duplicateId,
122
+ rawMarkup,
123
+ currentRect: rect
124
+ }, parentId, index);
125
+ if (this.ctx.jsMarkedNodes.has(originalId)) {
126
+ this.ctx.markNodeHasJS(duplicateId);
127
+ }
128
+ this.ctx.callbacks.onNodeCloned?.(originalId, duplicateId);
129
+ newSelectedIds.push(duplicateId);
130
+ const finalIndex = parentId !== null ? this.ctx.tree.getChildIndex(duplicateId) : -1;
131
+ ops.push({
132
+ type: "create-node",
133
+ nodeId: duplicateId,
134
+ payload: { parentId, index: finalIndex, rawMarkup, rect },
135
+ undoPayload: { parentId }
136
+ });
137
+ if (parentId) {
138
+ parentsToCommit.add(parentId);
139
+ }
140
+ else {
141
+ rootsToCommit.push(duplicateId);
142
+ }
143
+ }
144
+ if (ops.length > 0) {
145
+ const prevSelection = new Set(this.ctx.selectedIds);
146
+ this.ctx.selectedIds.clear();
147
+ for (const id of newSelectedIds) {
148
+ this.ctx.selectedIds.add(id);
149
+ }
150
+ this.ctx.syncLazyChildren(prevSelection, this.ctx.selectedIds);
151
+ this.ctx.callbacks.onSelectionChange?.(this.ctx.selectedIds);
152
+ this.ctx.updateBreadcrumb();
153
+ this.ctx.callbacks.onOperationsGenerated?.(ops);
154
+ for (const parentId of parentsToCommit) {
155
+ const html = this.ctx.mount.extractHTML(parentId);
156
+ if (html) {
157
+ this.ctx.callbacks.onHTMLCommit?.(parentId, html);
158
+ }
159
+ }
160
+ for (const rootId of rootsToCommit) {
161
+ const html = this.ctx.mount.extractHTML(rootId);
162
+ if (html) {
163
+ this.ctx.callbacks.onHTMLCommit?.(rootId, html);
164
+ }
165
+ }
166
+ }
167
+ this.ctx.mount.setTransitionsEnabled(true);
168
+ this.ctx.render();
169
+ }
170
+ /** Copies the selected node to the internal clipboard. */
171
+ copySelectedNode() {
172
+ const topLevelIds = this.ctx.getTopLevelSelectedIds();
173
+ if (topLevelIds.length === 0)
174
+ return;
175
+ this.clipboardItems = [];
176
+ for (const id of topLevelIds) {
177
+ const node = this.ctx.tree.get(id);
178
+ const markup = this.ctx.mount.extractHTML(id);
179
+ if (node && markup) {
180
+ this.clipboardItems.push({
181
+ rawMarkup: markup,
182
+ rect: node.currentRect ? { ...node.currentRect } : null,
183
+ hasJS: this.ctx.jsMarkedNodes.has(id),
184
+ originalId: id,
185
+ });
186
+ }
187
+ }
188
+ }
189
+ /** Cuts the selected node to the clipboard, removing it from the canvas. */
190
+ cutSelectedNode() {
191
+ this.copySelectedNode();
192
+ this.deleteSelectedNode();
193
+ }
194
+ /** Pastes the node currently in the clipboard into the canvas. */
195
+ pasteNode() {
196
+ if (this.clipboardItems.length === 0)
197
+ return;
198
+ this.ctx.mount.setTransitionsEnabled(false);
199
+ const newSelectedIds = [];
200
+ const ops = [];
201
+ const parentsToCommit = new Set();
202
+ const rootsToCommit = [];
203
+ const targets = this.ctx.selectedIds.size > 0 ? this.ctx.getTopLevelSelectedIds() : [];
204
+ if (targets.length === 0) {
205
+ // Paste all items at root level
206
+ for (const item of this.clipboardItems) {
207
+ const id = `pasted-${this.ctx.nextElementId()}-${Date.now().toString(36)}`;
208
+ let rect;
209
+ if (item.rect) {
210
+ rect = {
211
+ x: item.rect.x + 20,
212
+ y: item.rect.y + 20,
213
+ width: item.rect.width,
214
+ height: item.rect.height,
215
+ };
216
+ item.rect = {
217
+ x: item.rect.x + 20,
218
+ y: item.rect.y + 20,
219
+ width: item.rect.width,
220
+ height: item.rect.height,
221
+ };
222
+ }
223
+ else {
224
+ rect = { x: 100, y: 100, width: 120, height: 120 };
225
+ }
226
+ this.ctx.addNode({
227
+ id,
228
+ rawMarkup: item.rawMarkup,
229
+ currentRect: rect,
230
+ }, null);
231
+ if (item.hasJS) {
232
+ this.ctx.markNodeHasJS(id);
233
+ }
234
+ if (item.originalId) {
235
+ this.ctx.callbacks.onNodeCloned?.(item.originalId, id);
236
+ }
237
+ newSelectedIds.push(id);
238
+ ops.push({
239
+ type: "create-node",
240
+ nodeId: id,
241
+ payload: { parentId: null, index: undefined, rawMarkup: item.rawMarkup, rect },
242
+ undoPayload: { parentId: null }
243
+ });
244
+ rootsToCommit.push(id);
245
+ }
246
+ }
247
+ else {
248
+ // Paste next to or inside each target
249
+ for (const targetId of targets) {
250
+ const targetNode = this.ctx.tree.get(targetId);
251
+ if (!targetNode)
252
+ continue;
253
+ const isContainer = this.ctx.tree.isContainer(targetId);
254
+ const parentId = isContainer ? targetId : targetNode.parentId;
255
+ let startIndex = isContainer ? 0 : this.ctx.tree.getChildIndex(targetId) + 1;
256
+ for (const item of this.clipboardItems) {
257
+ const id = `pasted-${this.ctx.nextElementId()}-${Date.now().toString(36)}`;
258
+ let rect;
259
+ if (parentId === null) {
260
+ if (item.rect) {
261
+ rect = {
262
+ x: item.rect.x + 20,
263
+ y: item.rect.y + 20,
264
+ width: item.rect.width,
265
+ height: item.rect.height,
266
+ };
267
+ item.rect = {
268
+ x: item.rect.x + 20,
269
+ y: item.rect.y + 20,
270
+ width: item.rect.width,
271
+ height: item.rect.height,
272
+ };
273
+ }
274
+ else {
275
+ rect = { x: 100, y: 100, width: 120, height: 120 };
276
+ }
277
+ }
278
+ else {
279
+ if (item.rect) {
280
+ rect = {
281
+ x: 0,
282
+ y: 0,
283
+ width: item.rect.width,
284
+ height: item.rect.height,
285
+ };
286
+ }
287
+ else {
288
+ rect = { x: 0, y: 0, width: 120, height: 120 };
289
+ }
290
+ }
291
+ this.ctx.addNode({
292
+ id,
293
+ rawMarkup: item.rawMarkup,
294
+ currentRect: rect,
295
+ }, parentId, startIndex);
296
+ if (parentId !== null) {
297
+ startIndex++;
298
+ }
299
+ if (item.hasJS) {
300
+ this.ctx.markNodeHasJS(id);
301
+ }
302
+ if (item.originalId) {
303
+ this.ctx.callbacks.onNodeCloned?.(item.originalId, id);
304
+ }
305
+ newSelectedIds.push(id);
306
+ const finalIndex = parentId !== null ? this.ctx.tree.getChildIndex(id) : -1;
307
+ ops.push({
308
+ type: "create-node",
309
+ nodeId: id,
310
+ payload: { parentId, index: finalIndex, rawMarkup: item.rawMarkup, rect },
311
+ undoPayload: { parentId }
312
+ });
313
+ if (parentId) {
314
+ parentsToCommit.add(parentId);
315
+ }
316
+ else {
317
+ rootsToCommit.push(id);
318
+ }
319
+ }
320
+ }
321
+ }
322
+ if (ops.length > 0) {
323
+ const prevSelection = new Set(this.ctx.selectedIds);
324
+ this.ctx.selectedIds.clear();
325
+ for (const id of newSelectedIds) {
326
+ this.ctx.selectedIds.add(id);
327
+ }
328
+ this.ctx.syncLazyChildren(prevSelection, this.ctx.selectedIds);
329
+ this.ctx.callbacks.onSelectionChange?.(this.ctx.selectedIds);
330
+ this.ctx.updateBreadcrumb();
331
+ this.ctx.callbacks.onOperationsGenerated?.(ops);
332
+ for (const parentId of parentsToCommit) {
333
+ const html = this.ctx.mount.extractHTML(parentId);
334
+ if (html) {
335
+ this.ctx.callbacks.onHTMLCommit?.(parentId, html);
336
+ }
337
+ }
338
+ for (const rootId of rootsToCommit) {
339
+ const html = this.ctx.mount.extractHTML(rootId);
340
+ if (html) {
341
+ this.ctx.callbacks.onHTMLCommit?.(rootId, html);
342
+ }
343
+ }
344
+ }
345
+ this.ctx.mount.setTransitionsEnabled(true);
346
+ this.ctx.render();
347
+ }
348
+ }
349
+ //# sourceMappingURL=clipboard.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.handler.js","sourceRoot":"","sources":["../../src/handlers/clipboard.handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { Command } from "../types.js";
2
+ import type { KeyboardHandler, WorkspaceContext } from "./types.js";
3
+ /**
4
+ * Manages modular keyboard commands and coordinates shortcut execution.
5
+ */
6
+ export declare class CommandHandler implements KeyboardHandler {
7
+ readonly id = "command";
8
+ private ctx;
9
+ private commands;
10
+ constructor(ctx: WorkspaceContext);
11
+ onKeyDown(e: KeyboardEvent): boolean;
12
+ registerCommand(cmd: Command): void;
13
+ private registerDefaultCommands;
14
+ private nudgeOrReorderSelected;
15
+ private ungroupSelectedOrParent;
16
+ private wrapSelectedInFlex;
17
+ }
18
+ //# sourceMappingURL=command.handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.handler.d.ts","sourceRoot":"","sources":["../../src/handlers/command.handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,aAAa,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAyBpE;;GAEG;AACH,qBAAa,cAAe,YAAW,eAAe;IACpD,QAAQ,CAAC,EAAE,aAAa;IAExB,OAAO,CAAC,GAAG,CAAmB;IAC9B,OAAO,CAAC,QAAQ,CAA8B;gBAElC,GAAG,EAAE,gBAAgB;IAOjC,SAAS,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO;IAcpC,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAInC,OAAO,CAAC,uBAAuB;IAgD/B,OAAO,CAAC,sBAAsB;IAsI9B,OAAO,CAAC,uBAAuB;IA4F/B,OAAO,CAAC,kBAAkB;CA8I3B"}