angular-three-soba 2.13.0 → 3.0.0

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 (170) hide show
  1. package/abstractions/lib/catmull-rom-line.d.ts +247 -247
  2. package/abstractions/lib/edges.d.ts +276 -276
  3. package/abstractions/lib/grid.d.ts +45 -45
  4. package/abstractions/lib/line.d.ts +1 -1
  5. package/abstractions/lib/prism-geometry.d.ts +4 -4
  6. package/abstractions/lib/rounded-box.d.ts +1 -1
  7. package/abstractions/lib/text-3d.d.ts +51 -51
  8. package/abstractions/lib/text.d.ts +1 -1
  9. package/cameras/lib/cube-camera.d.ts +1 -1
  10. package/cameras/lib/orthographic-camera.d.ts +1 -1
  11. package/cameras/lib/perspective-camera.d.ts +1 -1
  12. package/controls/index.d.ts +0 -9
  13. package/fesm2022/angular-three-soba-abstractions.mjs +41 -52
  14. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  15. package/fesm2022/angular-three-soba-cameras.mjs +12 -15
  16. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  17. package/fesm2022/angular-three-soba-controls.mjs +16 -30
  18. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  19. package/fesm2022/angular-three-soba-gizmos.mjs +59 -60
  20. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
  21. package/fesm2022/angular-three-soba-loaders.mjs +3 -3
  22. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  23. package/fesm2022/angular-three-soba-materials.mjs +27 -35
  24. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  25. package/fesm2022/angular-three-soba-misc.mjs +27 -29
  26. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  27. package/fesm2022/angular-three-soba-performances.mjs +31 -34
  28. package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
  29. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  30. package/fesm2022/angular-three-soba-staging.mjs +91 -105
  31. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  32. package/fesm2022/angular-three-soba-stats.mjs +3 -3
  33. package/fesm2022/angular-three-soba-stats.mjs.map +1 -1
  34. package/gizmos/lib/gizmo-helper/gizmo-viewport.d.ts +1 -1
  35. package/gizmos/lib/pivot-controls/pivot-controls.d.ts +1 -1
  36. package/materials/lib/mesh-portal-material.d.ts +1 -1
  37. package/materials/lib/mesh-refraction-material.d.ts +1 -1
  38. package/misc/lib/computed-attribute.d.ts +3 -3
  39. package/misc/lib/decal.d.ts +1 -1
  40. package/misc/lib/html/html.d.ts +2 -2
  41. package/package.json +8 -34
  42. package/performances/lib/instances/instances.d.ts +7 -7
  43. package/performances/lib/points/points.d.ts +16 -16
  44. package/performances/lib/segments/segments.d.ts +1 -1
  45. package/staging/lib/accumulative-shadows.d.ts +1 -1
  46. package/staging/lib/caustics.d.ts +1 -1
  47. package/staging/lib/center.d.ts +2 -2
  48. package/staging/lib/contact-shadows.d.ts +1 -1
  49. package/staging/lib/lightformer.d.ts +1 -1
  50. package/staging/lib/mask.d.ts +1 -1
  51. package/staging/lib/sky.d.ts +1 -1
  52. package/staging/lib/spot-light.d.ts +1 -1
  53. package/staging/lib/stage.d.ts +5 -5
  54. package/esm2022/abstractions/angular-three-soba-abstractions.mjs +0 -5
  55. package/esm2022/abstractions/index.mjs +0 -14
  56. package/esm2022/abstractions/lib/billboard.mjs +0 -69
  57. package/esm2022/abstractions/lib/catmull-rom-line.mjs +0 -76
  58. package/esm2022/abstractions/lib/cubic-bezier-line.mjs +0 -51
  59. package/esm2022/abstractions/lib/edges.mjs +0 -66
  60. package/esm2022/abstractions/lib/gradient-texture.mjs +0 -91
  61. package/esm2022/abstractions/lib/grid.mjs +0 -103
  62. package/esm2022/abstractions/lib/helper.mjs +0 -74
  63. package/esm2022/abstractions/lib/line.mjs +0 -123
  64. package/esm2022/abstractions/lib/prism-geometry.mjs +0 -46
  65. package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +0 -73
  66. package/esm2022/abstractions/lib/rounded-box.mjs +0 -131
  67. package/esm2022/abstractions/lib/text-3d.mjs +0 -100
  68. package/esm2022/abstractions/lib/text.mjs +0 -86
  69. package/esm2022/angular-three-soba.mjs +0 -5
  70. package/esm2022/cameras/angular-three-soba-cameras.mjs +0 -5
  71. package/esm2022/cameras/index.mjs +0 -5
  72. package/esm2022/cameras/lib/camera-content.mjs +0 -14
  73. package/esm2022/cameras/lib/cube-camera.mjs +0 -102
  74. package/esm2022/cameras/lib/orthographic-camera.mjs +0 -131
  75. package/esm2022/cameras/lib/perspective-camera.mjs +0 -105
  76. package/esm2022/controls/angular-three-soba-controls.mjs +0 -5
  77. package/esm2022/controls/index.mjs +0 -9
  78. package/esm2022/controls/lib/camera-controls.mjs +0 -126
  79. package/esm2022/controls/lib/orbit-controls.mjs +0 -120
  80. package/esm2022/controls/lib/scroll-controls.mjs +0 -261
  81. package/esm2022/gizmos/angular-three-soba-gizmos.mjs +0 -5
  82. package/esm2022/gizmos/index.mjs +0 -6
  83. package/esm2022/gizmos/lib/gizmo-helper/gizmo-helper.mjs +0 -191
  84. package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewcube.mjs +0 -304
  85. package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewport.mjs +0 -348
  86. package/esm2022/gizmos/lib/pivot-controls/axis-arrow.mjs +0 -265
  87. package/esm2022/gizmos/lib/pivot-controls/axis-rotator.mjs +0 -264
  88. package/esm2022/gizmos/lib/pivot-controls/pivot-controls.mjs +0 -349
  89. package/esm2022/gizmos/lib/pivot-controls/plane-slider.mjs +0 -266
  90. package/esm2022/gizmos/lib/pivot-controls/scaling-sphere.mjs +0 -232
  91. package/esm2022/gizmos/lib/transform-controls.mjs +0 -177
  92. package/esm2022/index.mjs +0 -2
  93. package/esm2022/loaders/angular-three-soba-loaders.mjs +0 -5
  94. package/esm2022/loaders/index.mjs +0 -7
  95. package/esm2022/loaders/lib/fbx-loader.mjs +0 -13
  96. package/esm2022/loaders/lib/font-loader.mjs +0 -49
  97. package/esm2022/loaders/lib/gltf-loader.mjs +0 -51
  98. package/esm2022/loaders/lib/loader.mjs +0 -103
  99. package/esm2022/loaders/lib/progress.mjs +0 -51
  100. package/esm2022/loaders/lib/texture-loader.mjs +0 -32
  101. package/esm2022/materials/angular-three-soba-materials.mjs +0 -5
  102. package/esm2022/materials/index.mjs +0 -9
  103. package/esm2022/materials/lib/custom-shader-material.mjs +0 -67
  104. package/esm2022/materials/lib/mesh-distort-material.mjs +0 -43
  105. package/esm2022/materials/lib/mesh-portal-material.mjs +0 -294
  106. package/esm2022/materials/lib/mesh-reflector-material.mjs +0 -274
  107. package/esm2022/materials/lib/mesh-refraction-material.mjs +0 -140
  108. package/esm2022/materials/lib/mesh-transmission-material.mjs +0 -188
  109. package/esm2022/materials/lib/mesh-wobble-material.mjs +0 -43
  110. package/esm2022/materials/lib/point-material.mjs +0 -34
  111. package/esm2022/misc/angular-three-soba-misc.mjs +0 -5
  112. package/esm2022/misc/index.mjs +0 -15
  113. package/esm2022/misc/lib/animations.mjs +0 -71
  114. package/esm2022/misc/lib/bake-shadows.mjs +0 -24
  115. package/esm2022/misc/lib/computed-attribute.mjs +0 -51
  116. package/esm2022/misc/lib/constants.mjs +0 -5
  117. package/esm2022/misc/lib/decal.mjs +0 -142
  118. package/esm2022/misc/lib/deprecated.mjs +0 -15
  119. package/esm2022/misc/lib/depth-buffer.mjs +0 -35
  120. package/esm2022/misc/lib/fbo.mjs +0 -86
  121. package/esm2022/misc/lib/html/html-content.mjs +0 -322
  122. package/esm2022/misc/lib/html/html.mjs +0 -129
  123. package/esm2022/misc/lib/html/utils.mjs +0 -74
  124. package/esm2022/misc/lib/intersect.mjs +0 -49
  125. package/esm2022/misc/lib/preload.mjs +0 -58
  126. package/esm2022/misc/lib/sampler.mjs +0 -122
  127. package/esm2022/misc/lib/scale-factor.mjs +0 -29
  128. package/esm2022/performances/angular-three-soba-performances.mjs +0 -5
  129. package/esm2022/performances/index.mjs +0 -7
  130. package/esm2022/performances/lib/adaptive-dpr.mjs +0 -46
  131. package/esm2022/performances/lib/adaptive-events.mjs +0 -24
  132. package/esm2022/performances/lib/detailed.mjs +0 -53
  133. package/esm2022/performances/lib/instances/instances.mjs +0 -177
  134. package/esm2022/performances/lib/instances/position-mesh.mjs +0 -51
  135. package/esm2022/performances/lib/points/points.mjs +0 -272
  136. package/esm2022/performances/lib/points/position-point.mjs +0 -53
  137. package/esm2022/performances/lib/segments/segment-object.mjs +0 -9
  138. package/esm2022/performances/lib/segments/segments.mjs +0 -126
  139. package/esm2022/shaders/angular-three-soba-shaders.mjs +0 -5
  140. package/esm2022/shaders/index.mjs +0 -4
  141. package/esm2022/shaders/lib/grid-material.mjs +0 -81
  142. package/esm2022/shaders/lib/mesh-refraction-material.mjs +0 -163
  143. package/esm2022/shaders/lib/point-material.mjs +0 -24
  144. package/esm2022/staging/angular-three-soba-staging.mjs +0 -5
  145. package/esm2022/staging/index.mjs +0 -21
  146. package/esm2022/staging/lib/accumulative-shadows.mjs +0 -180
  147. package/esm2022/staging/lib/backdrop.mjs +0 -69
  148. package/esm2022/staging/lib/bb-anchor.mjs +0 -58
  149. package/esm2022/staging/lib/bounds.mjs +0 -282
  150. package/esm2022/staging/lib/camera-shake.mjs +0 -65
  151. package/esm2022/staging/lib/caustics.mjs +0 -184
  152. package/esm2022/staging/lib/center.mjs +0 -114
  153. package/esm2022/staging/lib/contact-shadows.mjs +0 -214
  154. package/esm2022/staging/lib/environment/environment.mjs +0 -344
  155. package/esm2022/staging/lib/environment/inject-environment.mjs +0 -184
  156. package/esm2022/staging/lib/float.mjs +0 -70
  157. package/esm2022/staging/lib/lightformer.mjs +0 -103
  158. package/esm2022/staging/lib/mask.mjs +0 -74
  159. package/esm2022/staging/lib/matcap-texture.mjs +0 -79
  160. package/esm2022/staging/lib/normal-texture.mjs +0 -79
  161. package/esm2022/staging/lib/randomized-lights.mjs +0 -100
  162. package/esm2022/staging/lib/render-texture.mjs +0 -202
  163. package/esm2022/staging/lib/sky.mjs +0 -86
  164. package/esm2022/staging/lib/spot-light.mjs +0 -445
  165. package/esm2022/staging/lib/stage.mjs +0 -232
  166. package/esm2022/stats/angular-three-soba-stats.mjs +0 -5
  167. package/esm2022/stats/index.mjs +0 -2
  168. package/esm2022/stats/lib/stats.mjs +0 -57
  169. package/esm2022/vanilla-exports/angular-three-soba-vanilla-exports.mjs +0 -5
  170. package/esm2022/vanilla-exports/index.mjs +0 -3
