angular-three-soba 2.0.0-beta.2 → 2.0.0-beta.21

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 (321) 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 +24 -12
  4. package/abstractions/grid/grid.d.ts +50 -0
  5. package/abstractions/index.d.ts +2 -7
  6. package/abstractions/text/text.d.ts +10 -5
  7. package/abstractions/text-3d/text-3d.d.ts +51 -41
  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 +31 -12
  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 +180 -0
  19. package/esm2022/abstractions/index.mjs +3 -8
  20. package/esm2022/abstractions/text/text.mjs +123 -124
  21. package/esm2022/abstractions/text-3d/text-3d.mjs +120 -115
  22. package/esm2022/cameras/camera/camera-content.mjs +6 -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 +105 -85
  29. package/esm2022/gizmos/angular-three-soba-gizmos.mjs +5 -0
  30. package/esm2022/gizmos/gizmo-helper/gizmo-helper.mjs +197 -0
  31. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/constants.mjs +31 -0
  32. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +93 -0
  33. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +150 -0
  34. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.mjs +66 -0
  35. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +71 -0
  36. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +195 -0
  37. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +272 -0
  38. package/esm2022/gizmos/index.mjs +4 -0
  39. package/esm2022/loaders/gltf-loader/gltf-loader.mjs +3 -6
  40. package/esm2022/loaders/loader/loader.mjs +92 -87
  41. package/esm2022/loaders/progress/progress.mjs +29 -29
  42. package/esm2022/loaders/texture-loader/texture-loader.mjs +4 -4
  43. package/esm2022/materials/index.mjs +2 -1
  44. package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +60 -51
  45. package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +239 -255
  46. package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +102 -99
  47. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +167 -146
  48. package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +44 -42
  49. package/esm2022/materials/point-material/point-material.mjs +50 -0
  50. package/esm2022/misc/animations/animations.mjs +36 -32
  51. package/esm2022/misc/bake-shadows/bake-shadows.mjs +13 -13
  52. package/esm2022/misc/caustics/caustics.mjs +387 -0
  53. package/esm2022/misc/decal/decal.mjs +187 -0
  54. package/esm2022/misc/depth-buffer/depth-buffer.mjs +33 -35
  55. package/esm2022/misc/example/example.mjs +160 -0
  56. package/esm2022/misc/fbo/fbo.mjs +35 -35
  57. package/esm2022/misc/html/html-wrapper.mjs +478 -0
  58. package/esm2022/misc/html/html.mjs +304 -0
  59. package/esm2022/misc/index.mjs +10 -1
  60. package/esm2022/misc/sampler/sampler.mjs +142 -0
  61. package/esm2022/misc/shadow/shadow.mjs +111 -0
  62. package/esm2022/misc/stats-gl/stats-gl.mjs +61 -0
  63. package/esm2022/misc/trail/trail.mjs +209 -0
  64. package/esm2022/misc/trail-texture/inject-trail-texture.mjs +17 -0
  65. package/esm2022/misc/trail-texture/trail-texture.mjs +106 -0
  66. package/esm2022/modifiers/angular-three-soba-modifiers.mjs +5 -0
  67. package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +64 -0
  68. package/esm2022/modifiers/index.mjs +2 -0
  69. package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +44 -0
  70. package/esm2022/performances/adaptive-events/adaptive-events.mjs +27 -0
  71. package/esm2022/performances/angular-three-soba-performances.mjs +5 -0
  72. package/esm2022/performances/index.mjs +8 -0
  73. package/esm2022/performances/instances/instances.mjs +220 -0
  74. package/esm2022/performances/instances/position-mesh.mjs +52 -0
  75. package/esm2022/performances/points/points-input.mjs +64 -0
  76. package/esm2022/performances/points/points.mjs +326 -0
  77. package/esm2022/performances/points/position-point.mjs +54 -0
  78. package/esm2022/performances/segments/segment-object.mjs +9 -0
  79. package/esm2022/performances/segments/segments.mjs +182 -0
  80. package/esm2022/shaders/blur-pass/blur-pass.mjs +2 -2
  81. package/esm2022/shaders/caustics/caustics-material.mjs +130 -0
  82. package/esm2022/shaders/caustics/caustics-projection-material.mjs +31 -0
  83. package/esm2022/shaders/convolution-material/convolution-material.mjs +1 -1
  84. package/esm2022/shaders/discard-material/discard-material.mjs +1 -1
  85. package/esm2022/shaders/grid-material/grid-material.mjs +77 -0
  86. package/esm2022/shaders/index.mjs +6 -3
  87. package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +42 -41
  88. package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +2 -2
  89. package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +2 -2
  90. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +4 -4
  91. package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +1 -1
  92. package/esm2022/shaders/shader-material/shader-material.mjs +1 -1
  93. package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +17 -25
  94. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +32 -46
  95. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +7 -7
  96. package/esm2022/shaders/star-field-material/star-field-material.mjs +3 -2
  97. package/esm2022/shaders/wireframe-material/wireframe-material.mjs +247 -0
  98. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +160 -176
  99. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +1 -1
  100. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +126 -128
  101. package/esm2022/staging/backdrop/backdrop.mjs +77 -0
  102. package/esm2022/staging/bb-anchor/bb-anchor.mjs +69 -0
  103. package/esm2022/staging/bounds/bounds.mjs +144 -143
  104. package/esm2022/staging/camera-shake/camera-shake.mjs +86 -80
  105. package/esm2022/staging/center/center.mjs +129 -112
  106. package/esm2022/staging/cloud/cloud.mjs +118 -124
  107. package/esm2022/staging/contact-shadows/contact-shadows.mjs +131 -134
  108. package/esm2022/staging/environment/assets.mjs +12 -12
  109. package/esm2022/staging/environment/environment-cube.mjs +28 -30
  110. package/esm2022/staging/environment/environment-ground.mjs +17 -19
  111. package/esm2022/staging/environment/environment-input.mjs +98 -85
  112. package/esm2022/staging/environment/environment-map.mjs +33 -33
  113. package/esm2022/staging/environment/environment-portal.mjs +75 -97
  114. package/esm2022/staging/environment/environment.mjs +34 -51
  115. package/esm2022/staging/environment/utils.mjs +37 -15
  116. package/esm2022/staging/float/float.mjs +70 -58
  117. package/esm2022/staging/index.mjs +7 -3
  118. package/esm2022/staging/matcap-texture/matcap-texture.mjs +64 -0
  119. package/esm2022/staging/normal-texture/normal-texture.mjs +53 -0
  120. package/esm2022/staging/sky/sky.mjs +85 -80
  121. package/esm2022/staging/sparkles/sparkles.mjs +108 -105
  122. package/esm2022/staging/spot-light/shadow-mesh-input.mjs +63 -0
  123. package/esm2022/staging/spot-light/shadow-mesh.mjs +266 -0
  124. package/esm2022/staging/spot-light/spot-light-input.mjs +67 -58
  125. package/esm2022/staging/spot-light/spot-light.mjs +51 -64
  126. package/esm2022/staging/spot-light/volumetric-mesh.mjs +67 -70
  127. package/esm2022/staging/stage/stage.mjs +305 -290
  128. package/esm2022/staging/stars/stars.mjs +101 -102
  129. package/esm2022/staging/wireframe/wireframe-input.mjs +191 -0
  130. package/esm2022/staging/wireframe/wireframe.mjs +228 -0
  131. package/esm2022/utils/angular-three-soba-utils.mjs +5 -0
  132. package/esm2022/utils/content/content.mjs +15 -0
  133. package/esm2022/utils/index.mjs +2 -0
  134. package/fesm2022/angular-three-soba-abstractions.mjs +514 -1947
  135. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  136. package/fesm2022/angular-three-soba-cameras.mjs +302 -259
  137. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  138. package/fesm2022/angular-three-soba-controls.mjs +104 -83
  139. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  140. package/fesm2022/angular-three-soba-gizmos.mjs +1043 -0
  141. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -0
  142. package/fesm2022/angular-three-soba-loaders.mjs +121 -117
  143. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  144. package/fesm2022/angular-three-soba-materials.mjs +662 -592
  145. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  146. package/fesm2022/angular-three-soba-misc.mjs +2214 -105
  147. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  148. package/fesm2022/angular-three-soba-modifiers.mjs +71 -0
  149. package/fesm2022/angular-three-soba-modifiers.mjs.map +1 -0
  150. package/fesm2022/angular-three-soba-performances.mjs +956 -0
  151. package/fesm2022/angular-three-soba-performances.mjs.map +1 -0
  152. package/fesm2022/angular-three-soba-shaders.mjs +549 -252
  153. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  154. package/fesm2022/angular-three-soba-staging.mjs +2899 -2563
  155. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  156. package/fesm2022/angular-three-soba-utils.mjs +22 -0
  157. package/fesm2022/angular-three-soba-utils.mjs.map +1 -0
  158. package/gizmos/README.md +3 -0
  159. package/gizmos/gizmo-helper/gizmo-helper.d.ts +69 -0
  160. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +22 -0
  161. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +29 -0
  162. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.d.ts +33 -0
  163. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +10 -0
  164. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +40 -0
  165. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +30 -0
  166. package/gizmos/index.d.ts +3 -0
  167. package/loaders/gltf-loader/gltf-loader.d.ts +4 -3
  168. package/loaders/loader/loader.d.ts +19 -17
  169. package/loaders/progress/progress.d.ts +1 -1
  170. package/loaders/texture-loader/texture-loader.d.ts +2 -2
  171. package/materials/index.d.ts +1 -0
  172. package/materials/mesh-distort-material/mesh-distort-material.d.ts +25 -15
  173. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +74 -56
  174. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +33 -21
  175. package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +55 -39
  176. package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +19 -10
  177. package/materials/point-material/point-material.d.ts +24 -0
  178. package/metadata.json +1 -0
  179. package/misc/animations/animations.d.ts +6 -4
  180. package/misc/caustics/caustics.d.ts +87 -0
  181. package/misc/decal/decal.d.ts +49 -0
  182. package/misc/depth-buffer/depth-buffer.d.ts +2 -2
  183. package/misc/example/example.d.ts +81 -0
  184. package/misc/fbo/fbo.d.ts +2 -2
  185. package/misc/html/html-wrapper.d.ts +559 -0
  186. package/misc/html/html.d.ts +214 -0
  187. package/misc/index.d.ts +9 -0
  188. package/misc/sampler/sampler.d.ts +67 -0
  189. package/misc/shadow/shadow.d.ts +37 -0
  190. package/misc/stats-gl/stats-gl.d.ts +24 -0
  191. package/misc/trail/trail.d.ts +57 -0
  192. package/misc/trail-texture/inject-trail-texture.d.ts +9 -0
  193. package/misc/trail-texture/trail-texture.d.ts +50 -0
  194. package/modifiers/README.md +3 -0
  195. package/modifiers/curve-modifier/curve-modifier.d.ts +23 -0
  196. package/modifiers/index.d.ts +1 -0
  197. package/package.json +31 -16
  198. package/performances/README.md +3 -0
  199. package/performances/adaptive-dpr/adaptive-dpr.d.ts +14 -0
  200. package/{performance/adaptive → performances/adaptive-events}/adaptive-events.d.ts +3 -0
  201. package/performances/index.d.ts +7 -0
  202. package/performances/instances/instances.d.ts +79 -0
  203. package/{performance → performances}/instances/position-mesh.d.ts +1 -1
  204. package/performances/points/points-input.d.ts +32 -0
  205. package/performances/points/points.d.ts +92 -0
  206. package/performances/points/position-point.d.ts +11 -0
  207. package/performances/segments/segment-object.d.ts +7 -0
  208. package/performances/segments/segments.d.ts +124 -0
  209. package/shaders/grid-material/grid-material.d.ts +37 -0
  210. package/shaders/index.d.ts +5 -2
  211. package/shaders/mesh-distort-material/mesh-distort-material.d.ts +147 -2
  212. package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +1 -1
  213. package/shaders/shader-material/shader-material.d.ts +2 -2
  214. package/shaders/soft-shadow-material/soft-shadow-material.d.ts +10 -1
  215. package/shaders/sparkles-material/sparkles-material.d.ts +15 -1
  216. package/shaders/spot-light-material/spot-light-material.d.ts +11 -2
  217. package/shaders/star-field-material/star-field-material.d.ts +11 -1
  218. package/shaders/wireframe-material/wireframe-material.d.ts +58 -0
  219. package/staging/accumulative-shadows/accumulative-shadows.d.ts +89 -39
  220. package/staging/accumulative-shadows/randomized-lights.d.ts +40 -27
  221. package/staging/backdrop/backdrop.d.ts +30 -0
  222. package/staging/bb-anchor/bb-anchor.d.ts +27 -0
  223. package/staging/bounds/bounds.d.ts +100 -24
  224. package/staging/camera-shake/camera-shake.d.ts +30 -19
  225. package/staging/center/center.d.ts +43 -35
  226. package/staging/cloud/cloud.d.ts +26 -23
  227. package/staging/contact-shadows/contact-shadows.d.ts +41 -28
  228. package/staging/environment/assets.d.ts +9 -9
  229. package/staging/environment/environment-cube.d.ts +9 -5
  230. package/staging/environment/environment-ground.d.ts +7 -7
  231. package/staging/environment/environment-input.d.ts +37 -37
  232. package/staging/environment/environment-map.d.ts +10 -5
  233. package/staging/environment/environment-portal.d.ts +10 -5
  234. package/staging/environment/environment.d.ts +0 -4
  235. package/staging/environment/utils.d.ts +2 -2
  236. package/staging/float/float.d.ts +14 -10
  237. package/staging/index.d.ts +6 -2
  238. package/staging/matcap-texture/matcap-texture.d.ts +13 -0
  239. package/staging/normal-texture/normal-texture.d.ts +16 -0
  240. package/staging/sky/sky.d.ts +28 -21
  241. package/staging/sparkles/sparkles.d.ts +36 -22
  242. package/staging/spot-light/shadow-mesh-input.d.ts +29 -0
  243. package/staging/spot-light/shadow-mesh.d.ts +37 -0
  244. package/staging/spot-light/spot-light-input.d.ts +25 -25
  245. package/staging/spot-light/spot-light.d.ts +31 -15
  246. package/staging/spot-light/volumetric-mesh.d.ts +15 -9
  247. package/staging/stage/stage.d.ts +89 -65
  248. package/staging/stars/stars.d.ts +28 -17
  249. package/staging/wireframe/wireframe-input.d.ts +65 -0
  250. package/staging/wireframe/wireframe.d.ts +28 -0
  251. package/utils/README.md +3 -0
  252. package/utils/content/content.d.ts +8 -0
  253. package/utils/index.d.ts +1 -0
  254. package/web-types.json +1 -0
  255. package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +0 -25
  256. package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +0 -25
  257. package/abstractions/gizmo-helper/gizmo-helper.d.ts +0 -34
  258. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
  259. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -30
  260. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -32
  261. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -14
  262. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -47
  263. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -40
  264. package/abstractions/line/line-input.d.ts +0 -42
  265. package/abstractions/line/line.d.ts +0 -35
  266. package/abstractions/quadratic-bezier-line/quadratic-bezier-line.d.ts +0 -23
  267. package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +0 -131
  268. package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +0 -113
  269. package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +0 -210
  270. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
  271. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -95
  272. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -155
  273. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -62
  274. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -80
  275. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -206
  276. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -273
  277. package/esm2022/abstractions/line/line-input.mjs +0 -113
  278. package/esm2022/abstractions/line/line.mjs +0 -165
  279. package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
  280. package/esm2022/performance/adaptive/adaptive-dpr.mjs +0 -46
  281. package/esm2022/performance/adaptive/adaptive-events.mjs +0 -31
  282. package/esm2022/performance/angular-three-soba-performance.mjs +0 -5
  283. package/esm2022/performance/detailed/detailed.mjs +0 -61
  284. package/esm2022/performance/index.mjs +0 -7
  285. package/esm2022/performance/instances/instance.mjs +0 -48
  286. package/esm2022/performance/instances/instances.mjs +0 -189
  287. package/esm2022/performance/instances/position-mesh.mjs +0 -52
  288. package/esm2022/performance/stats/stats.mjs +0 -79
  289. package/esm2022/shaders/caustics-material/caustics-material.mjs +0 -128
  290. package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +0 -33
  291. package/esm2022/staging/caustics/caustisc.mjs +0 -384
  292. package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +0 -57
  293. package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +0 -256
  294. package/fesm2022/angular-three-soba-performance.mjs +0 -487
  295. package/fesm2022/angular-three-soba-performance.mjs.map +0 -1
  296. package/performance/README.md +0 -3
  297. package/performance/adaptive/adaptive-dpr.d.ts +0 -8
  298. package/performance/detailed/detailed.d.ts +0 -20
  299. package/performance/index.d.ts +0 -6
  300. package/performance/instances/instance.d.ts +0 -9
  301. package/performance/instances/instances.d.ts +0 -35
  302. package/performance/stats/stats.d.ts +0 -18
  303. package/plugin/generators.json +0 -19
  304. package/plugin/libs/plugin/README.md +0 -11
  305. package/plugin/package.json +0 -9
  306. package/plugin/src/generators/init/compat.d.ts +0 -2
  307. package/plugin/src/generators/init/compat.js +0 -6
  308. package/plugin/src/generators/init/compat.js.map +0 -1
  309. package/plugin/src/generators/init/init.d.ts +0 -4
  310. package/plugin/src/generators/init/init.js +0 -22
  311. package/plugin/src/generators/init/init.js.map +0 -1
  312. package/plugin/src/generators/init/schema.json +0 -6
  313. package/plugin/src/index.d.ts +0 -1
  314. package/plugin/src/index.js +0 -6
  315. package/plugin/src/index.js.map +0 -1
  316. package/staging/caustics/caustisc.d.ts +0 -70
  317. package/staging/spot-light/spot-light-shadow-mesh-input.d.ts +0 -29
  318. package/staging/spot-light/spot-light-shadow-mesh.d.ts +0 -38
  319. /package/{abstractions → gizmos}/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -0
  320. /package/shaders/{caustics-material → caustics}/caustics-material.d.ts +0 -0
  321. /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.0", ngImport: i0, type: NgtsStars, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
