@ifc-lite/cache 3.3.0 → 3.4.2
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 +23 -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/geometry-chunks.d.ts +3 -30
- package/dist/sections/geometry-chunks.d.ts.map +1 -1
- package/dist/sections/geometry-chunks.js +43 -7
- package/dist/sections/geometry-chunks.js.map +1 -1
- 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 +6 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -1
- package/dist/types.js.map +1 -1
- package/package.json +4 -4
package/dist/glb.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glb.d.ts","sourceRoot":"","sources":["../src/glb.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"glb.d.ts","sourceRoot":"","sources":["../src/glb.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAYnD,2BAA2B;AAC3B,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;CACxB;AAED,2DAA2D;AAC3D,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,gBAAgB,CAAC;AAC7D;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CA8DpD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,CAwBhE;AAGD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,GAAG,QAAQ,EAAE,CAgMlF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,EAAE,CAM9D"}
|
package/dist/glb.js
CHANGED
|
@@ -2,19 +2,14 @@
|
|
|
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
4
|
import { safeUtf8Decode } from '@ifc-lite/data';
|
|
5
|
+
import { primitiveTexture, validateGLBImages } from './glb-images.js';
|
|
5
6
|
import { linearToSrgb } from './glb-color.js';
|
|
6
7
|
// glTF 2.0 constants
|
|
7
8
|
const GLB_MAGIC = 0x46546c67; // 'glTF'
|
|
8
9
|
const GLB_VERSION = 2;
|
|
9
10
|
const CHUNK_TYPE_JSON = 0x4e4f534a; // 'JSON'
|
|
10
11
|
const CHUNK_TYPE_BIN = 0x004e4942; // 'BIN\0'
|
|
11
|
-
|
|
12
|
-
const COMPONENT_BYTE = 5120;
|
|
13
|
-
const COMPONENT_UNSIGNED_BYTE = 5121;
|
|
14
|
-
const COMPONENT_SHORT = 5122;
|
|
15
|
-
const COMPONENT_UNSIGNED_SHORT = 5123;
|
|
16
|
-
const COMPONENT_UNSIGNED_INT = 5125;
|
|
17
|
-
const COMPONENT_FLOAT = 5126;
|
|
12
|
+
import { readAccessorData } from './glb-accessor.js';
|
|
18
13
|
/**
|
|
19
14
|
* Parse a GLB (binary glTF) file
|
|
20
15
|
*
|
|
@@ -102,175 +97,7 @@ export function extractGLBMapping(gltf) {
|
|
|
102
97
|
}
|
|
103
98
|
return { expressIdToNode, expressIdToMesh, nodeToExpressId };
|
|
104
99
|
}
|
|
105
|
-
|
|
106
|
-
* Get the byte size for a glTF component type
|
|
107
|
-
*/
|
|
108
|
-
function getComponentSize(componentType) {
|
|
109
|
-
switch (componentType) {
|
|
110
|
-
case COMPONENT_BYTE:
|
|
111
|
-
case COMPONENT_UNSIGNED_BYTE:
|
|
112
|
-
return 1;
|
|
113
|
-
case COMPONENT_SHORT:
|
|
114
|
-
case COMPONENT_UNSIGNED_SHORT:
|
|
115
|
-
return 2;
|
|
116
|
-
case COMPONENT_UNSIGNED_INT:
|
|
117
|
-
case COMPONENT_FLOAT:
|
|
118
|
-
return 4;
|
|
119
|
-
default:
|
|
120
|
-
throw new Error(`Unknown component type: ${componentType}`);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Get the number of components for an accessor type
|
|
125
|
-
*/
|
|
126
|
-
function getComponentCount(type) {
|
|
127
|
-
switch (type) {
|
|
128
|
-
case 'SCALAR':
|
|
129
|
-
return 1;
|
|
130
|
-
case 'VEC2':
|
|
131
|
-
return 2;
|
|
132
|
-
case 'VEC3':
|
|
133
|
-
return 3;
|
|
134
|
-
case 'VEC4':
|
|
135
|
-
return 4;
|
|
136
|
-
case 'MAT2':
|
|
137
|
-
return 4;
|
|
138
|
-
case 'MAT3':
|
|
139
|
-
return 9;
|
|
140
|
-
case 'MAT4':
|
|
141
|
-
return 16;
|
|
142
|
-
default:
|
|
143
|
-
throw new Error(`Unknown accessor type: ${type}`);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Read accessor data as a typed array
|
|
148
|
-
*/
|
|
149
|
-
function readAccessorData(gltf, bin, accessorIdx) {
|
|
150
|
-
const accessor = gltf.accessors?.[accessorIdx];
|
|
151
|
-
if (!accessor) {
|
|
152
|
-
throw new Error(`Accessor ${accessorIdx} not found`);
|
|
153
|
-
}
|
|
154
|
-
const bufferView = gltf.bufferViews?.[accessor.bufferView];
|
|
155
|
-
if (!bufferView) {
|
|
156
|
-
throw new Error(`BufferView ${accessor.bufferView} not found`);
|
|
157
|
-
}
|
|
158
|
-
const componentSize = getComponentSize(accessor.componentType);
|
|
159
|
-
const componentCount = getComponentCount(accessor.type);
|
|
160
|
-
const elementSize = componentSize * componentCount;
|
|
161
|
-
const byteStride = bufferView.byteStride ?? elementSize;
|
|
162
|
-
const bufferOffset = (bufferView.byteOffset ?? 0) + (accessor.byteOffset ?? 0);
|
|
163
|
-
// `accessor.count` comes straight from the (untrusted) GLB JSON chunk and
|
|
164
|
-
// is REQUIRED by the glTF spec, but nothing here enforced that at runtime:
|
|
165
|
-
// a missing/non-numeric `count` makes it `undefined`/NaN, and `NaN * x` is
|
|
166
|
-
// NaN. Every arithmetic bounds comparison below (`< 0`, `> bin.byteLength`)
|
|
167
|
-
// is false against NaN, so the bounds check was silently bypassed rather
|
|
168
|
-
// than rejecting the malformed accessor. Control then fell through to a
|
|
169
|
-
// typed-array constructor built from that same NaN count, which coerces to
|
|
170
|
-
// an element count of 0 (ToIndex(NaN) === 0) — producing a silently EMPTY
|
|
171
|
-
// mesh reported as a successful import instead of throwing.
|
|
172
|
-
if (!Number.isInteger(accessor.count) || accessor.count < 0) {
|
|
173
|
-
throw new Error(`GLB: accessor ${accessorIdx} has an invalid count: ${accessor.count}`);
|
|
174
|
-
}
|
|
175
|
-
// Bounds-check the full byte range this accessor claims against the actual
|
|
176
|
-
// BIN chunk BEFORE slicing/constructing anything. `accessor.count` /
|
|
177
|
-
// `byteOffset` come straight from the (untrusted) GLB JSON chunk; without
|
|
178
|
-
// this, `bin.slice()` below silently CLAMPS on a truncated/malformed BIN
|
|
179
|
-
// (fewer bytes than asked), and the typed-array constructor that follows
|
|
180
|
-
// still requests the ORIGINALLY declared element count against that
|
|
181
|
-
// shorter buffer — a raw `RangeError: Invalid typed array length` (or
|
|
182
|
-
// "range consisting of offset and length are out of bounds", depending on
|
|
183
|
-
// engine) escapes instead of a diagnosable domain error.
|
|
184
|
-
const neededBytes = byteStride === elementSize
|
|
185
|
-
? accessor.count * elementSize
|
|
186
|
-
: accessor.count > 0
|
|
187
|
-
? (accessor.count - 1) * byteStride + elementSize
|
|
188
|
-
: 0;
|
|
189
|
-
if (bufferOffset < 0 || neededBytes < 0 || bufferOffset + neededBytes > bin.byteLength) {
|
|
190
|
-
throw new Error(`GLB: accessor ${accessorIdx} reads bytes [${bufferOffset}, ${bufferOffset + neededBytes}) ` +
|
|
191
|
-
`but the BIN chunk is only ${bin.byteLength} bytes`);
|
|
192
|
-
}
|
|
193
|
-
// If data is tightly packed, we can use a view directly
|
|
194
|
-
if (byteStride === elementSize) {
|
|
195
|
-
const byteLength = accessor.count * elementSize;
|
|
196
|
-
const slice = bin.slice(bufferOffset, bufferOffset + byteLength);
|
|
197
|
-
switch (accessor.componentType) {
|
|
198
|
-
case COMPONENT_FLOAT:
|
|
199
|
-
return new Float32Array(slice.buffer, slice.byteOffset, accessor.count * componentCount);
|
|
200
|
-
case COMPONENT_UNSIGNED_INT:
|
|
201
|
-
return new Uint32Array(slice.buffer, slice.byteOffset, accessor.count * componentCount);
|
|
202
|
-
case COMPONENT_UNSIGNED_SHORT:
|
|
203
|
-
return new Uint16Array(slice.buffer, slice.byteOffset, accessor.count * componentCount);
|
|
204
|
-
case COMPONENT_UNSIGNED_BYTE:
|
|
205
|
-
return slice;
|
|
206
|
-
default:
|
|
207
|
-
throw new Error(`Unsupported component type for reading: ${accessor.componentType}`);
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
// Handle strided data
|
|
211
|
-
const result = accessor.componentType === COMPONENT_FLOAT
|
|
212
|
-
? new Float32Array(accessor.count * componentCount)
|
|
213
|
-
: accessor.componentType === COMPONENT_UNSIGNED_INT
|
|
214
|
-
? new Uint32Array(accessor.count * componentCount)
|
|
215
|
-
: accessor.componentType === COMPONENT_UNSIGNED_SHORT
|
|
216
|
-
? new Uint16Array(accessor.count * componentCount)
|
|
217
|
-
: new Uint8Array(accessor.count * componentCount);
|
|
218
|
-
const dataView = new DataView(bin.buffer, bin.byteOffset, bin.byteLength);
|
|
219
|
-
for (let i = 0; i < accessor.count; i++) {
|
|
220
|
-
const elementOffset = bufferOffset + i * byteStride;
|
|
221
|
-
for (let c = 0; c < componentCount; c++) {
|
|
222
|
-
const byteOffset = elementOffset + c * componentSize;
|
|
223
|
-
let value;
|
|
224
|
-
switch (accessor.componentType) {
|
|
225
|
-
case COMPONENT_FLOAT:
|
|
226
|
-
value = dataView.getFloat32(byteOffset, true);
|
|
227
|
-
break;
|
|
228
|
-
case COMPONENT_UNSIGNED_INT:
|
|
229
|
-
value = dataView.getUint32(byteOffset, true);
|
|
230
|
-
break;
|
|
231
|
-
case COMPONENT_UNSIGNED_SHORT:
|
|
232
|
-
value = dataView.getUint16(byteOffset, true);
|
|
233
|
-
break;
|
|
234
|
-
case COMPONENT_UNSIGNED_BYTE:
|
|
235
|
-
value = dataView.getUint8(byteOffset);
|
|
236
|
-
break;
|
|
237
|
-
default:
|
|
238
|
-
throw new Error(`Unsupported component type: ${accessor.componentType}`);
|
|
239
|
-
}
|
|
240
|
-
result[i * componentCount + c] = value;
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
return result;
|
|
244
|
-
}
|
|
245
|
-
const MAT4_IDENTITY = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
|
|
246
|
-
/** Column-major 4x4 multiply `a * b`. */
|
|
247
|
-
function mat4Mul(a, b) {
|
|
248
|
-
const out = new Array(16);
|
|
249
|
-
for (let col = 0; col < 4; col++) {
|
|
250
|
-
for (let row = 0; row < 4; row++) {
|
|
251
|
-
let s = 0;
|
|
252
|
-
for (let k = 0; k < 4; k++)
|
|
253
|
-
s += a[k * 4 + row] * b[col * 4 + k];
|
|
254
|
-
out[col * 4 + row] = s;
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
return out;
|
|
258
|
-
}
|
|
259
|
-
/** A node's local transform: its `matrix` (column-major) or a translation matrix. */
|
|
260
|
-
function nodeLocalMat4(nd) {
|
|
261
|
-
if (Array.isArray(nd.matrix) && nd.matrix.length === 16)
|
|
262
|
-
return nd.matrix;
|
|
263
|
-
const t = nd.translation;
|
|
264
|
-
return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, t?.[0] ?? 0, t?.[1] ?? 0, t?.[2] ?? 0, 1];
|
|
265
|
-
}
|
|
266
|
-
/** True when a 4x4's upper-left 3x3 is the identity (within epsilon) — i.e. the
|
|
267
|
-
* node carries pure translation, so vertices need no rotation/scale baking. */
|
|
268
|
-
function linearIsIdentity(m) {
|
|
269
|
-
const e = 1e-6;
|
|
270
|
-
return (Math.abs(m[0] - 1) < e && Math.abs(m[1]) < e && Math.abs(m[2]) < e &&
|
|
271
|
-
Math.abs(m[4]) < e && Math.abs(m[5] - 1) < e && Math.abs(m[6]) < e &&
|
|
272
|
-
Math.abs(m[8]) < e && Math.abs(m[9]) < e && Math.abs(m[10] - 1) < e);
|
|
273
|
-
}
|
|
100
|
+
import { MAT4_IDENTITY, mat4Mul, nodeLocalMat4, linearIsIdentity, normalMatrix, mirrored } from './glb-transform.js';
|
|
274
101
|
/**
|
|
275
102
|
* Parse GLB geometry into MeshData format
|
|
276
103
|
*
|
|
@@ -280,6 +107,15 @@ function linearIsIdentity(m) {
|
|
|
280
107
|
*/
|
|
281
108
|
export function parseGLBToMeshData(gltf, bin) {
|
|
282
109
|
const meshes = [];
|
|
110
|
+
for (const extension of gltf.extensionsRequired ?? []) {
|
|
111
|
+
if (extension === 'KHR_draco_mesh_compression')
|
|
112
|
+
throw new Error('GLB: Draco-compressed geometry is not yet supported; export an uncompressed GLB or glTF bundle.');
|
|
113
|
+
if (extension === 'KHR_materials_pbrSpecularGlossiness')
|
|
114
|
+
throw new Error('GLB: required specular-glossiness materials do not expose a supported base-colour texture.');
|
|
115
|
+
if (!extension.startsWith('KHR_materials_') && extension !== 'KHR_texture_transform')
|
|
116
|
+
throw new Error(`GLB: unsupported required extension ${extension}`);
|
|
117
|
+
}
|
|
118
|
+
validateGLBImages(gltf, bin);
|
|
283
119
|
const mapping = extractGLBMapping(gltf);
|
|
284
120
|
if (!gltf.nodes || !gltf.meshes) {
|
|
285
121
|
return meshes;
|
|
@@ -297,14 +133,20 @@ export function parseGLBToMeshData(gltf, bin) {
|
|
|
297
133
|
const seen = new Set();
|
|
298
134
|
const roots = gltf.scenes?.[gltf.scene ?? 0]?.nodes ?? gltf.nodes.map((_, i) => i);
|
|
299
135
|
const walk = (idx, parent) => {
|
|
300
|
-
const
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
136
|
+
const pending = [[idx, parent]];
|
|
137
|
+
while (pending.length) {
|
|
138
|
+
const [idx, parent] = pending.pop();
|
|
139
|
+
const nd = gltf.nodes?.[idx];
|
|
140
|
+
if (!nd || seen.has(idx))
|
|
141
|
+
continue; // finite iterative walk
|
|
142
|
+
if (nd.skin !== undefined)
|
|
143
|
+
throw new Error('GLB: skinned capture meshes are not supported');
|
|
144
|
+
seen.add(idx);
|
|
145
|
+
const world = mat4Mul(parent, nodeLocalMat4(nd));
|
|
146
|
+
nodeWorldM.set(idx, world);
|
|
147
|
+
for (const c of nd.children ?? [])
|
|
148
|
+
pending.push([c, world]);
|
|
149
|
+
}
|
|
308
150
|
};
|
|
309
151
|
for (const r of roots)
|
|
310
152
|
walk(r, MAT4_IDENTITY);
|
|
@@ -323,7 +165,7 @@ export function parseGLBToMeshData(gltf, bin) {
|
|
|
323
165
|
const material = gltf.materials?.[materialIdx];
|
|
324
166
|
const factor = material?.pbrMetallicRoughness?.baseColorFactor;
|
|
325
167
|
if (!Array.isArray(factor) || factor.length < 3)
|
|
326
|
-
return [...DEFAULT_COLOR];
|
|
168
|
+
return material?.pbrMetallicRoughness?.baseColorTexture ? [1, 1, 1, 1] : [...DEFAULT_COLOR];
|
|
327
169
|
const r = factor[0], g = factor[1], b = factor[2], a = factor.length >= 4 ? factor[3] : 1.0;
|
|
328
170
|
if (typeof r !== 'number' || !Number.isFinite(r) ||
|
|
329
171
|
typeof g !== 'number' || !Number.isFinite(g) ||
|
|
@@ -331,7 +173,7 @@ export function parseGLBToMeshData(gltf, bin) {
|
|
|
331
173
|
typeof a !== 'number' || !Number.isFinite(a)) {
|
|
332
174
|
return [...DEFAULT_COLOR];
|
|
333
175
|
}
|
|
334
|
-
return [linearToSrgb(r), linearToSrgb(g), linearToSrgb(b), a];
|
|
176
|
+
return [linearToSrgb(r), linearToSrgb(g), linearToSrgb(b), material?.pbrMetallicRoughness?.baseColorTexture ? 1 : a];
|
|
335
177
|
};
|
|
336
178
|
for (let nodeIdx = 0; nodeIdx < gltf.nodes.length; nodeIdx++) {
|
|
337
179
|
const node = gltf.nodes[nodeIdx];
|
|
@@ -353,14 +195,14 @@ export function parseGLBToMeshData(gltf, bin) {
|
|
|
353
195
|
if (posAccessorIdx === undefined)
|
|
354
196
|
continue;
|
|
355
197
|
// Read position data
|
|
356
|
-
const positions = readAccessorData(gltf, bin, posAccessorIdx);
|
|
198
|
+
const positions = readAccessorData(gltf, bin, posAccessorIdx, 'VEC3');
|
|
357
199
|
if (!(positions instanceof Float32Array)) {
|
|
358
200
|
throw new Error('Position data must be Float32');
|
|
359
201
|
}
|
|
360
202
|
// Read normal data (optional, generate if missing)
|
|
361
203
|
let normals;
|
|
362
204
|
if (normAccessorIdx !== undefined) {
|
|
363
|
-
const normData = readAccessorData(gltf, bin, normAccessorIdx);
|
|
205
|
+
const normData = readAccessorData(gltf, bin, normAccessorIdx, 'VEC3');
|
|
364
206
|
if (!(normData instanceof Float32Array)) {
|
|
365
207
|
throw new Error('Normal data must be Float32');
|
|
366
208
|
}
|
|
@@ -373,7 +215,7 @@ export function parseGLBToMeshData(gltf, bin) {
|
|
|
373
215
|
// Read index data (optional for non-indexed geometry)
|
|
374
216
|
let indices;
|
|
375
217
|
if (idxAccessorIdx !== undefined) {
|
|
376
|
-
const idxData = readAccessorData(gltf, bin, idxAccessorIdx);
|
|
218
|
+
const idxData = readAccessorData(gltf, bin, idxAccessorIdx, 'SCALAR');
|
|
377
219
|
if (idxData instanceof Float32Array) {
|
|
378
220
|
throw new Error('Index data cannot be Float32');
|
|
379
221
|
}
|
|
@@ -388,6 +230,26 @@ export function parseGLBToMeshData(gltf, bin) {
|
|
|
388
230
|
indices[i] = i;
|
|
389
231
|
}
|
|
390
232
|
}
|
|
233
|
+
if (positions.length % 3 || indices.length % 3 || normals.length !== positions.length || !positions.every(Number.isFinite) || !normals.every(Number.isFinite) || indices.some(index => index >= positions.length / 3))
|
|
234
|
+
throw new Error('GLB: invalid triangle geometry');
|
|
235
|
+
if (normAccessorIdx === undefined) {
|
|
236
|
+
for (let i = 0; i < indices.length; i += 3) {
|
|
237
|
+
const a = indices[i] * 3, b = indices[i + 1] * 3, c = indices[i + 2] * 3;
|
|
238
|
+
const ux = positions[b] - positions[a], uy = positions[b + 1] - positions[a + 1], uz = positions[b + 2] - positions[a + 2];
|
|
239
|
+
const vx = positions[c] - positions[a], vy = positions[c + 1] - positions[a + 1], vz = positions[c + 2] - positions[a + 2];
|
|
240
|
+
for (const index of [a, b, c]) {
|
|
241
|
+
normals[index] += uy * vz - uz * vy;
|
|
242
|
+
normals[index + 1] += uz * vx - ux * vz;
|
|
243
|
+
normals[index + 2] += ux * vy - uy * vx;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
for (let i = 0; i < normals.length; i += 3) {
|
|
247
|
+
const length = Math.hypot(normals[i], normals[i + 1], normals[i + 2]) || 1;
|
|
248
|
+
normals[i] /= length;
|
|
249
|
+
normals[i + 1] /= length;
|
|
250
|
+
normals[i + 2] /= length;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
391
253
|
// Apply the node's composed world transform. The TRANSLATION rides each mesh
|
|
392
254
|
// as `MeshData.origin` (world = origin + position) and is kept OUT of the f32
|
|
393
255
|
// vertex buffer: the exporter emits scene-centre-relative vertices precisely so
|
|
@@ -409,20 +271,27 @@ export function parseGLBToMeshData(gltf, bin) {
|
|
|
409
271
|
outPositions[i + 1] = m[1] * x + m[5] * y + m[9] * z;
|
|
410
272
|
outPositions[i + 2] = m[2] * x + m[6] * y + m[10] * z;
|
|
411
273
|
}
|
|
274
|
+
const n = normalMatrix(m);
|
|
412
275
|
outNormals = new Float32Array(normals.length);
|
|
413
276
|
for (let i = 0; i + 2 < normals.length; i += 3) {
|
|
414
277
|
const x = normals[i], y = normals[i + 1], z = normals[i + 2];
|
|
415
|
-
const nx =
|
|
416
|
-
const ny =
|
|
417
|
-
const nz =
|
|
278
|
+
const nx = n[0] * x + n[3] * y + n[6] * z;
|
|
279
|
+
const ny = n[1] * x + n[4] * y + n[7] * z;
|
|
280
|
+
const nz = n[2] * x + n[5] * y + n[8] * z;
|
|
418
281
|
const len = Math.hypot(nx, ny, nz) || 1;
|
|
419
282
|
outNormals[i] = nx / len;
|
|
420
283
|
outNormals[i + 1] = ny / len;
|
|
421
284
|
outNormals[i + 2] = nz / len;
|
|
422
285
|
}
|
|
423
286
|
}
|
|
287
|
+
if (mirrored(m)) {
|
|
288
|
+
for (let i = 0; i < indices.length; i += 3)
|
|
289
|
+
[indices[i + 1], indices[i + 2]] = [indices[i + 2], indices[i + 1]];
|
|
290
|
+
}
|
|
424
291
|
const origin = t[0] !== 0 || t[1] !== 0 || t[2] !== 0 ? t : undefined;
|
|
292
|
+
const texture = primitiveTexture(gltf, bin, primitive, positions.length / 3);
|
|
425
293
|
meshes.push({
|
|
294
|
+
...texture,
|
|
426
295
|
expressId,
|
|
427
296
|
positions: outPositions,
|
|
428
297
|
normals: outNormals,
|
package/dist/glb.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glb.js","sourceRoot":"","sources":["../src/glb.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"glb.js","sourceRoot":"","sources":["../src/glb.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -43,4 +43,5 @@ export { xxhash64, xxhash64Hex } from './utils/hash.js';
|
|
|
43
43
|
export { BufferWriter, BufferReader } from './utils/buffer-utils.js';
|
|
44
44
|
export { parseGLB, extractGLBMapping, parseGLBToMeshData, loadGLBToMeshData, } from './glb.js';
|
|
45
45
|
export type { ParsedGLB, GLBMapping } from './glb.js';
|
|
46
|
+
export { parseGLBImageResources } from './glb-images.js';
|
|
46
47
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EACL,KAAK,EACL,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,iCAAiC,GAClC,MAAM,YAAY,CAAC;AAKpB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,YAAY,EACV,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGrE,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAElB,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EACL,KAAK,EACL,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,iCAAiC,GAClC,MAAM,YAAY,CAAC;AAKpB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,YAAY,EACV,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGrE,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAElB,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -45,4 +45,5 @@ export { xxhash64, xxhash64Hex } from './utils/hash.js';
|
|
|
45
45
|
export { BufferWriter, BufferReader } from './utils/buffer-utils.js';
|
|
46
46
|
// GLB parser
|
|
47
47
|
export { parseGLB, extractGLBMapping, parseGLBToMeshData, loadGLBToMeshData, } from './glb.js';
|
|
48
|
+
export { parseGLBImageResources } from './glb-images.js';
|
|
48
49
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG9C,OAAO,EACL,KAAK,EACL,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,iCAAiC,GAClC,MAAM,YAAY,CAAC;AAEpB,wEAAwE;AACxE,4EAA4E;AAC5E,mDAAmD;AACnD,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAiBrE,YAAY;AACZ,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAErE,aAAa;AACb,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG9C,OAAO,EACL,KAAK,EACL,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,iCAAiC,GAClC,MAAM,YAAY,CAAC;AAEpB,wEAAwE;AACxE,4EAA4E;AAC5E,mDAAmD;AACnD,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAiBrE,YAAY;AACZ,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAErE,aAAa;AACb,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAIlB,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { MeshData } from '@ifc-lite/geometry';
|
|
2
|
+
import { BufferReader, BufferWriter } from '../utils/buffer-utils.js';
|
|
3
|
+
export type AppearanceSourcePool = ReadonlyMap<Uint32Array, number>;
|
|
4
|
+
export declare function provenanceByteLength(mesh: MeshData, pool?: AppearanceSourcePool): number;
|
|
5
|
+
export declare function writeProvenance(writer: BufferWriter, mesh: MeshData, pool?: AppearanceSourcePool): void;
|
|
6
|
+
export declare function readProvenance(reader: BufferReader, mesh: MeshData, pool?: readonly Uint32Array[]): void;
|
|
7
|
+
/** Deduplicate by existing source-array identity across every spatial chunk. */
|
|
8
|
+
export declare function collectSourcePool(meshes: readonly MeshData[]): Map<Uint32Array, number>;
|
|
9
|
+
export declare function writeSourcePool(writer: BufferWriter, pool: AppearanceSourcePool): void;
|
|
10
|
+
export declare function readSourcePool(reader: BufferReader, meshCount: number, end: number): Uint32Array[];
|
|
11
|
+
//# sourceMappingURL=appearance-provenance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appearance-provenance.d.ts","sourceRoot":"","sources":["../../src/sections/appearance-provenance.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAItE,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AA0BpE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,oBAAoB,GAAG,MAAM,CAIxF;AACD,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAOvG;AACD,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAE,SAAS,WAAW,EAAO,GAAG,IAAI,CAmB5G;AACD,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAQvF;AACD,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAGtF;AACD,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,EAAE,CAUlG"}
|
|
@@ -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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"}
|