angular-three-soba 2.1.0 → 2.2.1

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 (151) hide show
  1. package/abstractions/lib/catmull-rom-line.d.ts +139 -139
  2. package/abstractions/lib/edges.d.ts +164 -164
  3. package/abstractions/lib/grid.d.ts +39 -39
  4. package/abstractions/lib/line.d.ts +8 -7
  5. package/abstractions/lib/prism-geometry.d.ts +4 -4
  6. package/abstractions/lib/rounded-box.d.ts +3 -3
  7. package/abstractions/lib/text-3d.d.ts +46 -46
  8. package/abstractions/lib/text.d.ts +1 -2
  9. package/cameras/lib/cube-camera.d.ts +1 -1
  10. package/cameras/lib/orthographic-camera.d.ts +7 -8
  11. package/cameras/lib/perspective-camera.d.ts +2 -3
  12. package/controls/index.d.ts +9 -1
  13. package/controls/lib/camera-controls.d.ts +1 -1
  14. package/controls/lib/orbit-controls.d.ts +1 -1
  15. package/esm2022/abstractions/lib/billboard.mjs +3 -3
  16. package/esm2022/abstractions/lib/catmull-rom-line.mjs +3 -3
  17. package/esm2022/abstractions/lib/cubic-bezier-line.mjs +3 -3
  18. package/esm2022/abstractions/lib/edges.mjs +30 -34
  19. package/esm2022/abstractions/lib/gradient-texture.mjs +3 -3
  20. package/esm2022/abstractions/lib/grid.mjs +3 -3
  21. package/esm2022/abstractions/lib/helper.mjs +18 -20
  22. package/esm2022/abstractions/lib/line.mjs +25 -28
  23. package/esm2022/abstractions/lib/prism-geometry.mjs +3 -3
  24. package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +3 -3
  25. package/esm2022/abstractions/lib/rounded-box.mjs +11 -17
  26. package/esm2022/abstractions/lib/text-3d.mjs +14 -17
  27. package/esm2022/abstractions/lib/text.mjs +11 -16
  28. package/esm2022/cameras/lib/camera-content.mjs +3 -3
  29. package/esm2022/cameras/lib/cube-camera.mjs +18 -27
  30. package/esm2022/cameras/lib/orthographic-camera.mjs +20 -20
  31. package/esm2022/cameras/lib/perspective-camera.mjs +21 -21
  32. package/esm2022/controls/index.mjs +6 -2
  33. package/esm2022/controls/lib/camera-controls.mjs +3 -3
  34. package/esm2022/controls/lib/orbit-controls.mjs +3 -3
  35. package/esm2022/controls/lib/scroll-controls.mjs +124 -130
  36. package/esm2022/gizmos/angular-three-soba-gizmos.mjs +5 -0
  37. package/esm2022/gizmos/index.mjs +6 -0
  38. package/esm2022/gizmos/lib/gizmo-helper/gizmo-helper.mjs +187 -0
  39. package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewcube.mjs +304 -0
  40. package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewport.mjs +332 -0
  41. package/esm2022/gizmos/lib/pivot-controls/axis-arrow.mjs +265 -0
  42. package/esm2022/gizmos/lib/pivot-controls/axis-rotator.mjs +264 -0
  43. package/esm2022/gizmos/lib/pivot-controls/pivot-controls.mjs +337 -0
  44. package/esm2022/gizmos/lib/pivot-controls/plane-slider.mjs +266 -0
  45. package/esm2022/gizmos/lib/pivot-controls/scaling-sphere.mjs +232 -0
  46. package/esm2022/gizmos/lib/transform-controls.mjs +177 -0
  47. package/esm2022/loaders/lib/loader.mjs +3 -3
  48. package/esm2022/materials/lib/custom-shader-material.mjs +8 -12
  49. package/esm2022/materials/lib/mesh-distort-material.mjs +3 -3
  50. package/esm2022/materials/lib/mesh-reflector-material.mjs +11 -15
  51. package/esm2022/materials/lib/mesh-refraction-material.mjs +26 -30
  52. package/esm2022/materials/lib/mesh-transmission-material.mjs +3 -3
  53. package/esm2022/materials/lib/mesh-wobble-material.mjs +3 -3
  54. package/esm2022/materials/lib/point-material.mjs +3 -3
  55. package/esm2022/misc/lib/bake-shadows.mjs +8 -10
  56. package/esm2022/misc/lib/computed-attribute.mjs +15 -19
  57. package/esm2022/misc/lib/decal.mjs +56 -53
  58. package/esm2022/misc/lib/fbo.mjs +10 -10
  59. package/esm2022/misc/lib/html/html-content.mjs +62 -67
  60. package/esm2022/misc/lib/html/html.mjs +3 -3
  61. package/esm2022/misc/lib/intersect.mjs +6 -9
  62. package/esm2022/misc/lib/sampler.mjs +48 -42
  63. package/esm2022/performances/lib/adaptive-dpr.mjs +29 -35
  64. package/esm2022/performances/lib/adaptive-events.mjs +12 -16
  65. package/esm2022/performances/lib/detailed.mjs +14 -18
  66. package/esm2022/performances/lib/instances/instances.mjs +16 -22
  67. package/esm2022/performances/lib/points/points.mjs +19 -25
  68. package/esm2022/performances/lib/segments/segments.mjs +11 -14
  69. package/esm2022/shaders/lib/mesh-refraction-material.mjs +1 -1
  70. package/esm2022/staging/index.mjs +3 -2
  71. package/esm2022/staging/lib/accumulative-shadows.mjs +19 -21
  72. package/esm2022/staging/lib/backdrop.mjs +19 -23
  73. package/esm2022/staging/lib/bb-anchor.mjs +3 -3
  74. package/esm2022/staging/lib/bounds.mjs +39 -43
  75. package/esm2022/staging/lib/camera-shake.mjs +14 -18
  76. package/esm2022/staging/lib/caustics.mjs +24 -28
  77. package/esm2022/staging/lib/center.mjs +28 -32
  78. package/esm2022/staging/lib/contact-shadows.mjs +3 -3
  79. package/esm2022/staging/lib/environment/environment.mjs +338 -0
  80. package/esm2022/staging/lib/environment/inject-environment.mjs +184 -0
  81. package/esm2022/staging/lib/float.mjs +3 -3
  82. package/esm2022/staging/lib/lightformer.mjs +18 -22
  83. package/esm2022/staging/lib/mask.mjs +8 -12
  84. package/esm2022/staging/lib/matcap-texture.mjs +9 -11
  85. package/esm2022/staging/lib/normal-texture.mjs +9 -11
  86. package/esm2022/staging/lib/randomized-lights.mjs +9 -13
  87. package/esm2022/staging/lib/render-texture.mjs +19 -20
  88. package/esm2022/staging/lib/sky.mjs +3 -3
  89. package/esm2022/staging/lib/spot-light.mjs +32 -40
  90. package/esm2022/staging/lib/stage.mjs +13 -17
  91. package/esm2022/stats/lib/stats.mjs +21 -27
  92. package/fesm2022/angular-three-soba-abstractions.mjs +119 -138
  93. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  94. package/fesm2022/angular-three-soba-cameras.mjs +57 -64
  95. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  96. package/fesm2022/angular-three-soba-controls.mjs +141 -1470
  97. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  98. package/fesm2022/angular-three-soba-gizmos.mjs +2318 -0
  99. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -0
  100. package/fesm2022/angular-three-soba-loaders.mjs +3 -3
  101. package/fesm2022/angular-three-soba-materials.mjs +52 -62
  102. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  103. package/fesm2022/angular-three-soba-misc.mjs +194 -195
  104. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  105. package/fesm2022/angular-three-soba-performances.mjs +90 -114
  106. package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
  107. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  108. package/fesm2022/angular-three-soba-staging.mjs +427 -430
  109. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  110. package/fesm2022/angular-three-soba-stats.mjs +20 -26
  111. package/fesm2022/angular-three-soba-stats.mjs.map +1 -1
  112. package/gizmos/README.md +3 -0
  113. package/gizmos/index.d.ts +5 -0
  114. package/gizmos/lib/gizmo-helper/gizmo-helper.d.ts +45 -0
  115. package/gizmos/lib/gizmo-helper/gizmo-viewcube.d.ts +74 -0
  116. package/gizmos/lib/gizmo-helper/gizmo-viewport.d.ts +64 -0
  117. package/{controls → gizmos}/lib/pivot-controls/pivot-controls.d.ts +1 -1
  118. package/gizmos/lib/transform-controls.d.ts +50 -0
  119. package/materials/lib/mesh-transmission-material.d.ts +1 -1
  120. package/misc/lib/computed-attribute.d.ts +2 -2
  121. package/misc/lib/decal.d.ts +4 -4
  122. package/misc/lib/html/html-content.d.ts +6 -6
  123. package/misc/lib/html/html.d.ts +1 -1
  124. package/misc/lib/sampler.d.ts +1 -3
  125. package/package.json +14 -8
  126. package/performances/lib/instances/instances.d.ts +3 -3
  127. package/shaders/lib/mesh-refraction-material.d.ts +2 -5
  128. package/staging/index.d.ts +2 -1
  129. package/staging/lib/camera-shake.d.ts +0 -1
  130. package/staging/lib/caustics.d.ts +1 -1
  131. package/staging/lib/center.d.ts +2 -2
  132. package/staging/lib/contact-shadows.d.ts +1 -1
  133. package/staging/lib/{environment.d.ts → environment/environment.d.ts} +20 -49
  134. package/staging/lib/environment/inject-environment.d.ts +33 -0
  135. package/staging/lib/lightformer.d.ts +1 -1
  136. package/staging/lib/mask.d.ts +1 -1
  137. package/staging/lib/matcap-texture.d.ts +0 -1
  138. package/staging/lib/normal-texture.d.ts +0 -1
  139. package/staging/lib/render-texture.d.ts +1 -1
  140. package/staging/lib/sky.d.ts +1 -1
  141. package/staging/lib/stage.d.ts +3 -2
  142. package/esm2022/controls/lib/pivot-controls/axis-arrow.mjs +0 -263
  143. package/esm2022/controls/lib/pivot-controls/axis-rotator.mjs +0 -264
  144. package/esm2022/controls/lib/pivot-controls/pivot-controls.mjs +0 -340
  145. package/esm2022/controls/lib/pivot-controls/plane-slider.mjs +0 -266
  146. package/esm2022/controls/lib/pivot-controls/scaling-sphere.mjs +0 -232
  147. package/esm2022/staging/lib/environment.mjs +0 -481
  148. /package/{controls → gizmos}/lib/pivot-controls/axis-arrow.d.ts +0 -0
  149. /package/{controls → gizmos}/lib/pivot-controls/axis-rotator.d.ts +0 -0
  150. /package/{controls → gizmos}/lib/pivot-controls/plane-slider.d.ts +0 -0
  151. /package/{controls → gizmos}/lib/pivot-controls/scaling-sphere.d.ts +0 -0
@@ -1,31 +1,30 @@
1
- import { afterNextRender, ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, effect, inject, Injector, input, signal, untracked, viewChild, } from '@angular/core';
2
- import { checkUpdate, extend, getLocalState, omit, resolveRef } from 'angular-three';
1
+ import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input, viewChild, } from '@angular/core';
2
+ import { checkUpdate, extend, getLocalState, omit, pick, resolveRef } from 'angular-three';
3
3
  import { assertInjector } from 'ngxtension/assert-injector';
4
- import { injectAutoEffect } from 'ngxtension/auto-effect';
5
4
  import { mergeInputs } from 'ngxtension/inject-inputs';
6
5
  import { Color, Group, InstancedBufferAttribute, Object3D, Vector3 } from 'three';
7
6
  import { MeshSurfaceSampler } from 'three-stdlib';
8
7
  import * as i0 from "@angular/core";
9
8
  export function injectSurfaceSampler(mesh, options = () => ({}), { injector } = {}) {
10
9
  return assertInjector(injectSurfaceSampler, injector, () => {
11
- const buffer = signal((() => {
10
+ const initialBufferAttribute = (() => {
12
11
  const arr = Array.from({ length: options().count ?? 16 }, () => [
13
12
  1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1,
14
13
  ]).flat();
15
14
  return new InstancedBufferAttribute(Float32Array.from(arr), 16);
16
- })());
17
- effect(() => {
15
+ })();
16
+ const buffer = computed(() => {
18
17
  const currentMesh = resolveRef(mesh());
19
18
  if (!currentMesh)
20
- return;
19
+ return initialBufferAttribute;
21
20
  const localState = getLocalState(currentMesh);
22
21
  if (!localState)
23
- return;
22
+ return initialBufferAttribute;
24
23
  const nonObjects = localState.nonObjects();
25
24
  if (!nonObjects ||
26
25
  !nonObjects.length ||
27
26
  nonObjects.every((nonObject) => !nonObject.isBufferGeometry)) {
28
- return;
27
+ return initialBufferAttribute;
29
28
  }
30
29
  const sampler = new MeshSurfaceSampler(currentMesh);
31
30
  const { weight, count = 16, transform, instanceMesh } = options();
@@ -51,15 +50,20 @@ export function injectSurfaceSampler(mesh, options = () => ({}), { injector } =
51
50
  if (instance) {
52
51
  instance.setMatrixAt(i, dummy.matrix);
53
52
  }
54
- dummy.matrix.toArray(untracked(buffer).array, i * 16);
53
+ dummy.matrix.toArray(initialBufferAttribute.array, i * 16);
55
54
  }
56
55
  if (instance) {
57
56
  checkUpdate(instance.instanceMatrix);
58
57
  }
59
- checkUpdate(buffer);
60
- buffer.set(new InstancedBufferAttribute(untracked(buffer).array, untracked(buffer).itemSize).copy(untracked(buffer)));
61
- }, { allowSignalWrites: true });
62
- return buffer.asReadonly();
58
+ checkUpdate(initialBufferAttribute);
59
+ return new InstancedBufferAttribute(initialBufferAttribute.array, initialBufferAttribute.itemSize).copy(initialBufferAttribute);
60
+ });
61
+ return computed(() => {
62
+ const _buffer = buffer();
63
+ if (!_buffer)
64
+ return initialBufferAttribute;
65
+ return _buffer;
66
+ });
63
67
  });
64
68
  }