82
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", 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.2.2", ngImport: i0, type: NgtsStars, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
74
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", 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.0", ngImport: i0, type: NgtsStars, decorators: [{
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvc3RhcnMvc3RhcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFFaEUsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0FBa0JwRCxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQzdCLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUNuQyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FDckYsQ0FBQztBQTRCSCxNQUFNLE9BQU8sU0FBUztJQTFCdEI7UUEyQlMsV0FBTSxHQUFHLFdBQVcsQ0FBaUI7WUFDNUMsTUFBTSxFQUFFLEdBQUc7WUFDWCxLQUFLLEVBQUUsRUFBRTtZQUNULEtBQUssRUFBRSxJQUFJO1lBQ1gsVUFBVSxFQUFFLENBQUM7WUFDYixNQUFNLEVBQUUs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QUMsc0JBQXNCLENBQUM7aUJBQ2pDOzhCQWNTLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRTBCLE9BQU87c0JBQXRDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO2dCQUlLLE1BQU07c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO2dCQUlNLE1BQU07c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO2dCQUlPLE9BQU87c0JBQXRDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO2dCQUlVLFdBQVc7c0JBQTlDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO2dCQUlYLFNBQVM7c0JBQTNCLEtBQUs7dUJBQUMsTUFBTTtnQkFJa0IsTUFBTTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBDb21wb25lbnQsIElucHV0LCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgZXh0ZW5kLCBpbmplY3ROZ3RSZWYsIHNpZ25hbFN0b3JlLCB0eXBlIE5ndEJlZm9yZVJlbmRlckV2ZW50IH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBTdGFyRmllbGRNYXRlcmlhbCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9zaGFkZXJzJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IEJ1ZmZlckF0dHJpYnV0ZSwgQnVmZmVyR2VvbWV0cnksIFBvaW50cyB9IGZyb20gJ3RocmVlJztcblxuZXh0ZW5kKHsgUG9pbnRzLCBCdWZmZXJHZW9tZXRyeSwgQnVmZmVyQXR0cmlidXRlIH0pO1xuXG5leHBvcnQgdHlwZSBOZ3RzU3RhcnNTdGF0ZSA9IHtcblx0cmFkaXVzOiBudW1iZXI7XG5cdGRlcHRoOiBudW1iZXI7XG5cdGNvdW50OiBudW1iZXI7XG5cdGZhY3RvcjogbnVtYmVyO1xuXHRzYXR1cmF0aW9uOiBudW1iZXI7XG5cdGZhZGU6IGJvb2xlYW47XG5cdHNwZWVkOiBudW1iZXI7XG59O1xuXG5kZWNsYXJlIGdsb2JhbCB7XG5cdGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuXHRcdCduZ3RzLXN0YXJzJzogTmd0c1N0YXJzU3RhdGU7XG5cdH1cbn1cblxuY29uc3QgZ2VuU3RhciA9IChyOiBudW1iZXIpID0+XG5cdG5ldyBUSFJFRS5WZWN0b3IzKCkuc2V0RnJvbVNwaGVyaWNhbChcblx0XHRuZXcgVEhSRUUuU3BoZXJpY2FsKHIsIE1hdGguYWNvcygxIC0gTWF0aC5yYW5kb20oKSAqIDIpLCBNYXRoLnJhbmRvbSgpICogMiAqIE1hdGguUEkpLFxuXHQpO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXN0YXJzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXBvaW50cyBbcmVmXT1cInN0YXJzUmVmXCI+XG5cdFx0XHQ8bmd0LWJ1ZmZlci1nZW9tZXRyeT5cblx0XHRcdFx0PG5ndC1idWZmZXItYXR0cmlidXRlIGF0dGFjaD1cImF0dHJpYnV0ZXMucG9zaXRpb25cIiAqYXJncz1cIlthdHRyaWJ1dGVzKCkucG9zaXRpb25zLCAzXVwiIC8+XG5cdFx0XHRcdDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZSBhdHRhY2g9XCJhdHRyaWJ1dGVzLmNvbG9yXCIgKmFyZ3M9XCJbYXR0cmlidXRlcygpLmNvbG9ycywgM11cIiAvPlxuXHRcdFx0XHQ8bmd0LWJ1ZmZlci1hdHRyaWJ1dGUgYXR0YWNoPVwiYXR0cmlidXRlcy5zaXplXCIgKmFyZ3M9XCJbYXR0cmlidXRlcygpLnNpemVzLCAxXVwiIC8+XG5cdFx0XHQ8L25ndC1idWZmZXItZ2VvbWV0cnk+XG5cdFx0XHQ8bmd0LXByaW1pdGl2ZVxuXHRcdFx0XHQqYXJncz1cIlttYXRlcmlhbF1cIlxuXHRcdFx0XHRhdHRhY2g9XCJtYXRlcmlhbFwiXG5cdFx0XHRcdFtibGVuZGluZ109XCJBZGRpdGl2ZUJsZW5kaW5nXCJcblx0XHRcdFx0W2RlcHRoV3JpdGVdPVwiZmFsc2VcIlxuXHRcdFx0XHRbdHJhbnNwYXJlbnRdPVwidHJ1ZVwiXG5cdFx0XHRcdFt2ZXJ0ZXhDb2xvcnNdPVwidHJ1ZVwiXG5cdFx0XHRcdChiZWZvcmVSZW5kZXIpPVwib25CZWZvcmVSZW5kZXIoJGV2ZW50KVwiXG5cdFx0XHQ+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgYXR0YWNoPVwidW5pZm9ybXMuZmFkZS52YWx1ZVwiIFtyYXdWYWx1ZV09XCJmYWRlKClcIiAvPlxuXHRcdFx0PC9uZ3QtcHJpbWl0aXZlPlxuXHRcdDwvbmd0LXBvaW50cz5cblx0YCxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTdGFycyB7XG5cdHByaXZhdGUgaW5wdXRzID0gc2lnbmFsU3RvcmU8Tmd0c1N0YXJzU3RhdGU+KHtcblx0XHRyYWRpdXM6IDEwMCxcblx0XHRkZXB0aDogNTAsXG5cdFx0Y291bnQ6IDUwMDAsXG5cdFx0c2F0dXJhdGlvbjogMCxcblx0XHRmYWN0b3I6IDQsXG5cdFx0ZmFkZTogZmFsc2UsXG5cdFx0c3BlZWQ6IDEsXG5cdH0pO1xuXHRBZGRpdGl2ZUJsZW5kaW5nID0gVEhSRUUuQWRkaXRpdmVCbGVuZGluZztcblx0bWF0ZXJpYWwgPSBuZXcgU3RhckZpZWxkTWF0ZXJpYWwoKTtcblxuXHRASW5wdXQoKSBzdGFyc1JlZiA9IGluamVjdE5ndFJlZjxQb2ludHM+KCk7XG5cblx0QElucHV0KHsgYWxpYXM6ICdyYWRpdXMnIH0pIHNldCBfcmFkaXVzKHJhZGl1czogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgcmFkaXVzIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdkZXB0aCcgfSkgc2V0IF9kZXB0aChkZXB0aDogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZGVwdGggfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2NvdW50JyB9KSBzZXQgX2NvdW50KGNvdW50OiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBjb3VudCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZmFjdG9yJyB9KSBzZXQgX2ZhY3RvcihmYWN0b3I6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGZhY3RvciB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnc2F0dXJhdGlvbicgfSkgc2V0IF9zYXR1cmF0aW9uKHNhdHVyYXRpb246IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHNhdHVyYXRpb24gfSk7XG5cdH1cblxuXHRASW5wdXQoJ2ZhZGUnKSBzZXQgc3RhcnNGYWRlKGZhZGU6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBmYWRlIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdzcGVlZCcgfSkgc2V0IF9zcGVlZChzcGVlZDogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgc3BlZWQgfSk7XG5cdH1cblxuXHRwcml2YXRlIGNvdW50ID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdjb3VudCcpO1xuXHRwcml2YXRlIGRlcHRoID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdkZXB0aCcpO1xuXHRwcml2YXRlIGZhY3RvciA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZmFjdG9yJyk7XG5cdHByaXZhdGUgcmFkaXVzID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdyYWRpdXMnKTtcblx0cHJpdmF0ZSBzYXR1cmF0aW9uID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdzYXR1cmF0aW9uJyk7XG5cblx0ZmFkZSA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZmFkZScpO1xuXHRhdHRyaWJ1dGVzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHBvc2l0aW9uczogbnVtYmVyW10gPSBbXTtcblx0XHRjb25zdCBjb2xvcnM6IG51bWJlcltdID0gW107XG5cdFx0Y29uc3Qgc2l6ZXMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLmNvdW50KCkgfSwgKCkgPT4gKDAuNSArIDAuNSAqIE1hdGgucmFuZG9tKCkpICogdGhpcy5mYWN0b3IoKSk7XG5cdFx0Y29uc3QgY29sb3IgPSBuZXcgVEhSRUUuQ29sb3IoKTtcblx0XHRsZXQgciA9IHRoaXMucmFkaXVzKCkgKyB0aGlzLmRlcHRoKCk7XG5cdFx0Y29uc3QgaW5jcmVtZW50ID0gdGhpcy5kZXB0aCgpIC8gdGhpcy5jb3VudCgpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb3VudCgpOyBpKyspIHtcblx0XHRcdHIgLT0gaW5jcmVtZW50ICogTWF0aC5yYW5kb20oKTtcblx0XHRcdHBvc2l0aW9ucy5wdXNoKC4uLmdlblN0YXIocikudG9BcnJheSgpKTtcblx0XHRcdGNvbG9yLnNldEhTTChpIC8gdGhpcy5jb3VudCgpLCB0aGlzLnNhdHVyYXRpb24oKSwgMC45KTtcblx0XHRcdGNvbG9ycy5wdXNoKGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIpO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cG9zaXRpb25zOiBuZXcgRmxvYXQzMkFycmF5KHBvc2l0aW9ucyksXG5cdFx0XHRjb2xvcnM6IG5ldyBGbG9hdDMyQXJyYXkoY29sb3JzKSxcblx0XHRcdHNpemVzOiBuZXcgRmxvYXQzMkFycmF5KHNpemVzKSxcblx0XHR9O1xuXHR9KTtcblxuXHRvbkJlZm9yZVJlbmRlcih7IG9iamVjdCwgc3RhdGUgfTogTmd0QmVmb3JlUmVuZGVyRXZlbnQ8SW5zdGFuY2VUeXBlPHR5cGVvZiBTdGFyRmllbGRNYXRlcmlhbD4+KSB7XG5cdFx0b2JqZWN0LnVuaWZvcm1zWyd0aW1lJ10udmFsdWUgPSBzdGF0ZS5jbG9jay5nZXRFbGFwc2VkVGltZSgpICogdGhpcy5pbnB1dHMuZ2V0KCdzcGVlZCcpO1xuXHR9XG59XG4iXX0=
@@ -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.2.2", ngImport: i0, type: NgtsWireframeInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
135
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", 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.2.2", 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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RUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO2dCQUljLGVBQWU7c0JBQXRELEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBSUosS0FBSztzQkFBbEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXMsIHNpZ25hbFN0b3JlLCB0eXBlIE5ndFJlZiB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHR5cGUgeyBXaXJlZnJhbWVNYXRlcmlhbFN0YXRlIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3NoYWRlcnMnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgdHlwZSBOZ3RzV2lyZWZyYW1lU3RhdGUgPSB7XG5cdGdlb21ldHJ5PzogTmd0UmVmPFRIUkVFLkJ1ZmZlckdlb21ldHJ5Pjtcblx0c2ltcGxpZnk6IGJvb2xlYW47XG59ICYgUmVxdWlyZWQ8V2lyZWZyYW1lTWF0ZXJpYWxTdGF0ZT47XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5ndHNXaXJlZnJhbWVJbnB1dCB7XG5cdGlucHV0cyA9IHNpZ25hbFN0b3JlPE5ndHNXaXJlZnJhbWVTdGF0ZT4oe1xuXHRcdHNpbXBsaWZ5OiBmYWxzZSxcblx0XHRzdHJva2VPcGFjaXR5OiAxLFxuXHRcdGZpbGxPcGFjaXR5OiAwLjI1LFxuXHRcdGZpbGxNaXg6IDAsXG5cdFx0dGhpY2tuZXNzOiAwLjA1LFxuXHRcdGNvbG9yQmFja2ZhY2VzOiBmYWxzZSxcblx0XHRkYXNoSW52ZXJ0OiB0cnVlLFxuXHRcdGRhc2g6IGZhbHNlLFxuXHRcdGRhc2hSZXBlYXRzOiA0LFxuXHRcdGRhc2hMZW5ndGg6IDAuNSxcblx0XHRzcXVlZXplOiBmYWxzZSxcblx0XHRzcXVlZXplTWluOiAwLjIsXG5cdFx0c3F1ZWV6ZU1heDogMSxcblx0XHRzdHJva2U6IG5ldyBUSFJFRS5Db2xvcignI2ZmMDAwMCcpLFxuXHRcdGJhY2tmYWNlU3Ryb2tlOiBuZXcgVEhSRUUuQ29sb3IoJyMwMDAwZmYnKSxcblx0XHRmaWxsOiBuZXcgVEhSRUUuQ29sb3IoJyMwMGZmMDAnKSxcblx0fSk7XG5cblx0QElucHV0KHsgYWxpYXM6ICdnZW9tZXRyeScgfSkgc2V0IF9nZW9tZXRyeShnZW9tZXRyeTogTmd0UmVmPFRIUkVFLkJ1ZmZlckdlb21ldHJ5Pikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGdlb21ldHJ5IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdzaW1wbGlmeScgfSkgc2V0IF9zaW1wbGlmeShzaW1wbGlmeTogYm9vbGVhbikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHNpbXBsaWZ5IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdmaWxsT3BhY2l0eScgfSkgc2V0IF9maWxsT3BhY2l0eShmaWxsT3BhY2l0eTogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZmlsbE9wYWNpdHkgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2ZpbGxNaXgnIH0pIHNldCBfZmlsbE1peChmaWxsTWl4OiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBmaWxsTWl4IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdzdHJva2VPcGFjaXR5JyB9KSBzZXQgX3N0cm9rZU9wYWNpdHkoc3Ryb2tlT3BhY2l0eTogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgc3Ryb2tlT3BhY2l0eSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAndGhpY2tuZXNzJyB9KSBzZXQgX3RoaWNrbmVzcyh0aGlja25lc3M6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHRoaWNrbmVzcyB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnY29sb3JCYWNrZmFjZXMnIH0pIHNldCBfY29sb3JCYWNrZmFjZXMoY29sb3JCYWNrZmFjZXM6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBjb2xvckJhY2tmYWNlcyB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZGFzaEludmVydCcgfSkgc2V0IF9kYXNoSW52ZXJ0KGRhc2hJbnZlcnQ6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBkYXNoSW52ZXJ0IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdkYXNoJyB9KSBzZXQgX2Rhc2goZGFzaDogYm9vbGVhbikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGRhc2ggfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2Rhc2hSZXBlYXRzJyB9KSBzZXQgX2Rhc2hSZXBlYXRzKGRhc2hSZXBlYXRzOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBkYXNoUmVwZWF0cyB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZGFzaExlbmd0aCcgfSkgc2V0IF9kYXNoTGVuZ3RoKGRhc2hMZW5ndGg6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGRhc2hMZW5ndGggfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3NxdWVlemUnIH0pIHNldCBfc3F1ZWV6ZShzcXVlZXplOiBib29sZWFuKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgc3F1ZWV6ZSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnc3F1ZWV6ZU1pbicgfSkgc2V0IF9zcXVlZXplTWluKHNxdWVlemVNaW46IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHNxdWVlemVNaW4gfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3NxdWVlemVNYXgnIH0pIHNldCBfc3F1ZWV6ZU1heChzcXVlZXplTWF4OiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBzcXVlZXplTWF4IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdzdHJva2UnIH0pIHNldCBfc3Ryb2tlKHN0cm9rZTogVEhSRUUuQ29sb3JSZXByZXNlbnRhdGlvbikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHN0cm9rZSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnYmFja2ZhY2VTdHJva2UnIH0pIHNldCBfYmFja2ZhY2VTdHJva2UoYmFja2ZhY2VTdHJva2U6IFRIUkVFLkNvbG9yUmVwcmVzZW50YXRpb24pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBiYWNrZmFjZVN0cm9rZSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZmlsbCcgfSkgc2V0IF9maWxsKGZpbGw6IFRIUkVFLkNvbG9yUmVwcmVzZW50YXRpb24pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBmaWxsIH0pO1xuXHR9XG5cblx0c2ltcGxpZnkgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ3NpbXBsaWZ5Jyk7XG5cdGdlb21ldHJ5ID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdnZW9tZXRyeScpO1xuXHRjdXN0b21HZW9tZXRyeSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBnZW9tZXRyeSA9IHRoaXMuZ2VvbWV0cnkoKTtcblx0XHRyZXR1cm4gaXMucmVmKGdlb21ldHJ5KSA/IGdlb21ldHJ5Lm5hdGl2ZUVsZW1lbnQgOiBnZW9tZXRyeTtcblx0fSk7XG5cblx0c3Ryb2tlT3BhY2l0eSA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnc3Ryb2tlT3BhY2l0eScpO1xuXHRmaWxsT3BhY2l0eSA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZmlsbE9wYWNpdHknKTtcblx0ZmlsbE1peCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZmlsbE1peCcpO1xuXHR0aGlja25lc3MgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ3RoaWNrbmVzcycpO1xuXHRjb2xvckJhY2tmYWNlcyA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnY29sb3JCYWNrZmFjZXMnKTtcblx0ZGFzaEludmVydCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZGFzaEludmVydCcpO1xuXHRkYXNoID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdkYXNoJyk7XG5cdGRhc2hSZXBlYXRzID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdkYXNoUmVwZWF0cycpO1xuXHRkYXNoTGVuZ3RoID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdkYXNoTGVuZ3RoJyk7XG5cdHNxdWVlemUgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ3NxdWVlemUnKTtcblx0c3F1ZWV6ZU1pbiA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnc3F1ZWV6ZU1pbicpO1xuXHRzcXVlZXplTWF4ID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdzcXVlZXplTWF4Jyk7XG5cdHN0cm9rZSA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnc3Ryb2tlJyk7XG5cdGJhY2tmYWNlU3Ryb2tlID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdiYWNrZmFjZVN0cm9rZScpO1xuXHRmaWxsID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdmaWxsJyk7XG5cblx0bWF0ZXJpYWxTdGF0ZSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBbXG5cdFx0XHRzdHJva2VPcGFjaXR5LFxuXHRcdFx0ZmlsbE9wYWNpdHksXG5cdFx0XHRmaWxsTWl4LFxuXHRcdFx0dGhpY2tuZXNzLFxuXHRcdFx0Y29sb3JCYWNrZmFjZXMsXG5cdFx0XHRkYXNoSW52ZXJ0LFxuXHRcdFx0ZGFzaCxcblx0XHRcdGRhc2hSZXBlYXRzLFxuXHRcdFx0ZGFzaExlbmd0aCxcblx0XHRcdHNxdWVlemUsXG5cdFx0XHRzcXVlZXplTWluLFxuXHRcdFx0c3F1ZWV6ZU1heCxcblx0XHRcdHN0cm9rZSxcblx0XHRcdGJhY2tmYWNlU3Ryb2tlLFxuXHRcdFx0ZmlsbCxcblx0XHRdID0gW1xuXHRcdFx0dGhpcy5zdHJva2VPcGFjaXR5KCksXG5cdFx0XHR0aGlzLmZpbGxPcGFjaXR5KCksXG5cdFx0XHR0aGlzLmZpbGxNaXgoKSxcblx0XHRcdHRoaXMudGhpY2tuZXNzKCksXG5cdFx0XHR0aGlzLmNvbG9yQmFja2ZhY2VzKCksXG5cdFx0XHR0aGlzLmRhc2hJbnZlcnQoKSxcblx0XHRcdHRoaXMuZGFzaCgpLFxuXHRcdFx0dGhpcy5kYXNoUmVwZWF0cygpLFxuXHRcdFx0dGhpcy5kYXNoTGVuZ3RoKCksXG5cdFx0XHR0aGlzLnNxdWVlemUoKSxcblx0XHRcdHRoaXMuc3F1ZWV6ZU1pbigpLFxuXHRcdFx0dGhpcy5zcXVlZXplTWF4KCksXG5cdFx0XHR0aGlzLnN0cm9rZSgpLFxuXHRcdFx0dGhpcy5iYWNrZmFjZVN0cm9rZSgpLFxuXHRcdFx0dGhpcy5maWxsKCksXG5cdFx0XTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0c3Ryb2tlT3BhY2l0eSxcblx0XHRcdGZpbGxPcGFjaXR5LFxuXHRcdFx0ZmlsbE1peCxcblx0XHRcdHRoaWNrbmVzcyxcblx0XHRcdGNvbG9yQmFja2ZhY2VzLFxuXHRcdFx0ZGFzaEludmVydCxcblx0XHRcdGRhc2gsXG5cdFx0XHRkYXNoUmVwZWF0cyxcblx0XHRcdGRhc2hMZW5ndGgsXG5cdFx0XHRzcXVlZXplLFxuXHRcdFx0c3F1ZWV6ZU1pbixcblx0XHRcdHNxdWVlemVNYXgsXG5cdFx0XHRzdHJva2UsXG5cdFx0XHRiYWNrZmFjZVN0cm9rZSxcblx0XHRcdGZpbGwsXG5cdFx0fTtcblx0fSk7XG59XG4iXX0=