angular-three 2.0.0-beta.26 → 2.0.0-beta.261
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 +221 -4
- package/esm2022/index.mjs +4 -12
- package/esm2022/lib/canvas.mjs +124 -196
- package/esm2022/lib/directives/args.mjs +46 -20
- package/esm2022/lib/dom/events.mjs +2 -2
- package/esm2022/lib/events.mjs +33 -31
- package/esm2022/lib/instance.mjs +43 -36
- package/esm2022/lib/loader.mjs +50 -32
- package/esm2022/lib/loop.mjs +28 -25
- package/esm2022/lib/portal.mjs +173 -193
- package/esm2022/lib/renderer/catalogue.mjs +3 -3
- package/esm2022/lib/renderer/constants.mjs +5 -6
- package/esm2022/lib/renderer/index.mjs +347 -231
- package/esm2022/lib/renderer/state.mjs +49 -0
- package/esm2022/lib/renderer/utils.mjs +94 -87
- package/esm2022/lib/roots.mjs +87 -76
- package/esm2022/lib/routed-scene.mjs +6 -7
- package/esm2022/lib/store.mjs +170 -194
- package/esm2022/lib/three-types.mjs +2 -2
- package/esm2022/lib/utils/apply-props.mjs +24 -28
- package/esm2022/lib/utils/attach.mjs +6 -6
- package/esm2022/lib/utils/before-render.mjs +23 -0
- package/esm2022/lib/utils/is.mjs +6 -5
- package/esm2022/lib/utils/make.mjs +19 -17
- package/esm2022/lib/utils/parameters.mjs +61 -0
- package/esm2022/lib/utils/resolve-ref.mjs +8 -0
- package/esm2022/lib/utils/signal-store.mjs +59 -60
- package/esm2022/lib/utils/update.mjs +6 -2
- package/fesm2022/angular-three.mjs +2012 -2432
- package/fesm2022/angular-three.mjs.map +1 -1
- package/index.d.ts +6 -11
- package/lib/canvas.d.ts +398 -53
- package/lib/directives/args.d.ts +14 -7
- package/lib/dom/events.d.ts +3 -3
- package/lib/events.d.ts +15 -15
- package/lib/instance.d.ts +25 -20
- package/lib/loader.d.ts +17 -7
- package/lib/loop.d.ts +10 -58
- package/lib/portal.d.ts +55 -48
- package/lib/renderer/catalogue.d.ts +7 -3
- package/lib/renderer/constants.d.ts +4 -5
- package/lib/renderer/index.d.ts +65 -4
- package/lib/renderer/state.d.ts +23 -0
- package/lib/renderer/utils.d.ts +8 -26
- package/lib/roots.d.ts +12 -6
- package/lib/store.d.ts +30 -33
- package/lib/three-types.d.ts +142 -145
- package/lib/utils/apply-props.d.ts +2 -3
- package/lib/utils/attach.d.ts +4 -4
- package/lib/utils/before-render.d.ts +10 -0
- package/lib/utils/is.d.ts +15 -14
- package/lib/utils/make.d.ts +10 -9
- package/lib/utils/parameters.d.ts +15 -0
- package/lib/utils/resolve-ref.d.ts +2 -0
- package/lib/utils/signal-store.d.ts +13 -4
- package/lib/utils/update.d.ts +1 -1
- package/metadata.json +1 -1
- package/package.json +30 -11
- package/web-types.json +1 -1
- package/esm2022/lib/before-render.mjs +0 -13
- package/esm2022/lib/directives/common.mjs +0 -41
- package/esm2022/lib/directives/key.mjs +0 -29
- package/esm2022/lib/directives/parent.mjs +0 -35
- package/esm2022/lib/directives/repeat.mjs +0 -17
- package/esm2022/lib/ref.mjs +0 -48
- package/esm2022/lib/renderer/store.mjs +0 -408
- package/esm2022/lib/utils/assert-injection-context.mjs +0 -14
- package/esm2022/lib/utils/create-injection-token.mjs +0 -47
- package/esm2022/lib/utils/safe-detect-changes.mjs +0 -17
- package/lib/before-render.d.ts +0 -6
- package/lib/directives/common.d.ts +0 -15
- package/lib/directives/key.d.ts +0 -10
- package/lib/directives/parent.d.ts +0 -11
- package/lib/directives/repeat.d.ts +0 -7
- package/lib/ref.d.ts +0 -8
- package/lib/renderer/store.d.ts +0 -67
- package/lib/utils/assert-injection-context.d.ts +0 -2
- package/lib/utils/create-injection-token.d.ts +0 -27
- package/lib/utils/safe-detect-changes.d.ts +0 -2
- package/plugin/README.md +0 -11
- package/plugin/generators.json +0 -49
- package/plugin/package.json +0 -6
- package/plugin/src/generators/init/compat.d.ts +0 -4
- package/plugin/src/generators/init/compat.js +0 -6
- package/plugin/src/generators/init/compat.js.map +0 -1
- package/plugin/src/generators/init/files/experience/experience.component.html__tmpl__ +0 -4
- package/plugin/src/generators/init/files/experience/experience.component.ts__tmpl__ +0 -18
- package/plugin/src/generators/init/generator.d.ts +0 -6
- package/plugin/src/generators/init/generator.js +0 -160
- package/plugin/src/generators/init/generator.js.map +0 -1
- package/plugin/src/generators/init/schema.json +0 -17
- package/plugin/src/generators/init-cannon/compat.d.ts +0 -2
- package/plugin/src/generators/init-cannon/compat.js +0 -6
- package/plugin/src/generators/init-cannon/compat.js.map +0 -1
- package/plugin/src/generators/init-cannon/generator.d.ts +0 -2
- package/plugin/src/generators/init-cannon/generator.js +0 -22
- package/plugin/src/generators/init-cannon/generator.js.map +0 -1
- package/plugin/src/generators/init-cannon/schema.json +0 -6
- package/plugin/src/generators/init-postprocessing/compat.d.ts +0 -2
- package/plugin/src/generators/init-postprocessing/compat.js +0 -6
- package/plugin/src/generators/init-postprocessing/compat.js.map +0 -1
- package/plugin/src/generators/init-postprocessing/generator.d.ts +0 -2
- package/plugin/src/generators/init-postprocessing/generator.js +0 -20
- package/plugin/src/generators/init-postprocessing/generator.js.map +0 -1
- package/plugin/src/generators/init-postprocessing/schema.json +0 -6
- package/plugin/src/generators/init-soba/compat.d.ts +0 -2
- package/plugin/src/generators/init-soba/compat.js +0 -6
- package/plugin/src/generators/init-soba/compat.js.map +0 -1
- package/plugin/src/generators/init-soba/generator.d.ts +0 -2
- package/plugin/src/generators/init-soba/generator.js +0 -26
- package/plugin/src/generators/init-soba/generator.js.map +0 -1
- package/plugin/src/generators/init-soba/schema.json +0 -6
- package/plugin/src/generators/utils.d.ts +0 -2
- package/plugin/src/generators/utils.js +0 -34
- package/plugin/src/generators/utils.js.map +0 -1
- package/plugin/src/generators/versions.d.ts +0 -12
- package/plugin/src/generators/versions.js +0 -16
- package/plugin/src/generators/versions.js.map +0 -1
- package/plugin/src/index.d.ts +0 -3
- package/plugin/src/index.js +0 -10
- package/plugin/src/index.js.map +0 -1
package/esm2022/lib/portal.mjs
CHANGED
|
@@ -1,242 +1,222 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import { injectBeforeRender } from './before-render';
|
|
1
|
+
import { afterNextRender, ChangeDetectionStrategy, Component, computed, contentChild, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, Directive, inject, Injector, input, signal, TemplateRef, untracked, viewChild, ViewContainerRef, } from '@angular/core';
|
|
2
|
+
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
3
|
+
import { Raycaster, Vector2, Vector3 } from 'three';
|
|
5
4
|
import { getLocalState, prepare } from './instance';
|
|
6
|
-
import { injectNgtRef } from './ref';
|
|
7
5
|
import { SPECIAL_INTERNAL_ADD_COMMENT } from './renderer/constants';
|
|
8
|
-
import {
|
|
6
|
+
import { injectStore, provideStore } from './store';
|
|
7
|
+
import { injectBeforeRender } from './utils/before-render';
|
|
9
8
|
import { is } from './utils/is';
|
|
10
|
-
import { safeDetectChanges } from './utils/safe-detect-changes';
|
|
11
9
|
import { signalStore } from './utils/signal-store';
|
|
12
10
|
import { updateCamera } from './utils/update';
|
|
13
11
|
import * as i0 from "@angular/core";
|
|
14
|
-
const privateKeys = [
|
|
15
|
-
'get',
|
|
16
|
-
'set',
|
|
17
|
-
'select',
|
|
18
|
-
'setSize',
|
|
19
|
-
'setDpr',
|
|
20
|
-
'setFrameloop',
|
|
21
|
-
'events',
|
|
22
|
-
'invalidate',
|
|
23
|
-
'advance',
|
|
24
|
-
'size',
|
|
25
|
-
'viewport',
|
|
26
|
-
];
|
|
27
12
|
export class NgtPortalBeforeRender {
|
|
28
13
|
constructor() {
|
|
29
|
-
this.portalStore =
|
|
30
|
-
this.
|
|
31
|
-
this.
|
|
32
|
-
this.
|
|
14
|
+
this.portalStore = injectStore();
|
|
15
|
+
this.renderPriority = input(1);
|
|
16
|
+
this.parentScene = input.required();
|
|
17
|
+
this.parentCamera = input.required();
|
|
18
|
+
injectAutoEffect()((injector) => {
|
|
19
|
+
// track state
|
|
20
|
+
this.portalStore.state();
|
|
21
|
+
const priority = this.renderPriority();
|
|
22
|
+
let oldClear;
|
|
23
|
+
return injectBeforeRender(() => {
|
|
24
|
+
const { gl, scene, camera } = this.portalStore.snapshot;
|
|
25
|
+
oldClear = gl.autoClear;
|
|
26
|
+
if (this.renderPriority() === 1) {
|
|
27
|
+
// clear scene and render with default
|
|
28
|
+
gl.autoClear = true;
|
|
29
|
+
gl.render(this.parentScene(), this.parentCamera());
|
|
30
|
+
}
|
|
31
|
+
// disable cleaning
|
|
32
|
+
gl.autoClear = false;
|
|
33
|
+
gl.clearDepth();
|
|
34
|
+
gl.render(scene, camera);
|
|
35
|
+
// restore
|
|
36
|
+
gl.autoClear = oldClear;
|
|
37
|
+
}, { priority, injector });
|
|
38
|
+
});
|
|
33
39
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
injectBeforeRender(({ 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
|
-
}, { priority: this.renderPriority, injector: this.injector });
|
|
40
|
+
onPointerOver() {
|
|
41
|
+
/* noop */
|
|
52
42
|
}
|
|
53
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
54
|
-
static { this.ɵ
|
|
43
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtPortalBeforeRender, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
44
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.0", type: NgtPortalBeforeRender, isStandalone: true, selector: "ngt-portal-before-render", inputs: { renderPriority: { classPropertyName: "renderPriority", publicName: "renderPriority", isSignal: true, isRequired: false, transformFunction: null }, parentScene: { classPropertyName: "parentScene", publicName: "parentScene", isSignal: true, isRequired: true, transformFunction: null }, parentCamera: { classPropertyName: "parentCamera", publicName: "parentCamera", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
45
|
+
<!-- Without an element that receives pointer events state.pointer will always be 0/0 -->
|
|
46
|
+
<ngt-group (pointerover)="onPointerOver()" attach="none" />
|
|
47
|
+
`, isInline: true }); }
|
|
55
48
|
}
|
|
56
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
57
|
-
type:
|
|
58
|
-
args: [{
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
type: Output
|
|
69
|
-
}] } });
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtPortalBeforeRender, decorators: [{
|
|
50
|
+
type: Component,
|
|
51
|
+
args: [{
|
|
52
|
+
selector: 'ngt-portal-before-render',
|
|
53
|
+
standalone: true,
|
|
54
|
+
template: `
|
|
55
|
+
<!-- Without an element that receives pointer events state.pointer will always be 0/0 -->
|
|
56
|
+
<ngt-group (pointerover)="onPointerOver()" attach="none" />
|
|
57
|
+
`,
|
|
58
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
59
|
+
}]
|
|
60
|
+
}], ctorParameters: () => [] });
|
|
70
61
|
export class NgtPortalContent {
|
|
71
|
-
constructor(
|
|
72
|
-
const
|
|
62
|
+
constructor() {
|
|
63
|
+
const { element: comment } = inject(ViewContainerRef);
|
|
64
|
+
const { element: parentComment } = inject(ViewContainerRef, { skipSelf: true });
|
|
65
|
+
const commentNode = comment.nativeElement;
|
|
73
66
|
if (commentNode[SPECIAL_INTERNAL_ADD_COMMENT]) {
|
|
74
|
-
commentNode[SPECIAL_INTERNAL_ADD_COMMENT](
|
|
67
|
+
commentNode[SPECIAL_INTERNAL_ADD_COMMENT](parentComment.nativeElement);
|
|
75
68
|
delete commentNode[SPECIAL_INTERNAL_ADD_COMMENT];
|
|
76
69
|
}
|
|
77
70
|
}
|
|
78
|
-
static
|
|
79
|
-
|
|
71
|
+
static ngTemplateContextGuard(_, ctx) {
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtPortalContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
75
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0", type: NgtPortalContent, isStandalone: true, selector: "ng-template[portalContent]", ngImport: i0 }); }
|
|
80
76
|
}
|
|
81
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
77
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtPortalContent, decorators: [{
|
|
82
78
|
type: Directive,
|
|
83
|
-
args: [{ selector: 'ng-template[
|
|
84
|
-
}], ctorParameters:
|
|
85
|
-
|
|
86
|
-
|
|
79
|
+
args: [{ selector: 'ng-template[portalContent]', standalone: true }]
|
|
80
|
+
}], ctorParameters: () => [] });
|
|
81
|
+
// Keys that shouldn't be copied between stores
|
|
82
|
+
export const privateKeys = [
|
|
83
|
+
'setSize',
|
|
84
|
+
'setFrameloop',
|
|
85
|
+
'setDpr',
|
|
86
|
+
'events',
|
|
87
|
+
'setEvents',
|
|
88
|
+
'invalidate',
|
|
89
|
+
'advance',
|
|
90
|
+
'size',
|
|
91
|
+
'viewport',
|
|
92
|
+
];
|
|
87
93
|
export class NgtPortal {
|
|
88
|
-
set container(container) {
|
|
89
|
-
this.inputs.set({ container });
|
|
90
|
-
}
|
|
91
|
-
set portalState(state) {
|
|
92
|
-
this.inputs.set({ state });
|
|
93
|
-
}
|
|
94
94
|
constructor() {
|
|
95
|
-
this.
|
|
96
|
-
this.
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
this.
|
|
101
|
-
this.
|
|
102
|
-
this.
|
|
95
|
+
this.container = input.required();
|
|
96
|
+
this.state = input({});
|
|
97
|
+
/**
|
|
98
|
+
* @decsription turn this on to enable "HUD" like rendering
|
|
99
|
+
*/
|
|
100
|
+
this.autoRender = input(false);
|
|
101
|
+
this.autoRenderPriority = input(1);
|
|
102
|
+
this.portalContent = contentChild.required(NgtPortalContent, { read: TemplateRef });
|
|
103
|
+
this.portalAnchor = viewChild.required('anchor', { read: ViewContainerRef });
|
|
103
104
|
this.injector = inject(Injector);
|
|
104
|
-
this.
|
|
105
|
-
this.
|
|
106
|
-
this.
|
|
107
|
-
this.
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}
|
|
114
|
-
ngOnInit() {
|
|
115
|
-
const previousState = this.parentStore.get();
|
|
116
|
-
const inputsState = this.inputs.get();
|
|
117
|
-
if (!inputsState.state && this.autoRender) {
|
|
118
|
-
inputsState.state = { events: { priority: this.autoRenderPriority + 1 } };
|
|
119
|
-
}
|
|
120
|
-
const { events, size, ...restInputsState } = inputsState.state || {};
|
|
121
|
-
const containerState = inputsState.container;
|
|
122
|
-
let container = is.ref(containerState) ? containerState.nativeElement : containerState;
|
|
123
|
-
if (!is.instance(container)) {
|
|
124
|
-
container = prepare(container);
|
|
125
|
-
}
|
|
126
|
-
const localState = getLocalState(container);
|
|
127
|
-
if (!localState.store) {
|
|
128
|
-
localState.store = this.portalStore;
|
|
129
|
-
}
|
|
130
|
-
this.portalStore.set({
|
|
131
|
-
...previousState,
|
|
132
|
-
scene: container,
|
|
133
|
-
raycaster: this.raycaster,
|
|
134
|
-
pointer: this.pointer,
|
|
135
|
-
previousRoot: this.parentStore,
|
|
136
|
-
events: { ...previousState.events, ...(events || {}) },
|
|
137
|
-
size: { ...previousState.size, ...(size || {}) },
|
|
138
|
-
...restInputsState,
|
|
139
|
-
setEvents: (events) => this.portalStore.set((state) => ({ ...state, events: { ...state.events, ...events } })),
|
|
140
|
-
});
|
|
105
|
+
this.portalStore = injectStore({ self: true });
|
|
106
|
+
this.parentStore = injectStore({ skipSelf: true });
|
|
107
|
+
this.parentScene = this.parentStore.select('scene');
|
|
108
|
+
this.parentCamera = this.parentStore.select('camera');
|
|
109
|
+
this.raycaster = new Raycaster();
|
|
110
|
+
this.pointer = new Vector2();
|
|
111
|
+
this.portalRendered = signal(false);
|
|
112
|
+
this.renderAutoBeforeRender = computed(() => this.portalRendered() && this.autoRender());
|
|
113
|
+
const autoEffect = injectAutoEffect();
|
|
141
114
|
const parentState = this.parentStore.select();
|
|
142
|
-
|
|
143
|
-
const
|
|
144
|
-
this.
|
|
145
|
-
|
|
115
|
+
afterNextRender(() => {
|
|
116
|
+
const previousState = this.parentStore.snapshot;
|
|
117
|
+
const { events = {}, size = {}, ...rest } = this.state();
|
|
118
|
+
let container = this.container();
|
|
119
|
+
if (!is.instance(container)) {
|
|
120
|
+
container = prepare(container, { store: this.portalStore });
|
|
121
|
+
}
|
|
122
|
+
const localState = getLocalState(container);
|
|
123
|
+
if (localState && !localState.store) {
|
|
124
|
+
localState.store = this.portalStore;
|
|
125
|
+
}
|
|
126
|
+
this.portalStore.update({
|
|
127
|
+
...previousState,
|
|
128
|
+
scene: container,
|
|
129
|
+
raycaster: this.raycaster,
|
|
130
|
+
pointer: this.pointer,
|
|
131
|
+
events: { ...previousState.events, ...events },
|
|
132
|
+
size: { ...previousState.size, ...size },
|
|
133
|
+
previousRoot: this.parentStore,
|
|
134
|
+
...rest,
|
|
135
|
+
setEvents: (events) => this.portalStore.update((state) => ({ ...state, events: { ...state.events, ...events } })),
|
|
136
|
+
});
|
|
137
|
+
autoEffect(() => {
|
|
138
|
+
const state = this.state();
|
|
139
|
+
const _parentState = parentState();
|
|
140
|
+
this.portalStore.update((prev) => this.inject(_parentState, prev, state, untracked(this.container)));
|
|
141
|
+
untracked(() => {
|
|
142
|
+
if (this.portalView) {
|
|
143
|
+
this.portalView.detectChanges();
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
this.portalView = this.portalAnchor().createEmbeddedView(this.portalContent(), { container: this.container(), injector: this.injector }, { injector: this.injector });
|
|
147
|
+
this.portalView.detectChanges();
|
|
148
|
+
this.portalRendered.set(true);
|
|
149
|
+
});
|
|
146
150
|
});
|
|
147
|
-
}, { injector: this.injector });
|
|
148
|
-
requestAnimationFrame(() => {
|
|
149
|
-
this.portalStore.set((injectState) => this.inject(this.parentStore.get(), injectState));
|
|
150
151
|
});
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
this.portalContentRendered = true;
|
|
154
|
-
}
|
|
155
|
-
onBeforeRender(portal) {
|
|
156
|
-
this.beforeRender.emit({
|
|
157
|
-
root: { ...this.parentStore.get(), delta: portal.delta, frame: portal.frame },
|
|
158
|
-
portal,
|
|
152
|
+
inject(DestroyRef).onDestroy(() => {
|
|
153
|
+
this.portalView?.destroy();
|
|
159
154
|
});
|
|
160
155
|
}
|
|
161
|
-
inject(
|
|
162
|
-
const
|
|
163
|
-
|
|
156
|
+
inject(parentState, portalState, injectedState, container) {
|
|
157
|
+
const { events = {}, size, ...rest } = injectedState;
|
|
158
|
+
const intersect = { ...parentState }; // all prev state props
|
|
159
|
+
Object.keys(parentState).forEach((key) => {
|
|
164
160
|
if (privateKeys.includes(key) ||
|
|
165
|
-
|
|
161
|
+
(parentState[key] !== portalState[key] &&
|
|
162
|
+
portalState[key])) {
|
|
166
163
|
delete intersect[key];
|
|
167
164
|
}
|
|
168
165
|
});
|
|
169
|
-
const inputs = this.inputs.get();
|
|
170
|
-
const { size, events, ...restInputsState } = inputs.state || {};
|
|
171
166
|
let viewport = undefined;
|
|
172
|
-
if (
|
|
173
|
-
const camera =
|
|
174
|
-
|
|
175
|
-
|
|
167
|
+
if (portalState && size) {
|
|
168
|
+
const camera = portalState.camera;
|
|
169
|
+
// Calculate the override viewport, if present
|
|
170
|
+
viewport = parentState.viewport.getCurrentViewport(camera, new Vector3(), size);
|
|
171
|
+
// Update the portal camera, if it differs from the previous layer
|
|
172
|
+
if (camera !== parentState.camera) {
|
|
176
173
|
updateCamera(camera, size);
|
|
174
|
+
}
|
|
177
175
|
}
|
|
178
176
|
return {
|
|
179
177
|
...intersect,
|
|
180
|
-
scene:
|
|
178
|
+
scene: container,
|
|
181
179
|
raycaster: this.raycaster,
|
|
182
180
|
pointer: this.pointer,
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
...restInputsState,
|
|
181
|
+
events: { ...parentState.events, ...(portalState.events || {}), ...(events || {}) },
|
|
182
|
+
size: { ...parentState.size, ...(size || {}) },
|
|
183
|
+
viewport: { ...parentState.viewport, ...(viewport || {}) },
|
|
184
|
+
...rest,
|
|
188
185
|
};
|
|
189
186
|
}
|
|
190
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
191
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
192
|
-
<ng-container #
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
[renderPriority]="autoRenderPriority"
|
|
197
|
-
[parentScene]="parentScene"
|
|
198
|
-
[parentCamera]="parentCamera"
|
|
199
|
-
(beforeRender)="onBeforeRender($event)"
|
|
187
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtPortal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
188
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: NgtPortal, isStandalone: true, selector: "ngt-portal", inputs: { container: { classPropertyName: "container", publicName: "container", isSignal: true, isRequired: true, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, autoRender: { classPropertyName: "autoRender", publicName: "autoRender", isSignal: true, isRequired: false, transformFunction: null }, autoRenderPriority: { classPropertyName: "autoRenderPriority", publicName: "autoRenderPriority", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideStore(() => signalStore({}))], queries: [{ propertyName: "portalContent", first: true, predicate: NgtPortalContent, descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "portalAnchor", first: true, predicate: ["anchor"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `
|
|
189
|
+
<ng-container #anchor />
|
|
190
|
+
|
|
191
|
+
@if (renderAutoBeforeRender()) {
|
|
192
|
+
<ngt-portal-before-render
|
|
193
|
+
[renderPriority]="autoRenderPriority()"
|
|
194
|
+
[parentScene]="parentScene()"
|
|
195
|
+
[parentCamera]="parentCamera()"
|
|
200
196
|
/>
|
|
201
|
-
|
|
202
|
-
`, isInline: true, dependencies: [{ kind: "
|
|
197
|
+
}
|
|
198
|
+
`, isInline: true, dependencies: [{ kind: "component", type: NgtPortalBeforeRender, selector: "ngt-portal-before-render", inputs: ["renderPriority", "parentScene", "parentCamera"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
203
199
|
}
|
|
204
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
200
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtPortal, decorators: [{
|
|
205
201
|
type: Component,
|
|
206
202
|
args: [{
|
|
207
203
|
selector: 'ngt-portal',
|
|
208
204
|
standalone: true,
|
|
209
205
|
template: `
|
|
210
|
-
<ng-container #
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
[renderPriority]="autoRenderPriority"
|
|
215
|
-
[parentScene]="parentScene"
|
|
216
|
-
[parentCamera]="parentCamera"
|
|
217
|
-
(beforeRender)="onBeforeRender($event)"
|
|
206
|
+
<ng-container #anchor />
|
|
207
|
+
|
|
208
|
+
@if (renderAutoBeforeRender()) {
|
|
209
|
+
<ngt-portal-before-render
|
|
210
|
+
[renderPriority]="autoRenderPriority()"
|
|
211
|
+
[parentScene]="parentScene()"
|
|
212
|
+
[parentCamera]="parentCamera()"
|
|
218
213
|
/>
|
|
219
|
-
|
|
214
|
+
}
|
|
220
215
|
`,
|
|
221
|
-
imports: [
|
|
222
|
-
|
|
216
|
+
imports: [NgtPortalBeforeRender],
|
|
217
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
218
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
219
|
+
providers: [provideStore(() => signalStore({}))],
|
|
223
220
|
}]
|
|
224
|
-
}], ctorParameters:
|
|
225
|
-
type: Input
|
|
226
|
-
}], portalState: [{
|
|
227
|
-
type: Input,
|
|
228
|
-
args: ['state']
|
|
229
|
-
}], autoRender: [{
|
|
230
|
-
type: Input
|
|
231
|
-
}], autoRenderPriority: [{
|
|
232
|
-
type: Input
|
|
233
|
-
}], beforeRender: [{
|
|
234
|
-
type: Output
|
|
235
|
-
}], portalContentTemplate: [{
|
|
236
|
-
type: ContentChild,
|
|
237
|
-
args: [NgtPortalContent, { read: TemplateRef, static: true }]
|
|
238
|
-
}], portalContentAnchor: [{
|
|
239
|
-
type: ViewChild,
|
|
240
|
-
args: ['portalContentAnchor', { read: ViewContainerRef, static: true }]
|
|
241
|
-
}] } });
|
|
242
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcG9ydGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQ04sU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsU0FBUyxFQUNULFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixNQUFNLEdBSU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNyQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBb0QsTUFBTSxTQUFTLENBQUM7QUFDdEcsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUU5QyxNQUFNLFdBQVcsR0FBRztJQUNuQixLQUFLO0lBQ0wsS0FBSztJQUNMLFFBQVE7SUFDUixTQUFTO0lBQ1QsUUFBUTtJQUNSLGNBQWM7SUFDZCxRQUFRO0lBQ1IsWUFBWTtJ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QyxXQUFXLENBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQyw2RUFrQmxFLGdCQUFnQiwyQkFBVSxXQUFXLGtKQUdULGdCQUFnQiwyQ0FsQ2hEOzs7Ozs7Ozs7OztFQVdULDREQUNTLElBQUksNkZBNURGLHFCQUFxQjs7MkZBK0RyQixTQUFTO2tCQWxCckIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7RUFXVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUM7b0JBQ3RDLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUM7aUJBQ2hGOzBFQUlhLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSWMsV0FBVztzQkFBOUIsS0FBSzt1QkFBQyxPQUFPO2dCQUlMLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU07Z0JBR1AscUJBQXFCO3NCQURwQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUluRSxtQkFBbUI7c0JBRGxCLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHRDb250ZW50Q2hpbGQsXG5cdERlc3Ryb3lSZWYsXG5cdERpcmVjdGl2ZSxcblx0RXZlbnRFbWl0dGVyLFxuXHRJbmplY3Rvcixcblx0SW5wdXQsXG5cdE5nWm9uZSxcblx0T3V0cHV0LFxuXHRTa2lwU2VsZixcblx0VGVtcGxhdGVSZWYsXG5cdFZpZXdDaGlsZCxcblx0Vmlld0NvbnRhaW5lclJlZixcblx0ZWZmZWN0LFxuXHRpbmplY3QsXG5cdHR5cGUgRWxlbWVudFJlZixcblx0dHlwZSBFbWJlZGRlZFZpZXdSZWYsXG5cdHR5cGUgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IGluamVjdEJlZm9yZVJlbmRlciB9IGZyb20gJy4vYmVmb3JlLXJlbmRlcic7XG5pbXBvcnQgdHlwZSB7IE5ndEV2ZW50TWFuYWdlciB9IGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB7IGdldExvY2FsU3RhdGUsIHByZXBhcmUgfSBmcm9tICcuL2luc3RhbmNlJztcbmltcG9ydCB7IGluamVjdE5ndFJlZiB9IGZyb20gJy4vcmVmJztcbmltcG9ydCB7IFNQRUNJQUxfSU5URVJOQUxfQUREX0NPTU1FTlQgfSBmcm9tICcuL3JlbmRlcmVyL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBOR1RfU1RPUkUsIGluamVjdE5ndFN0b3JlLCB0eXBlIE5ndFJlbmRlclN0YXRlLCB0eXBlIE5ndFNpemUsIHR5cGUgTmd0U3RhdGUgfSBmcm9tICcuL3N0b3JlJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi91dGlscy9pcyc7XG5pbXBvcnQgeyBzYWZlRGV0ZWN0Q2hhbmdlcyB9IGZyb20gJy4vdXRpbHMvc2FmZS1kZXRlY3QtY2hhbmdlcyc7XG5pbXBvcnQgeyBzaWduYWxTdG9yZSB9IGZyb20gJy4vdXRpbHMvc2lnbmFsLXN0b3JlJztcbmltcG9ydCB7IHVwZGF0ZUNhbWVyYSB9IGZyb20gJy4vdXRpbHMvdXBkYXRlJztcblxuY29uc3QgcHJpdmF0ZUtleXMgPSBbXG5cdCdnZXQnLFxuXHQnc2V0Jyxcblx0J3NlbGVjdCcsXG5cdCdzZXRTaXplJyxcblx0J3NldERwcicsXG5cdCdzZXRGcmFtZWxvb3AnLFxuXHQnZXZlbnRzJyxcblx0J2ludmFsaWRhdGUnLFxuXHQnYWR2YW5jZScsXG5cdCdzaXplJyxcblx0J3ZpZXdwb3J0Jyxcbl0gYXMgY29uc3Q7XG50eXBlIFByaXZhdGVLZXlzID0gKHR5cGVvZiBwcml2YXRlS2V5cylbbnVtYmVyXTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RQb3J0YWxJbnB1dHMge1xuXHRjb250YWluZXI6IEVsZW1lbnRSZWY8VEhSRUUuT2JqZWN0M0Q+IHwgVEhSRUUuT2JqZWN0M0Q7XG5cdGNhbWVyYTogRWxlbWVudFJlZjxUSFJFRS5DYW1lcmE+IHwgVEhSRUUuQ2FtZXJhO1xuXHRzdGF0ZTogUGFydGlhbDxcblx0XHRPbWl0PE5ndFN0YXRlLCBQcml2YXRlS2V5cz4gJiB7XG5cdFx0XHRldmVudHM6IFBhcnRpYWw8UGljazxOZ3RFdmVudE1hbmFnZXI8YW55PiwgJ2VuYWJsZWQnIHwgJ3ByaW9yaXR5JyB8ICdjb21wdXRlJyB8ICdjb25uZWN0ZWQnPj47XG5cdFx0XHRzaXplOiBOZ3RTaXplO1xuXHRcdH1cblx0Pjtcbn1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW25ndFBvcnRhbEJlZm9yZVJlbmRlcl0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmd0UG9ydGFsQmVmb3JlUmVuZGVyIGltcGxlbWVudHMgT25Jbml0IHtcblx0cHJpdmF0ZSBwb3J0YWxTdG9yZSA9IGluamVjdE5ndFN0b3JlKCk7XG5cdHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG5cdEBJbnB1dCgpIHJlbmRlclByaW9yaXR5ID0gMTtcblx0QElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgcGFyZW50U2NlbmUhOiBUSFJFRS5TY2VuZTtcblx0QElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgcGFyZW50Q2FtZXJhITogVEhSRUUuQ2FtZXJhO1xuXG5cdEBPdXRwdXQoKSBiZWZvcmVSZW5kZXIgPSBuZXcgRXZlbnRFbWl0dGVyPE5ndFJlbmRlclN0YXRlPigpO1xuXG5cdG5nT25Jbml0KCkge1xuXHRcdGxldCBvbGRDbGVhcjogYm9vbGVhbjtcblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoXG5cdFx0XHQoeyBkZWx0YSwgZnJhbWUgfSkgPT4ge1xuXHRcdFx0XHR0aGlzLmJlZm9yZVJlbmRlci5lbWl0KHsgLi4udGhpcy5wb3J0YWxTdG9yZS5nZXQoKSwgZGVsdGEsIGZyYW1lIH0pO1xuXHRcdFx0XHRjb25zdCB7IGdsLCBzY2VuZSwgY2FtZXJhIH0gPSB0aGlzLnBvcnRhbFN0b3JlLmdldCgpO1xuXHRcdFx0XHRvbGRDbGVhciA9IGdsLmF1dG9DbGVhcjtcblx0XHRcdFx0aWYgKHRoaXMucmVuZGVyUHJpb3JpdHkgPT09IDEpIHtcblx0XHRcdFx0XHQvLyBjbGVhciBzY2VuZSBhbmQgcmVuZGVyIHdpdGggZGVmYXVsdFxuXHRcdFx0XHRcdGdsLmF1dG9DbGVhciA9IHRydWU7XG5cdFx0XHRcdFx0Z2wucmVuZGVyKHRoaXMucGFyZW50U2NlbmUsIHRoaXMucGFyZW50Q2FtZXJhKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBkaXNhYmxlIGNsZWFuaW5nXG5cdFx0XHRcdGdsLmF1dG9DbGVhciA9IGZhbHNlO1xuXHRcdFx0XHRnbC5jbGVhckRlcHRoKCk7XG5cdFx0XHRcdGdsLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcblx0XHRcdFx0Ly8gcmVzdG9yZVxuXHRcdFx0XHRnbC5hdXRvQ2xlYXIgPSBvbGRDbGVhcjtcblx0XHRcdH0sXG5cdFx0XHR7IHByaW9yaXR5OiB0aGlzLnJlbmRlclByaW9yaXR5LCBpbmplY3RvcjogdGhpcy5pbmplY3RvciB9LFxuXHRcdCk7XG5cdH1cbn1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnbmctdGVtcGxhdGVbbmd0UG9ydGFsQ29udGVudF0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmd0UG9ydGFsQ29udGVudCB7XG5cdGNvbnN0cnVjdG9yKHZjcjogVmlld0NvbnRhaW5lclJlZiwgQFNraXBTZWxmKCkgcGFyZW50VmNyOiBWaWV3Q29udGFpbmVyUmVmKSB7XG5cdFx0Y29uc3QgY29tbWVudE5vZGUgPSB2Y3IuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuXHRcdGlmIChjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXSkge1xuXHRcdFx0Y29tbWVudE5vZGVbU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVF0ocGFyZW50VmNyLmVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG5cdFx0XHRkZWxldGUgY29tbWVudE5vZGVbU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVF07XG5cdFx0fVxuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndC1wb3J0YWwnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZy1jb250YWluZXIgI3BvcnRhbENvbnRlbnRBbmNob3I+XG5cdFx0XHQ8bmctY29udGFpbmVyXG5cdFx0XHRcdCpuZ0lmPVwiYXV0b1JlbmRlciAmJiBwb3J0YWxDb250ZW50UmVuZGVyZWRcIlxuXHRcdFx0XHRuZ3RQb3J0YWxCZWZvcmVSZW5kZXJcblx0XHRcdFx0W3JlbmRlclByaW9yaXR5XT1cImF1dG9SZW5kZXJQcmlvcml0eVwiXG5cdFx0XHRcdFtwYXJlbnRTY2VuZV09XCJwYXJlbnRTY2VuZVwiXG5cdFx0XHRcdFtwYXJlbnRDYW1lcmFdPVwicGFyZW50Q2FtZXJhXCJcblx0XHRcdFx0KGJlZm9yZVJlbmRlcik9XCJvbkJlZm9yZVJlbmRlcigkZXZlbnQpXCJcblx0XHRcdC8+XG5cdFx0PC9uZy1jb250YWluZXI+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ0lmLCBOZ3RQb3J0YWxCZWZvcmVSZW5kZXJdLFxuXHRwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5HVF9TVE9SRSwgdXNlRmFjdG9yeTogKCkgPT4gc2lnbmFsU3RvcmU8Tmd0U3RhdGU+KHt9KSB9XSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0UG9ydGFsIGltcGxlbWVudHMgT25Jbml0IHtcblx0cHJpdmF0ZSBpbnB1dHMgPSBzaWduYWxTdG9yZTxOZ3RQb3J0YWxJbnB1dHM+KHsgY29udGFpbmVyOiBpbmplY3ROZ3RSZWY8VEhSRUUuU2NlbmU+KHByZXBhcmUobmV3IFRIUkVFLlNjZW5lKCkpKSB9KTtcblxuXHRASW5wdXQoKSBzZXQgY29udGFpbmVyKGNvbnRhaW5lcjogTmd0UG9ydGFsSW5wdXRzWydjb250YWluZXInXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGNvbnRhaW5lciB9KTtcblx0fVxuXG5cdEBJbnB1dCgnc3RhdGUnKSBzZXQgcG9ydGFsU3RhdGUoc3RhdGU6IE5ndFBvcnRhbElucHV0c1snc3RhdGUnXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHN0YXRlIH0pO1xuXHR9XG5cblx0QElucHV0KCkgYXV0b1JlbmRlciA9IHRydWU7XG5cdEBJbnB1dCgpIGF1dG9SZW5kZXJQcmlvcml0eSA9IDE7XG5cblx0QE91dHB1dCgpIGJlZm9yZVJlbmRlciA9IG5ldyBFdmVudEVtaXR0ZXI8eyByb290OiBOZ3RSZW5kZXJTdGF0ZTsgcG9ydGFsOiBOZ3RSZW5kZXJTdGF0ZSB9PigpO1xuXG5cdEBDb250ZW50Q2hpbGQoTmd0UG9ydGFsQ29udGVudCwgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG5cdHBvcnRhbENvbnRlbnRUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG5cdEBWaWV3Q2hpbGQoJ3BvcnRhbENvbnRlbnRBbmNob3InLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuXHRwb3J0YWxDb250ZW50QW5jaG9yITogVmlld0NvbnRhaW5lclJlZjtcblxuXHRwcml2YXRlIHBhcmVudFN0b3JlID0gaW5qZWN0Tmd0U3RvcmUoeyBza2lwU2VsZjogdHJ1ZSB9KTtcblx0cGFyZW50U2NlbmUgPSB0aGlzLnBhcmVudFN0b3JlLmdldCgnc2NlbmUnKTtcblx0cGFyZW50Q2FtZXJhID0gdGhpcy5wYXJlbnRTdG9yZS5nZXQoJ2NhbWVyYScpO1xuXG5cdHByaXZhdGUgcG9ydGFsU3RvcmUgPSBpbmplY3ROZ3RTdG9yZSh7IHNlbGY6IHRydWUgfSk7XG5cdHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXHRwcml2YXRlIHpvbmUgPSBpbmplY3QoTmdab25lKTtcblxuXHRwcml2YXRlIHJheWNhc3RlciA9IG5ldyBUSFJFRS5SYXljYXN0ZXIoKTtcblx0cHJpdmF0ZSBwb2ludGVyID0gbmV3IFRIUkVFLlZlY3RvcjIoKTtcblxuXHRwb3J0YWxDb250ZW50UmVuZGVyZWQgPSBmYWxzZTtcblx0cHJpdmF0ZSBwb3J0YWxDb250ZW50Vmlldz86IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPjtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHtcblx0XHRcdGlmICh0aGlzLnBvcnRhbENvbnRlbnRWaWV3ICYmICF0aGlzLnBvcnRhbENvbnRlbnRWaWV3LmRlc3Ryb3llZCkge1xuXHRcdFx0XHR0aGlzLnBvcnRhbENvbnRlbnRWaWV3LmRlc3Ryb3koKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdGNvbnN0IHByZXZpb3VzU3RhdGUgPSB0aGlzLnBhcmVudFN0b3JlLmdldCgpO1xuXHRcdGNvbnN0IGlucHV0c1N0YXRlID0gdGhpcy5pbnB1dHMuZ2V0KCk7XG5cblx0XHRpZiAoIWlucHV0c1N0YXRlLnN0YXRlICYmIHRoaXMuYXV0b1JlbmRlcikge1xuXHRcdFx0aW5wdXRzU3RhdGUuc3RhdGUgPSB7IGV2ZW50czogeyBwcmlvcml0eTogdGhpcy5hdXRvUmVuZGVyUHJpb3JpdHkgKyAxIH0gfTtcblx0XHR9XG5cblx0XHRjb25zdCB7IGV2ZW50cywgc2l6ZSwgLi4ucmVzdElucHV0c1N0YXRlIH0gPSBpbnB1dHNTdGF0ZS5zdGF0ZSB8fCB7fTtcblxuXHRcdGNvbnN0IGNvbnRhaW5lclN0YXRlID0gaW5wdXRzU3RhdGUuY29udGFpbmVyO1xuXHRcdGxldCBjb250YWluZXIgPSBpcy5yZWYoY29udGFpbmVyU3RhdGUpID8gY29udGFpbmVyU3RhdGUubmF0aXZlRWxlbWVudCA6IGNvbnRhaW5lclN0YXRlO1xuXG5cdFx0aWYgKCFpcy5pbnN0YW5jZShjb250YWluZXIpKSB7XG5cdFx0XHRjb250YWluZXIgPSBwcmVwYXJlKGNvbnRhaW5lcik7XG5cdFx0fVxuXG5cdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoY29udGFpbmVyKTtcblx0XHRpZiAoIWxvY2FsU3RhdGUuc3RvcmUpIHtcblx0XHRcdGxvY2FsU3RhdGUuc3RvcmUgPSB0aGlzLnBvcnRhbFN0b3JlO1xuXHRcdH1cblxuXHRcdHRoaXMucG9ydGFsU3RvcmUuc2V0KHtcblx0XHRcdC4uLnByZXZpb3VzU3RhdGUsXG5cdFx0XHRzY2VuZTogY29udGFpbmVyIGFzIFRIUkVFLlNjZW5lLFxuXHRcdFx0cmF5Y2FzdGVyOiB0aGlzLnJheWNhc3Rlcixcblx0XHRcdHBvaW50ZXI6IHRoaXMucG9pbnRlcixcblx0XHRcdHByZXZpb3VzUm9vdDogdGhpcy5wYXJlbnRTdG9yZSxcblx0XHRcdGV2ZW50czogeyAuLi5wcmV2aW91c1N0YXRlLmV2ZW50cywgLi4uKGV2ZW50cyB8fCB7fSkgfSxcblx0XHRcdHNpemU6IHsgLi4ucHJldmlvdXNTdGF0ZS5zaXplLCAuLi4oc2l6ZSB8fCB7fSkgfSxcblx0XHRcdC4uLnJlc3RJbnB1dHNTdGF0ZSxcblx0XHRcdHNldEV2ZW50czogKGV2ZW50cykgPT5cblx0XHRcdFx0dGhpcy5wb3J0YWxTdG9yZS5zZXQoKHN0YXRlKSA9PiAoeyAuLi5zdGF0ZSwgZXZlbnRzOiB7IC4uLnN0YXRlLmV2ZW50cywgLi4uZXZlbnRzIH0gfSkpLFxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgcGFyZW50U3RhdGUgPSB0aGlzLnBhcmVudFN0b3JlLnNlbGVjdCgpO1xuXHRcdGVmZmVjdChcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0Y29uc3QgcHJldmlvdXMgPSBwYXJlbnRTdGF0ZSgpO1xuXHRcdFx0XHR0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucG9ydGFsU3RvcmUuc2V0KChzdGF0ZSkgPT4gdGhpcy5pbmplY3QocHJldmlvdXMsIHN0YXRlKSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdHsgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IgfSxcblx0XHQpO1xuXG5cdFx0cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcblx0XHRcdHRoaXMucG9ydGFsU3RvcmUuc2V0KChpbmplY3RTdGF0ZSkgPT4gdGhpcy5pbmplY3QodGhpcy5wYXJlbnRTdG9yZS5nZXQoKSwgaW5qZWN0U3RhdGUpKTtcblx0XHR9KTtcblx0XHR0aGlzLnBvcnRhbENvbnRlbnRWaWV3ID0gdGhpcy5wb3J0YWxDb250ZW50QW5jaG9yLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnBvcnRhbENvbnRlbnRUZW1wbGF0ZSk7XG5cdFx0c2FmZURldGVjdENoYW5nZXModGhpcy5wb3J0YWxDb250ZW50Vmlldyk7XG5cdFx0dGhpcy5wb3J0YWxDb250ZW50UmVuZGVyZWQgPSB0cnVlO1xuXHR9XG5cblx0b25CZWZvcmVSZW5kZXIocG9ydGFsOiBOZ3RSZW5kZXJTdGF0ZSkge1xuXHRcdHRoaXMuYmVmb3JlUmVuZGVyLmVtaXQoe1xuXHRcdFx0cm9vdDogeyAuLi50aGlzLnBhcmVudFN0b3JlLmdldCgpLCBkZWx0YTogcG9ydGFsLmRlbHRhLCBmcmFtZTogcG9ydGFsLmZyYW1lIH0sXG5cdFx0XHRwb3J0YWwsXG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIGluamVjdChyb290U3RhdGU6IE5ndFN0YXRlLCBpbmplY3RTdGF0ZTogTmd0U3RhdGUpIHtcblx0XHRjb25zdCBpbnRlcnNlY3Q6IFBhcnRpYWw8Tmd0U3RhdGU+ID0geyAuLi5yb290U3RhdGUgfTtcblxuXHRcdE9iamVjdC5rZXlzKGludGVyc2VjdCkuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdHByaXZhdGVLZXlzLmluY2x1ZGVzKGtleSBhcyBQcml2YXRlS2V5cykgfHxcblx0XHRcdFx0cm9vdFN0YXRlW2tleSBhcyBrZXlvZiBOZ3RTdGF0ZV0gIT09IGluamVjdFN0YXRlW2tleSBhcyBrZXlvZiBOZ3RTdGF0ZV1cblx0XHRcdCkge1xuXHRcdFx0XHRkZWxldGUgaW50ZXJzZWN0W2tleSBhcyBrZXlvZiBOZ3RTdGF0ZV07XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRjb25zdCBpbnB1dHMgPSB0aGlzLmlucHV0cy5nZXQoKTtcblx0XHRjb25zdCB7IHNpemUsIGV2ZW50cywgLi4ucmVzdElucHV0c1N0YXRlIH0gPSBpbnB1dHMuc3RhdGUgfHwge307XG5cblx0XHRsZXQgdmlld3BvcnQgPSB1bmRlZmluZWQ7XG5cdFx0aWYgKGluamVjdFN0YXRlICYmIHNpemUpIHtcblx0XHRcdGNvbnN0IGNhbWVyYSA9IGluamVjdFN0YXRlLmNhbWVyYTtcblx0XHRcdHZpZXdwb3J0ID0gcm9vdFN0YXRlLnZpZXdwb3J0LmdldEN1cnJlbnRWaWV3cG9ydChjYW1lcmEsIG5ldyBUSFJFRS5WZWN0b3IzKCksIHNpemUpO1xuXHRcdFx0aWYgKGNhbWVyYSAhPT0gcm9vdFN0YXRlLmNhbWVyYSkgdXBkYXRlQ2FtZXJhKGNhbWVyYSwgc2l6ZSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdC4uLmludGVyc2VjdCxcblx0XHRcdHNjZW5lOiBpcy5yZWYoaW5wdXRzLmNvbnRhaW5lcikgPyBpbnB1dHMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQgOiBpbnB1dHMuY29udGFpbmVyLFxuXHRcdFx0cmF5Y2FzdGVyOiB0aGlzLnJheWNhc3Rlcixcblx0XHRcdHBvaW50ZXI6IHRoaXMucG9pbnRlcixcblx0XHRcdHByZXZpb3VzUm9vdDogdGhpcy5wYXJlbnRTdG9yZSxcblx0XHRcdGV2ZW50czogeyAuLi5yb290U3RhdGUuZXZlbnRzLCAuLi4oaW5qZWN0U3RhdGU/LmV2ZW50cyB8fCB7fSksIC4uLmV2ZW50cyB9LFxuXHRcdFx0c2l6ZTogeyAuLi5yb290U3RhdGUuc2l6ZSwgLi4uc2l6ZSB9LFxuXHRcdFx0dmlld3BvcnQ6IHsgLi4ucm9vdFN0YXRlLnZpZXdwb3J0LCAuLi4odmlld3BvcnQgfHwge30pIH0sXG5cdFx0XHQuLi5yZXN0SW5wdXRzU3RhdGUsXG5cdFx0fSBhcyBOZ3RTdGF0ZTtcblx0fVxufVxuIl19
|
|
221
|
+
}], ctorParameters: () => [] });
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcG9ydGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsWUFBWSxFQUNaLHNCQUFzQixFQUN0QixVQUFVLEVBQ1YsU0FBUyxFQUVULE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULFNBQVMsRUFDVCxnQkFBZ0IsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFvQixTQUFTLEVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUU3RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNwRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFxQixZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVc5QyxNQUFNLE9BQU8scUJBQXFCO0lBT2pDO1FBTlEsZ0JBQVcsR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUVwQyxtQkFBYyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixnQkFBVyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVMsQ0FBQztRQUN0QyxpQkFBWSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUd2QyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDL0IsY0FBYztZQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDekIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBRXZDLElBQUksUUFBaUIsQ0FBQztZQUN0QixPQUFPLGtCQUFrQixDQUN4QixHQUFHLEVBQUU7Z0JBQ0osTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7Z0JBQ3hELFFBQVEsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO2dCQUN4QixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDakMsc0NBQXNDO29CQUN0QyxFQUFFLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztvQkFDcEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7Z0JBQ3BELENBQUM7Z0JBQ0QsbUJBQW1CO2dCQUNuQixFQUFFLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDckIsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNoQixFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDekIsVUFBVTtnQkFDVixFQUFFLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztZQUN6QixDQUFDLEVBQ0QsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQ3RCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxhQUFhO1FBQ1osVUFBVTtJQUNYLENBQUM7OEdBckNXLHFCQUFxQjtrR0FBckIscUJBQXFCLHdnQkFOdkI7OztFQUdUOzsyRkFHVyxxQkFBcUI7a0JBVGpDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7O0VBR1Q7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ2pDOztBQTBDRCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzVCO1FBQ0MsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN0RCxNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRWhGLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDMUMsSUFBSSxXQUFXLENBQUMsNEJBQTRCLENBQUMsRUFBRSxDQUFDO1lBQy9DLFdBQVcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN2RSxPQUFPLFdBQVcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDRixDQUFDO0lBRUQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQW1CLEVBQUUsR0FBWTtRQUM5RCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7OEdBZFcsZ0JBQWdCO2tHQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsNEJBQTRCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTs7QUFpQnZFLCtDQUErQztBQUMvQyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUc7SUFDMUIsU0FBUztJQUNULGNBQWM7SUFDZCxRQUFRO0lBQ1IsUUFBUTtJQUNSLFdBQVc7SUFDWCxZQUFZO0lBQ1osU0FBUztJQUNULE1BQU07SUFDTixVQUFVO0NBQ0QsQ0FBQztBQW1DWCxNQUFNLE9BQU8sU0FBUztJQTJCckI7UUExQkEsY0FBUyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVksQ0FBQztRQUN2QyxVQUFLLEdBQUcsS0FBSyxDQUEyQixFQUFFLENBQUMsQ0FBQztRQUU1Qzs7V0FFRztRQUNILGVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTlCLGtCQUFhLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLGlCQUFZLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBRWhFLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsZ0JBQVcsR0FBRyxXQUFXLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMxQyxnQkFBVyxHQUFHLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELGdCQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsaUJBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV6QyxjQUFTLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUM1QixZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN4QixtQkFBYyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV2QywyQkFBc0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBS25GLE1BQU0sVUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFFdEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUU5QyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ3BCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO1lBRWhELE1BQU0sRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDekQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBRWpDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQzdELENBQUM7WUFFRCxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUMsSUFBSSxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3JDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNyQyxDQUFDO1lBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7Z0JBQ3ZCLEdBQUcsYUFBYTtnQkFDaEIsS0FBSyxFQUFFLFNBQWtCO2dCQUN6QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7Z0JBQ3pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDckIsTUFBTSxFQUFFLEVBQUUsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxFQUFFO2dCQUM5QyxJQUFJLEVBQUUsRUFBRSxHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUU7Z0JBQ3hDLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVztnQkFDOUIsR0FBRyxJQUFJO2dCQUNQLFNBQVMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQzNGLENBQUMsQ0FBQztZQUVILFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMzQixNQUFNLFlBQVksR0FBRyxXQUFXLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JHLFNBQVMsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7d0JBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7d0JBQ2hDLE9BQU87b0JBQ1IsQ0FBQztvQkFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxrQkFBa0IsQ0FDdkQsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUNwQixFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFDeEQsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUMzQixDQUFDO29CQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvQixDQUFDLENBQUMsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNqQyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVPLE1BQU0sQ0FDYixXQUFxQixFQUNyQixXQUFxQixFQUNyQixhQUF1QyxFQUN2QyxTQUFtQjtRQUVuQixNQUFNLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxhQUFhLENBQUM7UUFDckQsTUFBTSxTQUFTLEdBQXNCLEVBQUUsR0FBRyxXQUFXLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QjtRQUVoRixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3hDLElBQ0MsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUEyQixDQUFDO2dCQUNqRCxDQUFDLFdBQVcsQ0FBQyxHQUFxQixDQUFDLEtBQUssV0FBVyxDQUFDLEdBQXFCLENBQUM7b0JBQ3pFLFdBQVcsQ0FBQyxHQUFxQixDQUFDLENBQUMsRUFDbkMsQ0FBQztnQkFDRixPQUFPLFNBQVMsQ0FBQyxHQUFxQixDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQ3pCLElBQUksV0FBVyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3pCLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDbEMsOENBQThDO1lBQzlDLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxJQUFJLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2hGLGtFQUFrRTtZQUNsRSxJQUFJLE1BQU0sS0FBSyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ25DLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDNUIsQ0FBQztRQUNGLENBQUM7UUFFRCxPQUFPO1lBQ04sR0FBRyxTQUFTO1lBQ1osS0FBSyxFQUFFLFNBQWtCO1lBQ3pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsTUFBTSxFQUFFLEVBQUUsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLEVBQUU7WUFDbkYsSUFBSSxFQUFFLEVBQUUsR0FBRyxXQUFXLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEVBQUU7WUFDOUMsUUFBUSxFQUFFLEVBQUUsR0FBRyxXQUFXLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLEVBQUU7WUFDMUQsR0FBRyxJQUFJO1NBQ1AsQ0FBQztJQUNILENBQUM7OEdBOUhXLFNBQVM7a0dBQVQsU0FBUyxzbUJBRlYsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMscUVBWVYsZ0JBQWdCLDJCQUFVLFdBQVcsZ0lBQ3ZCLGdCQUFnQiw2Q0EzQjFEOzs7Ozs7Ozs7O0VBVVQsNERBakdXLHFCQUFxQjs7MkZBdUdyQixTQUFTO2tCQW5CckIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7OztFQVVUO29CQUNELE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNoQyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFNBQVMsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDaEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRhZnRlck5leHRSZW5kZXIsXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRjb250ZW50Q2hpbGQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdERlc3Ryb3lSZWYsXG5cdERpcmVjdGl2ZSxcblx0RW1iZWRkZWRWaWV3UmVmLFxuXHRpbmplY3QsXG5cdEluamVjdG9yLFxuXHRpbnB1dCxcblx0c2lnbmFsLFxuXHRUZW1wbGF0ZVJlZixcblx0dW50cmFja2VkLFxuXHR2aWV3Q2hpbGQsXG5cdFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgQ2FtZXJhLCBPYmplY3QzRCwgUmF5Y2FzdGVyLCBTY2VuZSwgVmVjdG9yMiwgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndENvbXB1dGVGdW5jdGlvbiB9IGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB7IGdldExvY2FsU3RhdGUsIHByZXBhcmUgfSBmcm9tICcuL2luc3RhbmNlJztcbmltcG9ydCB7IFNQRUNJQUxfSU5URVJOQUxfQUREX0NPTU1FTlQgfSBmcm9tICcuL3JlbmRlcmVyL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBpbmplY3RTdG9yZSwgTmd0U2l6ZSwgTmd0U3RhdGUsIHByb3ZpZGVTdG9yZSB9IGZyb20gJy4vc3RvcmUnO1xuaW1wb3J0IHsgaW5qZWN0QmVmb3JlUmVuZGVyIH0gZnJvbSAnLi91dGlscy9iZWZvcmUtcmVuZGVyJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi91dGlscy9pcyc7XG5pbXBvcnQgeyBzaWduYWxTdG9yZSB9IGZyb20gJy4vdXRpbHMvc2lnbmFsLXN0b3JlJztcbmltcG9ydCB7IHVwZGF0ZUNhbWVyYSB9IGZyb20gJy4vdXRpbHMvdXBkYXRlJztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0LXBvcnRhbC1iZWZvcmUtcmVuZGVyJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8IS0tIFdpdGhvdXQgYW4gZWxlbWVudCB0aGF0IHJlY2VpdmVzIHBvaW50ZXIgZXZlbnRzIHN0YXRlLnBvaW50ZXIgd2lsbCBhbHdheXMgYmUgMC8wIC0tPlxuXHRcdDxuZ3QtZ3JvdXAgKHBvaW50ZXJvdmVyKT1cIm9uUG9pbnRlck92ZXIoKVwiIGF0dGFjaD1cIm5vbmVcIiAvPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndFBvcnRhbEJlZm9yZVJlbmRlciB7XG5cdHByaXZhdGUgcG9ydGFsU3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXG5cdHJlbmRlclByaW9yaXR5ID0gaW5wdXQoMSk7XG5cdHBhcmVudFNjZW5lID0gaW5wdXQucmVxdWlyZWQ8U2NlbmU+KCk7XG5cdHBhcmVudENhbWVyYSA9IGlucHV0LnJlcXVpcmVkPENhbWVyYT4oKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRpbmplY3RBdXRvRWZmZWN0KCkoKGluamVjdG9yKSA9PiB7XG5cdFx0XHQvLyB0cmFjayBzdGF0ZVxuXHRcdFx0dGhpcy5wb3J0YWxTdG9yZS5zdGF0ZSgpO1xuXHRcdFx0Y29uc3QgcHJpb3JpdHkgPSB0aGlzLnJlbmRlclByaW9yaXR5KCk7XG5cblx0XHRcdGxldCBvbGRDbGVhcjogYm9vbGVhbjtcblx0XHRcdHJldHVybiBpbmplY3RCZWZvcmVSZW5kZXIoXG5cdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRjb25zdCB7IGdsLCBzY2VuZSwgY2FtZXJhIH0gPSB0aGlzLnBvcnRhbFN0b3JlLnNuYXBzaG90O1xuXHRcdFx0XHRcdG9sZENsZWFyID0gZ2wuYXV0b0NsZWFyO1xuXHRcdFx0XHRcdGlmICh0aGlzLnJlbmRlclByaW9yaXR5KCkgPT09IDEpIHtcblx0XHRcdFx0XHRcdC8vIGNsZWFyIHNjZW5lIGFuZCByZW5kZXIgd2l0aCBkZWZhdWx0XG5cdFx0XHRcdFx0XHRnbC5hdXRvQ2xlYXIgPSB0cnVlO1xuXHRcdFx0XHRcdFx0Z2wucmVuZGVyKHRoaXMucGFyZW50U2NlbmUoKSwgdGhpcy5wYXJlbnRDYW1lcmEoKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIGRpc2FibGUgY2xlYW5pbmdcblx0XHRcdFx0XHRnbC5hdXRvQ2xlYXIgPSBmYWxzZTtcblx0XHRcdFx0XHRnbC5jbGVhckRlcHRoKCk7XG5cdFx0XHRcdFx0Z2wucmVuZGVyKHNjZW5lLCBjYW1lcmEpO1xuXHRcdFx0XHRcdC8vIHJlc3RvcmVcblx0XHRcdFx0XHRnbC5hdXRvQ2xlYXIgPSBvbGRDbGVhcjtcblx0XHRcdFx0fSxcblx0XHRcdFx0eyBwcmlvcml0eSwgaW5qZWN0b3IgfSxcblx0XHRcdCk7XG5cdFx0fSk7XG5cdH1cblxuXHRvblBvaW50ZXJPdmVyKCkge1xuXHRcdC8qIG5vb3AgKi9cblx0fVxufVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtwb3J0YWxDb250ZW50XScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBOZ3RQb3J0YWxDb250ZW50IHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0Y29uc3QgeyBlbGVtZW50OiBjb21tZW50IH0gPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cdFx0Y29uc3QgeyBlbGVtZW50OiBwYXJlbnRDb21tZW50IH0gPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZiwgeyBza2lwU2VsZjogdHJ1ZSB9KTtcblxuXHRcdGNvbnN0IGNvbW1lbnROb2RlID0gY29tbWVudC5uYXRpdmVFbGVtZW50O1xuXHRcdGlmIChjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXSkge1xuXHRcdFx0Y29tbWVudE5vZGVbU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVF0ocGFyZW50Q29tbWVudC5uYXRpdmVFbGVtZW50KTtcblx0XHRcdGRlbGV0ZSBjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXTtcblx0XHR9XG5cdH1cblxuXHRzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZChfOiBOZ3RQb3J0YWxDb250ZW50LCBjdHg6IHVua25vd24pOiBjdHggaXMgeyBjb250YWluZXI6IE9iamVjdDNEOyBpbmplY3RvcjogSW5qZWN0b3IgfSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cbn1cbi8vIEtleXMgdGhhdCBzaG91bGRuJ3QgYmUgY29waWVkIGJldHdlZW4gc3RvcmVzXG5leHBvcnQgY29uc3QgcHJpdmF0ZUtleXMgPSBbXG5cdCdzZXRTaXplJyxcblx0J3NldEZyYW1lbG9vcCcsXG5cdCdzZXREcHInLFxuXHQnZXZlbnRzJyxcblx0J3NldEV2ZW50cycsXG5cdCdpbnZhbGlkYXRlJyxcblx0J2FkdmFuY2UnLFxuXHQnc2l6ZScsXG5cdCd2aWV3cG9ydCcsXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBOZ3RQb3J0YWxQcml2YXRlS2V5cyA9ICh0eXBlb2YgcHJpdmF0ZUtleXMpW251bWJlcl07XG5cbmV4cG9ydCB0eXBlIE5ndFBvcnRhbEluamVjdGFibGVTdGF0ZSA9IFBhcnRpYWw8XG5cdE9taXQ8Tmd0U3RhdGUsIE5ndFBvcnRhbFByaXZhdGVLZXlzPiAmIHtcblx0XHRldmVudHM/OiB7XG5cdFx0XHRlbmFibGVkPzogYm9vbGVhbjtcblx0XHRcdHByaW9yaXR5PzogbnVtYmVyO1xuXHRcdFx0Y29tcHV0ZT86IE5ndENvbXB1dGVGdW5jdGlvbjtcblx0XHRcdGNvbm5lY3RlZD86IGFueTtcblx0XHR9O1xuXHRcdHNpemU/OiBOZ3RTaXplO1xuXHR9XG4+O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3QtcG9ydGFsJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmctY29udGFpbmVyICNhbmNob3IgLz5cblxuXHRcdEBpZiAocmVuZGVyQXV0b0JlZm9yZVJlbmRlcigpKSB7XG5cdFx0XHQ8bmd0LXBvcnRhbC1iZWZvcmUtcmVuZGVyXG5cdFx0XHRcdFtyZW5kZXJQcmlvcml0eV09XCJhdXRvUmVuZGVyUHJpb3JpdHkoKVwiXG5cdFx0XHRcdFtwYXJlbnRTY2VuZV09XCJwYXJlbnRTY2VuZSgpXCJcblx0XHRcdFx0W3BhcmVudENhbWVyYV09XCJwYXJlbnRDYW1lcmEoKVwiXG5cdFx0XHQvPlxuXHRcdH1cblx0YCxcblx0aW1wb3J0czogW05ndFBvcnRhbEJlZm9yZVJlbmRlcl0sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdHByb3ZpZGVyczogW3Byb3ZpZGVTdG9yZSgoKSA9PiBzaWduYWxTdG9yZSh7fSkpXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0UG9ydGFsIHtcblx0Y29udGFpbmVyID0gaW5wdXQucmVxdWlyZWQ8T2JqZWN0M0Q+KCk7XG5cdHN0YXRlID0gaW5wdXQ8Tmd0UG9ydGFsSW5qZWN0YWJsZVN0YXRlPih7fSk7XG5cblx0LyoqXG5cdCAqIEBkZWNzcmlwdGlvbiB0dXJuIHRoaXMgb24gdG8gZW5hYmxlIFwiSFVEXCIgbGlrZSByZW5kZXJpbmdcblx0ICovXG5cdGF1dG9SZW5kZXIgPSBpbnB1dChmYWxzZSk7XG5cdGF1dG9SZW5kZXJQcmlvcml0eSA9IGlucHV0KDEpO1xuXG5cdHBvcnRhbENvbnRlbnQgPSBjb250ZW50Q2hpbGQucmVxdWlyZWQoTmd0UG9ydGFsQ29udGVudCwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KTtcblx0cG9ydGFsQW5jaG9yID0gdmlld0NoaWxkLnJlcXVpcmVkKCdhbmNob3InLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSk7XG5cblx0cHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cdHByaXZhdGUgcG9ydGFsU3RvcmUgPSBpbmplY3RTdG9yZSh7IHNlbGY6IHRydWUgfSk7XG5cdHByaXZhdGUgcGFyZW50U3RvcmUgPSBpbmplY3RTdG9yZSh7IHNraXBTZWxmOiB0cnVlIH0pO1xuXHRwYXJlbnRTY2VuZSA9IHRoaXMucGFyZW50U3RvcmUuc2VsZWN0KCdzY2VuZScpO1xuXHRwYXJlbnRDYW1lcmEgPSB0aGlzLnBhcmVudFN0b3JlLnNlbGVjdCgnY2FtZXJhJyk7XG5cblx0cHJpdmF0ZSByYXljYXN0ZXIgPSBuZXcgUmF5Y2FzdGVyKCk7XG5cdHByaXZhdGUgcG9pbnRlciA9IG5ldyBWZWN0b3IyKCk7XG5cdHByaXZhdGUgcG9ydGFsUmVuZGVyZWQgPSBzaWduYWwoZmFsc2UpO1xuXG5cdHJlbmRlckF1dG9CZWZvcmVSZW5kZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnBvcnRhbFJlbmRlcmVkKCkgJiYgdGhpcy5hdXRvUmVuZGVyKCkpO1xuXG5cdHByaXZhdGUgcG9ydGFsVmlldz86IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPjtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRjb25zdCBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXG5cdFx0Y29uc3QgcGFyZW50U3RhdGUgPSB0aGlzLnBhcmVudFN0b3JlLnNlbGVjdCgpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IHByZXZpb3VzU3RhdGUgPSB0aGlzLnBhcmVudFN0b3JlLnNuYXBzaG90O1xuXG5cdFx0XHRjb25zdCB7IGV2ZW50cyA9IHt9LCBzaXplID0ge30sIC4uLnJlc3QgfSA9IHRoaXMuc3RhdGUoKTtcblx0XHRcdGxldCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lcigpO1xuXG5cdFx0XHRpZiAoIWlzLmluc3RhbmNlKGNvbnRhaW5lcikpIHtcblx0XHRcdFx0Y29udGFpbmVyID0gcHJlcGFyZShjb250YWluZXIsIHsgc3RvcmU6IHRoaXMucG9ydGFsU3RvcmUgfSk7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGNvbnRhaW5lcik7XG5cdFx0XHRpZiAobG9jYWxTdGF0ZSAmJiAhbG9jYWxTdGF0ZS5zdG9yZSkge1xuXHRcdFx0XHRsb2NhbFN0YXRlLnN0b3JlID0gdGhpcy5wb3J0YWxTdG9yZTtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5wb3J0YWxTdG9yZS51cGRhdGUoe1xuXHRcdFx0XHQuLi5wcmV2aW91c1N0YXRlLFxuXHRcdFx0XHRzY2VuZTogY29udGFpbmVyIGFzIFNjZW5lLFxuXHRcdFx0XHRyYXljYXN0ZXI6IHRoaXMucmF5Y2FzdGVyLFxuXHRcdFx0XHRwb2ludGVyOiB0aGlzLnBvaW50ZXIsXG5cdFx0XHRcdGV2ZW50czogeyAuLi5wcmV2aW91c1N0YXRlLmV2ZW50cywgLi4uZXZlbnRzIH0sXG5cdFx0XHRcdHNpemU6IHsgLi4ucHJldmlvdXNTdGF0ZS5zaXplLCAuLi5zaXplIH0sXG5cdFx0XHRcdHByZXZpb3VzUm9vdDogdGhpcy5wYXJlbnRTdG9yZSxcblx0XHRcdFx0Li4ucmVzdCxcblx0XHRcdFx0c2V0RXZlbnRzOiAoZXZlbnRzKSA9PlxuXHRcdFx0XHRcdHRoaXMucG9ydGFsU3RvcmUudXBkYXRlKChzdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGV2ZW50czogeyAuLi5zdGF0ZS5ldmVudHMsIC4uLmV2ZW50cyB9IH0pKSxcblx0XHRcdH0pO1xuXG5cdFx0XHRhdXRvRWZmZWN0KCgpID0+IHtcblx0XHRcdFx0Y29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlKCk7XG5cdFx0XHRcdGNvbnN0IF9wYXJlbnRTdGF0ZSA9IHBhcmVudFN0YXRlKCk7XG5cdFx0XHRcdHRoaXMucG9ydGFsU3RvcmUudXBkYXRlKChwcmV2KSA9PiB0aGlzLmluamVjdChfcGFyZW50U3RhdGUsIHByZXYsIHN0YXRlLCB1bnRyYWNrZWQodGhpcy5jb250YWluZXIpKSk7XG5cdFx0XHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHRoaXMucG9ydGFsVmlldykge1xuXHRcdFx0XHRcdFx0dGhpcy5wb3J0YWxWaWV3LmRldGVjdENoYW5nZXMoKTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR0aGlzLnBvcnRhbFZpZXcgPSB0aGlzLnBvcnRhbEFuY2hvcigpLmNyZWF0ZUVtYmVkZGVkVmlldyhcblx0XHRcdFx0XHRcdHRoaXMucG9ydGFsQ29udGVudCgpLFxuXHRcdFx0XHRcdFx0eyBjb250YWluZXI6IHRoaXMuY29udGFpbmVyKCksIGluamVjdG9yOiB0aGlzLmluamVjdG9yIH0sXG5cdFx0XHRcdFx0XHR7IGluamVjdG9yOiB0aGlzLmluamVjdG9yIH0sXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR0aGlzLnBvcnRhbFZpZXcuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdFx0XHRcdHRoaXMucG9ydGFsUmVuZGVyZWQuc2V0KHRydWUpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXG5cdFx0aW5qZWN0KERlc3Ryb3lSZWYpLm9uRGVzdHJveSgoKSA9PiB7XG5cdFx0XHR0aGlzLnBvcnRhbFZpZXc/LmRlc3Ryb3koKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgaW5qZWN0KFxuXHRcdHBhcmVudFN0YXRlOiBOZ3RTdGF0ZSxcblx0XHRwb3J0YWxTdGF0ZTogTmd0U3RhdGUsXG5cdFx0aW5qZWN0ZWRTdGF0ZTogTmd0UG9ydGFsSW5qZWN0YWJsZVN0YXRlLFxuXHRcdGNvbnRhaW5lcjogT2JqZWN0M0QsXG5cdCkge1xuXHRcdGNvbnN0IHsgZXZlbnRzID0ge30sIHNpemUsIC4uLnJlc3QgfSA9IGluamVjdGVkU3RhdGU7XG5cdFx0Y29uc3QgaW50ZXJzZWN0OiBQYXJ0aWFsPE5ndFN0YXRlPiA9IHsgLi4ucGFyZW50U3RhdGUgfTsgLy8gYWxsIHByZXYgc3RhdGUgcHJvcHNcblxuXHRcdE9iamVjdC5rZXlzKHBhcmVudFN0YXRlKS5mb3JFYWNoKChrZXkpID0+IHtcblx0XHRcdGlmIChcblx0XHRcdFx0cHJpdmF0ZUtleXMuaW5jbHVkZXMoa2V5IGFzIE5ndFBvcnRhbFByaXZhdGVLZXlzKSB8fFxuXHRcdFx0XHQocGFyZW50U3RhdGVba2V5IGFzIGtleW9mIE5ndFN0YXRlXSAhPT0gcG9ydGFsU3RhdGVba2V5IGFzIGtleW9mIE5ndFN0YXRlXSAmJlxuXHRcdFx0XHRcdHBvcnRhbFN0YXRlW2tleSBhcyBrZXlvZiBOZ3RTdGF0ZV0pXG5cdFx0XHQpIHtcblx0XHRcdFx0ZGVsZXRlIGludGVyc2VjdFtrZXkgYXMga2V5b2YgTmd0U3RhdGVdO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0bGV0IHZpZXdwb3J0ID0gdW5kZWZpbmVkO1xuXHRcdGlmIChwb3J0YWxTdGF0ZSAmJiBzaXplKSB7XG5cdFx0XHRjb25zdCBjYW1lcmEgPSBwb3J0YWxTdGF0ZS5jYW1lcmE7XG5cdFx0XHQvLyBDYWxjdWxhdGUgdGhlIG92ZXJyaWRlIHZpZXdwb3J0LCBpZiBwcmVzZW50XG5cdFx0XHR2aWV3cG9ydCA9IHBhcmVudFN0YXRlLnZpZXdwb3J0LmdldEN1cnJlbnRWaWV3cG9ydChjYW1lcmEsIG5ldyBWZWN0b3IzKCksIHNpemUpO1xuXHRcdFx0Ly8gVXBkYXRlIHRoZSBwb3J0YWwgY2FtZXJhLCBpZiBpdCBkaWZmZXJzIGZyb20gdGhlIHByZXZpb3VzIGxheWVyXG5cdFx0XHRpZiAoY2FtZXJhICE9PSBwYXJlbnRTdGF0ZS5jYW1lcmEpIHtcblx0XHRcdFx0dXBkYXRlQ2FtZXJhKGNhbWVyYSwgc2l6ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdC4uLmludGVyc2VjdCxcblx0XHRcdHNjZW5lOiBjb250YWluZXIgYXMgU2NlbmUsXG5cdFx0XHRyYXljYXN0ZXI6IHRoaXMucmF5Y2FzdGVyLFxuXHRcdFx0cG9pbnRlcjogdGhpcy5wb2ludGVyLFxuXHRcdFx0ZXZlbnRzOiB7IC4uLnBhcmVudFN0YXRlLmV2ZW50cywgLi4uKHBvcnRhbFN0YXRlLmV2ZW50cyB8fCB7fSksIC4uLihldmVudHMgfHwge30pIH0sXG5cdFx0XHRzaXplOiB7IC4uLnBhcmVudFN0YXRlLnNpemUsIC4uLihzaXplIHx8IHt9KSB9LFxuXHRcdFx0dmlld3BvcnQ6IHsgLi4ucGFyZW50U3RhdGUudmlld3BvcnQsIC4uLih2aWV3cG9ydCB8fCB7fSkgfSxcblx0XHRcdC4uLnJlc3QsXG5cdFx0fTtcblx0fVxufVxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { createInjectionToken } from '
|
|
1
|
+
import { createInjectionToken } from 'ngxtension/create-injection-token';
|
|
2
2
|
const catalogue = {};
|
|
3
3
|
export function extend(objects) {
|
|
4
4
|
Object.assign(catalogue, objects);
|
|
5
5
|
}
|
|
6
|
-
export const [
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
export const [injectCatalogue] = createInjectionToken(() => catalogue);
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZ3VlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcmVuZGVyZXIvY2F0YWxvZ3VlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBSXpFLE1BQU0sU0FBUyxHQUFzQyxFQUFFLENBQUM7QUFFeEQsTUFBTSxVQUFVLE1BQU0sQ0FBQyxPQUFlO0lBQ3JDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlSW5qZWN0aW9uVG9rZW4gfSBmcm9tICduZ3h0ZW5zaW9uL2NyZWF0ZS1pbmplY3Rpb24tdG9rZW4nO1xuXG5leHBvcnQgdHlwZSBOZ3RBbnlDb25zdHJ1Y3RvciA9IG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueTtcblxuY29uc3QgY2F0YWxvZ3VlOiBSZWNvcmQ8c3RyaW5nLCBOZ3RBbnlDb25zdHJ1Y3Rvcj4gPSB7fTtcblxuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZChvYmplY3RzOiBvYmplY3QpOiB2b2lkIHtcblx0T2JqZWN0LmFzc2lnbihjYXRhbG9ndWUsIG9iamVjdHMpO1xufVxuXG5leHBvcnQgY29uc3QgW2luamVjdENhdGFsb2d1ZV0gPSBjcmVhdGVJbmplY3Rpb25Ub2tlbigoKSA9PiBjYXRhbG9ndWUpO1xuIl19
|
|
@@ -7,15 +7,14 @@ export const SPECIAL_DOM_TAG = {
|
|
|
7
7
|
NGT_VALUE: 'ngt-value',
|
|
8
8
|
};
|
|
9
9
|
export const SPECIAL_PROPERTIES = {
|
|
10
|
-
COMPOUND: 'ngtCompound',
|
|
11
10
|
RENDER_PRIORITY: 'priority',
|
|
12
11
|
ATTACH: 'attach',
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
RAW_VALUE: 'rawValue',
|
|
13
|
+
PARAMETERS: 'parameters',
|
|
15
14
|
};
|
|
16
15
|
export const SPECIAL_EVENTS = {
|
|
17
16
|
BEFORE_RENDER: 'beforeRender',
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
UPDATED: 'updated',
|
|
18
|
+
ATTACHED: 'attached',
|
|
20
19
|
};
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcmVuZGVyZXIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxrQ0FBa0MsQ0FBQztBQUMvRCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsd0JBQXdCLENBQUM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsOEJBQThCLENBQUM7QUFFM0UsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzlCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLGFBQWEsRUFBRSxlQUFlO0lBQzlCLFNBQVMsRUFBRSxXQUFXO0NBQ2IsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2pDLGVBQWUsRUFBRSxVQUFVO0lBQzNCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFNBQVMsRUFBRSxVQUFVO0lBQ3JCLFVBQVUsRUFBRSxZQUFZO0NBQ2YsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM3QixhQUFhLEVBQUUsY0FBYztJQUM3QixPQUFPLEVBQUUsU0FBUztJQUNsQixRQUFRLEVBQUUsVUFBVTtDQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUk9VVEVEX1NDRU5FID0gJ19fbmd0X3JlbmRlcmVyX2lzX3JvdXRlZF9zY2VuZV9fJztcbmV4cG9ydCBjb25zdCBIVE1MID0gJ19fbmd0X3JlbmRlcmVyX2lzX2h0bWwnO1xuZXhwb3J0IGNvbnN0IFNQRUNJQUxfSU5URVJOQUxfQUREX0NPTU1FTlQgPSAnX19uZ3RfcmVuZGVyZXJfYWRkX2NvbW1lbnRfXyc7XG5cbmV4cG9ydCBjb25zdCBTUEVDSUFMX0RPTV9UQUcgPSB7XG5cdE5HVF9QT1JUQUw6ICduZ3QtcG9ydGFsJyxcblx0TkdUX1BSSU1JVElWRTogJ25ndC1wcmltaXRpdmUnLFxuXHROR1RfVkFMVUU6ICduZ3QtdmFsdWUnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFNQRUNJQUxfUFJPUEVSVElFUyA9IHtcblx0UkVOREVSX1BSSU9SSVRZOiAncHJpb3JpdHknLFxuXHRBVFRBQ0g6ICdhdHRhY2gnLFxuXHRSQVdfVkFMVUU6ICdyYXdWYWx1ZScsXG5cdFBBUkFNRVRFUlM6ICdwYXJhbWV0ZXJzJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBTUEVDSUFMX0VWRU5UUyA9IHtcblx0QkVGT1JFX1JFTkRFUjogJ2JlZm9yZVJlbmRlcicsXG5cdFVQREFURUQ6ICd1cGRhdGVkJyxcblx0QVRUQUNIRUQ6ICdhdHRhY2hlZCcsXG59IGFzIGNvbnN0O1xuIl19
|