angular-three 2.0.0-beta.6 → 2.0.0-beta.8

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 (125) hide show
  1. package/README.md +4 -147
  2. package/esm2022/angular-three.mjs +1 -1
  3. package/esm2022/index.mjs +10 -9
  4. package/esm2022/lib/before-render.mjs +13 -0
  5. package/esm2022/lib/canvas.mjs +129 -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/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 +17 -20
  15. package/esm2022/lib/loop.mjs +6 -3
  16. package/esm2022/lib/portal.mjs +103 -112
  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 +409 -0
  21. package/esm2022/lib/renderer/store.mjs +61 -38
  22. package/esm2022/lib/renderer/utils.mjs +20 -43
  23. package/esm2022/lib/roots.mjs +249 -0
  24. package/esm2022/lib/routed-scene.mjs +6 -7
  25. package/esm2022/lib/store.mjs +207 -0
  26. package/esm2022/lib/three-types.mjs +1 -1
  27. package/esm2022/lib/types.mjs +1 -1
  28. package/esm2022/lib/utils/apply-props.mjs +12 -7
  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 +1569 -1425
  38. package/fesm2022/angular-three.mjs.map +1 -1
  39. package/index.d.ts +10 -8
  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 +21 -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 +21 -15
  57. package/lib/renderer/utils.d.ts +29 -19
  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 +5 -5
  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 +4 -2
  65. package/lib/utils/create-injection-token.d.ts +27 -0
  66. package/lib/utils/is.d.ts +3 -2
  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 -0
  72. package/package.json +3 -3
  73. package/plugin/README.md +11 -0
  74. package/plugin/generators.json +39 -0
  75. package/plugin/package.json +6 -0
  76. package/plugin/src/generators/init/compat.d.ts +2 -0
  77. package/plugin/src/generators/init/compat.js +6 -0
  78. package/plugin/src/generators/init/compat.js.map +1 -0
  79. package/plugin/src/generators/init/generator.d.ts +2 -0
  80. package/plugin/src/generators/init/generator.js +48 -0
  81. package/plugin/src/generators/init/generator.js.map +1 -0
  82. package/plugin/src/generators/init/schema.json +6 -0
  83. package/plugin/src/generators/init-postprocessing/compat.d.ts +2 -0
  84. package/plugin/src/generators/init-postprocessing/compat.js +6 -0
  85. package/plugin/src/generators/init-postprocessing/compat.js.map +1 -0
  86. package/plugin/src/generators/init-postprocessing/generator.d.ts +2 -0
  87. package/plugin/src/generators/init-postprocessing/generator.js +20 -0
  88. package/plugin/src/generators/init-postprocessing/generator.js.map +1 -0
  89. package/plugin/src/generators/init-postprocessing/schema.json +6 -0
  90. package/plugin/src/generators/init-soba/compat.d.ts +2 -0
  91. package/plugin/src/generators/init-soba/compat.js +6 -0
  92. package/plugin/src/generators/init-soba/compat.js.map +1 -0
  93. package/plugin/src/generators/init-soba/generator.d.ts +2 -0
  94. package/plugin/src/generators/init-soba/generator.js +24 -0
  95. package/plugin/src/generators/init-soba/generator.js.map +1 -0
  96. package/plugin/src/generators/init-soba/schema.json +6 -0
  97. package/plugin/src/generators/versions.d.ts +9 -0
  98. package/plugin/src/generators/versions.js +13 -0
  99. package/plugin/src/generators/versions.js.map +1 -0
  100. package/plugin/src/index.d.ts +3 -0
  101. package/plugin/src/index.js +10 -0
  102. package/plugin/src/index.js.map +1 -0
  103. package/web-types.json +1 -0
  104. package/esm2022/lib/di/before-render.mjs +0 -13
  105. package/esm2022/lib/di/catalogue.mjs +0 -7
  106. package/esm2022/lib/di/ref.mjs +0 -54
  107. package/esm2022/lib/renderer/di.mjs +0 -3
  108. package/esm2022/lib/renderer/enums.mjs +0 -2
  109. package/esm2022/lib/renderer/provider.mjs +0 -18
  110. package/esm2022/lib/renderer/renderer.mjs +0 -367
  111. package/esm2022/lib/stores/signal.store.mjs +0 -78
  112. package/esm2022/lib/stores/store.mjs +0 -420
  113. package/esm2022/lib/utils/assert-in-injection-context.mjs +0 -14
  114. package/esm2022/lib/utils/instance.mjs +0 -66
  115. package/esm2022/lib/utils/timing.mjs +0 -9
  116. package/lib/di/catalogue.d.ts +0 -3
  117. package/lib/renderer/di.d.ts +0 -2
  118. package/lib/renderer/enums.d.ts +0 -26
  119. package/lib/renderer/provider.d.ts +0 -8
  120. package/lib/renderer/renderer.d.ts +0 -49
  121. package/lib/stores/signal.store.d.ts +0 -21
  122. package/lib/stores/store.d.ts +0 -13
  123. package/lib/utils/instance.d.ts +0 -4
  124. package/lib/utils/timing.d.ts +0 -2
  125. /package/lib/utils/{assert-in-injection-context.d.ts → assert-injection-context.d.ts} +0 -0
@@ -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 { requestAnimationFrameInInjectionContext } 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
- requestAnimationFrameInInjectionContext(() => {
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.3", ngImport: i0, type: NgtPortalBeforeRender, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
55
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.3", 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.1.7", ngImport: i0, type: NgtPortalBeforeRender, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
54
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", 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.3", ngImport: i0, type: NgtPortalBeforeRender, decorators: [{
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", 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.3", 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.3", 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.3", type: NgtPortalContent, isStandalone: true, selector: "ng-template[ngtPortalContent]", ngImport: i0 }); }
78
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", 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.1.7", 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.3", ngImport: i0, type: NgtPortalContent, decorators: [{
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", 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.3", ngImport: i0, type: NgtPortal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
200
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", 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.1.7", ngImport: i0, type: NgtPortal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
191
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", 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.3", ngImport: i0, type: NgtPortal, decorators: [{
204
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", 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.3", ngImpor
248
239
  type: ViewChild,
249
240
  args: ['portalContentAnchor', { read: ViewContainerRef, static: true }]
250
241
  }] } });
