angular-three-soba 2.0.0 → 2.1.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.
@@ -226,44 +226,20 @@ export declare class NgtsEdges {
226
226
  dispatchEvent?: (<T extends "dispose">(event: import("three").BaseEvent<T> & {
227
227
  dispose: {};
228
228
  }[T]) => void) | undefined;
229
+ vertexColors?: boolean | undefined;
229
230
  color?: ColorRepresentation | undefined;
231
+ alphaToCoverage?: boolean | undefined;
230
232
  dashed?: boolean | undefined;
231
233
  dashScale?: number | undefined;
232
234
  dashSize?: number | undefined;
233
235
  dashOffset?: number | undefined;
234
236
  gapSize?: number | undefined;
235
- opacity?: number | undefined;
236
- readonly isLineMaterial?: true | undefined;
237
237
  linewidth?: number | undefined;
238
238
  resolution?: import("three").Vector2 | undefined;
239
- alphaToCoverage?: boolean | undefined;
240
- worldUnits?: boolean | undefined;
241
- readonly isShaderMaterial?: true | undefined;
242
- defines?: {
243
- [key: string]: any;
244
- } | undefined;
245
- uniforms?: {
246
- [uniform: string]: import("three").IUniform<any>;
247
- } | undefined;
248
- uniformsGroups?: import("three").UniformsGroup[] | undefined;
249
- vertexShader?: string | undefined;
250
- fragmentShader?: string | undefined;
251
239
  wireframe?: boolean | undefined;
252
- wireframeLinewidth?: number | undefined;
253
- fog?: boolean | undefined;
254
- lights?: boolean | undefined;
255
- clipping?: boolean | undefined;
256
- extensions?: {
257
- clipCullDistance: boolean;
258
- multiDraw: boolean;
259
- } | undefined;
260
- defaultAttributeValues?: any;
261
- index0AttributeName?: string | undefined;
262
- uniformsNeedUpdate?: boolean | undefined;
263
- glslVersion?: import("three").GLSLVersion | null | undefined;
264
- setValues?: ((parameters: import("three").ShaderMaterialParameters) => void) | undefined;
265
- readonly isMaterial?: true | undefined;
240
+ worldUnits?: boolean | undefined;
266
241
  alphaHash?: boolean | undefined;
242
+ alphaTest?: number | undefined;
267
243
  blendAlpha?: number | undefined;
268
244
  blendColor?: ColorRepresentation | undefined;
269
245
  blendDst?: import("three").BlendingDstFactor | undefined;
@@ -277,17 +253,13 @@ export declare class NgtsEdges {
277
253
  clippingPlanes?: import("three").Plane[] | null | undefined;
278
254
  clipShadows?: boolean | undefined;
279
255
  colorWrite?: boolean | undefined;
256
+ defines?: {
257
+ [key: string]: any;
258
+ } | undefined;
280
259
  depthFunc?: import("three").DepthModes | undefined;
281
260
  depthTest?: boolean | undefined;
282
261
  depthWrite?: boolean | undefined;
283
- stencilWrite?: boolean | undefined;
284
- stencilFunc?: import("three").StencilFunc | undefined;
285
- stencilRef?: number | undefined;
286
- stencilWriteMask?: number | undefined;
287
- stencilFuncMask?: number | undefined;
288
- stencilFail?: import("three").StencilOp | undefined;
289
- stencilZFail?: import("three").StencilOp | undefined;
290
- stencilZPass?: import("three").StencilOp | undefined;
262
+ opacity?: number | undefined;
291
263
  polygonOffset?: boolean | undefined;
292
264
  polygonOffsetFactor?: number | undefined;
293
265
  polygonOffsetUnits?: number | undefined;
@@ -299,9 +271,37 @@ export declare class NgtsEdges {
299
271
  shadowSide?: import("three").Side | null | undefined;
300
272
  toneMapped?: boolean | undefined;
301
273
  transparent?: boolean | undefined;
302
- vertexColors?: boolean | undefined;
274
+ stencilWrite?: boolean | undefined;
275
+ stencilFunc?: import("three").StencilFunc | undefined;
276
+ stencilRef?: number | undefined;
277
+ stencilWriteMask?: number | undefined;
278
+ stencilFuncMask?: number | undefined;
279
+ stencilFail?: import("three").StencilOp | undefined;
280
+ stencilZFail?: import("three").StencilOp | undefined;
281
+ stencilZPass?: import("three").StencilOp | undefined;
282
+ readonly isLineMaterial?: true | undefined;
283
+ readonly isShaderMaterial?: true | undefined;
284
+ uniforms?: {
285
+ [uniform: string]: import("three").IUniform<any>;
286
+ } | undefined;
287
+ uniformsGroups?: import("three").UniformsGroup[] | undefined;
288
+ vertexShader?: string | undefined;
289
+ fragmentShader?: string | undefined;
290
+ wireframeLinewidth?: number | undefined;
291
+ fog?: boolean | undefined;
292
+ lights?: boolean | undefined;
293
+ clipping?: boolean | undefined;
294
+ extensions?: {
295
+ clipCullDistance: boolean;
296
+ multiDraw: boolean;
297
+ } | undefined;
298
+ defaultAttributeValues?: any;
299
+ index0AttributeName?: string | undefined;
300
+ uniformsNeedUpdate?: boolean | undefined;
301
+ glslVersion?: import("three").GLSLVersion | null | undefined;
302
+ setValues?: ((parameters: import("three").ShaderMaterialParameters) => void) | undefined;
303
+ readonly isMaterial?: true | undefined;
303
304
  version?: number | undefined;
304
- alphaTest?: number | undefined;
305
305
  onBeforeCompile?: ((parameters: import("three").WebGLProgramParametersWithUniforms, renderer: import("three").WebGLRenderer) => void) | undefined;
306
306
  customProgramCacheKey?: (() => string) | undefined;
307
307
  needsUpdate?: boolean | undefined;
@@ -526,44 +526,20 @@ export declare class NgtsEdges {
526
526
  dispatchEvent?: (<T extends "dispose">(event: import("three").BaseEvent<T> & {
527
527
  dispose: {};
528
528
  }[T]) => void) | undefined;
529
+ vertexColors?: boolean | undefined;
529
530
  color?: ColorRepresentation | undefined;
531
+ alphaToCoverage?: boolean | undefined;
530
532
  dashed?: boolean | undefined;
531
533
  dashScale?: number | undefined;
532
534
  dashSize?: number | undefined;
533
535
  dashOffset?: number | undefined;
534
536
  gapSize?: number | undefined;
535
- opacity?: number | undefined;
536
- readonly isLineMaterial?: true | undefined;
537
537
  linewidth?: number | undefined;
538
538
  resolution?: import("three").Vector2 | undefined;
539
- alphaToCoverage?: boolean | undefined;
540
- worldUnits?: boolean | undefined;
541
- readonly isShaderMaterial?: true | undefined;
542
- defines?: {
543
- [key: string]: any;
544
- } | undefined;
545
- uniforms?: {
546
- [uniform: string]: import("three").IUniform<any>;
547
- } | undefined;
548
- uniformsGroups?: import("three").UniformsGroup[] | undefined;
549
- vertexShader?: string | undefined;
550
- fragmentShader?: string | undefined;
551
539
  wireframe?: boolean | undefined;
552
- wireframeLinewidth?: number | undefined;
553
- fog?: boolean | undefined;
554
- lights?: boolean | undefined;
555
- clipping?: boolean | undefined;
556
- extensions?: {
557
- clipCullDistance: boolean;
558
- multiDraw: boolean;
559
- } | undefined;
560
- defaultAttributeValues?: any;
561
- index0AttributeName?: string | undefined;
562
- uniformsNeedUpdate?: boolean | undefined;
563
- glslVersion?: import("three").GLSLVersion | null | undefined;
564
- setValues?: ((parameters: import("three").ShaderMaterialParameters) => void) | undefined;
565
- readonly isMaterial?: true | undefined;
540
+ worldUnits?: boolean | undefined;
566
541
  alphaHash?: boolean | undefined;
542
+ alphaTest?: number | undefined;
567
543
  blendAlpha?: number | undefined;
568
544
  blendColor?: ColorRepresentation | undefined;
569
545
  blendDst?: import("three").BlendingDstFactor | undefined;
@@ -577,17 +553,13 @@ export declare class NgtsEdges {
577
553
  clippingPlanes?: import("three").Plane[] | null | undefined;
578
554
  clipShadows?: boolean | undefined;
579
555
  colorWrite?: boolean | undefined;
556
+ defines?: {
557
+ [key: string]: any;
558
+ } | undefined;
580
559
  depthFunc?: import("three").DepthModes | undefined;
581
560
  depthTest?: boolean | undefined;
582
561
  depthWrite?: boolean | undefined;
583
- stencilWrite?: boolean | undefined;
584
- stencilFunc?: import("three").StencilFunc | undefined;
585
- stencilRef?: number | undefined;
586
- stencilWriteMask?: number | undefined;
587
- stencilFuncMask?: number | undefined;
588
- stencilFail?: import("three").StencilOp | undefined;
589
- stencilZFail?: import("three").StencilOp | undefined;
590
- stencilZPass?: import("three").StencilOp | undefined;
562
+ opacity?: number | undefined;
591
563
  polygonOffset?: boolean | undefined;
592
564
  polygonOffsetFactor?: number | undefined;
593
565
  polygonOffsetUnits?: number | undefined;
@@ -599,9 +571,37 @@ export declare class NgtsEdges {
599
571
  shadowSide?: import("three").Side | null | undefined;
600
572
  toneMapped?: boolean | undefined;
601
573
  transparent?: boolean | undefined;
602
- vertexColors?: boolean | undefined;
574
+ stencilWrite?: boolean | undefined;
575
+ stencilFunc?: import("three").StencilFunc | undefined;
576
+ stencilRef?: number | undefined;
577
+ stencilWriteMask?: number | undefined;
578
+ stencilFuncMask?: number | undefined;
579
+ stencilFail?: import("three").StencilOp | undefined;
580
+ stencilZFail?: import("three").StencilOp | undefined;
581
+ stencilZPass?: import("three").StencilOp | undefined;
582
+ readonly isLineMaterial?: true | undefined;
583
+ readonly isShaderMaterial?: true | undefined;
584
+ uniforms?: {
585
+ [uniform: string]: import("three").IUniform<any>;
586
+ } | undefined;
587
+ uniformsGroups?: import("three").UniformsGroup[] | undefined;
588
+ vertexShader?: string | undefined;
589
+ fragmentShader?: string | undefined;
590
+ wireframeLinewidth?: number | undefined;
591
+ fog?: boolean | undefined;
592
+ lights?: boolean | undefined;
593
+ clipping?: boolean | undefined;
594
+ extensions?: {
595
+ clipCullDistance: boolean;
596
+ multiDraw: boolean;
597
+ } | undefined;
598
+ defaultAttributeValues?: any;
599
+ index0AttributeName?: string | undefined;
600
+ uniformsNeedUpdate?: boolean | undefined;
601
+ glslVersion?: import("three").GLSLVersion | null | undefined;
602
+ setValues?: ((parameters: import("three").ShaderMaterialParameters) => void) | undefined;
603
+ readonly isMaterial?: true | undefined;
603
604
  version?: number | undefined;
604
- alphaTest?: number | undefined;
605
605
  onBeforeCompile?: ((parameters: import("three").WebGLProgramParametersWithUniforms, renderer: import("three").WebGLRenderer) => void) | undefined;
606
606
  customProgramCacheKey?: (() => string) | undefined;
607
607
  needsUpdate?: boolean | undefined;
@@ -699,53 +699,19 @@ export declare class NgtsEdges {
699
699
  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> & {
700
700
  dispose: {};
701
701
  }[T]) => void)) | undefined;
702
- material?: ((import("three").Material | import("three").Material[]) & import("three-stdlib").LineMaterial) | undefined;
703
- isLine2?: true | undefined;
704
- isLineSegments2?: true | undefined;
705
- computeLineDistances?: (() => import("three-stdlib").Line2) | undefined;
706
- isMesh?: true | undefined;
707
- morphTargetInfluences?: number[] | undefined;
708
- morphTargetDictionary?: {
709
- [key: string]: number;
710
- } | undefined;
711
- updateMorphTargets?: (() => void) | undefined;
712
- getVertexPosition?: ((index: number, target: import("three").Vector3) => import("three").Vector3) | undefined;
713
702
  color?: ColorRepresentation | undefined;
703
+ alphaToCoverage?: boolean | undefined;
714
704
  dashed?: boolean | undefined;
715
705
  dashScale?: number | undefined;
716
706
  dashSize?: number | undefined;
717
707
  dashOffset?: number | undefined;
718
708
  gapSize?: number | undefined;
719
- opacity?: number | undefined;
720
- isLineMaterial?: true | undefined;
721
709
  linewidth?: number | undefined;
722
710
  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
711
  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;
712
+ worldUnits?: boolean | undefined;
748
713
  alphaHash?: boolean | undefined;
714
+ alphaTest?: number | undefined;
749
715
  blendAlpha?: number | undefined;
750
716
  blendColor?: ColorRepresentation | undefined;
751
717
  blendDst?: import("three").BlendingDstFactor | undefined;
@@ -759,17 +725,11 @@ export declare class NgtsEdges {
759
725
  clippingPlanes?: import("three").Plane[] | undefined;
760
726
  clipShadows?: boolean | undefined;
761
727
  colorWrite?: boolean | undefined;
728
+ defines?: any;
762
729
  depthFunc?: import("three").DepthModes | undefined;
763
730
  depthTest?: boolean | undefined;
764
731
  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;
732
+ opacity?: number | undefined;
773
733
  polygonOffset?: boolean | undefined;
774
734
  polygonOffsetFactor?: number | undefined;
775
735
  polygonOffsetUnits?: number | undefined;
@@ -781,13 +741,53 @@ export declare class NgtsEdges {
781
741
  shadowSide?: 0 | 1 | 2 | undefined;
782
742
  toneMapped?: boolean | undefined;
783
743
  transparent?: boolean | undefined;
744
+ format?: import("three").PixelFormat | undefined;
745
+ stencilWrite?: boolean | undefined;
746
+ stencilFunc?: import("three").StencilFunc | undefined;
747
+ stencilRef?: number | undefined;
748
+ stencilWriteMask?: number | undefined;
749
+ stencilFuncMask?: number | undefined;
750
+ stencilFail?: import("three").StencilOp | undefined;
751
+ stencilZFail?: import("three").StencilOp | undefined;
752
+ stencilZPass?: import("three").StencilOp | undefined;
753
+ material?: ((import("three").Material | import("three").Material[]) & import("three-stdlib").LineMaterial) | undefined;
754
+ isLine2?: true | undefined;
755
+ isLineSegments2?: true | undefined;
756
+ computeLineDistances?: (() => import("three-stdlib").Line2) | undefined;
757
+ isMesh?: true | undefined;
758
+ morphTargetInfluences?: number[] | undefined;
759
+ morphTargetDictionary?: {
760
+ [key: string]: number;
761
+ } | undefined;
762
+ updateMorphTargets?: (() => void) | undefined;
763
+ getVertexPosition?: ((index: number, target: import("three").Vector3) => import("three").Vector3) | 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[];
@@ -16,9 +16,9 @@ export type NgtsLineOptions = Omit<LineMaterialParameters, 'vertexColors' | 'col
16
16
  color?: ColorRepresentation;
17
17
  };
18
18
  export declare class NgtsLine {
19
- points: import("@angular/core").InputSignal<(number | Vector3 | [number, number, number] | Vector2 | [number, number])[]>;
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, "vertexColors" | "color" | "dashed" | "linewidth" | "lineWidth" | "segments">>;
22
22
  lineRef: import("@angular/core").Signal<ElementRef<Line2 | LineSegments2> | undefined>;
23
23
  private store;
24
24
  private size;
@@ -36,7 +36,7 @@ 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 autoEffect;
42
42
  private store;
@@ -9,6 +9,7 @@ export * from './lib/contact-shadows';
9
9
  export * from './lib/environment';
10
10
  export * from './lib/float';
11
11
  export * from './lib/lightformer';
12
+ export * from './lib/mask';
12
13
  export * from './lib/matcap-texture';
13
14
  export * from './lib/normal-texture';
14
15
  export * from './lib/randomized-lights';
@@ -16,4 +17,4 @@ export * from './lib/render-texture';
16
17
  export * from './lib/sky';
17
18
  export { NgtsSpotLight, NgtsSpotLightShadow } from './lib/spot-light';
18
19
  export * from './lib/stage';
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxXQUFXLENBQUM7QUFDMUIsT0FBTyxFQUFFLGFBQWEsRUFBd0IsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RixjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2FjY3VtdWxhdGl2ZS1zaGFkb3dzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhY2tkcm9wJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JiLWFuY2hvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ib3VuZHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2FtZXJhLXNoYWtlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NhdXN0aWNzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NlbnRlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250YWN0LXNoYWRvd3MnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW52aXJvbm1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmxvYXQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbGlnaHRmb3JtZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWF0Y2FwLXRleHR1cmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbm9ybWFsLXRleHR1cmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmFuZG9taXplZC1saWdodHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVuZGVyLXRleHR1cmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2t5JztcbmV4cG9ydCB7IE5ndHNTcG90TGlnaHQsIE5ndHNTcG90TGlnaHRPcHRpb25zLCBOZ3RzU3BvdExpZ2h0U2hhZG93IH0gZnJvbSAnLi9saWIvc3BvdC1saWdodCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGFnZSc7XG4iXX0=
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxXQUFXLENBQUM7QUFDMUIsT0FBTyxFQUFFLGFBQWEsRUFBd0IsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RixjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2FjY3VtdWxhdGl2ZS1zaGFkb3dzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhY2tkcm9wJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JiLWFuY2hvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ib3VuZHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2FtZXJhLXNoYWtlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NhdXN0aWNzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NlbnRlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250YWN0LXNoYWRvd3MnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW52aXJvbm1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmxvYXQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbGlnaHRmb3JtZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWFzayc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYXRjYXAtdGV4dHVyZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ub3JtYWwtdGV4dHVyZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yYW5kb21pemVkLWxpZ2h0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZW5kZXItdGV4dHVyZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9za3knO1xuZXhwb3J0IHsgTmd0c1Nwb3RMaWdodCwgTmd0c1Nwb3RMaWdodE9wdGlvbnMsIE5ndHNTcG90TGlnaHRTaGFkb3cgfSBmcm9tICcuL2xpYi9zcG90LWxpZ2h0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0YWdlJztcbiJdfQ==
@@ -0,0 +1,78 @@
1
+ import { afterNextRender, ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, input, numberAttribute, viewChild, } from '@angular/core';
2
+ import { extend, omit, pick } from 'angular-three';
3
+ import { assertInjector } from 'ngxtension/assert-injector';
4
+ import { injectAutoEffect } from 'ngxtension/auto-effect';
5
+ import { mergeInputs } from 'ngxtension/inject-inputs';
6
+ import { AlwaysStencilFunc, EqualStencilFunc, KeepStencilOp, Mesh, NotEqualStencilFunc, ReplaceStencilOp, } from 'three';
7
+ import * as i0 from "@angular/core";
8
+ const defaultOptions = {
9
+ colorWrite: false,
10
+ depthWrite: false,
11
+ };
12
+ export class NgtsMask {
13
+ constructor() {
14
+ this.id = input(1, { transform: numberAttribute });
15
+ this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
16
+ this.parameters = omit(this.options, ['colorWrite', 'depthWrite']);
17
+ this.meshRef = viewChild.required('mesh');
18
+ this.colorWrite = pick(this.options, 'colorWrite');
19
+ this.depthWrite = pick(this.options, 'depthWrite');
20
+ this.spread = computed(() => {
21
+ const [id, colorWrite, depthWrite] = [this.id(), this.colorWrite(), this.depthWrite()];
22
+ return {
23
+ colorWrite,
24
+ depthWrite,
25
+ stencilWrite: true,
26
+ stencilRef: id,
27
+ stencilFunc: AlwaysStencilFunc,
28
+ stencilFail: ReplaceStencilOp,
29
+ stencilZFail: ReplaceStencilOp,
30
+ stencilZPass: ReplaceStencilOp,
31
+ };
32
+ });
33
+ extend({ Mesh });
34
+ const autoEffect = injectAutoEffect();
35
+ afterNextRender(() => {
36
+ autoEffect(() => {
37
+ const [mesh, spread] = [this.meshRef().nativeElement, this.spread()];
38
+ Object.assign(mesh.material, spread);
39
+ });
40
+ });
41
+ }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsMask, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
43
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsMask, isStandalone: true, selector: "ngts-mask", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "meshRef", first: true, predicate: ["mesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
44
+ <ngt-mesh #mesh [renderOrder]="-id()" [parameters]="parameters()">
45
+ <ng-content />
46
+ </ngt-mesh>
47
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
48
+ }
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsMask, decorators: [{
50
+ type: Component,
51
+ args: [{
52
+ selector: 'ngts-mask',
53
+ standalone: true,
54
+ template: `
55
+ <ngt-mesh #mesh [renderOrder]="-id()" [parameters]="parameters()">
56
+ <ng-content />
57
+ </ngt-mesh>
58
+ `,
59
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
60
+ changeDetection: ChangeDetectionStrategy.OnPush,
61
+ }]
62
+ }], ctorParameters: () => [] });
63
+ export function injectMask(id, inverse = () => false, { injector } = {}) {
64
+ return assertInjector(injectMask, injector, () => {
65
+ return computed(() => {
66
+ const [_id, _inverse] = [id(), inverse()];
67
+ return {
68
+ stencilWrite: true,
69
+ stencilRef: _id,
70
+ stencilFunc: _inverse ? NotEqualStencilFunc : EqualStencilFunc,
71
+ stencilFail: KeepStencilOp,
72
+ stencilZFail: KeepStencilOp,
73
+ stencilZPass: KeepStencilOp,
74
+ };
75
+ });
76
+ });
77
+ }
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zdGFnaW5nL3NyYy9saWIvbWFzay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLHNCQUFzQixFQUd0QixLQUFLLEVBQ0wsZUFBZSxFQUNmLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFXLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQ04saUJBQWlCLEVBRWpCLGdCQUFnQixFQUNoQixhQUFhLEVBRWIsSUFBSSxFQUNKLG1CQUFtQixFQUNuQixnQkFBZ0IsR0FDaEIsTUFBTSxPQUFPLENBQUM7O0FBT2YsTUFBTSxjQUFjLEdBQW9CO0lBQ3ZDLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLFVBQVUsRUFBRSxLQUFLO0NBQ2pCLENBQUM7QUFhRixNQUFNLE9BQU8sUUFBUTtJQXdCcEI7UUF2QkEsT0FBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUM5QyxZQUFPLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTVFLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBRTlELFlBQU8sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUE2QyxNQUFNLENBQUMsQ0FBQztRQUV6RSxlQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDOUMsZUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzlDLFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzlCLE1BQU0sQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUN2RixPQUFPO2dCQUNOLFVBQVU7Z0JBQ1YsVUFBVTtnQkFDVixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsVUFBVSxFQUFFLEVBQUU7Z0JBQ2QsV0FBVyxFQUFFLGlCQUFpQjtnQkFDOUIsV0FBVyxFQUFFLGdCQUFnQjtnQkFDN0IsWUFBWSxFQUFFLGdCQUFnQjtnQkFDOUIsWUFBWSxFQUFFLGdCQUFnQjthQUM5QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFHRixNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sVUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFFdEMsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUNwQixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNmLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2dCQUNyRSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBbkNXLFFBQVE7a0dBQVIsUUFBUSwrYUFSVjs7OztFQUlUOzsyRkFJVyxRQUFRO2tCQVhwQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxXQUFXO29CQUNyQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0VBSVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQzs7QUF1Q0QsTUFBTSxVQUFVLFVBQVUsQ0FDekIsRUFBZ0IsRUFDaEIsVUFBeUIsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUNwQyxFQUFFLFFBQVEsS0FBOEIsRUFBRTtJQUUxQyxPQUFPLGNBQWMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtRQUNoRCxPQUFPLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDcEIsTUFBTSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDMUMsT0FBTztnQkFDTixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsVUFBVSxFQUFFLEdBQUc7Z0JBQ2YsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjtnQkFDOUQsV0FBVyxFQUFFLGFBQWE7Z0JBQzFCLFlBQVksRUFBRSxhQUFhO2dCQUMzQixZQUFZLEVBQUUsYUFBYTthQUMzQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRhZnRlck5leHRSZW5kZXIsXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRFbGVtZW50UmVmLFxuXHRJbmplY3Rvcixcblx0aW5wdXQsXG5cdG51bWJlckF0dHJpYnV0ZSxcblx0dmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgTmd0TWVzaCwgb21pdCwgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0b3IgfSBmcm9tICduZ3h0ZW5zaW9uL2Fzc2VydC1pbmplY3Rvcic7XG5pbXBvcnQgeyBpbmplY3RBdXRvRWZmZWN0IH0gZnJvbSAnbmd4dGVuc2lvbi9hdXRvLWVmZmVjdCc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQge1xuXHRBbHdheXNTdGVuY2lsRnVuYyxcblx0QnVmZmVyR2VvbWV0cnksXG5cdEVxdWFsU3RlbmNpbEZ1bmMsXG5cdEtlZXBTdGVuY2lsT3AsXG5cdE1hdGVyaWFsLFxuXHRNZXNoLFxuXHROb3RFcXVhbFN0ZW5jaWxGdW5jLFxuXHRSZXBsYWNlU3RlbmNpbE9wLFxufSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c01hc2tPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxOZ3RNZXNoPiB7XG5cdGNvbG9yV3JpdGU6IGJvb2xlYW47XG5cdGRlcHRoV3JpdGU6IGJvb2xlYW47XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzTWFza09wdGlvbnMgPSB7XG5cdGNvbG9yV3JpdGU6IGZhbHNlLFxuXHRkZXB0aFdyaXRlOiBmYWxzZSxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtbWFzaycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1tZXNoICNtZXNoIFtyZW5kZXJPcmRlcl09XCItaWQoKVwiIFtwYXJhbWV0ZXJzXT1cInBhcmFtZXRlcnMoKVwiPlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1tZXNoPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzTWFzayB7XG5cdGlkID0gaW5wdXQoMSwgeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KTtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgWydjb2xvcldyaXRlJywgJ2RlcHRoV3JpdGUnXSk7XG5cblx0bWVzaFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPE1lc2g8QnVmZmVyR2VvbWV0cnksIE1hdGVyaWFsPj4+KCdtZXNoJyk7XG5cblx0cHJpdmF0ZSBjb2xvcldyaXRlID0gcGljayh0aGlzLm9wdGlvbnMsICdjb2xvcldyaXRlJyk7XG5cdHByaXZhdGUgZGVwdGhXcml0ZSA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGVwdGhXcml0ZScpO1xuXHRwcml2YXRlIHNwcmVhZCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBbaWQsIGNvbG9yV3JpdGUsIGRlcHRoV3JpdGVdID0gW3RoaXMuaWQoKSwgdGhpcy5jb2xvcldyaXRlKCksIHRoaXMuZGVwdGhXcml0ZSgpXTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Y29sb3JXcml0ZSxcblx0XHRcdGRlcHRoV3JpdGUsXG5cdFx0XHRzdGVuY2lsV3JpdGU6IHRydWUsXG5cdFx0XHRzdGVuY2lsUmVmOiBpZCxcblx0XHRcdHN0ZW5jaWxGdW5jOiBBbHdheXNTdGVuY2lsRnVuYyxcblx0XHRcdHN0ZW5jaWxGYWlsOiBSZXBsYWNlU3RlbmNpbE9wLFxuXHRcdFx0c3RlbmNpbFpGYWlsOiBSZXBsYWNlU3RlbmNpbE9wLFxuXHRcdFx0c3RlbmNpbFpQYXNzOiBSZXBsYWNlU3RlbmNpbE9wLFxuXHRcdH07XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IE1lc2ggfSk7XG5cblx0XHRjb25zdCBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBbbWVzaCwgc3ByZWFkXSA9IFt0aGlzLm1lc2hSZWYoKS5uYXRpdmVFbGVtZW50LCB0aGlzLnNwcmVhZCgpXTtcblx0XHRcdFx0T2JqZWN0LmFzc2lnbihtZXNoLm1hdGVyaWFsLCBzcHJlYWQpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE1hc2soXG5cdGlkOiAoKSA9PiBudW1iZXIsXG5cdGludmVyc2U6ICgpID0+IGJvb2xlYW4gPSAoKSA9PiBmYWxzZSxcblx0eyBpbmplY3RvciB9OiB7IGluamVjdG9yPzogSW5qZWN0b3IgfSA9IHt9LFxuKSB7XG5cdHJldHVybiBhc3NlcnRJbmplY3RvcihpbmplY3RNYXNrLCBpbmplY3RvciwgKCkgPT4ge1xuXHRcdHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRjb25zdCBbX2lkLCBfaW52ZXJzZV0gPSBbaWQoKSwgaW52ZXJzZSgpXTtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHN0ZW5jaWxXcml0ZTogdHJ1ZSxcblx0XHRcdFx0c3RlbmNpbFJlZjogX2lkLFxuXHRcdFx0XHRzdGVuY2lsRnVuYzogX2ludmVyc2UgPyBOb3RFcXVhbFN0ZW5jaWxGdW5jIDogRXF1YWxTdGVuY2lsRnVuYyxcblx0XHRcdFx0c3RlbmNpbEZhaWw6IEtlZXBTdGVuY2lsT3AsXG5cdFx0XHRcdHN0ZW5jaWxaRmFpbDogS2VlcFN0ZW5jaWxPcCxcblx0XHRcdFx0c3RlbmNpbFpQYXNzOiBLZWVwU3RlbmNpbE9wLFxuXHRcdFx0fTtcblx0XHR9KTtcblx0fSk7XG59XG4iXX0=