65
69
  const defaultOptions = {
@@ -71,41 +75,43 @@ export class NgtsSampler {
71
75
  this.instances = input(null);
72
76
  this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
73
77
  this.parameters = omit(this.options, ['weight', 'transform', 'count']);
74
- this.groupRef = viewChild.required('group');
75
- this.meshToSample = signal(null);
76
- this.instancedToSample = signal(null);
78
+ // NOTE: this could have been a viewChild.required, but we need to _try_ to consume
79
+ // this Signal earlier than when a viewChild.required would resolve.
80
+ this.groupRef = viewChild('group');
77
81
  extend({ Group });
78
- const autoEffect = injectAutoEffect();
79
- const injector = inject(Injector);
80
- afterNextRender(() => {
81
- autoEffect(() => {
82
- const group = this.groupRef().nativeElement;
83
- const localState = getLocalState(group);
84
- if (!localState)
85
- return;
86
- const [mesh, instances] = [resolveRef(this.mesh()), resolveRef(this.instances())];
87
- this.meshToSample.set(mesh ?? localState.objects().find((c) => c.type === 'Mesh'));
88
- this.instancedToSample.set(instances ??
89
- localState
90
- .objects()
91
- .find((c) => !!Object.getOwnPropertyDescriptor(c, 'instanceMatrix')));
92
- }, { allowSignalWrites: true });
93
- injectSurfaceSampler(this.meshToSample, () => ({
94
- count: this.options().count,
95
- transform: this.options().transform,
96
- weight: this.options().weight,
97
- instanceMesh: this.instancedToSample(),
98
- }), { injector });
82
+ const sampleState = computed(() => {
83
+ const group = this.groupRef()?.nativeElement;
84
+ const localState = getLocalState(group);
85
+ if (!localState)
86
+ return { mesh: null, instanced: null };
87
+ const [mesh, instances] = [resolveRef(this.mesh()), resolveRef(this.instances())];
88
+ const objects = localState.objects();
89
+ return {
90
+ mesh: mesh ?? objects.find((c) => c.type === 'Mesh'),
91
+ instanced: instances ?? objects.find((c) => !!Object.getOwnPropertyDescriptor(c, 'instanceMatrix')),
92
+ };
99
93
  });
94
+ const meshToSample = pick(sampleState, 'mesh');
95
+ const instancedToSample = pick(sampleState, 'instanced');
96
+ // NOTE: because injectSurfaceSampler returns a computed, we need to consume
97
+ // this computed in a Reactive Context (an effect) to ensure the inner logic of
98
+ // injectSurfaceSampler is run properly.
99
+ const sampler = injectSurfaceSampler(meshToSample, () => ({
100
+ count: this.options().count,
101
+ transform: this.options().transform,
102
+ weight: this.options().weight,
103
+ instanceMesh: instancedToSample(),
104
+ }));
105
+ effect(sampler);
100
106
  }
101
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsSampler, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
102
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsSampler, isStandalone: true, selector: "ngts-sampler", inputs: { mesh: { classPropertyName: "mesh", publicName: "mesh", isSignal: true, isRequired: false, transformFunction: null }, instances: { classPropertyName: "instances", publicName: "instances", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }], ngImport: i0, template: `
107
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsSampler, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
108
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsSampler, isStandalone: true, selector: "ngts-sampler", inputs: { mesh: { classPropertyName: "mesh", publicName: "mesh", isSignal: true, isRequired: false, transformFunction: null }, instances: { classPropertyName: "instances", publicName: "instances", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }], ngImport: i0, template: `
103
109
  <ngt-group #group [parameters]="parameters()">
104
110
  <ng-content />
105
111
  </ngt-group>
106
112
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
107
113
  }
108
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsSampler, decorators: [{
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsSampler, decorators: [{
109
115
  type: Component,
110
116
  args: [{
111
117
  selector: 'ngts-sampler',
@@ -119,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
119
125
  changeDetection: ChangeDetectionStrategy.OnPush,
120
126
  }]
121
127
  }], ctorParameters: () => [] });
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FtcGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9taXNjL3NyYy9saWIvc2FtcGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLE1BQU0sRUFFTixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQVksSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBa0IsS0FBSyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBdUIsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN2SCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBa0NsRCxNQUFNLFVBQVUsb0JBQW9CLENBQ25DLElBQXNELEVBQ3RELFVBS0ksR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDZCxFQUFFLFFBQVEsS0FBOEIsRUFBRTtJQUUxQyxPQUFPLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQzFELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FDcEIsQ0FBQyxHQUFHLEVBQUU7WUFDTCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLEtB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SyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLO2dCQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVM7Z0JBQ25DLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTTtnQkFDN0IsWUFBWSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTthQUN0QyxDQUFDLEVBQ0YsRUFBRSxRQUFRLEVBQUUsQ0FDWixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQS9DVyxXQUFXO2tHQUFYLFdBQVcsOGpCQVJiOzs7O0VBSVQ7OzJGQUlXLFdBQVc7a0JBWHZCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7RUFJVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQy9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0YWZ0ZXJOZXh0UmVuZGVyLFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRlZmZlY3QsXG5cdEVsZW1lbnRSZWYsXG5cdGluamVjdCxcblx0SW5qZWN0b3IsXG5cdGlucHV0LFxuXHRzaWduYWwsXG5cdHVudHJhY2tlZCxcblx0dmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNoZWNrVXBkYXRlLCBleHRlbmQsIGdldExvY2FsU3RhdGUsIE5ndEdyb3VwLCBvbWl0LCByZXNvbHZlUmVmIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBhc3NlcnRJbmplY3RvciB9IGZyb20gJ25neHRlbnNpb24vYXNzZXJ0LWluamVjdG9yJztcbmltcG9ydCB7IGluamVjdEF1dG9FZmZlY3QgfSBmcm9tICduZ3h0ZW5zaW9uL2F1dG8tZWZmZWN0JztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IEJ1ZmZlckdlb21ldHJ5LCBDb2xvciwgR3JvdXAsIEluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZSwgSW5zdGFuY2VkTWVzaCwgTWVzaCwgT2JqZWN0M0QsIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBNZXNoU3VyZmFjZVNhbXBsZXIgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG5pbnRlcmZhY2UgU2FtcGxlUGF5bG9hZCB7XG5cdC8qKlxuXHQgKiBUaGUgcG9zaXRpb24gb2YgdGhlIHNhbXBsZS5cblx0ICovXG5cdHBvc2l0aW9uOiBWZWN0b3IzO1xuXHQvKipcblx0ICogVGhlIG5vcm1hbCBvZiB0aGUgbWVzaCBhdCB0aGUgc2FtcGxlZCBwb3NpdGlvbi5cblx0ICovXG5cdG5vcm1hbDogVmVjdG9yMztcblx0LyoqXG5cdCAqIFRoZSB2ZXJ0ZXggY29sb3Igb2YgdGhlIG1lc2ggYXQgdGhlIHNhbXBsZWQgcG9zaXRpb24uXG5cdCAqL1xuXHRjb2xvcjogQ29sb3I7XG59XG5cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybUZuID0gKHBheWxvYWQ6IFRyYW5zZm9ybVBheWxvYWQsIGk6IG51bWJlcikgPT4gdm9pZDtcblxuaW50ZXJmYWNlIFRyYW5zZm9ybVBheWxvYWQgZXh0ZW5kcyBTYW1wbGVQYXlsb2FkIHtcblx0LyoqXG5cdCAqIFRoZSBkdW1teSBvYmplY3QgdXNlZCB0byB0cmFuc2Zvcm0gZWFjaCBpbnN0YW5jZS5cblx0ICogVGhpcyBvYmplY3QncyBtYXRyaXggd2lsbCBiZSB1cGRhdGVkIGFmdGVyIHRyYW5zZm9ybWluZyAmIGl0IHdpbGwgYmUgdXNlZFxuXHQgKiB0byBzZXQgdGhlIGluc3RhbmNlJ3MgbWF0cml4LlxuXHQgKi9cblx0ZHVtbXk6IE9iamVjdDNEO1xuXHQvKipcblx0ICogVGhlIG1lc2ggdGhhdCdzIGluaXRpYWxseSBwYXNzZWQgdG8gdGhlIHNhbXBsZXIuXG5cdCAqIFVzZSB0aGlzIGlmIHlvdSBuZWVkIHRvIGFwcGx5IHRyYW5zZm9ybXMgZnJvbSB5b3VyIG1lc2ggdG8geW91ciBpbnN0YW5jZXNcblx0ICogb3IgaWYgeW91IG5lZWQgdG8gZ3JhYiBhdHRyaWJ1dGVzIGZyb20gdGhlIGdlb21ldHJ5LlxuXHQgKi9cblx0c2FtcGxlZE1lc2g6IE1lc2g7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RTdXJmYWNlU2FtcGxlcihcblx0bWVzaDogKCkgPT4gRWxlbWVudFJlZjxNZXNoPiB8IE1lc2ggfCBudWxsIHwgdW5kZWZpbmVkLFxuXHRvcHRpb25zOiAoKSA9PiB7XG5cdFx0Y291bnQ/OiBudW1iZXI7XG5cdFx0dHJhbnNmb3JtPzogVHJhbnNmb3JtRm47XG5cdFx0d2VpZ2h0Pzogc3RyaW5nO1xuXHRcdGluc3RhbmNlTWVzaD86IEVsZW1lbnRSZWY8SW5zdGFuY2VkTWVzaD4gfCBJbnN0YW5jZWRNZXNoIHwgbnVsbDtcblx0fSA9ICgpID0+ICh7fSksXG5cdHsgaW5qZWN0b3IgfTogeyBpbmplY3Rvcj86IEluamVjdG9yIH0gPSB7fSxcbikge1xuXHRyZXR1cm4gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0U3VyZmFjZVNhbXBsZXIsIGluamVjdG9yLCAoKSA9PiB7XG5cdFx0Y29uc3QgYnVmZmVyID0gc2lnbmFsKFxuXHRcdFx0KCgpID0+IHtcblx0XHRcdFx0Y29uc3QgYXJyID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogb3B0aW9ucygpLmNvdW50ID8/IDE2IH0sICgpID0+IFtcblx0XHRcdFx0XHQxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLFxuXHRcdFx0XHRdKS5mbGF0KCk7XG5cdFx0XHRcdHJldHVybiBuZXcgSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlKEZsb2F0MzJBcnJheS5mcm9tKGFyciksIDE2KTtcblx0XHRcdH0pKCksXG5cdFx0KTtcblxuXHRcdGVmZmVjdChcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0Y29uc3QgY3VycmVudE1lc2ggPSByZXNvbHZlUmVmKG1lc2goKSk7XG5cdFx0XHRcdGlmICghY3VycmVudE1lc2gpIHJldHVybjtcblxuXHRcdFx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShjdXJyZW50TWVzaCk7XG5cdFx0XHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0XHRcdGNvbnN0IG5vbk9iamVjdHMgPSBsb2NhbFN0YXRlLm5vbk9iamVjdHMoKTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdCFub25PYmplY3RzIHx8XG5cdFx0XHRcdFx0IW5vbk9iamVjdHMubGVuZ3RoIHx8XG5cdFx0XHRcdFx0bm9uT2JqZWN0cy5ldmVyeSgobm9uT2JqZWN0KSA9PiAhKG5vbk9iamVjdCBhcyBCdWZmZXJHZW9tZXRyeSkuaXNCdWZmZXJHZW9tZXRyeSlcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3Qgc2FtcGxlciA9IG5ldyBNZXNoU3VyZmFjZVNhbXBsZXIoY3VycmVudE1lc2gpO1xuXG5cdFx0XHRcdGNvbnN0IHsgd2VpZ2h0LCBjb3VudCA9IDE2LCB0cmFuc2Zvcm0sIGluc3RhbmNlTWVzaCB9ID0gb3B0aW9ucygpO1xuXG5cdFx0XHRcdGlmICh3ZWlnaHQpIHtcblx0XHRcdFx0XHRzYW1wbGVyLnNldFdlaWdodEF0dHJpYnV0ZSh3ZWlnaHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0c2FtcGxlci5idWlsZCgpO1xuXG5cdFx0XHRcdGNvbnN0IHBvc2l0aW9uID0gbmV3IFZlY3RvcjMoKTtcblx0XHRcdFx0Y29uc3Qgbm9ybWFsID0gbmV3IFZlY3RvcjMoKTtcblx0XHRcdFx0Y29uc3QgY29sb3IgPSBuZXcgQ29sb3IoKTtcblx0XHRcdFx0Y29uc3QgZHVtbXkgPSBuZXcgT2JqZWN0M0QoKTtcblx0XHRcdFx0Y29uc3QgaW5zdGFuY2UgPSByZXNvbHZlUmVmKGluc3RhbmNlTWVzaCk7XG5cblx0XHRcdFx0Y3VycmVudE1lc2gudXBkYXRlTWF0cml4V29ybGQodHJ1ZSk7XG5cblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG5cdFx0XHRcdFx0c2FtcGxlci5zYW1wbGUocG9zaXRpb24sIG5vcm1hbCwgY29sb3IpO1xuXG5cdFx0XHRcdFx0aWYgKHR5cGVvZiB0cmFuc2Zvcm0gPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRcdHRyYW5zZm9ybSh7IGR1bW15LCBzYW1wbGVkTWVzaDogY3VycmVudE1lc2gsIHBvc2l0aW9uLCBub3JtYWwsIGNvbG9yIH0sIGkpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRkdW1teS5wb3NpdGlvbi5jb3B5KHBvc2l0aW9uKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRkdW1teS51cGRhdGVNYXRyaXgoKTtcblxuXHRcdFx0XHRcdGlmIChpbnN0YW5jZSkge1xuXHRcdFx0XHRcdFx0aW5zdGFuY2Uuc2V0TWF0cml4QXQoaSwgZHVtbXkubWF0cml4KTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRkdW1teS5tYXRyaXgudG9BcnJheSh1bnRyYWNrZWQoYnVmZmVyKS5hcnJheSwgaSAqIDE2KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChpbnN0YW5jZSkge1xuXHRcdFx0XHRcdGNoZWNrVXBkYXRlKGluc3RhbmNlLmluc3RhbmNlTWF0cml4KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNoZWNrVXBkYXRlKGJ1ZmZlcik7XG5cblx0XHRcdFx0YnVmZmVyLnNldChcblx0XHRcdFx0XHRuZXcgSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlKHVudHJhY2tlZChidWZmZXIpLmFycmF5LCB1bnRyYWNrZWQoYnVmZmVyKS5pdGVtU2l6ZSkuY29weSh1bnRyYWNrZWQoYnVmZmVyKSksXG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuXHRcdCk7XG5cblx0XHRyZXR1cm4gYnVmZmVyLmFzUmVhZG9ubHkoKTtcblx0fSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c1NhbXBsZXJPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxOZ3RHcm91cD4ge1xuXHQvKipcblx0ICogVGhlIE5BTUUgb2YgdGhlIHdlaWdodCBhdHRyaWJ1dGUgdG8gdXNlIHdoZW4gc2FtcGxpbmcuXG5cdCAqXG5cdCAqIEBzZWUgaHR0cHM6Ly90aHJlZWpzLm9yZy9kb2NzLyNleGFtcGxlcy9lbi9tYXRoL01lc2hTdXJmYWNlU2FtcGxlci5zZXRXZWlnaHRBdHRyaWJ1dGVcblx0ICovXG5cdHdlaWdodD86IHN0cmluZztcblx0LyoqXG5cdCAqIFRyYW5zZm9ybWF0aW9uIHRvIGJlIGFwcGxpZWQgdG8gZWFjaCBpbnN0YW5jZS5cblx0ICogUmVjZWl2ZXMgYSBkdW1teSBvYmplY3QzRCB3aXRoIGFsbCB0aGUgc2FtcGxlZCBkYXRhICggQHNlZSBUcmFuc2Zvcm1QYXlsb2FkICkuXG5cdCAqIEl0IHNob3VsZCBtdXRhdGUgYHRyYW5zZm9ybVBheWxvYWQuZHVtbXlgLlxuXHQgKlxuXHQgKiBAc2VlICggQHRvZG8gYWRkIGxpbmsgdG8gZXhhbXBsZSApXG5cdCAqXG5cdCAqIFRoZXJlIGlzIG5vIG5lZWQgdG8gdXBkYXRlIHRoZSBkdW1teSdzIG1hdHJpeFxuXHQgKi9cblx0dHJhbnNmb3JtPzogVHJhbnNmb3JtRm47XG5cdGNvdW50OiBudW1iZXI7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzU2FtcGxlck9wdGlvbnMgPSB7XG5cdGNvdW50OiAxNixcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtc2FtcGxlcicsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1ncm91cCAjZ3JvdXAgW3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCI+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LWdyb3VwPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzU2FtcGxlciB7XG5cdG1lc2ggPSBpbnB1dDxFbGVtZW50UmVmPE1lc2g+IHwgTWVzaCB8IG51bGw+KG51bGwpO1xuXHRpbnN0YW5jZXMgPSBpbnB1dDxFbGVtZW50UmVmPEluc3RhbmNlZE1lc2g+IHwgSW5zdGFuY2VkTWVzaCB8IG51bGw+KG51bGwpO1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgWyd3ZWlnaHQnLCAndHJhbnNmb3JtJywgJ2NvdW50J10pO1xuXG5cdGdyb3VwUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8R3JvdXA+PignZ3JvdXAnKTtcblxuXHRwcml2YXRlIG1lc2hUb1NhbXBsZSA9IHNpZ25hbDxNZXNoIHwgbnVsbD4obnVsbCk7XG5cdHByaXZhdGUgaW5zdGFuY2VkVG9TYW1wbGUgPSBzaWduYWw8SW5zdGFuY2VkTWVzaCB8IG51bGw+KG51bGwpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IEdyb3VwIH0pO1xuXHRcdGNvbnN0IGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cdFx0Y29uc3QgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGF1dG9FZmZlY3QoXG5cdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRjb25zdCBncm91cCA9IHRoaXMuZ3JvdXBSZWYoKS5uYXRpdmVFbGVtZW50O1xuXHRcdFx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGdyb3VwKTtcblx0XHRcdFx0XHRpZiAoIWxvY2FsU3RhdGUpIHJldHVybjtcblxuXHRcdFx0XHRcdGNvbnN0IFttZXNoLCBpbnN0YW5jZXNdID0gW3Jlc29sdmVSZWYodGhpcy5tZXNoKCkpLCByZXNvbHZlUmVmKHRoaXMuaW5zdGFuY2VzKCkpXTtcblxuXHRcdFx0XHRcdHRoaXMubWVzaFRvU2FtcGxlLnNldChtZXNoID8/IChsb2NhbFN0YXRlLm9iamVjdHMoKS5maW5kKChjKSA9PiBjLnR5cGUgPT09ICdNZXNoJykgYXMgTWVzaCkpO1xuXHRcdFx0XHRcdHRoaXMuaW5zdGFuY2VkVG9TYW1wbGUuc2V0KFxuXHRcdFx0XHRcdFx0aW5zdGFuY2VzID8/XG5cdFx0XHRcdFx0XHRcdChsb2NhbFN0YXRlXG5cdFx0XHRcdFx0XHRcdFx0Lm9iamVjdHMoKVxuXHRcdFx0XHRcdFx0XHRcdC5maW5kKChjKSA9PiAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYywgJ2luc3RhbmNlTWF0cml4JykpIGFzIEluc3RhbmNlZE1lc2gpLFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcblx0XHRcdCk7XG5cblx0XHRcdGluamVjdFN1cmZhY2VTYW1wbGVyKFxuXHRcdFx0XHR0aGlzLm1lc2hUb1NhbXBsZSxcblx0XHRcdFx0KCkgPT4gKHtcblx0XHRcdFx0XHRjb3VudDogdGhpcy5vcHRpb25zKCkuY291bnQsXG5cdFx0XHRcdFx0dHJhbnNmb3JtOiB0aGlzLm9wdGlvbnMoKS50cmFuc2Zvcm0sXG5cdFx0XHRcdFx0d2VpZ2h0OiB0aGlzLm9wdGlvbnMoKS53ZWlnaHQsXG5cdFx0XHRcdFx0aW5zdGFuY2VNZXNoOiB0aGlzLmluc3RhbmNlZFRvU2FtcGxlKCksXG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR7IGluamVjdG9yIH0sXG5cdFx0XHQpO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FtcGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9taXNjL3NyYy9saWIvc2FtcGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLE1BQU0sRUFHTixLQUFLLEVBQ0wsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBWSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBa0IsS0FBSyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBdUIsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN2SCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBa0NsRCxNQUFNLFVBQVUsb0JBQW9CLENBQ25DLElBQXNELEVBQ3RELFVBS0ksR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDZCxFQUFFLFFBQVEsS0FBOEIsRUFBRTtJQUUxQyxPQUFPLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQzFELE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDcEMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUM7Z0JBQy9ELENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFB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UyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTO1lBQ25DLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTTtZQUM3QixZQUFZLEVBQUUsaUJBQWlCLEVBQUU7U0FDakMsQ0FBQyxDQUFDLENBQUM7UUFDSixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakIsQ0FBQzs4R0F6Q1csV0FBVztrR0FBWCxXQUFXLDhqQkFSYjs7OztFQUlUOzsyRkFJVyxXQUFXO2tCQVh2QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0VBSVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRlZmZlY3QsXG5cdEVsZW1lbnRSZWYsXG5cdEluamVjdG9yLFxuXHRpbnB1dCxcblx0dmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNoZWNrVXBkYXRlLCBleHRlbmQsIGdldExvY2FsU3RhdGUsIE5ndEdyb3VwLCBvbWl0LCBwaWNrLCByZXNvbHZlUmVmIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBhc3NlcnRJbmplY3RvciB9IGZyb20gJ25neHRlbnNpb24vYXNzZXJ0LWluamVjdG9yJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IEJ1ZmZlckdlb21ldHJ5LCBDb2xvciwgR3JvdXAsIEluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZSwgSW5zdGFuY2VkTWVzaCwgTWVzaCwgT2JqZWN0M0QsIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBNZXNoU3VyZmFjZVNhbXBsZXIgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG5pbnRlcmZhY2UgU2FtcGxlUGF5bG9hZCB7XG5cdC8qKlxuXHQgKiBUaGUgcG9zaXRpb24gb2YgdGhlIHNhbXBsZS5cblx0ICovXG5cdHBvc2l0aW9uOiBWZWN0b3IzO1xuXHQvKipcblx0ICogVGhlIG5vcm1hbCBvZiB0aGUgbWVzaCBhdCB0aGUgc2FtcGxlZCBwb3NpdGlvbi5cblx0ICovXG5cdG5vcm1hbDogVmVjdG9yMztcblx0LyoqXG5cdCAqIFRoZSB2ZXJ0ZXggY29sb3Igb2YgdGhlIG1lc2ggYXQgdGhlIHNhbXBsZWQgcG9zaXRpb24uXG5cdCAqL1xuXHRjb2xvcjogQ29sb3I7XG59XG5cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybUZuID0gKHBheWxvYWQ6IFRyYW5zZm9ybVBheWxvYWQsIGk6IG51bWJlcikgPT4gdm9pZDtcblxuaW50ZXJmYWNlIFRyYW5zZm9ybVBheWxvYWQgZXh0ZW5kcyBTYW1wbGVQYXlsb2FkIHtcblx0LyoqXG5cdCAqIFRoZSBkdW1teSBvYmplY3QgdXNlZCB0byB0cmFuc2Zvcm0gZWFjaCBpbnN0YW5jZS5cblx0ICogVGhpcyBvYmplY3QncyBtYXRyaXggd2lsbCBiZSB1cGRhdGVkIGFmdGVyIHRyYW5zZm9ybWluZyAmIGl0IHdpbGwgYmUgdXNlZFxuXHQgKiB0byBzZXQgdGhlIGluc3RhbmNlJ3MgbWF0cml4LlxuXHQgKi9cblx0ZHVtbXk6IE9iamVjdDNEO1xuXHQvKipcblx0ICogVGhlIG1lc2ggdGhhdCdzIGluaXRpYWxseSBwYXNzZWQgdG8gdGhlIHNhbXBsZXIuXG5cdCAqIFVzZSB0aGlzIGlmIHlvdSBuZWVkIHRvIGFwcGx5IHRyYW5zZm9ybXMgZnJvbSB5b3VyIG1lc2ggdG8geW91ciBpbnN0YW5jZXNcblx0ICogb3IgaWYgeW91IG5lZWQgdG8gZ3JhYiBhdHRyaWJ1dGVzIGZyb20gdGhlIGdlb21ldHJ5LlxuXHQgKi9cblx0c2FtcGxlZE1lc2g6IE1lc2g7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RTdXJmYWNlU2FtcGxlcihcblx0bWVzaDogKCkgPT4gRWxlbWVudFJlZjxNZXNoPiB8IE1lc2ggfCBudWxsIHwgdW5kZWZpbmVkLFxuXHRvcHRpb25zOiAoKSA9PiB7XG5cdFx0Y291bnQ/OiBudW1iZXI7XG5cdFx0dHJhbnNmb3JtPzogVHJhbnNmb3JtRm47XG5cdFx0d2VpZ2h0Pzogc3RyaW5nO1xuXHRcdGluc3RhbmNlTWVzaD86IEVsZW1lbnRSZWY8SW5zdGFuY2VkTWVzaD4gfCBJbnN0YW5jZWRNZXNoIHwgbnVsbDtcblx0fSA9ICgpID0+ICh7fSksXG5cdHsgaW5qZWN0b3IgfTogeyBpbmplY3Rvcj86IEluamVjdG9yIH0gPSB7fSxcbikge1xuXHRyZXR1cm4gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0U3VyZmFjZVNhbXBsZXIsIGluamVjdG9yLCAoKSA9PiB7XG5cdFx0Y29uc3QgaW5pdGlhbEJ1ZmZlckF0dHJpYnV0ZSA9ICgoKSA9PiB7XG5cdFx0XHRjb25zdCBhcnIgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBvcHRpb25zKCkuY291bnQgPz8gMTYgfSwgKCkgPT4gW1xuXHRcdFx0XHQxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLFxuXHRcdFx0XSkuZmxhdCgpO1xuXHRcdFx0cmV0dXJuIG5ldyBJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGUoRmxvYXQzMkFycmF5LmZyb20oYXJyKSwgMTYpO1xuXHRcdH0pKCk7XG5cblx0XHRjb25zdCBidWZmZXIgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRjb25zdCBjdXJyZW50TWVzaCA9IHJlc29sdmVSZWYobWVzaCgpKTtcblx0XHRcdGlmICghY3VycmVudE1lc2gpIHJldHVybiBpbml0aWFsQnVmZmVyQXR0cmlidXRlO1xuXG5cdFx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShjdXJyZW50TWVzaCk7XG5cdFx0XHRpZiAoIWxvY2FsU3RhdGUpIHJldHVybiBpbml0aWFsQnVmZmVyQXR0cmlidXRlO1xuXG5cdFx0XHRjb25zdCBub25PYmplY3RzID0gbG9jYWxTdGF0ZS5ub25PYmplY3RzKCk7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdCFub25PYmplY3RzIHx8XG5cdFx0XHRcdCFub25PYmplY3RzLmxlbmd0aCB8fFxuXHRcdFx0XHRub25PYmplY3RzLmV2ZXJ5KChub25PYmplY3QpID0+ICEobm9uT2JqZWN0IGFzIEJ1ZmZlckdlb21ldHJ5KS5pc0J1ZmZlckdlb21ldHJ5KVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybiBpbml0aWFsQnVmZmVyQXR0cmlidXRlO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBzYW1wbGVyID0gbmV3IE1lc2hTdXJmYWNlU2FtcGxlcihjdXJyZW50TWVzaCk7XG5cdFx0XHRjb25zdCB7IHdlaWdodCwgY291bnQgPSAxNiwgdHJhbnNmb3JtLCBpbnN0YW5jZU1lc2ggfSA9IG9wdGlvbnMoKTtcblxuXHRcdFx0aWYgKHdlaWdodCkge1xuXHRcdFx0XHRzYW1wbGVyLnNldFdlaWdodEF0dHJpYnV0ZSh3ZWlnaHQpO1xuXHRcdFx0fVxuXG5cdFx0XHRzYW1wbGVyLmJ1aWxkKCk7XG5cblx0XHRcdGNvbnN0IHBvc2l0aW9uID0gbmV3IFZlY3RvcjMoKTtcblx0XHRcdGNvbnN0IG5vcm1hbCA9IG5ldyBWZWN0b3IzKCk7XG5cdFx0XHRjb25zdCBjb2xvciA9IG5ldyBDb2xvcigpO1xuXHRcdFx0Y29uc3QgZHVtbXkgPSBuZXcgT2JqZWN0M0QoKTtcblx0XHRcdGNvbnN0IGluc3RhbmNlID0gcmVzb2x2ZVJlZihpbnN0YW5jZU1lc2gpO1xuXG5cdFx0XHRjdXJyZW50TWVzaC51cGRhdGVNYXRyaXhXb3JsZCh0cnVlKTtcblxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG5cdFx0XHRcdHNhbXBsZXIuc2FtcGxlKHBvc2l0aW9uLCBub3JtYWwsIGNvbG9yKTtcblxuXHRcdFx0XHRpZiAodHlwZW9mIHRyYW5zZm9ybSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdHRyYW5zZm9ybSh7IGR1bW15LCBzYW1wbGVkTWVzaDogY3VycmVudE1lc2gsIHBvc2l0aW9uLCBub3JtYWwsIGNvbG9yIH0sIGkpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGR1bW15LnBvc2l0aW9uLmNvcHkocG9zaXRpb24pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZHVtbXkudXBkYXRlTWF0cml4KCk7XG5cblx0XHRcdFx0aWYgKGluc3RhbmNlKSB7XG5cdFx0XHRcdFx0aW5zdGFuY2Uuc2V0TWF0cml4QXQoaSwgZHVtbXkubWF0cml4KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGR1bW15Lm1hdHJpeC50b0FycmF5KGluaXRpYWxCdWZmZXJBdHRyaWJ1dGUuYXJyYXksIGkgKiAxNik7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChpbnN0YW5jZSkge1xuXHRcdFx0XHRjaGVja1VwZGF0ZShpbnN0YW5jZS5pbnN0YW5jZU1hdHJpeCk7XG5cdFx0XHR9XG5cblx0XHRcdGNoZWNrVXBkYXRlKGluaXRpYWxCdWZmZXJBdHRyaWJ1dGUpO1xuXG5cdFx0XHRyZXR1cm4gbmV3IEluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZShpbml0aWFsQnVmZmVyQXR0cmlidXRlLmFycmF5LCBpbml0aWFsQnVmZmVyQXR0cmlidXRlLml0ZW1TaXplKS5jb3B5KFxuXHRcdFx0XHRpbml0aWFsQnVmZmVyQXR0cmlidXRlLFxuXHRcdFx0KTtcblx0XHR9KTtcblxuXHRcdHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRjb25zdCBfYnVmZmVyID0gYnVmZmVyKCk7XG5cdFx0XHRpZiAoIV9idWZmZXIpIHJldHVybiBpbml0aWFsQnVmZmVyQXR0cmlidXRlO1xuXHRcdFx0cmV0dXJuIF9idWZmZXI7XG5cdFx0fSk7XG5cdH0pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNTYW1wbGVyT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8Tmd0R3JvdXA+IHtcblx0LyoqXG5cdCAqIFRoZSBOQU1FIG9mIHRoZSB3ZWlnaHQgYXR0cmlidXRlIHRvIHVzZSB3aGVuIHNhbXBsaW5nLlxuXHQgKlxuXHQgKiBAc2VlIGh0dHBzOi8vdGhyZWVqcy5vcmcvZG9jcy8jZXhhbXBsZXMvZW4vbWF0aC9NZXNoU3VyZmFjZVNhbXBsZXIuc2V0V2VpZ2h0QXR0cmlidXRlXG5cdCAqL1xuXHR3ZWlnaHQ/OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUcmFuc2Zvcm1hdGlvbiB0byBiZSBhcHBsaWVkIHRvIGVhY2ggaW5zdGFuY2UuXG5cdCAqIFJlY2VpdmVzIGEgZHVtbXkgb2JqZWN0M0Qgd2l0aCBhbGwgdGhlIHNhbXBsZWQgZGF0YSAoIEBzZWUgVHJhbnNmb3JtUGF5bG9hZCApLlxuXHQgKiBJdCBzaG91bGQgbXV0YXRlIGB0cmFuc2Zvcm1QYXlsb2FkLmR1bW15YC5cblx0ICpcblx0ICogQHNlZSAoIEB0b2RvIGFkZCBsaW5rIHRvIGV4YW1wbGUgKVxuXHQgKlxuXHQgKiBUaGVyZSBpcyBubyBuZWVkIHRvIHVwZGF0ZSB0aGUgZHVtbXkncyBtYXRyaXhcblx0ICovXG5cdHRyYW5zZm9ybT86IFRyYW5zZm9ybUZuO1xuXHRjb3VudDogbnVtYmVyO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c1NhbXBsZXJPcHRpb25zID0ge1xuXHRjb3VudDogMTYsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXNhbXBsZXInLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtZ3JvdXAgI2dyb3VwIFtwYXJhbWV0ZXJzXT1cInBhcmFtZXRlcnMoKVwiPlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1ncm91cD5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1NhbXBsZXIge1xuXHRtZXNoID0gaW5wdXQ8RWxlbWVudFJlZjxNZXNoPiB8IE1lc2ggfCBudWxsPihudWxsKTtcblx0aW5zdGFuY2VzID0gaW5wdXQ8RWxlbWVudFJlZjxJbnN0YW5jZWRNZXNoPiB8IEluc3RhbmNlZE1lc2ggfCBudWxsPihudWxsKTtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXHRwYXJhbWV0ZXJzID0gb21pdCh0aGlzLm9wdGlvbnMsIFsnd2VpZ2h0JywgJ3RyYW5zZm9ybScsICdjb3VudCddKTtcblxuXHQvLyBOT1RFOiB0aGlzIGNvdWxkIGhhdmUgYmVlbiBhIHZpZXdDaGlsZC5yZXF1aXJlZCwgYnV0IHdlIG5lZWQgdG8gX3RyeV8gdG8gY29uc3VtZVxuXHQvLyAgdGhpcyBTaWduYWwgZWFybGllciB0aGFuIHdoZW4gYSB2aWV3Q2hpbGQucmVxdWlyZWQgd291bGQgcmVzb2x2ZS5cblx0Z3JvdXBSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxHcm91cD4+KCdncm91cCcpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IEdyb3VwIH0pO1xuXG5cdFx0Y29uc3Qgc2FtcGxlU3RhdGUgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRjb25zdCBncm91cCA9IHRoaXMuZ3JvdXBSZWYoKT8ubmF0aXZlRWxlbWVudDtcblx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGdyb3VwKTtcblx0XHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuIHsgbWVzaDogbnVsbCwgaW5zdGFuY2VkOiBudWxsIH07XG5cblx0XHRcdGNvbnN0IFttZXNoLCBpbnN0YW5jZXNdID0gW3Jlc29sdmVSZWYodGhpcy5tZXNoKCkpLCByZXNvbHZlUmVmKHRoaXMuaW5zdGFuY2VzKCkpXTtcblx0XHRcdGNvbnN0IG9iamVjdHMgPSBsb2NhbFN0YXRlLm9iamVjdHMoKTtcblxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0bWVzaDogbWVzaCA/PyAob2JqZWN0cy5maW5kKChjKSA9PiBjLnR5cGUgPT09ICdNZXNoJykgYXMgTWVzaCksXG5cdFx0XHRcdGluc3RhbmNlZDpcblx0XHRcdFx0XHRpbnN0YW5jZXMgPz8gKG9iamVjdHMuZmluZCgoYykgPT4gISFPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGMsICdpbnN0YW5jZU1hdHJpeCcpKSBhcyBJbnN0YW5jZWRNZXNoKSxcblx0XHRcdH07XG5cdFx0fSk7XG5cblx0XHRjb25zdCBtZXNoVG9TYW1wbGUgPSBwaWNrKHNhbXBsZVN0YXRlLCAnbWVzaCcpO1xuXHRcdGNvbnN0IGluc3RhbmNlZFRvU2FtcGxlID0gcGljayhzYW1wbGVTdGF0ZSwgJ2luc3RhbmNlZCcpO1xuXG5cdFx0Ly8gTk9URTogYmVjYXVzZSBpbmplY3RTdXJmYWNlU2FtcGxlciByZXR1cm5zIGEgY29tcHV0ZWQsIHdlIG5lZWQgdG8gY29uc3VtZVxuXHRcdC8vICB0aGlzIGNvbXB1dGVkIGluIGEgUmVhY3RpdmUgQ29udGV4dCAoYW4gZWZmZWN0KSB0byBlbnN1cmUgdGhlIGlubmVyIGxvZ2ljIG9mXG5cdFx0Ly8gIGluamVjdFN1cmZhY2VTYW1wbGVyIGlzIHJ1biBwcm9wZXJseS5cblx0XHRjb25zdCBzYW1wbGVyID0gaW5qZWN0U3VyZmFjZVNhbXBsZXIobWVzaFRvU2FtcGxlLCAoKSA9PiAoe1xuXHRcdFx0Y291bnQ6IHRoaXMub3B0aW9ucygpLmNvdW50LFxuXHRcdFx0dHJhbnNmb3JtOiB0aGlzLm9wdGlvbnMoKS50cmFuc2Zvcm0sXG5cdFx0XHR3ZWlnaHQ6IHRoaXMub3B0aW9ucygpLndlaWdodCxcblx0XHRcdGluc3RhbmNlTWVzaDogaW5zdGFuY2VkVG9TYW1wbGUoKSxcblx0XHR9KSk7XG5cdFx0ZWZmZWN0KHNhbXBsZXIpO1xuXHR9XG59XG4iXX0=
@@ -1,6 +1,5 @@
1
- import { afterNextRender, Directive, input, untracked } from '@angular/core';
1
+ import { DestroyRef, Directive, effect, inject, input, untracked } from '@angular/core';
2
2
  import { injectStore } from 'angular-three';
3
- import { injectAutoEffect } from 'ngxtension/auto-effect';
4
3
  import * as i0 from "@angular/core";
5
4
  export class NgtsAdaptiveDpr {
6
5
  constructor() {
@@ -11,42 +10,37 @@ export class NgtsAdaptiveDpr {
11
10
  const current = store.select('performance', 'current');
12
11
  const initialDpr = store.select('viewport', 'initialDpr');
13
12
  const setDpr = store.select('setDpr');
14
- const autoEffect = injectAutoEffect();
15
- afterNextRender(() => {
16
- autoEffect(() => {
17
- const domElement = untracked(gl).domElement;
18
- return () => {
19
- const [_active, _setDpr, _initialDpr, pixelated] = [
20
- untracked(active),
21
- untracked(setDpr),
22
- untracked(initialDpr),
23
- untracked(this.pixelated),
24
- ];
25
- if (_active)
26
- _setDpr(_initialDpr);
27
- if (pixelated && domElement)
28
- domElement.style.imageRendering = 'auto';
29
- };
30
- });
31
- autoEffect(() => {
32
- const [_current, pixelated, domElement, _setDpr, _initialDpr] = [
33
- current(),
34
- untracked(this.pixelated),
35
- untracked(gl).domElement,
36
- untracked(setDpr),
37
- untracked(initialDpr),
38
- ];
39
- _setDpr(_current * _initialDpr);
40
- if (pixelated && domElement)
41
- domElement.style.imageRendering = _current === 1 ? 'auto' : 'pixelated';
42
- });
13
+ effect(() => {
14
+ const [_current, pixelated, domElement, _setDpr, _initialDpr] = [
15
+ current(),
16
+ untracked(this.pixelated),
17
+ untracked(gl).domElement,
18
+ untracked(setDpr),
19
+ untracked(initialDpr),
20
+ ];
21
+ _setDpr(_current * _initialDpr);
22
+ if (pixelated && domElement)
23
+ domElement.style.imageRendering = _current === 1 ? 'auto' : 'pixelated';
24
+ });
25
+ inject(DestroyRef).onDestroy(() => {
26
+ const [domElement, _active, _setDpr, _initialDpr, pixelated] = [
27
+ untracked(gl).domElement,
28
+ untracked(active),
29
+ untracked(setDpr),
30
+ untracked(initialDpr),
31
+ untracked(this.pixelated),
32
+ ];
33
+ if (_active)
34
+ _setDpr(_initialDpr);
35
+ if (pixelated && domElement)
36
+ domElement.style.imageRendering = 'auto';
43
37
  });
44
38
  }
45
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsAdaptiveDpr, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
46
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.0", type: NgtsAdaptiveDpr, isStandalone: true, selector: "ngts-adaptive-dpr", inputs: { pixelated: { classPropertyName: "pixelated", publicName: "pixelated", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsAdaptiveDpr, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
40
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.4", type: NgtsAdaptiveDpr, isStandalone: true, selector: "ngts-adaptive-dpr", inputs: { pixelated: { classPropertyName: "pixelated", publicName: "pixelated", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
47
41
  }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsAdaptiveDpr, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsAdaptiveDpr, decorators: [{
49
43
  type: Directive,
50
44
  args: [{ selector: 'ngts-adaptive-dpr', standalone: true }]
51
45
  }], ctorParameters: () => [] });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRpdmUtZHByLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlcy9zcmMvbGliL2FkYXB0aXZlLWRwci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBRzFELE1BQU0sT0FBTyxlQUFlO0lBRzNCO1FBRkEsY0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUd4QixNQUFNLEtBQUssR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUM1QixNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzFELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdEMsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUV0QyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ3BCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQztnQkFDNUMsT0FBTyxHQUFHLEVBQUU7b0JBQ1gsTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxHQUFHO3dCQUNsRCxTQUFTLENBQUMsTUFBTSxDQUFDO3dCQUNqQixTQUFTLENBQUMsTUFBTSxDQUFDO3dCQUNqQixTQUFTLENBQUMsVUFBVSxDQUFDO3dCQUNyQixTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztxQkFDekIsQ0FBQztvQkFFRixJQUFJLE9BQU87d0JBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUNsQyxJQUFJLFNBQVMsSUFBSSxVQUFVO3dCQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztnQkFDdkUsQ0FBQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNmLE1BQU0sQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLEdBQUc7b0JBQy9ELE9BQU8sRUFBRTtvQkFDVCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztvQkFDekIsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVU7b0JBQ3hCLFNBQVMsQ0FBQyxNQUFNLENBQUM7b0JBQ2pCLFNBQVMsQ0FBQyxVQUFVLENBQUM7aUJBQ3JCLENBQUM7Z0JBRUYsT0FBTyxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxTQUFTLElBQUksVUFBVTtvQkFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztZQUN0RyxDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0ExQ1csZUFBZTtrR0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZnRlck5leHRSZW5kZXIsIERpcmVjdGl2ZSwgaW5wdXQsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGluamVjdEF1dG9FZmZlY3QgfSBmcm9tICduZ3h0ZW5zaW9uL2F1dG8tZWZmZWN0JztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnbmd0cy1hZGFwdGl2ZS1kcHInLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmd0c0FkYXB0aXZlRHByIHtcblx0cGl4ZWxhdGVkID0gaW5wdXQoZmFsc2UpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGNvbnN0IHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0XHRjb25zdCBnbCA9IHN0b3JlLnNlbGVjdCgnZ2wnKTtcblx0XHRjb25zdCBhY3RpdmUgPSBzdG9yZS5zZWxlY3QoJ2ludGVybmFsJywgJ2FjdGl2ZScpO1xuXHRcdGNvbnN0IGN1cnJlbnQgPSBzdG9yZS5zZWxlY3QoJ3BlcmZvcm1hbmNlJywgJ2N1cnJlbnQnKTtcblx0XHRjb25zdCBpbml0aWFsRHByID0gc3RvcmUuc2VsZWN0KCd2aWV3cG9ydCcsICdpbml0aWFsRHByJyk7XG5cdFx0Y29uc3Qgc2V0RHByID0gc3RvcmUuc2VsZWN0KCdzZXREcHInKTtcblxuXHRcdGNvbnN0IGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0YXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGRvbUVsZW1lbnQgPSB1bnRyYWNrZWQoZ2wpLmRvbUVsZW1lbnQ7XG5cdFx0XHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgW19hY3RpdmUsIF9zZXREcHIsIF9pbml0aWFsRHByLCBwaXhlbGF0ZWRdID0gW1xuXHRcdFx0XHRcdFx0dW50cmFja2VkKGFjdGl2ZSksXG5cdFx0XHRcdFx0XHR1bnRyYWNrZWQoc2V0RHByKSxcblx0XHRcdFx0XHRcdHVudHJhY2tlZChpbml0aWFsRHByKSxcblx0XHRcdFx0XHRcdHVudHJhY2tlZCh0aGlzLnBpeGVsYXRlZCksXG5cdFx0XHRcdFx0XTtcblxuXHRcdFx0XHRcdGlmIChfYWN0aXZlKSBfc2V0RHByKF9pbml0aWFsRHByKTtcblx0XHRcdFx0XHRpZiAocGl4ZWxhdGVkICYmIGRvbUVsZW1lbnQpIGRvbUVsZW1lbnQuc3R5bGUuaW1hZ2VSZW5kZXJpbmcgPSAnYXV0byc7XG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblxuXHRcdFx0YXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IFtfY3VycmVudCwgcGl4ZWxhdGVkLCBkb21FbGVtZW50LCBfc2V0RHByLCBfaW5pdGlhbERwcl0gPSBbXG5cdFx0XHRcdFx0Y3VycmVudCgpLFxuXHRcdFx0XHRcdHVudHJhY2tlZCh0aGlzLnBpeGVsYXRlZCksXG5cdFx0XHRcdFx0dW50cmFja2VkKGdsKS5kb21FbGVtZW50LFxuXHRcdFx0XHRcdHVudHJhY2tlZChzZXREcHIpLFxuXHRcdFx0XHRcdHVudHJhY2tlZChpbml0aWFsRHByKSxcblx0XHRcdFx0XTtcblxuXHRcdFx0XHRfc2V0RHByKF9jdXJyZW50ICogX2luaXRpYWxEcHIpO1xuXHRcdFx0XHRpZiAocGl4ZWxhdGVkICYmIGRvbUVsZW1lbnQpIGRvbUVsZW1lbnQuc3R5bGUuaW1hZ2VSZW5kZXJpbmcgPSBfY3VycmVudCA9PT0gMSA/ICdhdXRvJyA6ICdwaXhlbGF0ZWQnO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRpdmUtZHByLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlcy9zcmMvbGliL2FkYXB0aXZlLWRwci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHNUMsTUFBTSxPQUFPLGVBQWU7SUFHM0I7UUFGQSxjQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBR3hCLE1BQU0sS0FBSyxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQzVCLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbEQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDdkQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDMUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV0QyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsR0FBRztnQkFDL0QsT0FBTyxFQUFFO2dCQUNULFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUN6QixTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVTtnQkFDeEIsU0FBUyxDQUFDLE1BQU0sQ0FBQztnQkFDakIsU0FBUyxDQUFDLFVBQVUsQ0FBQzthQUNyQixDQUFDO1lBRUYsT0FBTyxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsQ0FBQztZQUNoQyxJQUFJLFNBQVMsSUFBSSxVQUFVO2dCQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1FBQ3RHLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDakMsTUFBTSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsR0FBRztnQkFDOUQsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVU7Z0JBQ3hCLFNBQVMsQ0FBQyxNQUFNLENBQUM7Z0JBQ2pCLFNBQVMsQ0FBQyxNQUFNLENBQUM7Z0JBQ2pCLFNBQVMsQ0FBQyxVQUFVLENBQUM7Z0JBQ3JCLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2FBQ3pCLENBQUM7WUFFRixJQUFJLE9BQU87Z0JBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xDLElBQUksU0FBUyxJQUFJLFVBQVU7Z0JBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO1FBQ3ZFLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0FwQ1csZUFBZTtrR0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZ3RzLWFkYXB0aXZlLWRwcicsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBOZ3RzQWRhcHRpdmVEcHIge1xuXHRwaXhlbGF0ZWQgPSBpbnB1dChmYWxzZSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0Y29uc3Qgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRcdGNvbnN0IGdsID0gc3RvcmUuc2VsZWN0KCdnbCcpO1xuXHRcdGNvbnN0IGFjdGl2ZSA9IHN0b3JlLnNlbGVjdCgnaW50ZXJuYWwnLCAnYWN0aXZlJyk7XG5cdFx0Y29uc3QgY3VycmVudCA9IHN0b3JlLnNlbGVjdCgncGVyZm9ybWFuY2UnLCAnY3VycmVudCcpO1xuXHRcdGNvbnN0IGluaXRpYWxEcHIgPSBzdG9yZS5zZWxlY3QoJ3ZpZXdwb3J0JywgJ2luaXRpYWxEcHInKTtcblx0XHRjb25zdCBzZXREcHIgPSBzdG9yZS5zZWxlY3QoJ3NldERwcicpO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IFtfY3VycmVudCwgcGl4ZWxhdGVkLCBkb21FbGVtZW50LCBfc2V0RHByLCBfaW5pdGlhbERwcl0gPSBbXG5cdFx0XHRcdGN1cnJlbnQoKSxcblx0XHRcdFx0dW50cmFja2VkKHRoaXMucGl4ZWxhdGVkKSxcblx0XHRcdFx0dW50cmFja2VkKGdsKS5kb21FbGVtZW50LFxuXHRcdFx0XHR1bnRyYWNrZWQoc2V0RHByKSxcblx0XHRcdFx0dW50cmFja2VkKGluaXRpYWxEcHIpLFxuXHRcdFx0XTtcblxuXHRcdFx0X3NldERwcihfY3VycmVudCAqIF9pbml0aWFsRHByKTtcblx0XHRcdGlmIChwaXhlbGF0ZWQgJiYgZG9tRWxlbWVudCkgZG9tRWxlbWVudC5zdHlsZS5pbWFnZVJlbmRlcmluZyA9IF9jdXJyZW50ID09PSAxID8gJ2F1dG8nIDogJ3BpeGVsYXRlZCc7XG5cdFx0fSk7XG5cblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHtcblx0XHRcdGNvbnN0IFtkb21FbGVtZW50LCBfYWN0aXZlLCBfc2V0RHByLCBfaW5pdGlhbERwciwgcGl4ZWxhdGVkXSA9IFtcblx0XHRcdFx0dW50cmFja2VkKGdsKS5kb21FbGVtZW50LFxuXHRcdFx0XHR1bnRyYWNrZWQoYWN0aXZlKSxcblx0XHRcdFx0dW50cmFja2VkKHNldERwciksXG5cdFx0XHRcdHVudHJhY2tlZChpbml0aWFsRHByKSxcblx0XHRcdFx0dW50cmFja2VkKHRoaXMucGl4ZWxhdGVkKSxcblx0XHRcdF07XG5cblx0XHRcdGlmIChfYWN0aXZlKSBfc2V0RHByKF9pbml0aWFsRHByKTtcblx0XHRcdGlmIChwaXhlbGF0ZWQgJiYgZG9tRWxlbWVudCkgZG9tRWxlbWVudC5zdHlsZS5pbWFnZVJlbmRlcmluZyA9ICdhdXRvJztcblx0XHR9KTtcblx0fVxufVxuIl19
@@ -1,28 +1,24 @@
1
- import { afterNextRender, Directive } from '@angular/core';
1
+ import { DestroyRef, Directive, effect, inject } from '@angular/core';
2
2
  import { injectStore } from 'angular-three';
3
- import { injectAutoEffect } from 'ngxtension/auto-effect';
4
3
  import * as i0 from "@angular/core";
5
4
  export class NgtsAdaptiveEvents {
6
5
  constructor() {
7
- const autoEffect = injectAutoEffect();
8
6
  const store = injectStore();
9
7
  const current = store.select('performance', 'current');
10
- afterNextRender(() => {
11
- autoEffect(() => {
12
- const enabled = store.snapshot.events.enabled;
13
- return () => store.snapshot.setEvents({ enabled });
14
- });
15
- autoEffect(() => {
16
- const _current = current();
17
- return () => store.snapshot.setEvents({ enabled: _current === 1 });
18
- });
8
+ const currentEnabled = store.snapshot.events.enabled;
9
+ effect((onCleanup) => {
10
+ const _current = current();
11
+ onCleanup(() => store.snapshot.setEvents({ enabled: _current === 1 }));
12
+ });
13
+ inject(DestroyRef).onDestroy(() => {
14
+ store.snapshot.setEvents({ enabled: currentEnabled });
19
15
  });
20
16
  }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsAdaptiveEvents, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
22
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.0", type: NgtsAdaptiveEvents, isStandalone: true, selector: "ngts-adaptive-events", ngImport: i0 }); }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsAdaptiveEvents, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
18
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: NgtsAdaptiveEvents, isStandalone: true, selector: "ngts-adaptive-events", ngImport: i0 }); }
23
19
  }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsAdaptiveEvents, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsAdaptiveEvents, decorators: [{
25
21
  type: Directive,
26
22
  args: [{ standalone: true, selector: 'ngts-adaptive-events' }]
27
23
  }], ctorParameters: () => [] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRpdmUtZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlcy9zcmMvbGliL2FkYXB0aXZlLWV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUcxRCxNQUFNLE9BQU8sa0JBQWtCO0lBQzlCO1FBQ0MsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUN0QyxNQUFNLEtBQUssR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUM1QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUV2RCxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ3BCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO2dCQUM5QyxPQUFPLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNwRCxDQUFDLENBQUMsQ0FBQztZQUVILFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsTUFBTSxRQUFRLEdBQUcsT0FBTyxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEUsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBakJXLGtCQUFrQjtrR0FBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUQ5QixTQUFTO21CQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZnRlck5leHRSZW5kZXIsIERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGluamVjdEF1dG9FZmZlY3QgfSBmcm9tICduZ3h0ZW5zaW9uL2F1dG8tZWZmZWN0JztcblxuQERpcmVjdGl2ZSh7IHN0YW5kYWxvbmU6IHRydWUsIHNlbGVjdG9yOiAnbmd0cy1hZGFwdGl2ZS1ldmVudHMnIH0pXG5leHBvcnQgY2xhc3MgTmd0c0FkYXB0aXZlRXZlbnRzIHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0Y29uc3QgYXV0b0VmZmVjdCA9IGluamVjdEF1dG9FZmZlY3QoKTtcblx0XHRjb25zdCBzdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cdFx0Y29uc3QgY3VycmVudCA9IHN0b3JlLnNlbGVjdCgncGVyZm9ybWFuY2UnLCAnY3VycmVudCcpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBlbmFibGVkID0gc3RvcmUuc25hcHNob3QuZXZlbnRzLmVuYWJsZWQ7XG5cdFx0XHRcdHJldHVybiAoKSA9PiBzdG9yZS5zbmFwc2hvdC5zZXRFdmVudHMoeyBlbmFibGVkIH0pO1xuXHRcdFx0fSk7XG5cblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBfY3VycmVudCA9IGN1cnJlbnQoKTtcblx0XHRcdFx0cmV0dXJuICgpID0+IHN0b3JlLnNuYXBzaG90LnNldEV2ZW50cyh7IGVuYWJsZWQ6IF9jdXJyZW50ID09PSAxIH0pO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRpdmUtZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlcy9zcmMvbGliL2FkYXB0aXZlLWV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzVDLE1BQU0sT0FBTyxrQkFBa0I7SUFDOUI7UUFDQyxNQUFNLEtBQUssR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUM1QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN2RCxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFFckQsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDcEIsTUFBTSxRQUFRLEdBQUcsT0FBTyxFQUFFLENBQUM7WUFDM0IsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNqQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0FkVyxrQkFBa0I7a0dBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsU0FBUzttQkFBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgRGlyZWN0aXZlLCBlZmZlY3QsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcblxuQERpcmVjdGl2ZSh7IHN0YW5kYWxvbmU6IHRydWUsIHNlbGVjdG9yOiAnbmd0cy1hZGFwdGl2ZS1ldmVudHMnIH0pXG5leHBvcnQgY2xhc3MgTmd0c0FkYXB0aXZlRXZlbnRzIHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0Y29uc3Qgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRcdGNvbnN0IGN1cnJlbnQgPSBzdG9yZS5zZWxlY3QoJ3BlcmZvcm1hbmNlJywgJ2N1cnJlbnQnKTtcblx0XHRjb25zdCBjdXJyZW50RW5hYmxlZCA9IHN0b3JlLnNuYXBzaG90LmV2ZW50cy5lbmFibGVkO1xuXG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IF9jdXJyZW50ID0gY3VycmVudCgpO1xuXHRcdFx0b25DbGVhbnVwKCgpID0+IHN0b3JlLnNuYXBzaG90LnNldEV2ZW50cyh7IGVuYWJsZWQ6IF9jdXJyZW50ID09PSAxIH0pKTtcblx0XHR9KTtcblxuXHRcdGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4ge1xuXHRcdFx0c3RvcmUuc25hcHNob3Quc2V0RXZlbnRzKHsgZW5hYmxlZDogY3VycmVudEVuYWJsZWQgfSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
@@ -1,6 +1,5 @@
1
- import { afterNextRender, ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, input, viewChild, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, effect, input, viewChild, } from '@angular/core';
2
2
  import { extend, getLocalState, injectBeforeRender, omit, pick } from 'angular-three';
3
- import { injectAutoEffect } from 'ngxtension/auto-effect';
4
3
  import { mergeInputs } from 'ngxtension/inject-inputs';
5
4
  import { LOD } from 'three';
6
5
  import * as i0 from "@angular/core";
@@ -15,32 +14,29 @@ export class NgtsDetailed {
15
14
  this.lodRef = viewChild.required('lod');
16
15
  this.hysteresis = pick(this.options, 'hysteresis');
17
16
  extend({ LOD });
18
- const autoEffect = injectAutoEffect();
19
- afterNextRender(() => {
20
- autoEffect(() => {
21
- const lod = this.lodRef().nativeElement;
22
- const localState = getLocalState(lod);
23
- if (!localState)
24
- return;
25
- const [, distances, hysteresis] = [localState.objects(), this.distances(), this.hysteresis()];
26
- lod.levels.length = 0;
27
- lod.children.forEach((object, index) => {
28
- lod.levels.push({ object, distance: distances[index], hysteresis });
29
- });
17
+ effect(() => {
18
+ const lod = this.lodRef().nativeElement;
19
+ const localState = getLocalState(lod);
20
+ if (!localState)
21
+ return;
22
+ const [, distances, hysteresis] = [localState.objects(), this.distances(), this.hysteresis()];
23
+ lod.levels.length = 0;
24
+ lod.children.forEach((object, index) => {
25
+ lod.levels.push({ object, distance: distances[index], hysteresis });
30
26
  });
31
27
  });
32
28
  injectBeforeRender(({ camera }) => {
33
29
  this.lodRef().nativeElement.update(camera);
34
30
  });
35
31
  }
36
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsDetailed, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
37
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsDetailed, isStandalone: true, selector: "ngts-detailed", inputs: { distances: { classPropertyName: "distances", publicName: "distances", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "lodRef", first: true, predicate: ["lod"], descendants: true, isSignal: true }], ngImport: i0, template: `
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsDetailed, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
33
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsDetailed, isStandalone: true, selector: "ngts-detailed", inputs: { distances: { classPropertyName: "distances", publicName: "distances", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "lodRef", first: true, predicate: ["lod"], descendants: true, isSignal: true }], ngImport: i0, template: `
38
34
  <ngt-lOD #lod [parameters]="parameters()">
39
35
  <ng-content />
40
36
  </ngt-lOD>
41
37
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
42
38
  }
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsDetailed, decorators: [{
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsDetailed, decorators: [{
44
40
  type: Component,
45
41
  args: [{
46
42
  selector: 'ngts-detailed',
@@ -54,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
54
50
  changeDetection: ChangeDetectionStrategy.OnPush,
55
51
  }]
56
52
  }], ctorParameters: () => [] });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvcGVyZm9ybWFuY2VzL3NyYy9saWIvZGV0YWlsZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULHNCQUFzQixFQUV0QixLQUFLLEVBQ0wsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFVLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxPQUFPLENBQUM7O0FBTTVCLE1BQU0sY0FBYyxHQUF3QjtJQUMzQyxVQUFVLEVBQUUsQ0FBQztDQUNiLENBQUM7QUFhRixNQUFNLE9BQU8sWUFBWTtJQVF4QjtRQVBBLGNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFZLENBQUM7UUFDdkMsWUFBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RSxlQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBRWhELFdBQU0sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFrQixLQUFLLENBQUMsQ0FBQztRQUM1QyxlQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFHckQsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUVoQixNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXRDLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDcEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDO2dCQUN4QyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxVQUFVO29CQUFFLE9BQU87Z0JBQ3hCLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0JBQzlGLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztnQkFDdEIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7b0JBQ3RDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztnQkFDckUsQ0FBQyxDQUFDLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7WUFDakMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQTdCVyxZQUFZO2tHQUFaLFlBQVkscWNBUmQ7Ozs7RUFJVDs7MkZBSVcsWUFBWTtrQkFYeEIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsZUFBZTtvQkFDekIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7OztFQUlUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRhZnRlck5leHRSZW5kZXIsXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdEVsZW1lbnRSZWYsXG5cdGlucHV0LFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBnZXRMb2NhbFN0YXRlLCBpbmplY3RCZWZvcmVSZW5kZXIsIE5ndExPRCwgb21pdCwgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgTE9EIH0gZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNEZXRhaWxlZE9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPE5ndExPRD4ge1xuXHRoeXN0ZXJlc2lzOiBudW1iZXI7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzRGV0YWlsZWRPcHRpb25zID0ge1xuXHRoeXN0ZXJlc2lzOiAwLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1kZXRhaWxlZCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1sT0QgI2xvZCBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtbE9EPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzRGV0YWlsZWQge1xuXHRkaXN0YW5jZXMgPSBpbnB1dC5yZXF1aXJlZDxudW1iZXJbXT4oKTtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXHRwYXJhbWV0ZXJzID0gb21pdCh0aGlzLm9wdGlvbnMsIFsnaHlzdGVyZXNpcyddKTtcblxuXHRsb2RSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxMT0Q+PignbG9kJyk7XG5cdHByaXZhdGUgaHlzdGVyZXNpcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnaHlzdGVyZXNpcycpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IExPRCB9KTtcblxuXHRcdGNvbnN0IGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0YXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGxvZCA9IHRoaXMubG9kUmVmKCkubmF0aXZlRWxlbWVudDtcblx0XHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUobG9kKTtcblx0XHRcdFx0aWYgKCFsb2NhbFN0YXRlKSByZXR1cm47XG5cdFx0XHRcdGNvbnN0IFssIGRpc3RhbmNlcywgaHlzdGVyZXNpc10gPSBbbG9jYWxTdGF0ZS5vYmplY3RzKCksIHRoaXMuZGlzdGFuY2VzKCksIHRoaXMuaHlzdGVyZXNpcygpXTtcblx0XHRcdFx0bG9kLmxldmVscy5sZW5ndGggPSAwO1xuXHRcdFx0XHRsb2QuY2hpbGRyZW4uZm9yRWFjaCgob2JqZWN0LCBpbmRleCkgPT4ge1xuXHRcdFx0XHRcdGxvZC5sZXZlbHMucHVzaCh7IG9iamVjdCwgZGlzdGFuY2U6IGRpc3RhbmNlc1tpbmRleF0sIGh5c3RlcmVzaXMgfSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKHsgY2FtZXJhIH0pID0+IHtcblx0XHRcdHRoaXMubG9kUmVmKCkubmF0aXZlRWxlbWVudC51cGRhdGUoY2FtZXJhKTtcblx0XHR9KTtcblx0fVxufVxuIl19
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvcGVyZm9ybWFuY2VzL3NyYy9saWIvZGV0YWlsZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLE1BQU0sRUFFTixLQUFLLEVBQ0wsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFVLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxPQUFPLENBQUM7O0FBTTVCLE1BQU0sY0FBYyxHQUF3QjtJQUMzQyxVQUFVLEVBQUUsQ0FBQztDQUNiLENBQUM7QUFhRixNQUFNLE9BQU8sWUFBWTtJQVF4QjtRQVBBLGNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFZLENBQUM7UUFDdkMsWUFBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RSxlQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBRWhELFdBQU0sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFrQixLQUFLLENBQUMsQ0FBQztRQUM1QyxlQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFHckQsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUVoQixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQztZQUN4QyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLFVBQVU7Z0JBQUUsT0FBTztZQUN4QixNQUFNLENBQUMsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQzlGLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUN0QixHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDdEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtZQUNqQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBekJXLFlBQVk7a0dBQVosWUFBWSxxY0FSZDs7OztFQUlUOzsyRkFJVyxZQUFZO2tCQVh4QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxlQUFlO29CQUN6QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0VBSVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdGVmZmVjdCxcblx0RWxlbWVudFJlZixcblx0aW5wdXQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGdldExvY2FsU3RhdGUsIGluamVjdEJlZm9yZVJlbmRlciwgTmd0TE9ELCBvbWl0LCBwaWNrIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBMT0QgfSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c0RldGFpbGVkT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8Tmd0TE9EPiB7XG5cdGh5c3RlcmVzaXM6IG51bWJlcjtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNEZXRhaWxlZE9wdGlvbnMgPSB7XG5cdGh5c3RlcmVzaXM6IDAsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLWRldGFpbGVkJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LWxPRCAjbG9kIFtwYXJhbWV0ZXJzXT1cInBhcmFtZXRlcnMoKVwiPlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1sT0Q+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNEZXRhaWxlZCB7XG5cdGRpc3RhbmNlcyA9IGlucHV0LnJlcXVpcmVkPG51bWJlcltdPigpO1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgWydoeXN0ZXJlc2lzJ10pO1xuXG5cdGxvZFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPExPRD4+KCdsb2QnKTtcblx0cHJpdmF0ZSBoeXN0ZXJlc2lzID0gcGljayh0aGlzLm9wdGlvbnMsICdoeXN0ZXJlc2lzJyk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgTE9EIH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IGxvZCA9IHRoaXMubG9kUmVmKCkubmF0aXZlRWxlbWVudDtcblx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGxvZCk7XG5cdFx0XHRpZiAoIWxvY2FsU3RhdGUpIHJldHVybjtcblx0XHRcdGNvbnN0IFssIGRpc3RhbmNlcywgaHlzdGVyZXNpc10gPSBbbG9jYWxTdGF0ZS5vYmplY3RzKCksIHRoaXMuZGlzdGFuY2VzKCksIHRoaXMuaHlzdGVyZXNpcygpXTtcblx0XHRcdGxvZC5sZXZlbHMubGVuZ3RoID0gMDtcblx0XHRcdGxvZC5jaGlsZHJlbi5mb3JFYWNoKChvYmplY3QsIGluZGV4KSA9PiB7XG5cdFx0XHRcdGxvZC5sZXZlbHMucHVzaCh7IG9iamVjdCwgZGlzdGFuY2U6IGRpc3RhbmNlc1tpbmRleF0sIGh5c3RlcmVzaXMgfSk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoeyBjYW1lcmEgfSkgPT4ge1xuXHRcdFx0dGhpcy5sb2RSZWYoKS5uYXRpdmVFbGVtZW50LnVwZGF0ZShjYW1lcmEpO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
@@ -1,7 +1,6 @@
1
- import { afterNextRender, ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject, input, viewChild, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, inject, input, viewChild, } from '@angular/core';
2
2
  import { checkUpdate, extend, injectBeforeRender, NgtArgs, omit, pick, resolveRef, } from 'angular-three';
3
3
  import { setUpdateRange } from 'angular-three-soba/misc';
4
- import { injectAutoEffect } from 'ngxtension/auto-effect';
5
4
  import { mergeInputs } from 'ngxtension/inject-inputs';
6
5
  import { DynamicDrawUsage, InstancedBufferAttribute, InstancedMesh, Matrix4, Quaternion, Vector3 } from 'three';
7
6
  import { PositionMesh } from './position-mesh';
@@ -18,21 +17,19 @@ export class NgtsInstance {
18
17
  this.instances = inject(NgtsInstances);
19
18
  this.positionMeshRef = viewChild.required('positionMesh');
20
19
  extend({ PositionMesh });
21
- const autoEffect = injectAutoEffect();
22
- afterNextRender(() => {
23
- autoEffect(() => {
24
- return this.instances.subscribe(this.positionMeshRef().nativeElement);
25
- });
20
+ effect((onCleanup) => {
21
+ const cleanup = this.instances.subscribe(this.positionMeshRef().nativeElement);
22
+ onCleanup(() => cleanup());
26
23
  });
27
24
  }
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsInstance, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
29
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsInstance, isStandalone: true, selector: "ngts-instance", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "positionMeshRef", first: true, predicate: ["positionMesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsInstance, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsInstance, isStandalone: true, selector: "ngts-instance", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "positionMeshRef", first: true, predicate: ["positionMesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
30
27
  <ngt-position-mesh #positionMesh [instance]="instances.instancedMeshRef()" [parameters]="options()">
31
28
  <ng-content />
32
29
  </ngt-position-mesh>
33
30
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34
31
  }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsInstance, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsInstance, decorators: [{
36
33
  type: Component,
37
34
  args: [{
38
35
  selector: 'ngts-instance',
@@ -68,14 +65,11 @@ export class NgtsInstances {
68
65
  });
69
66
  this.instances = [];
70
67
  extend({ InstancedMesh, InstancedBufferAttribute });
71
- const autoEffect = injectAutoEffect();
72
- afterNextRender(() => {
73
- autoEffect(() => {
74
- const instancedMesh = this.instancedMeshRef()?.nativeElement;
75
- if (!instancedMesh)
76
- return;
77
- checkUpdate(instancedMesh.instanceMatrix);
78
- });
68
+ effect(() => {
69
+ const instancedMesh = this.instancedMeshRef()?.nativeElement;
70
+ if (!instancedMesh)
71
+ return;
72
+ checkUpdate(instancedMesh.instanceMatrix);
79
73
  });
80
74
  let iterations = 0;
81
75
  let count = 0;
@@ -118,8 +112,8 @@ export class NgtsInstances {
118
112
  this.instances = this.instances.filter((i) => i !== ref);
119
113
  };
120
114
  }
121
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsInstances, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
122
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsInstances, isStandalone: true, selector: "ngts-instances", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "instancedMeshRef", first: true, predicate: ["instancedMesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
115
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsInstances, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
116
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsInstances, isStandalone: true, selector: "ngts-instances", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "instancedMeshRef", first: true, predicate: ["instancedMesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
123
117
  <ngt-instanced-mesh
124
118
  #instancedMesh
125
119
  [userData]="{ instances }"
@@ -145,7 +139,7 @@ export class NgtsInstances {
145
139
  </ngt-instanced-mesh>
146
140
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
147
141
  }
148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsInstances, decorators: [{
142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsInstances, decorators: [{
149
143
  type: Component,
150
144
  args: [{
151
145
  selector: 'ngts-instances',
@@ -180,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
180
174
  imports: [NgtArgs],
181
175
  }]
182
176
  }], ctorParameters: () => [] });
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlcy9zcmMvbGliL2luc3RhbmNlcy9pbnN0YW5jZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixzQkFBc0IsRUFFdEIsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNOLFdBQVcsRUFDWCxNQUFNLEVBQ04sa0JBQWtCLEVBQ2xCLE9BQU8sRUFFUCxJQUFJLEVBQ0osSUFBSSxFQUNKLFVBQVUsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx3QkFBd0IsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDaEgsT0FBTyxFQUFtQixZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFaEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUNuQyxNQUFNLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQ3JDLE1BQU0sVUFBVSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFDakMsTUFBTSxXQUFXLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO0FBQ2xDLE1BQU0sS0FBSyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7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QUcsQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQztJQUNILENBQUM7OEdBaEZXLGFBQWE7a0dBQWIsYUFBYSx1VkE3QmY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXdCVDs7MkZBS1csYUFBYTtrQkFoQ3pCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBd0JUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdEVsZW1lbnRSZWYsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuXHRjaGVja1VwZGF0ZSxcblx0ZXh0ZW5kLFxuXHRpbmplY3RCZWZvcmVSZW5kZXIsXG5cdE5ndEFyZ3MsXG5cdE5ndEluc3RhbmNlZE1lc2gsXG5cdG9taXQsXG5cdHBpY2ssXG5cdHJlc29sdmVSZWYsXG59IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgc2V0VXBkYXRlUmFuZ2UgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvbWlzYyc7XG5pbXBvcnQgeyBpbmplY3RBdXRvRWZmZWN0IH0gZnJvbSAnbmd4dGVuc2lvbi9hdXRvLWVmZmVjdCc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBEeW5hbWljRHJhd1VzYWdlLCBJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGUsIEluc3RhbmNlZE1lc2gsIE1hdHJpeDQsIFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RQb3NpdGlvbk1lc2gsIFBvc2l0aW9uTWVzaCB9IGZyb20gJy4vcG9zaXRpb24tbWVzaCc7XG5cbmNvbnN0IHBhcmVudE1hdHJpeCA9IG5ldyBNYXRyaXg0KCk7XG5jb25zdCBpbnN0YW5jZU1hdHJpeCA9IG5ldyBNYXRyaXg0KCk7XG5jb25zdCB0ZW1wTWF0cml4ID0gbmV3IE1hdHJpeDQoKTtcbmNvbnN0IHRyYW5zbGF0aW9uID0gbmV3IFZlY3RvcjMoKTtcbmNvbnN0IHJvdGF0aW9uID0gbmV3IFF1YXRlcm5pb24oKTtcbmNvbnN0IHNjYWxlID0gbmV3IFZlY3RvcjMoKTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1pbnN0YW5jZScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wb3NpdGlvbi1tZXNoICNwb3NpdGlvbk1lc2ggW2luc3RhbmNlXT1cImluc3RhbmNlcy5pbnN0YW5jZWRNZXNoUmVmKClcIiBbcGFyYW1ldGVyc109XCJvcHRpb25zKClcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtcG9zaXRpb24tbWVzaD5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0luc3RhbmNlIHtcblx0b3B0aW9ucyA9IGlucHV0KHt9IGFzIFBhcnRpYWw8Tmd0UG9zaXRpb25NZXNoPik7XG5cblx0aW5zdGFuY2VzID0gaW5qZWN0KE5ndHNJbnN0YW5jZXMpO1xuXG5cdHBvc2l0aW9uTWVzaFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPFBvc2l0aW9uTWVzaD4+KCdwb3NpdGlvbk1lc2gnKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBQb3NpdGlvbk1lc2ggfSk7XG5cblx0XHRjb25zdCBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5pbnN0YW5jZXMuc3Vic2NyaWJlKHRoaXMucG9zaXRpb25NZXNoUmVmKCkubmF0aXZlRWxlbWVudCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNJbnN0YW5jZXNPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxOZ3RJbnN0YW5jZWRNZXNoPiB7XG5cdHJhbmdlPzogbnVtYmVyO1xuXHRsaW1pdDogbnVtYmVyO1xuXHRmcmFtZXM6IG51bWJlcjtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNJbnN0YW5jZXNPcHRpb25zID0ge1xuXHRsaW1pdDogMTAwMCxcblx0ZnJhbWVzOiBJbmZpbml0eSxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtaW5zdGFuY2VzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LWluc3RhbmNlZC1tZXNoXG5cdFx0XHQjaW5zdGFuY2VkTWVzaFxuXHRcdFx0W3VzZXJEYXRhXT1cInsgaW5zdGFuY2VzIH1cIlxuXHRcdFx0W21hdHJpeEF1dG9VcGRhdGVdPVwiZmFsc2VcIlxuXHRcdFx0W3JheWNhc3RdPVwibnVsbFwiXG5cdFx0XHRbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIlxuXHRcdD5cblx0XHRcdDxuZ3QtaW5zdGFuY2VkLWJ1ZmZlci1hdHRyaWJ1dGVcblx0XHRcdFx0YXR0YWNoPVwiaW5zdGFuY2VNYXRyaXhcIlxuXHRcdFx0XHRbdXNhZ2VdPVwiRHluYW1pY0RyYXdVc2FnZVwiXG5cdFx0XHRcdFtjb3VudF09XCJidWZmZXJzKCkubWF0cmljZXMubGVuZ3RoIC8gMTZcIlxuXHRcdFx0XHRbYXJyYXldPVwiYnVmZmVycygpLm1hdHJpY2VzXCJcblx0XHRcdFx0W2l0ZW1TaXplXT1cIjE2XCJcblx0XHRcdC8+XG5cdFx0XHQ8bmd0LWluc3RhbmNlZC1idWZmZXItYXR0cmlidXRlXG5cdFx0XHRcdGF0dGFjaD1cImluc3RhbmNlQ29sb3JcIlxuXHRcdFx0XHRbdXNhZ2VdPVwiRHluYW1pY0RyYXdVc2FnZVwiXG5cdFx0XHRcdFtjb3VudF09XCJidWZmZXJzKCkuY29sb3JzLmxlbmd0aCAvIDNcIlxuXHRcdFx0XHRbYXJyYXldPVwiYnVmZmVycygpLmNvbG9yc1wiXG5cdFx0XHRcdFtpdGVtU2l6ZV09XCIzXCJcblx0XHRcdC8+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LWluc3RhbmNlZC1tZXNoPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNJbnN0YW5jZXMge1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgRHluYW1pY0RyYXdVc2FnZSA9IER5bmFtaWNEcmF3VXNhZ2U7XG5cblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXHRwYXJhbWV0ZXJzID0gb21pdCh0aGlzLm9wdGlvbnMsIFsnbGltaXQnLCAnZnJhbWVzJywgJ3JhbmdlJ10pO1xuXG5cdGluc3RhbmNlZE1lc2hSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxJbnN0YW5jZWRNZXNoPj4oJ2luc3RhbmNlZE1lc2gnKTtcblxuXHRsaW1pdCA9IHBpY2sodGhpcy5vcHRpb25zLCAnbGltaXQnKTtcblxuXHRidWZmZXJzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGxpbWl0ID0gdGhpcy5saW1pdCgpO1xuXHRcdGNvbnN0IG1hdHJpY2VzID0gbmV3IEZsb2F0MzJBcnJheShsaW1pdCAqIDE2KTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbGltaXQ7IGkrKykge1xuXHRcdFx0dGVtcE1hdHJpeC5pZGVudGl0eSgpLnRvQXJyYXkobWF0cmljZXMsIGkgKiAxNik7XG5cdFx0fVxuXG5cdFx0Y29uc3QgY29sb3JzID0gbmV3IEZsb2F0MzJBcnJheShbLi4uQXJyYXkuZnJvbSh7IGxlbmd0aDogbGltaXQgKiAzIH0sICgpID0+IDEpXSk7XG5cdFx0cmV0dXJuIHsgbWF0cmljZXMsIGNvbG9ycyB9O1xuXHR9KTtcblxuXHRpbnN0YW5jZXM6IEFycmF5PEVsZW1lbnRSZWY8UG9zaXRpb25NZXNoPiB8IFBvc2l0aW9uTWVzaD4gPSBbXTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBJbnN0YW5jZWRNZXNoLCBJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGUgfSk7XG5cblx0XHRjb25zdCBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBpbnN0YW5jZWRNZXNoID0gdGhpcy5pbnN0YW5jZWRNZXNoUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRcdGlmICghaW5zdGFuY2VkTWVzaCkgcmV0dXJuO1xuXHRcdFx0XHRjaGVja1VwZGF0ZShpbnN0YW5jZWRNZXNoLmluc3RhbmNlTWF0cml4KTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXG5cdFx0bGV0IGl0ZXJhdGlvbnMgPSAwO1xuXHRcdGxldCBjb3VudCA9IDA7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuXHRcdFx0Y29uc3QgaW5zdGFuY2VkTWVzaCA9IHRoaXMuaW5zdGFuY2VkTWVzaFJlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdFx0aWYgKCFpbnN0YW5jZWRNZXNoKSByZXR1cm47XG5cdFx0XHRjb25zdCB7IGZyYW1lcywgbGltaXQsIHJhbmdlIH0gPSB0aGlzLm9wdGlvbnMoKTtcblx0XHRcdGNvbnN0IHsgbWF0cmljZXMsIGNvbG9ycyB9ID0gdGhpcy5idWZmZXJzKCk7XG5cdFx0XHRpZiAoZnJhbWVzID09PSBJbmZpbml0eSB8fCBpdGVyYXRpb25zIDwgZnJhbWVzKSB7XG5cdFx0XHRcdGluc3RhbmNlZE1lc2gudXBkYXRlTWF0cml4KCk7XG5cdFx0XHRcdGluc3RhbmNlZE1lc2gudXBkYXRlTWF0cml4V29ybGQoKTtcblx0XHRcdFx0cGFyZW50TWF0cml4LmNvcHkoaW5zdGFuY2VkTWVzaC5tYXRyaXhXb3JsZCkuaW52ZXJ0KCk7XG5cblx0XHRcdFx0Y291bnQgPSBNYXRoLm1pbihsaW1pdCwgcmFuZ2UgIT09IHVuZGVmaW5lZCA/IHJhbmdlIDogbGltaXQsIHRoaXMuaW5zdGFuY2VzLmxlbmd0aCk7XG5cdFx0XHRcdGluc3RhbmNlZE1lc2guY291bnQgPSBjb3VudDtcblx0XHRcdFx0c2V0VXBkYXRlUmFuZ2UoaW5zdGFuY2VkTWVzaC5pbnN0YW5jZU1hdHJpeCwgeyBvZmZzZXQ6IDAsIGNvdW50OiBjb3VudCAqIDE2IH0pO1xuXHRcdFx0XHRpZiAoaW5zdGFuY2VkTWVzaC5pbnN0YW5jZUNvbG9yKSB7XG5cdFx0XHRcdFx0c2V0VXBkYXRlUmFuZ2UoaW5zdGFuY2VkTWVzaC5pbnN0YW5jZUNvbG9yLCB7IG9mZnNldDogMCwgY291bnQ6IGNvdW50ICogMyB9KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5pbnN0YW5jZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRjb25zdCBpbnN0YW5jZSA9IHJlc29sdmVSZWYodGhpcy5pbnN0YW5jZXNbaV0pO1xuXHRcdFx0XHRcdGlmIChpbnN0YW5jZSkge1xuXHRcdFx0XHRcdFx0Ly8gTXVsdGlwbHkgdGhlIGludmVyc2Ugb2YgdGhlIEluc3RhbmNlZE1lc2ggd29ybGQgbWF0cml4IG9yIGVsc2Vcblx0XHRcdFx0XHRcdC8vIEluc3RhbmNlcyB3aWxsIGJlIGRvdWJsZS10cmFuc2Zvcm1lZCBpZiA8SW5zdGFuY2VzPiBpc24ndCBhdCBpZGVudGl0eVxuXHRcdFx0XHRcdFx0aW5zdGFuY2UubWF0cml4V29ybGQuZGVjb21wb3NlKHRyYW5zbGF0aW9uLCByb3RhdGlvbiwgc2NhbGUpO1xuXHRcdFx0XHRcdFx0aW5zdGFuY2VNYXRyaXguY29tcG9zZSh0cmFuc2xhdGlvbiwgcm90YXRpb24sIHNjYWxlKS5wcmVtdWx0aXBseShwYXJlbnRNYXRyaXgpO1xuXHRcdFx0XHRcdFx0aW5zdGFuY2VNYXRyaXgudG9BcnJheShtYXRyaWNlcywgaSAqIDE2KTtcblx0XHRcdFx0XHRcdGNoZWNrVXBkYXRlKGluc3RhbmNlZE1lc2guaW5zdGFuY2VNYXRyaXgpO1xuXHRcdFx0XHRcdFx0aW5zdGFuY2UuY29sb3IudG9BcnJheShjb2xvcnMsIGkgKiAzKTtcblx0XHRcdFx0XHRcdGNoZWNrVXBkYXRlKGluc3RhbmNlZE1lc2guaW5zdGFuY2VDb2xvcik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGl0ZXJhdGlvbnMrKztcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHN1YnNjcmliZShyZWY6IEVsZW1lbnRSZWY8UG9zaXRpb25NZXNoPiB8IFBvc2l0aW9uTWVzaCkge1xuXHRcdHRoaXMuaW5zdGFuY2VzLnB1c2gocmVmKTtcblx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0dGhpcy5pbnN0YW5jZXMgPSB0aGlzLmluc3RhbmNlcy5maWx0ZXIoKGkpID0+IGkgIT09IHJlZik7XG5cdFx0fTtcblx0fVxufVxuIl19
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlcy9zcmMvbGliL2luc3RhbmNlcy9pbnN0YW5jZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLHNCQUFzQixFQUN0QixNQUFNLEVBRU4sTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNOLFdBQVcsRUFDWCxNQUFNLEVBQ04sa0JBQWtCLEVBQ2xCLE9BQU8sRUFFUCxJQUFJLEVBQ0osSUFBSSxFQUNKLFVBQVUsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx3QkFBd0IsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDaEgsT0FBTyxFQUFtQixZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFaEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUNuQyxNQUFNLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQ3JDLE1BQU0sVUFBVSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFDakMsTUFBTSxXQUFXLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO0FBQ2xDLE1BQU0sS0FBSyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFhNUIsTUFBTSxPQUFPLFlBQVk7SUFPeEI7UUFOQSxZQUFPLEdBQUcsS0FB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QUFDLENBQUM7SUFDSCxDQUFDOzhHQTVFVyxhQUFhO2tHQUFiLGFBQWEsdVZBN0JmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF3QlQ7OzJGQUtXLGFBQWE7a0JBaEN6QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXdCVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0ZWZmZWN0LFxuXHRFbGVtZW50UmVmLFxuXHRpbmplY3QsXG5cdGlucHV0LFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0Y2hlY2tVcGRhdGUsXG5cdGV4dGVuZCxcblx0aW5qZWN0QmVmb3JlUmVuZGVyLFxuXHROZ3RBcmdzLFxuXHROZ3RJbnN0YW5jZWRNZXNoLFxuXHRvbWl0LFxuXHRwaWNrLFxuXHRyZXNvbHZlUmVmLFxufSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IHNldFVwZGF0ZVJhbmdlIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL21pc2MnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgRHluYW1pY0RyYXdVc2FnZSwgSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlLCBJbnN0YW5jZWRNZXNoLCBNYXRyaXg0LCBRdWF0ZXJuaW9uLCBWZWN0b3IzIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0UG9zaXRpb25NZXNoLCBQb3NpdGlvbk1lc2ggfSBmcm9tICcuL3Bvc2l0aW9uLW1lc2gnO1xuXG5jb25zdCBwYXJlbnRNYXRyaXggPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgaW5zdGFuY2VNYXRyaXggPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgdGVtcE1hdHJpeCA9IG5ldyBNYXRyaXg0KCk7XG5jb25zdCB0cmFuc2xhdGlvbiA9IG5ldyBWZWN0b3IzKCk7XG5jb25zdCByb3RhdGlvbiA9IG5ldyBRdWF0ZXJuaW9uKCk7XG5jb25zdCBzY2FsZSA9IG5ldyBWZWN0b3IzKCk7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtaW5zdGFuY2UnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcG9zaXRpb24tbWVzaCAjcG9zaXRpb25NZXNoIFtpbnN0YW5jZV09XCJpbnN0YW5jZXMuaW5zdGFuY2VkTWVzaFJlZigpXCIgW3BhcmFtZXRlcnNdPVwib3B0aW9ucygpXCI+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LXBvc2l0aW9uLW1lc2g+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNJbnN0YW5jZSB7XG5cdG9wdGlvbnMgPSBpbnB1dCh7fSBhcyBQYXJ0aWFsPE5ndFBvc2l0aW9uTWVzaD4pO1xuXG5cdGluc3RhbmNlcyA9IGluamVjdChOZ3RzSW5zdGFuY2VzKTtcblxuXHRwb3NpdGlvbk1lc2hSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxQb3NpdGlvbk1lc2g+PigncG9zaXRpb25NZXNoJyk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgUG9zaXRpb25NZXNoIH0pO1xuXG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IGNsZWFudXAgPSB0aGlzLmluc3RhbmNlcy5zdWJzY3JpYmUodGhpcy5wb3NpdGlvbk1lc2hSZWYoKS5uYXRpdmVFbGVtZW50KTtcblx0XHRcdG9uQ2xlYW51cCgoKSA9PiBjbGVhbnVwKCkpO1xuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c0luc3RhbmNlc09wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPE5ndEluc3RhbmNlZE1lc2g+IHtcblx0cmFuZ2U/OiBudW1iZXI7XG5cdGxpbWl0OiBudW1iZXI7XG5cdGZyYW1lczogbnVtYmVyO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c0luc3RhbmNlc09wdGlvbnMgPSB7XG5cdGxpbWl0OiAxMDAwLFxuXHRmcmFtZXM6IEluZmluaXR5LFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1pbnN0YW5jZXMnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtaW5zdGFuY2VkLW1lc2hcblx0XHRcdCNpbnN0YW5jZWRNZXNoXG5cdFx0XHRbdXNlckRhdGFdPVwieyBpbnN0YW5jZXMgfVwiXG5cdFx0XHRbbWF0cml4QXV0b1VwZGF0ZV09XCJmYWxzZVwiXG5cdFx0XHRbcmF5Y2FzdF09XCJudWxsXCJcblx0XHRcdFtwYXJhbWV0ZXJzXT1cInBhcmFtZXRlcnMoKVwiXG5cdFx0PlxuXHRcdFx0PG5ndC1pbnN0YW5jZWQtYnVmZmVyLWF0dHJpYnV0ZVxuXHRcdFx0XHRhdHRhY2g9XCJpbnN0YW5jZU1hdHJpeFwiXG5cdFx0XHRcdFt1c2FnZV09XCJEeW5hbWljRHJhd1VzYWdlXCJcblx0XHRcdFx0W2NvdW50XT1cImJ1ZmZlcnMoKS5tYXRyaWNlcy5sZW5ndGggLyAxNlwiXG5cdFx0XHRcdFthcnJheV09XCJidWZmZXJzKCkubWF0cmljZXNcIlxuXHRcdFx0XHRbaXRlbVNpemVdPVwiMTZcIlxuXHRcdFx0Lz5cblx0XHRcdDxuZ3QtaW5zdGFuY2VkLWJ1ZmZlci1hdHRyaWJ1dGVcblx0XHRcdFx0YXR0YWNoPVwiaW5zdGFuY2VDb2xvclwiXG5cdFx0XHRcdFt1c2FnZV09XCJEeW5hbWljRHJhd1VzYWdlXCJcblx0XHRcdFx0W2NvdW50XT1cImJ1ZmZlcnMoKS5jb2xvcnMubGVuZ3RoIC8gM1wiXG5cdFx0XHRcdFthcnJheV09XCJidWZmZXJzKCkuY29sb3JzXCJcblx0XHRcdFx0W2l0ZW1TaXplXT1cIjNcIlxuXHRcdFx0Lz5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtaW5zdGFuY2VkLW1lc2g+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0luc3RhbmNlcyB7XG5cdHByb3RlY3RlZCByZWFkb25seSBEeW5hbWljRHJhd1VzYWdlID0gRHluYW1pY0RyYXdVc2FnZTtcblxuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHByb3RlY3RlZCBwYXJhbWV0ZXJzID0gb21pdCh0aGlzLm9wdGlvbnMsIFsnbGltaXQnLCAnZnJhbWVzJywgJ3JhbmdlJ10pO1xuXG5cdGluc3RhbmNlZE1lc2hSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxJbnN0YW5jZWRNZXNoPj4oJ2luc3RhbmNlZE1lc2gnKTtcblxuXHRwcml2YXRlIGxpbWl0ID0gcGljayh0aGlzLm9wdGlvbnMsICdsaW1pdCcpO1xuXG5cdHByb3RlY3RlZCBidWZmZXJzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGxpbWl0ID0gdGhpcy5saW1pdCgpO1xuXHRcdGNvbnN0IG1hdHJpY2VzID0gbmV3IEZsb2F0MzJBcnJheShsaW1pdCAqIDE2KTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbGltaXQ7IGkrKykge1xuXHRcdFx0dGVtcE1hdHJpeC5pZGVudGl0eSgpLnRvQXJyYXkobWF0cmljZXMsIGkgKiAxNik7XG5cdFx0fVxuXG5cdFx0Y29uc3QgY29sb3JzID0gbmV3IEZsb2F0MzJBcnJheShbLi4uQXJyYXkuZnJvbSh7IGxlbmd0aDogbGltaXQgKiAzIH0sICgpID0+IDEpXSk7XG5cdFx0cmV0dXJuIHsgbWF0cmljZXMsIGNvbG9ycyB9O1xuXHR9KTtcblxuXHRpbnN0YW5jZXM6IEFycmF5PEVsZW1lbnRSZWY8UG9zaXRpb25NZXNoPiB8IFBvc2l0aW9uTWVzaD4gPSBbXTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBJbnN0YW5jZWRNZXNoLCBJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGUgfSk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgaW5zdGFuY2VkTWVzaCA9IHRoaXMuaW5zdGFuY2VkTWVzaFJlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdFx0aWYgKCFpbnN0YW5jZWRNZXNoKSByZXR1cm47XG5cdFx0XHRjaGVja1VwZGF0ZShpbnN0YW5jZWRNZXNoLmluc3RhbmNlTWF0cml4KTtcblx0XHR9KTtcblxuXHRcdGxldCBpdGVyYXRpb25zID0gMDtcblx0XHRsZXQgY291bnQgPSAwO1xuXG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IGluc3RhbmNlZE1lc2ggPSB0aGlzLmluc3RhbmNlZE1lc2hSZWYoKT8ubmF0aXZlRWxlbWVudDtcblx0XHRcdGlmICghaW5zdGFuY2VkTWVzaCkgcmV0dXJuO1xuXHRcdFx0Y29uc3QgeyBmcmFtZXMsIGxpbWl0LCByYW5nZSB9ID0gdGhpcy5vcHRpb25zKCk7XG5cdFx0XHRjb25zdCB7IG1hdHJpY2VzLCBjb2xvcnMgfSA9IHRoaXMuYnVmZmVycygpO1xuXHRcdFx0aWYgKGZyYW1lcyA9PT0gSW5maW5pdHkgfHwgaXRlcmF0aW9ucyA8IGZyYW1lcykge1xuXHRcdFx0XHRpbnN0YW5jZWRNZXNoLnVwZGF0ZU1hdHJpeCgpO1xuXHRcdFx0XHRpbnN0YW5jZWRNZXNoLnVwZGF0ZU1hdHJpeFdvcmxkKCk7XG5cdFx0XHRcdHBhcmVudE1hdHJpeC5jb3B5KGluc3RhbmNlZE1lc2gubWF0cml4V29ybGQpLmludmVydCgpO1xuXG5cdFx0XHRcdGNvdW50ID0gTWF0aC5taW4obGltaXQsIHJhbmdlICE9PSB1bmRlZmluZWQgPyByYW5nZSA6IGxpbWl0LCB0aGlzLmluc3RhbmNlcy5sZW5ndGgpO1xuXHRcdFx0XHRpbnN0YW5jZWRNZXNoLmNvdW50ID0gY291bnQ7XG5cdFx0XHRcdHNldFVwZGF0ZVJhbmdlKGluc3RhbmNlZE1lc2guaW5zdGFuY2VNYXRyaXgsIHsgb2Zmc2V0OiAwLCBjb3VudDogY291bnQgKiAxNiB9KTtcblx0XHRcdFx0aWYgKGluc3RhbmNlZE1lc2guaW5zdGFuY2VDb2xvcikge1xuXHRcdFx0XHRcdHNldFVwZGF0ZVJhbmdlKGluc3RhbmNlZE1lc2guaW5zdGFuY2VDb2xvciwgeyBvZmZzZXQ6IDAsIGNvdW50OiBjb3VudCAqIDMgfSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaW5zdGFuY2VzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0Y29uc3QgaW5zdGFuY2UgPSByZXNvbHZlUmVmKHRoaXMuaW5zdGFuY2VzW2ldKTtcblx0XHRcdFx0XHRpZiAoaW5zdGFuY2UpIHtcblx0XHRcdFx0XHRcdC8vIE11bHRpcGx5IHRoZSBpbnZlcnNlIG9mIHRoZSBJbnN0YW5jZWRNZXNoIHdvcmxkIG1hdHJpeCBvciBlbHNlXG5cdFx0XHRcdFx0XHQvLyBJbnN0YW5jZXMgd2lsbCBiZSBkb3VibGUtdHJhbnNmb3JtZWQgaWYgPEluc3RhbmNlcz4gaXNuJ3QgYXQgaWRlbnRpdHlcblx0XHRcdFx0XHRcdGluc3RhbmNlLm1hdHJpeFdvcmxkLmRlY29tcG9zZSh0cmFuc2xhdGlvbiwgcm90YXRpb24sIHNjYWxlKTtcblx0XHRcdFx0XHRcdGluc3RhbmNlTWF0cml4LmNvbXBvc2UodHJhbnNsYXRpb24sIHJvdGF0aW9uLCBzY2FsZSkucHJlbXVsdGlwbHkocGFyZW50TWF0cml4KTtcblx0XHRcdFx0XHRcdGluc3RhbmNlTWF0cml4LnRvQXJyYXkobWF0cmljZXMsIGkgKiAxNik7XG5cdFx0XHRcdFx0XHRjaGVja1VwZGF0ZShpbnN0YW5jZWRNZXNoLmluc3RhbmNlTWF0cml4KTtcblx0XHRcdFx0XHRcdGluc3RhbmNlLmNvbG9yLnRvQXJyYXkoY29sb3JzLCBpICogMyk7XG5cdFx0XHRcdFx0XHRjaGVja1VwZGF0ZShpbnN0YW5jZWRNZXNoLmluc3RhbmNlQ29sb3IpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpdGVyYXRpb25zKys7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRzdWJzY3JpYmUocmVmOiBFbGVtZW50UmVmPFBvc2l0aW9uTWVzaD4gfCBQb3NpdGlvbk1lc2gpIHtcblx0XHR0aGlzLmluc3RhbmNlcy5wdXNoKHJlZik7XG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdHRoaXMuaW5zdGFuY2VzID0gdGhpcy5pbnN0YW5jZXMuZmlsdGVyKChpKSA9PiBpICE9PSByZWYpO1xuXHRcdH07XG5cdH1cbn1cbiJdfQ==