angular-three-soba 2.0.0-beta.26 → 2.0.0-beta.261

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 (397) hide show
  1. package/README.md +62 -4
  2. package/abstractions/README.md +278 -2
  3. package/abstractions/index.d.ts +11 -6
  4. package/abstractions/lib/catmull-rom-line.d.ts +648 -0
  5. package/abstractions/lib/cubic-bezier-line.d.ts +19 -0
  6. package/abstractions/lib/edges.d.ts +850 -0
  7. package/abstractions/lib/gradient-texture.d.ts +24 -0
  8. package/abstractions/lib/grid.d.ts +339 -0
  9. package/abstractions/lib/helper.d.ts +25 -0
  10. package/abstractions/lib/line.d.ts +41 -0
  11. package/abstractions/lib/prism-geometry.d.ts +30 -0
  12. package/abstractions/lib/quadratic-bezier-line.d.ts +21 -0
  13. package/abstractions/lib/text-3d.d.ts +338 -0
  14. package/abstractions/lib/text.d.ts +55 -0
  15. package/cameras/README.md +91 -2
  16. package/cameras/index.d.ts +4 -4
  17. package/cameras/lib/camera-content.d.ts +10 -0
  18. package/cameras/lib/cube-camera.d.ts +38 -0
  19. package/cameras/lib/orthographic-camera.d.ts +40 -0
  20. package/cameras/lib/perspective-camera.d.ts +36 -0
  21. package/controls/README.md +95 -2
  22. package/controls/index.d.ts +2 -1
  23. package/controls/lib/camera-controls.d.ts +31 -0
  24. package/controls/lib/orbit-controls.d.ts +38 -0
  25. package/esm2022/abstractions/index.mjs +12 -7
  26. package/esm2022/abstractions/lib/catmull-rom-line.mjs +76 -0
  27. package/esm2022/abstractions/lib/cubic-bezier-line.mjs +51 -0
  28. package/esm2022/abstractions/lib/edges.mjs +70 -0
  29. package/esm2022/abstractions/lib/gradient-texture.mjs +91 -0
  30. package/esm2022/abstractions/lib/grid.mjs +103 -0
  31. package/esm2022/abstractions/lib/helper.mjs +80 -0
  32. package/esm2022/abstractions/lib/line.mjs +123 -0
  33. package/esm2022/abstractions/lib/prism-geometry.mjs +55 -0
  34. package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +73 -0
  35. package/esm2022/abstractions/lib/text-3d.mjs +98 -0
  36. package/esm2022/abstractions/lib/text.mjs +92 -0
  37. package/esm2022/cameras/index.mjs +5 -5
  38. package/esm2022/cameras/lib/camera-content.mjs +14 -0
  39. package/esm2022/cameras/lib/cube-camera.mjs +111 -0
  40. package/esm2022/cameras/lib/orthographic-camera.mjs +131 -0
  41. package/esm2022/cameras/lib/perspective-camera.mjs +104 -0
  42. package/esm2022/controls/index.mjs +3 -2
  43. package/esm2022/controls/lib/camera-controls.mjs +127 -0
  44. package/esm2022/controls/lib/orbit-controls.mjs +126 -0
  45. package/esm2022/loaders/index.mjs +6 -5
  46. package/esm2022/loaders/lib/font-loader.mjs +49 -0
  47. package/esm2022/loaders/lib/gltf-loader.mjs +33 -0
  48. package/esm2022/loaders/lib/loader.mjs +109 -0
  49. package/esm2022/loaders/lib/progress.mjs +51 -0
  50. package/esm2022/loaders/lib/texture-loader.mjs +32 -0
  51. package/esm2022/materials/index.mjs +7 -7
  52. package/esm2022/materials/lib/custom-shader-material.mjs +71 -0
  53. package/esm2022/materials/lib/mesh-distort-material.mjs +42 -0
  54. package/esm2022/materials/lib/mesh-reflector-material.mjs +278 -0
  55. package/esm2022/materials/lib/mesh-refraction-material.mjs +144 -0
  56. package/esm2022/materials/lib/mesh-transmission-material.mjs +188 -0
  57. package/esm2022/materials/lib/mesh-wobble-material.mjs +42 -0
  58. package/esm2022/misc/index.mjs +10 -14
  59. package/esm2022/misc/lib/animations.mjs +74 -0
  60. package/esm2022/misc/lib/bake-shadows.mjs +26 -0
  61. package/esm2022/misc/lib/computed-attribute.mjs +56 -0
  62. package/esm2022/misc/lib/constants.mjs +5 -0
  63. package/esm2022/misc/lib/decal.mjs +135 -0
  64. package/esm2022/misc/lib/deprecated.mjs +15 -0
  65. package/esm2022/misc/lib/depth-buffer.mjs +39 -0
  66. package/esm2022/misc/lib/fbo.mjs +89 -0
  67. package/esm2022/misc/lib/sampler.mjs +121 -0
  68. package/esm2022/shaders/index.mjs +3 -18
  69. package/esm2022/shaders/lib/grid-material.mjs +81 -0
  70. package/esm2022/shaders/lib/mesh-refraction-material.mjs +163 -0
  71. package/esm2022/staging/index.mjs +19 -22
  72. package/esm2022/staging/lib/accumulative-shadows.mjs +182 -0
  73. package/esm2022/staging/lib/backdrop.mjs +73 -0
  74. package/esm2022/staging/lib/bb-anchor.mjs +58 -0
  75. package/esm2022/staging/lib/bounds.mjs +286 -0
  76. package/esm2022/staging/lib/camera-shake.mjs +69 -0
  77. package/esm2022/staging/lib/caustics.mjs +188 -0
  78. package/esm2022/staging/lib/center.mjs +113 -0
  79. package/esm2022/staging/lib/contact-shadows.mjs +201 -0
  80. package/esm2022/staging/lib/environment.mjs +465 -0
  81. package/esm2022/staging/lib/float.mjs +60 -0
  82. package/esm2022/staging/lib/lightformer.mjs +107 -0
  83. package/esm2022/staging/lib/matcap-texture.mjs +81 -0
  84. package/esm2022/staging/lib/normal-texture.mjs +85 -0
  85. package/esm2022/staging/lib/randomized-lights.mjs +104 -0
  86. package/esm2022/staging/lib/render-texture.mjs +213 -0
  87. package/esm2022/staging/lib/sky.mjs +86 -0
  88. package/esm2022/staging/lib/spot-light.mjs +450 -0
  89. package/esm2022/staging/lib/stage.mjs +236 -0
  90. package/esm2022/vanilla-exports/angular-three-soba-vanilla-exports.mjs +5 -0
  91. package/esm2022/vanilla-exports/index.mjs +3 -0
  92. package/fesm2022/angular-three-soba-abstractions.mjs +739 -718
  93. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  94. package/fesm2022/angular-three-soba-cameras.mjs +260 -307
  95. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  96. package/fesm2022/angular-three-soba-controls.mjs +174 -110
  97. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  98. package/fesm2022/angular-three-soba-loaders.mjs +151 -129
  99. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  100. package/fesm2022/angular-three-soba-materials.mjs +511 -764
  101. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  102. package/fesm2022/angular-three-soba-misc.mjs +405 -2149
  103. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  104. package/fesm2022/angular-three-soba-shaders.mjs +33 -1373
  105. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  106. package/fesm2022/angular-three-soba-staging.mjs +2329 -3538
  107. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  108. package/fesm2022/angular-three-soba-vanilla-exports.mjs +6 -0
  109. package/fesm2022/angular-three-soba-vanilla-exports.mjs.map +1 -0
  110. package/loaders/README.md +130 -2
  111. package/loaders/index.d.ts +5 -4
  112. package/loaders/lib/font-loader.d.ts +27 -0
  113. package/loaders/lib/gltf-loader.d.ts +21 -0
  114. package/loaders/lib/loader.d.ts +29 -0
  115. package/loaders/lib/progress.d.ts +9 -0
  116. package/loaders/lib/texture-loader.d.ts +13 -0
  117. package/materials/README.md +160 -2
  118. package/materials/index.d.ts +6 -6
  119. package/materials/lib/custom-shader-material.d.ts +19 -0
  120. package/materials/lib/mesh-distort-material.d.ts +18 -0
  121. package/materials/lib/mesh-reflector-material.d.ts +50 -0
  122. package/materials/lib/mesh-refraction-material.d.ts +42 -0
  123. package/materials/lib/mesh-transmission-material.d.ts +77 -0
  124. package/materials/lib/mesh-wobble-material.d.ts +15 -0
  125. package/metadata.json +1 -1
  126. package/misc/README.md +217 -2
  127. package/misc/index.d.ts +9 -13
  128. package/misc/lib/animations.d.ts +14 -0
  129. package/misc/lib/computed-attribute.d.ts +69 -0
  130. package/misc/lib/constants.d.ts +1 -0
  131. package/misc/lib/decal.d.ts +27 -0
  132. package/misc/lib/deprecated.d.ts +14 -0
  133. package/misc/lib/depth-buffer.d.ts +8 -0
  134. package/misc/lib/fbo.d.ts +47 -0
  135. package/misc/lib/sampler.d.ts +73 -0
  136. package/package.json +60 -38
  137. package/shaders/index.d.ts +2 -17
  138. package/shaders/lib/grid-material.d.ts +69 -0
  139. package/shaders/lib/mesh-refraction-material.d.ts +11 -0
  140. package/staging/README.md +472 -2
  141. package/staging/index.d.ts +18 -21
  142. package/staging/lib/accumulative-shadows.d.ts +75 -0
  143. package/staging/lib/backdrop.d.ts +22 -0
  144. package/staging/lib/bb-anchor.d.ts +17 -0
  145. package/staging/lib/bounds.d.ts +47 -0
  146. package/staging/lib/camera-shake.d.ts +29 -0
  147. package/staging/lib/caustics.d.ts +53 -0
  148. package/staging/lib/center.d.ts +422 -0
  149. package/staging/lib/contact-shadows.d.ts +45 -0
  150. package/staging/lib/environment.d.ts +159 -0
  151. package/staging/lib/float.d.ts +19 -0
  152. package/staging/lib/lightformer.d.ts +334 -0
  153. package/staging/lib/matcap-texture.d.ts +32 -0
  154. package/staging/lib/normal-texture.d.ts +37 -0
  155. package/staging/lib/randomized-lights.d.ts +54 -0
  156. package/staging/lib/render-texture.d.ts +64 -0
  157. package/staging/lib/sky.d.ts +32 -0
  158. package/staging/lib/spot-light.d.ts +120 -0
  159. package/staging/lib/stage.d.ts +376 -0
  160. package/vanilla-exports/README.md +3 -0
  161. package/vanilla-exports/index.d.ts +27 -0
  162. package/web-types.json +1 -1
  163. package/abstractions/billboard/billboard.d.ts +0 -28
  164. package/abstractions/detailed/detailed.d.ts +0 -26
  165. package/abstractions/edges/edges.d.ts +0 -34
  166. package/abstractions/grid/grid.d.ts +0 -50
  167. package/abstractions/text/text.d.ts +0 -82
  168. package/abstractions/text-3d/text-3d.d.ts +0 -84
  169. package/assets/distort.vert.glsl +0 -1
  170. package/cameras/camera/camera-content.d.ts +0 -13
  171. package/cameras/camera/camera.d.ts +0 -26
  172. package/cameras/cube-camera/cube-camera.d.ts +0 -69
  173. package/cameras/orthographic-camera/orthographic-camera.d.ts +0 -37
  174. package/cameras/perspective-camera/perspective-camera.d.ts +0 -18
  175. package/controls/orbit-controls/orbit-controls.d.ts +0 -54
  176. package/esm2022/abstractions/billboard/billboard.mjs +0 -74
  177. package/esm2022/abstractions/detailed/detailed.mjs +0 -64
  178. package/esm2022/abstractions/edges/edges.mjs +0 -88
  179. package/esm2022/abstractions/grid/grid.mjs +0 -180
  180. package/esm2022/abstractions/text/text.mjs +0 -274
  181. package/esm2022/abstractions/text-3d/text-3d.mjs +0 -172
  182. package/esm2022/cameras/camera/camera-content.mjs +0 -21
  183. package/esm2022/cameras/camera/camera.mjs +0 -77
  184. package/esm2022/cameras/cube-camera/cube-camera.mjs +0 -161
  185. package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +0 -102
  186. package/esm2022/cameras/perspective-camera/perspective-camera.mjs +0 -46
  187. package/esm2022/controls/orbit-controls/orbit-controls.mjs +0 -185
  188. package/esm2022/gizmos/angular-three-soba-gizmos.mjs +0 -5
  189. package/esm2022/gizmos/gizmo-helper/gizmo-helper.mjs +0 -197
  190. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
  191. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -93
  192. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -150
  193. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.mjs +0 -66
  194. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -71
  195. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -195
  196. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -272
  197. package/esm2022/gizmos/index.mjs +0 -4
  198. package/esm2022/loaders/gltf-loader/gltf-loader.mjs +0 -30
  199. package/esm2022/loaders/loader/loader.mjs +0 -138
  200. package/esm2022/loaders/progress/progress.mjs +0 -52
  201. package/esm2022/loaders/texture-loader/texture-loader.mjs +0 -28
  202. package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +0 -82
  203. package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +0 -367
  204. package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +0 -171
  205. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +0 -278
  206. package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +0 -68
  207. package/esm2022/materials/point-material/point-material.mjs +0 -50
  208. package/esm2022/misc/animations/animations.mjs +0 -59
  209. package/esm2022/misc/bake-shadows/bake-shadows.mjs +0 -24
  210. package/esm2022/misc/caustics/caustics.mjs +0 -387
  211. package/esm2022/misc/decal/decal.mjs +0 -187
  212. package/esm2022/misc/depth-buffer/depth-buffer.mjs +0 -44
  213. package/esm2022/misc/example/example.mjs +0 -160
  214. package/esm2022/misc/fbo/fbo.mjs +0 -47
  215. package/esm2022/misc/html/html-wrapper.mjs +0 -478
  216. package/esm2022/misc/html/html.mjs +0 -304
  217. package/esm2022/misc/sampler/sampler.mjs +0 -142
  218. package/esm2022/misc/shadow/shadow.mjs +0 -111
  219. package/esm2022/misc/stats-gl/stats-gl.mjs +0 -61
  220. package/esm2022/misc/trail/trail.mjs +0 -209
  221. package/esm2022/misc/trail-texture/inject-trail-texture.mjs +0 -17
  222. package/esm2022/misc/trail-texture/trail-texture.mjs +0 -106
  223. package/esm2022/modifiers/angular-three-soba-modifiers.mjs +0 -5
  224. package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +0 -64
  225. package/esm2022/modifiers/index.mjs +0 -2
  226. package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +0 -44
  227. package/esm2022/performances/adaptive-events/adaptive-events.mjs +0 -27
  228. package/esm2022/performances/angular-three-soba-performances.mjs +0 -5
  229. package/esm2022/performances/index.mjs +0 -8
  230. package/esm2022/performances/instances/instances.mjs +0 -220
  231. package/esm2022/performances/instances/position-mesh.mjs +0 -52
  232. package/esm2022/performances/points/points-input.mjs +0 -64
  233. package/esm2022/performances/points/points.mjs +0 -326
  234. package/esm2022/performances/points/position-point.mjs +0 -54
  235. package/esm2022/performances/segments/segment-object.mjs +0 -9
  236. package/esm2022/performances/segments/segments.mjs +0 -182
  237. package/esm2022/shaders/blur-pass/blur-pass.mjs +0 -61
  238. package/esm2022/shaders/caustics/caustics-material.mjs +0 -130
  239. package/esm2022/shaders/caustics/caustics-projection-material.mjs +0 -31
  240. package/esm2022/shaders/convolution-material/convolution-material.mjs +0 -94
  241. package/esm2022/shaders/discard-material/discard-material.mjs +0 -3
  242. package/esm2022/shaders/grid-material/grid-material.mjs +0 -77
  243. package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +0 -56
  244. package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +0 -223
  245. package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +0 -170
  246. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +0 -268
  247. package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +0 -37
  248. package/esm2022/shaders/shader-material/shader-material.mjs +0 -34
  249. package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +0 -25
  250. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +0 -33
  251. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +0 -86
  252. package/esm2022/shaders/star-field-material/star-field-material.mjs +0 -33
  253. package/esm2022/shaders/wireframe-material/wireframe-material.mjs +0 -247
  254. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +0 -267
  255. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +0 -108
  256. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +0 -206
  257. package/esm2022/staging/backdrop/backdrop.mjs +0 -77
  258. package/esm2022/staging/bb-anchor/bb-anchor.mjs +0 -69
  259. package/esm2022/staging/bounds/bounds.mjs +0 -308
  260. package/esm2022/staging/camera-shake/camera-shake.mjs +0 -123
  261. package/esm2022/staging/center/center.mjs +0 -165
  262. package/esm2022/staging/cloud/cloud.mjs +0 -158
  263. package/esm2022/staging/contact-shadows/contact-shadows.mjs +0 -246
  264. package/esm2022/staging/environment/assets.mjs +0 -13
  265. package/esm2022/staging/environment/environment-cube.mjs +0 -47
  266. package/esm2022/staging/environment/environment-ground.mjs +0 -41
  267. package/esm2022/staging/environment/environment-input.mjs +0 -119
  268. package/esm2022/staging/environment/environment-map.mjs +0 -53
  269. package/esm2022/staging/environment/environment-portal.mjs +0 -113
  270. package/esm2022/staging/environment/environment.mjs +0 -61
  271. package/esm2022/staging/environment/utils.mjs +0 -106
  272. package/esm2022/staging/float/float.mjs +0 -94
  273. package/esm2022/staging/matcap-texture/matcap-texture.mjs +0 -64
  274. package/esm2022/staging/normal-texture/normal-texture.mjs +0 -53
  275. package/esm2022/staging/sky/sky.mjs +0 -119
  276. package/esm2022/staging/sparkles/sparkles.mjs +0 -164
  277. package/esm2022/staging/spot-light/shadow-mesh-input.mjs +0 -63
  278. package/esm2022/staging/spot-light/shadow-mesh.mjs +0 -266
  279. package/esm2022/staging/spot-light/spot-light-input.mjs +0 -84
  280. package/esm2022/staging/spot-light/spot-light.mjs +0 -81
  281. package/esm2022/staging/spot-light/volumetric-mesh.mjs +0 -98
  282. package/esm2022/staging/stage/stage.mjs +0 -389
  283. package/esm2022/staging/stars/stars.mjs +0 -147
  284. package/esm2022/staging/wireframe/wireframe-input.mjs +0 -191
  285. package/esm2022/staging/wireframe/wireframe.mjs +0 -228
  286. package/esm2022/utils/angular-three-soba-utils.mjs +0 -5
  287. package/esm2022/utils/content/content.mjs +0 -15
  288. package/esm2022/utils/index.mjs +0 -2
  289. package/fesm2022/angular-three-soba-gizmos.mjs +0 -1043
  290. package/fesm2022/angular-three-soba-gizmos.mjs.map +0 -1
  291. package/fesm2022/angular-three-soba-modifiers.mjs +0 -71
  292. package/fesm2022/angular-three-soba-modifiers.mjs.map +0 -1
  293. package/fesm2022/angular-three-soba-performances.mjs +0 -956
  294. package/fesm2022/angular-three-soba-performances.mjs.map +0 -1
  295. package/fesm2022/angular-three-soba-utils.mjs +0 -22
  296. package/fesm2022/angular-three-soba-utils.mjs.map +0 -1
  297. package/gizmos/README.md +0 -3
  298. package/gizmos/gizmo-helper/gizmo-helper.d.ts +0 -69
  299. package/gizmos/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -12
  300. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
  301. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -29
  302. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.d.ts +0 -33
  303. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -10
  304. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -40
  305. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -30
  306. package/gizmos/index.d.ts +0 -3
  307. package/loaders/gltf-loader/gltf-loader.d.ts +0 -10
  308. package/loaders/loader/loader.d.ts +0 -33
  309. package/loaders/progress/progress.d.ts +0 -9
  310. package/loaders/texture-loader/texture-loader.d.ts +0 -7
  311. package/materials/mesh-distort-material/mesh-distort-material.d.ts +0 -40
  312. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +0 -99
  313. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +0 -62
  314. package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +0 -107
  315. package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +0 -29
  316. package/materials/point-material/point-material.d.ts +0 -24
  317. package/misc/animations/animations.d.ts +0 -15
  318. package/misc/caustics/caustics.d.ts +0 -87
  319. package/misc/decal/decal.d.ts +0 -49
  320. package/misc/depth-buffer/depth-buffer.d.ts +0 -9
  321. package/misc/example/example.d.ts +0 -81
  322. package/misc/fbo/fbo.d.ts +0 -17
  323. package/misc/html/html-wrapper.d.ts +0 -559
  324. package/misc/html/html.d.ts +0 -214
  325. package/misc/sampler/sampler.d.ts +0 -67
  326. package/misc/shadow/shadow.d.ts +0 -37
  327. package/misc/stats-gl/stats-gl.d.ts +0 -24
  328. package/misc/trail/trail.d.ts +0 -57
  329. package/misc/trail-texture/inject-trail-texture.d.ts +0 -9
  330. package/misc/trail-texture/trail-texture.d.ts +0 -50
  331. package/modifiers/README.md +0 -3
  332. package/modifiers/curve-modifier/curve-modifier.d.ts +0 -23
  333. package/modifiers/index.d.ts +0 -1
  334. package/performances/README.md +0 -3
  335. package/performances/adaptive-dpr/adaptive-dpr.d.ts +0 -14
  336. package/performances/adaptive-events/adaptive-events.d.ts +0 -9
  337. package/performances/index.d.ts +0 -7
  338. package/performances/instances/instances.d.ts +0 -79
  339. package/performances/instances/position-mesh.d.ts +0 -10
  340. package/performances/points/points-input.d.ts +0 -32
  341. package/performances/points/points.d.ts +0 -92
  342. package/performances/points/position-point.d.ts +0 -11
  343. package/performances/segments/segment-object.d.ts +0 -7
  344. package/performances/segments/segments.d.ts +0 -124
  345. package/shaders/blur-pass/blur-pass.d.ts +0 -23
  346. package/shaders/caustics/caustics-material.d.ts +0 -4
  347. package/shaders/caustics/caustics-projection-material.d.ts +0 -4
  348. package/shaders/convolution-material/convolution-material.d.ts +0 -7
  349. package/shaders/discard-material/discard-material.d.ts +0 -3
  350. package/shaders/grid-material/grid-material.d.ts +0 -37
  351. package/shaders/mesh-distort-material/mesh-distort-material.d.ts +0 -295
  352. package/shaders/mesh-reflector-material/mesh-reflector-material.d.ts +0 -50
  353. package/shaders/mesh-refraction-material/mesh-refraction-material.d.ts +0 -4
  354. package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +0 -25
  355. package/shaders/mesh-wobble-material/mesh-wobble-material.d.ts +0 -16
  356. package/shaders/shader-material/shader-material.d.ts +0 -6
  357. package/shaders/soft-shadow-material/soft-shadow-material.d.ts +0 -19
  358. package/shaders/sparkles-material/sparkles-material.d.ts +0 -17
  359. package/shaders/spot-light-material/spot-light-material.d.ts +0 -13
  360. package/shaders/star-field-material/star-field-material.d.ts +0 -13
  361. package/shaders/wireframe-material/wireframe-material.d.ts +0 -58
  362. package/staging/accumulative-shadows/accumulative-shadows.d.ts +0 -146
  363. package/staging/accumulative-shadows/progressive-light-map.d.ts +0 -34
  364. package/staging/accumulative-shadows/randomized-lights.d.ts +0 -90
  365. package/staging/backdrop/backdrop.d.ts +0 -30
  366. package/staging/bb-anchor/bb-anchor.d.ts +0 -27
  367. package/staging/bounds/bounds.d.ts +0 -134
  368. package/staging/camera-shake/camera-shake.d.ts +0 -43
  369. package/staging/center/center.d.ts +0 -70
  370. package/staging/cloud/cloud.d.ts +0 -51
  371. package/staging/contact-shadows/contact-shadows.d.ts +0 -70
  372. package/staging/environment/assets.d.ts +0 -13
  373. package/staging/environment/environment-cube.d.ts +0 -15
  374. package/staging/environment/environment-ground.d.ts +0 -13
  375. package/staging/environment/environment-input.d.ts +0 -68
  376. package/staging/environment/environment-map.d.ts +0 -16
  377. package/staging/environment/environment-portal.d.ts +0 -18
  378. package/staging/environment/environment.d.ts +0 -8
  379. package/staging/environment/utils.d.ts +0 -7
  380. package/staging/float/float.d.ts +0 -31
  381. package/staging/matcap-texture/matcap-texture.d.ts +0 -13
  382. package/staging/normal-texture/normal-texture.d.ts +0 -16
  383. package/staging/sky/sky.d.ts +0 -48
  384. package/staging/sparkles/sparkles.d.ts +0 -63
  385. package/staging/spot-light/shadow-mesh-input.d.ts +0 -29
  386. package/staging/spot-light/shadow-mesh.d.ts +0 -37
  387. package/staging/spot-light/spot-light-input.d.ts +0 -38
  388. package/staging/spot-light/spot-light.d.ts +0 -39
  389. package/staging/spot-light/volumetric-mesh.d.ts +0 -24
  390. package/staging/stage/stage.d.ts +0 -130
  391. package/staging/stars/stars.d.ts +0 -45
  392. package/staging/wireframe/wireframe-input.d.ts +0 -65
  393. package/staging/wireframe/wireframe.d.ts +0 -28
  394. package/utils/README.md +0 -3
  395. package/utils/content/content.d.ts +0 -8
  396. package/utils/index.d.ts +0 -1
  397. /package/misc/{bake-shadows → lib}/bake-shadows.d.ts +0 -0
