angular-three 1.0.0-beta.8 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/esm2020/index.mjs +12 -8
- package/esm2020/lib/canvas.mjs +14 -27
- package/esm2020/lib/di/before-render.mjs +15 -0
- package/esm2020/lib/loader.mjs +2 -2
- package/esm2020/lib/portal.mjs +241 -0
- package/esm2020/lib/renderer/state.mjs +11 -5
- package/esm2020/lib/renderer/utils.mjs +2 -2
- package/esm2020/lib/stores/store.mjs +2 -2
- package/esm2020/lib/utils/attach.mjs +4 -1
- package/esm2020/lib/utils/instance.mjs +11 -3
- package/fesm2015/angular-three.mjs +375 -149
- package/fesm2015/angular-three.mjs.map +1 -1
- package/fesm2020/angular-three.mjs +401 -154
- package/fesm2020/angular-three.mjs.map +1 -1
- package/index.d.ts +11 -7
- package/lib/canvas.d.ts +0 -5
- package/lib/di/before-render.d.ts +2 -0
- package/lib/portal.d.ts +60 -0
- package/lib/utils/attach.d.ts +7 -1
- package/lib/utils/instance.d.ts +1 -1
- package/package.json +3 -1
- package/plugin/README.md +11 -0
- package/plugin/generators.json +19 -0
- package/plugin/package.json +10 -0
- package/plugin/src/generators/init/compat.d.ts +2 -0
- package/plugin/src/generators/init/compat.js +6 -0
- package/plugin/src/generators/init/compat.js.map +1 -0
- package/plugin/src/generators/init/init.d.ts +5 -0
- package/plugin/src/generators/init/init.js +33 -0
- package/plugin/src/generators/init/init.js.map +1 -0
- package/plugin/src/generators/init/schema.json +6 -0
- package/plugin/src/index.d.ts +1 -0
- package/plugin/src/index.js +6 -0
- package/plugin/src/index.js.map +1 -0
package/README.md
CHANGED
|
@@ -41,10 +41,10 @@ export class Scene {}
|
|
|
41
41
|
- Custom Element tags follow this rule: `ngt-` + THREE classes in **kebab-case**. `Mesh` -> `ngt-mesh`
|
|
42
42
|
- `schemas: [CUSTOM_ELEMENTS_SCHEMA]` allows us to use custom tags on the template. This is Angular's limitation at the moment
|
|
43
43
|
|
|
44
|
-
2. Render `<ngt-canvas>` component, use `Scene` component above to pass into `[
|
|
44
|
+
2. Render `<ngt-canvas>` component, use `Scene` component above to pass into `[sceneGraph]` input on `<ngt-canvas>`
|
|
45
45
|
|
|
46
46
|
```html
|
|
47
|
-
<ngt-canvas [
|
|
47
|
+
<ngt-canvas [sceneGraph]="Scene" />
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
- `ngt-canvas` creates the basic building blocks of THREE.js: a default `WebGLRenderer`, a default `Scene`, and a default `PerspectiveCamera`
|
package/esm2020/index.mjs
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
export * from './lib/canvas';
|
|
2
|
-
export * from './lib/
|
|
2
|
+
export * from './lib/di/before-render';
|
|
3
3
|
export * from './lib/di/catalogue';
|
|
4
|
+
export * from './lib/di/destroy';
|
|
5
|
+
export * from './lib/di/ref';
|
|
4
6
|
export * from './lib/directives/args';
|
|
5
7
|
export * from './lib/directives/repeat';
|
|
6
|
-
export * from './lib/
|
|
8
|
+
export * from './lib/loader';
|
|
9
|
+
export * from './lib/pipes/push';
|
|
10
|
+
export * from './lib/portal';
|
|
7
11
|
export * from './lib/stores/rx-store';
|
|
12
|
+
export * from './lib/stores/store';
|
|
13
|
+
export * from './lib/types';
|
|
14
|
+
export { createAttachFunction } from './lib/utils/attach';
|
|
8
15
|
export * from './lib/utils/instance';
|
|
9
|
-
export * from './lib/utils/update';
|
|
10
16
|
export * from './lib/utils/is';
|
|
11
|
-
export * from './lib/
|
|
12
|
-
export * from './lib/
|
|
13
|
-
|
|
14
|
-
export * from './lib/pipes/push';
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9jYW52YXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGkvY2F0YWxvZ3VlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvYXJncyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3JlcGVhdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdG9yZXMvc3RvcmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RvcmVzL3J4LXN0b3JlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL2luc3RhbmNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL3VwZGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9pcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2FkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGkvcmVmJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpL2Rlc3Ryb3knO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvcHVzaCc7XG4iXX0=
|
|
17
|
+
export * from './lib/utils/make';
|
|
18
|
+
export * from './lib/utils/update';
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxRCxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvY2FudmFzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpL2JlZm9yZS1yZW5kZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGkvY2F0YWxvZ3VlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpL2Rlc3Ryb3knO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGkvcmVmJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvYXJncyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3JlcGVhdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2FkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvcHVzaCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wb3J0YWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RvcmVzL3J4LXN0b3JlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0b3Jlcy9zdG9yZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90eXBlcyc7XG5leHBvcnQgeyBjcmVhdGVBdHRhY2hGdW5jdGlvbiB9IGZyb20gJy4vbGliL3V0aWxzL2F0dGFjaCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9pbnN0YW5jZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9pcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9tYWtlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL3VwZGF0ZSc7XG4iXX0=
|
package/esm2020/lib/canvas.mjs
CHANGED
|
@@ -1,26 +1,13 @@
|
|
|
1
1
|
import { ChangeDetectorRef, Component, createEnvironmentInjector, ElementRef, EnvironmentInjector, EventEmitter, HostBinding, inject, Input, Output, Type, ViewChild, ViewContainerRef, } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { NgxResize, provideNgxResizeOptions } from 'ngx-resize';
|
|
3
3
|
import { filter } from 'rxjs';
|
|
4
|
+
import { injectNgtLoader } from './loader';
|
|
4
5
|
import { provideNgtRenderer } from './renderer/provider';
|
|
5
6
|
import { NgtRxStore } from './stores/rx-store';
|
|
6
7
|
import { NgtStore, rootStateMap } from './stores/store';
|
|
7
8
|
import { is } from './utils/is';
|
|
8
9
|
import { createPointerEvents } from './web/events';
|
|
9
|
-
import { injectNgtLoader } from './loader';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
|
-
export class NgtCanvasContainer {
|
|
12
|
-
constructor() {
|
|
13
|
-
this.canvasResize = injectNgxResize();
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
NgtCanvasContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: NgtCanvasContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
17
|
-
NgtCanvasContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: NgtCanvasContainer, isStandalone: true, selector: "ngt-canvas-container", outputs: { canvasResize: "canvasResize" }, providers: [provideNgxResizeOptions({ emitInZone: false })], ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host{display:block;width:100%;height:100%}\n"] });
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: NgtCanvasContainer, decorators: [{
|
|
19
|
-
type: Component,
|
|
20
|
-
args: [{ selector: 'ngt-canvas-container', standalone: true, template: '<ng-content />', providers: [provideNgxResizeOptions({ emitInZone: false })], styles: [":host{display:block;width:100%;height:100%}\n"] }]
|
|
21
|
-
}], propDecorators: { canvasResize: [{
|
|
22
|
-
type: Output
|
|
23
|
-
}] } });
|
|
24
11
|
export class NgtCanvas extends NgtRxStore {
|
|
25
12
|
constructor() {
|
|
26
13
|
super(...arguments);
|
|
@@ -158,7 +145,9 @@ export class NgtCanvas extends NgtRxStore {
|
|
|
158
145
|
compoundPrefixes: this.compoundPrefixes,
|
|
159
146
|
}),
|
|
160
147
|
], this.envInjector);
|
|
161
|
-
this.glRef = this.glAnchor.createComponent(this.sceneGraph, {
|
|
148
|
+
this.glRef = this.glAnchor.createComponent(this.sceneGraph, {
|
|
149
|
+
environmentInjector: this.glEnvInjector,
|
|
150
|
+
});
|
|
162
151
|
this.glRef.changeDetectorRef.detach();
|
|
163
152
|
// here, we override the detectChanges to also call detectChanges on the ComponentRef
|
|
164
153
|
this.overrideDetectChanges();
|
|
@@ -184,20 +173,18 @@ export class NgtCanvas extends NgtRxStore {
|
|
|
184
173
|
}
|
|
185
174
|
}
|
|
186
175
|
NgtCanvas.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: NgtCanvas, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
187
|
-
NgtCanvas.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: NgtCanvas, isStandalone: true, selector: "ngt-canvas", inputs: { sceneGraph: "sceneGraph", 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.hostClass", "style.pointerEvents": "this.pointerEvents" } }, providers: [NgtStore], viewQueries: [{ propertyName: "glCanvas", first: true, predicate: ["glCanvas"], descendants: true, static: true }, { propertyName: "glAnchor", first: true, predicate: ["
|
|
188
|
-
<
|
|
176
|
+
NgtCanvas.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: NgtCanvas, isStandalone: true, selector: "ngt-canvas", inputs: { sceneGraph: "sceneGraph", 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.hostClass", "style.pointerEvents": "this.pointerEvents" } }, 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, ngImport: i0, template: `
|
|
177
|
+
<div (ngxResize)="onResize($event)" style="height: 100%; width: 100%;">
|
|
189
178
|
<canvas #glCanvas style="display: block;"></canvas>
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
`, isInline: true, styles: [":host{display:block;position:relative;width:100%;height:100%;overflow:hidden}\n"], dependencies: [{ kind: "component", type: NgtCanvasContainer, selector: "ngt-canvas-container", outputs: ["canvasResize"] }] });
|
|
179
|
+
</div>
|
|
180
|
+
`, 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"] }] });
|
|
193
181
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: NgtCanvas, decorators: [{
|
|
194
182
|
type: Component,
|
|
195
183
|
args: [{ selector: 'ngt-canvas', standalone: true, template: `
|
|
196
|
-
<
|
|
184
|
+
<div (ngxResize)="onResize($event)" style="height: 100%; width: 100%;">
|
|
197
185
|
<canvas #glCanvas style="display: block;"></canvas>
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
`, imports: [NgtCanvasContainer], providers: [NgtStore], styles: [":host{display:block;position:relative;width:100%;height:100%;overflow:hidden}\n"] }]
|
|
186
|
+
</div>
|
|
187
|
+
`, imports: [NgxResize], providers: [NgtStore, provideNgxResizeOptions({ emitInZone: false })], styles: [":host{display:block;position:relative;width:100%;height:100%;overflow:hidden}\n"] }]
|
|
201
188
|
}], propDecorators: { hostClass: [{
|
|
202
189
|
type: HostBinding,
|
|
203
190
|
args: ['class.ngt-canvas']
|
|
@@ -245,6 +232,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImpor
|
|
|
245
232
|
args: ['glCanvas', { static: true }]
|
|
246
233
|
}], glAnchor: [{
|
|
247
234
|
type: ViewChild,
|
|
248
|
-
args: ['
|
|
235
|
+
args: ['glCanvas', { static: true, read: ViewContainerRef }]
|
|
249
236
|
}] } });
|
|
250
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvY2FudmFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUVULHlCQUF5QixFQUN6QixVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBQ04sSUFBSSxFQUNKLFNBQVMsRUFDVCxnQkFBZ0IsR0FDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBbUIsdUJBQXVCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdkYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQWlCM0MsTUFBTSxPQUFPLGtCQUFrQjtJQWYvQjtRQWdCYyxpQkFBWSxHQUFHLGVBQWUsRUFBRSxDQUFDO0tBQzlDOzsrR0FGWSxrQkFBa0I7bUdBQWxCLGtCQUFrQiw4R0FGaEIsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLDBCQVZqRCxnQkFBZ0I7MkZBWWpCLGtCQUFrQjtrQkFmOUIsU0FBUzsrQkFDSSxzQkFBc0IsY0FDcEIsSUFBSSxZQUNOLGdCQUFn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RSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIGNyZWF0ZUVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgRWxlbWVudFJlZixcbiAgICBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVHlwZSxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3ROZ3hSZXNpemUsIE5neFJlc2l6ZVJlc3VsdCwgcHJvdmlkZU5neFJlc2l6ZU9wdGlvbnMgfSBmcm9tICduZ3gtcmVzaXplJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgcHJvdmlkZU5ndFJlbmRlcmVyIH0gZnJvbSAnLi9yZW5kZXJlci9wcm92aWRlcic7XG5pbXBvcnQgeyBOZ3RSeFN0b3JlIH0gZnJvbSAnLi9zdG9yZXMvcngtc3RvcmUnO1xuaW1wb3J0IHsgTmd0U3RvcmUsIHJvb3RTdGF0ZU1hcCB9IGZyb20gJy4vc3RvcmVzL3N0b3JlJztcbmltcG9ydCB0eXBlIHsgTmd0Q2FudmFzSW5wdXRzLCBOZ3REb21FdmVudCwgTmd0RHByLCBOZ3RTdGF0ZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgaXMgfSBmcm9tICcuL3V0aWxzL2lzJztcbmltcG9ydCB7IGNyZWF0ZVBvaW50ZXJFdmVudHMgfSBmcm9tICcuL3dlYi9ldmVudHMnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0TG9hZGVyIH0gZnJvbSAnLi9sb2FkZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndC1jYW52YXMtY29udGFpbmVyJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQgLz4nLFxuICAgIHN0eWxlczogW1xuICAgICAgICBgXG4gICAgICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICBgLFxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbcHJvdmlkZU5neFJlc2l6ZU9wdGlvbnMoeyBlbWl0SW5ab25lOiBmYWxzZSB9KV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndENhbnZhc0NvbnRhaW5lciB7XG4gICAgQE91dHB1dCgpIGNhbnZhc1Jlc2l6ZSA9IGluamVjdE5neFJlc2l6ZSgpO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndC1jYW52YXMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5ndC1jYW52YXMtY29udGFpbmVyIChjYW52YXNSZXNpemUpPVwib25SZXNpemUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPGNhbnZhcyAjZ2xDYW52YXMgc3R5bGU9XCJkaXNwbGF5OiBibG9jaztcIj48L2NhbnZhcz5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgI2dsQW5jaG9yIC8+XG4gICAgICAgIDwvbmd0LWNhbnZhcy1jb250YWluZXI+XG4gICAgYCxcbiAgICBpbXBvcnRzOiBbTmd0Q2FudmFzQ29udGFpbmVyXSxcbiAgICBwcm92aWRlcnM6IFtOZ3RTdG9yZV0sXG4gICAgc3R5bGVzOiBbXG4gICAgICAgIGBcbiAgICAgICAgICAgIDpob3N0IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICB9XG4gICAgICAgIGAsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0Q2FudmFzIGV4dGVuZHMgTmd0UnhTdG9yZTxOZ3RDYW52YXNJbnB1dHM+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVudkluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaG9zdCA9IGluamVjdChFbGVtZW50UmVmKSBhcyBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlID0gaW5qZWN0KE5ndFN0b3JlKTtcblxuICAgIG92ZXJyaWRlIGluaXRpYWxpemUoKSB7XG4gICAgICAgIHN1cGVyLmluaXRpYWxpemUoKTtcbiAgICAgICAgdGhpcy5zZXQoe1xuICAgICAgICAgICAgc2hhZG93czogZmFsc2UsXG4gICAgICAgICAgICBsaW5lYXI6IGZhbHNlLFxuICAgICAgICAgICAgZmxhdDogZmFsc2UsXG4gICAgICAgICAgICBsZWdhY3k6IGZhbHNlLFxuICAgICAgICAgICAgb3J0aG9ncmFwaGljOiBmYWxzZSxcbiAgICAgICAgICAgIGZyYW1lbG9vcDogJ2Fsd2F5cycsXG4gICAgICAgICAgICBkcHI6IFsxLCAyXSxcbiAgICAgICAgICAgIGV2ZW50czogY3JlYXRlUG9pbnRlckV2ZW50cyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5uZ3QtY2FudmFzJykgcmVhZG9ubHkgaG9zdENsYXNzID0gdHJ1ZTtcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLnBvaW50ZXJFdmVudHMnKSBnZXQgcG9pbnRlckV2ZW50cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdldmVudFNvdXJjZScpICE9PSB0aGlzLmhvc3QubmF0aXZlRWxlbWVudCA/ICdub25lJyA6ICdhdXRvJztcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzY2VuZUdyYXBoITogVHlwZTxhbnk+O1xuICAgIEBJbnB1dCgpIGNvbXBvdW5kUHJlZml4ZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICBASW5wdXQoKSBzZXQgbGluZWFyKGxpbmVhcjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGxpbmVhciB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbGVnYWN5KGxlZ2FjeTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGxlZ2FjeSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZmxhdChmbGF0OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZmxhdCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgb3J0aG9ncmFwaGljKG9ydGhvZ3JhcGhpYzogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IG9ydGhvZ3JhcGhpYyB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZnJhbWVsb29wKGZyYW1lbG9vcDogTmd0Q2FudmFzSW5wdXRzWydmcmFtZWxvb3AnXSkge1xuICAgICAgICB0aGlzLnNldCh7IGZyYW1lbG9vcCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZHByKGRwcjogTmd0RHByKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZHByIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCByYXljYXN0ZXIocmF5Y2FzdGVyOiBQYXJ0aWFsPFRIUkVFLlJheWNhc3Rlcj4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyByYXljYXN0ZXIgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHNoYWRvd3Moc2hhZG93czogYm9vbGVhbiB8IFBhcnRpYWw8VEhSRUUuV2ViR0xTaGFkb3dNYXA+KSB7XG4gICAgICAgIHRoaXMuc2V0KHtcbiAgICAgICAgICAgIHNoYWRvd3M6IHR5cGVvZiBzaGFkb3dzID09PSAnb2JqZWN0JyA/IChzaGFkb3dzIGFzIFBhcnRpYWw8VEhSRUUuV2ViR0xTaGFkb3dNYXA+KSA6IHNoYWRvd3MsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBjYW1lcmEoY2FtZXJhOiBOZ3RDYW52YXNJbnB1dHNbJ2NhbWVyYSddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgY2FtZXJhIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBnbChnbDogTmd0Q2FudmFzSW5wdXRzWydnbCddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZ2wgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGV2ZW50U291cmNlKGV2ZW50U291cmNlOiBOZ3RDYW52YXNJbnB1dHNbJ2V2ZW50U291cmNlJ10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBldmVudFNvdXJjZSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZXZlbnRQcmVmaXgoZXZlbnRQcmVmaXg6IE5ndENhbnZhc0lucHV0c1snZXZlbnRQcmVmaXgnXSkge1xuICAgICAgICB0aGlzLnNldCh7IGV2ZW50UHJlZml4IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBsb29rQXQobG9va0F0OiBOZ3RDYW52YXNJbnB1dHNbJ2xvb2tBdCddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbG9va0F0IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBwZXJmb3JtYW5jZShwZXJmb3JtYW5jZTogTmd0Q2FudmFzSW5wdXRzWydwZXJmb3JtYW5jZSddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgcGVyZm9ybWFuY2UgfSk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIGNyZWF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE5ndFN0YXRlPigpO1xuICAgIEBPdXRwdXQoKSBwb2ludGVyTWlzc2VkID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuXG4gICAgQFZpZXdDaGlsZCgnZ2xDYW52YXMnLCB7IHN0YXRpYzogdHJ1ZSB9KSBnbENhbnZhcyE6IEVsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoJ2dsQW5jaG9yJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgZ2xBbmNob3IhOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gICAgcHJpdmF0ZSBnbFJlZj86IENvbXBvbmVudFJlZjx1bmtub3duPjtcbiAgICBwcml2YXRlIGdsRW52SW5qZWN0b3I/OiBFbnZpcm9ubWVudEluamVjdG9yO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5nZXQoJ2V2ZW50U291cmNlJykpIHtcbiAgICAgICAgICAgIC8vIHNldCBkZWZhdWx0IGV2ZW50IHNvdXJjZSB0byB0aGUgaG9zdCBlbGVtZW50XG4gICAgICAgICAgICB0aGlzLmV2ZW50U291cmNlID0gdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wb2ludGVyTWlzc2VkLm9ic2VydmVkKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNldCh7XG4gICAgICAgICAgICAgICAgb25Qb2ludGVyTWlzc2VkOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb2ludGVyTWlzc2VkLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2V0dXAgTmd0U3RvcmVcbiAgICAgICAgdGhpcy5zdG9yZS5pbml0KCk7XG5cbiAgICAgICAgLy8gc2V0IHJvb3RTdGF0ZU1hcFxuICAgICAgICByb290U3RhdGVNYXAuc2V0KHRoaXMuZ2xDYW52YXMubmF0aXZlRWxlbWVudCwgdGhpcy5zdG9yZSk7XG5cbiAgICAgICAgLy8gc3Vic2NyaWJlIHRvIHN0b3JlIHRvIGxpc3RlbiBmb3IgcmVhZHkgc3RhdGVcbiAgICAgICAgdGhpcy5ob2xkKHRoaXMuc3RvcmUuc2VsZWN0KCdyZWFkeScpLnBpcGUoZmlsdGVyKChyZWFkeSkgPT4gcmVhZHkpKSwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdG9yZVJlYWR5KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uUmVzaXplKHsgd2lkdGgsIGhlaWdodCB9OiBOZ3hSZXNpemVSZXN1bHQpIHtcbiAgICAgICAgaWYgKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc3RvcmUuaXNJbml0KSB0aGlzLnN0b3JlLmluaXQoKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuY29uZmlndXJlKHRoaXMuZ2V0KCksIHRoaXMuZ2xDYW52YXMubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0b3JlUmVhZHkoKSB7XG4gICAgICAgIC8vIGNhbnZhcyBpcyByZWFkeSwgbGV0J3MgYWN0aXZhdGUgdGhlIGxvb3BcbiAgICAgICAgdGhpcy5zdG9yZS5zZXQoKHN0YXRlKSA9PiAoeyBpbnRlcm5hbDogeyAuLi5zdGF0ZS5pbnRlcm5hbCwgYWN0aXZlOiB0cnVlIH0gfSkpO1xuXG4gICAgICAgIGNvbnN0IGlucHV0cyA9IHRoaXMuZ2V0KCk7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdG9yZS5nZXQoKTtcblxuICAgICAgICAvLyBjb25uZWN0IHRvIGV2ZW50IHNvdXJjZVxuICAgICAgICBzdGF0ZS5ldmVudHMuY29ubmVjdD8uKGlzLnJlZihpbnB1dHMuZXZlbnRTb3VyY2UpID8gaW5wdXRzLmV2ZW50U291cmNlLm5hdGl2ZUVsZW1lbnQgOiBpbnB1dHMuZXZlbnRTb3VyY2UpO1xuXG4gICAgICAgIC8vIHNldHVwIGNvbXB1dGUgZnVuY3Rpb24gZm9yIGV2ZW50c1xuICAgICAgICBpZiAoaW5wdXRzLmV2ZW50UHJlZml4KSB7XG4gICAgICAgICAgICBzdGF0ZS5zZXRFdmVudHMoe1xuICAgICAgICAgICAgICAgIGNvbXB1dGU6IChldmVudCwgc3RvcmUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5uZXJTdGF0ZSA9IHN0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB4ID0gZXZlbnRbKGlucHV0cy5ldmVudFByZWZpeCArICdYJykgYXMga2V5b2YgTmd0RG9tRXZlbnRdIGFzIG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeSA9IGV2ZW50WyhpbnB1dHMuZXZlbnRQcmVmaXggKyAnWScpIGFzIGtleW9mIE5ndERvbUV2ZW50XSBhcyBudW1iZXI7XG4gICAgICAgICAgICAgICAgICAgIGlubmVyU3RhdGUucG9pbnRlci5zZXQoKHggLyBpbm5lclN0YXRlLnNpemUud2lkdGgpICogMiAtIDEsIC0oeSAvIGlubmVyU3RhdGUuc2l6ZS5oZWlnaHQpICogMiArIDEpO1xuICAgICAgICAgICAgICAgICAgICBpbm5lclN0YXRlLnJheWNhc3Rlci5zZXRGcm9tQ2FtZXJhKGlubmVyU3RhdGUucG9pbnRlciwgaW5uZXJTdGF0ZS5jYW1lcmEpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVtaXQgY3JlYXRlZCBldmVudCBpZiBvYnNlcnZlZFxuICAgICAgICBpZiAodGhpcy5jcmVhdGVkLm9ic2VydmVkKSB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZWQuZW1pdCh0aGlzLnN0b3JlLmdldCgpKTtcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJlbmRlclxuICAgICAgICBpZiAodGhpcy5nbFJlZikge1xuICAgICAgICAgICAgdGhpcy5nbFJlZi5kZXN0cm95KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nbEVudkluamVjdG9yID0gY3JlYXRlRW52aXJvbm1lbnRJbmplY3RvcihcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGVOZ3RSZW5kZXJlcih7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZTogdGhpcy5zdG9yZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZURldGVjdG9yUmVmOiB0aGlzLmNkcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvdW5kUHJlZml4ZXM6IHRoaXMuY29tcG91bmRQcmVmaXhlcyxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB0aGlzLmVudkluamVjdG9yXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5nbFJlZiA9IHRoaXMuZ2xBbmNob3IuY3JlYXRlQ29tcG9uZW50KHRoaXMuc2NlbmVHcmFwaCwgeyBlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLmdsRW52SW5qZWN0b3IgfSk7XG4gICAgICAgICAgICB0aGlzLmdsUmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGFjaCgpO1xuXG4gICAgICAgICAgICAvLyBoZXJlLCB3ZSBvdmVycmlkZSB0aGUgZGV0ZWN0Q2hhbmdlcyB0byBhbHNvIGNhbGwgZGV0ZWN0Q2hhbmdlcyBvbiB0aGUgQ29tcG9uZW50UmVmXG4gICAgICAgICAgICB0aGlzLm92ZXJyaWRlRGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZ2xSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuZ2xSZWYuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmdsRW52SW5qZWN0b3IpIHtcbiAgICAgICAgICAgIHRoaXMuZ2xFbnZJbmplY3Rvci5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICAgICAgaW5qZWN0Tmd0TG9hZGVyLmRlc3Ryb3koKTtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG92ZXJyaWRlRGV0ZWN0Q2hhbmdlcygpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxEZXRlY3RDaGFuZ2VzID0gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcy5iaW5kKHRoaXMuY2RyKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcyA9ICgpID0+IHtcbiAgICAgICAgICAgIG9yaWdpbmFsRGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5nbFJlZj8uY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvY2FudmFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUVULHlCQUF5QixFQUN6QixVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBQ04sSUFBSSxFQUNKLFNBQVMsRUFDVCxnQkFBZ0IsR0FDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBbUIsdUJBQXVCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQXdCbkQsTUFBTSxPQUFPLFNBQVUsU0FBUSxVQUEyQjtJQXRCMUQ7O1FBdUJxQixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMxQyxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBNEIsQ0FBQztRQUNyRCxVQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBZ0JBLGNBQVMsR0FBRyxJ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LENBQUMsU0FBUyxDQUFDLGFBQ1QsQ0FBQyxRQUFRLEVBQUUsdUJBQXVCLENBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzs4QkFpQzNCLFNBQVM7c0JBQWxELFdBQVc7dUJBQUMsa0JBQWtCO2dCQUNTLGFBQWE7c0JBQXBELFdBQVc7dUJBQUMscUJBQXFCO2dCQUl6QixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFTyxNQUFNO3NCQUFsQixLQUFLO2dCQUlPLE1BQU07c0JBQWxCLEtBQUs7Z0JBSU8sSUFBSTtzQkFBaEIsS0FBSztnQkFJTyxZQUFZO3NCQUF4QixLQUFLO2dCQUlPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSU8sR0FBRztzQkFBZixLQUFLO2dCQUlPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSU8sT0FBTztzQkFBbkIsS0FBSztnQkFNTyxNQUFNO3NCQUFsQixLQUFLO2dCQUlPLEVBQUU7c0JBQWQsS0FBSztnQkFJTyxXQUFXO3NCQUF2QixLQUFLO2dCQUlPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBSU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxXQUFXO3NCQUF2QixLQUFLO2dCQUlJLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFFa0MsUUFBUTtzQkFBaEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUMwQixRQUFRO3NCQUF4RSxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIGNyZWF0ZUVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgRWxlbWVudFJlZixcbiAgICBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVHlwZSxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hSZXNpemUsIE5neFJlc2l6ZVJlc3VsdCwgcHJvdmlkZU5neFJlc2l6ZU9wdGlvbnMgfSBmcm9tICduZ3gtcmVzaXplJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0TG9hZGVyIH0gZnJvbSAnLi9sb2FkZXInO1xuaW1wb3J0IHsgcHJvdmlkZU5ndFJlbmRlcmVyIH0gZnJvbSAnLi9yZW5kZXJlci9wcm92aWRlcic7XG5pbXBvcnQgeyBOZ3RSeFN0b3JlIH0gZnJvbSAnLi9zdG9yZXMvcngtc3RvcmUnO1xuaW1wb3J0IHsgTmd0U3RvcmUsIHJvb3RTdGF0ZU1hcCB9IGZyb20gJy4vc3RvcmVzL3N0b3JlJztcbmltcG9ydCB0eXBlIHsgTmd0Q2FudmFzSW5wdXRzLCBOZ3REb21FdmVudCwgTmd0RHByLCBOZ3RTdGF0ZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgaXMgfSBmcm9tICcuL3V0aWxzL2lzJztcbmltcG9ydCB7IGNyZWF0ZVBvaW50ZXJFdmVudHMgfSBmcm9tICcuL3dlYi9ldmVudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndC1jYW52YXMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiAobmd4UmVzaXplKT1cIm9uUmVzaXplKCRldmVudClcIiBzdHlsZT1cImhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7XCI+XG4gICAgICAgICAgICA8Y2FudmFzICNnbENhbnZhcyBzdHlsZT1cImRpc3BsYXk6IGJsb2NrO1wiPjwvY2FudmFzPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ3hSZXNpemVdLFxuICAgIHByb3ZpZGVyczogW05ndFN0b3JlLCBwcm92aWRlTmd4UmVzaXplT3B0aW9ucyh7IGVtaXRJblpvbmU6IGZhbHNlIH0pXSxcbiAgICBzdHlsZXM6IFtcbiAgICAgICAgYFxuICAgICAgICAgICAgOmhvc3Qge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgYCxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RDYW52YXMgZXh0ZW5kcyBOZ3RSeFN0b3JlPE5ndENhbnZhc0lucHV0cz4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZW52SW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3Rvcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBob3N0ID0gaW5qZWN0KEVsZW1lbnRSZWYpIGFzIEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuXG4gICAgb3ZlcnJpZGUgaW5pdGlhbGl6ZSgpIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLnNldCh7XG4gICAgICAgICAgICBzaGFkb3dzOiBmYWxzZSxcbiAgICAgICAgICAgIGxpbmVhcjogZmFsc2UsXG4gICAgICAgICAgICBmbGF0OiBmYWxzZSxcbiAgICAgICAgICAgIGxlZ2FjeTogZmFsc2UsXG4gICAgICAgICAgICBvcnRob2dyYXBoaWM6IGZhbHNlLFxuICAgICAgICAgICAgZnJhbWVsb29wOiAnYWx3YXlzJyxcbiAgICAgICAgICAgIGRwcjogWzEsIDJdLFxuICAgICAgICAgICAgZXZlbnRzOiBjcmVhdGVQb2ludGVyRXZlbnRzLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLm5ndC1jYW52YXMnKSByZWFkb25seSBob3N0Q2xhc3MgPSB0cnVlO1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUucG9pbnRlckV2ZW50cycpIGdldCBwb2ludGVyRXZlbnRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoJ2V2ZW50U291cmNlJykgIT09IHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50ID8gJ25vbmUnIDogJ2F1dG8nO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNjZW5lR3JhcGghOiBUeXBlPGFueT47XG4gICAgQElucHV0KCkgY29tcG91bmRQcmVmaXhlczogc3RyaW5nW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIHNldCBsaW5lYXIobGluZWFyOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbGluZWFyIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBsZWdhY3kobGVnYWN5OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbGVnYWN5IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBmbGF0KGZsYXQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmbGF0IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBvcnRob2dyYXBoaWMob3J0aG9ncmFwaGljOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgb3J0aG9ncmFwaGljIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBmcmFtZWxvb3AoZnJhbWVsb29wOiBOZ3RDYW52YXNJbnB1dHNbJ2ZyYW1lbG9vcCddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZnJhbWVsb29wIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBkcHIoZHByOiBOZ3REcHIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkcHIgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHJheWNhc3RlcihyYXljYXN0ZXI6IFBhcnRpYWw8VEhSRUUuUmF5Y2FzdGVyPikge1xuICAgICAgICB0aGlzLnNldCh7IHJheWNhc3RlciB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgc2hhZG93cyhzaGFkb3dzOiBib29sZWFuIHwgUGFydGlhbDxUSFJFRS5XZWJHTFNoYWRvd01hcD4pIHtcbiAgICAgICAgdGhpcy5zZXQoe1xuICAgICAgICAgICAgc2hhZG93czogdHlwZW9mIHNoYWRvd3MgPT09ICdvYmplY3QnID8gKHNoYWRvd3MgYXMgUGFydGlhbDxUSFJFRS5XZWJHTFNoYWRvd01hcD4pIDogc2hhZG93cyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGNhbWVyYShjYW1lcmE6IE5ndENhbnZhc0lucHV0c1snY2FtZXJhJ10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBjYW1lcmEgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGdsKGdsOiBOZ3RDYW52YXNJbnB1dHNbJ2dsJ10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBnbCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZXZlbnRTb3VyY2UoZXZlbnRTb3VyY2U6IE5ndENhbnZhc0lucHV0c1snZXZlbnRTb3VyY2UnXSkge1xuICAgICAgICB0aGlzLnNldCh7IGV2ZW50U291cmNlIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBldmVudFByZWZpeChldmVudFByZWZpeDogTmd0Q2FudmFzSW5wdXRzWydldmVudFByZWZpeCddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZXZlbnRQcmVmaXggfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGxvb2tBdChsb29rQXQ6IE5ndENhbnZhc0lucHV0c1snbG9va0F0J10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBsb29rQXQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHBlcmZvcm1hbmNlKHBlcmZvcm1hbmNlOiBOZ3RDYW52YXNJbnB1dHNbJ3BlcmZvcm1hbmNlJ10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBwZXJmb3JtYW5jZSB9KTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgY3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Tmd0U3RhdGU+KCk7XG4gICAgQE91dHB1dCgpIHBvaW50ZXJNaXNzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdnbENhbnZhcycsIHsgc3RhdGljOiB0cnVlIH0pIGdsQ2FudmFzITogRWxlbWVudFJlZjxIVE1MQ2FudmFzRWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgnZ2xDYW52YXMnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBnbEFuY2hvciE6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICBwcml2YXRlIGdsUmVmPzogQ29tcG9uZW50UmVmPHVua25vd24+O1xuICAgIHByaXZhdGUgZ2xFbnZJbmplY3Rvcj86IEVudmlyb25tZW50SW5qZWN0b3I7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmdldCgnZXZlbnRTb3VyY2UnKSkge1xuICAgICAgICAgICAgLy8gc2V0IGRlZmF1bHQgZXZlbnQgc291cmNlIHRvIHRoZSBob3N0IGVsZW1lbnRcbiAgICAgICAgICAgIHRoaXMuZXZlbnRTb3VyY2UgPSB0aGlzLmhvc3QubmF0aXZlRWxlbWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnBvaW50ZXJNaXNzZWQub2JzZXJ2ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0KHtcbiAgICAgICAgICAgICAgICBvblBvaW50ZXJNaXNzZWQ6IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvaW50ZXJNaXNzZWQuZW1pdChldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzZXR1cCBOZ3RTdG9yZVxuICAgICAgICB0aGlzLnN0b3JlLmluaXQoKTtcblxuICAgICAgICAvLyBzZXQgcm9vdFN0YXRlTWFwXG4gICAgICAgIHJvb3RTdGF0ZU1hcC5zZXQodGhpcy5nbENhbnZhcy5uYXRpdmVFbGVtZW50LCB0aGlzLnN0b3JlKTtcblxuICAgICAgICAvLyBzdWJzY3JpYmUgdG8gc3RvcmUgdG8gbGlzdGVuIGZvciByZWFkeSBzdGF0ZVxuICAgICAgICB0aGlzLmhvbGQodGhpcy5zdG9yZS5zZWxlY3QoJ3JlYWR5JykucGlwZShmaWx0ZXIoKHJlYWR5KSA9PiByZWFkeSkpLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlUmVhZHkoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25SZXNpemUoeyB3aWR0aCwgaGVpZ2h0IH06IE5neFJlc2l6ZVJlc3VsdCkge1xuICAgICAgICBpZiAod2lkdGggPiAwICYmIGhlaWdodCA+IDApIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5zdG9yZS5pc0luaXQpIHRoaXMuc3RvcmUuaW5pdCgpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5jb25maWd1cmUodGhpcy5nZXQoKSwgdGhpcy5nbENhbnZhcy5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RvcmVSZWFkeSgpIHtcbiAgICAgICAgLy8gY2FudmFzIGlzIHJlYWR5LCBsZXQncyBhY3RpdmF0ZSB0aGUgbG9vcFxuICAgICAgICB0aGlzLnN0b3JlLnNldCgoc3RhdGUpID0+ICh7IGludGVybmFsOiB7IC4uLnN0YXRlLmludGVybmFsLCBhY3RpdmU6IHRydWUgfSB9KSk7XG5cbiAgICAgICAgY29uc3QgaW5wdXRzID0gdGhpcy5nZXQoKTtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0b3JlLmdldCgpO1xuXG4gICAgICAgIC8vIGNvbm5lY3QgdG8gZXZlbnQgc291cmNlXG4gICAgICAgIHN0YXRlLmV2ZW50cy5jb25uZWN0Py4oaXMucmVmKGlucHV0cy5ldmVudFNvdXJjZSkgPyBpbnB1dHMuZXZlbnRTb3VyY2UubmF0aXZlRWxlbWVudCA6IGlucHV0cy5ldmVudFNvdXJjZSk7XG5cbiAgICAgICAgLy8gc2V0dXAgY29tcHV0ZSBmdW5jdGlvbiBmb3IgZXZlbnRzXG4gICAgICAgIGlmIChpbnB1dHMuZXZlbnRQcmVmaXgpIHtcbiAgICAgICAgICAgIHN0YXRlLnNldEV2ZW50cyh7XG4gICAgICAgICAgICAgICAgY29tcHV0ZTogKGV2ZW50LCBzdG9yZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbm5lclN0YXRlID0gc3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHggPSBldmVudFsoaW5wdXRzLmV2ZW50UHJlZml4ICsgJ1gnKSBhcyBrZXlvZiBOZ3REb21FdmVudF0gYXMgbnVtYmVyO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB5ID0gZXZlbnRbKGlucHV0cy5ldmVudFByZWZpeCArICdZJykgYXMga2V5b2YgTmd0RG9tRXZlbnRdIGFzIG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJTdGF0ZS5wb2ludGVyLnNldCgoeCAvIGlubmVyU3RhdGUuc2l6ZS53aWR0aCkgKiAyIC0gMSwgLSh5IC8gaW5uZXJTdGF0ZS5zaXplLmhlaWdodCkgKiAyICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIGlubmVyU3RhdGUucmF5Y2FzdGVyLnNldEZyb21DYW1lcmEoaW5uZXJTdGF0ZS5wb2ludGVyLCBpbm5lclN0YXRlLmNhbWVyYSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW1pdCBjcmVhdGVkIGV2ZW50IGlmIG9ic2VydmVkXG4gICAgICAgIGlmICh0aGlzLmNyZWF0ZWQub2JzZXJ2ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlZC5lbWl0KHRoaXMuc3RvcmUuZ2V0KCkpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmVuZGVyXG4gICAgICAgIGlmICh0aGlzLmdsUmVmKSB7XG4gICAgICAgICAgICB0aGlzLmdsUmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdsRW52SW5qZWN0b3IgPSBjcmVhdGVFbnZpcm9ubWVudEluamVjdG9yKFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZU5ndFJlbmRlcmVyKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlOiB0aGlzLnN0b3JlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlRGV0ZWN0b3JSZWY6IHRoaXMuY2RyLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG91bmRQcmVmaXhlczogdGhpcy5jb21wb3VuZFByZWZpeGVzLFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHRoaXMuZW52SW5qZWN0b3JcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmdsUmVmID0gdGhpcy5nbEFuY2hvci5jcmVhdGVDb21wb25lbnQodGhpcy5zY2VuZUdyYXBoLCB7XG4gICAgICAgICAgICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy5nbEVudkluamVjdG9yLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmdsUmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGFjaCgpO1xuXG4gICAgICAgICAgICAvLyBoZXJlLCB3ZSBvdmVycmlkZSB0aGUgZGV0ZWN0Q2hhbmdlcyB0byBhbHNvIGNhbGwgZGV0ZWN0Q2hhbmdlcyBvbiB0aGUgQ29tcG9uZW50UmVmXG4gICAgICAgICAgICB0aGlzLm92ZXJyaWRlRGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZ2xSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuZ2xSZWYuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmdsRW52SW5qZWN0b3IpIHtcbiAgICAgICAgICAgIHRoaXMuZ2xFbnZJbmplY3Rvci5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICAgICAgaW5qZWN0Tmd0TG9hZGVyLmRlc3Ryb3koKTtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG92ZXJyaWRlRGV0ZWN0Q2hhbmdlcygpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxEZXRlY3RDaGFuZ2VzID0gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcy5iaW5kKHRoaXMuY2RyKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcyA9ICgpID0+IHtcbiAgICAgICAgICAgIG9yaWdpbmFsRGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5nbFJlZj8uY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { inject } from '@angular/core';
|
|
2
|
+
import { NgtStore } from '../stores/store';
|
|
3
|
+
import { injectNgtDestroy } from './destroy';
|
|
4
|
+
export function injectBeforeRender(cb, priority = 0) {
|
|
5
|
+
try {
|
|
6
|
+
const store = inject(NgtStore);
|
|
7
|
+
const sub = store.get('internal').subscribe((state) => cb(state), priority, store);
|
|
8
|
+
injectNgtDestroy(() => void sub());
|
|
9
|
+
return sub;
|
|
10
|
+
}
|
|
11
|
+
catch (e) {
|
|
12
|
+
throw new Error(`[NGT] "injectBeforeRender" is invoked outside of Constructor Context`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmb3JlLXJlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS9zcmMvbGliL2RpL2JlZm9yZS1yZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTdDLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxFQUFxQyxFQUFFLFFBQVEsR0FBRyxDQUFDO0lBQ2xGLElBQUk7UUFDQSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0IsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkYsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sR0FBRyxDQUFDO0tBQ2Q7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsc0VBQXNFLENBQUMsQ0FBQztLQUMzRjtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndFN0b3JlIH0gZnJvbSAnLi4vc3RvcmVzL3N0b3JlJztcbmltcG9ydCB7IE5ndEJlZm9yZVJlbmRlclJlY29yZCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGluamVjdE5ndERlc3Ryb3kgfSBmcm9tICcuL2Rlc3Ryb3knO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0QmVmb3JlUmVuZGVyKGNiOiBOZ3RCZWZvcmVSZW5kZXJSZWNvcmRbJ2NhbGxiYWNrJ10sIHByaW9yaXR5ID0gMCkge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHN0b3JlID0gaW5qZWN0KE5ndFN0b3JlKTtcbiAgICAgICAgY29uc3Qgc3ViID0gc3RvcmUuZ2V0KCdpbnRlcm5hbCcpLnN1YnNjcmliZSgoc3RhdGUpID0+IGNiKHN0YXRlKSwgcHJpb3JpdHksIHN0b3JlKTtcbiAgICAgICAgaW5qZWN0Tmd0RGVzdHJveSgoKSA9PiB2b2lkIHN1YigpKTtcbiAgICAgICAgcmV0dXJuIHN1YjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgW05HVF0gXCJpbmplY3RCZWZvcmVSZW5kZXJcIiBpcyBpbnZva2VkIG91dHNpZGUgb2YgQ29uc3RydWN0b3IgQ29udGV4dGApO1xuICAgIH1cbn1cbiJdfQ==
|
package/esm2020/lib/loader.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { catchError, forkJoin, from, isObservable, map, of, ReplaySubject, retry, share, switchMap, take, tap, } from 'rxjs';
|
|
2
2
|
import { makeObjectGraph } from './utils/make';
|
|
3
3
|
const cached = new Map();
|
|
4
4
|
function injectLoader(loaderConstructorFactory, input, extensions, onProgress) {
|
|
@@ -52,4 +52,4 @@ injectLoader.preLoad = (loaderConstructorFactory, inputs, extensions) => {
|
|
|
52
52
|
injectLoader(loaderConstructorFactory, inputs, extensions).pipe(take(1)).subscribe();
|
|
53
53
|
};
|
|
54
54
|
export const injectNgtLoader = injectLoader;
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxZQUFZLEVBRVosRUFBRSxFQUNGLEdBQUcsRUFDSCxHQUFHLEVBQ0gsSUFBSSxFQUNKLEtBQUssRUFDTCxLQUFLLEVBQ0wsYUFBYSxFQUNiLFVBQVUsRUFDVixTQUFTLEVBQ1QsUUFBUSxFQUNSLElBQUksR0FDUCxNQUFNLE1BQU0sQ0FBQztBQUdkLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUE0Qi9DLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUEyQixDQUFDO0FBRWxELFNBQVMsWUFBWSxDQUNqQix3QkFBZ0csRUFDaEcsS0FBOEIsRUFDOUIsVUFBZ0MsRUFDaEMsVUFBMkM7SUFFM0MsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUV0RCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQ2IsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDWCxNQUFNLGlCQUFpQixHQUFHLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNELE1BQU0sTUFBTSxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUN2QyxJQUFJLFVBQVUsRUFBRTtZQUNaLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN0QjtRQUNELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFN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ZSxcbiAgICBPYnNlcnZhYmxlLFxuICAgIG9mLFxuICAgIG1hcCxcbiAgICB0YXAsXG4gICAgZnJvbSxcbiAgICByZXRyeSxcbiAgICBzaGFyZSxcbiAgICBSZXBsYXlTdWJqZWN0LFxuICAgIGNhdGNoRXJyb3IsXG4gICAgc3dpdGNoTWFwLFxuICAgIGZvcmtKb2luLFxuICAgIHRha2UsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHR5cGUgeyBHTFRGIH0gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL2xvYWRlcnMvR0xURkxvYWRlcic7XG5pbXBvcnQgdHlwZSB7IE5ndEJyYW5jaGluZ1JldHVybiwgTmd0TG9hZGVyRXh0ZW5zaW9ucywgTmd0TG9hZGVyUmVzdWx0LCBOZ3RPYmplY3RNYXAgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IG1ha2VPYmplY3RHcmFwaCB9IGZyb20gJy4vdXRpbHMvbWFrZSc7XG5cbmludGVyZmFjZSBOZ3RMb2FkZXIge1xuICAgIDxUUmV0dXJuVHlwZSwgVFVybCBleHRlbmRzIHN0cmluZyB8IHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG4gICAgICAgIGxvYWRlckNvbnN0cnVjdG9yRmFjdG9yeTogKGlucHV0czogVFVybCkgPT4gbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gTmd0TG9hZGVyUmVzdWx0PFRSZXR1cm5UeXBlPixcbiAgICAgICAgaW5wdXQ6IFRVcmwgfCBPYnNlcnZhYmxlPFRVcmw+LFxuICAgICAgICBleHRlbnNpb25zPzogTmd0TG9hZGVyRXh0ZW5zaW9ucyxcbiAgICAgICAgb25Qcm9ncmVzcz86IChldmVudDogUHJvZ3Jlc3NFdmVudCkgPT4gdm9pZFxuICAgICk6IE9ic2VydmFibGU8XG4gICAgICAgIFRVcmwgZXh0ZW5kcyBzdHJpbmdbXVxuICAgICAgICAgICAgPyBBcnJheTxOZ3RCcmFuY2hpbmdSZXR1cm48VFJldHVyblR5cGUsIEdMVEYsIEdMVEYgJiBOZ3RPYmplY3RNYXA+PlxuICAgICAgICAgICAgOiBUVXJsIGV4dGVuZHMgb2JqZWN0XG4gICAgICAgICAgICA/IHsgW2tleSBpbiBrZXlvZiBUVXJsXTogTmd0QnJhbmNoaW5nUmV0dXJuPFRSZXR1cm5UeXBlLCBHTFRGLCBHTFRGICYgTmd0T2JqZWN0TWFwPiB9XG4gICAgICAgICAgICA6IE5ndEJyYW5jaGluZ1JldHVybjxUUmV0dXJuVHlwZSwgR0xURiwgR0xURiAmIE5ndE9iamVjdE1hcD5cbiAgICA+O1xuICAgIGRlc3Ryb3k6ICgpID0+IHZvaWQ7XG4gICAgcHJlTG9hZDogPFRSZXR1cm5UeXBlLCBUVXJsIGV4dGVuZHMgc3RyaW5nIHwgc3RyaW5nW10gfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PihcbiAgICAgICAgbG9hZGVyQ29uc3RydWN0b3JGYWN0b3J5OiAoaW5wdXRzOiBUVXJsKSA9PiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBOZ3RMb2FkZXJSZXN1bHQ8VFJldHVyblR5cGU+LFxuICAgICAgICBpbnB1dHM6IFRVcmwgfCBPYnNlcnZhYmxlPFRVcmw+LFxuICAgICAgICBleHRlbnNpb25zPzogTmd0TG9hZGVyRXh0ZW5zaW9uc1xuICAgICkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IHR5cGUgTmd0TG9hZGVyUmVzdWx0czxcbiAgICBUSW5wdXQgZXh0ZW5kcyBzdHJpbmcgfCBzdHJpbmdbXSB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgVFJldHVyblxuPiA9IFRJbnB1dCBleHRlbmRzIHN0cmluZ1tdID8gVFJldHVybltdIDogVElucHV0IGV4dGVuZHMgb2JqZWN0ID8geyBba2V5IGluIGtleW9mIFRJbnB1dF06IFRSZXR1cm4gfSA6IFRSZXR1cm47XG5cbmNvbnN0IGNhY2hlZCA9IG5ldyBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPGFueT4+KCk7XG5cbmZ1bmN0aW9uIGluamVjdExvYWRlcjxUUmV0dXJuVHlwZSwgVFVybCBleHRlbmRzIHN0cmluZyB8IHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG4gICAgbG9hZGVyQ29uc3RydWN0b3JGYWN0b3J5OiAoaW5wdXRzOiBUVXJsKSA9PiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBOZ3RMb2FkZXJSZXN1bHQ8VFJldHVyblR5cGU+LFxuICAgIGlucHV0OiBUVXJsIHwgT2JzZXJ2YWJsZTxUVXJsPixcbiAgICBleHRlbnNpb25zPzogTmd0TG9hZGVyRXh0ZW5zaW9ucyxcbiAgICBvblByb2dyZXNzPzogKGV2ZW50OiBQcm9ncmVzc0V2ZW50KSA9PiB2b2lkXG4pOiBPYnNlcnZhYmxlPE5ndExvYWRlclJlc3VsdHM8VFVybCwgTmd0QnJhbmNoaW5nUmV0dXJuPFRSZXR1cm5UeXBlLCBHTFRGLCBHTFRGICYgTmd0T2JqZWN0TWFwPj4+IHtcbiAgICBjb25zdCB1cmxzJCA9IGlzT2JzZXJ2YWJsZShpbnB1dCkgPyBpbnB1dCA6IG9mKGlucHV0KTtcblxuICAgIHJldHVybiB1cmxzJC5waXBlKFxuICAgICAgICBtYXAoKGlucHV0cykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbG9hZGVyQ29uc3RydWN0b3IgPSBsb2FkZXJDb25zdHJ1Y3RvckZhY3RvcnkoaW5wdXRzKTtcbiAgICAgICAgICAgIGNvbnN0IGxvYWRlciA9IG5ldyBsb2FkZXJDb25zdHJ1Y3RvcigpO1xuICAgICAgICAgICAgaWYgKGV4dGVuc2lvbnMpIHtcbiAgICAgICAgICAgICAgICBleHRlbnNpb25zKGxvYWRlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB1cmxzID0gQXJyYXkuaXNBcnJheShpbnB1dHMpID8gaW5wdXRzIDogdHlwZW9mIGlucHV0cyA9PT0gJ3N0cmluZycgPyBbaW5wdXRzXSA6IE9iamVjdC52YWx1ZXMoaW5wdXRzKTtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgdXJscy5tYXAoKHVybCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNhY2hlZC5oYXModXJsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkLnNldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbShsb2FkZXIubG9hZEFzeW5jKHVybCwgb25Qcm9ncmVzcykpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc2NlbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGRhdGEsIG1ha2VPYmplY3RHcmFwaChkYXRhLnNjZW5lKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRyeSgyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBbTkdUXSBFcnJvciBsb2FkaW5nICR7dXJsfTogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0b3I6ICgpID0+IG5ldyBSZXBsYXlTdWJqZWN0KDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRPbkNvbXBsZXRlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRPbkVycm9yOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRPblJlZkNvdW50WmVybzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZWQuZ2V0KHVybCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgaW5wdXRzLFxuICAgICAgICAgICAgXSBhcyBbQXJyYXk8T2JzZXJ2YWJsZTxhbnk+PiwgVFVybCB8IFRVcmxbXV07XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAoKFtvYnNlcnZhYmxlcyQsIGlucHV0c10pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmb3JrSm9pbihvYnNlcnZhYmxlcyQpLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXN1bHRzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGlucHV0cykpIHJldHVybiByZXN1bHRzO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGlucHV0cyA9PT0gJ3N0cmluZycpIHJldHVybiByZXN1bHRzWzBdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoaW5wdXRzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleXMucmVkdWNlKChyZXN1bHQsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleSBhcyBrZXlvZiB0eXBlb2YgcmVzdWx0XSA9IHJlc3VsdHNba2V5cy5pbmRleE9mKGtleSldO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgfSwge30gYXMgeyBba2V5IGluIGtleW9mIFRVcmxdOiBOZ3RCcmFuY2hpbmdSZXR1cm48VFJldHVyblR5cGUsIEdMVEYsIEdMVEYgJiBOZ3RPYmplY3RNYXA+IH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICk7XG59XG5cbihpbmplY3RMb2FkZXIgYXMgTmd0TG9hZGVyKS5kZXN0cm95ID0gKCkgPT4ge1xuICAgIGNhY2hlZC5jbGVhcigpO1xufTtcblxuKGluamVjdExvYWRlciBhcyBOZ3RMb2FkZXIpLnByZUxvYWQgPSAobG9hZGVyQ29uc3RydWN0b3JGYWN0b3J5LCBpbnB1dHMsIGV4dGVuc2lvbnMpID0+IHtcbiAgICBpbmplY3RMb2FkZXIobG9hZGVyQ29uc3RydWN0b3JGYWN0b3J5LCBpbnB1dHMsIGV4dGVuc2lvbnMpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCk7XG59O1xuXG5leHBvcnQgY29uc3QgaW5qZWN0Tmd0TG9hZGVyID0gaW5qZWN0TG9hZGVyIGFzIE5ndExvYWRlcjtcbiJdfQ==
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBQ1YsUUFBUSxFQUNSLElBQUksRUFDSixZQUFZLEVBQ1osR0FBRyxFQUVILEVBQUUsRUFDRixhQUFhLEVBQ2IsS0FBSyxFQUNMLEtBQUssRUFDTCxTQUFTLEVBQ1QsSUFBSSxFQUNKLEdBQUcsR0FDTixNQUFNLE1BQU0sQ0FBQztBQUdkLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUE0Qi9DLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUEyQixDQUFDO0FBRWxELFNBQVMsWUFBWSxDQUNqQix3QkFBZ0csRUFDaEcsS0FBOEIsRUFDOUIsVUFBZ0MsRUFDaEMsVUFBMkM7SUFFM0MsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUV0RCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQ2IsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDWCxNQUFNLGlCQUFpQixHQUFHLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNELE1BQU0sTUFBTSxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUN2QyxJQUFJLFVBQVUsRUFBRTtZQUNaLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN0QjtRQUNELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFN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XG4gICAgZm9ya0pvaW4sXG4gICAgZnJvbSxcbiAgICBpc09ic2VydmFibGUsXG4gICAgbWFwLFxuICAgIE9ic2VydmFibGUsXG4gICAgb2YsXG4gICAgUmVwbGF5U3ViamVjdCxcbiAgICByZXRyeSxcbiAgICBzaGFyZSxcbiAgICBzd2l0Y2hNYXAsXG4gICAgdGFrZSxcbiAgICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHR5cGUgeyBHTFRGIH0gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL2xvYWRlcnMvR0xURkxvYWRlcic7XG5pbXBvcnQgdHlwZSB7IE5ndEJyYW5jaGluZ1JldHVybiwgTmd0TG9hZGVyRXh0ZW5zaW9ucywgTmd0TG9hZGVyUmVzdWx0LCBOZ3RPYmplY3RNYXAgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IG1ha2VPYmplY3RHcmFwaCB9IGZyb20gJy4vdXRpbHMvbWFrZSc7XG5cbmludGVyZmFjZSBOZ3RMb2FkZXIge1xuICAgIDxUUmV0dXJuVHlwZSwgVFVybCBleHRlbmRzIHN0cmluZyB8IHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG4gICAgICAgIGxvYWRlckNvbnN0cnVjdG9yRmFjdG9yeTogKGlucHV0czogVFVybCkgPT4gbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gTmd0TG9hZGVyUmVzdWx0PFRSZXR1cm5UeXBlPixcbiAgICAgICAgaW5wdXQ6IFRVcmwgfCBPYnNlcnZhYmxlPFRVcmw+LFxuICAgICAgICBleHRlbnNpb25zPzogTmd0TG9hZGVyRXh0ZW5zaW9ucyxcbiAgICAgICAgb25Qcm9ncmVzcz86IChldmVudDogUHJvZ3Jlc3NFdmVudCkgPT4gdm9pZFxuICAgICk6IE9ic2VydmFibGU8XG4gICAgICAgIFRVcmwgZXh0ZW5kcyBzdHJpbmdbXVxuICAgICAgICAgICAgPyBBcnJheTxOZ3RCcmFuY2hpbmdSZXR1cm48VFJldHVyblR5cGUsIEdMVEYsIEdMVEYgJiBOZ3RPYmplY3RNYXA+PlxuICAgICAgICAgICAgOiBUVXJsIGV4dGVuZHMgb2JqZWN0XG4gICAgICAgICAgICA/IHsgW2tleSBpbiBrZXlvZiBUVXJsXTogTmd0QnJhbmNoaW5nUmV0dXJuPFRSZXR1cm5UeXBlLCBHTFRGLCBHTFRGICYgTmd0T2JqZWN0TWFwPiB9XG4gICAgICAgICAgICA6IE5ndEJyYW5jaGluZ1JldHVybjxUUmV0dXJuVHlwZSwgR0xURiwgR0xURiAmIE5ndE9iamVjdE1hcD5cbiAgICA+O1xuICAgIGRlc3Ryb3k6ICgpID0+IHZvaWQ7XG4gICAgcHJlTG9hZDogPFRSZXR1cm5UeXBlLCBUVXJsIGV4dGVuZHMgc3RyaW5nIHwgc3RyaW5nW10gfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PihcbiAgICAgICAgbG9hZGVyQ29uc3RydWN0b3JGYWN0b3J5OiAoaW5wdXRzOiBUVXJsKSA9PiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBOZ3RMb2FkZXJSZXN1bHQ8VFJldHVyblR5cGU+LFxuICAgICAgICBpbnB1dHM6IFRVcmwgfCBPYnNlcnZhYmxlPFRVcmw+LFxuICAgICAgICBleHRlbnNpb25zPzogTmd0TG9hZGVyRXh0ZW5zaW9uc1xuICAgICkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IHR5cGUgTmd0TG9hZGVyUmVzdWx0czxcbiAgICBUSW5wdXQgZXh0ZW5kcyBzdHJpbmcgfCBzdHJpbmdbXSB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgVFJldHVyblxuPiA9IFRJbnB1dCBleHRlbmRzIHN0cmluZ1tdID8gVFJldHVybltdIDogVElucHV0IGV4dGVuZHMgb2JqZWN0ID8geyBba2V5IGluIGtleW9mIFRJbnB1dF06IFRSZXR1cm4gfSA6IFRSZXR1cm47XG5cbmNvbnN0IGNhY2hlZCA9IG5ldyBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPGFueT4+KCk7XG5cbmZ1bmN0aW9uIGluamVjdExvYWRlcjxUUmV0dXJuVHlwZSwgVFVybCBleHRlbmRzIHN0cmluZyB8IHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG4gICAgbG9hZGVyQ29uc3RydWN0b3JGYWN0b3J5OiAoaW5wdXRzOiBUVXJsKSA9PiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBOZ3RMb2FkZXJSZXN1bHQ8VFJldHVyblR5cGU+LFxuICAgIGlucHV0OiBUVXJsIHwgT2JzZXJ2YWJsZTxUVXJsPixcbiAgICBleHRlbnNpb25zPzogTmd0TG9hZGVyRXh0ZW5zaW9ucyxcbiAgICBvblByb2dyZXNzPzogKGV2ZW50OiBQcm9ncmVzc0V2ZW50KSA9PiB2b2lkXG4pOiBPYnNlcnZhYmxlPE5ndExvYWRlclJlc3VsdHM8VFVybCwgTmd0QnJhbmNoaW5nUmV0dXJuPFRSZXR1cm5UeXBlLCBHTFRGLCBHTFRGICYgTmd0T2JqZWN0TWFwPj4+IHtcbiAgICBjb25zdCB1cmxzJCA9IGlzT2JzZXJ2YWJsZShpbnB1dCkgPyBpbnB1dCA6IG9mKGlucHV0KTtcblxuICAgIHJldHVybiB1cmxzJC5waXBlKFxuICAgICAgICBtYXAoKGlucHV0cykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbG9hZGVyQ29uc3RydWN0b3IgPSBsb2FkZXJDb25zdHJ1Y3RvckZhY3RvcnkoaW5wdXRzKTtcbiAgICAgICAgICAgIGNvbnN0IGxvYWRlciA9IG5ldyBsb2FkZXJDb25zdHJ1Y3RvcigpO1xuICAgICAgICAgICAgaWYgKGV4dGVuc2lvbnMpIHtcbiAgICAgICAgICAgICAgICBleHRlbnNpb25zKGxvYWRlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB1cmxzID0gQXJyYXkuaXNBcnJheShpbnB1dHMpID8gaW5wdXRzIDogdHlwZW9mIGlucHV0cyA9PT0gJ3N0cmluZycgPyBbaW5wdXRzXSA6IE9iamVjdC52YWx1ZXMoaW5wdXRzKTtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgdXJscy5tYXAoKHVybCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNhY2hlZC5oYXModXJsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkLnNldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbShsb2FkZXIubG9hZEFzeW5jKHVybCwgb25Qcm9ncmVzcykpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc2NlbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGRhdGEsIG1ha2VPYmplY3RHcmFwaChkYXRhLnNjZW5lKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRyeSgyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBbTkdUXSBFcnJvciBsb2FkaW5nICR7dXJsfTogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0b3I6ICgpID0+IG5ldyBSZXBsYXlTdWJqZWN0KDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRPbkNvbXBsZXRlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRPbkVycm9yOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRPblJlZkNvdW50WmVybzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZWQuZ2V0KHVybCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgaW5wdXRzLFxuICAgICAgICAgICAgXSBhcyBbQXJyYXk8T2JzZXJ2YWJsZTxhbnk+PiwgVFVybCB8IFRVcmxbXV07XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAoKFtvYnNlcnZhYmxlcyQsIGlucHV0c10pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmb3JrSm9pbihvYnNlcnZhYmxlcyQpLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXN1bHRzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGlucHV0cykpIHJldHVybiByZXN1bHRzO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGlucHV0cyA9PT0gJ3N0cmluZycpIHJldHVybiByZXN1bHRzWzBdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoaW5wdXRzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleXMucmVkdWNlKChyZXN1bHQsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleSBhcyBrZXlvZiB0eXBlb2YgcmVzdWx0XSA9IHJlc3VsdHNba2V5cy5pbmRleE9mKGtleSldO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgfSwge30gYXMgeyBba2V5IGluIGtleW9mIFRVcmxdOiBOZ3RCcmFuY2hpbmdSZXR1cm48VFJldHVyblR5cGUsIEdMVEYsIEdMVEYgJiBOZ3RPYmplY3RNYXA+IH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICk7XG59XG5cbihpbmplY3RMb2FkZXIgYXMgTmd0TG9hZGVyKS5kZXN0cm95ID0gKCkgPT4ge1xuICAgIGNhY2hlZC5jbGVhcigpO1xufTtcblxuKGluamVjdExvYWRlciBhcyBOZ3RMb2FkZXIpLnByZUxvYWQgPSAobG9hZGVyQ29uc3RydWN0b3JGYWN0b3J5LCBpbnB1dHMsIGV4dGVuc2lvbnMpID0+IHtcbiAgICBpbmplY3RMb2FkZXIobG9hZGVyQ29uc3RydWN0b3JGYWN0b3J5LCBpbnB1dHMsIGV4dGVuc2lvbnMpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCk7XG59O1xuXG5leHBvcnQgY29uc3QgaW5qZWN0Tmd0TG9hZGVyID0gaW5qZWN0TG9hZGVyIGFzIE5ndExvYWRlcjtcbiJdfQ==
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
var _NgtPortal_instances, _NgtPortal_inject;
|
|
2
|
+
import { __classPrivateFieldGet } from "tslib";
|
|
3
|
+
import { NgIf } from '@angular/common';
|
|
4
|
+
import { Component, ContentChild, Directive, EventEmitter, inject, Input, Output, SkipSelf, TemplateRef, ViewChild, ViewContainerRef, } from '@angular/core';
|
|
5
|
+
import * as THREE from 'three';
|
|
6
|
+
import { injectNgtRef } from './di/ref';
|
|
7
|
+
import { NgtRxStore } from './stores/rx-store';
|
|
8
|
+
import { NgtStore } from './stores/store';
|
|
9
|
+
import { getLocalState, prepare } from './utils/instance';
|
|
10
|
+
import { is } from './utils/is';
|
|
11
|
+
import { updateCamera } from './utils/update';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
const privateKeys = [
|
|
14
|
+
'get',
|
|
15
|
+
'set',
|
|
16
|
+
'select',
|
|
17
|
+
'setSize',
|
|
18
|
+
'setDpr',
|
|
19
|
+
'setFrameloop',
|
|
20
|
+
'events',
|
|
21
|
+
'invalidate',
|
|
22
|
+
'advance',
|
|
23
|
+
'size',
|
|
24
|
+
'viewport',
|
|
25
|
+
'addInteraction',
|
|
26
|
+
'removeInteraction',
|
|
27
|
+
];
|
|
28
|
+
export class NgtPortalBeforeRender {
|
|
29
|
+
constructor() {
|
|
30
|
+
this.portalStore = inject(NgtStore);
|
|
31
|
+
this.renderPriority = 1;
|
|
32
|
+
this.beforeRender = new EventEmitter();
|
|
33
|
+
}
|
|
34
|
+
ngOnInit() {
|
|
35
|
+
let oldClear;
|
|
36
|
+
this.subscription = this.portalStore.get('internal').subscribe(({ delta, frame }) => {
|
|
37
|
+
this.beforeRender.emit({ ...this.portalStore.get(), delta, frame });
|
|
38
|
+
const { gl, scene, camera } = this.portalStore.get();
|
|
39
|
+
oldClear = gl.autoClear;
|
|
40
|
+
if (this.renderPriority === 1) {
|
|
41
|
+
// clear scene and render with default
|
|
42
|
+
gl.autoClear = true;
|
|
43
|
+
gl.render(this.parentScene, this.parentCamera);
|
|
44
|
+
}
|
|
45
|
+
// disable cleaning
|
|
46
|
+
gl.autoClear = false;
|
|
47
|
+
gl.clearDepth();
|
|
48
|
+
gl.render(scene, camera);
|
|
49
|
+
// restore
|
|
50
|
+
gl.autoClear = oldClear;
|
|
51
|
+
}, this.renderPriority, this.portalStore);
|
|
52
|
+
}
|
|
53
|
+
ngOnDestroy() {
|
|
54
|
+
this.subscription?.();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
NgtPortalBeforeRender.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: NgtPortalBeforeRender, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
58
|
+
NgtPortalBeforeRender.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.1", type: NgtPortalBeforeRender, isStandalone: true, selector: "ngt-portal-before-render", inputs: { renderPriority: "renderPriority", parentScene: "parentScene", parentCamera: "parentCamera" }, outputs: { beforeRender: "beforeRender" }, ngImport: i0 });
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: NgtPortalBeforeRender, decorators: [{
|
|
60
|
+
type: Directive,
|
|
61
|
+
args: [{
|
|
62
|
+
selector: 'ngt-portal-before-render',
|
|
63
|
+
standalone: true,
|
|
64
|
+
}]
|
|
65
|
+
}], propDecorators: { renderPriority: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], parentScene: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}], parentCamera: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}], beforeRender: [{
|
|
72
|
+
type: Output
|
|
73
|
+
}] } });
|
|
74
|
+
export class NgtPortalContent {
|
|
75
|
+
constructor(vcr, parentVcr) {
|
|
76
|
+
const commentNode = vcr.element.nativeElement;
|
|
77
|
+
if (commentNode['__ngt_renderer_add_comment__']) {
|
|
78
|
+
commentNode['__ngt_renderer_add_comment__'](parentVcr.element.nativeElement);
|
|
79
|
+
delete commentNode['__ngt_renderer_add_comment__'];
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
NgtPortalContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: NgtPortalContent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ViewContainerRef, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
84
|
+
NgtPortalContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.1", type: NgtPortalContent, isStandalone: true, selector: "ng-template[ngtPortalContent]", ngImport: i0 });
|
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: NgtPortalContent, decorators: [{
|
|
86
|
+
type: Directive,
|
|
87
|
+
args: [{ selector: 'ng-template[ngtPortalContent]', standalone: true }]
|
|
88
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ViewContainerRef, decorators: [{
|
|
89
|
+
type: SkipSelf
|
|
90
|
+
}] }]; } });
|
|
91
|
+
export class NgtPortal extends NgtRxStore {
|
|
92
|
+
constructor() {
|
|
93
|
+
super(...arguments);
|
|
94
|
+
_NgtPortal_instances.add(this);
|
|
95
|
+
this.autoRender = true;
|
|
96
|
+
this.autoRenderPriority = 1;
|
|
97
|
+
this.beforeRender = new EventEmitter();
|
|
98
|
+
this.parentStore = inject(NgtStore, { skipSelf: true });
|
|
99
|
+
this.parentScene = this.parentStore.get('scene');
|
|
100
|
+
this.parentCamera = this.parentStore.get('camera');
|
|
101
|
+
this.portalStore = inject(NgtStore, { self: true });
|
|
102
|
+
this.raycaster = new THREE.Raycaster();
|
|
103
|
+
this.pointer = new THREE.Vector2();
|
|
104
|
+
this.portalContentRendered = false;
|
|
105
|
+
}
|
|
106
|
+
set container(container) {
|
|
107
|
+
this.set({ container });
|
|
108
|
+
}
|
|
109
|
+
set state(state) {
|
|
110
|
+
this.set({ state });
|
|
111
|
+
}
|
|
112
|
+
initialize() {
|
|
113
|
+
super.initialize();
|
|
114
|
+
this.set({ container: injectNgtRef(prepare(new THREE.Scene())) });
|
|
115
|
+
}
|
|
116
|
+
ngOnInit() {
|
|
117
|
+
const previousState = this.parentStore.get();
|
|
118
|
+
const inputsState = this.get();
|
|
119
|
+
if (!inputsState.state && this.autoRender) {
|
|
120
|
+
inputsState.state = { events: { priority: this.autoRenderPriority + 1 } };
|
|
121
|
+
}
|
|
122
|
+
const { events, size, ...restInputsState } = inputsState.state || {};
|
|
123
|
+
const containerState = inputsState.container;
|
|
124
|
+
const container = is.ref(containerState) ? containerState.nativeElement : containerState;
|
|
125
|
+
const localState = getLocalState(container);
|
|
126
|
+
if (!localState.store) {
|
|
127
|
+
localState.store = this.portalStore;
|
|
128
|
+
}
|
|
129
|
+
this.portalStore.set({
|
|
130
|
+
...previousState,
|
|
131
|
+
scene: container,
|
|
132
|
+
raycaster: this.raycaster,
|
|
133
|
+
pointer: this.pointer,
|
|
134
|
+
previousStore: this.parentStore,
|
|
135
|
+
events: { ...previousState.events, ...(events || {}) },
|
|
136
|
+
size: { ...previousState.size, ...(size || {}) },
|
|
137
|
+
...restInputsState,
|
|
138
|
+
get: this.portalStore.get.bind(this.portalStore),
|
|
139
|
+
set: this.portalStore.set.bind(this.portalStore),
|
|
140
|
+
select: this.portalStore.select.bind(this.portalStore),
|
|
141
|
+
setEvents: (events) => this.portalStore.set((state) => ({ ...state, events: { ...state.events, ...events } })),
|
|
142
|
+
});
|
|
143
|
+
this.hold(this.parentStore.select(), (previous) => this.portalStore.set((state) => __classPrivateFieldGet(this, _NgtPortal_instances, "m", _NgtPortal_inject).call(this, previous, state)));
|
|
144
|
+
requestAnimationFrame(() => {
|
|
145
|
+
this.portalStore.set((injectState) => __classPrivateFieldGet(this, _NgtPortal_instances, "m", _NgtPortal_inject).call(this, this.parentStore.get(), injectState));
|
|
146
|
+
});
|
|
147
|
+
this.portalContentView = this.portalContentAnchor.createEmbeddedView(this.portalContentTemplate);
|
|
148
|
+
this.portalContentView.detectChanges();
|
|
149
|
+
this.portalContentRendered = true;
|
|
150
|
+
}
|
|
151
|
+
onBeforeRender(portal) {
|
|
152
|
+
this.beforeRender.emit({
|
|
153
|
+
root: { ...this.parentStore.get(), delta: portal.delta, frame: portal.frame },
|
|
154
|
+
portal,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
ngOnDestroy() {
|
|
158
|
+
if (this.portalContentView && !this.portalContentView.destroyed) {
|
|
159
|
+
this.portalContentView.destroy();
|
|
160
|
+
}
|
|
161
|
+
super.ngOnDestroy();
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
_NgtPortal_instances = new WeakSet(), _NgtPortal_inject = function _NgtPortal_inject(rootState, injectState) {
|
|
165
|
+
const intersect = { ...rootState };
|
|
166
|
+
Object.keys(intersect).forEach((key) => {
|
|
167
|
+
if (privateKeys.includes(key) ||
|
|
168
|
+
rootState[key] !== injectState[key]) {
|
|
169
|
+
delete intersect[key];
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
const inputs = this.get();
|
|
173
|
+
const { size, events, ...restInputsState } = inputs.state || {};
|
|
174
|
+
let viewport = undefined;
|
|
175
|
+
if (injectState && size) {
|
|
176
|
+
const camera = injectState.camera;
|
|
177
|
+
viewport = rootState.viewport.getCurrentViewport(camera, new THREE.Vector3(), size);
|
|
178
|
+
if (camera !== rootState.camera)
|
|
179
|
+
updateCamera(camera, size);
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
...intersect,
|
|
183
|
+
scene: is.ref(inputs.container) ? inputs.container.nativeElement : inputs.container,
|
|
184
|
+
raycaster: this.raycaster,
|
|
185
|
+
pointer: this.pointer,
|
|
186
|
+
previousStore: this.parentStore,
|
|
187
|
+
events: { ...rootState.events, ...(injectState?.events || {}), ...events },
|
|
188
|
+
size: { ...rootState.size, ...size },
|
|
189
|
+
viewport: { ...rootState.viewport, ...(viewport || {}) },
|
|
190
|
+
...restInputsState,
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
NgtPortal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: NgtPortal, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
194
|
+
NgtPortal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: NgtPortal, isStandalone: true, selector: "ngt-portal", inputs: { container: "container", state: "state", autoRender: "autoRender", autoRenderPriority: "autoRenderPriority" }, outputs: { beforeRender: "beforeRender" }, providers: [NgtStore], queries: [{ propertyName: "portalContentTemplate", first: true, predicate: NgtPortalContent, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "portalContentAnchor", first: true, predicate: ["portalContentAnchor"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
195
|
+
<ng-container #portalContentAnchor>
|
|
196
|
+
<ngt-portal-before-render
|
|
197
|
+
*ngIf="autoRender && portalContentRendered"
|
|
198
|
+
[renderPriority]="autoRenderPriority"
|
|
199
|
+
[parentScene]="parentScene"
|
|
200
|
+
[parentCamera]="parentCamera"
|
|
201
|
+
(beforeRender)="onBeforeRender($event)"
|
|
202
|
+
/>
|
|
203
|
+
</ng-container>
|
|
204
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgtPortalBeforeRender, selector: "ngt-portal-before-render", inputs: ["renderPriority", "parentScene", "parentCamera"], outputs: ["beforeRender"] }] });
|
|
205
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: NgtPortal, decorators: [{
|
|
206
|
+
type: Component,
|
|
207
|
+
args: [{
|
|
208
|
+
selector: 'ngt-portal',
|
|
209
|
+
standalone: true,
|
|
210
|
+
template: `
|
|
211
|
+
<ng-container #portalContentAnchor>
|
|
212
|
+
<ngt-portal-before-render
|
|
213
|
+
*ngIf="autoRender && portalContentRendered"
|
|
214
|
+
[renderPriority]="autoRenderPriority"
|
|
215
|
+
[parentScene]="parentScene"
|
|
216
|
+
[parentCamera]="parentCamera"
|
|
217
|
+
(beforeRender)="onBeforeRender($event)"
|
|
218
|
+
/>
|
|
219
|
+
</ng-container>
|
|
220
|
+
`,
|
|
221
|
+
imports: [NgIf, NgtPortalBeforeRender],
|
|
222
|
+
providers: [NgtStore],
|
|
223
|
+
}]
|
|
224
|
+
}], propDecorators: { container: [{
|
|
225
|
+
type: Input
|
|
226
|
+
}], state: [{
|
|
227
|
+
type: Input
|
|
228
|
+
}], autoRender: [{
|
|
229
|
+
type: Input
|
|
230
|
+
}], autoRenderPriority: [{
|
|
231
|
+
type: Input
|
|
232
|
+
}], beforeRender: [{
|
|
233
|
+
type: Output
|
|
234
|
+
}], portalContentTemplate: [{
|
|
235
|
+
type: ContentChild,
|
|
236
|
+
args: [NgtPortalContent, { read: TemplateRef, static: true }]
|
|
237
|
+
}], portalContentAnchor: [{
|
|
238
|
+
type: ViewChild,
|
|
239
|
+
args: ['portalContentAnchor', { read: ViewContainerRef, static: true }]
|
|
240
|
+
}] } });
|
|
241
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvcG9ydGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFNBQVMsRUFHVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBQ04sUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1QsZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUU5QyxNQUFNLFdBQVcsR0FBRztJQUNoQixLQUFLO0lBQ0wsS0FBSztJQUNMLFFBQVE7SUFDUixTQUFTO0lBQ1QsUUFBUTtJQUNSLGNBQWM7SUFDZCxRQUFRO0lBQ1IsWUFBWTtJQUNaLFNBQVM7SUFDVCxNQUFNO0lBQ04sVUFBVTtJQUNWLGdCQUFnQjtJQUNoQixtQkFBbUI7Q0FDYixDQUFDO0FBa0JYLE1BQU0sT0FBTyxxQkFBcUI7SUFKbEM7UUFLcUIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdkMsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFJbEIsaUJB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QUFDO2lCQUN4Qjs4QkFFZ0IsU0FBUztzQkFBckIsS0FBSztnQkFJTyxLQUFLO3NCQUFqQixLQUFLO2dCQUlHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU07Z0JBR0UscUJBQXFCO3NCQUQ3QixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUkxRCxtQkFBbUI7c0JBRDNCLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEVtYmVkZGVkVmlld1JlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNraXBTZWxmLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IGluamVjdE5ndFJlZiB9IGZyb20gJy4vZGkvcmVmJztcbmltcG9ydCB7IE5ndFJ4U3RvcmUgfSBmcm9tICcuL3N0b3Jlcy9yeC1zdG9yZSc7XG5pbXBvcnQgeyBOZ3RTdG9yZSB9IGZyb20gJy4vc3RvcmVzL3N0b3JlJztcbmltcG9ydCB7IE5ndEV2ZW50TWFuYWdlciwgTmd0UmVuZGVyU3RhdGUsIE5ndFNpemUsIE5ndFN0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRMb2NhbFN0YXRlLCBwcmVwYXJlIH0gZnJvbSAnLi91dGlscy9pbnN0YW5jZSc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4vdXRpbHMvaXMnO1xuaW1wb3J0IHsgdXBkYXRlQ2FtZXJhIH0gZnJvbSAnLi91dGlscy91cGRhdGUnO1xuXG5jb25zdCBwcml2YXRlS2V5cyA9IFtcbiAgICAnZ2V0JyxcbiAgICAnc2V0JyxcbiAgICAnc2VsZWN0JyxcbiAgICAnc2V0U2l6ZScsXG4gICAgJ3NldERwcicsXG4gICAgJ3NldEZyYW1lbG9vcCcsXG4gICAgJ2V2ZW50cycsXG4gICAgJ2ludmFsaWRhdGUnLFxuICAgICdhZHZhbmNlJyxcbiAgICAnc2l6ZScsXG4gICAgJ3ZpZXdwb3J0JyxcbiAgICAnYWRkSW50ZXJhY3Rpb24nLFxuICAgICdyZW1vdmVJbnRlcmFjdGlvbicsXG5dIGFzIGNvbnN0O1xudHlwZSBQcml2YXRlS2V5cyA9ICh0eXBlb2YgcHJpdmF0ZUtleXMpW251bWJlcl07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0UG9ydGFsSW5wdXRzIHtcbiAgICBjb250YWluZXI6IEVsZW1lbnRSZWY8VEhSRUUuT2JqZWN0M0Q+IHwgVEhSRUUuT2JqZWN0M0Q7XG4gICAgY2FtZXJhOiBFbGVtZW50UmVmPFRIUkVFLkNhbWVyYT4gfCBUSFJFRS5DYW1lcmE7XG4gICAgc3RhdGU6IFBhcnRpYWw8XG4gICAgICAgIE9taXQ8Tmd0U3RhdGUsIFByaXZhdGVLZXlzPiAmIHtcbiAgICAgICAgICAgIGV2ZW50czogUGFydGlhbDxQaWNrPE5ndEV2ZW50TWFuYWdlcjxhbnk+LCAnZW5hYmxlZCcgfCAncHJpb3JpdHknIHwgJ2NvbXB1dGUnIHwgJ2Nvbm5lY3RlZCc+PjtcbiAgICAgICAgICAgIHNpemU6IE5ndFNpemU7XG4gICAgICAgIH1cbiAgICA+O1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ25ndC1wb3J0YWwtYmVmb3JlLXJlbmRlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0UG9ydGFsQmVmb3JlUmVuZGVyIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcG9ydGFsU3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuXG4gICAgQElucHV0KCkgcmVuZGVyUHJpb3JpdHkgPSAxO1xuICAgIEBJbnB1dCgpIHBhcmVudFNjZW5lITogVEhSRUUuU2NlbmU7XG4gICAgQElucHV0KCkgcGFyZW50Q2FtZXJhITogVEhSRUUuQ2FtZXJhO1xuXG4gICAgQE91dHB1dCgpIGJlZm9yZVJlbmRlciA9IG5ldyBFdmVudEVtaXR0ZXI8Tmd0UmVuZGVyU3RhdGU+KCk7XG5cbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbj86ICgpID0+IHZvaWQ7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgbGV0IG9sZENsZWFyOiBib29sZWFuO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMucG9ydGFsU3RvcmUuZ2V0KCdpbnRlcm5hbCcpLnN1YnNjcmliZShcbiAgICAgICAgICAgICh7IGRlbHRhLCBmcmFtZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWZvcmVSZW5kZXIuZW1pdCh7IC4uLnRoaXMucG9ydGFsU3RvcmUuZ2V0KCksIGRlbHRhLCBmcmFtZSB9KTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGdsLCBzY2VuZSwgY2FtZXJhIH0gPSB0aGlzLnBvcnRhbFN0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIG9sZENsZWFyID0gZ2wuYXV0b0NsZWFyO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlbmRlclByaW9yaXR5ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNsZWFyIHNjZW5lIGFuZCByZW5kZXIgd2l0aCBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIGdsLmF1dG9DbGVhciA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGdsLnJlbmRlcih0aGlzLnBhcmVudFNjZW5lLCB0aGlzLnBhcmVudENhbWVyYSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGRpc2FibGUgY2xlYW5pbmdcbiAgICAgICAgICAgICAgICBnbC5hdXRvQ2xlYXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBnbC5jbGVhckRlcHRoKCk7XG4gICAgICAgICAgICAgICAgZ2wucmVuZGVyKHNjZW5lLCBjYW1lcmEpO1xuICAgICAgICAgICAgICAgIC8vIHJlc3RvcmVcbiAgICAgICAgICAgICAgICBnbC5hdXRvQ2xlYXIgPSBvbGRDbGVhcjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLnJlbmRlclByaW9yaXR5LFxuICAgICAgICAgICAgdGhpcy5wb3J0YWxTdG9yZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbj8uKCk7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtuZ3RQb3J0YWxDb250ZW50XScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBOZ3RQb3J0YWxDb250ZW50IHtcbiAgICBjb25zdHJ1Y3Rvcih2Y3I6IFZpZXdDb250YWluZXJSZWYsIEBTa2lwU2VsZigpIHBhcmVudFZjcjogVmlld0NvbnRhaW5lclJlZikge1xuICAgICAgICBjb25zdCBjb21tZW50Tm9kZSA9IHZjci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChjb21tZW50Tm9kZVsnX19uZ3RfcmVuZGVyZXJfYWRkX2NvbW1lbnRfXyddKSB7XG4gICAgICAgICAgICBjb21tZW50Tm9kZVsnX19uZ3RfcmVuZGVyZXJfYWRkX2NvbW1lbnRfXyddKHBhcmVudFZjci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgZGVsZXRlIGNvbW1lbnROb2RlWydfX25ndF9yZW5kZXJlcl9hZGRfY29tbWVudF9fJ107XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0LXBvcnRhbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmctY29udGFpbmVyICNwb3J0YWxDb250ZW50QW5jaG9yPlxuICAgICAgICAgICAgPG5ndC1wb3J0YWwtYmVmb3JlLXJlbmRlclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiYXV0b1JlbmRlciAmJiBwb3J0YWxDb250ZW50UmVuZGVyZWRcIlxuICAgICAgICAgICAgICAgIFtyZW5kZXJQcmlvcml0eV09XCJhdXRvUmVuZGVyUHJpb3JpdHlcIlxuICAgICAgICAgICAgICAgIFtwYXJlbnRTY2VuZV09XCJwYXJlbnRTY2VuZVwiXG4gICAgICAgICAgICAgICAgW3BhcmVudENhbWVyYV09XCJwYXJlbnRDYW1lcmFcIlxuICAgICAgICAgICAgICAgIChiZWZvcmVSZW5kZXIpPVwib25CZWZvcmVSZW5kZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ0lmLCBOZ3RQb3J0YWxCZWZvcmVSZW5kZXJdLFxuICAgIHByb3ZpZGVyczogW05ndFN0b3JlXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0UG9ydGFsIGV4dGVuZHMgTmd0UnhTdG9yZTxOZ3RQb3J0YWxJbnB1dHM+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIHNldCBjb250YWluZXIoY29udGFpbmVyOiBOZ3RQb3J0YWxJbnB1dHNbJ2NvbnRhaW5lciddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgY29udGFpbmVyIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBzdGF0ZShzdGF0ZTogTmd0UG9ydGFsSW5wdXRzWydzdGF0ZSddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc3RhdGUgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgYXV0b1JlbmRlciA9IHRydWU7XG4gICAgQElucHV0KCkgYXV0b1JlbmRlclByaW9yaXR5ID0gMTtcblxuICAgIEBPdXRwdXQoKSBiZWZvcmVSZW5kZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcm9vdDogTmd0UmVuZGVyU3RhdGU7IHBvcnRhbDogTmd0UmVuZGVyU3RhdGUgfT4oKTtcblxuICAgIEBDb250ZW50Q2hpbGQoTmd0UG9ydGFsQ29udGVudCwgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgcmVhZG9ubHkgcG9ydGFsQ29udGVudFRlbXBsYXRlITogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgICBAVmlld0NoaWxkKCdwb3J0YWxDb250ZW50QW5jaG9yJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICByZWFkb25seSBwb3J0YWxDb250ZW50QW5jaG9yITogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFyZW50U3RvcmUgPSBpbmplY3QoTmd0U3RvcmUsIHsgc2tpcFNlbGY6IHRydWUgfSk7XG4gICAgcmVhZG9ubHkgcGFyZW50U2NlbmUgPSB0aGlzLnBhcmVudFN0b3JlLmdldCgnc2NlbmUnKTtcbiAgICByZWFkb25seSBwYXJlbnRDYW1lcmEgPSB0aGlzLnBhcmVudFN0b3JlLmdldCgnY2FtZXJhJyk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvcnRhbFN0b3JlID0gaW5qZWN0KE5ndFN0b3JlLCB7IHNlbGY6IHRydWUgfSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJheWNhc3RlciA9IG5ldyBUSFJFRS5SYXljYXN0ZXIoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvaW50ZXIgPSBuZXcgVEhSRUUuVmVjdG9yMigpO1xuXG4gICAgcG9ydGFsQ29udGVudFJlbmRlcmVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBwb3J0YWxDb250ZW50Vmlldz86IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPjtcblxuICAgIG92ZXJyaWRlIGluaXRpYWxpemUoKSB7XG4gICAgICAgIHN1cGVyLmluaXRpYWxpemUoKTtcbiAgICAgICAgdGhpcy5zZXQoeyBjb250YWluZXI6IGluamVjdE5ndFJlZjxUSFJFRS5TY2VuZT4ocHJlcGFyZShuZXcgVEhSRUUuU2NlbmUoKSkpIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBjb25zdCBwcmV2aW91c1N0YXRlID0gdGhpcy5wYXJlbnRTdG9yZS5nZXQoKTtcbiAgICAgICAgY29uc3QgaW5wdXRzU3RhdGUgPSB0aGlzLmdldCgpO1xuXG4gICAgICAgIGlmICghaW5wdXRzU3RhdGUuc3RhdGUgJiYgdGhpcy5hdXRvUmVuZGVyKSB7XG4gICAgICAgICAgICBpbnB1dHNTdGF0ZS5zdGF0ZSA9IHsgZXZlbnRzOiB7IHByaW9yaXR5OiB0aGlzLmF1dG9SZW5kZXJQcmlvcml0eSArIDEgfSB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBldmVudHMsIHNpemUsIC4uLnJlc3RJbnB1dHNTdGF0ZSB9ID0gaW5wdXRzU3RhdGUuc3RhdGUgfHwge307XG5cbiAgICAgICAgY29uc3QgY29udGFpbmVyU3RhdGUgPSBpbnB1dHNTdGF0ZS5jb250YWluZXI7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGlzLnJlZihjb250YWluZXJTdGF0ZSkgPyBjb250YWluZXJTdGF0ZS5uYXRpdmVFbGVtZW50IDogY29udGFpbmVyU3RhdGU7XG5cbiAgICAgICAgY29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoY29udGFpbmVyKTtcbiAgICAgICAgaWYgKCFsb2NhbFN0YXRlLnN0b3JlKSB7XG4gICAgICAgICAgICBsb2NhbFN0YXRlLnN0b3JlID0gdGhpcy5wb3J0YWxTdG9yZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucG9ydGFsU3RvcmUuc2V0KHtcbiAgICAgICAgICAgIC4uLnByZXZpb3VzU3RhdGUsXG4gICAgICAgICAgICBzY2VuZTogY29udGFpbmVyIGFzIFRIUkVFLlNjZW5lLFxuICAgICAgICAgICAgcmF5Y2FzdGVyOiB0aGlzLnJheWNhc3RlcixcbiAgICAgICAgICAgIHBvaW50ZXI6IHRoaXMucG9pbnRlcixcbiAgICAgICAgICAgIHByZXZpb3VzU3RvcmU6IHRoaXMucGFyZW50U3RvcmUsXG4gICAgICAgICAgICBldmVudHM6IHsgLi4ucHJldmlvdXNTdGF0ZS5ldmVudHMsIC4uLihldmVudHMgfHwge30pIH0sXG4gICAgICAgICAgICBzaXplOiB7IC4uLnByZXZpb3VzU3RhdGUuc2l6ZSwgLi4uKHNpemUgfHwge30pIH0sXG4gICAgICAgICAgICAuLi5yZXN0SW5wdXRzU3RhdGUsXG4gICAgICAgICAgICBnZXQ6IHRoaXMucG9ydGFsU3RvcmUuZ2V0LmJpbmQodGhpcy5wb3J0YWxTdG9yZSksXG4gICAgICAgICAgICBzZXQ6IHRoaXMucG9ydGFsU3RvcmUuc2V0LmJpbmQodGhpcy5wb3J0YWxTdG9yZSksXG4gICAgICAgICAgICBzZWxlY3Q6IHRoaXMucG9ydGFsU3RvcmUuc2VsZWN0LmJpbmQodGhpcy5wb3J0YWxTdG9yZSksXG4gICAgICAgICAgICBzZXRFdmVudHM6IChldmVudHMpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5wb3J0YWxTdG9yZS5zZXQoKHN0YXRlKSA9PiAoeyAuLi5zdGF0ZSwgZXZlbnRzOiB7IC4uLnN0YXRlLmV2ZW50cywgLi4uZXZlbnRzIH0gfSkpLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmhvbGQodGhpcy5wYXJlbnRTdG9yZS5zZWxlY3QoKSwgKHByZXZpb3VzKSA9PlxuICAgICAgICAgICAgdGhpcy5wb3J0YWxTdG9yZS5zZXQoKHN0YXRlKSA9PiB0aGlzLiNpbmplY3QocHJldmlvdXMsIHN0YXRlKSlcbiAgICAgICAgKTtcblxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wb3J0YWxTdG9yZS5zZXQoKGluamVjdFN0YXRlKSA9PiB0aGlzLiNpbmplY3QodGhpcy5wYXJlbnRTdG9yZS5nZXQoKSwgaW5qZWN0U3RhdGUpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucG9ydGFsQ29udGVudFZpZXcgPSB0aGlzLnBvcnRhbENvbnRlbnRBbmNob3IuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMucG9ydGFsQ29udGVudFRlbXBsYXRlKTtcbiAgICAgICAgdGhpcy5wb3J0YWxDb250ZW50Vmlldy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMucG9ydGFsQ29udGVudFJlbmRlcmVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbkJlZm9yZVJlbmRlcihwb3J0YWw6IE5ndFJlbmRlclN0YXRlKSB7XG4gICAgICAgIHRoaXMuYmVmb3JlUmVuZGVyLmVtaXQoe1xuICAgICAgICAgICAgcm9vdDogeyAuLi50aGlzLnBhcmVudFN0b3JlLmdldCgpLCBkZWx0YTogcG9ydGFsLmRlbHRhLCBmcmFtZTogcG9ydGFsLmZyYW1lIH0sXG4gICAgICAgICAgICBwb3J0YWwsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5wb3J0YWxDb250ZW50VmlldyAmJiAhdGhpcy5wb3J0YWxDb250ZW50Vmlldy5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHRoaXMucG9ydGFsQ29udGVudFZpZXcuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxuXG4gICAgI2luamVjdChyb290U3RhdGU6IE5ndFN0YXRlLCBpbmplY3RTdGF0ZTogTmd0U3RhdGUpIHtcbiAgICAgICAgY29uc3QgaW50ZXJzZWN0OiBQYXJ0aWFsPE5ndFN0YXRlPiA9IHsgLi4ucm9vdFN0YXRlIH07XG5cbiAgICAgICAgT2JqZWN0LmtleXMoaW50ZXJzZWN0KS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBwcml2YXRlS2V5cy5pbmNsdWRlcyhrZXkgYXMgUHJpdmF0ZUtleXMpIHx8XG4gICAgICAgICAgICAgICAgcm9vdFN0YXRlW2tleSBhcyBrZXlvZiBOZ3RTdGF0ZV0gIT09IGluamVjdFN0YXRlW2tleSBhcyBrZXlvZiBOZ3RTdGF0ZV1cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBpbnRlcnNlY3Rba2V5IGFzIGtleW9mIE5ndFN0YXRlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgaW5wdXRzID0gdGhpcy5nZXQoKTtcbiAgICAgICAgY29uc3QgeyBzaXplLCBldmVudHMsIC4uLnJlc3RJbnB1dHNTdGF0ZSB9ID0gaW5wdXRzLnN0YXRlIHx8IHt9O1xuXG4gICAgICAgIGxldCB2aWV3cG9ydCA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKGluamVjdFN0YXRlICYmIHNpemUpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbWVyYSA9IGluamVjdFN0YXRlLmNhbWVyYTtcbiAgICAgICAgICAgIHZpZXdwb3J0ID0gcm9vdFN0YXRlLnZpZXdwb3J0LmdldEN1cnJlbnRWaWV3cG9ydChjYW1lcmEsIG5ldyBUSFJFRS5WZWN0b3IzKCksIHNpemUpO1xuICAgICAgICAgICAgaWYgKGNhbWVyYSAhPT0gcm9vdFN0YXRlLmNhbWVyYSkgdXBkYXRlQ2FtZXJhKGNhbWVyYSwgc2l6ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uaW50ZXJzZWN0LFxuICAgICAgICAgICAgc2NlbmU6IGlzLnJlZihpbnB1dHMuY29udGFpbmVyKSA/IGlucHV0cy5jb250YWluZXIubmF0aXZlRWxlbWVudCA6IGlucHV0cy5jb250YWluZXIsXG4gICAgICAgICAgICByYXljYXN0ZXI6IHRoaXMucmF5Y2FzdGVyLFxuICAgICAgICAgICAgcG9pbnRlcjogdGhpcy5wb2ludGVyLFxuICAgICAgICAgICAgcHJldmlvdXNTdG9yZTogdGhpcy5wYXJlbnRTdG9yZSxcbiAgICAgICAgICAgIGV2ZW50czogeyAuLi5yb290U3RhdGUuZXZlbnRzLCAuLi4oaW5qZWN0U3RhdGU/LmV2ZW50cyB8fCB7fSksIC4uLmV2ZW50cyB9LFxuICAgICAgICAgICAgc2l6ZTogeyAuLi5yb290U3RhdGUuc2l6ZSwgLi4uc2l6ZSB9LFxuICAgICAgICAgICAgdmlld3BvcnQ6IHsgLi4ucm9vdFN0YXRlLnZpZXdwb3J0LCAuLi4odmlld3BvcnQgfHwge30pIH0sXG4gICAgICAgICAgICAuLi5yZXN0SW5wdXRzU3RhdGUsXG4gICAgICAgIH0gYXMgTmd0U3RhdGU7XG4gICAgfVxufVxuIl19
|