angular-three 1.9.16 → 1.10.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/esm2022/lib/canvas.mjs +243 -0
- package/esm2022/lib/directives/args.mjs +36 -0
- package/esm2022/lib/directives/common.mjs +32 -0
- package/esm2022/lib/directives/parent.mjs +36 -0
- package/esm2022/lib/directives/repeat.mjs +18 -0
- package/esm2022/lib/loader.mjs +55 -0
- package/esm2022/lib/pipes/push.mjs +50 -0
- package/esm2022/lib/portal.mjs +240 -0
- package/esm2022/lib/renderer/renderer.mjs +361 -0
- package/esm2022/lib/routed-scene.mjs +29 -0
- package/esm2022/lib/stores/rx-store.mjs +108 -0
- package/esm2022/lib/stores/store.mjs +404 -0
- package/esm2022/lib/types.mjs +2 -0
- package/esm2022/lib/utils/apply-props.mjs +107 -0
- package/esm2022/lib/utils/is.mjs +51 -0
- package/{fesm2020 → fesm2022}/angular-three.mjs +78 -61
- package/fesm2022/angular-three.mjs.map +1 -0
- package/lib/canvas.d.ts +1 -1
- package/lib/directives/args.d.ts +1 -1
- package/lib/directives/parent.d.ts +1 -1
- package/lib/directives/repeat.d.ts +1 -1
- package/lib/loader.d.ts +3 -11
- package/lib/portal.d.ts +2 -2
- package/lib/types.d.ts +91 -120
- package/lib/utils/is.d.ts +6 -1
- package/metadata.json +1 -0
- package/package.json +13 -17
- package/plugin/package.json +1 -4
- package/plugin/src/generators/init/compat.js +1 -1
- package/plugin/src/generators/init/compat.js.map +1 -1
- package/plugin/src/generators/init/init.d.ts +3 -3
- package/plugin/src/generators/init/init.js +23 -3
- package/plugin/src/generators/init/init.js.map +1 -1
- package/web-types.json +1 -0
- package/esm2020/lib/canvas.mjs +0 -242
- package/esm2020/lib/directives/args.mjs +0 -35
- package/esm2020/lib/directives/common.mjs +0 -31
- package/esm2020/lib/directives/parent.mjs +0 -35
- package/esm2020/lib/directives/repeat.mjs +0 -17
- package/esm2020/lib/loader.mjs +0 -56
- package/esm2020/lib/pipes/push.mjs +0 -49
- package/esm2020/lib/portal.mjs +0 -237
- package/esm2020/lib/renderer/renderer.mjs +0 -360
- package/esm2020/lib/routed-scene.mjs +0 -28
- package/esm2020/lib/stores/rx-store.mjs +0 -107
- package/esm2020/lib/stores/store.mjs +0 -402
- package/esm2020/lib/types.mjs +0 -2
- package/esm2020/lib/utils/apply-props.mjs +0 -91
- package/esm2020/lib/utils/is.mjs +0 -50
- package/fesm2015/angular-three.mjs +0 -3051
- package/fesm2015/angular-three.mjs.map +0 -1
- package/fesm2020/angular-three.mjs.map +0 -1
- /package/{esm2020 → esm2022}/angular-three.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/di/before-render.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/di/catalogue.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/di/destroy.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/di/ref.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/di/run-in-context.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/events.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/loop.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/renderer/di.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/renderer/enums.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/renderer/provider.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/renderer/store.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/renderer/utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/attach.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/instance.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/make.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/safe-detect-changes.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/update.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/web/events.mjs +0 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import { getLocalState, invalidateInstance } from './instance';
|
|
3
|
+
import { is } from './is';
|
|
4
|
+
import { checkUpdate } from './update';
|
|
5
|
+
function diffProps(instance, props) {
|
|
6
|
+
const propsEntries = Object.entries(props);
|
|
7
|
+
const changes = [];
|
|
8
|
+
for (const [propKey, propValue] of propsEntries) {
|
|
9
|
+
if (is.equ(propValue, instance[propKey]))
|
|
10
|
+
continue;
|
|
11
|
+
changes.push([propKey, propValue]);
|
|
12
|
+
}
|
|
13
|
+
return changes;
|
|
14
|
+
}
|
|
15
|
+
export function applyProps(instance, props) {
|
|
16
|
+
// if props is empty
|
|
17
|
+
if (!Object.keys(props).length)
|
|
18
|
+
return instance;
|
|
19
|
+
// filter equals, events , and reserved props
|
|
20
|
+
const localState = getLocalState(instance);
|
|
21
|
+
const rootState = localState.store?.get();
|
|
22
|
+
const changes = diffProps(instance, props);
|
|
23
|
+
for (let i = 0; i < changes.length; i++) {
|
|
24
|
+
let key = changes[i][0];
|
|
25
|
+
const currentInstance = instance;
|
|
26
|
+
const targetProp = currentInstance[key];
|
|
27
|
+
let value = changes[i][1];
|
|
28
|
+
if (is.colorSpaceExist(currentInstance)) {
|
|
29
|
+
const sRGBEncoding = 3001;
|
|
30
|
+
const SRGBColorSpace = 'srgb';
|
|
31
|
+
const LinearSRGBColorSpace = 'srgb-linear';
|
|
32
|
+
if (key === 'encoding') {
|
|
33
|
+
key = 'colorSpace';
|
|
34
|
+
value = value === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;
|
|
35
|
+
}
|
|
36
|
+
else if (key === 'outputEncoding') {
|
|
37
|
+
key = 'outputColorSpace';
|
|
38
|
+
value = value === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// special treatmen for objects with support for set/copy, and layers
|
|
42
|
+
if (targetProp && targetProp['set'] && (targetProp['copy'] || targetProp instanceof THREE.Layers)) {
|
|
43
|
+
const isColor = targetProp instanceof THREE.Color;
|
|
44
|
+
// if value is an array
|
|
45
|
+
if (Array.isArray(value)) {
|
|
46
|
+
if (targetProp['fromArray'])
|
|
47
|
+
targetProp['fromArray'](value);
|
|
48
|
+
else
|
|
49
|
+
targetProp['set'](...value);
|
|
50
|
+
}
|
|
51
|
+
// test again target.copy
|
|
52
|
+
else if (targetProp['copy'] &&
|
|
53
|
+
value &&
|
|
54
|
+
value.constructor &&
|
|
55
|
+
targetProp.constructor.name === value.constructor.name) {
|
|
56
|
+
targetProp['copy'](value);
|
|
57
|
+
if (!THREE.ColorManagement && !rootState.linear && isColor)
|
|
58
|
+
targetProp['convertSRGBToLinear']();
|
|
59
|
+
}
|
|
60
|
+
// if nothing else fits, just set the single value, ignore undefined
|
|
61
|
+
else if (value !== undefined) {
|
|
62
|
+
const isColor = targetProp instanceof THREE.Color;
|
|
63
|
+
// allow setting array scalars
|
|
64
|
+
if (!isColor && targetProp['setScalar'])
|
|
65
|
+
targetProp['setScalar'](value);
|
|
66
|
+
// layers have no copy function, copy the mask
|
|
67
|
+
else if (targetProp instanceof THREE.Layers && value instanceof THREE.Layers)
|
|
68
|
+
targetProp.mask = value.mask;
|
|
69
|
+
// otherwise just set ...
|
|
70
|
+
else
|
|
71
|
+
targetProp['set'](value);
|
|
72
|
+
// auto-convert srgb
|
|
73
|
+
if (!THREE.ColorManagement && !rootState?.linear && isColor)
|
|
74
|
+
targetProp.convertSRGBToLinear();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// else just overwrite the value
|
|
78
|
+
else {
|
|
79
|
+
currentInstance[key] = value;
|
|
80
|
+
// auto-convert srgb textures
|
|
81
|
+
if (currentInstance[key] instanceof THREE.Texture &&
|
|
82
|
+
currentInstance[key].format === THREE.RGBAFormat &&
|
|
83
|
+
currentInstance[key].type === THREE.UnsignedByteType) {
|
|
84
|
+
const texture = currentInstance[key];
|
|
85
|
+
if (is.colorSpaceExist(texture) && is.colorSpaceExist(rootState.gl))
|
|
86
|
+
texture.colorSpace = rootState.gl.outputColorSpace;
|
|
87
|
+
else
|
|
88
|
+
texture.encoding = rootState.gl.outputEncoding;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
checkUpdate(targetProp);
|
|
92
|
+
invalidateInstance(instance);
|
|
93
|
+
}
|
|
94
|
+
const instanceHandlers = localState.eventCount;
|
|
95
|
+
if (localState.parent && rootState.internal && instance['raycast'] && instanceHandlers !== localState.eventCount) {
|
|
96
|
+
// pre-emptively remove the interaction from manager
|
|
97
|
+
rootState.removeInteraction(instance['uuid']);
|
|
98
|
+
// add the instance to the interaction manager only when it has handlers
|
|
99
|
+
if (localState.eventCount)
|
|
100
|
+
rootState.addInteraction(instance);
|
|
101
|
+
}
|
|
102
|
+
if (localState.parent && localState.afterUpdate && localState.afterUpdate.observed && changes.length) {
|
|
103
|
+
localState.afterUpdate.emit(instance);
|
|
104
|
+
}
|
|
105
|
+
return instance;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktcHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi91dGlscy9hcHBseS1wcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUvQixPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV2QyxTQUFTLFNBQVMsQ0FBQyxRQUFzQixFQUFFLEtBQW1CO0lBQzFELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsTUFBTSxPQUFPLEdBQW9DLEVBQUUsQ0FBQztJQUVwRCxLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLElBQUksWUFBWSxFQUFFO1FBQzdDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQUUsU0FBUztRQUNuRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7S0FDdEM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxRQUF5QixFQUFFLEtBQW1CO0lBQ3JFLG9CQUFvQjtJQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNO1FBQUUsT0FBTyxRQUFRLENBQUM7SUFFaEQsNkNBQTZDO0lBQzdDLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxNQUFNLFNBQVMsR0FBRyxVQUFVLENB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QUssVUFBVSxDQUFDLFVBQVUsRUFBRTtRQUM5RyxvREFBb0Q7UUFDcEQsU0FBUyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzlDLHdFQUF3RTtRQUN4RSxJQUFJLFVBQVUsQ0FBQyxVQUFVO1lBQUUsU0FBUyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUNqRTtJQUVELElBQUksVUFBVSxDQUFDLE1BQU0sSUFBSSxVQUFVLENBQUMsV0FBVyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFDbEcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDekM7SUFFRCxPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHR5cGUgeyBOZ3RBbnlSZWNvcmQsIE5ndEluc3RhbmNlTm9kZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGdldExvY2FsU3RhdGUsIGludmFsaWRhdGVJbnN0YW5jZSB9IGZyb20gJy4vaW5zdGFuY2UnO1xuaW1wb3J0IHsgaXMgfSBmcm9tICcuL2lzJztcbmltcG9ydCB7IGNoZWNrVXBkYXRlIH0gZnJvbSAnLi91cGRhdGUnO1xuXG5mdW5jdGlvbiBkaWZmUHJvcHMoaW5zdGFuY2U6IE5ndEFueVJlY29yZCwgcHJvcHM6IE5ndEFueVJlY29yZCkge1xuICAgIGNvbnN0IHByb3BzRW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHByb3BzKTtcbiAgICBjb25zdCBjaGFuZ2VzOiBba2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duXVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IFtwcm9wS2V5LCBwcm9wVmFsdWVdIG9mIHByb3BzRW50cmllcykge1xuICAgICAgICBpZiAoaXMuZXF1KHByb3BWYWx1ZSwgaW5zdGFuY2VbcHJvcEtleV0pKSBjb250aW51ZTtcbiAgICAgICAgY2hhbmdlcy5wdXNoKFtwcm9wS2V5LCBwcm9wVmFsdWVdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2hhbmdlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UHJvcHMoaW5zdGFuY2U6IE5ndEluc3RhbmNlTm9kZSwgcHJvcHM6IE5ndEFueVJlY29yZCk6IE5ndEluc3RhbmNlTm9kZSB7XG4gICAgLy8gaWYgcHJvcHMgaXMgZW1wdHlcbiAgICBpZiAoIU9iamVjdC5rZXlzKHByb3BzKS5sZW5ndGgpIHJldHVybiBpbnN0YW5jZTtcblxuICAgIC8vIGZpbHRlciBlcXVhbHMsIGV2ZW50cyAsIGFuZCByZXNlcnZlZCBwcm9wc1xuICAgIGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGluc3RhbmNlKTtcbiAgICBjb25zdCByb290U3RhdGUgPSBsb2NhbFN0YXRlLnN0b3JlPy5nZXQoKTtcbiAgICBjb25zdCBjaGFuZ2VzID0gZGlmZlByb3BzKGluc3RhbmNlLCBwcm9wcyk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IGtleSA9IGNoYW5nZXNbaV1bMF07XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbnN0YW5jZSA9IGluc3RhbmNlO1xuICAgICAgICBjb25zdCB0YXJnZXRQcm9wID0gY3VycmVudEluc3RhbmNlW2tleV0gYXMgTmd0QW55UmVjb3JkO1xuICAgICAgICBsZXQgdmFsdWUgPSBjaGFuZ2VzW2ldWzFdO1xuXG4gICAgICAgIGlmIChpcy5jb2xvclNwYWNlRXhpc3QoY3VycmVudEluc3RhbmNlKSkge1xuICAgICAgICAgICAgY29uc3Qgc1JHQkVuY29kaW5nID0gMzAwMTtcbiAgICAgICAgICAgIGNvbnN0IFNSR0JDb2xvclNwYWNlID0gJ3NyZ2InO1xuICAgICAgICAgICAgY29uc3QgTGluZWFyU1JHQkNvbG9yU3BhY2UgPSAnc3JnYi1saW5lYXInO1xuXG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnZW5jb2RpbmcnKSB7XG4gICAgICAgICAgICAgICAga2V5ID0gJ2NvbG9yU3BhY2UnO1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPT09IHNSR0JFbmNvZGluZyA/IFNSR0JDb2xvclNwYWNlIDogTGluZWFyU1JHQkNvbG9yU3BhY2U7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ291dHB1dEVuY29kaW5nJykge1xuICAgICAgICAgICAgICAgIGtleSA9ICdvdXRwdXRDb2xvclNwYWNlJztcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlID09PSBzUkdCRW5jb2RpbmcgPyBTUkdCQ29sb3JTcGFjZSA6IExpbmVhclNSR0JDb2xvclNwYWNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gc3BlY2lhbCB0cmVhdG1lbiBmb3Igb2JqZWN0cyB3aXRoIHN1cHBvcnQgZm9yIHNldC9jb3B5LCBhbmQgbGF5ZXJzXG4gICAgICAgIGlmICh0YXJnZXRQcm9wICYmIHRhcmdldFByb3BbJ3NldCddICYmICh0YXJnZXRQcm9wWydjb3B5J10gfHwgdGFyZ2V0UHJvcCBpbnN0YW5jZW9mIFRIUkVFLkxheWVycykpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzQ29sb3IgPSB0YXJnZXRQcm9wIGluc3RhbmNlb2YgVEhSRUUuQ29sb3I7XG4gICAgICAgICAgICAvLyBpZiB2YWx1ZSBpcyBhbiBhcnJheVxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCh0YXJnZXRQcm9wIGFzIE5ndEFueVJlY29yZClbJ2Zyb21BcnJheSddKSAodGFyZ2V0UHJvcCBhcyBOZ3RBbnlSZWNvcmQpWydmcm9tQXJyYXknXSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgZWxzZSB0YXJnZXRQcm9wWydzZXQnXSguLi52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB0ZXN0IGFnYWluIHRhcmdldC5jb3B5XG4gICAgICAgICAgICBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAodGFyZ2V0UHJvcCBhcyBOZ3RBbnlSZWNvcmQpWydjb3B5J10gJiZcbiAgICAgICAgICAgICAgICB2YWx1ZSAmJlxuICAgICAgICAgICAgICAgIHZhbHVlLmNvbnN0cnVjdG9yICYmXG4gICAgICAgICAgICAgICAgdGFyZ2V0UHJvcC5jb25zdHJ1Y3Rvci5uYW1lID09PSB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAodGFyZ2V0UHJvcCBhcyBOZ3RBbnlSZWNvcmQpWydjb3B5J10odmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmICghVEhSRUUuQ29sb3JNYW5hZ2VtZW50ICYmICFyb290U3RhdGUubGluZWFyICYmIGlzQ29sb3IpIHRhcmdldFByb3BbJ2NvbnZlcnRTUkdCVG9MaW5lYXInXSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaWYgbm90aGluZyBlbHNlIGZpdHMsIGp1c3Qgc2V0IHRoZSBzaW5nbGUgdmFsdWUsIGlnbm9yZSB1bmRlZmluZWRcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0NvbG9yID0gdGFyZ2V0UHJvcCBpbnN0YW5jZW9mIFRIUkVFLkNvbG9yO1xuICAgICAgICAgICAgICAgIC8vIGFsbG93IHNldHRpbmcgYXJyYXkgc2NhbGFyc1xuICAgICAgICAgICAgICAgIGlmICghaXNDb2xvciAmJiAodGFyZ2V0UHJvcCBhcyBOZ3RBbnlSZWNvcmQpWydzZXRTY2FsYXInXSlcbiAgICAgICAgICAgICAgICAgICAgKHRhcmdldFByb3AgYXMgTmd0QW55UmVjb3JkKVsnc2V0U2NhbGFyJ10odmFsdWUpO1xuICAgICAgICAgICAgICAgIC8vIGxheWVycyBoYXZlIG5vIGNvcHkgZnVuY3Rpb24sIGNvcHkgdGhlIG1hc2tcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0YXJnZXRQcm9wIGluc3RhbmNlb2YgVEhSRUUuTGF5ZXJzICYmIHZhbHVlIGluc3RhbmNlb2YgVEhSRUUuTGF5ZXJzKVxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRQcm9wLm1hc2sgPSB2YWx1ZS5tYXNrO1xuICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBqdXN0IHNldCAuLi5cbiAgICAgICAgICAgICAgICBlbHNlIHRhcmdldFByb3BbJ3NldCddKHZhbHVlKTtcblxuICAgICAgICAgICAgICAgIC8vIGF1dG8tY29udmVydCBzcmdiXG4gICAgICAgICAgICAgICAgaWYgKCFUSFJFRS5Db2xvck1hbmFnZW1lbnQgJiYgIXJvb3RTdGF0ZT8ubGluZWFyICYmIGlzQ29sb3IpIHRhcmdldFByb3AuY29udmVydFNSR0JUb0xpbmVhcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGVsc2UganVzdCBvdmVyd3JpdGUgdGhlIHZhbHVlXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY3VycmVudEluc3RhbmNlW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIC8vIGF1dG8tY29udmVydCBzcmdiIHRleHR1cmVzXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgY3VycmVudEluc3RhbmNlW2tleV0gaW5zdGFuY2VvZiBUSFJFRS5UZXh0dXJlICYmXG4gICAgICAgICAgICAgICAgY3VycmVudEluc3RhbmNlW2tleV0uZm9ybWF0ID09PSBUSFJFRS5SR0JBRm9ybWF0ICYmXG4gICAgICAgICAgICAgICAgY3VycmVudEluc3RhbmNlW2tleV0udHlwZSA9PT0gVEhSRUUuVW5zaWduZWRCeXRlVHlwZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGV4dHVyZSA9IGN1cnJlbnRJbnN0YW5jZVtrZXldIGFzIFRIUkVFLlRleHR1cmU7XG4gICAgICAgICAgICAgICAgaWYgKGlzLmNvbG9yU3BhY2VFeGlzdCh0ZXh0dXJlKSAmJiBpcy5jb2xvclNwYWNlRXhpc3Qocm9vdFN0YXRlLmdsKSlcbiAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS5jb2xvclNwYWNlID0gcm9vdFN0YXRlLmdsLm91dHB1dENvbG9yU3BhY2U7XG4gICAgICAgICAgICAgICAgZWxzZSB0ZXh0dXJlLmVuY29kaW5nID0gcm9vdFN0YXRlLmdsLm91dHB1dEVuY29kaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY2hlY2tVcGRhdGUodGFyZ2V0UHJvcCk7XG4gICAgICAgIGludmFsaWRhdGVJbnN0YW5jZShpbnN0YW5jZSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5zdGFuY2VIYW5kbGVycyA9IGxvY2FsU3RhdGUuZXZlbnRDb3VudDtcblxuICAgIGlmIChsb2NhbFN0YXRlLnBhcmVudCAmJiByb290U3RhdGUuaW50ZXJuYWwgJiYgaW5zdGFuY2VbJ3JheWNhc3QnXSAmJiBpbnN0YW5jZUhhbmRsZXJzICE9PSBsb2NhbFN0YXRlLmV2ZW50Q291bnQpIHtcbiAgICAgICAgLy8gcHJlLWVtcHRpdmVseSByZW1vdmUgdGhlIGludGVyYWN0aW9uIGZyb20gbWFuYWdlclxuICAgICAgICByb290U3RhdGUucmVtb3ZlSW50ZXJhY3Rpb24oaW5zdGFuY2VbJ3V1aWQnXSk7XG4gICAgICAgIC8vIGFkZCB0aGUgaW5zdGFuY2UgdG8gdGhlIGludGVyYWN0aW9uIG1hbmFnZXIgb25seSB3aGVuIGl0IGhhcyBoYW5kbGVyc1xuICAgICAgICBpZiAobG9jYWxTdGF0ZS5ldmVudENvdW50KSByb290U3RhdGUuYWRkSW50ZXJhY3Rpb24oaW5zdGFuY2UpO1xuICAgIH1cblxuICAgIGlmIChsb2NhbFN0YXRlLnBhcmVudCAmJiBsb2NhbFN0YXRlLmFmdGVyVXBkYXRlICYmIGxvY2FsU3RhdGUuYWZ0ZXJVcGRhdGUub2JzZXJ2ZWQgJiYgY2hhbmdlcy5sZW5ndGgpIHtcbiAgICAgICAgbG9jYWxTdGF0ZS5hZnRlclVwZGF0ZS5lbWl0KGluc3RhbmNlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG59XG4iXX0=
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { ElementRef } from '@angular/core';
|
|
2
|
+
import * as THREE from 'three';
|
|
3
|
+
export const is = {
|
|
4
|
+
obj: (a) => a === Object(a) && !Array.isArray(a) && typeof a !== 'function',
|
|
5
|
+
material: (a) => !!a && a.isMaterial,
|
|
6
|
+
geometry: (a) => !!a && a.isBufferGeometry,
|
|
7
|
+
orthographicCamera: (a) => !!a && a.isOrthographicCamera,
|
|
8
|
+
perspectiveCamera: (a) => !!a && a.isPerspectiveCamera,
|
|
9
|
+
camera: (a) => !!a && a.isCamera,
|
|
10
|
+
renderer: (a) => !!a && a instanceof THREE.WebGLRenderer,
|
|
11
|
+
scene: (a) => !!a && a.isScene,
|
|
12
|
+
object3D: (a) => !!a && a.isObject3D,
|
|
13
|
+
instance: (a) => !!a && !!a['__ngt__'],
|
|
14
|
+
ref: (a) => a instanceof ElementRef,
|
|
15
|
+
colorSpaceExist: (object) => 'colorSpace' in object || 'outputColorSpace' in object,
|
|
16
|
+
equ(a, b, { arrays = 'shallow', objects = 'reference', strict = true } = {}) {
|
|
17
|
+
// Wrong type or one of the two undefined, doesn't match
|
|
18
|
+
if (typeof a !== typeof b || !!a !== !!b)
|
|
19
|
+
return false;
|
|
20
|
+
// Atomic, just compare a against b
|
|
21
|
+
if (typeof a === 'string' || typeof a === 'number')
|
|
22
|
+
return a === b;
|
|
23
|
+
const isObj = is.obj(a);
|
|
24
|
+
if (isObj && objects === 'reference')
|
|
25
|
+
return a === b;
|
|
26
|
+
const isArr = Array.isArray(a);
|
|
27
|
+
if (isArr && arrays === 'reference')
|
|
28
|
+
return a === b;
|
|
29
|
+
// Array or Object, shallow compare first to see if it's a match
|
|
30
|
+
if ((isArr || isObj) && a === b)
|
|
31
|
+
return true;
|
|
32
|
+
// Last resort, go through keys
|
|
33
|
+
let i;
|
|
34
|
+
for (i in a)
|
|
35
|
+
if (!(i in b))
|
|
36
|
+
return false;
|
|
37
|
+
for (i in strict ? b : a)
|
|
38
|
+
if (a[i] !== b[i])
|
|
39
|
+
return false;
|
|
40
|
+
if (i === void 0) {
|
|
41
|
+
if (isArr && a.length === 0 && b.length === 0)
|
|
42
|
+
return true;
|
|
43
|
+
if (isObj && Object.keys(a).length === 0 && Object.keys(b).length === 0)
|
|
44
|
+
return true;
|
|
45
|
+
if (a !== b)
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
return true;
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi91dGlscy9pcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRy9CLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRztJQUNkLEdBQUcsRUFBRSxDQUFDLENBQVUsRUFBZSxFQUFFLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssVUFBVTtJQUNqRyxRQUFRLEVBQUUsQ0FBQyxDQUFVLEVBQXVCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFLLENBQW9CLENBQUMsVUFBVTtJQUN0RixRQUFRLEVBQUUsQ0FBQyxDQUFVLEVBQTZCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFLLENBQTBCLENBQUMsZ0JBQWdCO0lBQ3hHLGtCQUFrQixFQUFFLENBQUMsQ0FBVSxFQUFpQyxFQUFFLENBQzlELENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBOEIsQ0FBQyxvQkFBb0I7SUFDL0QsaUJBQWlCLEVBQUUsQ0FBQyxDQUFVLEVBQWdDLEVBQUUsQ0FDNUQsQ0FBQyxDQUFDLENBQUMsSUFBSyxDQUE2QixDQUFDLG1CQUFtQjtJQUM3RCxNQUFNLEVBQUUsQ0FBQyxDQUFVLEVBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFLLENBQWtCLENBQUMsUUFBUTtJQUM5RSxRQUFRLEVBQUUsQ0FBQyxDQUFVLEVBQTRCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxLQUFLLENBQUMsYUFBYTtJQUMzRixLQUFLLEVBQUUsQ0FBQyxDQUFVLEVBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFLLENBQWlCLENBQUMsT0FBTztJQUMxRSxRQUFRLEVBQUUsQ0FBQyxDQUFVLEVBQXVCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFLLENBQW9CLENBQUMsVUFBVTtJQUN0RixRQUFRLEVBQUUsQ0FBQyxDQUFVLEVBQXdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBRSxDQUFrQixDQUFDLFNBQVMsQ0FBQztJQUN2RixHQUFHLEVBQUUsQ0FBQyxDQUFVLEVBQW1CLEVBQUUsQ0FBQyxDQUFDLFlBQVksVUFBVTtJQUM3RCxlQUFlLEVBQUUsQ0FJYixNQUFTLEVBQ00sRUFBRSxDQUFDLFlBQVksSUFBSSxNQUFNLElBQUksa0JBQWtCLElBQUksTUFBTTtJQUM1RSxHQUFHLENBQUMsQ0FBTSxFQUFFLENBQU0sRUFBRSxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBQUUsT0FBTyxHQUFHLFdBQVcsRUFBRSxNQUFNLEdBQUcsSUFBSSxLQUFtQixFQUFFO1FBQy9GLHdEQUF3RDtRQUN4RCxJQUFJLE9BQU8sQ0FBQyxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUN2RCxtQ0FBbUM7UUFDbkMsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUTtZQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxXQUFXO1lBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsSUFBSSxLQUFLLElBQUksTUFBTSxLQUFLLFdBQVc7WUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEQsZ0VBQWdFO1FBQ2hFLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUM3QywrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLENBQUM7UUFDTixLQUFLLENBQUMsSUFBSSxDQUFDO1lBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFBRSxPQUFPLEtBQUssQ0FBQztRQUN6QyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQUUsT0FBTyxLQUFLLENBQUM7UUFDMUQsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDZCxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDM0QsSUFBSSxLQUFLLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDckYsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFBRSxPQUFPLEtBQUssQ0FBQztTQUM3QjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHR5cGUgeyBOZ3RBbnlSZWNvcmQsIE5ndEVxdUNvbmZpZywgTmd0R0xSZW5kZXJlciwgTmd0SW5zdGFuY2VOb2RlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgaXMgPSB7XG4gICAgb2JqOiAoYTogdW5rbm93bik6IGEgaXMgb2JqZWN0ID0+IGEgPT09IE9iamVjdChhKSAmJiAhQXJyYXkuaXNBcnJheShhKSAmJiB0eXBlb2YgYSAhPT0gJ2Z1bmN0aW9uJyxcbiAgICBtYXRlcmlhbDogKGE6IHVua25vd24pOiBhIGlzIFRIUkVFLk1hdGVyaWFsID0+ICEhYSAmJiAoYSBhcyBUSFJFRS5NYXRlcmlhbCkuaXNNYXRlcmlhbCxcbiAgICBnZW9tZXRyeTogKGE6IHVua25vd24pOiBhIGlzIFRIUkVFLkJ1ZmZlckdlb21ldHJ5ID0+ICEhYSAmJiAoYSBhcyBUSFJFRS5CdWZmZXJHZW9tZXRyeSkuaXNCdWZmZXJHZW9tZXRyeSxcbiAgICBvcnRob2dyYXBoaWNDYW1lcmE6IChhOiB1bmtub3duKTogYSBpcyBUSFJFRS5PcnRob2dyYXBoaWNDYW1lcmEgPT5cbiAgICAgICAgISFhICYmIChhIGFzIFRIUkVFLk9ydGhvZ3JhcGhpY0NhbWVyYSkuaXNPcnRob2dyYXBoaWNDYW1lcmEsXG4gICAgcGVyc3BlY3RpdmVDYW1lcmE6IChhOiB1bmtub3duKTogYSBpcyBUSFJFRS5QZXJzcGVjdGl2ZUNhbWVyYSA9PlxuICAgICAgICAhIWEgJiYgKGEgYXMgVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEpLmlzUGVyc3BlY3RpdmVDYW1lcmEsXG4gICAgY2FtZXJhOiAoYTogdW5rbm93bik6IGEgaXMgVEhSRUUuQ2FtZXJhID0+ICEhYSAmJiAoYSBhcyBUSFJFRS5DYW1lcmEpLmlzQ2FtZXJhLFxuICAgIHJlbmRlcmVyOiAoYTogdW5rbm93bik6IGEgaXMgVEhSRUUuV2ViR0xSZW5kZXJlciA9PiAhIWEgJiYgYSBpbnN0YW5jZW9mIFRIUkVFLldlYkdMUmVuZGVyZXIsXG4gICAgc2NlbmU6IChhOiB1bmtub3duKTogYSBpcyBUSFJFRS5TY2VuZSA9PiAhIWEgJiYgKGEgYXMgVEhSRUUuU2NlbmUpLmlzU2NlbmUsXG4gICAgb2JqZWN0M0Q6IChhOiB1bmtub3duKTogYSBpcyBUSFJFRS5PYmplY3QzRCA9PiAhIWEgJiYgKGEgYXMgVEhSRUUuT2JqZWN0M0QpLmlzT2JqZWN0M0QsXG4gICAgaW5zdGFuY2U6IChhOiB1bmtub3duKTogYSBpcyBOZ3RJbnN0YW5jZU5vZGUgPT4gISFhICYmICEhKGEgYXMgTmd0QW55UmVjb3JkKVsnX19uZ3RfXyddLFxuICAgIHJlZjogKGE6IHVua25vd24pOiBhIGlzIEVsZW1lbnRSZWYgPT4gYSBpbnN0YW5jZW9mIEVsZW1lbnRSZWYsXG4gICAgY29sb3JTcGFjZUV4aXN0OiA8XG4gICAgICAgIFQgZXh0ZW5kcyBOZ3RHTFJlbmRlcmVyIHwgVEhSRUUuVGV4dHVyZSB8IG9iamVjdCxcbiAgICAgICAgUCA9IFQgZXh0ZW5kcyBOZ3RHTFJlbmRlcmVyID8geyBvdXRwdXRDb2xvclNwYWNlOiBzdHJpbmcgfSA6IHsgY29sb3JTcGFjZTogc3RyaW5nIH1cbiAgICA+KFxuICAgICAgICBvYmplY3Q6IFRcbiAgICApOiBvYmplY3QgaXMgVCAmIFAgPT4gJ2NvbG9yU3BhY2UnIGluIG9iamVjdCB8fCAnb3V0cHV0Q29sb3JTcGFjZScgaW4gb2JqZWN0LFxuICAgIGVxdShhOiBhbnksIGI6IGFueSwgeyBhcnJheXMgPSAnc2hhbGxvdycsIG9iamVjdHMgPSAncmVmZXJlbmNlJywgc3RyaWN0ID0gdHJ1ZSB9OiBOZ3RFcXVDb25maWcgPSB7fSkge1xuICAgICAgICAvLyBXcm9uZyB0eXBlIG9yIG9uZSBvZiB0aGUgdHdvIHVuZGVmaW5lZCwgZG9lc24ndCBtYXRjaFxuICAgICAgICBpZiAodHlwZW9mIGEgIT09IHR5cGVvZiBiIHx8ICEhYSAhPT0gISFiKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIC8vIEF0b21pYywganVzdCBjb21wYXJlIGEgYWdhaW5zdCBiXG4gICAgICAgIGlmICh0eXBlb2YgYSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGEgPT09ICdudW1iZXInKSByZXR1cm4gYSA9PT0gYjtcbiAgICAgICAgY29uc3QgaXNPYmogPSBpcy5vYmooYSk7XG4gICAgICAgIGlmIChpc09iaiAmJiBvYmplY3RzID09PSAncmVmZXJlbmNlJykgcmV0dXJuIGEgPT09IGI7XG4gICAgICAgIGNvbnN0IGlzQXJyID0gQXJyYXkuaXNBcnJheShhKTtcbiAgICAgICAgaWYgKGlzQXJyICYmIGFycmF5cyA9PT0gJ3JlZmVyZW5jZScpIHJldHVybiBhID09PSBiO1xuICAgICAgICAvLyBBcnJheSBvciBPYmplY3QsIHNoYWxsb3cgY29tcGFyZSBmaXJzdCB0byBzZWUgaWYgaXQncyBhIG1hdGNoXG4gICAgICAgIGlmICgoaXNBcnIgfHwgaXNPYmopICYmIGEgPT09IGIpIHJldHVybiB0cnVlO1xuICAgICAgICAvLyBMYXN0IHJlc29ydCwgZ28gdGhyb3VnaCBrZXlzXG4gICAgICAgIGxldCBpO1xuICAgICAgICBmb3IgKGkgaW4gYSkgaWYgKCEoaSBpbiBiKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBmb3IgKGkgaW4gc3RyaWN0ID8gYiA6IGEpIGlmIChhW2ldICE9PSBiW2ldKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChpID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIGlmIChpc0FyciAmJiBhLmxlbmd0aCA9PT0gMCAmJiBiLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBpZiAoaXNPYmogJiYgT2JqZWN0LmtleXMoYSkubGVuZ3RoID09PSAwICYmIE9iamVjdC5rZXlzKGIpLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBpZiAoYSAhPT0gYikgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG59O1xuIl19
|
|
@@ -85,8 +85,8 @@ function load(loaderConstructorFactory, input, extensions, onProgress) {
|
|
|
85
85
|
urls.map((url) => {
|
|
86
86
|
if (!cached.has(url)) {
|
|
87
87
|
cached.set(url, from(loader.loadAsync(url, onProgress)).pipe(tap((data) => {
|
|
88
|
-
if (data
|
|
89
|
-
Object.assign(data, makeObjectGraph(data
|
|
88
|
+
if (data['scene'])
|
|
89
|
+
Object.assign(data, makeObjectGraph(data['scene']));
|
|
90
90
|
}), retry(2), catchError((err) => {
|
|
91
91
|
console.error(`[NGT] Error loading ${url}: ${err.message}`);
|
|
92
92
|
return of([]);
|
|
@@ -98,7 +98,7 @@ function load(loaderConstructorFactory, input, extensions, onProgress) {
|
|
|
98
98
|
];
|
|
99
99
|
}));
|
|
100
100
|
}
|
|
101
|
-
function
|
|
101
|
+
function injectNgtLoader(loaderConstructorFactory, input, extensions, onProgress) {
|
|
102
102
|
const cdr = inject(ChangeDetectorRef);
|
|
103
103
|
return load(loaderConstructorFactory, input, extensions, onProgress).pipe(switchMap(([observables$, inputs]) => {
|
|
104
104
|
return forkJoin(observables$).pipe(map((results) => {
|
|
@@ -116,13 +116,12 @@ function injectLoader(loaderConstructorFactory, input, extensions, onProgress) {
|
|
|
116
116
|
}));
|
|
117
117
|
}));
|
|
118
118
|
}
|
|
119
|
-
|
|
119
|
+
injectNgtLoader['destroy'] = () => {
|
|
120
120
|
cached.clear();
|
|
121
121
|
};
|
|
122
|
-
|
|
122
|
+
injectNgtLoader['preLoad'] = (loaderConstructorFactory, inputs, extensions) => {
|
|
123
123
|
load(loaderConstructorFactory, inputs, extensions).pipe(take(1)).subscribe();
|
|
124
124
|
};
|
|
125
|
-
const injectNgtLoader = injectLoader;
|
|
126
125
|
|
|
127
126
|
function createSubs(callback, subs) {
|
|
128
127
|
const sub = { callback };
|
|
@@ -273,6 +272,7 @@ const is = {
|
|
|
273
272
|
object3D: (a) => !!a && a.isObject3D,
|
|
274
273
|
instance: (a) => !!a && !!a['__ngt__'],
|
|
275
274
|
ref: (a) => a instanceof ElementRef,
|
|
275
|
+
colorSpaceExist: (object) => 'colorSpace' in object || 'outputColorSpace' in object,
|
|
276
276
|
equ(a, b, { arrays = 'shallow', objects = 'reference', strict = true } = {}) {
|
|
277
277
|
// Wrong type or one of the two undefined, doesn't match
|
|
278
278
|
if (typeof a !== typeof b || !!a !== !!b)
|
|
@@ -418,10 +418,23 @@ function applyProps(instance, props) {
|
|
|
418
418
|
const rootState = localState.store?.get();
|
|
419
419
|
const changes = diffProps(instance, props);
|
|
420
420
|
for (let i = 0; i < changes.length; i++) {
|
|
421
|
-
|
|
421
|
+
let key = changes[i][0];
|
|
422
422
|
const currentInstance = instance;
|
|
423
423
|
const targetProp = currentInstance[key];
|
|
424
|
-
|
|
424
|
+
let value = changes[i][1];
|
|
425
|
+
if (is.colorSpaceExist(currentInstance)) {
|
|
426
|
+
const sRGBEncoding = 3001;
|
|
427
|
+
const SRGBColorSpace = 'srgb';
|
|
428
|
+
const LinearSRGBColorSpace = 'srgb-linear';
|
|
429
|
+
if (key === 'encoding') {
|
|
430
|
+
key = 'colorSpace';
|
|
431
|
+
value = value === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;
|
|
432
|
+
}
|
|
433
|
+
else if (key === 'outputEncoding') {
|
|
434
|
+
key = 'outputColorSpace';
|
|
435
|
+
value = value === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;
|
|
436
|
+
}
|
|
437
|
+
}
|
|
425
438
|
// special treatmen for objects with support for set/copy, and layers
|
|
426
439
|
if (targetProp && targetProp['set'] && (targetProp['copy'] || targetProp instanceof THREE.Layers)) {
|
|
427
440
|
const isColor = targetProp instanceof THREE.Color;
|
|
@@ -462,11 +475,14 @@ function applyProps(instance, props) {
|
|
|
462
475
|
else {
|
|
463
476
|
currentInstance[key] = value;
|
|
464
477
|
// auto-convert srgb textures
|
|
465
|
-
if (
|
|
466
|
-
currentInstance[key] instanceof THREE.Texture &&
|
|
478
|
+
if (currentInstance[key] instanceof THREE.Texture &&
|
|
467
479
|
currentInstance[key].format === THREE.RGBAFormat &&
|
|
468
480
|
currentInstance[key].type === THREE.UnsignedByteType) {
|
|
469
|
-
currentInstance[key]
|
|
481
|
+
const texture = currentInstance[key];
|
|
482
|
+
if (is.colorSpaceExist(texture) && is.colorSpaceExist(rootState.gl))
|
|
483
|
+
texture.colorSpace = rootState.gl.outputColorSpace;
|
|
484
|
+
else
|
|
485
|
+
texture.encoding = rootState.gl.outputEncoding;
|
|
470
486
|
}
|
|
471
487
|
}
|
|
472
488
|
checkUpdate(targetProp);
|
|
@@ -580,10 +596,10 @@ class NgtRxStore extends RxState {
|
|
|
580
596
|
}
|
|
581
597
|
this.hold($, () => void requestAnimationFrame(() => void safeDetectChanges(cdr)));
|
|
582
598
|
}
|
|
599
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtRxStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
600
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtRxStore }); }
|
|
583
601
|
}
|
|
584
|
-
|
|
585
|
-
NgtRxStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtRxStore });
|
|
586
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtRxStore, decorators: [{
|
|
602
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtRxStore, decorators: [{
|
|
587
603
|
type: Injectable
|
|
588
604
|
}], ctorParameters: function () { return []; } });
|
|
589
605
|
|
|
@@ -861,12 +877,13 @@ class NgtStore extends NgtRxStore {
|
|
|
861
877
|
else if ('legacyMode' in ColorManagement)
|
|
862
878
|
ColorManagement['legacyMode'] = legacy ?? true;
|
|
863
879
|
}
|
|
864
|
-
|
|
865
|
-
const
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
880
|
+
// set color space and tonemapping preferences
|
|
881
|
+
const LinearEncoding = 3000;
|
|
882
|
+
const sRGBEncoding = 3001;
|
|
883
|
+
applyProps(gl, {
|
|
884
|
+
outputEncoding: linear ? LinearEncoding : sRGBEncoding,
|
|
885
|
+
toneMapping: flat ? THREE.NoToneMapping : THREE.ACESFilmicToneMapping,
|
|
886
|
+
});
|
|
870
887
|
// Update color management state
|
|
871
888
|
if (state.legacy !== legacy)
|
|
872
889
|
stateToUpdate.legacy = legacy;
|
|
@@ -953,10 +970,10 @@ class NgtStore extends NgtRxStore {
|
|
|
953
970
|
invalidate() {
|
|
954
971
|
this.hold(this.select(), () => invalidate(this));
|
|
955
972
|
}
|
|
973
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtStore, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
974
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtStore }); }
|
|
956
975
|
}
|
|
957
|
-
|
|
958
|
-
NgtStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtStore });
|
|
959
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtStore, decorators: [{
|
|
976
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtStore, decorators: [{
|
|
960
977
|
type: Injectable
|
|
961
978
|
}] });
|
|
962
979
|
function computeInitialSize(canvas, defaultSize) {
|
|
@@ -1006,10 +1023,10 @@ class NgtCommonDirective {
|
|
|
1006
1023
|
safeDetectChanges(this.view);
|
|
1007
1024
|
}
|
|
1008
1025
|
}
|
|
1026
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtCommonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1027
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: NgtCommonDirective, ngImport: i0 }); }
|
|
1009
1028
|
}
|
|
1010
|
-
|
|
1011
|
-
NgtCommonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: NgtCommonDirective, ngImport: i0 });
|
|
1012
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtCommonDirective, decorators: [{
|
|
1029
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtCommonDirective, decorators: [{
|
|
1013
1030
|
type: Directive
|
|
1014
1031
|
}], ctorParameters: function () { return []; } });
|
|
1015
1032
|
|
|
@@ -1035,10 +1052,10 @@ class NgtArgs extends NgtCommonDirective {
|
|
|
1035
1052
|
validate() {
|
|
1036
1053
|
return !this.injected && !!this.injectedArgs.length;
|
|
1037
1054
|
}
|
|
1055
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtArgs, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1056
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: NgtArgs, isStandalone: true, selector: "[args]", inputs: { args: "args" }, usesInheritance: true, ngImport: i0 }); }
|
|
1038
1057
|
}
|
|
1039
|
-
|
|
1040
|
-
NgtArgs.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: NgtArgs, isStandalone: true, selector: "[args]", inputs: { args: "args" }, usesInheritance: true, ngImport: i0 });
|
|
1041
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtArgs, decorators: [{
|
|
1058
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtArgs, decorators: [{
|
|
1042
1059
|
type: Directive,
|
|
1043
1060
|
args: [{ selector: '[args]', standalone: true }]
|
|
1044
1061
|
}], propDecorators: { args: [{
|
|
@@ -1067,10 +1084,10 @@ class NgtParent extends NgtCommonDirective {
|
|
|
1067
1084
|
validate() {
|
|
1068
1085
|
return !this.injected && !!this.injectedParent;
|
|
1069
1086
|
}
|
|
1087
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtParent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1088
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: NgtParent, isStandalone: true, selector: "[parent]", inputs: { parent: "parent" }, usesInheritance: true, ngImport: i0 }); }
|
|
1070
1089
|
}
|
|
1071
|
-
|
|
1072
|
-
NgtParent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: NgtParent, isStandalone: true, selector: "[parent]", inputs: { parent: "parent" }, usesInheritance: true, ngImport: i0 });
|
|
1073
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtParent, decorators: [{
|
|
1090
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtParent, decorators: [{
|
|
1074
1091
|
type: Directive,
|
|
1075
1092
|
args: [{ selector: '[parent]', standalone: true }]
|
|
1076
1093
|
}], propDecorators: { parent: [{
|
|
@@ -2008,10 +2025,10 @@ class NgtRendererFactory {
|
|
|
2008
2025
|
}
|
|
2009
2026
|
return renderer;
|
|
2010
2027
|
}
|
|
2028
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtRendererFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2029
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtRendererFactory }); }
|
|
2011
2030
|
}
|
|
2012
|
-
|
|
2013
|
-
NgtRendererFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtRendererFactory });
|
|
2014
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtRendererFactory, decorators: [{
|
|
2031
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtRendererFactory, decorators: [{
|
|
2015
2032
|
type: Injectable
|
|
2016
2033
|
}] });
|
|
2017
2034
|
/**
|
|
@@ -2570,14 +2587,14 @@ class NgtCanvas extends NgtRxStore {
|
|
|
2570
2587
|
}
|
|
2571
2588
|
safeDetectChanges(this.cdr);
|
|
2572
2589
|
}
|
|
2573
|
-
}
|
|
2574
|
-
|
|
2575
|
-
NgtCanvas.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: NgtCanvas, isStandalone: true, selector: "ngt-canvas", inputs: { sceneGraph: "sceneGraph", sceneGraphInputs: "sceneGraphInputs", compoundPrefixes: "compoundPrefixes", linear: "linear", legacy: "legacy", flat: "flat", orthographic: "orthographic", frameloop: "frameloop", dpr: "dpr", raycaster: "raycaster", shadows: "shadows", camera: "camera", gl: "gl", eventSource: "eventSource", eventPrefix: "eventPrefix", lookAt: "lookAt", performance: "performance" }, outputs: { created: "created", pointerMissed: "pointerMissed" }, host: { properties: { "class.ngt-canvas": "this.hbClass", "style.pointerEvents": "this.hbPointerEvents" } }, providers: [NgtStore, provideNgxResizeOptions({ emitInZone: false })], viewQueries: [{ propertyName: "glCanvas", first: true, predicate: ["glCanvas"], descendants: true, static: true }, { propertyName: "glAnchor", first: true, predicate: ["glCanvas"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
|
|
2590
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtCanvas, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
2591
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtCanvas, isStandalone: true, selector: "ngt-canvas", inputs: { sceneGraph: "sceneGraph", sceneGraphInputs: "sceneGraphInputs", compoundPrefixes: "compoundPrefixes", linear: "linear", legacy: "legacy", flat: "flat", orthographic: "orthographic", frameloop: "frameloop", dpr: "dpr", raycaster: "raycaster", shadows: "shadows", camera: "camera", gl: "gl", eventSource: "eventSource", eventPrefix: "eventPrefix", lookAt: "lookAt", performance: "performance" }, outputs: { created: "created", pointerMissed: "pointerMissed" }, host: { properties: { "class.ngt-canvas": "this.hbClass", "style.pointerEvents": "this.hbPointerEvents" } }, providers: [NgtStore, provideNgxResizeOptions({ emitInZone: false })], viewQueries: [{ propertyName: "glCanvas", first: true, predicate: ["glCanvas"], descendants: true, static: true }, { propertyName: "glAnchor", first: true, predicate: ["glCanvas"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
|
|
2576
2592
|
<div (ngxResize)="onResize($event)" style="height: 100%; width: 100%;">
|
|
2577
2593
|
<canvas #glCanvas style="display: block;"></canvas>
|
|
2578
2594
|
</div>
|
|
2579
|
-
`, isInline: true, styles: [":host{display:block;position:relative;width:100%;height:100%;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: NgxResize, selector: "[ngxResize]", inputs: ["ngxResizeOptions"], outputs: ["ngxResize"] }] });
|
|
2580
|
-
|
|
2595
|
+
`, isInline: true, styles: [":host{display:block;position:relative;width:100%;height:100%;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: NgxResize, selector: "[ngxResize]", inputs: ["ngxResizeOptions"], outputs: ["ngxResize"] }] }); }
|
|
2596
|
+
}
|
|
2597
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtCanvas, decorators: [{
|
|
2581
2598
|
type: Component,
|
|
2582
2599
|
args: [{ selector: 'ngt-canvas', standalone: true, template: `
|
|
2583
2600
|
<div (ngxResize)="onResize($event)" style="height: 100%; width: 100%;">
|
|
@@ -2771,10 +2788,10 @@ class NgtRepeat extends NgForOf {
|
|
|
2771
2788
|
set ngForRepeat(count) {
|
|
2772
2789
|
this.ngForOf = Number.isInteger(count) ? Array.from({ length: count }, (_, i) => i) : [];
|
|
2773
2790
|
}
|
|
2791
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtRepeat, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2792
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: NgtRepeat, isStandalone: true, selector: "[ngFor][ngForRepeat]", inputs: { ngForRepeat: "ngForRepeat" }, usesInheritance: true, ngImport: i0 }); }
|
|
2774
2793
|
}
|
|
2775
|
-
|
|
2776
|
-
NgtRepeat.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: NgtRepeat, isStandalone: true, selector: "[ngFor][ngForRepeat]", inputs: { ngForRepeat: "ngForRepeat" }, usesInheritance: true, ngImport: i0 });
|
|
2777
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtRepeat, decorators: [{
|
|
2794
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtRepeat, decorators: [{
|
|
2778
2795
|
type: Directive,
|
|
2779
2796
|
args: [{ selector: '[ngFor][ngForRepeat]', standalone: true }]
|
|
2780
2797
|
}], propDecorators: { ngForRepeat: [{
|
|
@@ -2818,10 +2835,10 @@ class NgtPush {
|
|
|
2818
2835
|
this.latestValue = undefined;
|
|
2819
2836
|
this.obj = undefined;
|
|
2820
2837
|
}
|
|
2838
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtPush, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2839
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: NgtPush, isStandalone: true, name: "ngtPush", pure: false }); }
|
|
2821
2840
|
}
|
|
2822
|
-
|
|
2823
|
-
NgtPush.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.6", ngImport: i0, type: NgtPush, isStandalone: true, name: "ngtPush", pure: false });
|
|
2824
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtPush, decorators: [{
|
|
2841
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtPush, decorators: [{
|
|
2825
2842
|
type: Pipe,
|
|
2826
2843
|
args: [{ name: 'ngtPush', pure: false, standalone: true }]
|
|
2827
2844
|
}] });
|
|
@@ -2869,10 +2886,10 @@ class NgtPortalBeforeRender {
|
|
|
2869
2886
|
ngOnDestroy() {
|
|
2870
2887
|
this.subscription?.();
|
|
2871
2888
|
}
|
|
2889
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtPortalBeforeRender, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2890
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: NgtPortalBeforeRender, isStandalone: true, selector: "[ngtPortalBeforeRender]", inputs: { renderPriority: "renderPriority", parentScene: "parentScene", parentCamera: "parentCamera" }, outputs: { beforeRender: "beforeRender" }, ngImport: i0 }); }
|
|
2872
2891
|
}
|
|
2873
|
-
|
|
2874
|
-
NgtPortalBeforeRender.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: NgtPortalBeforeRender, isStandalone: true, selector: "[ngtPortalBeforeRender]", inputs: { renderPriority: "renderPriority", parentScene: "parentScene", parentCamera: "parentCamera" }, outputs: { beforeRender: "beforeRender" }, ngImport: i0 });
|
|
2875
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtPortalBeforeRender, decorators: [{
|
|
2892
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtPortalBeforeRender, decorators: [{
|
|
2876
2893
|
type: Directive,
|
|
2877
2894
|
args: [{ selector: '[ngtPortalBeforeRender]', standalone: true }]
|
|
2878
2895
|
}], propDecorators: { renderPriority: [{
|
|
@@ -2892,10 +2909,10 @@ class NgtPortalContent {
|
|
|
2892
2909
|
delete commentNode['__ngt_renderer_add_comment__'];
|
|
2893
2910
|
}
|
|
2894
2911
|
}
|
|
2912
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtPortalContent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ViewContainerRef, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2913
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: NgtPortalContent, isStandalone: true, selector: "ng-template[ngtPortalContent]", ngImport: i0 }); }
|
|
2895
2914
|
}
|
|
2896
|
-
|
|
2897
|
-
NgtPortalContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: NgtPortalContent, isStandalone: true, selector: "ng-template[ngtPortalContent]", ngImport: i0 });
|
|
2898
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtPortalContent, decorators: [{
|
|
2915
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtPortalContent, decorators: [{
|
|
2899
2916
|
type: Directive,
|
|
2900
2917
|
args: [{ selector: 'ng-template[ngtPortalContent]', standalone: true }]
|
|
2901
2918
|
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ViewContainerRef, decorators: [{
|
|
@@ -3001,9 +3018,8 @@ class NgtPortal extends NgtRxStore {
|
|
|
3001
3018
|
...restInputsState,
|
|
3002
3019
|
};
|
|
3003
3020
|
}
|
|
3004
|
-
}
|
|
3005
|
-
|
|
3006
|
-
NgtPortal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: NgtPortal, isStandalone: true, selector: "ngt-portal", inputs: { container: "container", state: "state", autoRender: "autoRender", autoRenderPriority: "autoRenderPriority" }, outputs: { beforeRender: "beforeRender" }, providers: [NgtStore], queries: [{ propertyName: "portalContentTemplate", first: true, predicate: NgtPortalContent, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "portalContentAnchor", first: true, predicate: ["portalContentAnchor"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
3021
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtPortal, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
3022
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtPortal, isStandalone: true, selector: "ngt-portal", inputs: { container: "container", state: "state", autoRender: "autoRender", autoRenderPriority: "autoRenderPriority" }, outputs: { beforeRender: "beforeRender" }, providers: [NgtStore], queries: [{ propertyName: "portalContentTemplate", first: true, predicate: NgtPortalContent, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "portalContentAnchor", first: true, predicate: ["portalContentAnchor"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
3007
3023
|
<ng-container #portalContentAnchor>
|
|
3008
3024
|
<ng-container
|
|
3009
3025
|
*ngIf="autoRender && portalContentRendered"
|
|
@@ -3014,8 +3030,9 @@ NgtPortal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15
|
|
|
3014
3030
|
(beforeRender)="onBeforeRender($event)"
|
|
3015
3031
|
/>
|
|
3016
3032
|
</ng-container>
|
|
3017
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgtPortalBeforeRender, selector: "[ngtPortalBeforeRender]", inputs: ["renderPriority", "parentScene", "parentCamera"], outputs: ["beforeRender"] }] });
|
|
3018
|
-
|
|
3033
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgtPortalBeforeRender, selector: "[ngtPortalBeforeRender]", inputs: ["renderPriority", "parentScene", "parentCamera"], outputs: ["beforeRender"] }] }); }
|
|
3034
|
+
}
|
|
3035
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtPortal, decorators: [{
|
|
3019
3036
|
type: Component,
|
|
3020
3037
|
args: [{
|
|
3021
3038
|
selector: 'ngt-portal',
|
|
@@ -3054,17 +3071,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
3054
3071
|
}] } });
|
|
3055
3072
|
|
|
3056
3073
|
class NgtRoutedScene {
|
|
3074
|
+
static { this.isRoutedScene = true; }
|
|
3057
3075
|
constructor(router) {
|
|
3058
3076
|
const { destroy$, cdr } = injectNgtDestroy();
|
|
3059
3077
|
router.events
|
|
3060
3078
|
.pipe(filter((event) => event instanceof ActivationEnd), takeUntil(destroy$))
|
|
3061
3079
|
.subscribe(() => safeDetectChanges(cdr));
|
|
3062
3080
|
}
|
|
3081
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtRoutedScene, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3082
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtRoutedScene, isStandalone: true, selector: "ngt-routed-scene", ngImport: i0, template: `<router-outlet />`, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
|
|
3063
3083
|
}
|
|
3064
|
-
|
|
3065
|
-
NgtRoutedScene.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtRoutedScene, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
3066
|
-
NgtRoutedScene.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: NgtRoutedScene, isStandalone: true, selector: "ngt-routed-scene", ngImport: i0, template: `<router-outlet />`, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
|
|
3067
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtRoutedScene, decorators: [{
|
|
3084
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtRoutedScene, decorators: [{
|
|
3068
3085
|
type: Component,
|
|
3069
3086
|
args: [{
|
|
3070
3087
|
standalone: true,
|