@@ -0,0 +1,92 @@
1
+ import { NgTemplateOutlet } from '@angular/common';
2
+ import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, DestroyRef, afterNextRender, computed, inject, input, output, } from '@angular/core';
3
+ import { NgtArgs, injectStore, omit, pick } from 'angular-three';
4
+ import { injectAutoEffect } from 'ngxtension/auto-effect';
5
+ import { mergeInputs } from 'ngxtension/inject-inputs';
6
+ // @ts-expect-error - no type def
7
+ import { Text, preloadFont } from 'troika-three-text';
8
+ import * as i0 from "@angular/core";
9
+ const defaultOptions = {
10
+ sdfGlyphSize: 64,
11
+ anchorX: 'center',
12
+ anchorY: 'middle',
13
+ fontSize: 1,
14
+ };
15
+ export class NgtsText {
16
+ constructor() {
17
+ this.text = input.required();
18
+ this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
19
+ this.parameters = omit(this.options, ['font', 'fontSize', 'sdfGlyphSize', 'anchorX', 'anchorY', 'characters']);
20
+ this.synced = output();
21
+ this.autoEffect = injectAutoEffect();
22
+ this.store = injectStore();
23
+ this.invalidate = this.store.select('invalidate');
24
+ this.characters = pick(this.options, 'characters');
25
+ this.font = pick(this.options, 'font');
26
+ this.anchorX = pick(this.options, 'anchorX');
27
+ this.anchorY = pick(this.options, 'anchorY');
28
+ this.sdfGlyphSize = pick(this.options, 'sdfGlyphSize');
29
+ this.fontSize = pick(this.options, 'fontSize');
30
+ this.troikaMesh = computed(() => new Text(), { equal: Object.is });
31
+ this.args = computed(() => [this.troikaMesh()]);
32
+ inject(DestroyRef).onDestroy(() => {
33
+ this.troikaMesh().dispose();
34
+ });
35
+ // NOTE: this could be just effect but autoEffect is used for consistency
36
+ this.autoEffect(() => {
37
+ const [font, characters, invalidate] = [this.font(), this.characters(), this.invalidate()];
38
+ if (font) {
39
+ preloadFont({ font, characters }, () => invalidate());
40
+ }
41
+ });
42
+ afterNextRender(() => {
43
+ this.autoEffect(() => {
44
+ const [invalidate, text] = [this.invalidate(), this.text(), this.options()];
45
+ this.troikaMesh().sync(() => {
46
+ invalidate();
47
+ this.synced.emit(this.troikaMesh());
48
+ });
49
+ });
50
+ });
51
+ }
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsText, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
53
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.0", type: NgtsText, isStandalone: true, selector: "ngts-text", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { synced: "synced" }, ngImport: i0, template: `
54
+ <ngt-primitive
55
+ *args="args()"
56
+ [text]="text()"
57
+ [font]="font()"
58
+ [anchorX]="anchorX()"
59
+ [anchorY]="anchorY()"
60
+ [sdfGlyphSize]="sdfGlyphSize()"
61
+ [fontSize]="fontSize()"
62
+ [parameters]="parameters()"
63
+ >
64
+ <ng-content />
65
+ </ngt-primitive>
66
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
67
+ }
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsText, decorators: [{
69
+ type: Component,
70
+ args: [{
71
+ selector: 'ngts-text',
72
+ standalone: true,
73
+ template: `
74
+ <ngt-primitive
75
+ *args="args()"
76
+ [text]="text()"
77
+ [font]="font()"
78
+ [anchorX]="anchorX()"
79
+ [anchorY]="anchorY()"
80
+ [sdfGlyphSize]="sdfGlyphSize()"
81
+ [fontSize]="fontSize()"
82
+ [parameters]="parameters()"
83
+ >
84
+ <ng-content />
85
+ </ngt-primitive>
86
+ `,
87
+ imports: [NgtArgs, NgTemplateOutlet],
88
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
89
+ changeDetection: ChangeDetectionStrategy.OnPush,
90
+ }]
91
+ }], ctorParameters: () => [] });
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9hYnN0cmFjdGlvbnMvc3JjL2xpYi90ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFDTixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsZUFBZSxFQUNmLFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFXLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RCxpQ0FBaUM7QUFDakMsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFtQ3RELE1BQU0sY0FBYyxHQUFvQjtJQUN2QyxZQUFZLEVBQUUsRUFBRTtJQUNoQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixRQUFRLEVBQUUsQ0FBQztDQUNYLENBQUM7QUF1QkYsTUFBTSxPQUFPLFFBQVE7SUFzQnBCO1FBckJBLFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDaEMsWUFBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RSxlQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUs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LEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQy9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHREZXN0cm95UmVmLFxuXHRhZnRlck5leHRSZW5kZXIsXG5cdGNvbXB1dGVkLFxuXHRpbmplY3QsXG5cdGlucHV0LFxuXHRvdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgTmd0TWVzaCwgaW5qZWN0U3RvcmUsIG9taXQsIHBpY2sgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGluamVjdEF1dG9FZmZlY3QgfSBmcm9tICduZ3h0ZW5zaW9uL2F1dG8tZWZmZWN0JztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IENvbG9yUmVwcmVzZW50YXRpb24gfSBmcm9tICd0aHJlZSc7XG4vLyBAdHMtZXhwZWN0LWVycm9yIC0gbm8gdHlwZSBkZWZcbmltcG9ydCB7IFRleHQsIHByZWxvYWRGb250IH0gZnJvbSAndHJvaWthLXRocmVlLXRleHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNUZXh0T3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8Tmd0TWVzaD4ge1xuXHRjaGFyYWN0ZXJzPzogc3RyaW5nO1xuXHRjb2xvcj86IENvbG9yUmVwcmVzZW50YXRpb247XG5cdC8qKiBGb250IHNpemUsIGRlZmF1bHQ6IDEgKi9cblx0Zm9udFNpemU6IG51bWJlcjtcblx0Zm9udFdlaWdodD86IG51bWJlciB8IHN0cmluZztcblx0Zm9udFN0eWxlPzogJ2l0YWxpYycgfCAnbm9ybWFsJztcblx0bWF4V2lkdGg/OiBudW1iZXI7XG5cdGxpbmVIZWlnaHQ/OiBudW1iZXI7XG5cdGxldHRlclNwYWNpbmc/OiBudW1iZXI7XG5cdHRleHRBbGlnbj86ICdsZWZ0JyB8ICdyaWdodCcgfCAnY2VudGVyJyB8ICdqdXN0aWZ5Jztcblx0Zm9udD86IHN0cmluZztcblx0YW5jaG9yWDogbnVtYmVyIHwgJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnO1xuXHRhbmNob3JZOiBudW1iZXIgfCAndG9wJyB8ICd0b3AtYmFzZWxpbmUnIHwgJ21pZGRsZScgfCAnYm90dG9tLWJhc2VsaW5lJyB8ICdib3R0b20nO1xuXHRjbGlwUmVjdD86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuXHRkZXB0aE9mZnNldD86IG51bWJlcjtcblx0ZGlyZWN0aW9uPzogJ2F1dG8nIHwgJ2x0cicgfCAncnRsJztcblx0b3ZlcmZsb3dXcmFwPzogJ25vcm1hbCcgfCAnYnJlYWstd29yZCc7XG5cdHdoaXRlU3BhY2U/OiAnbm9ybWFsJyB8ICdvdmVyZmxvd1dyYXAnIHwgJ25vd3JhcCc7XG5cdG91dGxpbmVXaWR0aD86IG51bWJlciB8IHN0cmluZztcblx0b3V0bGluZU9mZnNldFg/OiBudW1iZXIgfCBzdHJpbmc7XG5cdG91dGxpbmVPZmZzZXRZPzogbnVtYmVyIHwgc3RyaW5nO1xuXHRvdXRsaW5lQmx1cj86IG51bWJlciB8IHN0cmluZztcblx0b3V0bGluZUNvbG9yPzogQ29sb3JSZXByZXNlbnRhdGlvbjtcblx0b3V0bGluZU9wYWNpdHk/OiBudW1iZXI7XG5cdHN0cm9rZVdpZHRoPzogbnVtYmVyIHwgc3RyaW5nO1xuXHRzdHJva2VDb2xvcj86IENvbG9yUmVwcmVzZW50YXRpb247XG5cdHN0cm9rZU9wYWNpdHk/OiBudW1iZXI7XG5cdGZpbGxPcGFjaXR5PzogbnVtYmVyO1xuXHRzZGZHbHlwaFNpemU6IG51bWJlcjtcblx0ZGVidWdTREY/OiBib29sZWFuO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c1RleHRPcHRpb25zID0ge1xuXHRzZGZHbHlwaFNpemU6IDY0LFxuXHRhbmNob3JYOiAnY2VudGVyJyxcblx0YW5jaG9yWTogJ21pZGRsZScsXG5cdGZvbnRTaXplOiAxLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy10ZXh0Jyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXByaW1pdGl2ZVxuXHRcdFx0KmFyZ3M9XCJhcmdzKClcIlxuXHRcdFx0W3RleHRdPVwidGV4dCgpXCJcblx0XHRcdFtmb250XT1cImZvbnQoKVwiXG5cdFx0XHRbYW5jaG9yWF09XCJhbmNob3JYKClcIlxuXHRcdFx0W2FuY2hvclldPVwiYW5jaG9yWSgpXCJcblx0XHRcdFtzZGZHbHlwaFNpemVdPVwic2RmR2x5cGhTaXplKClcIlxuXHRcdFx0W2ZvbnRTaXplXT1cImZvbnRTaXplKClcIlxuXHRcdFx0W3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCJcblx0XHQ+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LXByaW1pdGl2ZT5cblx0YCxcblx0aW1wb3J0czogW05ndEFyZ3MsIE5nVGVtcGxhdGVPdXRsZXRdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzVGV4dCB7XG5cdHRleHQgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbJ2ZvbnQnLCAnZm9udFNpemUnLCAnc2RmR2x5cGhTaXplJywgJ2FuY2hvclgnLCAnYW5jaG9yWScsICdjaGFyYWN0ZXJzJ10pO1xuXG5cdHN5bmNlZCA9IG91dHB1dDxUZXh0PigpO1xuXG5cdHByaXZhdGUgYXV0b0VmZmVjdCA9IGluamVjdEF1dG9FZmZlY3QoKTtcblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cdHByaXZhdGUgaW52YWxpZGF0ZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdpbnZhbGlkYXRlJyk7XG5cblx0cHJpdmF0ZSBjaGFyYWN0ZXJzID0gcGljayh0aGlzLm9wdGlvbnMsICdjaGFyYWN0ZXJzJyk7XG5cblx0Zm9udCA9IHBpY2sodGhpcy5vcHRpb25zLCAnZm9udCcpO1xuXHRhbmNob3JYID0gcGljayh0aGlzLm9wdGlvbnMsICdhbmNob3JYJyk7XG5cdGFuY2hvclkgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2FuY2hvclknKTtcblx0c2RmR2x5cGhTaXplID0gcGljayh0aGlzLm9wdGlvbnMsICdzZGZHbHlwaFNpemUnKTtcblx0Zm9udFNpemUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2ZvbnRTaXplJyk7XG5cblx0dHJvaWthTWVzaCA9IGNvbXB1dGVkKCgpID0+IG5ldyBUZXh0KCksIHsgZXF1YWw6IE9iamVjdC5pcyB9KTtcblx0YXJncyA9IGNvbXB1dGVkKCgpID0+IFt0aGlzLnRyb2lrYU1lc2goKV0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4ge1xuXHRcdFx0dGhpcy50cm9pa2FNZXNoKCkuZGlzcG9zZSgpO1xuXHRcdH0pO1xuXG5cdFx0Ly8gTk9URTogdGhpcyBjb3VsZCBiZSBqdXN0IGVmZmVjdCBidXQgYXV0b0VmZmVjdCBpcyB1c2VkIGZvciBjb25zaXN0ZW5jeVxuXHRcdHRoaXMuYXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBbZm9udCwgY2hhcmFjdGVycywgaW52YWxpZGF0ZV0gPSBbdGhpcy5mb250KCksIHRoaXMuY2hhcmFjdGVycygpLCB0aGlzLmludmFsaWRhdGUoKV07XG5cdFx0XHRpZiAoZm9udCkge1xuXHRcdFx0XHRwcmVsb2FkRm9udCh7IGZvbnQsIGNoYXJhY3RlcnMgfSwgKCkgPT4gaW52YWxpZGF0ZSgpKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG5cdFx0XHR0aGlzLmF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBbaW52YWxpZGF0ZSwgdGV4dF0gPSBbdGhpcy5pbnZhbGlkYXRlKCksIHRoaXMudGV4dCgpLCB0aGlzLm9wdGlvbnMoKV07XG5cdFx0XHRcdHRoaXMudHJvaWthTWVzaCgpLnN5bmMoKCkgPT4ge1xuXHRcdFx0XHRcdGludmFsaWRhdGUoKTtcblx0XHRcdFx0XHR0aGlzLnN5bmNlZC5lbWl0KHRoaXMudHJvaWthTWVzaCgpKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufVxuIl19
@@ -1,5 +1,5 @@
1
- export * from './camera/camera-content';
2
- export * from './cube-camera/cube-camera';
3
- export * from './orthographic-camera/orthographic-camera';
4
- export * from './perspective-camera/perspective-camera';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvY2FtZXJhcy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyx5Q0FBeUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2FtZXJhL2NhbWVyYS1jb250ZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY3ViZS1jYW1lcmEvY3ViZS1jYW1lcmEnO1xuZXhwb3J0ICogZnJvbSAnLi9vcnRob2dyYXBoaWMtY2FtZXJhL29ydGhvZ3JhcGhpYy1jYW1lcmEnO1xuZXhwb3J0ICogZnJvbSAnLi9wZXJzcGVjdGl2ZS1jYW1lcmEvcGVyc3BlY3RpdmUtY2FtZXJhJztcbiJdfQ==
1
+ export * from './lib/camera-content';
2
+ export * from './lib/cube-camera';
3
+ export * from './lib/orthographic-camera';
4
+ export * from './lib/perspective-camera';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvY2FtZXJhcy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2NhbWVyYS1jb250ZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2N1YmUtY2FtZXJhJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL29ydGhvZ3JhcGhpYy1jYW1lcmEnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGVyc3BlY3RpdmUtY2FtZXJhJztcbiJdfQ==
@@ -0,0 +1,14 @@
1
+ import { Directive } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class NgtsCameraContent {
4
+ static ngTemplateContextGuard(_, ctx) {
5
+ return true;
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsCameraContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0", type: NgtsCameraContent, isStandalone: true, selector: "ng-template[cameraContent]", ngImport: i0 }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsCameraContent, decorators: [{
11
+ type: Directive,
12
+ args: [{ standalone: true, selector: 'ng-template[cameraContent]' }]
13
+ }] });
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FtZXJhLWNvbnRlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvY2FtZXJhcy9zcmMvbGliL2NhbWVyYS1jb250ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7O0FBSWxELE1BQU0sT0FBTyxpQkFBaUI7SUFDN0IsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQW9CLEVBQUUsR0FBWTtRQUMvRCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7OEdBSFcsaUJBQWlCO2tHQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLFNBQVM7bUJBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSw0QkFBNEIsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXh0dXJlIH0gZnJvbSAndGhyZWUnO1xuXG5ARGlyZWN0aXZlKHsgc3RhbmRhbG9uZTogdHJ1ZSwgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtjYW1lcmFDb250ZW50XScgfSlcbmV4cG9ydCBjbGFzcyBOZ3RzQ2FtZXJhQ29udGVudCB7XG5cdHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKF86IE5ndHNDYW1lcmFDb250ZW50LCBjdHg6IHVua25vd24pOiBjdHggaXMgeyAkaW1wbGljaXQ6IFNpZ25hbDxUZXh0dXJlPiB9IHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxufVxuIl19
@@ -0,0 +1,111 @@
1
+ import { NgTemplateOutlet } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, computed, contentChild, CUSTOM_ELEMENTS_SCHEMA, input, TemplateRef, untracked, viewChild, } from '@angular/core';
3
+ import { extend, injectBeforeRender, injectStore, merge, NgtArgs, omit, pick } from 'angular-three';
4
+ import { assertInjector } from 'ngxtension/assert-injector';
5
+ import { injectAutoEffect } from 'ngxtension/auto-effect';
6
+ import { mergeInputs } from 'ngxtension/inject-inputs';
7
+ import { CubeCamera, Group, HalfFloatType, WebGLCubeRenderTarget } from 'three';
8
+ import { NgtsCameraContent } from './camera-content';
9
+ import * as i0 from "@angular/core";
10
+ export function injectCubeCamera(options, { injector } = {}) {
11
+ return assertInjector(injectCubeCamera, injector, () => {
12
+ const autoEffect = injectAutoEffect();
13
+ const store = injectStore();
14
+ const gl = store.select('gl');
15
+ const scene = store.select('scene');
16
+ // backfill the options with default values
17
+ const mergedOptions = merge(options, { resolution: 256, near: 0.1, far: 1000 }, 'backfill');
18
+ const resolution = pick(mergedOptions, 'resolution');
19
+ const near = pick(mergedOptions, 'near');
20
+ const far = pick(mergedOptions, 'far');
21
+ const fbo = computed(() => {
22
+ const fbo = new WebGLCubeRenderTarget(resolution());
23
+ fbo.texture.type = HalfFloatType;
24
+ return fbo;
25
+ });
26
+ autoEffect(() => {
27
+ const _fbo = fbo();
28
+ return () => {
29
+ _fbo.dispose();
30
+ };
31
+ });
32
+ const camera = computed(() => {
33
+ return new CubeCamera(near(), far(), fbo());
34
+ });
35
+ const update = computed(() => {
36
+ const [_scene, _gl, _camera, { envMap, fog }] = [scene(), gl(), camera(), untracked(mergedOptions)];
37
+ let originalFog;
38
+ let originalBackground;
39
+ return () => {
40
+ originalFog = _scene.fog;
41
+ originalBackground = _scene.background;
42
+ _scene.background = envMap || originalBackground;
43
+ _scene.fog = fog || originalFog;
44
+ _camera.update(_gl, _scene);
45
+ _scene.fog = originalFog;
46
+ _scene.background = originalBackground;
47
+ };
48
+ });
49
+ return { fbo, camera, update };
50
+ });
51
+ }
52
+ const defaultOptions = {
53
+ frames: Infinity,
54
+ resolution: 256,
55
+ near: 0.1,
56
+ far: 1000,
57
+ };
58
+ export class NgtsCubeCamera {
59
+ constructor() {
60
+ this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
61
+ this.parameters = omit(this.options, ['fog', 'near', 'far', 'envMap', 'resolution', 'frames']);
62
+ this.cubeCamera = injectCubeCamera(pick(this.options, ['near', 'far', 'envMap', 'fog', 'resolution']));
63
+ this.camera = this.cubeCamera.camera;
64
+ this.texture = pick(this.cubeCamera.fbo, 'texture');
65
+ this.group = viewChild.required('group');
66
+ this.cameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });
67
+ extend({ Group });
68
+ let count = 0;
69
+ injectBeforeRender(() => {
70
+ const group = this.group().nativeElement;
71
+ if (!group)
72
+ return;
73
+ const frames = this.options().frames;
74
+ const update = this.cubeCamera.update();
75
+ if (frames === Infinity || count < frames) {
76
+ group.visible = false;
77
+ update();
78
+ group.visible = true;
79
+ count++;
80
+ }
81
+ });
82
+ }
83
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsCubeCamera, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
84
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.1.0", type: NgtsCubeCamera, isStandalone: true, selector: "ngts-cube-camera", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "cameraContent", first: true, predicate: NgtsCameraContent, descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "group", first: true, predicate: ["group"], descendants: true, isSignal: true }], ngImport: i0, template: `
85
+ <ngt-group [parameters]="parameters()">
86
+ <ngt-primitive *args="[camera()]" />
87
+ <ngt-group #group>
88
+ <ng-container [ngTemplateOutlet]="cameraContent() ?? null" [ngTemplateOutletContext]="{ $implicit: texture }" />
89
+ </ngt-group>
90
+ </ngt-group>
91
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
92
+ }
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsCubeCamera, decorators: [{
94
+ type: Component,
95
+ args: [{
96
+ selector: 'ngts-cube-camera',
97
+ standalone: true,
98
+ template: `
99
+ <ngt-group [parameters]="parameters()">
100
+ <ngt-primitive *args="[camera()]" />
101
+ <ngt-group #group>
102
+ <ng-container [ngTemplateOutlet]="cameraContent() ?? null" [ngTemplateOutletContext]="{ $implicit: texture }" />
103
+ </ngt-group>
104
+ </ngt-group>
105
+ `,
106
+ imports: [NgtArgs, NgTemplateOutlet],
107
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
108
+ changeDetection: ChangeDetectionStrategy.OnPush,
109
+ }]
110
+ }], ctorParameters: () => [] });
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ViZS1jYW1lcmEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvY2FtZXJhcy9zcmMvbGliL2N1YmUtY2FtZXJhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFDTix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixZQUFZLEVBQ1osc0JBQXNCLEVBR3RCLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFZLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFnQixLQUFLLEVBQUUsYUFBYSxFQUFXLHFCQUFxQixFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQWVyRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBZ0MsRUFBRSxFQUFFLFFBQVEsS0FBOEIsRUFBRTtJQUM1RyxPQUFPLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQ3RELE1BQU0sVUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFDdEMsTUFBTSxLQUFLLEdBQUcsV0FBVyxFQUFFLENBQUM7UUFDNUIsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXBDLDJDQUEyQztRQUMzQyxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM1RixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3JELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDekMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV2QyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3pCLE1BQU0sR0FBRyxHQUFHLElBQUkscUJBQXFCLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUNwRCxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxhQUFhLENBQUM7WUFDakMsT0FBTyxHQUFHLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztRQUVILFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUNuQixPQUFPLEdBQUcsRUFBRTtnQkFDWCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDaEIsQ0FBQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzVCLE9BQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFHLEVBQUUsR0FBRyxFQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDNUIsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUNwRyxJQUFJLFdBQTBCLENBQUM7WUFDL0IsSUFBSSxrQkFBMkIsQ0FBQztZQUVoQyxPQUFPLEdBQUcsRUFBRTtnQkFDWCxXQUFXLEdBQUcsTUFBTSxDQUFDLEdBQW9CLENBQUM7Z0JBQzFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxVQUFxQixDQUFDO2dCQUNsRCxNQUFNLENBQUMsVUFBVSxHQUFHLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQztnQkFDakQsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksV0FBVyxDQUFDO2dCQUNoQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDNUIsTUFBTSxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUM7Z0JBQ3pCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsa0JBQWtCLENBQUM7WUFDeEMsQ0FBQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNoQyxDQUFDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFNRCxNQUFNLGNBQWMsR0FBMEI7SUFDN0MsTUFBTSxFQUFFLFFBQVE7SUFDaEIsVUFBVSxFQUFFLEdBQUc7SUFDZixJQUFJLEVBQUUsR0FBRztJQUNULEdBQUcsRUFBRSxJQUFJO0NBQ1QsQ0FBQztBQWlCRixNQUFNLE9BQU8sY0FBYztJQVkxQjtRQVhBLFlBQU8sR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUUsZUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRWxGLGVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFMUcsV0FBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ2hDLFlBQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFL0MsVUFBSyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQW9CLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELGtCQUFhLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFHdEUsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUVsQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxrQkFBa0IsQ0FBQyxHQUFHLEVBQUU7WUFDdkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLGFBQWEsQ0FBQztZQUN6QyxJQUFJLENBQUMsS0FBSztnQkFBRSxPQUFPO1lBRW5CLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDckMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4QyxJQUFJLE1BQU0sS0FBSyxRQUFRLElBQUksS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDO2dCQUMzQyxLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDdEIsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLEtBQUssRUFBRSxDQUFDO1lBQ1QsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0E3QlcsY0FBYztrR0FBZCxjQUFjLGlRQVVHLGlCQUFpQiwyQkFBVSxXQUFXLDZKQXRCekQ7Ozs7Ozs7RUFPVCw0REFDUyxPQUFPLGdGQUFFLGdCQUFnQjs7MkZBSXZCLGNBQWM7a0JBZjFCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7OztFQU9UO29CQUNELE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQztvQkFDcEMsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdGNvbnRlbnRDaGlsZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0RWxlbWVudFJlZixcblx0SW5qZWN0b3IsXG5cdGlucHV0LFxuXHRUZW1wbGF0ZVJlZixcblx0dW50cmFja2VkLFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBpbmplY3RCZWZvcmVSZW5kZXIsIGluamVjdFN0b3JlLCBtZXJnZSwgTmd0QXJncywgTmd0R3JvdXAsIG9taXQsIHBpY2sgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGFzc2VydEluamVjdG9yIH0gZnJvbSAnbmd4dGVuc2lvbi9hc3NlcnQtaW5qZWN0b3InO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQ3ViZUNhbWVyYSwgRm9nLCBGb2dFeHAyLCBHcm91cCwgSGFsZkZsb2F0VHlwZSwgVGV4dHVyZSwgV2ViR0xDdWJlUmVuZGVyVGFyZ2V0IH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0c0NhbWVyYUNvbnRlbnQgfSBmcm9tICcuL2NhbWVyYS1jb250ZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBDdWJlQ2FtZXJhT3B0aW9ucyB7XG5cdC8qKiBSZXNvbHV0aW9uIG9mIHRoZSBGQk8sIDI1NiAqL1xuXHRyZXNvbHV0aW9uPzogbnVtYmVyO1xuXHQvKiogQ2FtZXJhIG5lYXIsIDAuMSAqL1xuXHRuZWFyPzogbnVtYmVyO1xuXHQvKiogQ2FtZXJhIGZhciwgMTAwMCAqL1xuXHRmYXI/OiBudW1iZXI7XG5cdC8qKiBDdXN0b20gZW52aXJvbm1lbnQgbWFwIHRoYXQgaXMgdGVtcG9yYXJpbHkgc2V0IGFzIHRoZSBzY2VuZXMgYmFja2dyb3VuZCAqL1xuXHRlbnZNYXA/OiBUZXh0dXJlO1xuXHQvKiogQ3VzdG9tIGZvZyB0aGF0IGlzIHRlbXBvcmFyaWx5IHNldCBhcyB0aGUgc2NlbmVzIGZvZyAqL1xuXHRmb2c/OiBGb2cgfCBGb2dFeHAyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Q3ViZUNhbWVyYShvcHRpb25zOiAoKSA9PiBDdWJlQ2FtZXJhT3B0aW9ucywgeyBpbmplY3RvciB9OiB7IGluamVjdG9yPzogSW5qZWN0b3IgfSA9IHt9KSB7XG5cdHJldHVybiBhc3NlcnRJbmplY3RvcihpbmplY3RDdWJlQ2FtZXJhLCBpbmplY3RvciwgKCkgPT4ge1xuXHRcdGNvbnN0IGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cdFx0Y29uc3Qgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRcdGNvbnN0IGdsID0gc3RvcmUuc2VsZWN0KCdnbCcpO1xuXHRcdGNvbnN0IHNjZW5lID0gc3RvcmUuc2VsZWN0KCdzY2VuZScpO1xuXG5cdFx0Ly8gYmFja2ZpbGwgdGhlIG9wdGlvbnMgd2l0aCBkZWZhdWx0IHZhbHVlc1xuXHRcdGNvbnN0IG1lcmdlZE9wdGlvbnMgPSBtZXJnZShvcHRpb25zLCB7IHJlc29sdXRpb246IDI1NiwgbmVhcjogMC4xLCBmYXI6IDEwMDAgfSwgJ2JhY2tmaWxsJyk7XG5cdFx0Y29uc3QgcmVzb2x1dGlvbiA9IHBpY2sobWVyZ2VkT3B0aW9ucywgJ3Jlc29sdXRpb24nKTtcblx0XHRjb25zdCBuZWFyID0gcGljayhtZXJnZWRPcHRpb25zLCAnbmVhcicpO1xuXHRcdGNvbnN0IGZhciA9IHBpY2sobWVyZ2VkT3B0aW9ucywgJ2ZhcicpO1xuXG5cdFx0Y29uc3QgZmJvID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgZmJvID0gbmV3IFdlYkdMQ3ViZVJlbmRlclRhcmdldChyZXNvbHV0aW9uKCkpO1xuXHRcdFx0ZmJvLnRleHR1cmUudHlwZSA9IEhhbGZGbG9hdFR5cGU7XG5cdFx0XHRyZXR1cm4gZmJvO1xuXHRcdH0pO1xuXG5cdFx0YXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBfZmJvID0gZmJvKCk7XG5cdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRfZmJvLmRpc3Bvc2UoKTtcblx0XHRcdH07XG5cdFx0fSk7XG5cblx0XHRjb25zdCBjYW1lcmEgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRyZXR1cm4gbmV3IEN1YmVDYW1lcmEobmVhcigpISwgZmFyKCkhLCBmYm8oKSk7XG5cdFx0fSk7XG5cblx0XHRjb25zdCB1cGRhdGUgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRjb25zdCBbX3NjZW5lLCBfZ2wsIF9jYW1lcmEsIHsgZW52TWFwLCBmb2cgfV0gPSBbc2NlbmUoKSwgZ2woKSwgY2FtZXJhKCksIHVudHJhY2tlZChtZXJnZWRPcHRpb25zKV07XG5cdFx0XHRsZXQgb3JpZ2luYWxGb2c6IEZvZyB8IEZvZ0V4cDI7XG5cdFx0XHRsZXQgb3JpZ2luYWxCYWNrZ3JvdW5kOiBUZXh0dXJlO1xuXG5cdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRvcmlnaW5hbEZvZyA9IF9zY2VuZS5mb2cgYXMgRm9nIHwgRm9nRXhwMjtcblx0XHRcdFx0b3JpZ2luYWxCYWNrZ3JvdW5kID0gX3NjZW5lLmJhY2tncm91bmQgYXMgVGV4dHVyZTtcblx0XHRcdFx0X3NjZW5lLmJhY2tncm91bmQgPSBlbnZNYXAgfHwgb3JpZ2luYWxCYWNrZ3JvdW5kO1xuXHRcdFx0XHRfc2NlbmUuZm9nID0gZm9nIHx8IG9yaWdpbmFsRm9nO1xuXHRcdFx0XHRfY2FtZXJhLnVwZGF0ZShfZ2wsIF9zY2VuZSk7XG5cdFx0XHRcdF9zY2VuZS5mb2cgPSBvcmlnaW5hbEZvZztcblx0XHRcdFx0X3NjZW5lLmJhY2tncm91bmQgPSBvcmlnaW5hbEJhY2tncm91bmQ7XG5cdFx0XHR9O1xuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHsgZmJvLCBjYW1lcmEsIHVwZGF0ZSB9O1xuXHR9KTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzQ3ViZUNhbWVyYU9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPE5ndEdyb3VwPiwgQ3ViZUNhbWVyYU9wdGlvbnMge1xuXHRmcmFtZXM6IG51bWJlcjtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNDdWJlQ2FtZXJhT3B0aW9ucyA9IHtcblx0ZnJhbWVzOiBJbmZpbml0eSxcblx0cmVzb2x1dGlvbjogMjU2LFxuXHRuZWFyOiAwLjEsXG5cdGZhcjogMTAwMCxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtY3ViZS1jYW1lcmEnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtZ3JvdXAgW3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCI+XG5cdFx0XHQ8bmd0LXByaW1pdGl2ZSAqYXJncz1cIltjYW1lcmEoKV1cIiAvPlxuXHRcdFx0PG5ndC1ncm91cCAjZ3JvdXA+XG5cdFx0XHRcdDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2FtZXJhQ29udGVudCgpID8/IG51bGxcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHRleHR1cmUgfVwiIC8+XG5cdFx0XHQ8L25ndC1ncm91cD5cblx0XHQ8L25ndC1ncm91cD5cblx0YCxcblx0aW1wb3J0czogW05ndEFyZ3MsIE5nVGVtcGxhdGVPdXRsZXRdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzQ3ViZUNhbWVyYSB7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbJ2ZvZycsICduZWFyJywgJ2ZhcicsICdlbnZNYXAnLCAncmVzb2x1dGlvbicsICdmcmFtZXMnXSk7XG5cblx0cHJpdmF0ZSBjdWJlQ2FtZXJhID0gaW5qZWN0Q3ViZUNhbWVyYShwaWNrKHRoaXMub3B0aW9ucywgWyduZWFyJywgJ2ZhcicsICdlbnZNYXAnLCAnZm9nJywgJ3Jlc29sdXRpb24nXSkpO1xuXG5cdGNhbWVyYSA9IHRoaXMuY3ViZUNhbWVyYS5jYW1lcmE7XG5cdHRleHR1cmUgPSBwaWNrKHRoaXMuY3ViZUNhbWVyYS5mYm8sICd0ZXh0dXJlJyk7XG5cblx0Z3JvdXAgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxHcm91cD4+KCdncm91cCcpO1xuXHRjYW1lcmFDb250ZW50ID0gY29udGVudENoaWxkKE5ndHNDYW1lcmFDb250ZW50LCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IEdyb3VwIH0pO1xuXG5cdFx0bGV0IGNvdW50ID0gMDtcblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuXHRcdFx0Y29uc3QgZ3JvdXAgPSB0aGlzLmdyb3VwKCkubmF0aXZlRWxlbWVudDtcblx0XHRcdGlmICghZ3JvdXApIHJldHVybjtcblxuXHRcdFx0Y29uc3QgZnJhbWVzID0gdGhpcy5vcHRpb25zKCkuZnJhbWVzO1xuXHRcdFx0Y29uc3QgdXBkYXRlID0gdGhpcy5jdWJlQ2FtZXJhLnVwZGF0ZSgpO1xuXHRcdFx0aWYgKGZyYW1lcyA9PT0gSW5maW5pdHkgfHwgY291bnQgPCBmcmFtZXMpIHtcblx0XHRcdFx0Z3JvdXAudmlzaWJsZSA9IGZhbHNlO1xuXHRcdFx0XHR1cGRhdGUoKTtcblx0XHRcdFx0Z3JvdXAudmlzaWJsZSA9IHRydWU7XG5cdFx0XHRcdGNvdW50Kys7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
@@ -0,0 +1,131 @@
1
+ import { NgTemplateOutlet } from '@angular/common';
2
+ import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, TemplateRef, afterNextRender, computed, contentChild, input, untracked, viewChild, } from '@angular/core';
3
+ import { extend, injectBeforeRender, injectStore, omit, pick } from 'angular-three';
4
+ import { injectFBO } from 'angular-three-soba/misc';
5
+ import { injectAutoEffect } from 'ngxtension/auto-effect';
6
+ import { mergeInputs } from 'ngxtension/inject-inputs';
7
+ import { Group, OrthographicCamera } from 'three';
8
+ import { NgtsCameraContent } from './camera-content';
9
+ import * as i0 from "@angular/core";
10
+ extend({ OrthographicCamera, Group });
11
+ const defaultOptions = {
12
+ frames: Infinity,
13
+ resolution: 256,
14
+ makeDefault: false,
15
+ manual: false,
16
+ };
17
+ export class NgtsOrthographicCamera {
18
+ constructor() {
19
+ this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
20
+ this.parameters = omit(this.options, [
21
+ 'envMap',
22
+ 'makeDefault',
23
+ 'manual',
24
+ 'frames',
25
+ 'resolution',
26
+ 'left',
27
+ 'top',
28
+ 'bottom',
29
+ 'right',
30
+ ]);
31
+ this.content = contentChild(TemplateRef);
32
+ this.cameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });
33
+ this.cameraRef = viewChild.required('camera');
34
+ this.groupRef = viewChild.required('group');
35
+ this.autoEffect = injectAutoEffect();
36
+ this.store = injectStore();
37
+ this.camera = this.store.select('camera');
38
+ this.size = this.store.select('size');
39
+ this.left = computed(() => this.options().left ?? this.size().width / -2);
40
+ this.right = computed(() => this.options().right ?? this.size().width / 2);
41
+ this.top = computed(() => this.options().top ?? this.size().height / 2);
42
+ this.bottom = computed(() => this.options().bottom ?? this.size().height / -2);
43
+ this.manual = pick(this.options, 'manual');
44
+ this.makeDefault = pick(this.options, 'makeDefault');
45
+ this.resolution = pick(this.options, 'resolution');
46
+ this.fbo = injectFBO(() => ({ width: this.resolution() }));
47
+ this.texture = pick(this.fbo, 'texture');
48
+ afterNextRender(() => {
49
+ this.autoEffect(() => {
50
+ if (!this.manual()) {
51
+ this.cameraRef().nativeElement.updateProjectionMatrix();
52
+ }
53
+ });
54
+ this.autoEffect(() => {
55
+ if (this.makeDefault()) {
56
+ const oldCam = untracked(this.camera);
57
+ this.store.update({ camera: this.cameraRef().nativeElement });
58
+ return () => this.store.update(() => ({ camera: oldCam }));
59
+ }
60
+ return;
61
+ });
62
+ this.cameraRef().nativeElement.updateProjectionMatrix();
63
+ });
64
+ let count = 0;
65
+ let oldEnvMap = null;
66
+ injectBeforeRender(({ gl, scene }) => {
67
+ const [{ frames, envMap }, group, camera, fbo] = [
68
+ this.options(),
69
+ this.groupRef().nativeElement,
70
+ this.cameraRef().nativeElement,
71
+ this.fbo(),
72
+ ];
73
+ if (this.cameraContent() && group && camera && fbo && (frames === Infinity || count < frames)) {
74
+ group.visible = false;
75
+ gl.setRenderTarget(fbo);
76
+ oldEnvMap = scene.background;
77
+ if (envMap)
78
+ scene.background = envMap;
79
+ gl.render(scene, camera);
80
+ scene.background = oldEnvMap;
81
+ gl.setRenderTarget(null);
82
+ group.visible = true;
83
+ count++;
84
+ }
85
+ });
86
+ }
87
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsOrthographicCamera, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
88
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.1.0", type: NgtsOrthographicCamera, isStandalone: true, selector: "ngts-orthographic-camera", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, isSignal: true }, { propertyName: "cameraContent", first: true, predicate: NgtsCameraContent, descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "cameraRef", first: true, predicate: ["camera"], descendants: true, isSignal: true }, { propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }], ngImport: i0, template: `
89
+ <ngt-orthographic-camera
90
+ #camera
91
+ [left]="left()"
92
+ [right]="right()"
93
+ [top]="top()"
94
+ [bottom]="bottom()"
95
+ [parameters]="parameters()"
96
+ >
97
+ <ng-container [ngTemplateOutlet]="content() ?? null" />
98
+ </ngt-orthographic-camera>
99
+
100
+ <ngt-group #group>
101
+ <ng-container [ngTemplateOutlet]="cameraContent() ?? null" [ngTemplateOutletContext]="{ $implicit: texture }" />
102
+ </ngt-group>
103
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
104
+ }
105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsOrthographicCamera, decorators: [{
106
+ type: Component,
107
+ args: [{
108
+ selector: 'ngts-orthographic-camera',
109
+ standalone: true,
110
+ template: `
111
+ <ngt-orthographic-camera
112
+ #camera
113
+ [left]="left()"
114
+ [right]="right()"
115
+ [top]="top()"
116
+ [bottom]="bottom()"
117
+ [parameters]="parameters()"
118
+ >
119
+ <ng-container [ngTemplateOutlet]="content() ?? null" />
120
+ </ngt-orthographic-camera>
121
+
122
+ <ngt-group #group>
123
+ <ng-container [ngTemplateOutlet]="cameraContent() ?? null" [ngTemplateOutletContext]="{ $implicit: texture }" />
124
+ </ngt-group>
125
+ `,
126
+ imports: [NgTemplateOutlet],
127
+ changeDetection: ChangeDetectionStrategy.OnPush,
128
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
129
+ }]
130
+ }], ctorParameters: () => [] });
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3J0aG9ncmFwaGljLWNhbWVyYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9jYW1lcmFzL3NyYy9saWIvb3J0aG9ncmFwaGljLWNhbWVyYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ04sc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsV0FBVyxFQUNYLGVBQWUsRUFDZixRQUFRLEVBQ1IsWUFBWSxFQUNaLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBeUIsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFTLEtBQUssRUFBRSxrQkFBa0IsRUFBVyxNQUFNLE9BQU8sQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFckQsTUFBTSxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQWV0QyxNQUFNLGNBQWMsR0FBa0M7SUFDckQsTUFBTSxFQUFFLFFBQVE7SUFDaEIsVUFBVSxFQUFFLEdBQUc7SUFDZixXQUFXLEVBQUUsS0FBSztJQUNsQixNQUFNLEVBQUUsS0FBSztDQUNiLENBQUM7QUF5QkYsTUFBTSxPQUFPLHNCQUFzQjtJQXFDbEM7UUFwQ0EsWUFBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxT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QztnQkFDN0IsSUFBSSxNQUFNO29CQUFFLEtBQUssQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO2dCQUN0QyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDekIsS0FBSyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7Z0JBQzdCLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3pCLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixLQUFLLEVBQUUsQ0FBQztZQUNULENBQUM7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBOUVXLHNCQUFzQjtrR0FBdEIsc0JBQXNCLG1RQWNYLFdBQVcsZ0dBQ0wsaUJBQWlCLDJCQUFVLFdBQVcsc1FBbkN6RDs7Ozs7Ozs7Ozs7Ozs7O0VBZVQsNERBQ1MsZ0JBQWdCOzsyRkFJZCxzQkFBc0I7a0JBdkJsQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7OztFQWVUO29CQUNELE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUMzQixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRFbGVtZW50UmVmLFxuXHRUZW1wbGF0ZVJlZixcblx0YWZ0ZXJOZXh0UmVuZGVyLFxuXHRjb21wdXRlZCxcblx0Y29udGVudENoaWxkLFxuXHRpbnB1dCxcblx0dW50cmFja2VkLFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0T3J0aG9ncmFwaGljQ2FtZXJhLCBleHRlbmQsIGluamVjdEJlZm9yZVJlbmRlciwgaW5qZWN0U3RvcmUsIG9taXQsIHBpY2sgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGluamVjdEZCTyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9taXNjJztcbmltcG9ydCB7IGluamVjdEF1dG9FZmZlY3QgfSBmcm9tICduZ3h0ZW5zaW9uL2F1dG8tZWZmZWN0JztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IENvbG9yLCBHcm91cCwgT3J0aG9ncmFwaGljQ2FtZXJhLCBUZXh0dXJlIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0c0NhbWVyYUNvbnRlbnQgfSBmcm9tICcuL2NhbWVyYS1jb250ZW50JztcblxuZXh0ZW5kKHsgT3J0aG9ncmFwaGljQ2FtZXJhLCBHcm91cCB9KTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzT3J0aG9ncmFwaGljQ2FtZXJhT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8Tmd0T3J0aG9ncmFwaGljQ2FtZXJhPiB7XG5cdC8qKiBSZWdpc3RlcnMgdGhlIGNhbWVyYSBhcyB0aGUgc3lzdGVtIGRlZmF1bHQsIGZpYmVyIHdpbGwgc3RhcnQgcmVuZGVyaW5nIHdpdGggaXQgKi9cblx0bWFrZURlZmF1bHQ/OiBib29sZWFuO1xuXHQvKiogTWFraW5nIGl0IG1hbnVhbCB3aWxsIHN0b3AgcmVzcG9uc2l2ZW5lc3MgYW5kIHlvdSBoYXZlIHRvIGNhbGN1bGF0ZSBhc3BlY3QgcmF0aW8geW91cnNlbGYuICovXG5cdG1hbnVhbD86IGJvb2xlYW47XG5cdC8qKiBOdW1iZXIgb2YgZnJhbWVzIHRvIHJlbmRlciwgSW5maW5pdHkgKi9cblx0ZnJhbWVzOiBudW1iZXI7XG5cdC8qKiBSZXNvbHV0aW9uIG9mIHRoZSBGQk8sIDI1NiAqL1xuXHRyZXNvbHV0aW9uOiBudW1iZXI7XG5cdC8qKiBPcHRpb25hbCBlbnZpcm9ubWVudCBtYXAgZm9yIGZ1bmN0aW9uYWwgdXNlICovXG5cdGVudk1hcD86IFRleHR1cmU7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzT3J0aG9ncmFwaGljQ2FtZXJhT3B0aW9ucyA9IHtcblx0ZnJhbWVzOiBJbmZpbml0eSxcblx0cmVzb2x1dGlvbjogMjU2LFxuXHRtYWtlRGVmYXVsdDogZmFsc2UsXG5cdG1hbnVhbDogZmFsc2UsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLW9ydGhvZ3JhcGhpYy1jYW1lcmEnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3Qtb3J0aG9ncmFwaGljLWNhbWVyYVxuXHRcdFx0I2NhbWVyYVxuXHRcdFx0W2xlZnRdPVwibGVmdCgpXCJcblx0XHRcdFtyaWdodF09XCJyaWdodCgpXCJcblx0XHRcdFt0b3BdPVwidG9wKClcIlxuXHRcdFx0W2JvdHRvbV09XCJib3R0b20oKVwiXG5cdFx0XHRbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIlxuXHRcdD5cblx0XHRcdDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udGVudCgpID8/IG51bGxcIiAvPlxuXHRcdDwvbmd0LW9ydGhvZ3JhcGhpYy1jYW1lcmE+XG5cblx0XHQ8bmd0LWdyb3VwICNncm91cD5cblx0XHRcdDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2FtZXJhQ29udGVudCgpID8/IG51bGxcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHRleHR1cmUgfVwiIC8+XG5cdFx0PC9uZ3QtZ3JvdXA+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ1RlbXBsYXRlT3V0bGV0XSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c09ydGhvZ3JhcGhpY0NhbWVyYSB7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbXG5cdFx0J2Vudk1hcCcsXG5cdFx0J21ha2VEZWZhdWx0Jyxcblx0XHQnbWFudWFsJyxcblx0XHQnZnJhbWVzJyxcblx0XHQncmVzb2x1dGlvbicsXG5cdFx0J2xlZnQnLFxuXHRcdCd0b3AnLFxuXHRcdCdib3R0b20nLFxuXHRcdCdyaWdodCcsXG5cdF0pO1xuXG5cdGNvbnRlbnQgPSBjb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpO1xuXHRjYW1lcmFDb250ZW50ID0gY29udGVudENoaWxkKE5ndHNDYW1lcmFDb250ZW50LCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pO1xuXG5cdGNhbWVyYVJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPE9ydGhvZ3JhcGhpY0NhbWVyYT4+KCdjYW1lcmEnKTtcblx0Z3JvdXBSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxHcm91cD4+KCdncm91cCcpO1xuXG5cdHByaXZhdGUgYXV0b0VmZmVjdCA9IGluamVjdEF1dG9FZmZlY3QoKTtcblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cblx0cHJpdmF0ZSBjYW1lcmEgPSB0aGlzLnN0b3JlLnNlbGVjdCgnY2FtZXJhJyk7XG5cdHNpemUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnc2l6ZScpO1xuXG5cdGxlZnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKS5sZWZ0ID8/IHRoaXMuc2l6ZSgpLndpZHRoIC8gLTIpO1xuXHRyaWdodCA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpLnJpZ2h0ID8/IHRoaXMuc2l6ZSgpLndpZHRoIC8gMik7XG5cdHRvcCA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpLnRvcCA/PyB0aGlzLnNpemUoKS5oZWlnaHQgLyAyKTtcblx0Ym90dG9tID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCkuYm90dG9tID8/IHRoaXMuc2l6ZSgpLmhlaWdodCAvIC0yKTtcblxuXHRwcml2YXRlIG1hbnVhbCA9IHBpY2sodGhpcy5vcHRpb25zLCAnbWFudWFsJyk7XG5cdHByaXZhdGUgbWFrZURlZmF1bHQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ21ha2VEZWZhdWx0Jyk7XG5cdHByaXZhdGUgcmVzb2x1dGlvbiA9IHBpY2sodGhpcy5vcHRpb25zLCAncmVzb2x1dGlvbicpO1xuXHRwcml2YXRlIGZibyA9IGluamVjdEZCTygoKSA9PiAoeyB3aWR0aDogdGhpcy5yZXNvbHV0aW9uKCkgfSkpO1xuXHR0ZXh0dXJlID0gcGljayh0aGlzLmZibywgJ3RleHR1cmUnKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0dGhpcy5hdXRvRWZmZWN0KCgpID0+IHtcblx0XHRcdFx0aWYgKCF0aGlzLm1hbnVhbCgpKSB7XG5cdFx0XHRcdFx0dGhpcy5jYW1lcmFSZWYoKS5uYXRpdmVFbGVtZW50LnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdHRoaXMuYXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLm1ha2VEZWZhdWx0KCkpIHtcblx0XHRcdFx0XHRjb25zdCBvbGRDYW0gPSB1bnRyYWNrZWQodGhpcy5jYW1lcmEpO1xuXHRcdFx0XHRcdHRoaXMuc3RvcmUudXBkYXRlKHsgY2FtZXJhOiB0aGlzLmNhbWVyYVJlZigpLm5hdGl2ZUVsZW1lbnQgfSk7XG5cdFx0XHRcdFx0cmV0dXJuICgpID0+IHRoaXMuc3RvcmUudXBkYXRlKCgpID0+ICh7IGNhbWVyYTogb2xkQ2FtIH0pKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy5jYW1lcmFSZWYoKS5uYXRpdmVFbGVtZW50LnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcblx0XHR9KTtcblxuXHRcdGxldCBjb3VudCA9IDA7XG5cdFx0bGV0IG9sZEVudk1hcDogQ29sb3IgfCBUZXh0dXJlIHwgbnVsbCA9IG51bGw7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGdsLCBzY2VuZSB9KSA9PiB7XG5cdFx0XHRjb25zdCBbeyBmcmFtZXMsIGVudk1hcCB9LCBncm91cCwgY2FtZXJhLCBmYm9dID0gW1xuXHRcdFx0XHR0aGlzLm9wdGlvbnMoKSxcblx0XHRcdFx0dGhpcy5ncm91cFJlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHRoaXMuY2FtZXJhUmVmKCkubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0dGhpcy5mYm8oKSxcblx0XHRcdF07XG5cdFx0XHRpZiAodGhpcy5jYW1lcmFDb250ZW50KCkgJiYgZ3JvdXAgJiYgY2FtZXJhICYmIGZibyAmJiAoZnJhbWVzID09PSBJbmZpbml0eSB8fCBjb3VudCA8IGZyYW1lcykpIHtcblx0XHRcdFx0Z3JvdXAudmlzaWJsZSA9IGZhbHNlO1xuXHRcdFx0XHRnbC5zZXRSZW5kZXJUYXJnZXQoZmJvKTtcblx0XHRcdFx0b2xkRW52TWFwID0gc2NlbmUuYmFja2dyb3VuZDtcblx0XHRcdFx0aWYgKGVudk1hcCkgc2NlbmUuYmFja2dyb3VuZCA9IGVudk1hcDtcblx0XHRcdFx0Z2wucmVuZGVyKHNjZW5lLCBjYW1lcmEpO1xuXHRcdFx0XHRzY2VuZS5iYWNrZ3JvdW5kID0gb2xkRW52TWFwO1xuXHRcdFx0XHRnbC5zZXRSZW5kZXJUYXJnZXQobnVsbCk7XG5cdFx0XHRcdGdyb3VwLnZpc2libGUgPSB0cnVlO1xuXHRcdFx0XHRjb3VudCsrO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG4iXX0=
@@ -0,0 +1,104 @@
1
+ import { NgTemplateOutlet } from '@angular/common';
2
+ import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, TemplateRef, afterNextRender, contentChild, input, untracked, viewChild, } from '@angular/core';
3
+ import { extend, injectBeforeRender, injectStore, omit, pick } from 'angular-three';
4
+ import { injectFBO } from 'angular-three-soba/misc';
5
+ import { injectAutoEffect } from 'ngxtension/auto-effect';
6
+ import { mergeInputs } from 'ngxtension/inject-inputs';
7
+ import { Group, PerspectiveCamera } from 'three';
8
+ import { NgtsCameraContent } from './camera-content';
9
+ import * as i0 from "@angular/core";
10
+ extend({ PerspectiveCamera, Group });
11
+ const defaultOptions = {
12
+ frames: Infinity,
13
+ resolution: 256,
14
+ makeDefault: false,
15
+ manual: false,
16
+ };
17
+ export class NgtsPerspectiveCamera {
18
+ constructor() {
19
+ this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
20
+ this.parameters = omit(this.options, ['envMap', 'makeDefault', 'manual', 'frames', 'resolution']);
21
+ this.content = contentChild(TemplateRef);
22
+ this.cameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });
23
+ this.cameraRef = viewChild.required('camera');
24
+ this.groupRef = viewChild.required('group');
25
+ this.autoEffect = injectAutoEffect();
26
+ this.store = injectStore();
27
+ this.camera = this.store.select('camera');
28
+ this.size = this.store.select('size');
29
+ this.manual = pick(this.options, 'manual');
30
+ this.makeDefault = pick(this.options, 'makeDefault');
31
+ this.resolution = pick(this.options, 'resolution');
32
+ this.fbo = injectFBO(() => ({ width: this.resolution() }));
33
+ this.texture = pick(this.fbo, 'texture');
34
+ afterNextRender(() => {
35
+ this.autoEffect(() => {
36
+ if (!this.manual()) {
37
+ this.cameraRef().nativeElement.aspect = this.size().width / this.size().height;
38
+ this.cameraRef().nativeElement.updateProjectionMatrix();
39
+ }
40
+ });
41
+ this.autoEffect(() => {
42
+ if (this.makeDefault()) {
43
+ const oldCam = untracked(this.camera);
44
+ this.store.update({ camera: this.cameraRef().nativeElement });
45
+ return () => this.store.update(() => ({ camera: oldCam }));
46
+ }
47
+ return;
48
+ });
49
+ this.cameraRef().nativeElement.updateProjectionMatrix();
50
+ });
51
+ let count = 0;
52
+ let oldEnvMap = null;
53
+ injectBeforeRender(({ gl, scene }) => {
54
+ const [{ frames, envMap }, group, camera, fbo] = [
55
+ this.options(),
56
+ this.groupRef().nativeElement,
57
+ this.cameraRef().nativeElement,
58
+ this.fbo(),
59
+ ];
60
+ if (this.cameraContent() && group && camera && fbo && (frames === Infinity || count < frames)) {
61
+ group.visible = false;
62
+ gl.setRenderTarget(fbo);
63
+ oldEnvMap = scene.background;
64
+ if (envMap)
65
+ scene.background = envMap;
66
+ gl.render(scene, camera);
67
+ scene.background = oldEnvMap;
68
+ gl.setRenderTarget(null);
69
+ group.visible = true;
70
+ count++;
71
+ }
72
+ });
73
+ }
74
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsPerspectiveCamera, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
75
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.1.0", type: NgtsPerspectiveCamera, isStandalone: true, selector: "ngts-perspective-camera", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, isSignal: true }, { propertyName: "cameraContent", first: true, predicate: NgtsCameraContent, descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "cameraRef", first: true, predicate: ["camera"], descendants: true, isSignal: true }, { propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }], ngImport: i0, template: `
76
+ <ngt-perspective-camera #camera [parameters]="parameters()">
77
+ <ng-container [ngTemplateOutlet]="content() ?? null" />
78
+ </ngt-perspective-camera>
79
+
80
+ <ngt-group #group>
81
+ <ng-container [ngTemplateOutlet]="cameraContent() ?? null" [ngTemplateOutletContext]="{ $implicit: texture }" />
82
+ </ngt-group>
83
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
84
+ }
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsPerspectiveCamera, decorators: [{
86
+ type: Component,
87
+ args: [{
88
+ selector: 'ngts-perspective-camera',
89
+ standalone: true,
90
+ template: `
91
+ <ngt-perspective-camera #camera [parameters]="parameters()">
92
+ <ng-container [ngTemplateOutlet]="content() ?? null" />
93
+ </ngt-perspective-camera>
94
+
95
+ <ngt-group #group>
96
+ <ng-container [ngTemplateOutlet]="cameraContent() ?? null" [ngTemplateOutletContext]="{ $implicit: texture }" />
97
+ </ngt-group>
98
+ `,
99
+ imports: [NgTemplateOutlet],
100
+ changeDetection: ChangeDetectionStrategy.OnPush,
101
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
102
+ }]
103
+ }], ctorParameters: () => [] });
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc3BlY3RpdmUtY2FtZXJhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL2NhbWVyYXMvc3JjL2xpYi9wZXJzcGVjdGl2ZS1jYW1lcmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUNOLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFdBQVcsRUFDWCxlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFTLEtBQUssRUFBRSxpQkFBaUIsRUFBVyxNQUFNLE9BQU8sQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFckQsTUFBTSxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQWVyQyxNQUFNLGNBQWMsR0FBaUM7SUFDcEQsTUFBTSxFQUFFLFFBQVE7SUFDaEIsVUFBVSxFQUFFLEdBQUc7SUFDZixXQUFXLEVBQUUsS0FBSztJQUNsQixNQUFNLEVBQUUsS0FBSztDQUNiLENBQUM7QUFrQkYsTUFBTSxPQUFPLHFCQUFxQjtJQXNCakM7UUFyQkEsWUFBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FB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VUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7RUFRVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDM0IsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0RWxlbWVudFJlZixcblx0VGVtcGxhdGVSZWYsXG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Y29udGVudENoaWxkLFxuXHRpbnB1dCxcblx0dW50cmFja2VkLFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0UGVyc3BlY3RpdmVDYW1lcmEsIGV4dGVuZCwgaW5qZWN0QmVmb3JlUmVuZGVyLCBpbmplY3RTdG9yZSwgb21pdCwgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgaW5qZWN0RkJPIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL21pc2MnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQ29sb3IsIEdyb3VwLCBQZXJzcGVjdGl2ZUNhbWVyYSwgVGV4dHVyZSB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHNDYW1lcmFDb250ZW50IH0gZnJvbSAnLi9jYW1lcmEtY29udGVudCc7XG5cbmV4dGVuZCh7IFBlcnNwZWN0aXZlQ2FtZXJhLCBHcm91cCB9KTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzUGVyc3BlY3RpdmVDYW1lcmFPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxOZ3RQZXJzcGVjdGl2ZUNhbWVyYT4ge1xuXHQvKiogUmVnaXN0ZXJzIHRoZSBjYW1lcmEgYXMgdGhlIHN5c3RlbSBkZWZhdWx0LCBmaWJlciB3aWxsIHN0YXJ0IHJlbmRlcmluZyB3aXRoIGl0ICovXG5cdG1ha2VEZWZhdWx0PzogYm9vbGVhbjtcblx0LyoqIE1ha2luZyBpdCBtYW51YWwgd2lsbCBzdG9wIHJlc3BvbnNpdmVuZXNzIGFuZCB5b3UgaGF2ZSB0byBjYWxjdWxhdGUgYXNwZWN0IHJhdGlvIHlvdXJzZWxmLiAqL1xuXHRtYW51YWw/OiBib29sZWFuO1xuXHQvKiogTnVtYmVyIG9mIGZyYW1lcyB0byByZW5kZXIsIEluZmluaXR5ICovXG5cdGZyYW1lczogbnVtYmVyO1xuXHQvKiogUmVzb2x1dGlvbiBvZiB0aGUgRkJPLCAyNTYgKi9cblx0cmVzb2x1dGlvbjogbnVtYmVyO1xuXHQvKiogT3B0aW9uYWwgZW52aXJvbm1lbnQgbWFwIGZvciBmdW5jdGlvbmFsIHVzZSAqL1xuXHRlbnZNYXA/OiBUZXh0dXJlO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c1BlcnNwZWN0aXZlQ2FtZXJhT3B0aW9ucyA9IHtcblx0ZnJhbWVzOiBJbmZpbml0eSxcblx0cmVzb2x1dGlvbjogMjU2LFxuXHRtYWtlRGVmYXVsdDogZmFsc2UsXG5cdG1hbnVhbDogZmFsc2UsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXBlcnNwZWN0aXZlLWNhbWVyYScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wZXJzcGVjdGl2ZS1jYW1lcmEgI2NhbWVyYSBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIj5cblx0XHRcdDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udGVudCgpID8/IG51bGxcIiAvPlxuXHRcdDwvbmd0LXBlcnNwZWN0aXZlLWNhbWVyYT5cblxuXHRcdDxuZ3QtZ3JvdXAgI2dyb3VwPlxuXHRcdFx0PG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjYW1lcmFDb250ZW50KCkgPz8gbnVsbFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogdGV4dHVyZSB9XCIgLz5cblx0XHQ8L25ndC1ncm91cD5cblx0YCxcblx0aW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXRdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzUGVyc3BlY3RpdmVDYW1lcmEge1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgWydlbnZNYXAnLCAnbWFrZURlZmF1bHQnLCAnbWFudWFsJywgJ2ZyYW1lcycsICdyZXNvbHV0aW9uJ10pO1xuXG5cdGNvbnRlbnQgPSBjb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpO1xuXHRjYW1lcmFDb250ZW50ID0gY29udGVudENoaWxkKE5ndHNDYW1lcmFDb250ZW50LCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pO1xuXG5cdGNhbWVyYVJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPFBlcnNwZWN0aXZlQ2FtZXJhPj4oJ2NhbWVyYScpO1xuXHRncm91cFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEdyb3VwPj4oJ2dyb3VwJyk7XG5cblx0cHJpdmF0ZSBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblxuXHRwcml2YXRlIGNhbWVyYSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdjYW1lcmEnKTtcblx0cHJpdmF0ZSBzaXplID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKTtcblxuXHRwcml2YXRlIG1hbnVhbCA9IHBpY2sodGhpcy5vcHRpb25zLCAnbWFudWFsJyk7XG5cdHByaXZhdGUgbWFrZURlZmF1bHQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ21ha2VEZWZhdWx0Jyk7XG5cdHByaXZhdGUgcmVzb2x1dGlvbiA9IHBpY2sodGhpcy5vcHRpb25zLCAncmVzb2x1dGlvbicpO1xuXHRwcml2YXRlIGZibyA9IGluamVjdEZCTygoKSA9PiAoeyB3aWR0aDogdGhpcy5yZXNvbHV0aW9uKCkgfSkpO1xuXHR0ZXh0dXJlID0gcGljayh0aGlzLmZibywgJ3RleHR1cmUnKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0dGhpcy5hdXRvRWZmZWN0KCgpID0+IHtcblx0XHRcdFx0aWYgKCF0aGlzLm1hbnVhbCgpKSB7XG5cdFx0XHRcdFx0dGhpcy5jYW1lcmFSZWYoKS5uYXRpdmVFbGVtZW50LmFzcGVjdCA9IHRoaXMuc2l6ZSgpLndpZHRoIC8gdGhpcy5zaXplKCkuaGVpZ2h0O1xuXHRcdFx0XHRcdHRoaXMuY2FtZXJhUmVmKCkubmF0aXZlRWxlbWVudC51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHR0aGlzLmF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRpZiAodGhpcy5tYWtlRGVmYXVsdCgpKSB7XG5cdFx0XHRcdFx0Y29uc3Qgb2xkQ2FtID0gdW50cmFja2VkKHRoaXMuY2FtZXJhKTtcblx0XHRcdFx0XHR0aGlzLnN0b3JlLnVwZGF0ZSh7IGNhbWVyYTogdGhpcy5jYW1lcmFSZWYoKS5uYXRpdmVFbGVtZW50IH0pO1xuXHRcdFx0XHRcdHJldHVybiAoKSA9PiB0aGlzLnN0b3JlLnVwZGF0ZSgoKSA9PiAoeyBjYW1lcmE6IG9sZENhbSB9KSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fSk7XG5cblx0XHRcdHRoaXMuY2FtZXJhUmVmKCkubmF0aXZlRWxlbWVudC51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG5cdFx0fSk7XG5cblx0XHRsZXQgY291bnQgPSAwO1xuXHRcdGxldCBvbGRFbnZNYXA6IENvbG9yIHwgVGV4dHVyZSB8IG51bGwgPSBudWxsO1xuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoeyBnbCwgc2NlbmUgfSkgPT4ge1xuXHRcdFx0Y29uc3QgW3sgZnJhbWVzLCBlbnZNYXAgfSwgZ3JvdXAsIGNhbWVyYSwgZmJvXSA9IFtcblx0XHRcdFx0dGhpcy5vcHRpb25zKCksXG5cdFx0XHRcdHRoaXMuZ3JvdXBSZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLmNhbWVyYVJlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHRoaXMuZmJvKCksXG5cdFx0XHRdO1xuXHRcdFx0aWYgKHRoaXMuY2FtZXJhQ29udGVudCgpICYmIGdyb3VwICYmIGNhbWVyYSAmJiBmYm8gJiYgKGZyYW1lcyA9PT0gSW5maW5pdHkgfHwgY291bnQgPCBmcmFtZXMpKSB7XG5cdFx0XHRcdGdyb3VwLnZpc2libGUgPSBmYWxzZTtcblx0XHRcdFx0Z2wuc2V0UmVuZGVyVGFyZ2V0KGZibyk7XG5cdFx0XHRcdG9sZEVudk1hcCA9IHNjZW5lLmJhY2tncm91bmQ7XG5cdFx0XHRcdGlmIChlbnZNYXApIHNjZW5lLmJhY2tncm91bmQgPSBlbnZNYXA7XG5cdFx0XHRcdGdsLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcblx0XHRcdFx0c2NlbmUuYmFja2dyb3VuZCA9IG9sZEVudk1hcDtcblx0XHRcdFx0Z2wuc2V0UmVuZGVyVGFyZ2V0KG51bGwpO1xuXHRcdFx0XHRncm91cC52aXNpYmxlID0gdHJ1ZTtcblx0XHRcdFx0Y291bnQrKztcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufVxuIl19
@@ -1,2 +1,3 @@
1
- export * from './orbit-controls/orbit-controls';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvY29udHJvbHMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUNBQWlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL29yYml0LWNvbnRyb2xzL29yYml0LWNvbnRyb2xzJztcbiJdfQ==
1
+ export * from './lib/camera-controls';
2
+ export * from './lib/orbit-controls';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvY29udHJvbHMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2NhbWVyYS1jb250cm9scyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9vcmJpdC1jb250cm9scyc7XG4iXX0=