angular-three 2.14.0 → 3.1.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 +116 -100
- package/fesm2022/angular-three.mjs.map +1 -1
- package/lib/canvas.d.ts +31 -31
- package/lib/html.d.ts +3 -3
- 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/nativescript/lib/canvas.d.ts +3 -3
- package/package.json +3 -9
- package/plugin/src/generators/init/files/experience/experience.component.ts__tmpl__ +0 -1
- package/plugin/src/generators/init/schema.json +8 -8
- package/plugin/src/generators/version.d.ts +7 -7
- package/plugin/src/generators/version.js +7 -7
- 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 -274
- package/esm2022/lib/routed-scene.mjs +0 -33
- package/esm2022/lib/store.mjs +0 -179
- 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
package/esm2022/lib/canvas.mjs
DELETED
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
import { afterNextRender, booleanAttribute, ChangeDetectionStrategy, Component, computed, createEnvironmentInjector, DestroyRef, effect, ElementRef, EnvironmentInjector, inject, Injector, input, NgZone, output, signal, untracked, viewChild, ViewContainerRef, } from '@angular/core';
|
|
2
|
-
import { outputFromObservable } from '@angular/core/rxjs-interop';
|
|
3
|
-
import { NgxResize, provideResizeOptions } from 'ngxtension/resize';
|
|
4
|
-
import { createPointerEvents } from './dom/events';
|
|
5
|
-
import { provideNgtRenderer } from './renderer';
|
|
6
|
-
import { injectCanvasRootInitializer } from './roots';
|
|
7
|
-
import { NgtRoutedScene } from './routed-scene';
|
|
8
|
-
import { injectStore, provideStore } from './store';
|
|
9
|
-
import { is } from './utils/is';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
export class NgtCanvas {
|
|
12
|
-
constructor() {
|
|
13
|
-
this.store = injectStore();
|
|
14
|
-
this.initRoot = injectCanvasRootInitializer();
|
|
15
|
-
this.host = inject(ElementRef);
|
|
16
|
-
this.zone = inject(NgZone);
|
|
17
|
-
this.environmentInjector = inject(EnvironmentInjector);
|
|
18
|
-
this.injector = inject(Injector);
|
|
19
|
-
this.sceneGraph = input.required({
|
|
20
|
-
transform: (value) => {
|
|
21
|
-
if (value === 'routed') {
|
|
22
|
-
console.warn(`[NGT] 'routed' sceneGraph is not working properly.`);
|
|
23
|
-
return NgtRoutedScene;
|
|
24
|
-
}
|
|
25
|
-
return value;
|
|
26
|
-
},
|
|
27
|
-
});
|
|
28
|
-
this.gl = input();
|
|
29
|
-
this.size = input();
|
|
30
|
-
this.shadows = input(false, {
|
|
31
|
-
transform: (value) => {
|
|
32
|
-
if (value === '')
|
|
33
|
-
return booleanAttribute(value);
|
|
34
|
-
return value;
|
|
35
|
-
},
|
|
36
|
-
});
|
|
37
|
-
this.legacy = input(false, { transform: booleanAttribute });
|
|
38
|
-
this.linear = input(false, { transform: booleanAttribute });
|
|
39
|
-
this.flat = input(false, { transform: booleanAttribute });
|
|
40
|
-
this.orthographic = input(false, { transform: booleanAttribute });
|
|
41
|
-
this.frameloop = input('always');
|
|
42
|
-
this.performance = input();
|
|
43
|
-
this.dpr = input([1, 2]);
|
|
44
|
-
this.raycaster = input();
|
|
45
|
-
this.scene = input();
|
|
46
|
-
this.camera = input();
|
|
47
|
-
this.events = input(createPointerEvents);
|
|
48
|
-
this.eventSource = input();
|
|
49
|
-
this.eventPrefix = input('offset');
|
|
50
|
-
this.lookAt = input();
|
|
51
|
-
this.created = output();
|
|
52
|
-
this.pointerMissed = outputFromObservable(this.store.get('pointerMissed$'));
|
|
53
|
-
this.glCanvas = viewChild.required('glCanvas');
|
|
54
|
-
this.glCanvasViewContainerRef = viewChild.required('glCanvas', { read: ViewContainerRef });
|
|
55
|
-
this.hbPointerEvents = computed(() => (this.eventSource() ? 'none' : 'auto'));
|
|
56
|
-
// NOTE: this signal is updated outside of Zone
|
|
57
|
-
this.resizeResult = signal({}, { equal: Object.is });
|
|
58
|
-
this.configurator = signal(null);
|
|
59
|
-
// NOTE: this means that everything in NgtCanvas will be in afterNextRender.
|
|
60
|
-
// this allows the content of NgtCanvas to use effect instead of afterNextRender
|
|
61
|
-
afterNextRender(() => {
|
|
62
|
-
const canvasElement = this.glCanvas().nativeElement;
|
|
63
|
-
this.zone.runOutsideAngular(() => {
|
|
64
|
-
this.configurator.set(this.initRoot(canvasElement));
|
|
65
|
-
});
|
|
66
|
-
effect(() => {
|
|
67
|
-
const resizeResult = this.resizeResult();
|
|
68
|
-
if (!resizeResult.width || resizeResult.width <= 0 || !resizeResult.height || resizeResult.height <= 0)
|
|
69
|
-
return;
|
|
70
|
-
const configurator = this.configurator();
|
|
71
|
-
if (!configurator)
|
|
72
|
-
return;
|
|
73
|
-
const canvasOptions = {
|
|
74
|
-
gl: this.gl(),
|
|
75
|
-
shadows: this.shadows(),
|
|
76
|
-
legacy: this.legacy(),
|
|
77
|
-
linear: this.linear(),
|
|
78
|
-
flat: this.flat(),
|
|
79
|
-
orthographic: this.orthographic(),
|
|
80
|
-
frameloop: this.frameloop(),
|
|
81
|
-
performance: this.performance(),
|
|
82
|
-
dpr: this.dpr(),
|
|
83
|
-
raycaster: this.raycaster(),
|
|
84
|
-
scene: this.scene(),
|
|
85
|
-
camera: this.camera(),
|
|
86
|
-
events: this.events(),
|
|
87
|
-
eventSource: this.eventSource(),
|
|
88
|
-
eventPrefix: this.eventPrefix(),
|
|
89
|
-
lookAt: this.lookAt(),
|
|
90
|
-
size: resizeResult,
|
|
91
|
-
};
|
|
92
|
-
this.zone.runOutsideAngular(() => {
|
|
93
|
-
configurator.configure(canvasOptions);
|
|
94
|
-
untracked(() => {
|
|
95
|
-
if (this.glRef) {
|
|
96
|
-
this.glRef.changeDetectorRef.detectChanges();
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
this.noZoneRender();
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
}, { injector: this.injector });
|
|
104
|
-
});
|
|
105
|
-
inject(DestroyRef).onDestroy(() => {
|
|
106
|
-
this.glRef?.destroy();
|
|
107
|
-
this.glEnvironmentInjector?.destroy();
|
|
108
|
-
this.configurator()?.destroy();
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
noZoneRender() {
|
|
112
|
-
// NOTE: destroy previous instances if existed
|
|
113
|
-
this.glEnvironmentInjector?.destroy();
|
|
114
|
-
this.glRef?.destroy();
|
|
115
|
-
// NOTE: Flag the canvas active, rendering will now begin
|
|
116
|
-
this.store.update((state) => ({ internal: { ...state.internal, active: true } }));
|
|
117
|
-
const [state, eventSource, eventPrefix] = [
|
|
118
|
-
this.store.snapshot,
|
|
119
|
-
untracked(this.eventSource),
|
|
120
|
-
untracked(this.eventPrefix),
|
|
121
|
-
];
|
|
122
|
-
// connect to event source
|
|
123
|
-
state.events.connect?.(eventSource ? (is.ref(eventSource) ? eventSource.nativeElement : eventSource) : this.host.nativeElement);
|
|
124
|
-
// setup compute for eventPrefix
|
|
125
|
-
if (eventPrefix) {
|
|
126
|
-
state.setEvents({
|
|
127
|
-
compute: (event, store) => {
|
|
128
|
-
const { pointer, raycaster, camera, size } = store.snapshot;
|
|
129
|
-
const x = event[(eventPrefix + 'X')];
|
|
130
|
-
const y = event[(eventPrefix + 'Y')];
|
|
131
|
-
pointer.set((x / size.width) * 2 - 1, -(y / size.height) * 2 + 1);
|
|
132
|
-
raycaster.setFromCamera(pointer, camera);
|
|
133
|
-
},
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
// emit created event if observed
|
|
137
|
-
this.created.emit(this.store.snapshot);
|
|
138
|
-
if (!this.store.get('events', 'connected')) {
|
|
139
|
-
this.store.get('events').connect?.(untracked(this.glCanvas).nativeElement);
|
|
140
|
-
}
|
|
141
|
-
this.glEnvironmentInjector = createEnvironmentInjector([provideNgtRenderer(this.store)], this.environmentInjector);
|
|
142
|
-
this.glRef = untracked(this.glCanvasViewContainerRef).createComponent(untracked(this.sceneGraph), {
|
|
143
|
-
environmentInjector: this.glEnvironmentInjector,
|
|
144
|
-
injector: this.injector,
|
|
145
|
-
});
|
|
146
|
-
this.glRef.changeDetectorRef.detectChanges();
|
|
147
|
-
}
|
|
148
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtCanvas, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
149
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.11", type: NgtCanvas, isStandalone: true, selector: "ngt-canvas", inputs: { sceneGraph: { classPropertyName: "sceneGraph", publicName: "sceneGraph", isSignal: true, isRequired: true, transformFunction: null }, gl: { classPropertyName: "gl", publicName: "gl", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, shadows: { classPropertyName: "shadows", publicName: "shadows", isSignal: true, isRequired: false, transformFunction: null }, legacy: { classPropertyName: "legacy", publicName: "legacy", isSignal: true, isRequired: false, transformFunction: null }, linear: { classPropertyName: "linear", publicName: "linear", isSignal: true, isRequired: false, transformFunction: null }, flat: { classPropertyName: "flat", publicName: "flat", isSignal: true, isRequired: false, transformFunction: null }, orthographic: { classPropertyName: "orthographic", publicName: "orthographic", isSignal: true, isRequired: false, transformFunction: null }, frameloop: { classPropertyName: "frameloop", publicName: "frameloop", isSignal: true, isRequired: false, transformFunction: null }, performance: { classPropertyName: "performance", publicName: "performance", isSignal: true, isRequired: false, transformFunction: null }, dpr: { classPropertyName: "dpr", publicName: "dpr", isSignal: true, isRequired: false, transformFunction: null }, raycaster: { classPropertyName: "raycaster", publicName: "raycaster", isSignal: true, isRequired: false, transformFunction: null }, scene: { classPropertyName: "scene", publicName: "scene", isSignal: true, isRequired: false, transformFunction: null }, camera: { classPropertyName: "camera", publicName: "camera", isSignal: true, isRequired: false, transformFunction: null }, events: { classPropertyName: "events", publicName: "events", isSignal: true, isRequired: false, transformFunction: null }, eventSource: { classPropertyName: "eventSource", publicName: "eventSource", isSignal: true, isRequired: false, transformFunction: null }, eventPrefix: { classPropertyName: "eventPrefix", publicName: "eventPrefix", isSignal: true, isRequired: false, transformFunction: null }, lookAt: { classPropertyName: "lookAt", publicName: "lookAt", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { created: "created", pointerMissed: "pointerMissed" }, host: { properties: { "style.pointerEvents": "hbPointerEvents()" }, styleAttribute: "display: block;position: relative;width: 100%;height: 100%;overflow: hidden;" }, providers: [
|
|
150
|
-
provideResizeOptions({
|
|
151
|
-
emitInZone: false,
|
|
152
|
-
emitInitialResult: true,
|
|
153
|
-
debounce: { scroll: 50, resize: 0 },
|
|
154
|
-
}),
|
|
155
|
-
provideStore(),
|
|
156
|
-
], viewQueries: [{ propertyName: "glCanvas", first: true, predicate: ["glCanvas"], descendants: true, isSignal: true }, { propertyName: "glCanvasViewContainerRef", first: true, predicate: ["glCanvas"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `
|
|
157
|
-
<div (ngxResize)="resizeResult.set($event)" style="height: 100%; width: 100%;">
|
|
158
|
-
<canvas #glCanvas style="display: block;"></canvas>
|
|
159
|
-
</div>
|
|
160
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgxResize, selector: "[ngxResize]", inputs: ["ngxResizeOptions"], outputs: ["ngxResize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
161
|
-
}
|
|
162
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtCanvas, decorators: [{
|
|
163
|
-
type: Component,
|
|
164
|
-
args: [{
|
|
165
|
-
selector: 'ngt-canvas',
|
|
166
|
-
standalone: true,
|
|
167
|
-
template: `
|
|
168
|
-
<div (ngxResize)="resizeResult.set($event)" style="height: 100%; width: 100%;">
|
|
169
|
-
<canvas #glCanvas style="display: block;"></canvas>
|
|
170
|
-
</div>
|
|
171
|
-
`,
|
|
172
|
-
imports: [NgxResize],
|
|
173
|
-
providers: [
|
|
174
|
-
provideResizeOptions({
|
|
175
|
-
emitInZone: false,
|
|
176
|
-
emitInitialResult: true,
|
|
177
|
-
debounce: { scroll: 50, resize: 0 },
|
|
178
|
-
}),
|
|
179
|
-
provideStore(),
|
|
180
|
-
],
|
|
181
|
-
host: {
|
|
182
|
-
style: 'display: block;position: relative;width: 100%;height: 100%;overflow: hidden;',
|
|
183
|
-
'[style.pointerEvents]': 'hbPointerEvents()',
|
|
184
|
-
},
|
|
185
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
186
|
-
}]
|
|
187
|
-
}], ctorParameters: () => [] });
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2FudmFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsUUFBUSxFQUNSLHlCQUF5QixFQUN6QixVQUFVLEVBQ1YsTUFBTSxFQUNOLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBRU4sU0FBUyxFQUNULFNBQVMsRUFDVCxnQkFBZ0IsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBK0IsTUFBTSxtQkFBbUIsQ0FBQztBQUVqRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hELE9BQU8sRUFBRSwyQkFBMkIsRUFBeUIsTUFBTSxTQUFTLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXBELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7O0FBeUJoQyxNQUFNLE9BQU8sU0FBUztJQXVEckI7UUF0RFEsVUFBSyxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQ3RCLGFBQVEsR0FBRywyQkFBMkIsRUFBRSxDQUFDO1FBRXpDLFNBQUksR0FBRyxNQUFNLENBQTBCLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELFNBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFD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LEVBQUUsQ0FBQztJQUM5QyxDQUFDOytHQWxLVyxTQUFTO21HQUFULFNBQVMsNmdGQWRWO1lBQ1Ysb0JBQW9CLENBQUM7Z0JBQ3BCLFVBQVUsRUFBRSxLQUFLO2dCQUNqQixpQkFBaUIsRUFBRSxJQUFJO2dCQUN2QixRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7YUFDbEIsQ0FBQztZQUNuQixZQUFZLEVBQUU7U0FDZCxrT0FtRHlFLGdCQUFnQiw2Q0FoRWhGOzs7O0VBSVQsNERBQ1MsU0FBUzs7NEZBZVAsU0FBUztrQkF2QnJCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7RUFJVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0JBQ3BCLFNBQVMsRUFBRTt3QkFDVixvQkFBb0IsQ0FBQzs0QkFDcEIsVUFBVSxFQUFFLEtBQUs7NEJBQ2pCLGlCQUFpQixFQUFFLElBQUk7NEJBQ3ZCLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTt5QkFDbEIsQ0FBQzt3QkFDbkIsWUFBWSxFQUFFO3FCQUNkO29CQUNELElBQUksRUFBRTt3QkFDTCxLQUFLLEVBQUUsOEVBQThFO3dCQUNyRix1QkFBdUIsRUFBRSxtQkFBbUI7cUJBQzVDO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Ym9vbGVhbkF0dHJpYnV0ZSxcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Q29tcG9uZW50UmVmLFxuXHRjb21wdXRlZCxcblx0Y3JlYXRlRW52aXJvbm1lbnRJbmplY3Rvcixcblx0RGVzdHJveVJlZixcblx0ZWZmZWN0LFxuXHRFbGVtZW50UmVmLFxuXHRFbnZpcm9ubWVudEluamVjdG9yLFxuXHRpbmplY3QsXG5cdEluamVjdG9yLFxuXHRpbnB1dCxcblx0Tmdab25lLFxuXHRvdXRwdXQsXG5cdHNpZ25hbCxcblx0VHlwZSxcblx0dW50cmFja2VkLFxuXHR2aWV3Q2hpbGQsXG5cdFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgb3V0cHV0RnJvbU9ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBOZ3hSZXNpemUsIHByb3ZpZGVSZXNpemVPcHRpb25zLCBSZXNpemVPcHRpb25zLCBSZXNpemVSZXN1bHQgfSBmcm9tICduZ3h0ZW5zaW9uL3Jlc2l6ZSc7XG5pbXBvcnQgeyBSYXljYXN0ZXIsIFNjZW5lLCBWZWN0b3IzIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgY3JlYXRlUG9pbnRlckV2ZW50cyB9IGZyb20gJy4vZG9tL2V2ZW50cyc7XG5pbXBvcnQgeyBwcm92aWRlTmd0UmVuZGVyZXIgfSBmcm9tICcuL3JlbmRlcmVyJztcbmltcG9ydCB7IGluamVjdENhbnZhc1Jvb3RJbml0aWFsaXplciwgTmd0Q2FudmFzQ29uZmlndXJhdG9yIH0gZnJvbSAnLi9yb290cyc7XG5pbXBvcnQgeyBOZ3RSb3V0ZWRTY2VuZSB9IGZyb20gJy4vcm91dGVkLXNjZW5lJztcbmltcG9ydCB7IGluamVjdFN0b3JlLCBwcm92aWRlU3RvcmUgfSBmcm9tICcuL3N0b3JlJztcbmltcG9ydCB7IE5ndENhbnZhc09wdGlvbnMsIE5ndERvbUV2ZW50LCBOZ3REcHIsIE5ndEdMT3B0aW9ucywgTmd0UGVyZm9ybWFuY2UsIE5ndFNpemUsIE5ndFN0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4vdXRpbHMvaXMnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3QtY2FudmFzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8ZGl2IChuZ3hSZXNpemUpPVwicmVzaXplUmVzdWx0LnNldCgkZXZlbnQpXCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlO1wiPlxuXHRcdFx0PGNhbnZhcyAjZ2xDYW52YXMgc3R5bGU9XCJkaXNwbGF5OiBibG9jaztcIj48L2NhbnZhcz5cblx0XHQ8L2Rpdj5cblx0YCxcblx0aW1wb3J0czogW05neFJlc2l6ZV0sXG5cdHByb3ZpZGVyczogW1xuXHRcdHByb3ZpZGVSZXNpemVPcHRpb25zKHtcblx0XHRcdGVtaXRJblpvbmU6IGZhbHNlLFxuXHRcdFx0ZW1pdEluaXRpYWxSZXN1bHQ6IHRydWUsXG5cdFx0XHRkZWJvdW5jZTogeyBzY3JvbGw6IDUwLCByZXNpemU6IDAgfSxcblx0XHR9IGFzIFJlc2l6ZU9wdGlvbnMpLFxuXHRcdHByb3ZpZGVTdG9yZSgpLFxuXHRdLFxuXHRob3N0OiB7XG5cdFx0c3R5bGU6ICdkaXNwbGF5OiBibG9jaztwb3NpdGlvbjogcmVsYXRpdmU7d2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO292ZXJmbG93OiBoaWRkZW47Jyxcblx0XHQnW3N0eWxlLnBvaW50ZXJFdmVudHNdJzogJ2hiUG9pbnRlckV2ZW50cygpJyxcblx0fSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndENhbnZhcyB7XG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRwcml2YXRlIGluaXRSb290ID0gaW5qZWN0Q2FudmFzUm9vdEluaXRpYWxpemVyKCk7XG5cblx0cHJpdmF0ZSBob3N0ID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcblx0cHJpdmF0ZSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cdHByaXZhdGUgZW52aXJvbm1lbnRJbmplY3RvciA9IGluamVjdChFbnZpcm9ubWVudEluamVjdG9yKTtcblx0cHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cblx0c2NlbmVHcmFwaCA9IGlucHV0LnJlcXVpcmVkPFR5cGU8YW55PiwgVHlwZTxhbnk+IHwgJ3JvdXRlZCc+KHtcblx0XHR0cmFuc2Zvcm06ICh2YWx1ZSkgPT4ge1xuXHRcdFx0aWYgKHZhbHVlID09PSAncm91dGVkJykge1xuXHRcdFx0XHRjb25zb2xlLndhcm4oYFtOR1RdICdyb3V0ZWQnIHNjZW5lR3JhcGggaXMgbm90IHdvcmtpbmcgcHJvcGVybHkuYCk7XG5cdFx0XHRcdHJldHVybiBOZ3RSb3V0ZWRTY2VuZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHR9LFxuXHR9KTtcblx0Z2wgPSBpbnB1dDxOZ3RHTE9wdGlvbnM+KCk7XG5cdHNpemUgPSBpbnB1dDxOZ3RTaXplPigpO1xuXHRzaGFkb3dzID0gaW5wdXQoZmFsc2UsIHtcblx0XHR0cmFuc2Zvcm06ICh2YWx1ZSkgPT4ge1xuXHRcdFx0aWYgKHZhbHVlID09PSAnJykgcmV0dXJuIGJvb2xlYW5BdHRyaWJ1dGUodmFsdWUpO1xuXHRcdFx0cmV0dXJuIHZhbHVlIGFzIE5vbk51bGxhYmxlPE5ndENhbnZhc09wdGlvbnNbJ3NoYWRvd3MnXT47XG5cdFx0fSxcblx0fSk7XG5cdGxlZ2FjeSA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblx0bGluZWFyID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXHRmbGF0ID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXHRvcnRob2dyYXBoaWMgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cdGZyYW1lbG9vcCA9IGlucHV0PE5vbk51bGxhYmxlPE5ndENhbnZhc09wdGlvbnNbJ2ZyYW1lbG9vcCddPj4oJ2Fsd2F5cycpO1xuXHRwZXJmb3JtYW5jZSA9IGlucHV0PFBhcnRpYWw8T21pdDxOZ3RQZXJmb3JtYW5jZSwgJ3JlZ3Jlc3MnPj4+KCk7XG5cdGRwciA9IGlucHV0PE5ndERwcj4oWzEsIDJdKTtcblx0cmF5Y2FzdGVyID0gaW5wdXQ8UGFydGlhbDxSYXljYXN0ZXI+PigpO1xuXHRzY2VuZSA9IGlucHV0PFNjZW5lIHwgUGFydGlhbDxTY2VuZT4+KCk7XG5cdGNhbWVyYSA9IGlucHV0PE5vbk51bGxhYmxlPE5ndENhbnZhc09wdGlvbnNbJ2NhbWVyYSddPj4oKTtcblx0ZXZlbnRzID0gaW5wdXQoY3JlYXRlUG9pbnRlckV2ZW50cyk7XG5cdGV2ZW50U291cmNlID0gaW5wdXQ8SFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oKTtcblx0ZXZlbnRQcmVmaXggPSBpbnB1dDxOb25OdWxsYWJsZTxOZ3RDYW52YXNPcHRpb25zWydldmVudFByZWZpeCddPj4oJ29mZnNldCcpO1xuXHRsb29rQXQgPSBpbnB1dDxWZWN0b3IzIHwgUGFyYW1ldGVyczxWZWN0b3IzWydzZXQnXT4+KCk7XG5cdGNyZWF0ZWQgPSBvdXRwdXQ8Tmd0U3RhdGU+KCk7XG5cdHBvaW50ZXJNaXNzZWQgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLnN0b3JlLmdldCgncG9pbnRlck1pc3NlZCQnKSk7XG5cblx0cHJpdmF0ZSBnbENhbnZhcyA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50Pj4oJ2dsQ2FudmFzJyk7XG5cdHByaXZhdGUgZ2xDYW52YXNWaWV3Q29udGFpbmVyUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkKCdnbENhbnZhcycsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KTtcblxuXHRwcm90ZWN0ZWQgaGJQb2ludGVyRXZlbnRzID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuZXZlbnRTb3VyY2UoKSA/ICdub25lJyA6ICdhdXRvJykpO1xuXG5cdC8vIE5PVEU6IHRoaXMgc2lnbmFsIGlzIHVwZGF0ZWQgb3V0c2lkZSBvZiBab25lXG5cdHByb3RlY3RlZCByZXNpemVSZXN1bHQgPSBzaWduYWw8UmVzaXplUmVzdWx0Pih7fSBhcyBSZXNpemVSZXN1bHQsIHsgZXF1YWw6IE9iamVjdC5pcyB9KTtcblx0cHJpdmF0ZSBjb25maWd1cmF0b3IgPSBzaWduYWw8Tmd0Q2FudmFzQ29uZmlndXJhdG9yIHwgbnVsbD4obnVsbCk7XG5cblx0cHJpdmF0ZSBnbEVudmlyb25tZW50SW5qZWN0b3I/OiBFbnZpcm9ubWVudEluamVjdG9yO1xuXHRwcml2YXRlIGdsUmVmPzogQ29tcG9uZW50UmVmPHVua25vd24+O1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdC8vIE5PVEU6IHRoaXMgbWVhbnMgdGhhdCBldmVyeXRoaW5nIGluIE5ndENhbnZhcyB3aWxsIGJlIGluIGFmdGVyTmV4dFJlbmRlci5cblx0XHQvLyB0aGlzIGFsbG93cyB0aGUgY29udGVudCBvZiBOZ3RDYW52YXMgdG8gdXNlIGVmZmVjdCBpbnN0ZWFkIG9mIGFmdGVyTmV4dFJlbmRlclxuXHRcdGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG5cdFx0XHRjb25zdCBjYW52YXNFbGVtZW50ID0gdGhpcy5nbENhbnZhcygpLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHR0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmNvbmZpZ3VyYXRvci5zZXQodGhpcy5pbml0Um9vdChjYW52YXNFbGVtZW50KSk7XG5cdFx0XHR9KTtcblxuXHRcdFx0ZWZmZWN0KFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgcmVzaXplUmVzdWx0ID0gdGhpcy5yZXNpemVSZXN1bHQoKTtcblx0XHRcdFx0XHRpZiAoIXJlc2l6ZVJlc3VsdC53aWR0aCB8fCByZXNpemVSZXN1bHQud2lkdGggPD0gMCB8fCAhcmVzaXplUmVzdWx0LmhlaWdodCB8fCByZXNpemVSZXN1bHQuaGVpZ2h0IDw9IDApXG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cblx0XHRcdFx0XHRjb25zdCBjb25maWd1cmF0b3IgPSB0aGlzLmNvbmZpZ3VyYXRvcigpO1xuXHRcdFx0XHRcdGlmICghY29uZmlndXJhdG9yKSByZXR1cm47XG5cblx0XHRcdFx0XHRjb25zdCBjYW52YXNPcHRpb25zID0ge1xuXHRcdFx0XHRcdFx0Z2w6IHRoaXMuZ2woKSxcblx0XHRcdFx0XHRcdHNoYWRvd3M6IHRoaXMuc2hhZG93cygpLFxuXHRcdFx0XHRcdFx0bGVnYWN5OiB0aGlzLmxlZ2FjeSgpLFxuXHRcdFx0XHRcdFx0bGluZWFyOiB0aGlzLmxpbmVhcigpLFxuXHRcdFx0XHRcdFx0ZmxhdDogdGhpcy5mbGF0KCksXG5cdFx0XHRcdFx0XHRvcnRob2dyYXBoaWM6IHRoaXMub3J0aG9ncmFwaGljKCksXG5cdFx0XHRcdFx0XHRmcmFtZWxvb3A6IHRoaXMuZnJhbWVsb29wKCksXG5cdFx0XHRcdFx0XHRwZXJmb3JtYW5jZTogdGhpcy5wZXJmb3JtYW5jZSgpLFxuXHRcdFx0XHRcdFx0ZHByOiB0aGlzLmRwcigpLFxuXHRcdFx0XHRcdFx0cmF5Y2FzdGVyOiB0aGlzLnJheWNhc3RlcigpLFxuXHRcdFx0XHRcdFx0c2NlbmU6IHRoaXMuc2NlbmUoKSxcblx0XHRcdFx0XHRcdGNhbWVyYTogdGhpcy5jYW1lcmEoKSxcblx0XHRcdFx0XHRcdGV2ZW50czogdGhpcy5ldmVudHMoKSxcblx0XHRcdFx0XHRcdGV2ZW50U291cmNlOiB0aGlzLmV2ZW50U291cmNlKCksXG5cdFx0XHRcdFx0XHRldmVudFByZWZpeDogdGhpcy5ldmVudFByZWZpeCgpLFxuXHRcdFx0XHRcdFx0bG9va0F0OiB0aGlzLmxvb2tBdCgpLFxuXHRcdFx0XHRcdFx0c2l6ZTogcmVzaXplUmVzdWx0LFxuXHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHR0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uZmlndXJhdG9yLmNvbmZpZ3VyZShjYW52YXNPcHRpb25zKTtcblxuXHRcdFx0XHRcdFx0dW50cmFja2VkKCgpID0+IHtcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMuZ2xSZWYpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdsUmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLm5vWm9uZVJlbmRlcigpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSxcblx0XHRcdFx0eyBpbmplY3RvcjogdGhpcy5pbmplY3RvciB9LFxuXHRcdFx0KTtcblx0XHR9KTtcblxuXHRcdGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4ge1xuXHRcdFx0dGhpcy5nbFJlZj8uZGVzdHJveSgpO1xuXHRcdFx0dGhpcy5nbEVudmlyb25tZW50SW5qZWN0b3I/LmRlc3Ryb3koKTtcblx0XHRcdHRoaXMuY29uZmlndXJhdG9yKCk/LmRlc3Ryb3koKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgbm9ab25lUmVuZGVyKCkge1xuXHRcdC8vIE5PVEU6IGRlc3Ryb3kgcHJldmlvdXMgaW5zdGFuY2VzIGlmIGV4aXN0ZWRcblx0XHR0aGlzLmdsRW52aXJvbm1lbnRJbmplY3Rvcj8uZGVzdHJveSgpO1xuXHRcdHRoaXMuZ2xSZWY/LmRlc3Ryb3koKTtcblxuXHRcdC8vIE5PVEU6IEZsYWcgdGhlIGNhbnZhcyBhY3RpdmUsIHJlbmRlcmluZyB3aWxsIG5vdyBiZWdpblxuXHRcdHRoaXMuc3RvcmUudXBkYXRlKChzdGF0ZSkgPT4gKHsgaW50ZXJuYWw6IHsgLi4uc3RhdGUuaW50ZXJuYWwsIGFjdGl2ZTogdHJ1ZSB9IH0pKTtcblxuXHRcdGNvbnN0IFtzdGF0ZSwgZXZlbnRTb3VyY2UsIGV2ZW50UHJlZml4XSA9IFtcblx0XHRcdHRoaXMuc3RvcmUuc25hcHNob3QsXG5cdFx0XHR1bnRyYWNrZWQodGhpcy5ldmVudFNvdXJjZSksXG5cdFx0XHR1bnRyYWNrZWQodGhpcy5ldmVudFByZWZpeCksXG5cdFx0XTtcblxuXHRcdC8vIGNvbm5lY3QgdG8gZXZlbnQgc291cmNlXG5cdFx0c3RhdGUuZXZlbnRzLmNvbm5lY3Q/Lihcblx0XHRcdGV2ZW50U291cmNlID8gKGlzLnJlZihldmVudFNvdXJjZSkgPyBldmVudFNvdXJjZS5uYXRpdmVFbGVtZW50IDogZXZlbnRTb3VyY2UpIDogdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsXG5cdFx0KTtcblxuXHRcdC8vIHNldHVwIGNvbXB1dGUgZm9yIGV2ZW50UHJlZml4XG5cdFx0aWYgKGV2ZW50UHJlZml4KSB7XG5cdFx0XHRzdGF0ZS5zZXRFdmVudHMoe1xuXHRcdFx0XHRjb21wdXRlOiAoZXZlbnQsIHN0b3JlKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgeyBwb2ludGVyLCByYXljYXN0ZXIsIGNhbWVyYSwgc2l6ZSB9ID0gc3RvcmUuc25hcHNob3Q7XG5cdFx0XHRcdFx0Y29uc3QgeCA9IGV2ZW50WyhldmVudFByZWZpeCArICdYJykgYXMga2V5b2YgTmd0RG9tRXZlbnRdIGFzIG51bWJlcjtcblx0XHRcdFx0XHRjb25zdCB5ID0gZXZlbnRbKGV2ZW50UHJlZml4ICsgJ1knKSBhcyBrZXlvZiBOZ3REb21FdmVudF0gYXMgbnVtYmVyO1xuXHRcdFx0XHRcdHBvaW50ZXIuc2V0KCh4IC8gc2l6ZS53aWR0aCkgKiAyIC0gMSwgLSh5IC8gc2l6ZS5oZWlnaHQpICogMiArIDEpO1xuXHRcdFx0XHRcdHJheWNhc3Rlci5zZXRGcm9tQ2FtZXJhKHBvaW50ZXIsIGNhbWVyYSk7XG5cdFx0XHRcdH0sXG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHQvLyBlbWl0IGNyZWF0ZWQgZXZlbnQgaWYgb2JzZXJ2ZWRcblx0XHR0aGlzLmNyZWF0ZWQuZW1pdCh0aGlzLnN0b3JlLnNuYXBzaG90KTtcblxuXHRcdGlmICghdGhpcy5zdG9yZS5nZXQoJ2V2ZW50cycsICdjb25uZWN0ZWQnKSkge1xuXHRcdFx0dGhpcy5zdG9yZS5nZXQoJ2V2ZW50cycpLmNvbm5lY3Q/Lih1bnRyYWNrZWQodGhpcy5nbENhbnZhcykubmF0aXZlRWxlbWVudCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5nbEVudmlyb25tZW50SW5qZWN0b3IgPSBjcmVhdGVFbnZpcm9ubWVudEluamVjdG9yKFtwcm92aWRlTmd0UmVuZGVyZXIodGhpcy5zdG9yZSldLCB0aGlzLmVudmlyb25tZW50SW5qZWN0b3IpO1xuXHRcdHRoaXMuZ2xSZWYgPSB1bnRyYWNrZWQodGhpcy5nbENhbnZhc1ZpZXdDb250YWluZXJSZWYpLmNyZWF0ZUNvbXBvbmVudCh1bnRyYWNrZWQodGhpcy5zY2VuZUdyYXBoKSwge1xuXHRcdFx0ZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy5nbEVudmlyb25tZW50SW5qZWN0b3IsXG5cdFx0XHRpbmplY3RvcjogdGhpcy5pbmplY3Rvcixcblx0XHR9KTtcblxuXHRcdHRoaXMuZ2xSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXHR9XG59XG4iXX0=
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { DestroyRef, Directive, effect, inject, input, TemplateRef, untracked, ViewContainerRef, } from '@angular/core';
|
|
2
|
-
import { SPECIAL_INTERNAL_ADD_COMMENT } from '../renderer/constants';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class NgtArgs {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.args = input.required();
|
|
7
|
-
this.vcr = inject(ViewContainerRef);
|
|
8
|
-
this.template = inject(TemplateRef);
|
|
9
|
-
this.injected = false;
|
|
10
|
-
this.injectedArgs = null;
|
|
11
|
-
const commentNode = this.vcr.element.nativeElement;
|
|
12
|
-
if (commentNode[SPECIAL_INTERNAL_ADD_COMMENT]) {
|
|
13
|
-
commentNode[SPECIAL_INTERNAL_ADD_COMMENT]('args');
|
|
14
|
-
delete commentNode[SPECIAL_INTERNAL_ADD_COMMENT];
|
|
15
|
-
}
|
|
16
|
-
effect(() => {
|
|
17
|
-
const value = this.args();
|
|
18
|
-
if (value == null || !Array.isArray(value) || (value.length === 1 && value[0] === null))
|
|
19
|
-
return;
|
|
20
|
-
this.injected = false;
|
|
21
|
-
this.injectedArgs = value;
|
|
22
|
-
untracked(() => {
|
|
23
|
-
this.createView();
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
inject(DestroyRef).onDestroy(() => {
|
|
27
|
-
this.view?.destroy();
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
get value() {
|
|
31
|
-
if (this.validate()) {
|
|
32
|
-
this.injected = true;
|
|
33
|
-
return this.injectedArgs;
|
|
34
|
-
}
|
|
35
|
-
return null;
|
|
36
|
-
}
|
|
37
|
-
validate() {
|
|
38
|
-
return !this.injected && !!this.injectedArgs?.length;
|
|
39
|
-
}
|
|
40
|
-
createView() {
|
|
41
|
-
if (this.view && !this.view.destroyed)
|
|
42
|
-
this.view.destroy();
|
|
43
|
-
this.view = this.vcr.createEmbeddedView(this.template);
|
|
44
|
-
this.view.detectChanges();
|
|
45
|
-
}
|
|
46
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtArgs, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
47
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: NgtArgs, isStandalone: true, selector: "ng-template[args]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
|
|
48
|
-
}
|
|
49
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtArgs, decorators: [{
|
|
50
|
-
type: Directive,
|
|
51
|
-
args: [{ selector: 'ng-template[args]', standalone: true }]
|
|
52
|
-
}], ctorParameters: () => [] });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvYXJncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sVUFBVSxFQUNWLFNBQVMsRUFDVCxNQUFNLEVBRU4sTUFBTSxFQUNOLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULGdCQUFnQixHQUNoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHckUsTUFBTSxPQUFPLE9BQU87SUFVbkI7UUFUQSxTQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBZ0IsQ0FBQztRQUU5QixRQUFHLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDL0IsYUFBUSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU3QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGlCQUFZLEdBQWlCLElBQUksQ0FBQztRQUkzQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDbkQsSUFBSSxXQUFXLENBQUMsNEJBQTRCLENBQUMsRUFBRSxDQUFDO1lBQy9DLFdBQVcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xELE9BQU8sV0FBVyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUVELE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDWCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUIsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUM7Z0JBQUUsT0FBTztZQUNoRyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUMxQixTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNuQixDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDakMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMxQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQsUUFBUTtRQUNQLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQztJQUN0RCxDQUFDO0lBRU8sVUFBVTtRQUNqQixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDOytHQWhEVyxPQUFPO21HQUFQLE9BQU87OzRGQUFQLE9BQU87a0JBRG5CLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdERlc3Ryb3lSZWYsXG5cdERpcmVjdGl2ZSxcblx0ZWZmZWN0LFxuXHRFbWJlZGRlZFZpZXdSZWYsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdFRlbXBsYXRlUmVmLFxuXHR1bnRyYWNrZWQsXG5cdFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVCB9IGZyb20gJy4uL3JlbmRlcmVyL2NvbnN0YW50cyc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ25nLXRlbXBsYXRlW2FyZ3NdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndEFyZ3Mge1xuXHRhcmdzID0gaW5wdXQucmVxdWlyZWQ8YW55W10gfCBudWxsPigpO1xuXG5cdHByaXZhdGUgdmNyID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuXHRwcml2YXRlIHRlbXBsYXRlID0gaW5qZWN0KFRlbXBsYXRlUmVmKTtcblxuXHRwcm90ZWN0ZWQgaW5qZWN0ZWQgPSBmYWxzZTtcblx0cHJvdGVjdGVkIGluamVjdGVkQXJnczogYW55W10gfCBudWxsID0gbnVsbDtcblx0cHJpdmF0ZSB2aWV3PzogRW1iZWRkZWRWaWV3UmVmPHVua25vd24+O1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGNvbnN0IGNvbW1lbnROb2RlID0gdGhpcy52Y3IuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuXHRcdGlmIChjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXSkge1xuXHRcdFx0Y29tbWVudE5vZGVbU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVF0oJ2FyZ3MnKTtcblx0XHRcdGRlbGV0ZSBjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXTtcblx0XHR9XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgdmFsdWUgPSB0aGlzLmFyZ3MoKTtcblx0XHRcdGlmICh2YWx1ZSA9PSBudWxsIHx8ICFBcnJheS5pc0FycmF5KHZhbHVlKSB8fCAodmFsdWUubGVuZ3RoID09PSAxICYmIHZhbHVlWzBdID09PSBudWxsKSkgcmV0dXJuO1xuXHRcdFx0dGhpcy5pbmplY3RlZCA9IGZhbHNlO1xuXHRcdFx0dGhpcy5pbmplY3RlZEFyZ3MgPSB2YWx1ZTtcblx0XHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMuY3JlYXRlVmlldygpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHtcblx0XHRcdHRoaXMudmlldz8uZGVzdHJveSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0Z2V0IHZhbHVlKCkge1xuXHRcdGlmICh0aGlzLnZhbGlkYXRlKCkpIHtcblx0XHRcdHRoaXMuaW5qZWN0ZWQgPSB0cnVlO1xuXHRcdFx0cmV0dXJuIHRoaXMuaW5qZWN0ZWRBcmdzO1xuXHRcdH1cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdHZhbGlkYXRlKCkge1xuXHRcdHJldHVybiAhdGhpcy5pbmplY3RlZCAmJiAhIXRoaXMuaW5qZWN0ZWRBcmdzPy5sZW5ndGg7XG5cdH1cblxuXHRwcml2YXRlIGNyZWF0ZVZpZXcoKSB7XG5cdFx0aWYgKHRoaXMudmlldyAmJiAhdGhpcy52aWV3LmRlc3Ryb3llZCkgdGhpcy52aWV3LmRlc3Ryb3koKTtcblx0XHR0aGlzLnZpZXcgPSB0aGlzLnZjci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZSk7XG5cdFx0dGhpcy52aWV3LmRldGVjdENoYW5nZXMoKTtcblx0fVxufVxuIl19
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { booleanAttribute, Directive, effect, ElementRef, inject, input, signal, untracked } from '@angular/core';
|
|
2
|
-
import { getLocalState } from '../instance';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class NgtSelection {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.enabled = input(true, { alias: 'ngtSelection', transform: booleanAttribute });
|
|
7
|
-
this.source = signal([]);
|
|
8
|
-
this.selected = this.source.asReadonly();
|
|
9
|
-
}
|
|
10
|
-
update(...args) {
|
|
11
|
-
if (!this.enabled())
|
|
12
|
-
return;
|
|
13
|
-
this.source.update(...args);
|
|
14
|
-
}
|
|
15
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
16
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: NgtSelection, isStandalone: true, selector: "[ngtSelection]", inputs: { enabled: { classPropertyName: "enabled", publicName: "ngtSelection", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
17
|
-
}
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtSelection, decorators: [{
|
|
19
|
-
type: Directive,
|
|
20
|
-
args: [{ standalone: true, selector: '[ngtSelection]' }]
|
|
21
|
-
}] });
|
|
22
|
-
export class NgtSelect {
|
|
23
|
-
constructor() {
|
|
24
|
-
this.enabled = input(false, { transform: booleanAttribute, alias: 'ngtSelect' });
|
|
25
|
-
const elementRef = inject(ElementRef);
|
|
26
|
-
const selection = inject(NgtSelection);
|
|
27
|
-
effect((onCleanup) => {
|
|
28
|
-
const selectionEnabled = selection.enabled();
|
|
29
|
-
if (!selectionEnabled)
|
|
30
|
-
return;
|
|
31
|
-
const enabled = this.enabled();
|
|
32
|
-
if (!enabled)
|
|
33
|
-
return;
|
|
34
|
-
const host = elementRef.nativeElement;
|
|
35
|
-
if (!host)
|
|
36
|
-
return;
|
|
37
|
-
const localState = getLocalState(host);
|
|
38
|
-
if (!localState)
|
|
39
|
-
return;
|
|
40
|
-
// ngt-mesh[ngtSelect]
|
|
41
|
-
if (host.type === 'Mesh') {
|
|
42
|
-
selection.update((prev) => [...prev, host]);
|
|
43
|
-
onCleanup(() => selection.update((prev) => prev.filter((el) => el !== host)));
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
const [collection] = [untracked(selection.selected), localState.objects()];
|
|
47
|
-
let changed = false;
|
|
48
|
-
const current = [];
|
|
49
|
-
host.traverse((child) => {
|
|
50
|
-
child.type === 'Mesh' && current.push(child);
|
|
51
|
-
if (collection.indexOf(child) === -1)
|
|
52
|
-
changed = true;
|
|
53
|
-
});
|
|
54
|
-
if (!changed)
|
|
55
|
-
return;
|
|
56
|
-
selection.update((prev) => [...prev, ...current]);
|
|
57
|
-
onCleanup(() => {
|
|
58
|
-
selection.update((prev) => prev.filter((el) => !current.includes(el)));
|
|
59
|
-
});
|
|
60
|
-
}, { allowSignalWrites: true });
|
|
61
|
-
}
|
|
62
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtSelect, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
63
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: NgtSelect, isStandalone: true, selector: "ngt-group[ngtSelect], ngt-mesh[ngtSelect]", inputs: { enabled: { classPropertyName: "enabled", publicName: "ngtSelect", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
64
|
-
}
|
|
65
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtSelect, decorators: [{
|
|
66
|
-
type: Directive,
|
|
67
|
-
args: [{ standalone: true, selector: 'ngt-group[ngtSelect], ngt-mesh[ngtSelect]' }]
|
|
68
|
-
}], ctorParameters: () => [] });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9zZWxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUc1QyxNQUFNLE9BQU8sWUFBWTtJQUR6QjtRQUVDLFlBQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBRXRFLFdBQU0sR0FBRyxNQUFNLENBQXlDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLGFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO0tBTXBDO0lBSkEsTUFBTSxDQUFDLEdBQUcsSUFBMkM7UUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFBRSxPQUFPO1FBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQzsrR0FUVyxZQUFZO21HQUFaLFlBQVk7OzRGQUFaLFlBQVk7a0JBRHhCLFNBQVM7bUJBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRTs7QUFjM0QsTUFBTSxPQUFPLFNBQVM7SUFHckI7UUFGQSxZQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUczRSxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQTJCLFVBQVUsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV2QyxNQUFNLENBQ0wsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNiLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxnQkFBZ0I7Z0JBQUUsT0FBTztZQUU5QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLE9BQU87Z0JBQUUsT0FBTztZQUVyQixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxJQUFJO2dCQUFFLE9BQU87WUFFbEIsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxVQUFVO2dCQUFFLE9BQU87WUFFeEIsc0JBQXNCO1lBQ3RCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDMUIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUM1QyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUUsT0FBTztZQUNSLENBQUM7WUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQzNFLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNwQixNQUFNLE9BQU8sR0FBZSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUN2QixLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUFFLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDdEQsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsT0FBTztnQkFBRSxPQUFPO1lBRXJCLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ2xELFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRixDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUMzQixDQUFDO0lBQ0gsQ0FBQzsrR0E3Q1csU0FBUzttR0FBVCxTQUFTOzs0RkFBVCxTQUFTO2tCQURyQixTQUFTO21CQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsMkNBQTJDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBEaXJlY3RpdmUsIGVmZmVjdCwgRWxlbWVudFJlZiwgaW5qZWN0LCBpbnB1dCwgc2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdyb3VwLCBNZXNoLCBPYmplY3QzRCB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IGdldExvY2FsU3RhdGUgfSBmcm9tICcuLi9pbnN0YW5jZSc7XG5cbkBEaXJlY3RpdmUoeyBzdGFuZGFsb25lOiB0cnVlLCBzZWxlY3RvcjogJ1tuZ3RTZWxlY3Rpb25dJyB9KVxuZXhwb3J0IGNsYXNzIE5ndFNlbGVjdGlvbiB7XG5cdGVuYWJsZWQgPSBpbnB1dCh0cnVlLCB7IGFsaWFzOiAnbmd0U2VsZWN0aW9uJywgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG5cdHByaXZhdGUgc291cmNlID0gc2lnbmFsPEFycmF5PEVsZW1lbnRSZWY8T2JqZWN0M0Q+IHwgT2JqZWN0M0Q+PihbXSk7XG5cdHNlbGVjdGVkID0gdGhpcy5zb3VyY2UuYXNSZWFkb25seSgpO1xuXG5cdHVwZGF0ZSguLi5hcmdzOiBQYXJhbWV0ZXJzPHR5cGVvZiB0aGlzLnNvdXJjZS51cGRhdGU+KSB7XG5cdFx0aWYgKCF0aGlzLmVuYWJsZWQoKSkgcmV0dXJuO1xuXHRcdHRoaXMuc291cmNlLnVwZGF0ZSguLi5hcmdzKTtcblx0fVxufVxuXG5ARGlyZWN0aXZlKHsgc3RhbmRhbG9uZTogdHJ1ZSwgc2VsZWN0b3I6ICduZ3QtZ3JvdXBbbmd0U2VsZWN0XSwgbmd0LW1lc2hbbmd0U2VsZWN0XScgfSlcbmV4cG9ydCBjbGFzcyBOZ3RTZWxlY3Qge1xuXHRlbmFibGVkID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLCBhbGlhczogJ25ndFNlbGVjdCcgfSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0Y29uc3QgZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEdyb3VwIHwgTWVzaD4+KEVsZW1lbnRSZWYpO1xuXHRcdGNvbnN0IHNlbGVjdGlvbiA9IGluamVjdChOZ3RTZWxlY3Rpb24pO1xuXG5cdFx0ZWZmZWN0KFxuXHRcdFx0KG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0XHRjb25zdCBzZWxlY3Rpb25FbmFibGVkID0gc2VsZWN0aW9uLmVuYWJsZWQoKTtcblx0XHRcdFx0aWYgKCFzZWxlY3Rpb25FbmFibGVkKSByZXR1cm47XG5cblx0XHRcdFx0Y29uc3QgZW5hYmxlZCA9IHRoaXMuZW5hYmxlZCgpO1xuXHRcdFx0XHRpZiAoIWVuYWJsZWQpIHJldHVybjtcblxuXHRcdFx0XHRjb25zdCBob3N0ID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXHRcdFx0XHRpZiAoIWhvc3QpIHJldHVybjtcblxuXHRcdFx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShob3N0KTtcblx0XHRcdFx0aWYgKCFsb2NhbFN0YXRlKSByZXR1cm47XG5cblx0XHRcdFx0Ly8gbmd0LW1lc2hbbmd0U2VsZWN0XVxuXHRcdFx0XHRpZiAoaG9zdC50eXBlID09PSAnTWVzaCcpIHtcblx0XHRcdFx0XHRzZWxlY3Rpb24udXBkYXRlKChwcmV2KSA9PiBbLi4ucHJldiwgaG9zdF0pO1xuXHRcdFx0XHRcdG9uQ2xlYW51cCgoKSA9PiBzZWxlY3Rpb24udXBkYXRlKChwcmV2KSA9PiBwcmV2LmZpbHRlcigoZWwpID0+IGVsICE9PSBob3N0KSkpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IFtjb2xsZWN0aW9uXSA9IFt1bnRyYWNrZWQoc2VsZWN0aW9uLnNlbGVjdGVkKSwgbG9jYWxTdGF0ZS5vYmplY3RzKCldO1xuXHRcdFx0XHRsZXQgY2hhbmdlZCA9IGZhbHNlO1xuXHRcdFx0XHRjb25zdCBjdXJyZW50OiBPYmplY3QzRFtdID0gW107XG5cdFx0XHRcdGhvc3QudHJhdmVyc2UoKGNoaWxkKSA9PiB7XG5cdFx0XHRcdFx0Y2hpbGQudHlwZSA9PT0gJ01lc2gnICYmIGN1cnJlbnQucHVzaChjaGlsZCk7XG5cdFx0XHRcdFx0aWYgKGNvbGxlY3Rpb24uaW5kZXhPZihjaGlsZCkgPT09IC0xKSBjaGFuZ2VkID0gdHJ1ZTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0aWYgKCFjaGFuZ2VkKSByZXR1cm47XG5cblx0XHRcdFx0c2VsZWN0aW9uLnVwZGF0ZSgocHJldikgPT4gWy4uLnByZXYsIC4uLmN1cnJlbnRdKTtcblx0XHRcdFx0b25DbGVhbnVwKCgpID0+IHtcblx0XHRcdFx0XHRzZWxlY3Rpb24udXBkYXRlKChwcmV2KSA9PiBwcmV2LmZpbHRlcigoZWwpID0+ICFjdXJyZW50LmluY2x1ZGVzKGVsIGFzIE9iamVjdDNEKSkpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG5cdFx0KTtcblx0fVxufVxuIl19
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { createEvents } from '../events';
|
|
2
|
-
const DOM_EVENTS = {
|
|
3
|
-
click: false,
|
|
4
|
-
contextmenu: false,
|
|
5
|
-
dblclick: false,
|
|
6
|
-
wheel: false, // passive wheel errors with OrbitControls
|
|
7
|
-
pointerdown: true,
|
|
8
|
-
pointerup: true,
|
|
9
|
-
pointerleave: true,
|
|
10
|
-
pointermove: true,
|
|
11
|
-
pointercancel: true,
|
|
12
|
-
lostpointercapture: true,
|
|
13
|
-
};
|
|
14
|
-
export const supportedEvents = [
|
|
15
|
-
'click',
|
|
16
|
-
'contextmenu',
|
|
17
|
-
'dblclick',
|
|
18
|
-
'pointerup',
|
|
19
|
-
'pointerdown',
|
|
20
|
-
'pointerover',
|
|
21
|
-
'pointerout',
|
|
22
|
-
'pointerenter',
|
|
23
|
-
'pointerleave',
|
|
24
|
-
'pointermove',
|
|
25
|
-
'pointermissed',
|
|
26
|
-
'pointercancel',
|
|
27
|
-
'wheel',
|
|
28
|
-
];
|
|
29
|
-
export function createPointerEvents(store) {
|
|
30
|
-
const { handlePointer } = createEvents(store);
|
|
31
|
-
return {
|
|
32
|
-
priority: 1,
|
|
33
|
-
enabled: true,
|
|
34
|
-
compute: (event, root) => {
|
|
35
|
-
const state = root.get();
|
|
36
|
-
// https://github.com/pmndrs/react-three-fiber/pull/782
|
|
37
|
-
// Events trigger outside of canvas when moved, use offsetX/Y by default and allow overrides
|
|
38
|
-
state.pointer.set((event.offsetX / state.size.width) * 2 - 1, -(event.offsetY / state.size.height) * 2 + 1);
|
|
39
|
-
state.raycaster.setFromCamera(state.pointer, state.camera);
|
|
40
|
-
},
|
|
41
|
-
connected: undefined,
|
|
42
|
-
handlers: Object.keys(DOM_EVENTS).reduce((handlers, supportedEventName) => {
|
|
43
|
-
handlers[supportedEventName] = handlePointer(supportedEventName);
|
|
44
|
-
return handlers;
|
|
45
|
-
}, {}),
|
|
46
|
-
update: () => {
|
|
47
|
-
const { events, internal } = store.get();
|
|
48
|
-
if (internal.lastEvent?.nativeElement && events.handlers)
|
|
49
|
-
events.handlers.pointermove(internal.lastEvent.nativeElement);
|
|
50
|
-
},
|
|
51
|
-
connect: (target) => {
|
|
52
|
-
const state = store.get();
|
|
53
|
-
state.events.disconnect?.();
|
|
54
|
-
state.setEvents({ connected: target });
|
|
55
|
-
Object.entries(state.events.handlers ?? {}).forEach(([eventName, eventHandler]) => {
|
|
56
|
-
const passive = DOM_EVENTS[eventName];
|
|
57
|
-
target.addEventListener(eventName, eventHandler, { passive });
|
|
58
|
-
});
|
|
59
|
-
},
|
|
60
|
-
disconnect: () => {
|
|
61
|
-
const { events, setEvents } = store.get();
|
|
62
|
-
if (events.connected) {
|
|
63
|
-
Object.entries(events.handlers ?? {}).forEach(([eventName, eventHandler]) => {
|
|
64
|
-
if (events.connected instanceof HTMLElement) {
|
|
65
|
-
events.connected.removeEventListener(eventName, eventHandler);
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
setEvents({ connected: undefined });
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZG9tL2V2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSXpDLE1BQU0sVUFBVSxHQUFHO0lBQ2xCLEtBQUssRUFBRSxLQUFLO0lBQ1osV0FBVyxFQUFFLEtBQUs7SUFDbEIsUUFBUSxFQUFFLEtBQUs7SUFDZixLQUFLLEVBQUUsS0FBSyxFQUFFLDBDQUEwQztJQUN4RCxXQUFXLEVBQUUsSUFBSTtJQUNqQixTQUFTLEVBQUUsSUFBSTtJQUNmLFlBQVksRUFBRSxJQUFJO0lBQ2xCLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLGFBQWEsRUFBRSxJQUFJO0lBQ25CLGtCQUFrQixFQUFFLElBQUk7Q0FDZixDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzlCLE9BQU87SUFDUCxhQUFhO0lBQ2IsVUFBVTtJQUNWLFdBQVc7SUFDWCxhQUFhO0lBQ2IsYUFBYTtJQUNiLFlBQVk7SUFDWixjQUFjO0lBQ2QsY0FBYztJQUNkLGFBQWE7SUFDYixlQUFlO0lBQ2YsZUFBZTtJQUNmLE9BQU87Q0FDRSxDQUFDO0FBRVgsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEtBQStCO0lBQ2xFLE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFOUMsT0FBTztRQUNOLFFBQVEsRUFBRSxDQUFDO1FBQ1gsT0FBTyxFQUFFLElBQUk7UUFDYixPQUFPLEVBQUUsQ0FBQyxLQUFrQixFQUFFLElBQThCLEVBQUUsRUFBRTtZQUMvRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDekIsdURBQXVEO1lBQ3ZELDRGQUE0RjtZQUM1RixLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzVHLEtBQUssQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFDRCxTQUFTLEVBQUUsU0FBUztRQUNwQixRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFzQixFQUFFLGtCQUFrQixFQUFFLEVBQUU7WUFDdkYsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDakUsT0FBTyxRQUFRLENBQUM7UUFDakIsQ0FBQyxFQUFFLEVBQUUsQ0FBYztRQUNuQixNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQ1osTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDekMsSUFBSSxRQUFRLENBQUMsU0FBUyxFQUFFLGFBQWEsSUFBSSxNQUFNLENBQUMsUUFBUTtnQkFDdkQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsTUFBbUIsRUFBRSxFQUFFO1lBQ2hDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMxQixLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFFNUIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBRXZDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUEwQixFQUFFLEVBQUU7Z0JBQzFHLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxTQUFvQyxDQUFDLENBQUM7Z0JBQ2pFLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUMvRCxDQUFDLENBQUMsQ0FBQztRQUNKLENBQUM7UUFDRCxVQUFVLEVBQUUsR0FBRyxFQUFFO1lBQ2hCLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzFDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN0QixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUEwQixFQUFFLEVBQUU7b0JBQ3BHLElBQUksTUFBTSxDQUFDLFNBQVMsWUFBWSxXQUFXLEVBQUUsQ0FBQzt3QkFDN0MsTUFBTSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7b0JBQy9ELENBQUM7Z0JBQ0YsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsU0FBUyxDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDckMsQ0FBQztRQUNGLENBQUM7S0FDRCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUV2ZW50cyB9IGZyb20gJy4uL2V2ZW50cyc7XG5pbXBvcnQgeyBOZ3RBbnlSZWNvcmQsIE5ndERvbUV2ZW50LCBOZ3RFdmVudE1hbmFnZXIsIE5ndEV2ZW50cywgTmd0U3RhdGUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBOZ3RTaWduYWxTdG9yZSB9IGZyb20gJy4uL3V0aWxzL3NpZ25hbC1zdG9yZSc7XG5cbmNvbnN0IERPTV9FVkVOVFMgPSB7XG5cdGNsaWNrOiBmYWxzZSxcblx0Y29udGV4dG1lbnU6IGZhbHNlLFxuXHRkYmxjbGljazogZmFsc2UsXG5cdHdoZWVsOiBmYWxzZSwgLy8gcGFzc2l2ZSB3aGVlbCBlcnJvcnMgd2l0aCBPcmJpdENvbnRyb2xzXG5cdHBvaW50ZXJkb3duOiB0cnVlLFxuXHRwb2ludGVydXA6IHRydWUsXG5cdHBvaW50ZXJsZWF2ZTogdHJ1ZSxcblx0cG9pbnRlcm1vdmU6IHRydWUsXG5cdHBvaW50ZXJjYW5jZWw6IHRydWUsXG5cdGxvc3Rwb2ludGVyY2FwdHVyZTogdHJ1ZSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBzdXBwb3J0ZWRFdmVudHMgPSBbXG5cdCdjbGljaycsXG5cdCdjb250ZXh0bWVudScsXG5cdCdkYmxjbGljaycsXG5cdCdwb2ludGVydXAnLFxuXHQncG9pbnRlcmRvd24nLFxuXHQncG9pbnRlcm92ZXInLFxuXHQncG9pbnRlcm91dCcsXG5cdCdwb2ludGVyZW50ZXInLFxuXHQncG9pbnRlcmxlYXZlJyxcblx0J3BvaW50ZXJtb3ZlJyxcblx0J3BvaW50ZXJtaXNzZWQnLFxuXHQncG9pbnRlcmNhbmNlbCcsXG5cdCd3aGVlbCcsXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUG9pbnRlckV2ZW50cyhzdG9yZTogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+KTogTmd0RXZlbnRNYW5hZ2VyPEhUTUxFbGVtZW50PiB7XG5cdGNvbnN0IHsgaGFuZGxlUG9pbnRlciB9ID0gY3JlYXRlRXZlbnRzKHN0b3JlKTtcblxuXHRyZXR1cm4ge1xuXHRcdHByaW9yaXR5OiAxLFxuXHRcdGVuYWJsZWQ6IHRydWUsXG5cdFx0Y29tcHV0ZTogKGV2ZW50OiBOZ3REb21FdmVudCwgcm9vdDogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+KSA9PiB7XG5cdFx0XHRjb25zdCBzdGF0ZSA9IHJvb3QuZ2V0KCk7XG5cdFx0XHQvLyBodHRwczovL2dpdGh1Yi5jb20vcG1uZHJzL3JlYWN0LXRocmVlLWZpYmVyL3B1bGwvNzgyXG5cdFx0XHQvLyBFdmVudHMgdHJpZ2dlciBvdXRzaWRlIG9mIGNhbnZhcyB3aGVuIG1vdmVkLCB1c2Ugb2Zmc2V0WC9ZIGJ5IGRlZmF1bHQgYW5kIGFsbG93IG92ZXJyaWRlc1xuXHRcdFx0c3RhdGUucG9pbnRlci5zZXQoKGV2ZW50Lm9mZnNldFggLyBzdGF0ZS5zaXplLndpZHRoKSAqIDIgLSAxLCAtKGV2ZW50Lm9mZnNldFkgLyBzdGF0ZS5zaXplLmhlaWdodCkgKiAyICsgMSk7XG5cdFx0XHRzdGF0ZS5yYXljYXN0ZXIuc2V0RnJvbUNhbWVyYShzdGF0ZS5wb2ludGVyLCBzdGF0ZS5jYW1lcmEpO1xuXHRcdH0sXG5cdFx0Y29ubmVjdGVkOiB1bmRlZmluZWQsXG5cdFx0aGFuZGxlcnM6IE9iamVjdC5rZXlzKERPTV9FVkVOVFMpLnJlZHVjZSgoaGFuZGxlcnM6IE5ndEFueVJlY29yZCwgc3VwcG9ydGVkRXZlbnROYW1lKSA9PiB7XG5cdFx0XHRoYW5kbGVyc1tzdXBwb3J0ZWRFdmVudE5hbWVdID0gaGFuZGxlUG9pbnRlcihzdXBwb3J0ZWRFdmVudE5hbWUpO1xuXHRcdFx0cmV0dXJuIGhhbmRsZXJzO1xuXHRcdH0sIHt9KSBhcyBOZ3RFdmVudHMsXG5cdFx0dXBkYXRlOiAoKSA9PiB7XG5cdFx0XHRjb25zdCB7IGV2ZW50cywgaW50ZXJuYWwgfSA9IHN0b3JlLmdldCgpO1xuXHRcdFx0aWYgKGludGVybmFsLmxhc3RFdmVudD8ubmF0aXZlRWxlbWVudCAmJiBldmVudHMuaGFuZGxlcnMpXG5cdFx0XHRcdGV2ZW50cy5oYW5kbGVycy5wb2ludGVybW92ZShpbnRlcm5hbC5sYXN0RXZlbnQubmF0aXZlRWxlbWVudCk7XG5cdFx0fSxcblx0XHRjb25uZWN0OiAodGFyZ2V0OiBIVE1MRWxlbWVudCkgPT4ge1xuXHRcdFx0Y29uc3Qgc3RhdGUgPSBzdG9yZS5nZXQoKTtcblx0XHRcdHN0YXRlLmV2ZW50cy5kaXNjb25uZWN0Py4oKTtcblxuXHRcdFx0c3RhdGUuc2V0RXZlbnRzKHsgY29ubmVjdGVkOiB0YXJnZXQgfSk7XG5cblx0XHRcdE9iamVjdC5lbnRyaWVzKHN0YXRlLmV2ZW50cy5oYW5kbGVycyA/PyB7fSkuZm9yRWFjaCgoW2V2ZW50TmFtZSwgZXZlbnRIYW5kbGVyXTogW3N0cmluZywgRXZlbnRMaXN0ZW5lcl0pID0+IHtcblx0XHRcdFx0Y29uc3QgcGFzc2l2ZSA9IERPTV9FVkVOVFNbZXZlbnROYW1lIGFzIGtleW9mIHR5cGVvZiBET01fRVZFTlRTXTtcblx0XHRcdFx0dGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBldmVudEhhbmRsZXIsIHsgcGFzc2l2ZSB9KTtcblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0ZGlzY29ubmVjdDogKCkgPT4ge1xuXHRcdFx0Y29uc3QgeyBldmVudHMsIHNldEV2ZW50cyB9ID0gc3RvcmUuZ2V0KCk7XG5cdFx0XHRpZiAoZXZlbnRzLmNvbm5lY3RlZCkge1xuXHRcdFx0XHRPYmplY3QuZW50cmllcyhldmVudHMuaGFuZGxlcnMgPz8ge30pLmZvckVhY2goKFtldmVudE5hbWUsIGV2ZW50SGFuZGxlcl06IFtzdHJpbmcsIEV2ZW50TGlzdGVuZXJdKSA9PiB7XG5cdFx0XHRcdFx0aWYgKGV2ZW50cy5jb25uZWN0ZWQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuXHRcdFx0XHRcdFx0ZXZlbnRzLmNvbm5lY3RlZC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZXZlbnRIYW5kbGVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdHNldEV2ZW50cyh7IGNvbm5lY3RlZDogdW5kZWZpbmVkIH0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdH07XG59XG4iXX0=
|