@flighthq/scene-document 0.4.1-next.37.ff47e13 → 0.4.1-next.515.b0834fe

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.
Files changed (40) hide show
  1. package/README.md +2 -2
  2. package/dist/contract.d.ts +2 -1
  3. package/dist/contract.d.ts.map +1 -1
  4. package/dist/contract.js +2 -1
  5. package/dist/contract.js.map +1 -1
  6. package/dist/flightDocumentText.d.ts +5 -0
  7. package/dist/flightDocumentText.d.ts.map +1 -0
  8. package/dist/flightDocumentText.js +617 -0
  9. package/dist/flightDocumentText.js.map +1 -0
  10. package/dist/index.d.ts +2 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +2 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/sceneDocumentMaterializationSelection.d.ts +13 -0
  15. package/dist/sceneDocumentMaterializationSelection.d.ts.map +1 -0
  16. package/dist/sceneDocumentMaterializationSelection.js +55 -0
  17. package/dist/sceneDocumentMaterializationSelection.js.map +1 -0
  18. package/dist/sceneDocumentRefusal.d.ts +6 -0
  19. package/dist/sceneDocumentRefusal.d.ts.map +1 -0
  20. package/dist/sceneDocumentRefusal.js +60 -0
  21. package/dist/sceneDocumentRefusal.js.map +1 -0
  22. package/dist/sceneDocumentScene2DMaterialization.d.ts +4 -5
  23. package/dist/sceneDocumentScene2DMaterialization.d.ts.map +1 -1
  24. package/dist/sceneDocumentScene2DMaterialization.js +81 -277
  25. package/dist/sceneDocumentScene2DMaterialization.js.map +1 -1
  26. package/dist/sceneDocumentScene3DMaterialization.d.ts +4 -4
  27. package/dist/sceneDocumentScene3DMaterialization.d.ts.map +1 -1
  28. package/dist/sceneDocumentScene3DMaterialization.js +145 -291
  29. package/dist/sceneDocumentScene3DMaterialization.js.map +1 -1
  30. package/dist/sceneDocumentYamlSubset.d.ts +3 -1
  31. package/dist/sceneDocumentYamlSubset.d.ts.map +1 -1
  32. package/dist/sceneDocumentYamlSubset.js.map +1 -1
  33. package/package.json +10 -9
  34. package/src/flightDocumentText.test.ts +179 -0
  35. package/src/sceneDocumentMaterializationSelection.test.ts +56 -0
  36. package/src/sceneDocumentMultiSceneMaterialization.test.ts +209 -0
  37. package/src/sceneDocumentRefusal.test.ts +143 -0
  38. package/src/sceneDocumentScene2DMaterialization.test.ts +188 -62
  39. package/src/sceneDocumentScene3DMaterialization.test.ts +485 -159
  40. package/src/sceneDocumentYamlSubset.test.ts +8 -0
@@ -1,140 +1,57 @@
1
+ import { getEntityRuntime } from '@flighthq/entity/contract';
2
+ import { getNodeRuntime } from '@flighthq/node/contract';
1
3
  import { addNodeChild, getNodeChildren } from '@flighthq/node/contract';
2
4
  import { getRegistryTableEntry } from '@flighthq/registry/contract';
3
5
  import { createScene2D } from '@flighthq/scene2d/contract';
4
- import { FlightDocumentRefusalReason } from '@flighthq/types/contract';
5
- import { parseSceneDocumentYamlSubset } from './sceneDocumentYamlSubset';
6
+ import { FlightDocumentRefusalReason, Node2DTraitsKey, Node3DTraitsKey } from '@flighthq/types/contract';
7
+ import { explainFlightDocumentText, parseFlightDocumentText } from './flightDocumentText';
8
+ import { selectFlightDocumentScene } from './sceneDocumentMaterializationSelection';
9
+ import { checkUnregisteredNodeKinds, createSceneRefusal } from './sceneDocumentRefusal';
6
10
  export function createFlightDocumentFromScene2D(source, schemas) {
7
11
  return {
8
12
  backgroundColor: source.color,
9
13
  kind: 'Scene2D',
10
- resources: [],
11
14
  scene: writeNode(source.root, schemas),
12
- version: 1,
13
15
  };
14
16
  }
