angular-three 1.9.15 → 1.10.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/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 -18
- 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 +17 -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
package/esm2020/lib/canvas.mjs
DELETED
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectorRef, Component, createEnvironmentInjector, ElementRef, EnvironmentInjector, EventEmitter, HostBinding, inject, Input, Output, Type, ViewChild, ViewContainerRef, } from '@angular/core';
|
|
2
|
-
import { NgxResize, provideNgxResizeOptions } from 'ngx-resize';
|
|
3
|
-
import { filter } from 'rxjs';
|
|
4
|
-
import { injectNgtLoader } from './loader';
|
|
5
|
-
import { provideNgtRenderer } from './renderer/provider';
|
|
6
|
-
import { NgtRxStore } from './stores/rx-store';
|
|
7
|
-
import { NgtStore, rootStateMap } from './stores/store';
|
|
8
|
-
import { is } from './utils/is';
|
|
9
|
-
import { safeDetectChanges } from './utils/safe-detect-changes';
|
|
10
|
-
import { createPointerEvents } from './web/events';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
export class NgtCanvas extends NgtRxStore {
|
|
13
|
-
constructor() {
|
|
14
|
-
super(...arguments);
|
|
15
|
-
this.cdr = inject(ChangeDetectorRef);
|
|
16
|
-
this.envInjector = inject(EnvironmentInjector);
|
|
17
|
-
this.host = inject(ElementRef);
|
|
18
|
-
this.store = inject(NgtStore);
|
|
19
|
-
this.hbClass = true;
|
|
20
|
-
this.sceneGraphInputs = {};
|
|
21
|
-
this.compoundPrefixes = [];
|
|
22
|
-
this.created = new EventEmitter();
|
|
23
|
-
this.pointerMissed = new EventEmitter();
|
|
24
|
-
}
|
|
25
|
-
initialize() {
|
|
26
|
-
super.initialize();
|
|
27
|
-
this.set({
|
|
28
|
-
shadows: false,
|
|
29
|
-
linear: false,
|
|
30
|
-
flat: false,
|
|
31
|
-
legacy: false,
|
|
32
|
-
orthographic: false,
|
|
33
|
-
frameloop: 'always',
|
|
34
|
-
dpr: [1, 2],
|
|
35
|
-
events: createPointerEvents,
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
get hbPointerEvents() {
|
|
39
|
-
return this.get('eventSource') !== this.host.nativeElement ? 'none' : 'auto';
|
|
40
|
-
}
|
|
41
|
-
set linear(linear) {
|
|
42
|
-
this.set({ linear });
|
|
43
|
-
}
|
|
44
|
-
set legacy(legacy) {
|
|
45
|
-
this.set({ legacy });
|
|
46
|
-
}
|
|
47
|
-
set flat(flat) {
|
|
48
|
-
this.set({ flat });
|
|
49
|
-
}
|
|
50
|
-
set orthographic(orthographic) {
|
|
51
|
-
this.set({ orthographic });
|
|
52
|
-
}
|
|
53
|
-
set frameloop(frameloop) {
|
|
54
|
-
this.set({ frameloop });
|
|
55
|
-
}
|
|
56
|
-
set dpr(dpr) {
|
|
57
|
-
this.set({ dpr });
|
|
58
|
-
}
|
|
59
|
-
set raycaster(raycaster) {
|
|
60
|
-
this.set({ raycaster });
|
|
61
|
-
}
|
|
62
|
-
set shadows(shadows) {
|
|
63
|
-
this.set({
|
|
64
|
-
shadows: typeof shadows === 'object' ? shadows : shadows,
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
set camera(camera) {
|
|
68
|
-
this.set({ camera });
|
|
69
|
-
}
|
|
70
|
-
set gl(gl) {
|
|
71
|
-
this.set({ gl });
|
|
72
|
-
}
|
|
73
|
-
set eventSource(eventSource) {
|
|
74
|
-
this.set({ eventSource });
|
|
75
|
-
}
|
|
76
|
-
set eventPrefix(eventPrefix) {
|
|
77
|
-
this.set({ eventPrefix });
|
|
78
|
-
}
|
|
79
|
-
set lookAt(lookAt) {
|
|
80
|
-
this.set({ lookAt });
|
|
81
|
-
}
|
|
82
|
-
set performance(performance) {
|
|
83
|
-
this.set({ performance });
|
|
84
|
-
}
|
|
85
|
-
ngOnChanges(changes) {
|
|
86
|
-
if (changes['sceneGraphInputs'] && this.glRef) {
|
|
87
|
-
this.setSceneGraphInputs();
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
ngOnInit() {
|
|
91
|
-
if (!this.get('eventSource')) {
|
|
92
|
-
// set default event source to the host element
|
|
93
|
-
this.eventSource = this.host.nativeElement;
|
|
94
|
-
}
|
|
95
|
-
if (this.pointerMissed.observed) {
|
|
96
|
-
this.store.set({
|
|
97
|
-
onPointerMissed: (event) => {
|
|
98
|
-
this.pointerMissed.emit(event);
|
|
99
|
-
safeDetectChanges(this.cdr);
|
|
100
|
-
},
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
// setup NgtStore
|
|
104
|
-
this.store.init();
|
|
105
|
-
// set rootStateMap
|
|
106
|
-
rootStateMap.set(this.glCanvas.nativeElement, this.store);
|
|
107
|
-
// subscribe to store to listen for ready state
|
|
108
|
-
this.hold(this.store.select('ready').pipe(filter((ready) => ready)), () => this.storeReady());
|
|
109
|
-
}
|
|
110
|
-
onResize({ width, height }) {
|
|
111
|
-
if (width > 0 && height > 0) {
|
|
112
|
-
if (!this.store.isInit)
|
|
113
|
-
this.store.init();
|
|
114
|
-
this.store.configure(this.get(), this.glCanvas.nativeElement);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
storeReady() {
|
|
118
|
-
// canvas is ready, let's activate the loop
|
|
119
|
-
this.store.set((state) => ({ internal: { ...state.internal, active: true } }));
|
|
120
|
-
const inputs = this.get();
|
|
121
|
-
const state = this.store.get();
|
|
122
|
-
// connect to event source
|
|
123
|
-
state.events.connect?.(is.ref(inputs.eventSource) ? inputs.eventSource.nativeElement : inputs.eventSource);
|
|
124
|
-
// setup compute function for events
|
|
125
|
-
if (inputs.eventPrefix) {
|
|
126
|
-
state.setEvents({
|
|
127
|
-
compute: (event, store) => {
|
|
128
|
-
const innerState = store.get();
|
|
129
|
-
const x = event[(inputs.eventPrefix + 'X')];
|
|
130
|
-
const y = event[(inputs.eventPrefix + 'Y')];
|
|
131
|
-
innerState.pointer.set((x / innerState.size.width) * 2 - 1, -(y / innerState.size.height) * 2 + 1);
|
|
132
|
-
innerState.raycaster.setFromCamera(innerState.pointer, innerState.camera);
|
|
133
|
-
},
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
// emit created event if observed
|
|
137
|
-
if (this.created.observed)
|
|
138
|
-
this.created.emit(this.store.get());
|
|
139
|
-
// render
|
|
140
|
-
if (this.glRef)
|
|
141
|
-
this.glRef.destroy();
|
|
142
|
-
requestAnimationFrame(() => {
|
|
143
|
-
const { store, cdr: changeDetectorRef, compoundPrefixes } = this;
|
|
144
|
-
this.glEnvInjector = createEnvironmentInjector([provideNgtRenderer({ store, changeDetectorRef, compoundPrefixes })], this.envInjector);
|
|
145
|
-
this.glRef = this.glAnchor.createComponent(this.sceneGraph, { environmentInjector: this.glEnvInjector });
|
|
146
|
-
// detach the Scene graph from Change Detection mechanism
|
|
147
|
-
// everything from this point forward will trigger CD manually with detectChanges
|
|
148
|
-
this.glRef.changeDetectorRef.detach();
|
|
149
|
-
this.setSceneGraphInputs();
|
|
150
|
-
// here, we override the detectChanges to also call detectChanges on the ComponentRef
|
|
151
|
-
this.overrideDetectChanges();
|
|
152
|
-
this.cdr.detectChanges();
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
ngOnDestroy() {
|
|
156
|
-
if (this.glRef)
|
|
157
|
-
this.glRef.destroy();
|
|
158
|
-
if (this.glEnvInjector)
|
|
159
|
-
this.glEnvInjector.destroy();
|
|
160
|
-
injectNgtLoader.destroy();
|
|
161
|
-
this.store.destroy(this.glCanvas.nativeElement);
|
|
162
|
-
super.ngOnDestroy();
|
|
163
|
-
}
|
|
164
|
-
overrideDetectChanges() {
|
|
165
|
-
const originalDetectChanges = this.cdr.detectChanges.bind(this.cdr);
|
|
166
|
-
this.cdr.detectChanges = () => {
|
|
167
|
-
originalDetectChanges();
|
|
168
|
-
safeDetectChanges(this.glRef?.changeDetectorRef);
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
setSceneGraphInputs() {
|
|
172
|
-
for (const key of Object.keys(this.sceneGraphInputs)) {
|
|
173
|
-
this.glRef.setInput(key, this.sceneGraphInputs[key]);
|
|
174
|
-
}
|
|
175
|
-
safeDetectChanges(this.cdr);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
NgtCanvas.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtCanvas, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
179
|
-
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: `
|
|
180
|
-
<div (ngxResize)="onResize($event)" style="height: 100%; width: 100%;">
|
|
181
|
-
<canvas #glCanvas style="display: block;"></canvas>
|
|
182
|
-
</div>
|
|
183
|
-
`, 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"] }] });
|
|
184
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtCanvas, decorators: [{
|
|
185
|
-
type: Component,
|
|
186
|
-
args: [{ selector: 'ngt-canvas', standalone: true, template: `
|
|
187
|
-
<div (ngxResize)="onResize($event)" style="height: 100%; width: 100%;">
|
|
188
|
-
<canvas #glCanvas style="display: block;"></canvas>
|
|
189
|
-
</div>
|
|
190
|
-
`, imports: [NgxResize], providers: [NgtStore, provideNgxResizeOptions({ emitInZone: false })], styles: [":host{display:block;position:relative;width:100%;height:100%;overflow:hidden}\n"] }]
|
|
191
|
-
}], propDecorators: { hbClass: [{
|
|
192
|
-
type: HostBinding,
|
|
193
|
-
args: ['class.ngt-canvas']
|
|
194
|
-
}], hbPointerEvents: [{
|
|
195
|
-
type: HostBinding,
|
|
196
|
-
args: ['style.pointerEvents']
|
|
197
|
-
}], sceneGraph: [{
|
|
198
|
-
type: Input
|
|
199
|
-
}], sceneGraphInputs: [{
|
|
200
|
-
type: Input
|
|
201
|
-
}], compoundPrefixes: [{
|
|
202
|
-
type: Input
|
|
203
|
-
}], linear: [{
|
|
204
|
-
type: Input
|
|
205
|
-
}], legacy: [{
|
|
206
|
-
type: Input
|
|
207
|
-
}], flat: [{
|
|
208
|
-
type: Input
|
|
209
|
-
}], orthographic: [{
|
|
210
|
-
type: Input
|
|
211
|
-
}], frameloop: [{
|
|
212
|
-
type: Input
|
|
213
|
-
}], dpr: [{
|
|
214
|
-
type: Input
|
|
215
|
-
}], raycaster: [{
|
|
216
|
-
type: Input
|
|
217
|
-
}], shadows: [{
|
|
218
|
-
type: Input
|
|
219
|
-
}], camera: [{
|
|
220
|
-
type: Input
|
|
221
|
-
}], gl: [{
|
|
222
|
-
type: Input
|
|
223
|
-
}], eventSource: [{
|
|
224
|
-
type: Input
|
|
225
|
-
}], eventPrefix: [{
|
|
226
|
-
type: Input
|
|
227
|
-
}], lookAt: [{
|
|
228
|
-
type: Input
|
|
229
|
-
}], performance: [{
|
|
230
|
-
type: Input
|
|
231
|
-
}], created: [{
|
|
232
|
-
type: Output
|
|
233
|
-
}], pointerMissed: [{
|
|
234
|
-
type: Output
|
|
235
|
-
}], glCanvas: [{
|
|
236
|
-
type: ViewChild,
|
|
237
|
-
args: ['glCanvas', { static: true }]
|
|
238
|
-
}], glAnchor: [{
|
|
239
|
-
type: ViewChild,
|
|
240
|
-
args: ['glCanvas', { static: true, read: ViewContainerRef }]
|
|
241
|
-
}] } });
|
|
242
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvY2FudmFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUVULHlCQUF5QixFQUN6QixVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBRU4sSUFBSSxFQUNKLFNBQVMsRUFDVCxnQkFBZ0IsR0FDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBbUIsdUJBQXVCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQXdCbkQsTUFBTSxPQUFPLFNBQVUsU0FBUSxVQUEyQjtJQXRCMUQ7O1FBdUJxQixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMxQyxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBNEIsQ0FBQztRQUNyRCxVQUFLLEdB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QUFsQixLQUFLO2dCQUlPLEVBQUU7c0JBQWQsS0FBSztnQkFJTyxXQUFXO3NCQUF2QixLQUFLO2dCQUlPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBSU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxXQUFXO3NCQUF2QixLQUFLO2dCQUlJLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFFa0MsUUFBUTtzQkFBaEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUMwQixRQUFRO3NCQUF4RSxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIGNyZWF0ZUVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgRWxlbWVudFJlZixcbiAgICBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVHlwZSxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hSZXNpemUsIE5neFJlc2l6ZVJlc3VsdCwgcHJvdmlkZU5neFJlc2l6ZU9wdGlvbnMgfSBmcm9tICduZ3gtcmVzaXplJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0TG9hZGVyIH0gZnJvbSAnLi9sb2FkZXInO1xuaW1wb3J0IHsgcHJvdmlkZU5ndFJlbmRlcmVyIH0gZnJvbSAnLi9yZW5kZXJlci9wcm92aWRlcic7XG5pbXBvcnQgeyBOZ3RSeFN0b3JlIH0gZnJvbSAnLi9zdG9yZXMvcngtc3RvcmUnO1xuaW1wb3J0IHsgTmd0U3RvcmUsIHJvb3RTdGF0ZU1hcCB9IGZyb20gJy4vc3RvcmVzL3N0b3JlJztcbmltcG9ydCB0eXBlIHsgTmd0QW55UmVjb3JkLCBOZ3RDYW52YXNJbnB1dHMsIE5ndERvbUV2ZW50LCBOZ3REcHIsIE5ndFN0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4vdXRpbHMvaXMnO1xuaW1wb3J0IHsgc2FmZURldGVjdENoYW5nZXMgfSBmcm9tICcuL3V0aWxzL3NhZmUtZGV0ZWN0LWNoYW5nZXMnO1xuaW1wb3J0IHsgY3JlYXRlUG9pbnRlckV2ZW50cyB9IGZyb20gJy4vd2ViL2V2ZW50cyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0LWNhbnZhcycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IChuZ3hSZXNpemUpPVwib25SZXNpemUoJGV2ZW50KVwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJTtcIj5cbiAgICAgICAgICAgIDxjYW52YXMgI2dsQ2FudmFzIHN0eWxlPVwiZGlzcGxheTogYmxvY2s7XCI+PC9jYW52YXM+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgaW1wb3J0czogW05neFJlc2l6ZV0sXG4gICAgcHJvdmlkZXJzOiBbTmd0U3RvcmUsIHByb3ZpZGVOZ3hSZXNpemVPcHRpb25zKHsgZW1pdEluWm9uZTogZmFsc2UgfSldLFxuICAgIHN0eWxlczogW1xuICAgICAgICBgXG4gICAgICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgfVxuICAgICAgICBgLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndENhbnZhcyBleHRlbmRzIE5ndFJ4U3RvcmU8Tmd0Q2FudmFzSW5wdXRzPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVudkluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaG9zdCA9IGluamVjdChFbGVtZW50UmVmKSBhcyBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlID0gaW5qZWN0KE5ndFN0b3JlKTtcblxuICAgIG92ZXJyaWRlIGluaXRpYWxpemUoKSB7XG4gICAgICAgIHN1cGVyLmluaXRpYWxpemUoKTtcbiAgICAgICAgdGhpcy5zZXQoe1xuICAgICAgICAgICAgc2hhZG93czogZmFsc2UsXG4gICAgICAgICAgICBsaW5lYXI6IGZhbHNlLFxuICAgICAgICAgICAgZmxhdDogZmFsc2UsXG4gICAgICAgICAgICBsZWdhY3k6IGZhbHNlLFxuICAgICAgICAgICAgb3J0aG9ncmFwaGljOiBmYWxzZSxcbiAgICAgICAgICAgIGZyYW1lbG9vcDogJ2Fsd2F5cycsXG4gICAgICAgICAgICBkcHI6IFsxLCAyXSxcbiAgICAgICAgICAgIGV2ZW50czogY3JlYXRlUG9pbnRlckV2ZW50cyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5uZ3QtY2FudmFzJykgcmVhZG9ubHkgaGJDbGFzcyA9IHRydWU7XG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5wb2ludGVyRXZlbnRzJykgZ2V0IGhiUG9pbnRlckV2ZW50cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdldmVudFNvdXJjZScpICE9PSB0aGlzLmhvc3QubmF0aXZlRWxlbWVudCA/ICdub25lJyA6ICdhdXRvJztcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzY2VuZUdyYXBoITogVHlwZTxhbnk+O1xuICAgIEBJbnB1dCgpIHNjZW5lR3JhcGhJbnB1dHM6IE5ndEFueVJlY29yZCA9IHt9O1xuICAgIEBJbnB1dCgpIGNvbXBvdW5kUHJlZml4ZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICBASW5wdXQoKSBzZXQgbGluZWFyKGxpbmVhcjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGxpbmVhciB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbGVnYWN5KGxlZ2FjeTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGxlZ2FjeSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZmxhdChmbGF0OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZmxhdCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgb3J0aG9ncmFwaGljKG9ydGhvZ3JhcGhpYzogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IG9ydGhvZ3JhcGhpYyB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZnJhbWVsb29wKGZyYW1lbG9vcDogTmd0Q2FudmFzSW5wdXRzWydmcmFtZWxvb3AnXSkge1xuICAgICAgICB0aGlzLnNldCh7IGZyYW1lbG9vcCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZHByKGRwcjogTmd0RHByKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZHByIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCByYXljYXN0ZXIocmF5Y2FzdGVyOiBQYXJ0aWFsPFRIUkVFLlJheWNhc3Rlcj4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyByYXljYXN0ZXIgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHNoYWRvd3Moc2hhZG93czogYm9vbGVhbiB8IFBhcnRpYWw8VEhSRUUuV2ViR0xTaGFkb3dNYXA+KSB7XG4gICAgICAgIHRoaXMuc2V0KHtcbiAgICAgICAgICAgIHNoYWRvd3M6IHR5cGVvZiBzaGFkb3dzID09PSAnb2JqZWN0JyA/IChzaGFkb3dzIGFzIFBhcnRpYWw8VEhSRUUuV2ViR0xTaGFkb3dNYXA+KSA6IHNoYWRvd3MsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBjYW1lcmEoY2FtZXJhOiBOZ3RDYW52YXNJbnB1dHNbJ2NhbWVyYSddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgY2FtZXJhIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBnbChnbDogTmd0Q2FudmFzSW5wdXRzWydnbCddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZ2wgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGV2ZW50U291cmNlKGV2ZW50U291cmNlOiBOZ3RDYW52YXNJbnB1dHNbJ2V2ZW50U291cmNlJ10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBldmVudFNvdXJjZSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZXZlbnRQcmVmaXgoZXZlbnRQcmVmaXg6IE5ndENhbnZhc0lucHV0c1snZXZlbnRQcmVmaXgnXSkge1xuICAgICAgICB0aGlzLnNldCh7IGV2ZW50UHJlZml4IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBsb29rQXQobG9va0F0OiBOZ3RDYW52YXNJbnB1dHNbJ2xvb2tBdCddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbG9va0F0IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBwZXJmb3JtYW5jZShwZXJmb3JtYW5jZTogTmd0Q2FudmFzSW5wdXRzWydwZXJmb3JtYW5jZSddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgcGVyZm9ybWFuY2UgfSk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIGNyZWF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE5ndFN0YXRlPigpO1xuICAgIEBPdXRwdXQoKSBwb2ludGVyTWlzc2VkID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuXG4gICAgQFZpZXdDaGlsZCgnZ2xDYW52YXMnLCB7IHN0YXRpYzogdHJ1ZSB9KSBnbENhbnZhcyE6IEVsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoJ2dsQ2FudmFzJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgZ2xBbmNob3IhOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gICAgcHJpdmF0ZSBnbFJlZj86IENvbXBvbmVudFJlZjx1bmtub3duPjtcbiAgICBwcml2YXRlIGdsRW52SW5qZWN0b3I/OiBFbnZpcm9ubWVudEluamVjdG9yO1xuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoY2hhbmdlc1snc2NlbmVHcmFwaElucHV0cyddICYmIHRoaXMuZ2xSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U2NlbmVHcmFwaElucHV0cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5nZXQoJ2V2ZW50U291cmNlJykpIHtcbiAgICAgICAgICAgIC8vIHNldCBkZWZhdWx0IGV2ZW50IHNvdXJjZSB0byB0aGUgaG9zdCBlbGVtZW50XG4gICAgICAgICAgICB0aGlzLmV2ZW50U291cmNlID0gdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wb2ludGVyTWlzc2VkLm9ic2VydmVkKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNldCh7XG4gICAgICAgICAgICAgICAgb25Qb2ludGVyTWlzc2VkOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb2ludGVyTWlzc2VkLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICBzYWZlRGV0ZWN0Q2hhbmdlcyh0aGlzLmNkcik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2V0dXAgTmd0U3RvcmVcbiAgICAgICAgdGhpcy5zdG9yZS5pbml0KCk7XG5cbiAgICAgICAgLy8gc2V0IHJvb3RTdGF0ZU1hcFxuICAgICAgICByb290U3RhdGVNYXAuc2V0KHRoaXMuZ2xDYW52YXMubmF0aXZlRWxlbWVudCwgdGhpcy5zdG9yZSk7XG5cbiAgICAgICAgLy8gc3Vic2NyaWJlIHRvIHN0b3JlIHRvIGxpc3RlbiBmb3IgcmVhZHkgc3RhdGVcbiAgICAgICAgdGhpcy5ob2xkKHRoaXMuc3RvcmUuc2VsZWN0KCdyZWFkeScpLnBpcGUoZmlsdGVyKChyZWFkeSkgPT4gcmVhZHkpKSwgKCkgPT4gdGhpcy5zdG9yZVJlYWR5KCkpO1xuICAgIH1cblxuICAgIG9uUmVzaXplKHsgd2lkdGgsIGhlaWdodCB9OiBOZ3hSZXNpemVSZXN1bHQpIHtcbiAgICAgICAgaWYgKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc3RvcmUuaXNJbml0KSB0aGlzLnN0b3JlLmluaXQoKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuY29uZmlndXJlKHRoaXMuZ2V0KCksIHRoaXMuZ2xDYW52YXMubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0b3JlUmVhZHkoKSB7XG4gICAgICAgIC8vIGNhbnZhcyBpcyByZWFkeSwgbGV0J3MgYWN0aXZhdGUgdGhlIGxvb3BcbiAgICAgICAgdGhpcy5zdG9yZS5zZXQoKHN0YXRlKSA9PiAoeyBpbnRlcm5hbDogeyAuLi5zdGF0ZS5pbnRlcm5hbCwgYWN0aXZlOiB0cnVlIH0gfSkpO1xuXG4gICAgICAgIGNvbnN0IGlucHV0cyA9IHRoaXMuZ2V0KCk7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdG9yZS5nZXQoKTtcblxuICAgICAgICAvLyBjb25uZWN0IHRvIGV2ZW50IHNvdXJjZVxuICAgICAgICBzdGF0ZS5ldmVudHMuY29ubmVjdD8uKGlzLnJlZihpbnB1dHMuZXZlbnRTb3VyY2UpID8gaW5wdXRzLmV2ZW50U291cmNlLm5hdGl2ZUVsZW1lbnQgOiBpbnB1dHMuZXZlbnRTb3VyY2UpO1xuXG4gICAgICAgIC8vIHNldHVwIGNvbXB1dGUgZnVuY3Rpb24gZm9yIGV2ZW50c1xuICAgICAgICBpZiAoaW5wdXRzLmV2ZW50UHJlZml4KSB7XG4gICAgICAgICAgICBzdGF0ZS5zZXRFdmVudHMoe1xuICAgICAgICAgICAgICAgIGNvbXB1dGU6IChldmVudCwgc3RvcmUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5uZXJTdGF0ZSA9IHN0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB4ID0gZXZlbnRbKGlucHV0cy5ldmVudFByZWZpeCArICdYJykgYXMga2V5b2YgTmd0RG9tRXZlbnRdIGFzIG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeSA9IGV2ZW50WyhpbnB1dHMuZXZlbnRQcmVmaXggKyAnWScpIGFzIGtleW9mIE5ndERvbUV2ZW50XSBhcyBudW1iZXI7XG4gICAgICAgICAgICAgICAgICAgIGlubmVyU3RhdGUucG9pbnRlci5zZXQoKHggLyBpbm5lclN0YXRlLnNpemUud2lkdGgpICogMiAtIDEsIC0oeSAvIGlubmVyU3RhdGUuc2l6ZS5oZWlnaHQpICogMiArIDEpO1xuICAgICAgICAgICAgICAgICAgICBpbm5lclN0YXRlLnJheWNhc3Rlci5zZXRGcm9tQ2FtZXJhKGlubmVyU3RhdGUucG9pbnRlciwgaW5uZXJTdGF0ZS5jYW1lcmEpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVtaXQgY3JlYXRlZCBldmVudCBpZiBvYnNlcnZlZFxuICAgICAgICBpZiAodGhpcy5jcmVhdGVkLm9ic2VydmVkKSB0aGlzLmNyZWF0ZWQuZW1pdCh0aGlzLnN0b3JlLmdldCgpKTtcblxuICAgICAgICAvLyByZW5kZXJcbiAgICAgICAgaWYgKHRoaXMuZ2xSZWYpIHRoaXMuZ2xSZWYuZGVzdHJveSgpO1xuXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHN0b3JlLCBjZHI6IGNoYW5nZURldGVjdG9yUmVmLCBjb21wb3VuZFByZWZpeGVzIH0gPSB0aGlzO1xuICAgICAgICAgICAgdGhpcy5nbEVudkluamVjdG9yID0gY3JlYXRlRW52aXJvbm1lbnRJbmplY3RvcihcbiAgICAgICAgICAgICAgICBbcHJvdmlkZU5ndFJlbmRlcmVyKHsgc3RvcmUsIGNoYW5nZURldGVjdG9yUmVmLCBjb21wb3VuZFByZWZpeGVzIH0pXSxcbiAgICAgICAgICAgICAgICB0aGlzLmVudkluamVjdG9yXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5nbFJlZiA9IHRoaXMuZ2xBbmNob3IuY3JlYXRlQ29tcG9uZW50KHRoaXMuc2NlbmVHcmFwaCwgeyBlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLmdsRW52SW5qZWN0b3IgfSk7XG4gICAgICAgICAgICAvLyBkZXRhY2ggdGhlIFNjZW5lIGdyYXBoIGZyb20gQ2hhbmdlIERldGVjdGlvbiBtZWNoYW5pc21cbiAgICAgICAgICAgIC8vIGV2ZXJ5dGhpbmcgZnJvbSB0aGlzIHBvaW50IGZvcndhcmQgd2lsbCB0cmlnZ2VyIENEIG1hbnVhbGx5IHdpdGggZGV0ZWN0Q2hhbmdlc1xuICAgICAgICAgICAgdGhpcy5nbFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRhY2goKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U2NlbmVHcmFwaElucHV0cygpO1xuXG4gICAgICAgICAgICAvLyBoZXJlLCB3ZSBvdmVycmlkZSB0aGUgZGV0ZWN0Q2hhbmdlcyB0byBhbHNvIGNhbGwgZGV0ZWN0Q2hhbmdlcyBvbiB0aGUgQ29tcG9uZW50UmVmXG4gICAgICAgICAgICB0aGlzLm92ZXJyaWRlRGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZ2xSZWYpIHRoaXMuZ2xSZWYuZGVzdHJveSgpO1xuICAgICAgICBpZiAodGhpcy5nbEVudkluamVjdG9yKSB0aGlzLmdsRW52SW5qZWN0b3IuZGVzdHJveSgpO1xuICAgICAgICBpbmplY3ROZ3RMb2FkZXIuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLnN0b3JlLmRlc3Ryb3kodGhpcy5nbENhbnZhcy5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG92ZXJyaWRlRGV0ZWN0Q2hhbmdlcygpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxEZXRlY3RDaGFuZ2VzID0gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcy5iaW5kKHRoaXMuY2RyKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcyA9ICgpID0+IHtcbiAgICAgICAgICAgIG9yaWdpbmFsRGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgc2FmZURldGVjdENoYW5nZXModGhpcy5nbFJlZj8uY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0U2NlbmVHcmFwaElucHV0cygpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5zY2VuZUdyYXBoSW5wdXRzKSkge1xuICAgICAgICAgICAgdGhpcy5nbFJlZiEuc2V0SW5wdXQoa2V5LCB0aGlzLnNjZW5lR3JhcGhJbnB1dHNba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgc2FmZURldGVjdENoYW5nZXModGhpcy5jZHIpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { Directive, Input } from '@angular/core';
|
|
2
|
-
import { NgtCommonDirective } from './common';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class NgtArgs extends NgtCommonDirective {
|
|
5
|
-
constructor() {
|
|
6
|
-
super(...arguments);
|
|
7
|
-
this.injectedArgs = [];
|
|
8
|
-
}
|
|
9
|
-
set args(args) {
|
|
10
|
-
if (args == null || !Array.isArray(args) || (args.length === 1 && args[0] === null))
|
|
11
|
-
return;
|
|
12
|
-
this.injected = false;
|
|
13
|
-
this.injectedArgs = args;
|
|
14
|
-
this.createView();
|
|
15
|
-
}
|
|
16
|
-
get args() {
|
|
17
|
-
if (this.validate()) {
|
|
18
|
-
this.injected = true;
|
|
19
|
-
return this.injectedArgs;
|
|
20
|
-
}
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
validate() {
|
|
24
|
-
return !this.injected && !!this.injectedArgs.length;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
NgtArgs.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtArgs, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
28
|
-
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 });
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtArgs, decorators: [{
|
|
30
|
-
type: Directive,
|
|
31
|
-
args: [{ selector: '[args]', standalone: true }]
|
|
32
|
-
}], propDecorators: { args: [{
|
|
33
|
-
type: Input
|
|
34
|
-
}] } });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS9zcmMvbGliL2RpcmVjdGl2ZXMvYXJncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBRzlDLE1BQU0sT0FBTyxPQUFRLFNBQVEsa0JBQWtCO0lBRC9DOztRQUVZLGlCQUFZLEdBQVUsRUFBRSxDQUFDO0tBb0JwQztJQWxCRyxJQUFhLElBQUksQ0FBQyxJQUFrQjtRQUNoQyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQztZQUFFLE9BQU87UUFDNUYsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDSixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDNUI7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsUUFBUTtRQUNKLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUN4RCxDQUFDOztvR0FwQlEsT0FBTzt3RkFBUCxPQUFPOzJGQUFQLE9BQU87a0JBRG5CLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7OEJBSWxDLElBQUk7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3RDb21tb25EaXJlY3RpdmUgfSBmcm9tICcuL2NvbW1vbic7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1thcmdzXScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBOZ3RBcmdzIGV4dGVuZHMgTmd0Q29tbW9uRGlyZWN0aXZlIHtcbiAgICBwcml2YXRlIGluamVjdGVkQXJnczogYW55W10gPSBbXTtcblxuICAgIEBJbnB1dCgpIHNldCBhcmdzKGFyZ3M6IGFueVtdIHwgbnVsbCkge1xuICAgICAgICBpZiAoYXJncyA9PSBudWxsIHx8ICFBcnJheS5pc0FycmF5KGFyZ3MpIHx8IChhcmdzLmxlbmd0aCA9PT0gMSAmJiBhcmdzWzBdID09PSBudWxsKSkgcmV0dXJuO1xuICAgICAgICB0aGlzLmluamVjdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5qZWN0ZWRBcmdzID0gYXJncztcbiAgICAgICAgdGhpcy5jcmVhdGVWaWV3KCk7XG4gICAgfVxuXG4gICAgZ2V0IGFyZ3MoKSB7XG4gICAgICAgIGlmICh0aGlzLnZhbGlkYXRlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5qZWN0ZWRBcmdzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhbGlkYXRlKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMuaW5qZWN0ZWQgJiYgISF0aGlzLmluamVjdGVkQXJncy5sZW5ndGg7XG4gICAgfVxufVxuIl19
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { Directive, inject, TemplateRef, ViewContainerRef } from '@angular/core';
|
|
2
|
-
import { safeDetectChanges } from '../utils/safe-detect-changes';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class NgtCommonDirective {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.vcr = inject(ViewContainerRef);
|
|
7
|
-
this.template = inject(TemplateRef);
|
|
8
|
-
this.injected = false;
|
|
9
|
-
this.shouldCreateView = true;
|
|
10
|
-
const commentNode = this.vcr.element.nativeElement;
|
|
11
|
-
if (commentNode['__ngt_renderer_add_comment__']) {
|
|
12
|
-
commentNode['__ngt_renderer_add_comment__']();
|
|
13
|
-
delete commentNode['__ngt_renderer_add_comment__'];
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
createView() {
|
|
17
|
-
if (this.shouldCreateView) {
|
|
18
|
-
if (this.view && !this.view.destroyed) {
|
|
19
|
-
this.view.destroy();
|
|
20
|
-
}
|
|
21
|
-
this.view = this.vcr.createEmbeddedView(this.template);
|
|
22
|
-
safeDetectChanges(this.view);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
NgtCommonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtCommonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
27
|
-
NgtCommonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: NgtCommonDirective, ngImport: i0 });
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtCommonDirective, decorators: [{
|
|
29
|
-
type: Directive
|
|
30
|
-
}], ctorParameters: function () { return []; } });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvZGlyZWN0aXZlcy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBbUIsTUFBTSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFHakUsTUFBTSxPQUFnQixrQkFBa0I7SUFRcEM7UUFQbUIsUUFBRyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQy9CLGFBQVEsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFeEMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFJOUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQ25ELElBQUksV0FBVyxDQUFDLDhCQUE4QixDQUFDLEVBQUU7WUFDN0MsV0FBVyxDQUFDLDhCQUE4QixDQUFDLEVBQUUsQ0FBQztZQUM5QyxPQUFPLFdBQVcsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1NBQ3REO0lBQ0wsQ0FBQztJQUlTLFVBQVU7UUFDaEIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDdkI7WUFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZELGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoQztJQUNMLENBQUM7OytHQTFCaUIsa0JBQWtCO21HQUFsQixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFEdkMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRW1iZWRkZWRWaWV3UmVmLCBpbmplY3QsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzYWZlRGV0ZWN0Q2hhbmdlcyB9IGZyb20gJy4uL3V0aWxzL3NhZmUtZGV0ZWN0LWNoYW5nZXMnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZ3RDb21tb25EaXJlY3RpdmUge1xuICAgIHByb3RlY3RlZCByZWFkb25seSB2Y3IgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRlbXBsYXRlID0gaW5qZWN0KFRlbXBsYXRlUmVmKTtcblxuICAgIHByb3RlY3RlZCBpbmplY3RlZCA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBzaG91bGRDcmVhdGVWaWV3ID0gdHJ1ZTtcbiAgICBwcml2YXRlIHZpZXc/OiBFbWJlZGRlZFZpZXdSZWY8dW5rbm93bj47XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgY29uc3QgY29tbWVudE5vZGUgPSB0aGlzLnZjci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChjb21tZW50Tm9kZVsnX19uZ3RfcmVuZGVyZXJfYWRkX2NvbW1lbnRfXyddKSB7XG4gICAgICAgICAgICBjb21tZW50Tm9kZVsnX19uZ3RfcmVuZGVyZXJfYWRkX2NvbW1lbnRfXyddKCk7XG4gICAgICAgICAgICBkZWxldGUgY29tbWVudE5vZGVbJ19fbmd0X3JlbmRlcmVyX2FkZF9jb21tZW50X18nXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFic3RyYWN0IHZhbGlkYXRlKCk6IGJvb2xlYW47XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlVmlldygpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvdWxkQ3JlYXRlVmlldykge1xuICAgICAgICAgICAgaWYgKHRoaXMudmlldyAmJiAhdGhpcy52aWV3LmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgICAgIHRoaXMudmlldy5kZXN0cm95KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnZpZXcgPSB0aGlzLnZjci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZSk7XG4gICAgICAgICAgICBzYWZlRGV0ZWN0Q2hhbmdlcyh0aGlzLnZpZXcpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { Directive, Input } from '@angular/core';
|
|
2
|
-
import { NgtCommonDirective } from './common';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class NgtParent extends NgtCommonDirective {
|
|
5
|
-
constructor() {
|
|
6
|
-
super(...arguments);
|
|
7
|
-
this.injectedParent = null;
|
|
8
|
-
}
|
|
9
|
-
set parent(parent) {
|
|
10
|
-
if (!parent)
|
|
11
|
-
return;
|
|
12
|
-
this.injected = false;
|
|
13
|
-
this.injectedParent = parent;
|
|
14
|
-
this.createView();
|
|
15
|
-
}
|
|
16
|
-
get parent() {
|
|
17
|
-
if (this.validate()) {
|
|
18
|
-
this.injected = true;
|
|
19
|
-
return this.injectedParent;
|
|
20
|
-
}
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
validate() {
|
|
24
|
-
return !this.injected && !!this.injectedParent;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
NgtParent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtParent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
28
|
-
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 });
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtParent, decorators: [{
|
|
30
|
-
type: Directive,
|
|
31
|
-
args: [{ selector: '[parent]', standalone: true }]
|
|
32
|
-
}], propDecorators: { parent: [{
|
|
33
|
-
type: Input
|
|
34
|
-
}] } });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvZGlyZWN0aXZlcy9wYXJlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUc5QyxNQUFNLE9BQU8sU0FBVSxTQUFRLGtCQUFrQjtJQURqRDs7UUFFWSxtQkFBYyxHQUE2RCxJQUFLLENBQUM7S0FvQjVGO0lBbEJHLElBQWEsTUFBTSxDQUFDLE1BQWdFO1FBQ2hGLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUM5QjtRQUNELE9BQU8sSUFBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxRQUFRO1FBQ0osT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDbkQsQ0FBQzs7c0dBcEJRLFNBQVM7MEZBQVQsU0FBUzsyRkFBVCxTQUFTO2tCQURyQixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFOzhCQUlwQyxNQUFNO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0SW5qZWN0ZWRSZWYgfSBmcm9tICcuLi9kaS9yZWYnO1xuaW1wb3J0IHsgTmd0Q29tbW9uRGlyZWN0aXZlIH0gZnJvbSAnLi9jb21tb24nO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbcGFyZW50XScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBOZ3RQYXJlbnQgZXh0ZW5kcyBOZ3RDb21tb25EaXJlY3RpdmUge1xuICAgIHByaXZhdGUgaW5qZWN0ZWRQYXJlbnQ6IHN0cmluZyB8IFRIUkVFLk9iamVjdDNEIHwgTmd0SW5qZWN0ZWRSZWY8VEhSRUUuT2JqZWN0M0Q+ID0gbnVsbCE7XG5cbiAgICBASW5wdXQoKSBzZXQgcGFyZW50KHBhcmVudDogc3RyaW5nIHwgVEhSRUUuT2JqZWN0M0QgfCBOZ3RJbmplY3RlZFJlZjxUSFJFRS5PYmplY3QzRD4pIHtcbiAgICAgICAgaWYgKCFwYXJlbnQpIHJldHVybjtcbiAgICAgICAgdGhpcy5pbmplY3RlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmluamVjdGVkUGFyZW50ID0gcGFyZW50O1xuICAgICAgICB0aGlzLmNyZWF0ZVZpZXcoKTtcbiAgICB9XG5cbiAgICBnZXQgcGFyZW50KCkge1xuICAgICAgICBpZiAodGhpcy52YWxpZGF0ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmluamVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmluamVjdGVkUGFyZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsITtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmluamVjdGVkICYmICEhdGhpcy5pbmplY3RlZFBhcmVudDtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { NgForOf } from '@angular/common';
|
|
2
|
-
import { Directive, Input } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class NgtRepeat extends NgForOf {
|
|
5
|
-
set ngForRepeat(count) {
|
|
6
|
-
this.ngForOf = Number.isInteger(count) ? Array.from({ length: count }, (_, i) => i) : [];
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
NgtRepeat.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtRepeat, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
10
|
-
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 });
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtRepeat, decorators: [{
|
|
12
|
-
type: Directive,
|
|
13
|
-
args: [{ selector: '[ngFor][ngForRepeat]', standalone: true }]
|
|
14
|
-
}], propDecorators: { ngForRepeat: [{
|
|
15
|
-
type: Input
|
|
16
|
-
}] } });
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvZGlyZWN0aXZlcy9yZXBlYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUdqRCxNQUFNLE9BQU8sU0FBVSxTQUFRLE9BQWU7SUFDMUMsSUFBYSxXQUFXLENBQUMsS0FBYTtRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzdGLENBQUM7O3NHQUhRLFNBQVM7MEZBQVQsU0FBUzsyRkFBVCxTQUFTO2tCQURyQixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7OEJBRWhELFdBQVc7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0Zvck9mIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW25nRm9yXVtuZ0ZvclJlcGVhdF0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmd0UmVwZWF0IGV4dGVuZHMgTmdGb3JPZjxudW1iZXI+IHtcbiAgICBASW5wdXQoKSBzZXQgbmdGb3JSZXBlYXQoY291bnQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLm5nRm9yT2YgPSBOdW1iZXIuaXNJbnRlZ2VyKGNvdW50KSA/IEFycmF5LmZyb20oeyBsZW5ndGg6IGNvdW50IH0sIChfLCBpKSA9PiBpKSA6IFtdO1xuICAgIH1cbn1cbiJdfQ==
|
package/esm2020/lib/loader.mjs
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectorRef, inject } from '@angular/core';
|
|
2
|
-
import { catchError, forkJoin, from, isObservable, map, of, ReplaySubject, retry, share, switchMap, take, tap, } from 'rxjs';
|
|
3
|
-
import { makeObjectGraph } from './utils/make';
|
|
4
|
-
import { safeDetectChanges } from './utils/safe-detect-changes';
|
|
5
|
-
const cached = new Map();
|
|
6
|
-
function load(loaderConstructorFactory, input, extensions, onProgress) {
|
|
7
|
-
const urls$ = isObservable(input) ? input : of(input);
|
|
8
|
-
return urls$.pipe(map((inputs) => {
|
|
9
|
-
const loaderConstructor = loaderConstructorFactory(inputs);
|
|
10
|
-
const loader = new loaderConstructor();
|
|
11
|
-
if (extensions)
|
|
12
|
-
extensions(loader);
|
|
13
|
-
const urls = Array.isArray(inputs) ? inputs : typeof inputs === 'string' ? [inputs] : Object.values(inputs);
|
|
14
|
-
return [
|
|
15
|
-
urls.map((url) => {
|
|
16
|
-
if (!cached.has(url)) {
|
|
17
|
-
cached.set(url, from(loader.loadAsync(url, onProgress)).pipe(tap((data) => {
|
|
18
|
-
if (data.scene)
|
|
19
|
-
Object.assign(data, makeObjectGraph(data.scene));
|
|
20
|
-
}), retry(2), catchError((err) => {
|
|
21
|
-
console.error(`[NGT] Error loading ${url}: ${err.message}`);
|
|
22
|
-
return of([]);
|
|
23
|
-
}), share({ connector: () => new ReplaySubject(1) })));
|
|
24
|
-
}
|
|
25
|
-
return cached.get(url);
|
|
26
|
-
}),
|
|
27
|
-
inputs,
|
|
28
|
-
];
|
|
29
|
-
}));
|
|
30
|
-
}
|
|
31
|
-
function injectLoader(loaderConstructorFactory, input, extensions, onProgress) {
|
|
32
|
-
const cdr = inject(ChangeDetectorRef);
|
|
33
|
-
return load(loaderConstructorFactory, input, extensions, onProgress).pipe(switchMap(([observables$, inputs]) => {
|
|
34
|
-
return forkJoin(observables$).pipe(map((results) => {
|
|
35
|
-
if (Array.isArray(inputs))
|
|
36
|
-
return results;
|
|
37
|
-
if (typeof inputs === 'string')
|
|
38
|
-
return results[0];
|
|
39
|
-
const keys = Object.keys(inputs);
|
|
40
|
-
return keys.reduce((result, key) => {
|
|
41
|
-
result[key] = results[keys.indexOf(key)];
|
|
42
|
-
return result;
|
|
43
|
-
}, {});
|
|
44
|
-
}), tap(() => {
|
|
45
|
-
requestAnimationFrame(() => void safeDetectChanges(cdr));
|
|
46
|
-
}));
|
|
47
|
-
}));
|
|
48
|
-
}
|
|
49
|
-
injectLoader.destroy = () => {
|
|
50
|
-
cached.clear();
|
|
51
|
-
};
|
|
52
|
-
injectLoader.preLoad = (loaderConstructorFactory, inputs, extensions) => {
|
|
53
|
-
load(loaderConstructorFactory, inputs, extensions).pipe(take(1)).subscribe();
|
|
54
|
-
};
|
|
55
|
-
export const injectNgtLoader = injectLoader;
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUNILFVBQVUsRUFDVixRQUFRLEVBQ1IsSUFBSSxFQUNKLFlBQVksRUFDWixHQUFHLEVBRUgsRUFBRSxFQUNGLGFBQWEsRUFDYixLQUFLLEVBQ0wsS0FBSyxFQUNMLFNBQVMsRUFDVCxJQUFJLEVBQ0osR0FBRyxHQUNOLE1BQU0sTUFBTSxDQUFDO0FBR2QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQTRCaEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQTJCLENBQUM7QUFFbEQsU0FBUyxJQUFJLENBQ1Qsd0JBQWdHLEVBQ2hHLEtBQThCLEVBQzlCLFVBQWdDLEVBQ2hDLFVBQTJDO0lBRTNDLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUNiLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ1gsTUFBTSxpQkFBaUIsR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDdkMsSUFBSSxVQUFVO1lBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1B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dkMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQUVELFlBQTBCLENBQUMsT0FBTyxHQUFHLENBQUMsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxFQUFFO0lBQ25GLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ2pGLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxZQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBjYXRjaEVycm9yLFxuICAgIGZvcmtKb2luLFxuICAgIGZyb20sXG4gICAgaXNPYnNlcnZhYmxlLFxuICAgIG1hcCxcbiAgICBPYnNlcnZhYmxlLFxuICAgIG9mLFxuICAgIFJlcGxheVN1YmplY3QsXG4gICAgcmV0cnksXG4gICAgc2hhcmUsXG4gICAgc3dpdGNoTWFwLFxuICAgIHRha2UsXG4gICAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB0eXBlIHsgR0xURiB9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9sb2FkZXJzL0dMVEZMb2FkZXInO1xuaW1wb3J0IHR5cGUgeyBOZ3RCcmFuY2hpbmdSZXR1cm4sIE5ndExvYWRlckV4dGVuc2lvbnMsIE5ndExvYWRlclJlc3VsdCwgTmd0T2JqZWN0TWFwIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBtYWtlT2JqZWN0R3JhcGggfSBmcm9tICcuL3V0aWxzL21ha2UnO1xuaW1wb3J0IHsgc2FmZURldGVjdENoYW5nZXMgfSBmcm9tICcuL3V0aWxzL3NhZmUtZGV0ZWN0LWNoYW5nZXMnO1xuXG5pbnRlcmZhY2UgTmd0TG9hZGVyIHtcbiAgICA8VFJldHVyblR5cGUsIFRVcmwgZXh0ZW5kcyBzdHJpbmcgfCBzdHJpbmdbXSB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KFxuICAgICAgICBsb2FkZXJDb25zdHJ1Y3RvckZhY3Rvcnk6IChpbnB1dHM6IFRVcmwpID0+IG5ldyAoLi4uYXJnczogYW55W10pID0+IE5ndExvYWRlclJlc3VsdDxUUmV0dXJuVHlwZT4sXG4gICAgICAgIGlucHV0OiBUVXJsIHwgT2JzZXJ2YWJsZTxUVXJsPixcbiAgICAgICAgZXh0ZW5zaW9ucz86IE5ndExvYWRlckV4dGVuc2lvbnM8Tmd0TG9hZGVyUmVzdWx0PFRSZXR1cm5UeXBlPj4sXG4gICAgICAgIG9uUHJvZ3Jlc3M/OiAoZXZlbnQ6IFByb2dyZXNzRXZlbnQpID0+IHZvaWRcbiAgICApOiBPYnNlcnZhYmxlPFxuICAgICAgICBUVXJsIGV4dGVuZHMgc3RyaW5nW11cbiAgICAgICAgICAgID8gQXJyYXk8Tmd0QnJhbmNoaW5nUmV0dXJuPFRSZXR1cm5UeXBlLCBHTFRGLCBHTFRGICYgTmd0T2JqZWN0TWFwPj5cbiAgICAgICAgICAgIDogVFVybCBleHRlbmRzIG9iamVjdFxuICAgICAgICAgICAgPyB7IFtrZXkgaW4ga2V5b2YgVFVybF06IE5ndEJyYW5jaGluZ1JldHVybjxUUmV0dXJuVHlwZSwgR0xURiwgR0xURiAmIE5ndE9iamVjdE1hcD4gfVxuICAgICAgICAgICAgOiBOZ3RCcmFuY2hpbmdSZXR1cm48VFJldHVyblR5cGUsIEdMVEYsIEdMVEYgJiBOZ3RPYmplY3RNYXA+XG4gICAgPjtcbiAgICBkZXN0cm95OiAoKSA9PiB2b2lkO1xuICAgIHByZUxvYWQ6IDxUUmV0dXJuVHlwZSwgVFVybCBleHRlbmRzIHN0cmluZyB8IHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG4gICAgICAgIGxvYWRlckNvbnN0cnVjdG9yRmFjdG9yeTogKGlucHV0czogVFVybCkgPT4gbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gTmd0TG9hZGVyUmVzdWx0PFRSZXR1cm5UeXBlPixcbiAgICAgICAgaW5wdXRzOiBUVXJsIHwgT2JzZXJ2YWJsZTxUVXJsPixcbiAgICAgICAgZXh0ZW5zaW9ucz86IE5ndExvYWRlckV4dGVuc2lvbnNcbiAgICApID0+IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIE5ndExvYWRlclJlc3VsdHM8XG4gICAgVElucHV0IGV4dGVuZHMgc3RyaW5nIHwgc3RyaW5nW10gfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgIFRSZXR1cm5cbj4gPSBUSW5wdXQgZXh0ZW5kcyBzdHJpbmdbXSA/IFRSZXR1cm5bXSA6IFRJbnB1dCBleHRlbmRzIG9iamVjdCA/IHsgW2tleSBpbiBrZXlvZiBUSW5wdXRdOiBUUmV0dXJuIH0gOiBUUmV0dXJuO1xuXG5jb25zdCBjYWNoZWQgPSBuZXcgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxhbnk+PigpO1xuXG5mdW5jdGlvbiBsb2FkPFRSZXR1cm5UeXBlLCBUVXJsIGV4dGVuZHMgc3RyaW5nIHwgc3RyaW5nW10gfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PihcbiAgICBsb2FkZXJDb25zdHJ1Y3RvckZhY3Rvcnk6IChpbnB1dHM6IFRVcmwpID0+IG5ldyAoLi4uYXJnczogYW55W10pID0+IE5ndExvYWRlclJlc3VsdDxUUmV0dXJuVHlwZT4sXG4gICAgaW5wdXQ6IFRVcmwgfCBPYnNlcnZhYmxlPFRVcmw+LFxuICAgIGV4dGVuc2lvbnM/OiBOZ3RMb2FkZXJFeHRlbnNpb25zLFxuICAgIG9uUHJvZ3Jlc3M/OiAoZXZlbnQ6IFByb2dyZXNzRXZlbnQpID0+IHZvaWRcbikge1xuICAgIGNvbnN0IHVybHMkID0gaXNPYnNlcnZhYmxlKGlucHV0KSA/IGlucHV0IDogb2YoaW5wdXQpO1xuICAgIHJldHVybiB1cmxzJC5waXBlKFxuICAgICAgICBtYXAoKGlucHV0cykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbG9hZGVyQ29uc3RydWN0b3IgPSBsb2FkZXJDb25zdHJ1Y3RvckZhY3RvcnkoaW5wdXRzKTtcbiAgICAgICAgICAgIGNvbnN0IGxvYWRlciA9IG5ldyBsb2FkZXJDb25zdHJ1Y3RvcigpO1xuICAgICAgICAgICAgaWYgKGV4dGVuc2lvbnMpIGV4dGVuc2lvbnMobG9hZGVyKTtcbiAgICAgICAgICAgIGNvbnN0IHVybHMgPSBBcnJheS5pc0FycmF5KGlucHV0cykgPyBpbnB1dHMgOiB0eXBlb2YgaW5wdXRzID09PSAnc3RyaW5nJyA/IFtpbnB1dHNdIDogT2JqZWN0LnZhbHVlcyhpbnB1dHMpO1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICB1cmxzLm1hcCgodXJsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2FjaGVkLmhhcyh1cmwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZWQuc2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tKGxvYWRlci5sb2FkQXN5bmModXJsLCBvblByb2dyZXNzKSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFwKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zY2VuZSkgT2JqZWN0LmFzc2lnbihkYXRhLCBtYWtlT2JqZWN0R3JhcGgoZGF0YS5zY2VuZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnkoMiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgW05HVF0gRXJyb3IgbG9hZGluZyAke3VybH06ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmUoeyBjb25uZWN0b3I6ICgpID0+IG5ldyBSZXBsYXlTdWJqZWN0KDEpIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVkLmdldCh1cmwpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGlucHV0cyxcbiAgICAgICAgICAgIF0gYXMgW0FycmF5PE9ic2VydmFibGU8YW55Pj4sIFRVcmwgfCBUVXJsW11dO1xuICAgICAgICB9KVxuICAgICk7XG59XG5cbmZ1bmN0aW9uIGluamVjdExvYWRlcjxUUmV0dXJuVHlwZSwgVFVybCBleHRlbmRzIHN0cmluZyB8IHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG4gICAgbG9hZGVyQ29uc3RydWN0b3JGYWN0b3J5OiAoaW5wdXRzOiBUVXJsKSA9PiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBOZ3RMb2FkZXJSZXN1bHQ8VFJldHVyblR5cGU+LFxuICAgIGlucHV0OiBUVXJsIHwgT2JzZXJ2YWJsZTxUVXJsPixcbiAgICBleHRlbnNpb25zPzogTmd0TG9hZGVyRXh0ZW5zaW9ucyxcbiAgICBvblByb2dyZXNzPzogKGV2ZW50OiBQcm9ncmVzc0V2ZW50KSA9PiB2b2lkXG4pOiBPYnNlcnZhYmxlPE5ndExvYWRlclJlc3VsdHM8VFVybCwgTmd0QnJhbmNoaW5nUmV0dXJuPFRSZXR1cm5UeXBlLCBHTFRGLCBHTFRGICYgTmd0T2JqZWN0TWFwPj4+IHtcbiAgICBjb25zdCBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgcmV0dXJuIGxvYWQobG9hZGVyQ29uc3RydWN0b3JGYWN0b3J5LCBpbnB1dCwgZXh0ZW5zaW9ucywgb25Qcm9ncmVzcykucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChbb2JzZXJ2YWJsZXMkLCBpbnB1dHNdKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZm9ya0pvaW4ob2JzZXJ2YWJsZXMkKS5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpbnB1dHMpKSByZXR1cm4gcmVzdWx0cztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpbnB1dHMgPT09ICdzdHJpbmcnKSByZXR1cm4gcmVzdWx0c1swXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGlucHV0cyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXlzLnJlZHVjZSgocmVzdWx0LCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXkgYXMga2V5b2YgdHlwZW9mIHJlc3VsdF0gPSByZXN1bHRzW2tleXMuaW5kZXhPZihrZXkpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgIH0sIHt9IGFzIHsgW2tleSBpbiBrZXlvZiBUVXJsXTogTmd0QnJhbmNoaW5nUmV0dXJuPFRSZXR1cm5UeXBlLCBHTFRGLCBHTFRGICYgTmd0T2JqZWN0TWFwPiB9KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gdm9pZCBzYWZlRGV0ZWN0Q2hhbmdlcyhjZHIpKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICApO1xufVxuXG4oaW5qZWN0TG9hZGVyIGFzIE5ndExvYWRlcikuZGVzdHJveSA9ICgpID0+IHtcbiAgICBjYWNoZWQuY2xlYXIoKTtcbn07XG5cbihpbmplY3RMb2FkZXIgYXMgTmd0TG9hZGVyKS5wcmVMb2FkID0gKGxvYWRlckNvbnN0cnVjdG9yRmFjdG9yeSwgaW5wdXRzLCBleHRlbnNpb25zKSA9PiB7XG4gICAgbG9hZChsb2FkZXJDb25zdHJ1Y3RvckZhY3RvcnksIGlucHV0cywgZXh0ZW5zaW9ucykucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbmplY3ROZ3RMb2FkZXIgPSBpbmplY3RMb2FkZXIgYXMgTmd0TG9hZGVyO1xuIl19
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectorRef, EnvironmentInjector, inject, Pipe } from '@angular/core';
|
|
2
|
-
import { isObservable } from 'rxjs';
|
|
3
|
-
import { safeDetectChanges } from '../utils/safe-detect-changes';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
function isPromise(value) {
|
|
6
|
-
return ((value instanceof Promise || Object.prototype.toString.call(value) === '[object Promise]') &&
|
|
7
|
-
typeof value['then'] === 'function');
|
|
8
|
-
}
|
|
9
|
-
export class NgtPush {
|
|
10
|
-
constructor() {
|
|
11
|
-
this.cdr = inject(ChangeDetectorRef);
|
|
12
|
-
this.parentCdr = inject(ChangeDetectorRef, { skipSelf: true, optional: true });
|
|
13
|
-
this.envCdr = inject(EnvironmentInjector).get(ChangeDetectorRef, null);
|
|
14
|
-
}
|
|
15
|
-
transform(value, defaultValue = null) {
|
|
16
|
-
if (this.obj === value)
|
|
17
|
-
return this.latestValue;
|
|
18
|
-
this.obj = value;
|
|
19
|
-
this.latestValue = defaultValue;
|
|
20
|
-
if (this.sub)
|
|
21
|
-
this.sub.unsubscribe();
|
|
22
|
-
if (isObservable(this.obj))
|
|
23
|
-
this.sub = this.obj.subscribe(this.updateValue.bind(this));
|
|
24
|
-
else if (isPromise(this.obj))
|
|
25
|
-
this.obj.then(this.updateValue.bind(this));
|
|
26
|
-
else
|
|
27
|
-
throw new Error(`[NGT] Invalid value passed to ngtPush pipe`);
|
|
28
|
-
return this.latestValue;
|
|
29
|
-
}
|
|
30
|
-
updateValue(val) {
|
|
31
|
-
this.latestValue = val;
|
|
32
|
-
safeDetectChanges(this.cdr);
|
|
33
|
-
safeDetectChanges(this.parentCdr);
|
|
34
|
-
safeDetectChanges(this.envCdr);
|
|
35
|
-
}
|
|
36
|
-
ngOnDestroy() {
|
|
37
|
-
if (this.sub)
|
|
38
|
-
this.sub.unsubscribe();
|
|
39
|
-
this.latestValue = undefined;
|
|
40
|
-
this.obj = undefined;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
NgtPush.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtPush, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
44
|
-
NgtPush.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.6", ngImport: i0, type: NgtPush, isStandalone: true, name: "ngtPush", pure: false });
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: NgtPush, decorators: [{
|
|
46
|
-
type: Pipe,
|
|
47
|
-
args: [{ name: 'ngtPush', pure: false, standalone: true }]
|
|
48
|
-
}] });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS9zcmMvbGliL3BpcGVzL3B1c2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBYSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxZQUFZLEVBQWlDLE1BQU0sTUFBTSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQUVqRSxTQUFTLFNBQVMsQ0FBQyxLQUFjO0lBQzdCLE9BQU8sQ0FDSCxDQUFDLEtBQUssWUFBWSxPQUFPLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLGtCQUFrQixDQUFDO1FBQzFGLE9BQVEsS0FBMEIsQ0FBQyxNQUFNLENBQUMsS0FBSyxVQUFVLENBQzVELENBQUM7QUFDTixDQUFDO0FBR0QsTUFBTSxPQUFPLE9BQU87SUFEcEI7UUFFcUIsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hDLGNBQVMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLFdBQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FpQ3RGO0lBM0JHLFNBQVMsQ0FBQyxLQUF5QixFQUFFLGVBQWtCLElBQUs7UUFDeEQsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLEtBQUs7WUFBRSxPQUFPLElBQUksQ0FBQyxXQUFnQixDQUFDO1FBRXJELElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDO1FBRWhDLElBQUksSUFBSSxDQUFDLEdBQUc7WUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXJDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDbEYsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUFHLElBQUksQ0FBQyxHQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDOztZQUNwRixNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7UUFFbkUsT0FBTyxJQUFJLENBQUMsV0FBZ0IsQ0FBQztJQUNqQyxDQUFDO0lBRU8sV0FBVyxDQUFDLEdBQU07UUFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFDdkIsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxHQUFHO1lBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztRQUM3QixJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQztJQUN6QixDQUFDOztvR0FuQ1EsT0FBTztrR0FBUCxPQUFPOzJGQUFQLE9BQU87a0JBRG5CLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBFbnZpcm9ubWVudEluamVjdG9yLCBpbmplY3QsIE9uRGVzdHJveSwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlSW5wdXQsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2FmZURldGVjdENoYW5nZXMgfSBmcm9tICcuLi91dGlscy9zYWZlLWRldGVjdC1jaGFuZ2VzJztcblxuZnVuY3Rpb24gaXNQcm9taXNlKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUHJvbWlzZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgKHZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBQcm9taXNlXScpICYmXG4gICAgICAgIHR5cGVvZiAodmFsdWUgYXMgUHJvbWlzZTx1bmtub3duPilbJ3RoZW4nXSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICk7XG59XG5cbkBQaXBlKHsgbmFtZTogJ25ndFB1c2gnLCBwdXJlOiBmYWxzZSwgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndFB1c2g8VD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtLCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhcmVudENkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZiwgeyBza2lwU2VsZjogdHJ1ZSwgb3B0aW9uYWw6IHRydWUgfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbnZDZHIgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3RvcikuZ2V0KENoYW5nZURldGVjdG9yUmVmLCBudWxsKTtcblxuICAgIHByaXZhdGUgc3ViPzogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgb2JqPzogT2JzZXJ2YWJsZUlucHV0PFQ+O1xuICAgIHByaXZhdGUgbGF0ZXN0VmFsdWU/OiBUO1xuXG4gICAgdHJhbnNmb3JtKHZhbHVlOiBPYnNlcnZhYmxlSW5wdXQ8VD4sIGRlZmF1bHRWYWx1ZTogVCA9IG51bGwhKTogVCB7XG4gICAgICAgIGlmICh0aGlzLm9iaiA9PT0gdmFsdWUpIHJldHVybiB0aGlzLmxhdGVzdFZhbHVlIGFzIFQ7XG5cbiAgICAgICAgdGhpcy5vYmogPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5sYXRlc3RWYWx1ZSA9IGRlZmF1bHRWYWx1ZTtcblxuICAgICAgICBpZiAodGhpcy5zdWIpIHRoaXMuc3ViLnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZSh0aGlzLm9iaikpIHRoaXMuc3ViID0gdGhpcy5vYmouc3Vic2NyaWJlKHRoaXMudXBkYXRlVmFsdWUuYmluZCh0aGlzKSk7XG4gICAgICAgIGVsc2UgaWYgKGlzUHJvbWlzZSh0aGlzLm9iaikpICh0aGlzLm9iaiBhcyBQcm9taXNlPFQ+KS50aGVuKHRoaXMudXBkYXRlVmFsdWUuYmluZCh0aGlzKSk7XG4gICAgICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yKGBbTkdUXSBJbnZhbGlkIHZhbHVlIHBhc3NlZCB0byBuZ3RQdXNoIHBpcGVgKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5sYXRlc3RWYWx1ZSBhcyBUO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVmFsdWUodmFsOiBUKSB7XG4gICAgICAgIHRoaXMubGF0ZXN0VmFsdWUgPSB2YWw7XG4gICAgICAgIHNhZmVEZXRlY3RDaGFuZ2VzKHRoaXMuY2RyKTtcbiAgICAgICAgc2FmZURldGVjdENoYW5nZXModGhpcy5wYXJlbnRDZHIpO1xuICAgICAgICBzYWZlRGV0ZWN0Q2hhbmdlcyh0aGlzLmVudkNkcik7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLnN1YikgdGhpcy5zdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5sYXRlc3RWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5vYmogPSB1bmRlZmluZWQ7XG4gICAgfVxufVxuIl19
|