angular-three 2.0.0-beta.2 → 2.0.0-beta.21

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.
Files changed (141) hide show
  1. package/README.md +4 -147
  2. package/esm2022/angular-three.mjs +1 -1
  3. package/esm2022/index.mjs +11 -10
  4. package/esm2022/lib/before-render.mjs +13 -0
  5. package/esm2022/lib/canvas.mjs +130 -161
  6. package/esm2022/lib/directives/args.mjs +13 -11
  7. package/esm2022/lib/directives/common.mjs +29 -27
  8. package/esm2022/lib/directives/key.mjs +29 -0
  9. package/esm2022/lib/directives/parent.mjs +13 -11
  10. package/esm2022/lib/directives/repeat.mjs +5 -6
  11. package/esm2022/lib/dom/events.mjs +6 -1
  12. package/esm2022/lib/events.mjs +75 -58
  13. package/esm2022/lib/instance.mjs +65 -0
  14. package/esm2022/lib/loader.mjs +30 -37
  15. package/esm2022/lib/loop.mjs +6 -3
  16. package/esm2022/lib/portal.mjs +91 -102
  17. package/esm2022/lib/ref.mjs +48 -0
  18. package/esm2022/lib/renderer/catalogue.mjs +7 -0
  19. package/esm2022/lib/renderer/constants.mjs +21 -0
  20. package/esm2022/lib/renderer/index.mjs +419 -0
  21. package/esm2022/lib/renderer/store.mjs +144 -108
  22. package/esm2022/lib/renderer/utils.mjs +63 -48
  23. package/esm2022/lib/roots.mjs +249 -0
  24. package/esm2022/lib/routed-scene.mjs +11 -8
  25. package/esm2022/lib/store.mjs +207 -0
  26. package/esm2022/lib/three-types.mjs +2 -2
  27. package/esm2022/lib/types.mjs +1 -1
  28. package/esm2022/lib/utils/apply-props.mjs +23 -11
  29. package/esm2022/lib/utils/assert-injection-context.mjs +14 -0
  30. package/esm2022/lib/utils/attach.mjs +2 -2
  31. package/esm2022/lib/utils/create-injection-token.mjs +47 -0
  32. package/esm2022/lib/utils/is.mjs +1 -1
  33. package/esm2022/lib/utils/make.mjs +1 -1
  34. package/esm2022/lib/utils/safe-detect-changes.mjs +15 -13
  35. package/esm2022/lib/utils/signal-store.mjs +91 -0
  36. package/esm2022/lib/utils/update.mjs +1 -1
  37. package/fesm2022/angular-three.mjs +1770 -1589
  38. package/fesm2022/angular-three.mjs.map +1 -1
  39. package/index.d.ts +10 -9
  40. package/lib/{di/before-render.d.ts → before-render.d.ts} +1 -1
  41. package/lib/canvas.d.ts +81 -11
  42. package/lib/directives/args.d.ts +2 -2
  43. package/lib/directives/common.d.ts +5 -1
  44. package/lib/directives/key.d.ts +10 -0
  45. package/lib/directives/parent.d.ts +5 -5
  46. package/lib/dom/events.d.ts +3 -2
  47. package/lib/events.d.ts +78 -2
  48. package/lib/instance.d.ts +36 -0
  49. package/lib/loader.d.ts +13 -2
  50. package/lib/loop.d.ts +64 -6
  51. package/lib/portal.d.ts +20 -12
  52. package/lib/{di/ref.d.ts → ref.d.ts} +3 -2
  53. package/lib/renderer/catalogue.d.ts +9 -0
  54. package/lib/renderer/constants.d.ts +20 -0
  55. package/lib/renderer/index.d.ts +5 -0
  56. package/lib/renderer/store.d.ts +19 -15
  57. package/lib/renderer/utils.d.ts +28 -18
  58. package/lib/roots.d.ts +11 -0
  59. package/lib/routed-scene.d.ts +1 -1
  60. package/lib/store.d.ts +143 -0
  61. package/lib/three-types.d.ts +6 -6
  62. package/lib/types.d.ts +1 -309
  63. package/lib/utils/apply-props.d.ts +4 -2
  64. package/lib/utils/attach.d.ts +5 -3
  65. package/lib/utils/create-injection-token.d.ts +27 -0
  66. package/lib/utils/is.d.ts +4 -3
  67. package/lib/utils/make.d.ts +12 -1
  68. package/lib/utils/safe-detect-changes.d.ts +2 -2
  69. package/lib/utils/signal-store.d.ts +17 -0
  70. package/lib/utils/update.d.ts +1 -1
  71. package/metadata.json +1 -1
  72. package/package.json +5 -4
  73. package/plugin/generators.json +47 -17
  74. package/plugin/package.json +2 -5
  75. package/plugin/src/generators/init/compat.d.ts +3 -1
  76. package/plugin/src/generators/init/compat.js +2 -2
  77. package/plugin/src/generators/init/compat.js.map +1 -1
  78. package/plugin/src/generators/init/files/experience/experience.component.html.__tmpl__ +4 -0
  79. package/plugin/src/generators/init/files/experience/experience.component.ts.__tmpl__ +17 -0
  80. package/plugin/src/generators/init/generator.d.ts +6 -0
  81. package/plugin/src/generators/init/generator.js +144 -0
  82. package/plugin/src/generators/init/generator.js.map +1 -0
  83. package/plugin/src/generators/init/schema.json +15 -4
  84. package/plugin/src/generators/init-cannon/compat.d.ts +2 -0
  85. package/plugin/src/generators/init-cannon/compat.js +6 -0
  86. package/plugin/src/generators/init-cannon/compat.js.map +1 -0
  87. package/plugin/src/generators/init-cannon/generator.d.ts +2 -0
  88. package/plugin/src/generators/init-cannon/generator.js +22 -0
  89. package/plugin/src/generators/init-cannon/generator.js.map +1 -0
  90. package/plugin/src/generators/init-cannon/schema.json +6 -0
  91. package/plugin/src/generators/init-postprocessing/compat.d.ts +2 -0
  92. package/plugin/src/generators/init-postprocessing/compat.js +6 -0
  93. package/plugin/src/generators/init-postprocessing/compat.js.map +1 -0
  94. package/plugin/src/generators/init-postprocessing/generator.d.ts +2 -0
  95. package/plugin/src/generators/init-postprocessing/generator.js +20 -0
  96. package/plugin/src/generators/init-postprocessing/generator.js.map +1 -0
  97. package/plugin/src/generators/init-postprocessing/schema.json +6 -0
  98. package/plugin/src/generators/init-soba/compat.d.ts +2 -0
  99. package/plugin/src/generators/init-soba/compat.js +6 -0
  100. package/plugin/src/generators/init-soba/compat.js.map +1 -0
  101. package/plugin/src/generators/init-soba/generator.d.ts +2 -0
  102. package/plugin/src/generators/init-soba/generator.js +26 -0
  103. package/plugin/src/generators/init-soba/generator.js.map +1 -0
  104. package/plugin/src/generators/init-soba/schema.json +6 -0
  105. package/plugin/src/generators/utils.d.ts +2 -0
  106. package/plugin/src/generators/utils.js +34 -0
  107. package/plugin/src/generators/utils.js.map +1 -0
  108. package/plugin/src/generators/versions.d.ts +12 -0
  109. package/plugin/src/generators/versions.js +16 -0
  110. package/plugin/src/generators/versions.js.map +1 -0
  111. package/plugin/src/index.d.ts +3 -1
  112. package/plugin/src/index.js +7 -3
  113. package/plugin/src/index.js.map +1 -1
  114. package/web-types.json +1 -1
  115. package/esm2022/lib/di/before-render.mjs +0 -13
  116. package/esm2022/lib/di/catalogue.mjs +0 -7
  117. package/esm2022/lib/di/ref.mjs +0 -49
  118. package/esm2022/lib/renderer/di.mjs +0 -3
  119. package/esm2022/lib/renderer/enums.mjs +0 -2
  120. package/esm2022/lib/renderer/provider.mjs +0 -18
  121. package/esm2022/lib/renderer/renderer.mjs +0 -365
  122. package/esm2022/lib/stores/signal.store.mjs +0 -81
  123. package/esm2022/lib/stores/store.mjs +0 -423
  124. package/esm2022/lib/utils/assert-in-injection-context.mjs +0 -14
  125. package/esm2022/lib/utils/instance.mjs +0 -63
  126. package/esm2022/lib/utils/signal.mjs +0 -24
  127. package/esm2022/lib/utils/timing.mjs +0 -21
  128. package/lib/di/catalogue.d.ts +0 -3
  129. package/lib/renderer/di.d.ts +0 -2
  130. package/lib/renderer/enums.d.ts +0 -26
  131. package/lib/renderer/provider.d.ts +0 -8
  132. package/lib/renderer/renderer.d.ts +0 -49
  133. package/lib/stores/signal.store.d.ts +0 -20
  134. package/lib/stores/store.d.ts +0 -13
  135. package/lib/utils/instance.d.ts +0 -4
  136. package/lib/utils/signal.d.ts +0 -2
  137. package/lib/utils/timing.d.ts +0 -4
  138. package/plugin/src/generators/init/init.d.ts +0 -5
  139. package/plugin/src/generators/init/init.js +0 -56
  140. package/plugin/src/generators/init/init.js.map +0 -1
  141. /package/lib/utils/{assert-in-injection-context.d.ts → assert-injection-context.d.ts} +0 -0
@@ -1,159 +1,139 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, ElementRef, EnvironmentInjector, EventEmitter, Injector, Input, NgZone, Output, ViewChild, ViewContainerRef, createEnvironmentInjector, effect, inject, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, ElementRef, EnvironmentInjector, EventEmitter, Injector, Input, NgZone, Output, ViewChild, ViewContainerRef, computed, createEnvironmentInjector, effect, inject, } from '@angular/core';
2
2
  import { NgxResize, provideNgxResizeOptions } from 'ngx-resize';
3
+ import * as THREE from 'three';
3
4
  import { createPointerEvents } from './dom/events';
4
5
  import { injectNgtLoader } from './loader';
5
- import { provideNgtRenderer } from './renderer/provider';
6
- import { NgtSignalStore } from './stores/signal.store';
7
- import { NgtStore, rootStateMap } from './stores/store';
6
+ import { provideNgtRenderer } from './renderer';
7
+ import { injectCanvasRootInitializer } from './roots';
8
+ import { injectNgtStore, provideNgtStore, } from './store';
8
9
  import { is } from './utils/is';
9
10
  import { safeDetectChanges } from './utils/safe-detect-changes';
11
+ import { signalStore } from './utils/signal-store';
10
12
  import * as i0 from "@angular/core";
