@ifc-lite/mutations 1.14.4 → 1.15.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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @ifc-lite/mutations
2
2
 
3
- Property editing and mutation tracking for IFClite. Edit IFC properties in-place with full change tracking, undo/redo, and export.
3
+ Property editing and mutation tracking for IFClite. Edit IFC properties, quantities, and attributes in-place via an overlay pattern — original data stays read-only, changes export back to STEP. Supports undo / redo, change-set sharing, bulk updates, and CSV import.
4
4
 
5
5
  ## Installation
6
6
 
@@ -8,19 +8,151 @@ Property editing and mutation tracking for IFClite. Edit IFC properties in-place
8
8
  npm install @ifc-lite/mutations
9
9
  ```
10
10
 
11
- ## Quick Start
11
+ ## Edit a property
12
+
13
+ ### Property edits
12
14
 
13
15
  ```typescript
14
16
  import { MutablePropertyView } from '@ifc-lite/mutations';
17
+ import { PropertyValueType } from '@ifc-lite/data';
18
+
19
+ const view = new MutablePropertyView(store.properties, 'arch-model');
20
+
21
+ const mutation = view.setProperty(
22
+ wallExpressId,
23
+ 'Pset_WallCommon',
24
+ 'FireRating',
25
+ 'REI 120',
26
+ PropertyValueType.Label,
27
+ );
28
+
29
+ console.log(`${mutation.oldValue} → ${mutation.newValue}`);
30
+
31
+ // Reads return the new value transparently
32
+ view.getPropertyValue(wallExpressId, 'Pset_WallCommon', 'FireRating'); // 'REI 120'
33
+ ```
34
+
35
+ ### Store-level edits
15
36
 
16
- // Create a mutable view (params: PropertyTable | null, modelId)
17
- const view = new MutablePropertyView(propertyTable, 'my-model');
18
- view.setProperty(entityId, 'Pset_WallCommon', 'FireRating', 'REI 120');
37
+ For raw STEP edits adding entities, deleting them, overriding positional
38
+ arguments on entities without symbolic attribute names — pair the view with
39
+ a `StoreEditor`:
19
40
 
20
- // Get all changes
41
+ ```typescript
42
+ import { MutablePropertyView, StoreEditor } from '@ifc-lite/mutations';
43
+
44
+ const view = new MutablePropertyView(propertyTable, modelId);
45
+ const editor = new StoreEditor(dataStore, view);
46
+
47
+ // Add a fresh entity (e.g. an IfcRectangleProfileDef)
48
+ const profile = editor.addEntity('IfcRectangleProfileDef', [
49
+ '.AREA.', null, '#34', 0.6, 0.4,
50
+ ]);
51
+
52
+ // Override a single positional STEP arg by index (zero-based)
53
+ editor.setPositionalAttribute(profile.expressId, 3, 0.7); // XDim → 0.7
54
+
55
+ // Tombstone an entity
56
+ editor.removeEntity(unwantedExpressId);
57
+ ```
58
+
59
+ Edits accumulate in the same overlay used by `setProperty` / `setAttribute`
60
+ and materialise the next time you call
61
+ `StepExporter.export({ applyMutations: true })`.
62
+
63
+ ## Mutation history (for undo / export)
64
+
65
+ ```typescript
21
66
  const mutations = view.getMutations();
