@ifc-lite/mutations 1.14.5 → 1.15.1

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://ltplus-ag.github.io/ifc-lite/guide/mutations/) and [API Reference](https://ltplus-ag.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
@@ -33,14 +33,57 @@ export declare class MutablePropertyView {
33
33
  private quantityExtractor;
34
34
  private propertyMutations;
35
35
  private quantityMutations;
36
+ /**
37
+ * Secondary indices: entityId → mutation keys for that entity.
38
+ *
39
+ * `getForEntity` previously iterated the entire `propertyMutations` /
40
+ * `quantityMutations` map per pset to find newly-added properties — O(M·P)
41
+ * per call. These indices keep that step O(M_entity) instead.
42
+ */
43
+ private propertyKeysByEntity;
44
+ private quantityKeysByEntity;
36
45
  private deletedPsets;
37
46
  private deletedQsets;
38
47
  private newPsets;
39
48
  private newQsets;
40
49
  private attributeMutations;
50
+ private positionalAttrMutations;
51
+ private newEntities;
52
+ private tombstones;
53
+ /**
54
+ * Overlay-entity → source-entity aliases for property/quantity reads.
55
+ *
56
+ * When the viewer duplicates an existing entity, the new entity has
57
+ * no row in the parsed property table — `getBasePropertiesForEntity`
58
+ * would return `[]` and the property panel would show "No property
59
+ * sets". Aliasing redirects the BASE read to the source entity so
60
+ * the duplicate inherits its psets / qsets visually, while overlay
61
+ * mutations (overrides, creates, deletes) stay scoped to the
62
+ * overlay-entity's own id — so editing a property on the duplicate
63
+ * doesn't bleed into the source.
64
+ *
65
+ * Aliases follow at most one hop (no chains). They never affect
66
+ * STEP export — the export overlay emits the duplicate exactly as
67
+ * the StoreEditor recorded it, with whatever new IfcRel*ByProperties
68
+ * the caller chose to add.
69
+ */
70
+ private entityAliases;
71
+ private nextAllocatedId;
41
72
  private mutationHistory;
42
73
  private modelId;
43
74
  constructor(baseTable: PropertyTable | null, modelId: string);
75
+ /**
76
+ * Seed the express-ID allocator. Should be called once after parsing with
77
+ * the highest existing expressId in the store; subsequent `createEntity`
78
+ * calls allocate IDs strictly above this watermark.
79
+ */
80
+ setExpressIdWatermark(maxExistingId: number): void;
81
+ /** The next expressId that `createEntity` would allocate. */
82
+ peekNextExpressId(): number;
83
+ private setPropertyMutation;
84
+ private deletePropertyMutation;
85
+ private setQuantityMutation;
86
+ private deleteQuantityMutation;
44
87
  /**
45
88
  * Set an on-demand property extractor function
46
89
  * This is used when properties are extracted lazily from the source buffer
@@ -52,7 +95,11 @@ export declare class MutablePropertyView {
52
95
  setQuantityExtractor(extractor: QuantityExtractor): void;
53
96
  /**
54
97
  * Get base properties for an entity (before mutations)
55
- * Uses on-demand extraction if available, otherwise falls back to base table
98
+ * Uses on-demand extraction if available, otherwise falls back to base table.
99
+ *
100
+ * Follows the entityAliases map for overlay duplicates so a fresh
101
+ * duplicate inherits its source's psets without paying the cost of
102
+ * eagerly cloning them into the overlay.
56
103
  */
57
104
  private getBasePropertiesForEntity;
58
105
  /**
@@ -89,6 +136,9 @@ export declare class MutablePropertyView {
89
136
  deletePropertySet(entityId: number, psetName: string): Mutation;
90
137
  /**
91
138
  * Get base quantities for an entity (before mutations)
139
+ *
140
+ * Follows the entityAliases map for overlay duplicates so a fresh
141
+ * duplicate inherits its source's qsets.
92
142
  */
93
143
  private getBaseQuantitiesForEntity;
94
144
  /**
@@ -112,6 +162,77 @@ export declare class MutablePropertyView {
112
162
  * Set an entity attribute value (Name, Description, ObjectType, Tag, etc.)
113
163
  */
114
164
  setAttribute(entityId: number, attrName: string, value: string, oldValue?: string, skipHistory?: boolean): Mutation;
165
+ /**
166
+ * Set a positional STEP argument on an entity by zero-based index.
167
+ *
168
+ * This is the only path for editing non-IfcRoot entities (e.g. profile
169
+ * dimensions on `IfcRectangleProfileDef`) where attributes have no symbolic
170
+ * names. Values follow the same conventions as `NewEntity.attributes`:
171
+ * numbers become `#expressId` references when paired with a reference slot,
172
+ * otherwise REAL/INTEGER literals; strings become quoted STEP strings;
173
+ * `null` becomes `$`.
174
+ */
175
+ setPositionalAttribute(entityId: number, index: number, value: IfcAttributeValue, skipHistory?: boolean): Mutation;
176
+ /** Get all positional argument overrides for an entity, keyed by index. */
177
+ getPositionalMutationsForEntity(entityId: number): Map<number, IfcAttributeValue> | null;
178
+ /**
179
+ * Drop a single positional override. Used by undo to roll a
180
+ * setPositionalAttribute back to "no override" when there was no prior
181
+ * value. Mirrors `removeAttributeMutation` for symmetric naming.
182
+ */
183
+ removePositionalMutation(entityId: number, index: number): void;
184
+ /**
185
+ * Create a new entity in the overlay. Returns the freshly-allocated
186
+ * expressId. Callers must ensure `setExpressIdWatermark` has been seeded
187
+ * from the underlying store before calling this for the first time.
188
+ */
189
+ createEntity(type: string, attributes: IfcAttributeValue[]): NewEntity;
190
+ /**
191
+ * Mark an entity for deletion. Existing entities are tombstoned; new
192
+ * entities (from `createEntity`) are simply forgotten. Returns false if
193
+ * the id is unknown to this view.
194
+ */
195
+ deleteEntity(expressId: number): boolean;
196
+ /** Returns all overlay-created entities in insertion order. */
197
+ getNewEntities(): NewEntity[];
198
+ /** Look up a single overlay-created entity. */
199
+ getNewEntity(expressId: number): NewEntity | null;
200
+ isDeleted(expressId: number): boolean;
201
+ /**
202
+ * Reverse `deleteEntity` for an existing-entity tombstone. Returns true if
203
+ * a tombstone was removed; false if the id was not tombstoned. Used by
204
+ * undo of a DELETE_ENTITY mutation on a source-buffer entity. Overlay-only
205
+ * entities are restored via a separate path (`restoreNewEntity`).
206
+ */
207
+ restoreFromTombstone(expressId: number): boolean;
208
+ /**
209
+ * Alias an overlay-only entity to a source entity for property /
210
+ * quantity reads. Used by the duplicate flow so a fresh duplicate
211
+ * inherits its source's psets / qsets in the property panel without
212
+ * eagerly cloning them. Edits on the duplicate stay scoped to the
213
+ * duplicate's own id (override slots are keyed by entity id, not
214
+ * by base id).
215
+ *
216
+ * Pass `null` as the source to clear an existing alias.
217
+ */
218
+ setEntityAlias(overlayId: number, sourceId: number | null): void;
219
+ /** Read the alias for a given overlay id, or null if none. */
220
+ getEntityAlias(overlayId: number): number | null;
221
+ /**
222
+ * Resolve to the base id used for property/quantity reads. Returns
223
+ * the input id when no alias is set. Aliases follow at most one
224
+ * hop — chained duplicates resolve to their immediate source, not
225
+ * the original.
226
+ */
227
+ resolveBaseEntityId(entityId: number): number;
228
+ /**
229
+ * Re-add an overlay-only entity to `newEntities`. Pairs with `deleteEntity`
230
+ * to support undo of a freshly-created-and-then-deleted entity. The caller
231
+ * is responsible for stashing the `NewEntity` record between delete and
232
+ * restore (the slice's undo stack does this).
233
+ */
234
+ restoreNewEntity(entity: NewEntity): void;
235
+ getTombstones(): Set<number>;
115
236
  /**
116
237
  * Get mutated attributes for an entity.
117
238
  * 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":"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"}
1
+ {"version":3,"file":"mutable-property-view.d.ts","sourceRoot":"","sources":["../src/mutable-property-view.ts"],"names":[],"mappings":"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"}