11
- class NgtCanvas extends NgtSignalStore {
12
- #envInjector;
13
- #injector;
14
- #host;
15
- #zone;
16
- #cdr;
17
- #store;
18
- #isReady;
13
+ export class NgtCanvas {
14
+ constructor() {
15
+ this.store = injectNgtStore();
16
+ this.initRoot = injectCanvasRootInitializer();
17
+ this.host = inject(ElementRef);
18
+ this.viewContainerRef = inject(ViewContainerRef);
19
+ this.injector = inject(Injector);
20
+ this.environmentInjector = inject(EnvironmentInjector);
21
+ this.zone = inject(NgZone);
22
+ this.destroyRef = inject(DestroyRef);
23
+ this.cdr = inject(ChangeDetectorRef);
24
+ this.inputs = signalStore({
25
+ shadows: false,
26
+ linear: false,
27
+ flat: false,
28
+ legacy: false,
29
+ orthographic: false,
30
+ frameloop: 'always',
31
+ dpr: [1, 2],
32
+ events: createPointerEvents,
33
+ });
34
+ this.sceneGraphInputs = {};
35
+ this.compoundPrefixes = [];
36
+ this.created = new EventEmitter();
37
+ this.inputsEventSource = this.inputs.select('eventSource');
38
+ this.hbPointerEvents = computed(() => (!!this.inputsEventSource() ? 'none' : 'auto'));
39
+ }
19
40
  set linear(linear) {
20
- this.set({ linear });
41
+ this.inputs.set({ linear });
21
42
  }
22
43
  set legacy(legacy) {
23
- this.set({ legacy });
44
+ this.inputs.set({ legacy });
24
45
  }
25
46
  set flat(flat) {
26
- this.set({ flat });
47
+ this.inputs.set({ flat });
27
48
  }
28
49
  set orthographic(orthographic) {
29
- this.set({ orthographic });
50
+ this.inputs.set({ orthographic });
30
51
  }
31
52
  set frameloop(frameloop) {
32
- this.set({ frameloop });
53
+ this.inputs.set({ frameloop });
33
54
  }
34
55
  set dpr(dpr) {
35
- this.set({ dpr });
56
+ this.inputs.set({ dpr });
36
57
  }
37
58
  set raycaster(raycaster) {
38
- this.set({ raycaster });
59
+ this.inputs.set({ raycaster });
39
60
  }
40
61
  set shadows(shadows) {
41
- this.set({ shadows });
62
+ this.inputs.set({ shadows });
42
63
  }
43
64
  set camera(camera) {
44
- this.set({ camera });
65
+ this.inputs.set({ camera });
45
66
  }
46
67
  set scene(scene) {
47
- this.set({ scene });
68
+ this.inputs.set({ scene });
48
69
  }
49
70
  set gl(gl) {
50
- this.set({ gl });
71
+ this.inputs.set({ gl });
51
72
  }
52
73
  set eventSource(eventSource) {
53
- this.set({ eventSource });
74
+ this.inputs.set({ eventSource });
54
75
  }
55
76
  set eventPrefix(eventPrefix) {
56
- this.set({ eventPrefix });
77
+ this.inputs.set({ eventPrefix });
57
78
  }
58
79
  set lookAt(lookAt) {
59
- this.set({ lookAt });
80
+ this.inputs.set({ lookAt });
60
81
  }
61
82
  set performance(performance) {
62
- this.set({ performance });
63
- }
64
- #glRef;
65
- #glEnvInjector;
66
- constructor() {
67
- super({
68
- shadows: false,
69
- linear: false,
70
- flat: false,
71
- legacy: false,
72
- orthographic: false,
73
- frameloop: 'always',
74
- dpr: [1, 2],
75
- events: createPointerEvents,
76
- });
77
- this.#envInjector = inject(EnvironmentInjector);
78
- this.#injector = inject(Injector);
79
- this.#host = inject(ElementRef);
80
- this.#zone = inject(NgZone);
81
- this.#cdr = inject(ChangeDetectorRef);
82
- this.#store = inject(NgtStore);
83
- this.#isReady = this.#store.select('ready');
84
- this.sceneGraphInputs = {};
85
- this.compoundPrefixes = [];
86
- this.created = new EventEmitter();
87
- this.pointerMissed = new EventEmitter();
88
- inject(DestroyRef).onDestroy(() => {
89
- if (this.#glRef)
90
- this.#glRef.destroy();
91
- if (this.#glEnvInjector)
92
- this.#glEnvInjector.destroy();
93
- injectNgtLoader.destroy();
94
- this.#store.destroy(this.glCanvas.nativeElement);
95
- });
96
- }
97
- get hbPointerEvents() {
98
- return this.select('eventSource')() !== this.#host.nativeElement ? 'none' : 'auto';
83
+ this.inputs.set({ performance });
99
84
  }
100
85
  ngOnChanges(changes) {
101
- if (changes['sceneGraphInputs'] && !changes['sceneGraphInputs'].firstChange && this.#glRef) {
102
- this.#setSceneGraphInputs();
86
+ if (changes['sceneGraphInputs'] && !changes['sceneGraphInputs'].firstChange && this.glRef) {
87
+ this.setSceneGraphInputs();
103
88
  }
104
89
  }
105
90
  ngOnInit() {
106
- if (!this.get('eventSource')) {
107
- // set default event source to the host element
108
- this.set({ eventSource: this.#host.nativeElement });
109
- }
110
- if (this.pointerMissed.observed) {
111
- this.#store.set({
112
- onPointerMissed: (event) => {
113
- this.pointerMissed.emit(event);
114
- },
115
- });
116
- }
117
- // setup NgtStore
118
- this.#store.init();
119
- // set rootStateMap
120
- rootStateMap.set(this.glCanvas.nativeElement, this.#store);
121
- // subscribe to store to listen for ready state
122
- effect(() => {
123
- this.#zone.runOutsideAngular(() => {
124
- if (this.#isReady())
125
- this.#storeReady();
126
- });
127
- }, { injector: this.#injector, allowSignalWrites: true });
91
+ // NOTE: we resolve glCanvas at this point, setup the configurator
92
+ this.configurator = this.initRoot(this.glCanvas.nativeElement);
93
+ this.destroyRef.onDestroy(() => {
94
+ this.glEnvironmentInjector?.destroy();
95
+ this.glRef?.destroy();
96
+ this.resizeEffectRef?.destroy();
97
+ injectNgtLoader.destroy();
98
+ this.configurator?.destroy();
99
+ });
128
100
  }
129
- #resizeRef;
130
- // NOTE: this is invoked outside of Angular Zone
131
- onResize({ width, height, top, left }) {
132
- // destroy previous effect
133
- if (this.#resizeRef) {
134
- this.#resizeRef.destroy();
135
- }
136
- if (width > 0 && height > 0) {
137
- if (!this.#store.isInit)
138
- this.#store.init();
139
- const inputs = this.select();
140
- this.#resizeRef = this.#zone.run(() => effect(() => {
141
- const canvasInputs = inputs();
142
- this.#zone.runOutsideAngular(() => {
143
- this.#store.configure({ ...canvasInputs, size: { width, height, top, left } }, this.glCanvas.nativeElement);
101
+ // NOTE: runs outside of Zone due to emitInZone: false
102
+ onResize(result) {
103
+ if (result.width > 0 && result.height > 0) {
104
+ this.resizeEffectRef?.destroy();
105
+ const inputs = this.inputs.select();
106
+ // NOTE: go back into zone so that effect runs
107
+ // TODO: Double-check when effect is made not depended on zone
108
+ this.resizeEffectRef = this.zone.run(() => effect(() => {
109
+ this.zone.runOutsideAngular(() => {
110
+ if (!this.configurator)
111
+ this.configurator = this.initRoot(this.glCanvas.nativeElement);
112
+ this.configurator.configure({ ...inputs(), size: result });
113
+ if (this.glRef) {
114
+ this.cdr.detectChanges();
115
+ }
116
+ else {
117
+ this.render();
118
+ }
144
119
  });
145
- }, { injector: this.#injector, manualCleanup: true, allowSignalWrites: true }));
120
+ }, { manualCleanup: true, injector: this.injector }));
146
121
  }
147
122
  }
148
- // NOTE: This is invoked outside of Angular Zone
149
- #storeReady() {
150
- // canvas is ready, let's activate the loop
151
- this.#store.set((state) => ({ internal: { ...state.internal, active: true } }));
152
- const inputs = this.get();
153
- const state = this.#store.get();
123
+ render() {
124
+ this.glEnvironmentInjector?.destroy();
125
+ this.glRef?.destroy();
126
+ // Flag the canvas active, rendering will now begin
127
+ this.store.set((state) => ({ internal: { ...state.internal, active: true } }));
128
+ const inputs = this.inputs.get();
129
+ const state = this.store.get();
154
130
  // connect to event source
155
- state.events.connect?.(is.ref(inputs.eventSource) ? inputs.eventSource.nativeElement : inputs.eventSource);
156
- // setup compute function for events
131
+ state.events.connect?.(inputs.eventSource
132
+ ? is.ref(inputs.eventSource)
133
+ ? inputs.eventSource.nativeElement
134
+ : inputs.eventSource
135
+ : this.host.nativeElement);
136
+ // setup compute for eventPrefix
157
137
  if (inputs.eventPrefix) {
158
138
  state.setEvents({
159
139
  compute: (event, store) => {
@@ -167,71 +147,65 @@ class NgtCanvas extends NgtSignalStore {
167
147
  }
168
148
  // emit created event if observed
169
149
  if (this.created.observed) {
170
- // but go back into zone to run it
171
- this.#zone.run(() => {
172
- this.created.emit(this.#store.get());
150
+ // but go back into zone to do so
151
+ this.zone.run(() => {
152
+ this.created.emit(this.store.get());
173
153
  });
174
154
  }
175
- // render
176
- if (this.#glRef)
177
- this.#glRef.destroy();
178
- requestAnimationFrame(() => {
179
- this.#glEnvInjector = createEnvironmentInjector([
180
- provideNgtRenderer({
181
- store: this.#store,
182
- changeDetectorRef: this.#cdr,
183
- compoundPrefixes: this.compoundPrefixes,
184
- }),
185
- ], this.#envInjector);
186
- this.#glRef = this.glAnchor.createComponent(this.sceneGraph, {
187
- environmentInjector: this.#glEnvInjector,
188
- });
189
- this.#setSceneGraphInputs();
190
- this.#overrideChangeDetectorRef();
191
- safeDetectChanges(this.#cdr);
155
+ if (!this.store.get('events', 'connected')) {
156
+ this.store.get('events').connect?.(this.glCanvas.nativeElement);
157
+ }
158
+ this.glEnvironmentInjector = createEnvironmentInjector([provideNgtRenderer(this.store, this.compoundPrefixes, this.cdr)], this.environmentInjector);
159
+ this.glRef = this.viewContainerRef.createComponent(this.sceneGraph, {
160
+ environmentInjector: this.glEnvironmentInjector,
161
+ injector: this.injector,
192
162
  });
163
+ this.overrideChangeDetectorRef();
164
+ this.setSceneGraphInputs();
193
165
  }
194
- #overrideChangeDetectorRef() {
195
- const originalDetectChanges = this.#cdr.detectChanges.bind(this.#cdr);
196
- this.#cdr.detectChanges = () => {
166
+ overrideChangeDetectorRef() {
167
+ const originalDetectChanges = this.cdr.detectChanges.bind(this.cdr);
168
+ this.cdr.detectChanges = () => {
197
169
  originalDetectChanges();
198
- safeDetectChanges(this.#glRef?.changeDetectorRef);
170
+ safeDetectChanges(this.glRef?.changeDetectorRef);
199
171
  };
200
172
  }
201
- #setSceneGraphInputs() {
202
- this.#zone.run(() => {
203
- if (this.#glRef) {
173
+ setSceneGraphInputs() {
174
+ this.zone.run(() => {
175
+ if (this.glRef) {
204
176
  for (const [key, value] of Object.entries(this.sceneGraphInputs)) {
205
- this.#glRef.setInput(key, value);
177
+ this.glRef.setInput(key, value);
206
178
  }
207
- safeDetectChanges(this.#glRef.changeDetectorRef);
179
+ this.glRef.changeDetectorRef.detectChanges();
208
180
  }
209
181
  });
210
182
  }
211
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtCanvas, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
212
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtCanvas, isStandalone: true, selector: "ngt-canvas", inputs: { sceneGraph: "sceneGraph", sceneGraphInputs: "sceneGraphInputs", compoundPrefixes: "compoundPrefixes", linear: "linear", legacy: "legacy", flat: "flat", orthographic: "orthographic", frameloop: "frameloop", dpr: "dpr", raycaster: "raycaster", shadows: "shadows", camera: "camera", scene: "scene", gl: "gl", eventSource: "eventSource", eventPrefix: "eventPrefix", lookAt: "lookAt", performance: "performance" }, outputs: { created: "created", pointerMissed: "pointerMissed" }, host: { styleAttribute: "display: block;position: relative;width: 100%;height: 100%;overflow: hidden;" }, providers: [NgtStore, provideNgxResizeOptions({ emitInZone: false, emitInitialResult: true })], viewQueries: [{ propertyName: "glCanvas", first: true, predicate: ["glCanvas"], descendants: true, static: true }, { propertyName: "glAnchor", first: true, predicate: ["glCanvas"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
213
- <div (ngxResize)="onResize($event)" style="height: 100%; width: 100%;">
214
- <canvas #glCanvas style="display: block;"> </canvas>
215
- </div>
216
- `, isInline: true, dependencies: [{ kind: "directive", type: NgxResize, selector: "[ngxResize]", inputs: ["ngxResizeOptions"], outputs: ["ngxResize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
183
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtCanvas, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
184
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtCanvas, isStandalone: true, selector: "ngt-canvas", inputs: { sceneGraph: "sceneGraph", sceneGraphInputs: "sceneGraphInputs", compoundPrefixes: "compoundPrefixes", linear: "linear", legacy: "legacy", flat: "flat", orthographic: "orthographic", frameloop: "frameloop", dpr: "dpr", raycaster: "raycaster", shadows: "shadows", camera: "camera", scene: "scene", gl: "gl", eventSource: "eventSource", eventPrefix: "eventPrefix", lookAt: "lookAt", performance: "performance" }, outputs: { created: "created" }, host: { properties: { "style.pointerEvents": "hbPointerEvents()" }, styleAttribute: "display: block;position: relative;width: 100%;height: 100%;overflow: hidden;" }, providers: [provideNgxResizeOptions({ emitInZone: false, emitInitialResult: true }), provideNgtStore()], viewQueries: [{ propertyName: "glCanvas", first: true, predicate: ["glCanvas"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `
185
+ <div (ngxResize)="onResize($event)" style="height: 100%; width: 100%;">
186
+ <canvas #glCanvas style="display: block;"></canvas>
187
+ </div>
188
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgxResize, selector: "[ngxResize]", inputs: ["ngxResizeOptions"], outputs: ["ngxResize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
217
189
  }
218
- export { NgtCanvas };
219
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtCanvas, decorators: [{
190
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtCanvas, decorators: [{
220
191
  type: Component,
221
192
  args: [{
222
193
  selector: 'ngt-canvas',
223
194
  standalone: true,
224
195
  template: `
225
- <div (ngxResize)="onResize($event)" style="height: 100%; width: 100%;">
226
- <canvas #glCanvas style="display: block;"> </canvas>
227
- </div>
228
- `,
196
+ <div (ngxResize)="onResize($event)" style="height: 100%; width: 100%;">
197
+ <canvas #glCanvas style="display: block;"></canvas>
198
+ </div>
199
+ `,
229
200
  imports: [NgxResize],
230
- providers: [NgtStore, provideNgxResizeOptions({ emitInZone: false, emitInitialResult: true })],
231
- host: { style: 'display: block;position: relative;width: 100%;height: 100%;overflow: hidden;' },
201
+ providers: [provideNgxResizeOptions({ emitInZone: false, emitInitialResult: true }), provideNgtStore()],
202
+ host: {
203
+ style: 'display: block;position: relative;width: 100%;height: 100%;overflow: hidden;',
204
+ '[style.pointerEvents]': 'hbPointerEvents()',
205
+ },
232
206
  changeDetection: ChangeDetectionStrategy.OnPush,
233
207
  }]
234
- }], ctorParameters: function () { return []; }, propDecorators: { sceneGraph: [{
208
+ }], propDecorators: { sceneGraph: [{
235
209
  type: Input,
236
210
  args: [{ required: true }]
237
211
  }], sceneGraphInputs: [{
@@ -270,13 +244,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
270
244
  type: Input
271
245
  }], created: [{
272
246
  type: Output
273
- }], pointerMissed: [{
274
- type: Output
275
247
  }], glCanvas: [{
276
248
  type: ViewChild,
277
249
  args: ['glCanvas', { static: true }]
278
- }], glAnchor: [{
279
- type: ViewChild,
280
- args: ['glCanvas', { static: true, read: ViewContainerRef }]
281
250
  }] } });
282
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvY2FudmFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIseUJBQXlCLEVBQ3pCLE1BQU0sRUFDTixNQUFNLEdBTVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBd0IsTUFBTSxZQUFZLENBQUM7QUFDdEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFFaEUsTUFhYSxTQUFVLFNBQVEsY0FBK0I7SUFDakQsWUFBWSxDQUErQjtJQUMzQyxTQUFTLENBQW9CO0lBQzdCLEtBQUssQ0FBaUQ7SUFDdEQsS0FBSyxDQUFrQjtJQUN2QixJQUFJLENBQTZCO0lBQ2pDLE1BQU0sQ0FBb0I7SUFFMUIsUUFBUSxDQUErQjtJQU1oRCxJQUFhLE1BQU0sQ0FBQyxNQUFlO1FBQy9CLElBQUksQ0FBQyxHQUFH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SUFBSSxFQUFFO2dCQUNoQixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVPLE1BQU07c0JBQWxCLEtBQUs7Z0JBSU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxJQUFJO3NCQUFoQixLQUFLO2dCQUlPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBSU8sU0FBUztzQkFBckIsS0FBSztnQkFJTyxHQUFHO3NCQUFmLEtBQUs7Z0JBSU8sU0FBUztzQkFBckIsS0FBSztnQkFJTyxPQUFPO3NCQUFuQixLQUFLO2dCQUlPLE1BQU07c0JBQWxCLEtBQUs7Z0JBSU8sS0FBSztzQkFBakIsS0FBSztnQkFJTyxFQUFFO3NCQUFkLEtBQUs7Z0JBSU8sV0FBVztzQkFBdkIsS0FBSztnQkFJTyxXQUFXO3NCQUF2QixLQUFLO2dCQUlPLE1BQU07c0JBQWxCLEtBQUs7Z0JBSU8sV0FBVztzQkFBdkIsS0FBSztnQkFJSSxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBRWtDLFFBQVE7c0JBQWhELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDMEIsUUFBUTtzQkFBeEUsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIGNyZWF0ZUVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgZWZmZWN0LFxuICAgIGluamVjdCxcbiAgICB0eXBlIENvbXBvbmVudFJlZixcbiAgICB0eXBlIE9uQ2hhbmdlcyxcbiAgICB0eXBlIE9uSW5pdCxcbiAgICB0eXBlIFNpbXBsZUNoYW5nZXMsXG4gICAgdHlwZSBUeXBlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neFJlc2l6ZSwgcHJvdmlkZU5neFJlc2l6ZU9wdGlvbnMsIHR5cGUgTmd4UmVzaXplUmVzdWx0IH0gZnJvbSAnbmd4LXJlc2l6ZSc7XG5pbXBvcnQgeyBjcmVhdGVQb2ludGVyRXZlbnRzIH0gZnJvbSAnLi9kb20vZXZlbnRzJztcbmltcG9ydCB7IGluamVjdE5ndExvYWRlciB9IGZyb20gJy4vbG9hZGVyJztcbmltcG9ydCB7IHByb3ZpZGVOZ3RSZW5kZXJlciB9IGZyb20gJy4vcmVuZGVyZXIvcHJvdmlkZXInO1xuaW1wb3J0IHsgTmd0U2lnbmFsU3RvcmUgfSBmcm9tICcuL3N0b3Jlcy9zaWduYWwuc3RvcmUnO1xuaW1wb3J0IHsgTmd0U3RvcmUsIHJvb3RTdGF0ZU1hcCB9IGZyb20gJy4vc3RvcmVzL3N0b3JlJztcbmltcG9ydCB0eXBlIHsgTmd0QW55UmVjb3JkLCBOZ3RDYW52YXNJbnB1dHMsIE5ndERvbUV2ZW50LCBOZ3REcHIsIE5ndFN0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4vdXRpbHMvaXMnO1xuaW1wb3J0IHsgc2FmZURldGVjdENoYW5nZXMgfSBmcm9tICcuL3V0aWxzL3NhZmUtZGV0ZWN0LWNoYW5nZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndC1jYW52YXMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiAobmd4UmVzaXplKT1cIm9uUmVzaXplKCRldmVudClcIiBzdHlsZT1cImhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7XCI+XG4gICAgICAgICAgICA8Y2FudmFzICNnbENhbnZhcyBzdHlsZT1cImRpc3BsYXk6IGJsb2NrO1wiPiA8L2NhbnZhcz5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBpbXBvcnRzOiBbTmd4UmVzaXplXSxcbiAgICBwcm92aWRlcnM6IFtOZ3RTdG9yZSwgcHJvdmlkZU5neFJlc2l6ZU9wdGlvbnMoeyBlbWl0SW5ab25lOiBmYWxzZSwgZW1pdEluaXRpYWxSZXN1bHQ6IHRydWUgfSldLFxuICAgIGhvc3Q6IHsgc3R5bGU6ICdkaXNwbGF5OiBibG9jaztwb3NpdGlvbjogcmVsYXRpdmU7d2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO292ZXJmbG93OiBoaWRkZW47JyB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RDYW52YXMgZXh0ZW5kcyBOZ3RTaWduYWxTdG9yZTxOZ3RDYW52YXNJbnB1dHM+IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIHJlYWRvbmx5ICNlbnZJbmplY3RvciA9IGluamVjdChFbnZpcm9ubWVudEluamVjdG9yKTtcbiAgICByZWFkb25seSAjaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICAgIHJlYWRvbmx5ICNob3N0ID0gaW5qZWN0KEVsZW1lbnRSZWYpIGFzIEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICAgIHJlYWRvbmx5ICN6b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gICAgcmVhZG9ubHkgI2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcmVhZG9ubHkgI3N0b3JlID0gaW5qZWN0KE5ndFN0b3JlKTtcblxuICAgIHJlYWRvbmx5ICNpc1JlYWR5ID0gdGhpcy4jc3RvcmUuc2VsZWN0KCdyZWFkeScpO1xuXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgc2NlbmVHcmFwaCE6IFR5cGU8dW5rbm93bj47XG4gICAgQElucHV0KCkgc2NlbmVHcmFwaElucHV0czogTmd0QW55UmVjb3JkID0ge307XG4gICAgQElucHV0KCkgY29tcG91bmRQcmVmaXhlczogc3RyaW5nW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIHNldCBsaW5lYXIobGluZWFyOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbGluZWFyIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBsZWdhY3kobGVnYWN5OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbGVnYWN5IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBmbGF0KGZsYXQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmbGF0IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBvcnRob2dyYXBoaWMob3J0aG9ncmFwaGljOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgb3J0aG9ncmFwaGljIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBmcmFtZWxvb3AoZnJhbWVsb29wOiBOZ3RDYW52YXNJbnB1dHNbJ2ZyYW1lbG9vcCddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZnJhbWVsb29wIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBkcHIoZHByOiBOZ3REcHIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkcHIgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHJheWNhc3RlcihyYXljYXN0ZXI6IFBhcnRpYWw8VEhSRUUuUmF5Y2FzdGVyPikge1xuICAgICAgICB0aGlzLnNldCh7IHJheWNhc3RlciB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgc2hhZG93cyhzaGFkb3dzOiBib29sZWFuIHwgUGFydGlhbDxUSFJFRS5XZWJHTFNoYWRvd01hcD4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBzaGFkb3dzIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBjYW1lcmEoY2FtZXJhOiBOZ3RDYW52YXNJbnB1dHNbJ2NhbWVyYSddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgY2FtZXJhIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBzY2VuZShzY2VuZTogTmd0Q2FudmFzSW5wdXRzWydzY2VuZSddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc2NlbmUgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGdsKGdsOiBOZ3RDYW52YXNJbnB1dHNbJ2dsJ10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBnbCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZXZlbnRTb3VyY2UoZXZlbnRTb3VyY2U6IE5ndENhbnZhc0lucHV0c1snZXZlbnRTb3VyY2UnXSkge1xuICAgICAgICB0aGlzLnNldCh7IGV2ZW50U291cmNlIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBldmVudFByZWZpeChldmVudFByZWZpeDogTmd0Q2FudmFzSW5wdXRzWydldmVudFByZWZpeCddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZXZlbnRQcmVmaXggfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGxvb2tBdChsb29rQXQ6IE5ndENhbnZhc0lucHV0c1snbG9va0F0J10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBsb29rQXQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHBlcmZvcm1hbmNlKHBlcmZvcm1hbmNlOiBOZ3RDYW52YXNJbnB1dHNbJ3BlcmZvcm1hbmNlJ10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBwZXJmb3JtYW5jZSB9KTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgY3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Tmd0U3RhdGU+KCk7XG4gICAgQE91dHB1dCgpIHBvaW50ZXJNaXNzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdnbENhbnZhcycsIHsgc3RhdGljOiB0cnVlIH0pIGdsQ2FudmFzITogRWxlbWVudFJlZjxIVE1MQ2FudmFzRWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgnZ2xDYW52YXMnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBnbEFuY2hvciE6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICAjZ2xSZWY/OiBDb21wb25lbnRSZWY8dW5rbm93bj47XG4gICAgI2dsRW52SW5qZWN0b3I/OiBFbnZpcm9ubWVudEluamVjdG9yO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIHNoYWRvd3M6IGZhbHNlLFxuICAgICAgICAgICAgbGluZWFyOiBmYWxzZSxcbiAgICAgICAgICAgIGZsYXQ6IGZhbHNlLFxuICAgICAgICAgICAgbGVnYWN5OiBmYWxzZSxcbiAgICAgICAgICAgIG9ydGhvZ3JhcGhpYzogZmFsc2UsXG4gICAgICAgICAgICBmcmFtZWxvb3A6ICdhbHdheXMnLFxuICAgICAgICAgICAgZHByOiBbMSwgMl0sXG4gICAgICAgICAgICBldmVudHM6IGNyZWF0ZVBvaW50ZXJFdmVudHMsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuI2dsUmVmKSB0aGlzLiNnbFJlZi5kZXN0cm95KCk7XG4gICAgICAgICAgICBpZiAodGhpcy4jZ2xFbnZJbmplY3RvcikgdGhpcy4jZ2xFbnZJbmplY3Rvci5kZXN0cm95KCk7XG4gICAgICAgICAgICBpbmplY3ROZ3RMb2FkZXIuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy4jc3RvcmUuZGVzdHJveSh0aGlzLmdsQ2FudmFzLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQgaGJQb2ludGVyRXZlbnRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3QoJ2V2ZW50U291cmNlJykoKSAhPT0gdGhpcy4jaG9zdC5uYXRpdmVFbGVtZW50ID8gJ25vbmUnIDogJ2F1dG8nO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3NjZW5lR3JhcGhJbnB1dHMnXSAmJiAhY2hhbmdlc1snc2NlbmVHcmFwaElucHV0cyddLmZpcnN0Q2hhbmdlICYmIHRoaXMuI2dsUmVmKSB7XG4gICAgICAgICAgICB0aGlzLiNzZXRTY2VuZUdyYXBoSW5wdXRzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmdldCgnZXZlbnRTb3VyY2UnKSkge1xuICAgICAgICAgICAgLy8gc2V0IGRlZmF1bHQgZXZlbnQgc291cmNlIHRvIHRoZSBob3N0IGVsZW1lbnRcbiAgICAgICAgICAgIHRoaXMuc2V0KHsgZXZlbnRTb3VyY2U6IHRoaXMuI2hvc3QubmF0aXZlRWxlbWVudCB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnBvaW50ZXJNaXNzZWQub2JzZXJ2ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuI3N0b3JlLnNldCh7XG4gICAgICAgICAgICAgICAgb25Qb2ludGVyTWlzc2VkOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb2ludGVyTWlzc2VkLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHNldHVwIE5ndFN0b3JlXG4gICAgICAgIHRoaXMuI3N0b3JlLmluaXQoKTtcblxuICAgICAgICAvLyBzZXQgcm9vdFN0YXRlTWFwXG4gICAgICAgIHJvb3RTdGF0ZU1hcC5zZXQodGhpcy5nbENhbnZhcy5uYXRpdmVFbGVtZW50LCB0aGlzLiNzdG9yZSk7XG5cbiAgICAgICAgLy8gc3Vic2NyaWJlIHRvIHN0b3JlIHRvIGxpc3RlbiBmb3IgcmVhZHkgc3RhdGVcbiAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuI3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy4jaXNSZWFkeSgpKSB0aGlzLiNzdG9yZVJlYWR5KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBpbmplY3RvcjogdGhpcy4jaW5qZWN0b3IsIGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAjcmVzaXplUmVmPzogUmV0dXJuVHlwZTx0eXBlb2YgZWZmZWN0PjtcbiAgICAvLyBOT1RFOiB0aGlzIGlzIGludm9rZWQgb3V0c2lkZSBvZiBBbmd1bGFyIFpvbmVcbiAgICBvblJlc2l6ZSh7IHdpZHRoLCBoZWlnaHQsIHRvcCwgbGVmdCB9OiBOZ3hSZXNpemVSZXN1bHQpIHtcbiAgICAgICAgLy8gZGVzdHJveSBwcmV2aW91cyBlZmZlY3RcbiAgICAgICAgaWYgKHRoaXMuI3Jlc2l6ZVJlZikge1xuICAgICAgICAgICAgdGhpcy4jcmVzaXplUmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLiNzdG9yZS5pc0luaXQpIHRoaXMuI3N0b3JlLmluaXQoKTtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0cyA9IHRoaXMuc2VsZWN0KCk7XG4gICAgICAgICAgICB0aGlzLiNyZXNpemVSZWYgPSB0aGlzLiN6b25lLnJ1bigoKSA9PlxuICAgICAgICAgICAgICAgIGVmZmVjdChcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FudmFzSW5wdXRzID0gaW5wdXRzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiN6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiNzdG9yZS5jb25maWd1cmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgLi4uY2FudmFzSW5wdXRzLCBzaXplOiB7IHdpZHRoLCBoZWlnaHQsIHRvcCwgbGVmdCB9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2xDYW52YXMubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBpbmplY3RvcjogdGhpcy4jaW5qZWN0b3IsIG1hbnVhbENsZWFudXA6IHRydWUsIGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTk9URTogVGhpcyBpcyBpbnZva2VkIG91dHNpZGUgb2YgQW5ndWxhciBab25lXG4gICAgI3N0b3JlUmVhZHkoKSB7XG4gICAgICAgIC8vIGNhbnZhcyBpcyByZWFkeSwgbGV0J3MgYWN0aXZhdGUgdGhlIGxvb3BcbiAgICAgICAgdGhpcy4jc3RvcmUuc2V0KChzdGF0ZSkgPT4gKHsgaW50ZXJuYWw6IHsgLi4uc3RhdGUuaW50ZXJuYWwsIGFjdGl2ZTogdHJ1ZSB9IH0pKTtcblxuICAgICAgICBjb25zdCBpbnB1dHMgPSB0aGlzLmdldCgpO1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuI3N0b3JlLmdldCgpO1xuXG4gICAgICAgIC8vIGNvbm5lY3QgdG8gZXZlbnQgc291cmNlXG4gICAgICAgIHN0YXRlLmV2ZW50cy5jb25uZWN0Py4oaXMucmVmKGlucHV0cy5ldmVudFNvdXJjZSkgPyBpbnB1dHMuZXZlbnRTb3VyY2UubmF0aXZlRWxlbWVudCA6IGlucHV0cy5ldmVudFNvdXJjZSk7XG5cbiAgICAgICAgLy8gc2V0dXAgY29tcHV0ZSBmdW5jdGlvbiBmb3IgZXZlbnRzXG4gICAgICAgIGlmIChpbnB1dHMuZXZlbnRQcmVmaXgpIHtcbiAgICAgICAgICAgIHN0YXRlLnNldEV2ZW50cyh7XG4gICAgICAgICAgICAgICAgY29tcHV0ZTogKGV2ZW50LCBzdG9yZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbm5lclN0YXRlID0gc3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHggPSBldmVudFsoaW5wdXRzLmV2ZW50UHJlZml4ICsgJ1gnKSBhcyBrZXlvZiBOZ3REb21FdmVudF0gYXMgbnVtYmVyO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB5ID0gZXZlbnRbKGlucHV0cy5ldmVudFByZWZpeCArICdZJykgYXMga2V5b2YgTmd0RG9tRXZlbnRdIGFzIG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJTdGF0ZS5wb2ludGVyLnNldCgoeCAvIGlubmVyU3RhdGUuc2l6ZS53aWR0aCkgKiAyIC0gMSwgLSh5IC8gaW5uZXJTdGF0ZS5zaXplLmhlaWdodCkgKiAyICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIGlubmVyU3RhdGUucmF5Y2FzdGVyLnNldEZyb21DYW1lcmEoaW5uZXJTdGF0ZS5wb2ludGVyLCBpbm5lclN0YXRlLmNhbWVyYSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW1pdCBjcmVhdGVkIGV2ZW50IGlmIG9ic2VydmVkXG4gICAgICAgIGlmICh0aGlzLmNyZWF0ZWQub2JzZXJ2ZWQpIHtcbiAgICAgICAgICAgIC8vIGJ1dCBnbyBiYWNrIGludG8gem9uZSB0byBydW4gaXRcbiAgICAgICAgICAgIHRoaXMuI3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZWQuZW1pdCh0aGlzLiNzdG9yZS5nZXQoKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJlbmRlclxuICAgICAgICBpZiAodGhpcy4jZ2xSZWYpIHRoaXMuI2dsUmVmLmRlc3Ryb3koKTtcblxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4jZ2xFbnZJbmplY3RvciA9IGNyZWF0ZUVudmlyb25tZW50SW5qZWN0b3IoXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlTmd0UmVuZGVyZXIoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmU6IHRoaXMuI3N0b3JlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlRGV0ZWN0b3JSZWY6IHRoaXMuI2NkcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvdW5kUHJlZml4ZXM6IHRoaXMuY29tcG91bmRQcmVmaXhlcyxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB0aGlzLiNlbnZJbmplY3RvclxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy4jZ2xSZWYgPSB0aGlzLmdsQW5jaG9yLmNyZWF0ZUNvbXBvbmVudCh0aGlzLnNjZW5lR3JhcGgsIHtcbiAgICAgICAgICAgICAgICBlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLiNnbEVudkluamVjdG9yLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLiNzZXRTY2VuZUdyYXBoSW5wdXRzKCk7XG4gICAgICAgICAgICB0aGlzLiNvdmVycmlkZUNoYW5nZURldGVjdG9yUmVmKCk7XG4gICAgICAgICAgICBzYWZlRGV0ZWN0Q2hhbmdlcyh0aGlzLiNjZHIpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAjb3ZlcnJpZGVDaGFuZ2VEZXRlY3RvclJlZigpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxEZXRlY3RDaGFuZ2VzID0gdGhpcy4jY2RyLmRldGVjdENoYW5nZXMuYmluZCh0aGlzLiNjZHIpO1xuICAgICAgICB0aGlzLiNjZHIuZGV0ZWN0Q2hhbmdlcyA9ICgpID0+IHtcbiAgICAgICAgICAgIG9yaWdpbmFsRGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgc2FmZURldGVjdENoYW5nZXModGhpcy4jZ2xSZWY/LmNoYW5nZURldGVjdG9yUmVmKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAjc2V0U2NlbmVHcmFwaElucHV0cygpIHtcbiAgICAgICAgdGhpcy4jem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuI2dsUmVmKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5zY2VuZUdyYXBoSW5wdXRzKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiNnbFJlZi5zZXRJbnB1dChrZXksIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2FmZURldGVjdENoYW5nZXModGhpcy4jZ2xSZWYuY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
251
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2FudmFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLHlCQUF5QixFQUN6QixNQUFNLEVBQ04sTUFBTSxHQU9OLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQXdCLE1BQU0sWUFBWSxDQUFDO0FBQ3RGLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoRCxPQUFPLEVBQUUsMkJBQTJCLEVBQThCLE1BQU0sU0FBUyxDQUFDO0FBQ2xGLE9BQU8sRUFDTixjQUFjLEVBQ2QsZUFBZSxHQU1mLE1BQU0sU0FBUyxDQUFDO0FBR2pCLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBdUIsTUFBTSxzQkFBc0IsQ0FBQzs7QUFvRnhFLE1BQU0sT0FBTyxTQUFTO0lBaEJ0QjtRQWlCUyxVQUFLLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFDekIsYUFBUSxHQUFHLDJCQUEyQixFQUFFLENBQUM7UUFFekMsU0FBSSxHQUFHLE1BQU0s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QUFPO3NCQUFoQixNQUFNO2dCQUtrQyxRQUFRO3NCQUFoRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXG5cdENvbXBvbmVudCxcblx0RGVzdHJveVJlZixcblx0RWxlbWVudFJlZixcblx0RW52aXJvbm1lbnRJbmplY3Rvcixcblx0RXZlbnRFbWl0dGVyLFxuXHRJbmplY3Rvcixcblx0SW5wdXQsXG5cdE5nWm9uZSxcblx0T3V0cHV0LFxuXHRWaWV3Q2hpbGQsXG5cdFZpZXdDb250YWluZXJSZWYsXG5cdGNvbXB1dGVkLFxuXHRjcmVhdGVFbnZpcm9ubWVudEluamVjdG9yLFxuXHRlZmZlY3QsXG5cdGluamVjdCxcblx0dHlwZSBDb21wb25lbnRSZWYsXG5cdHR5cGUgRWZmZWN0UmVmLFxuXHR0eXBlIE9uQ2hhbmdlcyxcblx0dHlwZSBPbkluaXQsXG5cdHR5cGUgU2ltcGxlQ2hhbmdlcyxcblx0dHlwZSBUeXBlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neFJlc2l6ZSwgcHJvdmlkZU5neFJlc2l6ZU9wdGlvbnMsIHR5cGUgTmd4UmVzaXplUmVzdWx0IH0gZnJvbSAnbmd4LXJlc2l6ZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBjcmVhdGVQb2ludGVyRXZlbnRzIH0gZnJvbSAnLi9kb20vZXZlbnRzJztcbmltcG9ydCB0eXBlIHsgTmd0Q2FtZXJhLCBOZ3REb21FdmVudCwgTmd0RXZlbnRNYW5hZ2VyIH0gZnJvbSAnLi9ldmVudHMnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0TG9hZGVyIH0gZnJvbSAnLi9sb2FkZXInO1xuaW1wb3J0IHsgcHJvdmlkZU5ndFJlbmRlcmVyIH0gZnJvbSAnLi9yZW5kZXJlcic7XG5pbXBvcnQgeyBpbmplY3RDYW52YXNSb290SW5pdGlhbGl6ZXIsIHR5cGUgTmd0Q2FudmFzQ29uZmlndXJhdG9yIH0gZnJvbSAnLi9yb290cyc7XG5pbXBvcnQge1xuXHRpbmplY3ROZ3RTdG9yZSxcblx0cHJvdmlkZU5ndFN0b3JlLFxuXHR0eXBlIE5ndERwcixcblx0dHlwZSBOZ3RQZXJmb3JtYW5jZSxcblx0dHlwZSBOZ3RSZW5kZXJlcixcblx0dHlwZSBOZ3RTaXplLFxuXHR0eXBlIE5ndFN0YXRlLFxufSBmcm9tICcuL3N0b3JlJztcbmltcG9ydCB0eXBlIHsgTmd0T2JqZWN0M0ROb2RlIH0gZnJvbSAnLi90aHJlZS10eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5ndEFueVJlY29yZCwgTmd0UHJvcGVydGllcyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgaXMgfSBmcm9tICcuL3V0aWxzL2lzJztcbmltcG9ydCB7IHNhZmVEZXRlY3RDaGFuZ2VzIH0gZnJvbSAnLi91dGlscy9zYWZlLWRldGVjdC1jaGFuZ2VzJztcbmltcG9ydCB7IHNpZ25hbFN0b3JlLCB0eXBlIE5ndFNpZ25hbFN0b3JlIH0gZnJvbSAnLi91dGlscy9zaWduYWwtc3RvcmUnO1xuXG5leHBvcnQgdHlwZSBOZ3RHTE9wdGlvbnMgPVxuXHR8IE5ndFJlbmRlcmVyXG5cdHwgKChjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50KSA9PiBOZ3RSZW5kZXJlcilcblx0fCBQYXJ0aWFsPE5ndFByb3BlcnRpZXM8VEhSRUUuV2ViR0xSZW5kZXJlcj4gfCBUSFJFRS5XZWJHTFJlbmRlcmVyUGFyYW1ldGVycz5cblx0fCB1bmRlZmluZWQ7XG5cbmV4cG9ydCB0eXBlIE5ndENhbnZhc0lucHV0cyA9IHtcblx0LyoqIEEgdGhyZWVqcyByZW5kZXJlciBpbnN0YW5jZSBvciBwcm9wcyB0aGF0IGdvIGludG8gdGhlIGRlZmF1bHQgcmVuZGVyZXIgKi9cblx0Z2w/OiBOZ3RHTE9wdGlvbnM7XG5cdHNpemU/OiBOZ3RTaXplO1xuXG5cdC8qKlxuXHQgKiBFbmFibGVzIHNoYWRvd3MgKGJ5IGRlZmF1bHQgUENGc29mdCkuIENhbiBhY2NlcHQgYGdsLnNoYWRvd01hcGAgb3B0aW9ucyBmb3IgZmluZS10dW5pbmcsXG5cdCAqIGJ1dCBhbHNvIHN0cmluZ3M6ICdiYXNpYycgfCAncGVyY2VudGFnZScgfCAnc29mdCcgfCAndmFyaWFuY2UnLlxuXHQgKiBAc2VlIGh0dHBzOi8vdGhyZWVqcy5vcmcvZG9jcy8jYXBpL2VuL3JlbmRlcmVycy9XZWJHTFJlbmRlcmVyLnNoYWRvd01hcFxuXHQgKi9cblx0c2hhZG93cz86IGJvb2xlYW4gfCAnYmFzaWMnIHwgJ3BlcmNlbnRhZ2UnIHwgJ3NvZnQnIHwgJ3ZhcmlhbmNlJyB8IFBhcnRpYWw8VEhSRUUuV2ViR0xTaGFkb3dNYXA+O1xuXHQvKipcblx0ICogRGlzYWJsZXMgdGhyZWUgcjEzOSBjb2xvciBtYW5hZ2VtZW50LlxuXHQgKiBAc2VlIGh0dHBzOi8vdGhyZWVqcy5vcmcvZG9jcy8jbWFudWFsL2VuL2ludHJvZHVjdGlvbi9Db2xvci1tYW5hZ2VtZW50XG5cdCAqL1xuXHRsZWdhY3k/OiBib29sZWFuO1xuXHQvKiogU3dpdGNoIG9mZiBhdXRvbWF0aWMgc1JHQiBlbmNvZGluZyBhbmQgZ2FtbWEgY29ycmVjdGlvbiAqL1xuXHRsaW5lYXI/OiBib29sZWFuO1xuXHQvKiogVXNlIGBUSFJFRS5Ob1RvbmVNYXBwaW5nYCBpbnN0ZWFkIG9mIGBUSFJFRS5BQ0VTRmlsbWljVG9uZU1hcHBpbmdgICovXG5cdGZsYXQ/OiBib29sZWFuO1xuXHQvKiogQ3JlYXRlcyBhbiBvcnRob2dyYXBoaWMgY2FtZXJhICovXG5cdG9ydGhvZ3JhcGhpYz86IGJvb2xlYW47XG5cdC8qKlxuXHQgKiBSM0YncyByZW5kZXIgbW9kZS4gU2V0IHRvIGBkZW1hbmRgIHRvIG9ubHkgcmVuZGVyIG9uIHN0YXRlIGNoYW5nZSBvciBgbmV2ZXJgIHRvIHRha2UgY29udHJvbC5cblx0ICogQHNlZSBodHRwczovL2RvY3MucG1uZC5ycy9yZWFjdC10aHJlZS1maWJlci9hZHZhbmNlZC9zY2FsaW5nLXBlcmZvcm1hbmNlI29uLWRlbWFuZC1yZW5kZXJpbmdcblx0ICovXG5cdGZyYW1lbG9vcD86ICdhbHdheXMnIHwgJ2RlbWFuZCcgfCAnbmV2ZXInO1xuXHQvKipcblx0ICogUjNGIHBlcmZvcm1hbmNlIG9wdGlvbnMgZm9yIGFkYXB0aXZlIHBlcmZvcm1hbmNlLlxuXHQgKiBAc2VlIGh0dHBzOi8vZG9jcy5wbW5kLnJzL3JlYWN0LXRocmVlLWZpYmVyL2FkdmFuY2VkL3NjYWxpbmctcGVyZm9ybWFuY2UjbW92ZW1lbnQtcmVncmVzc2lvblxuXHQgKi9cblx0cGVyZm9ybWFuY2U/OiBQYXJ0aWFsPE9taXQ8Tmd0UGVyZm9ybWFuY2UsICdyZWdyZXNzJz4+O1xuXHQvKiogVGFyZ2V0IHBpeGVsIHJhdGlvLiBDYW4gY2xhbXAgYmV0d2VlbiBhIHJhbmdlOiBgW21pbiwgbWF4XWAgKi9cblx0ZHByPzogTmd0RHByO1xuXHQvKiogUHJvcHMgdGhhdCBnbyBpbnRvIHRoZSBkZWZhdWx0IHJheWNhc3RlciAqL1xuXHRyYXljYXN0ZXI/OiBQYXJ0aWFsPFRIUkVFLlJheWNhc3Rlcj47XG5cdC8qKiBBIGBUSFJFRS5TY2VuZWAgaW5zdGFuY2Ugb3IgcHJvcHMgdGhhdCBnbyBpbnRvIHRoZSBkZWZhdWx0IHNjZW5lICovXG5cdHNjZW5lPzogVEhSRUUuU2NlbmUgfCBQYXJ0aWFsPFRIUkVFLlNjZW5lPjtcblx0LyoqIEEgYENhbWVyYWAgaW5zdGFuY2Ugb3IgcHJvcHMgdGhhdCBnbyBpbnRvIHRoZSBkZWZhdWx0IGNhbWVyYSAqL1xuXHRjYW1lcmE/OiAoXG5cdFx0fCBOZ3RDYW1lcmFcblx0XHR8IFBhcnRpYWw8XG5cdFx0XHRcdE5ndE9iamVjdDNETm9kZTxUSFJFRS5DYW1lcmEsIHR5cGVvZiBUSFJFRS5DYW1lcmE+ICZcblx0XHRcdFx0XHROZ3RPYmplY3QzRE5vZGU8VEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEsIHR5cGVvZiBUSFJFRS5QZXJzcGVjdGl2ZUNhbWVyYT4gJlxuXHRcdFx0XHRcdE5ndE9iamVjdDNETm9kZTxUSFJFRS5PcnRob2dyYXBoaWNDYW1lcmEsIHR5cGVvZiBUSFJFRS5PcnRob2dyYXBoaWNDYW1lcmE+XG5cdFx0ICA+XG5cdCkgJiB7XG5cdFx0LyoqIEZsYWdzIHRoZSBjYW1lcmEgYXMgbWFudWFsLCBwdXR0aW5nIHByb2plY3Rpb24gaW50byB5b3VyIG93biBoYW5kcyAqL1xuXHRcdG1hbnVhbD86IGJvb2xlYW47XG5cdH07XG5cdC8qKiBBbiBSM0YgZXZlbnQgbWFuYWdlciB0byBtYW5hZ2UgZWxlbWVudHMnIHBvaW50ZXIgZXZlbnRzICovXG5cdGV2ZW50cz86IChzdG9yZTogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+KSA9PiBOZ3RFdmVudE1hbmFnZXI8SFRNTEVsZW1lbnQ+O1xuXHQvKiogVGhlIHRhcmdldCB3aGVyZSBldmVudHMgYXJlIGJlaW5nIHN1YnNjcmliZWQgdG8sIGRlZmF1bHQ6IHRoZSBkaXYgdGhhdCB3cmFwcyBjYW52YXMgKi9cblx0ZXZlbnRTb3VyY2U/OiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXHQvKiogVGhlIGV2ZW50IHByZWZpeCB0aGF0IGlzIGNhc3QgaW50byBjYW52YXMgcG9pbnRlciB4L3kgZXZlbnRzLCBkZWZhdWx0OiBcIm9mZnNldFwiICovXG5cdGV2ZW50UHJlZml4PzogJ29mZnNldCcgfCAnY2xpZW50JyB8ICdwYWdlJyB8ICdsYXllcicgfCAnc2NyZWVuJztcblx0LyoqIERlZmF1bHQgY29vcmRpbmF0ZSBmb3IgdGhlIGNhbWVyYSB0byBsb29rIGF0ICovXG5cdGxvb2tBdD86IFRIUkVFLlZlY3RvcjMgfCBQYXJhbWV0ZXJzPFRIUkVFLlZlY3RvcjNbJ3NldCddPjtcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndC1jYW52YXMnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxkaXYgKG5neFJlc2l6ZSk9XCJvblJlc2l6ZSgkZXZlbnQpXCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlO1wiPlxuXHRcdFx0PGNhbnZhcyAjZ2xDYW52YXMgc3R5bGU9XCJkaXNwbGF5OiBibG9jaztcIj48L2NhbnZhcz5cblx0XHQ8L2Rpdj5cblx0YCxcblx0aW1wb3J0czogW05neFJlc2l6ZV0sXG5cdHByb3ZpZGVyczogW3Byb3ZpZGVOZ3hSZXNpemVPcHRpb25zKHsgZW1pdEluWm9uZTogZmFsc2UsIGVtaXRJbml0aWFsUmVzdWx0OiB0cnVlIH0pLCBwcm92aWRlTmd0U3RvcmUoKV0sXG5cdGhvc3Q6IHtcblx0XHRzdHlsZTogJ2Rpc3BsYXk6IGJsb2NrO3Bvc2l0aW9uOiByZWxhdGl2ZTt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7b3ZlcmZsb3c6IGhpZGRlbjsnLFxuXHRcdCdbc3R5bGUucG9pbnRlckV2ZW50c10nOiAnaGJQb2ludGVyRXZlbnRzKCknLFxuXHR9LFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd0Q2FudmFzIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0Tmd0U3RvcmUoKTtcblx0cHJpdmF0ZSBpbml0Um9vdCA9IGluamVjdENhbnZhc1Jvb3RJbml0aWFsaXplcigpO1xuXG5cdHByaXZhdGUgaG9zdCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG5cdHByaXZhdGUgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcblx0cHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cdHByaXZhdGUgZW52aXJvbm1lbnRJbmplY3RvciA9IGluamVjdChFbnZpcm9ubWVudEluamVjdG9yKTtcblx0cHJpdmF0ZSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cdHByaXZhdGUgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblx0cHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG5cdHByaXZhdGUgaW5wdXRzID0gc2lnbmFsU3RvcmU8Tmd0Q2FudmFzSW5wdXRzPih7XG5cdFx0c2hhZG93czogZmFsc2UsXG5cdFx0bGluZWFyOiBmYWxzZSxcblx0XHRmbGF0OiBmYWxzZSxcblx0XHRsZWdhY3k6IGZhbHNlLFxuXHRcdG9ydGhvZ3JhcGhpYzogZmFsc2UsXG5cdFx0ZnJhbWVsb29wOiAnYWx3YXlzJyxcblx0XHRkcHI6IFsxLCAyXSxcblx0XHRldmVudHM6IGNyZWF0ZVBvaW50ZXJFdmVudHMsXG5cdH0pO1xuXG5cdEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHNjZW5lR3JhcGghOiBUeXBlPHVua25vd24+O1xuXHRASW5wdXQoKSBzY2VuZUdyYXBoSW5wdXRzOiBOZ3RBbnlSZWNvcmQgPSB7fTtcblx0QElucHV0KCkgY29tcG91bmRQcmVmaXhlczogc3RyaW5nW10gPSBbXTtcblxuXHRASW5wdXQoKSBzZXQgbGluZWFyKGxpbmVhcjogYm9vbGVhbikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGxpbmVhciB9KTtcblx0fVxuXG5cdEBJbnB1dCgpIHNldCBsZWdhY3kobGVnYWN5OiBib29sZWFuKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgbGVnYWN5IH0pO1xuXHR9XG5cblx0QElucHV0KCkgc2V0IGZsYXQoZmxhdDogYm9vbGVhbikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGZsYXQgfSk7XG5cdH1cblxuXHRASW5wdXQoKSBzZXQgb3J0aG9ncmFwaGljKG9ydGhvZ3JhcGhpYzogYm9vbGVhbikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IG9ydGhvZ3JhcGhpYyB9KTtcblx0fVxuXG5cdEBJbnB1dCgpIHNldCBmcmFtZWxvb3AoZnJhbWVsb29wOiBOZ3RDYW52YXNJbnB1dHNbJ2ZyYW1lbG9vcCddKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZnJhbWVsb29wIH0pO1xuXHR9XG5cblx0QElucHV0KCkgc2V0IGRwcihkcHI6IE5ndERwcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGRwciB9KTtcblx0fVxuXG5cdEBJbnB1dCgpIHNldCByYXljYXN0ZXIocmF5Y2FzdGVyOiBQYXJ0aWFsPFRIUkVFLlJheWNhc3Rlcj4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyByYXljYXN0ZXIgfSk7XG5cdH1cblxuXHRASW5wdXQoKSBzZXQgc2hhZG93cyhzaGFkb3dzOiBib29sZWFuIHwgUGFydGlhbDxUSFJFRS5XZWJHTFNoYWRvd01hcD4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBzaGFkb3dzIH0pO1xuXHR9XG5cblx0QElucHV0KCkgc2V0IGNhbWVyYShjYW1lcmE6IE5ndENhbnZhc0lucHV0c1snY2FtZXJhJ10pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBjYW1lcmEgfSk7XG5cdH1cblxuXHRASW5wdXQoKSBzZXQgc2NlbmUoc2NlbmU6IE5ndENhbnZhc0lucHV0c1snc2NlbmUnXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHNjZW5lIH0pO1xuXHR9XG5cblx0QElucHV0KCkgc2V0IGdsKGdsOiBOZ3RDYW52YXNJbnB1dHNbJ2dsJ10pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBnbCB9KTtcblx0fVxuXG5cdEBJbnB1dCgpIHNldCBldmVudFNvdXJjZShldmVudFNvdXJjZTogTmd0Q2FudmFzSW5wdXRzWydldmVudFNvdXJjZSddKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZXZlbnRTb3VyY2UgfSk7XG5cdH1cblxuXHRASW5wdXQoKSBzZXQgZXZlbnRQcmVmaXgoZXZlbnRQcmVmaXg6IE5ndENhbnZhc0lucHV0c1snZXZlbnRQcmVmaXgnXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGV2ZW50UHJlZml4IH0pO1xuXHR9XG5cblx0QElucHV0KCkgc2V0IGxvb2tBdChsb29rQXQ6IE5ndENhbnZhc0lucHV0c1snbG9va0F0J10pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBsb29rQXQgfSk7XG5cdH1cblxuXHRASW5wdXQoKSBzZXQgcGVyZm9ybWFuY2UocGVyZm9ybWFuY2U6IE5ndENhbnZhc0lucHV0c1sncGVyZm9ybWFuY2UnXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHBlcmZvcm1hbmNlIH0pO1xuXHR9XG5cblx0QE91dHB1dCgpIGNyZWF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE5ndFN0YXRlPigpO1xuXG5cdHByaXZhdGUgaW5wdXRzRXZlbnRTb3VyY2UgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2V2ZW50U291cmNlJyk7XG5cdHByb3RlY3RlZCBoYlBvaW50ZXJFdmVudHMgPSBjb21wdXRlZCgoKSA9PiAoISF0aGlzLmlucHV0c0V2ZW50U291cmNlKCkgPyAnbm9uZScgOiAnYXV0bycpKTtcblxuXHRAVmlld0NoaWxkKCdnbENhbnZhcycsIHsgc3RhdGljOiB0cnVlIH0pIGdsQ2FudmFzITogRWxlbWVudFJlZjxIVE1MQ2FudmFzRWxlbWVudD47XG5cblx0cHJpdmF0ZSByZXNpemVFZmZlY3RSZWY/OiBFZmZlY3RSZWY7XG5cdHByaXZhdGUgY29uZmlndXJhdG9yPzogTmd0Q2FudmFzQ29uZmlndXJhdG9yO1xuXHRwcml2YXRlIGdsRW52aXJvbm1lbnRJbmplY3Rvcj86IEVudmlyb25tZW50SW5qZWN0b3I7XG5cdHByaXZhdGUgZ2xSZWY/OiBDb21wb25lbnRSZWY8dW5rbm93bj47XG5cblx0bmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuXHRcdGlmIChjaGFuZ2VzWydzY2VuZUdyYXBoSW5wdXRzJ10gJiYgIWNoYW5nZXNbJ3NjZW5lR3JhcGhJbnB1dHMnXS5maXJzdENoYW5nZSAmJiB0aGlzLmdsUmVmKSB7XG5cdFx0XHR0aGlzLnNldFNjZW5lR3JhcGhJbnB1dHMoKTtcblx0XHR9XG5cdH1cblxuXHRuZ09uSW5pdCgpIHtcblx0XHQvLyBOT1RFOiB3ZSByZXNvbHZlIGdsQ2FudmFzIGF0IHRoaXMgcG9pbnQsIHNldHVwIHRoZSBjb25maWd1cmF0b3Jcblx0XHR0aGlzLmNvbmZpZ3VyYXRvciA9IHRoaXMuaW5pdFJvb3QodGhpcy5nbENhbnZhcy5uYXRpdmVFbGVtZW50KTtcblxuXHRcdHRoaXMuZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuXHRcdFx0dGhpcy5nbEVudmlyb25tZW50SW5qZWN0b3I/LmRlc3Ryb3koKTtcblx0XHRcdHRoaXMuZ2xSZWY/LmRlc3Ryb3koKTtcblx0XHRcdHRoaXMucmVzaXplRWZmZWN0UmVmPy5kZXN0cm95KCk7XG5cdFx0XHRpbmplY3ROZ3RMb2FkZXIuZGVzdHJveSgpO1xuXHRcdFx0dGhpcy5jb25maWd1cmF0b3I/LmRlc3Ryb3koKTtcblx0XHR9KTtcblx0fVxuXG5cdC8vIE5PVEU6IHJ1bnMgb3V0c2lkZSBvZiBab25lIGR1ZSB0byBlbWl0SW5ab25lOiBmYWxzZVxuXHRvblJlc2l6ZShyZXN1bHQ6IE5neFJlc2l6ZVJlc3VsdCkge1xuXHRcdGlmIChyZXN1bHQud2lkdGggPiAwICYmIHJlc3VsdC5oZWlnaHQgPiAwKSB7XG5cdFx0XHR0aGlzLnJlc2l6ZUVmZmVjdFJlZj8uZGVzdHJveSgpO1xuXG5cdFx0XHRjb25zdCBpbnB1dHMgPSB0aGlzLmlucHV0cy5zZWxlY3QoKTtcblx0XHRcdC8vIE5PVEU6IGdvIGJhY2sgaW50byB6b25lIHNvIHRoYXQgZWZmZWN0IHJ1bnNcblx0XHRcdC8vIFRPRE86IERvdWJsZS1jaGVjayB3aGVuIGVmZmVjdCBpcyBtYWRlIG5vdCBkZXBlbmRlZCBvbiB6b25lXG5cdFx0XHR0aGlzLnJlc2l6ZUVmZmVjdFJlZiA9IHRoaXMuem9uZS5ydW4oKCkgPT5cblx0XHRcdFx0ZWZmZWN0KFxuXHRcdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGlmICghdGhpcy5jb25maWd1cmF0b3IpIHRoaXMuY29uZmlndXJhdG9yID0gdGhpcy5pbml0Um9vdCh0aGlzLmdsQ2FudmFzLm5hdGl2ZUVsZW1lbnQpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLmNvbmZpZ3VyYXRvci5jb25maWd1cmUoeyAuLi5pbnB1dHMoKSwgc2l6ZTogcmVzdWx0IH0pO1xuXG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzLmdsUmVmKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMucmVuZGVyKCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0eyBtYW51YWxDbGVhbnVwOiB0cnVlLCBpbmplY3RvcjogdGhpcy5pbmplY3RvciB9LFxuXHRcdFx0XHQpLFxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHJlbmRlcigpIHtcblx0XHR0aGlzLmdsRW52aXJvbm1lbnRJbmplY3Rvcj8uZGVzdHJveSgpO1xuXHRcdHRoaXMuZ2xSZWY/LmRlc3Ryb3koKTtcblxuXHRcdC8vIEZsYWcgdGhlIGNhbnZhcyBhY3RpdmUsIHJlbmRlcmluZyB3aWxsIG5vdyBiZWdpblxuXHRcdHRoaXMuc3RvcmUuc2V0KChzdGF0ZSkgPT4gKHsgaW50ZXJuYWw6IHsgLi4uc3RhdGUuaW50ZXJuYWwsIGFjdGl2ZTogdHJ1ZSB9IH0pKTtcblxuXHRcdGNvbnN0IGlucHV0cyA9IHRoaXMuaW5wdXRzLmdldCgpO1xuXHRcdGNvbnN0IHN0YXRlID0gdGhpcy5zdG9yZS5nZXQoKTtcblxuXHRcdC8vIGNvbm5lY3QgdG8gZXZlbnQgc291cmNlXG5cdFx0c3RhdGUuZXZlbnRzLmNvbm5lY3Q/Lihcblx0XHRcdGlucHV0cy5ldmVudFNvdXJjZVxuXHRcdFx0XHQ/IGlzLnJlZihpbnB1dHMuZXZlbnRTb3VyY2UpXG5cdFx0XHRcdFx0PyBpbnB1dHMuZXZlbnRTb3VyY2UubmF0aXZlRWxlbWVudFxuXHRcdFx0XHRcdDogaW5wdXRzLmV2ZW50U291cmNlXG5cdFx0XHRcdDogdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsXG5cdFx0KTtcblxuXHRcdC8vIHNldHVwIGNvbXB1dGUgZm9yIGV2ZW50UHJlZml4XG5cdFx0aWYgKGlucHV0cy5ldmVudFByZWZpeCkge1xuXHRcdFx0c3RhdGUuc2V0RXZlbnRzKHtcblx0XHRcdFx0Y29tcHV0ZTogKGV2ZW50LCBzdG9yZSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGlubmVyU3RhdGUgPSBzdG9yZS5nZXQoKTtcblx0XHRcdFx0XHRjb25zdCB4ID0gZXZlbnRbKGlucHV0cy5ldmVudFByZWZpeCArICdYJykgYXMga2V5b2YgTmd0RG9tRXZlbnRdIGFzIG51bWJlcjtcblx0XHRcdFx0XHRjb25zdCB5ID0gZXZlbnRbKGlucHV0cy5ldmVudFByZWZpeCArICdZJykgYXMga2V5b2YgTmd0RG9tRXZlbnRdIGFzIG51bWJlcjtcblx0XHRcdFx0XHRpbm5lclN0YXRlLnBvaW50ZXIuc2V0KCh4IC8gaW5uZXJTdGF0ZS5zaXplLndpZHRoKSAqIDIgLSAxLCAtKHkgLyBpbm5lclN0YXRlLnNpemUuaGVpZ2h0KSAqIDIgKyAxKTtcblx0XHRcdFx0XHRpbm5lclN0YXRlLnJheWNhc3Rlci5zZXRGcm9tQ2FtZXJhKGlubmVyU3RhdGUucG9pbnRlciwgaW5uZXJTdGF0ZS5jYW1lcmEpO1xuXHRcdFx0XHR9LFxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0Ly8gZW1pdCBjcmVhdGVkIGV2ZW50IGlmIG9ic2VydmVkXG5cdFx0aWYgKHRoaXMuY3JlYXRlZC5vYnNlcnZlZCkge1xuXHRcdFx0Ly8gYnV0IGdvIGJhY2sgaW50byB6b25lIHRvIGRvIHNvXG5cdFx0XHR0aGlzLnpvbmUucnVuKCgpID0+IHtcblx0XHRcdFx0dGhpcy5jcmVhdGVkLmVtaXQodGhpcy5zdG9yZS5nZXQoKSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRpZiAoIXRoaXMuc3RvcmUuZ2V0KCdldmVudHMnLCAnY29ubmVjdGVkJykpIHtcblx0XHRcdHRoaXMuc3RvcmUuZ2V0KCdldmVudHMnKS5jb25uZWN0Py4odGhpcy5nbENhbnZhcy5uYXRpdmVFbGVtZW50KTtcblx0XHR9XG5cblx0XHR0aGlzLmdsRW52aXJvbm1lbnRJbmplY3RvciA9IGNyZWF0ZUVudmlyb25tZW50SW5qZWN0b3IoXG5cdFx0XHRbcHJvdmlkZU5ndFJlbmRlcmVyKHRoaXMuc3RvcmUsIHRoaXMuY29tcG91bmRQcmVmaXhlcywgdGhpcy5jZHIpXSxcblx0XHRcdHRoaXMuZW52aXJvbm1lbnRJbmplY3Rvcixcblx0XHQpO1xuXHRcdHRoaXMuZ2xSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KHRoaXMuc2NlbmVHcmFwaCwge1xuXHRcdFx0ZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy5nbEVudmlyb25tZW50SW5qZWN0b3IsXG5cdFx0XHRpbmplY3RvcjogdGhpcy5pbmplY3Rvcixcblx0XHR9KTtcblx0XHR0aGlzLm92ZXJyaWRlQ2hhbmdlRGV0ZWN0b3JSZWYoKTtcblx0XHR0aGlzLnNldFNjZW5lR3JhcGhJbnB1dHMoKTtcblx0fVxuXG5cdHByaXZhdGUgb3ZlcnJpZGVDaGFuZ2VEZXRlY3RvclJlZigpIHtcblx0XHRjb25zdCBvcmlnaW5hbERldGVjdENoYW5nZXMgPSB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzLmJpbmQodGhpcy5jZHIpO1xuXHRcdHRoaXMuY2RyLmRldGVjdENoYW5nZXMgPSAoKSA9PiB7XG5cdFx0XHRvcmlnaW5hbERldGVjdENoYW5nZXMoKTtcblx0XHRcdHNhZmVEZXRlY3RDaGFuZ2VzKHRoaXMuZ2xSZWY/LmNoYW5nZURldGVjdG9yUmVmKTtcblx0XHR9O1xuXHR9XG5cblx0cHJpdmF0ZSBzZXRTY2VuZUdyYXBoSW5wdXRzKCkge1xuXHRcdHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuXHRcdFx0aWYgKHRoaXMuZ2xSZWYpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5zY2VuZUdyYXBoSW5wdXRzKSkge1xuXHRcdFx0XHRcdHRoaXMuZ2xSZWYuc2V0SW5wdXQoa2V5LCB2YWx1ZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5nbFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
@@ -1,33 +1,35 @@
1
1
  import { Directive, Input } from '@angular/core';
2
2
  import { NgtCommonDirective } from './common';
3
3
  import * as i0 from "@angular/core";
4
- class NgtArgs extends NgtCommonDirective {
5
- #injectedArgs = [];
4
+ export class NgtArgs extends NgtCommonDirective {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.injectedArgs = [];
8
+ }
6
9
  set args(args) {
7
10
  if (args == null || !Array.isArray(args) || (args.length === 1 && args[0] === null))
8
11
  return;
9
12
  this.injected = false;
10
- this.#injectedArgs = args;
13
+ this.injectedArgs = args;
11
14
  this.createView();
12
15
  }
13
16
  get args() {
14
17
  if (this.validate()) {
15
18
  this.injected = true;
16
- return this.#injectedArgs;
19
+ return this.injectedArgs;
17
20
  }
18
21
  return null;
19
22
  }
20
23
  validate() {
21
- return !this.injected && !!this.#injectedArgs.length;
24
+ return !this.injected && !!this.injectedArgs.length;
22
25
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtArgs, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
24
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: NgtArgs, isStandalone: true, selector: "[args]", inputs: { args: "args" }, usesInheritance: true, ngImport: i0 }); }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtArgs, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
27
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgtArgs, isStandalone: true, selector: "ng-template[args]", inputs: { args: "args" }, usesInheritance: true, ngImport: i0 }); }
25
28
  }
26
- export { NgtArgs };
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtArgs, decorators: [{
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtArgs, decorators: [{
28
30
  type: Directive,
29
- args: [{ selector: '[args]', standalone: true }]
31
+ args: [{ selector: 'ng-template[args]', standalone: true }]
30
32
  }], propDecorators: { args: [{
31
33
  type: Input
32
34
  }] } });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS9zcmMvbGliL2RpcmVjdGl2ZXMvYXJncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBRTlDLE1BQ2EsT0FBcUMsU0FBUSxrQkFBa0I7SUFDeEUsYUFBYSxHQUFVLEVBQXNCLENBQUM7SUFFOUMsSUFBYSxJQUFJLENBQUMsSUFBa0I7UUFDaEMsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUM7WUFBRSxPQUFPO1FBQzVGLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ0osSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO1NBQzdCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELFFBQVE7UUFDSixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7SUFDekQsQ0FBQzs4R0FwQlEsT0FBTztrR0FBUCxPQUFPOztTQUFQLE9BQU87MkZBQVAsT0FBTztrQkFEbkIsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTs4QkFJbEMsSUFBSTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndENvbW1vbkRpcmVjdGl2ZSB9IGZyb20gJy4vY29tbW9uJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2FyZ3NdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndEFyZ3M8VEFyZ3MgZXh0ZW5kcyBhbnlbXSA9IGFueVtdPiBleHRlbmRzIE5ndENvbW1vbkRpcmVjdGl2ZSB7XG4gICAgI2luamVjdGVkQXJnczogVEFyZ3MgPSBbXSBhcyB1bmtub3duIGFzIFRBcmdzO1xuXG4gICAgQElucHV0KCkgc2V0IGFyZ3MoYXJnczogVEFyZ3MgfCBudWxsKSB7XG4gICAgICAgIGlmIChhcmdzID09IG51bGwgfHwgIUFycmF5LmlzQXJyYXkoYXJncykgfHwgKGFyZ3MubGVuZ3RoID09PSAxICYmIGFyZ3NbMF0gPT09IG51bGwpKSByZXR1cm47XG4gICAgICAgIHRoaXMuaW5qZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy4jaW5qZWN0ZWRBcmdzID0gYXJncztcbiAgICAgICAgdGhpcy5jcmVhdGVWaWV3KCk7XG4gICAgfVxuXG4gICAgZ2V0IGFyZ3MoKSB7XG4gICAgICAgIGlmICh0aGlzLnZhbGlkYXRlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2luamVjdGVkQXJncztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmluamVjdGVkICYmICEhdGhpcy4jaW5qZWN0ZWRBcmdzLmxlbmd0aDtcbiAgICB9XG59XG4iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvYXJncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBRzlDLE1BQU0sT0FBTyxPQUFxQyxTQUFRLGtCQUFrQjtJQUQ1RTs7UUFFUyxpQkFBWSxHQUFVLEVBQXNCLENBQUM7S0FvQnJEO0lBbEJBLElBQWEsSUFBSSxDQUFDLElBQWtCO1FBQ25DLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDO1lBQUUsT0FBTztRQUM1RixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNQLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztTQUN6QjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVELFFBQVE7UUFDUCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDckQsQ0FBQzs4R0FwQlcsT0FBTztrR0FBUCxPQUFPOzsyRkFBUCxPQUFPO2tCQURuQixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7OEJBSWhELElBQUk7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3RDb21tb25EaXJlY3RpdmUgfSBmcm9tICcuL2NvbW1vbic7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ25nLXRlbXBsYXRlW2FyZ3NdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndEFyZ3M8VEFyZ3MgZXh0ZW5kcyBhbnlbXSA9IGFueVtdPiBleHRlbmRzIE5ndENvbW1vbkRpcmVjdGl2ZSB7XG5cdHByaXZhdGUgaW5qZWN0ZWRBcmdzOiBUQXJncyA9IFtdIGFzIHVua25vd24gYXMgVEFyZ3M7XG5cblx0QElucHV0KCkgc2V0IGFyZ3MoYXJnczogVEFyZ3MgfCBudWxsKSB7XG5cdFx0aWYgKGFyZ3MgPT0gbnVsbCB8fCAhQXJyYXkuaXNBcnJheShhcmdzKSB8fCAoYXJncy5sZW5ndGggPT09IDEgJiYgYXJnc1swXSA9PT0gbnVsbCkpIHJldHVybjtcblx0XHR0aGlzLmluamVjdGVkID0gZmFsc2U7XG5cdFx0dGhpcy5pbmplY3RlZEFyZ3MgPSBhcmdzO1xuXHRcdHRoaXMuY3JlYXRlVmlldygpO1xuXHR9XG5cblx0Z2V0IGFyZ3MoKSB7XG5cdFx0aWYgKHRoaXMudmFsaWRhdGUoKSkge1xuXHRcdFx0dGhpcy5pbmplY3RlZCA9IHRydWU7XG5cdFx0XHRyZXR1cm4gdGhpcy5pbmplY3RlZEFyZ3M7XG5cdFx0fVxuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0dmFsaWRhdGUoKSB7XG5cdFx0cmV0dXJuICF0aGlzLmluamVjdGVkICYmICEhdGhpcy5pbmplY3RlZEFyZ3MubGVuZ3RoO1xuXHR9XG59XG4iXX0=