angular-three-soba 1.13.0 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/abstractions/lib/billboard/billboard.d.ts +1 -1
  2. package/abstractions/lib/catmull-rom-line/catmull-rom-line.d.ts +1 -1
  3. package/abstractions/lib/cubic-bezier-line/cubic-bezier-line.d.ts +1 -1
  4. package/abstractions/lib/edges/edges.d.ts +2 -2
  5. package/abstractions/lib/gizmo-helper/gizmo-helper.d.ts +1 -1
  6. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +1 -1
  7. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +2 -2
  8. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +1 -1
  9. package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +1 -1
  10. package/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +2 -2
  11. package/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +1 -1
  12. package/abstractions/lib/line/line-input.d.ts +1 -1
  13. package/abstractions/lib/line/line.d.ts +1 -1
  14. package/abstractions/lib/quadratic-bezier-line/quadratic-bezier-line.d.ts +1 -1
  15. package/abstractions/lib/text/text.d.ts +1 -1
  16. package/abstractions/lib/text-3d/text-3d.d.ts +1 -1
  17. package/cameras/lib/camera/camera-content.d.ts +1 -1
  18. package/cameras/lib/camera/camera.d.ts +1 -1
  19. package/cameras/lib/cube-camera/cube-camera.d.ts +1 -1
  20. package/cameras/lib/orthographic-camera/orthographic-camera.d.ts +1 -1
  21. package/controls/lib/orbit-controls/orbit-controls.d.ts +1 -1
  22. package/esm2022/abstractions/lib/billboard/billboard.mjs +74 -0
  23. package/esm2022/abstractions/lib/catmull-rom-line/catmull-rom-line.mjs +120 -0
  24. package/esm2022/abstractions/lib/cubic-bezier-line/cubic-bezier-line.mjs +99 -0
  25. package/esm2022/abstractions/lib/edges/edges.mjs +96 -0
  26. package/esm2022/abstractions/lib/gizmo-helper/gizmo-helper.mjs +213 -0
  27. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +92 -0
  28. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +184 -0
  29. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +46 -0
  30. package/{esm2020 → esm2022}/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +8 -7
  31. package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +195 -0
  32. package/{esm2020 → esm2022}/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +8 -7
  33. package/esm2022/abstractions/lib/line/line-input.mjs +76 -0
  34. package/esm2022/abstractions/lib/line/line.mjs +133 -0
  35. package/esm2022/abstractions/lib/quadratic-bezier-line/quadratic-bezier-line.mjs +128 -0
  36. package/esm2022/abstractions/lib/text/text.mjs +115 -0
  37. package/esm2022/abstractions/lib/text-3d/text-3d.mjs +145 -0
  38. package/esm2022/cameras/lib/camera/camera-content.mjs +21 -0
  39. package/esm2022/cameras/lib/camera/camera.mjs +75 -0
  40. package/esm2022/cameras/lib/cube-camera/cube-camera.mjs +131 -0
  41. package/esm2022/cameras/lib/orthographic-camera/orthographic-camera.mjs +93 -0
  42. package/{esm2020 → esm2022}/cameras/lib/perspective-camera/perspective-camera.mjs +8 -7
  43. package/esm2022/controls/lib/orbit-controls/orbit-controls.mjs +147 -0
  44. package/{esm2020 → esm2022}/loaders/lib/cube-texture-loader/cube-texture-loader.mjs +3 -3
  45. package/esm2022/loaders/lib/loader/loader.mjs +134 -0
  46. package/esm2022/materials/lib/mesh-distort-material/mesh-distort-material.mjs +75 -0
  47. package/esm2022/materials/lib/mesh-reflector-material/mesh-reflector-material.mjs +328 -0
  48. package/esm2022/materials/lib/mesh-refraction-material/mesh-refraction-material.mjs +158 -0
  49. package/esm2022/materials/lib/mesh-transmission-material/mesh-transmission-material.mjs +238 -0
  50. package/esm2022/materials/lib/mesh-wobble-material/mesh-wobble-material.mjs +68 -0
  51. package/esm2022/misc/lib/bake-shadows/bake-shadows.mjs +26 -0
  52. package/esm2022/performance/lib/adaptive/adaptive-dpr.mjs +47 -0
  53. package/esm2022/performance/lib/adaptive/adaptive-events.mjs +37 -0
  54. package/esm2022/performance/lib/detailed/detailed.mjs +54 -0
  55. package/esm2022/performance/lib/stats/stats.mjs +80 -0
  56. package/esm2022/shaders/lib/blur-pass/blur-pass.mjs +61 -0
  57. package/esm2022/staging/lib/accumulative-shadows/accumulative-shadows.mjs +249 -0
  58. package/esm2022/staging/lib/accumulative-shadows/randomized-lights.mjs +201 -0
  59. package/{esm2020 → esm2022}/staging/lib/bounds/bounds.mjs +8 -7
  60. package/esm2022/staging/lib/camera-shake/camera-shake.mjs +122 -0
  61. package/esm2022/staging/lib/caustics/caustics.mjs +364 -0
  62. package/esm2022/staging/lib/center/center.mjs +143 -0
  63. package/esm2022/staging/lib/cloud/cloud.mjs +160 -0
  64. package/esm2022/staging/lib/contact-shadows/contact-shadows.mjs +228 -0
  65. package/esm2022/staging/lib/environment/environment-cube.mjs +41 -0
  66. package/esm2022/staging/lib/environment/environment-ground.mjs +67 -0
  67. package/esm2022/staging/lib/environment/environment-inputs.mjs +87 -0
  68. package/esm2022/staging/lib/environment/environment-map.mjs +39 -0
  69. package/esm2022/staging/lib/environment/environment-portal.mjs +111 -0
  70. package/{esm2020 → esm2022}/staging/lib/environment/environment.mjs +13 -11
  71. package/esm2022/staging/lib/float/float.mjs +77 -0
  72. package/esm2022/staging/lib/sky/sky.mjs +109 -0
  73. package/esm2022/staging/lib/sparkles/sparkles.mjs +210 -0
  74. package/esm2022/staging/lib/spot-light/shadow-mesh-input.mjs +51 -0
  75. package/esm2022/staging/lib/spot-light/spot-light-input.mjs +62 -0
  76. package/esm2022/staging/lib/spot-light/spot-light-shadow-no-shader.mjs +74 -0
  77. package/esm2022/staging/lib/spot-light/spot-light-shadow-shader.mjs +126 -0
  78. package/{esm2020 → esm2022}/staging/lib/spot-light/spot-light-shadow.mjs +8 -7
  79. package/esm2022/staging/lib/spot-light/spot-light.mjs +117 -0
  80. package/esm2022/staging/lib/spot-light/volumetric-mesh.mjs +86 -0
  81. package/{esm2020 → esm2022}/staging/lib/stage/stage.mjs +13 -11
  82. package/esm2022/staging/lib/stars/stars.mjs +140 -0
  83. package/{fesm2020 → fesm2022}/angular-three-soba-abstractions.mjs +89 -89
  84. package/{fesm2015 → fesm2022}/angular-three-soba-abstractions.mjs.map +1 -1
  85. package/{fesm2015 → fesm2022}/angular-three-soba-cameras.mjs +21 -21
  86. package/{fesm2015 → fesm2022}/angular-three-soba-cameras.mjs.map +1 -1
  87. package/{fesm2020 → fesm2022}/angular-three-soba-controls.mjs +5 -5
  88. package/fesm2022/angular-three-soba-controls.mjs.map +1 -0
  89. package/{fesm2020 → fesm2022}/angular-three-soba-loaders.mjs +7 -7
  90. package/{fesm2020 → fesm2022}/angular-three-soba-loaders.mjs.map +1 -1
  91. package/{fesm2020 → fesm2022}/angular-three-soba-materials.mjs +25 -25
  92. package/{fesm2020 → fesm2022}/angular-three-soba-materials.mjs.map +1 -1
  93. package/{fesm2020 → fesm2022}/angular-three-soba-misc.mjs +3 -3
  94. package/{fesm2020 → fesm2022}/angular-three-soba-misc.mjs.map +1 -1
  95. package/{fesm2020 → fesm2022}/angular-three-soba-performance.mjs +14 -14
  96. package/{fesm2020 → fesm2022}/angular-three-soba-performance.mjs.map +1 -1
  97. package/{fesm2020 → fesm2022}/angular-three-soba-shaders.mjs +2 -2
  98. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -0
  99. package/{fesm2020 → fesm2022}/angular-three-soba-staging.mjs +139 -139
  100. package/{fesm2020 → fesm2022}/angular-three-soba-staging.mjs.map +1 -1
  101. package/loaders/lib/loader/loader.d.ts +1 -1
  102. package/materials/lib/mesh-distort-material/mesh-distort-material.d.ts +1 -1
  103. package/materials/lib/mesh-reflector-material/mesh-reflector-material.d.ts +1 -1
  104. package/materials/lib/mesh-refraction-material/mesh-refraction-material.d.ts +1 -1
  105. package/materials/lib/mesh-transmission-material/mesh-transmission-material.d.ts +1 -1
  106. package/materials/lib/mesh-wobble-material/mesh-wobble-material.d.ts +1 -1
  107. package/package.json +43 -68
  108. package/performance/lib/adaptive/adaptive-dpr.d.ts +1 -1
  109. package/performance/lib/detailed/detailed.d.ts +1 -1
  110. package/performance/lib/stats/stats.d.ts +1 -1
  111. package/plugin/package.json +1 -1
  112. package/plugin/src/generators/init/compat.js +1 -1
  113. package/plugin/src/generators/init/compat.js.map +1 -1
  114. package/plugin/src/generators/init/init.d.ts +1 -1
  115. package/plugin/src/generators/init/init.js +1 -1
  116. package/plugin/src/generators/init/init.js.map +1 -1
  117. package/staging/lib/accumulative-shadows/accumulative-shadows.d.ts +2 -2
  118. package/staging/lib/accumulative-shadows/randomized-lights.d.ts +1 -1
  119. package/staging/lib/bounds/bounds.d.ts +1 -1
  120. package/staging/lib/camera-shake/camera-shake.d.ts +1 -1
  121. package/staging/lib/caustics/caustics.d.ts +2 -2
  122. package/staging/lib/center/center.d.ts +1 -1
  123. package/staging/lib/cloud/cloud.d.ts +1 -1
  124. package/staging/lib/contact-shadows/contact-shadows.d.ts +1 -1
  125. package/staging/lib/environment/environment-inputs.d.ts +1 -1
  126. package/staging/lib/float/float.d.ts +1 -1
  127. package/staging/lib/sky/sky.d.ts +1 -1
  128. package/staging/lib/sparkles/sparkles.d.ts +2 -2
  129. package/staging/lib/spot-light/shadow-mesh-input.d.ts +1 -1
  130. package/staging/lib/spot-light/spot-light-input.d.ts +1 -1
  131. package/staging/lib/spot-light/spot-light-shadow-no-shader.d.ts +1 -1
  132. package/staging/lib/spot-light/spot-light-shadow-shader.d.ts +1 -1
  133. package/staging/lib/spot-light/spot-light.d.ts +1 -1
  134. package/staging/lib/spot-light/volumetric-mesh.d.ts +1 -1
  135. package/staging/lib/stage/stage.d.ts +2 -2
  136. package/staging/lib/stars/stars.d.ts +2 -2
  137. package/esm2020/abstractions/lib/billboard/billboard.mjs +0 -73
  138. package/esm2020/abstractions/lib/catmull-rom-line/catmull-rom-line.mjs +0 -119
  139. package/esm2020/abstractions/lib/cubic-bezier-line/cubic-bezier-line.mjs +0 -98
  140. package/esm2020/abstractions/lib/edges/edges.mjs +0 -95
  141. package/esm2020/abstractions/lib/gizmo-helper/gizmo-helper.mjs +0 -211
  142. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -91
  143. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -182
  144. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -45
  145. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -193
  146. package/esm2020/abstractions/lib/line/line-input.mjs +0 -75
  147. package/esm2020/abstractions/lib/line/line.mjs +0 -132
  148. package/esm2020/abstractions/lib/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -127
  149. package/esm2020/abstractions/lib/text/text.mjs +0 -114
  150. package/esm2020/abstractions/lib/text-3d/text-3d.mjs +0 -144
  151. package/esm2020/cameras/lib/camera/camera-content.mjs +0 -20
  152. package/esm2020/cameras/lib/camera/camera.mjs +0 -74
  153. package/esm2020/cameras/lib/cube-camera/cube-camera.mjs +0 -130
  154. package/esm2020/cameras/lib/orthographic-camera/orthographic-camera.mjs +0 -92
  155. package/esm2020/controls/lib/orbit-controls/orbit-controls.mjs +0 -146
  156. package/esm2020/loaders/lib/loader/loader.mjs +0 -133
  157. package/esm2020/materials/lib/mesh-distort-material/mesh-distort-material.mjs +0 -74
  158. package/esm2020/materials/lib/mesh-reflector-material/mesh-reflector-material.mjs +0 -327
  159. package/esm2020/materials/lib/mesh-refraction-material/mesh-refraction-material.mjs +0 -157
  160. package/esm2020/materials/lib/mesh-transmission-material/mesh-transmission-material.mjs +0 -237
  161. package/esm2020/materials/lib/mesh-wobble-material/mesh-wobble-material.mjs +0 -67
  162. package/esm2020/misc/lib/bake-shadows/bake-shadows.mjs +0 -25
  163. package/esm2020/performance/lib/adaptive/adaptive-dpr.mjs +0 -46
  164. package/esm2020/performance/lib/adaptive/adaptive-events.mjs +0 -36
  165. package/esm2020/performance/lib/detailed/detailed.mjs +0 -53
  166. package/esm2020/performance/lib/stats/stats.mjs +0 -79
  167. package/esm2020/shaders/lib/blur-pass/blur-pass.mjs +0 -61
  168. package/esm2020/staging/lib/accumulative-shadows/accumulative-shadows.mjs +0 -247
  169. package/esm2020/staging/lib/accumulative-shadows/randomized-lights.mjs +0 -199
  170. package/esm2020/staging/lib/camera-shake/camera-shake.mjs +0 -121
  171. package/esm2020/staging/lib/caustics/caustics.mjs +0 -363
  172. package/esm2020/staging/lib/center/center.mjs +0 -142
  173. package/esm2020/staging/lib/cloud/cloud.mjs +0 -159
  174. package/esm2020/staging/lib/contact-shadows/contact-shadows.mjs +0 -227
  175. package/esm2020/staging/lib/environment/environment-cube.mjs +0 -40
  176. package/esm2020/staging/lib/environment/environment-ground.mjs +0 -66
  177. package/esm2020/staging/lib/environment/environment-inputs.mjs +0 -86
  178. package/esm2020/staging/lib/environment/environment-map.mjs +0 -38
  179. package/esm2020/staging/lib/environment/environment-portal.mjs +0 -110
  180. package/esm2020/staging/lib/float/float.mjs +0 -76
  181. package/esm2020/staging/lib/sky/sky.mjs +0 -108
  182. package/esm2020/staging/lib/sparkles/sparkles.mjs +0 -209
  183. package/esm2020/staging/lib/spot-light/shadow-mesh-input.mjs +0 -50
  184. package/esm2020/staging/lib/spot-light/spot-light-input.mjs +0 -61
  185. package/esm2020/staging/lib/spot-light/spot-light-shadow-no-shader.mjs +0 -73
  186. package/esm2020/staging/lib/spot-light/spot-light-shadow-shader.mjs +0 -125
  187. package/esm2020/staging/lib/spot-light/spot-light.mjs +0 -116
  188. package/esm2020/staging/lib/spot-light/volumetric-mesh.mjs +0 -85
  189. package/esm2020/staging/lib/stars/stars.mjs +0 -139
  190. package/fesm2015/angular-three-soba-abstractions.mjs +0 -2048
  191. package/fesm2015/angular-three-soba-controls.mjs +0 -153
  192. package/fesm2015/angular-three-soba-controls.mjs.map +0 -1
  193. package/fesm2015/angular-three-soba-loaders.mjs +0 -229
  194. package/fesm2015/angular-three-soba-loaders.mjs.map +0 -1
  195. package/fesm2015/angular-three-soba-materials.mjs +0 -851
  196. package/fesm2015/angular-three-soba-materials.mjs.map +0 -1
  197. package/fesm2015/angular-three-soba-misc.mjs +0 -148
  198. package/fesm2015/angular-three-soba-misc.mjs.map +0 -1
  199. package/fesm2015/angular-three-soba-performance.mjs +0 -210
  200. package/fesm2015/angular-three-soba-performance.mjs.map +0 -1
  201. package/fesm2015/angular-three-soba-shaders.mjs +0 -1239
  202. package/fesm2015/angular-three-soba-shaders.mjs.map +0 -1
  203. package/fesm2015/angular-three-soba-staging.mjs +0 -3772
  204. package/fesm2015/angular-three-soba-staging.mjs.map +0 -1
  205. package/fesm2020/angular-three-soba-abstractions.mjs.map +0 -1
  206. package/fesm2020/angular-three-soba-cameras.mjs +0 -347
  207. package/fesm2020/angular-three-soba-cameras.mjs.map +0 -1
  208. package/fesm2020/angular-three-soba-controls.mjs.map +0 -1
  209. package/fesm2020/angular-three-soba-shaders.mjs.map +0 -1
  210. package/fesm2020/angular-three-soba.mjs +0 -6
  211. package/fesm2020/angular-three-soba.mjs.map +0 -1
  212. /package/{esm2020 → esm2022}/abstractions/angular-three-soba-abstractions.mjs +0 -0
  213. /package/{esm2020 → esm2022}/abstractions/index.mjs +0 -0
  214. /package/{esm2020 → esm2022}/abstractions/lib/gizmo-helper/gizmo-viewcube/constants.mjs +0 -0
  215. /package/{esm2020 → esm2022}/angular-three-soba.mjs +0 -0
  216. /package/{esm2020 → esm2022}/cameras/angular-three-soba-cameras.mjs +0 -0
  217. /package/{esm2020 → esm2022}/cameras/index.mjs +0 -0
  218. /package/{esm2020 → esm2022}/controls/angular-three-soba-controls.mjs +0 -0
  219. /package/{esm2020 → esm2022}/controls/index.mjs +0 -0
  220. /package/{esm2020 → esm2022}/index.mjs +0 -0
  221. /package/{esm2020 → esm2022}/loaders/angular-three-soba-loaders.mjs +0 -0
  222. /package/{esm2020 → esm2022}/loaders/index.mjs +0 -0
  223. /package/{esm2020 → esm2022}/loaders/lib/gltf-loader/gltf-loader.mjs +0 -0
  224. /package/{esm2020 → esm2022}/loaders/lib/progress/progress.mjs +0 -0
  225. /package/{esm2020 → esm2022}/loaders/lib/texture-loader/texture-loader.mjs +0 -0
  226. /package/{esm2020 → esm2022}/materials/angular-three-soba-materials.mjs +0 -0
  227. /package/{esm2020 → esm2022}/materials/index.mjs +0 -0
  228. /package/{esm2020 → esm2022}/misc/angular-three-soba-misc.mjs +0 -0
  229. /package/{esm2020 → esm2022}/misc/index.mjs +0 -0
  230. /package/{esm2020 → esm2022}/misc/lib/animations/animations.mjs +0 -0
  231. /package/{esm2020 → esm2022}/misc/lib/depth-buffer/depth-buffer.mjs +0 -0
  232. /package/{esm2020 → esm2022}/misc/lib/fbo/fbo.mjs +0 -0
  233. /package/{esm2020 → esm2022}/performance/angular-three-soba-performance.mjs +0 -0
  234. /package/{esm2020 → esm2022}/performance/index.mjs +0 -0
  235. /package/{esm2020 → esm2022}/shaders/angular-three-soba-shaders.mjs +0 -0
  236. /package/{esm2020 → esm2022}/shaders/index.mjs +0 -0
  237. /package/{esm2020 → esm2022}/shaders/lib/caustics-material/caustics-material.mjs +0 -0
  238. /package/{esm2020 → esm2022}/shaders/lib/caustics-projection-material/caustics-projection-material.mjs +0 -0
  239. /package/{esm2020 → esm2022}/shaders/lib/convolution-material/convolution-material.mjs +0 -0
  240. /package/{esm2020 → esm2022}/shaders/lib/discard-material/discard-material.mjs +0 -0
  241. /package/{esm2020 → esm2022}/shaders/lib/mesh-distort-material/mesh-distort-material.mjs +0 -0
  242. /package/{esm2020 → esm2022}/shaders/lib/mesh-reflector-material/mesh-reflector-material.mjs +0 -0
  243. /package/{esm2020 → esm2022}/shaders/lib/mesh-refraction-material/mesh-refraction-material.mjs +0 -0
  244. /package/{esm2020 → esm2022}/shaders/lib/mesh-transmission-material/mesh-transmission-material.mjs +0 -0
  245. /package/{esm2020 → esm2022}/shaders/lib/mesh-wobble-material/mesh-wobble-material.mjs +0 -0
  246. /package/{esm2020 → esm2022}/shaders/lib/shader-material/shader-material.mjs +0 -0
  247. /package/{esm2020 → esm2022}/shaders/lib/soft-shadow-material/soft-shadow-material.mjs +0 -0
  248. /package/{esm2020 → esm2022}/shaders/lib/spot-light-material/spot-light-material.mjs +0 -0
  249. /package/{esm2020 → esm2022}/shaders/lib/star-field-material/star-field-material.mjs +0 -0
  250. /package/{esm2020 → esm2022}/staging/angular-three-soba-staging.mjs +0 -0
  251. /package/{esm2020 → esm2022}/staging/index.mjs +0 -0
  252. /package/{esm2020 → esm2022}/staging/lib/accumulative-shadows/progressive-light-map.mjs +0 -0
  253. /package/{esm2020 → esm2022}/staging/lib/environment/assets.mjs +0 -0
  254. /package/{esm2020 → esm2022}/staging/lib/environment/utils.mjs +0 -0
  255. /package/{esm2020 → esm2022}/staging/lib/spot-light/common.mjs +0 -0
  256. /package/{fesm2015 → fesm2022}/angular-three-soba.mjs +0 -0
  257. /package/{fesm2015 → fesm2022}/angular-three-soba.mjs.map +0 -0
