angular-three-soba 1.12.1 → 1.12.3

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 (96) hide show
  1. package/esm2020/abstractions/lib/billboard/billboard.mjs +3 -3
  2. package/esm2020/abstractions/lib/catmull-rom-line/catmull-rom-line.mjs +3 -3
  3. package/esm2020/abstractions/lib/cubic-bezier-line/cubic-bezier-line.mjs +3 -3
  4. package/esm2020/abstractions/lib/edges/edges.mjs +3 -3
  5. package/esm2020/abstractions/lib/gizmo-helper/gizmo-helper.mjs +6 -6
  6. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +3 -3
  7. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +6 -6
  8. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +3 -3
  9. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +3 -3
  10. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +6 -6
  11. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +3 -3
  12. package/esm2020/abstractions/lib/line/line-input.mjs +3 -3
  13. package/esm2020/abstractions/lib/line/line.mjs +3 -3
  14. package/esm2020/abstractions/lib/quadratic-bezier-line/quadratic-bezier-line.mjs +3 -3
  15. package/esm2020/abstractions/lib/text/text.mjs +3 -3
  16. package/esm2020/abstractions/lib/text-3d/text-3d.mjs +3 -3
  17. package/esm2020/cameras/lib/camera/camera-content.mjs +3 -3
  18. package/esm2020/cameras/lib/camera/camera.mjs +3 -3
  19. package/esm2020/cameras/lib/cube-camera/cube-camera.mjs +3 -3
  20. package/esm2020/cameras/lib/orthographic-camera/orthographic-camera.mjs +3 -3
  21. package/esm2020/cameras/lib/perspective-camera/perspective-camera.mjs +3 -3
  22. package/esm2020/controls/lib/orbit-controls/orbit-controls.mjs +3 -3
  23. package/esm2020/loaders/lib/loader/loader.mjs +3 -3
  24. package/esm2020/materials/lib/mesh-distort-material/mesh-distort-material.mjs +3 -3
  25. package/esm2020/materials/lib/mesh-reflector-material/mesh-reflector-material.mjs +3 -3
  26. package/esm2020/materials/lib/mesh-refraction-material/mesh-refraction-material.mjs +3 -3
  27. package/esm2020/materials/lib/mesh-transmission-material/mesh-transmission-material.mjs +3 -3
  28. package/esm2020/materials/lib/mesh-wobble-material/mesh-wobble-material.mjs +3 -3
  29. package/esm2020/misc/lib/animations/animations.mjs +34 -42
  30. package/esm2020/misc/lib/bake-shadows/bake-shadows.mjs +3 -3
  31. package/esm2020/performance/lib/adaptive/adaptive-dpr.mjs +3 -3
  32. package/esm2020/performance/lib/adaptive/adaptive-events.mjs +3 -3
  33. package/esm2020/performance/lib/detailed/detailed.mjs +3 -3
  34. package/esm2020/performance/lib/stats/stats.mjs +3 -3
  35. package/esm2020/shaders/index.mjs +2 -1
  36. package/esm2020/shaders/lib/star-field-material/star-field-material.mjs +32 -0
  37. package/esm2020/staging/lib/accumulative-shadows/accumulative-shadows.mjs +6 -6
  38. package/esm2020/staging/lib/accumulative-shadows/randomized-lights.mjs +6 -6
  39. package/esm2020/staging/lib/bounds/bounds.mjs +3 -3
  40. package/esm2020/staging/lib/camera-shake/camera-shake.mjs +3 -3
  41. package/esm2020/staging/lib/caustics/caustics.mjs +4 -4
  42. package/esm2020/staging/lib/center/center.mjs +3 -3
  43. package/esm2020/staging/lib/cloud/cloud.mjs +3 -3
  44. package/esm2020/staging/lib/contact-shadows/contact-shadows.mjs +3 -3
  45. package/esm2020/staging/lib/environment/environment-cube.mjs +3 -3
  46. package/esm2020/staging/lib/environment/environment-ground.mjs +3 -3
  47. package/esm2020/staging/lib/environment/environment-inputs.mjs +5 -5
  48. package/esm2020/staging/lib/environment/environment-map.mjs +3 -3
  49. package/esm2020/staging/lib/environment/environment-portal.mjs +3 -3
  50. package/esm2020/staging/lib/environment/environment.mjs +6 -6
  51. package/esm2020/staging/lib/float/float.mjs +3 -3
  52. package/esm2020/staging/lib/sky/sky.mjs +3 -3
  53. package/esm2020/staging/lib/sparkles/sparkles.mjs +3 -3
  54. package/esm2020/staging/lib/spot-light/shadow-mesh-input.mjs +3 -3
  55. package/esm2020/staging/lib/spot-light/spot-light-input.mjs +3 -3
  56. package/esm2020/staging/lib/spot-light/spot-light-shadow-no-shader.mjs +3 -3
  57. package/esm2020/staging/lib/spot-light/spot-light-shadow-shader.mjs +3 -3
  58. package/esm2020/staging/lib/spot-light/spot-light-shadow.mjs +3 -3
  59. package/esm2020/staging/lib/spot-light/spot-light.mjs +3 -3
  60. package/esm2020/staging/lib/spot-light/volumetric-mesh.mjs +3 -3
  61. package/esm2020/staging/lib/stage/stage.mjs +6 -6
  62. package/esm2020/staging/lib/stars/stars.mjs +8 -40
  63. package/fesm2015/angular-three-soba-abstractions.mjs +57 -57
  64. package/fesm2015/angular-three-soba-cameras.mjs +15 -15
  65. package/fesm2015/angular-three-soba-controls.mjs +3 -3
  66. package/fesm2015/angular-three-soba-loaders.mjs +3 -3
  67. package/fesm2015/angular-three-soba-materials.mjs +15 -15
  68. package/fesm2015/angular-three-soba-misc.mjs +35 -45
  69. package/fesm2015/angular-three-soba-misc.mjs.map +1 -1
  70. package/fesm2015/angular-three-soba-performance.mjs +12 -12
  71. package/fesm2015/angular-three-soba-shaders.mjs +32 -1
  72. package/fesm2015/angular-three-soba-shaders.mjs.map +1 -1
  73. package/fesm2015/angular-three-soba-staging.mjs +93 -126
  74. package/fesm2015/angular-three-soba-staging.mjs.map +1 -1
  75. package/fesm2020/angular-three-soba-abstractions.mjs +57 -57
  76. package/fesm2020/angular-three-soba-cameras.mjs +15 -15
  77. package/fesm2020/angular-three-soba-controls.mjs +3 -3
  78. package/fesm2020/angular-three-soba-loaders.mjs +3 -3
  79. package/fesm2020/angular-three-soba-materials.mjs +15 -15
  80. package/fesm2020/angular-three-soba-misc.mjs +35 -45
  81. package/fesm2020/angular-three-soba-misc.mjs.map +1 -1
  82. package/fesm2020/angular-three-soba-performance.mjs +12 -12
  83. package/fesm2020/angular-three-soba-shaders.mjs +32 -1
  84. package/fesm2020/angular-three-soba-shaders.mjs.map +1 -1
  85. package/fesm2020/angular-three-soba-staging.mjs +93 -126
  86. package/fesm2020/angular-three-soba-staging.mjs.map +1 -1
  87. package/misc/lib/animations/animations.d.ts +7 -7
  88. package/package.json +4 -3
  89. package/plugin/package.json +2 -2
  90. package/shaders/index.d.ts +1 -0
  91. package/shaders/lib/mesh-distort-material/mesh-distort-material.d.ts +2 -2
  92. package/shaders/lib/star-field-material/star-field-material.d.ts +3 -0
  93. package/staging/lib/caustics/caustics.d.ts +3 -3
  94. package/staging/lib/spot-light/spot-light-shadow-no-shader.d.ts +1 -1
  95. package/staging/lib/spot-light/spot-light-shadow-shader.d.ts +2 -2
  96. package/staging/lib/stars/stars.d.ts +4 -4
