@ifc-lite/collab 0.6.1 → 0.8.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.
Files changed (54) hide show
  1. package/README.md +1 -1
  2. package/dist/branch/branch.d.ts +11 -0
  3. package/dist/branch/branch.d.ts.map +1 -1
  4. package/dist/branch/branch.js +30 -1
  5. package/dist/branch/branch.js.map +1 -1
  6. package/dist/conflicts/detector.d.ts +1 -1
  7. package/dist/conflicts/detector.d.ts.map +1 -1
  8. package/dist/conflicts/detector.js +19 -6
  9. package/dist/conflicts/detector.js.map +1 -1
  10. package/dist/doc/entity.js +4 -4
  11. package/dist/doc/entity.js.map +1 -1
  12. package/dist/doc/model-slot.d.ts +98 -0
  13. package/dist/doc/model-slot.d.ts.map +1 -0
  14. package/dist/doc/model-slot.js +124 -0
  15. package/dist/doc/model-slot.js.map +1 -0
  16. package/dist/doc/schema.d.ts +10 -0
  17. package/dist/doc/schema.d.ts.map +1 -1
  18. package/dist/doc/schema.js +13 -0
  19. package/dist/doc/schema.js.map +1 -1
  20. package/dist/geometry/blob-store.d.ts +5 -0
  21. package/dist/geometry/blob-store.d.ts.map +1 -1
  22. package/dist/geometry/blob-store.js +18 -0
  23. package/dist/geometry/blob-store.js.map +1 -1
  24. package/dist/geometry/gc.d.ts +8 -8
  25. package/dist/geometry/gc.d.ts.map +1 -1
  26. package/dist/geometry/gc.js +16 -6
  27. package/dist/geometry/gc.js.map +1 -1
  28. package/dist/index.d.ts +3 -1
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +3 -1
  31. package/dist/index.js.map +1 -1
  32. package/dist/providers/relay-state.d.ts +29 -0
  33. package/dist/providers/relay-state.d.ts.map +1 -0
  34. package/dist/providers/relay-state.js +95 -0
  35. package/dist/providers/relay-state.js.map +1 -0
  36. package/dist/snapshot/from-ifcx.d.ts +9 -0
  37. package/dist/snapshot/from-ifcx.d.ts.map +1 -1
  38. package/dist/snapshot/from-ifcx.js +5 -8
  39. package/dist/snapshot/from-ifcx.js.map +1 -1
  40. package/dist/snapshot/from-step.d.ts +18 -3
  41. package/dist/snapshot/from-step.d.ts.map +1 -1
  42. package/dist/snapshot/from-step.js +20 -5
  43. package/dist/snapshot/from-step.js.map +1 -1
  44. package/dist/snapshot/slot-ifcx.d.ts +52 -0
  45. package/dist/snapshot/slot-ifcx.d.ts.map +1 -0
  46. package/dist/snapshot/slot-ifcx.js +114 -0
  47. package/dist/snapshot/slot-ifcx.js.map +1 -0
  48. package/dist/snapshot/structured-attrs.js +6 -6
  49. package/dist/snapshot/structured-attrs.js.map +1 -1
  50. package/dist/snapshot/to-ifcx.d.ts +9 -0
  51. package/dist/snapshot/to-ifcx.d.ts.map +1 -1
  52. package/dist/snapshot/to-ifcx.js +8 -4
  53. package/dist/snapshot/to-ifcx.js.map +1 -1
  54. package/package.json +4 -4
@@ -16,6 +16,7 @@
16
16
  */
17
17
  import type * as Y from 'yjs';
18
18
  import type { PropertyValue } from '../doc/schema.js';
19
+ import { type ModelSlotRef } from '../doc/model-slot.js';
19
20
  /** Schema versions the CRDT entity meta accepts (see `EntityMeta`). */
20
21
  export type CollabSchemaVersion = 'ifc4' | 'ifc4x3' | 'ifc5';
21
22
  /** A single STEP entity reduced to what the CRDT needs. */