251
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvcG9ydGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsU0FBUyxFQUNULFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixNQUFNLEdBSVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRTlDLE1BQU0sV0FBVyxHQUFHO0lBQ2hCLEtBQUs7SUFDTCxLQUFLO0lBQ0wsUUFBUTtJQUNS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UyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksRUFBRTtZQUNwQyxRQUFRLEVBQUUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsRUFBRTtZQUN4RCxHQUFHLGVBQWU7U0FDVCxDQUFDO0lBQ2xCLENBQUM7OEdBdklRLFNBQVM7a0dBQVQsU0FBUyx3T0FGUCxDQUFDLFFBQVEsQ0FBQyw2RUFnQlAsZ0JBQWdCLDJCQUFVLFdBQVcsa0pBR1QsZ0JBQWdCLGtFQWhDaEQ7Ozs7Ozs7Ozs7O0tBV1QsNERBQ1MsSUFBSSw2RkE3REwscUJBQXFCOztTQWdFckIsU0FBUzsyRkFBVCxTQUFTO2tCQWxCckIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7S0FXVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUM7b0JBQ3RDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztpQkFDeEI7MEVBRWdCLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSU8sV0FBVztzQkFBdkIsS0FBSztnQkFJRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUdFLHFCQUFxQjtzQkFEN0IsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJMUQsbUJBQW1CO3NCQUQzQixTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBEZXN0cm95UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE91dHB1dCxcbiAgICBTa2lwU2VsZixcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBlZmZlY3QsXG4gICAgaW5qZWN0LFxuICAgIHR5cGUgRWxlbWVudFJlZixcbiAgICB0eXBlIEVtYmVkZGVkVmlld1JlZixcbiAgICB0eXBlIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBpbmplY3RCZWZvcmVSZW5kZXIgfSBmcm9tICcuL2RpL2JlZm9yZS1yZW5kZXInO1xuaW1wb3J0IHsgaW5qZWN0Tmd0UmVmIH0gZnJvbSAnLi9kaS9yZWYnO1xuaW1wb3J0IHsgU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVCB9IGZyb20gJy4vcmVuZGVyZXIvdXRpbHMnO1xuaW1wb3J0IHsgTmd0U2lnbmFsU3RvcmUgfSBmcm9tICcuL3N0b3Jlcy9zaWduYWwuc3RvcmUnO1xuaW1wb3J0IHsgTmd0U3RvcmUgfSBmcm9tICcuL3N0b3Jlcy9zdG9yZSc7XG5pbXBvcnQgdHlwZSB7IE5ndEV2ZW50TWFuYWdlciwgTmd0UmVuZGVyU3RhdGUsIE5ndFNpemUsIE5ndFN0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRMb2NhbFN0YXRlLCBwcmVwYXJlIH0gZnJvbSAnLi91dGlscy9pbnN0YW5jZSc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4vdXRpbHMvaXMnO1xuaW1wb3J0IHsgc2FmZURldGVjdENoYW5nZXMgfSBmcm9tICcuL3V0aWxzL3NhZmUtZGV0ZWN0LWNoYW5nZXMnO1xuaW1wb3J0IHsgcmVxdWVzdEFuaW1hdGlvbkZyYW1lSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnLi91dGlscy90aW1pbmcnO1xuaW1wb3J0IHsgdXBkYXRlQ2FtZXJhIH0gZnJvbSAnLi91dGlscy91cGRhdGUnO1xuXG5jb25zdCBwcml2YXRlS2V5cyA9IFtcbiAgICAnZ2V0JyxcbiAgICAnc2V0JyxcbiAgICAnc2VsZWN0JyxcbiAgICAnc2V0U2l6ZScsXG4gICAgJ3NldERwcicsXG4gICAgJ3NldEZyYW1lbG9vcCcsXG4gICAgJ2V2ZW50cycsXG4gICAgJ2ludmFsaWRhdGUnLFxuICAgICdhZHZhbmNlJyxcbiAgICAnc2l6ZScsXG4gICAgJ3ZpZXdwb3J0Jyxcbl0gYXMgY29uc3Q7XG50eXBlIFByaXZhdGVLZXlzID0gKHR5cGVvZiBwcml2YXRlS2V5cylbbnVtYmVyXTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RQb3J0YWxJbnB1dHMge1xuICAgIGNvbnRhaW5lcjogRWxlbWVudFJlZjxUSFJFRS5PYmplY3QzRD4gfCBUSFJFRS5PYmplY3QzRDtcbiAgICBjYW1lcmE6IEVsZW1lbnRSZWY8VEhSRUUuQ2FtZXJhPiB8IFRIUkVFLkNhbWVyYTtcbiAgICBzdGF0ZTogUGFydGlhbDxcbiAgICAgICAgT21pdDxOZ3RTdGF0ZSwgUHJpdmF0ZUtleXM+ICYge1xuICAgICAgICAgICAgZXZlbnRzOiBQYXJ0aWFsPFBpY2s8Tmd0RXZlbnRNYW5hZ2VyPGFueT4sICdlbmFibGVkJyB8ICdwcmlvcml0eScgfCAnY29tcHV0ZScgfCAnY29ubmVjdGVkJz4+O1xuICAgICAgICAgICAgc2l6ZTogTmd0U2l6ZTtcbiAgICAgICAgfVxuICAgID47XG59XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tuZ3RQb3J0YWxCZWZvcmVSZW5kZXJdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndFBvcnRhbEJlZm9yZVJlbmRlciB7XG4gICAgcmVhZG9ubHkgI3BvcnRhbFN0b3JlID0gaW5qZWN0KE5ndFN0b3JlKTtcblxuICAgIEBJbnB1dCgpIHJlbmRlclByaW9yaXR5ID0gMTtcbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBwYXJlbnRTY2VuZSE6IFRIUkVFLlNjZW5lO1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHBhcmVudENhbWVyYSE6IFRIUkVFLkNhbWVyYTtcblxuICAgIEBPdXRwdXQoKSBiZWZvcmVSZW5kZXIgPSBuZXcgRXZlbnRFbWl0dGVyPE5ndFJlbmRlclN0YXRlPigpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGxldCBvbGRDbGVhcjogYm9vbGVhbjtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lSW5JbmplY3Rpb25Db250ZXh0KCgpID0+IHtcbiAgICAgICAgICAgIGluamVjdEJlZm9yZVJlbmRlcihcbiAgICAgICAgICAgICAgICAoeyBkZWx0YSwgZnJhbWUgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJlZm9yZVJlbmRlci5lbWl0KHsgLi4udGhpcy4jcG9ydGFsU3RvcmUuZ2V0KCksIGRlbHRhLCBmcmFtZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBnbCwgc2NlbmUsIGNhbWVyYSB9ID0gdGhpcy4jcG9ydGFsU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIG9sZENsZWFyID0gZ2wuYXV0b0NsZWFyO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZW5kZXJQcmlvcml0eSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xlYXIgc2NlbmUgYW5kIHJlbmRlciB3aXRoIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIGdsLmF1dG9DbGVhciA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBnbC5yZW5kZXIodGhpcy5wYXJlbnRTY2VuZSwgdGhpcy5wYXJlbnRDYW1lcmEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIGRpc2FibGUgY2xlYW5pbmdcbiAgICAgICAgICAgICAgICAgICAgZ2wuYXV0b0NsZWFyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGdsLmNsZWFyRGVwdGgoKTtcbiAgICAgICAgICAgICAgICAgICAgZ2wucmVuZGVyKHNjZW5lLCBjYW1lcmEpO1xuICAgICAgICAgICAgICAgICAgICAvLyByZXN0b3JlXG4gICAgICAgICAgICAgICAgICAgIGdsLmF1dG9DbGVhciA9IG9sZENsZWFyO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgeyBwcmlvcml0eTogdGhpcy5yZW5kZXJQcmlvcml0eSB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ25nLXRlbXBsYXRlW25ndFBvcnRhbENvbnRlbnRdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndFBvcnRhbENvbnRlbnQge1xuICAgIGNvbnN0cnVjdG9yKHZjcjogVmlld0NvbnRhaW5lclJlZiwgQFNraXBTZWxmKCkgcGFyZW50VmNyOiBWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgICAgIGNvbnN0IGNvbW1lbnROb2RlID0gdmNyLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKGNvbW1lbnROb2RlW1NQRUNJQUxfSU5URVJOQUxfQUREX0NPTU1FTlRdKSB7XG4gICAgICAgICAgICBjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXShwYXJlbnRWY3IuZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIGRlbGV0ZSBjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3QtcG9ydGFsJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZy1jb250YWluZXIgI3BvcnRhbENvbnRlbnRBbmNob3I+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJhdXRvUmVuZGVyICYmIHBvcnRhbENvbnRlbnRSZW5kZXJlZFwiXG4gICAgICAgICAgICAgICAgbmd0UG9ydGFsQmVmb3JlUmVuZGVyXG4gICAgICAgICAgICAgICAgW3JlbmRlclByaW9yaXR5XT1cImF1dG9SZW5kZXJQcmlvcml0eVwiXG4gICAgICAgICAgICAgICAgW3BhcmVudFNjZW5lXT1cInBhcmVudFNjZW5lXCJcbiAgICAgICAgICAgICAgICBbcGFyZW50Q2FtZXJhXT1cInBhcmVudENhbWVyYVwiXG4gICAgICAgICAgICAgICAgKGJlZm9yZVJlbmRlcik9XCJvbkJlZm9yZVJlbmRlcigkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIGAsXG4gICAgaW1wb3J0czogW05nSWYsIE5ndFBvcnRhbEJlZm9yZVJlbmRlcl0sXG4gICAgcHJvdmlkZXJzOiBbTmd0U3RvcmVdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RQb3J0YWwgZXh0ZW5kcyBOZ3RTaWduYWxTdG9yZTxOZ3RQb3J0YWxJbnB1dHM+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBzZXQgY29udGFpbmVyKGNvbnRhaW5lcjogTmd0UG9ydGFsSW5wdXRzWydjb250YWluZXInXSkge1xuICAgICAgICB0aGlzLnNldCh7IGNvbnRhaW5lciB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcG9ydGFsU3RhdGUoc3RhdGU6IE5ndFBvcnRhbElucHV0c1snc3RhdGUnXSkge1xuICAgICAgICB0aGlzLnNldCh7IHN0YXRlIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGF1dG9SZW5kZXIgPSB0cnVlO1xuICAgIEBJbnB1dCgpIGF1dG9SZW5kZXJQcmlvcml0eSA9IDE7XG5cbiAgICBAT3V0cHV0KCkgYmVmb3JlUmVuZGVyID0gbmV3IEV2ZW50RW1pdHRlcjx7IHJvb3Q6IE5ndFJlbmRlclN0YXRlOyBwb3J0YWw6IE5ndFJlbmRlclN0YXRlIH0+KCk7XG5cbiAgICBAQ29udGVudENoaWxkKE5ndFBvcnRhbENvbnRlbnQsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHJlYWRvbmx5IHBvcnRhbENvbnRlbnRUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gICAgQFZpZXdDaGlsZCgncG9ydGFsQ29udGVudEFuY2hvcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgcmVhZG9ubHkgcG9ydGFsQ29udGVudEFuY2hvciE6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICByZWFkb25seSAjcGFyZW50U3RvcmUgPSBpbmplY3QoTmd0U3RvcmUsIHsgc2tpcFNlbGY6IHRydWUgfSk7XG4gICAgcmVhZG9ubHkgcGFyZW50U2NlbmUgPSB0aGlzLiNwYXJlbnRTdG9yZS5nZXQoJ3NjZW5lJyk7XG4gICAgcmVhZG9ubHkgcGFyZW50Q2FtZXJhID0gdGhpcy4jcGFyZW50U3RvcmUuZ2V0KCdjYW1lcmEnKTtcblxuICAgIHJlYWRvbmx5ICNwb3J0YWxTdG9yZSA9IGluamVjdChOZ3RTdG9yZSwgeyBzZWxmOiB0cnVlIH0pO1xuICAgIHJlYWRvbmx5ICNpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gICAgcmVhZG9ubHkgI3pvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICAgIHJlYWRvbmx5ICNyYXljYXN0ZXIgPSBuZXcgVEhSRUUuUmF5Y2FzdGVyKCk7XG4gICAgcmVhZG9ubHkgI3BvaW50ZXIgPSBuZXcgVEhSRUUuVmVjdG9yMigpO1xuXG4gICAgcG9ydGFsQ29udGVudFJlbmRlcmVkID0gZmFsc2U7XG4gICAgI3BvcnRhbENvbnRlbnRWaWV3PzogRW1iZWRkZWRWaWV3UmVmPHVua25vd24+O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKHsgY29udGFpbmVyOiBpbmplY3ROZ3RSZWY8VEhSRUUuU2NlbmU+KHByZXBhcmUobmV3IFRIUkVFLlNjZW5lKCkpKSB9KTtcbiAgICAgICAgaW5qZWN0KERlc3Ryb3lSZWYpLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy4jcG9ydGFsQ29udGVudFZpZXcgJiYgIXRoaXMuI3BvcnRhbENvbnRlbnRWaWV3LmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuI3BvcnRhbENvbnRlbnRWaWV3LmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzU3RhdGUgPSB0aGlzLiNwYXJlbnRTdG9yZS5nZXQoKTtcbiAgICAgICAgY29uc3QgaW5wdXRzU3RhdGUgPSB0aGlzLmdldCgpO1xuXG4gICAgICAgIGlmICghaW5wdXRzU3RhdGUuc3RhdGUgJiYgdGhpcy5hdXRvUmVuZGVyKSB7XG4gICAgICAgICAgICBpbnB1dHNTdGF0ZS5zdGF0ZSA9IHsgZXZlbnRzOiB7IHByaW9yaXR5OiB0aGlzLmF1dG9SZW5kZXJQcmlvcml0eSArIDEgfSB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBldmVudHMsIHNpemUsIC4uLnJlc3RJbnB1dHNTdGF0ZSB9ID0gaW5wdXRzU3RhdGUuc3RhdGUgfHwge307XG5cbiAgICAgICAgY29uc3QgY29udGFpbmVyU3RhdGUgPSBpbnB1dHNTdGF0ZS5jb250YWluZXI7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGlzLnJlZihjb250YWluZXJTdGF0ZSkgPyBjb250YWluZXJTdGF0ZS5uYXRpdmVFbGVtZW50IDogY29udGFpbmVyU3RhdGU7XG5cbiAgICAgICAgY29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoY29udGFpbmVyKTtcbiAgICAgICAgaWYgKCFsb2NhbFN0YXRlLnN0b3JlKSB7XG4gICAgICAgICAgICBsb2NhbFN0YXRlLnN0b3JlID0gdGhpcy4jcG9ydGFsU3RvcmU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLiNwb3J0YWxTdG9yZS5zZXQoe1xuICAgICAgICAgICAgLi4ucHJldmlvdXNTdGF0ZSxcbiAgICAgICAgICAgIHNjZW5lOiBjb250YWluZXIgYXMgVEhSRUUuU2NlbmUsXG4gICAgICAgICAgICByYXljYXN0ZXI6IHRoaXMuI3JheWNhc3RlcixcbiAgICAgICAgICAgIHBvaW50ZXI6IHRoaXMuI3BvaW50ZXIsXG4gICAgICAgICAgICBwcmV2aW91c1N0b3JlOiB0aGlzLiNwYXJlbnRTdG9yZSxcbiAgICAgICAgICAgIGV2ZW50czogeyAuLi5wcmV2aW91c1N0YXRlLmV2ZW50cywgLi4uKGV2ZW50cyB8fCB7fSkgfSxcbiAgICAgICAgICAgIHNpemU6IHsgLi4ucHJldmlvdXNTdGF0ZS5zaXplLCAuLi4oc2l6ZSB8fCB7fSkgfSxcbiAgICAgICAgICAgIC4uLnJlc3RJbnB1dHNTdGF0ZSxcbiAgICAgICAgICAgIGdldDogdGhpcy4jcG9ydGFsU3RvcmUuZ2V0LmJpbmQodGhpcy4jcG9ydGFsU3RvcmUpLFxuICAgICAgICAgICAgc2V0OiB0aGlzLiNwb3J0YWxTdG9yZS5zZXQuYmluZCh0aGlzLiNwb3J0YWxTdG9yZSksXG4gICAgICAgICAgICBzZXRFdmVudHM6IChldmVudHMpID0+XG4gICAgICAgICAgICAgICAgdGhpcy4jcG9ydGFsU3RvcmUuc2V0KChzdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGV2ZW50czogeyAuLi5zdGF0ZS5ldmVudHMsIC4uLmV2ZW50cyB9IH0pKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgcGFyZW50U3RhdGUgPSB0aGlzLiNwYXJlbnRTdG9yZS5zZWxlY3QoKTtcbiAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzID0gcGFyZW50U3RhdGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLiN6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jcG9ydGFsU3RvcmUuc2V0KChzdGF0ZSkgPT4gdGhpcy4jaW5qZWN0KHByZXZpb3VzLCBzdGF0ZSkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgaW5qZWN0b3I6IHRoaXMuI2luamVjdG9yLCBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgICAgICk7XG5cbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuI3BvcnRhbFN0b3JlLnNldCgoaW5qZWN0U3RhdGUpID0+IHRoaXMuI2luamVjdCh0aGlzLiNwYXJlbnRTdG9yZS5nZXQoKSwgaW5qZWN0U3RhdGUpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuI3BvcnRhbENvbnRlbnRWaWV3ID0gdGhpcy5wb3J0YWxDb250ZW50QW5jaG9yLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnBvcnRhbENvbnRlbnRUZW1wbGF0ZSk7XG4gICAgICAgIHNhZmVEZXRlY3RDaGFuZ2VzKHRoaXMuI3BvcnRhbENvbnRlbnRWaWV3KTtcbiAgICAgICAgdGhpcy5wb3J0YWxDb250ZW50UmVuZGVyZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIG9uQmVmb3JlUmVuZGVyKHBvcnRhbDogTmd0UmVuZGVyU3RhdGUpIHtcbiAgICAgICAgdGhpcy5iZWZvcmVSZW5kZXIuZW1pdCh7XG4gICAgICAgICAgICByb290OiB7IC4uLnRoaXMuI3BhcmVudFN0b3JlLmdldCgpLCBkZWx0YTogcG9ydGFsLmRlbHRhLCBmcmFtZTogcG9ydGFsLmZyYW1lIH0sXG4gICAgICAgICAgICBwb3J0YWwsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgICNpbmplY3Qocm9vdFN0YXRlOiBOZ3RTdGF0ZSwgaW5qZWN0U3RhdGU6IE5ndFN0YXRlKSB7XG4gICAgICAgIGNvbnN0IGludGVyc2VjdDogUGFydGlhbDxOZ3RTdGF0ZT4gPSB7IC4uLnJvb3RTdGF0ZSB9O1xuXG4gICAgICAgIE9iamVjdC5rZXlzKGludGVyc2VjdCkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgcHJpdmF0ZUtleXMuaW5jbHVkZXMoa2V5IGFzIFByaXZhdGVLZXlzKSB8fFxuICAgICAgICAgICAgICAgIHJvb3RTdGF0ZVtrZXkgYXMga2V5b2YgTmd0U3RhdGVdICE9PSBpbmplY3RTdGF0ZVtrZXkgYXMga2V5b2YgTmd0U3RhdGVdXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgaW50ZXJzZWN0W2tleSBhcyBrZXlvZiBOZ3RTdGF0ZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGlucHV0cyA9IHRoaXMuZ2V0KCk7XG4gICAgICAgIGNvbnN0IHsgc2l6ZSwgZXZlbnRzLCAuLi5yZXN0SW5wdXRzU3RhdGUgfSA9IGlucHV0cy5zdGF0ZSB8fCB7fTtcblxuICAgICAgICBsZXQgdmlld3BvcnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChpbmplY3RTdGF0ZSAmJiBzaXplKSB7XG4gICAgICAgICAgICBjb25zdCBjYW1lcmEgPSBpbmplY3RTdGF0ZS5jYW1lcmE7XG4gICAgICAgICAgICB2aWV3cG9ydCA9IHJvb3RTdGF0ZS52aWV3cG9ydC5nZXRDdXJyZW50Vmlld3BvcnQoY2FtZXJhLCBuZXcgVEhSRUUuVmVjdG9yMygpLCBzaXplKTtcbiAgICAgICAgICAgIGlmIChjYW1lcmEgIT09IHJvb3RTdGF0ZS5jYW1lcmEpIHVwZGF0ZUNhbWVyYShjYW1lcmEsIHNpemUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmludGVyc2VjdCxcbiAgICAgICAgICAgIHNjZW5lOiBpcy5yZWYoaW5wdXRzLmNvbnRhaW5lcikgPyBpbnB1dHMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQgOiBpbnB1dHMuY29udGFpbmVyLFxuICAgICAgICAgICAgcmF5Y2FzdGVyOiB0aGlzLiNyYXljYXN0ZXIsXG4gICAgICAgICAgICBwb2ludGVyOiB0aGlzLiNwb2ludGVyLFxuICAgICAgICAgICAgcHJldmlvdXNTdG9yZTogdGhpcy4jcGFyZW50U3RvcmUsXG4gICAgICAgICAgICBldmVudHM6IHsgLi4ucm9vdFN0YXRlLmV2ZW50cywgLi4uKGluamVjdFN0YXRlPy5ldmVudHMgfHwge30pLCAuLi5ldmVudHMgfSxcbiAgICAgICAgICAgIHNpemU6IHsgLi4ucm9vdFN0YXRlLnNpemUsIC4uLnNpemUgfSxcbiAgICAgICAgICAgIHZpZXdwb3J0OiB7IC4uLnJvb3RTdGF0ZS52aWV3cG9ydCwgLi4uKHZpZXdwb3J0IHx8IHt9KSB9LFxuICAgICAgICAgICAgLi4ucmVzdElucHV0c1N0YXRlLFxuICAgICAgICB9IGFzIE5ndFN0YXRlO1xuICAgIH1cbn1cbiJdfQ==
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcG9ydGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQ04sU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsU0FBUyxFQUNULFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixNQUFNLEdBSU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNyQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFrQixjQUFjLEVBQStCLE1BQU0sU0FBUyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFOUMsTUFBTSxXQUFXLEdBQUc7SUFDbkIsS0FBSztJQUNMLEtBQUs7SUFDTCxRQUFRO0lBQ1IsU0FBUztJQUNULFFBQVE7SUFDUixjQUFjO0lBQ2QsUUFBUTtJQUNSLFlBQVk7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QUMsV0FBVyxDQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsNkVBa0JsRSxnQkFBZ0IsMkJBQVUsV0FBVyxrSkFHVCxnQkFBZ0IsMkNBbENoRDs7Ozs7Ozs7Ozs7RUFXVCw0REFDUyxJQUFJLDZGQTVERixxQkFBcUI7OzJGQStEckIsU0FBUztrQkFsQnJCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7O0VBV1Q7b0JBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLHFCQUFxQixDQUFDO29CQUN0QyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDO2lCQUNoRjswRUFJYSxTQUFTO3NCQUFyQixLQUFLO2dCQUljLFdBQVc7c0JBQTlCLEtBQUs7dUJBQUMsT0FBTztnQkFJTCxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUdQLHFCQUFxQjtzQkFEcEIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJbkUsbUJBQW1CO3NCQURsQixTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdENvbXBvbmVudCxcblx0Q29udGVudENoaWxkLFxuXHREZXN0cm95UmVmLFxuXHREaXJlY3RpdmUsXG5cdEV2ZW50RW1pdHRlcixcblx0SW5qZWN0b3IsXG5cdElucHV0LFxuXHROZ1pvbmUsXG5cdE91dHB1dCxcblx0U2tpcFNlbGYsXG5cdFRlbXBsYXRlUmVmLFxuXHRWaWV3Q2hpbGQsXG5cdFZpZXdDb250YWluZXJSZWYsXG5cdGVmZmVjdCxcblx0aW5qZWN0LFxuXHR0eXBlIEVsZW1lbnRSZWYsXG5cdHR5cGUgRW1iZWRkZWRWaWV3UmVmLFxuXHR0eXBlIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBpbmplY3RCZWZvcmVSZW5kZXIgfSBmcm9tICcuL2JlZm9yZS1yZW5kZXInO1xuaW1wb3J0IHR5cGUgeyBOZ3RFdmVudE1hbmFnZXIgfSBmcm9tICcuL2V2ZW50cyc7XG5pbXBvcnQgeyBnZXRMb2NhbFN0YXRlLCBwcmVwYXJlIH0gZnJvbSAnLi9pbnN0YW5jZSc7XG5pbXBvcnQgeyBpbmplY3ROZ3RSZWYgfSBmcm9tICcuL3JlZic7XG5pbXBvcnQgeyBTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UIH0gZnJvbSAnLi9yZW5kZXJlci9jb25zdGFudHMnO1xuaW1wb3J0IHsgTkdUX1NUT1JFLCBOZ3RSZW5kZXJTdGF0ZSwgaW5qZWN0Tmd0U3RvcmUsIHR5cGUgTmd0U2l6ZSwgdHlwZSBOZ3RTdGF0ZSB9IGZyb20gJy4vc3RvcmUnO1xuaW1wb3J0IHsgaXMgfSBmcm9tICcuL3V0aWxzL2lzJztcbmltcG9ydCB7IHNhZmVEZXRlY3RDaGFuZ2VzIH0gZnJvbSAnLi91dGlscy9zYWZlLWRldGVjdC1jaGFuZ2VzJztcbmltcG9ydCB7IHNpZ25hbFN0b3JlIH0gZnJvbSAnLi91dGlscy9zaWduYWwtc3RvcmUnO1xuaW1wb3J0IHsgdXBkYXRlQ2FtZXJhIH0gZnJvbSAnLi91dGlscy91cGRhdGUnO1xuXG5jb25zdCBwcml2YXRlS2V5cyA9IFtcblx0J2dldCcsXG5cdCdzZXQnLFxuXHQnc2VsZWN0Jyxcblx0J3NldFNpemUnLFxuXHQnc2V0RHByJyxcblx0J3NldEZyYW1lbG9vcCcsXG5cdCdldmVudHMnLFxuXHQnaW52YWxpZGF0ZScsXG5cdCdhZHZhbmNlJyxcblx0J3NpemUnLFxuXHQndmlld3BvcnQnLFxuXSBhcyBjb25zdDtcbnR5cGUgUHJpdmF0ZUtleXMgPSAodHlwZW9mIHByaXZhdGVLZXlzKVtudW1iZXJdO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndFBvcnRhbElucHV0cyB7XG5cdGNvbnRhaW5lcjogRWxlbWVudFJlZjxUSFJFRS5PYmplY3QzRD4gfCBUSFJFRS5PYmplY3QzRDtcblx0Y2FtZXJhOiBFbGVtZW50UmVmPFRIUkVFLkNhbWVyYT4gfCBUSFJFRS5DYW1lcmE7XG5cdHN0YXRlOiBQYXJ0aWFsPFxuXHRcdE9taXQ8Tmd0U3RhdGUsIFByaXZhdGVLZXlzPiAmIHtcblx0XHRcdGV2ZW50czogUGFydGlhbDxQaWNrPE5ndEV2ZW50TWFuYWdlcjxhbnk+LCAnZW5hYmxlZCcgfCAncHJpb3JpdHknIHwgJ2NvbXB1dGUnIHwgJ2Nvbm5lY3RlZCc+Pjtcblx0XHRcdHNpemU6IE5ndFNpemU7XG5cdFx0fVxuXHQ+O1xufVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbbmd0UG9ydGFsQmVmb3JlUmVuZGVyXScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBOZ3RQb3J0YWxCZWZvcmVSZW5kZXIgaW1wbGVtZW50cyBPbkluaXQge1xuXHRwcml2YXRlIHBvcnRhbFN0b3JlID0gaW5qZWN0Tmd0U3RvcmUoKTtcblx0cHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cblx0QElucHV0KCkgcmVuZGVyUHJpb3JpdHkgPSAxO1xuXHRASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBwYXJlbnRTY2VuZSE6IFRIUkVFLlNjZW5lO1xuXHRASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBwYXJlbnRDYW1lcmEhOiBUSFJFRS5DYW1lcmE7XG5cblx0QE91dHB1dCgpIGJlZm9yZVJlbmRlciA9IG5ldyBFdmVudEVtaXR0ZXI8Tmd0UmVuZGVyU3RhdGU+KCk7XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0bGV0IG9sZENsZWFyOiBib29sZWFuO1xuXHRcdGluamVjdEJlZm9yZVJlbmRlcihcblx0XHRcdCh7IGRlbHRhLCBmcmFtZSB9KSA9PiB7XG5cdFx0XHRcdHRoaXMuYmVmb3JlUmVuZGVyLmVtaXQoeyAuLi50aGlzLnBvcnRhbFN0b3JlLmdldCgpLCBkZWx0YSwgZnJhbWUgfSk7XG5cdFx0XHRcdGNvbnN0IHsgZ2wsIHNjZW5lLCBjYW1lcmEgfSA9IHRoaXMucG9ydGFsU3RvcmUuZ2V0KCk7XG5cdFx0XHRcdG9sZENsZWFyID0gZ2wuYXV0b0NsZWFyO1xuXHRcdFx0XHRpZiAodGhpcy5yZW5kZXJQcmlvcml0eSA9PT0gMSkge1xuXHRcdFx0XHRcdC8vIGNsZWFyIHNjZW5lIGFuZCByZW5kZXIgd2l0aCBkZWZhdWx0XG5cdFx0XHRcdFx0Z2wuYXV0b0NsZWFyID0gdHJ1ZTtcblx0XHRcdFx0XHRnbC5yZW5kZXIodGhpcy5wYXJlbnRTY2VuZSwgdGhpcy5wYXJlbnRDYW1lcmEpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIGRpc2FibGUgY2xlYW5pbmdcblx0XHRcdFx0Z2wuYXV0b0NsZWFyID0gZmFsc2U7XG5cdFx0XHRcdGdsLmNsZWFyRGVwdGgoKTtcblx0XHRcdFx0Z2wucmVuZGVyKHNjZW5lLCBjYW1lcmEpO1xuXHRcdFx0XHQvLyByZXN0b3JlXG5cdFx0XHRcdGdsLmF1dG9DbGVhciA9IG9sZENsZWFyO1xuXHRcdFx0fSxcblx0XHRcdHsgcHJpb3JpdHk6IHRoaXMucmVuZGVyUHJpb3JpdHksIGluamVjdG9yOiB0aGlzLmluamVjdG9yIH0sXG5cdFx0KTtcblx0fVxufVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtuZ3RQb3J0YWxDb250ZW50XScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBOZ3RQb3J0YWxDb250ZW50IHtcblx0Y29uc3RydWN0b3IodmNyOiBWaWV3Q29udGFpbmVyUmVmLCBAU2tpcFNlbGYoKSBwYXJlbnRWY3I6IFZpZXdDb250YWluZXJSZWYpIHtcblx0XHRjb25zdCBjb21tZW50Tm9kZSA9IHZjci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cdFx0aWYgKGNvbW1lbnROb2RlW1NQRUNJQUxfSU5URVJOQUxfQUREX0NPTU1FTlRdKSB7XG5cdFx0XHRjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXShwYXJlbnRWY3IuZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcblx0XHRcdGRlbGV0ZSBjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXTtcblx0XHR9XG5cdH1cbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0LXBvcnRhbCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5nLWNvbnRhaW5lciAjcG9ydGFsQ29udGVudEFuY2hvcj5cblx0XHRcdDxuZy1jb250YWluZXJcblx0XHRcdFx0Km5nSWY9XCJhdXRvUmVuZGVyICYmIHBvcnRhbENvbnRlbnRSZW5kZXJlZFwiXG5cdFx0XHRcdG5ndFBvcnRhbEJlZm9yZVJlbmRlclxuXHRcdFx0XHRbcmVuZGVyUHJpb3JpdHldPVwiYXV0b1JlbmRlclByaW9yaXR5XCJcblx0XHRcdFx0W3BhcmVudFNjZW5lXT1cInBhcmVudFNjZW5lXCJcblx0XHRcdFx0W3BhcmVudENhbWVyYV09XCJwYXJlbnRDYW1lcmFcIlxuXHRcdFx0XHQoYmVmb3JlUmVuZGVyKT1cIm9uQmVmb3JlUmVuZGVyKCRldmVudClcIlxuXHRcdFx0Lz5cblx0XHQ8L25nLWNvbnRhaW5lcj5cblx0YCxcblx0aW1wb3J0czogW05nSWYsIE5ndFBvcnRhbEJlZm9yZVJlbmRlcl0sXG5cdHByb3ZpZGVyczogW3sgcHJvdmlkZTogTkdUX1NUT1JFLCB1c2VGYWN0b3J5OiAoKSA9PiBzaWduYWxTdG9yZTxOZ3RTdGF0ZT4oe30pIH1dLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RQb3J0YWwgaW1wbGVtZW50cyBPbkluaXQge1xuXHRwcml2YXRlIGlucHV0cyA9IHNpZ25hbFN0b3JlPE5ndFBvcnRhbElucHV0cz4oeyBjb250YWluZXI6IGluamVjdE5ndFJlZjxUSFJFRS5TY2VuZT4ocHJlcGFyZShuZXcgVEhSRUUuU2NlbmUoKSkpIH0pO1xuXG5cdEBJbnB1dCgpIHNldCBjb250YWluZXIoY29udGFpbmVyOiBOZ3RQb3J0YWxJbnB1dHNbJ2NvbnRhaW5lciddKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgY29udGFpbmVyIH0pO1xuXHR9XG5cblx0QElucHV0KCdzdGF0ZScpIHNldCBwb3J0YWxTdGF0ZShzdGF0ZTogTmd0UG9ydGFsSW5wdXRzWydzdGF0ZSddKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgc3RhdGUgfSk7XG5cdH1cblxuXHRASW5wdXQoKSBhdXRvUmVuZGVyID0gdHJ1ZTtcblx0QElucHV0KCkgYXV0b1JlbmRlclByaW9yaXR5ID0gMTtcblxuXHRAT3V0cHV0KCkgYmVmb3JlUmVuZGVyID0gbmV3IEV2ZW50RW1pdHRlcjx7IHJvb3Q6IE5ndFJlbmRlclN0YXRlOyBwb3J0YWw6IE5ndFJlbmRlclN0YXRlIH0+KCk7XG5cblx0QENvbnRlbnRDaGlsZChOZ3RQb3J0YWxDb250ZW50LCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcblx0cG9ydGFsQ29udGVudFRlbXBsYXRlITogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cblx0QFZpZXdDaGlsZCgncG9ydGFsQ29udGVudEFuY2hvcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG5cdHBvcnRhbENvbnRlbnRBbmNob3IhOiBWaWV3Q29udGFpbmVyUmVmO1xuXG5cdHByaXZhdGUgcGFyZW50U3RvcmUgPSBpbmplY3ROZ3RTdG9yZSh7IHNraXBTZWxmOiB0cnVlIH0pO1xuXHRwYXJlbnRTY2VuZSA9IHRoaXMucGFyZW50U3RvcmUuZ2V0KCdzY2VuZScpO1xuXHRwYXJlbnRDYW1lcmEgPSB0aGlzLnBhcmVudFN0b3JlLmdldCgnY2FtZXJhJyk7XG5cblx0cHJpdmF0ZSBwb3J0YWxTdG9yZSA9IGluamVjdE5ndFN0b3JlKHsgc2VsZjogdHJ1ZSB9KTtcblx0cHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cdHByaXZhdGUgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG5cdHByaXZhdGUgcmF5Y2FzdGVyID0gbmV3IFRIUkVFLlJheWNhc3RlcigpO1xuXHRwcml2YXRlIHBvaW50ZXIgPSBuZXcgVEhSRUUuVmVjdG9yMigpO1xuXG5cdHBvcnRhbENvbnRlbnRSZW5kZXJlZCA9IGZhbHNlO1xuXHRwcml2YXRlIHBvcnRhbENvbnRlbnRWaWV3PzogRW1iZWRkZWRWaWV3UmVmPHVua25vd24+O1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4ge1xuXHRcdFx0aWYgKHRoaXMucG9ydGFsQ29udGVudFZpZXcgJiYgIXRoaXMucG9ydGFsQ29udGVudFZpZXcuZGVzdHJveWVkKSB7XG5cdFx0XHRcdHRoaXMucG9ydGFsQ29udGVudFZpZXcuZGVzdHJveSgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0Y29uc3QgcHJldmlvdXNTdGF0ZSA9IHRoaXMucGFyZW50U3RvcmUuZ2V0KCk7XG5cdFx0Y29uc3QgaW5wdXRzU3RhdGUgPSB0aGlzLmlucHV0cy5nZXQoKTtcblxuXHRcdGlmICghaW5wdXRzU3RhdGUuc3RhdGUgJiYgdGhpcy5hdXRvUmVuZGVyKSB7XG5cdFx0XHRpbnB1dHNTdGF0ZS5zdGF0ZSA9IHsgZXZlbnRzOiB7IHByaW9yaXR5OiB0aGlzLmF1dG9SZW5kZXJQcmlvcml0eSArIDEgfSB9O1xuXHRcdH1cblxuXHRcdGNvbnN0IHsgZXZlbnRzLCBzaXplLCAuLi5yZXN0SW5wdXRzU3RhdGUgfSA9IGlucHV0c1N0YXRlLnN0YXRlIHx8IHt9O1xuXG5cdFx0Y29uc3QgY29udGFpbmVyU3RhdGUgPSBpbnB1dHNTdGF0ZS5jb250YWluZXI7XG5cdFx0bGV0IGNvbnRhaW5lciA9IGlzLnJlZihjb250YWluZXJTdGF0ZSkgPyBjb250YWluZXJTdGF0ZS5uYXRpdmVFbGVtZW50IDogY29udGFpbmVyU3RhdGU7XG5cblx0XHRpZiAoIWlzLmluc3RhbmNlKGNvbnRhaW5lcikpIHtcblx0XHRcdGNvbnRhaW5lciA9IHByZXBhcmUoY29udGFpbmVyKTtcblx0XHR9XG5cblx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShjb250YWluZXIpO1xuXHRcdGlmICghbG9jYWxTdGF0ZS5zdG9yZSkge1xuXHRcdFx0bG9jYWxTdGF0ZS5zdG9yZSA9IHRoaXMucG9ydGFsU3RvcmU7XG5cdFx0fVxuXG5cdFx0dGhpcy5wb3J0YWxTdG9yZS5zZXQoe1xuXHRcdFx0Li4ucHJldmlvdXNTdGF0ZSxcblx0XHRcdHNjZW5lOiBjb250YWluZXIgYXMgVEhSRUUuU2NlbmUsXG5cdFx0XHRyYXljYXN0ZXI6IHRoaXMucmF5Y2FzdGVyLFxuXHRcdFx0cG9pbnRlcjogdGhpcy5wb2ludGVyLFxuXHRcdFx0cHJldmlvdXNSb290OiB0aGlzLnBhcmVudFN0b3JlLFxuXHRcdFx0ZXZlbnRzOiB7IC4uLnByZXZpb3VzU3RhdGUuZXZlbnRzLCAuLi4oZXZlbnRzIHx8IHt9KSB9LFxuXHRcdFx0c2l6ZTogeyAuLi5wcmV2aW91c1N0YXRlLnNpemUsIC4uLihzaXplIHx8IHt9KSB9LFxuXHRcdFx0Li4ucmVzdElucHV0c1N0YXRlLFxuXHRcdFx0c2V0RXZlbnRzOiAoZXZlbnRzKSA9PlxuXHRcdFx0XHR0aGlzLnBvcnRhbFN0b3JlLnNldCgoc3RhdGUpID0+ICh7IC4uLnN0YXRlLCBldmVudHM6IHsgLi4uc3RhdGUuZXZlbnRzLCAuLi5ldmVudHMgfSB9KSksXG5cdFx0fSk7XG5cblx0XHRjb25zdCBwYXJlbnRTdGF0ZSA9IHRoaXMucGFyZW50U3RvcmUuc2VsZWN0KCk7XG5cdFx0ZWZmZWN0KFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRjb25zdCBwcmV2aW91cyA9IHBhcmVudFN0YXRlKCk7XG5cdFx0XHRcdHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wb3J0YWxTdG9yZS5zZXQoKHN0YXRlKSA9PiB0aGlzLmluamVjdChwcmV2aW91cywgc3RhdGUpKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0eyBpbmplY3RvcjogdGhpcy5pbmplY3RvciB9LFxuXHRcdCk7XG5cblx0XHRyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuXHRcdFx0dGhpcy5wb3J0YWxTdG9yZS5zZXQoKGluamVjdFN0YXRlKSA9PiB0aGlzLmluamVjdCh0aGlzLnBhcmVudFN0b3JlLmdldCgpLCBpbmplY3RTdGF0ZSkpO1xuXHRcdH0pO1xuXHRcdHRoaXMucG9ydGFsQ29udGVudFZpZXcgPSB0aGlzLnBvcnRhbENvbnRlbnRBbmNob3IuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMucG9ydGFsQ29udGVudFRlbXBsYXRlKTtcblx0XHRzYWZlRGV0ZWN0Q2hhbmdlcyh0aGlzLnBvcnRhbENvbnRlbnRWaWV3KTtcblx0XHR0aGlzLnBvcnRhbENvbnRlbnRSZW5kZXJlZCA9IHRydWU7XG5cdH1cblxuXHRvbkJlZm9yZVJlbmRlcihwb3J0YWw6IE5ndFJlbmRlclN0YXRlKSB7XG5cdFx0dGhpcy5iZWZvcmVSZW5kZXIuZW1pdCh7XG5cdFx0XHRyb290OiB7IC4uLnRoaXMucGFyZW50U3RvcmUuZ2V0KCksIGRlbHRhOiBwb3J0YWwuZGVsdGEsIGZyYW1lOiBwb3J0YWwuZnJhbWUgfSxcblx0XHRcdHBvcnRhbCxcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgaW5qZWN0KHJvb3RTdGF0ZTogTmd0U3RhdGUsIGluamVjdFN0YXRlOiBOZ3RTdGF0ZSkge1xuXHRcdGNvbnN0IGludGVyc2VjdDogUGFydGlhbDxOZ3RTdGF0ZT4gPSB7IC4uLnJvb3RTdGF0ZSB9O1xuXG5cdFx0T2JqZWN0LmtleXMoaW50ZXJzZWN0KS5mb3JFYWNoKChrZXkpID0+IHtcblx0XHRcdGlmIChcblx0XHRcdFx0cHJpdmF0ZUtleXMuaW5jbHVkZXMoa2V5IGFzIFByaXZhdGVLZXlzKSB8fFxuXHRcdFx0XHRyb290U3RhdGVba2V5IGFzIGtleW9mIE5ndFN0YXRlXSAhPT0gaW5qZWN0U3RhdGVba2V5IGFzIGtleW9mIE5ndFN0YXRlXVxuXHRcdFx0KSB7XG5cdFx0XHRcdGRlbGV0ZSBpbnRlcnNlY3Rba2V5IGFzIGtleW9mIE5ndFN0YXRlXTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGNvbnN0IGlucHV0cyA9IHRoaXMuaW5wdXRzLmdldCgpO1xuXHRcdGNvbnN0IHsgc2l6ZSwgZXZlbnRzLCAuLi5yZXN0SW5wdXRzU3RhdGUgfSA9IGlucHV0cy5zdGF0ZSB8fCB7fTtcblxuXHRcdGxldCB2aWV3cG9ydCA9IHVuZGVmaW5lZDtcblx0XHRpZiAoaW5qZWN0U3RhdGUgJiYgc2l6ZSkge1xuXHRcdFx0Y29uc3QgY2FtZXJhID0gaW5qZWN0U3RhdGUuY2FtZXJhO1xuXHRcdFx0dmlld3BvcnQgPSByb290U3RhdGUudmlld3BvcnQuZ2V0Q3VycmVudFZpZXdwb3J0KGNhbWVyYSwgbmV3IFRIUkVFLlZlY3RvcjMoKSwgc2l6ZSk7XG5cdFx0XHRpZiAoY2FtZXJhICE9PSByb290U3RhdGUuY2FtZXJhKSB1cGRhdGVDYW1lcmEoY2FtZXJhLCBzaXplKTtcblx0XHR9XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0Li4uaW50ZXJzZWN0LFxuXHRcdFx0c2NlbmU6IGlzLnJlZihpbnB1dHMuY29udGFpbmVyKSA/IGlucHV0cy5jb250YWluZXIubmF0aXZlRWxlbWVudCA6IGlucHV0cy5jb250YWluZXIsXG5cdFx0XHRyYXljYXN0ZXI6IHRoaXMucmF5Y2FzdGVyLFxuXHRcdFx0cG9pbnRlcjogdGhpcy5wb2ludGVyLFxuXHRcdFx0cHJldmlvdXNSb290OiB0aGlzLnBhcmVudFN0b3JlLFxuXHRcdFx0ZXZlbnRzOiB7IC4uLnJvb3RTdGF0ZS5ldmVudHMsIC4uLihpbmplY3RTdGF0ZT8uZXZlbnRzIHx8IHt9KSwgLi4uZXZlbnRzIH0sXG5cdFx0XHRzaXplOiB7IC4uLnJvb3RTdGF0ZS5zaXplLCAuLi5zaXplIH0sXG5cdFx0XHR2aWV3cG9ydDogeyAuLi5yb290U3RhdGUudmlld3BvcnQsIC4uLih2aWV3cG9ydCB8fCB7fSkgfSxcblx0XHRcdC4uLnJlc3RJbnB1dHNTdGF0ZSxcblx0XHR9IGFzIE5ndFN0YXRlO1xuXHR9XG59XG4iXX0=
@@ -0,0 +1,48 @@
1
+ import { DestroyRef, ElementRef, computed, inject, runInInjectionContext, signal, untracked, } from '@angular/core';
2
+ import { getLocalState } from './instance';
3
+ import { assertInjectionContext } from './utils/assert-injection-context';
4
+ import { is } from './utils/is';
5
+ export function injectNgtRef(initial = null, injector) {
6
+ injector = assertInjectionContext(injectNgtRef);
7
+ const ref = is.ref(initial) ? initial : new ElementRef(initial);
8
+ const signalRef = signal(ref.nativeElement);
9
+ const readonlySignal = signalRef.asReadonly();
10
+ const cached = new Map();
11
+ return runInInjectionContext(injector, () => {
12
+ inject(DestroyRef).onDestroy(() => void cached.clear());
13
+ const children = (type = 'objects') => {
14
+ if (!cached.has(type)) {
15
+ cached.set(type, computed(() => {
16
+ const instance = readonlySignal();
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 cached.get(type);
30
+ };
31
+ Object.defineProperties(ref, {
32
+ nativeElement: {
33
+ set: (newElement) => {
34
+ untracked(() => {
35
+ if (newElement !== signalRef()) {
36
+ signalRef.set(newElement);
37
+ }
38
+ });
39
+ },
40
+ get: readonlySignal,
41
+ },
42
+ untracked: { get: () => untracked(readonlySignal) },
43
+ children: { get: () => children },
44
+ });
45
+ return ref;
46
+ });
47
+ }
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixVQUFVLEVBQ1YsVUFBVSxFQUNWLFFBQVEsRUFDUixNQUFNLEVBQ04scUJBQXFCLEVBQ3JCLE1BQU0sRUFDTixTQUFTLEdBR1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBd0IsTUFBTSxZQUFZLENBQUM7QUFDakUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDMUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQVdoQyxNQUFNLFVBQVUsWUFBWSxDQUMzQixVQUEyQyxJQUFLLEVBQ2hELFFBQW1CO0lBRW5CLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNoRCxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLE9BQW1CLENBQUMsQ0FBQztJQUM1RSxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUM5QyxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRXpCLE9BQU8scUJBQXFCLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtRQUMzQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFeEQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUEwQyxTQUFTLEVBQUUsRUFBRTtZQUN4RSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdEIsTUFBTSxDQUFDLEdBQUcsQ0FDVCxJQUFJLEVBQ0osUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDYixNQUFNLFFBQVEsR0FBRyxjQUFjLEVBQUUsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLFFBQVE7d0JBQUUsT0FBTyxFQUFFLENBQUM7b0JBQ3pCLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVTt3QkFBRSxPQUFPLEVBQUUsQ0FBQztvQkFDN0QsSUFBSSxJQUFJLEtBQUssU0FBUzt3QkFBRSxPQUFPLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDcEQsSUFBSSxJQUFJLEtBQUssWUFBWTt3QkFBRSxPQUFPLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDMUQsT0FBTyxDQUFDLEdBQUcsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0JBQzlELENBQUMsQ0FBQyxDQUNGLENBQUM7YUFDRjtZQUNELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUUsQ0FBQztRQUMxQixDQUFDLENBQUM7UUFFRixNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFO1lBQzVCLGFBQWEsRUFBRTtnQkFDZCxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBRTtvQkFDbkIsU0FBUyxDQUFDLEdBQUcsRUFBRTt3QkFDZCxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUUsRUFBRTs0QkFDL0IsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQzt5QkFDMUI7b0JBQ0YsQ0FBQyxDQUFDLENBQUM7Z0JBQ0osQ0FBQztnQkFDRCxHQUFHLEVBQUUsY0FBYzthQUNuQjtZQUNELFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDbkQsUUFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRTtTQUNqQyxDQUFDLENBQUM7UUFFSCxPQUFPLEdBQStCLENBQUM7SUFDeEMsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0RGVzdHJveVJlZixcblx0RWxlbWVudFJlZixcblx0Y29tcHV0ZWQsXG5cdGluamVjdCxcblx0cnVuSW5JbmplY3Rpb25Db250ZXh0LFxuXHRzaWduYWwsXG5cdHVudHJhY2tlZCxcblx0dHlwZSBJbmplY3Rvcixcblx0dHlwZSBTaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0TG9jYWxTdGF0ZSwgdHlwZSBOZ3RJbnN0YW5jZU5vZGUgfSBmcm9tICcuL2luc3RhbmNlJztcbmltcG9ydCB7IGFzc2VydEluamVjdGlvbkNvbnRleHQgfSBmcm9tICcuL3V0aWxzL2Fzc2VydC1pbmplY3Rpb24tY29udGV4dCc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4vdXRpbHMvaXMnO1xuXG5leHBvcnQgdHlwZSBOZ3RJbmplY3RlZFJlZjxURWxlbWVudD4gPSBFbGVtZW50UmVmPFRFbGVtZW50PiAmIHtcblx0LyogY29uc3VtZXJzIHNob3VsZCB1c2UgdGhpcyBmb3IgbGlzdGVudGluZyB0byBjaGlsZHJlbiBjaGFuZ2VzIG9uIHRoaXMgcmVmICovXG5cdGNoaWxkcmVuOiAodHlwZT86ICdvYmplY3RzJyB8ICdub25PYmplY3RzJyB8ICdib3RoJykgPT4gU2lnbmFsPE5ndEluc3RhbmNlTm9kZVtdPjtcblx0LyogY29uc3VtZXJzIHNob3VsZCB1c2UgdGhpcyB0byByZWFkIHRoZSByZWYgY3VycmVudCB2YWx1ZSB3aXRob3V0IHJlZ2lzdGVyaW5nIHRoZSBzaWduYWwgKi9cblx0dW50cmFja2VkOiBURWxlbWVudDtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndFJlZjxURWxlbWVudD4gPSBURWxlbWVudCB8IE5ndEluamVjdGVkUmVmPFRFbGVtZW50PjtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5ndFJlZjxURWxlbWVudD4oXG5cdGluaXRpYWw6IEVsZW1lbnRSZWY8VEVsZW1lbnQ+IHwgVEVsZW1lbnQgPSBudWxsISxcblx0aW5qZWN0b3I/OiBJbmplY3Rvcixcbik6IE5ndEluamVjdGVkUmVmPFRFbGVtZW50PiB7XG5cdGluamVjdG9yID0gYXNzZXJ0SW5qZWN0aW9uQ29udGV4dChpbmplY3ROZ3RSZWYpO1xuXHRjb25zdCByZWYgPSBpcy5yZWYoaW5pdGlhbCkgPyBpbml0aWFsIDogbmV3IEVsZW1lbnRSZWYoaW5pdGlhbCBhcyBURWxlbWVudCk7XG5cdGNvbnN0IHNpZ25hbFJlZiA9IHNpZ25hbChyZWYubmF0aXZlRWxlbWVudCk7XG5cdGNvbnN0IHJlYWRvbmx5U2lnbmFsID0gc2lnbmFsUmVmLmFzUmVhZG9ubHkoKTtcblx0Y29uc3QgY2FjaGVkID0gbmV3IE1hcCgpO1xuXG5cdHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+IHtcblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHZvaWQgY2FjaGVkLmNsZWFyKCkpO1xuXG5cdFx0Y29uc3QgY2hpbGRyZW4gPSAodHlwZTogJ29iamVjdHMnIHwgJ25vbk9iamVjdHMnIHwgJ2JvdGgnID0gJ29iamVjdHMnKSA9PiB7XG5cdFx0XHRpZiAoIWNhY2hlZC5oYXModHlwZSkpIHtcblx0XHRcdFx0Y2FjaGVkLnNldChcblx0XHRcdFx0XHR0eXBlLFxuXHRcdFx0XHRcdGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IGluc3RhbmNlID0gcmVhZG9ubHlTaWduYWwoKTtcblx0XHRcdFx0XHRcdGlmICghaW5zdGFuY2UpIHJldHVybiBbXTtcblx0XHRcdFx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGluc3RhbmNlKTtcblx0XHRcdFx0XHRcdGlmICghbG9jYWxTdGF0ZS5vYmplY3RzIHx8ICFsb2NhbFN0YXRlLm5vbk9iamVjdHMpIHJldHVybiBbXTtcblx0XHRcdFx0XHRcdGlmICh0eXBlID09PSAnb2JqZWN0cycpIHJldHVybiBsb2NhbFN0YXRlLm9iamVjdHMoKTtcblx0XHRcdFx0XHRcdGlmICh0eXBlID09PSAnbm9uT2JqZWN0cycpIHJldHVybiBsb2NhbFN0YXRlLm5vbk9iamVjdHMoKTtcblx0XHRcdFx0XHRcdHJldHVybiBbLi4ubG9jYWxTdGF0ZS5vYmplY3RzKCksIC4uLmxvY2FsU3RhdGUubm9uT2JqZWN0cygpXTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBjYWNoZWQuZ2V0KHR5cGUpITtcblx0XHR9O1xuXG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnRpZXMocmVmLCB7XG5cdFx0XHRuYXRpdmVFbGVtZW50OiB7XG5cdFx0XHRcdHNldDogKG5ld0VsZW1lbnQpID0+IHtcblx0XHRcdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKG5ld0VsZW1lbnQgIT09IHNpZ25hbFJlZigpKSB7XG5cdFx0XHRcdFx0XHRcdHNpZ25hbFJlZi5zZXQobmV3RWxlbWVudCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGdldDogcmVhZG9ubHlTaWduYWwsXG5cdFx0XHR9LFxuXHRcdFx0dW50cmFja2VkOiB7IGdldDogKCkgPT4gdW50cmFja2VkKHJlYWRvbmx5U2lnbmFsKSB9LFxuXHRcdFx0Y2hpbGRyZW46IHsgZ2V0OiAoKSA9PiBjaGlsZHJlbiB9LFxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHJlZiBhcyBOZ3RJbmplY3RlZFJlZjxURWxlbWVudD47XG5cdH0pO1xufVxuIl19
@@ -0,0 +1,7 @@
1
+ import { createInjectionToken } from '../utils/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZ3VlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcmVuZGVyZXIvY2F0YWxvZ3VlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSXZFLE1BQU0sU0FBUyxHQUFzQyxFQUFFLENBQUM7QUFFeEQsTUFBTSxVQUFVLE1BQU0sQ0FBQyxPQUFlO0lBQ3JDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsb0JBQW9CLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVJbmplY3Rpb25Ub2tlbiB9IGZyb20gJy4uL3V0aWxzL2NyZWF0ZS1pbmplY3Rpb24tdG9rZW4nO1xuXG5leHBvcnQgdHlwZSBOZ3RBbnlDb25zdHJ1Y3RvciA9IG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueTtcblxuY29uc3QgY2F0YWxvZ3VlOiBSZWNvcmQ8c3RyaW5nLCBOZ3RBbnlDb25zdHJ1Y3Rvcj4gPSB7fTtcblxuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZChvYmplY3RzOiBvYmplY3QpOiB2b2lkIHtcblx0T2JqZWN0LmFzc2lnbihjYXRhbG9ndWUsIG9iamVjdHMpO1xufVxuXG5leHBvcnQgY29uc3QgW2luamVjdE5ndENhdGFsb2d1ZV0gPSBjcmVhdGVJbmplY3Rpb25Ub2tlbigoKSA9PiBjYXRhbG9ndWUpO1xuIl19
@@ -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