angular-three-soba 2.0.0-beta.7 → 2.0.0-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. package/abstractions/billboard/billboard.d.ts +11 -7
  2. package/abstractions/detailed/detailed.d.ts +26 -0
  3. package/abstractions/edges/edges.d.ts +23 -11
  4. package/abstractions/grid/grid.d.ts +41 -50
  5. package/abstractions/index.d.ts +1 -7
  6. package/abstractions/text/text.d.ts +10 -4
  7. package/abstractions/text-3d/text-3d.d.ts +47 -40
  8. package/cameras/camera/camera-content.d.ts +1 -1
  9. package/cameras/camera/camera.d.ts +16 -13
  10. package/cameras/cube-camera/cube-camera.d.ts +50 -23
  11. package/cameras/index.d.ts +0 -1
  12. package/cameras/orthographic-camera/orthographic-camera.d.ts +29 -18
  13. package/cameras/perspective-camera/perspective-camera.d.ts +10 -1
  14. package/controls/orbit-controls/orbit-controls.d.ts +30 -13
  15. package/esm2022/abstractions/billboard/billboard.mjs +36 -33
  16. package/esm2022/abstractions/detailed/detailed.mjs +64 -0
  17. package/esm2022/abstractions/edges/edges.mjs +58 -63
  18. package/esm2022/abstractions/grid/grid.mjs +140 -110
  19. package/esm2022/abstractions/index.mjs +2 -8
  20. package/esm2022/abstractions/text/text.mjs +123 -122
  21. package/esm2022/abstractions/text-3d/text-3d.mjs +119 -121
  22. package/esm2022/cameras/camera/camera-content.mjs +5 -6
  23. package/esm2022/cameras/camera/camera.mjs +48 -42
  24. package/esm2022/cameras/cube-camera/cube-camera.mjs +129 -99
  25. package/esm2022/cameras/index.mjs +1 -2
  26. package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +78 -75
  27. package/esm2022/cameras/perspective-camera/perspective-camera.mjs +25 -26
  28. package/esm2022/controls/orbit-controls/orbit-controls.mjs +94 -90
  29. package/esm2022/loaders/gltf-loader/gltf-loader.mjs +3 -6
  30. package/esm2022/loaders/loader/loader.mjs +92 -87
  31. package/esm2022/loaders/progress/progress.mjs +1 -1
  32. package/esm2022/loaders/texture-loader/texture-loader.mjs +4 -4
  33. package/esm2022/materials/index.mjs +2 -1
  34. package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +60 -51
  35. package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +239 -255
  36. package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +99 -97
  37. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +167 -146
  38. package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +44 -42
  39. package/esm2022/materials/point-material/point-material.mjs +46 -0
  40. package/esm2022/misc/animations/animations.mjs +20 -16
  41. package/esm2022/misc/bake-shadows/bake-shadows.mjs +13 -13
  42. package/esm2022/misc/caustics/caustics.mjs +387 -0
  43. package/esm2022/misc/decal/decal.mjs +187 -0
  44. package/esm2022/misc/depth-buffer/depth-buffer.mjs +33 -35
  45. package/esm2022/misc/example/example.mjs +160 -0
  46. package/esm2022/misc/fbo/fbo.mjs +35 -35
  47. package/esm2022/misc/html/html-wrapper.mjs +478 -0
  48. package/esm2022/misc/html/html.mjs +304 -0
  49. package/esm2022/misc/index.mjs +10 -1
  50. package/esm2022/misc/sampler/sampler.mjs +142 -0
  51. package/esm2022/misc/shadow/shadow.mjs +111 -0
  52. package/esm2022/misc/stats-gl/stats-gl.mjs +61 -0
  53. package/esm2022/misc/trail/trail.mjs +209 -0
  54. package/esm2022/misc/trail-texture/inject-trail-texture.mjs +17 -0
  55. package/esm2022/misc/trail-texture/trail-texture.mjs +106 -0
  56. package/esm2022/modifiers/angular-three-soba-modifiers.mjs +5 -0
  57. package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +64 -0
  58. package/esm2022/modifiers/index.mjs +2 -0
  59. package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +44 -0
  60. package/esm2022/performances/adaptive-events/adaptive-events.mjs +27 -0
  61. package/esm2022/performances/angular-three-soba-performances.mjs +5 -0
  62. package/esm2022/performances/index.mjs +6 -0
  63. package/esm2022/performances/points/points-input.mjs +64 -0
  64. package/esm2022/performances/points/points.mjs +329 -0
  65. package/esm2022/performances/points/position-point.mjs +54 -0
  66. package/esm2022/performances/segments/segment-object.mjs +9 -0
  67. package/esm2022/performances/segments/segments.mjs +182 -0
  68. package/esm2022/shaders/blur-pass/blur-pass.mjs +1 -1
  69. package/esm2022/shaders/caustics/caustics-material.mjs +130 -0
  70. package/esm2022/shaders/caustics/caustics-projection-material.mjs +31 -0
  71. package/esm2022/shaders/convolution-material/convolution-material.mjs +1 -1
  72. package/esm2022/shaders/discard-material/discard-material.mjs +1 -1
  73. package/esm2022/shaders/grid-material/grid-material.mjs +29 -14
  74. package/esm2022/shaders/index.mjs +5 -3
  75. package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +42 -41
  76. package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +1 -1
  77. package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +2 -2
  78. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +4 -4
  79. package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +1 -1
  80. package/esm2022/shaders/shader-material/shader-material.mjs +1 -1
  81. package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +17 -25
  82. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +32 -46
  83. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +7 -7
  84. package/esm2022/shaders/star-field-material/star-field-material.mjs +3 -2
  85. package/esm2022/shaders/wireframe-material/wireframe-material.mjs +247 -0
  86. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +160 -176
  87. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +1 -1
  88. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +126 -128
  89. package/esm2022/staging/backdrop/backdrop.mjs +77 -0
  90. package/esm2022/staging/bb-anchor/bb-anchor.mjs +70 -0
  91. package/esm2022/staging/bounds/bounds.mjs +144 -143
  92. package/esm2022/staging/camera-shake/camera-shake.mjs +86 -80
  93. package/esm2022/staging/center/center.mjs +106 -91
  94. package/esm2022/staging/cloud/cloud.mjs +118 -124
  95. package/esm2022/staging/contact-shadows/contact-shadows.mjs +131 -134
  96. package/esm2022/staging/environment/assets.mjs +12 -12
  97. package/esm2022/staging/environment/environment-cube.mjs +28 -30
  98. package/esm2022/staging/environment/environment-ground.mjs +18 -20
  99. package/esm2022/staging/environment/environment-input.mjs +97 -84
  100. package/esm2022/staging/environment/environment-map.mjs +33 -33
  101. package/esm2022/staging/environment/environment-portal.mjs +75 -97
  102. package/esm2022/staging/environment/environment.mjs +34 -51
  103. package/esm2022/staging/environment/utils.mjs +35 -14
  104. package/esm2022/staging/float/float.mjs +70 -58
  105. package/esm2022/staging/index.mjs +7 -3
  106. package/esm2022/staging/matcap-texture/matcap-texture.mjs +64 -0
  107. package/esm2022/staging/normal-texture/normal-texture.mjs +53 -0
  108. package/esm2022/staging/sky/sky.mjs +85 -80
  109. package/esm2022/staging/sparkles/sparkles.mjs +108 -105
  110. package/esm2022/staging/spot-light/shadow-mesh-input.mjs +63 -0
  111. package/esm2022/staging/spot-light/shadow-mesh.mjs +266 -0
  112. package/esm2022/staging/spot-light/spot-light-input.mjs +67 -58
  113. package/esm2022/staging/spot-light/spot-light.mjs +51 -64
  114. package/esm2022/staging/spot-light/volumetric-mesh.mjs +61 -78
  115. package/esm2022/staging/stage/stage.mjs +304 -290
  116. package/esm2022/staging/stars/stars.mjs +101 -102
  117. package/esm2022/staging/wireframe/wireframe-input.mjs +191 -0
  118. package/esm2022/staging/wireframe/wireframe.mjs +224 -0
  119. package/esm2022/utils/angular-three-soba-utils.mjs +5 -0
  120. package/esm2022/utils/content/content.mjs +15 -0
  121. package/esm2022/utils/index.mjs +2 -0
  122. package/fesm2022/angular-three-soba-abstractions.mjs +505 -2087
  123. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  124. package/fesm2022/angular-three-soba-cameras.mjs +302 -259
  125. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  126. package/fesm2022/angular-three-soba-controls.mjs +93 -88
  127. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  128. package/fesm2022/angular-three-soba-loaders.mjs +94 -90
  129. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  130. package/fesm2022/angular-three-soba-materials.mjs +655 -590
  131. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  132. package/fesm2022/angular-three-soba-misc.mjs +2198 -89
  133. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  134. package/fesm2022/angular-three-soba-modifiers.mjs +71 -0
  135. package/fesm2022/angular-three-soba-modifiers.mjs.map +1 -0
  136. package/fesm2022/angular-three-soba-performances.mjs +697 -0
  137. package/fesm2022/angular-three-soba-performances.mjs.map +1 -0
  138. package/fesm2022/angular-three-soba-shaders.mjs +501 -264
  139. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  140. package/fesm2022/angular-three-soba-staging.mjs +2870 -2555
  141. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  142. package/fesm2022/angular-three-soba-utils.mjs +22 -0
  143. package/fesm2022/angular-three-soba-utils.mjs.map +1 -0
  144. package/loaders/gltf-loader/gltf-loader.d.ts +4 -3
  145. package/loaders/loader/loader.d.ts +19 -17
  146. package/loaders/progress/progress.d.ts +1 -1
  147. package/loaders/texture-loader/texture-loader.d.ts +2 -2
  148. package/materials/index.d.ts +1 -0
  149. package/materials/mesh-distort-material/mesh-distort-material.d.ts +25 -15
  150. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +74 -56
  151. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +33 -21
  152. package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +55 -39
  153. package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +19 -10
  154. package/materials/point-material/point-material.d.ts +24 -0
  155. package/metadata.json +1 -0
  156. package/misc/animations/animations.d.ts +6 -4
  157. package/misc/caustics/caustics.d.ts +87 -0
  158. package/misc/decal/decal.d.ts +49 -0
  159. package/misc/depth-buffer/depth-buffer.d.ts +2 -2
  160. package/misc/example/example.d.ts +81 -0
  161. package/misc/fbo/fbo.d.ts +2 -2
  162. package/misc/html/html-wrapper.d.ts +559 -0
  163. package/misc/html/html.d.ts +214 -0
  164. package/misc/index.d.ts +9 -0
  165. package/misc/sampler/sampler.d.ts +67 -0
  166. package/misc/shadow/shadow.d.ts +37 -0
  167. package/misc/stats-gl/stats-gl.d.ts +24 -0
  168. package/misc/trail/trail.d.ts +57 -0
  169. package/misc/trail-texture/inject-trail-texture.d.ts +9 -0
  170. package/misc/trail-texture/trail-texture.d.ts +50 -0
  171. package/modifiers/README.md +3 -0
  172. package/modifiers/curve-modifier/curve-modifier.d.ts +23 -0
  173. package/modifiers/index.d.ts +1 -0
  174. package/package.json +30 -22
  175. package/performances/README.md +3 -0
  176. package/performances/adaptive-dpr/adaptive-dpr.d.ts +14 -0
  177. package/{performance/adaptive → performances/adaptive-events}/adaptive-events.d.ts +3 -0
  178. package/performances/index.d.ts +5 -0
  179. package/performances/points/points-input.d.ts +32 -0
  180. package/performances/points/points.d.ts +92 -0
  181. package/{performance/instances/position-mesh.d.ts → performances/points/position-point.d.ts} +4 -3
  182. package/performances/segments/segment-object.d.ts +7 -0
  183. package/performances/segments/segments.d.ts +124 -0
  184. package/shaders/grid-material/grid-material.d.ts +33 -0
  185. package/shaders/index.d.ts +4 -2
  186. package/shaders/mesh-distort-material/mesh-distort-material.d.ts +146 -1
  187. package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +1 -1
  188. package/shaders/shader-material/shader-material.d.ts +2 -2
  189. package/shaders/soft-shadow-material/soft-shadow-material.d.ts +10 -1
  190. package/shaders/sparkles-material/sparkles-material.d.ts +15 -1
  191. package/shaders/spot-light-material/spot-light-material.d.ts +11 -2
  192. package/shaders/star-field-material/star-field-material.d.ts +11 -1
  193. package/shaders/wireframe-material/wireframe-material.d.ts +58 -0
  194. package/staging/accumulative-shadows/accumulative-shadows.d.ts +89 -39
  195. package/staging/accumulative-shadows/randomized-lights.d.ts +40 -27
  196. package/staging/backdrop/backdrop.d.ts +30 -0
  197. package/staging/bb-anchor/bb-anchor.d.ts +27 -0
  198. package/staging/bounds/bounds.d.ts +100 -24
  199. package/staging/camera-shake/camera-shake.d.ts +30 -19
  200. package/staging/center/center.d.ts +43 -35
  201. package/staging/cloud/cloud.d.ts +26 -23
  202. package/staging/contact-shadows/contact-shadows.d.ts +41 -28
  203. package/staging/environment/assets.d.ts +9 -9
  204. package/staging/environment/environment-cube.d.ts +9 -5
  205. package/staging/environment/environment-ground.d.ts +7 -7
  206. package/staging/environment/environment-input.d.ts +36 -36
  207. package/staging/environment/environment-map.d.ts +10 -5
  208. package/staging/environment/environment-portal.d.ts +10 -5
  209. package/staging/environment/environment.d.ts +0 -4
  210. package/staging/environment/utils.d.ts +2 -2
  211. package/staging/float/float.d.ts +14 -10
  212. package/staging/index.d.ts +6 -2
  213. package/staging/matcap-texture/matcap-texture.d.ts +13 -0
  214. package/staging/normal-texture/normal-texture.d.ts +16 -0
  215. package/staging/sky/sky.d.ts +28 -21
  216. package/staging/sparkles/sparkles.d.ts +35 -21
  217. package/staging/spot-light/shadow-mesh-input.d.ts +29 -0
  218. package/staging/spot-light/shadow-mesh.d.ts +37 -0
  219. package/staging/spot-light/spot-light-input.d.ts +25 -25
  220. package/staging/spot-light/spot-light.d.ts +31 -15
  221. package/staging/spot-light/volumetric-mesh.d.ts +15 -9
  222. package/staging/stage/stage.d.ts +88 -63
  223. package/staging/stars/stars.d.ts +27 -16
  224. package/staging/wireframe/wireframe-input.d.ts +65 -0
  225. package/staging/wireframe/wireframe.d.ts +28 -0
  226. package/utils/README.md +3 -0
  227. package/utils/content/content.d.ts +8 -0
  228. package/utils/index.d.ts +1 -0
  229. package/web-types.json +1 -0
  230. package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +0 -25
  231. package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +0 -25
  232. package/abstractions/gizmo-helper/gizmo-helper.d.ts +0 -34
  233. package/abstractions/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -12
  234. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
  235. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -30
  236. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -32
  237. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -14
  238. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -47
  239. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -40
  240. package/abstractions/line/line-input.d.ts +0 -42
  241. package/abstractions/line/line.d.ts +0 -35
  242. package/abstractions/quadratic-bezier-line/quadratic-bezier-line.d.ts +0 -23
  243. package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +0 -131
  244. package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +0 -113
  245. package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +0 -210
  246. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
  247. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -95
  248. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -155
  249. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -62
  250. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -80
  251. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -206
  252. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -273
  253. package/esm2022/abstractions/line/line-input.mjs +0 -113
  254. package/esm2022/abstractions/line/line.mjs +0 -165
  255. package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
  256. package/esm2022/performance/adaptive/adaptive-dpr.mjs +0 -46
  257. package/esm2022/performance/adaptive/adaptive-events.mjs +0 -31
  258. package/esm2022/performance/angular-three-soba-performance.mjs +0 -5
  259. package/esm2022/performance/detailed/detailed.mjs +0 -61
  260. package/esm2022/performance/index.mjs +0 -7
  261. package/esm2022/performance/instances/instance.mjs +0 -48
  262. package/esm2022/performance/instances/instances.mjs +0 -189
  263. package/esm2022/performance/instances/position-mesh.mjs +0 -52
  264. package/esm2022/performance/stats/stats.mjs +0 -79
  265. package/esm2022/shaders/caustics-material/caustics-material.mjs +0 -128
  266. package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +0 -33
  267. package/esm2022/staging/caustics/caustisc.mjs +0 -384
  268. package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +0 -57
  269. package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +0 -258
  270. package/fesm2022/angular-three-soba-performance.mjs +0 -487
  271. package/fesm2022/angular-three-soba-performance.mjs.map +0 -1
  272. package/performance/README.md +0 -3
  273. package/performance/adaptive/adaptive-dpr.d.ts +0 -8
  274. package/performance/detailed/detailed.d.ts +0 -20
  275. package/performance/index.d.ts +0 -6
  276. package/performance/instances/instance.d.ts +0 -9
  277. package/performance/instances/instances.d.ts +0 -35
  278. package/performance/stats/stats.d.ts +0 -18
  279. package/plugin/generators.json +0 -19
  280. package/plugin/libs/plugin/README.md +0 -11
  281. package/plugin/package.json +0 -9
  282. package/plugin/src/generators/init/compat.d.ts +0 -2
  283. package/plugin/src/generators/init/compat.js +0 -6
  284. package/plugin/src/generators/init/compat.js.map +0 -1
  285. package/plugin/src/generators/init/init.d.ts +0 -7
  286. package/plugin/src/generators/init/init.js +0 -28
  287. package/plugin/src/generators/init/init.js.map +0 -1
  288. package/plugin/src/generators/init/schema.json +0 -6
  289. package/plugin/src/index.d.ts +0 -1
  290. package/plugin/src/index.js +0 -6
  291. package/plugin/src/index.js.map +0 -1
  292. package/staging/caustics/caustisc.d.ts +0 -70
  293. package/staging/spot-light/spot-light-shadow-mesh-input.d.ts +0 -29
  294. package/staging/spot-light/spot-light-shadow-mesh.d.ts +0 -38
  295. /package/shaders/{caustics-material → caustics}/caustics-material.d.ts +0 -0
  296. /package/shaders/{caustics-material → caustics}/caustics-projection-material.d.ts +0 -0
