angular-three-soba 1.14.0 → 2.0.0-beta.3

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 (343) hide show
  1. package/README.md +2 -2
  2. package/abstractions/{lib/billboard → billboard}/billboard.d.ts +14 -4
  3. package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +25 -0
  4. package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +25 -0
  5. package/abstractions/{lib/edges → edges}/edges.d.ts +11 -7
  6. package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-helper.d.ts +16 -23
  7. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +22 -0
  8. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +30 -0
  9. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +32 -0
  10. package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-viewcube/gizmo-viewcube.d.ts +2 -3
  11. package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-viewport/gizmo-viewport-axis.d.ts +28 -9
  12. package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-viewport/gizmo-viewport.d.ts +23 -4
  13. package/abstractions/index.d.ts +11 -11
  14. package/abstractions/line/line-input.d.ts +42 -0
  15. package/abstractions/line/line.d.ts +35 -0
  16. package/abstractions/{lib/quadratic-bezier-line → quadratic-bezier-line}/quadratic-bezier-line.d.ts +12 -8
  17. package/abstractions/text/text.d.ts +77 -0
  18. package/abstractions/text-3d/text-3d.d.ts +74 -0
  19. package/cameras/{lib/camera → camera}/camera-content.d.ts +1 -1
  20. package/cameras/{lib/camera → camera}/camera.d.ts +12 -8
  21. package/cameras/cube-camera/cube-camera.d.ts +42 -0
  22. package/cameras/index.d.ts +5 -4
  23. package/cameras/{lib/orthographic-camera → orthographic-camera}/orthographic-camera.d.ts +14 -5
  24. package/controls/index.d.ts +1 -1
  25. package/controls/{lib/orbit-controls → orbit-controls}/orbit-controls.d.ts +19 -11
  26. package/esm2022/abstractions/angular-three-soba-abstractions.mjs +1 -1
  27. package/esm2022/abstractions/billboard/billboard.mjs +71 -0
  28. package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +131 -0
  29. package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +113 -0
  30. package/esm2022/abstractions/edges/edges.mjs +93 -0
  31. package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +210 -0
  32. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +31 -0
  33. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +95 -0
  34. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +155 -0
  35. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +62 -0
  36. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +80 -0
  37. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +206 -0
  38. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +273 -0
  39. package/esm2022/abstractions/index.mjs +12 -12
  40. package/esm2022/abstractions/line/line-input.mjs +113 -0
  41. package/esm2022/abstractions/line/line.mjs +165 -0
  42. package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +128 -0
  43. package/esm2022/abstractions/text/text.mjs +275 -0
  44. package/esm2022/abstractions/text-3d/text-3d.mjs +167 -0
  45. package/esm2022/angular-three-soba.mjs +1 -1
  46. package/esm2022/cameras/angular-three-soba-cameras.mjs +1 -1
  47. package/esm2022/cameras/camera/camera-content.mjs +21 -0
  48. package/esm2022/cameras/camera/camera.mjs +71 -0
  49. package/esm2022/cameras/cube-camera/cube-camera.mjs +131 -0
  50. package/esm2022/cameras/index.mjs +6 -5
  51. package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +99 -0
  52. package/esm2022/cameras/perspective-camera/perspective-camera.mjs +47 -0
  53. package/esm2022/controls/angular-three-soba-controls.mjs +1 -1
  54. package/esm2022/controls/index.mjs +2 -2
  55. package/esm2022/controls/orbit-controls/orbit-controls.mjs +165 -0
  56. package/esm2022/index.mjs +1 -1
  57. package/esm2022/loaders/angular-three-soba-loaders.mjs +1 -1
  58. package/esm2022/loaders/gltf-loader/gltf-loader.mjs +33 -0
  59. package/esm2022/loaders/index.mjs +5 -6
  60. package/esm2022/loaders/loader/loader.mjs +133 -0
  61. package/esm2022/loaders/progress/progress.mjs +52 -0
  62. package/esm2022/loaders/texture-loader/texture-loader.mjs +28 -0
  63. package/esm2022/materials/angular-three-soba-materials.mjs +1 -1
  64. package/esm2022/materials/index.mjs +6 -6
  65. package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +73 -0
  66. package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +383 -0
  67. package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +168 -0
  68. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +257 -0
  69. package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +66 -0
  70. package/esm2022/misc/angular-three-soba-misc.mjs +1 -1
  71. package/esm2022/misc/animations/animations.mjs +55 -0
  72. package/esm2022/misc/bake-shadows/bake-shadows.mjs +24 -0
  73. package/esm2022/misc/depth-buffer/depth-buffer.mjs +46 -0
  74. package/esm2022/misc/fbo/fbo.mjs +47 -0
  75. package/esm2022/misc/index.mjs +5 -5
  76. package/esm2022/performance/adaptive/adaptive-dpr.mjs +46 -0
  77. package/esm2022/performance/adaptive/adaptive-events.mjs +31 -0
  78. package/esm2022/performance/angular-three-soba-performance.mjs +1 -1
  79. package/esm2022/performance/detailed/detailed.mjs +61 -0
  80. package/esm2022/performance/index.mjs +7 -5
  81. package/esm2022/performance/instances/instance.mjs +48 -0
  82. package/esm2022/performance/instances/instances.mjs +189 -0
  83. package/esm2022/performance/instances/position-mesh.mjs +52 -0
  84. package/esm2022/performance/stats/stats.mjs +79 -0
  85. package/esm2022/shaders/angular-three-soba-shaders.mjs +1 -1
  86. package/esm2022/shaders/blur-pass/blur-pass.mjs +61 -0
  87. package/esm2022/shaders/caustics-material/caustics-material.mjs +128 -0
  88. package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +33 -0
  89. package/esm2022/shaders/convolution-material/convolution-material.mjs +94 -0
  90. package/esm2022/shaders/discard-material/discard-material.mjs +3 -0
  91. package/esm2022/shaders/index.mjs +15 -15
  92. package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +55 -0
  93. package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +223 -0
  94. package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +170 -0
  95. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +268 -0
  96. package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +37 -0
  97. package/esm2022/shaders/shader-material/shader-material.mjs +34 -0
  98. package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +33 -0
  99. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +47 -0
  100. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +86 -0
  101. package/esm2022/shaders/star-field-material/star-field-material.mjs +32 -0
  102. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +283 -0
  103. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +108 -0
  104. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +208 -0
  105. package/esm2022/staging/angular-three-soba-staging.mjs +1 -1
  106. package/esm2022/staging/bounds/bounds.mjs +307 -0
  107. package/esm2022/staging/camera-shake/camera-shake.mjs +117 -0
  108. package/esm2022/staging/caustics/caustisc.mjs +384 -0
  109. package/esm2022/staging/center/center.mjs +148 -0
  110. package/esm2022/staging/cloud/cloud.mjs +164 -0
  111. package/esm2022/staging/contact-shadows/contact-shadows.mjs +249 -0
  112. package/esm2022/staging/environment/assets.mjs +13 -0
  113. package/esm2022/staging/environment/environment-cube.mjs +49 -0
  114. package/esm2022/staging/environment/environment-ground.mjs +43 -0
  115. package/esm2022/staging/environment/environment-input.mjs +106 -0
  116. package/esm2022/staging/environment/environment-map.mjs +53 -0
  117. package/esm2022/staging/environment/environment-portal.mjs +135 -0
  118. package/esm2022/staging/environment/environment.mjs +78 -0
  119. package/esm2022/staging/environment/utils.mjs +84 -0
  120. package/esm2022/staging/float/float.mjs +82 -0
  121. package/esm2022/staging/index.mjs +18 -18
  122. package/esm2022/staging/sky/sky.mjs +114 -0
  123. package/esm2022/staging/sparkles/sparkles.mjs +161 -0
  124. package/esm2022/staging/spot-light/spot-light-input.mjs +75 -0
  125. package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +57 -0
  126. package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +256 -0
  127. package/esm2022/staging/spot-light/spot-light.mjs +94 -0
  128. package/esm2022/staging/spot-light/volumetric-mesh.mjs +101 -0
  129. package/esm2022/staging/stage/stage.mjs +374 -0
  130. package/esm2022/staging/stars/stars.mjs +148 -0
  131. package/fesm2022/angular-three-soba-abstractions.mjs +1116 -890
  132. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  133. package/fesm2022/angular-three-soba-cameras.mjs +126 -122
  134. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  135. package/fesm2022/angular-three-soba-controls.mjs +72 -54
  136. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  137. package/fesm2022/angular-three-soba-loaders.mjs +147 -131
  138. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  139. package/fesm2022/angular-three-soba-materials.mjs +340 -258
  140. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  141. package/fesm2022/angular-three-soba-misc.mjs +140 -123
  142. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  143. package/fesm2022/angular-three-soba-performance.mjs +383 -106
  144. package/fesm2022/angular-three-soba-performance.mjs.map +1 -1
  145. package/fesm2022/angular-three-soba-shaders.mjs +57 -9
  146. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  147. package/fesm2022/angular-three-soba-staging.mjs +1609 -1561
  148. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  149. package/fesm2022/angular-three-soba.mjs.map +1 -1
  150. package/loaders/gltf-loader/gltf-loader.d.ts +9 -0
  151. package/loaders/index.d.ts +4 -5
  152. package/loaders/{lib/loader → loader}/loader.d.ts +20 -15
  153. package/loaders/progress/progress.d.ts +9 -0
  154. package/loaders/texture-loader/texture-loader.d.ts +7 -0
  155. package/materials/index.d.ts +5 -5
  156. package/materials/{lib/mesh-distort-material → mesh-distort-material}/mesh-distort-material.d.ts +11 -5
  157. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +81 -0
  158. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +50 -0
  159. package/materials/{lib/mesh-transmission-material → mesh-transmission-material}/mesh-transmission-material.d.ts +51 -6
  160. package/materials/{lib/mesh-wobble-material → mesh-wobble-material}/mesh-wobble-material.d.ts +9 -3
  161. package/misc/animations/animations.d.ts +13 -0
  162. package/misc/{lib/bake-shadows → bake-shadows}/bake-shadows.d.ts +2 -5
  163. package/misc/depth-buffer/depth-buffer.d.ts +9 -0
  164. package/misc/{lib/fbo → fbo}/fbo.d.ts +4 -2
  165. package/misc/index.d.ts +4 -4
  166. package/package.json +25 -23
  167. package/performance/{lib/adaptive → adaptive}/adaptive-dpr.d.ts +4 -7
  168. package/performance/{lib/adaptive → adaptive}/adaptive-events.d.ts +2 -6
  169. package/performance/detailed/detailed.d.ts +20 -0
  170. package/performance/index.d.ts +6 -4
  171. package/performance/instances/instance.d.ts +9 -0
  172. package/performance/instances/instances.d.ts +35 -0
  173. package/performance/instances/position-mesh.d.ts +10 -0
  174. package/performance/{lib/stats → stats}/stats.d.ts +10 -7
  175. package/plugin/package.json +1 -1
  176. package/plugin/src/generators/init/compat.js.map +1 -1
  177. package/plugin/src/generators/init/init.d.ts +1 -1
  178. package/plugin/src/generators/init/init.js +1 -1
  179. package/plugin/src/generators/init/init.js.map +1 -1
  180. package/plugin/src/index.js.map +1 -1
  181. package/shaders/{lib/blur-pass → blur-pass}/blur-pass.d.ts +2 -2
  182. package/shaders/index.d.ts +14 -14
  183. package/shaders/{lib/mesh-distort-material → mesh-distort-material}/mesh-distort-material.d.ts +1 -1
  184. package/shaders/{lib/mesh-wobble-material → mesh-wobble-material}/mesh-wobble-material.d.ts +1 -0
  185. package/shaders/{lib/soft-shadow-material → soft-shadow-material}/soft-shadow-material.d.ts +2 -2
  186. package/shaders/sparkles-material/sparkles-material.d.ts +3 -0
  187. package/staging/{lib/accumulative-shadows → accumulative-shadows}/accumulative-shadows.d.ts +55 -17
  188. package/staging/{lib/accumulative-shadows → accumulative-shadows}/progressive-light-map.d.ts +2 -2
  189. package/staging/{lib/accumulative-shadows → accumulative-shadows}/randomized-lights.d.ts +45 -10
  190. package/staging/{lib/bounds → bounds}/bounds.d.ts +32 -22
  191. package/staging/{lib/camera-shake → camera-shake}/camera-shake.d.ts +15 -11
  192. package/staging/{lib/caustics/caustics.d.ts → caustics/caustisc.d.ts} +36 -13
  193. package/staging/{lib/center → center}/center.d.ts +30 -8
  194. package/staging/cloud/cloud.d.ts +48 -0
  195. package/staging/{lib/contact-shadows → contact-shadows}/contact-shadows.d.ts +38 -10
  196. package/staging/environment/environment-cube.d.ts +11 -0
  197. package/staging/environment/environment-ground.d.ts +13 -0
  198. package/staging/environment/environment-input.d.ts +68 -0
  199. package/staging/environment/environment-map.d.ts +11 -0
  200. package/staging/{lib/environment → environment}/environment-portal.d.ts +5 -7
  201. package/staging/{lib/environment → environment}/environment.d.ts +2 -2
  202. package/staging/environment/utils.d.ts +7 -0
  203. package/staging/float/float.d.ts +27 -0
  204. package/staging/index.d.ts +17 -17
  205. package/staging/{lib/sky → sky}/sky.d.ts +26 -5
  206. package/staging/{lib/sparkles → sparkles}/sparkles.d.ts +30 -10
  207. package/staging/{lib/spot-light → spot-light}/spot-light-input.d.ts +24 -2
  208. package/staging/{lib/spot-light/shadow-mesh-input.d.ts → spot-light/spot-light-shadow-mesh-input.d.ts} +18 -3
  209. package/staging/spot-light/spot-light-shadow-mesh.d.ts +38 -0
  210. package/staging/{lib/spot-light → spot-light}/spot-light.d.ts +11 -5
  211. package/staging/{lib/spot-light → spot-light}/volumetric-mesh.d.ts +8 -5
  212. package/staging/{lib/stage → stage}/stage.d.ts +33 -14
  213. package/staging/{lib/stars → stars}/stars.d.ts +21 -7
  214. package/abstractions/lib/catmull-rom-line/catmull-rom-line.d.ts +0 -15
  215. package/abstractions/lib/cubic-bezier-line/cubic-bezier-line.d.ts +0 -15
  216. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -16
  217. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -24
  218. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -14
  219. package/abstractions/lib/line/line-input.d.ts +0 -19
  220. package/abstractions/lib/line/line.d.ts +0 -21
  221. package/abstractions/lib/text/text.d.ts +0 -21
  222. package/abstractions/lib/text-3d/text-3d.d.ts +0 -39
  223. package/assets/default-spot-light-shadow.glsl +0 -10
  224. package/cameras/lib/cube-camera/cube-camera.d.ts +0 -27
  225. package/esm2022/abstractions/lib/billboard/billboard.mjs +0 -74
  226. package/esm2022/abstractions/lib/catmull-rom-line/catmull-rom-line.mjs +0 -120
  227. package/esm2022/abstractions/lib/cubic-bezier-line/cubic-bezier-line.mjs +0 -99
  228. package/esm2022/abstractions/lib/edges/edges.mjs +0 -96
  229. package/esm2022/abstractions/lib/gizmo-helper/gizmo-helper.mjs +0 -213
  230. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
  231. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -92
  232. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -184
  233. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -46
  234. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -134
  235. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -195
  236. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -267
  237. package/esm2022/abstractions/lib/line/line-input.mjs +0 -76
  238. package/esm2022/abstractions/lib/line/line.mjs +0 -133
  239. package/esm2022/abstractions/lib/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
  240. package/esm2022/abstractions/lib/text/text.mjs +0 -115
  241. package/esm2022/abstractions/lib/text-3d/text-3d.mjs +0 -145
  242. package/esm2022/cameras/lib/camera/camera-content.mjs +0 -21
  243. package/esm2022/cameras/lib/camera/camera.mjs +0 -75
  244. package/esm2022/cameras/lib/cube-camera/cube-camera.mjs +0 -131
  245. package/esm2022/cameras/lib/orthographic-camera/orthographic-camera.mjs +0 -93
  246. package/esm2022/cameras/lib/perspective-camera/perspective-camera.mjs +0 -47
  247. package/esm2022/controls/lib/orbit-controls/orbit-controls.mjs +0 -147
  248. package/esm2022/loaders/lib/cube-texture-loader/cube-texture-loader.mjs +0 -10
  249. package/esm2022/loaders/lib/gltf-loader/gltf-loader.mjs +0 -32
  250. package/esm2022/loaders/lib/loader/loader.mjs +0 -134
  251. package/esm2022/loaders/lib/progress/progress.mjs +0 -39
  252. package/esm2022/loaders/lib/texture-loader/texture-loader.mjs +0 -19
  253. package/esm2022/materials/lib/mesh-distort-material/mesh-distort-material.mjs +0 -75
  254. package/esm2022/materials/lib/mesh-reflector-material/mesh-reflector-material.mjs +0 -328
  255. package/esm2022/materials/lib/mesh-refraction-material/mesh-refraction-material.mjs +0 -158
  256. package/esm2022/materials/lib/mesh-transmission-material/mesh-transmission-material.mjs +0 -238
  257. package/esm2022/materials/lib/mesh-wobble-material/mesh-wobble-material.mjs +0 -68
  258. package/esm2022/misc/lib/animations/animations.mjs +0 -52
  259. package/esm2022/misc/lib/bake-shadows/bake-shadows.mjs +0 -26
  260. package/esm2022/misc/lib/depth-buffer/depth-buffer.mjs +0 -39
  261. package/esm2022/misc/lib/fbo/fbo.mjs +0 -39
  262. package/esm2022/performance/lib/adaptive/adaptive-dpr.mjs +0 -47
  263. package/esm2022/performance/lib/adaptive/adaptive-events.mjs +0 -37
  264. package/esm2022/performance/lib/detailed/detailed.mjs +0 -54
  265. package/esm2022/performance/lib/stats/stats.mjs +0 -80
  266. package/esm2022/shaders/lib/blur-pass/blur-pass.mjs +0 -61
  267. package/esm2022/shaders/lib/caustics-material/caustics-material.mjs +0 -128
  268. package/esm2022/shaders/lib/caustics-projection-material/caustics-projection-material.mjs +0 -33
  269. package/esm2022/shaders/lib/convolution-material/convolution-material.mjs +0 -94
  270. package/esm2022/shaders/lib/discard-material/discard-material.mjs +0 -3
  271. package/esm2022/shaders/lib/mesh-distort-material/mesh-distort-material.mjs +0 -55
  272. package/esm2022/shaders/lib/mesh-reflector-material/mesh-reflector-material.mjs +0 -223
  273. package/esm2022/shaders/lib/mesh-refraction-material/mesh-refraction-material.mjs +0 -169
  274. package/esm2022/shaders/lib/mesh-transmission-material/mesh-transmission-material.mjs +0 -268
  275. package/esm2022/shaders/lib/mesh-wobble-material/mesh-wobble-material.mjs +0 -37
  276. package/esm2022/shaders/lib/shader-material/shader-material.mjs +0 -34
  277. package/esm2022/shaders/lib/soft-shadow-material/soft-shadow-material.mjs +0 -33
  278. package/esm2022/shaders/lib/spot-light-material/spot-light-material.mjs +0 -86
  279. package/esm2022/shaders/lib/star-field-material/star-field-material.mjs +0 -32
  280. package/esm2022/staging/lib/accumulative-shadows/accumulative-shadows.mjs +0 -249
  281. package/esm2022/staging/lib/accumulative-shadows/progressive-light-map.mjs +0 -108
  282. package/esm2022/staging/lib/accumulative-shadows/randomized-lights.mjs +0 -201
  283. package/esm2022/staging/lib/bounds/bounds.mjs +0 -284
  284. package/esm2022/staging/lib/camera-shake/camera-shake.mjs +0 -122
  285. package/esm2022/staging/lib/caustics/caustics.mjs +0 -364
  286. package/esm2022/staging/lib/center/center.mjs +0 -143
  287. package/esm2022/staging/lib/cloud/cloud.mjs +0 -160
  288. package/esm2022/staging/lib/contact-shadows/contact-shadows.mjs +0 -228
  289. package/esm2022/staging/lib/environment/assets.mjs +0 -13
  290. package/esm2022/staging/lib/environment/environment-cube.mjs +0 -41
  291. package/esm2022/staging/lib/environment/environment-ground.mjs +0 -67
  292. package/esm2022/staging/lib/environment/environment-inputs.mjs +0 -87
  293. package/esm2022/staging/lib/environment/environment-map.mjs +0 -39
  294. package/esm2022/staging/lib/environment/environment-portal.mjs +0 -111
  295. package/esm2022/staging/lib/environment/environment.mjs +0 -165
  296. package/esm2022/staging/lib/environment/utils.mjs +0 -70
  297. package/esm2022/staging/lib/float/float.mjs +0 -77
  298. package/esm2022/staging/lib/sky/sky.mjs +0 -109
  299. package/esm2022/staging/lib/sparkles/sparkles.mjs +0 -210
  300. package/esm2022/staging/lib/spot-light/common.mjs +0 -42
  301. package/esm2022/staging/lib/spot-light/shadow-mesh-input.mjs +0 -51
  302. package/esm2022/staging/lib/spot-light/spot-light-input.mjs +0 -62
  303. package/esm2022/staging/lib/spot-light/spot-light-shadow-no-shader.mjs +0 -74
  304. package/esm2022/staging/lib/spot-light/spot-light-shadow-shader.mjs +0 -126
  305. package/esm2022/staging/lib/spot-light/spot-light-shadow.mjs +0 -63
  306. package/esm2022/staging/lib/spot-light/spot-light.mjs +0 -117
  307. package/esm2022/staging/lib/spot-light/volumetric-mesh.mjs +0 -86
  308. package/esm2022/staging/lib/stage/stage.mjs +0 -368
  309. package/esm2022/staging/lib/stars/stars.mjs +0 -140
  310. package/loaders/lib/cube-texture-loader/cube-texture-loader.d.ts +0 -3
  311. package/loaders/lib/gltf-loader/gltf-loader.d.ts +0 -8
  312. package/loaders/lib/progress/progress.d.ts +0 -16
  313. package/loaders/lib/texture-loader/texture-loader.d.ts +0 -5
  314. package/materials/lib/mesh-reflector-material/mesh-reflector-material.d.ts +0 -41
  315. package/materials/lib/mesh-refraction-material/mesh-refraction-material.d.ts +0 -28
  316. package/misc/lib/animations/animations.d.ts +0 -13
  317. package/misc/lib/depth-buffer/depth-buffer.d.ts +0 -7
  318. package/performance/lib/detailed/detailed.d.ts +0 -13
  319. package/staging/lib/cloud/cloud.d.ts +0 -23
  320. package/staging/lib/environment/environment-cube.d.ts +0 -11
  321. package/staging/lib/environment/environment-ground.d.ts +0 -9
  322. package/staging/lib/environment/environment-inputs.d.ts +0 -28
  323. package/staging/lib/environment/environment-map.d.ts +0 -10
  324. package/staging/lib/environment/utils.d.ts +0 -8
  325. package/staging/lib/float/float.d.ts +0 -16
  326. package/staging/lib/spot-light/common.d.ts +0 -3
  327. package/staging/lib/spot-light/spot-light-shadow-no-shader.d.ts +0 -14
  328. package/staging/lib/spot-light/spot-light-shadow-shader.d.ts +0 -25
  329. package/staging/lib/spot-light/spot-light-shadow.d.ts +0 -6
  330. /package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-viewcube/constants.d.ts +0 -0
  331. /package/cameras/{lib/perspective-camera → perspective-camera}/perspective-camera.d.ts +0 -0
  332. /package/plugin/{README.md → libs/plugin/README.md} +0 -0
  333. /package/shaders/{lib/caustics-material → caustics-material}/caustics-material.d.ts +0 -0
  334. /package/shaders/{lib/caustics-projection-material → caustics-material}/caustics-projection-material.d.ts +0 -0
  335. /package/shaders/{lib/convolution-material → convolution-material}/convolution-material.d.ts +0 -0
  336. /package/shaders/{lib/discard-material → discard-material}/discard-material.d.ts +0 -0
  337. /package/shaders/{lib/mesh-reflector-material → mesh-reflector-material}/mesh-reflector-material.d.ts +0 -0
  338. /package/shaders/{lib/mesh-refraction-material → mesh-refraction-material}/mesh-refraction-material.d.ts +0 -0
  339. /package/shaders/{lib/mesh-transmission-material → mesh-transmission-material}/mesh-transmission-material.d.ts +0 -0
  340. /package/shaders/{lib/shader-material → shader-material}/shader-material.d.ts +0 -0
  341. /package/shaders/{lib/spot-light-material → spot-light-material}/spot-light-material.d.ts +0 -0
  342. /package/shaders/{lib/star-field-material → star-field-material}/star-field-material.d.ts +0 -0
  343. /package/staging/{lib/environment → environment}/assets.d.ts +0 -0
