@ifc-lite/wasm 10.2.0 → 10.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 CHANGED
@@ -208,6 +208,21 @@ residuals. Frames and asset identities are bound into the report; the call does
208
208
  not align a loaded model or approve scan accuracy. See the
209
209
  [registration contract](../../docs/api/wasm.md#scan-correspondence-registration).
210
210
 
211
+ `IfcAPI.segmentScanPoints` detects planes in an xyz `Float32Array` point cloud
212
+ (voxel means, PCA normals, region growing, a robust refit and coplanar
213
+ merging). It also detects cylinders, such as columns and pipes, among the
214
+ remaining voxels (seeded RANSAC, then a least-squares refit), and wide round
215
+ and polygonal columns among rings of vertical planes; a column's surface is
216
+ not also reported as planes. The JSON report is independent of point order. See the
217
+ [segmentation contract](../../docs/api/wasm.md#scan-plane-segmentation); the
218
+ typed wrapper is `@ifc-lite/geometry/scan-segmentation`.
219
+
220
+ `IfcAPI.proposeScanElements` turns that report into proposed walls, slabs,
221
+ columns and pipes in the IFC model frame, each with a confidence and its source
222
+ detections; it creates nothing. See the
223
+ [proposal contract](../../docs/api/wasm.md#scan-element-proposals); the typed
224
+ wrapper is `@ifc-lite/geometry/scan-proposals`.
225
+
211
226
  `IfcAPI.planMeshTransfer` composes registered opaque textured-mesh observations
212
227
  onto supported direct IFC tessellations using the shared atlas planner. Unknown
213
228
  samples retain existing target albedo; the IFPA response includes explicit
@@ -236,3 +251,34 @@ the versioned behavior.
236
251
  Combined fill and dashed-stroke paints can still refuse atomically when
237
252
  multiple run boundaries produce crossings outside the current fill-region
238
253
  qualifier.
254
+
255
+ ## Retained alignment station frames
256
+
257
+ `AlignmentAxisJs` evaluates one `IfcAlignment` through the canonical Rust
258
+ evaluator. Its `GlobalId` and `Name` properties use exact IFC EXPRESS names;
259
+ `expressId`, `geometricHorizontalLengthMeters` and `approximate` are derived
260
+ metadata. The caller owns the handle and must call `free()` in `finally`.
261
+
262
+ ```ts
263
+ import init, { AlignmentAxisJs } from '@ifc-lite/wasm';
264
+
265
+ await init();
266
+ const content = await (await fetch('alignment.ifc')).text();
267
+ const axis = new AlignmentAxisJs(content, 39);
268
+ try {
269
+ const sample = axis.evaluate(10);
270
+ console.log(axis.GlobalId, axis.Name, sample);
271
+ } finally {
272
+ axis.free();
273
+ }
274
+ ```
275
+
276
+ `evaluate(distanceMeters)` returns a `Float64Array` containing horizontal
277
+ distance, absolute IFC Z-up point X/Y/Z in metres, and normalized world tangent
278
+ X/Y/Z. Distance is alignment-local geometric horizontal length from the physical
279
+ start, independent of authored chainage and different from 3D arc length. No
280
+ renderer origin or axis conversion is applied. Nonfinite or out-of-range
281
+ distances and unresolved units, curves or placements fail explicitly. The
282
+ `approximate` flag identifies supported approximation paths; it must be exposed
283
+ to precision-sensitive consumers. Whole-source parsing belongs in a disposable
284
+ worker when used by the viewer, so releasing the tool also releases WASM pages.
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "IFC-Lite Contributors"
6
6
  ],
7
7
  "description": "WebAssembly bindings for IFC-Lite",
8
- "version": "10.2.0",
8
+ "version": "10.4.0",
9
9
  "license": "MPL-2.0",
10
10
  "repository": {
11
11
  "type": "git",
package/pkg/ifc-lite.d.ts CHANGED
@@ -1,6 +1,55 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
3
 
4
+ /** Every field is optional; absent or `undefined` means the default. Unknown fields and non-finite numbers are refused. Lengths in metres; pass plane coordinates local to the slab (f32 input). */
5
+ export interface ScanOutlineOptionsJs {
6
+ /** Fixed cell edge; omit to pick it from the point density between minCellSize and maxCellSize. */
7
+ cellSize?: number;
8
+ /** Default 0.02, at least 0.001. */ minCellSize?: number;
9
+ /** Default 0.05. */ maxCellSize?: number;
10
+ /** Adaptive cells grow until the median occupied cell holds this many points. Default 6. */
11
+ targetPointsPerCell?: number;
12
+ /** Cell budget for the padded grid, from (2·pad + 1)² (81 with the defaults) up to 67108864. Default 16777216; hitting it sets diagnostics.cellCapHit. */
13
+ maxCells?: number;
14
+ /** Default 1. */ minPointsPerCell?: number;
15
+ /** A cell is occupied from this fraction of the median occupied-cell count. Default 0.25. */
16
+ noiseFraction?: number;
17
+ /** Widest gap the closing bridges, about a wall thickness; clamped to 0.5. Default 0.3. */
18
+ maxGap?: number;
19
+ /** Speckle opening radius in cells (0 disables). Default 1. */ openRadiusCells?: number;
20
+ /** Solid components below this area (m²) are dropped. Default 0.02. */ minComponentArea?: number;
21
+ /** Enclosed holes below this area (m²) are filled. Default 0.5. */ minHoleArea?: number;
22
+ /** Douglas-Peucker tolerance in cells. Default 1.5. */ simplifyToleranceCells?: number;
23
+ /** Refit edges to the points. Default true. */ snap?: boolean;
24
+ /** Evidence band beside an edge, in cells (at most 16). Default 3. */ snapDistanceCells?: number;
25
+ /** Fewest points to refit an edge. Default 8. */ minSnapPoints?: number;
26
+ /** Largest squaring move, in cells (at most 32). Default 4. */ maxVertexMoveCells?: number;
27
+ /** Square edges to the dominant direction. Default true. */ square?: boolean;
28
+ /** Default 3. */ squareAngleToleranceDeg?: number;
29
+ /** Squares edges whose ends move at most this far. Default 0.03. */ squareOffsetTolerance?: number;
30
+ }
31
+ /** world = origin + u * uAxis + v * vAxis */
32
+ export interface ScanOutlinePlaneFrameJs {
33
+ origin: [number, number, number];
34
+ uAxis: [number, number, number];
35
+ vAxis: [number, number, number];
36
+ }
37
+ export interface ScanOutlineDiagnosticsJs {
38
+ inputPoints: number; usedPoints: number; nonFinitePoints: number; outlierPoints: number;
39
+ cellSize: number; gridWidth: number; gridHeight: number;
40
+ cellCapHit: boolean; maxGapClamped: boolean; countThreshold: number;
41
+ /** f32 step at the largest input coordinate; `coordinatePrecisionDegraded` when above a tenth of a cell. Pass coordinates local to the slab. */
42
+ coordinateSpacingMetres: number; coordinatePrecisionDegraded: boolean;
43
+ occupiedCells: number; solidCells: number; componentsDropped: number; holesFilled: number;
44
+ ringCount: number; outerRingCount: number; holeRingCount: number; vertexCount: number;
45
+ simplifyReinsertions: number; snappedEdges: number;
46
+ /** Degrees in [0, 90); absent when no edge was long enough to tell. */
47
+ dominantAngleDeg?: number;
48
+ squaredEdges: number; revertedMoves: number;
49
+ }
50
+
51
+
52
+
4
53
  /** Exact browser mesh RTC frame, in IFC Z-up metres. */
5
54
  export interface RtcFrame {
6
55
  x: number;
@@ -182,6 +231,22 @@ export interface ExtrusionDefinitionsJs {
182
231
 
183
232
 
184
233
 
234
+ export class AlignmentAxisJs {
235
+ free(): void;
236
+ [Symbol.dispose](): void;
237
+ /**
238
+ * [horizontal distance, IFC Z-up point XYZ, normalized world tangent XYZ].
239
+ * Coordinates remain f64 absolute metres; no renderer origin is applied.
240
+ */
241
+ evaluate(distance_m: number): Float64Array;
242
+ constructor(content: string, express_id: number);
243
+ readonly GlobalId: string | undefined;
244
+ readonly Name: string | undefined;
245
+ readonly approximate: boolean;
246
+ readonly expressId: number;
247
+ readonly geometricHorizontalLengthMeters: number;
248
+ }
249
+
185
250
  /**
186
251
  * The overlap solid of one clashing pair, or the reason there is none.
187
252
  */
@@ -937,6 +1002,11 @@ export class IfcAPI {
937
1002
  * Does not mutate the IFC snapshot or decode the host-owned image.
938
1003
  */
939
1004
  planCapturedMesh(content: Uint8Array, request_json: string): Uint8Array;
1005
+ /**
1006
+ * Plan opt-in map similarity normalization on a completed STEP export.
1007
+ * Returns entity patches, allocated IDs and atomic refusal warnings as JSON.
1008
+ */
1009
+ planMapConversionNormalization(content: Uint8Array): string;
940
1010
  /**
941
1011
  * Registered mesh observations over canonical target albedo. Host verifies
942
1012
  * original GLB identity against decoded source mesh/image and freezes frames.
@@ -1034,6 +1104,15 @@ export class IfcAPI {
1034
1104
  * Byte-for-byte identical output — it delegates to the legacy twin.
1035
1105
  */
1036
1106
  processGeometryBatchPartitionedFromSource(jobs_flat: Uint32Array, unit_scale: number, rtc_x: number, rtc_y: number, rtc_z: number, needs_shift: boolean, void_keys: Uint32Array, void_counts: Uint32Array, void_values: Uint32Array, style_ids: Uint32Array, style_colors: Uint8Array, plane_angle_to_radians?: number | null, material_element_ids?: Uint32Array | null, material_color_counts?: Uint32Array | null, material_colors_rgba?: Uint8Array | null): PartitionedBatch;
1107
+ /**
1108
+ * Propose IFC walls, slabs, columns and pipes from a scan segmentation
1109
+ * report (#6894). `report_json` is the JSON `segmentScanPoints`
1110
+ * returned; `options_json` is a camelCase `ScanProposalOptions` object
1111
+ * (`{}` for the defaults; `scanToModel` maps the report's frame into the
1112
+ * IFC model frame). Returns the UTF-8 JSON `ScanProposalReport` in the
1113
+ * model frame (Z up, metres). Pure: loads and changes nothing.
1114
+ */
1115
+ proposeScanElements(report_json: string, options_json: string): Uint8Array;
1037
1116
  /**
1038
1117
  * Fit bounded manual correspondences in source metres -> IFC world Z-up
1039
1118
  * metres, reporting held-out errors separately. Does not load or move models.
@@ -1061,12 +1140,20 @@ export class IfcAPI {
1061
1140
  * Fast entity scanning using SIMD-accelerated Rust scanner
1062
1141
  * Returns array of entity references for data model parsing
1063
1142
  * Much faster than TypeScript byte-by-byte scanning (5-10x speedup)
1143
+ *
1144
+ * The returned array also carries two own properties describing what the
1145
+ * scan refused (#7393): `oversizedIdCount` (records skipped because their
1146
+ * express id does not fit u32, #3395) and `malformedRecordCount` (0 or 1:
1147
+ * whether a record was dropped for having no terminating `;`, #3695).
1064
1148
  */
1065
1149
  scanEntitiesFast(content: string): any;
1066
1150
  /**
1067
1151
  * Fast entity scanning from raw bytes (avoids TextDecoder.decode on JS side).
1068
1152
  * Accepts Uint8Array directly — saves ~2-5s for 487MB files by skipping
1069
1153
  * JS string creation and UTF-16→UTF-8 conversion.
1154
+ *
1155
+ * Carries the same `oversizedIdCount` / `malformedRecordCount` array
1156
+ * properties as `scanEntitiesFast` (#7393).
1070
1157
  */
1071
1158
  scanEntitiesFastBytes(data: Uint8Array): any;
1072
1159
  /**
@@ -1119,6 +1206,13 @@ export class IfcAPI {
1119
1206
  * Much faster than scanning all entities (3x speedup for large files)
1120
1207
  */
1121
1208
  scanGeometryEntitiesFast(content: string): any;
1209
+ /**
1210
+ * Detect planes and cylinders (columns, pipes) in a point cloud (#6870). `positions` are xyz f32 metres
1211
+ * (at most 100,000,000 points); `options_json` is a camelCase
1212
+ * `ScanSegmentationOptions` object (`{}` for the defaults). Returns the
1213
+ * UTF-8 JSON `ScanSegmentationReport`. Pure: loads and changes nothing.
1214
+ */
1215
+ segmentScanPoints(positions: Float32Array, options_json: string): Uint8Array;
1122
1216
  /**
1123
1217
  * Enable or disable per-entity geometry fingerprinting in
1124
1218
  * `processGeometryBatch`, used by the viewer's revision-diff feature.
@@ -1789,6 +1883,50 @@ export class ProfileEntryJs {
1789
1883
  readonly transform: Float32Array;
1790
1884
  }
1791
1885
 
1886
+ /**
1887
+ * The traced outline. Owns wasm memory: call `free()`.
1888
+ */
1889
+ export class ScanOutlineJs {
1890
+ private constructor();
1891
+ free(): void;
1892
+ [Symbol.dispose](): void;
1893
+ /**
1894
+ * Every ring's plane coordinates concatenated, `[u0, v0, u1, v1, …]`.
1895
+ */
1896
+ coords(): Float64Array;
1897
+ /**
1898
+ * What the run did: cell size, cap hits, ring counts, repairs.
1899
+ */
1900
+ diagnostics(): ScanOutlineDiagnosticsJs;
1901
+ /**
1902
+ * Vertex count of each ring, in `coords()` order.
1903
+ */
1904
+ ringLengths(): Uint32Array;
1905
+ /**
1906
+ * The ring directly containing each ring (a hole's outer boundary, an
1907
+ * island's hole), or `-1` at top level.
1908
+ */
1909
+ ringParents(): Int32Array;
1910
+ /**
1911
+ * Ring index at which each shape starts; entry `s` is shape `s`'s outer
1912
+ * ring and the rings up to the next entry are its holes.
1913
+ */
1914
+ shapeOffsets(): Uint32Array;
1915
+ /**
1916
+ * Every ring mapped through the plane frame, `[x0, y0, z0, …]` in
1917
+ * `coords()` order, or `undefined` when no frame was given.
1918
+ */
1919
+ worldCoords(): Float64Array | undefined;
1920
+ /**
1921
+ * Total number of rings (outer boundaries and holes).
1922
+ */
1923
+ readonly ringCount: number;
1924
+ /**
1925
+ * Number of outer boundaries.
1926
+ */
1927
+ readonly shapeCount: number;
1928
+ }
1929
+
1792
1930
  /**
1793
1931
  * Flat result of `simplifyMeshes`: per surviving element `i`,
1794
1932
  * `vertexCounts[i]` vertices and `indexCounts[i]` indices taken in order
@@ -2327,6 +2465,14 @@ export function meshOutline2d(positions: Float32Array, indices: Uint32Array, axi
2327
2465
  */
2328
2466
  export function resolve2d(a: Contours2D): Contours2D;
2329
2467
 
2468
+ /**
2469
+ * Install (or, with `undefined`, remove) the callback invoked at most once a
2470
+ * second while geometry work is in progress inside a WASM call. It runs
2471
+ * synchronously inside that call, so it must only do something cheap such as
2472
+ * `postMessage`, and must not call back into this module.
2473
+ */
2474
+ export function setGeometryProgressCallback(callback?: Function | null): void;
2475
+
2330
2476
  /**
2331
2477
  * Split a mesh into one closed solid per zone, plus the remainder.
2332
2478
  *
@@ -2378,6 +2524,14 @@ export function resolve2d(a: Contours2D): Contours2D;
2378
2524
  */
2379
2525
  export function splitMeshByZones(positions: Float64Array, indices: Uint32Array, zones: Float64Array, footprints?: Float64Array | null, footprint_counts?: Uint32Array | null): ZoneSplitJs | undefined;
2380
2526
 
2527
+ /**
2528
+ * Trace closed outlines from slab points given in plane coordinates.
2529
+ *
2530
+ * THROWS on invalid options or plane frame (unknown field, non-finite or
2531
+ * out-of-range value). Points that are not finite are skipped and counted.
2532
+ */
2533
+ export function traceScanOutline(plane_xy: Float32Array, options?: ScanOutlineOptionsJs | null, plane_frame?: ScanOutlinePlaneFrameJs | null): ScanOutlineJs;
2534
+
2381
2535
  /**
2382
2536
  * `a ∪ b`.
2383
2537
  */
@@ -2402,6 +2556,7 @@ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembl
2402
2556
 
2403
2557
  export interface InitOutput {
2404
2558
  readonly memory: WebAssembly.Memory;
2559
+ readonly __wbg_alignmentaxisjs_free: (a: number, b: number) => void;
2405
2560
  readonly __wbg_clashintersectionsolidjs_free: (a: number, b: number) => void;
2406
2561
  readonly __wbg_clashrunresult_free: (a: number, b: number) => void;
2407
2562
  readonly __wbg_clashsession_free: (a: number, b: number) => void;
@@ -2416,6 +2571,7 @@ export interface InitOutput {
2416
2571
  readonly __wbg_partitionedbatch_free: (a: number, b: number) => void;
2417
2572
  readonly __wbg_profilecollection_free: (a: number, b: number) => void;
2418
2573
  readonly __wbg_profileentryjs_free: (a: number, b: number) => void;
2574
+ readonly __wbg_scanoutlinejs_free: (a: number, b: number) => void;
2419
2575
  readonly __wbg_simplifiedmeshes_free: (a: number, b: number) => void;
2420
2576
  readonly __wbg_spaceplatehandle_free: (a: number, b: number) => void;
2421
2577
  readonly __wbg_symboliccircle_free: (a: number, b: number) => void;
@@ -2425,6 +2581,13 @@ export interface InitOutput {
2425
2581
  readonly __wbg_symbolictext_free: (a: number, b: number) => void;
2426
2582
  readonly __wbg_zonepiecejs_free: (a: number, b: number) => void;
2427
2583
  readonly __wbg_zonesplitjs_free: (a: number, b: number) => void;
2584
+ readonly alignmentaxisjs_GlobalId: (a: number, b: number) => void;
2585
+ readonly alignmentaxisjs_Name: (a: number, b: number) => void;
2586
+ readonly alignmentaxisjs_approximate: (a: number) => number;
2587
+ readonly alignmentaxisjs_evaluate: (a: number, b: number, c: number) => void;
2588
+ readonly alignmentaxisjs_expressId: (a: number) => number;
2589
+ readonly alignmentaxisjs_geometricHorizontalLengthMeters: (a: number) => number;
2590
+ readonly alignmentaxisjs_new: (a: number, b: number, c: number, d: number) => void;
2428
2591
  readonly clashIntersectionSolid: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
2429
2592
  readonly clashintersectionsolidjs_degenerateReason: (a: number, b: number) => void;
2430
2593
  readonly clashintersectionsolidjs_indices: (a: number, b: number) => void;
@@ -2512,6 +2675,7 @@ export interface InitOutput {
2512
2675
  readonly ifcapi_planAnnotationPlane: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
2513
2676
  readonly ifcapi_planAppearance: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
2514
2677
  readonly ifcapi_planCapturedMesh: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
2678
+ readonly ifcapi_planMapConversionNormalization: (a: number, b: number, c: number, d: number) => void;
2515
2679
  readonly ifcapi_planMeshTransfer: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
2516
2680
  readonly ifcapi_planPageAppearance: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
2517
2681
  readonly ifcapi_planPdfFillAnnotation: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
@@ -2524,6 +2688,7 @@ export interface InitOutput {
2524
2688
  readonly ifcapi_processGeometryBatchInstanced: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number, s: number, t: number, u: number, v: number, w: number, x: number, y: number, z: number, a1: number, b1: number, c1: number) => void;
2525
2689
  readonly ifcapi_processGeometryBatchPartitioned: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number, s: number, t: number, u: number, v: number, w: number, x: number, y: number, z: number, a1: number, b1: number) => number;
2526
2690
  readonly ifcapi_processGeometryBatchPartitionedFromSource: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number, s: number, t: number, u: number, v: number, w: number, x: number, y: number, z: number) => number;
2691
+ readonly ifcapi_proposeScanElements: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
2527
2692
  readonly ifcapi_registerScanCorrespondences: (a: number, b: number, c: number, d: number) => void;
2528
2693
  readonly ifcapi_resolveStyledItemsShard: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
2529
2694
  readonly ifcapi_resolveStyledItemsShardFromSource: (a: number, b: number, c: number, d: number) => void;
@@ -2532,6 +2697,7 @@ export interface InitOutput {
2532
2697
  readonly ifcapi_scanEntityIndexShard: (a: number, b: number, c: number, d: number, e: number) => number;
2533
2698
  readonly ifcapi_scanEntityIndexShardFromSource: (a: number, b: number, c: number) => number;
2534
2699
  readonly ifcapi_scanGeometryEntitiesFast: (a: number, b: number, c: number) => number;
2700
+ readonly ifcapi_segmentScanPoints: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
2535
2701
  readonly ifcapi_setComputeGeometryHashes: (a: number, b: number, c: number) => void;
2536
2702
  readonly ifcapi_setEntityIndex: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
2537
2703
  readonly ifcapi_setInstantiatedTypeIds: (a: number, b: number, c: number) => void;
@@ -2620,6 +2786,15 @@ export interface InitOutput {
2620
2786
  readonly profileentryjs_outerPoints: (a: number) => number;
2621
2787
  readonly profileentryjs_transform: (a: number) => number;
2622
2788
  readonly resolve2d: (a: number) => number;
2789
+ readonly scanoutlinejs_coords: (a: number) => number;
2790
+ readonly scanoutlinejs_diagnostics: (a: number, b: number) => void;
2791
+ readonly scanoutlinejs_ringCount: (a: number) => number;
2792
+ readonly scanoutlinejs_ringLengths: (a: number) => number;
2793
+ readonly scanoutlinejs_ringParents: (a: number) => number;
2794
+ readonly scanoutlinejs_shapeCount: (a: number) => number;
2795
+ readonly scanoutlinejs_shapeOffsets: (a: number) => number;
2796
+ readonly scanoutlinejs_worldCoords: (a: number) => number;
2797
+ readonly setGeometryProgressCallback: (a: number) => void;
2623
2798
  readonly simplifiedmeshes_cavitiesDropped: (a: number, b: number) => void;
2624
2799
  readonly simplifiedmeshes_elementIds: (a: number, b: number) => void;
2625
2800
  readonly simplifiedmeshes_indexCounts: (a: number, b: number) => void;
@@ -2712,6 +2887,7 @@ export interface InitOutput {
2712
2887
  readonly symbolictext_repIdentifier: (a: number, b: number) => void;
2713
2888
  readonly symbolictext_x: (a: number) => number;
2714
2889
  readonly symbolictext_y: (a: number) => number;
2890
+ readonly traceScanOutline: (a: number, b: number, c: number, d: number, e: number) => void;
2715
2891
  readonly union2d: (a: number, b: number) => number;
2716
2892
  readonly version: (a: number) => void;
2717
2893
  readonly zonepiecejs_indices: (a: number) => number;
package/pkg/ifc-lite.js CHANGED
@@ -1,5 +1,125 @@
1
1
  /* @ts-self-types="./ifc-lite.d.ts" */
2
2
 
3
+ export class AlignmentAxisJs {
4
+ __destroy_into_raw() {
5
+ const ptr = this.__wbg_ptr;
6
+ this.__wbg_ptr = 0;
7
+ AlignmentAxisJsFinalization.unregister(this);
8
+ return ptr;
9
+ }
10
+ free() {
11
+ const ptr = this.__destroy_into_raw();
12
+ wasm.__wbg_alignmentaxisjs_free(ptr, 0);
13
+ }
14
+ /**
15
+ * @returns {string | undefined}
16
+ */
17
+ get GlobalId() {
18
+ try {
19
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
20
+ wasm.alignmentaxisjs_GlobalId(retptr, this.__wbg_ptr);
21
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
22
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
23
+ let v1;
24
+ if (r0 !== 0) {
25
+ v1 = getStringFromWasm0(r0, r1).slice();
26
+ wasm.__wbindgen_export4(r0, r1 * 1, 1);
27
+ }
28
+ return v1;
29
+ } finally {
30
+ wasm.__wbindgen_add_to_stack_pointer(16);
31
+ }
32
+ }
33
+ /**
34
+ * @returns {string | undefined}
35
+ */
36
+ get Name() {
37
+ try {
38
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
39
+ wasm.alignmentaxisjs_Name(retptr, this.__wbg_ptr);
40
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
41
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
42
+ let v1;
43
+ if (r0 !== 0) {
44
+ v1 = getStringFromWasm0(r0, r1).slice();
45
+ wasm.__wbindgen_export4(r0, r1 * 1, 1);
46
+ }
47
+ return v1;
48
+ } finally {
49
+ wasm.__wbindgen_add_to_stack_pointer(16);
50
+ }
51
+ }
52
+ /**
53
+ * @returns {boolean}
54
+ */
55
+ get approximate() {
56
+ const ret = wasm.alignmentaxisjs_approximate(this.__wbg_ptr);
57
+ return ret !== 0;
58
+ }
59
+ /**
60
+ * [horizontal distance, IFC Z-up point XYZ, normalized world tangent XYZ].
61
+ * Coordinates remain f64 absolute metres; no renderer origin is applied.
62
+ * @param {number} distance_m
63
+ * @returns {Float64Array}
64
+ */
65
+ evaluate(distance_m) {
66
+ try {
67
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
68
+ wasm.alignmentaxisjs_evaluate(retptr, this.__wbg_ptr, distance_m);
69
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
70
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
71
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
72
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
73
+ if (r3) {
74
+ throw takeObject(r2);
75
+ }
76
+ var v1 = getArrayF64FromWasm0(r0, r1).slice();
77
+ wasm.__wbindgen_export4(r0, r1 * 8, 8);
78
+ return v1;
79
+ } finally {
80
+ wasm.__wbindgen_add_to_stack_pointer(16);
81
+ }
82
+ }
83
+ /**
84
+ * @returns {number}
85
+ */
86
+ get expressId() {
87
+ const ret = wasm.alignmentaxisjs_expressId(this.__wbg_ptr);
88
+ return ret >>> 0;
89
+ }
90
+ /**
91
+ * @returns {number}
92
+ */
93
+ get geometricHorizontalLengthMeters() {
94
+ const ret = wasm.alignmentaxisjs_geometricHorizontalLengthMeters(this.__wbg_ptr);
95
+ return ret;
96
+ }
97
+ /**
98
+ * @param {string} content
99
+ * @param {number} express_id
100
+ */
101
+ constructor(content, express_id) {
102
+ try {
103
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
104
+ const ptr0 = passStringToWasm0(content, wasm.__wbindgen_export, wasm.__wbindgen_export2);
105
+ const len0 = WASM_VECTOR_LEN;
106
+ wasm.alignmentaxisjs_new(retptr, ptr0, len0, express_id);
107
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
108
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
109
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
110
+ if (r2) {
111
+ throw takeObject(r1);
112
+ }
113
+ this.__wbg_ptr = r0;
114
+ AlignmentAxisJsFinalization.register(this, this.__wbg_ptr, this);
115
+ return this;
116
+ } finally {
117
+ wasm.__wbindgen_add_to_stack_pointer(16);
118
+ }
119
+ }
120
+ }
121
+ if (Symbol.dispose) AlignmentAxisJs.prototype[Symbol.dispose] = AlignmentAxisJs.prototype.free;
122
+
3
123
  /**
4
124
  * The overlap solid of one clashing pair, or the reason there is none.
5
125
  */
@@ -2143,6 +2263,38 @@ export class IfcAPI {
2143
2263
  wasm.__wbindgen_add_to_stack_pointer(16);
2144
2264
  }
2145
2265
  }
2266
+ /**
2267
+ * Plan opt-in map similarity normalization on a completed STEP export.
2268
+ * Returns entity patches, allocated IDs and atomic refusal warnings as JSON.
2269
+ * @param {Uint8Array} content
2270
+ * @returns {string}
2271
+ */
2272
+ planMapConversionNormalization(content) {
2273
+ let deferred3_0;
2274
+ let deferred3_1;
2275
+ try {
2276
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
2277
+ const ptr0 = passArray8ToWasm0(content, wasm.__wbindgen_export);
2278
+ const len0 = WASM_VECTOR_LEN;
2279
+ wasm.ifcapi_planMapConversionNormalization(retptr, this.__wbg_ptr, ptr0, len0);
2280
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
2281
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
2282
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
2283
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
2284
+ var ptr2 = r0;
2285
+ var len2 = r1;
2286
+ if (r3) {
2287
+ ptr2 = 0; len2 = 0;
2288
+ throw takeObject(r2);
2289
+ }
2290
+ deferred3_0 = ptr2;
2291
+ deferred3_1 = len2;
2292
+ return getStringFromWasm0(ptr2, len2);
2293
+ } finally {
2294
+ wasm.__wbindgen_add_to_stack_pointer(16);
2295
+ wasm.__wbindgen_export4(deferred3_0, deferred3_1, 1);
2296
+ }
2297
+ }
2146
2298
  /**
2147
2299
  * Registered mesh observations over canonical target albedo. Host verifies
2148
2300
  * original GLB identity against decoded source mesh/image and freezes frames.
@@ -2627,6 +2779,39 @@ export class IfcAPI {
2627
2779
  const ret = wasm.ifcapi_processGeometryBatchPartitionedFromSource(this.__wbg_ptr, ptr0, len0, unit_scale, rtc_x, rtc_y, rtc_z, needs_shift, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, !isLikeNone(plane_angle_to_radians), isLikeNone(plane_angle_to_radians) ? 0 : plane_angle_to_radians, ptr6, len6, ptr7, len7, ptr8, len8);
2628
2780
  return PartitionedBatch.__wrap(ret);
2629
2781
  }
2782
+ /**
2783
+ * Propose IFC walls, slabs, columns and pipes from a scan segmentation
2784
+ * report (#6894). `report_json` is the JSON `segmentScanPoints`
2785
+ * returned; `options_json` is a camelCase `ScanProposalOptions` object
2786
+ * (`{}` for the defaults; `scanToModel` maps the report's frame into the
2787
+ * IFC model frame). Returns the UTF-8 JSON `ScanProposalReport` in the
2788
+ * model frame (Z up, metres). Pure: loads and changes nothing.
2789
+ * @param {string} report_json
2790
+ * @param {string} options_json
2791
+ * @returns {Uint8Array}
2792
+ */
2793
+ proposeScanElements(report_json, options_json) {
2794
+ try {
2795
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
2796
+ const ptr0 = passStringToWasm0(report_json, wasm.__wbindgen_export, wasm.__wbindgen_export2);
2797
+ const len0 = WASM_VECTOR_LEN;
2798
+ const ptr1 = passStringToWasm0(options_json, wasm.__wbindgen_export, wasm.__wbindgen_export2);
2799
+ const len1 = WASM_VECTOR_LEN;
2800
+ wasm.ifcapi_proposeScanElements(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1);
2801
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
2802
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
2803
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
2804
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
2805
+ if (r3) {
2806
+ throw takeObject(r2);
2807
+ }
2808
+ var v3 = getArrayU8FromWasm0(r0, r1).slice();
2809
+ wasm.__wbindgen_export4(r0, r1 * 1, 1);
2810
+ return v3;
2811
+ } finally {
2812
+ wasm.__wbindgen_add_to_stack_pointer(16);
2813
+ }
2814
+ }
2630
2815
  /**
2631
2816
  * Fit bounded manual correspondences in source metres -> IFC world Z-up
2632
2817
  * metres, reporting held-out errors separately. Does not load or move models.
@@ -2714,6 +2899,11 @@ export class IfcAPI {
2714
2899
  * Fast entity scanning using SIMD-accelerated Rust scanner
2715
2900
  * Returns array of entity references for data model parsing
2716
2901
  * Much faster than TypeScript byte-by-byte scanning (5-10x speedup)
2902
+ *
2903
+ * The returned array also carries two own properties describing what the
2904
+ * scan refused (#7393): `oversizedIdCount` (records skipped because their
2905
+ * express id does not fit u32, #3395) and `malformedRecordCount` (0 or 1:
2906
+ * whether a record was dropped for having no terminating `;`, #3695).
2717
2907
  * @param {string} content
2718
2908
  * @returns {any}
2719
2909
  */
@@ -2727,6 +2917,9 @@ export class IfcAPI {
2727
2917
  * Fast entity scanning from raw bytes (avoids TextDecoder.decode on JS side).
2728
2918
  * Accepts Uint8Array directly — saves ~2-5s for 487MB files by skipping
2729
2919
  * JS string creation and UTF-16→UTF-8 conversion.
2920
+ *
2921
+ * Carries the same `oversizedIdCount` / `malformedRecordCount` array
2922
+ * properties as `scanEntitiesFast` (#7393).
2730
2923
  * @param {Uint8Array} data
2731
2924
  * @returns {any}
2732
2925
  */
@@ -2808,6 +3001,37 @@ export class IfcAPI {
2808
3001
  const ret = wasm.ifcapi_scanGeometryEntitiesFast(this.__wbg_ptr, ptr0, len0);
2809
3002
  return takeObject(ret);
2810
3003
  }
3004
+ /**
3005
+ * Detect planes and cylinders (columns, pipes) in a point cloud (#6870). `positions` are xyz f32 metres
3006
+ * (at most 100,000,000 points); `options_json` is a camelCase
3007
+ * `ScanSegmentationOptions` object (`{}` for the defaults). Returns the
3008
+ * UTF-8 JSON `ScanSegmentationReport`. Pure: loads and changes nothing.
3009
+ * @param {Float32Array} positions
3010
+ * @param {string} options_json
3011
+ * @returns {Uint8Array}
3012
+ */
3013
+ segmentScanPoints(positions, options_json) {
3014
+ try {
3015
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
3016
+ const ptr0 = passArrayF32ToWasm0(positions, wasm.__wbindgen_export);
3017
+ const len0 = WASM_VECTOR_LEN;
3018
+ const ptr1 = passStringToWasm0(options_json, wasm.__wbindgen_export, wasm.__wbindgen_export2);
3019
+ const len1 = WASM_VECTOR_LEN;
3020
+ wasm.ifcapi_segmentScanPoints(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1);
3021
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
3022
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
3023
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
3024
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
3025
+ if (r3) {
3026
+ throw takeObject(r2);
3027
+ }
3028
+ var v3 = getArrayU8FromWasm0(r0, r1).slice();
3029
+ wasm.__wbindgen_export4(r0, r1 * 1, 1);
3030
+ return v3;
3031
+ } finally {
3032
+ wasm.__wbindgen_add_to_stack_pointer(16);
3033
+ }
3034
+ }
2811
3035
  /**
2812
3036
  * Enable or disable per-entity geometry fingerprinting in
2813
3037
  * `processGeometryBatch`, used by the viewer's revision-diff feature.
@@ -4194,6 +4418,107 @@ export class ProfileEntryJs {
4194
4418
  }
4195
4419
  if (Symbol.dispose) ProfileEntryJs.prototype[Symbol.dispose] = ProfileEntryJs.prototype.free;
4196
4420
 
4421
+ /**
4422
+ * The traced outline. Owns wasm memory: call `free()`.
4423
+ */
4424
+ export class ScanOutlineJs {
4425
+ static __wrap(ptr) {
4426
+ const obj = Object.create(ScanOutlineJs.prototype);
4427
+ obj.__wbg_ptr = ptr;
4428
+ ScanOutlineJsFinalization.register(obj, obj.__wbg_ptr, obj);
4429
+ return obj;
4430
+ }
4431
+ __destroy_into_raw() {
4432
+ const ptr = this.__wbg_ptr;
4433
+ this.__wbg_ptr = 0;
4434
+ ScanOutlineJsFinalization.unregister(this);
4435
+ return ptr;
4436
+ }
4437
+ free() {
4438
+ const ptr = this.__destroy_into_raw();
4439
+ wasm.__wbg_scanoutlinejs_free(ptr, 0);
4440
+ }
4441
+ /**
4442
+ * Every ring's plane coordinates concatenated, `[u0, v0, u1, v1, …]`.
4443
+ * @returns {Float64Array}
4444
+ */
4445
+ coords() {
4446
+ const ret = wasm.scanoutlinejs_coords(this.__wbg_ptr);
4447
+ return takeObject(ret);
4448
+ }
4449
+ /**
4450
+ * What the run did: cell size, cap hits, ring counts, repairs.
4451
+ * @returns {ScanOutlineDiagnosticsJs}
4452
+ */
4453
+ diagnostics() {
4454
+ try {
4455
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
4456
+ wasm.scanoutlinejs_diagnostics(retptr, this.__wbg_ptr);
4457
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
4458
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
4459
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
4460
+ if (r2) {
4461
+ throw takeObject(r1);
4462
+ }
4463
+ return takeObject(r0);
4464
+ } finally {
4465
+ wasm.__wbindgen_add_to_stack_pointer(16);
4466
+ }
4467
+ }
4468
+ /**
4469
+ * Total number of rings (outer boundaries and holes).
4470
+ * @returns {number}
4471
+ */
4472
+ get ringCount() {
4473
+ const ret = wasm.scanoutlinejs_ringCount(this.__wbg_ptr);
4474
+ return ret >>> 0;
4475
+ }
4476
+ /**
4477
+ * Vertex count of each ring, in `coords()` order.
4478
+ * @returns {Uint32Array}
4479
+ */
4480
+ ringLengths() {
4481
+ const ret = wasm.scanoutlinejs_ringLengths(this.__wbg_ptr);
4482
+ return takeObject(ret);
4483
+ }
4484
+ /**
4485
+ * The ring directly containing each ring (a hole's outer boundary, an
4486
+ * island's hole), or `-1` at top level.
4487
+ * @returns {Int32Array}
4488
+ */
4489
+ ringParents() {
4490
+ const ret = wasm.scanoutlinejs_ringParents(this.__wbg_ptr);
4491
+ return takeObject(ret);
4492
+ }
4493
+ /**
4494
+ * Number of outer boundaries.
4495
+ * @returns {number}
4496
+ */
4497
+ get shapeCount() {
4498
+ const ret = wasm.scanoutlinejs_shapeCount(this.__wbg_ptr);
4499
+ return ret >>> 0;
4500
+ }
4501
+ /**
4502
+ * Ring index at which each shape starts; entry `s` is shape `s`'s outer
4503
+ * ring and the rings up to the next entry are its holes.
4504
+ * @returns {Uint32Array}
4505
+ */
4506
+ shapeOffsets() {
4507
+ const ret = wasm.scanoutlinejs_shapeOffsets(this.__wbg_ptr);
4508
+ return takeObject(ret);
4509
+ }
4510
+ /**
4511
+ * Every ring mapped through the plane frame, `[x0, y0, z0, …]` in
4512
+ * `coords()` order, or `undefined` when no frame was given.
4513
+ * @returns {Float64Array | undefined}
4514
+ */
4515
+ worldCoords() {
4516
+ const ret = wasm.scanoutlinejs_worldCoords(this.__wbg_ptr);
4517
+ return takeObject(ret);
4518
+ }
4519
+ }
4520
+ if (Symbol.dispose) ScanOutlineJs.prototype[Symbol.dispose] = ScanOutlineJs.prototype.free;
4521
+
4197
4522
  /**
4198
4523
  * Flat result of `simplifyMeshes`: per surviving element `i`,
4199
4524
  * `vertexCounts[i]` vertices and `indexCounts[i]` indices taken in order
@@ -5963,6 +6288,17 @@ export function resolve2d(a) {
5963
6288
  return Contours2D.__wrap(ret);
5964
6289
  }
5965
6290
 
6291
+ /**
6292
+ * Install (or, with `undefined`, remove) the callback invoked at most once a
6293
+ * second while geometry work is in progress inside a WASM call. It runs
6294
+ * synchronously inside that call, so it must only do something cheap such as
6295
+ * `postMessage`, and must not call back into this module.
6296
+ * @param {Function | null} [callback]
6297
+ */
6298
+ export function setGeometryProgressCallback(callback) {
6299
+ wasm.setGeometryProgressCallback(isLikeNone(callback) ? 0 : addHeapObject(callback));
6300
+ }
6301
+
5966
6302
  /**
5967
6303
  * Split a mesh into one closed solid per zone, plus the remainder.
5968
6304
  *
@@ -6033,6 +6369,34 @@ export function splitMeshByZones(positions, indices, zones, footprints, footprin
6033
6369
  return ret === 0 ? undefined : ZoneSplitJs.__wrap(ret);
6034
6370
  }
6035
6371
 
6372
+ /**
6373
+ * Trace closed outlines from slab points given in plane coordinates.
6374
+ *
6375
+ * THROWS on invalid options or plane frame (unknown field, non-finite or
6376
+ * out-of-range value). Points that are not finite are skipped and counted.
6377
+ * @param {Float32Array} plane_xy
6378
+ * @param {ScanOutlineOptionsJs | null} [options]
6379
+ * @param {ScanOutlinePlaneFrameJs | null} [plane_frame]
6380
+ * @returns {ScanOutlineJs}
6381
+ */
6382
+ export function traceScanOutline(plane_xy, options, plane_frame) {
6383
+ try {
6384
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
6385
+ const ptr0 = passArrayF32ToWasm0(plane_xy, wasm.__wbindgen_export);
6386
+ const len0 = WASM_VECTOR_LEN;
6387
+ wasm.traceScanOutline(retptr, ptr0, len0, isLikeNone(options) ? 0 : addHeapObject(options), isLikeNone(plane_frame) ? 0 : addHeapObject(plane_frame));
6388
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
6389
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
6390
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
6391
+ if (r2) {
6392
+ throw takeObject(r1);
6393
+ }
6394
+ return ScanOutlineJs.__wrap(r0);
6395
+ } finally {
6396
+ wasm.__wbindgen_add_to_stack_pointer(16);
6397
+ }
6398
+ }
6399
+
6036
6400
  /**
6037
6401
  * `a ∪ b`.
6038
6402
  * @param {Contours2D} a
@@ -6166,10 +6530,18 @@ function __wbg_get_imports() {
6166
6530
  __wbg___wbindgen_throw_344f42d3211c4765: function(arg0, arg1) {
6167
6531
  throw new Error(getStringFromWasm0(arg0, arg1));
6168
6532
  },
6533
+ __wbg_call_8a2dd23819f8a60a: function() { return handleError(function (arg0, arg1) {
6534
+ const ret = getObject(arg0).call(getObject(arg1));
6535
+ return addHeapObject(ret);
6536
+ }, arguments); },
6169
6537
  __wbg_call_a6e5c5dce5018821: function() { return handleError(function (arg0, arg1, arg2) {
6170
6538
  const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));
6171
6539
  return addHeapObject(ret);
6172
6540
  }, arguments); },
6541
+ __wbg_entries_015dc610cd81ede0: function(arg0) {
6542
+ const ret = Object.entries(getObject(arg0));
6543
+ return addHeapObject(ret);
6544
+ },
6173
6545
  __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {
6174
6546
  let deferred0_0;
6175
6547
  let deferred0_1;
@@ -6181,10 +6553,22 @@ function __wbg_get_imports() {
6181
6553
  wasm.__wbindgen_export4(deferred0_0, deferred0_1, 1);
6182
6554
  }
6183
6555
  },
6556
+ __wbg_from_13e323c65fc8f464: function(arg0) {
6557
+ const ret = Array.from(getObject(arg0));
6558
+ return addHeapObject(ret);
6559
+ },
6560
+ __wbg_get_507a50627bffa49b: function(arg0, arg1) {
6561
+ const ret = getObject(arg0)[arg1 >>> 0];
6562
+ return addHeapObject(ret);
6563
+ },
6184
6564
  __wbg_get_78f252d074a84d0b: function() { return handleError(function (arg0, arg1) {
6185
6565
  const ret = Reflect.get(getObject(arg0), getObject(arg1));
6186
6566
  return addHeapObject(ret);
6187
6567
  }, arguments); },
6568
+ __wbg_get_unchecked_6e0ad6d2a41b06f6: function(arg0, arg1) {
6569
+ const ret = getObject(arg0)[arg1 >>> 0];
6570
+ return addHeapObject(ret);
6571
+ },
6188
6572
  __wbg_get_with_ref_key_6412cf3094599694: function(arg0, arg1) {
6189
6573
  const ret = getObject(arg0)[getObject(arg1)];
6190
6574
  return addHeapObject(ret);
@@ -6224,6 +6608,10 @@ function __wbg_get_imports() {
6224
6608
  const ret = getObject(arg0).length;
6225
6609
  return ret;
6226
6610
  },
6611
+ __wbg_length_370319915dc99107: function(arg0) {
6612
+ const ret = getObject(arg0).length;
6613
+ return ret;
6614
+ },
6227
6615
  __wbg_new_227d7c05414eb861: function() {
6228
6616
  const ret = new Error();
6229
6617
  return addHeapObject(ret);
@@ -6264,6 +6652,10 @@ function __wbg_get_imports() {
6264
6652
  const ret = new Float64Array(getArrayF64FromWasm0(arg0, arg1));
6265
6653
  return addHeapObject(ret);
6266
6654
  },
6655
+ __wbg_new_from_slice_adc482e0820cc439: function(arg0, arg1) {
6656
+ const ret = new Int32Array(getArrayI32FromWasm0(arg0, arg1));
6657
+ return addHeapObject(ret);
6658
+ },
6267
6659
  __wbg_new_from_slice_ddf8b82c4d6af38e: function(arg0, arg1) {
6268
6660
  const ret = new Float32Array(getArrayF32FromWasm0(arg0, arg1));
6269
6661
  return addHeapObject(ret);
@@ -6339,6 +6731,9 @@ function __wbg_get_imports() {
6339
6731
  __wbg_warn_b1370d804fa3e259: function(arg0) {
6340
6732
  console.warn(getObject(arg0));
6341
6733
  },
6734
+ __wbg_warn_ef97a01ad7900eb3: function(arg0, arg1) {
6735
+ console.warn(getObject(arg0), getObject(arg1));
6736
+ },
6342
6737
  __wbindgen_cast_0000000000000001: function(arg0) {
6343
6738
  // Cast intrinsic for `F64 -> Externref`.
6344
6739
  const ret = arg0;
@@ -6368,6 +6763,9 @@ function __wbg_get_imports() {
6368
6763
  };
6369
6764
  }
6370
6765
 
6766
+ const AlignmentAxisJsFinalization = (typeof FinalizationRegistry === 'undefined')
6767
+ ? { register: () => {}, unregister: () => {} }
6768
+ : new FinalizationRegistry(ptr => wasm.__wbg_alignmentaxisjs_free(ptr, 1));
6371
6769
  const ClashIntersectionSolidJsFinalization = (typeof FinalizationRegistry === 'undefined')
6372
6770
  ? { register: () => {}, unregister: () => {} }
6373
6771
  : new FinalizationRegistry(ptr => wasm.__wbg_clashintersectionsolidjs_free(ptr, 1));
@@ -6410,6 +6808,9 @@ const ProfileCollectionFinalization = (typeof FinalizationRegistry === 'undefine
6410
6808
  const ProfileEntryJsFinalization = (typeof FinalizationRegistry === 'undefined')
6411
6809
  ? { register: () => {}, unregister: () => {} }
6412
6810
  : new FinalizationRegistry(ptr => wasm.__wbg_profileentryjs_free(ptr, 1));
6811
+ const ScanOutlineJsFinalization = (typeof FinalizationRegistry === 'undefined')
6812
+ ? { register: () => {}, unregister: () => {} }
6813
+ : new FinalizationRegistry(ptr => wasm.__wbg_scanoutlinejs_free(ptr, 1));
6413
6814
  const SimplifiedMeshesFinalization = (typeof FinalizationRegistry === 'undefined')
6414
6815
  ? { register: () => {}, unregister: () => {} }
6415
6816
  : new FinalizationRegistry(ptr => wasm.__wbg_simplifiedmeshes_free(ptr, 1));
@@ -6540,6 +6941,11 @@ function getArrayF64FromWasm0(ptr, len) {
6540
6941
  return getFloat64ArrayMemory0().subarray(ptr / 8, ptr / 8 + len);
6541
6942
  }
6542
6943
 
6944
+ function getArrayI32FromWasm0(ptr, len) {
6945
+ ptr = ptr >>> 0;
6946
+ return getInt32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);
6947
+ }
6948
+
6543
6949
  function getArrayJsValueFromWasm0(ptr, len) {
6544
6950
  ptr = ptr >>> 0;
6545
6951
  const mem = getDataViewMemory0();
@@ -6597,6 +7003,14 @@ function getFloat64ArrayMemory0() {
6597
7003
  return cachedFloat64ArrayMemory0;
6598
7004
  }
6599
7005
 
7006
+ let cachedInt32ArrayMemory0 = null;
7007
+ function getInt32ArrayMemory0() {
7008
+ if (cachedInt32ArrayMemory0 === null || cachedInt32ArrayMemory0.byteLength === 0) {
7009
+ cachedInt32ArrayMemory0 = new Int32Array(wasm.memory.buffer);
7010
+ }
7011
+ return cachedInt32ArrayMemory0;
7012
+ }
7013
+
6600
7014
  function getStringFromWasm0(ptr, len) {
6601
7015
  return decodeText(ptr >>> 0, len);
6602
7016
  }
@@ -6757,6 +7171,7 @@ function __wbg_finalize_init(instance, module) {
6757
7171
  cachedDataViewMemory0 = null;
6758
7172
  cachedFloat32ArrayMemory0 = null;
6759
7173
  cachedFloat64ArrayMemory0 = null;
7174
+ cachedInt32ArrayMemory0 = null;
6760
7175
  cachedUint32ArrayMemory0 = null;
6761
7176
  cachedUint8ArrayMemory0 = null;
6762
7177
  wasm.__wbindgen_start();
Binary file