@@ -1,42 +1,14 @@
1
- import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
2
- import { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtSignalStore } from 'angular-three';
1
+ import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed } from '@angular/core';
2
+ import { NgtArgs, extend, injectNgtRef, signalStore } from 'angular-three';
3
3
  import { StarFieldMaterial } from 'angular-three-soba/shaders';
4
4
  import * as THREE from 'three';
5
5
  import { BufferAttribute, BufferGeometry, Points } from 'three';
6
6
  import * as i0 from "@angular/core";
7
7
  extend({ Points, BufferGeometry, BufferAttribute });
8
- const genStar = (r) => {
9
- return new THREE.Vector3().setFromSpherical(new THREE.Spherical(r, Math.acos(1 - Math.random() * 2), Math.random() * 2 * Math.PI));
10
- };
11
- class NgtsStars extends NgtSignalStore {
12
- set radius(radius) {
13
- this.set({ radius });
14
- }
15
- set depth(depth) {
16
- this.set({ depth });
17
- }
18
- set count(count) {
19
- this.set({ count });
20
- }
21
- set factor(factor) {
22
- this.set({ factor });
23
- }
24
- set saturation(saturation) {
25
- this.set({ saturation });
26
- }
27
- set starsFade(fade) {
28
- this.set({ fade });
29
- }
30
- set speed(speed) {
31
- this.set({ speed });
32
- }
33
- #count;
34
- #depth;
35
- #factor;
36
- #radius;
37
- #saturation;
8
+ const genStar = (r) => new THREE.Vector3().setFromSpherical(new THREE.Spherical(r, Math.acos(1 - Math.random() * 2), Math.random() * 2 * Math.PI));
9
+ export class NgtsStars {
38
10
  constructor() {
39
- super({
11
+ this.inputs = signalStore({
40
12
  radius: 100,
41
13
  depth: 50,
42
14
  count: 5000,
@@ -48,23 +20,23 @@ class NgtsStars extends NgtSignalStore {
48
20
  this.AdditiveBlending = THREE.AdditiveBlending;
49
21
  this.material = new StarFieldMaterial();
50
22
  this.starsRef = injectNgtRef();
51
- this.#count = this.select('count');
52
- this.#depth = this.select('depth');
53
- this.#factor = this.select('factor');
54
- this.#radius = this.select('radius');
55
- this.#saturation = this.select('saturation');
56
- this.fade = this.select('fade');
57
- this.bufferAttributes = computed(() => {
23
+ this.count = this.inputs.select('count');
24
+ this.depth = this.inputs.select('depth');
25
+ this.factor = this.inputs.select('factor');
26
+ this.radius = this.inputs.select('radius');
27
+ this.saturation = this.inputs.select('saturation');
28
+ this.fade = this.inputs.select('fade');
29
+ this.attributes = computed(() => {
58
30
  const positions = [];
59
31
  const colors = [];
60
- const sizes = Array.from({ length: this.#count() }, () => (0.5 + 0.5 * Math.random()) * this.#factor());
32
+ const sizes = Array.from({ length: this.count() }, () => (0.5 + 0.5 * Math.random()) * this.factor());
61
33
  const color = new THREE.Color();
62
- let r = this.#radius() + this.#depth();
63
- const increment = this.#depth() / this.#count();
64
- for (let i = 0; i < this.#count(); i++) {
34
+ let r = this.radius() + this.depth();
35
+ const increment = this.depth() / this.count();
36
+ for (let i = 0; i < this.count(); i++) {
65
37
  r -= increment * Math.random();
66
38
  positions.push(...genStar(r).toArray());
67
- color.setHSL(i / this.#count(), this.#saturation(), 0.9);
39
+ color.setHSL(i / this.count(), this.saturation(), 0.9);
68
40
  colors.push(color.r, color.g, color.b);
69
41
  }
70
42
  return {
@@ -73,76 +45,103 @@ class NgtsStars extends NgtSignalStore {
73
45
  sizes: new Float32Array(sizes),
74
46
  };
75
47
  });
76
- injectBeforeRender(this.#onBeforeRender.bind(this));
77
48
  }
78
- #onBeforeRender({ clock }) {
79
- this.material.uniforms['time'].value = clock.getElapsedTime() * this.get('speed');
49
+ set _radius(radius) {
50
+ this.inputs.set({ radius });
51
+ }
52
+ set _depth(depth) {
53
+ this.inputs.set({ depth });
54
+ }
55
+ set _count(count) {
56
+ this.inputs.set({ count });
57
+ }
58
+ set _factor(factor) {
59
+ this.inputs.set({ factor });
60
+ }
61
+ set _saturation(saturation) {
62
+ this.inputs.set({ saturation });
63
+ }
64
+ set starsFade(fade) {
65
+ this.inputs.set({ fade });
66
+ }
67
+ set _speed(speed) {
68
+ this.inputs.set({ speed });
69
+ }
70
+ onBeforeRender({ object, state }) {
71
+ object.uniforms['time'].value = state.clock.getElapsedTime() * this.inputs.get('speed');
80
72
  }
81
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtsStars, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
82
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: NgtsStars, isStandalone: true, selector: "ngts-stars", inputs: { starsRef: "starsRef", radius: "radius", depth: "depth", count: "count", factor: "factor", saturation: "saturation", starsFade: ["fade", "starsFade"], speed: "speed" }, usesInheritance: true, ngImport: i0, template: `
83
- <ngt-points [ref]="starsRef">
84
- <ngt-buffer-geometry>
85
- <ngt-buffer-attribute attach="attributes.position" *args="[bufferAttributes().positions, 3]" />
86
- <ngt-buffer-attribute attach="attributes.color" *args="[bufferAttributes().colors, 3]" />
87
- <ngt-buffer-attribute attach="attributes.size" *args="[bufferAttributes().sizes, 1]" />
88
- </ngt-buffer-geometry>
89
- <ngt-primitive
90
- *args="[material]"
91
- attach="material"
92
- [blending]="AdditiveBlending"
93
- [depthWrite]="false"
94
- [transparent]="true"
95
- [vertexColors]="true"
96
- >
97
- <ngt-value attach="uniforms.fade.value" [rawValue]="fade()" />
98
- </ngt-primitive>
99
- </ngt-points>
100
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] }); }
73
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsStars, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
74
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NgtsStars, isStandalone: true, selector: "ngts-stars", inputs: { starsRef: "starsRef", _radius: ["radius", "_radius"], _depth: ["depth", "_depth"], _count: ["count", "_count"], _factor: ["factor", "_factor"], _saturation: ["saturation", "_saturation"], starsFade: ["fade", "starsFade"], _speed: ["speed", "_speed"] }, ngImport: i0, template: `
75
+ <ngt-points [ref]="starsRef">
76
+ <ngt-buffer-geometry>
77
+ <ngt-buffer-attribute attach="attributes.position" *args="[attributes().positions, 3]" />
78
+ <ngt-buffer-attribute attach="attributes.color" *args="[attributes().colors, 3]" />
79
+ <ngt-buffer-attribute attach="attributes.size" *args="[attributes().sizes, 1]" />
80
+ </ngt-buffer-geometry>
81
+ <ngt-primitive
82
+ *args="[material]"
83
+ attach="material"
84
+ [blending]="AdditiveBlending"
85
+ [depthWrite]="false"
86
+ [transparent]="true"
87
+ [vertexColors]="true"
88
+ (beforeRender)="onBeforeRender($event)"
89
+ >
90
+ <ngt-value attach="uniforms.fade.value" [rawValue]="fade()" />
91
+ </ngt-primitive>
92
+ </ngt-points>
93
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
101
94
  }
102
- export { NgtsStars };
103
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtsStars, decorators: [{
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsStars, decorators: [{
104
96
  type: Component,
105
97
  args: [{
106
98
  selector: 'ngts-stars',
107
99
  standalone: true,
108
100
  template: `
109
- <ngt-points [ref]="starsRef">
110
- <ngt-buffer-geometry>
111
- <ngt-buffer-attribute attach="attributes.position" *args="[bufferAttributes().positions, 3]" />
112
- <ngt-buffer-attribute attach="attributes.color" *args="[bufferAttributes().colors, 3]" />
113
- <ngt-buffer-attribute attach="attributes.size" *args="[bufferAttributes().sizes, 1]" />
114
- </ngt-buffer-geometry>
115
- <ngt-primitive
116
- *args="[material]"
117
- attach="material"
118
- [blending]="AdditiveBlending"
119
- [depthWrite]="false"
120
- [transparent]="true"
121
- [vertexColors]="true"
122
- >
123
- <ngt-value attach="uniforms.fade.value" [rawValue]="fade()" />
124
- </ngt-primitive>
125
- </ngt-points>
126
- `,
101
+ <ngt-points [ref]="starsRef">
102
+ <ngt-buffer-geometry>
103
+ <ngt-buffer-attribute attach="attributes.position" *args="[attributes().positions, 3]" />
104
+ <ngt-buffer-attribute attach="attributes.color" *args="[attributes().colors, 3]" />
105
+ <ngt-buffer-attribute attach="attributes.size" *args="[attributes().sizes, 1]" />
106
+ </ngt-buffer-geometry>
107
+ <ngt-primitive
108
+ *args="[material]"
109
+ attach="material"
110
+ [blending]="AdditiveBlending"
111
+ [depthWrite]="false"
112
+ [transparent]="true"
113
+ [vertexColors]="true"
114
+ (beforeRender)="onBeforeRender($event)"
115
+ >
116
+ <ngt-value attach="uniforms.fade.value" [rawValue]="fade()" />
117
+ </ngt-primitive>
118
+ </ngt-points>
119
+ `,
127
120
  imports: [NgtArgs],
128
121
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
129
122
  }]
130
- }], ctorParameters: function () { return []; }, propDecorators: { starsRef: [{
131
- type: Input
132
- }], radius: [{
133
- type: Input
134
- }], depth: [{
135
- type: Input
136
- }], count: [{
137
- type: Input
138
- }], factor: [{
139
- type: Input
140
- }], saturation: [{
123
+ }], propDecorators: { starsRef: [{
141
124
  type: Input
125
+ }], _radius: [{
126
+ type: Input,
127
+ args: [{ alias: 'radius' }]
128
+ }], _depth: [{
129
+ type: Input,
130
+ args: [{ alias: 'depth' }]
131
+ }], _count: [{
132
+ type: Input,
133
+ args: [{ alias: 'count' }]
134
+ }], _factor: [{
135
+ type: Input,
136
+ args: [{ alias: 'factor' }]
137
+ }], _saturation: [{
138
+ type: Input,
139
+ args: [{ alias: 'saturation' }]
142
140
  }], starsFade: [{
143
141
  type: Input,
144
142
  args: ['fade']
145
- }], speed: [{
146
- type: Input
143
+ }], _speed: [{
144
+ type: Input,
145
+ args: [{ alias: 'speed' }]
147
146
  }] } });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvc3RhcnMvc3RhcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFFaEUsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0FBRXBELE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUU7SUFDMUIsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FDdkMsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQ3hGLENBQUM7QUFDTixDQUFDLENBQUM7QUFZRixNQXlCYSxTQUFVLFNBQVEsY0FBOEI7SUFNekQsSUFBYSxNQUFNLENBQUMsTUFBYztRQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQs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RSxDQUFDLE9BQU8sQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDOzBFQUtZLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxLQUFLO3NCQUFqQixLQUFLO2dCQUlPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBSU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxVQUFVO3NCQUF0QixLQUFLO2dCQUlhLFNBQVM7c0JBQTNCLEtBQUs7dUJBQUMsTUFBTTtnQkFJQSxLQUFLO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgaW5qZWN0QmVmb3JlUmVuZGVyLCBpbmplY3ROZ3RSZWYsIE5ndEFyZ3MsIE5ndFNpZ25hbFN0b3JlLCB0eXBlIE5ndFJlbmRlclN0YXRlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBTdGFyRmllbGRNYXRlcmlhbCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9zaGFkZXJzJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IEJ1ZmZlckF0dHJpYnV0ZSwgQnVmZmVyR2VvbWV0cnksIFBvaW50cyB9IGZyb20gJ3RocmVlJztcblxuZXh0ZW5kKHsgUG9pbnRzLCBCdWZmZXJHZW9tZXRyeSwgQnVmZmVyQXR0cmlidXRlIH0pO1xuXG5jb25zdCBnZW5TdGFyID0gKHI6IG51bWJlcikgPT4ge1xuICAgIHJldHVybiBuZXcgVEhSRUUuVmVjdG9yMygpLnNldEZyb21TcGhlcmljYWwoXG4gICAgICAgIG5ldyBUSFJFRS5TcGhlcmljYWwociwgTWF0aC5hY29zKDEgLSBNYXRoLnJhbmRvbSgpICogMiksIE1hdGgucmFuZG9tKCkgKiAyICogTWF0aC5QSSlcbiAgICApO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzU3RhcnNTdGF0ZSB7XG4gICAgcmFkaXVzOiBudW1iZXI7XG4gICAgZGVwdGg6IG51bWJlcjtcbiAgICBjb3VudDogbnVtYmVyO1xuICAgIGZhY3RvcjogbnVtYmVyO1xuICAgIHNhdHVyYXRpb246IG51bWJlcjtcbiAgICBmYWRlOiBib29sZWFuO1xuICAgIHNwZWVkOiBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0cy1zdGFycycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LXBvaW50cyBbcmVmXT1cInN0YXJzUmVmXCI+XG4gICAgICAgICAgICA8bmd0LWJ1ZmZlci1nZW9tZXRyeT5cbiAgICAgICAgICAgICAgICA8bmd0LWJ1ZmZlci1hdHRyaWJ1dGUgYXR0YWNoPVwiYXR0cmlidXRlcy5wb3NpdGlvblwiICphcmdzPVwiW2J1ZmZlckF0dHJpYnV0ZXMoKS5wb3NpdGlvbnMsIDNdXCIgLz5cbiAgICAgICAgICAgICAgICA8bmd0LWJ1ZmZlci1hdHRyaWJ1dGUgYXR0YWNoPVwiYXR0cmlidXRlcy5jb2xvclwiICphcmdzPVwiW2J1ZmZlckF0dHJpYnV0ZXMoKS5jb2xvcnMsIDNdXCIgLz5cbiAgICAgICAgICAgICAgICA8bmd0LWJ1ZmZlci1hdHRyaWJ1dGUgYXR0YWNoPVwiYXR0cmlidXRlcy5zaXplXCIgKmFyZ3M9XCJbYnVmZmVyQXR0cmlidXRlcygpLnNpemVzLCAxXVwiIC8+XG4gICAgICAgICAgICA8L25ndC1idWZmZXItZ2VvbWV0cnk+XG4gICAgICAgICAgICA8bmd0LXByaW1pdGl2ZVxuICAgICAgICAgICAgICAgICphcmdzPVwiW21hdGVyaWFsXVwiXG4gICAgICAgICAgICAgICAgYXR0YWNoPVwibWF0ZXJpYWxcIlxuICAgICAgICAgICAgICAgIFtibGVuZGluZ109XCJBZGRpdGl2ZUJsZW5kaW5nXCJcbiAgICAgICAgICAgICAgICBbZGVwdGhXcml0ZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW3RyYW5zcGFyZW50XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFt2ZXJ0ZXhDb2xvcnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5ndC12YWx1ZSBhdHRhY2g9XCJ1bmlmb3Jtcy5mYWRlLnZhbHVlXCIgW3Jhd1ZhbHVlXT1cImZhZGUoKVwiIC8+XG4gICAgICAgICAgICA8L25ndC1wcmltaXRpdmU+XG4gICAgICAgIDwvbmd0LXBvaW50cz5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ3RBcmdzXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTdGFycyBleHRlbmRzIE5ndFNpZ25hbFN0b3JlPE5ndHNTdGFyc1N0YXRlPiB7XG4gICAgcmVhZG9ubHkgQWRkaXRpdmVCbGVuZGluZyA9IFRIUkVFLkFkZGl0aXZlQmxlbmRpbmc7XG4gICAgcmVhZG9ubHkgbWF0ZXJpYWwgPSBuZXcgU3RhckZpZWxkTWF0ZXJpYWwoKTtcblxuICAgIEBJbnB1dCgpIHN0YXJzUmVmID0gaW5qZWN0Tmd0UmVmPFBvaW50cz4oKTtcblxuICAgIEBJbnB1dCgpIHNldCByYWRpdXMocmFkaXVzOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyByYWRpdXMgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGRlcHRoKGRlcHRoOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkZXB0aCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgY291bnQoY291bnQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGNvdW50IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBmYWN0b3IoZmFjdG9yOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmYWN0b3IgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHNhdHVyYXRpb24oc2F0dXJhdGlvbjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc2F0dXJhdGlvbiB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoJ2ZhZGUnKSBzZXQgc3RhcnNGYWRlKGZhZGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmYWRlIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBzcGVlZChzcGVlZDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc3BlZWQgfSk7XG4gICAgfVxuXG4gICAgcmVhZG9ubHkgI2NvdW50ID0gdGhpcy5zZWxlY3QoJ2NvdW50Jyk7XG4gICAgcmVhZG9ubHkgI2RlcHRoID0gdGhpcy5zZWxlY3QoJ2RlcHRoJyk7XG4gICAgcmVhZG9ubHkgI2ZhY3RvciA9IHRoaXMuc2VsZWN0KCdmYWN0b3InKTtcbiAgICByZWFkb25seSAjcmFkaXVzID0gdGhpcy5zZWxlY3QoJ3JhZGl1cycpO1xuICAgIHJlYWRvbmx5ICNzYXR1cmF0aW9uID0gdGhpcy5zZWxlY3QoJ3NhdHVyYXRpb24nKTtcblxuICAgIHJlYWRvbmx5IGZhZGUgPSB0aGlzLnNlbGVjdCgnZmFkZScpO1xuICAgIHJlYWRvbmx5IGJ1ZmZlckF0dHJpYnV0ZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uczogbnVtYmVyW10gPSBbXTtcbiAgICAgICAgY29uc3QgY29sb3JzOiBudW1iZXJbXSA9IFtdO1xuICAgICAgICBjb25zdCBzaXplcyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMuI2NvdW50KCkgfSwgKCkgPT4gKDAuNSArIDAuNSAqIE1hdGgucmFuZG9tKCkpICogdGhpcy4jZmFjdG9yKCkpO1xuICAgICAgICBjb25zdCBjb2xvciA9IG5ldyBUSFJFRS5Db2xvcigpO1xuICAgICAgICBsZXQgciA9IHRoaXMuI3JhZGl1cygpICsgdGhpcy4jZGVwdGgoKTtcbiAgICAgICAgY29uc3QgaW5jcmVtZW50ID0gdGhpcy4jZGVwdGgoKSAvIHRoaXMuI2NvdW50KCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy4jY291bnQoKTsgaSsrKSB7XG4gICAgICAgICAgICByIC09IGluY3JlbWVudCAqIE1hdGgucmFuZG9tKCk7XG4gICAgICAgICAgICBwb3NpdGlvbnMucHVzaCguLi5nZW5TdGFyKHIpLnRvQXJyYXkoKSk7XG4gICAgICAgICAgICBjb2xvci5zZXRIU0woaSAvIHRoaXMuI2NvdW50KCksIHRoaXMuI3NhdHVyYXRpb24oKSwgMC45KTtcbiAgICAgICAgICAgIGNvbG9ycy5wdXNoKGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwb3NpdGlvbnM6IG5ldyBGbG9hdDMyQXJyYXkocG9zaXRpb25zKSxcbiAgICAgICAgICAgIGNvbG9yczogbmV3IEZsb2F0MzJBcnJheShjb2xvcnMpLFxuICAgICAgICAgICAgc2l6ZXM6IG5ldyBGbG9hdDMyQXJyYXkoc2l6ZXMpLFxuICAgICAgICB9O1xuICAgIH0pO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIHJhZGl1czogMTAwLFxuICAgICAgICAgICAgZGVwdGg6IDUwLFxuICAgICAgICAgICAgY291bnQ6IDUwMDAsXG4gICAgICAgICAgICBzYXR1cmF0aW9uOiAwLFxuICAgICAgICAgICAgZmFjdG9yOiA0LFxuICAgICAgICAgICAgZmFkZTogZmFsc2UsXG4gICAgICAgICAgICBzcGVlZDogMSxcbiAgICAgICAgfSk7XG4gICAgICAgIGluamVjdEJlZm9yZVJlbmRlcih0aGlzLiNvbkJlZm9yZVJlbmRlci5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICAjb25CZWZvcmVSZW5kZXIoeyBjbG9jayB9OiBOZ3RSZW5kZXJTdGF0ZSkge1xuICAgICAgICB0aGlzLm1hdGVyaWFsLnVuaWZvcm1zWyd0aW1lJ10udmFsdWUgPSBjbG9jay5nZXRFbGFwc2VkVGltZSgpICogdGhpcy5nZXQoJ3NwZWVkJyk7XG4gICAgfVxufVxuIl19
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvc3RhcnMvc3RhcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxPQUFPLEVBQXdCLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFFaEUsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0FBa0JwRCxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQzdCLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUNuQyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FDckYsQ0FBQztBQTRCSCxNQUFNLE9BQU8sU0FBUztJQTFCdEI7UUEyQlMsV0FBTSxHQUFHLFdBQVcsQ0FBaUI7WUFDNUMsTUFBTSxFQUFFLEdBQUc7WUFDWCxLQUFLLEVBQUUsRUFBRTtZQUNULEtBQUssRUFBRSxJQUFJO1lBQ1gsVUFBVSxFQUFFLENBQUM7WUFDYixNQUFNLEVBQUUs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QUMsc0JBQXNCLENBQUM7aUJBQ2pDOzhCQWNTLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRTBCLE9BQU87c0JBQXRDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO2dCQUlLLE1BQU07c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO2dCQUlNLE1BQU07c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO2dCQUlPLE9BQU87c0JBQXRDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO2dCQUlVLFdBQVc7c0JBQTlDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO2dCQUlYLFNBQVM7c0JBQTNCLEtBQUs7dUJBQUMsTUFBTTtnQkFJa0IsTUFBTTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBDb21wb25lbnQsIElucHV0LCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgTmd0QmVmb3JlUmVuZGVyRXZlbnQsIGV4dGVuZCwgaW5qZWN0Tmd0UmVmLCBzaWduYWxTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgU3RhckZpZWxkTWF0ZXJpYWwgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvc2hhZGVycyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBCdWZmZXJBdHRyaWJ1dGUsIEJ1ZmZlckdlb21ldHJ5LCBQb2ludHMgfSBmcm9tICd0aHJlZSc7XG5cbmV4dGVuZCh7IFBvaW50cywgQnVmZmVyR2VvbWV0cnksIEJ1ZmZlckF0dHJpYnV0ZSB9KTtcblxuZXhwb3J0IHR5cGUgTmd0c1N0YXJzU3RhdGUgPSB7XG5cdHJhZGl1czogbnVtYmVyO1xuXHRkZXB0aDogbnVtYmVyO1xuXHRjb3VudDogbnVtYmVyO1xuXHRmYWN0b3I6IG51bWJlcjtcblx0c2F0dXJhdGlvbjogbnVtYmVyO1xuXHRmYWRlOiBib29sZWFuO1xuXHRzcGVlZDogbnVtYmVyO1xufTtcblxuZGVjbGFyZSBnbG9iYWwge1xuXHRpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcblx0XHQnbmd0cy1zdGFycyc6IE5ndHNTdGFyc1N0YXRlO1xuXHR9XG59XG5cbmNvbnN0IGdlblN0YXIgPSAocjogbnVtYmVyKSA9PlxuXHRuZXcgVEhSRUUuVmVjdG9yMygpLnNldEZyb21TcGhlcmljYWwoXG5cdFx0bmV3IFRIUkVFLlNwaGVyaWNhbChyLCBNYXRoLmFjb3MoMSAtIE1hdGgucmFuZG9tKCkgKiAyKSwgTWF0aC5yYW5kb20oKSAqIDIgKiBNYXRoLlBJKSxcblx0KTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1zdGFycycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wb2ludHMgW3JlZl09XCJzdGFyc1JlZlwiPlxuXHRcdFx0PG5ndC1idWZmZXItZ2VvbWV0cnk+XG5cdFx0XHRcdDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZSBhdHRhY2g9XCJhdHRyaWJ1dGVzLnBvc2l0aW9uXCIgKmFyZ3M9XCJbYXR0cmlidXRlcygpLnBvc2l0aW9ucywgM11cIiAvPlxuXHRcdFx0XHQ8bmd0LWJ1ZmZlci1hdHRyaWJ1dGUgYXR0YWNoPVwiYXR0cmlidXRlcy5jb2xvclwiICphcmdzPVwiW2F0dHJpYnV0ZXMoKS5jb2xvcnMsIDNdXCIgLz5cblx0XHRcdFx0PG5ndC1idWZmZXItYXR0cmlidXRlIGF0dGFjaD1cImF0dHJpYnV0ZXMuc2l6ZVwiICphcmdzPVwiW2F0dHJpYnV0ZXMoKS5zaXplcywgMV1cIiAvPlxuXHRcdFx0PC9uZ3QtYnVmZmVyLWdlb21ldHJ5PlxuXHRcdFx0PG5ndC1wcmltaXRpdmVcblx0XHRcdFx0KmFyZ3M9XCJbbWF0ZXJpYWxdXCJcblx0XHRcdFx0YXR0YWNoPVwibWF0ZXJpYWxcIlxuXHRcdFx0XHRbYmxlbmRpbmddPVwiQWRkaXRpdmVCbGVuZGluZ1wiXG5cdFx0XHRcdFtkZXB0aFdyaXRlXT1cImZhbHNlXCJcblx0XHRcdFx0W3RyYW5zcGFyZW50XT1cInRydWVcIlxuXHRcdFx0XHRbdmVydGV4Q29sb3JzXT1cInRydWVcIlxuXHRcdFx0XHQoYmVmb3JlUmVuZGVyKT1cIm9uQmVmb3JlUmVuZGVyKCRldmVudClcIlxuXHRcdFx0PlxuXHRcdFx0XHQ8bmd0LXZhbHVlIGF0dGFjaD1cInVuaWZvcm1zLmZhZGUudmFsdWVcIiBbcmF3VmFsdWVdPVwiZmFkZSgpXCIgLz5cblx0XHRcdDwvbmd0LXByaW1pdGl2ZT5cblx0XHQ8L25ndC1wb2ludHM+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzU3RhcnMge1xuXHRwcml2YXRlIGlucHV0cyA9IHNpZ25hbFN0b3JlPE5ndHNTdGFyc1N0YXRlPih7XG5cdFx0cmFkaXVzOiAxMDAsXG5cdFx0ZGVwdGg6IDUwLFxuXHRcdGNvdW50OiA1MDAwLFxuXHRcdHNhdHVyYXRpb246IDAsXG5cdFx0ZmFjdG9yOiA0LFxuXHRcdGZhZGU6IGZhbHNlLFxuXHRcdHNwZWVkOiAxLFxuXHR9KTtcblx0QWRkaXRpdmVCbGVuZGluZyA9IFRIUkVFLkFkZGl0aXZlQmxlbmRpbmc7XG5cdG1hdGVyaWFsID0gbmV3IFN0YXJGaWVsZE1hdGVyaWFsKCk7XG5cblx0QElucHV0KCkgc3RhcnNSZWYgPSBpbmplY3ROZ3RSZWY8UG9pbnRzPigpO1xuXG5cdEBJbnB1dCh7IGFsaWFzOiAncmFkaXVzJyB9KSBzZXQgX3JhZGl1cyhyYWRpdXM6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHJhZGl1cyB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZGVwdGgnIH0pIHNldCBfZGVwdGgoZGVwdGg6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGRlcHRoIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdjb3VudCcgfSkgc2V0IF9jb3VudChjb3VudDogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgY291bnQgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2ZhY3RvcicgfSkgc2V0IF9mYWN0b3IoZmFjdG9yOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBmYWN0b3IgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3NhdHVyYXRpb24nIH0pIHNldCBfc2F0dXJhdGlvbihzYXR1cmF0aW9uOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBzYXR1cmF0aW9uIH0pO1xuXHR9XG5cblx0QElucHV0KCdmYWRlJykgc2V0IHN0YXJzRmFkZShmYWRlOiBib29sZWFuKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZmFkZSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnc3BlZWQnIH0pIHNldCBfc3BlZWQoc3BlZWQ6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHNwZWVkIH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBjb3VudCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnY291bnQnKTtcblx0cHJpdmF0ZSBkZXB0aCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZGVwdGgnKTtcblx0cHJpdmF0ZSBmYWN0b3IgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2ZhY3RvcicpO1xuXHRwcml2YXRlIHJhZGl1cyA9IHRoaXMuaW5wdXRzLnNlbGVjdCgncmFkaXVzJyk7XG5cdHByaXZhdGUgc2F0dXJhdGlvbiA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnc2F0dXJhdGlvbicpO1xuXG5cdGZhZGUgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2ZhZGUnKTtcblx0YXR0cmlidXRlcyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBwb3NpdGlvbnM6IG51bWJlcltdID0gW107XG5cdFx0Y29uc3QgY29sb3JzOiBudW1iZXJbXSA9IFtdO1xuXHRcdGNvbnN0IHNpemVzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy5jb3VudCgpIH0sICgpID0+ICgwLjUgKyAwLjUgKiBNYXRoLnJhbmRvbSgpKSAqIHRoaXMuZmFjdG9yKCkpO1xuXHRcdGNvbnN0IGNvbG9yID0gbmV3IFRIUkVFLkNvbG9yKCk7XG5cdFx0bGV0IHIgPSB0aGlzLnJhZGl1cygpICsgdGhpcy5kZXB0aCgpO1xuXHRcdGNvbnN0IGluY3JlbWVudCA9IHRoaXMuZGVwdGgoKSAvIHRoaXMuY291bnQoKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY291bnQoKTsgaSsrKSB7XG5cdFx0XHRyIC09IGluY3JlbWVudCAqIE1hdGgucmFuZG9tKCk7XG5cdFx0XHRwb3NpdGlvbnMucHVzaCguLi5nZW5TdGFyKHIpLnRvQXJyYXkoKSk7XG5cdFx0XHRjb2xvci5zZXRIU0woaSAvIHRoaXMuY291bnQoKSwgdGhpcy5zYXR1cmF0aW9uKCksIDAuOSk7XG5cdFx0XHRjb2xvcnMucHVzaChjb2xvci5yLCBjb2xvci5nLCBjb2xvci5iKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBvc2l0aW9uczogbmV3IEZsb2F0MzJBcnJheShwb3NpdGlvbnMpLFxuXHRcdFx0Y29sb3JzOiBuZXcgRmxvYXQzMkFycmF5KGNvbG9ycyksXG5cdFx0XHRzaXplczogbmV3IEZsb2F0MzJBcnJheShzaXplcyksXG5cdFx0fTtcblx0fSk7XG5cblx0b25CZWZvcmVSZW5kZXIoeyBvYmplY3QsIHN0YXRlIH06IE5ndEJlZm9yZVJlbmRlckV2ZW50PEluc3RhbmNlVHlwZTx0eXBlb2YgU3RhckZpZWxkTWF0ZXJpYWw+Pikge1xuXHRcdG9iamVjdC51bmlmb3Jtc1sndGltZSddLnZhbHVlID0gc3RhdGUuY2xvY2suZ2V0RWxhcHNlZFRpbWUoKSAqIHRoaXMuaW5wdXRzLmdldCgnc3BlZWQnKTtcblx0fVxufVxuIl19
@@ -0,0 +1,191 @@
1
+ import { Directive, Input, computed } from '@angular/core';
2
+ import { is, signalStore } from 'angular-three';
3
+ import * as THREE from 'three';
4
+ import * as i0 from "@angular/core";
5
+ export class NgtsWireframeInput {
6
+ constructor() {
7
+ this.inputs = signalStore({
8
+ simplify: false,
9
+ strokeOpacity: 1,
10
+ fillOpacity: 0.25,
11
+ fillMix: 0,
12
+ thickness: 0.05,
13
+ colorBackfaces: false,
14
+ dashInvert: true,
15
+ dash: false,
16
+ dashRepeats: 4,
17
+ dashLength: 0.5,
18
+ squeeze: false,
19
+ squeezeMin: 0.2,
20
+ squeezeMax: 1,
21
+ stroke: new THREE.Color('#ff0000'),
22
+ backfaceStroke: new THREE.Color('#0000ff'),
23
+ fill: new THREE.Color('#00ff00'),
24
+ });
25
+ this.simplify = this.inputs.select('simplify');
26
+ this.geometry = this.inputs.select('geometry');
27
+ this.customGeometry = computed(() => {
28
+ const geometry = this.geometry();
29
+ return is.ref(geometry) ? geometry.nativeElement : geometry;
30
+ });
31
+ this.strokeOpacity = this.inputs.select('strokeOpacity');
32
+ this.fillOpacity = this.inputs.select('fillOpacity');
33
+ this.fillMix = this.inputs.select('fillMix');
34
+ this.thickness = this.inputs.select('thickness');
35
+ this.colorBackfaces = this.inputs.select('colorBackfaces');
36
+ this.dashInvert = this.inputs.select('dashInvert');
37
+ this.dash = this.inputs.select('dash');
38
+ this.dashRepeats = this.inputs.select('dashRepeats');
39
+ this.dashLength = this.inputs.select('dashLength');
40
+ this.squeeze = this.inputs.select('squeeze');
41
+ this.squeezeMin = this.inputs.select('squeezeMin');
42
+ this.squeezeMax = this.inputs.select('squeezeMax');
43
+ this.stroke = this.inputs.select('stroke');
44
+ this.backfaceStroke = this.inputs.select('backfaceStroke');
45
+ this.fill = this.inputs.select('fill');
46
+ this.materialState = computed(() => {
47
+ const [strokeOpacity, fillOpacity, fillMix, thickness, colorBackfaces, dashInvert, dash, dashRepeats, dashLength, squeeze, squeezeMin, squeezeMax, stroke, backfaceStroke, fill,] = [
48
+ this.strokeOpacity(),
49
+ this.fillOpacity(),
50
+ this.fillMix(),
51
+ this.thickness(),
52
+ this.colorBackfaces(),
53
+ this.dashInvert(),
54
+ this.dash(),
55
+ this.dashRepeats(),
56
+ this.dashLength(),
57
+ this.squeeze(),
58
+ this.squeezeMin(),
59
+ this.squeezeMax(),
60
+ this.stroke(),
61
+ this.backfaceStroke(),
62
+ this.fill(),
63
+ ];
64
+ return {
65
+ strokeOpacity,
66
+ fillOpacity,
67
+ fillMix,
68
+ thickness,
69
+ colorBackfaces,
70
+ dashInvert,
71
+ dash,
72
+ dashRepeats,
73
+ dashLength,
74
+ squeeze,
75
+ squeezeMin,
76
+ squeezeMax,
77
+ stroke,
78
+ backfaceStroke,
79
+ fill,
80
+ };
81
+ });
82
+ }
83
+ set _geometry(geometry) {
84
+ this.inputs.set({ geometry });
85
+ }
86
+ set _simplify(simplify) {
87
+ this.inputs.set({ simplify });
88
+ }
89
+ set _fillOpacity(fillOpacity) {
90
+ this.inputs.set({ fillOpacity });
91
+ }
92
+ set _fillMix(fillMix) {
93
+ this.inputs.set({ fillMix });
94
+ }
95
+ set _strokeOpacity(strokeOpacity) {
96
+ this.inputs.set({ strokeOpacity });
97
+ }
98
+ set _thickness(thickness) {
99
+ this.inputs.set({ thickness });
100
+ }
101
+ set _colorBackfaces(colorBackfaces) {
102
+ this.inputs.set({ colorBackfaces });
103
+ }
104
+ set _dashInvert(dashInvert) {
105
+ this.inputs.set({ dashInvert });
106
+ }
107
+ set _dash(dash) {
108
+ this.inputs.set({ dash });
109
+ }
110
+ set _dashRepeats(dashRepeats) {
111
+ this.inputs.set({ dashRepeats });
112
+ }
113
+ set _dashLength(dashLength) {
114
+ this.inputs.set({ dashLength });
115
+ }
116
+ set _squeeze(squeeze) {
117
+ this.inputs.set({ squeeze });
118
+ }
119
+ set _squeezeMin(squeezeMin) {
120
+ this.inputs.set({ squeezeMin });
121
+ }
122
+ set _squeezeMax(squeezeMax) {
123
+ this.inputs.set({ squeezeMax });
124
+ }
125
+ set _stroke(stroke) {
126
+ this.inputs.set({ stroke });
127
+ }
128
+ set _backfaceStroke(backfaceStroke) {
129
+ this.inputs.set({ backfaceStroke });
130
+ }
131
+ set _fill(fill) {
132
+ this.inputs.set({ fill });
133
+ }
134
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsWireframeInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
135
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: NgtsWireframeInput, inputs: { _geometry: ["geometry", "_geometry"], _simplify: ["simplify", "_simplify"], _fillOpacity: ["fillOpacity", "_fillOpacity"], _fillMix: ["fillMix", "_fillMix"], _strokeOpacity: ["strokeOpacity", "_strokeOpacity"], _thickness: ["thickness", "_thickness"], _colorBackfaces: ["colorBackfaces", "_colorBackfaces"], _dashInvert: ["dashInvert", "_dashInvert"], _dash: ["dash", "_dash"], _dashRepeats: ["dashRepeats", "_dashRepeats"], _dashLength: ["dashLength", "_dashLength"], _squeeze: ["squeeze", "_squeeze"], _squeezeMin: ["squeezeMin", "_squeezeMin"], _squeezeMax: ["squeezeMax", "_squeezeMax"], _stroke: ["stroke", "_stroke"], _backfaceStroke: ["backfaceStroke", "_backfaceStroke"], _fill: ["fill", "_fill"] }, ngImport: i0 }); }
136
+ }
137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsWireframeInput, decorators: [{
138
+ type: Directive
139
+ }], propDecorators: { _geometry: [{
140
+ type: Input,
141
+ args: [{ alias: 'geometry' }]
142
+ }], _simplify: [{
143
+ type: Input,
144
+ args: [{ alias: 'simplify' }]
145
+ }], _fillOpacity: [{
146
+ type: Input,
147
+ args: [{ alias: 'fillOpacity' }]
148
+ }], _fillMix: [{
149
+ type: Input,
150
+ args: [{ alias: 'fillMix' }]
151
+ }], _strokeOpacity: [{
152
+ type: Input,
153
+ args: [{ alias: 'strokeOpacity' }]
154
+ }], _thickness: [{
155
+ type: Input,
156
+ args: [{ alias: 'thickness' }]
157
+ }], _colorBackfaces: [{
158
+ type: Input,
159
+ args: [{ alias: 'colorBackfaces' }]
160
+ }], _dashInvert: [{
161
+ type: Input,
162
+ args: [{ alias: 'dashInvert' }]
163
+ }], _dash: [{
164
+ type: Input,
165
+ args: [{ alias: 'dash' }]
166
+ }], _dashRepeats: [{
167
+ type: Input,
168
+ args: [{ alias: 'dashRepeats' }]
169
+ }], _dashLength: [{
170
+ type: Input,
171
+ args: [{ alias: 'dashLength' }]
172
+ }], _squeeze: [{
173
+ type: Input,
174
+ args: [{ alias: 'squeeze' }]
175
+ }], _squeezeMin: [{
176
+ type: Input,
177
+ args: [{ alias: 'squeezeMin' }]
178
+ }], _squeezeMax: [{
179
+ type: Input,
180
+ args: [{ alias: 'squeezeMax' }]
181
+ }], _stroke: [{
182
+ type: Input,
183
+ args: [{ alias: 'stroke' }]
184
+ }], _backfaceStroke: [{
185
+ type: Input,
186
+ args: [{ alias: 'backfaceStroke' }]
187
+ }], _fill: [{
188
+ type: Input,
189
+ args: [{ alias: 'fill' }]
190
+ }] } });
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lyZWZyYW1lLWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL3dpcmVmcmFtZS93aXJlZnJhbWUtaW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDOztBQVEvQixNQUFNLE9BQWdCLGtCQUFrQjtJQUR4QztRQUVDLFdBQU0sR0FBRyxXQUFXLENBQXFCO1lBQ3hDLFFBQVEsRUFBRSxLQUFLO1lBQ2YsYUFBYSxFQUFFLENBQUM7WUFDaEIsV0FBVyxFQUFFLElBQUk7WUFDakIsT0FBTyxFQUFFLENBQUM7WUFDVixTQUFTLEVBQUUsSUFBSTtZQUNmLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLElBQUksRUFBRSxLQUFLO1lBQ1gsV0FBVyxFQUFFLENBQUM7WUFDZCxVQUFVLEVBQUUsR0FBRztZQUNmLE9BQU8sRUFBRSxLQUFLO1lBQ2QsVUFBVSxFQUFFLEdBQUc7WUFDZixVQUFVLEVBQUUsQ0FBQztZQUNiLE1BQU0sRUFBRSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQ2xDLGNBQWMsRUFBRSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQzFDLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1NBQ2hDLENBQUMsQ0FBQztRQXNFSCxhQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsYUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFB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RUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO2dCQUljLGVBQWU7c0JBQXRELEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBSUosS0FBSztzQkFBbEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXMsIHNpZ25hbFN0b3JlLCB0eXBlIE5ndFJlZiB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgV2lyZWZyYW1lTWF0ZXJpYWxTdGF0ZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9zaGFkZXJzJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcblxuZXhwb3J0IHR5cGUgTmd0c1dpcmVmcmFtZVN0YXRlID0ge1xuXHRnZW9tZXRyeT86IE5ndFJlZjxUSFJFRS5CdWZmZXJHZW9tZXRyeT47XG5cdHNpbXBsaWZ5OiBib29sZWFuO1xufSAmIFJlcXVpcmVkPFdpcmVmcmFtZU1hdGVyaWFsU3RhdGU+O1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZ3RzV2lyZWZyYW1lSW5wdXQge1xuXHRpbnB1dHMgPSBzaWduYWxTdG9yZTxOZ3RzV2lyZWZyYW1lU3RhdGU+KHtcblx0XHRzaW1wbGlmeTogZmFsc2UsXG5cdFx0c3Ryb2tlT3BhY2l0eTogMSxcblx0XHRmaWxsT3BhY2l0eTogMC4yNSxcblx0XHRmaWxsTWl4OiAwLFxuXHRcdHRoaWNrbmVzczogMC4wNSxcblx0XHRjb2xvckJhY2tmYWNlczogZmFsc2UsXG5cdFx0ZGFzaEludmVydDogdHJ1ZSxcblx0XHRkYXNoOiBmYWxzZSxcblx0XHRkYXNoUmVwZWF0czogNCxcblx0XHRkYXNoTGVuZ3RoOiAwLjUsXG5cdFx0c3F1ZWV6ZTogZmFsc2UsXG5cdFx0c3F1ZWV6ZU1pbjogMC4yLFxuXHRcdHNxdWVlemVNYXg6IDEsXG5cdFx0c3Ryb2tlOiBuZXcgVEhSRUUuQ29sb3IoJyNmZjAwMDAnKSxcblx0XHRiYWNrZmFjZVN0cm9rZTogbmV3IFRIUkVFLkNvbG9yKCcjMDAwMGZmJyksXG5cdFx0ZmlsbDogbmV3IFRIUkVFLkNvbG9yKCcjMDBmZjAwJyksXG5cdH0pO1xuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZ2VvbWV0cnknIH0pIHNldCBfZ2VvbWV0cnkoZ2VvbWV0cnk6IE5ndFJlZjxUSFJFRS5CdWZmZXJHZW9tZXRyeT4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBnZW9tZXRyeSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnc2ltcGxpZnknIH0pIHNldCBfc2ltcGxpZnkoc2ltcGxpZnk6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBzaW1wbGlmeSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZmlsbE9wYWNpdHknIH0pIHNldCBfZmlsbE9wYWNpdHkoZmlsbE9wYWNpdHk6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGZpbGxPcGFjaXR5IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdmaWxsTWl4JyB9KSBzZXQgX2ZpbGxNaXgoZmlsbE1peDogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZmlsbE1peCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnc3Ryb2tlT3BhY2l0eScgfSkgc2V0IF9zdHJva2VPcGFjaXR5KHN0cm9rZU9wYWNpdHk6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHN0cm9rZU9wYWNpdHkgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3RoaWNrbmVzcycgfSkgc2V0IF90aGlja25lc3ModGhpY2tuZXNzOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyB0aGlja25lc3MgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2NvbG9yQmFja2ZhY2VzJyB9KSBzZXQgX2NvbG9yQmFja2ZhY2VzKGNvbG9yQmFja2ZhY2VzOiBib29sZWFuKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgY29sb3JCYWNrZmFjZXMgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2Rhc2hJbnZlcnQnIH0pIHNldCBfZGFzaEludmVydChkYXNoSW52ZXJ0OiBib29sZWFuKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZGFzaEludmVydCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZGFzaCcgfSkgc2V0IF9kYXNoKGRhc2g6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBkYXNoIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdkYXNoUmVwZWF0cycgfSkgc2V0IF9kYXNoUmVwZWF0cyhkYXNoUmVwZWF0czogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZGFzaFJlcGVhdHMgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2Rhc2hMZW5ndGgnIH0pIHNldCBfZGFzaExlbmd0aChkYXNoTGVuZ3RoOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBkYXNoTGVuZ3RoIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdzcXVlZXplJyB9KSBzZXQgX3NxdWVlemUoc3F1ZWV6ZTogYm9vbGVhbikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHNxdWVlemUgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3NxdWVlemVNaW4nIH0pIHNldCBfc3F1ZWV6ZU1pbihzcXVlZXplTWluOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBzcXVlZXplTWluIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdzcXVlZXplTWF4JyB9KSBzZXQgX3NxdWVlemVNYXgoc3F1ZWV6ZU1heDogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgc3F1ZWV6ZU1heCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnc3Ryb2tlJyB9KSBzZXQgX3N0cm9rZShzdHJva2U6IFRIUkVFLkNvbG9yUmVwcmVzZW50YXRpb24pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBzdHJva2UgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2JhY2tmYWNlU3Ryb2tlJyB9KSBzZXQgX2JhY2tmYWNlU3Ryb2tlKGJhY2tmYWNlU3Ryb2tlOiBUSFJFRS5Db2xvclJlcHJlc2VudGF0aW9uKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgYmFja2ZhY2VTdHJva2UgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2ZpbGwnIH0pIHNldCBfZmlsbChmaWxsOiBUSFJFRS5Db2xvclJlcHJlc2VudGF0aW9uKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZmlsbCB9KTtcblx0fVxuXG5cdHNpbXBsaWZ5ID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdzaW1wbGlmeScpO1xuXHRnZW9tZXRyeSA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZ2VvbWV0cnknKTtcblx0Y3VzdG9tR2VvbWV0cnkgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgZ2VvbWV0cnkgPSB0aGlzLmdlb21ldHJ5KCk7XG5cdFx0cmV0dXJuIGlzLnJlZihnZW9tZXRyeSkgPyBnZW9tZXRyeS5uYXRpdmVFbGVtZW50IDogZ2VvbWV0cnk7XG5cdH0pO1xuXG5cdHN0cm9rZU9wYWNpdHkgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ3N0cm9rZU9wYWNpdHknKTtcblx0ZmlsbE9wYWNpdHkgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2ZpbGxPcGFjaXR5Jyk7XG5cdGZpbGxNaXggPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2ZpbGxNaXgnKTtcblx0dGhpY2tuZXNzID0gdGhpcy5pbnB1dHMuc2VsZWN0KCd0aGlja25lc3MnKTtcblx0Y29sb3JCYWNrZmFjZXMgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2NvbG9yQmFja2ZhY2VzJyk7XG5cdGRhc2hJbnZlcnQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2Rhc2hJbnZlcnQnKTtcblx0ZGFzaCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZGFzaCcpO1xuXHRkYXNoUmVwZWF0cyA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZGFzaFJlcGVhdHMnKTtcblx0ZGFzaExlbmd0aCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZGFzaExlbmd0aCcpO1xuXHRzcXVlZXplID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdzcXVlZXplJyk7XG5cdHNxdWVlemVNaW4gPSB0aGlzLmlucHV0cy5zZWxlY3QoJ3NxdWVlemVNaW4nKTtcblx0c3F1ZWV6ZU1heCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnc3F1ZWV6ZU1heCcpO1xuXHRzdHJva2UgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ3N0cm9rZScpO1xuXHRiYWNrZmFjZVN0cm9rZSA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnYmFja2ZhY2VTdHJva2UnKTtcblx0ZmlsbCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZmlsbCcpO1xuXG5cdG1hdGVyaWFsU3RhdGUgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgW1xuXHRcdFx0c3Ryb2tlT3BhY2l0eSxcblx0XHRcdGZpbGxPcGFjaXR5LFxuXHRcdFx0ZmlsbE1peCxcblx0XHRcdHRoaWNrbmVzcyxcblx0XHRcdGNvbG9yQmFja2ZhY2VzLFxuXHRcdFx0ZGFzaEludmVydCxcblx0XHRcdGRhc2gsXG5cdFx0XHRkYXNoUmVwZWF0cyxcblx0XHRcdGRhc2hMZW5ndGgsXG5cdFx0XHRzcXVlZXplLFxuXHRcdFx0c3F1ZWV6ZU1pbixcblx0XHRcdHNxdWVlemVNYXgsXG5cdFx0XHRzdHJva2UsXG5cdFx0XHRiYWNrZmFjZVN0cm9rZSxcblx0XHRcdGZpbGwsXG5cdFx0XSA9IFtcblx0XHRcdHRoaXMuc3Ryb2tlT3BhY2l0eSgpLFxuXHRcdFx0dGhpcy5maWxsT3BhY2l0eSgpLFxuXHRcdFx0dGhpcy5maWxsTWl4KCksXG5cdFx0XHR0aGlzLnRoaWNrbmVzcygpLFxuXHRcdFx0dGhpcy5jb2xvckJhY2tmYWNlcygpLFxuXHRcdFx0dGhpcy5kYXNoSW52ZXJ0KCksXG5cdFx0XHR0aGlzLmRhc2goKSxcblx0XHRcdHRoaXMuZGFzaFJlcGVhdHMoKSxcblx0XHRcdHRoaXMuZGFzaExlbmd0aCgpLFxuXHRcdFx0dGhpcy5zcXVlZXplKCksXG5cdFx0XHR0aGlzLnNxdWVlemVNaW4oKSxcblx0XHRcdHRoaXMuc3F1ZWV6ZU1heCgpLFxuXHRcdFx0dGhpcy5zdHJva2UoKSxcblx0XHRcdHRoaXMuYmFja2ZhY2VTdHJva2UoKSxcblx0XHRcdHRoaXMuZmlsbCgpLFxuXHRcdF07XG5cdFx0cmV0dXJuIHtcblx0XHRcdHN0cm9rZU9wYWNpdHksXG5cdFx0XHRmaWxsT3BhY2l0eSxcblx0XHRcdGZpbGxNaXgsXG5cdFx0XHR0aGlja25lc3MsXG5cdFx0XHRjb2xvckJhY2tmYWNlcyxcblx0XHRcdGRhc2hJbnZlcnQsXG5cdFx0XHRkYXNoLFxuXHRcdFx0ZGFzaFJlcGVhdHMsXG5cdFx0XHRkYXNoTGVuZ3RoLFxuXHRcdFx0c3F1ZWV6ZSxcblx0XHRcdHNxdWVlemVNaW4sXG5cdFx0XHRzcXVlZXplTWF4LFxuXHRcdFx0c3Ryb2tlLFxuXHRcdFx0YmFja2ZhY2VTdHJva2UsXG5cdFx0XHRmaWxsLFxuXHRcdH07XG5cdH0pO1xufVxuIl19