@ifc-lite/ifcx 4.2.1 → 4.4.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 +10 -0
- package/dist/georeference.d.ts +17 -0
- package/dist/georeference.d.ts.map +1 -0
- package/dist/georeference.js +44 -0
- package/dist/georeference.js.map +1 -0
- package/dist/index.d.ts +2 -45
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -19
- package/dist/index.js.map +1 -1
- package/dist/parse-result.d.ts +48 -0
- package/dist/parse-result.d.ts.map +1 -0
- package/dist/parse-result.js +5 -0
- package/dist/parse-result.js.map +1 -0
- package/dist/writer-spatial.d.ts +8 -0
- package/dist/writer-spatial.d.ts.map +1 -0
- package/dist/writer-spatial.js +59 -0
- package/dist/writer-spatial.js.map +1 -0
- package/dist/writer.d.ts +11 -0
- package/dist/writer.d.ts.map +1 -1
- package/dist/writer.js +22 -7
- package/dist/writer.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -79,6 +79,14 @@ const ifcx = exporter.export({ includeGeometry: true });
|
|
|
79
79
|
// ifcx.content → IFCX JSON string, save as .ifcx
|
|
80
80
|
```
|
|
81
81
|
|
|
82
|
+
For the low-level `IfcxWriter`, `spatialHierarchy` is a parsed snapshot. If a
|
|
83
|
+
`mutationView` changes an `IfcRelAggregates`, `IfcRelNests`, or
|
|
84
|
+
`IfcRelContainedInSpatialStructure` record, supply `effectiveSpatialEdges`
|
|
85
|
+
containing the **complete** current spatial edge set (`sourceId`, `targetId`,
|
|
86
|
+
`relationshipType`). The writer uses those edges to build `children` and raises
|
|
87
|
+
an error if it detects such an edit without them. `applyMutations: false` uses
|
|
88
|
+
the parsed hierarchy.
|
|
89
|
+
|
|
82
90
|
## API
|
|
83
91
|
|
|
84
92
|
See the [Parsing Guide](https://ifclite.dev/docs/guide/parsing/) and [API Reference](https://ifclite.dev/docs/api/typescript/#ifc-liteifcx).
|
|
@@ -94,3 +102,5 @@ RGBA pixels, plus optional original PNG/JPEG bytes retained without decoding.
|
|
|
94
102
|
The shared wire exports are consumed by `@ifc-lite/export`; see
|
|
95
103
|
[texture portability](../../docs/guide/exporting.md#ifcx-texture-portability)
|
|
96
104
|
for interoperability, allocation limits, and the native structural-only boundary.
|
|
105
|
+
|
|
106
|
+
IFCX files may carry `ifclite::georeference::v1` on one model node. The parse result's optional `georeferencing` field preserves canonical `IfcProjectedCRS` (`Name`, metre `MapUnit`) and `IfcMapConversion` (`Eastings`, `Northings`, `OrthogonalHeight`, `XAxisAbscissa`, `XAxisOrdinate`, `Scale`) attributes. The viewer maps this into its existing federation alignment and map placement path. Invalid or conflicting placement records fail parsing. If an overlay fails composition or extraction, `addIfcxOverlay` removes the rejected layer so the previous stage remains usable.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ComposedNode } from './types.js';
|
|
2
|
+
/** Canonical EXPRESS names on the wire; consumers map to their own georef types. */
|
|
3
|
+
export declare function extractGeoreference(composed: Map<string, ComposedNode>): {
|
|
4
|
+
IfcProjectedCRS: {
|
|
5
|
+
Name: string;
|
|
6
|
+
MapUnit: 'METRE';
|
|
7
|
+
};
|
|
8
|
+
IfcMapConversion: {
|
|
9
|
+
Eastings: number;
|
|
10
|
+
Northings: number;
|
|
11
|
+
OrthogonalHeight: number;
|
|
12
|
+
XAxisAbscissa: number;
|
|
13
|
+
XAxisOrdinate: number;
|
|
14
|
+
Scale: number;
|
|
15
|
+
};
|
|
16
|
+
} | undefined;
|
|
17
|
+
//# sourceMappingURL=georeference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"georeference.d.ts","sourceRoot":"","sources":["../src/georeference.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,oFAAoF;AACpF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG;IACxE,eAAe,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IACpD,gBAAgB,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAChF,aAAa,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACjE,GAAG,SAAS,CAuBZ"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/** Canonical EXPRESS names on the wire; consumers map to their own georef types. */
|
|
2
|
+
export function extractGeoreference(composed) {
|
|
3
|
+
let result;
|
|
4
|
+
for (const node of composed.values()) {
|
|
5
|
+
const value = node.attributes.get('ifclite::georeference::v1');
|
|
6
|
+
if (value === undefined)
|
|
7
|
+
continue;
|
|
8
|
+
const raw = object(value);
|
|
9
|
+
const crs = object(raw.IfcProjectedCRS);
|
|
10
|
+
const map = object(raw.IfcMapConversion);
|
|
11
|
+
if (typeof crs.Name !== 'string' || !/^EPSG:\d+$/.test(crs.Name) || crs.MapUnit !== 'METRE')
|
|
12
|
+
throw new Error('Invalid IFCX projected CRS.');
|
|
13
|
+
const Eastings = number(map.Eastings);
|
|
14
|
+
const Northings = number(map.Northings);
|
|
15
|
+
const OrthogonalHeight = number(map.OrthogonalHeight);
|
|
16
|
+
const XAxisAbscissa = number(map.XAxisAbscissa);
|
|
17
|
+
const XAxisOrdinate = number(map.XAxisOrdinate);
|
|
18
|
+
const Scale = number(map.Scale);
|
|
19
|
+
if (Scale <= 0 || Math.hypot(XAxisAbscissa, XAxisOrdinate) < 1e-12)
|
|
20
|
+
throw new Error('Invalid IFCX map conversion.');
|
|
21
|
+
const next = { IfcProjectedCRS: { Name: crs.Name, MapUnit: 'METRE' },
|
|
22
|
+
IfcMapConversion: { Eastings, Northings, OrthogonalHeight, XAxisAbscissa, XAxisOrdinate, Scale } };
|
|
23
|
+
const previous = result;
|
|
24
|
+
const coordinates = ['Eastings', 'Northings', 'OrthogonalHeight', 'XAxisAbscissa', 'XAxisOrdinate', 'Scale'];
|
|
25
|
+
if (previous && (previous.IfcProjectedCRS.Name !== next.IfcProjectedCRS.Name ||
|
|
26
|
+
coordinates.some(attribute => previous.IfcMapConversion[attribute] !== next.IfcMapConversion[attribute]))) {
|
|
27
|
+
throw new Error('IFCX contains conflicting model georeferences.');
|
|
28
|
+
}
|
|
29
|
+
// Composition can copy the same placement through inheritance (#6824).
|
|
30
|
+
result ??= next;
|
|
31
|
+
}
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
function object(value) {
|
|
35
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
36
|
+
throw new Error('Invalid IFCX georeference.');
|
|
37
|
+
return value;
|
|
38
|
+
}
|
|
39
|
+
function number(value) {
|
|
40
|
+
if (typeof value !== 'number' || !Number.isFinite(value))
|
|
41
|
+
throw new Error('Invalid IFCX georeference coordinate.');
|
|
42
|
+
return value;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=georeference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"georeference.js","sourceRoot":"","sources":["../src/georeference.ts"],"names":[],"mappings":"AAKA,oFAAoF;AACpF,MAAM,UAAU,mBAAmB,CAAC,QAAmC;IAKrE,IAAI,MAA8C,CAAC;IACnD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAC/D,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAAC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAAC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC7G,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC5I,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAAC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/E,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAAC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACvG,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAAC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjF,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACpH,MAAM,IAAI,GAAG,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,OAAgB,EAAE;YAC3E,gBAAgB,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,CAAC;QACrG,MAAM,QAAQ,GAAG,MAAM,CAAC;QACxB,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,CAAU,CAAC;QACtH,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI;YACxE,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9G,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,uEAAuE;QACvE,MAAM,KAAK,IAAI,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC/G,OAAO,KAAgC,CAAC;AAC1C,CAAC;AACD,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACnH,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { StringTable } from '@ifc-lite/data';
|
|
4
|
-
import type { SpatialHierarchy, EntityTable, PropertyTable, QuantityTable, RelationshipGraph } from '@ifc-lite/data';
|
|
1
|
+
import type { IfcxParseResult, IfcxParseOptions } from './parse-result.js';
|
|
2
|
+
export type { IfcxParseResult, IfcxParseOptions } from './parse-result.js';
|
|
5
3
|
import { LayerStack } from './layer-stack.js';
|
|
6
4
|
import { PathIndex } from './path-resolver.js';
|
|
7
5
|
export { IFCX_VERSION } from '@ifc-lite/data';
|
|
@@ -22,47 +20,6 @@ export { LayerStack, createLayerStack, type IfcxLayer, type LayerSource, } from
|
|
|
22
20
|
export { PathIndex, createPathIndex, parsePath, type ParsedPath, type PathEntry, } from './path-resolver.js';
|
|
23
21
|
export { composeFederated, type ComposeOptions, type FederatedCompositionResult, type ComposedNodeWithSources, } from './federated-composition.js';
|
|
24
22
|
export { IfcxWriter, exportToIfcx, type IfcxExportOptions, type IfcxExportData, type IfcxExportResult, } from './writer.js';
|
|
25
|
-
/**
|
|
26
|
-
* Result of parsing an IFCX file.
|
|
27
|
-
* Compatible with existing ifc-lite data structures.
|
|
28
|
-
*/
|
|
29
|
-
export interface IfcxParseResult {
|
|
30
|
-
/** Columnar entity table */
|
|
31
|
-
entities: EntityTable;
|
|
32
|
-
/** Columnar property table */
|
|
33
|
-
properties: PropertyTable;
|
|
34
|
-
/** Columnar quantity table */
|
|
35
|
-
quantities: QuantityTable;
|
|
36
|
-
/** Relationship graph */
|
|
37
|
-
relationships: RelationshipGraph;
|
|
38
|
-
/** Spatial hierarchy */
|
|
39
|
-
spatialHierarchy: SpatialHierarchy;
|
|
40
|
-
/** String table for interned strings */
|
|
41
|
-
strings: StringTable;
|
|
42
|
-
/** Pre-tessellated geometry meshes */
|
|
43
|
-
meshes: MeshData[];
|
|
44
|
-
/** Decoded point clouds (pcd::base64, points::array, points::base64) */
|
|
45
|
-
pointClouds: PointCloudExtraction[];
|
|
46
|
-
/** Mapping from IFCX path to express ID */
|
|
47
|
-
pathToId: Map<string, number>;
|
|
48
|
-
/** Mapping from express ID to IFCX path */
|
|
49
|
-
idToPath: Map<number, string>;
|
|
50
|
-
/** Schema version */
|
|
51
|
-
schemaVersion: 'IFC5';
|
|
52
|
-
/** File size in bytes */
|
|
53
|
-
fileSize: number;
|
|
54
|
-
/** Number of entities */
|
|
55
|
-
entityCount: number;
|
|
56
|
-
/** Parse time in milliseconds */
|
|
57
|
-
parseTime: number;
|
|
58
|
-
}
|
|
59
|
-
export interface IfcxParseOptions {
|
|
60
|
-
/** Progress callback */
|
|
61
|
-
onProgress?: (progress: {
|
|
62
|
-
phase: string;
|
|
63
|
-
percent: number;
|
|
64
|
-
}) => void;
|
|
65
|
-
}
|
|
66
23
|
/**
|
|
67
24
|
* Parse an IFCX file and return data compatible with existing ifc-lite pipeline.
|
|
68
25
|
*/
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
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 { extractGeoreference } from './georeference.js';
|
|
4
5
|
import { ATTR, SPATIAL_TYPES, isTypedPropertyValue, parseV5aKey } from './types.js';
|
|
5
6
|
import { composeIfcx } from './composition.js';
|
|
6
7
|
import { extractEntities } from './entity-extractor.js';
|
|
@@ -59,6 +60,7 @@ export async function parseIfcx(buffer, options = {}) {
|
|
|
59
60
|
// Phase 2: Compose ECS nodes
|
|
60
61
|
options.onProgress?.({ phase: 'compose', percent: 0 });
|
|
61
62
|
const composed = composeIfcx(file);
|
|
63
|
+
const georeferencing = extractGeoreference(composed);
|
|
62
64
|
options.onProgress?.({ phase: 'compose', percent: 100 });
|
|
63
65
|
// Phase 3: Extract entities
|
|
64
66
|
options.onProgress?.({ phase: 'entities', percent: 0 });
|
|
@@ -101,6 +103,7 @@ export async function parseIfcx(buffer, options = {}) {
|
|
|
101
103
|
fileSize: buffer.byteLength,
|
|
102
104
|
entityCount: entities.count,
|
|
103
105
|
parseTime,
|
|
106
|
+
georeferencing,
|
|
104
107
|
};
|
|
105
108
|
}
|
|
106
109
|
/**
|
|
@@ -346,6 +349,7 @@ function finalizeFederatedResult(layerStack, compositionResult, totalSize, start
|
|
|
346
349
|
for (const [path, node] of compositionResult.composed) {
|
|
347
350
|
composed.set(path, node);
|
|
348
351
|
}
|
|
352
|
+
const georeferencing = extractGeoreference(composed);
|
|
349
353
|
// Phase 3: Extract entities
|
|
350
354
|
options.onProgress?.({ phase: 'entities', percent: 0 });
|
|
351
355
|
const strings = new StringTable();
|
|
@@ -393,6 +397,7 @@ function finalizeFederatedResult(layerStack, compositionResult, totalSize, start
|
|
|
393
397
|
entityCount: entities.count,
|
|
394
398
|
parseTime,
|
|
395
399
|
// Federated-specific fields
|
|
400
|
+
georeferencing,
|
|
396
401
|
layerStack,
|
|
397
402
|
pathIndex: compositionResult.pathIndex,
|
|
398
403
|
compositionStats: {
|
|
@@ -423,29 +428,37 @@ export async function addIfcxOverlay(baseResult, overlayBuffer, overlayName, opt
|
|
|
423
428
|
}
|
|
424
429
|
// Add to layer stack (at top = strongest)
|
|
425
430
|
const layerStack = baseResult.layerStack;
|
|
426
|
-
layerStack.addLayer(file, overlayBuffer, overlayName, {
|
|
431
|
+
const addedLayerId = layerStack.addLayer(file, overlayBuffer, overlayName, {
|
|
427
432
|
type: 'file',
|
|
428
433
|
filename: overlayName,
|
|
429
434
|
size: overlayBuffer.byteLength,
|
|
430
435
|
});
|
|
431
|
-
//
|
|
432
|
-
//
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
436
|
+
// Failed composition or extraction must leave the previous result usable
|
|
437
|
+
// (#6824). Successful overlays keep the existing shared-stack semantics.
|
|
438
|
+
try {
|
|
439
|
+
// Re-compose with the new layer directly from the already-parsed stack.
|
|
440
|
+
// Avoid round-tripping every layer buffer back through parseFederatedIfcx
|
|
441
|
+
// (re-JSON.parsing all prior layers), which would make the k-th overlay
|
|
442
|
+
// cost O(total bytes of all layers).
|
|
443
|
+
const startTime = performance.now();
|
|
444
|
+
options.onProgress?.({ phase: 'compose', percent: 0 });
|
|
445
|
+
const compositionResult = composeFederated(layerStack, {
|
|
446
|
+
onProgress: (phase, percent) => {
|
|
447
|
+
options.onProgress?.({ phase: `compose-${phase}`, percent });
|
|
448
|
+
},
|
|
449
|
+
maxInheritDepth: options.maxInheritDepth,
|
|
450
|
+
});
|
|
451
|
+
options.onProgress?.({ phase: 'compose', percent: 100 });
|
|
452
|
+
// fileSize reflects the total bytes of every layer (matching parseFederatedIfcx).
|
|
453
|
+
let totalSize = 0;
|
|
454
|
+
for (const layer of layerStack.getLayers()) {
|
|
455
|
+
totalSize += layer.buffer.byteLength;
|
|
456
|
+
}
|
|
457
|
+
return finalizeFederatedResult(layerStack, compositionResult, totalSize, startTime, options);
|
|
458
|
+
}
|
|
459
|
+
catch (error) {
|
|
460
|
+
layerStack.removeLayer(addedLayerId);
|
|
461
|
+
throw error;
|
|
448
462
|
}
|
|
449
|
-
return finalizeFederatedResult(layerStack, compositionResult, totalSize, startTime, options);
|
|
450
463
|
}
|
|
451
464
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAU/D,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC7G,OAAO,EAAE,eAAe,EAAiB,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAA6B,MAAM,2BAA2B,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EACL,WAAW,EACX,wBAAwB,EACxB,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,GACf,MAAM,gBAAgB,CAAC;AAGxB,gCAAgC;AAChC,OAAO,EAAc,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EACL,gBAAgB,GAEjB,MAAM,4BAA4B,CAAC;AAEpC,4EAA4E;AAC5E,2EAA2E;AAC3E,0CAA0C;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,uBAAuB,EAA0C,MAAM,sBAAsB,CAAC;AACrJ,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAoB,MAAM,WAAW,CAAC;AACzD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,aAAa,EACb,aAAa,EACb,kBAAkB,GAYnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,eAAe,EAAiB,MAAM,yBAAyB,CAAC;AACzE,OAAO,EACL,kBAAkB,GAEnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,wBAAwB,EACxB,4BAA4B,GAE7B,MAAM,gBAAgB,CAAC;AAExB,kCAAkC;AAClC,OAAO,EACL,UAAU,EACV,gBAAgB,GAGjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,SAAS,EACT,eAAe,EACf,SAAS,GAGV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,gBAAgB,GAIjB,MAAM,4BAA4B,CAAC;AAEpC,yBAAyB;AACzB,OAAO,EACL,UAAU,EACV,YAAY,GAIb,MAAM,aAAa,CAAC;AA0CrB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAmB,EACnB,UAA4B,EAAE;IAE9B,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAEpC,uEAAuE;IACvE,8CAA8C;IAC9C,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD,IAAI,IAAc,CAAC;IAEnB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,kBAAkB;IAClB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAEvD,6BAA6B;IAC7B,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAEzD,4BAA4B;IAC5B,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5E,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAE1D,8BAA8B;IAC9B,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClE,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAE5D,4BAA4B;IAC5B,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC3D,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAE1D,2BAA2B;IAC3B,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACzD,MAAM,gBAAgB,GAAG,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC5D,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAE3D,+BAA+B;IAC/B,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7D,MAAM,aAAa,GAAG,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7D,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAE/D,wEAAwE;IACxE,MAAM,UAAU,GAAG,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEhE,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAChD,6IAA6I;IAC7I,OAAO;QACL,QAAQ;QACR,UAAU;QACV,UAAU;QACV,aAAa;QACb,gBAAgB;QAChB,OAAO;QACP,MAAM;QACN,WAAW;QACX,QAAQ;QACR,QAAQ;QACR,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,UAAU;QAC3B,WAAW,EAAE,QAAQ,CAAC,KAAK;QAC3B,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CACzB,QAAmC,EACnC,QAA6B;IAE7B,MAAM,OAAO,GAAG,IAAI,wBAAwB,EAAE,CAAC;IAC/C,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,QAAQ,KAAK,SAAS;YAAE,SAAS;QAErC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,kDAAkD;gBAClD,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACvD,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,uEAAuE;QACvE,wEAAwE;QACxE,oEAAoE;QACpE,yEAAyE;QACzE,8CAA8C;QAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9D,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC1B,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC/E,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,KAAc;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAI,IAAiC,EAAE,GAAG,CAAC;QACpD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAChC,MAAoB,EACpB,KAAmB;IAEnB,MAAM,WAAW,GAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAuB,EAAE,IAAI,CAAC;IAC1F,MAAM,UAAU,GAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAuB,EAAE,IAAI,CAAC;IAExF,sBAAsB;IACtB,IAAI,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QACnE,OAAO,gBAAgB,CAAC,gBAAgB,CAAC;IAC3C,CAAC;IAED,4CAA4C;IAC5C,IAAI,gBAAgB,CAAC,WAAW,CAAC,IAAI,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QAClE,OAAO,gBAAgB,CAAC,UAAU,CAAC;IACrC,CAAC;IAED,yBAAyB;IACzB,OAAO,gBAAgB,CAAC,gBAAgB,CAAC;AAC3C,CAAC;AAED;iFACiF;AACjF,SAAS,gBAAgB,CAAC,QAA4B;IACpD,OAAO,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CACtB,QAAmC,EACnC,QAA6B,EAC7B,OAAoB;IAEpB,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAElD,uCAAuC;IACvC,MAAM,cAAc,GAAG,kEAAkE,CAAC;IAC1F,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,MAAe,EAAU,EAAE;QACpE,eAAe;QACf,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC,sBAAsB;QAC1F,aAAa;QACb,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC,oBAAoB;QACpF,cAAc;QACd,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC,qBAAqB;QACvF,eAAe;QACf,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,MAAM;YAC5C,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC,sBAAsB;QAC9F,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC,sBAAsB;QACnE,oEAAoE;QACpE,qEAAqE;QACrE,iEAAiE;QACjE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,SAAS,KAAK,SAAS;YAAE,SAAS;QAEtC,sDAAsD;QACtD,MAAM,QAAQ,GAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAuB,EAAE,IAAI,CAAC;QACrF,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAClG,MAAM,QAAQ,GAAG,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,4CAA4C;QACxG,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3C,kEAAkE;YAClE,gEAAgE;YAChE,6DAA6D;YAC7D,8BAA8B;YAC9B,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,KAAK,CAAC;gBAAE,SAAS;YAEtE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,QAAQ,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAC1D,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YAEpE,OAAO,CAAC,GAAG,CAAC;gBACV,QAAQ,EAAE,SAAS;gBACnB,mGAAmG;gBACnG,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;gBACtC,YAAY,EAAE,EAAE,EAAE,4FAA4F;gBAC9G,YAAY,EAAE,QAAQ;gBACtB,YAAY,EAAE,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACpF,KAAK,EAAE,SAAmB;aAC3B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAmB;IAC9C,iFAAiF;IACjF,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1E,mEAAmE;IACnE,uEAAuE;IACvE,gEAAgE;IAChE,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAE3C,+BAA+B;IAC/B,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,oCAAoC;IACpC,IAAI,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAyCD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAA2B,EAC3B,UAAiC,EAAE;IAEnC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAEpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAErD,iDAAiD;IACjD,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;IACtC,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC;QAE/B,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QACpD,IAAI,IAAc,CAAC;QAEnB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,yBAAyB,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,0CAA0C,CAAC,CAAC;QACxF,CAAC;QAED,0DAA0D;QAC1D,uDAAuD;QACvD,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;YAC3C,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,MAAM,CAAC,UAAU;SACxB,CAAC,CAAC;QAEH,OAAO,CAAC,UAAU,EAAE,CAAC;YACnB,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;SACpD,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAEvD,oCAAoC;IACpC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,UAAU,EAAE;QACrD,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAC7B,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,eAAe,EAAE,OAAO,CAAC,eAAe;KACzC,CAAC,CAAC;IAEH,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAEzD,OAAO,uBAAuB,CAC5B,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,uBAAuB,CAC9B,UAAsB,EACtB,iBAA6C,EAC7C,SAAiB,EACjB,SAAiB,EACjB,OAA8B;IAE9B,wEAAwE;IACxE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;IACjD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,iBAAiB,CAAC,QAAQ,EAAE,CAAC;QACtD,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAoB,CAAC,CAAC;IAC3C,CAAC;IAED,4BAA4B;IAC5B,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5E,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAE1D,8BAA8B;IAC9B,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClE,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAE5D,4BAA4B;IAC5B,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC3D,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAE1D,2BAA2B;IAC3B,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACzD,MAAM,gBAAgB,GAAG,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC5D,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAE3D,+BAA+B;IAC/B,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7D,MAAM,aAAa,GAAG,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7D,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAE/D,4BAA4B;IAC5B,MAAM,UAAU,GAAG,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEhE,2BAA2B;IAC3B,MAAM,YAAY,GAAG,IAAI,GAAG,EAAoB,CAAC;IACjD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,iBAAiB,CAAC,QAAQ,EAAE,CAAC;QACtD,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAChD,uJAAuJ;IACvJ,OAAO;QACL,QAAQ;QACR,UAAU;QACV,UAAU;QACV,aAAa;QACb,gBAAgB;QAChB,OAAO;QACP,MAAM;QACN,WAAW;QACX,QAAQ;QACR,QAAQ;QACR,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,QAAQ,CAAC,KAAK;QAC3B,SAAS;QACT,4BAA4B;QAC5B,UAAU;QACV,SAAS,EAAE,iBAAiB,CAAC,SAAS;QACtC,gBAAgB,EAAE;YAChB,UAAU,EAAE,iBAAiB,CAAC,KAAK,CAAC,UAAU;YAC9C,sBAAsB,EAAE,iBAAiB,CAAC,KAAK,CAAC,sBAAsB;YACtE,oBAAoB,EAAE,iBAAiB,CAAC,KAAK,CAAC,oBAAoB;SACnE;QACD,YAAY;KACb,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAoC,EACpC,aAA0B,EAC1B,WAAmB,EACnB,UAAiC,EAAE;IAEnC,iCAAiC;IACjC,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;IAC3D,IAAI,IAAc,CAAC;IAEnB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,yBAAyB,WAAW,yBAAyB,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,kBAAkB;IAClB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,yBAAyB,WAAW,0CAA0C,CAAC,CAAC;IAClG,CAAC;IAED,0CAA0C;IAC1C,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IACzC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE;QACpD,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,aAAa,CAAC,UAAU;KAC/B,CAAC,CAAC;IAEH,wEAAwE;IACxE,0EAA0E;IAC1E,wEAAwE;IACxE,qCAAqC;IACrC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IACpC,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACvD,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,UAAU,EAAE;QACrD,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAC7B,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,eAAe,EAAE,OAAO,CAAC,eAAe;KACzC,CAAC,CAAC;IACH,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAEzD,kFAAkF;IAClF,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC;QAC3C,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;IACvC,CAAC;IAED,OAAO,uBAAuB,CAC5B,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { StringTable, SpatialHierarchy, EntityTable, PropertyTable, QuantityTable, RelationshipGraph } from '@ifc-lite/data';
|
|
2
|
+
import type { MeshData } from './geometry-extractor.js';
|
|
3
|
+
import type { PointCloudExtraction } from './pointcloud-extractor.js';
|
|
4
|
+
import type { extractGeoreference } from './georeference.js';
|
|
5
|
+
/**
|
|
6
|
+
* Result of parsing an IFCX file.
|
|
7
|
+
* Compatible with existing ifc-lite data structures.
|
|
8
|
+
*/
|
|
9
|
+
export interface IfcxParseResult {
|
|
10
|
+
/** Columnar entity table */
|
|
11
|
+
entities: EntityTable;
|
|
12
|
+
/** Columnar property table */
|
|
13
|
+
properties: PropertyTable;
|
|
14
|
+
/** Columnar quantity table */
|
|
15
|
+
quantities: QuantityTable;
|
|
16
|
+
/** Relationship graph */
|
|
17
|
+
relationships: RelationshipGraph;
|
|
18
|
+
/** Spatial hierarchy */
|
|
19
|
+
spatialHierarchy: SpatialHierarchy;
|
|
20
|
+
/** String table for interned strings */
|
|
21
|
+
strings: StringTable;
|
|
22
|
+
/** Pre-tessellated geometry meshes */
|
|
23
|
+
meshes: MeshData[];
|
|
24
|
+
/** Decoded point clouds (pcd::base64, points::array, points::base64) */
|
|
25
|
+
pointClouds: PointCloudExtraction[];
|
|
26
|
+
/** Mapping from IFCX path to express ID */
|
|
27
|
+
pathToId: Map<string, number>;
|
|
28
|
+
/** Mapping from express ID to IFCX path */
|
|
29
|
+
idToPath: Map<number, string>;
|
|
30
|
+
/** Schema version */
|
|
31
|
+
schemaVersion: 'IFC5';
|
|
32
|
+
/** File size in bytes */
|
|
33
|
+
fileSize: number;
|
|
34
|
+
/** Number of entities */
|
|
35
|
+
entityCount: number;
|
|
36
|
+
/** Parse time in milliseconds */
|
|
37
|
+
parseTime: number;
|
|
38
|
+
/** Canonical IFC EXPRESS attributes carried by the IFCX georeference extension. */
|
|
39
|
+
georeferencing?: ReturnType<typeof extractGeoreference>;
|
|
40
|
+
}
|
|
41
|
+
export interface IfcxParseOptions {
|
|
42
|
+
/** Progress callback */
|
|
43
|
+
onProgress?: (progress: {
|
|
44
|
+
phase: string;
|
|
45
|
+
percent: number;
|
|
46
|
+
}) => void;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=parse-result.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-result.d.ts","sourceRoot":"","sources":["../src/parse-result.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAClI,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,QAAQ,EAAE,WAAW,CAAC;IACtB,8BAA8B;IAC9B,UAAU,EAAE,aAAa,CAAC;IAC1B,8BAA8B;IAC9B,UAAU,EAAE,aAAa,CAAC;IAC1B,yBAAyB;IACzB,aAAa,EAAE,iBAAiB,CAAC;IACjC,wBAAwB;IACxB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,wCAAwC;IACxC,OAAO,EAAE,WAAW,CAAC;IACrB,sCAAsC;IACtC,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,wEAAwE;IACxE,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,2CAA2C;IAC3C,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,2CAA2C;IAC3C,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,qBAAqB;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,cAAc,CAAC,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,gBAAgB;IAC/B,wBAAwB;IACxB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACrE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-result.js","sourceRoot":"","sources":["../src/parse-result.ts"],"names":[],"mappings":"AAAA;;+DAE+D"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type EntityTable } from '@ifc-lite/data';
|
|
2
|
+
import type { MutablePropertyView } from '@ifc-lite/mutations';
|
|
3
|
+
import type { IfcxExportData } from './writer.js';
|
|
4
|
+
export declare function indexSpatialEdges(edges: NonNullable<IfcxExportData['effectiveSpatialEdges']>): Map<number, number[]>;
|
|
5
|
+
/** Parsed hierarchy has no relationship ids or editable endpoints. Fail
|
|
6
|
+
* visibly when it cannot describe the effective session. */
|
|
7
|
+
export declare function hasSpatialRelationshipEdits(entities: EntityTable, view: MutablePropertyView): boolean;
|
|
8
|
+
//# sourceMappingURL=writer-spatial.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writer-spatial.d.ts","sourceRoot":"","sources":["../src/writer-spatial.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuB,KAAK,WAAW,EAAoB,MAAM,gBAAgB,CAAC;AACzF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAQlD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC,GAC1D,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CASvB;AAED;6DAC6D;AAC7D,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CA4BrG"}
|
|
@@ -0,0 +1,59 @@
|
|
|
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 { IfcTypeEnumToString } from '@ifc-lite/data';
|
|
5
|
+
function isSpatialRelationship(type) {
|
|
6
|
+
const upper = type?.toUpperCase();
|
|
7
|
+
return upper === 'IFCRELAGGREGATES' || upper === 'IFCRELNESTS'
|
|
8
|
+
|| upper === 'IFCRELCONTAINEDINSPATIALSTRUCTURE';
|
|
9
|
+
}
|
|
10
|
+
export function indexSpatialEdges(edges) {
|
|
11
|
+
const children = new Map();
|
|
12
|
+
for (const edge of edges) {
|
|
13
|
+
if (!isSpatialRelationship(edge.relationshipType))
|
|
14
|
+
continue;
|
|
15
|
+
const targets = children.get(edge.sourceId) ?? [];
|
|
16
|
+
targets.push(edge.targetId);
|
|
17
|
+
children.set(edge.sourceId, targets);
|
|
18
|
+
}
|
|
19
|
+
return children;
|
|
20
|
+
}
|
|
21
|
+
/** Parsed hierarchy has no relationship ids or editable endpoints. Fail
|
|
22
|
+
* visibly when it cannot describe the effective session. */
|
|
23
|
+
export function hasSpatialRelationshipEdits(entities, view) {
|
|
24
|
+
// The public input also accepts older property-only view adapters; they
|
|
25
|
+
// have no structural edits to inspect (writerEntities uses the same gate).
|
|
26
|
+
if (typeof view.getNewEntities !== 'function' || typeof view.getTombstones !== 'function')
|
|
27
|
+
return false;
|
|
28
|
+
const sourceSpatialTypes = new Map();
|
|
29
|
+
// @raw-entity-enumeration-ok source class lookup detects edited source relationships before writing effective rows
|
|
30
|
+
for (let row = 0; row < entities.count; row++) {
|
|
31
|
+
const id = entities.expressId[row];
|
|
32
|
+
const type = entities.getTypeName?.(id)
|
|
33
|
+
?? IfcTypeEnumToString(entities.typeEnum[row]);
|
|
34
|
+
if (isSpatialRelationship(type))
|
|
35
|
+
sourceSpatialTypes.set(id, type);
|
|
36
|
+
}
|
|
37
|
+
for (const entity of view.getNewEntities()) {
|
|
38
|
+
if (isSpatialRelationship(entity.type))
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
for (const id of view.getTombstones()) {
|
|
42
|
+
if (sourceSpatialTypes.has(id))
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
for (const [id, change] of view.getTypeMutations()) {
|
|
46
|
+
if (sourceSpatialTypes.has(id) || isSpatialRelationship(change.newType))
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
for (const id of view.getAttributeMutationsByEntity().keys()) {
|
|
50
|
+
if (sourceSpatialTypes.has(id))
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
for (const id of sourceSpatialTypes.keys()) {
|
|
54
|
+
if (view.getPositionalMutationsForEntity(id)?.size)
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=writer-spatial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writer-spatial.js","sourceRoot":"","sources":["../src/writer-spatial.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,mBAAmB,EAAsC,MAAM,gBAAgB,CAAC;AAIzF,SAAS,qBAAqB,CAAC,IAAwB;IACrD,MAAM,KAAK,GAAG,IAAI,EAAE,WAAW,EAAE,CAAC;IAClC,OAAO,KAAK,KAAK,kBAAkB,IAAI,KAAK,KAAK,aAAa;WACzD,KAAK,KAAK,mCAAmC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAA2D;IAE3D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAAE,SAAS;QAC5D,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5B,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;6DAC6D;AAC7D,MAAM,UAAU,2BAA2B,CAAC,QAAqB,EAAE,IAAyB;IAC1F,wEAAwE;IACxE,2EAA2E;IAC3E,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IACxG,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACrD,mHAAmH;IACnH,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;QAC9C,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;eAClC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAgB,CAAC,CAAC;QAChE,IAAI,qBAAqB,CAAC,IAAI,CAAC;YAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QAC3C,IAAI,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IACtD,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QACtC,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;IAC9C,CAAC;IACD,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;QACnD,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;IACvF,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,6BAA6B,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7D,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;IAC9C,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,EAAE,IAAI;YAAE,OAAO,IAAI,CAAC;IAClE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/writer.d.ts
CHANGED
|
@@ -27,6 +27,17 @@ export interface IfcxExportData {
|
|
|
27
27
|
properties?: PropertyTable;
|
|
28
28
|
/** Spatial hierarchy */
|
|
29
29
|
spatialHierarchy?: SpatialHierarchy;
|
|
30
|
+
/**
|
|
31
|
+
* Complete effective spatial relationship edges for an edited session.
|
|
32
|
+
* A caller with source STEP records can derive these from the parser's
|
|
33
|
+
* effective relationship overlay. This replaces the parsed hierarchy when
|
|
34
|
+
* applyMutations is true; pass the entire spatial edge set, not only edits.
|
|
35
|
+
*/
|
|
36
|
+
effectiveSpatialEdges?: ReadonlyArray<{
|
|
37
|
+
sourceId: number;
|
|
38
|
+
targetId: number;
|
|
39
|
+
relationshipType: string;
|
|
40
|
+
}>;
|
|
30
41
|
/** String table for lookups */
|
|
31
42
|
strings?: {
|
|
32
43
|
get(idx: number): string;
|
package/dist/writer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAM/D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,4EAA4E;IAC5E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wCAAwC;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gEAAgE;IAChE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mBAAmB;IACnB,QAAQ,EAAE,WAAW,CAAC;IACtB,uDAAuD;IACvD,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,wBAAwB;IACxB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,aAAa,CAAC;QACpC,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC,CAAC;IACH,+BAA+B;IAC/B,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACvC,kDAAkD;IAClD,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,oDAAoD;IACpD,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB;IACjB,KAAK,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAiB;gBAEjB,IAAI,EAAE,cAAc;IAIhC;;OAEG;IACH,MAAM,CAAC,OAAO,GAAE,iBAAsB,GAAG,gBAAgB;IAgCzD;;OAEG;IACH,OAAO,CAAC,YAAY;IAUpB;;OAEG;IACH,OAAO,CAAC,YAAY;IA8FpB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA8B9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAyC5B;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,OAAO,CAAC,UAAU;CAGnB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,cAAc,EACpB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,MAAM,CAIR"}
|
package/dist/writer.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import { IFCX_VERSION } from '@ifc-lite/data';
|
|
5
5
|
import { collectRequiredImports } from './writer-imports.js';
|
|
6
6
|
import { writerEntities } from './writer-entities.js';
|
|
7
|
+
import { hasSpatialRelationshipEdits, indexSpatialEdges } from './writer-spatial.js';
|
|
7
8
|
/**
|
|
8
9
|
* IFCX file writer
|
|
9
10
|
*/
|
|
@@ -61,6 +62,13 @@ export class IfcxWriter {
|
|
|
61
62
|
const nodes = [];
|
|
62
63
|
const { spatialHierarchy, mutationView, idToPath } = this.data;
|
|
63
64
|
const rows = writerEntities(this.data, options.applyMutations !== false);
|
|
65
|
+
const effectiveSpatial = options.applyMutations !== false
|
|
66
|
+
? this.data.effectiveSpatialEdges : undefined;
|
|
67
|
+
if (mutationView && options.applyMutations !== false
|
|
68
|
+
&& !effectiveSpatial && hasSpatialRelationshipEdits(this.data.entities, mutationView)) {
|
|
69
|
+
throw new Error('IFCX export needs effectiveSpatialEdges for edited spatial relationships');
|
|
70
|
+
}
|
|
71
|
+
const effectiveChildren = effectiveSpatial && indexSpatialEdges(effectiveSpatial);
|
|
64
72
|
// Single source of truth for expressId -> path, built once up front so that
|
|
65
73
|
// an entity's own path and any *reference* to that entity as a child
|
|
66
74
|
// (see getChildrenForEntity) can never diverge. Previously the child-ref
|
|
@@ -122,7 +130,7 @@ export class IfcxWriter {
|
|
|
122
130
|
attributes: Object.keys(attributes).length > 0 ? attributes : undefined,
|
|
123
131
|
};
|
|
124
132
|
// Add children based on spatial hierarchy
|
|
125
|
-
const children = this.getChildrenForEntity(expressId, spatialHierarchy, resolvedPaths);
|
|
133
|
+
const children = this.getChildrenForEntity(expressId, spatialHierarchy, resolvedPaths, effectiveChildren);
|
|
126
134
|
if (Object.keys(children).length > 0) {
|
|
127
135
|
node.children = children;
|
|
128
136
|
}
|
|
@@ -161,15 +169,22 @@ export class IfcxWriter {
|
|
|
161
169
|
/**
|
|
162
170
|
* Get children relationships for an entity
|
|
163
171
|
*/
|
|
164
|
-
getChildrenForEntity(entityId, spatialHierarchy, resolvedPaths) {
|
|
172
|
+
getChildrenForEntity(entityId, spatialHierarchy, resolvedPaths, effectiveChildren) {
|
|
165
173
|
const children = {};
|
|
166
|
-
if (!spatialHierarchy)
|
|
174
|
+
if (!spatialHierarchy && !effectiveChildren)
|
|
167
175
|
return children;
|
|
168
176
|
// Check if this entity has contained elements
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
spatialHierarchy.
|
|
172
|
-
|
|
177
|
+
// @raw-entity-enumeration-ok parsed hierarchy is the source-only/default path; effectiveSpatialEdges replaces it for live relationships
|
|
178
|
+
const sourceChildren = effectiveChildren ? [] : [
|
|
179
|
+
...(spatialHierarchy?.byStorey.get(entityId) ?? []),
|
|
180
|
+
// @raw-entity-enumeration-ok source hierarchy only when complete effective edges are absent
|
|
181
|
+
...(spatialHierarchy?.byBuilding.get(entityId) ?? []),
|
|
182
|
+
// @raw-entity-enumeration-ok source hierarchy only when complete effective edges are absent
|
|
183
|
+
...(spatialHierarchy?.bySite.get(entityId) ?? []),
|
|
184
|
+
// @raw-entity-enumeration-ok source hierarchy only when complete effective edges are absent
|
|
185
|
+
...(spatialHierarchy?.bySpace.get(entityId) ?? []),
|
|
186
|
+
];
|
|
187
|
+
const containedElements = effectiveChildren ? effectiveChildren.get(entityId) ?? [] : sourceChildren;
|
|
173
188
|
if (containedElements) {
|
|
174
189
|
for (const childId of containedElements) {
|
|
175
190
|
// Resolve from the same expressId -> path map used to assign the
|
package/dist/writer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAW/D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ifc-lite/ifcx",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.4.0",
|
|
4
4
|
"description": "IFC5 (IFCX) parser for IFC-Lite",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -14,12 +14,12 @@
|
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@noble/hashes": "^2.4.0",
|
|
17
|
-
"@ifc-lite/
|
|
18
|
-
"@ifc-lite/
|
|
19
|
-
"@ifc-lite/
|
|
17
|
+
"@ifc-lite/data": "^6.2.0",
|
|
18
|
+
"@ifc-lite/mutations": "^3.2.0",
|
|
19
|
+
"@ifc-lite/pointcloud": "^0.12.0"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
|
-
"tsx": "^4.23.
|
|
22
|
+
"tsx": "^4.23.15",
|
|
23
23
|
"typescript": "^6.0.3"
|
|
24
24
|
},
|
|
25
25
|
"license": "MPL-2.0",
|