67
+ // [{ id, type: 'UPDATE_PROPERTY', entityId, psetName, propName, oldValue, newValue, ... }]
68
+
69
+ console.log(view.hasChanges(wallExpressId)); // true
70
+ console.log(view.getModifiedEntityCount()); // 1
71
+ ```
72
+
73
+ Reset back to the source data:
74
+
75
+ ```typescript
76
+ view.clear();
77
+ ```
78
+
79
+ ## Bulk updates
80
+
81
+ ```typescript
82
+ import { BulkQueryEngine } from '@ifc-lite/mutations';
83
+ import { PropertyValueType } from '@ifc-lite/data';
84
+
85
+ const engine = new BulkQueryEngine(store.entities, view);
86
+
87
+ const result = engine.execute({
88
+ select: {
89
+ entityTypes: [/* IfcWall enum value */],
90
+ propertyFilters: [{
91
+ psetName: 'Pset_WallCommon',
92
+ propName: 'IsExternal',
93
+ operator: '=',
94
+ value: true,
95
+ }],
96
+ },
97
+ action: {
98
+ type: 'SET_PROPERTY',
99
+ psetName: 'Pset_WallCommon',
100
+ propName: 'ThermalTransmittance',
101
+ value: 0.18,
102
+ valueType: PropertyValueType.Real,
103
+ },
104
+ });
105
+
106
+ console.log(`Updated ${result.affectedEntityCount} walls`);
22
107
  ```
23
108
 
109
+ Preview without applying:
110
+
111
+ ```typescript
112
+ const preview = engine.preview(query);
113
+ console.log(`Would update ${preview.matchedCount} entities`);
114
+ ```
115
+
116
+ ## CSV import
117
+
118
+ Map a spreadsheet column to a pset/property in one call:
119
+
120
+ ```typescript
121
+ import { CsvConnector } from '@ifc-lite/mutations';
122
+ import { PropertyValueType } from '@ifc-lite/data';
123
+
124
+ const connector = new CsvConnector(store.entities, view);
125
+
126
+ const stats = connector.import(csvText, {
127
+ matchStrategy: { type: 'globalId', column: 'GlobalId' },
128
+ propertyMappings: [
129
+ { sourceColumn: 'Fire Rating', targetPset: 'Pset_WallCommon', targetProperty: 'FireRating', valueType: PropertyValueType.String },
130
+ { sourceColumn: 'U-Value', targetPset: 'Pset_WallCommon', targetProperty: 'ThermalTransmittance', valueType: PropertyValueType.Real },
131
+ ],
132
+ });
133
+
134
+ console.log(`Matched ${stats.matchedRows} / ${stats.totalRows} rows, applied ${stats.mutationsCreated} mutations`);
135
+ ```
136
+
137
+ ## Change sets — group + share
138
+
139
+ ```typescript
140
+ import { ChangeSetManager } from '@ifc-lite/mutations';
141
+
142
+ const manager = new ChangeSetManager();
143
+ const changeSet = manager.createChangeSet('Fire safety pass — round 2');
144
+
145
+ manager.addMutation(mutation1);
146
+ manager.addMutation(mutation2);
147
+
148
+ const json = manager.exportChangeSet(changeSet.id);
149
+ // → ship to a teammate or persist to disk
150
+
151
+ const restored = manager.importChangeSet(json);
152
+ ```
153
+
154
+ Pair this with `exportToStep(store, { applyMutations: true })` from `@ifc-lite/export` to write a real `.ifc` file with the changes baked in.
155
+
24
156
  ## Features
25
157
 
26
158
  - Mutation overlay on read-only IFC data
@@ -28,11 +160,13 @@ const mutations = view.getMutations();
28
160
  - Change sets for grouping related mutations
29
161
  - Bulk query engine for updating many entities
30
162
  - CSV import for spreadsheet-based updates
163
+ - **Store-level edits**: `StoreEditor` for `addEntity` / `removeEntity` /
164
+ `setPositionalAttribute` over a parsed `IfcDataStore`
31
165
  - Export modified data
32
166
 
33
167
  ## API
34
168
 
35
- See the [Property Editing Guide](../../docs/guide/mutations.md) and [API Reference](../../docs/api/typescript.md#ifc-litemutations).
169
+ See the [Property Editing Guide](https://louistrue.github.io/ifc-lite/guide/mutations/) and [API Reference](https://louistrue.github.io/ifc-lite/api/typescript/#ifc-litemutations).
36
170
 
37
171
  ## License
38
172
 
package/dist/index.d.ts CHANGED
@@ -3,6 +3,7 @@
3
3
  */
4
4
  export * from './types.js';
5
5
  export { MutablePropertyView, type PropertyExtractor, type QuantityExtractor } from './mutable-property-view.js';
6
+ export { StoreEditor, OVERLAY_BYTE_OFFSET, setEntityTypeNormalizer, type EntityTypeNormalizer, } from './store-editor.js';
6
7
  export { ChangeSetManager } from './change-set.js';
7
8
  export { BulkQueryEngine, type SelectionCriteria, type BulkAction, type BulkQuery, type BulkQueryPreview, type BulkQueryResult, type PropertyFilter, type FilterOperator, } from './bulk-query-engine.js';
8
9
  export { CsvConnector, type CsvRow, type MatchStrategy, type PropertyMapping, type DataMapping, type MatchResult, type ImportStats, type ImportProgress, type CsvParseOptions, } from './csv-connector.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACjH,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,YAAY,EACZ,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACjH,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,YAAY,EACZ,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -6,6 +6,7 @@
6
6
  */
7
7
  export * from './types.js';
8
8
  export { MutablePropertyView } from './mutable-property-view.js';
9
+ export { StoreEditor, OVERLAY_BYTE_OFFSET, setEntityTypeNormalizer, } from './store-editor.js';
9
10
  export { ChangeSetManager } from './change-set.js';
10
11
  export { BulkQueryEngine, } from './bulk-query-engine.js';
11
12
  export { CsvConnector, } from './csv-connector.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAkD,MAAM,4BAA4B,CAAC;AACjH,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,eAAe,GAQhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,YAAY,GASb,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAkD,MAAM,4BAA4B,CAAC;AACjH,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,uBAAuB,GAExB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,eAAe,GAQhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,YAAY,GASb,MAAM,oBAAoB,CAAC"}
@@ -9,7 +9,7 @@
9
9
  */
10
10
  import type { PropertyTable, PropertySet, QuantitySet } from '@ifc-lite/data';
11
11
  import { PropertyValueType, QuantityType } from '@ifc-lite/data';
12
- import type { PropertyValue, Mutation } from './types.js';
12
+ import type { IfcAttributeValue, PropertyValue, Mutation, NewEntity } from './types.js';
13
13
  /**
14
14
  * Function type for on-demand property extraction
15
15
  * Allows globalId to be optional to match extractPropertiesOnDemand return type
@@ -38,9 +38,39 @@ export declare class MutablePropertyView {
38
38
  private newPsets;
39
39
  private newQsets;
40
40
  private attributeMutations;
41
+ private positionalAttrMutations;
42
+ private newEntities;
43
+ private tombstones;
44
+ /**
45
+ * Overlay-entity → source-entity aliases for property/quantity reads.
46
+ *
47
+ * When the viewer duplicates an existing entity, the new entity has
48
+ * no row in the parsed property table — `getBasePropertiesForEntity`
49
+ * would return `[]` and the property panel would show "No property
50
+ * sets". Aliasing redirects the BASE read to the source entity so
51
+ * the duplicate inherits its psets / qsets visually, while overlay
52
+ * mutations (overrides, creates, deletes) stay scoped to the
53
+ * overlay-entity's own id — so editing a property on the duplicate
54
+ * doesn't bleed into the source.
55
+ *
56
+ * Aliases follow at most one hop (no chains). They never affect
57
+ * STEP export — the export overlay emits the duplicate exactly as
58
+ * the StoreEditor recorded it, with whatever new IfcRel*ByProperties
59
+ * the caller chose to add.
60
+ */
61
+ private entityAliases;
62
+ private nextAllocatedId;
41
63
  private mutationHistory;
42
64
  private modelId;
43
65
  constructor(baseTable: PropertyTable | null, modelId: string);
66
+ /**
67
+ * Seed the express-ID allocator. Should be called once after parsing with
68
+ * the highest existing expressId in the store; subsequent `createEntity`
69
+ * calls allocate IDs strictly above this watermark.
70
+ */
71
+ setExpressIdWatermark(maxExistingId: number): void;
72
+ /** The next expressId that `createEntity` would allocate. */
73
+ peekNextExpressId(): number;
44
74
  /**
45
75
  * Set an on-demand property extractor function
46
76
  * This is used when properties are extracted lazily from the source buffer
@@ -52,7 +82,11 @@ export declare class MutablePropertyView {
52
82
  setQuantityExtractor(extractor: QuantityExtractor): void;
53
83
  /**
54
84
  * Get base properties for an entity (before mutations)
55
- * Uses on-demand extraction if available, otherwise falls back to base table
85
+ * Uses on-demand extraction if available, otherwise falls back to base table.
86
+ *
87
+ * Follows the entityAliases map for overlay duplicates so a fresh
88
+ * duplicate inherits its source's psets without paying the cost of
89
+ * eagerly cloning them into the overlay.
56
90
  */
57
91
  private getBasePropertiesForEntity;
58
92
  /**
@@ -89,6 +123,9 @@ export declare class MutablePropertyView {
89
123
  deletePropertySet(entityId: number, psetName: string): Mutation;
90
124
  /**
91
125
  * Get base quantities for an entity (before mutations)
126
+ *
127
+ * Follows the entityAliases map for overlay duplicates so a fresh
128
+ * duplicate inherits its source's qsets.
92
129
  */
93
130
  private getBaseQuantitiesForEntity;
94
131
  /**
@@ -112,6 +149,77 @@ export declare class MutablePropertyView {
112
149
  * Set an entity attribute value (Name, Description, ObjectType, Tag, etc.)
113
150
  */
114
151
  setAttribute(entityId: number, attrName: string, value: string, oldValue?: string, skipHistory?: boolean): Mutation;
152
+ /**
153
+ * Set a positional STEP argument on an entity by zero-based index.
154
+ *
155
+ * This is the only path for editing non-IfcRoot entities (e.g. profile
156
+ * dimensions on `IfcRectangleProfileDef`) where attributes have no symbolic
157
+ * names. Values follow the same conventions as `NewEntity.attributes`:
158
+ * numbers become `#expressId` references when paired with a reference slot,
159
+ * otherwise REAL/INTEGER literals; strings become quoted STEP strings;
160
+ * `null` becomes `$`.
161
+ */
162
+ setPositionalAttribute(entityId: number, index: number, value: IfcAttributeValue, skipHistory?: boolean): Mutation;
163
+ /** Get all positional argument overrides for an entity, keyed by index. */
164
+ getPositionalMutationsForEntity(entityId: number): Map<number, IfcAttributeValue> | null;
165
+ /**
166
+ * Drop a single positional override. Used by undo to roll a
167
+ * setPositionalAttribute back to "no override" when there was no prior
168
+ * value. Mirrors `removeAttributeMutation` for symmetric naming.
169
+ */
170
+ removePositionalMutation(entityId: number, index: number): void;
171
+ /**
172
+ * Create a new entity in the overlay. Returns the freshly-allocated
173
+ * expressId. Callers must ensure `setExpressIdWatermark` has been seeded
174
+ * from the underlying store before calling this for the first time.
175
+ */
176
+ createEntity(type: string, attributes: IfcAttributeValue[]): NewEntity;
177
+ /**
178
+ * Mark an entity for deletion. Existing entities are tombstoned; new
179
+ * entities (from `createEntity`) are simply forgotten. Returns false if
180
+ * the id is unknown to this view.
181
+ */
182
+ deleteEntity(expressId: number): boolean;
183
+ /** Returns all overlay-created entities in insertion order. */
184
+ getNewEntities(): NewEntity[];
185
+ /** Look up a single overlay-created entity. */
186
+ getNewEntity(expressId: number): NewEntity | null;
187
+ isDeleted(expressId: number): boolean;
188
+ /**
189
+ * Reverse `deleteEntity` for an existing-entity tombstone. Returns true if
190
+ * a tombstone was removed; false if the id was not tombstoned. Used by
191
+ * undo of a DELETE_ENTITY mutation on a source-buffer entity. Overlay-only
192
+ * entities are restored via a separate path (`restoreNewEntity`).
193
+ */
194
+ restoreFromTombstone(expressId: number): boolean;
195
+ /**
196
+ * Alias an overlay-only entity to a source entity for property /
197
+ * quantity reads. Used by the duplicate flow so a fresh duplicate
198
+ * inherits its source's psets / qsets in the property panel without
199
+ * eagerly cloning them. Edits on the duplicate stay scoped to the
200
+ * duplicate's own id (override slots are keyed by entity id, not
201
+ * by base id).
202
+ *
203
+ * Pass `null` as the source to clear an existing alias.
204
+ */
205
+ setEntityAlias(overlayId: number, sourceId: number | null): void;
206
+ /** Read the alias for a given overlay id, or null if none. */
207
+ getEntityAlias(overlayId: number): number | null;
208
+ /**
209
+ * Resolve to the base id used for property/quantity reads. Returns
210
+ * the input id when no alias is set. Aliases follow at most one
211
+ * hop — chained duplicates resolve to their immediate source, not
212
+ * the original.
213
+ */
214
+ resolveBaseEntityId(entityId: number): number;
215
+ /**
216
+ * Re-add an overlay-only entity to `newEntities`. Pairs with `deleteEntity`
217
+ * to support undo of a freshly-created-and-then-deleted entity. The caller
218
+ * is responsible for stashing the `NewEntity` record between delete and
219
+ * restore (the slice's undo stack does this).
220
+ */
221
+ restoreNewEntity(entity: NewEntity): void;
222
+ getTombstones(): Set<number>;
115
223
  /**
116
224
  * Get mutated attributes for an entity.
117
225
  * Returns only attributes that have been added/modified via mutations.
@@ -1 +1 @@
1
- {"version":3,"file":"mutable-property-view.d.ts","sourceRoot":"","sources":["../src/mutable-property-view.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAY,WAAW,EAAY,MAAM,gBAAgB,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAyD,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGjH;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,KAAK,CAAC;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACnE,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,WAAW,EAAE,CAAC;AAEpE,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,iBAAiB,CAA4C;IACrE,OAAO,CAAC,iBAAiB,CAA4C;IACrE,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,QAAQ,CAAoD;IACpE,OAAO,CAAC,QAAQ,CAAoD;IACpE,OAAO,CAAC,kBAAkB,CAA6C;IACvE,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,OAAO,CAAS;gBAEZ,SAAS,EAAE,aAAa,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM;IAK5D;;;OAGG;IACH,oBAAoB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAIxD;;OAEG;IACH,oBAAoB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAIxD;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAqBlC;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE;IA2E7C;;OAEG;IACH,gBAAgB,CACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,aAAa,GAAG,IAAI;IAiCvB;;;;OAIG;IACH,WAAW,CACT,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,aAAa,EACpB,SAAS,GAAE,iBAA4C,EACvD,IAAI,CAAC,EAAE,MAAM,EACb,WAAW,GAAE,OAAe,GAC3B,QAAQ;IA+EX;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAE,OAAe,GAAG,QAAQ,GAAG,IAAI;IA4BnH;;OAEG;IACH,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,aAAa,CAAC;QAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GACjG,QAAQ;IA6CX;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ;IAoC/D;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAOlC;;OAEG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE;IA8DvD;;OAEG;IACH,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,YAAY,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAC5F,QAAQ;IA4CX;;OAEG;IACH,WAAW,CACT,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,YAAiC,EACxC,IAAI,CAAC,EAAE,MAAM,EACb,WAAW,GAAE,OAAe,GAC3B,QAAQ;IA+DX;;OAEG;IACH,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,GAAE,OAAe,GAC3B,QAAQ;IA0BX;;;OAGG;IACH,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAUxF;;OAEG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IA8BpF;;OAEG;IACH,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKjE;;OAEG;IACH,YAAY,IAAI,QAAQ,EAAE;IAI1B;;OAEG;IACH,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE;IAInD;;OAEG;IACH,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IAOtC;;OAEG;IACH,sBAAsB,IAAI,MAAM;IAQhC;;OAEG;IACH,KAAK,IAAI,IAAI;IAWb;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI;IA4C3C;;OAEG;IACH,eAAe,IAAI,MAAM;IAQzB;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAMpC"}
1
+ {"version":3,"file":"mutable-property-view.d.ts","sourceRoot":"","sources":["../src/mutable-property-view.ts"],"names":[],"mappings":"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"}
@@ -14,12 +14,48 @@ export class MutablePropertyView {
14
14
  newPsets = new Map(); // entityId -> psetName -> PropertySet
15
15
  newQsets = new Map(); // entityId -> qsetName -> QuantitySet
16
16
  attributeMutations = new Map(); // `${entityId}:attr:${attrName}`
17
+ positionalAttrMutations = new Map(); // entityId -> argIndex -> value
18
+ newEntities = new Map();
19
+ tombstones = new Set();
20
+ /**
21
+ * Overlay-entity → source-entity aliases for property/quantity reads.
22
+ *
23
+ * When the viewer duplicates an existing entity, the new entity has
24
+ * no row in the parsed property table — `getBasePropertiesForEntity`
25
+ * would return `[]` and the property panel would show "No property
26
+ * sets". Aliasing redirects the BASE read to the source entity so
27
+ * the duplicate inherits its psets / qsets visually, while overlay
28
+ * mutations (overrides, creates, deletes) stay scoped to the
29
+ * overlay-entity's own id — so editing a property on the duplicate
30
+ * doesn't bleed into the source.
31
+ *
32
+ * Aliases follow at most one hop (no chains). They never affect
33
+ * STEP export — the export overlay emits the duplicate exactly as
34
+ * the StoreEditor recorded it, with whatever new IfcRel*ByProperties
35
+ * the caller chose to add.
36
+ */
37
+ entityAliases = new Map();
38
+ nextAllocatedId = 0;
17
39
  mutationHistory = [];
