@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 CHANGED
@@ -1,6 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  var t = require('@nuforge/types');
4
+ var core = require('@nuforge/core');
5
+ var reactivity = require('@nuforge/reactivity');
4
6
  var parser = require('@nuforge/parser');
5
7
 
6
8
  function _interopNamespaceDefault(e) {
@@ -22,9 +24,11 @@ function _interopNamespaceDefault(e) {
22
24
 
23
25
  var t__namespace = /*#__PURE__*/_interopNamespaceDefault(t);
24
26
 
27
+ /** A literal expression (`"x"`, `5`, `true`). */
25
28
  function lit(value) {
26
29
  return t__namespace.literal({ value });
27
30
  }
31
+ /** A text node: `<text text={value} />`, rendered as its string value. */
28
32
  function text(value) {
29
33
  return t__namespace.tagTemplate({
30
34
  tag: 'text',
@@ -32,6 +36,10 @@ function text(value) {
32
36
  children: [],
33
37
  });
34
38
  }
39
+ /**
40
+ * Concise element builder — `el('div', { class: lit('box') }, [text('hi')])`
41
+ * instead of the verbose `t.tagTemplate({ tag, props, children })`.
42
+ */
35
43
  function el(tag, props = {}, children = []) {
36
44
  return t__namespace.tagTemplate({ tag, props, children });
37
45
  }
@@ -64,6 +72,7 @@ class BlockRegistry {
64
72
  return out;
65
73
  }
66
74
  }
75
+ /** The built-in palette — the common HTML primitives. */
67
76
  const DEFAULT_BLOCKS = [
68
77
  { id: 'box', label: 'Box', icon: 'square', create: () => el('div') },
69
78
  { id: 'text', label: 'Text', icon: 'type', create: () => text('Text') },
@@ -93,6 +102,123 @@ const DEFAULT_BLOCKS = [
93
102
  },
94
103
  ];
95
104
 
105
+ /**
106
+ * Wire protocol for `RemoteCanvasHost` <-> `createCanvasReceiver`: a genuinely
107
+ * navigated `/canvas/[id]`-style iframe has its own JS realm, so state and
108
+ * interaction can't cross as direct object references the way `IframeCanvas`'s
109
+ * portal allows — everything here is a structured-clone-safe plain message.
110
+ *
111
+ * Deliberately generic: only the shapes the editor primitive itself needs
112
+ * (state sync, ready handshake, the core interaction events) are typed. Host
113
+ * concerns like theme/preview-mode/overrides ride through `CanvasUiMessage`'s
114
+ * opaque `payload` — this package relays it, never interprets it.
115
+ */
116
+ const CANVAS_CHANNEL = 'nuforge-canvas';
117
+ const CANVAS_PROTOCOL_VERSION = 1;
118
+ /** Namespace the `BroadcastChannel` per canvas instance (derive from the
119
+ * iframe's own `src`, so a host never has to invent/track a separate id). */
120
+ function canvasChannelName(src) {
121
+ return `${CANVAS_CHANNEL}:${src}`;
122
+ }
123
+ /** Narrow an arbitrary `BroadcastChannel` payload to a message from this
124
+ * protocol — guards against unrelated traffic on the same channel name and
125
+ * against a version mismatch across a stale cached bundle. */
126
+ function isCanvasMessage(data) {
127
+ return (!!data &&
128
+ typeof data === 'object' &&
129
+ data.channel === CANVAS_CHANNEL &&
130
+ data.v === CANVAS_PROTOCOL_VERSION);
131
+ }
132
+
133
+ /**
134
+ * Canvas-side receiver for a genuinely-navigated `/canvas/[id]`-style route:
135
+ * a `Nu` instance kept in sync with the host's one-way, via `BroadcastChannel`
136
+ * + `t.unflatten`/`t.merge` (the same primitives `@nuforge/collaboration`'s
137
+ * `LoroSyncProvider` uses for its state<->doc binding, without the CRDT layer
138
+ * — there's exactly one writer here, so convergence machinery is unneeded).
139
+ * No `createEditor()`: this instance is never meant to originate an edit the
140
+ * host doesn't already know about, so it only needs `Nu`, not the mutation SDK.
141
+ */
142
+ function createCanvasReceiver(opts) {
143
+ const nu = core.Nu.create({ externals: opts.externals });
144
+ const volatile = reactivity.reactive({ activeComponent: null, loadGeneration: 0 });
145
+ const channel = new BroadcastChannel(canvasChannelName(opts.src));
146
+ const uiListeners = new Set();
147
+ /** Did the incoming flattened state add or remove any node id (a
148
+ * structural change), vs. only edit fields on already-known nodes? */
149
+ const isStructuralChange = (incoming) => {
150
+ if (!nu.loaded) {
151
+ return false;
152
+ }
153
+ const currentKeys = Object.keys(t__namespace.flatten(nu.state).types);
154
+ const incomingKeys = Object.keys(incoming);
155
+ if (currentKeys.length !== incomingKeys.length) {
156
+ return true;
157
+ }
158
+ const incomingSet = new Set(incomingKeys);
159
+ return currentKeys.some((key) => !incomingSet.has(key));
160
+ };
161
+ const applyState = (message) => {
162
+ // A full reload — the very first bootstrap, any later resync (`init` —
163
+ // see RemoteCanvasHost's `previewMode`/`activeComponent`-change doc), OR
164
+ // a `patch` that structurally changed the tree. See `volatile.loadGeneration`'s
165
+ // doc for why structural patches are folded into this same path instead
166
+ // of merging in place.
167
+ const needsFullReload = message.type === 'init' || isStructuralChange(message.flat.types);
168
+ if (needsFullReload) {
169
+ nu.load(t__namespace.unflatten(message.flat));
170
+ volatile.loadGeneration++;
171
+ }
172
+ else {
173
+ nu.change(() => t__namespace.merge(nu.state, t__namespace.unflatten(message.flat)));
174
+ }
175
+ volatile.activeComponent = message.activeComponent;
176
+ };
177
+ const onMessage = (event) => {
178
+ if (!isCanvasMessage(event.data)) {
179
+ return;
180
+ }
181
+ const message = event.data;
182
+ if (message.type === 'init' || message.type === 'patch') {
183
+ applyState(message);
184
+ }
185
+ else if (message.type === 'ui') {
186
+ for (const cb of uiListeners) {
187
+ cb(message.payload);
188
+ }
189
+ }
190
+ };
191
+ channel.addEventListener('message', onMessage);
192
+ return {
193
+ nu,
194
+ volatile,
195
+ postReady() {
196
+ channel.postMessage({
197
+ channel: CANVAS_CHANNEL,
198
+ v: CANVAS_PROTOCOL_VERSION,
199
+ type: 'ready',
200
+ mountGen: Math.floor(Math.random() * 1e9),
201
+ });
202
+ },
203
+ onUi(cb) {
204
+ uiListeners.add(cb);
205
+ return () => uiListeners.delete(cb);
206
+ },
207
+ postEvent(message) {
208
+ channel.postMessage({
209
+ channel: CANVAS_CHANNEL,
210
+ v: CANVAS_PROTOCOL_VERSION,
211
+ ...message,
212
+ });
213
+ },
214
+ dispose() {
215
+ channel.removeEventListener('message', onMessage);
216
+ channel.close();
217
+ uiListeners.clear();
218
+ },
219
+ };
220
+ }
221
+
96
222
  class CommandRegistry {
97
223
  editor;
98
224
  commands = new Map();
@@ -113,6 +239,13 @@ class CommandRegistry {
113
239
  }
114
240
  }
115
241
 
242
+ /**
243
+ * Compute a drop position from the pointer's Y against a target's bounding rect.
244
+ * When `allowInside` is set, the middle band is `inside` (drop as a child) and
245
+ * the outer bands are `before`/`after`; otherwise it's a simple before/after
246
+ * split at the midpoint. Pure — use it from an `onDragOver`/`onPointerMove`
247
+ * handler to drive a drop indicator and the eventual `moveNode`/`pasteNode`.
248
+ */
116
249
  function dropPositionFromPointer(clientY, rect, opts = {}) {
117
250
  const ratio = rect.height > 0 ? (clientY - rect.top) / rect.height : 0;
118
251
  if (opts.allowInside) {
@@ -124,6 +257,7 @@ function dropPositionFromPointer(clientY, rect, opts = {}) {
124
257
  }
125
258
  return ratio < 0.5 ? 'before' : 'after';
126
259
  }
260
+ /** A human label for a template node (tag name, component name, slot, …). */
127
261
  function templateLabel(node) {
128
262
  if (node instanceof t__namespace.TagTemplate) {
129
263
  return node.tag;
@@ -139,12 +273,15 @@ function templateLabel(node) {
139
273
  }
140
274
  return 'node';
141
275
  }
276
+ /** Child templates of a node (empty for leaves / text nodes). */
142
277
  function templateChildren(node) {
143
278
  return (node.children ?? []).filter((child) => child instanceof t__namespace.Type);
144
279
  }
280
+ /** Is this a text node (`<text text=…>`), rendered as its string value? */
145
281
  function isTextTemplate(node) {
146
282
  return node instanceof t__namespace.TagTemplate && node.tag === 'text';
147
283
  }
284
+ /** Preview the content of a text node, e.g. for a layers tree. */
148
285
  function textPreview(node) {
149
286
  if (!isTextTemplate(node)) {
150
287
  return null;
@@ -155,6 +292,7 @@ function textPreview(node) {
155
292
  }
156
293
  return '{…}';
157
294
  }
295
+ /** Can this node hold appended children? */
158
296
  function canHaveChildren(node) {
159
297
  if (!node || isTextTemplate(node)) {
160
298
  return false;
@@ -163,6 +301,7 @@ function canHaveChildren(node) {
163
301
  node instanceof t__namespace.ComponentTemplate ||
164
302
  t__namespace.is(node, t__namespace.FragmentTemplate));
165
303
  }
304
+ /** Is `ancestor` somewhere above `node` in the tree? */
166
305
  function isAncestorOf(nu, ancestor, node) {
167
306
  let parent = nu.getParentNode(node);
168
307
  while (parent) {
@@ -174,6 +313,11 @@ function isAncestorOf(nu, ancestor, node) {
174
313
  return false;
175
314
  }
176
315
 
316
+ /**
317
+ * A high-level facade over a {@link Nu} runtime for building visual page
318
+ * editors. Every mutation goes through `nu.change`, so it is transactional and
319
+ * undoable. Reach for these instead of hand-splicing the AST.
320
+ */
177
321
  class Editor {
178
322
  nu;
179
323
  blocks;
@@ -196,6 +340,8 @@ class Editor {
196
340
  run: (e) => e.nu.redo(),
197
341
  });
198
342
  }
343
+ // --- mutation -------------------------------------------------------------
344
+ /** Append (or insert at `index`) `child` into `parent`'s children. */
199
345
  insertNode(parent, child, index) {
200
346
  const kids = parent.children;
201
347
  if (!Array.isArray(kids)) {
@@ -210,6 +356,7 @@ class Editor {
210
356
  }
211
357
  });
212
358
  }
359
+ /** Remove a node from its parent. Returns false if it has no parent. */
213
360
  removeNode(node) {
214
361
  let ok = false;
215
362
  this.nu.change(() => {
@@ -217,6 +364,7 @@ class Editor {
217
364
  });
218
365
  return ok;
219
366
  }
367
+ /** Move `dragged` before/after/inside `target`. Refuses to nest into self. */
220
368
  moveNode(dragged, target, position) {
221
369
  if (dragged === target || isAncestorOf(this.nu, dragged, target)) {
222
370
  return false;
@@ -227,26 +375,40 @@ class Editor {
227
375
  });
228
376
  return ok;
229
377
  }
378
+ // --- clipboard ------------------------------------------------------------
230
379
  clipboardNode = null;
380
+ /** Put a node on the editor clipboard (a clone is made on paste). */
231
381
  copyNode(node) {
232
382
  this.clipboardNode = node;
233
383
  }
384
+ /** Copy a node, then remove it. */
234
385
  cutNode(node) {
235
386
  this.copyNode(node);
236
387
  return this.removeNode(node);
237
388
  }
389
+ /** Whether there is something on the clipboard to paste. */
238
390
  canPaste() {
239
391
  return this.clipboardNode !== null;
240
392
  }
393
+ /**
394
+ * Paste a fresh copy (new ids) of the clipboard node before/after/inside
395
+ * `target`. Returns the inserted node, or null if nothing was pasted.
396
+ */
241
397
  pasteNode(target, position = 'after') {
242
398
  if (!this.clipboardNode) {
243
399
  return null;
244
400
  }
245
401
  return this.insertCloneRelativeTo(this.clipboardNode, target, position);
246
402
  }
403
+ /** Duplicate a node in place (inserted right after it). Returns the copy. */
247
404
  duplicateNode(node) {
248
405
  return this.insertCloneRelativeTo(node, node, 'after');
249
406
  }
407
+ /**
408
+ * Insert a detached node before/after/inside a target (undoable). The core of
409
+ * canvas drag-and-drop: a drop computes a target + position, then calls this.
410
+ * Returns the inserted node.
411
+ */
250
412
  insertNodeAt(node, target, position) {
251
413
  let ok = false;
252
414
  this.nu.change(() => {
@@ -254,6 +416,7 @@ class Editor {
254
416
  });
255
417
  return ok ? (this.nu.getNodeFromId(node.id) ?? null) : null;
256
418
  }
419
+ /** Create a block and insert it before/after/inside a target. */
257
420
  insertBlockAt(blockId, target, position) {
258
421
  const block = this.blocks.get(blockId);
259
422
  if (!block) {
@@ -267,8 +430,10 @@ class Editor {
267
430
  this.nu.change(() => {
268
431
  ok = this.insertRelativeTo(clone, target, position);
269
432
  });
433
+ // Return the reactive node from the tree (clone is wrapped on insert).
270
434
  return ok ? (this.nu.getNodeFromId(clone.id) ?? null) : null;
271
435
  }
436
+ /** Set several props at once. */
272
437
  updateProps(node, props) {
273
438
  this.nu.change(() => {
274
439
  for (const [key, value] of Object.entries(props)) {
@@ -286,6 +451,7 @@ class Editor {
286
451
  delete node.props[key];
287
452
  });
288
453
  }
454
+ /** Parse `source` as a nuforge expression and assign it to `key`. */
289
455
  setExpression(node, key, source) {
290
456
  let expr;
291
457
  try {
@@ -297,6 +463,7 @@ class Editor {
297
463
  this.setProp(node, key, expr);
298
464
  return true;
299
465
  }
466
+ /** Update a text node's literal value. */
300
467
  setText(node, value) {
301
468
  const expr = node.props?.text;
302
469
  if (!(expr instanceof t__namespace.Literal)) {
@@ -329,6 +496,7 @@ class Editor {
329
496
  tag.classList.properties[clean] = t__namespace.literal({ value: true });
330
497
  });
331
498
  }
499
+ /** Parse `source` and set the condition under which class `name` applies. */
332
500
  setClassCondition(node, name, source) {
333
501
  let expr;
334
502
  try {
@@ -357,6 +525,7 @@ class Editor {
357
525
  }
358
526
  });
359
527
  }
528
+ /** Set the `@if` condition from source. */
360
529
  setCondition(node, source) {
361
530
  let expr;
362
531
  try {
@@ -375,6 +544,8 @@ class Editor {
375
544
  node.if = null;
376
545
  });
377
546
  }
547
+ // --- loop (@each) ---------------------------------------------------------
548
+ /** Repeat a node over `iterator` (a list expression), binding each `alias`. */
378
549
  setEach(node, iterator, alias = 'item', indexName) {
379
550
  let expr;
380
551
  try {
@@ -397,6 +568,7 @@ class Editor {
397
568
  node.each = null;
398
569
  });
399
570
  }
571
+ // --- component state / props ----------------------------------------------
400
572
  addState(component, name = 'value', init = '0') {
401
573
  const taken = new Set(component.state.map((v) => v.name));
402
574
  let unique = name;
@@ -481,6 +653,8 @@ class Editor {
481
653
  });
482
654
  return true;
483
655
  }
656
+ // --- blocks ---------------------------------------------------------------
657
+ /** Create a block's template and insert it into `parent`. */
484
658
  insertBlock(blockId, parent, index) {
485
659
  const block = this.blocks.get(blockId);
486
660
  if (!block || !canHaveChildren(parent)) {
@@ -490,6 +664,7 @@ class Editor {
490
664
  this.insertNode(parent, created, index);
491
665
  return created;
492
666
  }
667
+ // --- components / pages ---------------------------------------------------
493
668
  uniqueName(base) {
494
669
  const taken = new Set(this.getComponents().map((c) => c.name));
495
670
  if (!taken.has(base)) {
@@ -501,6 +676,7 @@ class Editor {
501
676
  }
502
677
  return `${base}${i}`;
503
678
  }
679
+ /** Add a new component (a "page"). */
504
680
  addComponent(name = 'Page') {
505
681
  const unique = this.uniqueName(name);
506
682
  const component = t__namespace.nuComponent({
@@ -514,6 +690,7 @@ class Editor {
514
690
  });
515
691
  return this.getComponent(unique);
516
692
  }
693
+ /** Rename a component, updating `<Name/>` references across the program. */
517
694
  renameComponent(component, name) {
518
695
  const clean = name.trim();
519
696
  if (!clean ||
@@ -563,6 +740,7 @@ class Editor {
563
740
  this.walkTemplates(child, fn);
564
741
  }
565
742
  }
743
+ // --- query ----------------------------------------------------------------
566
744
  getComponents() {
567
745
  return this.nu.state.program.components.filter((c) => c instanceof t__namespace.NuComponent);
568
746
  }
@@ -582,6 +760,7 @@ class Editor {
582
760
  getNodeIndex(node) {
583
761
  return this.getSiblings(node).indexOf(node);
584
762
  }
763
+ /** Full path from the State root to this node (for selections/serialization). */
585
764
  getNodePath(node) {
586
765
  const out = [];
587
766
  let current = node;
@@ -593,9 +772,12 @@ class Editor {
593
772
  }
594
773
  return out;
595
774
  }
775
+ // --- change subscription --------------------------------------------------
776
+ /** Fires with the raw field-level writes of every change (incl. undo/redo). */
596
777
  onChange(cb) {
597
778
  return this.nu.listenToMutations(cb);
598
779
  }
780
+ /** Fires only when the tree shape changes (a child array was mutated). */
599
781
  onStructureChange(cb) {
600
782
  return this.nu.listenToMutations((entries) => {
601
783
  if (entries.some((e) => Array.isArray(e.target))) {
@@ -603,6 +785,7 @@ class Editor {
603
785
  }
604
786
  });
605
787
  }
788
+ // --- internals (run inside nu.change) -------------------------------------
606
789
  spliceFromParent(node) {
607
790
  const parent = this.nu.getParentNode(node);
608
791
  const kids = parent?.children;
@@ -650,6 +833,7 @@ class Editor {
650
833
  destKids.splice(position === 'after' ? ti + 1 : ti, 0, dragged);
651
834
  return true;
652
835
  }
836
+ /** Insert an already-detached node relative to `target` (no removal). */
653
837
  insertRelativeTo(node, target, position) {
654
838
  if (position === 'inside') {
655
839
  if (!canHaveChildren(target)) {
@@ -676,18 +860,24 @@ function createEditor(nu, opts) {
676
860
  }
677
861
 
678
862
  exports.BlockRegistry = BlockRegistry;
863
+ exports.CANVAS_CHANNEL = CANVAS_CHANNEL;
864
+ exports.CANVAS_PROTOCOL_VERSION = CANVAS_PROTOCOL_VERSION;
679
865
  exports.CommandRegistry = CommandRegistry;
680
866
  exports.DEFAULT_BLOCKS = DEFAULT_BLOCKS;
681
867
  exports.Editor = Editor;
682
868
  exports.canHaveChildren = canHaveChildren;
869
+ exports.canvasChannelName = canvasChannelName;
870
+ exports.createCanvasReceiver = createCanvasReceiver;
683
871
  exports.createEditor = createEditor;
684
872
  exports.defineBlock = defineBlock;
685
873
  exports.dropPositionFromPointer = dropPositionFromPointer;
686
874
  exports.el = el;
687
875
  exports.isAncestorOf = isAncestorOf;
876
+ exports.isCanvasMessage = isCanvasMessage;
688
877
  exports.isTextTemplate = isTextTemplate;
689
878
  exports.lit = lit;
690
879
  exports.templateChildren = templateChildren;
691
880
  exports.templateLabel = templateLabel;
692
881
  exports.text = text;
693
882
  exports.textPreview = textPreview;
883
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","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":["t","Nu","reactive","Parser"],"mappings":"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"}