angular-three-soba 2.12.0 → 2.14.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 (85) hide show
  1. package/abstractions/lib/catmull-rom-line.d.ts +117 -117
  2. package/abstractions/lib/edges.d.ts +117 -117
  3. package/abstractions/lib/gradient-texture.d.ts +2 -2
  4. package/abstractions/lib/line.d.ts +2 -2
  5. package/abstractions/lib/prism-geometry.d.ts +5 -5
  6. package/abstractions/lib/rounded-box.d.ts +1 -1
  7. package/abstractions/lib/text-3d.d.ts +19 -8
  8. package/abstractions/lib/text.d.ts +2 -2
  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/lib/camera-controls.d.ts +1 -1
  13. package/controls/lib/orbit-controls.d.ts +1 -4
  14. package/esm2022/abstractions/lib/gradient-texture.mjs +4 -4
  15. package/esm2022/abstractions/lib/text-3d.mjs +1 -1
  16. package/esm2022/cameras/lib/orthographic-camera.mjs +3 -3
  17. package/esm2022/cameras/lib/perspective-camera.mjs +4 -3
  18. package/esm2022/controls/lib/camera-controls.mjs +12 -13
  19. package/esm2022/controls/lib/orbit-controls.mjs +10 -28
  20. package/esm2022/controls/lib/scroll-controls.mjs +5 -6
  21. package/esm2022/gizmos/lib/gizmo-helper/gizmo-helper.mjs +9 -5
  22. package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewport.mjs +77 -61
  23. package/esm2022/gizmos/lib/pivot-controls/pivot-controls.mjs +37 -25
  24. package/esm2022/loaders/lib/loader.mjs +1 -7
  25. package/esm2022/materials/lib/custom-shader-material.mjs +1 -1
  26. package/esm2022/materials/lib/mesh-distort-material.mjs +3 -2
  27. package/esm2022/materials/lib/mesh-portal-material.mjs +10 -10
  28. package/esm2022/materials/lib/mesh-wobble-material.mjs +3 -2
  29. package/esm2022/materials/lib/point-material.mjs +4 -3
  30. package/esm2022/misc/lib/depth-buffer.mjs +2 -6
  31. package/esm2022/misc/lib/fbo.mjs +3 -3
  32. package/esm2022/misc/lib/preload.mjs +3 -3
  33. package/esm2022/staging/lib/accumulative-shadows.mjs +3 -3
  34. package/esm2022/staging/lib/bb-anchor.mjs +4 -4
  35. package/esm2022/staging/lib/environment/environment.mjs +21 -15
  36. package/esm2022/staging/lib/matcap-texture.mjs +3 -3
  37. package/esm2022/staging/lib/normal-texture.mjs +3 -3
  38. package/fesm2022/angular-three-soba-abstractions.mjs +3 -3
  39. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  40. package/fesm2022/angular-three-soba-cameras.mjs +4 -3
  41. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  42. package/fesm2022/angular-three-soba-controls.mjs +24 -44
  43. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  44. package/fesm2022/angular-three-soba-gizmos.mjs +120 -88
  45. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
  46. package/fesm2022/angular-three-soba-loaders.mjs +0 -6
  47. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  48. package/fesm2022/angular-three-soba-materials.mjs +13 -10
  49. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  50. package/fesm2022/angular-three-soba-misc.mjs +4 -8
  51. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  52. package/fesm2022/angular-three-soba-staging.mjs +26 -20
  53. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  54. package/gizmos/lib/gizmo-helper/gizmo-viewport.d.ts +1 -1
  55. package/gizmos/lib/pivot-controls/axis-arrow.d.ts +1 -1
  56. package/gizmos/lib/pivot-controls/axis-rotator.d.ts +1 -1
  57. package/gizmos/lib/pivot-controls/pivot-controls.d.ts +1 -1
  58. package/gizmos/lib/pivot-controls/plane-slider.d.ts +1 -1
  59. package/gizmos/lib/pivot-controls/scaling-sphere.d.ts +1 -1
  60. package/gizmos/lib/transform-controls.d.ts +2 -2
  61. package/loaders/lib/loader.d.ts +0 -2
  62. package/materials/lib/custom-shader-material.d.ts +3 -3
  63. package/materials/lib/mesh-portal-material.d.ts +10 -10
  64. package/materials/lib/mesh-refraction-material.d.ts +3 -3
  65. package/materials/lib/mesh-transmission-material.d.ts +1 -1
  66. package/materials/lib/point-material.d.ts +1 -0
  67. package/metadata.json +1 -1
  68. package/misc/lib/computed-attribute.d.ts +5 -5
  69. package/misc/lib/decal.d.ts +1 -1
  70. package/misc/lib/sampler.d.ts +1 -1
  71. package/package.json +4 -4
  72. package/performances/lib/instances/instances.d.ts +10 -10
  73. package/performances/lib/points/points.d.ts +22 -22
  74. package/performances/lib/segments/segments.d.ts +4 -4
  75. package/shaders/lib/mesh-refraction-material.d.ts +2 -2
  76. package/staging/lib/caustics.d.ts +1 -1
  77. package/staging/lib/center.d.ts +2 -2
  78. package/staging/lib/contact-shadows.d.ts +1 -1
  79. package/staging/lib/lightformer.d.ts +1 -1
  80. package/staging/lib/mask.d.ts +1 -1
  81. package/staging/lib/render-texture.d.ts +1 -1
  82. package/staging/lib/sky.d.ts +1 -1
  83. package/staging/lib/spot-light.d.ts +2 -2
  84. package/staging/lib/stage.d.ts +5 -5
  85. package/web-types.json +1 -1
@@ -217,7 +217,7 @@ export declare class NgtsEdges {
217
217
  removeEventListener: (<TEventKey_1 extends keyof import("angular-three").NgtNodeEventMap<import("three-stdlib").LineMaterial>>(type: TEventKey_1, listener: (this: import("angular-three").NgtNodeElement<import("three-stdlib").LineMaterial, [LineMaterialParameters]>, ev: import("angular-three").NgtNodeEventMap<import("three-stdlib").LineMaterial>[TEventKey_1]) => any) => void) & (<TEventKey_1 extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey_1, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey_1]) => any) => void);
218
218
  attach: string | string[] | import("angular-three").NgtAttachFunction;
219
219
  __ngt_args__: [LineMaterialParameters];
220
- readonly type?: string | undefined;
220
+ type?: string | undefined;
221
221
  toJSON?: ((meta?: import("three").JSONMeta) => import("three").ShaderMaterialJSON) | undefined;
222
222
  id?: number | undefined;
223
223
  uuid?: string | undefined;
@@ -234,43 +234,19 @@ export declare class NgtsEdges {
234
234
  dispose: {};
235
235
  }[T]) => void) | undefined;
236
236
  color?: ColorRepresentation | undefined;
237
+ vertexColors?: boolean | undefined;
238
+ alphaToCoverage?: boolean | undefined;
237
239
  dashed?: boolean | undefined;
238
240
  dashScale?: number | undefined;
239
241
  dashSize?: number | undefined;
240
242
  dashOffset?: number | undefined;
241
243
  gapSize?: number | undefined;