@@ -32,12 +33,16 @@ export interface StepSeedEntity {
32
33
  attributes?: Record<string, unknown>;
33
34
  /**
34
35
  * Spatial containment + decomposition as IFCX children: a unique key → the
35
- * child entity's path (`/<guid>`). Lets the recipient rebuild the spatial
36
- * tree (Project Site Building Storey → elements).
36
+ * child entity's path (`slotPath(slot, guid)`, i.e. `/<guid>` in a
37
+ * single-model room). Lets the recipient rebuild the spatial tree
38
+ * (Project → Site → Building → Storey → elements). The adapter that builds
39
+ * these must use the same slot the seeder is given (#4444).
37
40
  */
38
41
  children?: Record<string, string>;
39
42
  /** Property sets: psetName → propName → value. */
40
43
  psets?: Record<string, Record<string, PropertyValue>>;
44
+ /** Quantity sets: qsetName → quantityName → numeric value. */
45
+ quantities?: Record<string, Record<string, number>>;
41
46
  }
42
47
  /** Minimal model view the seeder consumes (the viewer adapts its store to this). */
43
48
  export interface StepSeedSource {
@@ -58,6 +63,12 @@ export interface SeedFromStepOptions {
58
63
  * the entity `schemaVersion`. Defaults to {@link defaultSchemaVersion}.
59
64
  */
60
65
  schemaVersionFor?: (schema: string | undefined) => CollabSchemaVersion;
66
+ /**
67
+ * The model slot the entities belong to (#4444). Entity paths become
68
+ * `slotPath(slot, guid)`. Defaults to the implicit legacy slot, i.e. the
69
+ * unqualified `/<guid>` scheme of a single-model room.
70
+ */
71
+ slot?: ModelSlotRef;
61
72
  }
62
73
  export interface SeedFromStepResult {
63
74
  /** Number of entities seeded (those with a GUID). */
@@ -65,7 +76,11 @@ export interface SeedFromStepResult {
65
76
  /** Number of source entities skipped (no GUID). */
66
77
  skipped: number;
67
78
  }
68
- /** Path key for a STEP entity. Exported so the viewer's `resolveEntity` matches. */
79
+ /**
80
+ * Path key for a STEP entity in a single-model (legacy-slot) room. Exported
81
+ * so the viewer's `resolveEntity` matches; slot-qualified rooms use
82
+ * `slotPath(slot, guid)` from `doc/model-slot.ts`.
83
+ */
69
84
  export declare function guidToPath(guid: string): string;
70
85
  /**
71
86
  * Seed `doc` from a legacy STEP model. Idempotent: re-seeding the same source
@@ -1 +1 @@
1
- {"version":3,"file":"from-step.d.ts","sourceRoot":"","sources":["../../src/snapshot/from-step.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC;AAG9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,uEAAuE;AACvE,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAkB7D,2DAA2D;AAC3D,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;CACvD;AAED,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IACnC,mEAAmE;IACnE,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,mBAAmB,CAAC;CACxE;AAED,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,CAAC,CAAC,GAAG,EACV,MAAM,EAAE,cAAc,EACtB,IAAI,GAAE,mBAAwB,GAC7B,kBAAkB,CAgDpB"}
1
+ {"version":3,"file":"from-step.d.ts","sourceRoot":"","sources":["../../src/snapshot/from-step.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC;AAG9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAA6B,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpF,uEAAuE;AACvE,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAkB7D,2DAA2D;AAC3D,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IACtD,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrD;AAED,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IACnC,mEAAmE;IACnE,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,mBAAmB,CAAC;IACvE;;;;OAIG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,CAAC,CAAC,GAAG,EACV,MAAM,EAAE,cAAc,EACtB,IAAI,GAAE,mBAAwB,GAC7B,kBAAkB,CA0DpB"}
@@ -1,8 +1,9 @@
1
1
  /* This Source Code Form is subject to the terms of the Mozilla Public
2
2
  * License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
- import { createEntity, setPropertyValue } from '../doc/entity.js';
4
+ import { createEntity, setPropertyValue, setQuantityValue } from '../doc/entity.js';
5
5
  import { SEED_ORIGIN, assertSchemaInvariants, metaMap } from '../doc/schema.js';
6
+ import { legacyModelSlot, slotPath } from '../doc/model-slot.js';
6
7
  /**
7
8
  * Map a raw STEP schema string to the CRDT's supported set. Legacy IFC2X3 and
8
9
  * IFC4 both map to `ifc4` (the spec's editing baseline); IFC4X3 → `ifc4x3`;
@@ -18,9 +19,13 @@ function defaultSchemaVersion(schema) {
18
19
  return 'ifc4';
19
20
  }
20
21
  }
21
- /** Path key for a STEP entity. Exported so the viewer's `resolveEntity` matches. */
22
+ /**
23
+ * Path key for a STEP entity in a single-model (legacy-slot) room. Exported
24
+ * so the viewer's `resolveEntity` matches; slot-qualified rooms use
25
+ * `slotPath(slot, guid)` from `doc/model-slot.ts`.
26
+ */
22
27
  export function guidToPath(guid) {
23
- return `/${guid}`;
28
+ return slotPath(legacyModelSlot(), guid);
24
29
  }
25
30
  /**
26
31
  * Seed `doc` from a legacy STEP model. Idempotent: re-seeding the same source
@@ -31,18 +36,21 @@ export function seedFromStep(doc, source, opts = {}) {
31
36
  assertSchemaInvariants(doc);
32
37
  const schemaVersionFor = opts.schemaVersionFor ?? defaultSchemaVersion;
33
38
  const schemaVersion = schemaVersionFor(source.header?.schema);
39
+ const slot = opts.slot ?? legacyModelSlot();
34
40
  let seeded = 0;
35
41
  let skipped = 0;
36
42
  doc.transact(() => {
37
43
  const meta = metaMap(doc);
38
- if (source.header)
44
+ // One file-level header per room: the first seeded model's. A slot-aware
45
+ // room records per-model headers on its slot records instead.
46
+ if (source.header && !meta.has('stepHeader'))
39
47
  meta.set('stepHeader', source.header);
40
48
  for (const ent of source.entities) {
41
49
  if (!ent.guid) {
42
50
  skipped++;
43
51
  continue;
44
52
  }
45
- const path = guidToPath(ent.guid);
53
+ const path = slotPath(slot, ent.guid);
46
54
  createEntity(doc, path, {
47
55
  ifcClass: ent.ifcClass,
48
56
  attributes: ent.attributes ?? {},
@@ -67,6 +75,13 @@ export function seedFromStep(doc, source, opts = {}) {
67
75
  }
68
76
  }
69
77
  }
78
+ if (ent.quantities) {
79
+ for (const [qsetName, quantities] of Object.entries(ent.quantities)) {
80
+ for (const [quantityName, value] of Object.entries(quantities)) {
81
+ setQuantityValue(doc, path, qsetName, quantityName, value);
82
+ }
83
+ }
84
+ }
70
85
  seeded++;
71
86
  }
72
87
  }, opts.origin ?? SEED_ORIGIN);
@@ -1 +1 @@
1
- {"version":3,"file":"from-step.js","sourceRoot":"","sources":["../../src/snapshot/from-step.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAoB/D,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAMhF;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,MAA0B;IACtD,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACrC,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAqDD,oFAAoF;AACpF,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,IAAI,EAAE,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAU,EACV,MAAsB,EACtB,OAA4B,EAAE;IAE9B,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,oBAAoB,CAAC;IACvE,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9D,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;QAChB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,MAAM,CAAC,MAAM;YAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAEzD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;YACD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE;gBACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,EAAE;gBAChC,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,aAAa;gBACb,6DAA6D;gBAC7D,4DAA4D;gBAC5D,6DAA6D;gBAC7D,gEAAgE;gBAChE,sDAAsD;gBACtD,qBAAqB;gBACrB,cAAc,EAAE,KAAK;gBACrB,IAAI,EAAE;oBACJ,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,aAAa;iBACd;aACF,CAAC,CAAC;YAEH,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC1D,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;wBACtD,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;oBACzD,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,WAAW,CAAC,CAAC;IAE/B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"from-step.js","sourceRoot":"","sources":["../../src/snapshot/from-step.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * How an IFCX file is re-homed under a model slot (#4444): its nodes and its
3
+ * file-level metadata.
4
+ *
5
+ * Nodes: `qualifyNode` prefixes a node's path and every path-valued
6
+ * `children` / `inherits` reference with the slot (`/<slotId>` + the file's
7
+ * own path), so the file's path scheme survives verbatim underneath it.
8
+ *
9
+ * Metadata: a room used to hold one file, so `seedFromIfcx` stashed its
10
+ * header / imports / schemas under the room-wide `meta.header` /
11
+ * `meta.imports` / `meta.schemas` and the snapshot re-emitted them. With one
12
+ * file per slot that is a race: the second IFC5 model's seed overwrote the
13
+ * first's, and a per-slot snapshot handed slot m0's recipient slot m1's
14
+ * schemas. Each real slot therefore records its file metadata under its own
15
+ * key, `ifcxFile:<slotId>`; the implicit legacy slot (and a slot-less seed)
16
+ * keeps the room-wide keys so rooms shared before slots existed read exactly
17
+ * as they did. A whole-room snapshot of a multi-slot room merges: imports
18
+ * concatenated in slot order, schemas spread in slot order (a later slot's
19
+ * same-named schema wins — two copies of one file carry identical
20
+ * definitions), header from the first slot that recorded one.
21
+ */
22
+ import type * as Y from 'yjs';
23
+ import type { IfcxFile, IfcxHeader, IfcxNode, ImportNode } from '@ifc-lite/ifcx';
24
+ import { type ModelSlotRef } from '../doc/model-slot.js';
25
+ /**
26
+ * Re-home a node under a slot: its own path plus every path-valued
27
+ * `children` / `inherits` reference (a `null` removal opinion stays `null`).
28
+ *
29
+ * Attribute values are opaque here: the runtime does not know which
30
+ * attributes of a custom schema are path-typed, so an attribute whose VALUE
31
+ * names another node's path is stored verbatim and dangles on a recipient
32
+ * (it points at the unqualified path, which no slot holds). `children` and
33
+ * `inherits` are the only references IFCX composition itself resolves, and
34
+ * the only ones the viewer's ingest follows. Geometry carriers are
35
+ * content-hash keyed and slot-independent.
36
+ */
37
+ export declare function qualifyNode(slot: ModelSlotRef, node: IfcxNode): IfcxNode;
38
+ /** The file-level fields a snapshot re-emits. */
39
+ export interface IfcxFileMeta {
40
+ header?: IfcxHeader;
41
+ imports?: ImportNode[];
42
+ schemas?: Record<string, unknown>;
43
+ }
44
+ /** Record `file`'s header / imports / schemas for `slot` (room-wide when no real slot). */
45
+ export declare function writeIfcxFileMeta(meta: Y.Map<unknown>, slot: ModelSlotRef | undefined, file: IfcxFile): void;
46
+ /**
47
+ * The file metadata a snapshot of `slot` re-emits; of the whole room when no
48
+ * slot is named. Falls back to the room-wide keys where nothing per-slot was
49
+ * recorded (a legacy room, or a slot seeded from STEP, which has no IFCX file).
50
+ */
51
+ export declare function readIfcxFileMeta(meta: Y.Map<unknown>, slot: ModelSlotRef | undefined): IfcxFileMeta;
52
+ //# sourceMappingURL=slot-ifcx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slot-ifcx.d.ts","sourceRoot":"","sources":["../../src/snapshot/slot-ifcx.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC;AAC9B,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE5E;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAiBxE;AAED,iDAAiD;AACjD,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAsBD,2FAA2F;AAC3F,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,GAAG,SAAS,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAY5G;AAYD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,GAAG,SAAS,GAAG,YAAY,CAkBnG"}
@@ -0,0 +1,114 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ import { prefixPathForSlot } from '../doc/model-slot.js';
5
+ /**
6
+ * Re-home a node under a slot: its own path plus every path-valued
7
+ * `children` / `inherits` reference (a `null` removal opinion stays `null`).
8
+ *
9
+ * Attribute values are opaque here: the runtime does not know which
10
+ * attributes of a custom schema are path-typed, so an attribute whose VALUE
11
+ * names another node's path is stored verbatim and dangles on a recipient
12
+ * (it points at the unqualified path, which no slot holds). `children` and
13
+ * `inherits` are the only references IFCX composition itself resolves, and
14
+ * the only ones the viewer's ingest follows. Geometry carriers are
15
+ * content-hash keyed and slot-independent.
16
+ */
17
+ export function qualifyNode(slot, node) {
18
+ const raw = node;
19
+ if (!raw.path)
20
+ return node;
21
+ const qualifyRefs = (refs) => {
22
+ if (!refs)
23
+ return refs;
24
+ const out = {};
25
+ for (const [role, target] of Object.entries(refs)) {
26
+ out[role] = typeof target === 'string' ? prefixPathForSlot(slot, target) : target;
27
+ }
28
+ return out;
29
+ };
30
+ return {
31
+ ...node,
32
+ path: prefixPathForSlot(slot, raw.path),
33
+ children: qualifyRefs(raw.children),
34
+ inherits: qualifyRefs(raw.inherits),
35
+ };
36
+ }
37
+ const SLOT_FILE_META_PREFIX = 'ifcxFile:';
38
+ function slotFileMetaKey(slot) {
39
+ return `${SLOT_FILE_META_PREFIX}${slot.slotId}`;
40
+ }
41
+ function isRealSlot(slot) {
42
+ return slot !== undefined && slot.pathPrefix !== '';
43
+ }
44
+ function readRecord(raw) {
45
+ if (!raw || typeof raw !== 'object')
46
+ return {};
47
+ const r = raw;
48
+ const out = {};
49
+ if (r.header && typeof r.header === 'object')
50
+ out.header = r.header;
51
+ if (Array.isArray(r.imports))
52
+ out.imports = r.imports;
53
+ if (r.schemas && typeof r.schemas === 'object')
54
+ out.schemas = r.schemas;
55
+ return out;
56
+ }
57
+ /** Record `file`'s header / imports / schemas for `slot` (room-wide when no real slot). */
58
+ export function writeIfcxFileMeta(meta, slot, file) {
59
+ if (!isRealSlot(slot)) {
60
+ if (file.header)
61
+ meta.set('header', file.header);
62
+ if (file.imports)
63
+ meta.set('imports', file.imports);
64
+ if (file.schemas)
65
+ meta.set('schemas', file.schemas);
66
+ return;
67
+ }
68
+ const record = {};
69
+ if (file.header)
70
+ record.header = file.header;
71
+ if (file.imports)
72
+ record.imports = file.imports;
73
+ if (file.schemas)
74
+ record.schemas = file.schemas;
75
+ meta.set(slotFileMetaKey(slot), record);
76
+ }
77
+ /** Slot ids that recorded file metadata, in slot order (`m0`, `m1`, …). */
78
+ function recordedSlotIds(meta) {
79
+ const ids = [];
80
+ for (const key of meta.keys()) {
81
+ if (key.startsWith(SLOT_FILE_META_PREFIX))
82
+ ids.push(key.slice(SLOT_FILE_META_PREFIX.length));
83
+ }
84
+ const index = (id) => Number.parseInt(id.slice(1), 10);
85
+ return ids.sort((a, b) => index(a) - index(b) || a.localeCompare(b));
86
+ }
87
+ /**
88
+ * The file metadata a snapshot of `slot` re-emits; of the whole room when no
89
+ * slot is named. Falls back to the room-wide keys where nothing per-slot was
90
+ * recorded (a legacy room, or a slot seeded from STEP, which has no IFCX file).
91
+ */
92
+ export function readIfcxFileMeta(meta, slot) {
93
+ const roomWide = readRecord({
94
+ header: meta.get('header'),
95
+ imports: meta.get('imports'),
96
+ schemas: meta.get('schemas'),
97
+ });
98
+ if (isRealSlot(slot)) {
99
+ const own = readRecord(meta.get(slotFileMetaKey(slot)));
100
+ return { ...roomWide, ...own };
101
+ }
102
+ const merged = { ...roomWide };
103
+ for (const slotId of recordedSlotIds(meta)) {
104
+ const own = readRecord(meta.get(`${SLOT_FILE_META_PREFIX}${slotId}`));
105
+ if (own.header && !merged.header)
106
+ merged.header = own.header;
107
+ if (own.imports)
108
+ merged.imports = [...(merged.imports ?? []), ...own.imports];
109
+ if (own.schemas)
110
+ merged.schemas = { ...merged.schemas, ...own.schemas };
111
+ }
112
+ return merged;
113
+ }
114
+ //# sourceMappingURL=slot-ifcx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slot-ifcx.js","sourceRoot":"","sources":["../../src/snapshot/slot-ifcx.ts"],"names":[],"mappings":"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"}
@@ -146,9 +146,9 @@ export function flattenStructuredBranches(json, options = {}) {
146
146
  * raw values, foreign data under colliding namespaces).
147
147
  */
148
148
  export function inflateStructuredAttributes(attributes) {
149
- const flat = {};
150
- const psets = {};
151
- const quantities = {};
149
+ const flat = Object.create(null);
150
+ const psets = Object.create(null);
151
+ const quantities = Object.create(null);
152
152
  let classifications = [];
153
153
  let materials = [];
154
154
  let geometryRefs = [];
@@ -236,16 +236,16 @@ export function inflateStructuredAttributes(attributes) {
236
236
  if (QTO_SET_RE.test(setName)) {
237
237
  const candidate = isPropertyValueShaped(value) ? value.value : value;
238
238
  if (typeof candidate === 'number' && Number.isFinite(candidate)) {
239
- (quantities[setName] ??= {})[name] = candidate;
239
+ (quantities[setName] ??= Object.create(null))[name] = candidate;
240
240
  continue;
241
241
  }
242
242
  }
243
243
  if (isPropertyValueShaped(value)) {
244
- (psets[setName] ??= {})[name] = { ...value };
244
+ (psets[setName] ??= Object.create(null))[name] = { ...value };
245
245
  continue;
246
246
  }
247
247
  if (typeof value === 'number' && Number.isFinite(value) && !PSET_SET_RE.test(setName)) {
248
- (quantities[setName] ??= {})[name] = value;
248
+ (quantities[setName] ??= Object.create(null))[name] = value;
249
249
  continue;
250
250
  }
251
251
  }
@@ -1 +1 @@
1
- {"version":3,"file":"structured-attrs.js","sourceRoot":"","sources":["../../src/snapshot/structured-attrs.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClG,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EACL,YAAY,EACZ,WAAW,GAKZ,MAAM,kBAAkB,CAAC;AAE1B,wEAAwE;AACxE,mEAAmE;AACnE,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B;;;;;GAKG;AACH,MAAM,WAAW,GAAG,QAAQ,CAAC;AAE7B,+EAA+E;AAC/E,MAAM,UAAU,GAAG,OAAO,CAAC;AAE3B;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAc;IAC/C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,OAAO,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC9E,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAc;IAChD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,OAAO,OAAQ,KAAiC,CAAC,UAAU,KAAK,QAAQ,CAAC;AAC3E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,WAAW;IACX,WAAW;IACX,cAAc;IACd,cAAc;IACd,cAAc;CACN,CAAC;AAoCX,sDAAsD;AACtD,MAAM,UAAU,sBAAsB,CAAC,OAAe,EAAE,IAAY;IAClE,OAAO,GAAG,eAAe,GAAG,OAAO,KAAK,IAAI,EAAE,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,IAQ0B,EAC1B,UAA0B,EAAE;IAE5B,MAAM,GAAG,GAA4B,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAE5D,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1D,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,GAAG,CAAC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;QAChE,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9D,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACpD,GAAG,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC;QACxD,CAAC;IACH,CAAC;IACD,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,GAAG,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,oEAAoE;QACpE,sEAAsE;QACtE,8CAA8C;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC;YACnD,OAAO,MAAM,CAAC,CAAC,CAAE,EAAE,MAAM,EAAE,GAAG,MAAM,EAAgC,CAAC,CAAC,CAAC,MAAM,CAAC;QAChF,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC/E,CAAC;IAED,qEAAqE;IACrE,qEAAqE;IACrE,+DAA+D;IAC/D,0CAA0C;IAC1C,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,KAAK,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS;YAAE,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACnD,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;IACtC,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAYD;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,UAAmC;IAEnC,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,MAAM,KAAK,GAAkD,EAAE,CAAC;IAChE,MAAM,UAAU,GAA2C,EAAE,CAAC;IAC9D,IAAI,eAAe,GAAwB,EAAE,CAAC;IAC9C,IAAI,SAAS,GAAyB,EAAE,CAAC;IACzC,IAAI,YAAY,GAAa,EAAE,CAAC;IAChC,MAAM,gBAAgB,GAAyB,EAAE,CAAC;IAClD,MAAM,IAAI,GAA2B,EAAE,CAAC;IAExC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACtD,IAAI,GAAG,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC;YAC9B,mEAAmE;YACnE,mEAAmE;YACnE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzE,KAAK,MAAM,OAAO,IAAI,oBAAoB,EAAE,CAAC;oBAC3C,MAAM,SAAS,GAAI,KAAiC,CAAC,OAAO,CAAC,CAAC;oBAC9D,0DAA0D;oBAC1D,8DAA8D;oBAC9D,4DAA4D;oBAC5D,2DAA2D;oBAC3D,IAAI,OAAO,SAAS,KAAK,QAAQ;wBAAE,IAAI,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;gBAC/D,CAAC;gBACD,SAAS;YACX,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAClB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,YAAY,CAAC,eAAe,EAAE,CAAC;YACzC,+DAA+D;YAC/D,4DAA4D;YAC5D,gEAAgE;YAChE,2DAA2D;YAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAE,CAAC;gBACvF,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;gBACnD,SAAS;YACX,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAClB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,YAAY,CAAC,SAAS,EAAE,CAAC;YACnC,uDAAuD;YACvD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC;gBACxF,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC7C,SAAS;YACX,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAClB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,YAAY,CAAC,YAAY,EAAE,CAAC;YACtC,qEAAqE;YACrE,oEAAoE;YACpE,mBAAmB;YACnB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvD,MAAM,GAAG,GAAa,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAyB,EAAE,CAAC;YAC1C,IAAI,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YACpC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC;qBAAM,IAAI,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC7C,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACN,UAAU,GAAG,KAAK,CAAC;oBACnB,MAAM;gBACR,CAAC;YACH,CAAC;YACD,IAAI,UAAU,EAAE,CAAC;gBACf,YAAY,GAAG,GAAG,CAAC;gBACnB,gBAAgB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;gBACnC,SAAS;YACX,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAClB,SAAS;QACX,CAAC;QAED,CAAC;YACC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;gBAC9B,6DAA6D;gBAC7D,uDAAuD;gBACvD,+DAA+D;gBAC/D,+DAA+D;gBAC/D,iEAAiE;gBACjE,yDAAyD;gBACzD,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC7B,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;oBACrE,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;wBAChE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;wBAC/C,SAAS;oBACX,CAAC;gBACH,CAAC;gBACD,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;oBAC7C,SAAS;gBACX,CAAC;gBACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBACtF,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;oBAC3C,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,OAAO;QACL,UAAU,EAAE,IAAI;QAChB,KAAK;QACL,UAAU;QACV,eAAe;QACf,SAAS;QACT,YAAY;QACZ,iBAAiB,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS;QAClF,gBAAgB;QAChB,IAAI;KACL,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAc;IAChD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,OAAO,OAAQ,KAAiC,CAAC,MAAM,KAAK,QAAQ,CAAC;AACvE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,GAAU;IAEV,OAAO,CAAC,MAAM,EAAE,EAAE;QAChB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAA+B,CAAC;QACzE,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,MAAM,MAAM,GAAuC,EAAE,CAAC;QACtD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACjD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACvD,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC7D,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,MAAM,YAAY,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,KAAK,GAA4B,EAAE,CAAC;YAC1C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE;gBAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACpD,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;QACxB,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,IAAI,GAAG,IAAgB,CAAC;QACxD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"structured-attrs.js","sourceRoot":"","sources":["../../src/snapshot/structured-attrs.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@
11
11
  */
12
12
  import type { IfcxFile } from '@ifc-lite/ifcx';
13
13
  import * as Y from 'yjs';
14
+ import { type ModelSlotRef } from '../doc/model-slot.js';
14
15
  export interface SnapshotOptions {
15
16
  author?: string;
16
17
  /** Override timestamp; defaults to Date.now(). */
@@ -23,6 +24,14 @@ export interface SnapshotOptions {
23
24
  ifcxVersion?: string;
24
25
  /** Stable child-key ordering (defaults to insertion order from the Y.Map). */
25
26
  sortChildren?: boolean;
27
+ /**
28
+ * Emit only the entities of one model slot (#4444), paths kept as stored
29
+ * (slot-qualified), with THAT slot's file header / imports / schemas. A
30
+ * recipient reconstructs one viewer model per slot from one snapshot per
31
+ * slot. Omitted: every entity in the room, file metadata merged across
32
+ * slots (see slot-ifcx.ts).
33
+ */
34
+ slot?: ModelSlotRef;
26
35
  }
27
36
  export declare function snapshotToIfcx(doc: Y.Doc, options?: SnapshotOptions): IfcxFile;
28
37
  /** Serialize an IfcxFile to a string. */
@@ -1 +1 @@
1
- {"version":3,"file":"to-ifcx.d.ts","sourceRoot":"","sources":["../../src/snapshot/to-ifcx.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAoC,MAAM,gBAAgB,CAAC;AACjF,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAMzB,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,GAAE,eAAoB,GAAG,QAAQ,CA+DlF;AAED,yCAAyC;AACzC,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,UAAO,GAAG,MAAM,CAEnE"}
1
+ {"version":3,"file":"to-ifcx.d.ts","sourceRoot":"","sources":["../../src/snapshot/to-ifcx.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAwB,MAAM,gBAAgB,CAAC;AACrE,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIrE,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,GAAE,eAAoB,GAAG,QAAQ,CA+DlF;AAED,yCAAyC;AACzC,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,UAAO,GAAG,MAAM,CAEnE"}
@@ -4,12 +4,14 @@
4
4
  import { entityToJSON, iterEntities } from '../doc/entity.js';
5
5
  import { metaMap } from '../doc/schema.js';
6
6
  import { flattenStructuredBranches, geometryRecordLookup } from './structured-attrs.js';
7
+ import { pathInSlot } from '../doc/model-slot.js';
8
+ import { readIfcxFileMeta } from './slot-ifcx.js';
7
9
  import { IFCX_VERSION } from '@ifc-lite/ifcx';
8
10
  export function snapshotToIfcx(doc, options = {}) {
9
- const meta = metaMap(doc);
10
- const seededHeader = meta.get('header') ?? undefined;
11
- const seededImports = meta.get('imports') ?? [];
12
- const seededSchemas = meta.get('schemas') ?? {};
11
+ const fileMeta = readIfcxFileMeta(metaMap(doc), options.slot);
12
+ const seededHeader = fileMeta.header;
13
+ const seededImports = fileMeta.imports ?? [];
14
+ const seededSchemas = fileMeta.schemas ?? {};
13
15
  const header = {
14
16
  id: options.id ?? seededHeader?.id ?? 'ifc-lite/collab/snapshot',
15
17
  ifcxVersion: options.ifcxVersion ?? seededHeader?.ifcxVersion ?? IFCX_VERSION,
@@ -20,6 +22,8 @@ export function snapshotToIfcx(doc, options = {}) {
20
22
  const data = [];
21
23
  const geometryRecordFor = geometryRecordLookup(doc);
22
24
  for (const [path, entity] of iterEntities(doc)) {
25
+ if (options.slot && !pathInSlot(options.slot, path))
26
+ continue;
23
27
  const json = entityToJSON(entity);
24
28
  const node = { path };
25
29
  const childrenKeys = options.sortChildren
@@ -1 +1 @@
1
- {"version":3,"file":"to-ifcx.js","sourceRoot":"","sources":["../../src/snapshot/to-ifcx.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"to-ifcx.js","sourceRoot":"","sources":["../../src/snapshot/to-ifcx.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/collab",
3
- "version": "0.6.1",
3
+ "version": "0.8.0",
4
4
  "description": "Real-time collaborative BIM via CRDT on IFCX",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -39,9 +39,9 @@
39
39
  "y-protocols": "^1.0.6",
40
40
  "y-websocket": "^3.1.0",
41
41
  "yjs": "^13.6.32",
42
- "@ifc-lite/data": "^4.0.0",
43
- "@ifc-lite/ifcx": "^4.0.0",
44
- "@ifc-lite/mutations": "^2.0.0"
42
+ "@ifc-lite/mutations": "^2.3.0",
43
+ "@ifc-lite/ifcx": "^4.1.1",
44
+ "@ifc-lite/data": "^4.2.1"
45
45
  },
46
46
  "devDependencies": {
47
47
  "typescript": "^6.0.3",