angular-three 2.13.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/angular-three-nativescript.mjs +3 -3
- package/fesm2022/angular-three-nativescript.mjs.map +1 -1
- package/fesm2022/angular-three-testing.mjs +12 -14
- package/fesm2022/angular-three-testing.mjs.map +1 -1
- package/fesm2022/angular-three.mjs +123 -106
- package/fesm2022/angular-three.mjs.map +1 -1
- package/lib/canvas.d.ts +7 -7
- package/lib/html.d.ts +2 -2
- package/lib/portal.d.ts +2 -2
- package/lib/routed-scene.d.ts +8 -2
- package/lib/utils/object-events.d.ts +0 -19
- package/package.json +4 -10
- package/plugin/src/generators/init/schema.json +8 -8
- package/testing/lib/utils/web-gl-rendering-context.d.ts +1 -1
- package/esm2022/angular-three.mjs +0 -5
- package/esm2022/index.mjs +0 -25
- package/esm2022/lib/canvas.mjs +0 -188
- package/esm2022/lib/directives/args.mjs +0 -53
- package/esm2022/lib/directives/selection.mjs +0 -69
- package/esm2022/lib/dom/events.mjs +0 -73
- package/esm2022/lib/events.mjs +0 -361
- package/esm2022/lib/html.mjs +0 -44
- package/esm2022/lib/instance.mjs +0 -83
- package/esm2022/lib/loader.mjs +0 -93
- package/esm2022/lib/loop.mjs +0 -141
- package/esm2022/lib/pipes/hexify.mjs +0 -86
- package/esm2022/lib/portal.mjs +0 -220
- package/esm2022/lib/renderer/catalogue.mjs +0 -7
- package/esm2022/lib/renderer/constants.mjs +0 -23
- package/esm2022/lib/renderer/index.mjs +0 -544
- package/esm2022/lib/renderer/state.mjs +0 -54
- package/esm2022/lib/renderer/utils.mjs +0 -223
- package/esm2022/lib/roots.mjs +0 -275
- package/esm2022/lib/routed-scene.mjs +0 -33
- package/esm2022/lib/store.mjs +0 -176
- package/esm2022/lib/three-types.mjs +0 -2
- package/esm2022/lib/types.mjs +0 -2
- package/esm2022/lib/utils/apply-props.mjs +0 -130
- package/esm2022/lib/utils/attach.mjs +0 -46
- package/esm2022/lib/utils/before-render.mjs +0 -41
- package/esm2022/lib/utils/is.mjs +0 -52
- package/esm2022/lib/utils/make.mjs +0 -52
- package/esm2022/lib/utils/object-events.mjs +0 -137
- package/esm2022/lib/utils/output-ref.mjs +0 -9
- package/esm2022/lib/utils/parameters.mjs +0 -70
- package/esm2022/lib/utils/resolve-ref.mjs +0 -8
- package/esm2022/lib/utils/signal-store.mjs +0 -90
- package/esm2022/lib/utils/update.mjs +0 -37
- package/esm2022/nativescript/angular-three-nativescript.mjs +0 -5
- package/esm2022/nativescript/index.mjs +0 -2
- package/esm2022/nativescript/lib/canvas.mjs +0 -127
- package/esm2022/testing/angular-three-testing.mjs +0 -5
- package/esm2022/testing/index.mjs +0 -3
- package/esm2022/testing/lib/test-bed.mjs +0 -130
- package/esm2022/testing/lib/test-canvas.mjs +0 -45
- package/esm2022/testing/lib/utils/mock-canvas.mjs +0 -37
- package/esm2022/testing/lib/utils/web-gl-rendering-context.mjs +0 -752
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { CUSTOM_ELEMENTS_SCHEMA, ENVIRONMENT_INITIALIZER } from '@angular/core';
|
|
2
|
-
import { TestBed } from '@angular/core/testing';
|
|
3
|
-
import { getLocalState, injectCanvasRootInitializer, NGT_STORE, provideStore, } from 'angular-three';
|
|
4
|
-
import { NgtTestCanvas } from './test-canvas';
|
|
5
|
-
import { createMockCanvas } from './utils/mock-canvas';
|
|
6
|
-
export class NgtTestBed {
|
|
7
|
-
static create(sceneGraph, { mockCanvasOptions = {}, canvasConfiguration = {}, errorOnUnknownElements, providers, declarations, imports, teardown, deferBlockBehavior, } = {}) {
|
|
8
|
-
const mockedCanvas = createMockCanvas(mockCanvasOptions);
|
|
9
|
-
const fixture = TestBed.configureTestingModule({
|
|
10
|
-
providers: [
|
|
11
|
-
provideStore(),
|
|
12
|
-
{
|
|
13
|
-
provide: ENVIRONMENT_INITIALIZER,
|
|
14
|
-
useFactory: () => {
|
|
15
|
-
const initRoot = injectCanvasRootInitializer();
|
|
16
|
-
return () => {
|
|
17
|
-
const configurator = initRoot(mockedCanvas);
|
|
18
|
-
configurator.configure({
|
|
19
|
-
frameloop: 'never',
|
|
20
|
-
size: {
|
|
21
|
-
width: mockCanvasOptions.width ?? 1280,
|
|
22
|
-
height: mockCanvasOptions.height ?? 800,
|
|
23
|
-
top: 0,
|
|
24
|
-
left: 0,
|
|
25
|
-
},
|
|
26
|
-
...canvasConfiguration,
|
|
27
|
-
events: undefined,
|
|
28
|
-
});
|
|
29
|
-
};
|
|
30
|
-
},
|
|
31
|
-
multi: true,
|
|
32
|
-
},
|
|
33
|
-
...(providers ?? []),
|
|
34
|
-
],
|
|
35
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
36
|
-
errorOnUnknownElements: errorOnUnknownElements ?? false,
|
|
37
|
-
declarations,
|
|
38
|
-
imports,
|
|
39
|
-
teardown,
|
|
40
|
-
deferBlockBehavior,
|
|
41
|
-
}).createComponent(NgtTestCanvas);
|
|
42
|
-
fixture.componentRef.setInput('sceneGraph', sceneGraph);
|
|
43
|
-
fixture.detectChanges();
|
|
44
|
-
const store = TestBed.inject(NGT_STORE);
|
|
45
|
-
TestBed.flushEffects();
|
|
46
|
-
return {
|
|
47
|
-
store,
|
|
48
|
-
fixture,
|
|
49
|
-
scene: store.snapshot.scene,
|
|
50
|
-
sceneInstanceNode: getLocalState(store.snapshot.scene),
|
|
51
|
-
canvas: mockedCanvas,
|
|
52
|
-
destroy: fixture.componentInstance.destroy.bind(fixture.componentInstance),
|
|
53
|
-
fireEvent: this.createEventFirer(store, fixture),
|
|
54
|
-
advance: this.createAdvance(store),
|
|
55
|
-
toGraph: this.createToGraph(store),
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
static createToGraph(store) {
|
|
59
|
-
function graphify(type, name, children) {
|
|
60
|
-
return { type, name, children };
|
|
61
|
-
}
|
|
62
|
-
function toGraph(node) {
|
|
63
|
-
return node.children.map((child) => graphify(child.type, child.name || '', toGraph(child)));
|
|
64
|
-
}
|
|
65
|
-
return () => {
|
|
66
|
-
const state = store.snapshot;
|
|
67
|
-
return toGraph(state.scene);
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
static createAdvance(store) {
|
|
71
|
-
return async (frames, delta = 1) => {
|
|
72
|
-
const state = store.snapshot;
|
|
73
|
-
const subscribers = state.internal.subscribers;
|
|
74
|
-
const promises = [];
|
|
75
|
-
for (const subscriber of subscribers) {
|
|
76
|
-
for (let i = 0; i < frames; i++) {
|
|
77
|
-
if (Array.isArray(delta)) {
|
|
78
|
-
promises.push(new Promise((res) => {
|
|
79
|
-
subscriber.callback({ ...state, delta: delta[i] || delta[-1] });
|
|
80
|
-
res();
|
|
81
|
-
}));
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
promises.push(new Promise((res) => {
|
|
85
|
-
subscriber.callback({ ...state, delta });
|
|
86
|
-
res();
|
|
87
|
-
}));
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
await Promise.all(promises);
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
static createEventFirer(store, fixture) {
|
|
95
|
-
let autoDetectChanges = true;
|
|
96
|
-
async function fireEvent(el, eventName, eventData = {}) {
|
|
97
|
-
const localState = getLocalState(el);
|
|
98
|
-
if (!localState) {
|
|
99
|
-
console.warn(`[NGT Test] ${el} has no local state`);
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
const handler = localState.handlers[eventName];
|
|
103
|
-
if (!handler) {
|
|
104
|
-
console.warn(`[NGT Test] ${el} has no ${eventName} handler`);
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
const raycastEvent = {
|
|
108
|
-
camera: store.snapshot.camera,
|
|
109
|
-
stopPropagation: () => { },
|
|
110
|
-
target: el,
|
|
111
|
-
currentTarget: el,
|
|
112
|
-
sourceEvent: eventData,
|
|
113
|
-
nativeEvent: eventData,
|
|
114
|
-
object: el,
|
|
115
|
-
eventObject: el,
|
|
116
|
-
...eventData,
|
|
117
|
-
};
|
|
118
|
-
const result = await handler(raycastEvent);
|
|
119
|
-
if (autoDetectChanges) {
|
|
120
|
-
fixture.detectChanges();
|
|
121
|
-
}
|
|
122
|
-
return result;
|
|
123
|
-
}
|
|
124
|
-
fireEvent.setAutoDetectChanges = (auto) => {
|
|
125
|
-
autoDetectChanges = auto;
|
|
126
|
-
};
|
|
127
|
-
return fireEvent;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1iZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdGVzdGluZy9zcmMvbGliL3Rlc3QtYmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSx1QkFBdUIsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQW9CLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFDTixhQUFhLEVBQ2IsMkJBQTJCLEVBQzNCLFNBQVMsRUFPVCxZQUFZLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVF2RCxNQUFNLE9BQU8sVUFBVTtJQUN0QixNQUFNLENBQUMsTUFBTSxDQUNaLFVBQWEsRUFDYixFQUNDLGlCQUFpQixHQUFHLEVBQUUsRUFDdEIsbUJBQW1CLEdBQUcsRUFBRSxFQUN4QixzQkFBc0IsRUFDdEIsU0FBUyxFQUNULFlBQVksRUFDWixPQUFPLEVBQ1AsUUFBUSxFQUNSLGtCQUFrQixNQUlxRCxFQUFFO1FBRTFFLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFekQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixDQUFDO1lBQzlDLFNBQVMsRUFBRTtnQkFDVixZQUFZLEVBQUU7Z0JBQ2Q7b0JBQ0MsT0FBTyxFQUFFLHVCQUF1QjtvQkFDaEMsVUFBVSxFQUFFLEdBQUcsRUFBRTt3QkFDaEIsTUFBTSxRQUFRLEdBQUcsMkJBQTJCLEVBQUUsQ0FBQzt3QkFFL0MsT0FBTyxHQUFHLEVBQUU7NEJBQ1gsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDOzRCQUM1QyxZQUFZLENBQUMsU0FBUyxDQUFDO2dDQUN0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Z0JBQ3BELE9BQU87WUFDUixDQUFDO1lBRUQsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsV0FBVyxTQUFTLFVBQVUsQ0FBQyxDQUFDO2dCQUM3RCxPQUFPO1lBQ1IsQ0FBQztZQUVELE1BQU0sWUFBWSxHQUFHO2dCQUNwQixNQUFNLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNO2dCQUM3QixlQUFlLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQztnQkFDekIsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLFdBQVcsRUFBRSxTQUFTO2dCQUN0QixXQUFXLEVBQUUsU0FBUztnQkFDdEIsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsV0FBVyxFQUFFLEVBQUU7Z0JBQ2YsR0FBRyxTQUFTO2FBQ1osQ0FBQztZQUVGLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLFlBQW1CLENBQUMsQ0FBQztZQUVsRCxJQUFJLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixDQUFDO1lBRUQsT0FBTyxNQUFNLENBQUM7UUFDZixDQUFDO1FBRUQsU0FBUyxDQUFDLG9CQUFvQixHQUFHLENBQUMsSUFBYSxFQUFFLEVBQUU7WUFDbEQsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQzFCLENBQUMsQ0FBQztRQUVGLE9BQU8sU0FBUyxDQUFDO0lBQ2xCLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIEVOVklST05NRU5UX0lOSVRJQUxJWkVSLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRGaXh0dXJlLCBUZXN0QmVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7XG5cdGdldExvY2FsU3RhdGUsXG5cdGluamVjdENhbnZhc1Jvb3RJbml0aWFsaXplcixcblx0TkdUX1NUT1JFLFxuXHROZ3RBbnlSZWNvcmQsXG5cdE5ndENhbnZhc09wdGlvbnMsXG5cdE5ndEV2ZW50SGFuZGxlcnMsXG5cdE5ndEluc3RhbmNlTm9kZSxcblx0Tmd0U2lnbmFsU3RvcmUsXG5cdE5ndFN0YXRlLFxuXHRwcm92aWRlU3RvcmUsXG59IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgT2JqZWN0M0QgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RUZXN0Q2FudmFzIH0gZnJvbSAnLi90ZXN0LWNhbnZhcyc7XG5pbXBvcnQgeyBjcmVhdGVNb2NrQ2FudmFzIH0gZnJvbSAnLi91dGlscy9tb2NrLWNhbnZhcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0VGVzdEdyYXBoZWRPYmplY3Qge1xuXHR0eXBlOiBzdHJpbmc7XG5cdG5hbWU6IHN0cmluZztcblx0Y2hpbGRyZW46IE5ndFRlc3RHcmFwaGVkT2JqZWN0W107XG59XG5cbmV4cG9ydCBjbGFzcyBOZ3RUZXN0QmVkIHtcblx0c3RhdGljIGNyZWF0ZTxUIGV4dGVuZHMgVHlwZTxhbnk+Pihcblx0XHRzY2VuZUdyYXBoOiBULFxuXHRcdHtcblx0XHRcdG1vY2tDYW52YXNPcHRpb25zID0ge30sXG5cdFx0XHRjYW52YXNDb25maWd1cmF0aW9uID0ge30sXG5cdFx0XHRlcnJvck9uVW5rbm93bkVsZW1lbnRzLFxuXHRcdFx0cHJvdmlkZXJzLFxuXHRcdFx0ZGVjbGFyYXRpb25zLFxuXHRcdFx0aW1wb3J0cyxcblx0XHRcdHRlYXJkb3duLFxuXHRcdFx0ZGVmZXJCbG9ja0JlaGF2aW9yLFxuXHRcdH06IHtcblx0XHRcdG1vY2tDYW52YXNPcHRpb25zPzogeyB3aWR0aD86IG51bWJlcjsgaGVpZ2h0PzogbnVtYmVyOyBiZWZvcmVSZXR1cm4/OiAoY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCkgPT4gdm9pZCB9O1xuXHRcdFx0Y2FudmFzQ29uZmlndXJhdGlvbj86IFBhcnRpYWw8T21pdDxOZ3RDYW52YXNPcHRpb25zLCAnZnJhbWVsb29wJyB8ICdzaXplJyB8ICdldmVudHMnPj47XG5cdFx0fSAmIE9taXQ8UGFyYW1ldGVyczxUZXN0QmVkWydjb25maWd1cmVUZXN0aW5nTW9kdWxlJ10+WzBdLCAnc2NoZW1hcyc+ID0ge30sXG5cdCkge1xuXHRcdGNvbnN0IG1vY2tlZENhbnZhcyA9IGNyZWF0ZU1vY2tDYW52YXMobW9ja0NhbnZhc09wdGlvbnMpO1xuXG5cdFx0Y29uc3QgZml4dHVyZSA9IFRlc3RCZWQuY29uZmlndXJlVGVzdGluZ01vZHVsZSh7XG5cdFx0XHRwcm92aWRlcnM6IFtcblx0XHRcdFx0cHJvdmlkZVN0b3JlKCksXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRwcm92aWRlOiBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUixcblx0XHRcdFx0XHR1c2VGYWN0b3J5OiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCBpbml0Um9vdCA9IGluamVjdENhbnZhc1Jvb3RJbml0aWFsaXplcigpO1xuXG5cdFx0XHRcdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBjb25maWd1cmF0b3IgPSBpbml0Um9vdChtb2NrZWRDYW52YXMpO1xuXHRcdFx0XHRcdFx0XHRjb25maWd1cmF0b3IuY29uZmlndXJlKHtcblx0XHRcdFx0XHRcdFx0XHRmcmFtZWxvb3A6ICduZXZlcicsXG5cdFx0XHRcdFx0XHRcdFx0c2l6ZToge1xuXHRcdFx0XHRcdFx0XHRcdFx0d2lkdGg6IG1vY2tDYW52YXNPcHRpb25zLndpZHRoID8/IDEyODAsXG5cdFx0XHRcdFx0XHRcdFx0XHRoZWlnaHQ6IG1vY2tDYW52YXNPcHRpb25zLmhlaWdodCA/PyA4MDAsXG5cdFx0XHRcdFx0XHRcdFx0XHR0b3A6IDAsXG5cdFx0XHRcdFx0XHRcdFx0XHRsZWZ0OiAwLFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0Li4uY2FudmFzQ29uZmlndXJhdGlvbixcblx0XHRcdFx0XHRcdFx0XHRldmVudHM6IHVuZGVmaW5lZCxcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0bXVsdGk6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC4uLihwcm92aWRlcnMgPz8gW10pLFxuXHRcdFx0XSxcblx0XHRcdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0XHRcdGVycm9yT25Vbmtub3duRWxlbWVudHM6IGVycm9yT25Vbmtub3duRWxlbWVudHMgPz8gZmFsc2UsXG5cdFx0XHRkZWNsYXJhdGlvbnMsXG5cdFx0XHRpbXBvcnRzLFxuXHRcdFx0dGVhcmRvd24sXG5cdFx0XHRkZWZlckJsb2NrQmVoYXZpb3IsXG5cdFx0fSkuY3JlYXRlQ29tcG9uZW50KE5ndFRlc3RDYW52YXMpO1xuXG5cdFx0Zml4dHVyZS5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ3NjZW5lR3JhcGgnLCBzY2VuZUdyYXBoKTtcblx0XHRmaXh0dXJlLmRldGVjdENoYW5nZXMoKTtcblxuXHRcdGNvbnN0IHN0b3JlID0gVGVzdEJlZC5pbmplY3QoTkdUX1NUT1JFKTtcblxuXHRcdFRlc3RCZWQuZmx1c2hFZmZlY3RzKCk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0c3RvcmUsXG5cdFx0XHRmaXh0dXJlLFxuXHRcdFx0c2NlbmU6IHN0b3JlLnNuYXBzaG90LnNjZW5lLFxuXHRcdFx0c2NlbmVJbnN0YW5jZU5vZGU6IGdldExvY2FsU3RhdGUoc3RvcmUuc25hcHNob3Quc2NlbmUpISxcblx0XHRcdGNhbnZhczogbW9ja2VkQ2FudmFzLFxuXHRcdFx0ZGVzdHJveTogZml4dHVyZS5jb21wb25lbnRJbnN0YW5jZS5kZXN0cm95LmJpbmQoZml4dHVyZS5jb21wb25lbnRJbnN0YW5jZSksXG5cdFx0XHRmaXJlRXZlbnQ6IHRoaXMuY3JlYXRlRXZlbnRGaXJlcihzdG9yZSwgZml4dHVyZSksXG5cdFx0XHRhZHZhbmNlOiB0aGlzLmNyZWF0ZUFkdmFuY2Uoc3RvcmUpLFxuXHRcdFx0dG9HcmFwaDogdGhpcy5jcmVhdGVUb0dyYXBoKHN0b3JlKSxcblx0XHR9O1xuXHR9XG5cblx0c3RhdGljIGNyZWF0ZVRvR3JhcGgoc3RvcmU6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPikge1xuXHRcdGZ1bmN0aW9uIGdyYXBoaWZ5KHR5cGU6IHN0cmluZywgbmFtZTogc3RyaW5nLCBjaGlsZHJlbjogTmd0VGVzdEdyYXBoZWRPYmplY3RbXSk6IE5ndFRlc3RHcmFwaGVkT2JqZWN0IHtcblx0XHRcdHJldHVybiB7IHR5cGUsIG5hbWUsIGNoaWxkcmVuIH07XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gdG9HcmFwaChub2RlOiBPYmplY3QzRCk6IE5ndFRlc3RHcmFwaGVkT2JqZWN0W10ge1xuXHRcdFx0cmV0dXJuIG5vZGUuY2hpbGRyZW4ubWFwKChjaGlsZCkgPT4gZ3JhcGhpZnkoY2hpbGQudHlwZSwgY2hpbGQubmFtZSB8fCAnJywgdG9HcmFwaChjaGlsZCkpKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0Y29uc3Qgc3RhdGUgPSBzdG9yZS5zbmFwc2hvdDtcblx0XHRcdHJldHVybiB0b0dyYXBoKHN0YXRlLnNjZW5lKTtcblx0XHR9O1xuXHR9XG5cblx0c3RhdGljIGNyZWF0ZUFkdmFuY2Uoc3RvcmU6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPikge1xuXHRcdHJldHVybiBhc3luYyAoZnJhbWVzOiBudW1iZXIsIGRlbHRhOiBudW1iZXIgfCBudW1iZXJbXSA9IDEpID0+IHtcblx0XHRcdGNvbnN0IHN0YXRlID0gc3RvcmUuc25hcHNob3Q7XG5cdFx0XHRjb25zdCBzdWJzY3JpYmVycyA9IHN0YXRlLmludGVybmFsLnN1YnNjcmliZXJzO1xuXG5cdFx0XHRjb25zdCBwcm9taXNlczogUHJvbWlzZTx2b2lkPltdID0gW107XG5cblx0XHRcdGZvciAoY29uc3Qgc3Vic2NyaWJlciBvZiBzdWJzY3JpYmVycykge1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGZyYW1lczsgaSsrKSB7XG5cdFx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoZGVsdGEpKSB7XG5cdFx0XHRcdFx0XHRwcm9taXNlcy5wdXNoKFxuXHRcdFx0XHRcdFx0XHRuZXcgUHJvbWlzZSgocmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0c3Vic2NyaWJlci5jYWxsYmFjayh7IC4uLnN0YXRlLCBkZWx0YTogZGVsdGFbaV0gfHwgZGVsdGFbLTFdIH0pO1xuXHRcdFx0XHRcdFx0XHRcdHJlcygpO1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHByb21pc2VzLnB1c2goXG5cdFx0XHRcdFx0XHRcdG5ldyBQcm9taXNlKChyZXMpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRzdWJzY3JpYmVyLmNhbGxiYWNrKHsgLi4uc3RhdGUsIGRlbHRhIH0pO1xuXHRcdFx0XHRcdFx0XHRcdHJlcygpO1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcblx0XHR9O1xuXHR9XG5cblx0c3RhdGljIGNyZWF0ZUV2ZW50RmlyZXIoc3RvcmU6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPiwgZml4dHVyZTogQ29tcG9uZW50Rml4dHVyZTxOZ3RUZXN0Q2FudmFzPikge1xuXHRcdGxldCBhdXRvRGV0ZWN0Q2hhbmdlcyA9IHRydWU7XG5cblx0XHRhc3luYyBmdW5jdGlvbiBmaXJlRXZlbnQoZWw6IE5ndEluc3RhbmNlTm9kZSwgZXZlbnROYW1lOiBrZXlvZiBOZ3RFdmVudEhhbmRsZXJzLCBldmVudERhdGE6IE5ndEFueVJlY29yZCA9IHt9KSB7XG5cdFx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShlbCk7XG5cdFx0XHRpZiAoIWxvY2FsU3RhdGUpIHtcblx0XHRcdFx0Y29uc29sZS53YXJuKGBbTkdUIFRlc3RdICR7ZWx9IGhhcyBubyBsb2NhbCBzdGF0ZWApO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGhhbmRsZXIgPSBsb2NhbFN0YXRlLmhhbmRsZXJzW2V2ZW50TmFtZV07XG5cdFx0XHRpZiAoIWhhbmRsZXIpIHtcblx0XHRcdFx0Y29uc29sZS53YXJuKGBbTkdUIFRlc3RdICR7ZWx9IGhhcyBubyAke2V2ZW50TmFtZX0gaGFuZGxlcmApO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHJheWNhc3RFdmVudCA9IHtcblx0XHRcdFx0Y2FtZXJhOiBzdG9yZS5zbmFwc2hvdC5jYW1lcmEsXG5cdFx0XHRcdHN0b3BQcm9wYWdhdGlvbjogKCkgPT4ge30sXG5cdFx0XHRcdHRhcmdldDogZWwsXG5cdFx0XHRcdGN1cnJlbnRUYXJnZXQ6IGVsLFxuXHRcdFx0XHRzb3VyY2VFdmVudDogZXZlbnREYXRhLFxuXHRcdFx0XHRuYXRpdmVFdmVudDogZXZlbnREYXRhLFxuXHRcdFx0XHRvYmplY3Q6IGVsLFxuXHRcdFx0XHRldmVudE9iamVjdDogZWwsXG5cdFx0XHRcdC4uLmV2ZW50RGF0YSxcblx0XHRcdH07XG5cblx0XHRcdGNvbnN0IHJlc3VsdCA9IGF3YWl0IGhhbmRsZXIocmF5Y2FzdEV2ZW50IGFzIGFueSk7XG5cblx0XHRcdGlmIChhdXRvRGV0ZWN0Q2hhbmdlcykge1xuXHRcdFx0XHRmaXh0dXJlLmRldGVjdENoYW5nZXMoKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9XG5cblx0XHRmaXJlRXZlbnQuc2V0QXV0b0RldGVjdENoYW5nZXMgPSAoYXV0bzogYm9vbGVhbikgPT4ge1xuXHRcdFx0YXV0b0RldGVjdENoYW5nZXMgPSBhdXRvO1xuXHRcdH07XG5cblx0XHRyZXR1cm4gZmlyZUV2ZW50O1xuXHR9XG59XG4iXX0=
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { afterNextRender, ChangeDetectionStrategy, Component, createEnvironmentInjector, DestroyRef, effect, EnvironmentInjector, inject, Injector, input, ViewContainerRef, } from '@angular/core';
|
|
2
|
-
import { extend, injectStore, provideNgtRenderer } from 'angular-three';
|
|
3
|
-
import * as THREE from 'three';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class NgtTestCanvas {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.sceneGraph = input.required();
|
|
8
|
-
extend(THREE);
|
|
9
|
-
const vcr = inject(ViewContainerRef);
|
|
10
|
-
const parentEnvironmentInjector = inject(EnvironmentInjector);
|
|
11
|
-
const parentInjector = inject(Injector);
|
|
12
|
-
const store = injectStore();
|
|
13
|
-
afterNextRender(() => {
|
|
14
|
-
effect(() => {
|
|
15
|
-
const sceneGraph = this.sceneGraph();
|
|
16
|
-
this.environmentInjector = createEnvironmentInjector([provideNgtRenderer(store)], parentEnvironmentInjector);
|
|
17
|
-
this.ref = vcr.createComponent(sceneGraph, {
|
|
18
|
-
environmentInjector: this.environmentInjector,
|
|
19
|
-
injector: parentInjector,
|
|
20
|
-
});
|
|
21
|
-
this.ref.changeDetectorRef.detectChanges();
|
|
22
|
-
}, { injector: parentInjector });
|
|
23
|
-
});
|
|
24
|
-
inject(DestroyRef).onDestroy(() => {
|
|
25
|
-
this.environmentInjector?.destroy();
|
|
26
|
-
this.ref?.destroy();
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
destroy() {
|
|
30
|
-
this.environmentInjector?.destroy();
|
|
31
|
-
this.ref?.destroy();
|
|
32
|
-
}
|
|
33
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtTestCanvas, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.11", type: NgtTestCanvas, isStandalone: true, selector: "ngt-test-canvas", inputs: { sceneGraph: { classPropertyName: "sceneGraph", publicName: "sceneGraph", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
35
|
-
}
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtTestCanvas, decorators: [{
|
|
37
|
-
type: Component,
|
|
38
|
-
args: [{
|
|
39
|
-
selector: 'ngt-test-canvas',
|
|
40
|
-
template: '',
|
|
41
|
-
standalone: true,
|
|
42
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
43
|
-
}]
|
|
44
|
-
}], ctorParameters: () => [] });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jYW52YXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdGVzdGluZy9zcmMvbGliL3Rlc3QtY2FudmFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCx5QkFBeUIsRUFDekIsVUFBVSxFQUNWLE1BQU0sRUFDTixtQkFBbUIsRUFDbkIsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBRUwsZ0JBQWdCLEdBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDOztBQVEvQixNQUFNLE9BQU8sYUFBYTtJQU16QjtRQUxBLGVBQVUsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFhLENBQUM7UUFNeEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDckMsTUFBTSx5QkFBeUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUM5RCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEMsTUFBTSxLQUFLLEdBQUcsV0FBVyxFQUFFLENBQUM7UUFFNUIsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUNwQixNQUFNLENBQ0wsR0FBRyxFQUFFO2dCQUNKLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFFckMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLHlCQUF5QixDQUFDLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO2dCQUU3RyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFO29CQUMxQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CO29CQUM3QyxRQUFRLEVBQUUsY0FBYztpQkFDeEIsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDNUMsQ0FBQyxFQUNELEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxDQUM1QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNqQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPO1FBQ04sSUFBSSxDQUFDLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDckIsQ0FBQzsrR0F4Q1csYUFBYTttR0FBYixhQUFhLDZOQUpmLEVBQUU7OzRGQUlBLGFBQWE7a0JBTnpCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFLEVBQUU7b0JBQ1osVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Q29tcG9uZW50UmVmLFxuXHRjcmVhdGVFbnZpcm9ubWVudEluamVjdG9yLFxuXHREZXN0cm95UmVmLFxuXHRlZmZlY3QsXG5cdEVudmlyb25tZW50SW5qZWN0b3IsXG5cdGluamVjdCxcblx0SW5qZWN0b3IsXG5cdGlucHV0LFxuXHRUeXBlLFxuXHRWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgaW5qZWN0U3RvcmUsIHByb3ZpZGVOZ3RSZW5kZXJlciB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3QtdGVzdC1jYW52YXMnLFxuXHR0ZW1wbGF0ZTogJycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RUZXN0Q2FudmFzIHtcblx0c2NlbmVHcmFwaCA9IGlucHV0LnJlcXVpcmVkPFR5cGU8YW55Pj4oKTtcblxuXHRwcml2YXRlIHJlZj86IENvbXBvbmVudFJlZjxhbnk+O1xuXHRwcml2YXRlIGVudmlyb25tZW50SW5qZWN0b3I/OiBFbnZpcm9ubWVudEluamVjdG9yO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZChUSFJFRSk7XG5cblx0XHRjb25zdCB2Y3IgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cdFx0Y29uc3QgcGFyZW50RW52aXJvbm1lbnRJbmplY3RvciA9IGluamVjdChFbnZpcm9ubWVudEluamVjdG9yKTtcblx0XHRjb25zdCBwYXJlbnRJbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cdFx0Y29uc3Qgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGVmZmVjdChcblx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHNjZW5lR3JhcGggPSB0aGlzLnNjZW5lR3JhcGgoKTtcblxuXHRcdFx0XHRcdHRoaXMuZW52aXJvbm1lbnRJbmplY3RvciA9IGNyZWF0ZUVudmlyb25tZW50SW5qZWN0b3IoW3Byb3ZpZGVOZ3RSZW5kZXJlcihzdG9yZSldLCBwYXJlbnRFbnZpcm9ubWVudEluamVjdG9yKTtcblxuXHRcdFx0XHRcdHRoaXMucmVmID0gdmNyLmNyZWF0ZUNvbXBvbmVudChzY2VuZUdyYXBoLCB7XG5cdFx0XHRcdFx0XHRlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLmVudmlyb25tZW50SW5qZWN0b3IsXG5cdFx0XHRcdFx0XHRpbmplY3RvcjogcGFyZW50SW5qZWN0b3IsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0dGhpcy5yZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHR7IGluamVjdG9yOiBwYXJlbnRJbmplY3RvciB9LFxuXHRcdFx0KTtcblx0XHR9KTtcblxuXHRcdGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4ge1xuXHRcdFx0dGhpcy5lbnZpcm9ubWVudEluamVjdG9yPy5kZXN0cm95KCk7XG5cdFx0XHR0aGlzLnJlZj8uZGVzdHJveSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0ZGVzdHJveSgpIHtcblx0XHR0aGlzLmVudmlyb25tZW50SW5qZWN0b3I/LmRlc3Ryb3koKTtcblx0XHR0aGlzLnJlZj8uZGVzdHJveSgpO1xuXHR9XG59XG4iXX0=
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { WebGL2RenderingContext } from './web-gl-rendering-context';
|
|
2
|
-
export function createMockCanvas({ width = 1280, height = 800, beforeReturn, }) {
|
|
3
|
-
let canvas;
|
|
4
|
-
if (typeof document !== 'undefined' && typeof document.createElement === 'function') {
|
|
5
|
-
canvas = document.createElement('canvas');
|
|
6
|
-
}
|
|
7
|
-
else {
|
|
8
|
-
canvas = {
|
|
9
|
-
style: {},
|
|
10
|
-
addEventListener: (() => { }),
|
|
11
|
-
removeEventListener: (() => { }),
|
|
12
|
-
clientWidth: width,
|
|
13
|
-
clientHeight: height,
|
|
14
|
-
getContext: (() => new WebGL2RenderingContext(canvas)),
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
canvas.width = width;
|
|
18
|
-
canvas.height = height;
|
|
19
|
-
if (globalThis.HTMLCanvasElement) {
|
|
20
|
-
const getContext = HTMLCanvasElement.prototype.getContext;
|
|
21
|
-
HTMLCanvasElement.prototype.getContext = function (...args) {
|
|
22
|
-
const id = args[0];
|
|
23
|
-
if (id.startsWith('webgl'))
|
|
24
|
-
return new WebGL2RenderingContext(this);
|
|
25
|
-
return getContext.apply(this, args);
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
beforeReturn?.(canvas);
|
|
29
|
-
class WebGLRenderingContext extends WebGL2RenderingContext {
|
|
30
|
-
}
|
|
31
|
-
// @ts-expect-error - WebGLRenderingContext is not defined in the global scope for non-browser
|
|
32
|
-
globalThis.WebGLRenderingContext ??= WebGLRenderingContext;
|
|
33
|
-
// @ts-expect-error - WebGL2RenderingContext is not defined in the global scope for non-browser
|
|
34
|
-
globalThis.WebGL2RenderingContext ??= WebGL2RenderingContext;
|
|
35
|
-
return canvas;
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1jYW52YXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdGVzdGluZy9zcmMvbGliL3V0aWxzL21vY2stY2FudmFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXBFLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxFQUNoQyxLQUFLLEdBQUcsSUFBSSxFQUNaLE1BQU0sR0FBRyxHQUFHLEVBQ1osWUFBWSxHQUtaO0lBQ0EsSUFBSSxNQUF5QixDQUFDO0lBRTlCLElBQUksT0FBTyxRQUFRLEtBQUssV0FBVyxJQUFJLE9BQU8sUUFBUSxDQUFDLGFBQWEsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUNyRixNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDO1NBQU0sQ0FBQztRQUNQLE1BQU0sR0FBRztZQUNSLEtBQUssRUFBRSxFQUFFO1lBQ1QsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQVE7WUFDbkMsbUJBQW1CLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQVE7WUFDdEMsV0FBVyxFQUFFLEtBQUs7WUFDbEIsWUFBWSxFQUFFLE1BQU07WUFDcEIsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBUTtTQUN4QyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUV2QixJQUFJLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7UUFDMUQsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxVQUV4QyxHQUFHLElBQW1DO1lBRXRDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO2dCQUFFLE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwRSxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JDLENBQVEsQ0FBQztJQUNWLENBQUM7SUFFRCxZQUFZLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV2QixNQUFNLHFCQUFzQixTQUFRLHNCQUFzQjtLQUFHO0lBQzdELDhGQUE4RjtJQUM5RixVQUFVLENBQUMscUJBQXFCLEtBQUsscUJBQXFCLENBQUM7SUFDM0QsK0ZBQStGO0lBQy9GLFVBQVUsQ0FBQyxzQkFBc0IsS0FBSyxzQkFBc0IsQ0FBQztJQUU3RCxPQUFPLE1BQU0sQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXZWJHTDJSZW5kZXJpbmdDb250ZXh0IH0gZnJvbSAnLi93ZWItZ2wtcmVuZGVyaW5nLWNvbnRleHQnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9ja0NhbnZhcyh7XG5cdHdpZHRoID0gMTI4MCxcblx0aGVpZ2h0ID0gODAwLFxuXHRiZWZvcmVSZXR1cm4sXG59OiB7XG5cdHdpZHRoPzogbnVtYmVyO1xuXHRoZWlnaHQ/OiBudW1iZXI7XG5cdGJlZm9yZVJldHVybj86IChjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50KSA9PiB2b2lkO1xufSkge1xuXHRsZXQgY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudDtcblxuXHRpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuXHR9IGVsc2Uge1xuXHRcdGNhbnZhcyA9IHtcblx0XHRcdHN0eWxlOiB7fSxcblx0XHRcdGFkZEV2ZW50TGlzdGVuZXI6ICgoKSA9PiB7fSkgYXMgYW55LFxuXHRcdFx0cmVtb3ZlRXZlbnRMaXN0ZW5lcjogKCgpID0+IHt9KSBhcyBhbnksXG5cdFx0XHRjbGllbnRXaWR0aDogd2lkdGgsXG5cdFx0XHRjbGllbnRIZWlnaHQ6IGhlaWdodCxcblx0XHRcdGdldENvbnRleHQ6ICgoKSA9PiBuZXcgV2ViR0wyUmVuZGVyaW5nQ29udGV4dChjYW52YXMpKSBhcyBhbnksXG5cdFx0fSBhcyBIVE1MQ2FudmFzRWxlbWVudDtcblx0fVxuXHRjYW52YXMud2lkdGggPSB3aWR0aDtcblx0Y2FudmFzLmhlaWdodCA9IGhlaWdodDtcblxuXHRpZiAoZ2xvYmFsVGhpcy5IVE1MQ2FudmFzRWxlbWVudCkge1xuXHRcdGNvbnN0IGdldENvbnRleHQgPSBIVE1MQ2FudmFzRWxlbWVudC5wcm90b3R5cGUuZ2V0Q29udGV4dDtcblx0XHRIVE1MQ2FudmFzRWxlbWVudC5wcm90b3R5cGUuZ2V0Q29udGV4dCA9IGZ1bmN0aW9uIChcblx0XHRcdHRoaXM6IEhUTUxDYW52YXNFbGVtZW50LFxuXHRcdFx0Li4uYXJnczogUGFyYW1ldGVyczx0eXBlb2YgZ2V0Q29udGV4dD5cblx0XHQpIHtcblx0XHRcdGNvbnN0IGlkID0gYXJnc1swXTtcblx0XHRcdGlmIChpZC5zdGFydHNXaXRoKCd3ZWJnbCcpKSByZXR1cm4gbmV3IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQodGhpcyk7XG5cdFx0XHRyZXR1cm4gZ2V0Q29udGV4dC5hcHBseSh0aGlzLCBhcmdzKTtcblx0XHR9IGFzIGFueTtcblx0fVxuXG5cdGJlZm9yZVJldHVybj8uKGNhbnZhcyk7XG5cblx0Y2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0IGV4dGVuZHMgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCB7fVxuXHQvLyBAdHMtZXhwZWN0LWVycm9yIC0gV2ViR0xSZW5kZXJpbmdDb250ZXh0IGlzIG5vdCBkZWZpbmVkIGluIHRoZSBnbG9iYWwgc2NvcGUgZm9yIG5vbi1icm93c2VyXG5cdGdsb2JhbFRoaXMuV2ViR0xSZW5kZXJpbmdDb250ZXh0ID8/PSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ7XG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgLSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0IGlzIG5vdCBkZWZpbmVkIGluIHRoZSBnbG9iYWwgc2NvcGUgZm9yIG5vbi1icm93c2VyXG5cdGdsb2JhbFRoaXMuV2ViR0wyUmVuZGVyaW5nQ29udGV4dCA/Pz0gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDtcblxuXHRyZXR1cm4gY2FudmFzO1xufVxuIl19
|