242
- opacity?: number | undefined;
243
- readonly isLineMaterial?: true | undefined;
244
244
  linewidth?: number | undefined;
245
245
  resolution?: import("three").Vector2 | undefined;
246
- alphaToCoverage?: boolean | undefined;
247
- worldUnits?: boolean | undefined;
248
- readonly isShaderMaterial?: true | undefined;
249
- defines?: {
250
- [key: string]: any;
251
- } | undefined;
252
- uniforms?: {
253
- [uniform: string]: import("three").IUniform<any>;
254
- } | undefined;
255
- uniformsGroups?: import("three").UniformsGroup[] | undefined;
256
- vertexShader?: string | undefined;
257
- fragmentShader?: string | undefined;
258
246
  wireframe?: boolean | undefined;
259
- wireframeLinewidth?: number | undefined;
260
- fog?: boolean | undefined;
261
- lights?: boolean | undefined;
262
- clipping?: boolean | undefined;
263
- extensions?: {
264
- clipCullDistance: boolean;
265
- multiDraw: boolean;
266
- } | undefined;
267
- defaultAttributeValues?: any;
268
- index0AttributeName?: string | undefined;
269
- uniformsNeedUpdate?: boolean | undefined;
270
- glslVersion?: import("three").GLSLVersion | null | undefined;
271
- setValues?: ((parameters: import("three").ShaderMaterialParameters) => void) | undefined;
272
- readonly isMaterial?: true | undefined;
247
+ worldUnits?: boolean | undefined;
273
248
  alphaHash?: boolean | undefined;
249
+ alphaTest?: number | undefined;
274
250
  blendAlpha?: number | undefined;
275
251
  blendColor?: ColorRepresentation | undefined;
276
252
  blendDst?: import("three").BlendingDstFactor | undefined;