18
40
  modelId;
19
41
  constructor(baseTable, modelId) {
20
42
  this.baseTable = baseTable;
21
43
  this.modelId = modelId;
22
44
  }
45
+ /**
46
+ * Seed the express-ID allocator. Should be called once after parsing with
47
+ * the highest existing expressId in the store; subsequent `createEntity`
48
+ * calls allocate IDs strictly above this watermark.
49
+ */
50
+ setExpressIdWatermark(maxExistingId) {
51
+ if (maxExistingId > this.nextAllocatedId) {
52
+ this.nextAllocatedId = maxExistingId;
53
+ }
54
+ }
55
+ /** The next expressId that `createEntity` would allocate. */
56
+ peekNextExpressId() {
57
+ return this.nextAllocatedId + 1;
58
+ }
23
59
  /**
24
60
  * Set an on-demand property extractor function
25
61
  * This is used when properties are extracted lazily from the source buffer
@@ -35,13 +71,18 @@ export class MutablePropertyView {
35
71
  }
36
72
  /**
37
73
  * Get base properties for an entity (before mutations)
38
- * Uses on-demand extraction if available, otherwise falls back to base table
74
+ * Uses on-demand extraction if available, otherwise falls back to base table.
75
+ *
76
+ * Follows the entityAliases map for overlay duplicates so a fresh
77
+ * duplicate inherits its source's psets without paying the cost of
78
+ * eagerly cloning them into the overlay.
39
79
  */
