angular-three 2.0.0-beta.4 → 2.0.0-beta.41

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 (153) hide show
  1. package/README.md +4 -147
  2. package/esm2022/angular-three.mjs +1 -1
  3. package/esm2022/index.mjs +10 -11
  4. package/esm2022/lib/before-render.mjs +13 -0
  5. package/esm2022/lib/canvas.mjs +137 -161
  6. package/esm2022/lib/directives/args.mjs +13 -11
  7. package/esm2022/lib/directives/common.mjs +28 -27
  8. package/esm2022/lib/directives/key.mjs +29 -0
  9. package/esm2022/lib/directives/parent.mjs +13 -11
  10. package/esm2022/lib/dom/events.mjs +6 -1
  11. package/esm2022/lib/events.mjs +77 -60
  12. package/esm2022/lib/instance.mjs +65 -0
  13. package/esm2022/lib/loader.mjs +35 -41
  14. package/esm2022/lib/loop.mjs +6 -3
  15. package/esm2022/lib/portal.mjs +103 -112
  16. package/esm2022/lib/ref.mjs +48 -0
  17. package/esm2022/lib/renderer/catalogue.mjs +7 -0
  18. package/esm2022/lib/renderer/constants.mjs +21 -0
  19. package/esm2022/lib/renderer/index.mjs +419 -0
  20. package/esm2022/lib/renderer/store.mjs +148 -112
  21. package/esm2022/lib/renderer/utils.mjs +63 -48
  22. package/esm2022/lib/roots.mjs +249 -0
  23. package/esm2022/lib/routed-scene.mjs +11 -8
  24. package/esm2022/lib/store.mjs +207 -0
  25. package/esm2022/lib/three-types.mjs +2 -2
  26. package/esm2022/lib/types.mjs +1 -1
  27. package/esm2022/lib/utils/apply-props.mjs +23 -11
  28. package/esm2022/lib/utils/attach.mjs +2 -2
  29. package/esm2022/lib/utils/is.mjs +1 -1
  30. package/esm2022/lib/utils/make.mjs +1 -1
  31. package/esm2022/lib/utils/safe-detect-changes.mjs +15 -13
  32. package/esm2022/lib/utils/signal-store.mjs +99 -0
  33. package/esm2022/lib/utils/update.mjs +1 -1
  34. package/fesm2022/angular-three.mjs +2014 -1882
  35. package/fesm2022/angular-three.mjs.map +1 -1
  36. package/index.d.ts +9 -10
  37. package/lib/{di/before-render.d.ts → before-render.d.ts} +1 -1
  38. package/lib/canvas.d.ts +82 -12
  39. package/lib/directives/args.d.ts +2 -2
  40. package/lib/directives/common.d.ts +5 -1
  41. package/lib/directives/key.d.ts +10 -0
  42. package/lib/directives/parent.d.ts +5 -5
  43. package/lib/dom/events.d.ts +3 -2
  44. package/lib/events.d.ts +78 -2
  45. package/lib/instance.d.ts +36 -0
  46. package/lib/loader.d.ts +21 -3
  47. package/lib/loop.d.ts +68 -6
  48. package/lib/portal.d.ts +21 -12
  49. package/lib/{di/ref.d.ts → ref.d.ts} +3 -2
  50. package/lib/renderer/catalogue.d.ts +13 -0
  51. package/lib/renderer/constants.d.ts +20 -0
  52. package/lib/renderer/index.d.ts +5 -0
  53. package/lib/renderer/store.d.ts +21 -15
  54. package/lib/renderer/utils.d.ts +29 -19
  55. package/lib/roots.d.ts +11 -0
  56. package/lib/routed-scene.d.ts +1 -1
  57. package/lib/store.d.ts +147 -0
  58. package/lib/three-types.d.ts +5 -5
  59. package/lib/types.d.ts +1 -309
  60. package/lib/utils/apply-props.d.ts +4 -2
  61. package/lib/utils/attach.d.ts +5 -3
  62. package/lib/utils/is.d.ts +5 -4
  63. package/lib/utils/make.d.ts +12 -1
  64. package/lib/utils/safe-detect-changes.d.ts +2 -2
  65. package/lib/utils/signal-store.d.ts +17 -0
  66. package/lib/utils/update.d.ts +1 -1
  67. package/metadata.json +1 -1
  68. package/package.json +24 -5
  69. package/plugin/generators.json +57 -17
  70. package/plugin/migrations.json +27 -0
  71. package/plugin/package.json +22 -4
  72. package/plugin/src/generators/init/compat.d.ts +3 -1
  73. package/plugin/src/generators/init/compat.js +2 -2
  74. package/plugin/src/generators/init/compat.js.map +1 -1
  75. package/plugin/src/generators/init/files/experience/experience.component.html__tmpl__ +4 -0
  76. package/plugin/src/generators/init/files/experience/experience.component.ts__tmpl__ +18 -0
  77. package/plugin/src/generators/init/generator.d.ts +6 -0
  78. package/plugin/src/generators/init/generator.js +160 -0
  79. package/plugin/src/generators/init/generator.js.map +1 -0
  80. package/plugin/src/generators/init/schema.json +15 -4
  81. package/plugin/src/generators/init-cannon/compat.d.ts +2 -0
  82. package/plugin/src/generators/init-cannon/compat.js +6 -0
  83. package/plugin/src/generators/init-cannon/compat.js.map +1 -0
  84. package/plugin/src/generators/init-cannon/generator.d.ts +2 -0
  85. package/plugin/src/generators/init-cannon/generator.js +23 -0
  86. package/plugin/src/generators/init-cannon/generator.js.map +1 -0
  87. package/plugin/src/generators/init-cannon/schema.json +6 -0
  88. package/plugin/src/generators/init-postprocessing/compat.d.ts +2 -0
  89. package/plugin/src/generators/init-postprocessing/compat.js +6 -0
  90. package/plugin/src/generators/init-postprocessing/compat.js.map +1 -0
  91. package/plugin/src/generators/init-postprocessing/generator.d.ts +2 -0
  92. package/plugin/src/generators/init-postprocessing/generator.js +21 -0
  93. package/plugin/src/generators/init-postprocessing/generator.js.map +1 -0
  94. package/plugin/src/generators/init-postprocessing/schema.json +6 -0
  95. package/plugin/src/generators/init-rapier/compat.d.ts +2 -0
  96. package/plugin/src/generators/init-rapier/compat.js +6 -0
  97. package/plugin/src/generators/init-rapier/compat.js.map +1 -0
  98. package/plugin/src/generators/init-rapier/generator.d.ts +2 -0
  99. package/plugin/src/generators/init-rapier/generator.js +22 -0
  100. package/plugin/src/generators/init-rapier/generator.js.map +1 -0
  101. package/plugin/src/generators/init-rapier/schema.json +6 -0
  102. package/plugin/src/generators/init-soba/compat.d.ts +2 -0
  103. package/plugin/src/generators/init-soba/compat.js +6 -0
  104. package/plugin/src/generators/init-soba/compat.js.map +1 -0
  105. package/plugin/src/generators/init-soba/generator.d.ts +2 -0
  106. package/plugin/src/generators/init-soba/generator.js +27 -0
  107. package/plugin/src/generators/init-soba/generator.js.map +1 -0
  108. package/plugin/src/generators/init-soba/schema.json +6 -0
  109. package/plugin/src/generators/utils.d.ts +2 -0
  110. package/plugin/src/generators/utils.js +34 -0
  111. package/plugin/src/generators/utils.js.map +1 -0
  112. package/plugin/src/generators/versions.d.ts +14 -0
  113. package/plugin/src/generators/versions.js +18 -0
  114. package/plugin/src/generators/versions.js.map +1 -0
  115. package/plugin/src/index.d.ts +5 -1
  116. package/plugin/src/index.js +11 -3
  117. package/plugin/src/index.js.map +1 -1
  118. package/plugin/src/migrations/migrate-to-ngxtension/compat.d.ts +2 -0
  119. package/plugin/src/migrations/migrate-to-ngxtension/compat.js +6 -0
  120. package/plugin/src/migrations/migrate-to-ngxtension/compat.js.map +1 -0
  121. package/plugin/src/migrations/migrate-to-ngxtension/migrate-to-ngxtension.d.ts +2 -0
  122. package/plugin/src/migrations/migrate-to-ngxtension/migrate-to-ngxtension.js +55 -0
  123. package/plugin/src/migrations/migrate-to-ngxtension/migrate-to-ngxtension.js.map +1 -0
  124. package/web-types.json +1 -1
  125. package/esm2022/lib/di/before-render.mjs +0 -13
  126. package/esm2022/lib/di/catalogue.mjs +0 -7
  127. package/esm2022/lib/di/ref.mjs +0 -49
  128. package/esm2022/lib/directives/repeat.mjs +0 -18
  129. package/esm2022/lib/renderer/di.mjs +0 -3
  130. package/esm2022/lib/renderer/enums.mjs +0 -2
  131. package/esm2022/lib/renderer/provider.mjs +0 -18
  132. package/esm2022/lib/renderer/renderer.mjs +0 -368
  133. package/esm2022/lib/stores/signal.store.mjs +0 -79
  134. package/esm2022/lib/stores/store.mjs +0 -420
  135. package/esm2022/lib/utils/assert-in-injection-context.mjs +0 -14
  136. package/esm2022/lib/utils/instance.mjs +0 -63
  137. package/esm2022/lib/utils/signal.mjs +0 -24
  138. package/esm2022/lib/utils/timing.mjs +0 -21
  139. package/lib/di/catalogue.d.ts +0 -3
  140. package/lib/directives/repeat.d.ts +0 -7
  141. package/lib/renderer/di.d.ts +0 -2
  142. package/lib/renderer/enums.d.ts +0 -26
  143. package/lib/renderer/provider.d.ts +0 -8
  144. package/lib/renderer/renderer.d.ts +0 -49
  145. package/lib/stores/signal.store.d.ts +0 -21
  146. package/lib/stores/store.d.ts +0 -13
  147. package/lib/utils/assert-in-injection-context.d.ts +0 -2
  148. package/lib/utils/instance.d.ts +0 -4
  149. package/lib/utils/signal.d.ts +0 -2
  150. package/lib/utils/timing.d.ts +0 -4
  151. package/plugin/src/generators/init/init.d.ts +0 -5
  152. package/plugin/src/generators/init/init.js +0 -56
  153. package/plugin/src/generators/init/init.js.map +0 -1
@@ -1,15 +1,14 @@
1
1
  import { NgIf } from '@angular/common';
2
2
  import { Component, ContentChild, DestroyRef, Directive, EventEmitter, Injector, Input, NgZone, Output, SkipSelf, TemplateRef, ViewChild, ViewContainerRef, effect, inject, } from '@angular/core';
3
3
  import * as THREE from 'three';
