@nuforge/editor 0.2.0 → 0.3.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.
- package/dist/index.cjs +190 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +252 -3
- package/dist/index.mjs +186 -1
- package/dist/index.mjs.map +1 -0
- package/dist/react.cjs +325 -3
- package/dist/react.cjs.map +1 -0
- package/dist/react.d.ts +205 -4
- package/dist/react.mjs +325 -4
- package/dist/react.mjs.map +1 -0
- package/package.json +5 -5
package/dist/index.mjs
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import * as t from '@nuforge/types';
|
|
2
|
+
import { Nu } from '@nuforge/core';
|
|
3
|
+
import { reactive } from '@nuforge/reactivity';
|
|
2
4
|
import { Parser } from '@nuforge/parser';
|
|
3
5
|
|
|
6
|
+
/** A literal expression (`"x"`, `5`, `true`). */
|
|
4
7
|
function lit(value) {
|
|
5
8
|
return t.literal({ value });
|
|
6
9
|
}
|
|
10
|
+
/** A text node: `<text text={value} />`, rendered as its string value. */
|
|
7
11
|
function text(value) {
|
|
8
12
|
return t.tagTemplate({
|
|
9
13
|
tag: 'text',
|
|
@@ -11,6 +15,10 @@ function text(value) {
|
|
|
11
15
|
children: [],
|
|
12
16
|
});
|
|
13
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Concise element builder — `el('div', { class: lit('box') }, [text('hi')])`
|
|
20
|
+
* instead of the verbose `t.tagTemplate({ tag, props, children })`.
|
|
21
|
+
*/
|
|
14
22
|
function el(tag, props = {}, children = []) {
|
|
15
23
|
return t.tagTemplate({ tag, props, children });
|
|
16
24
|
}
|
|
@@ -43,6 +51,7 @@ class BlockRegistry {
|
|
|
43
51
|
return out;
|
|
44
52
|
}
|
|
45
53
|
}
|
|
54
|
+
/** The built-in palette — the common HTML primitives. */
|
|
46
55
|
const DEFAULT_BLOCKS = [
|
|
47
56
|
{ id: 'box', label: 'Box', icon: 'square', create: () => el('div') },
|
|
48
57
|
{ id: 'text', label: 'Text', icon: 'type', create: () => text('Text') },
|
|
@@ -72,6 +81,123 @@ const DEFAULT_BLOCKS = [
|
|
|
72
81
|
},
|
|
73
82
|
];
|
|
74
83
|
|
|
84
|
+
/**
|
|
85
|
+
* Wire protocol for `RemoteCanvasHost` <-> `createCanvasReceiver`: a genuinely
|
|
86
|
+
* navigated `/canvas/[id]`-style iframe has its own JS realm, so state and
|
|
87
|
+
* interaction can't cross as direct object references the way `IframeCanvas`'s
|
|
88
|
+
* portal allows — everything here is a structured-clone-safe plain message.
|
|
89
|
+
*
|
|
90
|
+
* Deliberately generic: only the shapes the editor primitive itself needs
|
|
91
|
+
* (state sync, ready handshake, the core interaction events) are typed. Host
|
|
92
|
+
* concerns like theme/preview-mode/overrides ride through `CanvasUiMessage`'s
|
|
93
|
+
* opaque `payload` — this package relays it, never interprets it.
|
|
94
|
+
*/
|
|
95
|
+
const CANVAS_CHANNEL = 'nuforge-canvas';
|
|
96
|
+
const CANVAS_PROTOCOL_VERSION = 1;
|
|
97
|
+
/** Namespace the `BroadcastChannel` per canvas instance (derive from the
|
|
98
|
+
* iframe's own `src`, so a host never has to invent/track a separate id). */
|
|
99
|
+
function canvasChannelName(src) {
|
|
100
|
+
return `${CANVAS_CHANNEL}:${src}`;
|
|
101
|
+
}
|
|
102
|
+
/** Narrow an arbitrary `BroadcastChannel` payload to a message from this
|
|
103
|
+
* protocol — guards against unrelated traffic on the same channel name and
|
|
104
|
+
* against a version mismatch across a stale cached bundle. */
|
|
105
|
+
function isCanvasMessage(data) {
|
|
106
|
+
return (!!data &&
|
|
107
|
+
typeof data === 'object' &&
|
|
108
|
+
data.channel === CANVAS_CHANNEL &&
|
|
109
|
+
data.v === CANVAS_PROTOCOL_VERSION);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Canvas-side receiver for a genuinely-navigated `/canvas/[id]`-style route:
|
|
114
|
+
* a `Nu` instance kept in sync with the host's one-way, via `BroadcastChannel`
|
|
115
|
+
* + `t.unflatten`/`t.merge` (the same primitives `@nuforge/collaboration`'s
|
|
116
|
+
* `LoroSyncProvider` uses for its state<->doc binding, without the CRDT layer
|
|
117
|
+
* — there's exactly one writer here, so convergence machinery is unneeded).
|
|
118
|
+
* No `createEditor()`: this instance is never meant to originate an edit the
|
|
119
|
+
* host doesn't already know about, so it only needs `Nu`, not the mutation SDK.
|
|
120
|
+
*/
|
|
121
|
+
function createCanvasReceiver(opts) {
|
|
122
|
+
const nu = Nu.create({ externals: opts.externals });
|
|
123
|
+
const volatile = reactive({ activeComponent: null, loadGeneration: 0 });
|
|
124
|
+
const channel = new BroadcastChannel(canvasChannelName(opts.src));
|
|
125
|
+
const uiListeners = new Set();
|
|
126
|
+
/** Did the incoming flattened state add or remove any node id (a
|
|
127
|
+
* structural change), vs. only edit fields on already-known nodes? */
|
|
128
|
+
const isStructuralChange = (incoming) => {
|
|
129
|
+
if (!nu.loaded) {
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
const currentKeys = Object.keys(t.flatten(nu.state).types);
|
|
133
|
+
const incomingKeys = Object.keys(incoming);
|
|
134
|
+
if (currentKeys.length !== incomingKeys.length) {
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
const incomingSet = new Set(incomingKeys);
|
|
138
|
+
return currentKeys.some((key) => !incomingSet.has(key));
|
|
139
|
+
};
|
|
140
|
+
const applyState = (message) => {
|
|
141
|
+
// A full reload — the very first bootstrap, any later resync (`init` —
|
|
142
|
+
// see RemoteCanvasHost's `previewMode`/`activeComponent`-change doc), OR
|
|
143
|
+
// a `patch` that structurally changed the tree. See `volatile.loadGeneration`'s
|
|
144
|
+
// doc for why structural patches are folded into this same path instead
|
|
145
|
+
// of merging in place.
|
|
146
|
+
const needsFullReload = message.type === 'init' || isStructuralChange(message.flat.types);
|
|
147
|
+
if (needsFullReload) {
|
|
148
|
+
nu.load(t.unflatten(message.flat));
|
|
149
|
+
volatile.loadGeneration++;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
nu.change(() => t.merge(nu.state, t.unflatten(message.flat)));
|
|
153
|
+
}
|
|
154
|
+
volatile.activeComponent = message.activeComponent;
|
|
155
|
+
};
|
|
156
|
+
const onMessage = (event) => {
|
|
157
|
+
if (!isCanvasMessage(event.data)) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
const message = event.data;
|
|
161
|
+
if (message.type === 'init' || message.type === 'patch') {
|
|
162
|
+
applyState(message);
|
|
163
|
+
}
|
|
164
|
+
else if (message.type === 'ui') {
|
|
165
|
+
for (const cb of uiListeners) {
|
|
166
|
+
cb(message.payload);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
channel.addEventListener('message', onMessage);
|
|
171
|
+
return {
|
|
172
|
+
nu,
|
|
173
|
+
volatile,
|
|
174
|
+
postReady() {
|
|
175
|
+
channel.postMessage({
|
|
176
|
+
channel: CANVAS_CHANNEL,
|
|
177
|
+
v: CANVAS_PROTOCOL_VERSION,
|
|
178
|
+
type: 'ready',
|
|
179
|
+
mountGen: Math.floor(Math.random() * 1e9),
|
|
180
|
+
});
|
|
181
|
+
},
|
|
182
|
+
onUi(cb) {
|
|
183
|
+
uiListeners.add(cb);
|
|
184
|
+
return () => uiListeners.delete(cb);
|
|
185
|
+
},
|
|
186
|
+
postEvent(message) {
|
|
187
|
+
channel.postMessage({
|
|
188
|
+
channel: CANVAS_CHANNEL,
|
|
189
|
+
v: CANVAS_PROTOCOL_VERSION,
|
|
190
|
+
...message,
|
|
191
|
+
});
|
|
192
|
+
},
|
|
193
|
+
dispose() {
|
|
194
|
+
channel.removeEventListener('message', onMessage);
|
|
195
|
+
channel.close();
|
|
196
|
+
uiListeners.clear();
|
|
197
|
+
},
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
|
|
75
201
|
class CommandRegistry {
|
|
76
202
|
editor;
|
|
77
203
|
commands = new Map();
|
|
@@ -92,6 +218,13 @@ class CommandRegistry {
|
|
|
92
218
|
}
|
|
93
219
|
}
|
|
94
220
|
|
|
221
|
+
/**
|
|
222
|
+
* Compute a drop position from the pointer's Y against a target's bounding rect.
|
|
223
|
+
* When `allowInside` is set, the middle band is `inside` (drop as a child) and
|
|
224
|
+
* the outer bands are `before`/`after`; otherwise it's a simple before/after
|
|
225
|
+
* split at the midpoint. Pure — use it from an `onDragOver`/`onPointerMove`
|
|
226
|
+
* handler to drive a drop indicator and the eventual `moveNode`/`pasteNode`.
|
|
227
|
+
*/
|
|
95
228
|
function dropPositionFromPointer(clientY, rect, opts = {}) {
|
|
96
229
|
const ratio = rect.height > 0 ? (clientY - rect.top) / rect.height : 0;
|
|
97
230
|
if (opts.allowInside) {
|
|
@@ -103,6 +236,7 @@ function dropPositionFromPointer(clientY, rect, opts = {}) {
|
|
|
103
236
|
}
|
|
104
237
|
return ratio < 0.5 ? 'before' : 'after';
|
|
105
238
|
}
|
|
239
|
+
/** A human label for a template node (tag name, component name, slot, …). */
|
|
106
240
|
function templateLabel(node) {
|
|
107
241
|
if (node instanceof t.TagTemplate) {
|
|
108
242
|
return node.tag;
|
|
@@ -118,12 +252,15 @@ function templateLabel(node) {
|
|
|
118
252
|
}
|
|
119
253
|
return 'node';
|
|
120
254
|
}
|
|
255
|
+
/** Child templates of a node (empty for leaves / text nodes). */
|
|
121
256
|
function templateChildren(node) {
|
|
122
257
|
return (node.children ?? []).filter((child) => child instanceof t.Type);
|
|
123
258
|
}
|
|
259
|
+
/** Is this a text node (`<text text=…>`), rendered as its string value? */
|
|
124
260
|
function isTextTemplate(node) {
|
|
125
261
|
return node instanceof t.TagTemplate && node.tag === 'text';
|
|
126
262
|
}
|
|
263
|
+
/** Preview the content of a text node, e.g. for a layers tree. */
|
|
127
264
|
function textPreview(node) {
|
|
128
265
|
if (!isTextTemplate(node)) {
|
|
129
266
|
return null;
|
|
@@ -134,6 +271,7 @@ function textPreview(node) {
|
|
|
134
271
|
}
|
|
135
272
|
return '{…}';
|
|
136
273
|
}
|
|
274
|
+
/** Can this node hold appended children? */
|
|
137
275
|
function canHaveChildren(node) {
|
|
138
276
|
if (!node || isTextTemplate(node)) {
|
|
139
277
|
return false;
|
|
@@ -142,6 +280,7 @@ function canHaveChildren(node) {
|
|
|
142
280
|
node instanceof t.ComponentTemplate ||
|
|
143
281
|
t.is(node, t.FragmentTemplate));
|
|
144
282
|
}
|
|
283
|
+
/** Is `ancestor` somewhere above `node` in the tree? */
|
|
145
284
|
function isAncestorOf(nu, ancestor, node) {
|
|
146
285
|
let parent = nu.getParentNode(node);
|
|
147
286
|
while (parent) {
|
|
@@ -153,6 +292,11 @@ function isAncestorOf(nu, ancestor, node) {
|
|
|
153
292
|
return false;
|
|
154
293
|
}
|
|
155
294
|
|
|
295
|
+
/**
|
|
296
|
+
* A high-level facade over a {@link Nu} runtime for building visual page
|
|
297
|
+
* editors. Every mutation goes through `nu.change`, so it is transactional and
|
|
298
|
+
* undoable. Reach for these instead of hand-splicing the AST.
|
|
299
|
+
*/
|
|
156
300
|
class Editor {
|
|
157
301
|
nu;
|
|
158
302
|
blocks;
|
|
@@ -175,6 +319,8 @@ class Editor {
|
|
|
175
319
|
run: (e) => e.nu.redo(),
|
|
176
320
|
});
|
|
177
321
|
}
|
|
322
|
+
// --- mutation -------------------------------------------------------------
|
|
323
|
+
/** Append (or insert at `index`) `child` into `parent`'s children. */
|
|
178
324
|
insertNode(parent, child, index) {
|
|
179
325
|
const kids = parent.children;
|
|
180
326
|
if (!Array.isArray(kids)) {
|
|
@@ -189,6 +335,7 @@ class Editor {
|
|
|
189
335
|
}
|
|
190
336
|
});
|
|
191
337
|
}
|
|
338
|
+
/** Remove a node from its parent. Returns false if it has no parent. */
|
|
192
339
|
removeNode(node) {
|
|
193
340
|
let ok = false;
|
|
194
341
|
this.nu.change(() => {
|
|
@@ -196,6 +343,7 @@ class Editor {
|
|
|
196
343
|
});
|
|
197
344
|
return ok;
|
|
198
345
|
}
|
|
346
|
+
/** Move `dragged` before/after/inside `target`. Refuses to nest into self. */
|
|
199
347
|
moveNode(dragged, target, position) {
|
|
200
348
|
if (dragged === target || isAncestorOf(this.nu, dragged, target)) {
|
|
201
349
|
return false;
|
|
@@ -206,26 +354,40 @@ class Editor {
|
|
|
206
354
|
});
|
|
207
355
|
return ok;
|
|
208
356
|
}
|
|
357
|
+
// --- clipboard ------------------------------------------------------------
|
|
209
358
|
clipboardNode = null;
|
|
359
|
+
/** Put a node on the editor clipboard (a clone is made on paste). */
|
|
210
360
|
copyNode(node) {
|
|
211
361
|
this.clipboardNode = node;
|
|
212
362
|
}
|
|
363
|
+
/** Copy a node, then remove it. */
|
|
213
364
|
cutNode(node) {
|
|
214
365
|
this.copyNode(node);
|
|
215
366
|
return this.removeNode(node);
|
|
216
367
|
}
|
|
368
|
+
/** Whether there is something on the clipboard to paste. */
|
|
217
369
|
canPaste() {
|
|
218
370
|
return this.clipboardNode !== null;
|
|
219
371
|
}
|
|
372
|
+
/**
|
|
373
|
+
* Paste a fresh copy (new ids) of the clipboard node before/after/inside
|
|
374
|
+
* `target`. Returns the inserted node, or null if nothing was pasted.
|
|
375
|
+
*/
|
|
220
376
|
pasteNode(target, position = 'after') {
|
|
221
377
|
if (!this.clipboardNode) {
|
|
222
378
|
return null;
|
|
223
379
|
}
|
|
224
380
|
return this.insertCloneRelativeTo(this.clipboardNode, target, position);
|
|
225
381
|
}
|
|
382
|
+
/** Duplicate a node in place (inserted right after it). Returns the copy. */
|
|
226
383
|
duplicateNode(node) {
|
|
227
384
|
return this.insertCloneRelativeTo(node, node, 'after');
|
|
228
385
|
}
|
|
386
|
+
/**
|
|
387
|
+
* Insert a detached node before/after/inside a target (undoable). The core of
|
|
388
|
+
* canvas drag-and-drop: a drop computes a target + position, then calls this.
|
|
389
|
+
* Returns the inserted node.
|
|
390
|
+
*/
|
|
229
391
|
insertNodeAt(node, target, position) {
|
|
230
392
|
let ok = false;
|
|
231
393
|
this.nu.change(() => {
|
|
@@ -233,6 +395,7 @@ class Editor {
|
|
|
233
395
|
});
|
|
234
396
|
return ok ? (this.nu.getNodeFromId(node.id) ?? null) : null;
|
|
235
397
|
}
|
|
398
|
+
/** Create a block and insert it before/after/inside a target. */
|
|
236
399
|
insertBlockAt(blockId, target, position) {
|
|
237
400
|
const block = this.blocks.get(blockId);
|
|
238
401
|
if (!block) {
|
|
@@ -246,8 +409,10 @@ class Editor {
|
|
|
246
409
|
this.nu.change(() => {
|
|
247
410
|
ok = this.insertRelativeTo(clone, target, position);
|
|
248
411
|
});
|
|
412
|
+
// Return the reactive node from the tree (clone is wrapped on insert).
|
|
249
413
|
return ok ? (this.nu.getNodeFromId(clone.id) ?? null) : null;
|
|
250
414
|
}
|
|
415
|
+
/** Set several props at once. */
|
|
251
416
|
updateProps(node, props) {
|
|
252
417
|
this.nu.change(() => {
|
|
253
418
|
for (const [key, value] of Object.entries(props)) {
|
|
@@ -265,6 +430,7 @@ class Editor {
|
|
|
265
430
|
delete node.props[key];
|
|
266
431
|
});
|
|
267
432
|
}
|
|
433
|
+
/** Parse `source` as a nuforge expression and assign it to `key`. */
|
|
268
434
|
setExpression(node, key, source) {
|
|
269
435
|
let expr;
|
|
270
436
|
try {
|
|
@@ -276,6 +442,7 @@ class Editor {
|
|
|
276
442
|
this.setProp(node, key, expr);
|
|
277
443
|
return true;
|
|
278
444
|
}
|
|
445
|
+
/** Update a text node's literal value. */
|
|
279
446
|
setText(node, value) {
|
|
280
447
|
const expr = node.props?.text;
|
|
281
448
|
if (!(expr instanceof t.Literal)) {
|
|
@@ -308,6 +475,7 @@ class Editor {
|
|
|
308
475
|
tag.classList.properties[clean] = t.literal({ value: true });
|
|
309
476
|
});
|
|
310
477
|
}
|
|
478
|
+
/** Parse `source` and set the condition under which class `name` applies. */
|
|
311
479
|
setClassCondition(node, name, source) {
|
|
312
480
|
let expr;
|
|
313
481
|
try {
|
|
@@ -336,6 +504,7 @@ class Editor {
|
|
|
336
504
|
}
|
|
337
505
|
});
|
|
338
506
|
}
|
|
507
|
+
/** Set the `@if` condition from source. */
|
|
339
508
|
setCondition(node, source) {
|
|
340
509
|
let expr;
|
|
341
510
|
try {
|
|
@@ -354,6 +523,8 @@ class Editor {
|
|
|
354
523
|
node.if = null;
|
|
355
524
|
});
|
|
356
525
|
}
|
|
526
|
+
// --- loop (@each) ---------------------------------------------------------
|
|
527
|
+
/** Repeat a node over `iterator` (a list expression), binding each `alias`. */
|
|
357
528
|
setEach(node, iterator, alias = 'item', indexName) {
|
|
358
529
|
let expr;
|
|
359
530
|
try {
|
|
@@ -376,6 +547,7 @@ class Editor {
|
|
|
376
547
|
node.each = null;
|
|
377
548
|
});
|
|
378
549
|
}
|
|
550
|
+
// --- component state / props ----------------------------------------------
|
|
379
551
|
addState(component, name = 'value', init = '0') {
|
|
380
552
|
const taken = new Set(component.state.map((v) => v.name));
|
|
381
553
|
let unique = name;
|
|
@@ -460,6 +632,8 @@ class Editor {
|
|
|
460
632
|
});
|
|
461
633
|
return true;
|
|
462
634
|
}
|
|
635
|
+
// --- blocks ---------------------------------------------------------------
|
|
636
|
+
/** Create a block's template and insert it into `parent`. */
|
|
463
637
|
insertBlock(blockId, parent, index) {
|
|
464
638
|
const block = this.blocks.get(blockId);
|
|
465
639
|
if (!block || !canHaveChildren(parent)) {
|
|
@@ -469,6 +643,7 @@ class Editor {
|
|
|
469
643
|
this.insertNode(parent, created, index);
|
|
470
644
|
return created;
|
|
471
645
|
}
|
|
646
|
+
// --- components / pages ---------------------------------------------------
|
|
472
647
|
uniqueName(base) {
|
|
473
648
|
const taken = new Set(this.getComponents().map((c) => c.name));
|
|
474
649
|
if (!taken.has(base)) {
|
|
@@ -480,6 +655,7 @@ class Editor {
|
|
|
480
655
|
}
|
|
481
656
|
return `${base}${i}`;
|
|
482
657
|
}
|
|
658
|
+
/** Add a new component (a "page"). */
|
|
483
659
|
addComponent(name = 'Page') {
|
|
484
660
|
const unique = this.uniqueName(name);
|
|
485
661
|
const component = t.nuComponent({
|
|
@@ -493,6 +669,7 @@ class Editor {
|
|
|
493
669
|
});
|
|
494
670
|
return this.getComponent(unique);
|
|
495
671
|
}
|
|
672
|
+
/** Rename a component, updating `<Name/>` references across the program. */
|
|
496
673
|
renameComponent(component, name) {
|
|
497
674
|
const clean = name.trim();
|
|
498
675
|
if (!clean ||
|
|
@@ -542,6 +719,7 @@ class Editor {
|
|
|
542
719
|
this.walkTemplates(child, fn);
|
|
543
720
|
}
|
|
544
721
|
}
|
|
722
|
+
// --- query ----------------------------------------------------------------
|
|
545
723
|
getComponents() {
|
|
546
724
|
return this.nu.state.program.components.filter((c) => c instanceof t.NuComponent);
|
|
547
725
|
}
|
|
@@ -561,6 +739,7 @@ class Editor {
|
|
|
561
739
|
getNodeIndex(node) {
|
|
562
740
|
return this.getSiblings(node).indexOf(node);
|
|
563
741
|
}
|
|
742
|
+
/** Full path from the State root to this node (for selections/serialization). */
|
|
564
743
|
getNodePath(node) {
|
|
565
744
|
const out = [];
|
|
566
745
|
let current = node;
|
|
@@ -572,9 +751,12 @@ class Editor {
|
|
|
572
751
|
}
|
|
573
752
|
return out;
|
|
574
753
|
}
|
|
754
|
+
// --- change subscription --------------------------------------------------
|
|
755
|
+
/** Fires with the raw field-level writes of every change (incl. undo/redo). */
|
|
575
756
|
onChange(cb) {
|
|
576
757
|
return this.nu.listenToMutations(cb);
|
|
577
758
|
}
|
|
759
|
+
/** Fires only when the tree shape changes (a child array was mutated). */
|
|
578
760
|
onStructureChange(cb) {
|
|
579
761
|
return this.nu.listenToMutations((entries) => {
|
|
580
762
|
if (entries.some((e) => Array.isArray(e.target))) {
|
|
@@ -582,6 +764,7 @@ class Editor {
|
|
|
582
764
|
}
|
|
583
765
|
});
|
|
584
766
|
}
|
|
767
|
+
// --- internals (run inside nu.change) -------------------------------------
|
|
585
768
|
spliceFromParent(node) {
|
|
586
769
|
const parent = this.nu.getParentNode(node);
|
|
587
770
|
const kids = parent?.children;
|
|
@@ -629,6 +812,7 @@ class Editor {
|
|
|
629
812
|
destKids.splice(position === 'after' ? ti + 1 : ti, 0, dragged);
|
|
630
813
|
return true;
|
|
631
814
|
}
|
|
815
|
+
/** Insert an already-detached node relative to `target` (no removal). */
|
|
632
816
|
insertRelativeTo(node, target, position) {
|
|
633
817
|
if (position === 'inside') {
|
|
634
818
|
if (!canHaveChildren(target)) {
|
|
@@ -654,4 +838,5 @@ function createEditor(nu, opts) {
|
|
|
654
838
|
return new Editor(nu, opts);
|
|
655
839
|
}
|
|
656
840
|
|
|
657
|
-
export { BlockRegistry, CommandRegistry, DEFAULT_BLOCKS, Editor, canHaveChildren, createEditor, defineBlock, dropPositionFromPointer, el, isAncestorOf, isTextTemplate, lit, templateChildren, templateLabel, text, textPreview };
|
|
841
|
+
export { BlockRegistry, CANVAS_CHANNEL, CANVAS_PROTOCOL_VERSION, CommandRegistry, DEFAULT_BLOCKS, Editor, canHaveChildren, canvasChannelName, createCanvasReceiver, createEditor, defineBlock, dropPositionFromPointer, el, isAncestorOf, isCanvasMessage, isTextTemplate, lit, templateChildren, templateLabel, text, textPreview };
|
|
842
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/builders.ts","../src/blocks.ts","../src/canvas-protocol.ts","../src/canvas-client.ts","../src/commands.ts","../src/template.ts","../src/editor.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":[],"mappings":"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"}
|