40
80
  getBasePropertiesForEntity(entityId) {
81
+ const baseId = this.resolveBaseEntityId(entityId);
41
82
  // Prefer on-demand extraction if available (client-side WASM parsing)
42
83
  if (this.onDemandExtractor) {
43
84
  // Normalize the result to PropertySet[] (globalId defaults to empty string)
44
- return this.onDemandExtractor(entityId).map(pset => ({
85
+ return this.onDemandExtractor(baseId).map(pset => ({
45
86
  name: pset.name,
46
87
  globalId: pset.globalId || '',
47
88
  properties: pset.properties.map(prop => ({
@@ -53,7 +94,7 @@ export class MutablePropertyView {
53
94
  }
54
95
  // Fallback to pre-built property table
55
96
  if (this.baseTable) {
56
- return this.baseTable.getForEntity(entityId);
97
+ return this.baseTable.getForEntity(baseId);
57
98
  }
58
99
  return [];
59
100
  }
@@ -340,10 +381,14 @@ export class MutablePropertyView {
340
381
  // ---------------------------------------------------------------------------
341
382
  /**
342
383
  * Get base quantities for an entity (before mutations)
384
+ *
385
+ * Follows the entityAliases map for overlay duplicates so a fresh
386
+ * duplicate inherits its source's qsets.
343
387
  */
344
388
  getBaseQuantitiesForEntity(entityId) {
389
+ const baseId = this.resolveBaseEntityId(entityId);
345
390
  if (this.quantityExtractor) {
346
- return this.quantityExtractor(entityId);
391
+ return this.quantityExtractor(baseId);
347
392
  }
348
393
  return [];
349
394
  }
@@ -531,6 +576,191 @@ export class MutablePropertyView {
531
576
  }
532
577
  return mutation;
533
578
  }
579
+ /**
580
+ * Set a positional STEP argument on an entity by zero-based index.
581
+ *
582
+ * This is the only path for editing non-IfcRoot entities (e.g. profile
583
+ * dimensions on `IfcRectangleProfileDef`) where attributes have no symbolic
584
+ * names. Values follow the same conventions as `NewEntity.attributes`:
585
+ * numbers become `#expressId` references when paired with a reference slot,
586
+ * otherwise REAL/INTEGER literals; strings become quoted STEP strings;
587
+ * `null` becomes `$`.
588
+ */
589
+ setPositionalAttribute(entityId, index, value, skipHistory = false) {
590
+ if (!Number.isInteger(index) || index < 0) {
591
+ throw new Error(`setPositionalAttribute: index must be a non-negative integer, got ${index}`);
592
+ }
593
+ let entityMap = this.positionalAttrMutations.get(entityId);
594
+ if (!entityMap) {
595
+ entityMap = new Map();
596
+ this.positionalAttrMutations.set(entityId, entityMap);
597
+ }
598
+ const oldValue = entityMap.has(index) ? entityMap.get(index) : null;
599
+ entityMap.set(index, value);
600
+ const mutation = {
601
+ id: generateMutationId(),
602
+ type: 'UPDATE_POSITIONAL_ATTRIBUTE',
603
+ timestamp: Date.now(),
604
+ modelId: this.modelId,
605
+ entityId,
606
+ attributeName: `@${index}`,
607
+ oldValue: oldValue,
608
+ newValue: value,
609
+ };
610
+ if (!skipHistory) {
611
+ this.mutationHistory.push(mutation);
612
+ }
613
+ return mutation;
614
+ }
615
+ /** Get all positional argument overrides for an entity, keyed by index. */
616
+ getPositionalMutationsForEntity(entityId) {
617
+ return this.positionalAttrMutations.get(entityId) ?? null;
618
+ }
619
+ /**
620
+ * Drop a single positional override. Used by undo to roll a
621
+ * setPositionalAttribute back to "no override" when there was no prior
622
+ * value. Mirrors `removeAttributeMutation` for symmetric naming.
623
+ */
624
+ removePositionalMutation(entityId, index) {
625
+ const entityMap = this.positionalAttrMutations.get(entityId);
626
+ if (!entityMap)
627
+ return;
628
+ entityMap.delete(index);
629
+ if (entityMap.size === 0) {
630
+ this.positionalAttrMutations.delete(entityId);
631
+ }
632
+ }
633
+ // ---------------------------------------------------------------------------
634
+ // Entity-level mutations (create / delete)
635
+ // ---------------------------------------------------------------------------
636
+ /**
637
+ * Create a new entity in the overlay. Returns the freshly-allocated
638
+ * expressId. Callers must ensure `setExpressIdWatermark` has been seeded
639
+ * from the underlying store before calling this for the first time.
640
+ */
641
+ createEntity(type, attributes) {
642
+ if (!type || typeof type !== 'string') {
643
+ throw new Error('createEntity: type is required');
644
+ }
645
+ // Preserve the type string the caller passed (canonical PascalCase per
646
+ // the public contract). UPPERCASE STEP tokens still work because the
647
+ // STEP exporter upper-cases at write time — but `NewEntity.type` no
648
+ // longer mangles `IfcColumn` into `IFCCOLUMN` for downstream consumers.
649
+ const expressId = ++this.nextAllocatedId;
650
+ const entity = {
651
+ expressId,
652
+ type: type.trim(),
653
+ attributes: attributes.slice(),
654
+ };
655
+ this.newEntities.set(expressId, entity);
656
+ this.mutationHistory.push({
657
+ id: generateMutationId(),
658
+ type: 'CREATE_ENTITY',
659
+ timestamp: Date.now(),
660
+ modelId: this.modelId,
661
+ entityId: expressId,
662
+ attributeName: entity.type,
663
+ });
664
+ return entity;
665
+ }
666
+ /**
667
+ * Mark an entity for deletion. Existing entities are tombstoned; new
668
+ * entities (from `createEntity`) are simply forgotten. Returns false if
669
+ * the id is unknown to this view.
670
+ */
671
+ deleteEntity(expressId) {
672
+ if (this.newEntities.has(expressId)) {
673
+ this.newEntities.delete(expressId);
674
+ this.mutationHistory.push({
675
+ id: generateMutationId(),
676
+ type: 'DELETE_ENTITY',
677
+ timestamp: Date.now(),
678
+ modelId: this.modelId,
679
+ entityId: expressId,
680
+ });
681
+ return true;
682
+ }
683
+ if (this.tombstones.has(expressId))
684
+ return false;
685
+ this.tombstones.add(expressId);
686
+ this.mutationHistory.push({
687
+ id: generateMutationId(),
688
+ type: 'DELETE_ENTITY',
689
+ timestamp: Date.now(),
690
+ modelId: this.modelId,
691
+ entityId: expressId,
692
+ });
693
+ return true;
694
+ }
695
+ /** Returns all overlay-created entities in insertion order. */
696
+ getNewEntities() {
697
+ return Array.from(this.newEntities.values());
698
+ }
699
+ /** Look up a single overlay-created entity. */
700
+ getNewEntity(expressId) {
701
+ return this.newEntities.get(expressId) ?? null;
702
+ }
703
+ isDeleted(expressId) {
704
+ return this.tombstones.has(expressId);
705
+ }
706
+ /**
707
+ * Reverse `deleteEntity` for an existing-entity tombstone. Returns true if
708
+ * a tombstone was removed; false if the id was not tombstoned. Used by
709
+ * undo of a DELETE_ENTITY mutation on a source-buffer entity. Overlay-only
710
+ * entities are restored via a separate path (`restoreNewEntity`).
711
+ */
712
+ restoreFromTombstone(expressId) {
713
+ return this.tombstones.delete(expressId);
714
+ }
715
+ /**
716
+ * Alias an overlay-only entity to a source entity for property /
717
+ * quantity reads. Used by the duplicate flow so a fresh duplicate
718
+ * inherits its source's psets / qsets in the property panel without
719
+ * eagerly cloning them. Edits on the duplicate stay scoped to the
720
+ * duplicate's own id (override slots are keyed by entity id, not
721
+ * by base id).
722
+ *
723
+ * Pass `null` as the source to clear an existing alias.
724
+ */
725
+ setEntityAlias(overlayId, sourceId) {
726
+ if (sourceId === null) {
727
+ this.entityAliases.delete(overlayId);
728
+ return;
729
+ }
730
+ if (sourceId === overlayId)
731
+ return;
732
+ this.entityAliases.set(overlayId, sourceId);
733
+ }
734
+ /** Read the alias for a given overlay id, or null if none. */
735
+ getEntityAlias(overlayId) {
736
+ return this.entityAliases.get(overlayId) ?? null;
737
+ }
738
+ /**
739
+ * Resolve to the base id used for property/quantity reads. Returns
740
+ * the input id when no alias is set. Aliases follow at most one
741
+ * hop — chained duplicates resolve to their immediate source, not
742
+ * the original.
743
+ */
744
+ resolveBaseEntityId(entityId) {
745
+ return this.entityAliases.get(entityId) ?? entityId;
746
+ }
747
+ /**
748
+ * Re-add an overlay-only entity to `newEntities`. Pairs with `deleteEntity`
749
+ * to support undo of a freshly-created-and-then-deleted entity. The caller
750
+ * is responsible for stashing the `NewEntity` record between delete and
751
+ * restore (the slice's undo stack does this).
752
+ */
753
+ restoreNewEntity(entity) {
754
+ this.newEntities.set(entity.expressId, entity);
755
+ // Without this the next createEntity() can hand out the same id and
756
+ // overwrite the restored entity.
757
+ if (entity.expressId > this.nextAllocatedId) {
758
+ this.nextAllocatedId = entity.expressId;
759
+ }
760
+ }
761
+ getTombstones() {
762
+ return new Set(this.tombstones);
763
+ }
534
764
  /**
535
765
  * Get mutated attributes for an entity.
536
766
  * Returns only attributes that have been added/modified via mutations.
@@ -626,12 +856,24 @@ export class MutablePropertyView {
626
856
  this.deletedQsets.clear();
627
857
  this.newPsets.clear();
628
858
  this.newQsets.clear();
859
+ this.positionalAttrMutations.clear();
860
+ this.newEntities.clear();
861
+ this.tombstones.clear();
862
+ this.entityAliases.clear();
863
+ this.nextAllocatedId = 0;
629
864
  this.mutationHistory = [];
630
865
  }
631
866
  /**
632
867
  * Apply a batch of mutations (e.g., from imported change set)
633
868
  */
634
869
  applyMutations(mutations) {
870
+ // CREATE_ENTITY records are skipped (callers must restore the
871
+ // payload via restoreNewEntity). Track the ids we've skipped so a
872
+ // matching DELETE_ENTITY in the same batch doesn't tombstone an
873
+ // entity that never made it into this view — that stale tombstone
874
+ // would later suppress a freshly-allocated overlay entity reusing
875
+ // the same expressId.
876
+ const skippedCreateIds = new Set();
635
877
  for (const mutation of mutations) {
636
878
  switch (mutation.type) {
637
879
  case 'CREATE_PROPERTY':
@@ -656,6 +898,36 @@ export class MutablePropertyView {
656
898
  this.setQuantity(mutation.entityId, mutation.psetName, mutation.propName, Number(mutation.newValue), QuantityType.Count);
657
899
  }
658
900
  break;
901
+ case 'UPDATE_POSITIONAL_ATTRIBUTE': {
902
+ // attributeName is `@<index>` for positional mutations.
903
+ const attr = mutation.attributeName ?? '';
904
+ if (!attr.startsWith('@'))
905
+ break;
906
+ const index = Number(attr.slice(1));
907
+ if (!Number.isInteger(index) || index < 0)
908
+ break;
909
+ if (mutation.newValue === undefined)
910
+ break;
911
+ this.setPositionalAttribute(mutation.entityId, index, mutation.newValue);
912
+ break;
913
+ }
914
+ case 'CREATE_ENTITY': {
915
+ // Replay creates rely on the importer providing the entity body
916
+ // via `restoreNewEntity` separately. The history record alone
917
+ // doesn't carry the type+attributes payload — applying a bare
918
+ // CREATE_ENTITY would lose the entity. We log and skip rather
919
+ // than silently dropping it, so callers see they need to
920
+ // restore the payload through the dedicated path.
921
+ skippedCreateIds.add(mutation.entityId);
922
+ // eslint-disable-next-line no-console
923
+ console.warn(`applyMutations: CREATE_ENTITY for #${mutation.entityId} requires a NewEntity payload — restore via restoreNewEntity()`);
924
+ break;
925
+ }
926
+ case 'DELETE_ENTITY':
927
+ if (skippedCreateIds.has(mutation.entityId))
928
+ break;
929
+ this.deleteEntity(mutation.entityId);
930
+ break;
659
931
  }
660
932
  }
661
933
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mutable-property-view.js","sourceRoot":"","sources":["../src/mutable-property-view.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mutable-property-view.js","sourceRoot":"","sources":["../src/mutable-property-view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * StoreEditor — high-level facade for editing a parsed `IfcDataStore` via the
3
+ * `MutablePropertyView` overlay.
4
+ *
5
+ * Implements the `store.addEntity()` / `store.removeEntity()` /
6
+ * `store.setPositionalAttribute()` API requested in louistrue/ifc-lite#592.
7
+ *
8
+ * The underlying store buffer and entity index are never mutated. Changes
9
+ * accumulate in the overlay and materialise during
10
+ * `StepExporter.export({ applyMutations })`. Overlay-created entities are
11
+ * visible via `getNewEntity()` / `getNewEntities()`; they are intentionally
12
+ * NOT inserted into `store.entityIndex.byId`, because that index may be a
13
+ * `CompactEntityIndex` whose backing typed arrays are immutable.
14
+ */
15
+ import type { MutablePropertyView } from './mutable-property-view.js';
16
+ import type { IfcAttributeValue, MutationEntityRef as EntityRef, MutationStoreShape as IfcDataStore, NewEntity } from './types.js';
17
+ /** Sentinel byteOffset that flags an `EntityRef` as overlay-only (no source bytes). */
18
+ export declare const OVERLAY_BYTE_OFFSET = -1;
19
+ /**
20
+ * Schema-aware normaliser injected from outside the package.
21
+ *
22
+ * `@ifc-lite/mutations` cannot import `@ifc-lite/parser` (cycle), so
23
+ * the canonical-name registry isn't reachable here. The SDK / viewer
24
+ * boundary calls `setEntityTypeNormalizer` once at startup with the
25
+ * parser's `normalizeIfcTypeName` helper, and from then on every
26
+ * `addEntity()` call resolves to canonical PascalCase before forwarding
27
+ * to the overlay. Direct callers that don't wire a normalizer fall
28
+ * back to the lightweight regex check below — typos still surface,
29
+ * just without registry-grade rejection.
30
+ */
31
+ export type EntityTypeNormalizer = (type: string) => string;
32
+ /**
33
+ * Register the canonical-name resolver. Pass `null` to clear it (used
34
+ * by tests). Calling repeatedly is fine — last write wins.
35
+ */
36
+ export declare function setEntityTypeNormalizer(fn: EntityTypeNormalizer | null): void;
37
+ export declare class StoreEditor {
38
+ private store;
39
+ private view;
40
+ private maxExistingId;
41
+ constructor(store: IfcDataStore, view: MutablePropertyView);
42
+ /**
43
+ * Add a new entity to the store overlay. Returns a synthetic `EntityRef`
44
+ * with a freshly-allocated expressId; pass it back to other APIs (other
45
+ * `addEntity` calls, `setPositionalAttribute`, exporters) to reference
46
+ * the new record.
47
+ *
48
+ * Pass `type` as the canonical IFC EXPRESS PascalCase name
49
+ * (e.g. `'IfcRectangleProfileDef'`). UPPERCASE STEP tokens are also
50
+ * accepted — both are normalized to the same internal form.
51
+ *
52
+ * Attribute conventions (mirrors `EntityExtractor.extractEntity()` output):
53
+ * - numbers → STEP integer / REAL literal
54
+ * - `"#42"` → STEP entity reference
55
+ * - `"'literal'"` or any plain string → quoted STEP string
56
+ * - `".AREA."` (dot-wrapped) → enum
57
+ * - `null` / `undefined` → `$`
58
+ * - arrays → STEP list `(a,b,c)`
59
+ */
60
+ addEntity(type: string, attributes: IfcAttributeValue[]): EntityRef;
61
+ /**
62
+ * Remove an entity. Existing entities are tombstoned and skipped during
63
+ * export; overlay-only entities are forgotten. Returns false if the id is
64
+ * not known to the store or the overlay.
65
+ */
66
+ removeEntity(expressId: number): boolean;
67
+ /**
68
+ * Edit a positional STEP argument on any entity by zero-based index.
69
+ * Use this for non-IfcRoot edits like `IfcRectangleProfileDef.XDim`
70
+ * where the attribute has no symbolic name.
71
+ */
72
+ setPositionalAttribute(expressId: number, index: number, value: IfcAttributeValue): void;
73
+ /** Edit a named root attribute (Name, Description, ObjectType, …). */
74
+ setAttribute(expressId: number, attrName: string, value: string): void;
75
+ /** Look up the overlay record for a freshly-added entity. */
76
+ getNewEntity(expressId: number): NewEntity | null;
77
+ /** All overlay-created entities, in insertion order. */
78
+ getNewEntities(): NewEntity[];
79
+ private computeMaxExistingId;
80
+ }
81
+ //# sourceMappingURL=store-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-editor.d.ts","sourceRoot":"","sources":["../src/store-editor.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,IAAI,SAAS,EAC9B,kBAAkB,IAAI,YAAY,EAClC,SAAS,EACV,MAAM,YAAY,CAAC;AAEpB,uFAAuF;AACvF,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;AAI5D;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,oBAAoB,GAAG,IAAI,GAAG,IAAI,CAE7E;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,IAAI,CAAsB;IAClC,OAAO,CAAC,aAAa,CAAS;gBAElB,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB;IAO1D;;;;;;;;;;;;;;;;;OAiBG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,SAAS;IAoDnE;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAQxC;;;;OAIG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAIxF,sEAAsE;IACtE,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAItE,6DAA6D;IAC7D,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIjD,wDAAwD;IACxD,cAAc,IAAI,SAAS,EAAE;IAI7B,OAAO,CAAC,oBAAoB;CAO7B"}
@@ -0,0 +1,129 @@
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
+ /** Sentinel byteOffset that flags an `EntityRef` as overlay-only (no source bytes). */
5
+ export const OVERLAY_BYTE_OFFSET = -1;
6
+ let configuredNormalizer = null;
7
+ /**
8
+ * Register the canonical-name resolver. Pass `null` to clear it (used
9
+ * by tests). Calling repeatedly is fine — last write wins.
10
+ */
11
+ export function setEntityTypeNormalizer(fn) {
12
+ configuredNormalizer = fn;
13
+ }
14
+ export class StoreEditor {
15
+ store;
16
+ view;
17
+ maxExistingId;
18
+ constructor(store, view) {
19
+ this.store = store;
20
+ this.view = view;
21
+ this.maxExistingId = this.computeMaxExistingId();
22
+ this.view.setExpressIdWatermark(this.maxExistingId);
23
+ }
24
+ /**
25
+ * Add a new entity to the store overlay. Returns a synthetic `EntityRef`
26
+ * with a freshly-allocated expressId; pass it back to other APIs (other
27
+ * `addEntity` calls, `setPositionalAttribute`, exporters) to reference
28
+ * the new record.
29
+ *
30
+ * Pass `type` as the canonical IFC EXPRESS PascalCase name
31
+ * (e.g. `'IfcRectangleProfileDef'`). UPPERCASE STEP tokens are also
32
+ * accepted — both are normalized to the same internal form.
33
+ *
34
+ * Attribute conventions (mirrors `EntityExtractor.extractEntity()` output):
35
+ * - numbers → STEP integer / REAL literal
36
+ * - `"#42"` → STEP entity reference
37
+ * - `"'literal'"` or any plain string → quoted STEP string
38
+ * - `".AREA."` (dot-wrapped) → enum
39
+ * - `null` / `undefined` → `$`
40
+ * - arrays → STEP list `(a,b,c)`
41
+ */
42
+ addEntity(type, attributes) {
43
+ // Defense in depth: reject obviously-invalid `type` at the editor
44
+ // boundary so a typo doesn't end up as an invalid STEP record on
45
+ // export. The SDK normalizes via the parser registry; this guard
46
+ // catches direct-editor callers (CLI scripts, sandbox bridge,
47
+ // unit tests) that don't go through that path.
48
+ if (typeof type !== 'string') {
49
+ throw new TypeError(`StoreEditor.addEntity: type must be a string, got ${typeof type}`);
50
+ }
51
+ const trimmed = type.trim();
52
+ if (trimmed.length === 0) {
53
+ throw new Error('StoreEditor.addEntity: type cannot be empty');
54
+ }
55
+ // STEP entity tokens always start with "IFC" / "Ifc". Accept either
56
+ // PascalCase (`IfcWall`) or the all-caps STEP form (`IFCWALL`); the
57
+ // exporter handles the case conversion at the file-format boundary.
58
+ if (!/^[Ii][Ff][Cc][A-Za-z][A-Za-z0-9]*$/.test(trimmed)) {
59
+ throw new Error(`StoreEditor.addEntity: type "${type}" is not a recognizable IFC entity name (expected e.g. "IfcWall")`);
60
+ }
61
+ // When a schema-aware normaliser is configured, resolve the
62
+ // canonical PascalCase name (e.g. "IFCWALL" → "IfcWall") and
63
+ // reject typos that aren't in the registry. The `Ifc${string}`
64
+ // shape passes the regex above but `IfcWal` would slip through;
65
+ // the normaliser is what catches that.
66
+ let canonical = trimmed;
67
+ if (configuredNormalizer) {
68
+ const resolved = configuredNormalizer(trimmed);
69
+ if (!resolved) {
70
+ throw new Error(`StoreEditor.addEntity: type "${type}" is not in the IFC schema registry (typo? vendor extension?)`);
71
+ }
72
+ canonical = resolved;
73
+ }
74
+ // Re-seed every call: cheap (one comparison + at most one write inside the
75
+ // view), and recovers from `view.clear()`, which resets the allocator to 0
76
+ // and would otherwise hand out colliding ids on the next addEntity().
77
+ this.view.setExpressIdWatermark(this.maxExistingId);
78
+ const created = this.view.createEntity(canonical, attributes);
79
+ return {
80
+ expressId: created.expressId,
81
+ type: created.type,
82
+ byteOffset: OVERLAY_BYTE_OFFSET,
83
+ byteLength: 0,
84
+ lineNumber: -1,
85
+ };
86
+ }
87
+ /**
88
+ * Remove an entity. Existing entities are tombstoned and skipped during
89
+ * export; overlay-only entities are forgotten. Returns false if the id is
90
+ * not known to the store or the overlay.
91
+ */
92
+ removeEntity(expressId) {
93
+ if (this.view.getNewEntity(expressId) !== null) {
94
+ return this.view.deleteEntity(expressId);
95
+ }
96
+ if (!this.store.entityIndex.byId.has(expressId))
97
+ return false;
98
+ return this.view.deleteEntity(expressId);
99
+ }
100
+ /**
101
+ * Edit a positional STEP argument on any entity by zero-based index.
102
+ * Use this for non-IfcRoot edits like `IfcRectangleProfileDef.XDim`
103
+ * where the attribute has no symbolic name.
104
+ */
105
+ setPositionalAttribute(expressId, index, value) {
106
+ this.view.setPositionalAttribute(expressId, index, value);
107
+ }
108
+ /** Edit a named root attribute (Name, Description, ObjectType, …). */
109
+ setAttribute(expressId, attrName, value) {
110
+ this.view.setAttribute(expressId, attrName, value);
111
+ }
112
+ /** Look up the overlay record for a freshly-added entity. */
113
+ getNewEntity(expressId) {
114
+ return this.view.getNewEntity(expressId);
115
+ }
116
+ /** All overlay-created entities, in insertion order. */
117
+ getNewEntities() {
118
+ return this.view.getNewEntities();
119
+ }
120
+ computeMaxExistingId() {
121
+ let max = 0;
122
+ for (const id of this.store.entityIndex.byId.keys()) {
123
+ if (id > max)
124
+ max = id;
125
+ }
126
+ return max;
127
+ }
128
+ }
129
+ //# sourceMappingURL=store-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-editor.js","sourceRoot":"","sources":["../src/store-editor.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -2,6 +2,13 @@
2
2
  * Types for IFC mutation tracking
3
3
  */
4
4
  import type { PropertyValueType } from '@ifc-lite/data';
5
+ /**
6
+ * IFC STEP attribute value, as produced by `EntityExtractor.extractEntity()`.
7
+ *
8
+ * Mirrors the parser's `IfcAttributeValue` to keep `@ifc-lite/mutations` free
9
+ * of a `@ifc-lite/parser` dependency (parser → ifcx → mutations would cycle).
10
+ */
11
+ export type IfcAttributeValue = string | number | boolean | null | IfcAttributeValue[];
5
12
  /**
6
13
  * Property value types supported by mutations
7
14
  */
@@ -9,7 +16,7 @@ export type PropertyValue = string | number | boolean | null | PropertyValue[];
9
16
  /**
10
17
  * Types of mutations that can be applied to IFC data
11
18
  */
12
- export type MutationType = 'CREATE_PROPERTY' | 'UPDATE_PROPERTY' | 'DELETE_PROPERTY' | 'CREATE_PROPERTY_SET' | 'DELETE_PROPERTY_SET' | 'CREATE_QUANTITY' | 'UPDATE_QUANTITY' | 'DELETE_QUANTITY' | 'UPDATE_ATTRIBUTE';
19
+ export type MutationType = 'CREATE_PROPERTY' | 'UPDATE_PROPERTY' | 'DELETE_PROPERTY' | 'CREATE_PROPERTY_SET' | 'DELETE_PROPERTY_SET' | 'CREATE_QUANTITY' | 'UPDATE_QUANTITY' | 'DELETE_QUANTITY' | 'UPDATE_ATTRIBUTE' | 'UPDATE_POSITIONAL_ATTRIBUTE' | 'CREATE_ENTITY' | 'DELETE_ENTITY';
13
20
  /**
14
21
  * A single mutation operation
15
22
  */
@@ -91,6 +98,50 @@ export interface AttributeMutation {
91
98
  /** Previous value (for undo) */
92
99
  oldValue?: string;
93
100
  }
101
+ /**
102
+ * In-memory record for an entity created via the overlay.
103
+ *
104
+ * `attributes` is the positional STEP argument list for the entity, in the
105
+ * same shape that `EntityExtractor.extractEntity()` produces. Numbers become
106
+ * STEP integer/REAL literals; strings/booleans/null are emitted literally;
107
+ * nested arrays are emitted as STEP lists. Use a string `"#42"` for entity
108
+ * references, `".AREA."` for enums, `"$"` for explicit unset.
109
+ */
110
+ export interface NewEntity {
111
+ expressId: number;
112
+ type: string;
113
+ attributes: IfcAttributeValue[];
114
+ }
115
+ /**
116
+ * Minimal `EntityRef` shape consumed by `StoreEditor`. Structurally compatible
117
+ * with `@ifc-lite/parser`'s `EntityRef`.
118
+ */
119
+ export interface MutationEntityRef {
120
+ expressId: number;
121
+ type: string;
122
+ byteOffset: number;
123
+ byteLength: number;
124
+ lineNumber: number;
125
+ }
126
+ /**
127
+ * Minimal entity-by-id index shape. Compatible with `Map<number, EntityRef>`
128
+ * and the parser's `CompactEntityIndex`. Only the read methods are required
129
+ * — the overlay never mutates the underlying index.
130
+ */
131
+ export interface MutationEntityByIdIndex {
132
+ get(expressId: number): MutationEntityRef | undefined;
133
+ has(expressId: number): boolean;
134
+ readonly size: number;
135
+ keys(): IterableIterator<number>;
136
+ }
137
+ /**
138
+ * Minimal `IfcDataStore` shape consumed by `StoreEditor`.
139
+ */
140
+ export interface MutationStoreShape {
141
+ entityIndex: {
142
+ byId: MutationEntityByIdIndex;
143
+ };
144
+ }
94
145
  /**
95
146
  * Generate a unique ID for mutations
96
147
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAqH/D;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,QAAgB,EAAE,QAAgB;IAC9E,OAAO,GAAG,QAAQ,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,QAAgB,EAAE,SAAiB;IAC/E,OAAO,GAAG,QAAQ,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,aAAqB;IAClE,OAAO,GAAG,QAAQ,SAAS,aAAa,EAAE,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAqL/D;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,QAAgB,EAAE,QAAgB;IAC9E,OAAO,GAAG,QAAQ,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,QAAgB,EAAE,SAAiB;IAC/E,OAAO,GAAG,QAAQ,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,aAAqB;IAClE,OAAO,GAAG,QAAQ,SAAS,aAAa,EAAE,CAAC;AAC7C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/mutations",
3
- "version": "1.14.4",
3
+ "version": "1.15.0",
4
4
  "description": "Mutation tracking and property editing for IFC-Lite",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -12,7 +12,7 @@
12
12
  }
13
13
  },
14
14
  "dependencies": {
15
- "@ifc-lite/data": "^1.15.0"
15
+ "@ifc-lite/data": "^1.15.2"
16
16
  },
17
17
  "devDependencies": {
18
18
  "typescript": "^5.3.0",
@@ -42,8 +42,8 @@
42
42
  "README.md"
43
43
  ],
44
44
  "scripts": {
45
- "build": "tsc",
46
- "dev": "tsc --watch",
45
+ "build": "pnpm exec tsc",
46
+ "dev": "pnpm exec tsc --watch",
47
47
  "test": "vitest run --passWithNoTests"
48
48
  }
49
49
  }