@@ -0,0 +1,74 @@
1
+ import { NgtSignalStore, type NgtMesh } from 'angular-three';
2
+ import { Mesh } from 'three';
3
+ import * as i0 from "@angular/core";
4
+ declare type Glyph = {
5
+ _cachedOutline: string[];
6
+ ha: number;
7
+ o: string;
8
+ };
9
+ declare type FontData = {
10
+ boundingBox: {
11
+ yMax: number;
12
+ yMin: number;
13
+ };
14
+ familyName: string;
15
+ glyphs: {
16
+ [k: string]: Glyph;
17
+ };
18
+ resolution: number;
19
+ underlineThickness: number;
20
+ };
21
+ export type NgtsText3DState = {
22
+ font: FontData | string;
23
+ text: string;
24
+ letterSpacing: number;
25
+ lineHeight: number;
26
+ size: number;
27
+ height: number;
28
+ bevelThickness: number;
29
+ bevelSize: number;
30
+ bevelEnabled: boolean;
31
+ bevelOffset: number;
32
+ bevelSegments: number;
33
+ curveSegments: number;
34
+ smooth?: number;
35
+ };
36
+ declare global {
37
+ interface HTMLElementTagNameMap {
38
+ 'ngts-text-3d': NgtsText3DState & NgtMesh;
39
+ }
40
+ }
41
+ export declare class NgtsText3D extends NgtSignalStore<NgtsText3DState> {
42
+ #private;
43
+ textRef: import("angular-three").NgtInjectedRef<Mesh<import("three").BufferGeometry, import("three").Material | import("three").Material[]>>;
44
+ set font(font: FontData | string);
45
+ set text(text: string);
46
+ set bevelEnabled(bevelEnabled: boolean);
47
+ set bevelOffset(bevelOffset: number);
48
+ set bevelSize(bevelSize: number);
49
+ set bevelThickness(bevelThickness: number);
50
+ set curveSegments(curveSegments: number);
51
+ set bevelSegments(bevelSegments: number);
52
+ set height(height: number);
53
+ set size(size: number);
54
+ set lineHeight(lineHeight: number);
55
+ set letterSpacing(letterSpacing: number);
56
+ set smooth(smooth: number);
57
+ constructor();
58
+ readonly geometryArgs: import("@angular/core").Signal<(string | {
59
+ font: import("three-stdlib").Font;
60
+ size: number;
61
+ height: number;
62
+ bevelThickness: number;
63
+ bevelSize: number;
64
+ bevelSegments: number;
65
+ bevelEnabled: boolean;
66
+ bevelOffset: number;
67
+ curveSegments: number;
68
+ letterSpacing: number;
69
+ lineHeight: number;
70
+ })[] | null>;
71
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgtsText3D, never>;
72
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgtsText3D, "ngts-text-3d", never, { "textRef": { "alias": "textRef"; "required": false; }; "font": { "alias": "font"; "required": true; }; "text": { "alias": "text"; "required": true; }; "bevelEnabled": { "alias": "bevelEnabled"; "required": false; }; "bevelOffset": { "alias": "bevelOffset"; "required": false; }; "bevelSize": { "alias": "bevelSize"; "required": false; }; "bevelThickness": { "alias": "bevelThickness"; "required": false; }; "curveSegments": { "alias": "curveSegments"; "required": false; }; "bevelSegments": { "alias": "bevelSegments"; "required": false; }; "height": { "alias": "height"; "required": false; }; "size": { "alias": "size"; "required": false; }; "lineHeight": { "alias": "lineHeight"; "required": false; }; "letterSpacing": { "alias": "letterSpacing"; "required": false; }; "smooth": { "alias": "smooth"; "required": false; }; }, {}, never, ["*"], true, never>;
73
+ }
74
+ export {};
@@ -3,7 +3,7 @@ import * as THREE from 'three';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class NgtsCameraContent {
5
5
  readonly template: TemplateRef<any>;
6
- ngtsCameraContent: boolean | '';
6
+ ngtsCameraContent: true | '';
7
7
  static ngTemplateContextGuard(_: NgtsCameraContent, ctx: unknown): ctx is {
8
8
  fbo: THREE.WebGLRenderTarget;
9
9
  group?: THREE.Group;
@@ -1,7 +1,14 @@
1
- import { OnInit } from '@angular/core';
2
- import { NgtCamera, NgtRxStore, NgtStore } from 'angular-three';
1
+ import { NgtSignalStore, NgtStore, type NgtCamera } from 'angular-three';
3
2
  import * as i0 from "@angular/core";
4
- export declare abstract class NgtsCamera<TCamera extends NgtCamera> extends NgtRxStore implements OnInit {
3
+ export interface NgtsCameraState {
4
+ makeDefault: boolean;
5
+ manual: boolean;
6
+ frames: number;
7
+ resolution: number;
8
+ envMap?: THREE.Texture;
9
+ }
10
+ export declare abstract class NgtsCamera<TCamera extends NgtCamera> extends NgtSignalStore<NgtsCameraState> {
11
+ #private;
5
12
  set makeDefault(makeDefault: boolean);
6
13
  set manual(manual: boolean);
7
14
  set frames(frames: number);
@@ -9,11 +16,8 @@ export declare abstract class NgtsCamera<TCamera extends NgtCamera> extends NgtR
9
16
  set envMap(envMap: THREE.Texture);
10
17
  cameraRef: import("angular-three").NgtInjectedRef<TCamera>;
11
18
  protected readonly store: NgtStore;
12
- readonly fboRef: import("angular-three").NgtInjectedRef<import("three").WebGLRenderTarget>;
13
- initialize(): void;
14
- ngOnInit(): void;
15
- private setDefaultCamera;
16
- private updateProjectionMatrix;
19
+ readonly fboRef: import("@angular/core").Signal<import("three").WebGLRenderTarget>;
20
+ constructor();
17
21
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtsCamera<any>, never>;
18
22
  static ɵdir: i0.ɵɵDirectiveDeclaration<NgtsCamera<any>, never, never, { "makeDefault": { "alias": "makeDefault"; "required": false; }; "manual": { "alias": "manual"; "required": false; }; "frames": { "alias": "frames"; "required": false; }; "resolution": { "alias": "resolution"; "required": false; }; "envMap": { "alias": "envMap"; "required": false; }; "cameraRef": { "alias": "cameraRef"; "required": false; }; }, {}, never, never, false, never>;
19
23
  }
@@ -0,0 +1,42 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import { NgtSignalStore } from 'angular-three';
3
+ import * as THREE from 'three';
4
+ import { NgtsCameraContent } from '../camera/camera-content';
5
+ import * as i0 from "@angular/core";
6
+ export interface NgtsCubeCameraState {
7
+ /** Number of frames to render, Infinity */
8
+ frames: number;
9
+ /** Resolution of the FBO, 256 */
10
+ resolution: number;
11
+ /** Camera near, 0.1 */
12
+ near: number;
13
+ /** Camera far, 1000 */
14
+ far: number;
15
+ /** Custom environment map that is temporarily set as the scenes background */
16
+ envMap: THREE.Texture;
17
+ /** Custom fog that is temporarily set as the scenes fog */
18
+ fog: THREE.Fog | THREE.FogExp2;
19
+ }
20
+ export declare class NgtsCubeCamera extends NgtSignalStore<NgtsCubeCameraState> {
21
+ #private;
22
+ groupRef: ElementRef<THREE.Group>;
23
+ cameraContent?: NgtsCameraContent;
24
+ cameraRef: import("angular-three").NgtInjectedRef<THREE.CubeCamera>;
25
+ /** Number of frames to render, Infinity */
26
+ set frames(frames: number);
27
+ /** Resolution of the FBO, 256 */
28
+ set resolution(resolution: number);
29
+ /** Camera near, 0.1 */
30
+ set near(near: number);
31
+ /** Camera far, 1000 */
32
+ set far(far: number);
33
+ /** Custom environment map that is temporarily set as the scenes background */
34
+ set envMap(envMap: THREE.Texture);
35
+ /** Custom fog that is temporarily set as the scenes fog */
36
+ set fog(fog: THREE.Fog | THREE.FogExp2);
37
+ readonly fbo: import("@angular/core").Signal<THREE.WebGLCubeRenderTarget>;
38
+ readonly cameraArgs: import("@angular/core").Signal<(number | THREE.WebGLCubeRenderTarget)[]>;
39
+ constructor();
40
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgtsCubeCamera, never>;
41
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgtsCubeCamera, "ngts-cube-camera", never, { "cameraRef": { "alias": "cameraRef"; "required": false; }; "frames": { "alias": "frames"; "required": false; }; "resolution": { "alias": "resolution"; "required": false; }; "near": { "alias": "near"; "required": false; }; "far": { "alias": "far"; "required": false; }; "envMap": { "alias": "envMap"; "required": false; }; "fog": { "alias": "fog"; "required": false; }; }, {}, ["cameraContent"], never, true, never>;
42
+ }
@@ -1,4 +1,5 @@
1
- export * from './lib/camera/camera-content';
2
- export * from './lib/cube-camera/cube-camera';
3
- export * from './lib/orthographic-camera/orthographic-camera';
4
- export * from './lib/perspective-camera/perspective-camera';
1
+ export * from './camera/camera';
2
+ export * from './camera/camera-content';
3
+ export * from './cube-camera/cube-camera';
4
+ export * from './orthographic-camera/orthographic-camera';
5
+ export * from './perspective-camera/perspective-camera';
@@ -1,17 +1,26 @@
1
1
  import { NgtsCamera } from '../camera/camera';
2
2
  import { NgtsCameraContent } from '../camera/camera-content';
3
3
  import * as i0 from "@angular/core";
4
+ declare module '../camera/camera' {
5
+ interface NgtsCameraState {
6
+ left: number;
7
+ top: number;
8
+ right: number;
9
+ bottom: number;
10
+ }
11
+ }
4
12
  export declare class NgtsOrthographicCamera extends NgtsCamera<THREE.OrthographicCamera> {
13
+ #private;
5
14
  cameraContent?: NgtsCameraContent;
6
15
  set left(left: number);
7
16
  set right(right: number);
8
17
  set top(top: number);
9
18
  set bottom(bottom: number);
10
- initialize(): void;
11
- readonly left$: import("rxjs").Observable<any>;
12
- readonly right$: import("rxjs").Observable<any>;
13
- readonly top$: import("rxjs").Observable<any>;
14
- readonly bottom$: import("rxjs").Observable<any>;
19
+ readonly cameraLeft: import("@angular/core").Signal<number>;
20
+ readonly cameraRight: import("@angular/core").Signal<number>;
21
+ readonly cameraTop: import("@angular/core").Signal<number>;
22
+ readonly cameraBottom: import("@angular/core").Signal<number>;
23
+ constructor();
15
24
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtsOrthographicCamera, never>;
16
25
  static ɵcmp: i0.ɵɵComponentDeclaration<NgtsOrthographicCamera, "ngts-orthographic-camera", never, { "left": { "alias": "left"; "required": false; }; "right": { "alias": "right"; "required": false; }; "top": { "alias": "top"; "required": false; }; "bottom": { "alias": "bottom"; "required": false; }; }, {}, ["cameraContent"], never, true, never>;
17
26
  }
@@ -1 +1 @@
1
- export * from './lib/orbit-controls/orbit-controls';
1
+ export * from './orbit-controls/orbit-controls';
@@ -1,8 +1,22 @@
1
- import { EventEmitter, OnInit } from '@angular/core';
2
- import { NgtRxStore } from 'angular-three';
1
+ import { EventEmitter } from '@angular/core';
2
+ import { NgtSignalStore, NgtVector3 } from 'angular-three';
3
3
  import { OrbitControls } from 'three-stdlib';
4
4
  import * as i0 from "@angular/core";
5
- export declare class NgtsOrbitControls extends NgtRxStore implements OnInit {
5
+ export type NgtsOrbitControlsState = {
6
+ camera?: THREE.Camera;
7
+ domElement?: HTMLElement;
8
+ target?: NgtVector3;
9
+ makeDefault: boolean;
10
+ regress: boolean;
11
+ enableDamping: boolean;
12
+ };
13
+ declare global {
14
+ interface HTMLElementTagNameMap {
15
+ 'ngts-orbit-controls': OrbitControls & NgtsOrbitControlsState;
16
+ }
17
+ }
18
+ export declare class NgtsOrbitControls extends NgtSignalStore<NgtsOrbitControlsState> {
19
+ #private;
6
20
  controlsRef: import("angular-three").NgtInjectedRef<OrbitControls>;
7
21
  set camera(camera: THREE.Camera);
8
22
  set domElement(domElement: HTMLElement);
@@ -13,15 +27,9 @@ export declare class NgtsOrbitControls extends NgtRxStore implements OnInit {
13
27
  change: EventEmitter<import("three").Event>;
14
28
  start: EventEmitter<import("three").Event>;
15
29
  end: EventEmitter<import("three").Event>;
16
- private readonly store;
17
- readonly enableDamping$: import("rxjs").Observable<any>;
30
+ readonly args: import("@angular/core").Signal<OrbitControls[]>;
31
+ readonly damping: import("@angular/core").Signal<boolean>;
18
32
  constructor();
19
- initialize(): void;
20
- ngOnInit(): void;
21
- private setControls;
22
- private connectElement;
23
- private makeControlsDefault;
24
- private setEvents;
25
33
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtsOrbitControls, never>;
26
34
  static ɵcmp: i0.ɵɵComponentDeclaration<NgtsOrbitControls, "ngts-orbit-controls", never, { "controlsRef": { "alias": "controlsRef"; "required": false; }; "camera": { "alias": "camera"; "required": false; }; "domElement": { "alias": "domElement"; "required": false; }; "makeDefault": { "alias": "makeDefault"; "required": false; }; "regress": { "alias": "regress"; "required": false; }; "target": { "alias": "target"; "required": false; }; "enableDamping": { "alias": "enableDamping"; "required": false; }; }, { "change": "change"; "start": "start"; "end": "end"; }, never, never, true, never>;
27
35
  }
@@ -2,4 +2,4 @@
2
2
  * Generated bundle index. Do not edit.
3
3
  */
4
4
  export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1zb2JhLWFic3RyYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS1zb2JhL2Fic3RyYWN0aW9ucy9zcmMvYW5ndWxhci10aHJlZS1zb2JhLWFic3RyYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1zb2JhLWFic3RyYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9hYnN0cmFjdGlvbnMvc3JjL2FuZ3VsYXItdGhyZWUtc29iYS1hYnN0cmFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,71 @@
1
+ import { CUSTOM_ELEMENTS_SCHEMA, Component, Input } from '@angular/core';
2
+ import { NgtSignalStore, extend, injectBeforeRender, injectNgtRef } from 'angular-three';
3
+ import { Group } from 'three';
4
+ import * as i0 from "@angular/core";
5
+ extend({ Group });
6
+ class NgtsBillboard extends NgtSignalStore {
7
+ set follow(follow) {
8
+ this.set({ follow });
9
+ }
10
+ set lockX(lockX) {
11
+ this.set({ lockX });
12
+ }
13
+ set lockY(lockY) {
14
+ this.set({ lockY });
15
+ }
16
+ set lockZ(lockZ) {
17
+ this.set({ lockZ });
18
+ }
19
+ constructor() {
20
+ super({ follow: true, lockX: false, lockY: false, lockZ: false });
21
+ this.billboardRef = injectNgtRef();
22
+ injectBeforeRender(({ camera }) => {
23
+ const ref = this.billboardRef.untracked;
24
+ const { follow, lockX, lockY, lockZ } = this.get();
25
+ if (!ref || !follow)
26
+ return;
27
+ // save previous rotation in case we're locking an axis
28
+ const prevRotation = ref.rotation.clone();
29
+ // always face the camera
30
+ camera.getWorldQuaternion(ref.quaternion);
31
+ // re-adjust any axis that is locked
32
+ if (lockX)
33
+ ref.rotation.x = prevRotation.x;
34
+ if (lockY)
35
+ ref.rotation.y = prevRotation.y;
36
+ if (lockZ)
37
+ ref.rotation.z = prevRotation.z;
38
+ });
39
+ }
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsBillboard, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
41
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsBillboard, isStandalone: true, selector: "ngts-billboard", inputs: { billboardRef: "billboardRef", follow: "follow", lockX: "lockX", lockY: "lockY", lockZ: "lockZ" }, usesInheritance: true, ngImport: i0, template: `
42
+ <ngt-group ngtCompound [ref]="billboardRef">
43
+ <ng-content />
44
+ </ngt-group>
45
+ `, isInline: true }); }
46
+ }
47
+ export { NgtsBillboard };
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsBillboard, decorators: [{
49
+ type: Component,
50
+ args: [{
51
+ selector: 'ngts-billboard',
52
+ standalone: true,
53
+ template: `
54
+ <ngt-group ngtCompound [ref]="billboardRef">
55
+ <ng-content />
56
+ </ngt-group>
57
+ `,
58
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
59
+ }]
60
+ }], ctorParameters: function () { return []; }, propDecorators: { billboardRef: [{
61
+ type: Input
62
+ }], follow: [{
63
+ type: Input
64
+ }], lockX: [{
65
+ type: Input
66
+ }], lockY: [{
67
+ type: Input
68
+ }], lockZ: [{
69
+ type: Input
70
+ }] } });
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlsbGJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL2Fic3RyYWN0aW9ucy9zcmMvYmlsbGJvYXJkL2JpbGxib2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxPQUFPLENBQUM7O0FBRTlCLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFlbEIsTUFVYSxhQUFjLFNBQVEsY0FBa0M7SUFHakUsSUFBYSxNQUFNLENBQUMsTUFBZTtRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBYSxLQUFLLENBQUMsS0FBYztRQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBYSxLQUFLLENBQUMsS0FBYztRQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBYSxLQUFLLENBQUMsS0FBYztRQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7UUFDSSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQWhCN0QsaUJBQVksR0FBRyxZQUFZLEVBQVMsQ0FBQztRQWlCMUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7WUFDOUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7WUFDeEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNuRCxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPO1lBQzVCLHVEQUF1RDtZQUN2RCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRTFDLHlCQUF5QjtZQUN6QixNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRTFDLG9DQUFvQztZQUNwQyxJQUFJLEtBQUs7Z0JBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLEtBQUs7Z0JBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLEtBQUs7Z0JBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBakNRLGFBQWE7a0dBQWIsYUFBYSw2TUFQWjs7OztLQUlUOztTQUdRLGFBQWE7MkZBQWIsYUFBYTtrQkFWekIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0tBSVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDOzBFQUVZLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRU8sTUFBTTtzQkFBbEIsS0FBSztnQkFHTyxLQUFLO3NCQUFqQixLQUFLO2dCQUdPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBR08sS0FBSztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndFNpZ25hbFN0b3JlLCBleHRlbmQsIGluamVjdEJlZm9yZVJlbmRlciwgaW5qZWN0Tmd0UmVmLCB0eXBlIE5ndEdyb3VwIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBHcm91cCB9IGZyb20gJ3RocmVlJztcblxuZXh0ZW5kKHsgR3JvdXAgfSk7XG5cbmV4cG9ydCB0eXBlIE5ndHNCaWxsYm9hcmRTdGF0ZSA9IHtcbiAgICBmb2xsb3c/OiBib29sZWFuO1xuICAgIGxvY2tYPzogYm9vbGVhbjtcbiAgICBsb2NrWT86IGJvb2xlYW47XG4gICAgbG9ja1o/OiBib29sZWFuO1xufTtcblxuZGVjbGFyZSBnbG9iYWwge1xuICAgIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgICAgICAnbmd0cy1iaWxsYm9hcmQnOiBOZ3RzQmlsbGJvYXJkU3RhdGUgJiBOZ3RHcm91cDtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0cy1iaWxsYm9hcmQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5ndC1ncm91cCBuZ3RDb21wb3VuZCBbcmVmXT1cImJpbGxib2FyZFJlZlwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICAgICAgPC9uZ3QtZ3JvdXA+XG4gICAgYCxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNCaWxsYm9hcmQgZXh0ZW5kcyBOZ3RTaWduYWxTdG9yZTxOZ3RzQmlsbGJvYXJkU3RhdGU+IHtcbiAgICBASW5wdXQoKSBiaWxsYm9hcmRSZWYgPSBpbmplY3ROZ3RSZWY8R3JvdXA+KCk7XG5cbiAgICBASW5wdXQoKSBzZXQgZm9sbG93KGZvbGxvdzogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGZvbGxvdyB9KTtcbiAgICB9XG4gICAgQElucHV0KCkgc2V0IGxvY2tYKGxvY2tYOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbG9ja1ggfSk7XG4gICAgfVxuICAgIEBJbnB1dCgpIHNldCBsb2NrWShsb2NrWTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGxvY2tZIH0pO1xuICAgIH1cbiAgICBASW5wdXQoKSBzZXQgbG9ja1oobG9ja1o6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBsb2NrWiB9KTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoeyBmb2xsb3c6IHRydWUsIGxvY2tYOiBmYWxzZSwgbG9ja1k6IGZhbHNlLCBsb2NrWjogZmFsc2UgfSk7XG4gICAgICAgIGluamVjdEJlZm9yZVJlbmRlcigoeyBjYW1lcmEgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVmID0gdGhpcy5iaWxsYm9hcmRSZWYudW50cmFja2VkO1xuICAgICAgICAgICAgY29uc3QgeyBmb2xsb3csIGxvY2tYLCBsb2NrWSwgbG9ja1ogfSA9IHRoaXMuZ2V0KCk7XG4gICAgICAgICAgICBpZiAoIXJlZiB8fCAhZm9sbG93KSByZXR1cm47XG4gICAgICAgICAgICAvLyBzYXZlIHByZXZpb3VzIHJvdGF0aW9uIGluIGNhc2Ugd2UncmUgbG9ja2luZyBhbiBheGlzXG4gICAgICAgICAgICBjb25zdCBwcmV2Um90YXRpb24gPSByZWYucm90YXRpb24uY2xvbmUoKTtcblxuICAgICAgICAgICAgLy8gYWx3YXlzIGZhY2UgdGhlIGNhbWVyYVxuICAgICAgICAgICAgY2FtZXJhLmdldFdvcmxkUXVhdGVybmlvbihyZWYucXVhdGVybmlvbik7XG5cbiAgICAgICAgICAgIC8vIHJlLWFkanVzdCBhbnkgYXhpcyB0aGF0IGlzIGxvY2tlZFxuICAgICAgICAgICAgaWYgKGxvY2tYKSByZWYucm90YXRpb24ueCA9IHByZXZSb3RhdGlvbi54O1xuICAgICAgICAgICAgaWYgKGxvY2tZKSByZWYucm90YXRpb24ueSA9IHByZXZSb3RhdGlvbi55O1xuICAgICAgICAgICAgaWYgKGxvY2taKSByZWYucm90YXRpb24ueiA9IHByZXZSb3RhdGlvbi56O1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,131 @@
1
+ import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
2
+ import { injectNgtRef } from 'angular-three';
3
+ import * as THREE from 'three';
4
+ import { CatmullRomCurve3 } from 'three';
5
+ import { NgtsLine } from '../line/line';
6
+ import { NgtsLineInputs } from '../line/line-input';
7
+ import * as i0 from "@angular/core";
8
+ class NgtsCatmullRomLine extends NgtsLineInputs {
9
+ set points(points) {
10
+ this.set({ points });
11
+ }
12
+ set closed(closed) {
13
+ this.set({ closed });
14
+ }
15
+ set curveType(curveType) {
16
+ this.set({ curveType });
17
+ }
18
+ set tension(tension) {
19
+ this.set({ tension });
20
+ }
21
+ set segments(segments) {
22
+ this.set({ segments });
23
+ }
24
+ #points;
25
+ #closed;
26
+ #curveType;
27
+ #tension;
28
+ #vertexColors;
29
+ #curve;
30
+ #segments;
31
+ constructor() {
32
+ super();
33
+ this.lineRef = injectNgtRef();
34
+ this.#points = this.select('points');
35
+ this.#closed = this.select('closed');
36
+ this.#curveType = this.select('curveType');
37
+ this.#tension = this.select('tension');
38
+ this.#vertexColors = this.select('vertexColors');
39
+ this.#curve = computed(() => {
40
+ const mappedPoints = this.#points().map((p) => p instanceof THREE.Vector3 ? p : new THREE.Vector3(...p));
41
+ return new CatmullRomCurve3(mappedPoints, this.#closed(), this.#curveType(), this.#tension());
42
+ });
43
+ this.#segments = this.select('segments');
44
+ this.segmentedPoints = computed(() => {
45
+ const curve = this.#curve();
46
+ return curve.getPoints(this.#segments());
47
+ });
48
+ this.interpolatedVertexColors = computed(() => {
49
+ const vertexColors = this.#vertexColors();
50
+ const segments = this.#segments();
51
+ if (!vertexColors || vertexColors.length < 2)
52
+ return undefined;
53
+ if (vertexColors.length === segments + 1)
54
+ return vertexColors;
55
+ const mappedColors = vertexColors.map((color) => color instanceof THREE.Color ? color : new THREE.Color(...color));
56
+ if (this.get('closed'))
57
+ mappedColors.push(mappedColors[0].clone());
58
+ const iColors = [mappedColors[0]];
59
+ const divisions = segments / (mappedColors.length - 1);
60
+ for (let i = 0; i < segments; i++) {
61
+ const alpha = (i % divisions) / divisions;
62
+ const colorIndex = Math.floor(i / divisions);
63
+ iColors.push(mappedColors[colorIndex].clone().lerp(mappedColors[colorIndex + 1], alpha));
64
+ }
65
+ iColors.push(mappedColors[mappedColors.length - 1]);
66
+ return iColors;
67
+ });
68
+ this.set({ closed: false, curveType: 'centripetal', tension: 0.5, segments: 64 });
69
+ }
70
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsCatmullRomLine, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
71
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsCatmullRomLine, isStandalone: true, selector: "ngts-catmull-rom-line", inputs: { lineRef: "lineRef", points: "points", closed: "closed", curveType: "curveType", tension: "tension", segments: "segments" }, usesInheritance: true, ngImport: i0, template: `
72
+ <ngts-line
73
+ [lineRef]="lineRef"
74
+ [points]="segmentedPoints()"
75
+ [vertexColors]="interpolatedVertexColors()"
76
+ [color]="lineParameters().color"
77
+ [resolution]="lineParameters().resolution"
78
+ [lineWidth]="lineParameters().linewidth"
79
+ [alphaToCoverage]="lineParameters().alphaToCoverage"
80
+ [dashed]="lineParameters().dashed"
81
+ [dashScale]="lineParameters().dashScale"
82
+ [dashSize]="lineParameters().dashSize"
83
+ [dashOffset]="lineParameters().dashOffset"
84
+ [gapSize]="lineParameters().gapSize"
85
+ [wireframe]="lineParameters().wireframe"
86
+ [worldUnits]="lineParameters().worldUnits"
87
+ />
88
+ `, isInline: true, dependencies: [{ kind: "component", type: NgtsLine, selector: "ngts-line", inputs: ["lineRef", "points", "segments"] }] }); }
89
+ }
90
+ export { NgtsCatmullRomLine };
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsCatmullRomLine, decorators: [{
92
+ type: Component,
93
+ args: [{
94
+ selector: 'ngts-catmull-rom-line',
95
+ standalone: true,
96
+ template: `
97
+ <ngts-line
98
+ [lineRef]="lineRef"
99
+ [points]="segmentedPoints()"
100
+ [vertexColors]="interpolatedVertexColors()"
101
+ [color]="lineParameters().color"
102
+ [resolution]="lineParameters().resolution"
103
+ [lineWidth]="lineParameters().linewidth"
104
+ [alphaToCoverage]="lineParameters().alphaToCoverage"
105
+ [dashed]="lineParameters().dashed"
106
+ [dashScale]="lineParameters().dashScale"
107
+ [dashSize]="lineParameters().dashSize"
108
+ [dashOffset]="lineParameters().dashOffset"
109
+ [gapSize]="lineParameters().gapSize"
110
+ [wireframe]="lineParameters().wireframe"
111
+ [worldUnits]="lineParameters().worldUnits"
112
+ />
113
+ `,
114
+ imports: [NgtsLine],
115
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
116
+ }]
117
+ }], ctorParameters: function () { return []; }, propDecorators: { lineRef: [{
118
+ type: Input
119
+ }], points: [{
120
+ type: Input,
121
+ args: [{ required: true }]
122
+ }], closed: [{
123
+ type: Input
124
+ }], curveType: [{
125
+ type: Input
126
+ }], tension: [{
127
+ type: Input
128
+ }], segments: [{
129
+ type: Input
130
+ }] } });
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0bXVsbC1yb20tbGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9hYnN0cmFjdGlvbnMvc3JjL2NhdG11bGwtcm9tLWxpbmUvY2F0bXVsbC1yb20tbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFFekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBVXBELE1Bd0JhLGtCQUFtQixTQUFRLGNBQWM7SUFHbEQsSUFBK0IsTUFBTSxDQUNqQyxNQUFtRztRQUVuRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBYSxNQUFNLENBQUMsTUFBZTtRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBYSxTQUFTLENBQUMsU0FBbUQ7UUFDdEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQWEsT0FBTyxDQUFDLE9BQWU7UUFDaEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQWEsUUFBUSxDQUFDLFFBQWdCO1FBQ2xDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVB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QUFLO2dCQUlPLE9BQU87c0JBQW5CLEtBQUs7Z0JBSU8sUUFBUTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3ROZ3RSZWYgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IENhdG11bGxSb21DdXJ2ZTMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBMaW5lMiB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5pbXBvcnQgeyBOZ3RzTGluZSB9IGZyb20gJy4uL2xpbmUvbGluZSc7XG5pbXBvcnQgeyBOZ3RzTGluZUlucHV0cyB9IGZyb20gJy4uL2xpbmUvbGluZS1pbnB1dCc7XG5cbmRlY2xhcmUgbW9kdWxlICcuLi9saW5lL2xpbmUtaW5wdXQnIHtcbiAgICBpbnRlcmZhY2UgTmd0c0xpbmVTdGF0ZSB7XG4gICAgICAgIGNsb3NlZDogYm9vbGVhbjtcbiAgICAgICAgY3VydmVUeXBlOiAnY2VudHJpcGV0YWwnIHwgJ2Nob3JkYWwnIHwgJ2NhdG11bGxyb20nO1xuICAgICAgICB0ZW5zaW9uOiBudW1iZXI7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtY2F0bXVsbC1yb20tbGluZScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0cy1saW5lXG4gICAgICAgICAgICBbbGluZVJlZl09XCJsaW5lUmVmXCJcbiAgICAgICAgICAgIFtwb2ludHNdPVwic2VnbWVudGVkUG9pbnRzKClcIlxuICAgICAgICAgICAgW3ZlcnRleENvbG9yc109XCJpbnRlcnBvbGF0ZWRWZXJ0ZXhDb2xvcnMoKVwiXG4gICAgICAgICAgICBbY29sb3JdPVwibGluZVBhcmFtZXRlcnMoKS5jb2xvclwiXG4gICAgICAgICAgICBbcmVzb2x1dGlvbl09XCJsaW5lUGFyYW1ldGVycygpLnJlc29sdXRpb25cIlxuICAgICAgICAgICAgW2xpbmVXaWR0aF09XCJsaW5lUGFyYW1ldGVycygpLmxpbmV3aWR0aFwiXG4gICAgICAgICAgICBbYWxwaGFUb0NvdmVyYWdlXT1cImxpbmVQYXJhbWV0ZXJzKCkuYWxwaGFUb0NvdmVyYWdlXCJcbiAgICAgICAgICAgIFtkYXNoZWRdPVwibGluZVBhcmFtZXRlcnMoKS5kYXNoZWRcIlxuICAgICAgICAgICAgW2Rhc2hTY2FsZV09XCJsaW5lUGFyYW1ldGVycygpLmRhc2hTY2FsZVwiXG4gICAgICAgICAgICBbZGFzaFNpemVdPVwibGluZVBhcmFtZXRlcnMoKS5kYXNoU2l6ZVwiXG4gICAgICAgICAgICBbZGFzaE9mZnNldF09XCJsaW5lUGFyYW1ldGVycygpLmRhc2hPZmZzZXRcIlxuICAgICAgICAgICAgW2dhcFNpemVdPVwibGluZVBhcmFtZXRlcnMoKS5nYXBTaXplXCJcbiAgICAgICAgICAgIFt3aXJlZnJhbWVdPVwibGluZVBhcmFtZXRlcnMoKS53aXJlZnJhbWVcIlxuICAgICAgICAgICAgW3dvcmxkVW5pdHNdPVwibGluZVBhcmFtZXRlcnMoKS53b3JsZFVuaXRzXCJcbiAgICAgICAgLz5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ3RzTGluZV0sXG4gICAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzQ2F0bXVsbFJvbUxpbmUgZXh0ZW5kcyBOZ3RzTGluZUlucHV0cyB7XG4gICAgQElucHV0KCkgbGluZVJlZiA9IGluamVjdE5ndFJlZjxMaW5lMj4oKTtcblxuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHNldCBwb2ludHMoXG4gICAgICAgIHBvaW50czogQXJyYXk8VEhSRUUuVmVjdG9yMyB8IFRIUkVFLlZlY3RvcjIgfCBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gfCBbbnVtYmVyLCBudW1iZXJdIHwgbnVtYmVyPlxuICAgICkge1xuICAgICAgICB0aGlzLnNldCh7IHBvaW50cyB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgY2xvc2VkKGNsb3NlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGNsb3NlZCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgY3VydmVUeXBlKGN1cnZlVHlwZTogJ2NlbnRyaXBldGFsJyB8ICdjaG9yZGFsJyB8ICdjYXRtdWxscm9tJykge1xuICAgICAgICB0aGlzLnNldCh7IGN1cnZlVHlwZSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgdGVuc2lvbih0ZW5zaW9uOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyB0ZW5zaW9uIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBzZWdtZW50cyhzZWdtZW50czogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc2VnbWVudHMgfSk7XG4gICAgfVxuXG4gICAgcmVhZG9ubHkgI3BvaW50cyA9IHRoaXMuc2VsZWN0KCdwb2ludHMnKTtcbiAgICByZWFkb25seSAjY2xvc2VkID0gdGhpcy5zZWxlY3QoJ2Nsb3NlZCcpO1xuICAgIHJlYWRvbmx5ICNjdXJ2ZVR5cGUgPSB0aGlzLnNlbGVjdCgnY3VydmVUeXBlJyk7XG4gICAgcmVhZG9ubHkgI3RlbnNpb24gPSB0aGlzLnNlbGVjdCgndGVuc2lvbicpO1xuICAgIHJlYWRvbmx5ICN2ZXJ0ZXhDb2xvcnMgPSB0aGlzLnNlbGVjdCgndmVydGV4Q29sb3JzJyk7XG5cbiAgICByZWFkb25seSAjY3VydmUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hcHBlZFBvaW50cyA9IHRoaXMuI3BvaW50cygpLm1hcCgocCkgPT5cbiAgICAgICAgICAgIHAgaW5zdGFuY2VvZiBUSFJFRS5WZWN0b3IzID8gcCA6IG5ldyBUSFJFRS5WZWN0b3IzKC4uLihwIGFzIFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSkpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBuZXcgQ2F0bXVsbFJvbUN1cnZlMyhtYXBwZWRQb2ludHMsIHRoaXMuI2Nsb3NlZCgpLCB0aGlzLiNjdXJ2ZVR5cGUoKSwgdGhpcy4jdGVuc2lvbigpKTtcbiAgICB9KTtcblxuICAgIHJlYWRvbmx5ICNzZWdtZW50cyA9IHRoaXMuc2VsZWN0KCdzZWdtZW50cycpO1xuICAgIHJlYWRvbmx5IHNlZ21lbnRlZFBvaW50cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgY3VydmUgPSB0aGlzLiNjdXJ2ZSgpO1xuICAgICAgICByZXR1cm4gY3VydmUuZ2V0UG9pbnRzKHRoaXMuI3NlZ21lbnRzKCkgYXMgbnVtYmVyKTtcbiAgICB9KTtcblxuICAgIHJlYWRvbmx5IGludGVycG9sYXRlZFZlcnRleENvbG9ycyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgdmVydGV4Q29sb3JzID0gdGhpcy4jdmVydGV4Q29sb3JzKCk7XG4gICAgICAgIGNvbnN0IHNlZ21lbnRzID0gdGhpcy4jc2VnbWVudHMoKSBhcyBudW1iZXI7XG5cbiAgICAgICAgaWYgKCF2ZXJ0ZXhDb2xvcnMgfHwgdmVydGV4Q29sb3JzLmxlbmd0aCA8IDIpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh2ZXJ0ZXhDb2xvcnMubGVuZ3RoID09PSBzZWdtZW50cyArIDEpIHJldHVybiB2ZXJ0ZXhDb2xvcnM7XG5cbiAgICAgICAgY29uc3QgbWFwcGVkQ29sb3JzID0gdmVydGV4Q29sb3JzLm1hcCgoY29sb3I6IFRIUkVFLkNvbG9yIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdKSA9PlxuICAgICAgICAgICAgY29sb3IgaW5zdGFuY2VvZiBUSFJFRS5Db2xvciA/IGNvbG9yIDogbmV3IFRIUkVFLkNvbG9yKC4uLmNvbG9yKVxuICAgICAgICApO1xuICAgICAgICBpZiAodGhpcy5nZXQoJ2Nsb3NlZCcpKSBtYXBwZWRDb2xvcnMucHVzaChtYXBwZWRDb2xvcnNbMF0uY2xvbmUoKSk7XG5cbiAgICAgICAgY29uc3QgaUNvbG9yczogVEhSRUUuQ29sb3JbXSA9IFttYXBwZWRDb2xvcnNbMF1dO1xuICAgICAgICBjb25zdCBkaXZpc2lvbnMgPSBzZWdtZW50cyAvIChtYXBwZWRDb2xvcnMubGVuZ3RoIC0gMSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VnbWVudHM7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgYWxwaGEgPSAoaSAlIGRpdmlzaW9ucykgLyBkaXZpc2lvbnM7XG4gICAgICAgICAgICBjb25zdCBjb2xvckluZGV4ID0gTWF0aC5mbG9vcihpIC8gZGl2aXNpb25zKTtcbiAgICAgICAgICAgIGlDb2xvcnMucHVzaChtYXBwZWRDb2xvcnNbY29sb3JJbmRleF0uY2xvbmUoKS5sZXJwKG1hcHBlZENvbG9yc1tjb2xvckluZGV4ICsgMV0sIGFscGhhKSk7XG4gICAgICAgIH1cbiAgICAgICAgaUNvbG9ycy5wdXNoKG1hcHBlZENvbG9yc1ttYXBwZWRDb2xvcnMubGVuZ3RoIC0gMV0pO1xuICAgICAgICByZXR1cm4gaUNvbG9ycztcbiAgICB9KTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnNldCh7IGNsb3NlZDogZmFsc2UsIGN1cnZlVHlwZTogJ2NlbnRyaXBldGFsJywgdGVuc2lvbjogMC41LCBzZWdtZW50czogNjQgfSk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,113 @@
1
+ import { Component, Input, computed } from '@angular/core';
2
+ import { injectNgtRef } from 'angular-three';
3
+ import * as THREE from 'three';
4
+ import { NgtsLine } from '../line/line';
5
+ import { NgtsLineInputs } from '../line/line-input';
6
+ import * as i0 from "@angular/core";
7
+ class NgtsCubicBezierLine extends NgtsLineInputs {
8
+ set start(start) {
9
+ this.set({ start });
10
+ }
11
+ set end(end) {
12
+ this.set({ end });
13
+ }
14
+ set midA(midA) {
15
+ this.set({ midA });
16
+ }
17
+ set midB(midB) {
18
+ this.set({ midB });
19
+ }
20
+ set segments(segments) {
21
+ this.set({ segments });
22
+ }
23
+ #start;
24
+ #end;
25
+ #midA;
26
+ #midB;
27
+ #segments;
28
+ constructor() {
29
+ super();
30
+ this.lineRef = injectNgtRef();
31
+ this.#start = this.select('start');
32
+ this.#end = this.select('end');
33
+ this.#midA = this.select('midA');
34
+ this.#midB = this.select('midB');
35
+ this.#segments = this.select('segments');
36
+ this.points = computed(() => {
37
+ const start = this.#start();
38
+ const end = this.#end();
39
+ const midA = this.#midA();
40
+ const midB = this.#midB();
41
+ const segments = this.#segments();
42
+ const startV = start instanceof THREE.Vector3 ? start : new THREE.Vector3(...start);
43
+ const endV = end instanceof THREE.Vector3 ? end : new THREE.Vector3(...end);
44
+ const midAV = midA instanceof THREE.Vector3 ? midA : new THREE.Vector3(...midA);
45
+ const midBV = midB instanceof THREE.Vector3 ? midB : new THREE.Vector3(...midB);
46
+ return new THREE.CubicBezierCurve3(startV, midAV, midBV, endV).getPoints(segments);
47
+ });
48
+ this.set({ segments: 10 });
49
+ }
50
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsCubicBezierLine, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
51
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsCubicBezierLine, isStandalone: true, selector: "ngts-cubic-bezier-line", inputs: { lineRef: "lineRef", start: "start", end: "end", midA: "midA", midB: "midB", segments: "segments" }, usesInheritance: true, ngImport: i0, template: `
52
+ <ngts-line
53
+ [lineRef]="lineRef"
54
+ [points]="points()"
55
+ [color]="lineParameters().color"
56
+ [vertexColors]="lineParameters().vertexColors"
57
+ [resolution]="lineParameters().resolution"
58
+ [lineWidth]="lineParameters().linewidth"
59
+ [alphaToCoverage]="lineParameters().alphaToCoverage"
60
+ [dashed]="lineParameters().dashed"
61
+ [dashScale]="lineParameters().dashScale"
62
+ [dashSize]="lineParameters().dashSize"
63
+ [dashOffset]="lineParameters().dashOffset"
64
+ [gapSize]="lineParameters().gapSize"
65
+ [wireframe]="lineParameters().wireframe"
66
+ [worldUnits]="lineParameters().worldUnits"
67
+ />
68
+ `, isInline: true, dependencies: [{ kind: "component", type: NgtsLine, selector: "ngts-line", inputs: ["lineRef", "points", "segments"] }] }); }
69
+ }
70
+ export { NgtsCubicBezierLine };
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsCubicBezierLine, decorators: [{
72
+ type: Component,
73
+ args: [{
74
+ selector: 'ngts-cubic-bezier-line',
75
+ standalone: true,
76
+ template: `
77
+ <ngts-line
78
+ [lineRef]="lineRef"
79
+ [points]="points()"
80
+ [color]="lineParameters().color"
81
+ [vertexColors]="lineParameters().vertexColors"
82
+ [resolution]="lineParameters().resolution"
83
+ [lineWidth]="lineParameters().linewidth"
84
+ [alphaToCoverage]="lineParameters().alphaToCoverage"
85
+ [dashed]="lineParameters().dashed"
86
+ [dashScale]="lineParameters().dashScale"
87
+ [dashSize]="lineParameters().dashSize"
88
+ [dashOffset]="lineParameters().dashOffset"
89
+ [gapSize]="lineParameters().gapSize"
90
+ [wireframe]="lineParameters().wireframe"
91
+ [worldUnits]="lineParameters().worldUnits"
92
+ />
93
+ `,
94
+ imports: [NgtsLine],
95
+ }]
96
+ }], ctorParameters: function () { return []; }, propDecorators: { lineRef: [{
97
+ type: Input
98
+ }], start: [{
99
+ type: Input,
100
+ args: [{ required: true }]
101
+ }], end: [{
102
+ type: Input,
103
+ args: [{ required: true }]
104
+ }], midA: [{
105
+ type: Input,
106
+ args: [{ required: true }]
107
+ }], midB: [{
108
+ type: Input,
109
+ args: [{ required: true }]
110
+ }], segments: [{
111
+ type: Input
112
+ }] } });
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ViaWMtYmV6aWVyLWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvYWJzdHJhY3Rpb25zL3NyYy9jdWJpYy1iZXppZXItbGluZS9jdWJpYy1iZXppZXItbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUvQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFXcEQsTUF1QmEsbUJBQW9CLFNBQVEsY0FBYztJQUduRCxJQUErQixLQUFLLENBQUMsS0FBK0M7UUFDaEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQStCLEdBQUcsQ0FBQyxHQUE2QztRQUM1RSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBK0IsSUFBSSxDQUFDLElBQThDO1FBQzlFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUErQixJQUFJLENBQUMsSUFBOEM7UUFDOUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQWEsUUFBUSxDQUFDLFFBQWdCO1FBQ2xDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFUSxNQUFNLENBQXdCO0lBQzlCLElB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UUFBUSxFQUFFLElBQUksRUFBRTtnQkFJWixRQUFRO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdE5ndFJlZiB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHR5cGUgeyBMaW5lMiB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5pbXBvcnQgeyBOZ3RzTGluZSB9IGZyb20gJy4uL2xpbmUvbGluZSc7XG5pbXBvcnQgeyBOZ3RzTGluZUlucHV0cyB9IGZyb20gJy4uL2xpbmUvbGluZS1pbnB1dCc7XG5cbmRlY2xhcmUgbW9kdWxlICcuLi9saW5lL2xpbmUtaW5wdXQnIHtcbiAgICBpbnRlcmZhY2UgTmd0c0xpbmVTdGF0ZSB7XG4gICAgICAgIHN0YXJ0OiBUSFJFRS5WZWN0b3IzIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICAgICAgICBlbmQ6IFRIUkVFLlZlY3RvcjMgfCBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gICAgICAgIG1pZEE6IFRIUkVFLlZlY3RvcjMgfCBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gICAgICAgIG1pZEI6IFRIUkVFLlZlY3RvcjMgfCBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtY3ViaWMtYmV6aWVyLWxpbmUnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5ndHMtbGluZVxuICAgICAgICAgICAgW2xpbmVSZWZdPVwibGluZVJlZlwiXG4gICAgICAgICAgICBbcG9pbnRzXT1cInBvaW50cygpXCJcbiAgICAgICAgICAgIFtjb2xvcl09XCJsaW5lUGFyYW1ldGVycygpLmNvbG9yXCJcbiAgICAgICAgICAgIFt2ZXJ0ZXhDb2xvcnNdPVwibGluZVBhcmFtZXRlcnMoKS52ZXJ0ZXhDb2xvcnNcIlxuICAgICAgICAgICAgW3Jlc29sdXRpb25dPVwibGluZVBhcmFtZXRlcnMoKS5yZXNvbHV0aW9uXCJcbiAgICAgICAgICAgIFtsaW5lV2lkdGhdPVwibGluZVBhcmFtZXRlcnMoKS5saW5ld2lkdGhcIlxuICAgICAgICAgICAgW2FscGhhVG9Db3ZlcmFnZV09XCJsaW5lUGFyYW1ldGVycygpLmFscGhhVG9Db3ZlcmFnZVwiXG4gICAgICAgICAgICBbZGFzaGVkXT1cImxpbmVQYXJhbWV0ZXJzKCkuZGFzaGVkXCJcbiAgICAgICAgICAgIFtkYXNoU2NhbGVdPVwibGluZVBhcmFtZXRlcnMoKS5kYXNoU2NhbGVcIlxuICAgICAgICAgICAgW2Rhc2hTaXplXT1cImxpbmVQYXJhbWV0ZXJzKCkuZGFzaFNpemVcIlxuICAgICAgICAgICAgW2Rhc2hPZmZzZXRdPVwibGluZVBhcmFtZXRlcnMoKS5kYXNoT2Zmc2V0XCJcbiAgICAgICAgICAgIFtnYXBTaXplXT1cImxpbmVQYXJhbWV0ZXJzKCkuZ2FwU2l6ZVwiXG4gICAgICAgICAgICBbd2lyZWZyYW1lXT1cImxpbmVQYXJhbWV0ZXJzKCkud2lyZWZyYW1lXCJcbiAgICAgICAgICAgIFt3b3JsZFVuaXRzXT1cImxpbmVQYXJhbWV0ZXJzKCkud29ybGRVbml0c1wiXG4gICAgICAgIC8+XG4gICAgYCxcbiAgICBpbXBvcnRzOiBbTmd0c0xpbmVdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzQ3ViaWNCZXppZXJMaW5lIGV4dGVuZHMgTmd0c0xpbmVJbnB1dHMge1xuICAgIEBJbnB1dCgpIGxpbmVSZWYgPSBpbmplY3ROZ3RSZWY8TGluZTI+KCk7XG5cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBzZXQgc3RhcnQoc3RhcnQ6IFRIUkVFLlZlY3RvcjMgfCBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBzdGFydCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBzZXQgZW5kKGVuZDogVEhSRUUuVmVjdG9yMyB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSkge1xuICAgICAgICB0aGlzLnNldCh7IGVuZCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBzZXQgbWlkQShtaWRBOiBUSFJFRS5WZWN0b3IzIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbWlkQSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBzZXQgbWlkQihtaWRCOiBUSFJFRS5WZWN0b3IzIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbWlkQiB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgc2VnbWVudHMoc2VnbWVudHM6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHNlZ21lbnRzIH0pO1xuICAgIH1cblxuICAgIHJlYWRvbmx5ICNzdGFydCA9IHRoaXMuc2VsZWN0KCdzdGFydCcpO1xuICAgIHJlYWRvbmx5ICNlbmQgPSB0aGlzLnNlbGVjdCgnZW5kJyk7XG4gICAgcmVhZG9ubHkgI21pZEEgPSB0aGlzLnNlbGVjdCgnbWlkQScpO1xuICAgIHJlYWRvbmx5ICNtaWRCID0gdGhpcy5zZWxlY3QoJ21pZEInKTtcbiAgICByZWFkb25seSAjc2VnbWVudHMgPSB0aGlzLnNlbGVjdCgnc2VnbWVudHMnKTtcblxuICAgIHJlYWRvbmx5IHBvaW50cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLiNzdGFydCgpO1xuICAgICAgICBjb25zdCBlbmQgPSB0aGlzLiNlbmQoKTtcbiAgICAgICAgY29uc3QgbWlkQSA9IHRoaXMuI21pZEEoKTtcbiAgICAgICAgY29uc3QgbWlkQiA9IHRoaXMuI21pZEIoKTtcbiAgICAgICAgY29uc3Qgc2VnbWVudHMgPSB0aGlzLiNzZWdtZW50cygpIGFzIG51bWJlcjtcblxuICAgICAgICBjb25zdCBzdGFydFYgPSBzdGFydCBpbnN0YW5jZW9mIFRIUkVFLlZlY3RvcjMgPyBzdGFydCA6IG5ldyBUSFJFRS5WZWN0b3IzKC4uLnN0YXJ0KTtcbiAgICAgICAgY29uc3QgZW5kViA9IGVuZCBpbnN0YW5jZW9mIFRIUkVFLlZlY3RvcjMgPyBlbmQgOiBuZXcgVEhSRUUuVmVjdG9yMyguLi5lbmQpO1xuICAgICAgICBjb25zdCBtaWRBViA9IG1pZEEgaW5zdGFuY2VvZiBUSFJFRS5WZWN0b3IzID8gbWlkQSA6IG5ldyBUSFJFRS5WZWN0b3IzKC4uLm1pZEEpO1xuICAgICAgICBjb25zdCBtaWRCViA9IG1pZEIgaW5zdGFuY2VvZiBUSFJFRS5WZWN0b3IzID8gbWlkQiA6IG5ldyBUSFJFRS5WZWN0b3IzKC4uLm1pZEIpO1xuICAgICAgICByZXR1cm4gbmV3IFRIUkVFLkN1YmljQmV6aWVyQ3VydmUzKHN0YXJ0ViwgbWlkQVYsIG1pZEJWLCBlbmRWKS5nZXRQb2ludHMoc2VnbWVudHMpO1xuICAgIH0pO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuc2V0KHsgc2VnbWVudHM6IDEwIH0pO1xuICAgIH1cbn1cbiJdfQ==