@skenora/editor 0.1.2

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 (78) hide show
  1. package/README.md +51 -0
  2. package/dist/commands/annotation-commands.d.ts +12 -0
  3. package/dist/commands/annotation-commands.d.ts.map +1 -0
  4. package/dist/commands/annotation-commands.js +37 -0
  5. package/dist/commands/annotation-commands.js.map +1 -0
  6. package/dist/commands/camera-entity-commands.d.ts +12 -0
  7. package/dist/commands/camera-entity-commands.d.ts.map +1 -0
  8. package/dist/commands/camera-entity-commands.js +60 -0
  9. package/dist/commands/camera-entity-commands.js.map +1 -0
  10. package/dist/commands/camera-path-commands.d.ts +9 -0
  11. package/dist/commands/camera-path-commands.d.ts.map +1 -0
  12. package/dist/commands/camera-path-commands.js +95 -0
  13. package/dist/commands/camera-path-commands.js.map +1 -0
  14. package/dist/commands/flow-commands.d.ts +10 -0
  15. package/dist/commands/flow-commands.d.ts.map +1 -0
  16. package/dist/commands/flow-commands.js +86 -0
  17. package/dist/commands/flow-commands.js.map +1 -0
  18. package/dist/commands/geometry-commands.d.ts +8 -0
  19. package/dist/commands/geometry-commands.d.ts.map +1 -0
  20. package/dist/commands/geometry-commands.js +85 -0
  21. package/dist/commands/geometry-commands.js.map +1 -0
  22. package/dist/commands/material-assignment.d.ts +7 -0
  23. package/dist/commands/material-assignment.d.ts.map +1 -0
  24. package/dist/commands/material-assignment.js +69 -0
  25. package/dist/commands/material-assignment.js.map +1 -0
  26. package/dist/commands/material-commands.d.ts +13 -0
  27. package/dist/commands/material-commands.d.ts.map +1 -0
  28. package/dist/commands/material-commands.js +182 -0
  29. package/dist/commands/material-commands.js.map +1 -0
  30. package/dist/commands/model-import-commands.d.ts +6 -0
  31. package/dist/commands/model-import-commands.d.ts.map +1 -0
  32. package/dist/commands/model-import-commands.js +120 -0
  33. package/dist/commands/model-import-commands.js.map +1 -0
  34. package/dist/commands/particle-commands.d.ts +13 -0
  35. package/dist/commands/particle-commands.d.ts.map +1 -0
  36. package/dist/commands/particle-commands.js +47 -0
  37. package/dist/commands/particle-commands.js.map +1 -0
  38. package/dist/commands/primitive-commands.d.ts +18 -0
  39. package/dist/commands/primitive-commands.d.ts.map +1 -0
  40. package/dist/commands/primitive-commands.js +24 -0
  41. package/dist/commands/primitive-commands.js.map +1 -0
  42. package/dist/commands/procedural-commands.d.ts +13 -0
  43. package/dist/commands/procedural-commands.d.ts.map +1 -0
  44. package/dist/commands/procedural-commands.js +20 -0
  45. package/dist/commands/procedural-commands.js.map +1 -0
  46. package/dist/commands/scene-commands.d.ts +16 -0
  47. package/dist/commands/scene-commands.d.ts.map +1 -0
  48. package/dist/commands/scene-commands.js +146 -0
  49. package/dist/commands/scene-commands.js.map +1 -0
  50. package/dist/commands/shape-commands.d.ts +24 -0
  51. package/dist/commands/shape-commands.d.ts.map +1 -0
  52. package/dist/commands/shape-commands.js +95 -0
  53. package/dist/commands/shape-commands.js.map +1 -0
  54. package/dist/commands/texture-animation-commands.d.ts +5 -0
  55. package/dist/commands/texture-animation-commands.d.ts.map +1 -0
  56. package/dist/commands/texture-animation-commands.js +23 -0
  57. package/dist/commands/texture-animation-commands.js.map +1 -0
  58. package/dist/core/candidate-commit.d.ts +59 -0
  59. package/dist/core/candidate-commit.d.ts.map +1 -0
  60. package/dist/core/candidate-commit.js +54 -0
  61. package/dist/core/candidate-commit.js.map +1 -0
  62. package/dist/core/commands.d.ts +20 -0
  63. package/dist/core/commands.d.ts.map +1 -0
  64. package/dist/core/commands.js +282 -0
  65. package/dist/core/commands.js.map +1 -0
  66. package/dist/core/editor-session.d.ts +92 -0
  67. package/dist/core/editor-session.d.ts.map +1 -0
  68. package/dist/core/editor-session.js +496 -0
  69. package/dist/core/editor-session.js.map +1 -0
  70. package/dist/index.d.ts +18 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +18 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/properties/property-descriptors.d.ts +58 -0
  75. package/dist/properties/property-descriptors.d.ts.map +1 -0
  76. package/dist/properties/property-descriptors.js +832 -0
  77. package/dist/properties/property-descriptors.js.map +1 -0
  78. package/package.json +34 -0