4
- import { injectBeforeRender } from './di/before-render';
5
- import { injectNgtRef } from './di/ref';
6
- import { SPECIAL_INTERNAL_ADD_COMMENT } from './renderer/utils';
7
- import { NgtSignalStore } from './stores/signal.store';
8
- import { NgtStore } from './stores/store';
9
- import { getLocalState, prepare } from './utils/instance';
4
+ import { injectBeforeRender } from './before-render';
5
+ import { getLocalState, prepare } from './instance';
6
+ import { injectNgtRef } from './ref';
7
+ import { SPECIAL_INTERNAL_ADD_COMMENT } from './renderer/constants';
8
+ import { NGT_STORE, injectNgtStore } from './store';
10
9
  import { is } from './utils/is';
11
10
  import { safeDetectChanges } from './utils/safe-detect-changes';
12
- import { queueMicrotaskInInjectionContext } from './utils/timing';
11
+ import { signalStore } from './utils/signal-store';
13
12
  import { updateCamera } from './utils/update';
14
13
  import * as i0 from "@angular/core";
15
14
  const privateKeys = [
@@ -25,40 +24,39 @@ const privateKeys = [
25
24
  'size',
26
25
  'viewport',
27
26
  ];
28
- class NgtPortalBeforeRender {
29
- #portalStore;
27
+ export class NgtPortalBeforeRender {
30
28
  constructor() {
31
- this.#portalStore = inject(NgtStore);
29
+ this.portalStore = injectNgtStore();
30
+ this.injector = inject(Injector);
32
31
  this.renderPriority = 1;
33
32
  this.beforeRender = new EventEmitter();
33
+ }
34
+ ngOnInit() {
34
35
  let oldClear;
35
- queueMicrotaskInInjectionContext(() => {
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 });
52
- });
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 });
53
52
  }
54
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtPortalBeforeRender, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
55
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: NgtPortalBeforeRender, isStandalone: true, selector: "[ngtPortalBeforeRender]", inputs: { renderPriority: "renderPriority", parentScene: "parentScene", parentCamera: "parentCamera" }, outputs: { beforeRender: "beforeRender" }, ngImport: i0 }); }
53
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtPortalBeforeRender, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
54
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.3", type: NgtPortalBeforeRender, isStandalone: true, selector: "[ngtPortalBeforeRender]", inputs: { renderPriority: "renderPriority", parentScene: "parentScene", parentCamera: "parentCamera" }, outputs: { beforeRender: "beforeRender" }, ngImport: i0 }); }
56
55
  }
57
- export { NgtPortalBeforeRender };
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtPortalBeforeRender, decorators: [{
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtPortalBeforeRender, decorators: [{
59
57
  type: Directive,
60
58
  args: [{ selector: '[ngtPortalBeforeRender]', standalone: true }]
61
- }], ctorParameters: function () { return []; }, propDecorators: { renderPriority: [{
59
+ }], propDecorators: { renderPriority: [{
62
60
  type: Input
63
61
  }], parentScene: [{
64
62
  type: Input,
@@ -69,7 +67,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
69
67
  }], beforeRender: [{
70
68
  type: Output
71
69
  }] } });
72
- class NgtPortalContent {
70
+ export class NgtPortalContent {
73
71
  constructor(vcr, parentVcr) {
74
72
  const commentNode = vcr.element.nativeElement;
75
73
  if (commentNode[SPECIAL_INTERNAL_ADD_COMMENT]) {
@@ -77,97 +75,90 @@ class NgtPortalContent {
77
75
  delete commentNode[SPECIAL_INTERNAL_ADD_COMMENT];
78
76
  }
79
77
  }
80
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtPortalContent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ViewContainerRef, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }
81
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: NgtPortalContent, isStandalone: true, selector: "ng-template[ngtPortalContent]", ngImport: i0 }); }
78
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtPortalContent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ViewContainerRef, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }
79
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.3", type: NgtPortalContent, isStandalone: true, selector: "ng-template[ngtPortalContent]", ngImport: i0 }); }
82
80
  }
83
- export { NgtPortalContent };
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtPortalContent, decorators: [{
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtPortalContent, decorators: [{
85
82
  type: Directive,
86
83
  args: [{ selector: 'ng-template[ngtPortalContent]', standalone: true }]
87
84
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ViewContainerRef, decorators: [{
88
85
  type: SkipSelf
89
86
  }] }]; } });
