@ifc-lite/cache 3.2.0 → 3.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -0
- package/dist/glb-accessor.d.ts +6 -0
- package/dist/glb-accessor.d.ts.map +1 -0
- package/dist/glb-accessor.js +157 -0
- package/dist/glb-accessor.js.map +1 -0
- package/dist/glb-images.d.ts +6 -0
- package/dist/glb-images.d.ts.map +1 -0
- package/dist/glb-images.js +91 -0
- package/dist/glb-images.js.map +1 -0
- package/dist/glb-transform.d.ts +15 -0
- package/dist/glb-transform.d.ts.map +1 -0
- package/dist/glb-transform.js +59 -0
- package/dist/glb-transform.js.map +1 -0
- package/dist/glb-types.d.ts +111 -0
- package/dist/glb-types.d.ts.map +1 -0
- package/dist/glb-types.js +5 -0
- package/dist/glb-types.js.map +1 -0
- package/dist/glb.d.ts +1 -71
- package/dist/glb.d.ts.map +1 -1
- package/dist/glb.js +61 -192
- package/dist/glb.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/sections/appearance-provenance.d.ts +11 -0
- package/dist/sections/appearance-provenance.d.ts.map +1 -0
- package/dist/sections/appearance-provenance.js +113 -0
- package/dist/sections/appearance-provenance.js.map +1 -0
- package/dist/sections/entity-index-columns.d.ts +4 -0
- package/dist/sections/entity-index-columns.d.ts.map +1 -0
- package/dist/sections/entity-index-columns.js +41 -0
- package/dist/sections/entity-index-columns.js.map +1 -0
- package/dist/sections/entity-index.d.ts.map +1 -1
- package/dist/sections/entity-index.js +17 -9
- package/dist/sections/entity-index.js.map +1 -1
- package/dist/sections/geometry-chunks.d.ts +5 -32
- package/dist/sections/geometry-chunks.d.ts.map +1 -1
- package/dist/sections/geometry-chunks.js +64 -29
- package/dist/sections/geometry-chunks.js.map +1 -1
- package/dist/sections/geometry-codec.d.ts +8 -0
- package/dist/sections/geometry-codec.d.ts.map +1 -0
- package/dist/sections/geometry-codec.js +19 -0
- package/dist/sections/geometry-codec.js.map +1 -0
- package/dist/sections/geometry.d.ts +6 -5
- package/dist/sections/geometry.d.ts.map +1 -1
- package/dist/sections/geometry.js +12 -7
- package/dist/sections/geometry.js.map +1 -1
- package/dist/sections/relationships.js +2 -0
- package/dist/sections/relationships.js.map +1 -1
- package/dist/types.d.ts +20 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -1
- package/dist/types.js.map +1 -1
- package/dist/workers/geometry-compression-client.d.ts +27 -0
- package/dist/workers/geometry-compression-client.d.ts.map +1 -0
- package/dist/workers/geometry-compression-client.js +84 -0
- package/dist/workers/geometry-compression-client.js.map +1 -0
- package/dist/workers/geometry-compression-handler.d.ts +4 -0
- package/dist/workers/geometry-compression-handler.d.ts.map +1 -0
- package/dist/workers/geometry-compression-handler.js +18 -0
- package/dist/workers/geometry-compression-handler.js.map +1 -0
- package/dist/workers/geometry-compression-protocol.d.ts +14 -0
- package/dist/workers/geometry-compression-protocol.d.ts.map +1 -0
- package/dist/workers/geometry-compression-protocol.js +10 -0
- package/dist/workers/geometry-compression-protocol.js.map +1 -0
- package/dist/workers/geometry-compression.worker.d.ts +2 -0
- package/dist/workers/geometry-compression.worker.d.ts.map +1 -0
- package/dist/workers/geometry-compression.worker.js +13 -0
- package/dist/workers/geometry-compression.worker.js.map +1 -0
- package/dist/writer.js +1 -1
- package/dist/writer.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
const MAX_INDICES = 300_000_000;
|
|
2
|
+
const invalid = () => new Error('Invalid cache: malformed canonical appearance provenance; rebuild this cache.');
|
|
3
|
+
function equal(a, b) {
|
|
4
|
+
return a === b || (a.length === b.length && a.every((value, index) => value === b[index]));
|
|
5
|
+
}
|
|
6
|
+
function validate(mesh) {
|
|
7
|
+
const source = mesh.appearanceSource;
|
|
8
|
+
if (!source)
|
|
9
|
+
return undefined;
|
|
10
|
+
if (source.kind !== 'canonical-item' || source.indices !== mesh.indices || mesh.entityIds ||
|
|
11
|
+
!Number.isSafeInteger(mesh.geometryItemId) || mesh.geometryItemId <= 0 || mesh.geometryItemId >= 0xffffffff ||
|
|
12
|
+
mesh.indices.length === 0 || mesh.indices.length % 3 !== 0 ||
|
|
13
|
+
!(source.sourceIndices instanceof Uint32Array) || source.sourceIndices.length === 0 ||
|
|
14
|
+
source.sourceIndices.length > MAX_INDICES || source.sourceIndices.length % 3 !== 0)
|
|
15
|
+
throw invalid();
|
|
16
|
+
for (const vertex of mesh.indices)
|
|
17
|
+
if (vertex >= mesh.positions.length / 3)
|
|
18
|
+
throw invalid();
|
|
19
|
+
if (source.cornerIndices) {
|
|
20
|
+
if (!(source.cornerIndices instanceof Uint32Array) || source.cornerIndices.length !== mesh.indices.length)
|
|
21
|
+
throw invalid();
|
|
22
|
+
for (const corner of source.cornerIndices)
|
|
23
|
+
if (corner >= source.sourceIndices.length)
|
|
24
|
+
throw invalid();
|
|
25
|
+
}
|
|
26
|
+
else if (source.sourceIndices.length !== mesh.indices.length)
|
|
27
|
+
throw invalid();
|
|
28
|
+
return source;
|
|
29
|
+
}
|
|
30
|
+
function tag(mesh, pool) {
|
|
31
|
+
const source = validate(mesh);
|
|
32
|
+
if (!source)
|
|
33
|
+
return 0;
|
|
34
|
+
if (!source.cornerIndices && equal(source.sourceIndices, mesh.indices))
|
|
35
|
+
return 1;
|
|
36
|
+
if (pool?.has(source.sourceIndices))
|
|
37
|
+
return source.cornerIndices ? 5 : 4;
|
|
38
|
+
return source.cornerIndices ? 3 : 2;
|
|
39
|
+
}
|
|
40
|
+
export function provenanceByteLength(mesh, pool) {
|
|
41
|
+
const mode = tag(mesh, pool), source = mesh.appearanceSource;
|
|
42
|
+
return mode < 2 ? 1 : 5 + (mode < 4 ? source.sourceIndices.byteLength : 0) +
|
|
43
|
+
(source.cornerIndices ? source.cornerIndices.byteLength : 0);
|
|
44
|
+
}
|
|
45
|
+
export function writeProvenance(writer, mesh, pool) {
|
|
46
|
+
const mode = tag(mesh, pool), source = mesh.appearanceSource;
|
|
47
|
+
writer.writeUint8(mode);
|
|
48
|
+
if (mode < 2)
|
|
49
|
+
return;
|
|
50
|
+
writer.writeUint32(mode >= 4 ? pool.get(source.sourceIndices) : source.sourceIndices.length);
|
|
51
|
+
if (mode < 4)
|
|
52
|
+
writer.writeTypedArray(source.sourceIndices);
|
|
53
|
+
if (source.cornerIndices)
|
|
54
|
+
writer.writeTypedArray(source.cornerIndices);
|
|
55
|
+
}
|
|
56
|
+
export function readProvenance(reader, mesh, pool = []) {
|
|
57
|
+
const mode = reader.readUint8();
|
|
58
|
+
if (mode === 0)
|
|
59
|
+
return; // Never infer canonical identity from geometryItemId alone.
|
|
60
|
+
if (mode > 5)
|
|
61
|
+
throw invalid();
|
|
62
|
+
let sourceIndices = mesh.indices;
|
|
63
|
+
if (mode >= 2) {
|
|
64
|
+
const value = reader.readUint32();
|
|
65
|
+
if (mode >= 4) {
|
|
66
|
+
if (!pool[value])
|
|
67
|
+
throw invalid();
|
|
68
|
+
sourceIndices = pool[value];
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
if (value > MAX_INDICES || value === 0 || value % 3 !== 0)
|
|
72
|
+
throw invalid();
|
|
73
|
+
sourceIndices = reader.readUint32Array(value);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const cornerIndices = mode === 3 || mode === 5 ? reader.readUint32Array(mesh.indices.length) : undefined;
|
|
77
|
+
mesh.appearanceSource = { kind: 'canonical-item', indices: mesh.indices, sourceIndices,
|
|
78
|
+
...(cornerIndices ? { cornerIndices } : {}) };
|
|
79
|
+
validate(mesh);
|
|
80
|
+
}
|
|
81
|
+
/** Deduplicate by existing source-array identity across every spatial chunk. */
|
|
82
|
+
export function collectSourcePool(meshes) {
|
|
83
|
+
const pool = new Map();
|
|
84
|
+
for (const mesh of meshes) {
|
|
85
|
+
if (tag(mesh) < 2)
|
|
86
|
+
continue;
|
|
87
|
+
const source = mesh.appearanceSource.sourceIndices;
|
|
88
|
+
if (!pool.has(source))
|
|
89
|
+
pool.set(source, pool.size);
|
|
90
|
+
}
|
|
91
|
+
return pool;
|
|
92
|
+
}
|
|
93
|
+
export function writeSourcePool(writer, pool) {
|
|
94
|
+
writer.writeUint32(pool.size);
|
|
95
|
+
for (const source of pool.keys()) {
|
|
96
|
+
writer.writeUint32(source.length);
|
|
97
|
+
writer.writeTypedArray(source);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
export function readSourcePool(reader, meshCount, end) {
|
|
101
|
+
const count = reader.readUint32();
|
|
102
|
+
if (count > meshCount || count > Math.floor((end - reader.position) / 4))
|
|
103
|
+
throw invalid();
|
|
104
|
+
const pool = [];
|
|
105
|
+
for (let i = 0; i < count; i++) {
|
|
106
|
+
const length = reader.readUint32();
|
|
107
|
+
if (!length || length > MAX_INDICES || length % 3 !== 0 || length > Math.floor((end - reader.position) / 4))
|
|
108
|
+
throw invalid();
|
|
109
|
+
pool.push(reader.readUint32Array(length));
|
|
110
|
+
}
|
|
111
|
+
return pool;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=appearance-provenance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appearance-provenance.js","sourceRoot":"","sources":["../../src/sections/appearance-provenance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CacheEntityIndex, CachedEntityIndexColumns } from '../types.js';
|
|
2
|
+
/** #3985: reuse validated numeric backing; retain generic iterable semantics. */
|
|
3
|
+
export declare function prepareBorrowedEntityColumns(byId: CacheEntityIndex['byId']): CachedEntityIndexColumns | undefined;
|
|
4
|
+
//# sourceMappingURL=entity-index-columns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-index-columns.d.ts","sourceRoot":"","sources":["../../src/sections/entity-index-columns.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE9E,iFAAiF;AACjF,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,wBAAwB,GAAG,SAAS,CAgCjH"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/** #3985: reuse validated numeric backing; retain generic iterable semantics. */
|
|
2
|
+
export function prepareBorrowedEntityColumns(byId) {
|
|
3
|
+
if (typeof byId.getColumns !== 'function')
|
|
4
|
+
return undefined;
|
|
5
|
+
const c = byId.getColumns();
|
|
6
|
+
if (!(c.expressIds instanceof Uint32Array) || !(c.byteOffsets instanceof Uint32Array)
|
|
7
|
+
|| !(c.byteLengths instanceof Uint32Array) || !(c.typeIndices instanceof Uint16Array)
|
|
8
|
+
|| !Array.isArray(c.typeStrings))
|
|
9
|
+
return undefined;
|
|
10
|
+
const n = c.expressIds.length;
|
|
11
|
+
if (c.byteOffsets.length !== n || c.byteLengths.length !== n || c.typeIndices.length !== n)
|
|
12
|
+
return undefined;
|
|
13
|
+
const remap = new Int32Array(Math.min(c.typeStrings.length, 0x10000)).fill(-1);
|
|
14
|
+
const seen = new Map();
|
|
15
|
+
const typeNames = [];
|
|
16
|
+
const typeIndices = new Uint16Array(n);
|
|
17
|
+
for (let row = 0; row < n; row++) {
|
|
18
|
+
if (row && c.expressIds[row] < c.expressIds[row - 1])
|
|
19
|
+
return undefined;
|
|
20
|
+
const rawTypeIndex = c.typeIndices[row];
|
|
21
|
+
if (rawTypeIndex >= c.typeStrings.length || typeof c.typeStrings[rawTypeIndex] !== 'string')
|
|
22
|
+
return undefined;
|
|
23
|
+
let index = remap[rawTypeIndex];
|
|
24
|
+
if (index === -1) {
|
|
25
|
+
const name = c.typeStrings[rawTypeIndex].toUpperCase();
|
|
26
|
+
let existing = seen.get(name);
|
|
27
|
+
if (existing === undefined) {
|
|
28
|
+
existing = typeNames.length;
|
|
29
|
+
if (existing > 0xffff)
|
|
30
|
+
throw new Error('Entity index has more than 65535 unique IFC type names');
|
|
31
|
+
typeNames.push(name);
|
|
32
|
+
seen.set(name, existing);
|
|
33
|
+
}
|
|
34
|
+
index = existing;
|
|
35
|
+
remap[rawTypeIndex] = index;
|
|
36
|
+
}
|
|
37
|
+
typeIndices[row] = index;
|
|
38
|
+
}
|
|
39
|
+
return { ids: c.expressIds, byteOffsets: c.byteOffsets, byteLengths: c.byteLengths, typeIndices, typeNames };
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=entity-index-columns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-index-columns.js","sourceRoot":"","sources":["../../src/sections/entity-index-columns.ts"],"names":[],"mappings":"AAKA,iFAAiF;AACjF,MAAM,UAAU,4BAA4B,CAAC,IAA8B;IACzE,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,UAAU;QAAE,OAAO,SAAS,CAAC;IAC5D,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,YAAY,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,YAAY,WAAW,CAAC;WAChF,CAAC,CAAC,CAAC,CAAC,WAAW,YAAY,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,YAAY,WAAW,CAAC;WAClF,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IACrD,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;IAC9B,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7G,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IACvC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;QACjC,IAAI,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QACvE,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,YAAY,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC9G,IAAI,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;YACvD,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC;gBAC5B,IAAI,QAAQ,GAAG,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;gBACjG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC3B,CAAC;YACD,KAAK,GAAG,QAAQ,CAAC;YACjB,KAAK,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;QAC9B,CAAC;QACD,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC3B,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AAC/G,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-index.d.ts","sourceRoot":"","sources":["../../src/sections/entity-index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAkB,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC9F,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"entity-index.d.ts","sourceRoot":"","sources":["../../src/sections/entity-index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAkB,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC9F,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGtE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAmC1F;AAYD,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,wBAAwB,CA2B9E"}
|
|
@@ -1,7 +1,13 @@
|
|
|
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 { prepareBorrowedEntityColumns } from './entity-index-columns.js';
|
|
4
5
|
export function writeEntityIndex(writer, entityIndex) {
|
|
6
|
+
const columns = prepareBorrowedEntityColumns(entityIndex.byId);
|
|
7
|
+
if (columns) {
|
|
8
|
+
writeColumns(writer, columns);
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
5
11
|
const refs = Array.from(entityIndex.byId, ([id, ref]) => normalizeRef(id, ref))
|
|
6
12
|
.sort((a, b) => a.expressId - b.expressId);
|
|
7
13
|
const typeNameToIndex = new Map();
|
|
@@ -26,15 +32,17 @@ export function writeEntityIndex(writer, entityIndex) {
|
|
|
26
32
|
}
|
|
27
33
|
typeIndices[i] = typeIndex;
|
|
28
34
|
}
|
|
29
|
-
writer
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
writer.writeTypedArray(
|
|
37
|
-
writer.writeTypedArray(
|
|
35
|
+
writeColumns(writer, { ids, byteOffsets, byteLengths, typeIndices, typeNames });
|
|
36
|
+
}
|
|
37
|
+
function writeColumns(writer, columns) {
|
|
38
|
+
writer.writeUint32(columns.ids.length);
|
|
39
|
+
writer.writeUint32(columns.typeNames.length);
|
|
40
|
+
for (const name of columns.typeNames)
|
|
41
|
+
writer.writeString(name);
|
|
42
|
+
writer.writeTypedArray(columns.ids);
|
|
43
|
+
writer.writeTypedArray(columns.byteOffsets);
|
|
44
|
+
writer.writeTypedArray(columns.byteLengths);
|
|
45
|
+
writer.writeTypedArray(columns.typeIndices);
|
|
38
46
|
}
|
|
39
47
|
export function readEntityIndex(reader) {
|
|
40
48
|
const count = reader.readUint32();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-index.js","sourceRoot":"","sources":["../../src/sections/entity-index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"entity-index.js","sourceRoot":"","sources":["../../src/sections/entity-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* v13 chunked geometry section (issue #1682, phase 4).
|
|
3
|
-
*
|
|
4
|
-
* Layout (all offsets little-endian, relative to the geometry SECTION start):
|
|
5
|
-
* headLength: u32 // byte length of everything below
|
|
6
|
-
* // up to (not incl.) the first chunk
|
|
7
|
-
* meshCount: u32
|
|
8
|
-
* totalVertices: u32
|
|
9
|
-
* totalTriangles: u32
|
|
10
|
-
* coordinateInfo // unchanged, variable length
|
|
11
|
-
* chunkCount: u32
|
|
12
|
-
* directory: chunkCount × 44 bytes {
|
|
13
|
-
* aabbMin f32×3, aabbMax f32×3, // world AABB of the chunk
|
|
14
|
-
* byteOffset u32, // chunk record, rel. section start
|
|
15
|
-
* byteLength u32, // STORED length (compressed if so)
|
|
16
|
-
* uncompressedLength u32,
|
|
17
|
-
* meshCount u32,
|
|
18
|
-
* flags u32 // GeometryChunkFlags
|
|
19
|
-
* }
|
|
20
|
-
* ...chunk records at their byteOffsets
|
|
21
|
-
*
|
|
22
|
-
* A chunk record is a plain concatenation of per-mesh records (identical
|
|
23
|
-
* layout to v12 — see geometry.ts writeMeshRecord), optionally deflate-raw
|
|
24
|
-
* compressed. Chunks are spatially coherent (grid cell of origin + first
|
|
25
|
-
* vertex, soft byte cap; a mesh never splits), so a streamed reader paints
|
|
26
|
-
* coherent regions and a future evict-to-disk residency layer can re-read
|
|
27
|
-
* one chunk without touching the rest.
|
|
28
|
-
*/
|
|
1
|
+
import { type AppearanceSourcePool } from './appearance-provenance.js';
|
|
29
2
|
import type { MeshData, CoordinateInfo } from '@ifc-lite/geometry';
|
|
30
3
|
import { BufferReader } from '../utils/buffer-utils.js';
|
|
31
4
|
import { type GeometryChunkInfo } from '../types.js';
|
|
@@ -42,20 +15,20 @@ export interface GeometryHead {
|
|
|
42
15
|
coordinateInfo: CoordinateInfo;
|
|
43
16
|
chunks: GeometryChunkInfo[];
|
|
44
17
|
}
|
|
45
|
-
export
|
|
46
|
-
export declare const inflateRaw: (data: Uint8Array) => Promise<Uint8Array>;
|
|
18
|
+
export { deflateRaw, inflateRaw } from './geometry-codec.js';
|
|
47
19
|
/** Group meshes into spatially coherent, byte-capped chunks (order-stable). */
|
|
48
|
-
export declare function groupMeshesIntoChunks(meshes: MeshData[], softBytes?: number): MeshData[][];
|
|
20
|
+
export declare function groupMeshesIntoChunks(meshes: MeshData[], softBytes?: number, pool?: AppearanceSourcePool): MeshData[][];
|
|
49
21
|
/**
|
|
50
22
|
* Build the complete v13 geometry section buffer. Async because per-chunk
|
|
51
23
|
* compression uses the (browser/Node-native) CompressionStream.
|
|
52
24
|
*/
|
|
53
25
|
export declare function buildGeometrySectionV13(meshes: MeshData[], coordinateInfo: CoordinateInfo, options?: {
|
|
54
26
|
compress?: boolean;
|
|
27
|
+
compressInWorker?: boolean;
|
|
55
28
|
}): Promise<ArrayBuffer>;
|
|
56
29
|
/** Parse the v13 geometry head; `reader` must be positioned at the geometry
|
|
57
30
|
* section start. Cheap: never touches chunk records. */
|
|
58
|
-
export declare function readGeometryHeadV13(reader: BufferReader): GeometryHead;
|
|
31
|
+
export declare function readGeometryHeadV13(reader: BufferReader, version?: number): GeometryHead;
|
|
59
32
|
/** Decode one chunk record's stored bytes into meshes. */
|
|
60
33
|
export declare function decodeGeometryChunk(stored: Uint8Array, info: GeometryChunkInfo, version: number): Promise<MeshData[]>;
|
|
61
34
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry-chunks.d.ts","sourceRoot":"","sources":["../../src/sections/geometry-chunks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"geometry-chunks.d.ts","sourceRoot":"","sources":["../../src/sections/geometry-chunks.ts"],"names":[],"mappings":"AAmCA,OAAO,EAAsD,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAC3H,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAgB,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AAcrB,6CAA6C;AAC7C,MAAM,WAAW,YAAY;IAC3B;;;oEAGgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC7B;AAID,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAwB7D,+EAA+E;AAC/E,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,QAAQ,EAAE,EAClB,SAAS,GAAE,MAAkC,EAC7C,IAAI,CAAC,EAAE,oBAAoB,GAC1B,QAAQ,EAAE,EAAE,CAsBd;AAqBD;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,QAAQ,EAAE,EAClB,cAAc,EAAE,cAAc,EAC9B,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/D,OAAO,CAAC,WAAW,CAAC,CAsFtB;AAID;yDACyD;AACzD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,GAAE,MAAuB,GAAG,YAAY,CAuBxG;AAED,0DAA0D;AAC1D,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,QAAQ,EAAE,CAAC,CA4BrB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,YAAY,GAAG;IAAE,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;CAAE,CAmClE;AAED,mFAAmF;AACnF,wBAAsB,eAAe,CACnC,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,cAAc,CAAA;CAAE,CAAC,CAYhH"}
|
|
@@ -1,22 +1,46 @@
|
|
|
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
|
+
/**
|
|
5
|
+
* v13 chunked geometry section (issue #1682, phase 4).
|
|
6
|
+
*
|
|
7
|
+
* Layout (all offsets little-endian, relative to the geometry SECTION start):
|
|
8
|
+
* headLength: u32 // byte length of everything below
|
|
9
|
+
* // up to (not incl.) the first chunk
|
|
10
|
+
* meshCount: u32
|
|
11
|
+
* totalVertices: u32
|
|
12
|
+
* totalTriangles: u32
|
|
13
|
+
* coordinateInfo // unchanged, variable length
|
|
14
|
+
* sourceIndexPool (v19+) // count + length-prefixed u32 arrays
|
|
15
|
+
* chunkCount: u32
|
|
16
|
+
* directory: chunkCount × 44 bytes {
|
|
17
|
+
* aabbMin f32×3, aabbMax f32×3, // world AABB of the chunk
|
|
18
|
+
* byteOffset u32, // chunk record, rel. section start
|
|
19
|
+
* byteLength u32, // STORED length (compressed if so)
|
|
20
|
+
* uncompressedLength u32,
|
|
21
|
+
* meshCount u32,
|
|
22
|
+
* flags u32 // GeometryChunkFlags
|
|
23
|
+
* }
|
|
24
|
+
* ...chunk records at their byteOffsets
|
|
25
|
+
*
|
|
26
|
+
* A chunk record is a plain concatenation of per-mesh records (identical
|
|
27
|
+
* versioned layout — see geometry.ts writeMeshRecord), optionally deflate-raw
|
|
28
|
+
* compressed. Chunks are spatially coherent (grid cell of origin + first
|
|
29
|
+
* vertex, soft byte cap; a mesh never splits), so a streamed reader paints
|
|
30
|
+
* coherent regions and a future evict-to-disk residency layer can re-read
|
|
31
|
+
* one chunk without touching the rest.
|
|
32
|
+
*/
|
|
33
|
+
import { FORMAT_VERSION } from '../types.js';
|
|
34
|
+
import { collectSourcePool, writeSourcePool, readSourcePool } from './appearance-provenance.js';
|
|
4
35
|
import { BufferWriter, BufferReader } from '../utils/buffer-utils.js';
|
|
5
36
|
import { GEOMETRY_CHUNK_CELL_SIZE, GEOMETRY_CHUNK_SOFT_BYTES, GEOMETRY_CHUNK_COMPRESS_MIN_BYTES, GeometryChunkFlags, } from '../types.js';
|
|
6
37
|
import { validateMeshes, writeMeshRecord, readMeshRecord, meshRecordByteLength, writeCoordinateInfo, readCoordinateInfo, } from './geometry.js';
|
|
7
38
|
import { validateGeometryDirectory } from './geometry-directory.js';
|
|
8
39
|
// 6×f32 AABB (24) + 5×u32 (offset, length, uncompressed, meshCount, flags).
|
|
9
40
|
const DIRECTORY_ENTRY_BYTES = 44;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
// Response/Blob would otherwise serialize the WHOLE backing buffer.
|
|
14
|
-
const standalone = new Uint8Array(data);
|
|
15
|
-
const out = await new Response(new Blob([standalone]).stream().pipeThrough(stream)).arrayBuffer();
|
|
16
|
-
return new Uint8Array(out);
|
|
17
|
-
}
|
|
18
|
-
export const deflateRaw = (data) => pipeThrough(data, new CompressionStream('deflate-raw'));
|
|
19
|
-
export const inflateRaw = (data) => pipeThrough(data, new DecompressionStream('deflate-raw'));
|
|
41
|
+
import { chooseStoredGeometryChunk, inflateRaw } from './geometry-codec.js';
|
|
42
|
+
import { GeometryCompressionSession } from '../workers/geometry-compression-client.js';
|
|
43
|
+
export { deflateRaw, inflateRaw } from './geometry-codec.js';
|
|
20
44
|
// ─── write ────────────────────────────────────────────────────────────────
|
|
21
45
|
/** Grid cell of a mesh's world anchor (origin + first vertex) — a spatial
|
|
22
46
|
* grouping heuristic only; readers trust the directory, never this. */
|
|
@@ -34,13 +58,13 @@ function cellKeyOf(mesh) {
|
|
|
34
58
|
return `${cx},${cy},${cz}`;
|
|
35
59
|
}
|
|
36
60
|
/** Group meshes into spatially coherent, byte-capped chunks (order-stable). */
|
|
37
|
-
export function groupMeshesIntoChunks(meshes, softBytes = GEOMETRY_CHUNK_SOFT_BYTES) {
|
|
61
|
+
export function groupMeshesIntoChunks(meshes, softBytes = GEOMETRY_CHUNK_SOFT_BYTES, pool) {
|
|
38
62
|
const open = new Map();
|
|
39
63
|
const closed = [];
|
|
40
64
|
for (const mesh of meshes) {
|
|
41
65
|
const key = cellKeyOf(mesh);
|
|
42
66
|
let chunk = open.get(key);
|
|
43
|
-
const bytes = meshRecordByteLength(mesh);
|
|
67
|
+
const bytes = meshRecordByteLength(mesh, pool);
|
|
44
68
|
if (chunk && chunk.bytes > 0 && chunk.bytes + bytes > softBytes) {
|
|
45
69
|
closed.push(chunk.meshes);
|
|
46
70
|
chunk = undefined;
|
|
@@ -95,42 +119,49 @@ function chunkAabb(meshes) {
|
|
|
95
119
|
export async function buildGeometrySectionV13(meshes, coordinateInfo, options = {}) {
|
|
96
120
|
const compress = options.compress ?? true;
|
|
97
121
|
const { validMeshes, actualTotalVertices, actualTotalTriangles } = validateMeshes(meshes);
|
|
98
|
-
const
|
|
122
|
+
const pool = collectSourcePool(validMeshes);
|
|
123
|
+
const groups = groupMeshesIntoChunks(validMeshes, undefined, pool);
|
|
99
124
|
// Serialize (and optionally compress) every chunk record. Concurrency is
|
|
100
125
|
// BOUNDED: a large model produces hundreds of chunks, and an unbounded
|
|
101
126
|
// Promise.all would hold every raw + compressed buffer plus a
|
|
102
127
|
// CompressionStream alive simultaneously — a needless memory spike during
|
|
103
128
|
// the (background) cache write.
|
|
104
129
|
const CHUNK_BUILD_CONCURRENCY = 4;
|
|
130
|
+
const session = options.compressInWorker ? new GeometryCompressionSession() : undefined;
|
|
105
131
|
const buildRecord = async (group) => {
|
|
106
132
|
const w = new BufferWriter(64 * 1024);
|
|
107
133
|
for (const mesh of group)
|
|
108
|
-
writeMeshRecord(w, mesh);
|
|
134
|
+
writeMeshRecord(w, mesh, pool);
|
|
109
135
|
const raw = new Uint8Array(w.build());
|
|
136
|
+
// Worker compression transfers raw.buffer; save this before detachment.
|
|
137
|
+
const uncompressedLength = raw.byteLength;
|
|
110
138
|
let bytes = raw;
|
|
111
139
|
let flags = GeometryChunkFlags.None;
|
|
112
|
-
if (compress &&
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
if (
|
|
116
|
-
bytes = deflated;
|
|
140
|
+
if (compress && uncompressedLength >= GEOMETRY_CHUNK_COMPRESS_MIN_BYTES) {
|
|
141
|
+
const stored = await (session ? session.compress(raw) : chooseStoredGeometryChunk(raw));
|
|
142
|
+
bytes = stored.bytes;
|
|
143
|
+
if (stored.compressed)
|
|
117
144
|
flags = GeometryChunkFlags.DeflateRaw;
|
|
118
|
-
}
|
|
119
145
|
}
|
|
120
146
|
return {
|
|
121
147
|
bytes,
|
|
122
|
-
uncompressedLength
|
|
148
|
+
uncompressedLength,
|
|
123
149
|
meshCount: group.length,
|
|
124
150
|
flags,
|
|
125
151
|
aabb: chunkAabb(group),
|
|
126
152
|
};
|
|
127
153
|
};
|
|
128
154
|
const records = new Array(groups.length);
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
155
|
+
try {
|
|
156
|
+
for (let i = 0; i < groups.length; i += CHUNK_BUILD_CONCURRENCY) {
|
|
157
|
+
const slice = groups.slice(i, i + CHUNK_BUILD_CONCURRENCY);
|
|
158
|
+
const built = await Promise.all(slice.map(buildRecord));
|
|
159
|
+
for (let j = 0; j < built.length; j++)
|
|
160
|
+
records[i + j] = built[j];
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
finally {
|
|
164
|
+
session?.close();
|
|
134
165
|
}
|
|
135
166
|
// Head: counts + coordinateInfo + directory. Directory offsets need the
|
|
136
167
|
// head length, which needs the coordinateInfo length — write the variable
|
|
@@ -140,6 +171,7 @@ export async function buildGeometrySectionV13(meshes, coordinateInfo, options =
|
|
|
140
171
|
headBody.writeUint32(actualTotalVertices);
|
|
141
172
|
headBody.writeUint32(actualTotalTriangles);
|
|
142
173
|
writeCoordinateInfo(headBody, coordinateInfo);
|
|
174
|
+
writeSourcePool(headBody, pool);
|
|
143
175
|
headBody.writeUint32(records.length);
|
|
144
176
|
const headLength = headBody.position + records.length * DIRECTORY_ENTRY_BYTES;
|
|
145
177
|
let offset = 4 + headLength; // headLength field itself + head
|
|
@@ -168,16 +200,19 @@ export async function buildGeometrySectionV13(meshes, coordinateInfo, options =
|
|
|
168
200
|
// ─── read ─────────────────────────────────────────────────────────────────
|
|
169
201
|
/** Parse the v13 geometry head; `reader` must be positioned at the geometry
|
|
170
202
|
* section start. Cheap: never touches chunk records. */
|
|
171
|
-
export function readGeometryHeadV13(reader) {
|
|
203
|
+
export function readGeometryHeadV13(reader, version = FORMAT_VERSION) {
|
|
204
|
+
const start = reader.position;
|
|
172
205
|
const headLength = reader.readUint32();
|
|
173
206
|
const meshCount = reader.readUint32();
|
|
174
207
|
const totalVertices = reader.readUint32();
|
|
175
208
|
const totalTriangles = reader.readUint32();
|
|
176
209
|
const coordinateInfo = readCoordinateInfo(reader, 13);
|
|
210
|
+
const appearanceSources = version >= 19 ? readSourcePool(reader, meshCount, start + 4 + headLength) : undefined;
|
|
177
211
|
const chunkCount = reader.readUint32();
|
|
178
212
|
const chunks = [];
|
|
179
213
|
for (let i = 0; i < chunkCount; i++) {
|
|
180
214
|
chunks.push({
|
|
215
|
+
...(appearanceSources ? { appearanceSources } : {}),
|
|
181
216
|
aabbMin: [reader.readFloat32(), reader.readFloat32(), reader.readFloat32()],
|
|
182
217
|
aabbMax: [reader.readFloat32(), reader.readFloat32(), reader.readFloat32()],
|
|
183
218
|
byteOffset: reader.readUint32(),
|
|
@@ -202,7 +237,7 @@ export async function decodeGeometryChunk(stored, info, version) {
|
|
|
202
237
|
const reader = new BufferReader(buffer);
|
|
203
238
|
const meshes = [];
|
|
204
239
|
for (let i = 0; i < info.meshCount; i++) {
|
|
205
|
-
meshes.push(readMeshRecord(reader, version, i));
|
|
240
|
+
meshes.push(readMeshRecord(reader, version, i, info.appearanceSources));
|
|
206
241
|
}
|
|
207
242
|
// `meshCount` and `uncompressedLength` are two independently-corruptible
|
|
208
243
|
// directory fields; a lying pair (meshCount inflated, uncompressedLength
|
|
@@ -227,7 +262,7 @@ export async function decodeGeometryChunk(stored, info, version) {
|
|
|
227
262
|
export function openGeometryChunksV13(buffer, sectionOffset, version) {
|
|
228
263
|
const reader = new BufferReader(buffer);
|
|
229
264
|
reader.position = sectionOffset;
|
|
230
|
-
const head = readGeometryHeadV13(reader);
|
|
265
|
+
const head = readGeometryHeadV13(reader, version);
|
|
231
266
|
// `reader.position` here is a STRUCTURAL fact: it's where the parse of
|
|
232
267
|
// meshCount/totalVertices/totalTriangles/coordinateInfo/chunkCount/
|
|
233
268
|
// directory actually landed, none of which depend on `head.headLength`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry-chunks.js","sourceRoot":"","sources":["../../src/sections/geometry-chunks.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAgC/D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,iCAAiC,EACjC,kBAAkB,GAEnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,4EAA4E;AAC5E,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAgBjC,6EAA6E;AAE7E,KAAK,UAAU,WAAW,CAAC,IAAgB,EAAE,MAA+C;IAC1F,0EAA0E;IAC1E,oEAAoE;IACpE,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,MAAM,IAAI,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAClG,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAgB,EAAuB,EAAE,CAClE,WAAW,CAAC,IAAI,EAAE,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAgB,EAAuB,EAAE,CAClE,WAAW,CAAC,IAAI,EAAE,IAAI,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC;AAE5D,6EAA6E;AAE7E;wEACwE;AACxE,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACtB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;IACpD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;IACpD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IACvF,OAAO,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;AAC7B,CAAC;AAOD,+EAA+E;AAC/E,MAAM,UAAU,qBAAqB,CACnC,MAAkB,EAClB,YAAoB,yBAAyB;IAE7C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC7C,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,SAAS,EAAE,CAAC;YAChE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC1B,KAAK,GAAG,SAAS,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC;IACvB,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,MAAkB;IACnC,IAAI,IAAI,GAAG,QAAQ,EAAE,IAAI,GAAG,QAAQ,EAAE,IAAI,GAAG,QAAQ,CAAC;IACtD,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC;IACzD,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,GAAG,IAAI;gBAAE,IAAI,GAAG,CAAC,CAAC;YAAC,IAAI,CAAC,GAAG,IAAI;gBAAE,IAAI,GAAG,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG,IAAI;gBAAE,IAAI,GAAG,CAAC,CAAC;YAAC,IAAI,CAAC,GAAG,IAAI;gBAAE,IAAI,GAAG,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG,IAAI;gBAAE,IAAI,GAAG,CAAC,CAAC;YAAC,IAAI,CAAC,GAAG,IAAI;gBAAE,IAAI,GAAG,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;QAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;IAAC,CAAC;IAC1E,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAkB,EAClB,cAA8B,EAC9B,UAAkC,EAAE;IAEpC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;IAC1C,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAElD,yEAAyE;IACzE,uEAAuE;IACvE,8DAA8D;IAC9D,0EAA0E;IAC1E,gCAAgC;IAChC,MAAM,uBAAuB,GAAG,CAAC,CAAC;IAQlC,MAAM,WAAW,GAAG,KAAK,EAAE,KAAiB,EAAwB,EAAE;QACpE,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;QACtC,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACtC,IAAI,KAAK,GAAgC,GAAG,CAAC;QAC7C,IAAI,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC;QACpC,IAAI,QAAQ,IAAI,GAAG,CAAC,UAAU,IAAI,iCAAiC,EAAE,CAAC;YACpE,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;YACvC,yEAAyE;YACzE,IAAI,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;gBACzC,KAAK,GAAG,QAAQ,CAAC;gBACjB,KAAK,GAAG,kBAAkB,CAAC,UAAU,CAAC;YACxC,CAAC;QACH,CAAC;QACD,OAAO;YACL,KAAK;YACL,kBAAkB,EAAE,GAAG,CAAC,UAAU;YAClC,SAAS,EAAE,KAAK,CAAC,MAAM;YACvB,KAAK;YACL,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC;SACvB,CAAC;IACJ,CAAC,CAAC;IACF,MAAM,OAAO,GAAkB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,uBAAuB,EAAE,CAAC;QAChE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,uBAAuB,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;QACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,wEAAwE;IACxE,0EAA0E;IAC1E,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAC7C,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAC1C,QAAQ,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAC3C,mBAAmB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC9C,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,qBAAqB,CAAC;IAE9E,IAAI,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,iCAAiC;IAC9D,MAAM,WAAW,GAAG,IAAI,YAAY,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;IACnG,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACpC,WAAW,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACzD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAChC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5C,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAC9C,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACrC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;IAC/B,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,WAAW,CAAC,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,6EAA6E;AAE7E;yDACyD;AACzD,MAAM,UAAU,mBAAmB,CAAC,MAAoB;IACtD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IACvC,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IACtC,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAC1C,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAC3C,MAAM,cAAc,GAAG,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IACvC,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC;YACV,OAAO,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;YAC3E,OAAO,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;YAC3E,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;YAC/B,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;YAC/B,kBAAkB,EAAE,MAAM,CAAC,UAAU,EAAE;YACvC,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE;YAC9B,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE;SAC3B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;AAC1F,CAAC;AAED,0DAA0D;AAC1D,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAkB,EAClB,IAAuB,EACvB,OAAe;IAEf,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7F,IAAI,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,CAAC,UAAU,0BAA0B,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACxH,CAAC;IACD,8DAA8D;IAC9D,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,KAAK,CAAC,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,MAAM,CAAC,UAAU;QAC7E,CAAC,CAAC,GAAG,CAAC,MAAM;QACZ,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC;IACvB,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,MAAqB,CAAC,CAAC;IACvD,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,yEAAyE;IACzE,yEAAyE;IACzE,uEAAuE;IACvE,sEAAsE;IACtE,yEAAyE;IACzE,yEAAyE;IACzE,yEAAyE;IACzE,wEAAwE;IACxE,IAAI,MAAM,CAAC,QAAQ,KAAK,GAAG,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,+BAA+B,IAAI,CAAC,SAAS,gCAAgC,MAAM,CAAC,QAAQ,OAAO,GAAG,CAAC,UAAU,QAAQ,CAC1H,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAmB,EACnB,aAAqB,EACrB,OAAe;IAEf,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC;IAChC,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACzC,uEAAuE;IACvE,oEAAoE;IACpE,wEAAwE;IACxE,uEAAuE;IACvE,0EAA0E;IAC1E,iCAAiC;IACjC,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC;IACtD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IAErC,yBAAyB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAE/C,OAAO;QACL,GAAG,IAAI;QACP,SAAS,CAAC,KAAa;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,IAAI;gBAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,eAAe,KAAK,kBAAkB,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACzG,MAAM,KAAK,GAAG,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC;YAC9C,MAAM,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;YACpC,mEAAmE;YACnE,qEAAqE;YACrE,iEAAiE;YACjE,6DAA6D;YAC7D,kDAAkD;YAClD,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBACvB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAC7B,iCAAiC,KAAK,WAAW,KAAK,KAAK,GAAG,2BAA2B,KAAK,CAAC,MAAM,EAAE,CACxG,CAAC,CAAC;YACL,CAAC;YACD,OAAO,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACxE,CAAC;KACF,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAmB,EACnB,aAAqB,EACrB,OAAe;IAEf,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IACnE,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO;QACL,MAAM;QACN,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,cAAc,EAAE,IAAI,CAAC,cAAc;KACpC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"geometry-chunks.js","sourceRoot":"","sources":["../../src/sections/geometry-chunks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const deflateRaw: (data: Uint8Array) => Promise<Uint8Array<ArrayBuffer>>;
|
|
2
|
+
export declare const inflateRaw: (data: Uint8Array) => Promise<Uint8Array<ArrayBuffer>>;
|
|
3
|
+
/** Same codec and strictly-smaller selection on either side of the worker boundary. */
|
|
4
|
+
export declare function chooseStoredGeometryChunk(raw: Uint8Array<ArrayBuffer>): Promise<{
|
|
5
|
+
bytes: Uint8Array<ArrayBuffer>;
|
|
6
|
+
compressed: boolean;
|
|
7
|
+
}>;
|
|
8
|
+
//# sourceMappingURL=geometry-codec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry-codec.d.ts","sourceRoot":"","sources":["../../src/sections/geometry-codec.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,UAAU,GAAI,MAAM,UAAU,KAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CACpB,CAAC;AAE1D,eAAO,MAAM,UAAU,GAAI,MAAM,UAAU,KAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAClB,CAAC;AAE5D,uFAAuF;AACvF,wBAAsB,yBAAyB,CAAC,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC;;;GAK3E"}
|
|
@@ -0,0 +1,19 @@
|
|
|
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
|
+
async function pipeThrough(data, stream) {
|
|
5
|
+
// Copy into an owned ArrayBuffer for Blob, including inputs with shared backing.
|
|
6
|
+
const standalone = new Uint8Array(data);
|
|
7
|
+
const out = await new Response(new Blob([standalone]).stream().pipeThrough(stream)).arrayBuffer();
|
|
8
|
+
return new Uint8Array(out);
|
|
9
|
+
}
|
|
10
|
+
export const deflateRaw = (data) => pipeThrough(data, new CompressionStream('deflate-raw'));
|
|
11
|
+
export const inflateRaw = (data) => pipeThrough(data, new DecompressionStream('deflate-raw'));
|
|
12
|
+
/** Same codec and strictly-smaller selection on either side of the worker boundary. */
|
|
13
|
+
export async function chooseStoredGeometryChunk(raw) {
|
|
14
|
+
const compressed = await deflateRaw(raw);
|
|
15
|
+
return compressed.byteLength < raw.byteLength
|
|
16
|
+
? { bytes: compressed, compressed: true }
|
|
17
|
+
: { bytes: raw, compressed: false };
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=geometry-codec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry-codec.js","sourceRoot":"","sources":["../../src/sections/geometry-codec.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,KAAK,UAAU,WAAW,CAAC,IAAgB,EAAE,MAA+C;IAC1F,iFAAiF;IACjF,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,MAAM,IAAI,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAClG,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAgB,EAAoC,EAAE,CAC/E,WAAW,CAAC,IAAI,EAAE,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAgB,EAAoC,EAAE,CAC/E,WAAW,CAAC,IAAI,EAAE,IAAI,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC;AAE5D,uFAAuF;AACvF,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,GAA4B;IAC1E,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IACzC,OAAO,UAAU,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU;QAC3C,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE;QACzC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACxC,CAAC"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { MeshData, CoordinateInfo } from '@ifc-lite/geometry';
|
|
5
5
|
import { BufferWriter, BufferReader } from '../utils/buffer-utils.js';
|
|
6
|
+
import { type AppearanceSourcePool } from './appearance-provenance.js';
|
|
6
7
|
/**
|
|
7
8
|
* Validate + filter meshes (detached buffers / size mismatches / absurd
|
|
8
9
|
* counts) and recompute the real totals. Used by the v13 chunked writer.
|
|
@@ -13,14 +14,14 @@ export declare function validateMeshes(meshes: MeshData[]): {
|
|
|
13
14
|
actualTotalTriangles: number;
|
|
14
15
|
};
|
|
15
16
|
/**
|
|
16
|
-
* One per-mesh record inside a v13 chunk
|
|
17
|
-
*
|
|
17
|
+
* One current-version per-mesh record inside a v13+ chunk. Version 19
|
|
18
|
+
* appends optional canonical appearance provenance after geometry arrays.
|
|
18
19
|
*/
|
|
19
|
-
export declare function writeMeshRecord(writer: BufferWriter, mesh: MeshData): void;
|
|
20
|
+
export declare function writeMeshRecord(writer: BufferWriter, mesh: MeshData, pool?: AppearanceSourcePool): void;
|
|
20
21
|
/** Exact serialized size of one per-mesh record, for chunk byte budgeting. */
|
|
21
|
-
export declare function meshRecordByteLength(mesh: MeshData): number;
|
|
22
|
+
export declare function meshRecordByteLength(mesh: MeshData, pool?: AppearanceSourcePool): number;
|
|
22
23
|
export declare function writeCoordinateInfo(writer: BufferWriter, info: CoordinateInfo): void;
|
|
23
24
|
/** Read one per-mesh record (see writeMeshRecord for the layout). */
|
|
24
|
-
export declare function readMeshRecord(reader: BufferReader, version: number, meshIndex?: number): MeshData;
|
|
25
|
+
export declare function readMeshRecord(reader: BufferReader, version: number, meshIndex?: number, pool?: readonly Uint32Array[]): MeshData;
|
|
25
26
|
export declare function readCoordinateInfo(reader: BufferReader, version?: number): CoordinateInfo;
|
|
26
27
|
//# sourceMappingURL=geometry.d.ts.map
|