@@ -0,0 +1,496 @@
1
+ /** Instance-scoped headless authoring session. */
2
+ import { assertSceneDocument, normalizeSceneDocument, } from "@skenora/contracts";
3
+ import { applyPatchesChecked, cloneDocumentPatches, deepFreeze, invertPatches, SceneDocumentStore, } from "@skenora/document";
4
+ import { EventHub } from "@skenora/events";
5
+ import { PluginCleanupError, PluginHost, } from "@skenora/plugins";
6
+ import { createSceneDocumentRevisionHash, EditorRevisionConflictError, } from "./candidate-commit.js";
7
+ import { createCommandId, } from "./commands.js";
8
+ export class EditorSession {
9
+ events;
10
+ #document;
11
+ #ownsEvents;
12
+ #historyLimit;
13
+ #validate;
14
+ #undoStack = [];
15
+ #redoStack = [];
16
+ #plugins;
17
+ #activeTransaction = null;
18
+ #selection = Object.freeze([]);
19
+ #dirty = false;
20
+ #disposed = false;
21
+ constructor(document, options = {}) {
22
+ if (options.historyLimit !== undefined &&
23
+ (!Number.isInteger(options.historyLimit) || options.historyLimit < 0)) {
24
+ throw new Error("Editor historyLimit must be a non-negative integer");
25
+ }
26
+ this.#validate =
27
+ options.validate === false
28
+ ? null
29
+ : (options.validate ?? ((value) => assertSceneDocument(value)));
30
+ const ownedDocument = normalizeSceneDocument(structuredClone(document));
31
+ this.#validate?.(ownedDocument);
32
+ this.#document = new SceneDocumentStore(ownedDocument);
33
+ this.events = options.events ?? new EventHub();
34
+ this.#ownsEvents = options.events === undefined;
35
+ this.#historyLimit = options.historyLimit ?? 200;
36
+ this.#plugins = new PluginHost(this);
37
+ try {
38
+ for (const plugin of options.plugins ?? [])
39
+ this.install(plugin);
40
+ }
41
+ catch (error) {
42
+ this.dispose();
43
+ throw error;
44
+ }
45
+ }
46
+ get snapshot() {
47
+ return this.#document.snapshot;
48
+ }
49
+ get revision() {
50
+ return this.#document.revision;
51
+ }
52
+ /**
53
+ * Commits a complete candidate document with an Editor-level revision CAS.
54
+ *
55
+ * The candidate is normalized and asserted before being converted into
56
+ * granular patches. The expected revision and optional document hash are
57
+ * checked again inside the synchronous commit boundary immediately before
58
+ * the Store commit, so stale candidates produce no history entry or document
59
+ * change. Queueing belongs to the SDK executor, not this session.
60
+ */
61
+ commitCandidateAtRevision(candidate, options) {
62
+ this.#assertActive();
63
+ this.#assertNoActiveTransaction();
64
+ assertCandidateCommitOptions(options);
65
+ const normalizedCandidate = normalizeSceneDocument(candidate);
66
+ assertSceneDocument(normalizedCandidate);
67
+ const ownedCandidate = normalizedCandidate;
68
+ const documentHash = createSceneDocumentRevisionHash(ownedCandidate);
69
+ const commandId = createCommandId("commit-candidate");
70
+ const label = options.label ?? "Commit scene candidate";
71
+ const patches = createCandidatePatches(this.snapshot, ownedCandidate);
72
+ const change = this.#commit(commandId, label, patches, true, {
73
+ expectedRevision: options.expectedRevision,
74
+ ...(options.expectedDocumentHash === undefined
75
+ ? {}
76
+ : { expectedDocumentHash: options.expectedDocumentHash }),
77
+ });
78
+ return Object.freeze({
79
+ change,
80
+ changeId: change.id,
81
+ baseRevision: change.revision - 1,
82
+ revision: change.revision,
83
+ documentHash,
84
+ });
85
+ }
86
+ get selection() {
87
+ return this.#selection;
88
+ }
89
+ get dirty() {
90
+ return this.#dirty;
91
+ }
92
+ get canUndo() {
93
+ return this.#undoStack.length > 0;
94
+ }
95
+ get canRedo() {
96
+ return this.#redoStack.length > 0;
97
+ }
98
+ get transactionActive() {
99
+ return this.#activeTransaction !== null;
100
+ }
101
+ execute(command) {
102
+ this.#assertActive();
103
+ this.#assertNoActiveTransaction();
104
+ try {
105
+ const patches = command.createPatches(this.snapshot);
106
+ if (patches.length === 0)
107
+ return null;
108
+ return this.#commit(command.id, command.label, patches, true);
109
+ }
110
+ catch (error) {
111
+ this.events.publish("command.rejected", { commandId: command.id, error }, { source: "editor" });
112
+ throw error;
113
+ }
114
+ }
115
+ transaction(label, commands) {
116
+ this.#assertActive();
117
+ this.#assertNoActiveTransaction();
118
+ let working = this.snapshot;
119
+ const patches = [];
120
+ for (const command of commands) {
121
+ let next;
122
+ try {
123
+ next = command.createPatches(working);
124
+ }
125
+ catch (error) {
126
+ this.events.publish("command.rejected", { commandId: command.id, error }, { source: "editor-transaction" });
127
+ throw error;
128
+ }
129
+ if (next.length === 0)
130
+ continue;
131
+ const temporary = new SceneDocumentStore(working);
132
+ temporary.commit({ id: command.id, label: command.label, patches: next });
133
+ working = temporary.snapshot;
134
+ patches.push(...next);
135
+ }
136
+ if (patches.length === 0)
137
+ return null;
138
+ return this.#commit(createCommandId("transaction"), label, patches, true);
139
+ }
140
+ beginTransaction(options = {}) {
141
+ this.#assertActive();
142
+ this.#assertNoActiveTransaction();
143
+ const mergeWindowMs = options.mergeWindowMs ?? 750;
144
+ if (!Number.isFinite(mergeWindowMs) || mergeWindowMs < 0) {
145
+ throw new Error("Editor mergeWindowMs must be a non-negative number");
146
+ }
147
+ const transaction = {
148
+ id: createCommandId("transaction"),
149
+ label: options.label ?? "Edit",
150
+ mergeKey: options.mergeKey ?? null,
151
+ mergeWindowMs,
152
+ initialDirty: this.#dirty,
153
+ initialSelection: this.#selection,
154
+ patches: [],
155
+ active: true,
156
+ };
157
+ this.#activeTransaction = transaction;
158
+ const session = this;
159
+ return {
160
+ id: transaction.id,
161
+ label: transaction.label,
162
+ get active() {
163
+ return transaction.active;
164
+ },
165
+ execute(command) {
166
+ return session.#executeInTransaction(transaction, command);
167
+ },
168
+ commit() {
169
+ return session.#commitTransaction(transaction);
170
+ },
171
+ cancel() {
172
+ return session.#cancelTransaction(transaction);
173
+ },
174
+ };
175
+ }
176
+ undo() {
177
+ this.#assertActive();
178
+ this.#assertNoActiveTransaction();
179
+ const entry = this.#undoStack.pop();
180
+ if (!entry)
181
+ return null;
182
+ const change = this.#commit(`undo-${entry.id}`, `Undo: ${entry.label}`, entry.backward, false, { publishHistory: false });
183
+ this.#redoStack.push(entry);
184
+ this.#publishHistory();
185
+ return change;
186
+ }
187
+ redo() {
188
+ this.#assertActive();
189
+ this.#assertNoActiveTransaction();
190
+ const entry = this.#redoStack.pop();
191
+ if (!entry)
192
+ return null;
193
+ const change = this.#commit(`redo-${entry.id}`, `Redo: ${entry.label}`, entry.forward, false, { publishHistory: false });
194
+ this.#undoStack.push(entry);
195
+ this.#publishHistory();
196
+ return change;
197
+ }
198
+ select(entityIds) {
199
+ this.#assertActive();
200
+ const next = [...new Set(entityIds)].filter((id) => this.snapshot.entities[id]);
201
+ if (next.length === this.#selection.length &&
202
+ next.every((id, index) => id === this.#selection[index])) {
203
+ return;
204
+ }
205
+ this.#selection = Object.freeze(next);
206
+ this.events.publish("selection.changed", { entityIds: this.#selection }, { source: "editor" });
207
+ }
208
+ markSaved() {
209
+ this.#assertActive();
210
+ this.#assertNoActiveTransaction();
211
+ this.#setDirty(false);
212
+ }
213
+ install(plugin) {
214
+ this.#assertActive();
215
+ return this.#plugins.install(plugin);
216
+ }
217
+ subscribe(type, handler, signal) {
218
+ return this.events.subscribe(type, handler, signal ? { signal } : {});
219
+ }
220
+ dispose() {
221
+ if (this.#disposed)
222
+ return;
223
+ this.#disposed = true;
224
+ if (this.#activeTransaction)
225
+ this.#activeTransaction.active = false;
226
+ this.#activeTransaction = null;
227
+ this.#selection = Object.freeze([]);
228
+ this.#undoStack.length = 0;
229
+ this.#redoStack.length = 0;
230
+ try {
231
+ this.#plugins.dispose();
232
+ }
233
+ catch (error) {
234
+ const cleanupErrors = error instanceof AggregateError ? error.errors : [error];
235
+ for (const cleanupError of cleanupErrors) {
236
+ const extensionId = cleanupError instanceof PluginCleanupError
237
+ ? cleanupError.pluginId
238
+ : "plugin-host";
239
+ try {
240
+ this.events.publish("extension.error", { extensionId, error: cleanupError }, { source: "editor" });
241
+ }
242
+ catch {
243
+ // Disposal continues if an externally owned EventHub is already gone.
244
+ }
245
+ }
246
+ }
247
+ if (this.#ownsEvents)
248
+ this.events.dispose();
249
+ }
250
+ #executeInTransaction(transaction, command) {
251
+ this.#assertTransaction(transaction);
252
+ try {
253
+ const patches = command.createPatches(this.snapshot);
254
+ if (patches.length === 0)
255
+ return null;
256
+ const change = this.#commit(command.id, command.label, patches, false, {
257
+ dirty: transaction.initialDirty,
258
+ publishHistory: false,
259
+ });
260
+ transaction.patches.push(...change.patches);
261
+ return change;
262
+ }
263
+ catch (error) {
264
+ this.events.publish("command.rejected", { commandId: command.id, error }, { source: "editor-transaction" });
265
+ throw error;
266
+ }
267
+ }
268
+ #commitTransaction(transaction) {
269
+ this.#assertTransaction(transaction);
270
+ const patches = deepFreeze(cloneDocumentPatches(transaction.patches));
271
+ this.#closeTransaction(transaction);
272
+ if (patches.length === 0) {
273
+ this.events.publish("transaction.committed", {
274
+ transactionId: transaction.id,
275
+ label: transaction.label,
276
+ mergeKey: transaction.mergeKey,
277
+ }, { source: "editor" });
278
+ return null;
279
+ }
280
+ this.#recordHistory(transaction.id, transaction.label, patches, transaction.mergeKey, transaction.mergeWindowMs);
281
+ const change = Object.freeze({
282
+ id: transaction.id,
283
+ label: transaction.label,
284
+ patches,
285
+ revision: this.#document.revision,
286
+ });
287
+ this.#setDirty(true);
288
+ this.#publishHistory();
289
+ this.events.publish("transaction.committed", {
290
+ transactionId: transaction.id,
291
+ label: transaction.label,
292
+ mergeKey: transaction.mergeKey,
293
+ }, { source: "editor" });
294
+ return change;
295
+ }
296
+ #cancelTransaction(transaction) {
297
+ this.#assertTransaction(transaction);
298
+ let change = null;
299
+ if (transaction.patches.length > 0) {
300
+ change = this.#commit(`cancel-${transaction.id}`, `Cancel: ${transaction.label}`, invertPatches(transaction.patches), false, { dirty: transaction.initialDirty, publishHistory: false });
301
+ }
302
+ const restoredSelection = transaction.initialSelection.filter((entityId) => this.snapshot.entities[entityId]);
303
+ const selectionChanged = restoredSelection.length !== this.#selection.length ||
304
+ restoredSelection.some((entityId, index) => entityId !== this.#selection[index]);
305
+ if (selectionChanged) {
306
+ this.#selection = Object.freeze(restoredSelection);
307
+ this.events.publish("selection.changed", { entityIds: this.#selection }, { source: "editor-transaction" });
308
+ }
309
+ this.#closeTransaction(transaction);
310
+ this.events.publish("transaction.cancelled", { transactionId: transaction.id, label: transaction.label }, { source: "editor" });
311
+ return change;
312
+ }
313
+ #commit(id, label, patches, recordHistory, options = {}) {
314
+ if (options.expectedRevision !== undefined) {
315
+ this.#assertRevisionPrecondition(options.expectedRevision, options.expectedDocumentHash);
316
+ }
317
+ const ownedPatches = deepFreeze(cloneDocumentPatches(patches));
318
+ this.#validate?.(applyPatchesChecked(this.snapshot, ownedPatches));
319
+ if (options.expectedRevision !== undefined) {
320
+ this.#assertRevisionPrecondition(options.expectedRevision, options.expectedDocumentHash);
321
+ }
322
+ const revision = this.#document.revision + 1;
323
+ const change = Object.freeze({
324
+ id,
325
+ label,
326
+ patches: ownedPatches,
327
+ revision,
328
+ });
329
+ this.#document.commit({ id, label, patches: ownedPatches });
330
+ const nextSelection = this.#selection.filter((entityId) => this.snapshot.entities[entityId]);
331
+ const selectionChanged = nextSelection.length !== this.#selection.length ||
332
+ nextSelection.some((entityId, index) => entityId !== this.#selection[index]);
333
+ if (selectionChanged)
334
+ this.#selection = Object.freeze(nextSelection);
335
+ if (recordHistory) {
336
+ this.#recordHistory(id, label, ownedPatches, null, 0);
337
+ }
338
+ this.events.publish("document.changed", change, { source: "editor" });
339
+ if (selectionChanged) {
340
+ this.events.publish("selection.changed", { entityIds: this.#selection }, { source: "editor" });
341
+ }
342
+ this.#setDirty(options.dirty ?? true);
343
+ if (options.publishHistory ?? true)
344
+ this.#publishHistory();
345
+ return change;
346
+ }
347
+ #assertRevisionPrecondition(expectedRevision, expectedDocumentHash) {
348
+ const actualRevision = this.#document.revision;
349
+ const actualDocumentHash = expectedDocumentHash === undefined
350
+ ? null
351
+ : createSceneDocumentRevisionHash(this.snapshot);
352
+ const revisionMatches = expectedRevision === actualRevision;
353
+ const hashMatches = expectedDocumentHash === undefined ||
354
+ expectedDocumentHash === actualDocumentHash;
355
+ if (revisionMatches && hashMatches)
356
+ return;
357
+ throw new EditorRevisionConflictError({
358
+ reason: revisionMatches ? "document-hash" : "revision",
359
+ expectedRevision,
360
+ actualRevision,
361
+ expectedDocumentHash: expectedDocumentHash ?? null,
362
+ actualDocumentHash,
363
+ });
364
+ }
365
+ #recordHistory(id, label, patches, mergeKey, mergeWindowMs) {
366
+ const now = Date.now();
367
+ const previous = this.#undoStack.at(-1);
368
+ if (mergeKey &&
369
+ previous?.mergeKey === mergeKey &&
370
+ now - previous.committedAt <= mergeWindowMs) {
371
+ const forward = deepFreeze(cloneDocumentPatches([...previous.forward, ...patches]));
372
+ this.#undoStack[this.#undoStack.length - 1] = {
373
+ id,
374
+ label,
375
+ forward,
376
+ backward: deepFreeze(invertPatches(forward)),
377
+ mergeKey,
378
+ committedAt: now,
379
+ };
380
+ }
381
+ else {
382
+ this.#undoStack.push({
383
+ id,
384
+ label,
385
+ forward: patches,
386
+ backward: deepFreeze(invertPatches(patches)),
387
+ mergeKey,
388
+ committedAt: now,
389
+ });
390
+ if (this.#undoStack.length > this.#historyLimit)
391
+ this.#undoStack.shift();
392
+ }
393
+ this.#redoStack.length = 0;
394
+ }
395
+ #closeTransaction(transaction) {
396
+ transaction.active = false;
397
+ if (this.#activeTransaction === transaction) {
398
+ this.#activeTransaction = null;
399
+ }
400
+ }
401
+ #publishHistory() {
402
+ this.events.publish("history.changed", { canUndo: this.canUndo, canRedo: this.canRedo }, { source: "editor" });
403
+ }
404
+ #setDirty(dirty) {
405
+ if (this.#dirty === dirty)
406
+ return;
407
+ this.#dirty = dirty;
408
+ this.events.publish("dirty.changed", { dirty }, { source: "editor" });
409
+ }
410
+ #assertActive() {
411
+ if (this.#disposed)
412
+ throw new Error("EditorSession has been disposed");
413
+ }
414
+ #assertNoActiveTransaction() {
415
+ if (this.#activeTransaction) {
416
+ throw new Error(`Editor transaction is already active: ${this.#activeTransaction.id}`);
417
+ }
418
+ }
419
+ #assertTransaction(transaction) {
420
+ this.#assertActive();
421
+ if (!transaction.active || this.#activeTransaction !== transaction) {
422
+ throw new Error(`Editor transaction is no longer active: ${transaction.id}`);
423
+ }
424
+ }
425
+ }
426
+ function assertCandidateCommitOptions(options) {
427
+ if (!Number.isInteger(options.expectedRevision) ||
428
+ options.expectedRevision < 0) {
429
+ throw new RangeError("Editor candidate expectedRevision must be a non-negative integer");
430
+ }
431
+ if (options.expectedDocumentHash !== undefined &&
432
+ (typeof options.expectedDocumentHash !== "string" ||
433
+ options.expectedDocumentHash.length === 0)) {
434
+ throw new TypeError("Editor candidate expectedDocumentHash must be a non-empty string");
435
+ }
436
+ }
437
+ /**
438
+ * Converts a complete, validated candidate into non-overlapping leaf patches.
439
+ * Arrays remain atomic so index deletion semantics cannot shift later paths.
440
+ */
441
+ function createCandidatePatches(previous, next) {
442
+ const patches = [];
443
+ appendCandidatePatches(previous, next, [], patches);
444
+ return patches;
445
+ }
446
+ function appendCandidatePatches(previous, next, path, patches) {
447
+ if (candidateValuesEqual(previous, next))
448
+ return;
449
+ if (!isDocumentRecord(previous) || !isDocumentRecord(next)) {
450
+ patches.push({ op: "set", path, value: next, previousValue: previous });
451
+ return;
452
+ }
453
+ for (const key of Object.keys(previous)) {
454
+ if (Object.hasOwn(next, key))
455
+ continue;
456
+ patches.push({
457
+ op: "delete",
458
+ path: [...path, key],
459
+ previousValue: previous[key],
460
+ });
461
+ }
462
+ for (const key of Object.keys(next)) {
463
+ const childPath = [...path, key];
464
+ if (!Object.hasOwn(previous, key)) {
465
+ patches.push({
466
+ op: "set",
467
+ path: childPath,
468
+ value: next[key],
469
+ previousValue: undefined,
470
+ });
471
+ continue;
472
+ }
473
+ appendCandidatePatches(previous[key], next[key], childPath, patches);
474
+ }
475
+ }
476
+ function isDocumentRecord(value) {
477
+ return value !== null && typeof value === "object" && !Array.isArray(value);
478
+ }
479
+ function candidateValuesEqual(left, right) {
480
+ if (Object.is(left, right))
481
+ return true;
482
+ if (Array.isArray(left) || Array.isArray(right)) {
483
+ return (Array.isArray(left) &&
484
+ Array.isArray(right) &&
485
+ left.length === right.length &&
486
+ left.every((value, index) => candidateValuesEqual(value, right[index])));
487
+ }
488
+ if (!isDocumentRecord(left) || !isDocumentRecord(right))
489
+ return false;
490
+ const leftKeys = Object.keys(left);
491
+ const rightKeys = Object.keys(right);
492
+ return (leftKeys.length === rightKeys.length &&
493
+ leftKeys.every((key) => Object.hasOwn(right, key) &&
494
+ candidateValuesEqual(left[key], right[key])));
495
+ }
496
+ //# sourceMappingURL=editor-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-session.js","sourceRoot":"","sources":["../../src/core/editor-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export * from "./core/commands.js";
2
+ export * from "./core/candidate-commit.js";
3
+ export * from "./core/editor-session.js";
4
+ export * from "./commands/annotation-commands.js";
5
+ export * from "./commands/camera-entity-commands.js";
6
+ export * from "./commands/camera-path-commands.js";
7
+ export * from "./commands/flow-commands.js";
8
+ export * from "./commands/geometry-commands.js";
9
+ export * from "./commands/material-commands.js";
10
+ export * from "./commands/model-import-commands.js";
11
+ export * from "./commands/particle-commands.js";
12
+ export * from "./commands/primitive-commands.js";
13
+ export * from "./commands/procedural-commands.js";
14
+ export * from "./commands/scene-commands.js";
15
+ export * from "./commands/shape-commands.js";
16
+ export * from "./commands/texture-animation-commands.js";
17
+ export * from "./properties/property-descriptors.js";
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uCAAuC,CAAC;AACtD,cAAc,mCAAmC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,18 @@
1
+ export * from "./core/commands.js";
2
+ export * from "./core/candidate-commit.js";
3
+ export * from "./core/editor-session.js";
4
+ export * from "./commands/annotation-commands.js";
5
+ export * from "./commands/camera-entity-commands.js";
6
+ export * from "./commands/camera-path-commands.js";
7
+ export * from "./commands/flow-commands.js";
8
+ export * from "./commands/geometry-commands.js";
9
+ export * from "./commands/material-commands.js";
10
+ export * from "./commands/model-import-commands.js";
11
+ export * from "./commands/particle-commands.js";
12
+ export * from "./commands/primitive-commands.js";
13
+ export * from "./commands/procedural-commands.js";
14
+ export * from "./commands/scene-commands.js";
15
+ export * from "./commands/shape-commands.js";
16
+ export * from "./commands/texture-animation-commands.js";
17
+ export * from "./properties/property-descriptors.js";
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uCAAuC,CAAC;AACtD,cAAc,mCAAmC,CAAC"}
@@ -0,0 +1,58 @@
1
+ import type { EntityRecord, SceneDocumentData, Vector3Value } from "@skenora/contracts";
2
+ import type { DocumentChange, DocumentPath } from "@skenora/document";
3
+ import type { EditorSession } from "../core/editor-session.js";
4
+ export type EditablePropertyKind = "string" | "number" | "boolean" | "color" | "vector2" | "vector3" | "select";
5
+ export interface MixedValue {
6
+ readonly kind: "mixed";
7
+ }
8
+ export declare const MIXED_VALUE: MixedValue;
9
+ export interface EditablePropertyDescriptor<T = unknown> {
10
+ id: string;
11
+ label: string;
12
+ group: "general" | "transform" | "material" | "environment" | "camera" | "particle" | "shape" | "annotation" | "custom";
13
+ kind: EditablePropertyKind;
14
+ path: DocumentPath;
15
+ paths?: readonly DocumentPath[];
16
+ value: T | MixedValue;
17
+ readOnly?: boolean;
18
+ min?: number;
19
+ max?: number;
20
+ step?: number;
21
+ options?: readonly {
22
+ label: string;
23
+ value: string;
24
+ }[];
25
+ }
26
+ export interface PropertyEditRequest {
27
+ path: DocumentPath;
28
+ paths?: readonly DocumentPath[];
29
+ value: unknown;
30
+ label?: string;
31
+ expectedRevision?: number;
32
+ mergeKey?: string;
33
+ mergeWindowMs?: number;
34
+ }
35
+ export type PropertyDescriptorProvider = (document: Readonly<SceneDocumentData>, entity: Readonly<EntityRecord>) => readonly EditablePropertyDescriptor[];
36
+ export declare class EditFacade {
37
+ #private;
38
+ constructor(session: EditorSession);
39
+ registerPropertyProvider(provider: PropertyDescriptorProvider): () => void;
40
+ describe(entityId: string): readonly EditablePropertyDescriptor[];
41
+ describeMany(entityIds: readonly string[]): readonly EditablePropertyDescriptor[];
42
+ describeScene(): readonly EditablePropertyDescriptor[];
43
+ edit(request: PropertyEditRequest): DocumentChange | null;
44
+ rename(entityIds: readonly string[], name: string): DocumentChange | null;
45
+ setEnabled(entityIds: readonly string[], enabled: boolean): DocumentChange | null;
46
+ setVisible(entityIds: readonly string[], visible: boolean): DocumentChange | null;
47
+ setPosition(entityIds: readonly string[], position: Vector3Value): DocumentChange | null;
48
+ setRotation(entityIds: readonly string[], rotation: Vector3Value): DocumentChange | null;
49
+ setScale(entityIds: readonly string[], scaling: Vector3Value): DocumentChange | null;
50
+ setParent(entityIds: readonly string[], parentId: string | null): DocumentChange | null;
51
+ duplicate(entityIds: readonly string[]): DocumentChange | null;
52
+ remove(entityIds: readonly string[]): DocumentChange | null;
53
+ }
54
+ export declare function isMixedValue(value: unknown): value is MixedValue;
55
+ export declare function createTypedEntityDescriptors(entity: Readonly<EntityRecord>): readonly EditablePropertyDescriptor[];
56
+ export declare function createMaterialDescriptors(document: Readonly<SceneDocumentData>, entity: Readonly<EntityRecord>): readonly EditablePropertyDescriptor[];
57
+ export declare function createCoreEntityDescriptors(entity: Readonly<EntityRecord>): readonly EditablePropertyDescriptor[];
58
+ //# sourceMappingURL=property-descriptors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property-descriptors.d.ts","sourceRoot":"","sources":["../../src/properties/property-descriptors.ts"],"names":[],"mappings":"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"}