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.
- package/abstractions/lib/catmull-rom-line.d.ts +125 -125
- package/abstractions/lib/edges.d.ts +123 -123
- package/abstractions/lib/line.d.ts +2 -2
- package/abstractions/lib/text.d.ts +1 -1
- package/esm2022/staging/index.mjs +2 -1
- package/esm2022/staging/lib/mask.mjs +78 -0
- package/fesm2022/angular-three-soba-staging.mjs +92 -21
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/materials/lib/mesh-refraction-material.d.ts +1 -1
- package/misc/lib/decal.d.ts +1 -1
- package/package.json +13 -13
- package/performances/lib/instances/instances.d.ts +1 -1
- package/performances/lib/points/points.d.ts +1 -1
- package/shaders/lib/mesh-refraction-material.d.ts +2 -2
- package/staging/index.d.ts +1 -0
- package/staging/lib/accumulative-shadows.d.ts +1 -1
- package/staging/lib/center.d.ts +2 -2
- package/staging/lib/mask.d.ts +30 -0
- package/staging/lib/sky.d.ts +1 -1
- package/staging/lib/spot-light.d.ts +1 -1
- package/staging/lib/stage.d.ts +5 -5
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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] |
|
|
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, "
|
|
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, "
|
|
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,
|
|
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=
|