@@ -284,17 +260,13 @@ export declare class NgtsEdges {
284
260
  clippingPlanes?: import("three").Plane[] | null | undefined;
285
261
  clipShadows?: boolean | undefined;
286
262
  colorWrite?: boolean | undefined;
263
+ defines?: {
264
+ [key: string]: any;
265
+ } | undefined;
287
266
  depthFunc?: import("three").DepthModes | undefined;
288
267
  depthTest?: boolean | undefined;
289
268
  depthWrite?: boolean | undefined;
290
- stencilWrite?: boolean | undefined;
291
- stencilFunc?: import("three").StencilFunc | undefined;
292
- stencilRef?: number | undefined;
293
- stencilWriteMask?: number | undefined;
294
- stencilFuncMask?: number | undefined;
295
- stencilFail?: import("three").StencilOp | undefined;
296
- stencilZFail?: import("three").StencilOp | undefined;
297
- stencilZPass?: import("three").StencilOp | undefined;
269
+ opacity?: number | undefined;
298
270
  polygonOffset?: boolean | undefined;
299
271
  polygonOffsetFactor?: number | undefined;
300
272
  polygonOffsetUnits?: number | undefined;
@@ -306,9 +278,37 @@ export declare class NgtsEdges {
306
278
  shadowSide?: import("three").Side | null | undefined;
307
279
  toneMapped?: boolean | undefined;
308
280
  transparent?: boolean | undefined;
309
- vertexColors?: boolean | undefined;
281
+ stencilWrite?: boolean | undefined;
282
+ stencilFunc?: import("three").StencilFunc | undefined;
283
+ stencilRef?: number | undefined;
284
+ stencilWriteMask?: number | undefined;
285
+ stencilFuncMask?: number | undefined;
286
+ stencilFail?: import("three").StencilOp | undefined;
287
+ stencilZFail?: import("three").StencilOp | undefined;
288
+ stencilZPass?: import("three").StencilOp | undefined;
289
+ readonly isLineMaterial?: true | undefined;
290
+ readonly isShaderMaterial?: true | undefined;
291
+ uniforms?: {
292
+ [uniform: string]: import("three").IUniform<any>;
293
+ } | undefined;
294
+ uniformsGroups?: import("three").UniformsGroup[] | undefined;
295
+ vertexShader?: string | undefined;
296
+ fragmentShader?: string | undefined;
297
+ wireframeLinewidth?: number | undefined;
298
+ fog?: boolean | undefined;
299
+ lights?: boolean | undefined;
300
+ clipping?: boolean | undefined;
301
+ extensions?: {
302
+ clipCullDistance: boolean;
303
+ multiDraw: boolean;
304
+ } | undefined;
305
+ defaultAttributeValues?: any;
306
+ index0AttributeName?: string | undefined;
307
+ uniformsNeedUpdate?: boolean | undefined;
308
+ glslVersion?: import("three").GLSLVersion | null | undefined;
309
+ setValues?: ((parameters: import("three").ShaderMaterialParameters) => void) | undefined;
310
+ readonly isMaterial?: true | undefined;
310
311
  version?: number | undefined;
311
- alphaTest?: number | undefined;
312
312
  onBeforeCompile?: ((parameters: import("three").WebGLProgramParametersWithUniforms, renderer: import("three").WebGLRenderer) => void) | undefined;
313
313
  customProgramCacheKey?: (() => string) | undefined;
314
314
  needsUpdate?: boolean | undefined;
@@ -517,7 +517,7 @@ export declare class NgtsEdges {
517
517
  removeEventListener: (<TEventKey_1 extends keyof import("angular-three").NgtNodeEventMap<import("three-stdlib").LineMaterial>>(type: TEventKey_1, listener: (this: import("angular-three").NgtNodeElement<import("three-stdlib").LineMaterial, [LineMaterialParameters]>, ev: import("angular-three").NgtNodeEventMap<import("three-stdlib").LineMaterial>[TEventKey_1]) => any) => void) & any;
518
518
  attach: string | string[] | import("angular-three").NgtAttachFunction;
519
519
  __ngt_args__: [LineMaterialParameters];
520
- readonly type?: string | undefined;
520
+ type?: string | undefined;
521
521
  toJSON?: ((meta?: import("three").JSONMeta) => import("three").ShaderMaterialJSON) | undefined;
522
522
  id?: number | undefined;
523
523
  uuid?: string | undefined;
@@ -534,43 +534,19 @@ export declare class NgtsEdges {
534
534
  dispose: {};
535
535
  }[T]) => void) | undefined;
536
536
  color?: ColorRepresentation | undefined;
537
+ vertexColors?: boolean | undefined;
538
+ alphaToCoverage?: boolean | undefined;
537
539
  dashed?: boolean | undefined;
538
540
  dashScale?: number | undefined;
539
541
  dashSize?: number | undefined;
540
542
  dashOffset?: number | undefined;
541
543
  gapSize?: number | undefined;
542
- opacity?: number | undefined;
543
- readonly isLineMaterial?: true | undefined;
544
544
  linewidth?: number | undefined;
545
545
  resolution?: import("three").Vector2 | undefined;
546
- alphaToCoverage?: boolean | undefined;
547
- worldUnits?: boolean | undefined;
548
- readonly isShaderMaterial?: true | undefined;
549
- defines?: {
550
- [key: string]: any;
551
- } | undefined;
552
- uniforms?: {
553
- [uniform: string]: import("three").IUniform<any>;
554
- } | undefined;
555
- uniformsGroups?: import("three").UniformsGroup[] | undefined;
556
- vertexShader?: string | undefined;
557
- fragmentShader?: string | undefined;
558
546
  wireframe?: boolean | undefined;
559
- wireframeLinewidth?: number | undefined;
560
- fog?: boolean | undefined;
561
- lights?: boolean | undefined;
562
- clipping?: boolean | undefined;
563
- extensions?: {
564
- clipCullDistance: boolean;
565
- multiDraw: boolean;
566
- } | undefined;
567
- defaultAttributeValues?: any;
568
- index0AttributeName?: string | undefined;
569
- uniformsNeedUpdate?: boolean | undefined;
570
- glslVersion?: import("three").GLSLVersion | null | undefined;
571
- setValues?: ((parameters: import("three").ShaderMaterialParameters) => void) | undefined;
572
- readonly isMaterial?: true | undefined;
547
+ worldUnits?: boolean | undefined;
573
548
  alphaHash?: boolean | undefined;
549
+ alphaTest?: number | undefined;
574
550
  blendAlpha?: number | undefined;
575
551
  blendColor?: ColorRepresentation | undefined;
576
552
  blendDst?: import("three").BlendingDstFactor | undefined;
@@ -584,17 +560,13 @@ export declare class NgtsEdges {
584
560
  clippingPlanes?: import("three").Plane[] | null | undefined;
585
561
  clipShadows?: boolean | undefined;
586
562
  colorWrite?: boolean | undefined;
563
+ defines?: {
564
+ [key: string]: any;
565
+ } | undefined;
587
566
  depthFunc?: import("three").DepthModes | undefined;
588
567
  depthTest?: boolean | undefined;
589
568
  depthWrite?: boolean | undefined;
590
- stencilWrite?: boolean | undefined;
591
- stencilFunc?: import("three").StencilFunc | undefined;
592
- stencilRef?: number | undefined;
593
- stencilWriteMask?: number | undefined;
594
- stencilFuncMask?: number | undefined;
595
- stencilFail?: import("three").StencilOp | undefined;
596
- stencilZFail?: import("three").StencilOp | undefined;
597
- stencilZPass?: import("three").StencilOp | undefined;
569
+ opacity?: number | undefined;
598
570
  polygonOffset?: boolean | undefined;
599
571
  polygonOffsetFactor?: number | undefined;
600
572
  polygonOffsetUnits?: number | undefined;
@@ -606,9 +578,37 @@ export declare class NgtsEdges {
606
578
  shadowSide?: import("three").Side | null | undefined;
607
579
  toneMapped?: boolean | undefined;
608
580
  transparent?: boolean | undefined;
609
- vertexColors?: boolean | undefined;
581
+ stencilWrite?: boolean | undefined;
582
+ stencilFunc?: import("three").StencilFunc | undefined;
583
+ stencilRef?: number | undefined;
584
+ stencilWriteMask?: number | undefined;
585
+ stencilFuncMask?: number | undefined;
586
+ stencilFail?: import("three").StencilOp | undefined;
587
+ stencilZFail?: import("three").StencilOp | undefined;
588
+ stencilZPass?: import("three").StencilOp | undefined;
589
+ readonly isLineMaterial?: true | undefined;
590
+ readonly isShaderMaterial?: true | undefined;
591
+ uniforms?: {
592
+ [uniform: string]: import("three").IUniform<any>;
593
+ } | undefined;
594
+ uniformsGroups?: import("three").UniformsGroup[] | undefined;
595
+ vertexShader?: string | undefined;
596
+ fragmentShader?: string | undefined;
597
+ wireframeLinewidth?: number | undefined;
598
+ fog?: boolean | undefined;
599
+ lights?: boolean | undefined;
600
+ clipping?: boolean | undefined;
601
+ extensions?: {
602
+ clipCullDistance: boolean;
603
+ multiDraw: boolean;
604
+ } | undefined;
605
+ defaultAttributeValues?: any;
606
+ index0AttributeName?: string | undefined;
607
+ uniformsNeedUpdate?: boolean | undefined;
608
+ glslVersion?: import("three").GLSLVersion | null | undefined;
609
+ setValues?: ((parameters: import("three").ShaderMaterialParameters) => void) | undefined;
610
+ readonly isMaterial?: true | undefined;
610
611
  version?: number | undefined;
611
- alphaTest?: number | undefined;
612
612
  onBeforeCompile?: ((parameters: import("three").WebGLProgramParametersWithUniforms, renderer: import("three").WebGLRenderer) => void) | undefined;
613
613
  customProgramCacheKey?: (() => string) | undefined;
614
614
  needsUpdate?: boolean | undefined;
@@ -707,45 +707,19 @@ export declare class NgtsEdges {
707
707
  dispatchEvent?: ((<T extends keyof import("three").Object3DEventMap>(event: import("three").BaseEvent<T> & import("three").Object3DEventMap[T]) => void) & (<T extends "dispose">(event: import("three").BaseEvent<T> & {
708
708
  dispose: {};
709
709
  }[T]) => void)) | undefined;
710
- isLine2?: true | undefined;
711
- isLineSegments2?: true | undefined;
712
- computeLineDistances?: (() => import("three-stdlib").Line2) | undefined;
713
710
  color?: ColorRepresentation | undefined;
711
+ alphaToCoverage?: boolean | undefined;
714
712
  dashed?: boolean | undefined;
715
713
  dashScale?: number | undefined;
716
714
  dashSize?: number | undefined;
717
715
  dashOffset?: number | undefined;
718
716
  gapSize?: number | undefined;
719
- opacity?: number | undefined;
720
- isLineMaterial?: true | undefined;
721
717
  linewidth?: number | undefined;
722
718
  resolution?: import("three").Vector2 | undefined;
723
- alphaToCoverage?: boolean | undefined;
724
- worldUnits?: boolean | undefined;
725
- isShaderMaterial?: true | undefined;
726
- defines?: any;
727
- uniforms?: {
728
- [uniform: string]: import("three").IUniform<any>;
729
- } | undefined;
730
- uniformsGroups?: import("three").UniformsGroup[] | undefined;
731
- vertexShader?: string | undefined;
732
- fragmentShader?: string | undefined;
733
719
  wireframe?: boolean | undefined;
734
- wireframeLinewidth?: number | undefined;
735
- fog?: boolean | undefined;
736
- lights?: boolean | undefined;
737
- clipping?: boolean | undefined;
738
- extensions?: {
739
- clipCullDistance: boolean;
740
- multiDraw: boolean;
741
- } | undefined;
742
- defaultAttributeValues?: any;
743
- index0AttributeName?: string | undefined;
744
- uniformsNeedUpdate?: boolean | undefined;
745
- glslVersion?: import("three").GLSLVersion | null | undefined;
746
- setValues?: ((parameters: import("three").ShaderMaterialParameters) => void) | undefined;
747
- isMaterial?: true | undefined;
720
+ worldUnits?: boolean | undefined;
748
721
  alphaHash?: boolean | undefined;
722
+ alphaTest?: number | undefined;
749
723
  blendAlpha?: number | undefined;
750
724
  blendColor?: ColorRepresentation | undefined;
751
725
  blendDst?: import("three").BlendingDstFactor | undefined;
@@ -759,17 +733,11 @@ export declare class NgtsEdges {
759
733
  clippingPlanes?: import("three").Plane[] | undefined;
760
734
  clipShadows?: boolean | undefined;
761
735
  colorWrite?: boolean | undefined;
736
+ defines?: any;
762
737
  depthFunc?: import("three").DepthModes | undefined;
763
738
  depthTest?: boolean | undefined;
764
739
  depthWrite?: boolean | undefined;
765
- stencilWrite?: boolean | undefined;
766
- stencilFunc?: import("three").StencilFunc | undefined;
767
- stencilRef?: number | undefined;
768
- stencilWriteMask?: number | undefined;
769
- stencilFuncMask?: number | undefined;
770
- stencilFail?: import("three").StencilOp | undefined;
771
- stencilZFail?: import("three").StencilOp | undefined;
772
- stencilZPass?: import("three").StencilOp | undefined;
740
+ opacity?: number | undefined;
773
741
  polygonOffset?: boolean | undefined;
774
742
  polygonOffsetFactor?: number | undefined;
775
743
  polygonOffsetUnits?: number | undefined;
@@ -781,13 +749,45 @@ export declare class NgtsEdges {
781
749
  shadowSide?: 0 | 1 | 2 | undefined;
782
750
  toneMapped?: boolean | undefined;
783
751
  transparent?: boolean | undefined;
752
+ format?: import("three").PixelFormat | undefined;
753
+ stencilWrite?: boolean | undefined;
754
+ stencilFunc?: import("three").StencilFunc | undefined;
755
+ stencilRef?: number | undefined;
756
+ stencilWriteMask?: number | undefined;
757
+ stencilFuncMask?: number | undefined;
758
+ stencilFail?: import("three").StencilOp | undefined;
759
+ stencilZFail?: import("three").StencilOp | undefined;
760
+ stencilZPass?: import("three").StencilOp | undefined;
761
+ isLine2?: true | undefined;
762
+ isLineSegments2?: true | undefined;
763
+ computeLineDistances?: (() => import("three-stdlib").Line2) | undefined;
764
+ isLineMaterial?: true | undefined;
765
+ isShaderMaterial?: true | undefined;
766
+ uniforms?: {
767
+ [uniform: string]: import("three").IUniform<any>;
768
+ } | undefined;
769
+ uniformsGroups?: import("three").UniformsGroup[] | undefined;
770
+ vertexShader?: string | undefined;
771
+ fragmentShader?: string | undefined;
772
+ wireframeLinewidth?: number | undefined;
773
+ fog?: boolean | undefined;
774
+ lights?: boolean | undefined;
775
+ clipping?: boolean | undefined;
776
+ extensions?: {
777
+ clipCullDistance: boolean;
778
+ multiDraw: boolean;
779
+ } | undefined;
780
+ defaultAttributeValues?: any;
781
+ index0AttributeName?: string | undefined;
782
+ uniformsNeedUpdate?: boolean | undefined;
783
+ glslVersion?: import("three").GLSLVersion | null | undefined;
784
+ setValues?: ((parameters: import("three").ShaderMaterialParameters) => void) | undefined;
785
+ isMaterial?: true | undefined;
784
786
  version?: number | undefined;
785
- alphaTest?: number | undefined;
786
787
  onBeforeCompile?: ((parameters: import("three").WebGLProgramParametersWithUniforms, renderer: import("three").WebGLRenderer) => void) | undefined;
787
788
  customProgramCacheKey?: (() => string) | undefined;
788
789
  needsUpdate?: boolean | undefined;
789
790
  onBuild?: ((object: import("three").Object3D, parameters: import("three").WebGLProgramParametersWithUniforms, renderer: import("three").WebGLRenderer) => void) | undefined;
790
- format?: import("three").PixelFormat | undefined;
791
791
  lineWidth?: number | undefined;
792
792
  }>;
793
793
  protected tmpPoints: number[];
@@ -13,9 +13,9 @@ export declare class NgtsGradientTexture {
13
13
  stops: import("@angular/core").InputSignal<number[]>;
14
14
  colors: import("@angular/core").InputSignal<ColorRepresentation[]>;
15
15
  options: import("@angular/core").InputSignalWithTransform<NgtsGradientTextureOptions, "" | Partial<NgtsGradientTextureOptions>>;
16
- parameters: import("@angular/core").Signal<Omit<NgtsGradientTextureOptions, "type" | "width" | "size" | "innerCircleRadius" | "outerCircleRadius">>;
16
+ parameters: import("@angular/core").Signal<Omit<NgtsGradientTextureOptions, "type" | "size" | "width" | "innerCircleRadius" | "outerCircleRadius">>;
17
17
  private store;
18
- gl: import("@angular/core").Signal<import("three").WebGLRenderer>;
18
+ outputColorSpace: import("@angular/core").Signal<string>;
19
19
  private document;
20
20
  canvas: import("@angular/core").Signal<HTMLCanvasElement>;
21
21
  constructor();
@@ -18,7 +18,7 @@ export type NgtsLineOptions = Omit<LineMaterialParameters, 'vertexColors' | 'col
18
18
  export declare class NgtsLine {
19
19
  points: import("@angular/core").InputSignal<(number | Vector3 | Vector2 | [number, number, number] | [number, number])[]>;
20
20
  options: import("@angular/core").InputSignalWithTransform<NgtsLineOptions, "" | Partial<NgtsLineOptions>>;
21
- parameters: import("@angular/core").Signal<Omit<NgtsLineOptions, "color" | "dashed" | "linewidth" | "vertexColors" | "lineWidth" | "segments">>;
21
+ parameters: import("@angular/core").Signal<Omit<NgtsLineOptions, "color" | "vertexColors" | "dashed" | "linewidth" | "segments" | "lineWidth">>;
22
22
  lineRef: import("@angular/core").Signal<ElementRef<Line2 | LineSegments2> | undefined>;
23
23
  private store;
24
24
  private size;
@@ -33,7 +33,7 @@ export declare class NgtsLine {
33
33
  line2: import("@angular/core").Signal<LineSegments2>;
34
34
  lineMaterial: LineMaterial;
35
35
  protected actualLineWidth: import("@angular/core").Signal<number>;
36
- protected itemSize: import("@angular/core").Signal<4 | 3>;
36
+ protected itemSize: import("@angular/core").Signal<3 | 4>;
37
37
  lineGeometry: import("@angular/core").Signal<LineSegmentsGeometry>;
38
38
  onGeometryAttached({ parent }: NgtAfterAttach<LineGeometry, Line2 | LineSegments2>): void;
39
39
  constructor();
@@ -14,13 +14,13 @@ export declare class NgtsPrismGeometry {
14
14
  depth: number;
15
15
  /** Height */
16
16
  height: number;
17
- bevelSegments?: number | undefined;
18
- steps?: number | undefined;
19
- curveSegments?: number | undefined;
20
17
  bevelEnabled?: boolean | undefined;
21
- bevelThickness?: number | undefined;
22
- bevelSize?: number | undefined;
23
18
  bevelOffset?: number | undefined;
19
+ bevelSize?: number | undefined;
20
+ bevelThickness?: number | undefined;
21
+ curveSegments?: number | undefined;
22
+ bevelSegments?: number | undefined;
23
+ steps?: number | undefined;
24
24
  extrudePath?: import("three").Curve<import("three").Vector3> | undefined;
25
25
  UVGenerator?: import("three").UVGenerator | undefined;
26
26
  }>;
@@ -15,7 +15,7 @@ export interface NgtsRoundedBoxOptions extends Partial<NgtMesh> {
15
15
  }
16
16
  export declare class NgtsRoundedBox {
17
17
  options: import("@angular/core").InputSignalWithTransform<NgtsRoundedBoxOptions, "" | Partial<NgtsRoundedBoxOptions>>;
18
- parameters: import("@angular/core").Signal<Omit<NgtsRoundedBoxOptions, "width" | "height" | "depth" | "radius" | "smoothness" | "bevelSegments" | "steps" | "creaseAngle">>;
18
+ parameters: import("@angular/core").Signal<Omit<NgtsRoundedBoxOptions, "height" | "bevelSegments" | "width" | "depth" | "radius" | "smoothness" | "steps" | "creaseAngle">>;
19
19
  private width;
20
20
  private height;
21
21
  private depth;
@@ -1,7 +1,8 @@
1
1
  import { ElementRef } from '@angular/core';
2
+ import { NgtGeometry } from 'angular-three';
2
3
  import { NgtsFontInput } from 'angular-three-soba/loaders';
3
4
  import { Mesh } from 'three';
4
- import { TextGeometryParameters } from 'three-stdlib';
5
+ import { TextGeometry, TextGeometryParameters } from 'three-stdlib';
5
6
  import * as i0 from "@angular/core";
6
7
  export interface NgtsText3DOptions extends Omit<TextGeometryParameters, 'font'> {
7
8
  bevelSegments: number;
@@ -290,26 +291,36 @@ export declare class NgtsText3D {
290
291
  layers: import("angular-three").NgtLayers;
291
292
  dispose: (() => void) | null;
292
293
  raycast: import("three").Object3D["raycast"] | null;
293
- }> & NgtsText3DOptions, "height" | "bevelSegments" | "size" | "curveSegments" | "bevelEnabled" | "bevelThickness" | "bevelSize" | "bevelOffset" | "lineHeight" | "letterSpacing" | "smooth">>;
294
+ }> & NgtsText3DOptions, "bevelEnabled" | "bevelOffset" | "bevelSize" | "bevelThickness" | "curveSegments" | "height" | "size" | "lineHeight" | "letterSpacing" | "bevelSegments" | "smooth">>;
294
295
  meshRef: import("@angular/core").Signal<ElementRef<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>>;
295
296
  private textGeometryRef;
296
297
  loadedFont: import("@angular/core").Signal<import("three-stdlib").Font | null>;
297
298
  private smooth;
298
299
  private textOptions;
299
300
  textArgs: import("@angular/core").Signal<(string | {
300
- height?: number | undefined;
301
- bevelSegments: number;
302
- size?: number | undefined;
303
- curveSegments?: number | undefined;
304
301
  bevelEnabled?: boolean | undefined;
305
- bevelThickness?: number | undefined;
306
- bevelSize?: number | undefined;
307
302
  bevelOffset?: number | undefined;
303
+ bevelSize?: number | undefined;
304
+ bevelThickness?: number | undefined;
305
+ curveSegments?: number | undefined;
306
+ height?: number | undefined;
307
+ size?: number | undefined;
308
308
  lineHeight?: number | undefined;
309
309
  letterSpacing?: number | undefined;
310
+ bevelSegments: number;
310
311
  font: import("three-stdlib").Font;
311
312
  })[] | null>;
312
313
  constructor();
313
314
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtsText3D, never>;
314
315
  static ɵcmp: i0.ɵɵComponentDeclaration<NgtsText3D, "ngts-text-3d", never, { "font": { "alias": "font"; "required": true; "isSignal": true; }; "text": { "alias": "text"; "required": true; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
315
316
  }
317
+ export type NgtTextGeometry = NgtGeometry<TextGeometry & TextGeometryParameters, typeof TextGeometry>;
318
+ declare global {
319
+ interface HTMLElementTagNameMap {
320
+ /**
321
+ * @extends ngt-extrude-geometry
322
+ * @rawOptions bevelEnabled|bevelOffset|bevelSize|bevelThickness|curveSegments|font|height|size|lineHeight|letterSpacing
323
+ */
324
+ 'ngt-text-geometry': NgtTextGeometry;
325
+ }
326
+ }
@@ -36,13 +36,13 @@ export interface NgtsTextOptions extends Partial<NgtMesh> {
36
36
  export declare class NgtsText {
37
37
  text: import("@angular/core").InputSignal<string>;
38
38
  options: import("@angular/core").InputSignalWithTransform<NgtsTextOptions, "" | Partial<NgtsTextOptions>>;
39
- parameters: import("@angular/core").Signal<Omit<NgtsTextOptions, "characters" | "fontSize" | "font" | "anchorX" | "anchorY" | "sdfGlyphSize">>;
39
+ parameters: import("@angular/core").Signal<Omit<NgtsTextOptions, "font" | "fontSize" | "sdfGlyphSize" | "anchorX" | "anchorY" | "characters">>;
40
40
  synced: import("@angular/core").OutputEmitterRef<Text>;
41
41
  private store;
42
42
  private invalidate;
43
43
  private characters;
44
44
  font: import("@angular/core").Signal<string | undefined>;
45
- anchorX: import("@angular/core").Signal<number | "center" | "left" | "right">;
45
+ anchorX: import("@angular/core").Signal<number | "left" | "center" | "right">;
46
46
  anchorY: import("@angular/core").Signal<number | "top" | "top-baseline" | "middle" | "bottom-baseline" | "bottom">;
47
47
  sdfGlyphSize: import("@angular/core").Signal<number>;
48
48
  fontSize: import("@angular/core").Signal<number>;
@@ -26,7 +26,7 @@ export interface NgtsCubeCameraOptions extends Partial<NgtGroup>, CubeCameraOpti
26
26
  }
27
27
  export declare class NgtsCubeCamera {
28
28
  options: import("@angular/core").InputSignalWithTransform<NgtsCubeCameraOptions, "" | Partial<NgtsCubeCameraOptions>>;
29
- parameters: import("@angular/core").Signal<Omit<NgtsCubeCameraOptions, "resolution" | "near" | "far" | "envMap" | "fog" | "frames">>;
29
+ parameters: import("@angular/core").Signal<Omit<NgtsCubeCameraOptions, "near" | "far" | "envMap" | "frames" | "resolution" | "fog">>;
30
30
  private cubeCamera;
31
31
  camera: import("@angular/core").Signal<CubeCamera>;
32
32
  texture: import("@angular/core").Signal<import("three").CubeTexture>;
@@ -16,7 +16,7 @@ export interface NgtsOrthographicCameraOptions extends Partial<NgtOrthographicCa
16
16
  }
17
17
  export declare class NgtsOrthographicCamera {
18
18
  options: import("@angular/core").InputSignalWithTransform<NgtsOrthographicCameraOptions, "" | Partial<NgtsOrthographicCameraOptions>>;
19
- protected parameters: import("@angular/core").Signal<Omit<NgtsOrthographicCameraOptions, "resolution" | "envMap" | "frames" | "left" | "right" | "top" | "bottom" | "makeDefault" | "manual">>;
19
+ protected parameters: import("@angular/core").Signal<Omit<NgtsOrthographicCameraOptions, "envMap" | "makeDefault" | "manual" | "frames" | "resolution" | "left" | "right" | "top" | "bottom">>;
20
20
  content: import("@angular/core").Signal<TemplateRef<any> | undefined>;
21
21
  cameraContent: import("@angular/core").Signal<TemplateRef<any> | undefined>;
22
22
  cameraRef: import("@angular/core").Signal<ElementRef<OrthographicCamera>>;
@@ -16,7 +16,7 @@ export interface NgtsPerspectiveCameraOptions extends Partial<NgtPerspectiveCame
16
16
  }
17
17
  export declare class NgtsPerspectiveCamera {
18
18
  options: import("@angular/core").InputSignalWithTransform<NgtsPerspectiveCameraOptions, "" | Partial<NgtsPerspectiveCameraOptions>>;
19
- protected parameters: import("@angular/core").Signal<Omit<NgtsPerspectiveCameraOptions, "resolution" | "envMap" | "frames" | "makeDefault" | "manual">>;
19
+ protected parameters: import("@angular/core").Signal<Omit<NgtsPerspectiveCameraOptions, "envMap" | "makeDefault" | "manual" | "frames" | "resolution">>;
20
20
  content: import("@angular/core").Signal<TemplateRef<any> | undefined>;
21
21
  cameraContent: import("@angular/core").Signal<TemplateRef<any> | undefined>;
22
22
  cameraRef: import("@angular/core").Signal<ElementRef<PerspectiveCamera>>;
@@ -10,7 +10,7 @@ export interface NgtsCameraControlsOptions {
10
10
  }
11
11
  export declare class NgtsCameraControls {
12
12
  options: import("@angular/core").InputSignalWithTransform<Partial<CameraControls> & NgtsCameraControlsOptions, "" | Partial<Partial<CameraControls> & NgtsCameraControlsOptions>>;
13
- parameters: import("@angular/core").Signal<Omit<Partial<CameraControls> & NgtsCameraControlsOptions, "camera" | "makeDefault" | "regress" | "domElement">>;
13
+ parameters: import("@angular/core").Signal<Omit<Partial<CameraControls> & NgtsCameraControlsOptions, "domElement" | "makeDefault" | "camera" | "regress">>;
14
14
  changed: import("@angular/core").OutputEmitterRef<any>;
15
15
  started: import("@angular/core").OutputEmitterRef<any>;
16
16
  ended: import("@angular/core").OutputEmitterRef<any>;
@@ -13,7 +13,7 @@ export interface NgtsOrbitControlsOptions {
13
13
  }
14
14
  export declare class NgtsOrbitControls {
15
15
  options: import("@angular/core").InputSignalWithTransform<Partial<OrbitControls> & NgtsOrbitControlsOptions, "" | Partial<Partial<OrbitControls> & NgtsOrbitControlsOptions>>;
16
- parameters: import("@angular/core").Signal<Omit<Partial<OrbitControls> & NgtsOrbitControlsOptions, "camera" | "makeDefault" | "regress" | "domElement" | "enableDamping" | "keyEvents">>;
16
+ parameters: import("@angular/core").Signal<Omit<Partial<OrbitControls> & NgtsOrbitControlsOptions, "domElement" | "enableDamping" | "makeDefault" | "camera" | "regress" | "keyEvents">>;
17
17
  changed: import("@angular/core").OutputEmitterRef<Event<string, unknown>>;
18
18
  started: import("@angular/core").OutputEmitterRef<Event<string, unknown>>;
19
19
  ended: import("@angular/core").OutputEmitterRef<Event<string, unknown>>;
@@ -30,9 +30,6 @@ export declare class NgtsOrbitControls {
30
30
  controls: import("@angular/core").Signal<OrbitControls>;
31
31
  protected enableDamping: import("@angular/core").Signal<boolean>;
32
32
  constructor();
33
- private connectElement;
34
- private makeControlsDefault;
35
- private setEvents;
36
33
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtsOrbitControls, never>;
37
34
  static ɵcmp: i0.ɵɵComponentDeclaration<NgtsOrbitControls, "ngts-orbit-controls", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; }, { "changed": "changed"; "started": "started"; "ended": "ended"; }, never, ["*"], true, never>;
38
35
  }
@@ -19,7 +19,7 @@ export class NgtsGradientTexture {
19
19
  this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
20
20
  this.parameters = omit(this.options, ['size', 'width', 'type', 'innerCircleRadius', 'outerCircleRadius']);
21
21
  this.store = injectStore();
22
- this.gl = this.store.select('gl');
22
+ this.outputColorSpace = this.store.select('gl', 'outputColorSpace');
23
23
  this.document = inject(DOCUMENT);
24
24
  this.canvas = computed(() => {
25
25
  const canvas = this.document.createElement('canvas');
@@ -61,7 +61,7 @@ export class NgtsGradientTexture {
61
61
  <ngt-canvas-texture
62
62
  *args="[canvas()]"
63
63
  [attach]="attach()"
64
- [colorSpace]="gl().outputColorSpace"
64
+ [colorSpace]="outputColorSpace()"
65
65
  [parameters]="parameters()"
66
66
  >
67
67
  <ng-content />
@@ -77,7 +77,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
77
77
  <ngt-canvas-texture
78
78
  *args="[canvas()]"
79
79
  [attach]="attach()"
80
- [colorSpace]="gl().outputColorSpace"
80
+ [colorSpace]="outputColorSpace()"
81
81
  [parameters]="parameters()"
82
82
  >
83
83
  <ng-content />
@@ -88,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
88
88
  imports: [NgtArgs],
89
89
  }]
90
90
  }], ctorParameters: () => [] });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhZGllbnQtdGV4dHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9hYnN0cmFjdGlvbnMvc3JjL2xpYi9ncmFkaWVudC10ZXh0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBNkIsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBdUIsTUFBTSxPQUFPLENBQUM7O0FBVWxFLE1BQU0sY0FBYyxHQUErQjtJQUNsRCxJQUFJLEVBQUUsSUFBSTtJQUNWLEtBQUssRUFBRSxFQUFFO0lBQ1QsSUFBSSxFQUFFLFFBQVE7SUFDZCxpQkFBaUIsRUFBRSxDQUFDO0lBQ3BCLGlCQUFpQixFQUFFLE1BQU07Q0FDekIsQ0FBQztBQW1CRixNQUFNLE9BQU8sbUJBQW1CO0lBMEQvQjtRQXpEQSxXQUFNLEdBQUcsS0FBSyxDQUFnQixLQUFLLENBQUMsQ0FBQztRQUNyQyxVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBaUIsQ0FBQztRQUN4QyxXQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBOEIsQ0FBQztRQUN0RCxZQUFPLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9B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U1QsNERBR1MsT0FBTzs7NEZBRUwsbUJBQW1CO2tCQWpCL0IsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7Ozs7RUFTVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0aW5qZWN0LFxuXHRpbnB1dCxcblx0dW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgaW5qZWN0U3RvcmUsIE5ndEFyZ3MsIE5ndEF0dGFjaGFibGUsIE5ndFRleHR1cmUsIG9taXQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IENhbnZhc1RleHR1cmUsIENvbG9yLCBDb2xvclJlcHJlc2VudGF0aW9uIH0gZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNHcmFkaWVudFRleHR1cmVPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxPbWl0PE5ndFRleHR1cmUsICd0eXBlJz4+IHtcblx0c2l6ZTogbnVtYmVyO1xuXHR3aWR0aDogbnVtYmVyO1xuXHR0eXBlOiAnbGluZWFyJyB8ICdyYWRpYWwnO1xuXHRpbm5lckNpcmNsZVJhZGl1czogbnVtYmVyO1xuXHRvdXRlckNpcmNsZVJhZGl1czogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c0dyYWRpZW50VGV4dHVyZU9wdGlvbnMgPSB7XG5cdHNpemU6IDEwMjQsXG5cdHdpZHRoOiAxNixcblx0dHlwZTogJ2xpbmVhcicsXG5cdGlubmVyQ2lyY2xlUmFkaXVzOiAwLFxuXHRvdXRlckNpcmNsZVJhZGl1czogJ2F1dG8nLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1ncmFkaWVudC10ZXh0dXJlJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LWNhbnZhcy10ZXh0dXJlXG5cdFx0XHQqYXJncz1cIltjYW52YXMoKV1cIlxuXHRcdFx0W2F0dGFjaF09XCJhdHRhY2goKVwiXG5cdFx0XHRbY29sb3JTcGFjZV09XCJnbCgpLm91dHB1dENvbG9yU3BhY2VcIlxuXHRcdFx0W3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCJcblx0XHQ+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LWNhbnZhcy10ZXh0dXJlPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNHcmFkaWVudFRleHR1cmUge1xuXHRhdHRhY2ggPSBpbnB1dDxOZ3RBdHRhY2hhYmxlPignbWFwJyk7XG5cdHN0b3BzID0gaW5wdXQucmVxdWlyZWQ8QXJyYXk8bnVtYmVyPj4oKTtcblx0Y29sb3JzID0gaW5wdXQucmVxdWlyZWQ8QXJyYXk8Q29sb3JSZXByZXNlbnRhdGlvbj4+KCk7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbJ3NpemUnLCAnd2lkdGgnLCAndHlwZScsICdpbm5lckNpcmNsZVJhZGl1cycsICdvdXRlckNpcmNsZVJhZGl1cyddKTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0Z2wgPSB0aGlzLnN0b3JlLnNlbGVjdCgnZ2wnKTtcblx0cHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cblx0Y2FudmFzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGNhbnZhcyA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG5cdFx0Y29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpITtcblx0XHRjb25zdCBbeyB3aWR0aCwgc2l6ZSwgdHlwZSwgb3V0ZXJDaXJjbGVSYWRpdXMsIGlubmVyQ2lyY2xlUmFkaXVzIH0sIHN0b3BzLCBjb2xvcnNdID0gW1xuXHRcdFx0dW50cmFja2VkKHRoaXMub3B0aW9ucyksXG5cdFx0XHR0aGlzLnN0b3BzKCksXG5cdFx0XHR0aGlzLmNvbG9ycygpLFxuXHRcdF07XG5cdFx0Y2FudmFzLndpZHRoID0gd2lkdGg7XG5cdFx0Y2FudmFzLmhlaWdodCA9IHNpemU7XG5cblx0XHRsZXQgZ3JhZGllbnQ6IENhbnZhc0dyYWRpZW50O1xuXG5cdFx0aWYgKHR5cGUgPT09ICdsaW5lYXInKSB7XG5cdFx0XHRncmFkaWVudCA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgMCwgMCwgc2l6ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IGNhbnZhc0NlbnRlclggPSBjYW52YXMud2lkdGggLyAyO1xuXHRcdFx0Y29uc3QgY2FudmFzQ2VudGVyWSA9IGNhbnZhcy5oZWlnaHQgLyAyO1xuXHRcdFx0Y29uc3QgcmFkaXVzID1cblx0XHRcdFx0b3V0ZXJDaXJjbGVSYWRpdXMgIT09ICdhdXRvJ1xuXHRcdFx0XHRcdD8gTWF0aC5hYnMoTnVtYmVyKG91dGVyQ2lyY2xlUmFkaXVzKSlcblx0XHRcdFx0XHQ6IE1hdGguc3FydChjYW52YXNDZW50ZXJYICoqIDIgKyBjYW52YXNDZW50ZXJZICoqIDIpO1xuXHRcdFx0Z3JhZGllbnQgPSBjb250ZXh0LmNyZWF0ZVJhZGlhbEdyYWRpZW50KFxuXHRcdFx0XHRjYW52YXNDZW50ZXJYLFxuXHRcdFx0XHRjYW52YXNDZW50ZXJZLFxuXHRcdFx0XHRNYXRoLmFicyhpbm5lckNpcmNsZVJhZGl1cyksXG5cdFx0XHRcdGNhbnZhc0NlbnRlclgsXG5cdFx0XHRcdGNhbnZhc0NlbnRlclksXG5cdFx0XHRcdHJhZGl1cyxcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdGVtcENvbG9yID0gbmV3IENvbG9yKCk7IC8vIHJldXNlIGluc3RhbmNlIGZvciBwZXJmb3JtYW5jZVxuXG5cdFx0bGV0IGkgPSBzdG9wcy5sZW5ndGg7XG5cdFx0d2hpbGUgKGktLSkge1xuXHRcdFx0Z3JhZGllbnQuYWRkQ29sb3JTdG9wKHN0b3BzW2ldLCB0ZW1wQ29sb3Iuc2V0KGNvbG9yc1tpXSkuZ2V0U3R5bGUoKSk7XG5cdFx0fVxuXG5cdFx0Y29udGV4dC5zYXZlKCk7XG5cdFx0Y29udGV4dC5maWxsU3R5bGUgPSBncmFkaWVudDtcblx0XHRjb250ZXh0LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBzaXplKTtcblx0XHRjb250ZXh0LnJlc3RvcmUoKTtcblxuXHRcdHJldHVybiBjYW52YXM7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IENhbnZhc1RleHR1cmUgfSk7XG5cdH1cbn1cbiJdfQ==
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhZGllbnQtdGV4dHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9hYnN0cmFjdGlvbnMvc3JjL2xpYi9ncmFkaWVudC10ZXh0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBNkIsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBdUIsTUFBTSxPQUFPLENBQUM7O0FBVWxFLE1BQU0sY0FBYyxHQUErQjtJQUNsRCxJQUFJLEVBQUUsSUFBSTtJQUNWLEtBQUssRUFBRSxFQUFFO0lBQ1QsSUFBSSxFQUFFLFFBQVE7SUFDZCxpQkFBaUIsRUFBRSxDQUFDO0lBQ3BCLGlCQUFpQixFQUFFLE1BQU07Q0FDekIsQ0FBQztBQW1CRixNQUFNLE9BQU8sbUJBQW1CO0lBMEQvQjtRQXpEQSxXQUFNLEdBQUcsS0FBSyxDQUFnQixLQUFLLENBQUMsQ0FBQztRQUNyQyxVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBaUIsQ0FBQztRQUN4QyxXQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBOEIsQ0FBQztRQUN0RCxZQUFPLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9B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ZHJCOzs7Ozs7Ozs7RUFTVCw0REFHUyxPQUFPOzs0RkFFTCxtQkFBbUI7a0JBakIvQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7OztFQVNUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRpbmplY3QsXG5cdGlucHV0LFxuXHR1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBpbmplY3RTdG9yZSwgTmd0QXJncywgTmd0QXR0YWNoYWJsZSwgTmd0VGV4dHVyZSwgb21pdCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQ2FudmFzVGV4dHVyZSwgQ29sb3IsIENvbG9yUmVwcmVzZW50YXRpb24gfSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c0dyYWRpZW50VGV4dHVyZU9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPE9taXQ8Tmd0VGV4dHVyZSwgJ3R5cGUnPj4ge1xuXHRzaXplOiBudW1iZXI7XG5cdHdpZHRoOiBudW1iZXI7XG5cdHR5cGU6ICdsaW5lYXInIHwgJ3JhZGlhbCc7XG5cdGlubmVyQ2lyY2xlUmFkaXVzOiBudW1iZXI7XG5cdG91dGVyQ2lyY2xlUmFkaXVzOiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzR3JhZGllbnRUZXh0dXJlT3B0aW9ucyA9IHtcblx0c2l6ZTogMTAyNCxcblx0d2lkdGg6IDE2LFxuXHR0eXBlOiAnbGluZWFyJyxcblx0aW5uZXJDaXJjbGVSYWRpdXM6IDAsXG5cdG91dGVyQ2lyY2xlUmFkaXVzOiAnYXV0bycsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLWdyYWRpZW50LXRleHR1cmUnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtY2FudmFzLXRleHR1cmVcblx0XHRcdCphcmdzPVwiW2NhbnZhcygpXVwiXG5cdFx0XHRbYXR0YWNoXT1cImF0dGFjaCgpXCJcblx0XHRcdFtjb2xvclNwYWNlXT1cIm91dHB1dENvbG9yU3BhY2UoKVwiXG5cdFx0XHRbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIlxuXHRcdD5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtY2FudmFzLXRleHR1cmU+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0dyYWRpZW50VGV4dHVyZSB7XG5cdGF0dGFjaCA9IGlucHV0PE5ndEF0dGFjaGFibGU+KCdtYXAnKTtcblx0c3RvcHMgPSBpbnB1dC5yZXF1aXJlZDxBcnJheTxudW1iZXI+PigpO1xuXHRjb2xvcnMgPSBpbnB1dC5yZXF1aXJlZDxBcnJheTxDb2xvclJlcHJlc2VudGF0aW9uPj4oKTtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXHRwYXJhbWV0ZXJzID0gb21pdCh0aGlzLm9wdGlvbnMsIFsnc2l6ZScsICd3aWR0aCcsICd0eXBlJywgJ2lubmVyQ2lyY2xlUmFkaXVzJywgJ291dGVyQ2lyY2xlUmFkaXVzJ10pO1xuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRvdXRwdXRDb2xvclNwYWNlID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2dsJywgJ291dHB1dENvbG9yU3BhY2UnKTtcblx0cHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cblx0Y2FudmFzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGNhbnZhcyA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG5cdFx0Y29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpITtcblx0XHRjb25zdCBbeyB3aWR0aCwgc2l6ZSwgdHlwZSwgb3V0ZXJDaXJjbGVSYWRpdXMsIGlubmVyQ2lyY2xlUmFkaXVzIH0sIHN0b3BzLCBjb2xvcnNdID0gW1xuXHRcdFx0dW50cmFja2VkKHRoaXMub3B0aW9ucyksXG5cdFx0XHR0aGlzLnN0b3BzKCksXG5cdFx0XHR0aGlzLmNvbG9ycygpLFxuXHRcdF07XG5cdFx0Y2FudmFzLndpZHRoID0gd2lkdGg7XG5cdFx0Y2FudmFzLmhlaWdodCA9IHNpemU7XG5cblx0XHRsZXQgZ3JhZGllbnQ6IENhbnZhc0dyYWRpZW50O1xuXG5cdFx0aWYgKHR5cGUgPT09ICdsaW5lYXInKSB7XG5cdFx0XHRncmFkaWVudCA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgMCwgMCwgc2l6ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IGNhbnZhc0NlbnRlclggPSBjYW52YXMud2lkdGggLyAyO1xuXHRcdFx0Y29uc3QgY2FudmFzQ2VudGVyWSA9IGNhbnZhcy5oZWlnaHQgLyAyO1xuXHRcdFx0Y29uc3QgcmFkaXVzID1cblx0XHRcdFx0b3V0ZXJDaXJjbGVSYWRpdXMgIT09ICdhdXRvJ1xuXHRcdFx0XHRcdD8gTWF0aC5hYnMoTnVtYmVyKG91dGVyQ2lyY2xlUmFkaXVzKSlcblx0XHRcdFx0XHQ6IE1hdGguc3FydChjYW52YXNDZW50ZXJYICoqIDIgKyBjYW52YXNDZW50ZXJZICoqIDIpO1xuXHRcdFx0Z3JhZGllbnQgPSBjb250ZXh0LmNyZWF0ZVJhZGlhbEdyYWRpZW50KFxuXHRcdFx0XHRjYW52YXNDZW50ZXJYLFxuXHRcdFx0XHRjYW52YXNDZW50ZXJZLFxuXHRcdFx0XHRNYXRoLmFicyhpbm5lckNpcmNsZVJhZGl1cyksXG5cdFx0XHRcdGNhbnZhc0NlbnRlclgsXG5cdFx0XHRcdGNhbnZhc0NlbnRlclksXG5cdFx0XHRcdHJhZGl1cyxcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdGVtcENvbG9yID0gbmV3IENvbG9yKCk7IC8vIHJldXNlIGluc3RhbmNlIGZvciBwZXJmb3JtYW5jZVxuXG5cdFx0bGV0IGkgPSBzdG9wcy5sZW5ndGg7XG5cdFx0d2hpbGUgKGktLSkge1xuXHRcdFx0Z3JhZGllbnQuYWRkQ29sb3JTdG9wKHN0b3BzW2ldLCB0ZW1wQ29sb3Iuc2V0KGNvbG9yc1tpXSkuZ2V0U3R5bGUoKSk7XG5cdFx0fVxuXG5cdFx0Y29udGV4dC5zYXZlKCk7XG5cdFx0Y29udGV4dC5maWxsU3R5bGUgPSBncmFkaWVudDtcblx0XHRjb250ZXh0LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBzaXplKTtcblx0XHRjb250ZXh0LnJlc3RvcmUoKTtcblxuXHRcdHJldHVybiBjYW52YXM7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IENhbnZhc1RleHR1cmUgfSk7XG5cdH1cbn1cbiJdfQ==