@@ -80,8 +80,8 @@ export class NgtsSpotLightShadowShader extends NgtsSpotLightShadowMeshInput {
80
80
  commonEffect(this);
81
81
  }
82
82
  }
83
- NgtsSpotLightShadowShader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsSpotLightShadowShader, deps: [], target: i0.ɵɵFactoryTarget.Component });
84
- NgtsSpotLightShadowShader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgtsSpotLightShadowShader, isStandalone: true, selector: "ngts-spot-light-shadow-shader", usesInheritance: true, ngImport: i0, template: `
83
+ NgtsSpotLightShadowShader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsSpotLightShadowShader, deps: [], target: i0.ɵɵFactoryTarget.Component });
84
+ NgtsSpotLightShadowShader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: NgtsSpotLightShadowShader, isStandalone: true, selector: "ngts-spot-light-shadow-shader", usesInheritance: true, ngImport: i0, template: `
85
85
  <ngt-mesh [ref]="mesh" [scale]="get('scale')" [castShadow]="true">
86
86
  <ngt-plane-geometry />
87
87
  <ngt-mesh-basic-material
@@ -97,7 +97,7 @@ NgtsSpotLightShadowShader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
97
97
  </ngt-mesh-basic-material>
98
98
  </ngt-mesh>
99
99
  `, isInline: true, dependencies: [{ kind: "pipe", type: NgtPush, name: "ngtPush" }] });
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsSpotLightShadowShader, decorators: [{
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsSpotLightShadowShader, decorators: [{
101
101
  type: Component,
102
102
  args: [{
103
103
  selector: 'ngts-spot-light-shadow-shader',
@@ -6,8 +6,8 @@ import { NgtsSpotLightShadowShader } from './spot-light-shadow-shader';
6
6
  import * as i0 from "@angular/core";
7
7
  export class NgtsSpotLightShadow extends NgtsSpotLightShadowMeshInput {
8
8
  }
9
- NgtsSpotLightShadow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsSpotLightShadow, deps: null, target: i0.ɵɵFactoryTarget.Component });
10
- NgtsSpotLightShadow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgtsSpotLightShadow, isStandalone: true, selector: "ngts-spot-light-shadow", usesInheritance: true, ngImport: i0, template: `
9
+ NgtsSpotLightShadow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsSpotLightShadow, deps: null, target: i0.ɵɵFactoryTarget.Component });
10
+ NgtsSpotLightShadow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: NgtsSpotLightShadow, isStandalone: true, selector: "ngts-spot-light-shadow", usesInheritance: true, ngImport: i0, template: `
11
11
  <ngts-spot-light-shadow-shader
12
12
  *ngIf="get('shader'); else noShader"
13
13
  [distance]="get('distance')"
@@ -29,7 +29,7 @@ NgtsSpotLightShadow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
29
29
  />
30
30
  </ng-template>
31
31
  `, isInline: true, dependencies: [{ kind: "component", type: NgtsSpotLightShadowShader, selector: "ngts-spot-light-shadow-shader" }, { kind: "component", type: NgtsSpotLightShadowNoShader, selector: "ngts-spot-light-shadow-no-shader" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsSpotLightShadow, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsSpotLightShadow, decorators: [{
33
33
  type: Component,
34
34
  args: [{
35
35
  selector: 'ngts-spot-light-shadow',
@@ -38,8 +38,8 @@ export class NgtsSpotLight extends NgtsSpotLightInput {
38
38
  });
39
39
  }
40
40
  }
41
- NgtsSpotLight.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsSpotLight, deps: null, target: i0.ɵɵFactoryTarget.Component });
42
- NgtsSpotLight.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgtsSpotLight, isStandalone: true, selector: "ngts-spot-light", inputs: { spotLightRef: "spotLightRef", volumetric: "volumetric" }, providers: [{ provide: NGTS_SPOT_LIGHT_API, useFactory: spotLightApiFactory, deps: [NgtsSpotLight] }], usesInheritance: true, ngImport: i0, template: `
41
+ NgtsSpotLight.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsSpotLight, deps: null, target: i0.ɵɵFactoryTarget.Component });
42
+ NgtsSpotLight.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: NgtsSpotLight, isStandalone: true, selector: "ngts-spot-light", inputs: { spotLightRef: "spotLightRef", volumetric: "volumetric" }, providers: [{ provide: NGTS_SPOT_LIGHT_API, useFactory: spotLightApiFactory, deps: [NgtsSpotLight] }], usesInheritance: true, ngImport: i0, template: `
43
43
  <ngt-group>
44
44
  <ng-container *ngIf="get('debug') && spotLightRef.nativeElement">
45
45
  <ngt-spot-light-helper *args="[spotLightRef.nativeElement]" />
@@ -69,7 +69,7 @@ NgtsSpotLight.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
69
69
  <ng-content />
70
70
  </ngt-group>
71
71
  `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }, { kind: "component", type: NgtsVolumetricMesh, selector: "ngts-volumetric-mesh" }] });
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsSpotLight, decorators: [{
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsSpotLight, decorators: [{
73
73
  type: Component,
74
74
  args: [{
75
75
  selector: 'ngts-spot-light',
@@ -44,8 +44,8 @@ export class NgtsVolumetricMesh extends NgtsSpotLightInput {
44
44
  });
45
45
  }
46
46
  }
47
- NgtsVolumetricMesh.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsVolumetricMesh, deps: [], target: i0.ɵɵFactoryTarget.Component });
48
- NgtsVolumetricMesh.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgtsVolumetricMesh, isStandalone: true, selector: "ngts-volumetric-mesh", usesInheritance: true, ngImport: i0, template: `
47
+ NgtsVolumetricMesh.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsVolumetricMesh, deps: [], target: i0.ɵɵFactoryTarget.Component });
48
+ NgtsVolumetricMesh.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: NgtsVolumetricMesh, isStandalone: true, selector: "ngts-volumetric-mesh", usesInheritance: true, ngImport: i0, template: `
49
49
  <ngt-mesh [ref]="mesh" [geometry]="get('geometry')" [raycast]="nullRaycast">
50
50
  <ngt-primitive *args="[material]" attach="material">
51
51
  <ngt-value [rawValue]="get('opacity')" attach="uniforms.opacity.value" />
@@ -59,7 +59,7 @@ NgtsVolumetricMesh.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
59
59
  </ngt-primitive>
60
60
  </ngt-mesh>
61
61
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsVolumetricMesh, decorators: [{
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsVolumetricMesh, decorators: [{
63
63
  type: Component,
64
64
  args: [{
65
65
  selector: 'ngts-volumetric-mesh',
@@ -40,9 +40,9 @@ export class NgtsStageRefit {
40
40
  }
41
41
  }
42
42
  }
43
- NgtsStageRefit.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsStageRefit, deps: [], target: i0.ɵɵFactoryTarget.Directive });
44
- NgtsStageRefit.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: NgtsStageRefit, isStandalone: true, selector: "ngts-stage-refit", inputs: { radius: "radius", adjustCamera: "adjustCamera" }, usesOnChanges: true, ngImport: i0 });
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsStageRefit, decorators: [{
43
+ NgtsStageRefit.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsStageRefit, deps: [], target: i0.ɵɵFactoryTarget.Directive });
44
+ NgtsStageRefit.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.5", type: NgtsStageRefit, isStandalone: true, selector: "ngts-stage-refit", inputs: { radius: "radius", adjustCamera: "adjustCamera" }, usesOnChanges: true, ngImport: i0 });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsStageRefit, decorators: [{
46
46
  type: Directive,
47
47
  args: [{ selector: 'ngts-stage-refit', standalone: true }]
48
48
  }], propDecorators: { radius: [{
@@ -127,8 +127,8 @@ export class NgtsStage extends NgtRxStore {
127
127
  this.centered.emit(props);
128
128
  }
129
129
  }
130
- NgtsStage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsStage, deps: null, target: i0.ɵɵFactoryTarget.Component });
131
- NgtsStage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgtsStage, isStandalone: true, selector: "ngts-stage", inputs: { preset: "preset", shadows: "shadows", adjustCamera: "adjustCamera", environment: "environment", intensity: "intensity", center: "center" }, outputs: { centered: "centered" }, usesInheritance: true, ngImport: i0, template: `
130
+ NgtsStage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsStage, deps: null, target: i0.ɵɵFactoryTarget.Component });
131
+ NgtsStage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: NgtsStage, isStandalone: true, selector: "ngts-stage", inputs: { preset: "preset", shadows: "shadows", adjustCamera: "adjustCamera", environment: "environment", intensity: "intensity", center: "center" }, outputs: { centered: "centered" }, usesInheritance: true, ngImport: i0, template: `
132
132
  <ngt-ambient-light [intensity]="get('intensity')! / 3" />
133
133
  <ngt-spot-light
134
134
  [penumbra]="1"
@@ -229,7 +229,7 @@ NgtsStage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15
229
229
  [encoding]="get('environmentInfo').encoding"
230
230
  />
231
231
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }, { kind: "component", type: NgtsBounds, selector: "ngts-bounds", inputs: ["boundsRef", "damping", "fit", "clip", "observe", "margin", "eps"], outputs: ["fitted"] }, { kind: "directive", type: NgtsStageRefit, selector: "ngts-stage-refit", inputs: ["radius", "adjustCamera"] }, { kind: "component", type: NgtsCenter, selector: "ngts-center", inputs: ["centerRef", "top", "right", "bottom", "left", "front", "back", "disableX", "disableY", "disableZ", "disabled", "precise"], outputs: ["centered"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgtsContactShadows, selector: "ngts-contact-shadows", inputs: ["contactShadowsRef", "opacity", "width", "height", "blur", "far", "smooth", "resolution", "frames", "scale", "color", "depthWrite", "renderOrder"] }, { kind: "component", type: NgtsAccumulativeShadows, selector: "ngts-accumulative-shadows", inputs: ["frames", "blend", "limit", "scale", "temporal", "opacity", "alphaTest", "color", "colorBlend", "resolution", "toneMapped"] }, { kind: "component", type: NgtsRandomizedLights, selector: "ngts-randomized-lights", inputs: ["lightsRef", "frames", "position", "radius", "amount", "intensity", "ambient", "castShadow", "bias", "mapSize", "size", "near", "far"] }, { kind: "component", type: NgtsEnvironment, selector: "ngts-environment" }] });
232
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsStage, decorators: [{
232
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsStage, decorators: [{
233
233
  type: Component,
234
234
  args: [{
235
235
  selector: 'ngts-stage',
@@ -1,41 +1,9 @@
1
1
  import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
2
2
  import { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtRxStore } from 'angular-three';
3
- import { shaderMaterial } from 'angular-three-soba/shaders';
4
- import { AdditiveBlending, BufferAttribute, BufferGeometry, Color, Points, Spherical, Vector3 } from 'three';
3
+ import { StarFieldMaterial } from 'angular-three-soba/shaders';
4
+ import * as THREE from 'three';
5
+ import { BufferAttribute, BufferGeometry, Color, Points, Spherical, Vector3 } from 'three';
5
6
  import * as i0 from "@angular/core";
6
- const StarFieldMaterial = shaderMaterial({
7
- time: 0.0,
8
- fade: 0.0,
9
- },
10
- // language=GLSL
11
- `
12
- uniform float time;
13
- attribute float size;
14
- varying vec3 vColor;
15
- void main() {
16
- vColor = color;
17
- vec4 mvPosition = modelViewMatrix * vec4(position, 0.5);
18
- gl_PointSize = size * (30.0 / -mvPosition.z) * (3.0 + sin(time + 100.0));
19
- gl_Position = projectionMatrix * mvPosition;
20
- }
21
- `,
22
- // language=GLSL
23
- `
24
- uniform sampler2D pointTexture;
25
- uniform float fade;
26
- varying vec3 vColor;
27
- void main() {
28
- float opacity = 1.0;
29
- if (fade == 1.0) {
30
- float d = distance(gl_PointCoord, vec2(0.5, 0.5));
31
- opacity = 1.0 / (1.0 + exp(16.0 * (d - 0.25)));
32
- }
33
- gl_FragColor = vec4(vColor, opacity);
34
-
35
- #include <tonemapping_fragment>
36
- #include <encodings_fragment>
37
- }
38
- `);
39
7
  extend({ Points, BufferGeometry, BufferAttribute });
40
8
  const genStar = (r) => {
41
9
  return new Vector3().setFromSpherical(new Spherical(r, Math.acos(1 - Math.random() * 2), Math.random() * 2 * Math.PI));
@@ -95,7 +63,7 @@ export class NgtsStars extends NgtRxStore {
95
63
  }
96
64
  constructor() {
97
65
  super();
98
- this.AdditiveBlending = AdditiveBlending;
66
+ this.AdditiveBlending = THREE.AdditiveBlending;
99
67
  this.material = new StarFieldMaterial();
100
68
  this.starsRef = injectNgtRef();
101
69
  injectBeforeRender(this.onBeforeRender.bind(this));
@@ -104,8 +72,8 @@ export class NgtsStars extends NgtRxStore {
104
72
  this.material.uniforms['time'].value = clock.getElapsedTime() * this.get('speed');
105
73
  }
106
74
  }
107
- NgtsStars.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsStars, deps: [], target: i0.ɵɵFactoryTarget.Component });
108
- NgtsStars.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgtsStars, isStandalone: true, selector: "ngts-stars", inputs: { starsRef: "starsRef", radius: "radius", depth: "depth", count: "count", factor: "factor", saturation: "saturation", fade: "fade", speed: "speed" }, usesInheritance: true, ngImport: i0, template: `
75
+ NgtsStars.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsStars, deps: [], target: i0.ɵɵFactoryTarget.Component });
76
+ NgtsStars.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: NgtsStars, isStandalone: true, selector: "ngts-stars", inputs: { starsRef: "starsRef", radius: "radius", depth: "depth", count: "count", factor: "factor", saturation: "saturation", fade: "fade", speed: "speed" }, usesInheritance: true, ngImport: i0, template: `
109
77
  <ngt-points [ref]="starsRef">
110
78
  <ngt-buffer-geometry>
111
79
  <ngt-buffer-attribute attach="attributes.position" *args="[get('bufferAttributes').positions, 3]" />
@@ -124,7 +92,7 @@ NgtsStars.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15
124
92
  </ngt-primitive>
125
93
  </ngt-points>
126
94
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
127
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsStars, decorators: [{
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsStars, decorators: [{
128
96
  type: Component,
129
97
  args: [{
130
98
  selector: 'ngts-stars',
@@ -168,4 +136,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
168
136
  }], speed: [{
169
137
  type: Input
170
138
  }] } });
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9saWIvc3RhcnMvc3RhcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFrQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFFN0csTUFBTSxpQkFBaUIsR0FBRyxjQUFjLENBQ3BDO0lBQ0ksSUFBSSxFQUFFLEdBQUc7SUFDVCxJQUFJLEVBQUUsR0FBRztDQUNaO0FBQ0QsZ0JBQWdCO0FBQ2hCOzs7Ozs7Ozs7O0dBVUQ7QUFDQyxnQkFBZ0I7QUFDaEI7Ozs7Ozs7Ozs7Ozs7OztHQWVELENBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztBQUVwRCxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFO0lBQzFCLE9BQU8sSUFBSSxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FDakMsSUFBSSxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFF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bEIsS0FBSztnQkFJTyxVQUFVO3NCQUF0QixLQUFLO2dCQUlPLElBQUk7c0JBQWhCLEtBQUs7Z0JBSU8sS0FBSztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgaW5qZWN0QmVmb3JlUmVuZGVyLCBpbmplY3ROZ3RSZWYsIE5ndEFyZ3MsIE5ndFJlbmRlclN0YXRlLCBOZ3RSeFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBzaGFkZXJNYXRlcmlhbCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9zaGFkZXJzJztcbmltcG9ydCB7IEFkZGl0aXZlQmxlbmRpbmcsIEJ1ZmZlckF0dHJpYnV0ZSwgQnVmZmVyR2VvbWV0cnksIENvbG9yLCBQb2ludHMsIFNwaGVyaWNhbCwgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcblxuY29uc3QgU3RhckZpZWxkTWF0ZXJpYWwgPSBzaGFkZXJNYXRlcmlhbChcbiAgICB7XG4gICAgICAgIHRpbWU6IDAuMCxcbiAgICAgICAgZmFkZTogMC4wLFxuICAgIH0sXG4gICAgLy8gbGFuZ3VhZ2U9R0xTTFxuICAgIGBcbnVuaWZvcm0gZmxvYXQgdGltZTtcbmF0dHJpYnV0ZSBmbG9hdCBzaXplO1xudmFyeWluZyB2ZWMzIHZDb2xvcjtcbnZvaWQgbWFpbigpIHtcbiAgdkNvbG9yID0gY29sb3I7XG4gIHZlYzQgbXZQb3NpdGlvbiA9IG1vZGVsVmlld01hdHJpeCAqIHZlYzQocG9zaXRpb24sIDAuNSk7XG4gIGdsX1BvaW50U2l6ZSA9IHNpemUgKiAoMzAuMCAvIC1tdlBvc2l0aW9uLnopICogKDMuMCArIHNpbih0aW1lICsgMTAwLjApKTtcbiAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbXZQb3NpdGlvbjtcbn1cbiAgYCxcbiAgICAvLyBsYW5ndWFnZT1HTFNMXG4gICAgYFxudW5pZm9ybSBzYW1wbGVyMkQgcG9pbnRUZXh0dXJlO1xudW5pZm9ybSBmbG9hdCBmYWRlO1xudmFyeWluZyB2ZWMzIHZDb2xvcjtcbnZvaWQgbWFpbigpIHtcbiAgZmxvYXQgb3BhY2l0eSA9IDEuMDtcbiAgaWYgKGZhZGUgPT0gMS4wKSB7XG4gICAgZmxvYXQgZCA9IGRpc3RhbmNlKGdsX1BvaW50Q29vcmQsIHZlYzIoMC41LCAwLjUpKTtcbiAgICBvcGFjaXR5ID0gMS4wIC8gKDEuMCArIGV4cCgxNi4wICogKGQgLSAwLjI1KSkpO1xuICB9XG4gIGdsX0ZyYWdDb2xvciA9IHZlYzQodkNvbG9yLCBvcGFjaXR5KTtcblxuICAjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG4gICNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG59XG4gIGBcbik7XG5cbmV4dGVuZCh7IFBvaW50cywgQnVmZmVyR2VvbWV0cnksIEJ1ZmZlckF0dHJpYnV0ZSB9KTtcblxuY29uc3QgZ2VuU3RhciA9IChyOiBudW1iZXIpID0+IHtcbiAgICByZXR1cm4gbmV3IFZlY3RvcjMoKS5zZXRGcm9tU3BoZXJpY2FsKFxuICAgICAgICBuZXcgU3BoZXJpY2FsKHIsIE1hdGguYWNvcygxIC0gTWF0aC5yYW5kb20oKSAqIDIpLCBNYXRoLnJhbmRvbSgpICogMiAqIE1hdGguUEkpXG4gICAgKTtcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0cy1zdGFycycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LXBvaW50cyBbcmVmXT1cInN0YXJzUmVmXCI+XG4gICAgICAgICAgICA8bmd0LWJ1ZmZlci1nZW9tZXRyeT5cbiAgICAgICAgICAgICAgICA8bmd0LWJ1ZmZlci1hdHRyaWJ1dGUgYXR0YWNoPVwiYXR0cmlidXRlcy5wb3NpdGlvblwiICphcmdzPVwiW2dldCgnYnVmZmVyQXR0cmlidXRlcycpLnBvc2l0aW9ucywgM11cIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZSBhdHRhY2g9XCJhdHRyaWJ1dGVzLmNvbG9yXCIgKmFyZ3M9XCJbZ2V0KCdidWZmZXJBdHRyaWJ1dGVzJykuY29sb3JzLCAzXVwiIC8+XG4gICAgICAgICAgICAgICAgPG5ndC1idWZmZXItYXR0cmlidXRlIGF0dGFjaD1cImF0dHJpYnV0ZXMuc2l6ZVwiICphcmdzPVwiW2dldCgnYnVmZmVyQXR0cmlidXRlcycpLnNpemVzLCAxXVwiIC8+XG4gICAgICAgICAgICA8L25ndC1idWZmZXItZ2VvbWV0cnk+XG4gICAgICAgICAgICA8bmd0LXByaW1pdGl2ZVxuICAgICAgICAgICAgICAgICphcmdzPVwiW21hdGVyaWFsXVwiXG4gICAgICAgICAgICAgICAgYXR0YWNoPVwibWF0ZXJpYWxcIlxuICAgICAgICAgICAgICAgIFtibGVuZGluZ109XCJBZGRpdGl2ZUJsZW5kaW5nXCJcbiAgICAgICAgICAgICAgICBbZGVwdGhXcml0ZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW3RyYW5zcGFyZW50XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFt2ZXJ0ZXhDb2xvcnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5ndC12YWx1ZSBhdHRhY2g9XCJ1bmlmb3Jtcy5mYWRlLnZhbHVlXCIgW3Jhd1ZhbHVlXT1cImdldCgnZmFkZScpXCIgLz5cbiAgICAgICAgICAgIDwvbmd0LXByaW1pdGl2ZT5cbiAgICAgICAgPC9uZ3QtcG9pbnRzPlxuICAgIGAsXG4gICAgaW1wb3J0czogW05ndEFyZ3NdLFxuICAgIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1N0YXJzIGV4dGVuZHMgTmd0UnhTdG9yZSB7XG4gICAgcmVhZG9ubHkgQWRkaXRpdmVCbGVuZGluZyA9IEFkZGl0aXZlQmxlbmRpbmc7XG4gICAgcmVhZG9ubHkgbWF0ZXJpYWwgPSBuZXcgU3RhckZpZWxkTWF0ZXJpYWwoKTtcblxuICAgIEBJbnB1dCgpIHN0YXJzUmVmID0gaW5qZWN0Tmd0UmVmPFBvaW50cz4oKTtcblxuICAgIEBJbnB1dCgpIHNldCByYWRpdXMocmFkaXVzOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyByYWRpdXMgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGRlcHRoKGRlcHRoOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkZXB0aCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgY291bnQoY291bnQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGNvdW50IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBmYWN0b3IoZmFjdG9yOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmYWN0b3IgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHNhdHVyYXRpb24oc2F0dXJhdGlvbjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc2F0dXJhdGlvbiB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZmFkZShmYWRlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZmFkZSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgc3BlZWQoc3BlZWQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHNwZWVkIH0pO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmluaXRpYWxpemUoKTtcbiAgICAgICAgdGhpcy5zZXQoe1xuICAgICAgICAgICAgcmFkaXVzOiAxMDAsXG4gICAgICAgICAgICBkZXB0aDogNTAsXG4gICAgICAgICAgICBjb3VudDogNTAwMCxcbiAgICAgICAgICAgIHNhdHVyYXRpb246IDAsXG4gICAgICAgICAgICBmYWN0b3I6IDQsXG4gICAgICAgICAgICBmYWRlOiBmYWxzZSxcbiAgICAgICAgICAgIHNwZWVkOiAxLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb25uZWN0KFxuICAgICAgICAgICAgJ2J1ZmZlckF0dHJpYnV0ZXMnLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3QoXG4gICAgICAgICAgICAgICAgWydjb3VudCcsICdkZXB0aCcsICdmYWN0b3InLCAncmFkaXVzJywgJ3NhdHVyYXRpb24nXSxcbiAgICAgICAgICAgICAgICAoeyBjb3VudCwgZGVwdGgsIGZhY3RvciwgcmFkaXVzLCBzYXR1cmF0aW9uIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb25zOiBhbnlbXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2xvcnM6IGFueVtdID0gW107XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpemVzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogY291bnQgfSwgKCkgPT4gKDAuNSArIDAuNSAqIE1hdGgucmFuZG9tKCkpICogZmFjdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sb3IgPSBuZXcgQ29sb3IoKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHIgPSByYWRpdXMgKyBkZXB0aDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5jcmVtZW50ID0gZGVwdGggLyBjb3VudDtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByIC09IGluY3JlbWVudCAqIE1hdGgucmFuZG9tKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbnMucHVzaCguLi5nZW5TdGFyKHIpLnRvQXJyYXkoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvci5zZXRIU0woaSAvIGNvdW50LCBzYXR1cmF0aW9uLCAwLjkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzLnB1c2goY29sb3IuciwgY29sb3IuZywgY29sb3IuYik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uczogbmV3IEZsb2F0MzJBcnJheShwb3NpdGlvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzOiBuZXcgRmxvYXQzMkFycmF5KGNvbG9ycyksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplczogbmV3IEZsb2F0MzJBcnJheShzaXplcyksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBpbmplY3RCZWZvcmVSZW5kZXIodGhpcy5vbkJlZm9yZVJlbmRlci5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICBvbkJlZm9yZVJlbmRlcih7IGNsb2NrIH06IE5ndFJlbmRlclN0YXRlKSB7XG4gICAgICAgIHRoaXMubWF0ZXJpYWwudW5pZm9ybXNbJ3RpbWUnXS52YWx1ZSA9IGNsb2NrLmdldEVsYXBzZWRUaW1lKCkgKiB0aGlzLmdldCgnc3BlZWQnKTtcbiAgICB9XG59XG4iXX0=
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9saWIvc3RhcnMvc3RhcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFrQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDOztBQUUzRixNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFFcEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFTLEVBQUUsRUFBRTtJQUMxQixPQUFPLElBQUksT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQ2pDLElBQUksU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQ2xGLENBQUM7QUFDTixDQUFDLENBQUM7QUEyQkYsTUFBTSxPQUFPLFNBQVUsU0FBUSxVQUFVO0lBTXJDLElBQWEsTUFBTSxDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxD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T01fRUxFTUVOVFNfU0NIRU1BLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBpbmplY3RCZWZvcmVSZW5kZXIsIGluamVjdE5ndFJlZiwgTmd0QXJncywgTmd0UmVuZGVyU3RhdGUsIE5ndFJ4U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IFN0YXJGaWVsZE1hdGVyaWFsIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3NoYWRlcnMnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgQnVmZmVyQXR0cmlidXRlLCBCdWZmZXJHZW9tZXRyeSwgQ29sb3IsIFBvaW50cywgU3BoZXJpY2FsLCBWZWN0b3IzIH0gZnJvbSAndGhyZWUnO1xuXG5leHRlbmQoeyBQb2ludHMsIEJ1ZmZlckdlb21ldHJ5LCBCdWZmZXJBdHRyaWJ1dGUgfSk7XG5cbmNvbnN0IGdlblN0YXIgPSAocjogbnVtYmVyKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBWZWN0b3IzKCkuc2V0RnJvbVNwaGVyaWNhbChcbiAgICAgICAgbmV3IFNwaGVyaWNhbChyLCBNYXRoLmFjb3MoMSAtIE1hdGgucmFuZG9tKCkgKiAyKSwgTWF0aC5yYW5kb20oKSAqIDIgKiBNYXRoLlBJKVxuICAgICk7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtc3RhcnMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5ndC1wb2ludHMgW3JlZl09XCJzdGFyc1JlZlwiPlxuICAgICAgICAgICAgPG5ndC1idWZmZXItZ2VvbWV0cnk+XG4gICAgICAgICAgICAgICAgPG5ndC1idWZmZXItYXR0cmlidXRlIGF0dGFjaD1cImF0dHJpYnV0ZXMucG9zaXRpb25cIiAqYXJncz1cIltnZXQoJ2J1ZmZlckF0dHJpYnV0ZXMnKS5wb3NpdGlvbnMsIDNdXCIgLz5cbiAgICAgICAgICAgICAgICA8bmd0LWJ1ZmZlci1hdHRyaWJ1dGUgYXR0YWNoPVwiYXR0cmlidXRlcy5jb2xvclwiICphcmdzPVwiW2dldCgnYnVmZmVyQXR0cmlidXRlcycpLmNvbG9ycywgM11cIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZSBhdHRhY2g9XCJhdHRyaWJ1dGVzLnNpemVcIiAqYXJncz1cIltnZXQoJ2J1ZmZlckF0dHJpYnV0ZXMnKS5zaXplcywgMV1cIiAvPlxuICAgICAgICAgICAgPC9uZ3QtYnVmZmVyLWdlb21ldHJ5PlxuICAgICAgICAgICAgPG5ndC1wcmltaXRpdmVcbiAgICAgICAgICAgICAgICAqYXJncz1cIlttYXRlcmlhbF1cIlxuICAgICAgICAgICAgICAgIGF0dGFjaD1cIm1hdGVyaWFsXCJcbiAgICAgICAgICAgICAgICBbYmxlbmRpbmddPVwiQWRkaXRpdmVCbGVuZGluZ1wiXG4gICAgICAgICAgICAgICAgW2RlcHRoV3JpdGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFt0cmFuc3BhcmVudF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbdmVydGV4Q29sb3JzXT1cInRydWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZ3QtdmFsdWUgYXR0YWNoPVwidW5pZm9ybXMuZmFkZS52YWx1ZVwiIFtyYXdWYWx1ZV09XCJnZXQoJ2ZhZGUnKVwiIC8+XG4gICAgICAgICAgICA8L25ndC1wcmltaXRpdmU+XG4gICAgICAgIDwvbmd0LXBvaW50cz5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ3RBcmdzXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTdGFycyBleHRlbmRzIE5ndFJ4U3RvcmUge1xuICAgIHJlYWRvbmx5IEFkZGl0aXZlQmxlbmRpbmcgPSBUSFJFRS5BZGRpdGl2ZUJsZW5kaW5nO1xuICAgIHJlYWRvbmx5IG1hdGVyaWFsID0gbmV3IFN0YXJGaWVsZE1hdGVyaWFsKCk7XG5cbiAgICBASW5wdXQoKSBzdGFyc1JlZiA9IGluamVjdE5ndFJlZjxQb2ludHM+KCk7XG5cbiAgICBASW5wdXQoKSBzZXQgcmFkaXVzKHJhZGl1czogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgcmFkaXVzIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBkZXB0aChkZXB0aDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZGVwdGggfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGNvdW50KGNvdW50OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBjb3VudCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZmFjdG9yKGZhY3RvcjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZmFjdG9yIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBzYXR1cmF0aW9uKHNhdHVyYXRpb246IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHNhdHVyYXRpb24gfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGZhZGUoZmFkZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGZhZGUgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHNwZWVkKHNwZWVkOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBzcGVlZCB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMuc2V0KHtcbiAgICAgICAgICAgIHJhZGl1czogMTAwLFxuICAgICAgICAgICAgZGVwdGg6IDUwLFxuICAgICAgICAgICAgY291bnQ6IDUwMDAsXG4gICAgICAgICAgICBzYXR1cmF0aW9uOiAwLFxuICAgICAgICAgICAgZmFjdG9yOiA0LFxuICAgICAgICAgICAgZmFkZTogZmFsc2UsXG4gICAgICAgICAgICBzcGVlZDogMSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29ubmVjdChcbiAgICAgICAgICAgICdidWZmZXJBdHRyaWJ1dGVzJyxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0KFxuICAgICAgICAgICAgICAgIFsnY291bnQnLCAnZGVwdGgnLCAnZmFjdG9yJywgJ3JhZGl1cycsICdzYXR1cmF0aW9uJ10sXG4gICAgICAgICAgICAgICAgKHsgY291bnQsIGRlcHRoLCBmYWN0b3IsIHJhZGl1cywgc2F0dXJhdGlvbiB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uczogYW55W10gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sb3JzOiBhbnlbXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXplcyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IGNvdW50IH0sICgpID0+ICgwLjUgKyAwLjUgKiBNYXRoLnJhbmRvbSgpKSAqIGZhY3Rvcik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbG9yID0gbmV3IENvbG9yKCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCByID0gcmFkaXVzICsgZGVwdGg7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluY3JlbWVudCA9IGRlcHRoIC8gY291bnQ7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgciAtPSBpbmNyZW1lbnQgKiBNYXRoLnJhbmRvbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25zLnB1c2goLi4uZ2VuU3RhcihyKS50b0FycmF5KCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3Iuc2V0SFNMKGkgLyBjb3VudCwgc2F0dXJhdGlvbiwgMC45KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9ycy5wdXNoKGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IG5ldyBGbG9hdDMyQXJyYXkocG9zaXRpb25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yczogbmV3IEZsb2F0MzJBcnJheShjb2xvcnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM6IG5ldyBGbG9hdDMyQXJyYXkoc2l6ZXMpLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgaW5qZWN0QmVmb3JlUmVuZGVyKHRoaXMub25CZWZvcmVSZW5kZXIuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgb25CZWZvcmVSZW5kZXIoeyBjbG9jayB9OiBOZ3RSZW5kZXJTdGF0ZSkge1xuICAgICAgICB0aGlzLm1hdGVyaWFsLnVuaWZvcm1zWyd0aW1lJ10udmFsdWUgPSBjbG9jay5nZXRFbGFwc2VkVGltZSgpICogdGhpcy5nZXQoJ3NwZWVkJyk7XG4gICAgfVxufVxuIl19