90
- class NgtPortal extends NgtSignalStore {
87
+ export class NgtPortal {
91
88
  set container(container) {
92
- this.set({ container });
89
+ this.inputs.set({ container });
93
90
  }
94
91
  set portalState(state) {
95
- this.set({ state });
92
+ this.inputs.set({ state });
96
93
  }
97
- #parentStore;
98
- #portalStore;
99
- #injector;
100
- #zone;
101
- #raycaster;
102
- #pointer;
103
- #portalContentView;
104
94
  constructor() {
105
- super({ container: injectNgtRef(prepare(new THREE.Scene())) });
95
+ this.inputs = signalStore({ container: injectNgtRef(prepare(new THREE.Scene())) });
106
96
  this.autoRender = true;
107
97
  this.autoRenderPriority = 1;
108
98
  this.beforeRender = new EventEmitter();
109
- this.#parentStore = inject(NgtStore, { skipSelf: true });
110
- this.parentScene = this.#parentStore.get('scene');
111
- this.parentCamera = this.#parentStore.get('camera');
112
- this.#portalStore = inject(NgtStore, { self: true });
113
- this.#injector = inject(Injector);
114
- this.#zone = inject(NgZone);
115
- this.#raycaster = new THREE.Raycaster();
116
- this.#pointer = new THREE.Vector2();
99
+ this.parentStore = injectNgtStore({ skipSelf: true });
100
+ this.parentScene = this.parentStore.get('scene');
101
+ this.parentCamera = this.parentStore.get('camera');
102
+ this.portalStore = injectNgtStore({ self: true });
103
+ this.injector = inject(Injector);
104
+ this.zone = inject(NgZone);
105
+ this.raycaster = new THREE.Raycaster();
106
+ this.pointer = new THREE.Vector2();
117
107
  this.portalContentRendered = false;
118
108
  inject(DestroyRef).onDestroy(() => {
119
- if (this.#portalContentView && !this.#portalContentView.destroyed) {
120
- this.#portalContentView.destroy();
109
+ if (this.portalContentView && !this.portalContentView.destroyed) {
110
+ this.portalContentView.destroy();
121
111
  }
122
112
  });
123
113
  }
124
114
  ngOnInit() {
125
- const previousState = this.#parentStore.get();
126
- const inputsState = this.get();
115
+ const previousState = this.parentStore.get();
116
+ const inputsState = this.inputs.get();
127
117
  if (!inputsState.state && this.autoRender) {
128
118
  inputsState.state = { events: { priority: this.autoRenderPriority + 1 } };
129
119
  }
130
120
  const { events, size, ...restInputsState } = inputsState.state || {};
131
121
  const containerState = inputsState.container;
132
- const container = is.ref(containerState) ? containerState.nativeElement : containerState;
122
+ let container = is.ref(containerState) ? containerState.nativeElement : containerState;
123
+ if (!is.instance(container)) {
124
+ container = prepare(container);
125
+ }
133
126
  const localState = getLocalState(container);
134
127
  if (!localState.store) {
135
- localState.store = this.#portalStore;
128
+ localState.store = this.portalStore;
136
129
  }
137
- this.#portalStore.set({
130
+ this.portalStore.set({
138
131
  ...previousState,
139
132
  scene: container,
140
- raycaster: this.#raycaster,
141
- pointer: this.#pointer,
142
- previousStore: this.#parentStore,
133
+ raycaster: this.raycaster,
134
+ pointer: this.pointer,
135
+ previousRoot: this.parentStore,
143
136
  events: { ...previousState.events, ...(events || {}) },
144
137
  size: { ...previousState.size, ...(size || {}) },
145
138
  ...restInputsState,
146
- get: this.#portalStore.get.bind(this.#portalStore),
147
- set: this.#portalStore.set.bind(this.#portalStore),
148
- setEvents: (events) => this.#portalStore.set((state) => ({ ...state, events: { ...state.events, ...events } })),
139
+ setEvents: (events) => this.portalStore.set((state) => ({ ...state, events: { ...state.events, ...events } })),
149
140
  });
150
- const parentState = this.#parentStore.select();
141
+ const parentState = this.parentStore.select();
151
142
  effect(() => {
152
143
  const previous = parentState();
153
- this.#zone.runOutsideAngular(() => {
154
- this.#portalStore.set((state) => this.#inject(previous, state));
144
+ this.zone.runOutsideAngular(() => {
145
+ this.portalStore.set((state) => this.inject(previous, state));
155
146
  });
156
- }, { injector: this.#injector, allowSignalWrites: true });
147
+ }, { injector: this.injector });
157
148
  requestAnimationFrame(() => {
158
- this.#portalStore.set((injectState) => this.#inject(this.#parentStore.get(), injectState));
149
+ this.portalStore.set((injectState) => this.inject(this.parentStore.get(), injectState));
159
150
  });
160
- this.#portalContentView = this.portalContentAnchor.createEmbeddedView(this.portalContentTemplate);
161
- safeDetectChanges(this.#portalContentView);
151
+ this.portalContentView = this.portalContentAnchor.createEmbeddedView(this.portalContentTemplate);
152
+ safeDetectChanges(this.portalContentView);
162
153
  this.portalContentRendered = true;
163
154
  }
164
155
  onBeforeRender(portal) {
165
156
  this.beforeRender.emit({
166
- root: { ...this.#parentStore.get(), delta: portal.delta, frame: portal.frame },
157
+ root: { ...this.parentStore.get(), delta: portal.delta, frame: portal.frame },
167
158
  portal,
168
159
  });
169
160
  }
170
- #inject(rootState, injectState) {
161
+ inject(rootState, injectState) {
171
162
  const intersect = { ...rootState };
172
163
  Object.keys(intersect).forEach((key) => {
173
164
  if (privateKeys.includes(key) ||
@@ -175,7 +166,7 @@ class NgtPortal extends NgtSignalStore {
175
166
  delete intersect[key];
176
167
  }
177
168
  });
178
- const inputs = this.get();
169
+ const inputs = this.inputs.get();
179
170
  const { size, events, ...restInputsState } = inputs.state || {};
180
171
  let viewport = undefined;
181
172
  if (injectState && size) {
@@ -187,54 +178,54 @@ class NgtPortal extends NgtSignalStore {
187
178
  return {
188
179
  ...intersect,
189
180
  scene: is.ref(inputs.container) ? inputs.container.nativeElement : inputs.container,
190
- raycaster: this.#raycaster,
191
- pointer: this.#pointer,
192
- previousStore: this.#parentStore,
181
+ raycaster: this.raycaster,
182
+ pointer: this.pointer,
183
+ previousRoot: this.parentStore,
193
184
  events: { ...rootState.events, ...(injectState?.events || {}), ...events },
194
185
  size: { ...rootState.size, ...size },
195
186
  viewport: { ...rootState.viewport, ...(viewport || {}) },
196
187
  ...restInputsState,
197
188
  };
198
189
  }
199
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtPortal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
200
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtPortal, isStandalone: true, selector: "ngt-portal", inputs: { container: "container", portalState: "portalState", autoRender: "autoRender", autoRenderPriority: "autoRenderPriority" }, outputs: { beforeRender: "beforeRender" }, providers: [NgtStore], queries: [{ propertyName: "portalContentTemplate", first: true, predicate: NgtPortalContent, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "portalContentAnchor", first: true, predicate: ["portalContentAnchor"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: `
201
- <ng-container #portalContentAnchor>
202
- <ng-container
203
- *ngIf="autoRender && portalContentRendered"
204
- ngtPortalBeforeRender
205
- [renderPriority]="autoRenderPriority"
206
- [parentScene]="parentScene"
207
- [parentCamera]="parentCamera"
208
- (beforeRender)="onBeforeRender($event)"
209
- />
210
- </ng-container>
211
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgtPortalBeforeRender, selector: "[ngtPortalBeforeRender]", inputs: ["renderPriority", "parentScene", "parentCamera"], outputs: ["beforeRender"] }] }); }
190
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtPortal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
191
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtPortal, isStandalone: true, selector: "ngt-portal", inputs: { container: "container", portalState: ["state", "portalState"], autoRender: "autoRender", autoRenderPriority: "autoRenderPriority" }, outputs: { beforeRender: "beforeRender" }, providers: [{ provide: NGT_STORE, useFactory: () => signalStore({}) }], queries: [{ propertyName: "portalContentTemplate", first: true, predicate: NgtPortalContent, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "portalContentAnchor", first: true, predicate: ["portalContentAnchor"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: `
192
+ <ng-container #portalContentAnchor>
193
+ <ng-container
194
+ *ngIf="autoRender && portalContentRendered"
195
+ ngtPortalBeforeRender
196
+ [renderPriority]="autoRenderPriority"
197
+ [parentScene]="parentScene"
198
+ [parentCamera]="parentCamera"
199
+ (beforeRender)="onBeforeRender($event)"
200
+ />
201
+ </ng-container>
202
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgtPortalBeforeRender, selector: "[ngtPortalBeforeRender]", inputs: ["renderPriority", "parentScene", "parentCamera"], outputs: ["beforeRender"] }] }); }
212
203
  }
213
- export { NgtPortal };
214
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtPortal, decorators: [{
204
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtPortal, decorators: [{
215
205
  type: Component,
216
206
  args: [{
217
207
  selector: 'ngt-portal',
218
208
  standalone: true,
219
209
  template: `
220
- <ng-container #portalContentAnchor>
221
- <ng-container
222
- *ngIf="autoRender && portalContentRendered"
223
- ngtPortalBeforeRender
224
- [renderPriority]="autoRenderPriority"
225
- [parentScene]="parentScene"
226
- [parentCamera]="parentCamera"
227
- (beforeRender)="onBeforeRender($event)"
228
- />
229
- </ng-container>
230
- `,
210
+ <ng-container #portalContentAnchor>
211
+ <ng-container
212
+ *ngIf="autoRender && portalContentRendered"
213
+ ngtPortalBeforeRender
214
+ [renderPriority]="autoRenderPriority"
215
+ [parentScene]="parentScene"
216
+ [parentCamera]="parentCamera"
217
+ (beforeRender)="onBeforeRender($event)"
218
+ />
219
+ </ng-container>
220
+ `,
231
221
  imports: [NgIf, NgtPortalBeforeRender],
232
- providers: [NgtStore],
222
+ providers: [{ provide: NGT_STORE, useFactory: () => signalStore({}) }],
233
223
  }]
234
224
  }], ctorParameters: function () { return []; }, propDecorators: { container: [{
235
225
  type: Input
236
226
  }], portalState: [{
237
- type: Input
227
+ type: Input,
228
+ args: ['state']
238
229
  }], autoRender: [{
239
230
  type: Input
240
231
  }], autoRenderPriority: [{
@@ -248,4 +239,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
248
239
  type: ViewChild,
249
240
  args: ['portalContentAnchor', { read: ViewContainerRef, static: true }]
250
241
  }] } });
251
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvcG9ydGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsU0FBUyxFQUNULFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixNQUFNLEdBSVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRTlDLE1BQU0sV0FBVyxHQUFHO0lBQ2hCLEtBQUs7SUFDTCxLQUFLO0lBQ0wsUUFBUTtJQUNS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UyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksRUFBRTtZQUNwQyxRQUFRLEVBQUUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsRUFBRTtZQUN4RCxHQUFHLGVBQWU7U0FDVCxDQUFDO0lBQ2xCLENBQUM7OEdBdklRLFNBQVM7a0dBQVQsU0FBUyx3T0FGUCxDQUFDLFFBQVEsQ0FBQyw2RUFnQlAsZ0JBQWdCLDJCQUFVLFdBQVcsa0pBR1QsZ0JBQWdCLGtFQWhDaEQ7Ozs7Ozs7Ozs7O0tBV1QsNERBQ1MsSUFBSSw2RkE3REwscUJBQXFCOztTQWdFckIsU0FBUzsyRkFBVCxTQUFTO2tCQWxCckIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7S0FXVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUM7b0JBQ3RDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztpQkFDeEI7MEVBRWdCLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSU8sV0FBVztzQkFBdkIsS0FBSztnQkFJRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUdFLHFCQUFxQjtzQkFEN0IsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJMUQsbUJBQW1CO3NCQUQzQixTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBEZXN0cm95UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE91dHB1dCxcbiAgICBTa2lwU2VsZixcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBlZmZlY3QsXG4gICAgaW5qZWN0LFxuICAgIHR5cGUgRWxlbWVudFJlZixcbiAgICB0eXBlIEVtYmVkZGVkVmlld1JlZixcbiAgICB0eXBlIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBpbmplY3RCZWZvcmVSZW5kZXIgfSBmcm9tICcuL2RpL2JlZm9yZS1yZW5kZXInO1xuaW1wb3J0IHsgaW5qZWN0Tmd0UmVmIH0gZnJvbSAnLi9kaS9yZWYnO1xuaW1wb3J0IHsgU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVCB9IGZyb20gJy4vcmVuZGVyZXIvdXRpbHMnO1xuaW1wb3J0IHsgTmd0U2lnbmFsU3RvcmUgfSBmcm9tICcuL3N0b3Jlcy9zaWduYWwuc3RvcmUnO1xuaW1wb3J0IHsgTmd0U3RvcmUgfSBmcm9tICcuL3N0b3Jlcy9zdG9yZSc7XG5pbXBvcnQgdHlwZSB7IE5ndEV2ZW50TWFuYWdlciwgTmd0UmVuZGVyU3RhdGUsIE5ndFNpemUsIE5ndFN0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRMb2NhbFN0YXRlLCBwcmVwYXJlIH0gZnJvbSAnLi91dGlscy9pbnN0YW5jZSc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4vdXRpbHMvaXMnO1xuaW1wb3J0IHsgc2FmZURldGVjdENoYW5nZXMgfSBmcm9tICcuL3V0aWxzL3NhZmUtZGV0ZWN0LWNoYW5nZXMnO1xuaW1wb3J0IHsgcXVldWVNaWNyb3Rhc2tJbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICcuL3V0aWxzL3RpbWluZyc7XG5pbXBvcnQgeyB1cGRhdGVDYW1lcmEgfSBmcm9tICcuL3V0aWxzL3VwZGF0ZSc7XG5cbmNvbnN0IHByaXZhdGVLZXlzID0gW1xuICAgICdnZXQnLFxuICAgICdzZXQnLFxuICAgICdzZWxlY3QnLFxuICAgICdzZXRTaXplJyxcbiAgICAnc2V0RHByJyxcbiAgICAnc2V0RnJhbWVsb29wJyxcbiAgICAnZXZlbnRzJyxcbiAgICAnaW52YWxpZGF0ZScsXG4gICAgJ2FkdmFuY2UnLFxuICAgICdzaXplJyxcbiAgICAndmlld3BvcnQnLFxuXSBhcyBjb25zdDtcbnR5cGUgUHJpdmF0ZUtleXMgPSAodHlwZW9mIHByaXZhdGVLZXlzKVtudW1iZXJdO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndFBvcnRhbElucHV0cyB7XG4gICAgY29udGFpbmVyOiBFbGVtZW50UmVmPFRIUkVFLk9iamVjdDNEPiB8IFRIUkVFLk9iamVjdDNEO1xuICAgIGNhbWVyYTogRWxlbWVudFJlZjxUSFJFRS5DYW1lcmE+IHwgVEhSRUUuQ2FtZXJhO1xuICAgIHN0YXRlOiBQYXJ0aWFsPFxuICAgICAgICBPbWl0PE5ndFN0YXRlLCBQcml2YXRlS2V5cz4gJiB7XG4gICAgICAgICAgICBldmVudHM6IFBhcnRpYWw8UGljazxOZ3RFdmVudE1hbmFnZXI8YW55PiwgJ2VuYWJsZWQnIHwgJ3ByaW9yaXR5JyB8ICdjb21wdXRlJyB8ICdjb25uZWN0ZWQnPj47XG4gICAgICAgICAgICBzaXplOiBOZ3RTaXplO1xuICAgICAgICB9XG4gICAgPjtcbn1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW25ndFBvcnRhbEJlZm9yZVJlbmRlcl0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmd0UG9ydGFsQmVmb3JlUmVuZGVyIHtcbiAgICByZWFkb25seSAjcG9ydGFsU3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuXG4gICAgQElucHV0KCkgcmVuZGVyUHJpb3JpdHkgPSAxO1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHBhcmVudFNjZW5lITogVEhSRUUuU2NlbmU7XG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgcGFyZW50Q2FtZXJhITogVEhSRUUuQ2FtZXJhO1xuXG4gICAgQE91dHB1dCgpIGJlZm9yZVJlbmRlciA9IG5ldyBFdmVudEVtaXR0ZXI8Tmd0UmVuZGVyU3RhdGU+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgbGV0IG9sZENsZWFyOiBib29sZWFuO1xuICAgICAgICBxdWV1ZU1pY3JvdGFza0luSW5qZWN0aW9uQ29udGV4dCgoKSA9PiB7XG4gICAgICAgICAgICBpbmplY3RCZWZvcmVSZW5kZXIoXG4gICAgICAgICAgICAgICAgKHsgZGVsdGEsIGZyYW1lIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWZvcmVSZW5kZXIuZW1pdCh7IC4uLnRoaXMuI3BvcnRhbFN0b3JlLmdldCgpLCBkZWx0YSwgZnJhbWUgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZ2wsIHNjZW5lLCBjYW1lcmEgfSA9IHRoaXMuI3BvcnRhbFN0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgICAgICBvbGRDbGVhciA9IGdsLmF1dG9DbGVhcjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVuZGVyUHJpb3JpdHkgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsZWFyIHNjZW5lIGFuZCByZW5kZXIgd2l0aCBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICBnbC5hdXRvQ2xlYXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2wucmVuZGVyKHRoaXMucGFyZW50U2NlbmUsIHRoaXMucGFyZW50Q2FtZXJhKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBkaXNhYmxlIGNsZWFuaW5nXG4gICAgICAgICAgICAgICAgICAgIGdsLmF1dG9DbGVhciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBnbC5jbGVhckRlcHRoKCk7XG4gICAgICAgICAgICAgICAgICAgIGdsLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVzdG9yZVxuICAgICAgICAgICAgICAgICAgICBnbC5hdXRvQ2xlYXIgPSBvbGRDbGVhcjtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHsgcHJpb3JpdHk6IHRoaXMucmVuZGVyUHJpb3JpdHkgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtuZ3RQb3J0YWxDb250ZW50XScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBOZ3RQb3J0YWxDb250ZW50IHtcbiAgICBjb25zdHJ1Y3Rvcih2Y3I6IFZpZXdDb250YWluZXJSZWYsIEBTa2lwU2VsZigpIHBhcmVudFZjcjogVmlld0NvbnRhaW5lclJlZikge1xuICAgICAgICBjb25zdCBjb21tZW50Tm9kZSA9IHZjci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXSkge1xuICAgICAgICAgICAgY29tbWVudE5vZGVbU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVF0ocGFyZW50VmNyLmVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICBkZWxldGUgY29tbWVudE5vZGVbU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVF07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0LXBvcnRhbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmctY29udGFpbmVyICNwb3J0YWxDb250ZW50QW5jaG9yPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiYXV0b1JlbmRlciAmJiBwb3J0YWxDb250ZW50UmVuZGVyZWRcIlxuICAgICAgICAgICAgICAgIG5ndFBvcnRhbEJlZm9yZVJlbmRlclxuICAgICAgICAgICAgICAgIFtyZW5kZXJQcmlvcml0eV09XCJhdXRvUmVuZGVyUHJpb3JpdHlcIlxuICAgICAgICAgICAgICAgIFtwYXJlbnRTY2VuZV09XCJwYXJlbnRTY2VuZVwiXG4gICAgICAgICAgICAgICAgW3BhcmVudENhbWVyYV09XCJwYXJlbnRDYW1lcmFcIlxuICAgICAgICAgICAgICAgIChiZWZvcmVSZW5kZXIpPVwib25CZWZvcmVSZW5kZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ0lmLCBOZ3RQb3J0YWxCZWZvcmVSZW5kZXJdLFxuICAgIHByb3ZpZGVyczogW05ndFN0b3JlXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0UG9ydGFsIGV4dGVuZHMgTmd0U2lnbmFsU3RvcmU8Tmd0UG9ydGFsSW5wdXRzPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgc2V0IGNvbnRhaW5lcihjb250YWluZXI6IE5ndFBvcnRhbElucHV0c1snY29udGFpbmVyJ10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBjb250YWluZXIgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHBvcnRhbFN0YXRlKHN0YXRlOiBOZ3RQb3J0YWxJbnB1dHNbJ3N0YXRlJ10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBzdGF0ZSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBhdXRvUmVuZGVyID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBhdXRvUmVuZGVyUHJpb3JpdHkgPSAxO1xuXG4gICAgQE91dHB1dCgpIGJlZm9yZVJlbmRlciA9IG5ldyBFdmVudEVtaXR0ZXI8eyByb290OiBOZ3RSZW5kZXJTdGF0ZTsgcG9ydGFsOiBOZ3RSZW5kZXJTdGF0ZSB9PigpO1xuXG4gICAgQENvbnRlbnRDaGlsZChOZ3RQb3J0YWxDb250ZW50LCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICByZWFkb25seSBwb3J0YWxDb250ZW50VGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAgIEBWaWV3Q2hpbGQoJ3BvcnRhbENvbnRlbnRBbmNob3InLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHJlYWRvbmx5IHBvcnRhbENvbnRlbnRBbmNob3IhOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gICAgcmVhZG9ubHkgI3BhcmVudFN0b3JlID0gaW5qZWN0KE5ndFN0b3JlLCB7IHNraXBTZWxmOiB0cnVlIH0pO1xuICAgIHJlYWRvbmx5IHBhcmVudFNjZW5lID0gdGhpcy4jcGFyZW50U3RvcmUuZ2V0KCdzY2VuZScpO1xuICAgIHJlYWRvbmx5IHBhcmVudENhbWVyYSA9IHRoaXMuI3BhcmVudFN0b3JlLmdldCgnY2FtZXJhJyk7XG5cbiAgICByZWFkb25seSAjcG9ydGFsU3RvcmUgPSBpbmplY3QoTmd0U3RvcmUsIHsgc2VsZjogdHJ1ZSB9KTtcbiAgICByZWFkb25seSAjaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICAgIHJlYWRvbmx5ICN6b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgICByZWFkb25seSAjcmF5Y2FzdGVyID0gbmV3IFRIUkVFLlJheWNhc3RlcigpO1xuICAgIHJlYWRvbmx5ICNwb2ludGVyID0gbmV3IFRIUkVFLlZlY3RvcjIoKTtcblxuICAgIHBvcnRhbENvbnRlbnRSZW5kZXJlZCA9IGZhbHNlO1xuICAgICNwb3J0YWxDb250ZW50Vmlldz86IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcih7IGNvbnRhaW5lcjogaW5qZWN0Tmd0UmVmPFRIUkVFLlNjZW5lPihwcmVwYXJlKG5ldyBUSFJFRS5TY2VuZSgpKSkgfSk7XG4gICAgICAgIGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuI3BvcnRhbENvbnRlbnRWaWV3ICYmICF0aGlzLiNwb3J0YWxDb250ZW50Vmlldy5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiNwb3J0YWxDb250ZW50Vmlldy5kZXN0cm95KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBjb25zdCBwcmV2aW91c1N0YXRlID0gdGhpcy4jcGFyZW50U3RvcmUuZ2V0KCk7XG4gICAgICAgIGNvbnN0IGlucHV0c1N0YXRlID0gdGhpcy5nZXQoKTtcblxuICAgICAgICBpZiAoIWlucHV0c1N0YXRlLnN0YXRlICYmIHRoaXMuYXV0b1JlbmRlcikge1xuICAgICAgICAgICAgaW5wdXRzU3RhdGUuc3RhdGUgPSB7IGV2ZW50czogeyBwcmlvcml0eTogdGhpcy5hdXRvUmVuZGVyUHJpb3JpdHkgKyAxIH0gfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgZXZlbnRzLCBzaXplLCAuLi5yZXN0SW5wdXRzU3RhdGUgfSA9IGlucHV0c1N0YXRlLnN0YXRlIHx8IHt9O1xuXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclN0YXRlID0gaW5wdXRzU3RhdGUuY29udGFpbmVyO1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSBpcy5yZWYoY29udGFpbmVyU3RhdGUpID8gY29udGFpbmVyU3RhdGUubmF0aXZlRWxlbWVudCA6IGNvbnRhaW5lclN0YXRlO1xuXG4gICAgICAgIGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGNvbnRhaW5lcik7XG4gICAgICAgIGlmICghbG9jYWxTdGF0ZS5zdG9yZSkge1xuICAgICAgICAgICAgbG9jYWxTdGF0ZS5zdG9yZSA9IHRoaXMuI3BvcnRhbFN0b3JlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy4jcG9ydGFsU3RvcmUuc2V0KHtcbiAgICAgICAgICAgIC4uLnByZXZpb3VzU3RhdGUsXG4gICAgICAgICAgICBzY2VuZTogY29udGFpbmVyIGFzIFRIUkVFLlNjZW5lLFxuICAgICAgICAgICAgcmF5Y2FzdGVyOiB0aGlzLiNyYXljYXN0ZXIsXG4gICAgICAgICAgICBwb2ludGVyOiB0aGlzLiNwb2ludGVyLFxuICAgICAgICAgICAgcHJldmlvdXNTdG9yZTogdGhpcy4jcGFyZW50U3RvcmUsXG4gICAgICAgICAgICBldmVudHM6IHsgLi4ucHJldmlvdXNTdGF0ZS5ldmVudHMsIC4uLihldmVudHMgfHwge30pIH0sXG4gICAgICAgICAgICBzaXplOiB7IC4uLnByZXZpb3VzU3RhdGUuc2l6ZSwgLi4uKHNpemUgfHwge30pIH0sXG4gICAgICAgICAgICAuLi5yZXN0SW5wdXRzU3RhdGUsXG4gICAgICAgICAgICBnZXQ6IHRoaXMuI3BvcnRhbFN0b3JlLmdldC5iaW5kKHRoaXMuI3BvcnRhbFN0b3JlKSxcbiAgICAgICAgICAgIHNldDogdGhpcy4jcG9ydGFsU3RvcmUuc2V0LmJpbmQodGhpcy4jcG9ydGFsU3RvcmUpLFxuICAgICAgICAgICAgc2V0RXZlbnRzOiAoZXZlbnRzKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuI3BvcnRhbFN0b3JlLnNldCgoc3RhdGUpID0+ICh7IC4uLnN0YXRlLCBldmVudHM6IHsgLi4uc3RhdGUuZXZlbnRzLCAuLi5ldmVudHMgfSB9KSksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHBhcmVudFN0YXRlID0gdGhpcy4jcGFyZW50U3RvcmUuc2VsZWN0KCk7XG4gICAgICAgIGVmZmVjdChcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91cyA9IHBhcmVudFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy4jem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI3BvcnRhbFN0b3JlLnNldCgoc3RhdGUpID0+IHRoaXMuI2luamVjdChwcmV2aW91cywgc3RhdGUpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGluamVjdG9yOiB0aGlzLiNpbmplY3RvciwgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICAgICApO1xuXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLiNwb3J0YWxTdG9yZS5zZXQoKGluamVjdFN0YXRlKSA9PiB0aGlzLiNpbmplY3QodGhpcy4jcGFyZW50U3RvcmUuZ2V0KCksIGluamVjdFN0YXRlKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLiNwb3J0YWxDb250ZW50VmlldyA9IHRoaXMucG9ydGFsQ29udGVudEFuY2hvci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5wb3J0YWxDb250ZW50VGVtcGxhdGUpO1xuICAgICAgICBzYWZlRGV0ZWN0Q2hhbmdlcyh0aGlzLiNwb3J0YWxDb250ZW50Vmlldyk7XG4gICAgICAgIHRoaXMucG9ydGFsQ29udGVudFJlbmRlcmVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbkJlZm9yZVJlbmRlcihwb3J0YWw6IE5ndFJlbmRlclN0YXRlKSB7XG4gICAgICAgIHRoaXMuYmVmb3JlUmVuZGVyLmVtaXQoe1xuICAgICAgICAgICAgcm9vdDogeyAuLi50aGlzLiNwYXJlbnRTdG9yZS5nZXQoKSwgZGVsdGE6IHBvcnRhbC5kZWx0YSwgZnJhbWU6IHBvcnRhbC5mcmFtZSB9LFxuICAgICAgICAgICAgcG9ydGFsLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAjaW5qZWN0KHJvb3RTdGF0ZTogTmd0U3RhdGUsIGluamVjdFN0YXRlOiBOZ3RTdGF0ZSkge1xuICAgICAgICBjb25zdCBpbnRlcnNlY3Q6IFBhcnRpYWw8Tmd0U3RhdGU+ID0geyAuLi5yb290U3RhdGUgfTtcblxuICAgICAgICBPYmplY3Qua2V5cyhpbnRlcnNlY3QpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHByaXZhdGVLZXlzLmluY2x1ZGVzKGtleSBhcyBQcml2YXRlS2V5cykgfHxcbiAgICAgICAgICAgICAgICByb290U3RhdGVba2V5IGFzIGtleW9mIE5ndFN0YXRlXSAhPT0gaW5qZWN0U3RhdGVba2V5IGFzIGtleW9mIE5ndFN0YXRlXVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGludGVyc2VjdFtrZXkgYXMga2V5b2YgTmd0U3RhdGVdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBpbnB1dHMgPSB0aGlzLmdldCgpO1xuICAgICAgICBjb25zdCB7IHNpemUsIGV2ZW50cywgLi4ucmVzdElucHV0c1N0YXRlIH0gPSBpbnB1dHMuc3RhdGUgfHwge307XG5cbiAgICAgICAgbGV0IHZpZXdwb3J0ID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoaW5qZWN0U3RhdGUgJiYgc2l6ZSkge1xuICAgICAgICAgICAgY29uc3QgY2FtZXJhID0gaW5qZWN0U3RhdGUuY2FtZXJhO1xuICAgICAgICAgICAgdmlld3BvcnQgPSByb290U3RhdGUudmlld3BvcnQuZ2V0Q3VycmVudFZpZXdwb3J0KGNhbWVyYSwgbmV3IFRIUkVFLlZlY3RvcjMoKSwgc2l6ZSk7XG4gICAgICAgICAgICBpZiAoY2FtZXJhICE9PSByb290U3RhdGUuY2FtZXJhKSB1cGRhdGVDYW1lcmEoY2FtZXJhLCBzaXplKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5pbnRlcnNlY3QsXG4gICAgICAgICAgICBzY2VuZTogaXMucmVmKGlucHV0cy5jb250YWluZXIpID8gaW5wdXRzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50IDogaW5wdXRzLmNvbnRhaW5lcixcbiAgICAgICAgICAgIHJheWNhc3RlcjogdGhpcy4jcmF5Y2FzdGVyLFxuICAgICAgICAgICAgcG9pbnRlcjogdGhpcy4jcG9pbnRlcixcbiAgICAgICAgICAgIHByZXZpb3VzU3RvcmU6IHRoaXMuI3BhcmVudFN0b3JlLFxuICAgICAgICAgICAgZXZlbnRzOiB7IC4uLnJvb3RTdGF0ZS5ldmVudHMsIC4uLihpbmplY3RTdGF0ZT8uZXZlbnRzIHx8IHt9KSwgLi4uZXZlbnRzIH0sXG4gICAgICAgICAgICBzaXplOiB7IC4uLnJvb3RTdGF0ZS5zaXplLCAuLi5zaXplIH0sXG4gICAgICAgICAgICB2aWV3cG9ydDogeyAuLi5yb290U3RhdGUudmlld3BvcnQsIC4uLih2aWV3cG9ydCB8fCB7fSkgfSxcbiAgICAgICAgICAgIC4uLnJlc3RJbnB1dHNTdGF0ZSxcbiAgICAgICAgfSBhcyBOZ3RTdGF0ZTtcbiAgICB9XG59XG4iXX0=
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcG9ydGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQ04sU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsU0FBUyxFQUNULFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixNQUFNLEdBSU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNyQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBb0QsTUFBTSxTQUFTLENBQUM7QUFDdEcsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUU5QyxNQUFNLFdBQVcsR0FBRztJQUNuQixLQUFLO0lBQ0wsS0FBSztJQUNMLFFBQVE7SUFDUixTQUFTO0lBQ1QsUUFBUTtJQUNSLGNBQWM7SUFDZCxRQUFRO0lBQ1IsWUFBWTtJ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QyxXQUFXLENBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQyw2RUFrQmxFLGdCQUFnQiwyQkFBVSxXQUFXLGtKQUdULGdCQUFnQiwyQ0FsQ2hEOzs7Ozs7Ozs7OztFQVdULDREQUNTLElBQUksNkZBNURGLHFCQUFxQjs7MkZBK0RyQixTQUFTO2tCQWxCckIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7RUFXVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUM7b0JBQ3RDLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUM7aUJBQ2hGOzBFQUlhLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSWMsV0FBVztzQkFBOUIsS0FBSzt1QkFBQyxPQUFPO2dCQUlMLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU07Z0JBR1AscUJBQXFCO3NCQURwQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUluRSxtQkFBbUI7c0JBRGxCLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHRDb250ZW50Q2hpbGQsXG5cdERlc3Ryb3lSZWYsXG5cdERpcmVjdGl2ZSxcblx0RXZlbnRFbWl0dGVyLFxuXHRJbmplY3Rvcixcblx0SW5wdXQsXG5cdE5nWm9uZSxcblx0T3V0cHV0LFxuXHRTa2lwU2VsZixcblx0VGVtcGxhdGVSZWYsXG5cdFZpZXdDaGlsZCxcblx0Vmlld0NvbnRhaW5lclJlZixcblx0ZWZmZWN0LFxuXHRpbmplY3QsXG5cdHR5cGUgRWxlbWVudFJlZixcblx0dHlwZSBFbWJlZGRlZFZpZXdSZWYsXG5cdHR5cGUgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IGluamVjdEJlZm9yZVJlbmRlciB9IGZyb20gJy4vYmVmb3JlLXJlbmRlcic7XG5pbXBvcnQgdHlwZSB7IE5ndEV2ZW50TWFuYWdlciB9IGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB7IGdldExvY2FsU3RhdGUsIHByZXBhcmUgfSBmcm9tICcuL2luc3RhbmNlJztcbmltcG9ydCB7IGluamVjdE5ndFJlZiB9IGZyb20gJy4vcmVmJztcbmltcG9ydCB7IFNQRUNJQUxfSU5URVJOQUxfQUREX0NPTU1FTlQgfSBmcm9tICcuL3JlbmRlcmVyL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBOR1RfU1RPUkUsIGluamVjdE5ndFN0b3JlLCB0eXBlIE5ndFJlbmRlclN0YXRlLCB0eXBlIE5ndFNpemUsIHR5cGUgTmd0U3RhdGUgfSBmcm9tICcuL3N0b3JlJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi91dGlscy9pcyc7XG5pbXBvcnQgeyBzYWZlRGV0ZWN0Q2hhbmdlcyB9IGZyb20gJy4vdXRpbHMvc2FmZS1kZXRlY3QtY2hhbmdlcyc7XG5pbXBvcnQgeyBzaWduYWxTdG9yZSB9IGZyb20gJy4vdXRpbHMvc2lnbmFsLXN0b3JlJztcbmltcG9ydCB7IHVwZGF0ZUNhbWVyYSB9IGZyb20gJy4vdXRpbHMvdXBkYXRlJztcblxuY29uc3QgcHJpdmF0ZUtleXMgPSBbXG5cdCdnZXQnLFxuXHQnc2V0Jyxcblx0J3NlbGVjdCcsXG5cdCdzZXRTaXplJyxcblx0J3NldERwcicsXG5cdCdzZXRGcmFtZWxvb3AnLFxuXHQnZXZlbnRzJyxcblx0J2ludmFsaWRhdGUnLFxuXHQnYWR2YW5jZScsXG5cdCdzaXplJyxcblx0J3ZpZXdwb3J0Jyxcbl0gYXMgY29uc3Q7XG50eXBlIFByaXZhdGVLZXlzID0gKHR5cGVvZiBwcml2YXRlS2V5cylbbnVtYmVyXTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RQb3J0YWxJbnB1dHMge1xuXHRjb250YWluZXI6IEVsZW1lbnRSZWY8VEhSRUUuT2JqZWN0M0Q+IHwgVEhSRUUuT2JqZWN0M0Q7XG5cdGNhbWVyYTogRWxlbWVudFJlZjxUSFJFRS5DYW1lcmE+IHwgVEhSRUUuQ2FtZXJhO1xuXHRzdGF0ZTogUGFydGlhbDxcblx0XHRPbWl0PE5ndFN0YXRlLCBQcml2YXRlS2V5cz4gJiB7XG5cdFx0XHRldmVudHM6IFBhcnRpYWw8UGljazxOZ3RFdmVudE1hbmFnZXI8YW55PiwgJ2VuYWJsZWQnIHwgJ3ByaW9yaXR5JyB8ICdjb21wdXRlJyB8ICdjb25uZWN0ZWQnPj47XG5cdFx0XHRzaXplOiBOZ3RTaXplO1xuXHRcdH1cblx0Pjtcbn1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW25ndFBvcnRhbEJlZm9yZVJlbmRlcl0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmd0UG9ydGFsQmVmb3JlUmVuZGVyIGltcGxlbWVudHMgT25Jbml0IHtcblx0cHJpdmF0ZSBwb3J0YWxTdG9yZSA9IGluamVjdE5ndFN0b3JlKCk7XG5cdHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG5cdEBJbnB1dCgpIHJlbmRlclByaW9yaXR5ID0gMTtcblx0QElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgcGFyZW50U2NlbmUhOiBUSFJFRS5TY2VuZTtcblx0QElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgcGFyZW50Q2FtZXJhITogVEhSRUUuQ2FtZXJhO1xuXG5cdEBPdXRwdXQoKSBiZWZvcmVSZW5kZXIgPSBuZXcgRXZlbnRFbWl0dGVyPE5ndFJlbmRlclN0YXRlPigpO1xuXG5cdG5nT25Jbml0KCkge1xuXHRcdGxldCBvbGRDbGVhcjogYm9vbGVhbjtcblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoXG5cdFx0XHQoeyBkZWx0YSwgZnJhbWUgfSkgPT4ge1xuXHRcdFx0XHR0aGlzLmJlZm9yZVJlbmRlci5lbWl0KHsgLi4udGhpcy5wb3J0YWxTdG9yZS5nZXQoKSwgZGVsdGEsIGZyYW1lIH0pO1xuXHRcdFx0XHRjb25zdCB7IGdsLCBzY2VuZSwgY2FtZXJhIH0gPSB0aGlzLnBvcnRhbFN0b3JlLmdldCgpO1xuXHRcdFx0XHRvbGRDbGVhciA9IGdsLmF1dG9DbGVhcjtcblx0XHRcdFx0aWYgKHRoaXMucmVuZGVyUHJpb3JpdHkgPT09IDEpIHtcblx0XHRcdFx0XHQvLyBjbGVhciBzY2VuZSBhbmQgcmVuZGVyIHdpdGggZGVmYXVsdFxuXHRcdFx0XHRcdGdsLmF1dG9DbGVhciA9IHRydWU7XG5cdFx0XHRcdFx0Z2wucmVuZGVyKHRoaXMucGFyZW50U2NlbmUsIHRoaXMucGFyZW50Q2FtZXJhKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBkaXNhYmxlIGNsZWFuaW5nXG5cdFx0XHRcdGdsLmF1dG9DbGVhciA9IGZhbHNlO1xuXHRcdFx0XHRnbC5jbGVhckRlcHRoKCk7XG5cdFx0XHRcdGdsLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcblx0XHRcdFx0Ly8gcmVzdG9yZVxuXHRcdFx0XHRnbC5hdXRvQ2xlYXIgPSBvbGRDbGVhcjtcblx0XHRcdH0sXG5cdFx0XHR7IHByaW9yaXR5OiB0aGlzLnJlbmRlclByaW9yaXR5LCBpbmplY3RvcjogdGhpcy5pbmplY3RvciB9LFxuXHRcdCk7XG5cdH1cbn1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnbmctdGVtcGxhdGVbbmd0UG9ydGFsQ29udGVudF0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmd0UG9ydGFsQ29udGVudCB7XG5cdGNvbnN0cnVjdG9yKHZjcjogVmlld0NvbnRhaW5lclJlZiwgQFNraXBTZWxmKCkgcGFyZW50VmNyOiBWaWV3Q29udGFpbmVyUmVmKSB7XG5cdFx0Y29uc3QgY29tbWVudE5vZGUgPSB2Y3IuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuXHRcdGlmIChjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXSkge1xuXHRcdFx0Y29tbWVudE5vZGVbU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVF0ocGFyZW50VmNyLmVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG5cdFx0XHRkZWxldGUgY29tbWVudE5vZGVbU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVF07XG5cdFx0fVxuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndC1wb3J0YWwnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZy1jb250YWluZXIgI3BvcnRhbENvbnRlbnRBbmNob3I+XG5cdFx0XHQ8bmctY29udGFpbmVyXG5cdFx0XHRcdCpuZ0lmPVwiYXV0b1JlbmRlciAmJiBwb3J0YWxDb250ZW50UmVuZGVyZWRcIlxuXHRcdFx0XHRuZ3RQb3J0YWxCZWZvcmVSZW5kZXJcblx0XHRcdFx0W3JlbmRlclByaW9yaXR5XT1cImF1dG9SZW5kZXJQcmlvcml0eVwiXG5cdFx0XHRcdFtwYXJlbnRTY2VuZV09XCJwYXJlbnRTY2VuZVwiXG5cdFx0XHRcdFtwYXJlbnRDYW1lcmFdPVwicGFyZW50Q2FtZXJhXCJcblx0XHRcdFx0KGJlZm9yZVJlbmRlcik9XCJvbkJlZm9yZVJlbmRlcigkZXZlbnQpXCJcblx0XHRcdC8+XG5cdFx0PC9uZy1jb250YWluZXI+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ0lmLCBOZ3RQb3J0YWxCZWZvcmVSZW5kZXJdLFxuXHRwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5HVF9TVE9SRSwgdXNlRmFjdG9yeTogKCkgPT4gc2lnbmFsU3RvcmU8Tmd0U3RhdGU+KHt9KSB9XSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0UG9ydGFsIGltcGxlbWVudHMgT25Jbml0IHtcblx0cHJpdmF0ZSBpbnB1dHMgPSBzaWduYWxTdG9yZTxOZ3RQb3J0YWxJbnB1dHM+KHsgY29udGFpbmVyOiBpbmplY3ROZ3RSZWY8VEhSRUUuU2NlbmU+KHByZXBhcmUobmV3IFRIUkVFLlNjZW5lKCkpKSB9KTtcblxuXHRASW5wdXQoKSBzZXQgY29udGFpbmVyKGNvbnRhaW5lcjogTmd0UG9ydGFsSW5wdXRzWydjb250YWluZXInXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGNvbnRhaW5lciB9KTtcblx0fVxuXG5cdEBJbnB1dCgnc3RhdGUnKSBzZXQgcG9ydGFsU3RhdGUoc3RhdGU6IE5ndFBvcnRhbElucHV0c1snc3RhdGUnXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHN0YXRlIH0pO1xuXHR9XG5cblx0QElucHV0KCkgYXV0b1JlbmRlciA9IHRydWU7XG5cdEBJbnB1dCgpIGF1dG9SZW5kZXJQcmlvcml0eSA9IDE7XG5cblx0QE91dHB1dCgpIGJlZm9yZVJlbmRlciA9IG5ldyBFdmVudEVtaXR0ZXI8eyByb290OiBOZ3RSZW5kZXJTdGF0ZTsgcG9ydGFsOiBOZ3RSZW5kZXJTdGF0ZSB9PigpO1xuXG5cdEBDb250ZW50Q2hpbGQoTmd0UG9ydGFsQ29udGVudCwgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG5cdHBvcnRhbENvbnRlbnRUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG5cdEBWaWV3Q2hpbGQoJ3BvcnRhbENvbnRlbnRBbmNob3InLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuXHRwb3J0YWxDb250ZW50QW5jaG9yITogVmlld0NvbnRhaW5lclJlZjtcblxuXHRwcml2YXRlIHBhcmVudFN0b3JlID0gaW5qZWN0Tmd0U3RvcmUoeyBza2lwU2VsZjogdHJ1ZSB9KTtcblx0cGFyZW50U2NlbmUgPSB0aGlzLnBhcmVudFN0b3JlLmdldCgnc2NlbmUnKTtcblx0cGFyZW50Q2FtZXJhID0gdGhpcy5wYXJlbnRTdG9yZS5nZXQoJ2NhbWVyYScpO1xuXG5cdHByaXZhdGUgcG9ydGFsU3RvcmUgPSBpbmplY3ROZ3RTdG9yZSh7IHNlbGY6IHRydWUgfSk7XG5cdHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXHRwcml2YXRlIHpvbmUgPSBpbmplY3QoTmdab25lKTtcblxuXHRwcml2YXRlIHJheWNhc3RlciA9IG5ldyBUSFJFRS5SYXljYXN0ZXIoKTtcblx0cHJpdmF0ZSBwb2ludGVyID0gbmV3IFRIUkVFLlZlY3RvcjIoKTtcblxuXHRwb3J0YWxDb250ZW50UmVuZGVyZWQgPSBmYWxzZTtcblx0cHJpdmF0ZSBwb3J0YWxDb250ZW50Vmlldz86IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPjtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHtcblx0XHRcdGlmICh0aGlzLnBvcnRhbENvbnRlbnRWaWV3ICYmICF0aGlzLnBvcnRhbENvbnRlbnRWaWV3LmRlc3Ryb3llZCkge1xuXHRcdFx0XHR0aGlzLnBvcnRhbENvbnRlbnRWaWV3LmRlc3Ryb3koKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdGNvbnN0IHByZXZpb3VzU3RhdGUgPSB0aGlzLnBhcmVudFN0b3JlLmdldCgpO1xuXHRcdGNvbnN0IGlucHV0c1N0YXRlID0gdGhpcy5pbnB1dHMuZ2V0KCk7XG5cblx0XHRpZiAoIWlucHV0c1N0YXRlLnN0YXRlICYmIHRoaXMuYXV0b1JlbmRlcikge1xuXHRcdFx0aW5wdXRzU3RhdGUuc3RhdGUgPSB7IGV2ZW50czogeyBwcmlvcml0eTogdGhpcy5hdXRvUmVuZGVyUHJpb3JpdHkgKyAxIH0gfTtcblx0XHR9XG5cblx0XHRjb25zdCB7IGV2ZW50cywgc2l6ZSwgLi4ucmVzdElucHV0c1N0YXRlIH0gPSBpbnB1dHNTdGF0ZS5zdGF0ZSB8fCB7fTtcblxuXHRcdGNvbnN0IGNvbnRhaW5lclN0YXRlID0gaW5wdXRzU3RhdGUuY29udGFpbmVyO1xuXHRcdGxldCBjb250YWluZXIgPSBpcy5yZWYoY29udGFpbmVyU3RhdGUpID8gY29udGFpbmVyU3RhdGUubmF0aXZlRWxlbWVudCA6IGNvbnRhaW5lclN0YXRlO1xuXG5cdFx0aWYgKCFpcy5pbnN0YW5jZShjb250YWluZXIpKSB7XG5cdFx0XHRjb250YWluZXIgPSBwcmVwYXJlKGNvbnRhaW5lcik7XG5cdFx0fVxuXG5cdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoY29udGFpbmVyKTtcblx0XHRpZiAoIWxvY2FsU3RhdGUuc3RvcmUpIHtcblx0XHRcdGxvY2FsU3RhdGUuc3RvcmUgPSB0aGlzLnBvcnRhbFN0b3JlO1xuXHRcdH1cblxuXHRcdHRoaXMucG9ydGFsU3RvcmUuc2V0KHtcblx0XHRcdC4uLnByZXZpb3VzU3RhdGUsXG5cdFx0XHRzY2VuZTogY29udGFpbmVyIGFzIFRIUkVFLlNjZW5lLFxuXHRcdFx0cmF5Y2FzdGVyOiB0aGlzLnJheWNhc3Rlcixcblx0XHRcdHBvaW50ZXI6IHRoaXMucG9pbnRlcixcblx0XHRcdHByZXZpb3VzUm9vdDogdGhpcy5wYXJlbnRTdG9yZSxcblx0XHRcdGV2ZW50czogeyAuLi5wcmV2aW91c1N0YXRlLmV2ZW50cywgLi4uKGV2ZW50cyB8fCB7fSkgfSxcblx0XHRcdHNpemU6IHsgLi4ucHJldmlvdXNTdGF0ZS5zaXplLCAuLi4oc2l6ZSB8fCB7fSkgfSxcblx0XHRcdC4uLnJlc3RJbnB1dHNTdGF0ZSxcblx0XHRcdHNldEV2ZW50czogKGV2ZW50cykgPT5cblx0XHRcdFx0dGhpcy5wb3J0YWxTdG9yZS5zZXQoKHN0YXRlKSA9PiAoeyAuLi5zdGF0ZSwgZXZlbnRzOiB7IC4uLnN0YXRlLmV2ZW50cywgLi4uZXZlbnRzIH0gfSkpLFxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgcGFyZW50U3RhdGUgPSB0aGlzLnBhcmVudFN0b3JlLnNlbGVjdCgpO1xuXHRcdGVmZmVjdChcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0Y29uc3QgcHJldmlvdXMgPSBwYXJlbnRTdGF0ZSgpO1xuXHRcdFx0XHR0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucG9ydGFsU3RvcmUuc2V0KChzdGF0ZSkgPT4gdGhpcy5pbmplY3QocHJldmlvdXMsIHN0YXRlKSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdHsgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IgfSxcblx0XHQpO1xuXG5cdFx0cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcblx0XHRcdHRoaXMucG9ydGFsU3RvcmUuc2V0KChpbmplY3RTdGF0ZSkgPT4gdGhpcy5pbmplY3QodGhpcy5wYXJlbnRTdG9yZS5nZXQoKSwgaW5qZWN0U3RhdGUpKTtcblx0XHR9KTtcblxuXHRcdHRoaXMucG9ydGFsQ29udGVudFZpZXcgPSB0aGlzLnBvcnRhbENvbnRlbnRBbmNob3IuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMucG9ydGFsQ29udGVudFRlbXBsYXRlKTtcblx0XHRzYWZlRGV0ZWN0Q2hhbmdlcyh0aGlzLnBvcnRhbENvbnRlbnRWaWV3KTtcblx0XHR0aGlzLnBvcnRhbENvbnRlbnRSZW5kZXJlZCA9IHRydWU7XG5cdH1cblxuXHRvbkJlZm9yZVJlbmRlcihwb3J0YWw6IE5ndFJlbmRlclN0YXRlKSB7XG5cdFx0dGhpcy5iZWZvcmVSZW5kZXIuZW1pdCh7XG5cdFx0XHRyb290OiB7IC4uLnRoaXMucGFyZW50U3RvcmUuZ2V0KCksIGRlbHRhOiBwb3J0YWwuZGVsdGEsIGZyYW1lOiBwb3J0YWwuZnJhbWUgfSxcblx0XHRcdHBvcnRhbCxcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgaW5qZWN0KHJvb3RTdGF0ZTogTmd0U3RhdGUsIGluamVjdFN0YXRlOiBOZ3RTdGF0ZSkge1xuXHRcdGNvbnN0IGludGVyc2VjdDogUGFydGlhbDxOZ3RTdGF0ZT4gPSB7IC4uLnJvb3RTdGF0ZSB9O1xuXG5cdFx0T2JqZWN0LmtleXMoaW50ZXJzZWN0KS5mb3JFYWNoKChrZXkpID0+IHtcblx0XHRcdGlmIChcblx0XHRcdFx0cHJpdmF0ZUtleXMuaW5jbHVkZXMoa2V5IGFzIFByaXZhdGVLZXlzKSB8fFxuXHRcdFx0XHRyb290U3RhdGVba2V5IGFzIGtleW9mIE5ndFN0YXRlXSAhPT0gaW5qZWN0U3RhdGVba2V5IGFzIGtleW9mIE5ndFN0YXRlXVxuXHRcdFx0KSB7XG5cdFx0XHRcdGRlbGV0ZSBpbnRlcnNlY3Rba2V5IGFzIGtleW9mIE5ndFN0YXRlXTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGNvbnN0IGlucHV0cyA9IHRoaXMuaW5wdXRzLmdldCgpO1xuXHRcdGNvbnN0IHsgc2l6ZSwgZXZlbnRzLCAuLi5yZXN0SW5wdXRzU3RhdGUgfSA9IGlucHV0cy5zdGF0ZSB8fCB7fTtcblxuXHRcdGxldCB2aWV3cG9ydCA9IHVuZGVmaW5lZDtcblx0XHRpZiAoaW5qZWN0U3RhdGUgJiYgc2l6ZSkge1xuXHRcdFx0Y29uc3QgY2FtZXJhID0gaW5qZWN0U3RhdGUuY2FtZXJhO1xuXHRcdFx0dmlld3BvcnQgPSByb290U3RhdGUudmlld3BvcnQuZ2V0Q3VycmVudFZpZXdwb3J0KGNhbWVyYSwgbmV3IFRIUkVFLlZlY3RvcjMoKSwgc2l6ZSk7XG5cdFx0XHRpZiAoY2FtZXJhICE9PSByb290U3RhdGUuY2FtZXJhKSB1cGRhdGVDYW1lcmEoY2FtZXJhLCBzaXplKTtcblx0XHR9XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0Li4uaW50ZXJzZWN0LFxuXHRcdFx0c2NlbmU6IGlzLnJlZihpbnB1dHMuY29udGFpbmVyKSA/IGlucHV0cy5jb250YWluZXIubmF0aXZlRWxlbWVudCA6IGlucHV0cy5jb250YWluZXIsXG5cdFx0XHRyYXljYXN0ZXI6IHRoaXMucmF5Y2FzdGVyLFxuXHRcdFx0cG9pbnRlcjogdGhpcy5wb2ludGVyLFxuXHRcdFx0cHJldmlvdXNSb290OiB0aGlzLnBhcmVudFN0b3JlLFxuXHRcdFx0ZXZlbnRzOiB7IC4uLnJvb3RTdGF0ZS5ldmVudHMsIC4uLihpbmplY3RTdGF0ZT8uZXZlbnRzIHx8IHt9KSwgLi4uZXZlbnRzIH0sXG5cdFx0XHRzaXplOiB7IC4uLnJvb3RTdGF0ZS5zaXplLCAuLi5zaXplIH0sXG5cdFx0XHR2aWV3cG9ydDogeyAuLi5yb290U3RhdGUudmlld3BvcnQsIC4uLih2aWV3cG9ydCB8fCB7fSkgfSxcblx0XHRcdC4uLnJlc3RJbnB1dHNTdGF0ZSxcblx0XHR9IGFzIE5ndFN0YXRlO1xuXHR9XG59XG4iXX0=
@@ -0,0 +1,48 @@
1
+ import { DestroyRef, ElementRef, computed, inject, runInInjectionContext, signal, untracked, } from '@angular/core';
2
+ import { assertInjector } from 'ngxtension/assert-injector';
3
+ import { getLocalState } from './instance';
4
+ import { is } from './utils/is';
5
+ export function injectNgtRef(initial = null, injector) {
6
+ injector = assertInjector(injectNgtRef, injector);
7
+ const ref = is.ref(initial) ? initial : new ElementRef(initial);
8
+ const refSignal = signal(ref.nativeElement);
9
+ const readonlyRef = refSignal.asReadonly();
10
+ const computedCached = new Map();
11
+ return runInInjectionContext(injector, () => {
12
+ inject(DestroyRef).onDestroy(() => void computedCached.clear());
13
+ const children = (type = 'objects') => {
14
+ if (!computedCached.has(type)) {
15
+ computedCached.set(type, computed(() => {
16
+ const instance = readonlyRef();
17
+ if (!instance)
18
+ return [];
19
+ const localState = getLocalState(instance);
20
+ if (!localState.objects || !localState.nonObjects)
21
+ return [];
22
+ if (type === 'objects')
23
+ return localState.objects();
24
+ if (type === 'nonObjects')
25
+ return localState.nonObjects();
26
+ return [...localState.objects(), ...localState.nonObjects()];
27
+ }));
28
+ }
29
+ return computedCached.get(type);
30
+ };
31
+ Object.defineProperties(ref, {
32
+ nativeElement: {
33
+ set: (newElement) => {
34
+ untracked(() => {
35
+ if (newElement !== refSignal()) {
36
+ refSignal.set(newElement);
37
+ }
38
+ });
39
+ },
40
+ get: readonlyRef,
41
+ },
42
+ untracked: { get: () => untracked(readonlyRef) },
43
+ children: { get: () => children },
44
+ });
45
+ return ref;
46
+ });
47
+ }
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixVQUFVLEVBQ1YsVUFBVSxFQUNWLFFBQVEsRUFDUixNQUFNLEVBQ04scUJBQXFCLEVBQ3JCLE1BQU0sRUFDTixTQUFTLEdBR1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQXdCLE1BQU0sWUFBWSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFXaEMsTUFBTSxVQUFVLFlBQVksQ0FDM0IsVUFBMkMsSUFBSyxFQUNoRCxRQUFtQjtJQUVuQixRQUFRLEdBQUcsY0FBYyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNsRCxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLE9BQW1CLENBQUMsQ0FBQztJQUM1RSxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUMzQyxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRWpDLE9BQU8scUJBQXFCLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtRQUMzQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFaEUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUEwQyxTQUFTLEVBQUUsRUFBRTtZQUN4RSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDOUIsY0FBYyxDQUFDLEdBQUcsQ0FDakIsSUFBSSxFQUNKLFFBQVEsQ0FBQyxHQUFHLEVBQUU7b0JBQ2IsTUFBTSxRQUFRLEdBQUcsV0FBVyxFQUFFLENBQUM7b0JBQy9CLElBQUksQ0FBQyxRQUFRO3dCQUFFLE9BQU8sRUFBRSxDQUFDO29CQUN6QixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQzNDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVU7d0JBQUUsT0FBTyxFQUFFLENBQUM7b0JBQzdELElBQUksSUFBSSxLQUFLLFNBQVM7d0JBQUUsT0FBTyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ3BELElBQUksSUFBSSxLQUFLLFlBQVk7d0JBQUUsT0FBTyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQzFELE9BQU8sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RCxDQUFDLENBQUMsQ0FDRixDQUFDO2FBQ0Y7WUFDRCxPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFFLENBQUM7UUFDbEMsQ0FBQyxDQUFDO1FBRUYsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRTtZQUM1QixhQUFhLEVBQUU7Z0JBQ2QsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUU7b0JBQ25CLFNBQVMsQ0FBQyxHQUFHLEVBQUU7d0JBQ2QsSUFBSSxVQUFVLEtBQUssU0FBUyxFQUFFLEVBQUU7NEJBQy9CLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7eUJBQzFCO29CQUNGLENBQUMsQ0FBQyxDQUFDO2dCQUNKLENBQUM7Z0JBQ0QsR0FBRyxFQUFFLFdBQVc7YUFDaEI7WUFDRCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ2hELFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUU7U0FDakMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxHQUErQixDQUFDO0lBQ3hDLENBQUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdERlc3Ryb3lSZWYsXG5cdEVsZW1lbnRSZWYsXG5cdGNvbXB1dGVkLFxuXHRpbmplY3QsXG5cdHJ1bkluSW5qZWN0aW9uQ29udGV4dCxcblx0c2lnbmFsLFxuXHR1bnRyYWNrZWQsXG5cdHR5cGUgSW5qZWN0b3IsXG5cdHR5cGUgU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFzc2VydEluamVjdG9yIH0gZnJvbSAnbmd4dGVuc2lvbi9hc3NlcnQtaW5qZWN0b3InO1xuaW1wb3J0IHsgZ2V0TG9jYWxTdGF0ZSwgdHlwZSBOZ3RJbnN0YW5jZU5vZGUgfSBmcm9tICcuL2luc3RhbmNlJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi91dGlscy9pcyc7XG5cbmV4cG9ydCB0eXBlIE5ndEluamVjdGVkUmVmPFRFbGVtZW50PiA9IEVsZW1lbnRSZWY8VEVsZW1lbnQ+ICYge1xuXHQvKiBjb25zdW1lcnMgc2hvdWxkIHVzZSB0aGlzIGZvciBsaXN0ZW50aW5nIHRvIGNoaWxkcmVuIGNoYW5nZXMgb24gdGhpcyByZWYgKi9cblx0Y2hpbGRyZW46ICh0eXBlPzogJ29iamVjdHMnIHwgJ25vbk9iamVjdHMnIHwgJ2JvdGgnKSA9PiBTaWduYWw8Tmd0SW5zdGFuY2VOb2RlW10+O1xuXHQvKiBjb25zdW1lcnMgc2hvdWxkIHVzZSB0aGlzIHRvIHJlYWQgdGhlIHJlZiBjdXJyZW50IHZhbHVlIHdpdGhvdXQgcmVnaXN0ZXJpbmcgdGhlIHNpZ25hbCAqL1xuXHR1bnRyYWNrZWQ6IFRFbGVtZW50O1xufTtcblxuZXhwb3J0IHR5cGUgTmd0UmVmPFRFbGVtZW50PiA9IFRFbGVtZW50IHwgTmd0SW5qZWN0ZWRSZWY8VEVsZW1lbnQ+O1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Tmd0UmVmPFRFbGVtZW50Pihcblx0aW5pdGlhbDogRWxlbWVudFJlZjxURWxlbWVudD4gfCBURWxlbWVudCA9IG51bGwhLFxuXHRpbmplY3Rvcj86IEluamVjdG9yLFxuKTogTmd0SW5qZWN0ZWRSZWY8VEVsZW1lbnQ+IHtcblx0aW5qZWN0b3IgPSBhc3NlcnRJbmplY3RvcihpbmplY3ROZ3RSZWYsIGluamVjdG9yKTtcblx0Y29uc3QgcmVmID0gaXMucmVmKGluaXRpYWwpID8gaW5pdGlhbCA6IG5ldyBFbGVtZW50UmVmKGluaXRpYWwgYXMgVEVsZW1lbnQpO1xuXHRjb25zdCByZWZTaWduYWwgPSBzaWduYWwocmVmLm5hdGl2ZUVsZW1lbnQpO1xuXHRjb25zdCByZWFkb25seVJlZiA9IHJlZlNpZ25hbC5hc1JlYWRvbmx5KCk7XG5cdGNvbnN0IGNvbXB1dGVkQ2FjaGVkID0gbmV3IE1hcCgpO1xuXG5cdHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+IHtcblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHZvaWQgY29tcHV0ZWRDYWNoZWQuY2xlYXIoKSk7XG5cblx0XHRjb25zdCBjaGlsZHJlbiA9ICh0eXBlOiAnb2JqZWN0cycgfCAnbm9uT2JqZWN0cycgfCAnYm90aCcgPSAnb2JqZWN0cycpID0+IHtcblx0XHRcdGlmICghY29tcHV0ZWRDYWNoZWQuaGFzKHR5cGUpKSB7XG5cdFx0XHRcdGNvbXB1dGVkQ2FjaGVkLnNldChcblx0XHRcdFx0XHR0eXBlLFxuXHRcdFx0XHRcdGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IGluc3RhbmNlID0gcmVhZG9ubHlSZWYoKTtcblx0XHRcdFx0XHRcdGlmICghaW5zdGFuY2UpIHJldHVybiBbXTtcblx0XHRcdFx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGluc3RhbmNlKTtcblx0XHRcdFx0XHRcdGlmICghbG9jYWxTdGF0ZS5vYmplY3RzIHx8ICFsb2NhbFN0YXRlLm5vbk9iamVjdHMpIHJldHVybiBbXTtcblx0XHRcdFx0XHRcdGlmICh0eXBlID09PSAnb2JqZWN0cycpIHJldHVybiBsb2NhbFN0YXRlLm9iamVjdHMoKTtcblx0XHRcdFx0XHRcdGlmICh0eXBlID09PSAnbm9uT2JqZWN0cycpIHJldHVybiBsb2NhbFN0YXRlLm5vbk9iamVjdHMoKTtcblx0XHRcdFx0XHRcdHJldHVybiBbLi4ubG9jYWxTdGF0ZS5vYmplY3RzKCksIC4uLmxvY2FsU3RhdGUubm9uT2JqZWN0cygpXTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBjb21wdXRlZENhY2hlZC5nZXQodHlwZSkhO1xuXHRcdH07XG5cblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydGllcyhyZWYsIHtcblx0XHRcdG5hdGl2ZUVsZW1lbnQ6IHtcblx0XHRcdFx0c2V0OiAobmV3RWxlbWVudCkgPT4ge1xuXHRcdFx0XHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAobmV3RWxlbWVudCAhPT0gcmVmU2lnbmFsKCkpIHtcblx0XHRcdFx0XHRcdFx0cmVmU2lnbmFsLnNldChuZXdFbGVtZW50KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSxcblx0XHRcdFx0Z2V0OiByZWFkb25seVJlZixcblx0XHRcdH0sXG5cdFx0XHR1bnRyYWNrZWQ6IHsgZ2V0OiAoKSA9PiB1bnRyYWNrZWQocmVhZG9ubHlSZWYpIH0sXG5cdFx0XHRjaGlsZHJlbjogeyBnZXQ6ICgpID0+IGNoaWxkcmVuIH0sXG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gcmVmIGFzIE5ndEluamVjdGVkUmVmPFRFbGVtZW50Pjtcblx0fSk7XG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import { createInjectionToken } from 'ngxtension/create-injection-token';
2
+ const catalogue = {};
3
+ export function extend(objects) {
4
+ Object.assign(catalogue, objects);
5
+ }
6
+ export const [injectNgtCatalogue] = createInjectionToken(() => catalogue);
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZ3VlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcmVuZGVyZXIvY2F0YWxvZ3VlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBSXpFLE1BQU0sU0FBUyxHQUFzQyxFQUFFLENBQUM7QUFFeEQsTUFBTSxVQUFVLE1BQU0sQ0FBQyxPQUFlO0lBQ3JDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsb0JBQW9CLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ25neHRlbnNpb24vY3JlYXRlLWluamVjdGlvbi10b2tlbic7XG5cbmV4cG9ydCB0eXBlIE5ndEFueUNvbnN0cnVjdG9yID0gbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55O1xuXG5jb25zdCBjYXRhbG9ndWU6IFJlY29yZDxzdHJpbmcsIE5ndEFueUNvbnN0cnVjdG9yPiA9IHt9O1xuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kKG9iamVjdHM6IG9iamVjdCk6IHZvaWQge1xuXHRPYmplY3QuYXNzaWduKGNhdGFsb2d1ZSwgb2JqZWN0cyk7XG59XG5cbmV4cG9ydCBjb25zdCBbaW5qZWN0Tmd0Q2F0YWxvZ3VlXSA9IGNyZWF0ZUluamVjdGlvblRva2VuKCgpID0+IGNhdGFsb2d1ZSk7XG4iXX0=
@@ -0,0 +1,21 @@
1
+ export const ROUTED_SCENE = '__ngt_renderer_is_routed_scene__';
2
+ export const HTML = '__ngt_renderer_is_html';
3
+ export const SPECIAL_INTERNAL_ADD_COMMENT = '__ngt_renderer_add_comment__';
4
+ export const SPECIAL_DOM_TAG = {
5
+ NGT_PORTAL: 'ngt-portal',
6
+ NGT_PRIMITIVE: 'ngt-primitive',
7
+ NGT_VALUE: 'ngt-value',
8
+ };
9
+ export const SPECIAL_PROPERTIES = {
10
+ COMPOUND: 'ngtCompound',
11
+ RENDER_PRIORITY: 'priority',
12
+ ATTACH: 'attach',
13
+ VALUE: 'rawValue',
14
+ REF: 'ref',
15
+ };
16
+ export const SPECIAL_EVENTS = {
17
+ BEFORE_RENDER: 'beforeRender',
18
+ AFTER_UPDATE: 'afterUpdate',
19
+ AFTER_ATTACH: 'afterAttach',
20
+ };
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcmVuZGVyZXIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxrQ0FBa0MsQ0FBQztBQUMvRCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsd0JBQXdCLENBQUM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsOEJBQThCLENBQUM7QUFFM0UsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzlCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLGFBQWEsRUFBRSxlQUFlO0lBQzlCLFNBQVMsRUFBRSxXQUFXO0NBQ2IsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2pDLFFBQVEsRUFBRSxhQUFhO0lBQ3ZCLGVBQWUsRUFBRSxVQUFVO0lBQzNCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEtBQUssRUFBRSxVQUFVO0lBQ2pCLEdBQUcsRUFBRSxLQUFLO0NBQ0QsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM3QixhQUFhLEVBQUUsY0FBYztJQUM3QixZQUFZLEVBQUUsYUFBYTtJQUMzQixZQUFZLEVBQUUsYUFBYTtDQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFJPVVRFRF9TQ0VORSA9ICdfX25ndF9yZW5kZXJlcl9pc19yb3V0ZWRfc2NlbmVfXyc7XG5leHBvcnQgY29uc3QgSFRNTCA9ICdfX25ndF9yZW5kZXJlcl9pc19odG1sJztcbmV4cG9ydCBjb25zdCBTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UID0gJ19fbmd0X3JlbmRlcmVyX2FkZF9jb21tZW50X18nO1xuXG5leHBvcnQgY29uc3QgU1BFQ0lBTF9ET01fVEFHID0ge1xuXHROR1RfUE9SVEFMOiAnbmd0LXBvcnRhbCcsXG5cdE5HVF9QUklNSVRJVkU6ICduZ3QtcHJpbWl0aXZlJyxcblx0TkdUX1ZBTFVFOiAnbmd0LXZhbHVlJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBTUEVDSUFMX1BST1BFUlRJRVMgPSB7XG5cdENPTVBPVU5EOiAnbmd0Q29tcG91bmQnLFxuXHRSRU5ERVJfUFJJT1JJVFk6ICdwcmlvcml0eScsXG5cdEFUVEFDSDogJ2F0dGFjaCcsXG5cdFZBTFVFOiAncmF3VmFsdWUnLFxuXHRSRUY6ICdyZWYnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFNQRUNJQUxfRVZFTlRTID0ge1xuXHRCRUZPUkVfUkVOREVSOiAnYmVmb3JlUmVuZGVyJyxcblx0QUZURVJfVVBEQVRFOiAnYWZ0ZXJVcGRhdGUnLFxuXHRBRlRFUl9BVFRBQ0g6ICdhZnRlckF0dGFjaCcsXG59IGFzIGNvbnN0O1xuIl19