15
- export function createFlightDocumentScene2DMaterialization(document, schemas, resolvers) {
16
- if (document.kind !== 'Scene2D')
17
+ export function createFlightDocumentScene2DMaterialization(document, schemas, resolvers, sceneIndex = document.defaultScene) {
18
+ const selection = selectFlightDocumentScene(document, 'Scene2D', sceneIndex);
19
+ if (selection.refusal !== null || selection.scene.kind !== 'Scene2D')
17
20
  return null;
18
- if (document.version !== 1)
21
+ const documentScene = selection.scene;
22
+ const unregisteredRefusal = checkUnregisteredNodeKinds(documentScene.scene, schemas, selection.sceneIndex, 'scene');
23
+ if (unregisteredRefusal !== null)
19
24
  return null;
20
- const scene = createScene2D({ color: document.backgroundColor });
25
+ const scene = createScene2D({ color: documentScene.backgroundColor });
21
26
  const resources = resolveResources(document.resources, resolvers);
22
- materializeChildren(scene.root, document.scene.children, schemas, resources);
27
+ // The authored root carries a kind and fields like any other node; materializing only its children
28
+ // discarded both, so a document whose root was a Sprite at (100, 200) came back a bare DisplayObject at
29
+ // the origin. The writer always captured them, which made the round trip lossy in one direction only.
30
+ if (!adoptDocumentRoot2D(scene, documentScene.scene, schemas, resources))
31
+ return null;
32
+ materializeChildren(scene.root, documentScene.scene.children, schemas, resources);
23
33
  return { scene };
24
34
  }
25
- export function createFlightDocumentScene2DMaterializationFromText(text, schemas, resolvers) {
26
- const document = parseFlightDocumentFromText(text);
35
+ export function createFlightDocumentScene2DMaterializationFromText(text, schemas, resolvers, sceneIndex) {
36
+ const document = parseFlightDocumentText(text);
27
37
  if (document === null)
28
38
  return null;
29
- return createFlightDocumentScene2DMaterialization(document, schemas, resolvers);
30
- }
31
- export function explainFlightDocumentRefusal(document, dimension) {
32
- if (document.kind !== dimension) {
33
- return createRefusal(FlightDocumentRefusalReason.StructureInvalid, 'kind');
34
- }
35
- if (document.version !== 1) {
36
- return {
37
- ...createRefusal(FlightDocumentRefusalReason.VersionUnsupported, 'version'),
38
- version: document.version,
39
- };
40
- }
41
- return null;
42
- }
43
- export function explainFlightDocumentRefusalFromText(text, dimension) {
44
- const result = parseSceneDocumentYamlSubset(text);
45
- if (!result.ok) {
46
- return {
47
- actual: result.actual,
48
- column: result.column,
49
- kind: null,
50
- limit: result.limit,
51
- line: result.line,
52
- offset: result.offset,
53
- path: '',
54
- reason: result.kind,
55
- resourceKey: null,
56
- version: null,
57
- };
58
- }
59
- const value = result.value;
60
- if (value === null || typeof value !== 'object' || Array.isArray(value)) {
61
- return createRefusal(FlightDocumentRefusalReason.StructureInvalid, '');
62
- }
63
- const mapping = value;
64
- const version = mapping['flight'];
65
- if (typeof version !== 'number') {
66
- return createRefusal(FlightDocumentRefusalReason.StructureInvalid, 'flight');
67
- }
68
- if (version !== 1) {
69
- return {
70
- ...createRefusal(FlightDocumentRefusalReason.VersionUnsupported, 'version'),
71
- version,
72
- };
73
- }
74
- const kind = mapping['kind'];
75
- if (kind !== dimension) {
76
- return createRefusal(FlightDocumentRefusalReason.StructureInvalid, 'kind');
77
- }
78
- return null;
79
- }
80
- export function serializeFlightDocument(document) {
81
- const lines = [];
82
- lines.push('flight: ' + String(document.version));
83
- lines.push('kind: ' + document.kind);
84
- if (document.kind === 'Scene2D' && document.backgroundColor !== null) {
85
- lines.push('backgroundColor: ' + String(document.backgroundColor));
86
- }
87
- if (document.kind === 'Scene3D') {
88
- if (document.cameras.length > 0) {
89
- lines.push('cameras:');
90
- for (const cam of document.cameras) {
91
- lines.push(' - far: ' + String(cam.far));
92
- lines.push(' near: ' + String(cam.near));
93
- lines.push(' projection:');
94
- serializeProjection(lines, cam.projection, 6);
95
- lines.push(' transform:');
96
- serializeTransform3D(lines, cam.transform, 6);
97
- if (cam.name !== undefined)
98
- lines.push(' name: ' + serializeScalar(cam.name));
99
- }
100
- }
101
- if (document.lights.length > 0) {
102
- lines.push('lights:');
103
- for (const light of document.lights) {
104
- lines.push(' - descriptor:');
105
- lines.push(' kind: ' + light.descriptor.kind);
106
- lines.push(' transform:');
107
- serializeTransform3D(lines, light.transform, 6);
108
- if (light.name !== undefined)
109
- lines.push(' name: ' + serializeScalar(light.name));
110
- }
111
- }
112
- }
113
- if (document.resources.length > 0) {
114
- lines.push('resources:');
115
- for (const resource of document.resources) {
116
- lines.push(' - kind: ' + resource.kind);
117
- lines.push(' key: ' + resource.key);
118
- serializeFields(lines, resource.fields, 4);
119
- }
120
- }
121
- lines.push('scene:');
122
- serializeNode(lines, document.scene, 2);
123
- return lines.join('\n') + '\n';
124
- }
125
- function createRefusal(reason, path) {
126
- return {
127
- actual: null,
128
- column: null,
129
- kind: null,
130
- limit: null,
131
- line: null,
132
- offset: null,
133
- path,
134
- reason,
135
- resourceKey: null,
136
- version: null,
137
- };
39
+ return createFlightDocumentScene2DMaterialization(document, schemas, resolvers, sceneIndex);
40
+ }
41
+ export function explainFlightDocumentRefusal(document, dimension, schemas, sceneIndex = document.defaultScene) {
42
+ const selection = selectFlightDocumentScene(document, dimension, sceneIndex);
43
+ if (selection.refusal !== null)
44
+ return selection.refusal;
45
+ const unregistered = checkUnregisteredNodeKinds(selection.scene.scene, schemas, selection.sceneIndex, 'scene');
46
+ if (unregistered !== null)
47
+ return unregistered;
48
+ return checkRootKindDimension(selection.scene.scene, dimension, schemas, selection.sceneIndex);
49
+ }
50
+ export function explainFlightDocumentRefusalFromText(text, dimension, schemas, sceneIndex) {
51
+ const document = parseFlightDocumentText(text);
52
+ if (document === null)
53
+ return explainFlightDocumentText(text);
54
+ return explainFlightDocumentRefusal(document, dimension, schemas, sceneIndex);
138
55
  }
139
56
  function materializeChildren(parent, children, schemas, resources) {
140
57
  for (const child of children) {
@@ -148,82 +65,6 @@ function materializeChildren(parent, children, schemas, resources) {
148
65
  materializeChildren(node, child.children, schemas, resources);
149
66
  }
150
67
  }
151
- function parseFlightDocumentFromText(text) {
152
- const result = parseSceneDocumentYamlSubset(text);
153
- if (!result.ok)
154
- return null;
155
- const value = result.value;
156
- if (value === null || typeof value !== 'object' || Array.isArray(value))
157
- return null;
158
- const mapping = value;
159
- const version = mapping['flight'];
160
- if (version !== 1)
161
- return null;
162
- const kind = mapping['kind'];
163
- if (kind !== 'Scene2D' && kind !== 'Scene3D')
164
- return null;
165
- const sceneRaw = mapping['scene'];
166
- const scene = parseDocumentNode(sceneRaw) ?? { children: [], fields: {}, kind: 'DisplayObject' };
167
- const resources = parseResources(mapping['resources']);
168
- if (kind === 'Scene2D') {
169
- const bg = mapping['backgroundColor'];
170
- return {
171
- backgroundColor: typeof bg === 'number' ? bg : null,
172
- kind: 'Scene2D',
173
- resources,
174
- scene,
175
- version: 1,
176
- };
177
- }
178
- return null;
179
- }
180
- function parseDocumentNode(value) {
181
- if (value === null || value === undefined || typeof value !== 'object' || Array.isArray(value)) {
182
- return null;
183
- }
184
- const mapping = value;
185
- const kind = mapping['kind'];
186
- if (typeof kind !== 'string')
187
- return null;
188
- const childrenRaw = mapping['children'];
189
- const children = [];
190
- if (Array.isArray(childrenRaw)) {
191
- for (const item of childrenRaw) {
192
- const child = parseDocumentNode(item);
193
- if (child !== null)
194
- children.push(child);
195
- }
196
- }
197
- const fields = {};
198
- for (const key of Object.keys(mapping)) {
199
- if (key === 'kind' || key === 'children')
200
- continue;
201
- fields[key] = mapping[key];
202
- }
203
- return { children, fields, kind };
204
- }
205
- function parseResources(value) {
206
- if (!Array.isArray(value))
207
- return [];
208
- const out = [];
209
- for (const item of value) {
210
- if (item === null || typeof item !== 'object' || Array.isArray(item))
211
- continue;
212
- const mapping = item;
213
- const kind = mapping['kind'];
214
- const key = mapping['key'];
215
- if (typeof kind !== 'string' || typeof key !== 'string')
216
- continue;
217
- const fields = {};
218
- for (const k of Object.keys(mapping)) {
219
- if (k === 'kind' || k === 'key')
220
- continue;
221
- fields[k] = mapping[k];
222
- }
223
- out.push({ fields, key, kind });
224
- }
225
- return out;
226
- }
227
68
  function resolveResources(descriptors, resolvers) {
228
69
  const out = {};
229
70
  if (resolvers === undefined)
@@ -238,57 +79,6 @@ function resolveResources(descriptors, resolvers) {
238
79
  }
239
80
  return out;
240
81
  }
241
- function serializeFields(lines, fields, indent) {
242
- const prefix = ' '.repeat(indent);
243
- for (const key of Object.keys(fields)) {
244
- const value = fields[key];
245
- lines.push(prefix + key + ': ' + serializeScalar(value));
246
- }
247
- }
248
- function serializeNode(lines, node, indent) {
249
- const prefix = ' '.repeat(indent);
250
- lines.push(prefix + 'kind: ' + node.kind);
251
- serializeFields(lines, node.fields, indent);
252
- if (node.children.length > 0) {
253
- lines.push(prefix + 'children:');
254
- for (const child of node.children) {
255
- lines.push(prefix + ' - kind: ' + child.kind);
256
- serializeFields(lines, child.fields, indent + 4);
257
- if (child.children.length > 0) {
258
- lines.push(prefix + ' children:');
259
- for (const grandchild of child.children) {
260
- serializeNodeAsSequenceItem(lines, grandchild, indent + 6);
261
- }
262
- }
263
- }
264
- }
265
- }
266
- function serializeNodeAsSequenceItem(lines, node, indent) {
267
- const prefix = ' '.repeat(indent);
268
- lines.push(prefix + '- kind: ' + node.kind);
269
- serializeFields(lines, node.fields, indent + 2);
270
- if (node.children.length > 0) {
271
- lines.push(prefix + ' children:');
272
- for (const child of node.children) {
273
- serializeNodeAsSequenceItem(lines, child, indent + 4);
274
- }
275
- }
276
- }
277
- function serializeScalar(value) {
278
- if (value === null)
279
- return 'null';
280
- if (typeof value === 'boolean')
281
- return value ? 'true' : 'false';
282
- if (typeof value === 'number')
283
- return String(value);
284
- if (typeof value === 'string') {
285
- if (/^[a-zA-Z_][\w.-]*$/.test(value) && value !== 'null' && value !== 'true' && value !== 'false') {
286
- return value;
287
- }
288
- return '"' + value.replace(/\\/g, '\\\\').replace(/"/g, '\\"') + '"';
289
- }
290
- return String(value);
291
- }
292
82
  function writeNode(source, schemas) {
293
83
  const fields = {};
294
84
  const schema = getRegistryTableEntry(schemas.nodeSchemas, source.kind);
@@ -302,36 +92,6 @@ function writeNode(source, schemas) {
302
92
  kind: source.kind,
303
93
  };
304
94
  }
305
- function serializeProjection(lines, projection, indent) {
306
- const prefix = ' '.repeat(indent);
307
- lines.push(prefix + 'kind: ' + projection.kind);
308
- if (projection.kind === 'perspective') {
309
- lines.push(prefix + 'fovY: ' + String(projection.fovY));
310
- lines.push(prefix + 'aspect: ' + String(projection.aspect));
311
- }
312
- else {
313
- lines.push(prefix + 'halfWidth: ' + String(projection.halfWidth));
314
- lines.push(prefix + 'halfHeight: ' + String(projection.halfHeight));
315
- }
316
- }
317
- function serializeTransform3D(lines, transform, indent) {
318
- const prefix = ' '.repeat(indent);
319
- const p = transform.position;
320
- const r = transform.rotation;
321
- const s = transform.scale;
322
- lines.push(prefix + 'position: { x: ' + String(p.x) + ', y: ' + String(p.y) + ', z: ' + String(p.z) + ' }');
323
- lines.push(prefix +
324
- 'rotation: { x: ' +
325
- String(r.x) +
326
- ', y: ' +
327
- String(r.y) +
328
- ', z: ' +
329
- String(r.z) +
330
- ', w: ' +
331
- String(r.w) +
332
- ' }');
333
- lines.push(prefix + 'scale: { x: ' + String(s.x) + ', y: ' + String(s.y) + ', z: ' + String(s.z) + ' }');
334
- }
335
95
  function writeFieldsWithDefaults(out, source, schema) {
336
96
  schema.writeNodeFields(out, source, {});
337
97
  for (const field of schema.fields) {
@@ -340,4 +100,48 @@ function writeFieldsWithDefaults(out, source, schema) {
340
100
  }
341
101
  }
342
102
  }
103
+ // Replaces the scene's default container root with the authored one, carrying its kind and fields.
104
+ // Returns false when the root cannot serve as a 2D root, which the caller reports as a refusal.
105
+ //
106
+ // ★ The dimension check is STRUCTURAL, not a roster: the node is built and its runtime traits key is read.
107
+ // A registered kind of the wrong dimension passes the unregistered-kind check — it IS registered — and
108
+ // would otherwise be installed as a 2D scene root while actually being a Node3D.
109
+ function adoptDocumentRoot2D(scene, documentRoot, schemas, resources) {
110
+ const schema = getRegistryTableEntry(schemas.nodeSchemas, documentRoot.kind);
111
+ if (schema === null)
112
+ return true;
113
+ const root = schema.createNode(documentRoot.fields, resources);
114
+ if (root === null)
115
+ return false;
116
+ const runtime = getEntityRuntime(root);
117
+ if (runtime?.traits !== Node2DTraitsKey)
118
+ return false;
119
+ const previous = scene.root;
120
+ scene.root = root;
121
+ getNodeRuntime(root).scene2d = scene;
122
+ getNodeRuntime(previous).scene2d = null;
123
+ return true;
124
+ }
125
+ // A registered root kind belonging to the other dimension. Distinct from an unregistered kind — the kind
126
+ // IS registered, so that check passes it through — and detected structurally by building the node and
127
+ // reading its runtime traits key rather than consulting any per-dimension roster.
128
+ function checkRootKindDimension(documentRoot, dimension, schemas, sceneIndex) {
129
+ const schema = getRegistryTableEntry(schemas.nodeSchemas, documentRoot.kind);
130
+ if (schema === null)
131
+ return null;
132
+ const probe = schema.createNode(documentRoot.fields, createEmptyResourceLookup());
133
+ if (probe === null)
134
+ return null;
135
+ const runtime = getEntityRuntime(probe);
136
+ const expected = dimension === 'Scene2D' ? Node2DTraitsKey : Node3DTraitsKey;
137
+ if (runtime?.traits === expected)
138
+ return null;
139
+ return {
140
+ ...createSceneRefusal(FlightDocumentRefusalReason.RootKindMismatch, sceneIndex, 'scene'),
141
+ kind: documentRoot.kind,
142
+ };
143
+ }
144
+ function createEmptyResourceLookup() {
145
+ return { resolve: () => null };
146
+ }
343
147
  //# sourceMappingURL=sceneDocumentScene2DMaterialization.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sceneDocumentScene2DMaterialization.js","sourceRoot":"","sources":["../src/sceneDocumentScene2DMaterialization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sceneDocumentScene2DMaterialization.js","sourceRoot":"","sources":["../src/sceneDocumentScene2DMaterialization.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { FlightDocument, FlightDocumentRefusalExplanation, FlightDocumentResourceResolverRegistry, FlightDocumentScene3D, FlightDocumentScene3DMaterialization, FlightDocumentSchemaRegistry, Scene3D, Scene3DDocumentCamera, Scene3DDocumentLight } from '@flighthq/types/contract';
2
2
  export declare function createFlightDocumentFromScene3D(source: Readonly<Scene3D>, cameras: readonly Readonly<Scene3DDocumentCamera>[], lights: readonly Readonly<Scene3DDocumentLight>[], schemas: Readonly<FlightDocumentSchemaRegistry>): FlightDocumentScene3D;
3
- export declare function createFlightDocumentScene3DMaterialization(document: Readonly<FlightDocument>, schemas: Readonly<FlightDocumentSchemaRegistry>, resolvers?: Readonly<FlightDocumentResourceResolverRegistry>): FlightDocumentScene3DMaterialization | null;
4
- export declare function createFlightDocumentScene3DMaterializationFromText(text: string, schemas: Readonly<FlightDocumentSchemaRegistry>, resolvers?: Readonly<FlightDocumentResourceResolverRegistry>): FlightDocumentScene3DMaterialization | null;
5
- export declare function explainFlightDocumentScene3DRefusal(document: Readonly<FlightDocument>): FlightDocumentRefusalExplanation | null;
6
- export declare function explainFlightDocumentScene3DRefusalFromText(text: string): FlightDocumentRefusalExplanation | null;
3
+ export declare function createFlightDocumentScene3DMaterialization(document: Readonly<FlightDocument>, schemas: Readonly<FlightDocumentSchemaRegistry>, resolvers?: Readonly<FlightDocumentResourceResolverRegistry>, sceneIndex?: number): FlightDocumentScene3DMaterialization | null;
4
+ export declare function createFlightDocumentScene3DMaterializationFromText(text: string, schemas: Readonly<FlightDocumentSchemaRegistry>, resolvers?: Readonly<FlightDocumentResourceResolverRegistry>, sceneIndex?: number): FlightDocumentScene3DMaterialization | null;
5
+ export declare function explainFlightDocumentScene3DRefusal(document: Readonly<FlightDocument>, schemas: Readonly<FlightDocumentSchemaRegistry>, sceneIndex?: number): FlightDocumentRefusalExplanation | null;
6
+ export declare function explainFlightDocumentScene3DRefusalFromText(text: string, schemas: Readonly<FlightDocumentSchemaRegistry>, sceneIndex?: number): FlightDocumentRefusalExplanation | null;
7
7
  //# sourceMappingURL=sceneDocumentScene3DMaterialization.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sceneDocumentScene3DMaterialization.d.ts","sourceRoot":"","sources":["../src/sceneDocumentScene3DMaterialization.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAIV,cAAc,EAId,gCAAgC,EAIhC,sCAAsC,EACtC,qBAAqB,EACrB,oCAAoC,EACpC,4BAA4B,EAG5B,OAAO,EACP,qBAAqB,EACrB,oBAAoB,EAGrB,MAAM,0BAA0B,CAAC;AAKlC,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,EACzB,OAAO,EAAE,SAAS,QAAQ,CAAC,qBAAqB,CAAC,EAAE,EACnD,MAAM,EAAE,SAAS,QAAQ,CAAC,oBAAoB,CAAC,EAAE,EACjD,OAAO,EAAE,QAAQ,CAAC,4BAA4B,CAAC,GAC9C,qBAAqB,CASvB;AAED,wBAAgB,0CAA0C,CACxD,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,EAClC,OAAO,EAAE,QAAQ,CAAC,4BAA4B,CAAC,EAC/C,SAAS,CAAC,EAAE,QAAQ,CAAC,sCAAsC,CAAC,GAC3D,oCAAoC,GAAG,IAAI,CAW7C;AAED,wBAAgB,kDAAkD,CAChE,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,QAAQ,CAAC,4BAA4B,CAAC,EAC/C,SAAS,CAAC,EAAE,QAAQ,CAAC,sCAAsC,CAAC,GAC3D,oCAAoC,GAAG,IAAI,CAI7C;AAED,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,GACjC,gCAAgC,GAAG,IAAI,CAWzC;AAED,wBAAgB,2CAA2C,CAAC,IAAI,EAAE,MAAM,GAAG,gCAAgC,GAAG,IAAI,CAoCjH"}
1
+ {"version":3,"file":"sceneDocumentScene3DMaterialization.d.ts","sourceRoot":"","sources":["../src/sceneDocumentScene3DMaterialization.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAEV,cAAc,EAId,gCAAgC,EAGhC,sCAAsC,EACtC,qBAAqB,EACrB,oCAAoC,EACpC,4BAA4B,EAG5B,OAAO,EAEP,qBAAqB,EACrB,oBAAoB,EAErB,MAAM,0BAA0B,CAAC;AAYlC,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,EACzB,OAAO,EAAE,SAAS,QAAQ,CAAC,qBAAqB,CAAC,EAAE,EACnD,MAAM,EAAE,SAAS,QAAQ,CAAC,oBAAoB,CAAC,EAAE,EACjD,OAAO,EAAE,QAAQ,CAAC,4BAA4B,CAAC,GAC9C,qBAAqB,CAOvB;AAED,wBAAgB,0CAA0C,CACxD,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,EAClC,OAAO,EAAE,QAAQ,CAAC,4BAA4B,CAAC,EAC/C,SAAS,CAAC,EAAE,QAAQ,CAAC,sCAAsC,CAAC,EAC5D,UAAU,GAAE,MAA8B,GACzC,oCAAoC,GAAG,IAAI,CAkB7C;AAED,wBAAgB,kDAAkD,CAChE,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,QAAQ,CAAC,4BAA4B,CAAC,EAC/C,SAAS,CAAC,EAAE,QAAQ,CAAC,sCAAsC,CAAC,EAC5D,UAAU,CAAC,EAAE,MAAM,GAClB,oCAAoC,GAAG,IAAI,CAI7C;AAED,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,EAClC,OAAO,EAAE,QAAQ,CAAC,4BAA4B,CAAC,EAC/C,UAAU,GAAE,MAA8B,GACzC,gCAAgC,GAAG,IAAI,CASzC;AAED,wBAAgB,2CAA2C,CACzD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,QAAQ,CAAC,4BAA4B,CAAC,EAC/C,UAAU,CAAC,EAAE,MAAM,GAClB,gCAAgC,GAAG,IAAI,CAIzC"}