angular-three-soba 2.0.0-beta.4 → 2.0.0-beta.41
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/billboard/billboard.d.ts +12 -8
- package/abstractions/detailed/detailed.d.ts +26 -0
- package/abstractions/edges/edges.d.ts +24 -12
- package/abstractions/grid/grid.d.ts +42 -51
- package/abstractions/index.d.ts +1 -7
- package/abstractions/text/text.d.ts +10 -4
- package/abstractions/text-3d/text-3d.d.ts +51 -41
- package/cameras/camera/camera-content.d.ts +1 -1
- package/cameras/camera/camera.d.ts +16 -13
- package/cameras/cube-camera/cube-camera.d.ts +49 -23
- package/cameras/index.d.ts +0 -1
- package/cameras/orthographic-camera/orthographic-camera.d.ts +29 -18
- package/cameras/perspective-camera/perspective-camera.d.ts +10 -1
- package/controls/orbit-controls/orbit-controls.d.ts +34 -15
- package/esm2022/abstractions/billboard/billboard.mjs +36 -33
- package/esm2022/abstractions/detailed/detailed.mjs +64 -0
- package/esm2022/abstractions/edges/edges.mjs +58 -63
- package/esm2022/abstractions/grid/grid.mjs +140 -110
- package/esm2022/abstractions/index.mjs +2 -8
- package/esm2022/abstractions/text/text.mjs +123 -122
- package/esm2022/abstractions/text-3d/text-3d.mjs +120 -115
- package/esm2022/cameras/camera/camera-content.mjs +6 -6
- package/esm2022/cameras/camera/camera.mjs +48 -42
- package/esm2022/cameras/cube-camera/cube-camera.mjs +120 -100
- package/esm2022/cameras/index.mjs +1 -2
- package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +78 -75
- package/esm2022/cameras/perspective-camera/perspective-camera.mjs +25 -26
- package/esm2022/controls/orbit-controls/orbit-controls.mjs +109 -85
- package/esm2022/gizmos/angular-three-soba-gizmos.mjs +5 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-helper.mjs +198 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/constants.mjs +31 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +93 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +151 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.mjs +66 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +71 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +195 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +272 -0
- package/esm2022/gizmos/index.mjs +4 -0
- package/esm2022/loaders/gltf-loader/gltf-loader.mjs +14 -9
- package/esm2022/loaders/loader/loader.mjs +92 -87
- package/esm2022/loaders/progress/progress.mjs +31 -30
- package/esm2022/loaders/texture-loader/texture-loader.mjs +20 -15
- package/esm2022/materials/index.mjs +2 -1
- package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +60 -51
- package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +239 -255
- package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +99 -97
- package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +164 -144
- package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +44 -42
- package/esm2022/materials/point-material/point-material.mjs +50 -0
- package/esm2022/misc/animations/animations.mjs +28 -23
- package/esm2022/misc/bake-shadows/bake-shadows.mjs +13 -13
- package/esm2022/misc/caustics/caustics.mjs +387 -0
- package/esm2022/misc/decal/decal.mjs +187 -0
- package/esm2022/misc/depth-buffer/depth-buffer.mjs +41 -37
- package/esm2022/misc/example/example.mjs +161 -0
- package/esm2022/misc/fbo/fbo.mjs +42 -36
- package/esm2022/misc/html/html-wrapper.mjs +478 -0
- package/esm2022/misc/html/html.mjs +305 -0
- package/esm2022/misc/index.mjs +10 -1
- package/esm2022/misc/sampler/sampler.mjs +132 -0
- package/esm2022/misc/shadow/shadow.mjs +111 -0
- package/esm2022/misc/stats-gl/stats-gl.mjs +61 -0
- package/esm2022/misc/trail/trail.mjs +204 -0
- package/esm2022/misc/trail-texture/inject-trail-texture.mjs +17 -0
- package/esm2022/misc/trail-texture/trail-texture.mjs +106 -0
- package/esm2022/modifiers/angular-three-soba-modifiers.mjs +5 -0
- package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +64 -0
- package/esm2022/modifiers/index.mjs +2 -0
- package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +44 -0
- package/esm2022/performances/adaptive-events/adaptive-events.mjs +27 -0
- package/esm2022/performances/angular-three-soba-performances.mjs +5 -0
- package/esm2022/performances/index.mjs +8 -0
- package/esm2022/performances/instances/instances.mjs +221 -0
- package/esm2022/performances/instances/position-mesh.mjs +52 -0
- package/esm2022/performances/points/points-input.mjs +64 -0
- package/esm2022/performances/points/points.mjs +327 -0
- package/esm2022/performances/points/position-point.mjs +54 -0
- package/esm2022/performances/segments/segment-object.mjs +9 -0
- package/esm2022/performances/segments/segments.mjs +183 -0
- package/esm2022/shaders/blur-pass/blur-pass.mjs +2 -2
- package/esm2022/shaders/caustics/caustics-material.mjs +130 -0
- package/esm2022/shaders/caustics/caustics-projection-material.mjs +32 -0
- package/esm2022/shaders/convolution-material/convolution-material.mjs +3 -2
- package/esm2022/shaders/discard-material/discard-material.mjs +1 -1
- package/esm2022/shaders/grid-material/grid-material.mjs +30 -14
- package/esm2022/shaders/index.mjs +5 -3
- package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +42 -41
- package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +2 -2
- package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +3 -2
- package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +7 -4
- package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +1 -1
- package/esm2022/shaders/shader-material/shader-material.mjs +3 -5
- package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +18 -25
- package/esm2022/shaders/sparkles-material/sparkles-material.mjs +32 -46
- package/esm2022/shaders/spot-light-material/spot-light-material.mjs +8 -7
- package/esm2022/shaders/star-field-material/star-field-material.mjs +3 -2
- package/esm2022/shaders/wireframe-material/wireframe-material.mjs +247 -0
- package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +161 -176
- package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +8 -8
- package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +129 -129
- package/esm2022/staging/backdrop/backdrop.mjs +77 -0
- package/esm2022/staging/bb-anchor/bb-anchor.mjs +69 -0
- package/esm2022/staging/bounds/bounds.mjs +145 -143
- package/esm2022/staging/camera-shake/camera-shake.mjs +86 -80
- package/esm2022/staging/center/center.mjs +129 -112
- package/esm2022/staging/cloud/cloud.mjs +118 -124
- package/esm2022/staging/contact-shadows/contact-shadows.mjs +131 -136
- package/esm2022/staging/environment/assets.mjs +12 -12
- package/esm2022/staging/environment/environment-cube.mjs +28 -30
- package/esm2022/staging/environment/environment-ground.mjs +17 -19
- package/esm2022/staging/environment/environment-input.mjs +98 -85
- package/esm2022/staging/environment/environment-map.mjs +33 -33
- package/esm2022/staging/environment/environment-portal.mjs +75 -97
- package/esm2022/staging/environment/environment.mjs +34 -51
- package/esm2022/staging/environment/utils.mjs +40 -17
- package/esm2022/staging/float/float.mjs +70 -58
- package/esm2022/staging/index.mjs +7 -3
- package/esm2022/staging/matcap-texture/matcap-texture.mjs +64 -0
- package/esm2022/staging/normal-texture/normal-texture.mjs +53 -0
- package/esm2022/staging/sky/sky.mjs +85 -80
- package/esm2022/staging/sparkles/sparkles.mjs +108 -105
- package/esm2022/staging/spot-light/shadow-mesh-input.mjs +63 -0
- package/esm2022/staging/spot-light/shadow-mesh.mjs +267 -0
- package/esm2022/staging/spot-light/spot-light-input.mjs +67 -58
- package/esm2022/staging/spot-light/spot-light.mjs +51 -63
- package/esm2022/staging/spot-light/volumetric-mesh.mjs +67 -70
- package/esm2022/staging/stage/stage.mjs +305 -290
- package/esm2022/staging/stars/stars.mjs +101 -102
- package/esm2022/staging/wireframe/wireframe-input.mjs +191 -0
- package/esm2022/staging/wireframe/wireframe.mjs +228 -0
- package/esm2022/utils/angular-three-soba-utils.mjs +5 -0
- package/esm2022/utils/constants.mjs +3 -0
- package/esm2022/utils/content/content.mjs +15 -0
- package/esm2022/utils/index.mjs +3 -0
- package/fesm2022/angular-three-soba-abstractions.mjs +504 -2079
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +293 -260
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +108 -83
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-gizmos.mjs +1045 -0
- package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -0
- package/fesm2022/angular-three-soba-loaders.mjs +148 -132
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +656 -588
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +2202 -99
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-modifiers.mjs +71 -0
- package/fesm2022/angular-three-soba-modifiers.mjs.map +1 -0
- package/fesm2022/angular-three-soba-performances.mjs +957 -0
- package/fesm2022/angular-three-soba-performances.mjs.map +1 -0
- package/fesm2022/angular-three-soba-shaders.mjs +508 -269
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +2910 -2573
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-utils.mjs +25 -0
- package/fesm2022/angular-three-soba-utils.mjs.map +1 -0
- package/gizmos/README.md +3 -0
- package/gizmos/gizmo-helper/gizmo-helper.d.ts +73 -0
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +22 -0
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +29 -0
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.d.ts +33 -0
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +10 -0
- package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +40 -0
- package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +30 -0
- package/gizmos/index.d.ts +3 -0
- package/loaders/gltf-loader/gltf-loader.d.ts +15 -4
- package/loaders/loader/loader.d.ts +19 -17
- package/loaders/progress/progress.d.ts +1 -1
- package/loaders/texture-loader/texture-loader.d.ts +8 -3
- package/materials/index.d.ts +1 -0
- package/materials/mesh-distort-material/mesh-distort-material.d.ts +25 -15
- package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +74 -56
- package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +33 -21
- package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +55 -39
- package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +19 -10
- package/materials/point-material/point-material.d.ts +24 -0
- package/metadata.json +1 -0
- package/misc/animations/animations.d.ts +6 -4
- package/misc/caustics/caustics.d.ts +87 -0
- package/misc/decal/decal.d.ts +49 -0
- package/misc/depth-buffer/depth-buffer.d.ts +2 -2
- package/misc/example/example.d.ts +85 -0
- package/misc/fbo/fbo.d.ts +2 -2
- package/misc/html/html-wrapper.d.ts +559 -0
- package/misc/html/html.d.ts +218 -0
- package/misc/index.d.ts +9 -0
- package/misc/sampler/sampler.d.ts +67 -0
- package/misc/shadow/shadow.d.ts +37 -0
- package/misc/stats-gl/stats-gl.d.ts +24 -0
- package/misc/trail/trail.d.ts +57 -0
- package/misc/trail-texture/inject-trail-texture.d.ts +9 -0
- package/misc/trail-texture/trail-texture.d.ts +50 -0
- package/modifiers/README.md +3 -0
- package/modifiers/curve-modifier/curve-modifier.d.ts +23 -0
- package/modifiers/index.d.ts +1 -0
- package/package.json +42 -24
- package/performances/README.md +3 -0
- package/performances/adaptive-dpr/adaptive-dpr.d.ts +14 -0
- package/{performance/adaptive → performances/adaptive-events}/adaptive-events.d.ts +3 -0
- package/performances/index.d.ts +7 -0
- package/performances/instances/instances.d.ts +83 -0
- package/{performance → performances}/instances/position-mesh.d.ts +1 -1
- package/performances/points/points-input.d.ts +32 -0
- package/performances/points/points.d.ts +96 -0
- package/performances/points/position-point.d.ts +11 -0
- package/performances/segments/segment-object.d.ts +7 -0
- package/performances/segments/segments.d.ts +128 -0
- package/shaders/grid-material/grid-material.d.ts +33 -0
- package/shaders/index.d.ts +4 -2
- package/shaders/mesh-distort-material/mesh-distort-material.d.ts +173 -6
- package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +1 -1
- package/shaders/shader-material/shader-material.d.ts +2 -2
- package/shaders/soft-shadow-material/soft-shadow-material.d.ts +10 -1
- package/shaders/sparkles-material/sparkles-material.d.ts +13 -0
- package/shaders/spot-light-material/spot-light-material.d.ts +11 -2
- package/shaders/star-field-material/star-field-material.d.ts +9 -0
- package/shaders/wireframe-material/wireframe-material.d.ts +58 -0
- package/staging/accumulative-shadows/accumulative-shadows.d.ts +93 -39
- package/staging/accumulative-shadows/randomized-lights.d.ts +41 -28
- package/staging/backdrop/backdrop.d.ts +30 -0
- package/staging/bb-anchor/bb-anchor.d.ts +27 -0
- package/staging/bounds/bounds.d.ts +105 -25
- package/staging/camera-shake/camera-shake.d.ts +30 -19
- package/staging/center/center.d.ts +43 -35
- package/staging/cloud/cloud.d.ts +27 -24
- package/staging/contact-shadows/contact-shadows.d.ts +43 -30
- package/staging/environment/assets.d.ts +9 -9
- package/staging/environment/environment-cube.d.ts +9 -5
- package/staging/environment/environment-ground.d.ts +7 -7
- package/staging/environment/environment-input.d.ts +38 -38
- package/staging/environment/environment-map.d.ts +10 -5
- package/staging/environment/environment-portal.d.ts +10 -5
- package/staging/environment/environment.d.ts +0 -4
- package/staging/environment/utils.d.ts +2 -2
- package/staging/float/float.d.ts +15 -11
- package/staging/index.d.ts +6 -2
- package/staging/matcap-texture/matcap-texture.d.ts +13 -0
- package/staging/normal-texture/normal-texture.d.ts +16 -0
- package/staging/sky/sky.d.ts +28 -21
- package/staging/sparkles/sparkles.d.ts +36 -22
- package/staging/spot-light/shadow-mesh-input.d.ts +29 -0
- package/staging/spot-light/shadow-mesh.d.ts +37 -0
- package/staging/spot-light/spot-light-input.d.ts +25 -25
- package/staging/spot-light/spot-light.d.ts +35 -15
- package/staging/spot-light/volumetric-mesh.d.ts +15 -9
- package/staging/stage/stage.d.ts +89 -65
- package/staging/stars/stars.d.ts +28 -17
- package/staging/wireframe/wireframe-input.d.ts +65 -0
- package/staging/wireframe/wireframe.d.ts +28 -0
- package/utils/README.md +3 -0
- package/utils/constants.d.ts +1 -0
- package/utils/content/content.d.ts +8 -0
- package/utils/index.d.ts +2 -0
- package/web-types.json +1 -0
- package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +0 -25
- package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +0 -25
- package/abstractions/gizmo-helper/gizmo-helper.d.ts +0 -34
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -30
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -32
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -14
- package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -47
- package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -40
- package/abstractions/line/line-input.d.ts +0 -42
- package/abstractions/line/line.d.ts +0 -35
- package/abstractions/quadratic-bezier-line/quadratic-bezier-line.d.ts +0 -23
- package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +0 -131
- package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +0 -113
- package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +0 -210
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -95
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -155
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -62
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -80
- package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -206
- package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -273
- package/esm2022/abstractions/line/line-input.mjs +0 -113
- package/esm2022/abstractions/line/line.mjs +0 -165
- package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
- package/esm2022/performance/adaptive/adaptive-dpr.mjs +0 -46
- package/esm2022/performance/adaptive/adaptive-events.mjs +0 -31
- package/esm2022/performance/angular-three-soba-performance.mjs +0 -5
- package/esm2022/performance/detailed/detailed.mjs +0 -61
- package/esm2022/performance/index.mjs +0 -7
- package/esm2022/performance/instances/instance.mjs +0 -48
- package/esm2022/performance/instances/instances.mjs +0 -189
- package/esm2022/performance/instances/position-mesh.mjs +0 -52
- package/esm2022/performance/stats/stats.mjs +0 -79
- package/esm2022/shaders/caustics-material/caustics-material.mjs +0 -128
- package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +0 -33
- package/esm2022/staging/caustics/caustisc.mjs +0 -384
- package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +0 -57
- package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +0 -256
- package/fesm2022/angular-three-soba-performance.mjs +0 -487
- package/fesm2022/angular-three-soba-performance.mjs.map +0 -1
- package/performance/README.md +0 -3
- package/performance/adaptive/adaptive-dpr.d.ts +0 -8
- package/performance/detailed/detailed.d.ts +0 -20
- package/performance/index.d.ts +0 -6
- package/performance/instances/instance.d.ts +0 -9
- package/performance/instances/instances.d.ts +0 -35
- package/performance/stats/stats.d.ts +0 -18
- package/plugin/generators.json +0 -19
- package/plugin/libs/plugin/README.md +0 -11
- package/plugin/package.json +0 -9
- package/plugin/src/generators/init/compat.d.ts +0 -2
- package/plugin/src/generators/init/compat.js +0 -6
- package/plugin/src/generators/init/compat.js.map +0 -1
- package/plugin/src/generators/init/init.d.ts +0 -7
- package/plugin/src/generators/init/init.js +0 -28
- package/plugin/src/generators/init/init.js.map +0 -1
- package/plugin/src/generators/init/schema.json +0 -6
- package/plugin/src/index.d.ts +0 -1
- package/plugin/src/index.js +0 -6
- package/plugin/src/index.js.map +0 -1
- package/staging/caustics/caustisc.d.ts +0 -70
- package/staging/spot-light/spot-light-shadow-mesh-input.d.ts +0 -29
- package/staging/spot-light/spot-light-shadow-mesh.d.ts +0 -38
- /package/{abstractions → gizmos}/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -0
- /package/shaders/{caustics-material → caustics}/caustics-material.d.ts +0 -0
- /package/shaders/{caustics-material → caustics}/caustics-projection-material.d.ts +0 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input, signal } from '@angular/core';
|
|
2
|
+
import { extend, NgtArgs, signalStore } from 'angular-three';
|
|
3
|
+
import { BoxGeometry, Mesh, MeshBasicMaterial, Vector3 } from 'three';
|
|
4
|
+
import { injectNgtsGizmoHelperApi } from '../gizmo-helper';
|
|
5
|
+
import { colors } from './constants';
|
|
6
|
+
import { NgtsGizmoViewcubeInput } from './gizmo-viewcube-input';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
extend({ Mesh, BoxGeometry, MeshBasicMaterial });
|
|
9
|
+
export class NgtsGizmoViewcubeEdgeCube {
|
|
10
|
+
set _dimensions(dimensions) {
|
|
11
|
+
this.inputs.set({ dimensions });
|
|
12
|
+
}
|
|
13
|
+
set _position(position) {
|
|
14
|
+
this.inputs.set({ position });
|
|
15
|
+
}
|
|
16
|
+
constructor() {
|
|
17
|
+
this.inputs = signalStore();
|
|
18
|
+
this.gizmoApi = injectNgtsGizmoHelperApi();
|
|
19
|
+
this.viewcubeInput = inject(NgtsGizmoViewcubeInput);
|
|
20
|
+
this.hover = signal(false);
|
|
21
|
+
this.position = this.inputs.select('position');
|
|
22
|
+
this.dimensions = this.inputs.select('dimensions');
|
|
23
|
+
this.viewcubeInput.inputs.patch({ hoverColor: colors.hover });
|
|
24
|
+
}
|
|
25
|
+
onPointerMove(event) {
|
|
26
|
+
event.stopPropagation();
|
|
27
|
+
this.hover.set(true);
|
|
28
|
+
}
|
|
29
|
+
onPointerOut(event) {
|
|
30
|
+
event.stopPropagation();
|
|
31
|
+
this.hover.set(false);
|
|
32
|
+
}
|
|
33
|
+
onClick(event) {
|
|
34
|
+
if (this.viewcubeInput.viewcubeClick.observed) {
|
|
35
|
+
this.viewcubeInput.viewcubeClick.emit(event);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
event.stopPropagation();
|
|
39
|
+
this.gizmoApi.tweenCamera(this.position());
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsGizmoViewcubeEdgeCube, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
43
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsGizmoViewcubeEdgeCube, isStandalone: true, selector: "ngts-gizmo-viewcube-edge-cube", inputs: { _dimensions: ["dimensions", "_dimensions"], _position: ["position", "_position"] }, ngImport: i0, template: `
|
|
44
|
+
<ngt-mesh
|
|
45
|
+
[scale]="1.01"
|
|
46
|
+
[position]="position()"
|
|
47
|
+
(pointermove)="onPointerMove($event)"
|
|
48
|
+
(pointerout)="onPointerOut($event)"
|
|
49
|
+
(click)="onClick($event)"
|
|
50
|
+
>
|
|
51
|
+
<ngt-box-geometry *args="dimensions()" />
|
|
52
|
+
<ngt-mesh-basic-material
|
|
53
|
+
[color]="hover() ? viewcubeInput.hoverColor() : 'white'"
|
|
54
|
+
[transparent]="true"
|
|
55
|
+
[opacity]="0.6"
|
|
56
|
+
[visible]="hover()"
|
|
57
|
+
/>
|
|
58
|
+
</ngt-mesh>
|
|
59
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
|
|
60
|
+
}
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsGizmoViewcubeEdgeCube, decorators: [{
|
|
62
|
+
type: Component,
|
|
63
|
+
args: [{
|
|
64
|
+
selector: 'ngts-gizmo-viewcube-edge-cube',
|
|
65
|
+
standalone: true,
|
|
66
|
+
template: `
|
|
67
|
+
<ngt-mesh
|
|
68
|
+
[scale]="1.01"
|
|
69
|
+
[position]="position()"
|
|
70
|
+
(pointermove)="onPointerMove($event)"
|
|
71
|
+
(pointerout)="onPointerOut($event)"
|
|
72
|
+
(click)="onClick($event)"
|
|
73
|
+
>
|
|
74
|
+
<ngt-box-geometry *args="dimensions()" />
|
|
75
|
+
<ngt-mesh-basic-material
|
|
76
|
+
[color]="hover() ? viewcubeInput.hoverColor() : 'white'"
|
|
77
|
+
[transparent]="true"
|
|
78
|
+
[opacity]="0.6"
|
|
79
|
+
[visible]="hover()"
|
|
80
|
+
/>
|
|
81
|
+
</ngt-mesh>
|
|
82
|
+
`,
|
|
83
|
+
imports: [NgtArgs],
|
|
84
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
85
|
+
}]
|
|
86
|
+
}], ctorParameters: function () { return []; }, propDecorators: { _dimensions: [{
|
|
87
|
+
type: Input,
|
|
88
|
+
args: [{ required: true, alias: 'dimensions' }]
|
|
89
|
+
}], _position: [{
|
|
90
|
+
type: Input,
|
|
91
|
+
args: [{ required: true, alias: 'position' }]
|
|
92
|
+
}] } });
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l6bW8tdmlld2N1YmUtZWRnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9naXptb3Mvc3JjL2dpem1vLWhlbHBlci9naXptby12aWV3Y3ViZS9naXptby12aWV3Y3ViZS1lZGdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFzQixNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDdEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFFaEUsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7QUF5QmpELE1BQU0sT0FBTyx5QkFBeUI7SUFXckMsSUFBb0QsV0FBVyxDQUFDLFVBQW9DO1FBQ25HLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBa0QsU0FBUyxDQUFDLFFBQWlCO1FBQzVFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBS0Q7UUFyQlEsV0FBTSxHQUFHLFdBQVcsRUFHeEIsQ0FBQztRQUVMLGFBQVEsR0FBRyx3QkFBd0IsRUFBRSxDQUFDO1FBQ3RDLGtCQUFhLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFL0MsVUFBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQVV0QixhQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsZUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRzdDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWtDO1FBQy9DLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWtDO1FBQzlDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQWdDO1FBQ3ZDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFO1lBQzlDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QzthQUFNO1lBQ04sS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQzNDO0lBQ0YsQ0FBQzs4R0EzQ1cseUJBQXlCO2tHQUF6Qix5QkFBeUIsdUxBcEIzQjs7Ozs7Ozs7Ozs7Ozs7OztFQWdCVCw0REFDUyxPQUFPOzsyRkFHTCx5QkFBeUI7a0JBdkJyQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSwrQkFBK0I7b0JBQ3pDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7RUFnQlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDakM7MEVBWW9ELFdBQVc7c0JBQTlELEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7Z0JBSUksU0FBUztzQkFBMUQsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgaW5qZWN0LCBJbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIE5ndEFyZ3MsIHNpZ25hbFN0b3JlLCB0eXBlIE5ndFRocmVlRXZlbnQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IEJveEdlb21ldHJ5LCBNZXNoLCBNZXNoQmFzaWNNYXRlcmlhbCwgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IGluamVjdE5ndHNHaXptb0hlbHBlckFwaSB9IGZyb20gJy4uL2dpem1vLWhlbHBlcic7XG5pbXBvcnQgeyBjb2xvcnMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBOZ3RzR2l6bW9WaWV3Y3ViZUlucHV0IH0gZnJvbSAnLi9naXptby12aWV3Y3ViZS1pbnB1dCc7XG5cbmV4dGVuZCh7IE1lc2gsIEJveEdlb21ldHJ5LCBNZXNoQmFzaWNNYXRlcmlhbCB9KTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1naXptby12aWV3Y3ViZS1lZGdlLWN1YmUnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtbWVzaFxuXHRcdFx0W3NjYWxlXT1cIjEuMDFcIlxuXHRcdFx0W3Bvc2l0aW9uXT1cInBvc2l0aW9uKClcIlxuXHRcdFx0KHBvaW50ZXJtb3ZlKT1cIm9uUG9pbnRlck1vdmUoJGV2ZW50KVwiXG5cdFx0XHQocG9pbnRlcm91dCk9XCJvblBvaW50ZXJPdXQoJGV2ZW50KVwiXG5cdFx0XHQoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcblx0XHQ+XG5cdFx0XHQ8bmd0LWJveC1nZW9tZXRyeSAqYXJncz1cImRpbWVuc2lvbnMoKVwiIC8+XG5cdFx0XHQ8bmd0LW1lc2gtYmFzaWMtbWF0ZXJpYWxcblx0XHRcdFx0W2NvbG9yXT1cImhvdmVyKCkgPyB2aWV3Y3ViZUlucHV0LmhvdmVyQ29sb3IoKSA6ICd3aGl0ZSdcIlxuXHRcdFx0XHRbdHJhbnNwYXJlbnRdPVwidHJ1ZVwiXG5cdFx0XHRcdFtvcGFjaXR5XT1cIjAuNlwiXG5cdFx0XHRcdFt2aXNpYmxlXT1cImhvdmVyKClcIlxuXHRcdFx0Lz5cblx0XHQ8L25ndC1tZXNoPlxuXHRgLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0dpem1vVmlld2N1YmVFZGdlQ3ViZSB7XG5cdHByaXZhdGUgaW5wdXRzID0gc2lnbmFsU3RvcmU8e1xuXHRcdHBvc2l0aW9uOiBUSFJFRS5WZWN0b3IzO1xuXHRcdGRpbWVuc2lvbnM6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcblx0fT4oKTtcblxuXHRnaXptb0FwaSA9IGluamVjdE5ndHNHaXptb0hlbHBlckFwaSgpO1xuXHR2aWV3Y3ViZUlucHV0ID0gaW5qZWN0KE5ndHNHaXptb1ZpZXdjdWJlSW5wdXQpO1xuXG5cdGhvdmVyID0gc2lnbmFsKGZhbHNlKTtcblxuXHRASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSwgYWxpYXM6ICdkaW1lbnNpb25zJyB9KSBzZXQgX2RpbWVuc2lvbnMoZGltZW5zaW9uczogW251bWJlciwgbnVtYmVyLCBudW1iZXJdKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZGltZW5zaW9ucyB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogJ3Bvc2l0aW9uJyB9KSBzZXQgX3Bvc2l0aW9uKHBvc2l0aW9uOiBWZWN0b3IzKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgcG9zaXRpb24gfSk7XG5cdH1cblxuXHRwb3NpdGlvbiA9IHRoaXMuaW5wdXRzLnNlbGVjdCgncG9zaXRpb24nKTtcblx0ZGltZW5zaW9ucyA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZGltZW5zaW9ucycpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMudmlld2N1YmVJbnB1dC5pbnB1dHMucGF0Y2goeyBob3ZlckNvbG9yOiBjb2xvcnMuaG92ZXIgfSk7XG5cdH1cblxuXHRvblBvaW50ZXJNb3ZlKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pIHtcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHR0aGlzLmhvdmVyLnNldCh0cnVlKTtcblx0fVxuXG5cdG9uUG9pbnRlck91dChldmVudDogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSB7XG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0dGhpcy5ob3Zlci5zZXQoZmFsc2UpO1xuXHR9XG5cblx0b25DbGljayhldmVudDogTmd0VGhyZWVFdmVudDxNb3VzZUV2ZW50Pikge1xuXHRcdGlmICh0aGlzLnZpZXdjdWJlSW5wdXQudmlld2N1YmVDbGljay5vYnNlcnZlZCkge1xuXHRcdFx0dGhpcy52aWV3Y3ViZUlucHV0LnZpZXdjdWJlQ2xpY2suZW1pdChldmVudCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0dGhpcy5naXptb0FwaS50d2VlbkNhbWVyYSh0aGlzLnBvc2l0aW9uKCkpO1xuXHRcdH1cblx0fVxufVxuIl19
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject, Input, signal } from '@angular/core';
|
|
3
|
+
import { extend, injectNgtStore, signalStore } from 'angular-three';
|
|
4
|
+
import { Repeat } from 'ngxtension/repeat';
|
|
5
|
+
import { BoxGeometry, CanvasTexture, Mesh, MeshLambertMaterial } from 'three';
|
|
6
|
+
import { injectNgtsGizmoHelperApi } from '../gizmo-helper';
|
|
7
|
+
import { colors, defaultFaces } from './constants';
|
|
8
|
+
import { NgtsGizmoViewcubeInput } from './gizmo-viewcube-input';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
extend({ MeshLambertMaterial, Mesh, BoxGeometry });
|
|
11
|
+
export class NgtsGizmoViewcubeFaceMaterial {
|
|
12
|
+
set _index(index) {
|
|
13
|
+
this.inputs.set({ index });
|
|
14
|
+
}
|
|
15
|
+
set _hover(hover) {
|
|
16
|
+
this.inputs.set({ hover });
|
|
17
|
+
}
|
|
18
|
+
constructor() {
|
|
19
|
+
this.inputs = signalStore();
|
|
20
|
+
this.document = inject(DOCUMENT);
|
|
21
|
+
this.store = injectNgtStore();
|
|
22
|
+
this.gl = this.store.select('gl');
|
|
23
|
+
this.viewcubeInput = inject(NgtsGizmoViewcubeInput);
|
|
24
|
+
this.index = this.inputs.select('index');
|
|
25
|
+
this.hover = this.inputs.select('hover');
|
|
26
|
+
this.texture = computed(() => {
|
|
27
|
+
const [index, color, font, faces, textColor, strokeColor] = [
|
|
28
|
+
this.index(),
|
|
29
|
+
this.viewcubeInput.color(),
|
|
30
|
+
this.viewcubeInput.font(),
|
|
31
|
+
this.viewcubeInput.faces(),
|
|
32
|
+
this.viewcubeInput.textColor(),
|
|
33
|
+
this.viewcubeInput.strokeColor(),
|
|
34
|
+
];
|
|
35
|
+
const canvas = this.document.createElement('canvas');
|
|
36
|
+
canvas.width = 128;
|
|
37
|
+
canvas.height = 128;
|
|
38
|
+
const context = canvas.getContext('2d');
|
|
39
|
+
context.fillStyle = color;
|
|
40
|
+
context.fillRect(0, 0, canvas.width, canvas.height);
|
|
41
|
+
context.strokeStyle = strokeColor;
|
|
42
|
+
context.strokeRect(0, 0, canvas.width, canvas.height);
|
|
43
|
+
context.font = font;
|
|
44
|
+
context.textAlign = 'center';
|
|
45
|
+
context.fillStyle = textColor;
|
|
46
|
+
context.fillText(faces[index].toUpperCase(), 64, 76);
|
|
47
|
+
return new CanvasTexture(canvas);
|
|
48
|
+
});
|
|
49
|
+
this.viewcubeInput.inputs.patch({
|
|
50
|
+
color: colors.bg,
|
|
51
|
+
font: '20px Inter var, Arial, sans-serif',
|
|
52
|
+
faces: defaultFaces,
|
|
53
|
+
hoverColor: colors.hover,
|
|
54
|
+
textColor: colors.text,
|
|
55
|
+
strokeColor: colors.stroke,
|
|
56
|
+
opacity: 1,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsGizmoViewcubeFaceMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
60
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsGizmoViewcubeFaceMaterial, isStandalone: true, selector: "ngts-gizmo-viewcube-face-material", inputs: { _index: ["index", "_index"], _hover: ["hover", "_hover"] }, ngImport: i0, template: `
|
|
61
|
+
<ngt-mesh-lambert-material
|
|
62
|
+
[attach]="['material', index()]"
|
|
63
|
+
[map]="texture()"
|
|
64
|
+
[color]="hover() ? viewcubeInput.hoverColor() : viewcubeInput.color()"
|
|
65
|
+
[opacity]="viewcubeInput.opacity()"
|
|
66
|
+
[transparent]="true"
|
|
67
|
+
>
|
|
68
|
+
<ngt-value [rawValue]="gl().capabilities.getMaxAnisotropy() || 1" attach="map.anisotrophy" />
|
|
69
|
+
</ngt-mesh-lambert-material>
|
|
70
|
+
`, isInline: true }); }
|
|
71
|
+
}
|
|
72
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsGizmoViewcubeFaceMaterial, decorators: [{
|
|
73
|
+
type: Component,
|
|
74
|
+
args: [{
|
|
75
|
+
selector: 'ngts-gizmo-viewcube-face-material',
|
|
76
|
+
standalone: true,
|
|
77
|
+
template: `
|
|
78
|
+
<ngt-mesh-lambert-material
|
|
79
|
+
[attach]="['material', index()]"
|
|
80
|
+
[map]="texture()"
|
|
81
|
+
[color]="hover() ? viewcubeInput.hoverColor() : viewcubeInput.color()"
|
|
82
|
+
[opacity]="viewcubeInput.opacity()"
|
|
83
|
+
[transparent]="true"
|
|
84
|
+
>
|
|
85
|
+
<ngt-value [rawValue]="gl().capabilities.getMaxAnisotropy() || 1" attach="map.anisotrophy" />
|
|
86
|
+
</ngt-mesh-lambert-material>
|
|
87
|
+
`,
|
|
88
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
89
|
+
}]
|
|
90
|
+
}], ctorParameters: function () { return []; }, propDecorators: { _index: [{
|
|
91
|
+
type: Input,
|
|
92
|
+
args: [{ required: true, alias: 'index' }]
|
|
93
|
+
}], _hover: [{
|
|
94
|
+
type: Input,
|
|
95
|
+
args: [{ required: true, alias: 'hover' }]
|
|
96
|
+
}] } });
|
|
97
|
+
export class NgtsGizmoViewcubeFaceCube {
|
|
98
|
+
constructor() {
|
|
99
|
+
this.gizmoApi = injectNgtsGizmoHelperApi();
|
|
100
|
+
this.viewcubeInput = inject(NgtsGizmoViewcubeInput);
|
|
101
|
+
this.hover = signal(-1);
|
|
102
|
+
}
|
|
103
|
+
onPointerMove(event) {
|
|
104
|
+
event.stopPropagation();
|
|
105
|
+
this.hover.set(Math.floor(event.faceIndex / 2));
|
|
106
|
+
}
|
|
107
|
+
onPointerOut(event) {
|
|
108
|
+
event.stopPropagation();
|
|
109
|
+
this.hover.set(-1);
|
|
110
|
+
}
|
|
111
|
+
onClick(event) {
|
|
112
|
+
if (this.viewcubeInput.viewcubeClick.observed) {
|
|
113
|
+
this.viewcubeInput.viewcubeClick.emit(event);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
event.stopPropagation();
|
|
117
|
+
this.gizmoApi.tweenCamera(event.face.normal);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsGizmoViewcubeFaceCube, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
121
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsGizmoViewcubeFaceCube, isStandalone: true, selector: "ngts-gizmo-viewcube-face-cube", ngImport: i0, template: `
|
|
122
|
+
<ngt-mesh
|
|
123
|
+
(pointermove)="onPointerMove($any($event))"
|
|
124
|
+
(pointerout)="onPointerOut($any($event))"
|
|
125
|
+
(click)="onClick($any($event))"
|
|
126
|
+
>
|
|
127
|
+
<ngt-box-geometry />
|
|
128
|
+
<ngts-gizmo-viewcube-face-material *ngFor="let i; repeat: 6" [hover]="hover() === i" [index]="i" />
|
|
129
|
+
</ngt-mesh>
|
|
130
|
+
`, isInline: true, dependencies: [{ kind: "component", type: NgtsGizmoViewcubeFaceMaterial, selector: "ngts-gizmo-viewcube-face-material", inputs: ["index", "hover"] }, { kind: "directive", type: Repeat, selector: "[ngFor][ngForRepeat]", inputs: ["ngForRepeat"] }] }); }
|
|
131
|
+
}
|
|
132
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsGizmoViewcubeFaceCube, decorators: [{
|
|
133
|
+
type: Component,
|
|
134
|
+
args: [{
|
|
135
|
+
selector: 'ngts-gizmo-viewcube-face-cube',
|
|
136
|
+
standalone: true,
|
|
137
|
+
template: `
|
|
138
|
+
<ngt-mesh
|
|
139
|
+
(pointermove)="onPointerMove($any($event))"
|
|
140
|
+
(pointerout)="onPointerOut($any($event))"
|
|
141
|
+
(click)="onClick($any($event))"
|
|
142
|
+
>
|
|
143
|
+
<ngt-box-geometry />
|
|
144
|
+
<ngts-gizmo-viewcube-face-material *ngFor="let i; repeat: 6" [hover]="hover() === i" [index]="i" />
|
|
145
|
+
</ngt-mesh>
|
|
146
|
+
`,
|
|
147
|
+
imports: [NgtsGizmoViewcubeFaceMaterial, Repeat],
|
|
148
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
149
|
+
}]
|
|
150
|
+
}] });
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l6bW8tdmlld2N1YmUtZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9naXptb3Mvc3JjL2dpem1vLWhlbHBlci9naXptby12aWV3Y3ViZS9naXptby12aWV3Y3ViZS1mYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDOUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBRWhFLE1BQU0sQ0FBQyxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBa0JuRCxNQUFNLE9BQU8sNkJBQTZCO0lBUXpDLElBQStDLE1BQU0sQ0FBQyxLQUFhO1FBQ2xFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBK0MsTUFBTSxDQUFDLEtBQWM7UUFDbkUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxL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LENBQUM7U0FDOUM7SUFDRixDQUFDOzhHQXZCVyx5QkFBeUI7a0dBQXpCLHlCQUF5Qix5RkFiM0I7Ozs7Ozs7OztFQVNULDREQXRFVyw2QkFBNkIsMEdBdUVBLE1BQU07OzJGQUduQyx5QkFBeUI7a0JBaEJyQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSwrQkFBK0I7b0JBQ3pDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7OztFQVNUO29CQUNELE9BQU8sRUFBRSxDQUFDLDZCQUE2QixFQUFFLE1BQU0sQ0FBQztvQkFDaEQsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgaW5qZWN0LCBJbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGluamVjdE5ndFN0b3JlLCBzaWduYWxTdG9yZSwgdHlwZSBOZ3RUaHJlZUV2ZW50IH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBSZXBlYXQgfSBmcm9tICduZ3h0ZW5zaW9uL3JlcGVhdCc7XG5pbXBvcnQgeyBCb3hHZW9tZXRyeSwgQ2FudmFzVGV4dHVyZSwgTWVzaCwgTWVzaExhbWJlcnRNYXRlcmlhbCB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IGluamVjdE5ndHNHaXptb0hlbHBlckFwaSB9IGZyb20gJy4uL2dpem1vLWhlbHBlcic7XG5pbXBvcnQgeyBjb2xvcnMsIGRlZmF1bHRGYWNlcyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IE5ndHNHaXptb1ZpZXdjdWJlSW5wdXQgfSBmcm9tICcuL2dpem1vLXZpZXdjdWJlLWlucHV0JztcblxuZXh0ZW5kKHsgTWVzaExhbWJlcnRNYXRlcmlhbCwgTWVzaCwgQm94R2VvbWV0cnkgfSk7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtZ2l6bW8tdmlld2N1YmUtZmFjZS1tYXRlcmlhbCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1tZXNoLWxhbWJlcnQtbWF0ZXJpYWxcblx0XHRcdFthdHRhY2hdPVwiWydtYXRlcmlhbCcsIGluZGV4KCldXCJcblx0XHRcdFttYXBdPVwidGV4dHVyZSgpXCJcblx0XHRcdFtjb2xvcl09XCJob3ZlcigpID8gdmlld2N1YmVJbnB1dC5ob3ZlckNvbG9yKCkgOiB2aWV3Y3ViZUlucHV0LmNvbG9yKClcIlxuXHRcdFx0W29wYWNpdHldPVwidmlld2N1YmVJbnB1dC5vcGFjaXR5KClcIlxuXHRcdFx0W3RyYW5zcGFyZW50XT1cInRydWVcIlxuXHRcdD5cblx0XHRcdDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cImdsKCkuY2FwYWJpbGl0aWVzLmdldE1heEFuaXNvdHJvcHkoKSB8fCAxXCIgYXR0YWNoPVwibWFwLmFuaXNvdHJvcGh5XCIgLz5cblx0XHQ8L25ndC1tZXNoLWxhbWJlcnQtbWF0ZXJpYWw+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0dpem1vVmlld2N1YmVGYWNlTWF0ZXJpYWwge1xuXHRwcml2YXRlIGlucHV0cyA9IHNpZ25hbFN0b3JlPHsgaW5kZXg6IG51bWJlcjsgaG92ZXI6IGJvb2xlYW4gfT4oKTtcblx0cHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3ROZ3RTdG9yZSgpO1xuXHRnbCA9IHRoaXMuc3RvcmUuc2VsZWN0KCdnbCcpO1xuXG5cdHZpZXdjdWJlSW5wdXQgPSBpbmplY3QoTmd0c0dpem1vVmlld2N1YmVJbnB1dCk7XG5cblx0QElucHV0KHsgcmVxdWlyZWQ6IHRydWUsIGFsaWFzOiAnaW5kZXgnIH0pIHNldCBfaW5kZXgoaW5kZXg6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGluZGV4IH0pO1xuXHR9XG5cblx0QElucHV0KHsgcmVxdWlyZWQ6IHRydWUsIGFsaWFzOiAnaG92ZXInIH0pIHNldCBfaG92ZXIoaG92ZXI6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBob3ZlciB9KTtcblx0fVxuXG5cdGluZGV4ID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdpbmRleCcpO1xuXHRob3ZlciA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnaG92ZXInKTtcblxuXHR0ZXh0dXJlID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IFtpbmRleCwgY29sb3IsIGZvbnQsIGZhY2VzLCB0ZXh0Q29sb3IsIHN0cm9rZUNvbG9yXSA9IFtcblx0XHRcdHRoaXMuaW5kZXgoKSxcblx0XHRcdHRoaXMudmlld2N1YmVJbnB1dC5jb2xvcigpLFxuXHRcdFx0dGhpcy52aWV3Y3ViZUlucHV0LmZvbnQoKSxcblx0XHRcdHRoaXMudmlld2N1YmVJbnB1dC5mYWNlcygpLFxuXHRcdFx0dGhpcy52aWV3Y3ViZUlucHV0LnRleHRDb2xvcigpLFxuXHRcdFx0dGhpcy52aWV3Y3ViZUlucHV0LnN0cm9rZUNvbG9yKCksXG5cdFx0XTtcblxuXHRcdGNvbnN0IGNhbnZhcyA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG5cdFx0Y2FudmFzLndpZHRoID0gMTI4O1xuXHRcdGNhbnZhcy5oZWlnaHQgPSAxMjg7XG5cdFx0Y29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpITtcblx0XHRjb250ZXh0LmZpbGxTdHlsZSA9IGNvbG9yITtcblx0XHRjb250ZXh0LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG5cdFx0Y29udGV4dC5zdHJva2VTdHlsZSA9IHN0cm9rZUNvbG9yO1xuXHRcdGNvbnRleHQuc3Ryb2tlUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuXHRcdGNvbnRleHQuZm9udCA9IGZvbnQhO1xuXHRcdGNvbnRleHQudGV4dEFsaWduID0gJ2NlbnRlcic7XG5cdFx0Y29udGV4dC5maWxsU3R5bGUgPSB0ZXh0Q29sb3I7XG5cdFx0Y29udGV4dC5maWxsVGV4dChmYWNlc1tpbmRleF0udG9VcHBlckNhc2UoKSwgNjQsIDc2KTtcblxuXHRcdHJldHVybiBuZXcgQ2FudmFzVGV4dHVyZShjYW52YXMpO1xuXHR9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLnZpZXdjdWJlSW5wdXQuaW5wdXRzLnBhdGNoKHtcblx0XHRcdGNvbG9yOiBjb2xvcnMuYmcsXG5cdFx0XHRmb250OiAnMjBweCBJbnRlciB2YXIsIEFyaWFsLCBzYW5zLXNlcmlmJyxcblx0XHRcdGZhY2VzOiBkZWZhdWx0RmFjZXMsXG5cdFx0XHRob3ZlckNvbG9yOiBjb2xvcnMuaG92ZXIsXG5cdFx0XHR0ZXh0Q29sb3I6IGNvbG9ycy50ZXh0LFxuXHRcdFx0c3Ryb2tlQ29sb3I6IGNvbG9ycy5zdHJva2UsXG5cdFx0XHRvcGFjaXR5OiAxLFxuXHRcdH0pO1xuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtZ2l6bW8tdmlld2N1YmUtZmFjZS1jdWJlJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LW1lc2hcblx0XHRcdChwb2ludGVybW92ZSk9XCJvblBvaW50ZXJNb3ZlKCRhbnkoJGV2ZW50KSlcIlxuXHRcdFx0KHBvaW50ZXJvdXQpPVwib25Qb2ludGVyT3V0KCRhbnkoJGV2ZW50KSlcIlxuXHRcdFx0KGNsaWNrKT1cIm9uQ2xpY2soJGFueSgkZXZlbnQpKVwiXG5cdFx0PlxuXHRcdFx0PG5ndC1ib3gtZ2VvbWV0cnkgLz5cblx0XHRcdDxuZ3RzLWdpem1vLXZpZXdjdWJlLWZhY2UtbWF0ZXJpYWwgKm5nRm9yPVwibGV0IGk7IHJlcGVhdDogNlwiIFtob3Zlcl09XCJob3ZlcigpID09PSBpXCIgW2luZGV4XT1cImlcIiAvPlxuXHRcdDwvbmd0LW1lc2g+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RzR2l6bW9WaWV3Y3ViZUZhY2VNYXRlcmlhbCwgUmVwZWF0XSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzR2l6bW9WaWV3Y3ViZUZhY2VDdWJlIHtcblx0cHJpdmF0ZSBnaXptb0FwaSA9IGluamVjdE5ndHNHaXptb0hlbHBlckFwaSgpO1xuXHRwcml2YXRlIHZpZXdjdWJlSW5wdXQgPSBpbmplY3QoTmd0c0dpem1vVmlld2N1YmVJbnB1dCk7XG5cblx0aG92ZXIgPSBzaWduYWwoLTEpO1xuXG5cdG9uUG9pbnRlck1vdmUoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50Pikge1xuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdHRoaXMuaG92ZXIuc2V0KE1hdGguZmxvb3IoZXZlbnQuZmFjZUluZGV4ISAvIDIpKTtcblx0fVxuXG5cdG9uUG9pbnRlck91dChldmVudDogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSB7XG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0dGhpcy5ob3Zlci5zZXQoLTEpO1xuXHR9XG5cblx0b25DbGljayhldmVudDogTmd0VGhyZWVFdmVudDxNb3VzZUV2ZW50Pikge1xuXHRcdGlmICh0aGlzLnZpZXdjdWJlSW5wdXQudmlld2N1YmVDbGljay5vYnNlcnZlZCkge1xuXHRcdFx0dGhpcy52aWV3Y3ViZUlucHV0LnZpZXdjdWJlQ2xpY2suZW1pdChldmVudCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0dGhpcy5naXptb0FwaS50d2VlbkNhbWVyYShldmVudC5mYWNlIS5ub3JtYWwpO1xuXHRcdH1cblx0fVxufVxuIl19
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Directive, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { signalStore } from 'angular-three';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class NgtsGizmoViewcubeInput {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.inputs = signalStore({});
|
|
7
|
+
this.viewcubeClick = new EventEmitter();
|
|
8
|
+
this.hoverColor = this.inputs.select('hoverColor');
|
|
9
|
+
this.opacity = this.inputs.select('opacity');
|
|
10
|
+
this.textColor = this.inputs.select('textColor');
|
|
11
|
+
this.strokeColor = this.inputs.select('strokeColor');
|
|
12
|
+
this.faces = this.inputs.select('faces');
|
|
13
|
+
this.font = this.inputs.select('font');
|
|
14
|
+
this.color = this.inputs.select('color');
|
|
15
|
+
}
|
|
16
|
+
set _opacity(opacity) {
|
|
17
|
+
this.inputs.set({ opacity });
|
|
18
|
+
}
|
|
19
|
+
set _hoverColor(hoverColor) {
|
|
20
|
+
this.inputs.set({ hoverColor });
|
|
21
|
+
}
|
|
22
|
+
set _textColor(textColor) {
|
|
23
|
+
this.inputs.set({ textColor });
|
|
24
|
+
}
|
|
25
|
+
set _strokeColor(strokeColor) {
|
|
26
|
+
this.inputs.set({ strokeColor });
|
|
27
|
+
}
|
|
28
|
+
set _faces(faces) {
|
|
29
|
+
this.inputs.set({ faces });
|
|
30
|
+
}
|
|
31
|
+
set _font(font) {
|
|
32
|
+
this.inputs.set({ font });
|
|
33
|
+
}
|
|
34
|
+
set _color(color) {
|
|
35
|
+
this.inputs.set({ color });
|
|
36
|
+
}
|
|
37
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsGizmoViewcubeInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
38
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.3", type: NgtsGizmoViewcubeInput, inputs: { _opacity: ["opacity", "_opacity"], _hoverColor: ["hoverColor", "_hoverColor"], _textColor: ["textColor", "_textColor"], _strokeColor: ["strokeColor", "_strokeColor"], _faces: ["faces", "_faces"], _font: ["font", "_font"], _color: ["color", "_color"] }, outputs: { viewcubeClick: "viewcubeClick" }, ngImport: i0 }); }
|
|
39
|
+
}
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsGizmoViewcubeInput, decorators: [{
|
|
41
|
+
type: Directive
|
|
42
|
+
}], propDecorators: { _opacity: [{
|
|
43
|
+
type: Input,
|
|
44
|
+
args: [{ alias: 'opacity' }]
|
|
45
|
+
}], _hoverColor: [{
|
|
46
|
+
type: Input,
|
|
47
|
+
args: [{ alias: 'hoverColor' }]
|
|
48
|
+
}], _textColor: [{
|
|
49
|
+
type: Input,
|
|
50
|
+
args: [{ alias: 'textColor' }]
|
|
51
|
+
}], _strokeColor: [{
|
|
52
|
+
type: Input,
|
|
53
|
+
args: [{ alias: 'strokeColor' }]
|
|
54
|
+
}], _faces: [{
|
|
55
|
+
type: Input,
|
|
56
|
+
args: [{ alias: 'faces' }]
|
|
57
|
+
}], _font: [{
|
|
58
|
+
type: Input,
|
|
59
|
+
args: [{ alias: 'font' }]
|
|
60
|
+
}], _color: [{
|
|
61
|
+
type: Input,
|
|
62
|
+
args: [{ alias: 'color' }]
|
|
63
|
+
}], viewcubeClick: [{
|
|
64
|
+
type: Output
|
|
65
|
+
}] } });
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l6bW8tdmlld2N1YmUtaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvZ2l6bW9zL3NyYy9naXptby1oZWxwZXIvZ2l6bW8tdmlld2N1YmUvZ2l6bW8tdmlld2N1YmUtaW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFzQixNQUFNLGVBQWUsQ0FBQzs7QUFjaEUsTUFBTSxPQUFnQixzQkFBc0I7SUFENUM7UUFFQyxXQUFNLEdBQUcsV0FBVyxDQUE4QixFQUFFLENBQUMsQ0FBQztRQThCNUMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBNkIsQ0FBQztRQUV4RSxlQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUMsWUFBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLGNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hELFVBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxTQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsVUFBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3BDO0lBckNBLElBQWlDLFFBQVEsQ0FBQyxPQUFlO1FBQ3hELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBb0MsV0FBVyxDQUFDLFVBQWtCO1FBQ2pFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBbUMsVUFBVSxDQUFDLFNBQWlCO1FBQzlELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBcUMsWUFBWSxDQUFDLFdBQW1CO1FBQ3BFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBK0IsTUFBTSxDQUFDLEtBQWU7UUFDcEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUE4QixLQUFLLENBQUMsSUFBWTtRQUMvQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQStCLE1BQU0sQ0FBQyxLQUFhO1FBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDOzhHQTdCb0Isc0JBQXNCO2tHQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBRDNDLFNBQVM7OEJBSXdCLFFBQVE7c0JBQXhDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO2dCQUlTLFdBQVc7c0JBQTlDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO2dCQUlLLFVBQVU7c0JBQTVDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO2dCQUlRLFlBQVk7c0JBQWhELEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO2dCQUlBLE1BQU07c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO2dCQUlLLEtBQUs7c0JBQWxDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO2dCQUlPLE1BQU07c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO2dCQUlmLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2lnbmFsU3RvcmUsIHR5cGUgTmd0VGhyZWVFdmVudCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuXG5leHBvcnQgdHlwZSBOZ3RzR2l6bW9WaWV3Q3ViZUlucHV0U3RhdGUgPSB7XG5cdG9wYWNpdHk6IG51bWJlcjtcblx0aG92ZXJDb2xvcjogc3RyaW5nO1xuXHR0ZXh0Q29sb3I6IHN0cmluZztcblx0c3Ryb2tlQ29sb3I6IHN0cmluZztcblx0ZmFjZXM6IHN0cmluZ1tdO1xuXHRmb250Pzogc3RyaW5nO1xuXHRjb2xvcj86IHN0cmluZztcblx0Y2xpY2tFbWl0dGVyOiBFdmVudEVtaXR0ZXI8Tmd0VGhyZWVFdmVudDxNb3VzZUV2ZW50Pj47XG59O1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZ3RzR2l6bW9WaWV3Y3ViZUlucHV0IHtcblx0aW5wdXRzID0gc2lnbmFsU3RvcmU8Tmd0c0dpem1vVmlld0N1YmVJbnB1dFN0YXRlPih7fSk7XG5cblx0QElucHV0KHsgYWxpYXM6ICdvcGFjaXR5JyB9KSBzZXQgX29wYWNpdHkob3BhY2l0eTogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgb3BhY2l0eSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnaG92ZXJDb2xvcicgfSkgc2V0IF9ob3ZlckNvbG9yKGhvdmVyQ29sb3I6IHN0cmluZykge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGhvdmVyQ29sb3IgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3RleHRDb2xvcicgfSkgc2V0IF90ZXh0Q29sb3IodGV4dENvbG9yOiBzdHJpbmcpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyB0ZXh0Q29sb3IgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3N0cm9rZUNvbG9yJyB9KSBzZXQgX3N0cm9rZUNvbG9yKHN0cm9rZUNvbG9yOiBzdHJpbmcpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBzdHJva2VDb2xvciB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZmFjZXMnIH0pIHNldCBfZmFjZXMoZmFjZXM6IHN0cmluZ1tdKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZmFjZXMgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2ZvbnQnIH0pIHNldCBfZm9udChmb250OiBzdHJpbmcpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBmb250IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdjb2xvcicgfSkgc2V0IF9jb2xvcihjb2xvcjogc3RyaW5nKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgY29sb3IgfSk7XG5cdH1cblxuXHRAT3V0cHV0KCkgdmlld2N1YmVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Tmd0VGhyZWVFdmVudDxNb3VzZUV2ZW50Pj4oKTtcblxuXHRob3ZlckNvbG9yID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdob3ZlckNvbG9yJyk7XG5cdG9wYWNpdHkgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ29wYWNpdHknKTtcblx0dGV4dENvbG9yID0gdGhpcy5pbnB1dHMuc2VsZWN0KCd0ZXh0Q29sb3InKTtcblx0c3Ryb2tlQ29sb3IgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ3N0cm9rZUNvbG9yJyk7XG5cdGZhY2VzID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdmYWNlcycpO1xuXHRmb250ID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdmb250Jyk7XG5cdGNvbG9yID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdjb2xvcicpO1xufVxuIl19
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { NgFor } from '@angular/common';
|
|
2
|
+
import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
3
|
+
import { extend } from 'angular-three';
|
|
4
|
+
import { AmbientLight, Group, PointLight } from 'three';
|
|
5
|
+
import { cornerDimensions, corners, edgeDimensions, edges } from './constants';
|
|
6
|
+
import { NgtsGizmoViewcubeEdgeCube } from './gizmo-viewcube-edge';
|
|
7
|
+
import { NgtsGizmoViewcubeFaceCube } from './gizmo-viewcube-face';
|
|
8
|
+
import { NgtsGizmoViewcubeInput } from './gizmo-viewcube-input';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
extend({ Group, AmbientLight, PointLight });
|
|
11
|
+
export class NgtsGizmoViewcube extends NgtsGizmoViewcubeInput {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.edges = edges;
|
|
15
|
+
this.edgeDimensions = edgeDimensions;
|
|
16
|
+
this.corners = corners;
|
|
17
|
+
this.cornerDimensions = cornerDimensions;
|
|
18
|
+
}
|
|
19
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsGizmoViewcube, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
20
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsGizmoViewcube, isStandalone: true, selector: "ngts-gizmo-viewcube", providers: [{ provide: NgtsGizmoViewcubeInput, useExisting: NgtsGizmoViewcube }], usesInheritance: true, ngImport: i0, template: `
|
|
21
|
+
<ngt-group [scale]="60">
|
|
22
|
+
<ngts-gizmo-viewcube-face-cube />
|
|
23
|
+
|
|
24
|
+
<ngts-gizmo-viewcube-edge-cube
|
|
25
|
+
*ngFor="let edge of edges; let i = index"
|
|
26
|
+
[position]="edge"
|
|
27
|
+
[dimensions]="edgeDimensions[i]"
|
|
28
|
+
/>
|
|
29
|
+
|
|
30
|
+
<ngts-gizmo-viewcube-edge-cube
|
|
31
|
+
*ngFor="let corner of corners"
|
|
32
|
+
[position]="corner"
|
|
33
|
+
[dimensions]="cornerDimensions"
|
|
34
|
+
/>
|
|
35
|
+
|
|
36
|
+
<ngt-ambient-light [intensity]="0.5" />
|
|
37
|
+
<ngt-point-light [position]="10" [intensity]="0.5" />
|
|
38
|
+
</ngt-group>
|
|
39
|
+
`, isInline: true, dependencies: [{ kind: "component", type: NgtsGizmoViewcubeEdgeCube, selector: "ngts-gizmo-viewcube-edge-cube", inputs: ["dimensions", "position"] }, { kind: "component", type: NgtsGizmoViewcubeFaceCube, selector: "ngts-gizmo-viewcube-face-cube" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
|
|
40
|
+
}
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsGizmoViewcube, decorators: [{
|
|
42
|
+
type: Component,
|
|
43
|
+
args: [{
|
|
44
|
+
selector: 'ngts-gizmo-viewcube',
|
|
45
|
+
standalone: true,
|
|
46
|
+
template: `
|
|
47
|
+
<ngt-group [scale]="60">
|
|
48
|
+
<ngts-gizmo-viewcube-face-cube />
|
|
49
|
+
|
|
50
|
+
<ngts-gizmo-viewcube-edge-cube
|
|
51
|
+
*ngFor="let edge of edges; let i = index"
|
|
52
|
+
[position]="edge"
|
|
53
|
+
[dimensions]="edgeDimensions[i]"
|
|
54
|
+
/>
|
|
55
|
+
|
|
56
|
+
<ngts-gizmo-viewcube-edge-cube
|
|
57
|
+
*ngFor="let corner of corners"
|
|
58
|
+
[position]="corner"
|
|
59
|
+
[dimensions]="cornerDimensions"
|
|
60
|
+
/>
|
|
61
|
+
|
|
62
|
+
<ngt-ambient-light [intensity]="0.5" />
|
|
63
|
+
<ngt-point-light [position]="10" [intensity]="0.5" />
|
|
64
|
+
</ngt-group>
|
|
65
|
+
`,
|
|
66
|
+
imports: [NgtsGizmoViewcubeEdgeCube, NgtsGizmoViewcubeFaceCube, NgFor],
|
|
67
|
+
providers: [{ provide: NgtsGizmoViewcubeInput, useExisting: NgtsGizmoViewcube }],
|
|
68
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
69
|
+
}]
|
|
70
|
+
}] });
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l6bW8tdmlld2N1YmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvZ2l6bW9zL3NyYy9naXptby1oZWxwZXIvZ2l6bW8tdmlld2N1YmUvZ2l6bW8tdmlld2N1YmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9FLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUVoRSxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7QUE2QjVDLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxzQkFBc0I7SUEzQjdEOztRQTRCQyxVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2QsbUJBQWMsR0FBRyxjQUFjLENBQUM7UUFFaEMsWUFBTyxHQUFHLE9BQU8sQ0FBQztRQUNsQixxQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztLQUNwQzs4R0FOWSxpQkFBaUI7a0dBQWpCLGlCQUFpQixrRUFIbEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxpREFyQnRFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbUJULDREQUNTLHlCQUF5Qiw4R0FBRSx5QkFBeUIsMEVBQUUsS0FBSzs7MkZBSXpELGlCQUFpQjtrQkEzQjdCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1CVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyx5QkFBeUIsRUFBRSx5QkFBeUIsRUFBRSxLQUFLLENBQUM7b0JBQ3RFLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFdBQVcsbUJBQW1CLEVBQUUsQ0FBQztvQkFDaEYsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdGb3IgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IEFtYmllbnRMaWdodCwgR3JvdXAsIFBvaW50TGlnaHQgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBjb3JuZXJEaW1lbnNpb25zLCBjb3JuZXJzLCBlZGdlRGltZW5zaW9ucywgZWRnZXMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBOZ3RzR2l6bW9WaWV3Y3ViZUVkZ2VDdWJlIH0gZnJvbSAnLi9naXptby12aWV3Y3ViZS1lZGdlJztcbmltcG9ydCB7IE5ndHNHaXptb1ZpZXdjdWJlRmFjZUN1YmUgfSBmcm9tICcuL2dpem1vLXZpZXdjdWJlLWZhY2UnO1xuaW1wb3J0IHsgTmd0c0dpem1vVmlld2N1YmVJbnB1dCB9IGZyb20gJy4vZ2l6bW8tdmlld2N1YmUtaW5wdXQnO1xuXG5leHRlbmQoeyBHcm91cCwgQW1iaWVudExpZ2h0LCBQb2ludExpZ2h0IH0pO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLWdpem1vLXZpZXdjdWJlJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LWdyb3VwIFtzY2FsZV09XCI2MFwiPlxuXHRcdFx0PG5ndHMtZ2l6bW8tdmlld2N1YmUtZmFjZS1jdWJlIC8+XG5cblx0XHRcdDxuZ3RzLWdpem1vLXZpZXdjdWJlLWVkZ2UtY3ViZVxuXHRcdFx0XHQqbmdGb3I9XCJsZXQgZWRnZSBvZiBlZGdlczsgbGV0IGkgPSBpbmRleFwiXG5cdFx0XHRcdFtwb3NpdGlvbl09XCJlZGdlXCJcblx0XHRcdFx0W2RpbWVuc2lvbnNdPVwiZWRnZURpbWVuc2lvbnNbaV1cIlxuXHRcdFx0Lz5cblxuXHRcdFx0PG5ndHMtZ2l6bW8tdmlld2N1YmUtZWRnZS1jdWJlXG5cdFx0XHRcdCpuZ0Zvcj1cImxldCBjb3JuZXIgb2YgY29ybmVyc1wiXG5cdFx0XHRcdFtwb3NpdGlvbl09XCJjb3JuZXJcIlxuXHRcdFx0XHRbZGltZW5zaW9uc109XCJjb3JuZXJEaW1lbnNpb25zXCJcblx0XHRcdC8+XG5cblx0XHRcdDxuZ3QtYW1iaWVudC1saWdodCBbaW50ZW5zaXR5XT1cIjAuNVwiIC8+XG5cdFx0XHQ8bmd0LXBvaW50LWxpZ2h0IFtwb3NpdGlvbl09XCIxMFwiIFtpbnRlbnNpdHldPVwiMC41XCIgLz5cblx0XHQ8L25ndC1ncm91cD5cblx0YCxcblx0aW1wb3J0czogW05ndHNHaXptb1ZpZXdjdWJlRWRnZUN1YmUsIE5ndHNHaXptb1ZpZXdjdWJlRmFjZUN1YmUsIE5nRm9yXSxcblx0cHJvdmlkZXJzOiBbeyBwcm92aWRlOiBOZ3RzR2l6bW9WaWV3Y3ViZUlucHV0LCB1c2VFeGlzdGluZzogTmd0c0dpem1vVmlld2N1YmUgfV0sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0dpem1vVmlld2N1YmUgZXh0ZW5kcyBOZ3RzR2l6bW9WaWV3Y3ViZUlucHV0IHtcblx0ZWRnZXMgPSBlZGdlcztcblx0ZWRnZURpbWVuc2lvbnMgPSBlZGdlRGltZW5zaW9ucztcblxuXHRjb3JuZXJzID0gY29ybmVycztcblx0Y29ybmVyRGltZW5zaW9ucyA9IGNvcm5lckRpbWVuc2lvbnM7XG59XG4iXX0=
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, inject, Input, signal } from '@angular/core';
|
|
3
|
+
import { extend, injectNgtStore, NgtArgs, signalStore } from 'angular-three';
|
|
4
|
+
import { BoxGeometry, CanvasTexture, Group, Mesh, MeshBasicMaterial, Sprite, SpriteMaterial } from 'three';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
extend({ Group, Mesh, BoxGeometry, MeshBasicMaterial, Sprite, SpriteMaterial });
|
|
7
|
+
export class NgtsGizmoViewportAxis {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.inputs = signalStore({ scale: [0.8, 0.05, 0.05] });
|
|
10
|
+
this.rotation = this.inputs.select('rotation');
|
|
11
|
+
this.color = this.inputs.select('color');
|
|
12
|
+
this.scale = this.inputs.select('scale');
|
|
13
|
+
}
|
|
14
|
+
set _color(color) {
|
|
15
|
+
this.inputs.set({ color });
|
|
16
|
+
}
|
|
17
|
+
set _rotation(rotation) {
|
|
18
|
+
this.inputs.set({ rotation });
|
|
19
|
+
}
|
|
20
|
+
set _scale(scale) {
|
|
21
|
+
this.inputs.set({ scale });
|
|
22
|
+
}
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsGizmoViewportAxis, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsGizmoViewportAxis, isStandalone: true, selector: "ngts-gizmo-viewport-axis", inputs: { _color: ["color", "_color"], _rotation: ["rotation", "_rotation"], _scale: ["scale", "_scale"] }, ngImport: i0, template: `
|
|
25
|
+
<ngt-group [rotation]="rotation()">
|
|
26
|
+
<ngt-mesh [position]="[0.4, 0, 0]">
|
|
27
|
+
<ngt-box-geometry *args="scale()" />
|
|
28
|
+
<ngt-mesh-basic-material [color]="color()" [toneMapped]="false" />
|
|
29
|
+
</ngt-mesh>
|
|
30
|
+
</ngt-group>
|
|
31
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
|
|
32
|
+
}
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsGizmoViewportAxis, decorators: [{
|
|
34
|
+
type: Component,
|
|
35
|
+
args: [{
|
|
36
|
+
selector: 'ngts-gizmo-viewport-axis',
|
|
37
|
+
standalone: true,
|
|
38
|
+
template: `
|
|
39
|
+
<ngt-group [rotation]="rotation()">
|
|
40
|
+
<ngt-mesh [position]="[0.4, 0, 0]">
|
|
41
|
+
<ngt-box-geometry *args="scale()" />
|
|
42
|
+
<ngt-mesh-basic-material [color]="color()" [toneMapped]="false" />
|
|
43
|
+
</ngt-mesh>
|
|
44
|
+
</ngt-group>
|
|
45
|
+
`,
|
|
46
|
+
imports: [NgtArgs],
|
|
47
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
48
|
+
}]
|
|
49
|
+
}], propDecorators: { _color: [{
|
|
50
|
+
type: Input,
|
|
51
|
+
args: [{ required: true, alias: 'color' }]
|
|
52
|
+
}], _rotation: [{
|
|
53
|
+
type: Input,
|
|
54
|
+
args: [{ required: true, alias: 'rotation' }]
|
|
55
|
+
}], _scale: [{
|
|
56
|
+
type: Input,
|
|
57
|
+
args: [{ alias: 'scale' }]
|
|
58
|
+
}] } });
|
|
59
|
+
export class NgtsGizmoViewportAxisHead {
|
|
60
|
+
constructor() {
|
|
61
|
+
this.inputs = signalStore({ axisHeadScale: 1 });
|
|
62
|
+
this.document = inject(DOCUMENT);
|
|
63
|
+
this.store = injectNgtStore();
|
|
64
|
+
this.capabilities = this.store.select('gl', 'capabilities');
|
|
65
|
+
this.active = signal(false);
|
|
66
|
+
this.arcStyle = this.inputs.select('arcStyle');
|
|
67
|
+
this.labelColor = this.inputs.select('labelColor');
|
|
68
|
+
this.font = this.inputs.select('font');
|
|
69
|
+
this.axisHeadScale = this.inputs.select('axisHeadScale');
|
|
70
|
+
this.label = this.inputs.select('label');
|
|
71
|
+
this.texture = computed(() => {
|
|
72
|
+
const [arcStyle, labelColor, font, label] = [this.arcStyle(), this.labelColor(), this.font(), this.label()];
|
|
73
|
+
const canvas = this.document.createElement('canvas');
|
|
74
|
+
canvas.width = 64;
|
|
75
|
+
canvas.height = 64;
|
|
76
|
+
const context = canvas.getContext('2d');
|
|
77
|
+
context.beginPath();
|
|
78
|
+
context.arc(32, 32, 16, 0, 2 * Math.PI);
|
|
79
|
+
context.closePath();
|
|
80
|
+
context.fillStyle = arcStyle;
|
|
81
|
+
context.fill();
|
|
82
|
+
if (label) {
|
|
83
|
+
context.font = font;
|
|
84
|
+
context.textAlign = 'center';
|
|
85
|
+
context.fillStyle = labelColor;
|
|
86
|
+
context.fillText(label, 32, 41);
|
|
87
|
+
}
|
|
88
|
+
return new CanvasTexture(canvas);
|
|
89
|
+
});
|
|
90
|
+
this.scale = computed(() => {
|
|
91
|
+
const [active, axisHeadScale, label] = [this.active(), this.axisHeadScale(), this.label()];
|
|
92
|
+
return (label ? 1 : 0.75) * (active ? 1.2 : 1) * axisHeadScale;
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
set _arcStyle(arcStyle) {
|
|
96
|
+
this.inputs.set({ arcStyle });
|
|
97
|
+
}
|
|
98
|
+
set _label(label) {
|
|
99
|
+
this.inputs.set({ label });
|
|
100
|
+
}
|
|
101
|
+
set _labelColor(labelColor) {
|
|
102
|
+
this.inputs.set({ labelColor });
|
|
103
|
+
}
|
|
104
|
+
set _axisHeadScale(axisHeadScale) {
|
|
105
|
+
this.inputs.set({ axisHeadScale });
|
|
106
|
+
}
|
|
107
|
+
set _disabled(disabled) {
|
|
108
|
+
this.inputs.set({ disabled });
|
|
109
|
+
}
|
|
110
|
+
set _font(font) {
|
|
111
|
+
this.inputs.set({ font });
|
|
112
|
+
}
|
|
113
|
+
onPointerOver(event) {
|
|
114
|
+
if (!this.inputs.get('disabled')) {
|
|
115
|
+
event.stopPropagation();
|
|
116
|
+
this.active.set(true);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
onPointerOut(event) {
|
|
120
|
+
if (!this.inputs.get('disabled')) {
|
|
121
|
+
if (this.viewportClickEmitter?.observed) {
|
|
122
|
+
this.viewportClickEmitter.emit(event);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
event.stopPropagation();
|
|
126
|
+
this.active.set(false);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsGizmoViewportAxisHead, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
131
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsGizmoViewportAxisHead, isStandalone: true, selector: "ngts-gizmo-viewport-axis-head", inputs: { _arcStyle: ["arcStyle", "_arcStyle"], _label: ["label", "_label"], _labelColor: ["labelColor", "_labelColor"], _axisHeadScale: ["axisHeadScale", "_axisHeadScale"], _disabled: ["disabled", "_disabled"], _font: ["font", "_font"], viewportClickEmitter: "viewportClickEmitter" }, ngImport: i0, template: `
|
|
132
|
+
<ngt-sprite
|
|
133
|
+
ngtCompound
|
|
134
|
+
[scale]="scale()"
|
|
135
|
+
(pointerover)="onPointerOver($event)"
|
|
136
|
+
(pointerout)="onPointerOut($event)"
|
|
137
|
+
>
|
|
138
|
+
<ngt-sprite-material
|
|
139
|
+
[map]="texture()"
|
|
140
|
+
[opacity]="label() ? 1 : 0.75"
|
|
141
|
+
[alphaTest]="0.3"
|
|
142
|
+
[toneMapped]="false"
|
|
143
|
+
>
|
|
144
|
+
<ngt-value [rawValue]="capabilities().getMaxAnisotropy() || 1" attach="map.anisotropy" />
|
|
145
|
+
</ngt-sprite-material>
|
|
146
|
+
</ngt-sprite>
|
|
147
|
+
`, isInline: true }); }
|
|
148
|
+
}
|
|
149
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsGizmoViewportAxisHead, decorators: [{
|
|
150
|
+
type: Component,
|
|
151
|
+
args: [{
|
|
152
|
+
selector: 'ngts-gizmo-viewport-axis-head',
|
|
153
|
+
standalone: true,
|
|
154
|
+
template: `
|
|
155
|
+
<ngt-sprite
|
|
156
|
+
ngtCompound
|
|
157
|
+
[scale]="scale()"
|
|
158
|
+
(pointerover)="onPointerOver($event)"
|
|
159
|
+
(pointerout)="onPointerOut($event)"
|
|
160
|
+
>
|
|
161
|
+
<ngt-sprite-material
|
|
162
|
+
[map]="texture()"
|
|
163
|
+
[opacity]="label() ? 1 : 0.75"
|
|
164
|
+
[alphaTest]="0.3"
|
|
165
|
+
[toneMapped]="false"
|
|
166
|
+
>
|
|
167
|
+
<ngt-value [rawValue]="capabilities().getMaxAnisotropy() || 1" attach="map.anisotropy" />
|
|
168
|
+
</ngt-sprite-material>
|
|
169
|
+
</ngt-sprite>
|
|
170
|
+
`,
|
|
171
|
+
imports: [NgtArgs],
|
|
172
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
173
|
+
}]
|
|
174
|
+
}], propDecorators: { _arcStyle: [{
|
|
175
|
+
type: Input,
|
|
176
|
+
args: [{ alias: 'arcStyle' }]
|
|
177
|
+
}], _label: [{
|
|
178
|
+
type: Input,
|
|
179
|
+
args: [{ alias: 'label' }]
|
|
180
|
+
}], _labelColor: [{
|
|
181
|
+
type: Input,
|
|
182
|
+
args: [{ alias: 'labelColor' }]
|
|
183
|
+
}], _axisHeadScale: [{
|
|
184
|
+
type: Input,
|
|
185
|
+
args: [{ alias: 'axisHeadScale' }]
|
|
186
|
+
}], _disabled: [{
|
|
187
|
+
type: Input,
|
|
188
|
+
args: [{ alias: 'disabled' }]
|
|
189
|
+
}], _font: [{
|
|
190
|
+
type: Input,
|
|
191
|
+
args: [{ alias: 'font' }]
|
|
192
|
+
}], viewportClickEmitter: [{
|
|
193
|
+
type: Input
|
|
194
|
+
}] } });
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l6bW8tdmlld3BvcnQtYXhpcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9naXptb3Mvc3JjL2dpem1vLWhlbHBlci9naXptby12aWV3cG9ydC9naXptby12aWV3cG9ydC1heGlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBc0IsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sT0FBTyxDQUFDOztBQUUzRyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztBQWdCaEYsTUFBTSxPQUFPLHFCQUFxQjtJQWRsQztRQWVTLFdBQU0sR0FBRyxXQUFXLENBSXpCLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFjakMsYUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLFVBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxVQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxD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Q0FBQyxDQUFDO2FBQ3ZCO1NBQ0Q7SUFDRixDQUFDOzhHQTdGVyx5QkFBeUI7a0dBQXpCLHlCQUF5Qix1WEFwQjNCOzs7Ozs7Ozs7Ozs7Ozs7O0VBZ0JUOzsyRkFJVyx5QkFBeUI7a0JBdkJyQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSwrQkFBK0I7b0JBQ3pDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7RUFnQlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDakM7OEJBZWtDLFNBQVM7c0JBQTFDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO2dCQUlHLE1BQU07c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO2dCQUlXLFdBQVc7c0JBQTlDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO2dCQUlTLGNBQWM7c0JBQXBELEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFO2dCQUlDLFNBQVM7c0JBQTFDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO2dCQUlFLEtBQUs7c0JBQWxDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO2dCQUlmLG9CQUFvQjtzQkFBNUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGluamVjdE5ndFN0b3JlLCBOZ3RBcmdzLCBzaWduYWxTdG9yZSwgdHlwZSBOZ3RUaHJlZUV2ZW50IH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBCb3hHZW9tZXRyeSwgQ2FudmFzVGV4dHVyZSwgR3JvdXAsIE1lc2gsIE1lc2hCYXNpY01hdGVyaWFsLCBTcHJpdGUsIFNwcml0ZU1hdGVyaWFsIH0gZnJvbSAndGhyZWUnO1xuXG5leHRlbmQoeyBHcm91cCwgTWVzaCwgQm94R2VvbWV0cnksIE1lc2hCYXNpY01hdGVyaWFsLCBTcHJpdGUsIFNwcml0ZU1hdGVyaWFsIH0pO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLWdpem1vLXZpZXdwb3J0LWF4aXMnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtZ3JvdXAgW3JvdGF0aW9uXT1cInJvdGF0aW9uKClcIj5cblx0XHRcdDxuZ3QtbWVzaCBbcG9zaXRpb25dPVwiWzAuNCwgMCwgMF1cIj5cblx0XHRcdFx0PG5ndC1ib3gtZ2VvbWV0cnkgKmFyZ3M9XCJzY2FsZSgpXCIgLz5cblx0XHRcdFx0PG5ndC1tZXNoLWJhc2ljLW1hdGVyaWFsIFtjb2xvcl09XCJjb2xvcigpXCIgW3RvbmVNYXBwZWRdPVwiZmFsc2VcIiAvPlxuXHRcdFx0PC9uZ3QtbWVzaD5cblx0XHQ8L25ndC1ncm91cD5cblx0YCxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNHaXptb1ZpZXdwb3J0QXhpcyB7XG5cdHByaXZhdGUgaW5wdXRzID0gc2lnbmFsU3RvcmU8e1xuXHRcdGNvbG9yOiBzdHJpbmc7XG5cdFx0cm90YXRpb246IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcblx0XHRzY2FsZTogW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuXHR9Pih7IHNjYWxlOiBbMC44LCAwLjA1LCAwLjA1XSB9KTtcblxuXHRASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSwgYWxpYXM6ICdjb2xvcicgfSkgc2V0IF9jb2xvcihjb2xvcjogc3RyaW5nKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgY29sb3IgfSk7XG5cdH1cblxuXHRASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSwgYWxpYXM6ICdyb3RhdGlvbicgfSkgc2V0IF9yb3RhdGlvbihyb3RhdGlvbjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgcm90YXRpb24gfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3NjYWxlJyB9KSBzZXQgX3NjYWxlKHNjYWxlOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBzY2FsZSB9KTtcblx0fVxuXG5cdHJvdGF0aW9uID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdyb3RhdGlvbicpO1xuXHRjb2xvciA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnY29sb3InKTtcblx0c2NhbGUgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ3NjYWxlJyk7XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtZ2l6bW8tdmlld3BvcnQtYXhpcy1oZWFkJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXNwcml0ZVxuXHRcdFx0bmd0Q29tcG91bmRcblx0XHRcdFtzY2FsZV09XCJzY2FsZSgpXCJcblx0XHRcdChwb2ludGVyb3Zlcik9XCJvblBvaW50ZXJPdmVyKCRldmVudClcIlxuXHRcdFx0KHBvaW50ZXJvdXQpPVwib25Qb2ludGVyT3V0KCRldmVudClcIlxuXHRcdD5cblx0XHRcdDxuZ3Qtc3ByaXRlLW1hdGVyaWFsXG5cdFx0XHRcdFttYXBdPVwidGV4dHVyZSgpXCJcblx0XHRcdFx0W29wYWNpdHldPVwibGFiZWwoKSA/IDEgOiAwLjc1XCJcblx0XHRcdFx0W2FscGhhVGVzdF09XCIwLjNcIlxuXHRcdFx0XHRbdG9uZU1hcHBlZF09XCJmYWxzZVwiXG5cdFx0XHQ+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cImNhcGFiaWxpdGllcygpLmdldE1heEFuaXNvdHJvcHkoKSB8fCAxXCIgYXR0YWNoPVwibWFwLmFuaXNvdHJvcHlcIiAvPlxuXHRcdFx0PC9uZ3Qtc3ByaXRlLW1hdGVyaWFsPlxuXHRcdDwvbmd0LXNwcml0ZT5cblx0YCxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNHaXptb1ZpZXdwb3J0QXhpc0hlYWQge1xuXHRwcml2YXRlIGlucHV0cyA9IHNpZ25hbFN0b3JlPHtcblx0XHRhcmNTdHlsZTogc3RyaW5nO1xuXHRcdGxhYmVsOiBzdHJpbmc7XG5cdFx0bGFiZWxDb2xvcjogc3RyaW5nO1xuXHRcdGF4aXNIZWFkU2NhbGU6IG51bWJlcjtcblx0XHRkaXNhYmxlZDogYm9vbGVhbjtcblx0XHRmb250OiBzdHJpbmc7XG5cdH0+KHsgYXhpc0hlYWRTY2FsZTogMSB9KTtcblxuXHRwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdE5ndFN0b3JlKCk7XG5cdGNhcGFiaWxpdGllcyA9IHRoaXMuc3RvcmUuc2VsZWN0KCdnbCcsICdjYXBhYmlsaXRpZXMnKTtcblxuXHRASW5wdXQoeyBhbGlhczogJ2FyY1N0eWxlJyB9KSBzZXQgX2FyY1N0eWxlKGFyY1N0eWxlOiBzdHJpbmcpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBhcmNTdHlsZSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnbGFiZWwnIH0pIHNldCBfbGFiZWwobGFiZWw6IHN0cmluZykge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGxhYmVsIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdsYWJlbENvbG9yJyB9KSBzZXQgX2xhYmVsQ29sb3IobGFiZWxDb2xvcjogc3RyaW5nKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgbGFiZWxDb2xvciB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnYXhpc0hlYWRTY2FsZScgfSkgc2V0IF9heGlzSGVhZFNjYWxlKGF4aXNIZWFkU2NhbGU6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGF4aXNIZWFkU2NhbGUgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2Rpc2FibGVkJyB9KSBzZXQgX2Rpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZGlzYWJsZWQgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2ZvbnQnIH0pIHNldCBfZm9udChmb250OiBzdHJpbmcpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBmb250IH0pO1xuXHR9XG5cblx0QElucHV0KCkgdmlld3BvcnRDbGlja0VtaXR0ZXI/OiBFdmVudEVtaXR0ZXI8Tmd0VGhyZWVFdmVudDxNb3VzZUV2ZW50Pj47XG5cblx0YWN0aXZlID0gc2lnbmFsKGZhbHNlKTtcblxuXHRwcml2YXRlIGFyY1N0eWxlID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdhcmNTdHlsZScpO1xuXHRwcml2YXRlIGxhYmVsQ29sb3IgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2xhYmVsQ29sb3InKTtcblx0cHJpdmF0ZSBmb250ID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdmb250Jyk7XG5cdHByaXZhdGUgYXhpc0hlYWRTY2FsZSA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnYXhpc0hlYWRTY2FsZScpO1xuXG5cdGxhYmVsID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdsYWJlbCcpO1xuXG5cdHRleHR1cmUgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgW2FyY1N0eWxlLCBsYWJlbENvbG9yLCBmb250LCBsYWJlbF0gPSBbdGhpcy5hcmNTdHlsZSgpLCB0aGlzLmxhYmVsQ29sb3IoKSwgdGhpcy5mb250KCksIHRoaXMubGFiZWwoKV07XG5cblx0XHRjb25zdCBjYW52YXMgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuXHRcdGNhbnZhcy53aWR0aCA9IDY0O1xuXHRcdGNhbnZhcy5oZWlnaHQgPSA2NDtcblxuXHRcdGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKSE7XG5cdFx0Y29udGV4dC5iZWdpblBhdGgoKTtcblx0XHRjb250ZXh0LmFyYygzMiwgMzIsIDE2LCAwLCAyICogTWF0aC5QSSk7XG5cdFx0Y29udGV4dC5jbG9zZVBhdGgoKTtcblx0XHRjb250ZXh0LmZpbGxTdHlsZSA9IGFyY1N0eWxlO1xuXHRcdGNvbnRleHQuZmlsbCgpO1xuXG5cdFx0aWYgKGxhYmVsKSB7XG5cdFx0XHRjb250ZXh0LmZvbnQgPSBmb250O1xuXHRcdFx0Y29udGV4dC50ZXh0QWxpZ24gPSAnY2VudGVyJztcblx0XHRcdGNvbnRleHQuZmlsbFN0eWxlID0gbGFiZWxDb2xvcjtcblx0XHRcdGNvbnRleHQuZmlsbFRleHQobGFiZWwsIDMyLCA0MSk7XG5cdFx0fVxuXHRcdHJldHVybiBuZXcgQ2FudmFzVGV4dHVyZShjYW52YXMpO1xuXHR9KTtcblxuXHRzY2FsZSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBbYWN0aXZlLCBheGlzSGVhZFNjYWxlLCBsYWJlbF0gPSBbdGhpcy5hY3RpdmUoKSwgdGhpcy5heGlzSGVhZFNjYWxlKCksIHRoaXMubGFiZWwoKV07XG5cdFx0cmV0dXJuIChsYWJlbCA/IDEgOiAwLjc1KSAqIChhY3RpdmUgPyAxLjIgOiAxKSAqIGF4aXNIZWFkU2NhbGU7XG5cdH0pO1xuXG5cdG9uUG9pbnRlck92ZXIoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50Pikge1xuXHRcdGlmICghdGhpcy5pbnB1dHMuZ2V0KCdkaXNhYmxlZCcpKSB7XG5cdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdHRoaXMuYWN0aXZlLnNldCh0cnVlKTtcblx0XHR9XG5cdH1cblxuXHRvblBvaW50ZXJPdXQoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50Pikge1xuXHRcdGlmICghdGhpcy5pbnB1dHMuZ2V0KCdkaXNhYmxlZCcpKSB7XG5cdFx0XHRpZiAodGhpcy52aWV3cG9ydENsaWNrRW1pdHRlcj8ub2JzZXJ2ZWQpIHtcblx0XHRcdFx0dGhpcy52aWV3cG9ydENsaWNrRW1pdHRlci5lbWl0KGV2ZW50KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHR0aGlzLmFjdGl2ZS5zZXQoZmFsc2UpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIl19
|