@@ -1,237 +0,0 @@
1
- import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
2
- import { extend, getLocalState, injectBeforeRender, injectNgtRef, NgtArgs, NgtRxStore, } from 'angular-three';
3
- import { injectNgtsFBO } from 'angular-three-soba/misc';
4
- import { DiscardMaterial, MeshTransmissionMaterial } from 'angular-three-soba/shaders';
5
- import { combineLatest, map } from 'rxjs';
6
- import * as THREE from 'three';
7
- import * as i0 from "@angular/core";
8
- extend({ MeshTransmissionMaterial });
9
- export class NgtsMeshTranmissionMaterial extends NgtRxStore {
10
- /** transmissionSampler, you can use the threejs transmission sampler texture that is
11
- * generated once for all transmissive materials. The upside is that it can be faster if you
12
- * use multiple MeshPhysical and Transmission materials, the downside is that transmissive materials
13
- * using this can't see other transparent or transmissive objects, default: false */
14
- set transmissionSampler(transmissionSampler) {
15
- this.set({ transmissionSampler });
16
- }
17
- /** Render the backside of the material (more cost, better results), default: false */
18
- set backside(backside) {
19
- this.set({ backside });
20
- }
21
- /** Backside thickness (when backside is true), default: 0 */
22
- set backsideThickness(backsideThickness) {
23
- this.set({ backsideThickness });
24
- }
25
- /** Resolution of the local buffer, default: undefined (fullscreen) */
26
- set resolution(resolution) {
27
- this.set({ resolution });
28
- }
29
- /** Resolution of the local buffer for backfaces, default: undefined (fullscreen) */
30
- set backsideResolution(backsideResolution) {
31
- this.set({ backsideResolution });
32
- }
33
- /** Refraction samples, default: 10 */
34
- set samples(samples) {
35
- this.set({ samples });
36
- }
37
- /** Buffer scene background (can be a texture, a cubetexture or a color), default: null */
38
- set background(background) {
39
- this.set({ background });
40
- }
41
- /* Transmission, default: 1 */
42
- set transmission(transmission) {
43
- this.set({ transmission });
44
- }
45
- /* Thickness (refraction), default: 0 */
46
- set thickness(thickness) {
47
- this.set({ thickness });
48
- }
49
- /* Roughness (blur), default: 0 */
50
- set roughness(roughness) {
51
- this.set({ roughness });
52
- }
53
- /* Chromatic aberration, default: 0.03 */
54
- set chromaticAberration(chromaticAberration) {
55
- this.set({ chromaticAberration });
56
- }
57
- /* Anisotropy, default: 0.1 */
58
- set anisotropy(anisotropy) {
59
- this.set({ anisotropy });
60
- }
61
- /* Distortion, default: 0 */
62
- set distortion(distortion) {
63
- this.set({ distortion });
64
- }
65
- /* Distortion scale, default: 0.5 */
66
- set distortionScale(distortionScale) {
67
- this.set({ distortionScale });
68
- }
69
- /* Temporal distortion (speed of movement), default: 0.0 */
70
- set temporalDistortion(temporalDistortion) {
71
- this.set({ temporalDistortion });
72
- }
73
- /** The scene rendered into a texture (use it to share a texture between materials), default: null */
74
- set buffer(buffer) {
75
- this.set({ buffer });
76
- }
77
- /** Internals */
78
- set time(time) {
79
- this.set({ time });
80
- }
81
- initialize() {
82
- super.initialize();
83
- this.set({
84
- transmissionSampler: false,
85
- backside: false,
86
- side: THREE.FrontSide,
87
- transmission: 1,
88
- thickness: 0,
89
- backsideThickness: 0,
90
- samples: 10,
91
- roughness: 0,
92
- anisotropy: 0.1,
93
- chromaticAberration: 0.03,
94
- distortion: 0,
95
- distortionScale: 0.5,
96
- temporalDistortion: 0.0,
97
- buffer: null,
98
- });
99
- }
100
- constructor() {
101
- super();
102
- this.materialRef = injectNgtRef();
103
- this.discardMaterial = new DiscardMaterial();
104
- this.fboBackRef = injectNgtsFBO(() => combineLatest([this.select('backsideResolution'), this.select('resolution')]).pipe(map(([backsideResolution, resolution]) => backsideResolution || resolution)));
105
- this.fboMainRef = injectNgtsFBO(() => this.select('resolution'));
106
- let oldBg;
107
- let oldTone;
108
- let parent;
109
- injectBeforeRender((state) => {
110
- const { transmissionSampler, background, backside, backsideThickness, thickness, side } = this.get();
111
- this.materialRef.nativeElement.time = state.clock.getElapsedTime();
112
- // Render only if the buffer matches the built-in and no transmission sampler is set
113
- if (this.materialRef.nativeElement.buffer === this.fboMainRef.nativeElement.texture &&
114
- !transmissionSampler) {
115
- parent = getLocalState(this.materialRef.nativeElement).parent;
116
- if (parent) {
117
- // Save defaults
118
- oldTone = state.gl.toneMapping;
119
- oldBg = state.scene.background;
120
- // Switch off tonemapping lest it double tone maps
121
- // Save the current background and set the HDR as the new BG
122
- // Use discardmaterial, the parent will be invisible, but it's shadows will still be cast
123
- state.gl.toneMapping = THREE.NoToneMapping;
124
- if (background)
125
- state.scene.background = background;
126
- parent['material'] = this.discardMaterial;
127
- if (backside) {
128
- // Render into the backside buffer
129
- state.gl.setRenderTarget(this.fboBackRef.nativeElement);
130
- state.gl.render(state.scene, state.camera);
131
- // And now prepare the material for the main render using the backside buffer
132
- parent['material'] = this.materialRef.nativeElement;
133
- parent['material'].buffer = this.fboBackRef.nativeElement.texture;
134
- parent['material'].thickness = backsideThickness;
135
- parent['material'].side = THREE.BackSide;
136
- }
137
- // Render into the main buffer
138
- state.gl.setRenderTarget(this.fboMainRef.nativeElement);
139
- state.gl.render(state.scene, state.camera);
140
- parent['material'].thickness = thickness;
141
- parent['material'].side = side;
142
- parent['material'].buffer = this.fboMainRef.nativeElement.texture;
143
- // Set old state back
144
- state.scene.background = oldBg;
145
- state.gl.setRenderTarget(null);
146
- parent['material'] = this.materialRef.nativeElement;
147
- state.gl.toneMapping = oldTone;
148
- }
149
- }
150
- });
151
- }
152
- }
153
- NgtsMeshTranmissionMaterial.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsMeshTranmissionMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component });
154
- NgtsMeshTranmissionMaterial.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: NgtsMeshTranmissionMaterial, isStandalone: true, selector: "ngts-mesh-transmission-material", inputs: { materialRef: "materialRef", transmissionSampler: "transmissionSampler", backside: "backside", backsideThickness: "backsideThickness", resolution: "resolution", backsideResolution: "backsideResolution", samples: "samples", background: "background", transmission: "transmission", thickness: "thickness", roughness: "roughness", chromaticAberration: "chromaticAberration", anisotropy: "anisotropy", distortion: "distortion", distortionScale: "distortionScale", temporalDistortion: "temporalDistortion", buffer: "buffer", time: "time" }, usesInheritance: true, ngImport: i0, template: `
155
- <ngt-mesh-transmission-material
156
- *args="[get('samples'), get('transmissionSampler')]"
157
- ngtCompound
158
- [ref]="materialRef"
159
- [buffer]="get('buffer') || fboMainRef.nativeElement?.texture"
160
- [_transmission]="get('transmission')"
161
- [transmission]="get('transmissionSampler') ? get('transmission') : 0"
162
- [thickness]="get('thickness')"
163
- [side]="get('side')"
164
- [anisotropy]="get('anisotropy')"
165
- [roughness]="get('roughness')"
166
- [chromaticAberration]="get('chromaticAberration')"
167
- [distortion]="get('distortion')"
168
- [distortionScale]="get('distortionScale')"
169
- [temporalDistortion]="get('temporalDistortion')"
170
- [time]="get('time')"
171
- />
172
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
173
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsMeshTranmissionMaterial, decorators: [{
174
- type: Component,
175
- args: [{
176
- selector: 'ngts-mesh-transmission-material',
177
- standalone: true,
178
- template: `
179
- <ngt-mesh-transmission-material
180
- *args="[get('samples'), get('transmissionSampler')]"
181
- ngtCompound
182
- [ref]="materialRef"
183
- [buffer]="get('buffer') || fboMainRef.nativeElement?.texture"
184
- [_transmission]="get('transmission')"
185
- [transmission]="get('transmissionSampler') ? get('transmission') : 0"
186
- [thickness]="get('thickness')"
187
- [side]="get('side')"
188
- [anisotropy]="get('anisotropy')"
189
- [roughness]="get('roughness')"
190
- [chromaticAberration]="get('chromaticAberration')"
191
- [distortion]="get('distortion')"
192
- [distortionScale]="get('distortionScale')"
193
- [temporalDistortion]="get('temporalDistortion')"
194
- [time]="get('time')"
195
- />
196
- `,
197
- imports: [NgtArgs],
198
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
199
- }]
200
- }], ctorParameters: function () { return []; }, propDecorators: { materialRef: [{
201
- type: Input
202
- }], transmissionSampler: [{
203
- type: Input
204
- }], backside: [{
205
- type: Input
206
- }], backsideThickness: [{
207
- type: Input
208
- }], resolution: [{
209
- type: Input
210
- }], backsideResolution: [{
211
- type: Input
212
- }], samples: [{
213
- type: Input
214
- }], background: [{
215
- type: Input
216
- }], transmission: [{
217
- type: Input
218
- }], thickness: [{
219
- type: Input
220
- }], roughness: [{
221
- type: Input
222
- }], chromaticAberration: [{
223
- type: Input
224
- }], anisotropy: [{
225
- type: Input
226
- }], distortion: [{
227
- type: Input
228
- }], distortionScale: [{
229
- type: Input
230
- }], temporalDistortion: [{
231
- type: Input
232
- }], buffer: [{
233
- type: Input
234
- }], time: [{
235
- type: Input
236
- }] } });
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC10cmFuc21pc3Npb24tbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9tYXRlcmlhbHMvc3JjL2xpYi9tZXNoLXRyYW5zbWlzc2lvbi1tYXRlcmlhbC9tZXNoLXRyYW5zbWlzc2lvbi1tYXRlcmlhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQ0gsTUFBTSxFQUNOLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsWUFBWSxFQUVaLE9BQU8sRUFDUCxVQUFVLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RixPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQzs7QUFFL0IsTUFBTSxDQUFDLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDO0FBMkJyQyxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsVUFBVTtJQU92RDs7O3lGQUdxRjtJQUNyRixJQUFhLG1CQUFtQixDQUFDLG1CQUE0QjtRQUN6RCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxzRkFBc0Y7SUFDdEYsSUFBYSxRQUFRLENBQUMsUUFBaUI7UUFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNELDZEQUE2RDtJQUM3RCxJQUFhLGlCQUFpQixDQUFDLGlCQUF5QjtRQUNw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V0FBVztzQkFBbkIsS0FBSztnQkFVTyxtQkFBbUI7c0JBQS9CLEtBQUs7Z0JBSU8sUUFBUTtzQkFBcEIsS0FBSztnQkFJTyxpQkFBaUI7c0JBQTdCLEtBQUs7Z0JBSU8sVUFBVTtzQkFBdEIsS0FBSztnQkFJTyxrQkFBa0I7c0JBQTlCLEtBQUs7Z0JBSU8sT0FBTztzQkFBbkIsS0FBSztnQkFJTyxVQUFVO3NCQUF0QixLQUFLO2dCQUlPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBSU8sU0FBUztzQkFBckIsS0FBSztnQkFJTyxTQUFTO3NCQUFyQixLQUFLO2dCQUlPLG1CQUFtQjtzQkFBL0IsS0FBSztnQkFJTyxVQUFVO3NCQUF0QixLQUFLO2dCQUlPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBSU8sZUFBZTtzQkFBM0IsS0FBSztnQkFJTyxrQkFBa0I7c0JBQTlCLEtBQUs7Z0JBSU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxJQUFJO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBleHRlbmQsXG4gICAgZ2V0TG9jYWxTdGF0ZSxcbiAgICBpbmplY3RCZWZvcmVSZW5kZXIsXG4gICAgaW5qZWN0Tmd0UmVmLFxuICAgIE5ndEFueVJlY29yZCxcbiAgICBOZ3RBcmdzLFxuICAgIE5ndFJ4U3RvcmUsXG59IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0c0ZCTyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9taXNjJztcbmltcG9ydCB7IERpc2NhcmRNYXRlcmlhbCwgTWVzaFRyYW5zbWlzc2lvbk1hdGVyaWFsIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3NoYWRlcnMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5cbmV4dGVuZCh7IE1lc2hUcmFuc21pc3Npb25NYXRlcmlhbCB9KTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLW1lc2gtdHJhbnNtaXNzaW9uLW1hdGVyaWFsJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZ3QtbWVzaC10cmFuc21pc3Npb24tbWF0ZXJpYWxcbiAgICAgICAgICAgICphcmdzPVwiW2dldCgnc2FtcGxlcycpLCBnZXQoJ3RyYW5zbWlzc2lvblNhbXBsZXInKV1cIlxuICAgICAgICAgICAgbmd0Q29tcG91bmRcbiAgICAgICAgICAgIFtyZWZdPVwibWF0ZXJpYWxSZWZcIlxuICAgICAgICAgICAgW2J1ZmZlcl09XCJnZXQoJ2J1ZmZlcicpIHx8IGZib01haW5SZWYubmF0aXZlRWxlbWVudD8udGV4dHVyZVwiXG4gICAgICAgICAgICBbX3RyYW5zbWlzc2lvbl09XCJnZXQoJ3RyYW5zbWlzc2lvbicpXCJcbiAgICAgICAgICAgIFt0cmFuc21pc3Npb25dPVwiZ2V0KCd0cmFuc21pc3Npb25TYW1wbGVyJykgPyBnZXQoJ3RyYW5zbWlzc2lvbicpIDogMFwiXG4gICAgICAgICAgICBbdGhpY2tuZXNzXT1cImdldCgndGhpY2tuZXNzJylcIlxuICAgICAgICAgICAgW3NpZGVdPVwiZ2V0KCdzaWRlJylcIlxuICAgICAgICAgICAgW2FuaXNvdHJvcHldPVwiZ2V0KCdhbmlzb3Ryb3B5JylcIlxuICAgICAgICAgICAgW3JvdWdobmVzc109XCJnZXQoJ3JvdWdobmVzcycpXCJcbiAgICAgICAgICAgIFtjaHJvbWF0aWNBYmVycmF0aW9uXT1cImdldCgnY2hyb21hdGljQWJlcnJhdGlvbicpXCJcbiAgICAgICAgICAgIFtkaXN0b3J0aW9uXT1cImdldCgnZGlzdG9ydGlvbicpXCJcbiAgICAgICAgICAgIFtkaXN0b3J0aW9uU2NhbGVdPVwiZ2V0KCdkaXN0b3J0aW9uU2NhbGUnKVwiXG4gICAgICAgICAgICBbdGVtcG9yYWxEaXN0b3J0aW9uXT1cImdldCgndGVtcG9yYWxEaXN0b3J0aW9uJylcIlxuICAgICAgICAgICAgW3RpbWVdPVwiZ2V0KCd0aW1lJylcIlxuICAgICAgICAvPlxuICAgIGAsXG4gICAgaW1wb3J0czogW05ndEFyZ3NdLFxuICAgIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c01lc2hUcmFubWlzc2lvbk1hdGVyaWFsIGV4dGVuZHMgTmd0UnhTdG9yZSB7XG4gICAgQElucHV0KCkgbWF0ZXJpYWxSZWYgPSBpbmplY3ROZ3RSZWY8XG4gICAgICAgIE1lc2hUcmFuc21pc3Npb25NYXRlcmlhbCAmIHtcbiAgICAgICAgICAgIHRpbWU6IG51bWJlcjtcbiAgICAgICAgICAgIGJ1ZmZlcj86IFRIUkVFLlRleHR1cmU7XG4gICAgICAgIH1cbiAgICA+KCk7XG4gICAgLyoqIHRyYW5zbWlzc2lvblNhbXBsZXIsIHlvdSBjYW4gdXNlIHRoZSB0aHJlZWpzIHRyYW5zbWlzc2lvbiBzYW1wbGVyIHRleHR1cmUgdGhhdCBpc1xuICAgICAqICBnZW5lcmF0ZWQgb25jZSBmb3IgYWxsIHRyYW5zbWlzc2l2ZSBtYXRlcmlhbHMuIFRoZSB1cHNpZGUgaXMgdGhhdCBpdCBjYW4gYmUgZmFzdGVyIGlmIHlvdVxuICAgICAqICB1c2UgbXVsdGlwbGUgTWVzaFBoeXNpY2FsIGFuZCBUcmFuc21pc3Npb24gbWF0ZXJpYWxzLCB0aGUgZG93bnNpZGUgaXMgdGhhdCB0cmFuc21pc3NpdmUgbWF0ZXJpYWxzXG4gICAgICogIHVzaW5nIHRoaXMgY2FuJ3Qgc2VlIG90aGVyIHRyYW5zcGFyZW50IG9yIHRyYW5zbWlzc2l2ZSBvYmplY3RzLCBkZWZhdWx0OiBmYWxzZSAqL1xuICAgIEBJbnB1dCgpIHNldCB0cmFuc21pc3Npb25TYW1wbGVyKHRyYW5zbWlzc2lvblNhbXBsZXI6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyB0cmFuc21pc3Npb25TYW1wbGVyIH0pO1xuICAgIH1cbiAgICAvKiogUmVuZGVyIHRoZSBiYWNrc2lkZSBvZiB0aGUgbWF0ZXJpYWwgKG1vcmUgY29zdCwgYmV0dGVyIHJlc3VsdHMpLCBkZWZhdWx0OiBmYWxzZSAqL1xuICAgIEBJbnB1dCgpIHNldCBiYWNrc2lkZShiYWNrc2lkZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGJhY2tzaWRlIH0pO1xuICAgIH1cbiAgICAvKiogQmFja3NpZGUgdGhpY2tuZXNzICh3aGVuIGJhY2tzaWRlIGlzIHRydWUpLCBkZWZhdWx0OiAwICovXG4gICAgQElucHV0KCkgc2V0IGJhY2tzaWRlVGhpY2tuZXNzKGJhY2tzaWRlVGhpY2tuZXNzOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBiYWNrc2lkZVRoaWNrbmVzcyB9KTtcbiAgICB9XG4gICAgLyoqIFJlc29sdXRpb24gb2YgdGhlIGxvY2FsIGJ1ZmZlciwgZGVmYXVsdDogdW5kZWZpbmVkIChmdWxsc2NyZWVuKSAqL1xuICAgIEBJbnB1dCgpIHNldCByZXNvbHV0aW9uKHJlc29sdXRpb246IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHJlc29sdXRpb24gfSk7XG4gICAgfVxuICAgIC8qKiBSZXNvbHV0aW9uIG9mIHRoZSBsb2NhbCBidWZmZXIgZm9yIGJhY2tmYWNlcywgZGVmYXVsdDogdW5kZWZpbmVkIChmdWxsc2NyZWVuKSAqL1xuICAgIEBJbnB1dCgpIHNldCBiYWNrc2lkZVJlc29sdXRpb24oYmFja3NpZGVSZXNvbHV0aW9uOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBiYWNrc2lkZVJlc29sdXRpb24gfSk7XG4gICAgfVxuICAgIC8qKiBSZWZyYWN0aW9uIHNhbXBsZXMsIGRlZmF1bHQ6IDEwICovXG4gICAgQElucHV0KCkgc2V0IHNhbXBsZXMoc2FtcGxlczogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc2FtcGxlcyB9KTtcbiAgICB9XG4gICAgLyoqIEJ1ZmZlciBzY2VuZSBiYWNrZ3JvdW5kIChjYW4gYmUgYSB0ZXh0dXJlLCBhIGN1YmV0ZXh0dXJlIG9yIGEgY29sb3IpLCBkZWZhdWx0OiBudWxsICovXG4gICAgQElucHV0KCkgc2V0IGJhY2tncm91bmQoYmFja2dyb3VuZDogVEhSRUUuVGV4dHVyZSB8IFRIUkVFLkNvbG9yKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYmFja2dyb3VuZCB9KTtcbiAgICB9XG4gICAgLyogVHJhbnNtaXNzaW9uLCBkZWZhdWx0OiAxICovXG4gICAgQElucHV0KCkgc2V0IHRyYW5zbWlzc2lvbih0cmFuc21pc3Npb246IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHRyYW5zbWlzc2lvbiB9KTtcbiAgICB9XG4gICAgLyogVGhpY2tuZXNzIChyZWZyYWN0aW9uKSwgZGVmYXVsdDogMCAqL1xuICAgIEBJbnB1dCgpIHNldCB0aGlja25lc3ModGhpY2tuZXNzOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyB0aGlja25lc3MgfSk7XG4gICAgfVxuICAgIC8qIFJvdWdobmVzcyAoYmx1ciksIGRlZmF1bHQ6IDAgKi9cbiAgICBASW5wdXQoKSBzZXQgcm91Z2huZXNzKHJvdWdobmVzczogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgcm91Z2huZXNzIH0pO1xuICAgIH1cbiAgICAvKiBDaHJvbWF0aWMgYWJlcnJhdGlvbiwgZGVmYXVsdDogMC4wMyAqL1xuICAgIEBJbnB1dCgpIHNldCBjaHJvbWF0aWNBYmVycmF0aW9uKGNocm9tYXRpY0FiZXJyYXRpb246IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGNocm9tYXRpY0FiZXJyYXRpb24gfSk7XG4gICAgfVxuICAgIC8qIEFuaXNvdHJvcHksIGRlZmF1bHQ6IDAuMSAqL1xuICAgIEBJbnB1dCgpIHNldCBhbmlzb3Ryb3B5KGFuaXNvdHJvcHk6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGFuaXNvdHJvcHkgfSk7XG4gICAgfVxuICAgIC8qIERpc3RvcnRpb24sIGRlZmF1bHQ6IDAgKi9cbiAgICBASW5wdXQoKSBzZXQgZGlzdG9ydGlvbihkaXN0b3J0aW9uOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkaXN0b3J0aW9uIH0pO1xuICAgIH1cbiAgICAvKiBEaXN0b3J0aW9uIHNjYWxlLCBkZWZhdWx0OiAwLjUgKi9cbiAgICBASW5wdXQoKSBzZXQgZGlzdG9ydGlvblNjYWxlKGRpc3RvcnRpb25TY2FsZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZGlzdG9ydGlvblNjYWxlIH0pO1xuICAgIH1cbiAgICAvKiBUZW1wb3JhbCBkaXN0b3J0aW9uIChzcGVlZCBvZiBtb3ZlbWVudCksIGRlZmF1bHQ6IDAuMCAqL1xuICAgIEBJbnB1dCgpIHNldCB0ZW1wb3JhbERpc3RvcnRpb24odGVtcG9yYWxEaXN0b3J0aW9uOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyB0ZW1wb3JhbERpc3RvcnRpb24gfSk7XG4gICAgfVxuICAgIC8qKiBUaGUgc2NlbmUgcmVuZGVyZWQgaW50byBhIHRleHR1cmUgKHVzZSBpdCB0byBzaGFyZSBhIHRleHR1cmUgYmV0d2VlbiBtYXRlcmlhbHMpLCBkZWZhdWx0OiBudWxsICAqL1xuICAgIEBJbnB1dCgpIHNldCBidWZmZXIoYnVmZmVyOiBUSFJFRS5UZXh0dXJlKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYnVmZmVyIH0pO1xuICAgIH1cbiAgICAvKiogSW50ZXJuYWxzICovXG4gICAgQElucHV0KCkgc2V0IHRpbWUodGltZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgdGltZSB9KTtcbiAgICB9XG5cbiAgICByZWFkb25seSBkaXNjYXJkTWF0ZXJpYWwgPSBuZXcgRGlzY2FyZE1hdGVyaWFsKCk7XG4gICAgcmVhZG9ubHkgZmJvQmFja1JlZiA9IGluamVjdE5ndHNGQk8oKCkgPT5cbiAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5zZWxlY3QoJ2JhY2tzaWRlUmVzb2x1dGlvbicpLCB0aGlzLnNlbGVjdCgncmVzb2x1dGlvbicpXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW2JhY2tzaWRlUmVzb2x1dGlvbiwgcmVzb2x1dGlvbl0pID0+IGJhY2tzaWRlUmVzb2x1dGlvbiB8fCByZXNvbHV0aW9uKVxuICAgICAgICApXG4gICAgKTtcbiAgICByZWFkb25seSBmYm9NYWluUmVmID0gaW5qZWN0Tmd0c0ZCTygoKSA9PiB0aGlzLnNlbGVjdCgncmVzb2x1dGlvbicpKTtcblxuICAgIG92ZXJyaWRlIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmluaXRpYWxpemUoKTtcbiAgICAgICAgdGhpcy5zZXQoe1xuICAgICAgICAgICAgdHJhbnNtaXNzaW9uU2FtcGxlcjogZmFsc2UsXG4gICAgICAgICAgICBiYWNrc2lkZTogZmFsc2UsXG4gICAgICAgICAgICBzaWRlOiBUSFJFRS5Gcm9udFNpZGUsXG4gICAgICAgICAgICB0cmFuc21pc3Npb246IDEsXG4gICAgICAgICAgICB0aGlja25lc3M6IDAsXG4gICAgICAgICAgICBiYWNrc2lkZVRoaWNrbmVzczogMCxcbiAgICAgICAgICAgIHNhbXBsZXM6IDEwLFxuICAgICAgICAgICAgcm91Z2huZXNzOiAwLFxuICAgICAgICAgICAgYW5pc290cm9weTogMC4xLFxuICAgICAgICAgICAgY2hyb21hdGljQWJlcnJhdGlvbjogMC4wMyxcbiAgICAgICAgICAgIGRpc3RvcnRpb246IDAsXG4gICAgICAgICAgICBkaXN0b3J0aW9uU2NhbGU6IDAuNSxcbiAgICAgICAgICAgIHRlbXBvcmFsRGlzdG9ydGlvbjogMC4wLFxuICAgICAgICAgICAgYnVmZmVyOiBudWxsLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgbGV0IG9sZEJnOiBUSFJFRS5TY2VuZVsnYmFja2dyb3VuZCddO1xuICAgICAgICBsZXQgb2xkVG9uZTogVEhSRUUuV2ViR0xSZW5kZXJlclsndG9uZU1hcHBpbmcnXTtcbiAgICAgICAgbGV0IHBhcmVudDogVEhSRUUuT2JqZWN0M0Q7XG5cbiAgICAgICAgaW5qZWN0QmVmb3JlUmVuZGVyKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyB0cmFuc21pc3Npb25TYW1wbGVyLCBiYWNrZ3JvdW5kLCBiYWNrc2lkZSwgYmFja3NpZGVUaGlja25lc3MsIHRoaWNrbmVzcywgc2lkZSB9ID0gdGhpcy5nZXQoKTtcblxuICAgICAgICAgICAgdGhpcy5tYXRlcmlhbFJlZi5uYXRpdmVFbGVtZW50LnRpbWUgPSBzdGF0ZS5jbG9jay5nZXRFbGFwc2VkVGltZSgpO1xuICAgICAgICAgICAgLy8gUmVuZGVyIG9ubHkgaWYgdGhlIGJ1ZmZlciBtYXRjaGVzIHRoZSBidWlsdC1pbiBhbmQgbm8gdHJhbnNtaXNzaW9uIHNhbXBsZXIgaXMgc2V0XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5tYXRlcmlhbFJlZi5uYXRpdmVFbGVtZW50LmJ1ZmZlciA9PT0gdGhpcy5mYm9NYWluUmVmLm5hdGl2ZUVsZW1lbnQudGV4dHVyZSAmJlxuICAgICAgICAgICAgICAgICF0cmFuc21pc3Npb25TYW1wbGVyXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBwYXJlbnQgPSBnZXRMb2NhbFN0YXRlKHRoaXMubWF0ZXJpYWxSZWYubmF0aXZlRWxlbWVudCkucGFyZW50IGFzIFRIUkVFLk9iamVjdDNEO1xuICAgICAgICAgICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2F2ZSBkZWZhdWx0c1xuICAgICAgICAgICAgICAgICAgICBvbGRUb25lID0gc3RhdGUuZ2wudG9uZU1hcHBpbmc7XG4gICAgICAgICAgICAgICAgICAgIG9sZEJnID0gc3RhdGUuc2NlbmUuYmFja2dyb3VuZDtcblxuICAgICAgICAgICAgICAgICAgICAvLyBTd2l0Y2ggb2ZmIHRvbmVtYXBwaW5nIGxlc3QgaXQgZG91YmxlIHRvbmUgbWFwc1xuICAgICAgICAgICAgICAgICAgICAvLyBTYXZlIHRoZSBjdXJyZW50IGJhY2tncm91bmQgYW5kIHNldCB0aGUgSERSIGFzIHRoZSBuZXcgQkdcbiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIGRpc2NhcmRtYXRlcmlhbCwgdGhlIHBhcmVudCB3aWxsIGJlIGludmlzaWJsZSwgYnV0IGl0J3Mgc2hhZG93cyB3aWxsIHN0aWxsIGJlIGNhc3RcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuZ2wudG9uZU1hcHBpbmcgPSBUSFJFRS5Ob1RvbmVNYXBwaW5nO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYmFja2dyb3VuZCkgc3RhdGUuc2NlbmUuYmFja2dyb3VuZCA9IGJhY2tncm91bmQ7XG4gICAgICAgICAgICAgICAgICAgIChwYXJlbnQgYXMgTmd0QW55UmVjb3JkKVsnbWF0ZXJpYWwnXSA9IHRoaXMuZGlzY2FyZE1hdGVyaWFsO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChiYWNrc2lkZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVuZGVyIGludG8gdGhlIGJhY2tzaWRlIGJ1ZmZlclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuZ2wuc2V0UmVuZGVyVGFyZ2V0KHRoaXMuZmJvQmFja1JlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmdsLnJlbmRlcihzdGF0ZS5zY2VuZSwgc3RhdGUuY2FtZXJhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFuZCBub3cgcHJlcGFyZSB0aGUgbWF0ZXJpYWwgZm9yIHRoZSBtYWluIHJlbmRlciB1c2luZyB0aGUgYmFja3NpZGUgYnVmZmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50IGFzIE5ndEFueVJlY29yZClbJ21hdGVyaWFsJ10gPSB0aGlzLm1hdGVyaWFsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50IGFzIE5ndEFueVJlY29yZClbJ21hdGVyaWFsJ10uYnVmZmVyID0gdGhpcy5mYm9CYWNrUmVmLm5hdGl2ZUVsZW1lbnQudGV4dHVyZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnQgYXMgTmd0QW55UmVjb3JkKVsnbWF0ZXJpYWwnXS50aGlja25lc3MgPSBiYWNrc2lkZVRoaWNrbmVzcztcbiAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnQgYXMgTmd0QW55UmVjb3JkKVsnbWF0ZXJpYWwnXS5zaWRlID0gVEhSRUUuQmFja1NpZGU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgaW50byB0aGUgbWFpbiBidWZmZXJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuZ2wuc2V0UmVuZGVyVGFyZ2V0KHRoaXMuZmJvTWFpblJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuZ2wucmVuZGVyKHN0YXRlLnNjZW5lLCBzdGF0ZS5jYW1lcmEpO1xuXG4gICAgICAgICAgICAgICAgICAgIChwYXJlbnQgYXMgTmd0QW55UmVjb3JkKVsnbWF0ZXJpYWwnXS50aGlja25lc3MgPSB0aGlja25lc3M7XG4gICAgICAgICAgICAgICAgICAgIChwYXJlbnQgYXMgTmd0QW55UmVjb3JkKVsnbWF0ZXJpYWwnXS5zaWRlID0gc2lkZTtcbiAgICAgICAgICAgICAgICAgICAgKHBhcmVudCBhcyBOZ3RBbnlSZWNvcmQpWydtYXRlcmlhbCddLmJ1ZmZlciA9IHRoaXMuZmJvTWFpblJlZi5uYXRpdmVFbGVtZW50LnRleHR1cmU7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gU2V0IG9sZCBzdGF0ZSBiYWNrXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLnNjZW5lLmJhY2tncm91bmQgPSBvbGRCZztcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuZ2wuc2V0UmVuZGVyVGFyZ2V0KG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAocGFyZW50IGFzIE5ndEFueVJlY29yZClbJ21hdGVyaWFsJ10gPSB0aGlzLm1hdGVyaWFsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmdsLnRvbmVNYXBwaW5nID0gb2xkVG9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,67 +0,0 @@
1
- import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
2
- import { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtRxStore } from 'angular-three';
3
- import { MeshWobbleMaterial } from 'angular-three-soba/shaders';
4
- import * as i0 from "@angular/core";
5
- extend({ MeshWobbleMaterial });
6
- export class NgtsMeshWobbleMaterial extends NgtRxStore {
7
- set time(time) {
8
- this.set({ time });
9
- }
10
- set factor(factor) {
11
- this.set({ factor });
12
- }
13
- set speed(speed) {
14
- this.set({ speed });
15
- }
16
- initialize() {
17
- super.initialize();
18
- this.set({ speed: 1, time: 0, factor: 1 });
19
- }
20
- constructor() {
21
- super();
22
- this.material = new MeshWobbleMaterial();
23
- this.materialRef = injectNgtRef();
24
- injectBeforeRender(({ clock }) => {
25
- this.material.time = clock.getElapsedTime() * this.get('speed');
26
- });
27
- }
28
- }
29
- NgtsMeshWobbleMaterial.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsMeshWobbleMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
- NgtsMeshWobbleMaterial.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: NgtsMeshWobbleMaterial, isStandalone: true, selector: "ngts-mesh-wobble-material", inputs: { materialRef: "materialRef", time: "time", factor: "factor", speed: "speed" }, usesInheritance: true, ngImport: i0, template: `
31
- <ngt-primitive
32
- *args="[material]"
33
- [ref]="materialRef"
34
- [time]="get('time')"
35
- [factor]="get('factor')"
36
- attach="material"
37
- ngtCompound
38
- />
39
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsMeshWobbleMaterial, decorators: [{
41
- type: Component,
42
- args: [{
43
- selector: 'ngts-mesh-wobble-material',
44
- standalone: true,
45
- template: `
46
- <ngt-primitive
47
- *args="[material]"
48
- [ref]="materialRef"
49
- [time]="get('time')"
50
- [factor]="get('factor')"
51
- attach="material"
52
- ngtCompound
53
- />
54
- `,
55
- imports: [NgtArgs],
56
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
57
- }]
58
- }], ctorParameters: function () { return []; }, propDecorators: { materialRef: [{
59
- type: Input
60
- }], time: [{
61
- type: Input
62
- }], factor: [{
63
- type: Input
64
- }], speed: [{
65
- type: Input
66
- }] } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC13b2JibGUtbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9tYXRlcmlhbHMvc3JjL2xpYi9tZXNoLXdvYmJsZS1tYXRlcmlhbC9tZXNoLXdvYmJsZS1tYXRlcmlhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUVoRSxNQUFNLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7QUFrQi9CLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxVQUFVO0lBS2xELElBQWEsSUFBSSxDQUFDLElBQVk7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQWEsTUFBTSxDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELElBQWEsS0FBSyxDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVRLFVBQVU7UUFDZixLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQXRCSCxhQUFRLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBRXBDLGdCQUFXLEdBQUcsWUFBWSxFQUFzQixDQUFDO1FBcUJ0RCxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O21IQTNCUSxzQkFBc0I7dUdBQXRCLHNCQUFzQixvTUFickI7Ozs7Ozs7OztLQVNULDREQUNTLE9BQU87MkZBR1Isc0JBQXNCO2tCQWhCbEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7Ozs7S0FTVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNwQzswRUFJWSxXQUFXO3NCQUFuQixLQUFLO2dCQUVPLElBQUk7c0JBQWhCLEtBQUs7Z0JBSU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxLQUFLO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBpbmplY3RCZWZvcmVSZW5kZXIsIGluamVjdE5ndFJlZiwgTmd0QXJncywgTmd0UnhTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgTWVzaFdvYmJsZU1hdGVyaWFsIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3NoYWRlcnMnO1xuXG5leHRlbmQoeyBNZXNoV29iYmxlTWF0ZXJpYWwgfSk7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0cy1tZXNoLXdvYmJsZS1tYXRlcmlhbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LXByaW1pdGl2ZVxuICAgICAgICAgICAgKmFyZ3M9XCJbbWF0ZXJpYWxdXCJcbiAgICAgICAgICAgIFtyZWZdPVwibWF0ZXJpYWxSZWZcIlxuICAgICAgICAgICAgW3RpbWVdPVwiZ2V0KCd0aW1lJylcIlxuICAgICAgICAgICAgW2ZhY3Rvcl09XCJnZXQoJ2ZhY3RvcicpXCJcbiAgICAgICAgICAgIGF0dGFjaD1cIm1hdGVyaWFsXCJcbiAgICAgICAgICAgIG5ndENvbXBvdW5kXG4gICAgICAgIC8+XG4gICAgYCxcbiAgICBpbXBvcnRzOiBbTmd0QXJnc10sXG4gICAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzTWVzaFdvYmJsZU1hdGVyaWFsIGV4dGVuZHMgTmd0UnhTdG9yZSB7XG4gICAgcmVhZG9ubHkgbWF0ZXJpYWwgPSBuZXcgTWVzaFdvYmJsZU1hdGVyaWFsKCk7XG5cbiAgICBASW5wdXQoKSBtYXRlcmlhbFJlZiA9IGluamVjdE5ndFJlZjxNZXNoV29iYmxlTWF0ZXJpYWw+KCk7XG5cbiAgICBASW5wdXQoKSBzZXQgdGltZSh0aW1lOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyB0aW1lIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBmYWN0b3IoZmFjdG9yOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmYWN0b3IgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHNwZWVkKHNwZWVkOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBzcGVlZCB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMuc2V0KHsgc3BlZWQ6IDEsIHRpbWU6IDAsIGZhY3RvcjogMSB9KTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgaW5qZWN0QmVmb3JlUmVuZGVyKCh7IGNsb2NrIH0pID0+IHtcbiAgICAgICAgICAgIHRoaXMubWF0ZXJpYWwudGltZSA9IGNsb2NrLmdldEVsYXBzZWRUaW1lKCkgKiB0aGlzLmdldCgnc3BlZWQnKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -1,25 +0,0 @@
1
- import { Directive, inject } from '@angular/core';
2
- import { NgtRxStore, NgtStore } from 'angular-three';
3
- import * as i0 from "@angular/core";
4
- export class NgtsBakeShadows extends NgtRxStore {
5
- constructor() {
6
- super(...arguments);
7
- this.store = inject(NgtStore);
8
- }
9
- ngOnInit() {
10
- this.effect(this.store.select('gl'), (gl) => {
11
- gl.shadowMap.autoUpdate = false;
12
- gl.shadowMap.needsUpdate = true;
13
- return () => {
14
- gl.shadowMap.autoUpdate = gl.shadowMap.needsUpdate = true;
15
- };
16
- });
17
- }
18
- }
19
- NgtsBakeShadows.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsBakeShadows, deps: null, target: i0.ɵɵFactoryTarget.Directive });
20
- NgtsBakeShadows.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.5", type: NgtsBakeShadows, isStandalone: true, selector: "ngts-bake-shadows", usesInheritance: true, ngImport: i0 });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsBakeShadows, decorators: [{
22
- type: Directive,
23
- args: [{ selector: 'ngts-bake-shadows', standalone: true }]
24
- }] });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFrZS1zaGFkb3dzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvbWlzYy9zcmMvbGliL2Jha2Utc2hhZG93cy9iYWtlLXNoYWRvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR3JELE1BQU0sT0FBTyxlQUFnQixTQUFRLFVBQVU7SUFEL0M7O1FBRXFCLFVBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7S0FZN0M7SUFWRyxRQUFRO1FBQ0osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ3hDLEVBQUUsQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUNoQyxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFFaEMsT0FBTyxHQUFHLEVBQUU7Z0JBQ1IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQzlELENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7NEdBWlEsZUFBZTtnR0FBZixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndFJ4U3RvcmUsIE5ndFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ25ndHMtYmFrZS1zaGFkb3dzJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndHNCYWtlU2hhZG93cyBleHRlbmRzIE5ndFJ4U3RvcmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZWZmZWN0KHRoaXMuc3RvcmUuc2VsZWN0KCdnbCcpLCAoZ2wpID0+IHtcbiAgICAgICAgICAgIGdsLnNoYWRvd01hcC5hdXRvVXBkYXRlID0gZmFsc2U7XG4gICAgICAgICAgICBnbC5zaGFkb3dNYXAubmVlZHNVcGRhdGUgPSB0cnVlO1xuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGdsLnNoYWRvd01hcC5hdXRvVXBkYXRlID0gZ2wuc2hhZG93TWFwLm5lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,46 +0,0 @@
1
- import { Directive, inject, Input } from '@angular/core';
2
- import { RxActionFactory } from '@rx-angular/state/actions';
3
- import { NgtRxStore, NgtStore } from 'angular-three';
4
- import * as i0 from "@angular/core";
5
- export class NgtsAdaptiveDpr extends NgtRxStore {
6
- constructor() {
7
- super(...arguments);
8
- this.store = inject(NgtStore);
9
- this.actions = inject((RxActionFactory)).create();
10
- this.pixelated = false;
11
- }
12
- ngOnInit() {
13
- this.effect(this.actions.restorePixel$, () => {
14
- const domElement = this.store.get('gl', 'domElement');
15
- return () => {
16
- const active = this.store.get('internal', 'active');
17
- const setDpr = this.store.get('setDpr');
18
- const initialDpr = this.store.get('viewport', 'initialDpr');
19
- if (active)
20
- setDpr(initialDpr);
21
- if (this.pixelated && domElement)
22
- domElement.style.imageRendering = 'auto';
23
- };
24
- });
25
- this.actions.restorePixel();
26
- this.hold(this.store.select('performance', 'current'), (performanceCurrent) => {
27
- const { gl, viewport, setDpr } = this.store.get();
28
- setDpr(performanceCurrent * viewport.initialDpr);
29
- if (this.pixelated && gl.domElement)
30
- gl.domElement.style.imageRendering = performanceCurrent === 1 ? 'auto' : 'pixelated';
31
- });
32
- }
33
- }
34
- NgtsAdaptiveDpr.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsAdaptiveDpr, deps: null, target: i0.ɵɵFactoryTarget.Directive });
35
- NgtsAdaptiveDpr.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.5", type: NgtsAdaptiveDpr, isStandalone: true, selector: "ngts-adaptive-dpr", inputs: { pixelated: "pixelated" }, providers: [RxActionFactory], usesInheritance: true, ngImport: i0 });
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsAdaptiveDpr, decorators: [{
37
- type: Directive,
38
- args: [{
39
- selector: 'ngts-adaptive-dpr',
40
- standalone: true,
41
- providers: [RxActionFactory],
42
- }]
43
- }], propDecorators: { pixelated: [{
44
- type: Input
45
- }] } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRpdmUtZHByLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvcGVyZm9ybWFuY2Uvc3JjL2xpYi9hZGFwdGl2ZS9hZGFwdGl2ZS1kcHIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPckQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsVUFBVTtJQUwvQzs7UUFNcUIsVUFBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6QixZQUFPLEdBQUcsTUFBTSxDQUFDLENBQUEsZUFBdUMsQ0FBQSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFM0UsY0FBUyxHQUFHLEtBQUssQ0FBQztLQXVCOUI7SUFyQkcsUUFBUTtRQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO1lBQ3pDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztZQUN0RCxPQUFPLEdBQUcsRUFBRTtnQkFDUixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ3BELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN4QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBQzVELElBQUksTUFBTTtvQkFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQy9CLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxVQUFVO29CQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztZQUMvRSxDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFO1lBQzFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDbEQsTUFBTSxDQUFDLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNqRCxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLFVBQVU7Z0JBQy9CLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxrQkFBa0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1FBQzdGLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7NEdBMUJRLGVBQWU7Z0dBQWYsZUFBZSxvR0FGYixDQUFDLGVBQWUsQ0FBQzsyRkFFbkIsZUFBZTtrQkFMM0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDO2lCQUMvQjs4QkFLWSxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJ4QWN0aW9uRmFjdG9yeSB9IGZyb20gJ0ByeC1hbmd1bGFyL3N0YXRlL2FjdGlvbnMnO1xuaW1wb3J0IHsgTmd0UnhTdG9yZSwgTmd0U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLWFkYXB0aXZlLWRwcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtSeEFjdGlvbkZhY3RvcnldLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzQWRhcHRpdmVEcHIgZXh0ZW5kcyBOZ3RSeFN0b3JlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlID0gaW5qZWN0KE5ndFN0b3JlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbnMgPSBpbmplY3QoUnhBY3Rpb25GYWN0b3J5PHsgcmVzdG9yZVBpeGVsOiB2b2lkIH0+KS5jcmVhdGUoKTtcblxuICAgIEBJbnB1dCgpIHBpeGVsYXRlZCA9IGZhbHNlO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWZmZWN0KHRoaXMuYWN0aW9ucy5yZXN0b3JlUGl4ZWwkLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5zdG9yZS5nZXQoJ2dsJywgJ2RvbUVsZW1lbnQnKTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlID0gdGhpcy5zdG9yZS5nZXQoJ2ludGVybmFsJywgJ2FjdGl2ZScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNldERwciA9IHRoaXMuc3RvcmUuZ2V0KCdzZXREcHInKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbml0aWFsRHByID0gdGhpcy5zdG9yZS5nZXQoJ3ZpZXdwb3J0JywgJ2luaXRpYWxEcHInKTtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlKSBzZXREcHIoaW5pdGlhbERwcik7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGl4ZWxhdGVkICYmIGRvbUVsZW1lbnQpIGRvbUVsZW1lbnQuc3R5bGUuaW1hZ2VSZW5kZXJpbmcgPSAnYXV0byc7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmFjdGlvbnMucmVzdG9yZVBpeGVsKCk7XG5cbiAgICAgICAgdGhpcy5ob2xkKHRoaXMuc3RvcmUuc2VsZWN0KCdwZXJmb3JtYW5jZScsICdjdXJyZW50JyksIChwZXJmb3JtYW5jZUN1cnJlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZ2wsIHZpZXdwb3J0LCBzZXREcHIgfSA9IHRoaXMuc3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICBzZXREcHIocGVyZm9ybWFuY2VDdXJyZW50ICogdmlld3BvcnQuaW5pdGlhbERwcik7XG4gICAgICAgICAgICBpZiAodGhpcy5waXhlbGF0ZWQgJiYgZ2wuZG9tRWxlbWVudClcbiAgICAgICAgICAgICAgICBnbC5kb21FbGVtZW50LnN0eWxlLmltYWdlUmVuZGVyaW5nID0gcGVyZm9ybWFuY2VDdXJyZW50ID09PSAxID8gJ2F1dG8nIDogJ3BpeGVsYXRlZCc7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,36 +0,0 @@
1
- import { Directive, inject } from '@angular/core';
2
- import { RxActionFactory } from '@rx-angular/state/actions';
3
- import { NgtRxStore, NgtStore } from 'angular-three';
4
- import * as i0 from "@angular/core";
5
- export class NgtsAdaptiveEvents extends NgtRxStore {
6
- constructor() {
7
- super(...arguments);
8
- this.store = inject(NgtStore);
9
- this.actions = inject((RxActionFactory)).create();
10
- }
11
- ngOnInit() {
12
- this.effect(this.actions.setEvents$, () => {
13
- const enabled = this.store.get('events', 'enabled');
14
- return () => {
15
- const setEvents = this.store.get('setEvents');
16
- setEvents({ enabled });
17
- };
18
- });
19
- this.actions.setEvents();
20
- this.hold(this.store.select('performance', 'current'), (current) => {
21
- const setEvents = this.store.get('setEvents');
22
- setEvents({ enabled: current === 1 });
23
- });
24
- }
25
- }
26
- NgtsAdaptiveEvents.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsAdaptiveEvents, deps: null, target: i0.ɵɵFactoryTarget.Directive });
27
- NgtsAdaptiveEvents.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.5", type: NgtsAdaptiveEvents, isStandalone: true, selector: "ngts-adaptive-events", providers: [RxActionFactory], usesInheritance: true, ngImport: i0 });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsAdaptiveEvents, decorators: [{
29
- type: Directive,
30
- args: [{
31
- selector: 'ngts-adaptive-events',
32
- standalone: true,
33
- providers: [RxActionFactory],
34
- }]
35
- }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRpdmUtZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvcGVyZm9ybWFuY2Uvc3JjL2xpYi9hZGFwdGl2ZS9hZGFwdGl2ZS1ldmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU9yRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsVUFBVTtJQUxsRDs7UUFNcUIsVUFBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6QixZQUFPLEdBQUcsTUFBTSxDQUFDLENBQUEsZUFBb0MsQ0FBQSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7S0FpQnBGO0lBZkcsUUFBUTtRQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFO1lBQ3RDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNwRCxPQUFPLEdBQUcsRUFBRTtnQkFDUixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDOUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUMzQixDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFekIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUMvRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM5QyxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzsrR0FsQlEsa0JBQWtCO21HQUFsQixrQkFBa0IsbUVBRmhCLENBQUMsZUFBZSxDQUFDOzJGQUVuQixrQkFBa0I7a0JBTDlCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRSxDQUFDLGVBQWUsQ0FBQztpQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSeEFjdGlvbkZhY3RvcnkgfSBmcm9tICdAcngtYW5ndWxhci9zdGF0ZS9hY3Rpb25zJztcbmltcG9ydCB7IE5ndFJ4U3RvcmUsIE5ndFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnbmd0cy1hZGFwdGl2ZS1ldmVudHMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbUnhBY3Rpb25GYWN0b3J5XSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0FkYXB0aXZlRXZlbnRzIGV4dGVuZHMgTmd0UnhTdG9yZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yZSA9IGluamVjdChOZ3RTdG9yZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25zID0gaW5qZWN0KFJ4QWN0aW9uRmFjdG9yeTx7IHNldEV2ZW50czogdm9pZCB9PikuY3JlYXRlKCk7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZmZlY3QodGhpcy5hY3Rpb25zLnNldEV2ZW50cyQsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVuYWJsZWQgPSB0aGlzLnN0b3JlLmdldCgnZXZlbnRzJywgJ2VuYWJsZWQnKTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2V0RXZlbnRzID0gdGhpcy5zdG9yZS5nZXQoJ3NldEV2ZW50cycpO1xuICAgICAgICAgICAgICAgIHNldEV2ZW50cyh7IGVuYWJsZWQgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hY3Rpb25zLnNldEV2ZW50cygpO1xuXG4gICAgICAgIHRoaXMuaG9sZCh0aGlzLnN0b3JlLnNlbGVjdCgncGVyZm9ybWFuY2UnLCAnY3VycmVudCcpLCAoY3VycmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2V0RXZlbnRzID0gdGhpcy5zdG9yZS5nZXQoJ3NldEV2ZW50cycpO1xuICAgICAgICAgICAgc2V0RXZlbnRzKHsgZW5hYmxlZDogY3VycmVudCA9PT0gMSB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -1,53 +0,0 @@
1
- import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
2
- import { extend, injectNgtRef, NgtRxStore } from 'angular-three';
3
- import { combineLatest } from 'rxjs';
4
- import { LOD } from 'three';
5
- import * as i0 from "@angular/core";
6
- extend({ LOD });
7
- export class NgtsDetailed extends NgtRxStore {
8
- constructor() {
9
- super(...arguments);
10
- this.lodRef = injectNgtRef();
11
- }
12
- set distances(distances) {
13
- this.set({ distances });
14
- }
15
- ngOnInit() {
16
- this.updateLodChildren();
17
- }
18
- onLODBeforeRender({ object, state }) {
19
- object.update(state.camera);
20
- }
21
- updateLodChildren() {
22
- this.hold(combineLatest([this.lodRef.children$(), this.select('distances')]), ([children, distances]) => {
23
- this.lodRef.nativeElement.levels.length = 0;
24
- children.forEach((child, index) => {
25
- this.lodRef.nativeElement.addLevel(child, distances[index]);
26
- });
27
- });
28
- }
29
- }
30
- NgtsDetailed.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsDetailed, deps: null, target: i0.ɵɵFactoryTarget.Component });
31
- NgtsDetailed.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: NgtsDetailed, isStandalone: true, selector: "ngts-detailed[distances]", inputs: { lodRef: "lodRef", distances: "distances" }, usesInheritance: true, ngImport: i0, template: `
32
- <ngt-lOD [ref]="lodRef" ngtCompound (beforeRender)="onLODBeforeRender($any($event))">
33
- <ng-content />
34
- </ngt-lOD>
35
- `, isInline: true });
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsDetailed, decorators: [{
37
- type: Component,
38
- args: [{
39
- selector: 'ngts-detailed[distances]',
40
- standalone: true,
41
- template: `
42
- <ngt-lOD [ref]="lodRef" ngtCompound (beforeRender)="onLODBeforeRender($any($event))">
43
- <ng-content />
44
- </ngt-lOD>
45
- `,
46
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
47
- }]
48
- }], propDecorators: { lodRef: [{
49
- type: Input
50
- }], distances: [{
51
- type: Input
52
- }] } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9wZXJmb3JtYW5jZS9zcmMvbGliL2RldGFpbGVkL2RldGFpbGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUF3QixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sT0FBTyxDQUFDOztBQUU1QixNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBWWhCLE1BQU0sT0FBTyxZQUFhLFNBQVEsVUFBVTtJQVY1Qzs7UUFXYSxXQUFNLEdBQUcsWUFBWSxFQUFPLENBQUM7S0FzQnpDO0lBcEJHLElBQWEsU0FBUyxDQUFDLFNBQW1CO1FBQ3RDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBbUM7UUFDaEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVPLGlCQUFpQjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFO1lBQ3BHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzVDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDaEUsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O3lHQXRCUSxZQUFZOzZGQUFaLFlBQVksaUtBUFg7Ozs7S0FJVDsyRkFHUSxZQUFZO2tCQVZ4QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7S0FJVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEM7OEJBRVksTUFBTTtzQkFBZCxLQUFLO2dCQUVPLFNBQVM7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgaW5qZWN0Tmd0UmVmLCBOZ3RCZWZvcmVSZW5kZXJFdmVudCwgTmd0UnhTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTE9EIH0gZnJvbSAndGhyZWUnO1xuXG5leHRlbmQoeyBMT0QgfSk7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0cy1kZXRhaWxlZFtkaXN0YW5jZXNdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZ3QtbE9EIFtyZWZdPVwibG9kUmVmXCIgbmd0Q29tcG91bmQgKGJlZm9yZVJlbmRlcik9XCJvbkxPREJlZm9yZVJlbmRlcigkYW55KCRldmVudCkpXCI+XG4gICAgICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgICA8L25ndC1sT0Q+XG4gICAgYCxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNEZXRhaWxlZCBleHRlbmRzIE5ndFJ4U3RvcmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGxvZFJlZiA9IGluamVjdE5ndFJlZjxMT0Q+KCk7XG5cbiAgICBASW5wdXQoKSBzZXQgZGlzdGFuY2VzKGRpc3RhbmNlczogbnVtYmVyW10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkaXN0YW5jZXMgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTG9kQ2hpbGRyZW4oKTtcbiAgICB9XG5cbiAgICBvbkxPREJlZm9yZVJlbmRlcih7IG9iamVjdCwgc3RhdGUgfTogTmd0QmVmb3JlUmVuZGVyRXZlbnQ8VEhSRUUuTE9EPikge1xuICAgICAgICBvYmplY3QudXBkYXRlKHN0YXRlLmNhbWVyYSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVMb2RDaGlsZHJlbigpIHtcbiAgICAgICAgdGhpcy5ob2xkKGNvbWJpbmVMYXRlc3QoW3RoaXMubG9kUmVmLmNoaWxkcmVuJCgpLCB0aGlzLnNlbGVjdCgnZGlzdGFuY2VzJyldKSwgKFtjaGlsZHJlbiwgZGlzdGFuY2VzXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2RSZWYubmF0aXZlRWxlbWVudC5sZXZlbHMubGVuZ3RoID0gMDtcbiAgICAgICAgICAgIGNoaWxkcmVuLmZvckVhY2goKGNoaWxkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubG9kUmVmLm5hdGl2ZUVsZW1lbnQuYWRkTGV2ZWwoY2hpbGQsIGRpc3RhbmNlc1tpbmRleF0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,79 +0,0 @@
1
- import { DOCUMENT } from '@angular/common';
2
- import { Directive, inject, Input } from '@angular/core';
3
- import { addAfterEffect, addEffect, is, NgtRxStore, startWithUndefined } from 'angular-three';
4
- import { combineLatest } from 'rxjs';
5
- import * as Stats from 'stats.js';
6
- import * as i0 from "@angular/core";
7
- export class NgtsStats extends NgtRxStore {
8
- constructor() {
9
- super(...arguments);
10
- this.document = inject(DOCUMENT);
11
- this.stats = Stats['default']
12
- ? new Stats['default']()
13
- : new Stats();
14
- }
15
- set showPanel(showPanel) {
16
- this.set({ showPanel: showPanel === undefined ? this.get('showPanel') : showPanel });
17
- }
18
- set parent(parent) {
19
- this.set({ parent: is.ref(parent) ? parent.nativeElement : parent });
20
- }
21
- set classes(classes) {
22
- this.set({ classes });
23
- }
24
- set right(right) {
25
- this.set({ right });
26
- }
27
- initialize() {
28
- super.initialize();
29
- this.set({ showPanel: 0, right: false });
30
- }
31
- ngOnInit() {
32
- this.effect(combineLatest([
33
- this.select('showPanel'),
34
- this.select('right'),
35
- this.select('parent').pipe(startWithUndefined()),
36
- this.select('classes').pipe(startWithUndefined()),
37
- ]), ([showPanel, right, parent, classes]) => {
38
- const node = parent ?? this.document.body;
39
- this.stats.showPanel(showPanel);
40
- node.appendChild(this.stats.dom);
41
- if (classes) {
42
- this.stats.dom.classList.add(...classes.split(' ').filter((cls) => cls));
43
- }
44
- if (right) {
45
- this.stats.dom.style.right = '0px';
46
- this.stats.dom.style.left = 'inherit';
47
- }
48
- else {
49
- this.stats.dom.style.left = '0px';
50
- this.stats.dom.style.right = 'inherit';
51
- }
52
- const begin = addEffect(() => this.stats.begin());
53
- const end = addAfterEffect(() => this.stats.end());
54
- return () => {
55
- node.removeChild(this.stats.dom);
56
- begin();
57
- end();
58
- };
59
- });
60
- }
61
- }
62
- NgtsStats.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsStats, deps: null, target: i0.ɵɵFactoryTarget.Directive });
63
- NgtsStats.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.5", type: NgtsStats, isStandalone: true, selector: "ngts-stats", inputs: { showPanel: "showPanel", parent: "parent", classes: "classes", right: "right" }, usesInheritance: true, ngImport: i0 });
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsStats, decorators: [{
65
- type: Directive,
66
- args: [{
67
- selector: 'ngts-stats',
68
- standalone: true,
69
- }]
70
- }], propDecorators: { showPanel: [{
71
- type: Input
72
- }], parent: [{
73
- type: Input
74
- }], classes: [{
75
- type: Input
76
- }], right: [{
77
- type: Input
78
- }] } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9wZXJmb3JtYW5jZS9zcmMvbGliL3N0YXRzL3N0YXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFnQixVQUFVLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEtBQUssS0FBSyxNQUFNLFVBQVUsQ0FBQzs7QUFNbEMsTUFBTSxPQUFPLFNBQVUsU0FBUSxVQUFVO0lBSnpDOztRQUtxQixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLFVBQUssR0FBVyxLQUFzQixDQUFDLFNBQVMsQ0FBQztZQUM5RCxDQUFDLENBQUMsSUFBSyxLQUFzQixDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDO0tBdURyQjtJQXJERyxJQUFhLFNBQVMsQ0FBQyxTQUFpQjtRQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELElBQWEsTUFBTSxDQUFDLE1BQTZDO1FBQzdELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFN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QUUsSUFBSTtpQkFDbkI7OEJBT2dCLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxPQUFPO3NCQUFuQixLQUFLO2dCQUlPLEtBQUs7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYWRkQWZ0ZXJFZmZlY3QsIGFkZEVmZmVjdCwgaXMsIE5ndEFueVJlY29yZCwgTmd0UnhTdG9yZSwgc3RhcnRXaXRoVW5kZWZpbmVkIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBTdGF0cyBmcm9tICdzdGF0cy5qcyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnbmd0cy1zdGF0cycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1N0YXRzIGV4dGVuZHMgTmd0UnhTdG9yZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGF0czogU3RhdHMgPSAoU3RhdHMgYXMgTmd0QW55UmVjb3JkKVsnZGVmYXVsdCddXG4gICAgICAgID8gbmV3IChTdGF0cyBhcyBOZ3RBbnlSZWNvcmQpWydkZWZhdWx0J10oKVxuICAgICAgICA6IG5ldyBTdGF0cygpO1xuXG4gICAgQElucHV0KCkgc2V0IHNob3dQYW5lbChzaG93UGFuZWw6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHNob3dQYW5lbDogc2hvd1BhbmVsID09PSB1bmRlZmluZWQgPyB0aGlzLmdldCgnc2hvd1BhbmVsJykgOiBzaG93UGFuZWwgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHBhcmVudChwYXJlbnQ6IEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBwYXJlbnQ6IGlzLnJlZihwYXJlbnQpID8gcGFyZW50Lm5hdGl2ZUVsZW1lbnQgOiBwYXJlbnQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGNsYXNzZXMoY2xhc3Nlczogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgY2xhc3NlcyB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcmlnaHQocmlnaHQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyByaWdodCB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMuc2V0KHsgc2hvd1BhbmVsOiAwLCByaWdodDogZmFsc2UgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZWZmZWN0KFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ3Nob3dQYW5lbCcpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdyaWdodCcpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdwYXJlbnQnKS5waXBlKHN0YXJ0V2l0aFVuZGVmaW5lZCgpKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgnY2xhc3NlcycpLnBpcGUoc3RhcnRXaXRoVW5kZWZpbmVkKCkpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAoW3Nob3dQYW5lbCwgcmlnaHQsIHBhcmVudCwgY2xhc3Nlc10pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gcGFyZW50ID8/IHRoaXMuZG9jdW1lbnQuYm9keTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRzLnNob3dQYW5lbChzaG93UGFuZWwpO1xuICAgICAgICAgICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQodGhpcy5zdGF0cy5kb20pO1xuICAgICAgICAgICAgICAgIGlmIChjbGFzc2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdHMuZG9tLmNsYXNzTGlzdC5hZGQoLi4uY2xhc3Nlcy5zcGxpdCgnICcpLmZpbHRlcigoY2xzOiBzdHJpbmcpID0+IGNscykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0cy5kb20uc3R5bGUucmlnaHQgPSAnMHB4JztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0cy5kb20uc3R5bGUubGVmdCA9ICdpbmhlcml0JztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRzLmRvbS5zdHlsZS5sZWZ0ID0gJzBweCc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdHMuZG9tLnN0eWxlLnJpZ2h0ID0gJ2luaGVyaXQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBiZWdpbiA9IGFkZEVmZmVjdCgoKSA9PiB0aGlzLnN0YXRzLmJlZ2luKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZCA9IGFkZEFmdGVyRWZmZWN0KCgpID0+IHRoaXMuc3RhdHMuZW5kKCkpO1xuICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQ2hpbGQodGhpcy5zdGF0cy5kb20pO1xuICAgICAgICAgICAgICAgICAgICBiZWdpbigpO1xuICAgICAgICAgICAgICAgICAgICBlbmQoKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==