@@ -1,202 +0,0 @@
1
- import { NgTemplateOutlet } from '@angular/common';
2
- import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, Directive, TemplateRef, computed, contentChild, effect, input, } from '@angular/core';
3
- import { NgtArgs, NgtPortal, NgtPortalContent, extend, getLocalState, injectStore, omit, pick, prepare, } from 'angular-three';
4
- import { injectFBO } from 'angular-three-soba/misc';
5
- import { mergeInputs } from 'ngxtension/inject-inputs';
6
- import { Group, Object3D, Scene } from 'three';
7
- import * as i0 from "@angular/core";
8
- extend({ Group });
9
- export class NgtsRenderTextureContainer {
10
- constructor() {
11
- this.fbo = input.required();
12
- this.renderPriority = input.required();
13
- this.frames = input.required();
14
- this.injector = input.required();
15
- this.store = injectStore();
16
- effect((onCleanup) => {
17
- const [renderPriority, { internal }] = [this.renderPriority(), this.store.state()];
18
- let count = 0;
19
- let oldAutoClear;
20
- let oldXrEnabled;
21
- let oldRenderTarget;
22
- let oldIsPresenting;
23
- const cleanup = internal.subscribe(({ gl, scene, camera }) => {
24
- const [fbo, frames] = [this.fbo(), this.frames()];
25
- // NOTE: render the frames ^ 2
26
- // due to some race condition, we want to render double the frames here.
27
- if (frames === Infinity || count < frames * frames) {
28
- oldAutoClear = gl.autoClear;
29
- oldXrEnabled = gl.xr.enabled;
30
- oldRenderTarget = gl.getRenderTarget();
31
- oldIsPresenting = gl.xr.isPresenting;
32
- gl.autoClear = true;
33
- gl.xr.enabled = false;
34
- gl.xr.isPresenting = false;
35
- gl.setRenderTarget(fbo);
36
- gl.render(scene, camera);
37
- gl.setRenderTarget(oldRenderTarget);
38
- gl.autoClear = oldAutoClear;
39
- gl.xr.enabled = oldXrEnabled;
40
- gl.xr.isPresenting = oldIsPresenting;
41
- count++;
42
- }
43
- }, renderPriority, this.store);
44
- onCleanup(() => {
45
- cleanup();
46
- });
47
- });
48
- }
49
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtsRenderTextureContainer, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
50
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: NgtsRenderTextureContainer, isStandalone: true, selector: "[ngtsRenderTextureContainer]", inputs: { fbo: { classPropertyName: "fbo", publicName: "fbo", isSignal: true, isRequired: true, transformFunction: null }, renderPriority: { classPropertyName: "renderPriority", publicName: "renderPriority", isSignal: true, isRequired: true, transformFunction: null }, frames: { classPropertyName: "frames", publicName: "frames", isSignal: true, isRequired: true, transformFunction: null }, injector: { classPropertyName: "injector", publicName: "injector", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
51
- }
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtsRenderTextureContainer, decorators: [{
53
- type: Directive,
54
- args: [{ standalone: true, selector: '[ngtsRenderTextureContainer]' }]
55
- }], ctorParameters: () => [] });
56
- const defaultOptions = {
57
- samples: 8,
58
- renderPriority: 0,
59
- eventPriority: 0,
60
- frames: Infinity,
61
- stencilBuffer: false,
62
- depthBuffer: true,
63
- generateMipmaps: false,
64
- };
65
- export class NgtsRenderTextureContent {
66
- static ngTemplateContextGuard(_, ctx) {
67
- return true;
68
- }
69
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtsRenderTextureContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
70
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: NgtsRenderTextureContent, isStandalone: true, selector: "ng-template[renderTextureContent]", ngImport: i0 }); }
71
- }
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtsRenderTextureContent, decorators: [{
73
- type: Directive,
74
- args: [{ selector: 'ng-template[renderTextureContent]', standalone: true }]
75
- }] });
76
- let incrementId = 0;
77
- export class NgtsRenderTexture {
78
- constructor() {
79
- this.attach = input('map');
80
- this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
81
- this.parameters = omit(this.options, [
82
- 'samples',
83
- 'renderPriority',
84
- 'eventPriority',
85
- 'frames',
86
- 'stencilBuffer',
87
- 'depthBuffer',
88
- 'generateMipmaps',
89
- 'compute',
90
- 'width',
91
- 'height',
92
- ]);
93
- this.content = contentChild.required(NgtsRenderTextureContent, { read: TemplateRef });
94
- this.store = injectStore();
95
- this.size = this.store.select('size');
96
- this.viewport = this.store.select('viewport');
97
- this.fboParams = computed(() => ({
98
- width: (this.options().width || this.size().width) * this.viewport().dpr,
99
- height: (this.options().height || this.size().height) * this.viewport().dpr,
100
- settings: {
101
- samples: this.options().samples,
102
- depthBuffer: this.options().depthBuffer,
103
- stencilBuffer: this.options().stencilBuffer,
104
- generateMipmaps: this.options().generateMipmaps,
105
- },
106
- }));
107
- this.renderPriority = pick(this.options, 'renderPriority');
108
- this.frames = pick(this.options, 'frames');
109
- this.fbo = injectFBO(this.fboParams);
110
- this.virtualScene = computed(() => {
111
- const scene = prepare(new Scene());
112
- scene.name = `ngts-render-texture-virtual-scene-${incrementId++}`;
113
- return scene;
114
- });
115
- this.eventPriority = pick(this.options, 'eventPriority');
116
- this.compute = computed(() => this.options().compute || this.uvCompute);
117
- this.uvCompute = (event, root, previous) => {
118
- const fbo = this.fbo();
119
- if (!fbo)
120
- return;
121
- const state = root.snapshot;
122
- const previousState = previous?.snapshot;
123
- // Since this is only a texture it does not have an easy way to obtain the parent, which we
124
- // need to transform event coordinates to local coordinates. We use r3f internals to find the
125
- // next Object3D.
126
- let parent = getLocalState(fbo.texture)?.parent();
127
- while (parent && !(parent instanceof Object3D)) {
128
- parent = getLocalState(parent)?.parent();
129
- }
130
- if (!parent)
131
- return;
132
- // First we call the previous state-onion-layers compute, this is what makes it possible to nest portals
133
- if (previousState && !previousState.raycaster.camera) {
134
- previousState.events.compute?.(event, previous, previous.snapshot.previousRoot);
135
- }
136
- // We run a quick check against the parent, if it isn't hit there's no need to raycast at all
137
- const [intersection] = previousState?.raycaster.intersectObject(parent) || [];
138
- if (!intersection)
139
- return;
140
- // We take that hits uv coords, set up this layers raycaster, et voilà, we have raycasting on arbitrary surfaces
141
- const uv = intersection.uv;
142
- if (!uv)
143
- return;
144
- state.raycaster.setFromCamera(state.pointer.set(uv.x * 2 - 1, uv.y * 2 - 1), state.camera);
145
- };
146
- }
147
- onPointerOver() {
148
- /* noop */
149
- }
150
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtsRenderTexture, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
151
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.11", type: NgtsRenderTexture, isStandalone: true, selector: "ngts-render-texture", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "content", first: true, predicate: NgtsRenderTextureContent, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: `
152
- <ngt-portal [container]="virtualScene()" [state]="{ events: { compute: compute(), priority: eventPriority() } }">
153
- <ng-template portalContent let-injector="injector" let-container="container">
154
- <ng-container
155
- ngtsRenderTextureContainer
156
- [fbo]="fbo()"
157
- [renderPriority]="renderPriority()"
158
- [frames]="frames()"
159
- [injector]="injector"
160
- [ngTemplateOutlet]="content()"
161
- [ngTemplateOutletInjector]="injector"
162
- [ngTemplateOutletContext]="{ container, injector }"
163
- >
164
- <ngt-group (pointerover)="onPointerOver()" />
165
- </ng-container>
166
- </ng-template>
167
- </ngt-portal>
168
-
169
- <ngt-primitive *args="[fbo().texture]" [attach]="attach()" [parameters]="parameters()" />
170
- `, isInline: true, dependencies: [{ kind: "component", type: NgtPortal, selector: "ngt-portal", inputs: ["container", "state", "autoRender", "autoRenderPriority"] }, { kind: "directive", type: NgtsRenderTextureContainer, selector: "[ngtsRenderTextureContainer]", inputs: ["fbo", "renderPriority", "frames", "injector"] }, { kind: "directive", type: NgtPortalContent, selector: "ng-template[portalContent]" }, { kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
171
- }
172
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtsRenderTexture, decorators: [{
173
- type: Component,
174
- args: [{
175
- selector: 'ngts-render-texture',
176
- standalone: true,
177
- template: `
178
- <ngt-portal [container]="virtualScene()" [state]="{ events: { compute: compute(), priority: eventPriority() } }">
179
- <ng-template portalContent let-injector="injector" let-container="container">
180
- <ng-container
181
- ngtsRenderTextureContainer
182
- [fbo]="fbo()"
183
- [renderPriority]="renderPriority()"
184
- [frames]="frames()"
185
- [injector]="injector"
186
- [ngTemplateOutlet]="content()"
187
- [ngTemplateOutletInjector]="injector"
188
- [ngTemplateOutletContext]="{ container, injector }"
189
- >
190
- <ngt-group (pointerover)="onPointerOver()" />
191
- </ng-container>
192
- </ng-template>
193
- </ngt-portal>
194
-
195
- <ngt-primitive *args="[fbo().texture]" [attach]="attach()" [parameters]="parameters()" />
196
- `,
197
- imports: [NgtPortal, NgtsRenderTextureContainer, NgtPortalContent, NgtArgs, NgTemplateOutlet],
198
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
199
- changeDetection: ChangeDetectionStrategy.OnPush,
200
- }]
201
- }] });
202
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLXRleHR1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvbGliL3JlbmRlci10ZXh0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFDTixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxTQUFTLEVBRVQsV0FBVyxFQUNYLFFBQVEsRUFDUixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssR0FDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ04sT0FBTyxFQUdQLFNBQVMsRUFDVCxnQkFBZ0IsRUFFaEIsTUFBTSxFQUNOLGFBQWEsRUFDYixXQUFXLEVBQ1gsSUFBSSxFQUNKLElBQUksRUFDSixPQUFPLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXFCLE1BQU0sT0FBTyxDQUFDOztBQUVsRSxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBMEJsQixNQUFNLE9BQU8sMEJBQTBCO0lBUXRDO1FBUEEsUUFBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXFCLENBQUM7UUFDMUMsbUJBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDMUMsV0FBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNsQyxhQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBWSxDQUFDO1FBRTlCLFVBQUssR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUc3QixNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFB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O0lBSEEsYUFBYTtRQUNaLFVBQVU7SUFDWCxDQUFDOytHQTFFVyxpQkFBaUI7bUdBQWpCLGlCQUFpQix5WEFnQkcsd0JBQXdCLDJCQUFVLFdBQVcsNkNBeENuRTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1CVCw0REFDUyxTQUFTLDJIQWhHUCwwQkFBMEIsa0lBZ0dXLGdCQUFnQix1RUFBRSxPQUFPLGdGQUFFLGdCQUFnQjs7NEZBSWhGLGlCQUFpQjtrQkEzQjdCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1CVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUUsMEJBQTBCLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDO29CQUM3RixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQy9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHREaXJlY3RpdmUsXG5cdEluamVjdG9yLFxuXHRUZW1wbGF0ZVJlZixcblx0Y29tcHV0ZWQsXG5cdGNvbnRlbnRDaGlsZCxcblx0ZWZmZWN0LFxuXHRpbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuXHROZ3RBcmdzLFxuXHROZ3RBdHRhY2hhYmxlLFxuXHROZ3RDb21wdXRlRnVuY3Rpb24sXG5cdE5ndFBvcnRhbCxcblx0Tmd0UG9ydGFsQ29udGVudCxcblx0Tmd0VGV4dHVyZSxcblx0ZXh0ZW5kLFxuXHRnZXRMb2NhbFN0YXRlLFxuXHRpbmplY3RTdG9yZSxcblx0b21pdCxcblx0cGljayxcblx0cHJlcGFyZSxcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBpbmplY3RGQk8gfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvbWlzYyc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBHcm91cCwgT2JqZWN0M0QsIFNjZW5lLCBXZWJHTFJlbmRlclRhcmdldCB9IGZyb20gJ3RocmVlJztcblxuZXh0ZW5kKHsgR3JvdXAgfSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c1JlbmRlclRleHR1cmVPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxPbWl0PE5ndFRleHR1cmUsICdhdHRhY2gnPj4ge1xuXHQvKiogT3B0aW9uYWwgd2lkdGggb2YgdGhlIHRleHR1cmUsIGRlZmF1bHRzIHRvIHZpZXdwb3J0IGJvdW5kcyAqL1xuXHR3aWR0aD86IG51bWJlcjtcblx0LyoqIE9wdGlvbmFsIGhlaWdodCBvZiB0aGUgdGV4dHVyZSwgZGVmYXVsdHMgdG8gdmlld3BvcnQgYm91bmRzICovXG5cdGhlaWdodD86IG51bWJlcjtcblx0LyoqIE9wdGlvbmFsIGZibyBzYW1wbGVzICovXG5cdHNhbXBsZXM6IG51bWJlcjtcblx0LyoqIE9wdGlvbmFsIHN0ZW5jaWwgYnVmZmVyLCBkZWZhdWx0cyB0byBmYWxzZSAqL1xuXHRzdGVuY2lsQnVmZmVyOiBib29sZWFuO1xuXHQvKiogT3B0aW9uYWwgZGVwdGggYnVmZmVyLCBkZWZhdWx0cyB0byB0cnVlICovXG5cdGRlcHRoQnVmZmVyOiBib29sZWFuO1xuXHQvKiogT3B0aW9uYWwgZ2VuZXJhdGUgbWlwbWFwcywgZGVmYXVsdHMgdG8gZmFsc2UgKi9cblx0Z2VuZXJhdGVNaXBtYXBzOiBib29sZWFuO1xuXHQvKiogT3B0aW9uYWwgcmVuZGVyIHByaW9yaXR5LCBkZWZhdWx0cyB0byAwICovXG5cdHJlbmRlclByaW9yaXR5OiBudW1iZXI7XG5cdC8qKiBPcHRpb25hbCBldmVudCBwcmlvcml0eSwgZGVmYXVsdHMgdG8gMCAqL1xuXHRldmVudFByaW9yaXR5OiBudW1iZXI7XG5cdC8qKiBPcHRpb25hbCBmcmFtZSBjb3VudCwgZGVmYXVsdHMgdG8gSW5maW5pdHkuIElmIHlvdSBzZXQgaXQgdG8gMSwgaXQgd291bGQgb25seSByZW5kZXIgYSBzaW5nbGUgZnJhbWUsIGV0YyAqL1xuXHRmcmFtZXM6IG51bWJlcjtcblx0LyoqIE9wdGlvbmFsIGV2ZW50IGNvbXB1dGUsIGRlZmF1bHRzIHRvIHVuZGVmaW5lZCAqL1xuXHRjb21wdXRlPzogKGV2ZW50OiBhbnksIHN0YXRlOiBhbnksIHByZXZpb3VzOiBhbnkpID0+IGZhbHNlIHwgdW5kZWZpbmVkO1xufVxuXG5ARGlyZWN0aXZlKHsgc3RhbmRhbG9uZTogdHJ1ZSwgc2VsZWN0b3I6ICdbbmd0c1JlbmRlclRleHR1cmVDb250YWluZXJdJyB9KVxuZXhwb3J0IGNsYXNzIE5ndHNSZW5kZXJUZXh0dXJlQ29udGFpbmVyIHtcblx0ZmJvID0gaW5wdXQucmVxdWlyZWQ8V2ViR0xSZW5kZXJUYXJnZXQ+KCk7XG5cdHJlbmRlclByaW9yaXR5ID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyPigpO1xuXHRmcmFtZXMgPSBpbnB1dC5yZXF1aXJlZDxudW1iZXI+KCk7XG5cdGluamVjdG9yID0gaW5wdXQucmVxdWlyZWQ8SW5qZWN0b3I+KCk7XG5cblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IFtyZW5kZXJQcmlvcml0eSwgeyBpbnRlcm5hbCB9XSA9IFt0aGlzLnJlbmRlclByaW9yaXR5KCksIHRoaXMuc3RvcmUuc3RhdGUoKV07XG5cblx0XHRcdGxldCBjb3VudCA9IDA7XG5cdFx0XHRsZXQgb2xkQXV0b0NsZWFyOiBib29sZWFuO1xuXHRcdFx0bGV0IG9sZFhyRW5hYmxlZDogYm9vbGVhbjtcblx0XHRcdGxldCBvbGRSZW5kZXJUYXJnZXQ6IFdlYkdMUmVuZGVyVGFyZ2V0IHwgbnVsbDtcblx0XHRcdGxldCBvbGRJc1ByZXNlbnRpbmc6IGJvb2xlYW47XG5cblx0XHRcdGNvbnN0IGNsZWFudXAgPSBpbnRlcm5hbC5zdWJzY3JpYmUoXG5cdFx0XHRcdCh7IGdsLCBzY2VuZSwgY2FtZXJhIH0pID0+IHtcblx0XHRcdFx0XHRjb25zdCBbZmJvLCBmcmFtZXNdID0gW3RoaXMuZmJvKCksIHRoaXMuZnJhbWVzKCldO1xuXHRcdFx0XHRcdC8vIE5PVEU6IHJlbmRlciAgdGhlIGZyYW1lcyBeIDJcblx0XHRcdFx0XHQvLyAgZHVlIHRvIHNvbWUgcmFjZSBjb25kaXRpb24sIHdlIHdhbnQgdG8gcmVuZGVyIGRvdWJsZSB0aGUgZnJhbWVzIGhlcmUuXG5cdFx0XHRcdFx0aWYgKGZyYW1lcyA9PT0gSW5maW5pdHkgfHwgY291bnQgPCBmcmFtZXMgKiBmcmFtZXMpIHtcblx0XHRcdFx0XHRcdG9sZEF1dG9DbGVhciA9IGdsLmF1dG9DbGVhcjtcblx0XHRcdFx0XHRcdG9sZFhyRW5hYmxlZCA9IGdsLnhyLmVuYWJsZWQ7XG5cdFx0XHRcdFx0XHRvbGRSZW5kZXJUYXJnZXQgPSBnbC5nZXRSZW5kZXJUYXJnZXQoKTtcblx0XHRcdFx0XHRcdG9sZElzUHJlc2VudGluZyA9IGdsLnhyLmlzUHJlc2VudGluZztcblx0XHRcdFx0XHRcdGdsLmF1dG9DbGVhciA9IHRydWU7XG5cdFx0XHRcdFx0XHRnbC54ci5lbmFibGVkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRnbC54ci5pc1ByZXNlbnRpbmcgPSBmYWxzZTtcblx0XHRcdFx0XHRcdGdsLnNldFJlbmRlclRhcmdldChmYm8pO1xuXHRcdFx0XHRcdFx0Z2wucmVuZGVyKHNjZW5lLCBjYW1lcmEpO1xuXHRcdFx0XHRcdFx0Z2wuc2V0UmVuZGVyVGFyZ2V0KG9sZFJlbmRlclRhcmdldCk7XG5cdFx0XHRcdFx0XHRnbC5hdXRvQ2xlYXIgPSBvbGRBdXRvQ2xlYXI7XG5cdFx0XHRcdFx0XHRnbC54ci5lbmFibGVkID0gb2xkWHJFbmFibGVkO1xuXHRcdFx0XHRcdFx0Z2wueHIuaXNQcmVzZW50aW5nID0gb2xkSXNQcmVzZW50aW5nO1xuXHRcdFx0XHRcdFx0Y291bnQrKztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHJlbmRlclByaW9yaXR5LFxuXHRcdFx0XHR0aGlzLnN0b3JlLFxuXHRcdFx0KTtcblxuXHRcdFx0b25DbGVhbnVwKCgpID0+IHtcblx0XHRcdFx0Y2xlYW51cCgpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNSZW5kZXJUZXh0dXJlT3B0aW9ucyA9IHtcblx0c2FtcGxlczogOCxcblx0cmVuZGVyUHJpb3JpdHk6IDAsXG5cdGV2ZW50UHJpb3JpdHk6IDAsXG5cdGZyYW1lczogSW5maW5pdHksXG5cdHN0ZW5jaWxCdWZmZXI6IGZhbHNlLFxuXHRkZXB0aEJ1ZmZlcjogdHJ1ZSxcblx0Z2VuZXJhdGVNaXBtYXBzOiBmYWxzZSxcbn07XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ25nLXRlbXBsYXRlW3JlbmRlclRleHR1cmVDb250ZW50XScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBOZ3RzUmVuZGVyVGV4dHVyZUNvbnRlbnQge1xuXHRzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZChcblx0XHRfOiBOZ3RzUmVuZGVyVGV4dHVyZUNvbnRlbnQsXG5cdFx0Y3R4OiB1bmtub3duLFxuXHQpOiBjdHggaXMgeyBjb250YWluZXI6IE9iamVjdDNEOyBpbmplY3RvcjogSW5qZWN0b3IgfSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cbn1cblxubGV0IGluY3JlbWVudElkID0gMDtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1yZW5kZXItdGV4dHVyZScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wb3J0YWwgW2NvbnRhaW5lcl09XCJ2aXJ0dWFsU2NlbmUoKVwiIFtzdGF0ZV09XCJ7IGV2ZW50czogeyBjb21wdXRlOiBjb21wdXRlKCksIHByaW9yaXR5OiBldmVudFByaW9yaXR5KCkgfSB9XCI+XG5cdFx0XHQ8bmctdGVtcGxhdGUgcG9ydGFsQ29udGVudCBsZXQtaW5qZWN0b3I9XCJpbmplY3RvclwiIGxldC1jb250YWluZXI9XCJjb250YWluZXJcIj5cblx0XHRcdFx0PG5nLWNvbnRhaW5lclxuXHRcdFx0XHRcdG5ndHNSZW5kZXJUZXh0dXJlQ29udGFpbmVyXG5cdFx0XHRcdFx0W2Zib109XCJmYm8oKVwiXG5cdFx0XHRcdFx0W3JlbmRlclByaW9yaXR5XT1cInJlbmRlclByaW9yaXR5KClcIlxuXHRcdFx0XHRcdFtmcmFtZXNdPVwiZnJhbWVzKClcIlxuXHRcdFx0XHRcdFtpbmplY3Rvcl09XCJpbmplY3RvclwiXG5cdFx0XHRcdFx0W25nVGVtcGxhdGVPdXRsZXRdPVwiY29udGVudCgpXCJcblx0XHRcdFx0XHRbbmdUZW1wbGF0ZU91dGxldEluamVjdG9yXT1cImluamVjdG9yXCJcblx0XHRcdFx0XHRbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBjb250YWluZXIsIGluamVjdG9yIH1cIlxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0PG5ndC1ncm91cCAocG9pbnRlcm92ZXIpPVwib25Qb2ludGVyT3ZlcigpXCIgLz5cblx0XHRcdFx0PC9uZy1jb250YWluZXI+XG5cdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdDwvbmd0LXBvcnRhbD5cblxuXHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiW2ZibygpLnRleHR1cmVdXCIgW2F0dGFjaF09XCJhdHRhY2goKVwiIFtwYXJhbWV0ZXJzXT1cInBhcmFtZXRlcnMoKVwiIC8+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RQb3J0YWwsIE5ndHNSZW5kZXJUZXh0dXJlQ29udGFpbmVyLCBOZ3RQb3J0YWxDb250ZW50LCBOZ3RBcmdzLCBOZ1RlbXBsYXRlT3V0bGV0XSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1JlbmRlclRleHR1cmUge1xuXHRhdHRhY2ggPSBpbnB1dDxOZ3RBdHRhY2hhYmxlPignbWFwJyk7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbXG5cdFx0J3NhbXBsZXMnLFxuXHRcdCdyZW5kZXJQcmlvcml0eScsXG5cdFx0J2V2ZW50UHJpb3JpdHknLFxuXHRcdCdmcmFtZXMnLFxuXHRcdCdzdGVuY2lsQnVmZmVyJyxcblx0XHQnZGVwdGhCdWZmZXInLFxuXHRcdCdnZW5lcmF0ZU1pcG1hcHMnLFxuXHRcdCdjb21wdXRlJyxcblx0XHQnd2lkdGgnLFxuXHRcdCdoZWlnaHQnLFxuXHRdKTtcblxuXHRjb250ZW50ID0gY29udGVudENoaWxkLnJlcXVpcmVkKE5ndHNSZW5kZXJUZXh0dXJlQ29udGVudCwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0cHJpdmF0ZSBzaXplID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKTtcblx0cHJpdmF0ZSB2aWV3cG9ydCA9IHRoaXMuc3RvcmUuc2VsZWN0KCd2aWV3cG9ydCcpO1xuXG5cdHByaXZhdGUgZmJvUGFyYW1zID0gY29tcHV0ZWQoKCkgPT4gKHtcblx0XHR3aWR0aDogKHRoaXMub3B0aW9ucygpLndpZHRoIHx8IHRoaXMuc2l6ZSgpLndpZHRoKSAqIHRoaXMudmlld3BvcnQoKS5kcHIsXG5cdFx0aGVpZ2h0OiAodGhpcy5vcHRpb25zKCkuaGVpZ2h0IHx8IHRoaXMuc2l6ZSgpLmhlaWdodCkgKiB0aGlzLnZpZXdwb3J0KCkuZHByLFxuXHRcdHNldHRpbmdzOiB7XG5cdFx0XHRzYW1wbGVzOiB0aGlzLm9wdGlvbnMoKS5zYW1wbGVzLFxuXHRcdFx0ZGVwdGhCdWZmZXI6IHRoaXMub3B0aW9ucygpLmRlcHRoQnVmZmVyLFxuXHRcdFx0c3RlbmNpbEJ1ZmZlcjogdGhpcy5vcHRpb25zKCkuc3RlbmNpbEJ1ZmZlcixcblx0XHRcdGdlbmVyYXRlTWlwbWFwczogdGhpcy5vcHRpb25zKCkuZ2VuZXJhdGVNaXBtYXBzLFxuXHRcdH0sXG5cdH0pKTtcblxuXHRyZW5kZXJQcmlvcml0eSA9IHBpY2sodGhpcy5vcHRpb25zLCAncmVuZGVyUHJpb3JpdHknKTtcblx0ZnJhbWVzID0gcGljayh0aGlzLm9wdGlvbnMsICdmcmFtZXMnKTtcblx0ZmJvID0gaW5qZWN0RkJPKHRoaXMuZmJvUGFyYW1zKTtcblx0dmlydHVhbFNjZW5lID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHNjZW5lID0gcHJlcGFyZShuZXcgU2NlbmUoKSk7XG5cdFx0c2NlbmUubmFtZSA9IGBuZ3RzLXJlbmRlci10ZXh0dXJlLXZpcnR1YWwtc2NlbmUtJHtpbmNyZW1lbnRJZCsrfWA7XG5cdFx0cmV0dXJuIHNjZW5lO1xuXHR9KTtcblx0ZXZlbnRQcmlvcml0eSA9IHBpY2sodGhpcy5vcHRpb25zLCAnZXZlbnRQcmlvcml0eScpO1xuXHRjb21wdXRlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCkuY29tcHV0ZSB8fCB0aGlzLnV2Q29tcHV0ZSk7XG5cblx0cHJpdmF0ZSB1dkNvbXB1dGU6IE5ndENvbXB1dGVGdW5jdGlvbiA9IChldmVudCwgcm9vdCwgcHJldmlvdXMpID0+IHtcblx0XHRjb25zdCBmYm8gPSB0aGlzLmZibygpO1xuXHRcdGlmICghZmJvKSByZXR1cm47XG5cdFx0Y29uc3Qgc3RhdGUgPSByb290LnNuYXBzaG90O1xuXHRcdGNvbnN0IHByZXZpb3VzU3RhdGUgPSBwcmV2aW91cz8uc25hcHNob3Q7XG5cblx0XHQvLyBTaW5jZSB0aGlzIGlzIG9ubHkgYSB0ZXh0dXJlIGl0IGRvZXMgbm90IGhhdmUgYW4gZWFzeSB3YXkgdG8gb2J0YWluIHRoZSBwYXJlbnQsIHdoaWNoIHdlXG5cdFx0Ly8gbmVlZCB0byB0cmFuc2Zvcm0gZXZlbnQgY29vcmRpbmF0ZXMgdG8gbG9jYWwgY29vcmRpbmF0ZXMuIFdlIHVzZSByM2YgaW50ZXJuYWxzIHRvIGZpbmQgdGhlXG5cdFx0Ly8gbmV4dCBPYmplY3QzRC5cblx0XHRsZXQgcGFyZW50ID0gZ2V0TG9jYWxTdGF0ZShmYm8udGV4dHVyZSk/LnBhcmVudCgpO1xuXHRcdHdoaWxlIChwYXJlbnQgJiYgIShwYXJlbnQgaW5zdGFuY2VvZiBPYmplY3QzRCkpIHtcblx0XHRcdHBhcmVudCA9IGdldExvY2FsU3RhdGUocGFyZW50KT8ucGFyZW50KCk7XG5cdFx0fVxuXG5cdFx0aWYgKCFwYXJlbnQpIHJldHVybjtcblx0XHQvLyBGaXJzdCB3ZSBjYWxsIHRoZSBwcmV2aW91cyBzdGF0ZS1vbmlvbi1sYXllcnMgY29tcHV0ZSwgdGhpcyBpcyB3aGF0IG1ha2VzIGl0IHBvc3NpYmxlIHRvIG5lc3QgcG9ydGFsc1xuXHRcdGlmIChwcmV2aW91c1N0YXRlICYmICFwcmV2aW91c1N0YXRlLnJheWNhc3Rlci5jYW1lcmEpIHtcblx0XHRcdHByZXZpb3VzU3RhdGUuZXZlbnRzLmNvbXB1dGU/LihldmVudCwgcHJldmlvdXMsIHByZXZpb3VzLnNuYXBzaG90LnByZXZpb3VzUm9vdCk7XG5cdFx0fVxuXHRcdC8vIFdlIHJ1biBhIHF1aWNrIGNoZWNrIGFnYWluc3QgdGhlIHBhcmVudCwgaWYgaXQgaXNuJ3QgaGl0IHRoZXJlJ3Mgbm8gbmVlZCB0byByYXljYXN0IGF0IGFsbFxuXHRcdGNvbnN0IFtpbnRlcnNlY3Rpb25dID0gcHJldmlvdXNTdGF0ZT8ucmF5Y2FzdGVyLmludGVyc2VjdE9iamVjdChwYXJlbnQpIHx8IFtdO1xuXHRcdGlmICghaW50ZXJzZWN0aW9uKSByZXR1cm47XG5cdFx0Ly8gV2UgdGFrZSB0aGF0IGhpdHMgdXYgY29vcmRzLCBzZXQgdXAgdGhpcyBsYXllcnMgcmF5Y2FzdGVyLCBldCB2b2lsw6AsIHdlIGhhdmUgcmF5Y2FzdGluZyBvbiBhcmJpdHJhcnkgc3VyZmFjZXNcblx0XHRjb25zdCB1diA9IGludGVyc2VjdGlvbi51djtcblx0XHRpZiAoIXV2KSByZXR1cm47XG5cdFx0c3RhdGUucmF5Y2FzdGVyLnNldEZyb21DYW1lcmEoc3RhdGUucG9pbnRlci5zZXQodXYueCAqIDIgLSAxLCB1di55ICogMiAtIDEpLCBzdGF0ZS5jYW1lcmEpO1xuXHR9O1xuXG5cdG9uUG9pbnRlck92ZXIoKSB7XG5cdFx0Lyogbm9vcCAqL1xuXHR9XG59XG4iXX0=
@@ -1,86 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, input } from '@angular/core';
2
- import { NgtArgs, omit, pick, vector3 } from 'angular-three';
3
- import { mergeInputs } from 'ngxtension/inject-inputs';
4
- import { Vector3 } from 'three';
5
- import { Sky } from 'three-stdlib';
6
- import * as i0 from "@angular/core";
7
- export function calcPosFromAngles(inclination, azimuth, vector = new Vector3()) {
8
- const theta = Math.PI * (inclination - 0.5);
9
- const phi = 2 * Math.PI * (azimuth - 0.5);
10
- vector.x = Math.cos(phi);
11
- vector.y = Math.sin(theta);
12
- vector.z = Math.sin(phi);
13
- return vector;
14
- }
15
- const defaultOptions = {
16
- distance: 1000,
17
- inclination: 0.6,
18
- azimuth: 0.1,
19
- mieCoefficient: 0.005,
20
- mieDirectionalG: 0.8,
21
- rayleigh: 0.5,
22
- turbidity: 10,
23
- };
24
- export class NgtsSky {
25
- constructor() {
26
- this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
27
- this.parameters = omit(this.options, [
28
- 'distance',
29
- 'inclination',
30
- 'azimuth',
31
- 'sunPosition',
32
- 'turbidity',
33
- 'mieCoefficient',
34
- 'mieDirectionalG',
35
- 'sunPosition',
36
- ]);
37
- this.distance = pick(this.options, 'distance');
38
- this.turbidity = pick(this.options, 'turbidity');
39
- this.mieCoefficient = pick(this.options, 'mieCoefficient');
40
- this.mieDirectionalG = pick(this.options, 'mieDirectionalG');
41
- this.rayleigh = pick(this.options, 'rayleigh');
42
- this.scale = computed(() => new Vector3().setScalar(this.distance()));
43
- this.inclination = pick(this.options, 'inclination');
44
- this.azimuth = pick(this.options, 'azimuth');
45
- this.sunPosition = vector3(this.options, 'sunPosition', true);
46
- this.calculatedSunPosition = computed(() => {
47
- const sunPosition = this.sunPosition();
48
- if (sunPosition)
49
- return sunPosition;
50
- return calcPosFromAngles(this.inclination(), this.azimuth());
51
- });
52
- this.sky = new Sky();
53
- }
54
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtsSky, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
55
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.11", type: NgtsSky, isStandalone: true, selector: "ngts-sky", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
56
- <ngt-primitive *args="[sky]" [parameters]="parameters()" [scale]="scale()">
57
- <ngt-value attach="material.uniforms.mieCoefficient.value" [rawValue]="mieCoefficient()" />
58
- <ngt-value attach="material.uniforms.mieDirectionalG.value" [rawValue]="mieDirectionalG()" />
59
- <ngt-value attach="material.uniforms.rayleigh.value" [rawValue]="rayleigh()" />
60
- <ngt-value attach="material.uniforms.sunPosition.value" [rawValue]="calculatedSunPosition()" />
61
- <ngt-value attach="material.uniforms.turbidity.value" [rawValue]="turbidity()" />
62
- <ng-content />
63
- </ngt-primitive>
64
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
65
- }
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtsSky, decorators: [{
67
- type: Component,
68
- args: [{
69
- selector: 'ngts-sky',
70
- standalone: true,
71
- template: `
72
- <ngt-primitive *args="[sky]" [parameters]="parameters()" [scale]="scale()">
73
- <ngt-value attach="material.uniforms.mieCoefficient.value" [rawValue]="mieCoefficient()" />
74
- <ngt-value attach="material.uniforms.mieDirectionalG.value" [rawValue]="mieDirectionalG()" />
75
- <ngt-value attach="material.uniforms.rayleigh.value" [rawValue]="rayleigh()" />
76
- <ngt-value attach="material.uniforms.sunPosition.value" [rawValue]="calculatedSunPosition()" />
77
- <ngt-value attach="material.uniforms.turbidity.value" [rawValue]="turbidity()" />
78
- <ng-content />
79
- </ngt-primitive>
80
- `,
81
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
82
- changeDetection: ChangeDetectionStrategy.OnPush,
83
- imports: [NgtArgs],
84
- }]
85
- }] });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2xpYi9za3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxPQUFPLEVBQXVCLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRW5DLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxXQUFtQixFQUFFLE9BQWUsRUFBRSxTQUFrQixJQUFJLE9BQU8sRUFBRTtJQUN0RyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBRTFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXpCLE9BQU8sTUFBTSxDQUFDO0FBQ2YsQ0FBQztBQWFELE1BQU0sY0FBYyxHQUFtQjtJQUN0QyxRQUFRLEVBQUUsSUFBSTtJQUNkLFdBQVcsRUFBRSxHQUFHO0lBQ2hCLE9BQU8sRUFBRSxHQUFHO0lBQ1osY0FBYyxFQUFFLEtBQUs7SUFDckIsZUFBZSxFQUFFLEdBQUc7SUFDcEIsUUFBUSxFQUFFLEdBQUc7SUFDYixTQUFTLEVBQUUsRUFBRTtDQUNiLENBQUM7QUFtQkYsTUFBTSxPQUFPLE9BQU87SUFqQnBCO1FBa0JDLFlBQU8sR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUUsZUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQy9CLFVBQVU7WUFDVixhQUFhO1lBQ2IsU0FBUztZQUNULGFBQWE7WUFDYixXQUFXO1lBQ1gsZ0JBQWdCO1lBQ2hCLGlCQUFpQjtZQUNqQixhQUFhO1NBQ2IsQ0FBQyxDQUFDO1FBRUgsYUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLGNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUM1QyxtQkFBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDdEQsb0JBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3hELGFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUUxQyxVQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFekQsZ0JBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNoRCxZQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDeEMsZ0JBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakUsMEJBQXFCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNyQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkMsSUFBSSxXQUFXO2dCQUFFLE9BQU8sV0FBVyxDQUFDO1lBQ3BDLE9BQU8saUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO1FBRUgsUUFBRyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7S0FDaEI7K0dBL0JZLE9BQU87bUdBQVAsT0FBTyw4TUFkVDs7Ozs7Ozs7O0VBU1QsNERBR1MsT0FBTzs7NEZBRUwsT0FBTztrQkFqQm5CLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7OztFQVNUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgTmd0TWVzaCwgTmd0VmVjdG9yMywgb21pdCwgcGljaywgdmVjdG9yMyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IFNreSB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjUG9zRnJvbUFuZ2xlcyhpbmNsaW5hdGlvbjogbnVtYmVyLCBhemltdXRoOiBudW1iZXIsIHZlY3RvcjogVmVjdG9yMyA9IG5ldyBWZWN0b3IzKCkpIHtcblx0Y29uc3QgdGhldGEgPSBNYXRoLlBJICogKGluY2xpbmF0aW9uIC0gMC41KTtcblx0Y29uc3QgcGhpID0gMiAqIE1hdGguUEkgKiAoYXppbXV0aCAtIDAuNSk7XG5cblx0dmVjdG9yLnggPSBNYXRoLmNvcyhwaGkpO1xuXHR2ZWN0b3IueSA9IE1hdGguc2luKHRoZXRhKTtcblx0dmVjdG9yLnogPSBNYXRoLnNpbihwaGkpO1xuXG5cdHJldHVybiB2ZWN0b3I7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c1NreU9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPE9taXQ8Tmd0TWVzaCwgJ3NjYWxlJz4+IHtcblx0ZGlzdGFuY2U6IG51bWJlcjtcblx0aW5jbGluYXRpb246IG51bWJlcjtcblx0YXppbXV0aDogbnVtYmVyO1xuXHRtaWVDb2VmZmljaWVudDogbnVtYmVyO1xuXHRtaWVEaXJlY3Rpb25hbEc6IG51bWJlcjtcblx0cmF5bGVpZ2g6IG51bWJlcjtcblx0dHVyYmlkaXR5OiBudW1iZXI7XG5cdHN1blBvc2l0aW9uPzogTmd0VmVjdG9yMztcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNTa3lPcHRpb25zID0ge1xuXHRkaXN0YW5jZTogMTAwMCxcblx0aW5jbGluYXRpb246IDAuNixcblx0YXppbXV0aDogMC4xLFxuXHRtaWVDb2VmZmljaWVudDogMC4wMDUsXG5cdG1pZURpcmVjdGlvbmFsRzogMC44LFxuXHRyYXlsZWlnaDogMC41LFxuXHR0dXJiaWRpdHk6IDEwLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1za3knLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiW3NreV1cIiBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIiBbc2NhbGVdPVwic2NhbGUoKVwiPlxuXHRcdFx0PG5ndC12YWx1ZSBhdHRhY2g9XCJtYXRlcmlhbC51bmlmb3Jtcy5taWVDb2VmZmljaWVudC52YWx1ZVwiIFtyYXdWYWx1ZV09XCJtaWVDb2VmZmljaWVudCgpXCIgLz5cblx0XHRcdDxuZ3QtdmFsdWUgYXR0YWNoPVwibWF0ZXJpYWwudW5pZm9ybXMubWllRGlyZWN0aW9uYWxHLnZhbHVlXCIgW3Jhd1ZhbHVlXT1cIm1pZURpcmVjdGlvbmFsRygpXCIgLz5cblx0XHRcdDxuZ3QtdmFsdWUgYXR0YWNoPVwibWF0ZXJpYWwudW5pZm9ybXMucmF5bGVpZ2gudmFsdWVcIiBbcmF3VmFsdWVdPVwicmF5bGVpZ2goKVwiIC8+XG5cdFx0XHQ8bmd0LXZhbHVlIGF0dGFjaD1cIm1hdGVyaWFsLnVuaWZvcm1zLnN1blBvc2l0aW9uLnZhbHVlXCIgW3Jhd1ZhbHVlXT1cImNhbGN1bGF0ZWRTdW5Qb3NpdGlvbigpXCIgLz5cblx0XHRcdDxuZ3QtdmFsdWUgYXR0YWNoPVwibWF0ZXJpYWwudW5pZm9ybXMudHVyYmlkaXR5LnZhbHVlXCIgW3Jhd1ZhbHVlXT1cInR1cmJpZGl0eSgpXCIgLz5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtcHJpbWl0aXZlPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTa3kge1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgW1xuXHRcdCdkaXN0YW5jZScsXG5cdFx0J2luY2xpbmF0aW9uJyxcblx0XHQnYXppbXV0aCcsXG5cdFx0J3N1blBvc2l0aW9uJyxcblx0XHQndHVyYmlkaXR5Jyxcblx0XHQnbWllQ29lZmZpY2llbnQnLFxuXHRcdCdtaWVEaXJlY3Rpb25hbEcnLFxuXHRcdCdzdW5Qb3NpdGlvbicsXG5cdF0pO1xuXG5cdGRpc3RhbmNlID0gcGljayh0aGlzLm9wdGlvbnMsICdkaXN0YW5jZScpO1xuXHR0dXJiaWRpdHkgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3R1cmJpZGl0eScpO1xuXHRtaWVDb2VmZmljaWVudCA9IHBpY2sodGhpcy5vcHRpb25zLCAnbWllQ29lZmZpY2llbnQnKTtcblx0bWllRGlyZWN0aW9uYWxHID0gcGljayh0aGlzLm9wdGlvbnMsICdtaWVEaXJlY3Rpb25hbEcnKTtcblx0cmF5bGVpZ2ggPSBwaWNrKHRoaXMub3B0aW9ucywgJ3JheWxlaWdoJyk7XG5cblx0c2NhbGUgPSBjb21wdXRlZCgoKSA9PiBuZXcgVmVjdG9yMygpLnNldFNjYWxhcih0aGlzLmRpc3RhbmNlKCkpKTtcblxuXHRwcml2YXRlIGluY2xpbmF0aW9uID0gcGljayh0aGlzLm9wdGlvbnMsICdpbmNsaW5hdGlvbicpO1xuXHRwcml2YXRlIGF6aW11dGggPSBwaWNrKHRoaXMub3B0aW9ucywgJ2F6aW11dGgnKTtcblx0cHJpdmF0ZSBzdW5Qb3NpdGlvbiA9IHZlY3RvcjModGhpcy5vcHRpb25zLCAnc3VuUG9zaXRpb24nLCB0cnVlKTtcblx0Y2FsY3VsYXRlZFN1blBvc2l0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHN1blBvc2l0aW9uID0gdGhpcy5zdW5Qb3NpdGlvbigpO1xuXHRcdGlmIChzdW5Qb3NpdGlvbikgcmV0dXJuIHN1blBvc2l0aW9uO1xuXHRcdHJldHVybiBjYWxjUG9zRnJvbUFuZ2xlcyh0aGlzLmluY2xpbmF0aW9uKCksIHRoaXMuYXppbXV0aCgpKTtcblx0fSk7XG5cblx0c2t5ID0gbmV3IFNreSgpO1xufVxuIl19