@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.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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"}