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
@@ -1,46 +0,0 @@
1
- import { NgIf, NgTemplateOutlet } from '@angular/common';
2
- import { CUSTOM_ELEMENTS_SCHEMA, Component, ContentChild } from '@angular/core';
3
- import { extend } from 'angular-three';
4
- import { Group, PerspectiveCamera } from 'three';
5
- import { NgtsCamera } from '../camera/camera';
6
- import { NgtsCameraContent } from '../camera/camera-content';
7
- import * as i0 from "@angular/core";
8
- extend({ PerspectiveCamera, Group });
9
- export class NgtsPerspectiveCamera extends NgtsCamera {
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsPerspectiveCamera, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
11
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsPerspectiveCamera, isStandalone: true, selector: "ngts-perspective-camera", queries: [{ propertyName: "cameraContent", first: true, predicate: NgtsCameraContent, descendants: true }], usesInheritance: true, ngImport: i0, template: `
12
- <ngt-perspective-camera [ref]="cameraRef" ngtCompound>
13
- <ng-container
14
- *ngIf="cameraContent && !cameraContent.ngtsCameraContent"
15
- [ngTemplateOutlet]="cameraContent.template"
16
- />
17
- </ngt-perspective-camera>
18
- <ngt-group #group *ngIf="cameraContent && cameraContent.ngtsCameraContent">
19
- <ng-container *ngTemplateOutlet="cameraContent.template; context: { fbo: fboRef.nativeElement, group }" />
20
- </ngt-group>
21
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
22
- }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsPerspectiveCamera, decorators: [{
24
- type: Component,
25
- args: [{
26
- selector: 'ngts-perspective-camera',
27
- standalone: true,
28
- template: `
29
- <ngt-perspective-camera [ref]="cameraRef" ngtCompound>
30
- <ng-container
31
- *ngIf="cameraContent && !cameraContent.ngtsCameraContent"
32
- [ngTemplateOutlet]="cameraContent.template"
33
- />
34
- </ngt-perspective-camera>
35
- <ngt-group #group *ngIf="cameraContent && cameraContent.ngtsCameraContent">
36
- <ng-container *ngTemplateOutlet="cameraContent.template; context: { fbo: fboRef.nativeElement, group }" />
37
- </ngt-group>
38
- `,
39
- imports: [NgIf, NgTemplateOutlet],
40
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
41
- }]
42
- }], propDecorators: { cameraContent: [{
43
- type: ContentChild,
44
- args: [NgtsCameraContent]
45
- }] } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc3BlY3RpdmUtY2FtZXJhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL2NhbWVyYXMvc3JjL3BlcnNwZWN0aXZlLWNhbWVyYS9wZXJzcGVjdGl2ZS1jYW1lcmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxNQUFNLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBd0IsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFFN0QsTUFBTSxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQTRCckMsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFVBQTZCOzhHQUEzRCxxQkFBcUI7a0dBQXJCLHFCQUFxQiw4SEFDbkIsaUJBQWlCLHVFQWZyQjs7Ozs7Ozs7OztFQVVULDREQUNTLElBQUksNkZBQUUsZ0JBQWdCOzsyRkFHcEIscUJBQXFCO2tCQWpCakMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7Ozs7O0VBVVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDO29CQUNqQyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDakM7OEJBRWlDLGFBQWE7c0JBQTdDLFlBQVk7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCB0eXBlIE5ndFBlcnNwZWN0aXZlQ2FtZXJhIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBHcm91cCwgUGVyc3BlY3RpdmVDYW1lcmEgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RzQ2FtZXJhLCB0eXBlIE5ndHNDYW1lcmFTdGF0ZSB9IGZyb20gJy4uL2NhbWVyYS9jYW1lcmEnO1xuaW1wb3J0IHsgTmd0c0NhbWVyYUNvbnRlbnQgfSBmcm9tICcuLi9jYW1lcmEvY2FtZXJhLWNvbnRlbnQnO1xuXG5leHRlbmQoeyBQZXJzcGVjdGl2ZUNhbWVyYSwgR3JvdXAgfSk7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcblx0aW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG5cdFx0LyoqXG5cdFx0ICogQGV4dGVuZHMgbmd0LXBlcnNwZWN0aXZlLWNhbWVyYVxuXHRcdCAqL1xuXHRcdCduZ3RzLXBlcnNwZWN0aXZlLWNhbWVyYSc6IE5ndHNDYW1lcmFTdGF0ZSAmIE5ndFBlcnNwZWN0aXZlQ2FtZXJhO1xuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtcGVyc3BlY3RpdmUtY2FtZXJhJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXBlcnNwZWN0aXZlLWNhbWVyYSBbcmVmXT1cImNhbWVyYVJlZlwiIG5ndENvbXBvdW5kPlxuXHRcdFx0PG5nLWNvbnRhaW5lclxuXHRcdFx0XHQqbmdJZj1cImNhbWVyYUNvbnRlbnQgJiYgIWNhbWVyYUNvbnRlbnQubmd0c0NhbWVyYUNvbnRlbnRcIlxuXHRcdFx0XHRbbmdUZW1wbGF0ZU91dGxldF09XCJjYW1lcmFDb250ZW50LnRlbXBsYXRlXCJcblx0XHRcdC8+XG5cdFx0PC9uZ3QtcGVyc3BlY3RpdmUtY2FtZXJhPlxuXHRcdDxuZ3QtZ3JvdXAgI2dyb3VwICpuZ0lmPVwiY2FtZXJhQ29udGVudCAmJiBjYW1lcmFDb250ZW50Lm5ndHNDYW1lcmFDb250ZW50XCI+XG5cdFx0XHQ8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FtZXJhQ29udGVudC50ZW1wbGF0ZTsgY29udGV4dDogeyBmYm86IGZib1JlZi5uYXRpdmVFbGVtZW50LCBncm91cCB9XCIgLz5cblx0XHQ8L25ndC1ncm91cD5cblx0YCxcblx0aW1wb3J0czogW05nSWYsIE5nVGVtcGxhdGVPdXRsZXRdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNQZXJzcGVjdGl2ZUNhbWVyYSBleHRlbmRzIE5ndHNDYW1lcmE8UGVyc3BlY3RpdmVDYW1lcmE+IHtcblx0QENvbnRlbnRDaGlsZChOZ3RzQ2FtZXJhQ29udGVudCkgY2FtZXJhQ29udGVudD86IE5ndHNDYW1lcmFDb250ZW50O1xufVxuIl19
@@ -1,185 +0,0 @@
1
- import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, EventEmitter, Input, Output } from '@angular/core';
2
- import { injectBeforeRender, injectNgtRef, injectNgtStore, NgtArgs, signalStore, } from 'angular-three';
3
- import { OrbitControls } from 'three-stdlib';
4
- import * as i0 from "@angular/core";
5
- export class NgtsOrbitControls {
6
- set _camera(camera) {
7
- this.inputs.set({ camera });
8
- }
9
- set _domElement(domElement) {
10
- this.inputs.set({ domElement });
11
- }
12
- set _makeDefault(makeDefault) {
13
- this.inputs.set({ makeDefault });
14
- }
15
- set _regress(regress) {
16
- this.inputs.set({ regress });
17
- }
18
- set _target(target) {
19
- this.inputs.set({ target });
20
- }
21
- set _enableDamping(enableDamping) {
22
- this.inputs.set({ enableDamping });
23
- }
24
- set _keyEvents(keyEvents) {
25
- this.inputs.set({ keyEvents });
26
- }
27
- constructor() {
28
- this.inputs = signalStore({
29
- enableDamping: true,
30
- regress: false,
31
- makeDefault: false,
32
- keyEvents: false,
33
- });
34
- this.controlsRef = injectNgtRef();
35
- this.change = new EventEmitter();
36
- this.start = new EventEmitter();
37
- this.end = new EventEmitter();
38
- this.store = injectNgtStore();
39
- this.invalidate = this.store.select('invalidate');
40
- this.performanceRegress = this.store.select('performance', 'regress');
41
- this.defaultCamera = this.store.select('camera');
42
- this.glDomElement = this.store.select('gl', 'domElement');
43
- this.regress = this.inputs.select('regress');
44
- this.camera = this.inputs.select('camera');
45
- this.domElement = this.inputs.select('domElement');
46
- this.keyEvents = this.inputs.select('keyEvents');
47
- this.makeDefault = this.inputs.select('makeDefault');
48
- this.args = computed(() => [this.controlsRef.nativeElement]);
49
- this.enableDamping = this.inputs.select('enableDamping');
50
- injectBeforeRender(() => {
51
- const controls = this.controlsRef.nativeElement;
52
- if (controls && controls.enabled) {
53
- controls.update();
54
- }
55
- }, { priority: -1 });
56
- this.setControls();
57
- this.connectElement();
58
- this.makeControlsDefault();
59
- this.setEvents();
60
- }
61
- setControls() {
62
- effect(() => {
63
- const [camera, defaultCamera, controls] = [
64
- this.camera(),
65
- this.defaultCamera(),
66
- this.controlsRef.nativeElement,
67
- ];
68
- const controlsCamera = camera || defaultCamera;
69
- if (!controls || controls.object !== controlsCamera) {
70
- this.controlsRef.nativeElement = new OrbitControls(controlsCamera);
71
- }
72
- });
73
- }
74
- connectElement() {
75
- effect((onCleanup) => {
76
- const [keyEvents, domElement, controls] = [
77
- this.keyEvents(),
78
- this.domElement() || this.store.get('events', 'connected') || this.glDomElement(),
79
- this.controlsRef.nativeElement,
80
- this.invalidate(),
81
- this.regress(),
82
- ];
83
- if (!controls)
84
- return;
85
- if (keyEvents) {
86
- controls.connect(keyEvents === true ? domElement : keyEvents);
87
- }
88
- else {
89
- controls.connect(domElement);
90
- }
91
- onCleanup(() => void controls.dispose());
92
- });
93
- }
94
- makeControlsDefault() {
95
- effect((onCleanup) => {
96
- const [controls, makeDefault] = [this.controlsRef.nativeElement, this.makeDefault()];
97
- if (!controls)
98
- return;
99
- if (makeDefault) {
100
- const oldControls = this.store.get('controls');
101
- this.store.set({ controls });
102
- onCleanup(() => void this.store.set({ controls: oldControls }));
103
- }
104
- });
105
- }
106
- setEvents() {
107
- effect((onCleanup) => {
108
- const [controls, invalidate, performanceRegress, regress] = [
109
- this.controlsRef.nativeElement,
110
- this.invalidate(),
111
- this.performanceRegress(),
112
- this.regress(),
113
- ];
114
- if (!controls)
115
- return;
116
- const changeCallback = (e) => {
117
- invalidate();
118
- if (regress)
119
- performanceRegress();
120
- if (this.change.observed)
121
- this.change.emit(e);
122
- };
123
- const startCallback = this.start.observed ? this.start.emit.bind(this.start) : null;
124
- const endCallback = this.end.observed ? this.end.emit.bind(this.end) : null;
125
- controls.addEventListener('change', changeCallback);
126
- if (startCallback)
127
- controls.addEventListener('start', startCallback);
128
- if (endCallback)
129
- controls.addEventListener('end', endCallback);
130
- onCleanup(() => {
131
- controls.removeEventListener('change', changeCallback);
132
- if (startCallback)
133
- controls.removeEventListener('start', startCallback);
134
- if (endCallback)
135
- controls.removeEventListener('end', endCallback);
136
- });
137
- });
138
- }
139
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsOrbitControls, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
140
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsOrbitControls, isStandalone: true, selector: "ngts-orbit-controls", inputs: { controlsRef: "controlsRef", _camera: ["camera", "_camera"], _domElement: ["domElement", "_domElement"], _makeDefault: ["makeDefault", "_makeDefault"], _regress: ["regress", "_regress"], _target: ["target", "_target"], _enableDamping: ["enableDamping", "_enableDamping"], _keyEvents: ["keyEvents", "_keyEvents"] }, outputs: { change: "change", start: "start", end: "end" }, ngImport: i0, template: `
141
- <ngt-primitive *args="args()" ngtCompound [enableDamping]="enableDamping()" />
142
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
143
- }
144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsOrbitControls, decorators: [{
145
- type: Component,
146
- args: [{
147
- selector: 'ngts-orbit-controls',
148
- standalone: true,
149
- template: `
150
- <ngt-primitive *args="args()" ngtCompound [enableDamping]="enableDamping()" />
151
- `,
152
- imports: [NgtArgs],
153
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
154
- }]
155
- }], ctorParameters: function () { return []; }, propDecorators: { controlsRef: [{
156
- type: Input
157
- }], _camera: [{
158
- type: Input,
159
- args: [{ alias: 'camera' }]
160
- }], _domElement: [{
161
- type: Input,
162
- args: [{ alias: 'domElement' }]
163
- }], _makeDefault: [{
164
- type: Input,
165
- args: [{ alias: 'makeDefault' }]
166
- }], _regress: [{
167
- type: Input,
168
- args: [{ alias: 'regress' }]
169
- }], _target: [{
170
- type: Input,
171
- args: [{ alias: 'target' }]
172
- }], _enableDamping: [{
173
- type: Input,
174
- args: [{ alias: 'enableDamping' }]
175
- }], _keyEvents: [{
176
- type: Input,
177
- args: [{ alias: 'keyEvents' }]
178
- }], change: [{
179
- type: Output
180
- }], start: [{
181
- type: Output
182
- }], end: [{
183
- type: Output
184
- }] } });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JiaXQtY29udHJvbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvY29udHJvbHMvc3JjL29yYml0LWNvbnRyb2xzL29yYml0LWNvbnRyb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQ04sa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixjQUFjLEVBQ2QsT0FBTyxFQUNQLFdBQVcsR0FHWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQThCN0MsTUFBTSxPQUFPLGlCQUFpQjtJQVU3QixJQUFnQyxPQUFPLENBQUMsTUFBb0I7UUFDM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFvQyxXQUFXLENBQUMsVUFBdUI7UUFDdEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFxQyxZQUFZLENBQUMsV0FBb0I7UUFDckUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFpQyxRQUFRLENBQUMsT0FBZ0I7UUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFnQyxPQUFPLENBQUMsTUFBd0Q7UUFDL0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxD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QUFDLHNCQUFzQixDQUFDO2lCQUNqQzswRUFTUyxXQUFXO3NCQUFuQixLQUFLO2dCQUUwQixPQUFPO3NCQUF0QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtnQkFJVSxXQUFXO3NCQUE5QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTtnQkFJTyxZQUFZO3NCQUFoRCxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtnQkFJRSxRQUFRO3NCQUF4QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFJSyxPQUFPO3NCQUF0QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtnQkFJYSxjQUFjO3NCQUFwRCxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRTtnQkFJRSxVQUFVO3NCQUE1QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtnQkFJbkIsTUFBTTtzQkFBZixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxHQUFHO3NCQUFaLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBlZmZlY3QsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0aW5qZWN0QmVmb3JlUmVuZGVyLFxuXHRpbmplY3ROZ3RSZWYsXG5cdGluamVjdE5ndFN0b3JlLFxuXHROZ3RBcmdzLFxuXHRzaWduYWxTdG9yZSxcblx0dHlwZSBOZ3RDYW1lcmEsXG5cdHR5cGUgTmd0VmVjdG9yMyxcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBPcmJpdENvbnRyb2xzIH0gZnJvbSAndGhyZWUtc3RkbGliJztcblxuZXhwb3J0IHR5cGUgTmd0c09yYml0Q29udHJvbHNTdGF0ZSA9IHtcblx0Y2FtZXJhPzogVEhSRUUuQ2FtZXJhO1xuXHRkb21FbGVtZW50PzogSFRNTEVsZW1lbnQ7XG5cdHRhcmdldD86IE5ndFZlY3RvcjM7XG5cdG1ha2VEZWZhdWx0OiBib29sZWFuO1xuXHRyZWdyZXNzOiBib29sZWFuO1xuXHRlbmFibGVEYW1waW5nOiBib29sZWFuO1xuXHRrZXlFdmVudHM6IGJvb2xlYW4gfCBIVE1MRWxlbWVudDtcbn07XG5cbmRlY2xhcmUgZ2xvYmFsIHtcblx0aW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG5cdFx0LyoqXG5cdFx0ICogQGV4dGVuZHMgdGhyZWUtc3RkbGlifE9yYml0Q29udHJvbHNcblx0XHQgKi9cblx0XHQnbmd0cy1vcmJpdC1jb250cm9scyc6IE9yYml0Q29udHJvbHMgJiBOZ3RzT3JiaXRDb250cm9sc1N0YXRlO1xuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtb3JiaXQtY29udHJvbHMnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiYXJncygpXCIgbmd0Q29tcG91bmQgW2VuYWJsZURhbXBpbmddPVwiZW5hYmxlRGFtcGluZygpXCIgLz5cblx0YCxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNPcmJpdENvbnRyb2xzIHtcblx0cHJpdmF0ZSBpbnB1dHMgPSBzaWduYWxTdG9yZTxOZ3RzT3JiaXRDb250cm9sc1N0YXRlPih7XG5cdFx0ZW5hYmxlRGFtcGluZzogdHJ1ZSxcblx0XHRyZWdyZXNzOiBmYWxzZSxcblx0XHRtYWtlRGVmYXVsdDogZmFsc2UsXG5cdFx0a2V5RXZlbnRzOiBmYWxzZSxcblx0fSk7XG5cblx0QElucHV0KCkgY29udHJvbHNSZWYgPSBpbmplY3ROZ3RSZWY8T3JiaXRDb250cm9scz4oKTtcblxuXHRASW5wdXQoeyBhbGlhczogJ2NhbWVyYScgfSkgc2V0IF9jYW1lcmEoY2FtZXJhOiBUSFJFRS5DYW1lcmEpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBjYW1lcmEgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2RvbUVsZW1lbnQnIH0pIHNldCBfZG9tRWxlbWVudChkb21FbGVtZW50OiBIVE1MRWxlbWVudCkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGRvbUVsZW1lbnQgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ21ha2VEZWZhdWx0JyB9KSBzZXQgX21ha2VEZWZhdWx0KG1ha2VEZWZhdWx0OiBib29sZWFuKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgbWFrZURlZmF1bHQgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3JlZ3Jlc3MnIH0pIHNldCBfcmVncmVzcyhyZWdyZXNzOiBib29sZWFuKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgcmVncmVzcyB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAndGFyZ2V0JyB9KSBzZXQgX3RhcmdldCh0YXJnZXQ6IFRIUkVFLlZlY3RvcjMgfCBQYXJhbWV0ZXJzPFRIUkVFLlZlY3RvcjNbJ3NldCddPikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHRhcmdldCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZW5hYmxlRGFtcGluZycgfSkgc2V0IF9lbmFibGVEYW1waW5nKGVuYWJsZURhbXBpbmc6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBlbmFibGVEYW1waW5nIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdrZXlFdmVudHMnIH0pIHNldCBfa2V5RXZlbnRzKGtleUV2ZW50czogYm9vbGVhbikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGtleUV2ZW50cyB9KTtcblx0fVxuXG5cdEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRIUkVFLkV2ZW50PigpO1xuXHRAT3V0cHV0KCkgc3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPFRIUkVFLkV2ZW50PigpO1xuXHRAT3V0cHV0KCkgZW5kID0gbmV3IEV2ZW50RW1pdHRlcjxUSFJFRS5FdmVudD4oKTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0Tmd0U3RvcmUoKTtcblx0cHJpdmF0ZSBpbnZhbGlkYXRlID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2ludmFsaWRhdGUnKTtcblx0cHJpdmF0ZSBwZXJmb3JtYW5jZVJlZ3Jlc3MgPSB0aGlzLnN0b3JlLnNlbGVjdCgncGVyZm9ybWFuY2UnLCAncmVncmVzcycpO1xuXHRwcml2YXRlIGRlZmF1bHRDYW1lcmEgPSB0aGlzLnN0b3JlLnNlbGVjdCgnY2FtZXJhJyk7XG5cdHByaXZhdGUgZ2xEb21FbGVtZW50ID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2dsJywgJ2RvbUVsZW1lbnQnKTtcblx0cHJpdmF0ZSByZWdyZXNzID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdyZWdyZXNzJyk7XG5cdHByaXZhdGUgY2FtZXJhID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdjYW1lcmEnKTtcblx0cHJpdmF0ZSBkb21FbGVtZW50ID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdkb21FbGVtZW50Jyk7XG5cdHByaXZhdGUga2V5RXZlbnRzID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdrZXlFdmVudHMnKTtcblx0cHJpdmF0ZSBtYWtlRGVmYXVsdCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnbWFrZURlZmF1bHQnKTtcblxuXHRhcmdzID0gY29tcHV0ZWQoKCkgPT4gW3RoaXMuY29udHJvbHNSZWYubmF0aXZlRWxlbWVudF0pO1xuXHRlbmFibGVEYW1waW5nID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdlbmFibGVEYW1waW5nJyk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRjb25zdCBjb250cm9scyA9IHRoaXMuY29udHJvbHNSZWYubmF0aXZlRWxlbWVudDtcblx0XHRcdFx0aWYgKGNvbnRyb2xzICYmIGNvbnRyb2xzLmVuYWJsZWQpIHtcblx0XHRcdFx0XHRjb250cm9scy51cGRhdGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHsgcHJpb3JpdHk6IC0xIH0sXG5cdFx0KTtcblxuXHRcdHRoaXMuc2V0Q29udHJvbHMoKTtcblx0XHR0aGlzLmNvbm5lY3RFbGVtZW50KCk7XG5cdFx0dGhpcy5tYWtlQ29udHJvbHNEZWZhdWx0KCk7XG5cdFx0dGhpcy5zZXRFdmVudHMoKTtcblx0fVxuXG5cdHByaXZhdGUgc2V0Q29udHJvbHMoKSB7XG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IFtjYW1lcmEsIGRlZmF1bHRDYW1lcmEsIGNvbnRyb2xzXSA9IFtcblx0XHRcdFx0dGhpcy5jYW1lcmEoKSxcblx0XHRcdFx0dGhpcy5kZWZhdWx0Q2FtZXJhKCksXG5cdFx0XHRcdHRoaXMuY29udHJvbHNSZWYubmF0aXZlRWxlbWVudCxcblx0XHRcdF07XG5cdFx0XHRjb25zdCBjb250cm9sc0NhbWVyYSA9IGNhbWVyYSB8fCBkZWZhdWx0Q2FtZXJhO1xuXHRcdFx0aWYgKCFjb250cm9scyB8fCBjb250cm9scy5vYmplY3QgIT09IGNvbnRyb2xzQ2FtZXJhKSB7XG5cdFx0XHRcdHRoaXMuY29udHJvbHNSZWYubmF0aXZlRWxlbWVudCA9IG5ldyBPcmJpdENvbnRyb2xzKGNvbnRyb2xzQ2FtZXJhIGFzIE5ndENhbWVyYSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIGNvbm5lY3RFbGVtZW50KCkge1xuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBba2V5RXZlbnRzLCBkb21FbGVtZW50LCBjb250cm9sc10gPSBbXG5cdFx0XHRcdHRoaXMua2V5RXZlbnRzKCksXG5cdFx0XHRcdHRoaXMuZG9tRWxlbWVudCgpIHx8IHRoaXMuc3RvcmUuZ2V0KCdldmVudHMnLCAnY29ubmVjdGVkJykgfHwgdGhpcy5nbERvbUVsZW1lbnQoKSxcblx0XHRcdFx0dGhpcy5jb250cm9sc1JlZi5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLmludmFsaWRhdGUoKSxcblx0XHRcdFx0dGhpcy5yZWdyZXNzKCksXG5cdFx0XHRdO1xuXHRcdFx0aWYgKCFjb250cm9scykgcmV0dXJuO1xuXHRcdFx0aWYgKGtleUV2ZW50cykge1xuXHRcdFx0XHRjb250cm9scy5jb25uZWN0KGtleUV2ZW50cyA9PT0gdHJ1ZSA/IGRvbUVsZW1lbnQgOiBrZXlFdmVudHMpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29udHJvbHMuY29ubmVjdChkb21FbGVtZW50KTtcblx0XHRcdH1cblx0XHRcdG9uQ2xlYW51cCgoKSA9PiB2b2lkIGNvbnRyb2xzLmRpc3Bvc2UoKSk7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIG1ha2VDb250cm9sc0RlZmF1bHQoKSB7XG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IFtjb250cm9scywgbWFrZURlZmF1bHRdID0gW3RoaXMuY29udHJvbHNSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5tYWtlRGVmYXVsdCgpXTtcblx0XHRcdGlmICghY29udHJvbHMpIHJldHVybjtcblx0XHRcdGlmIChtYWtlRGVmYXVsdCkge1xuXHRcdFx0XHRjb25zdCBvbGRDb250cm9scyA9IHRoaXMuc3RvcmUuZ2V0KCdjb250cm9scycpO1xuXHRcdFx0XHR0aGlzLnN0b3JlLnNldCh7IGNvbnRyb2xzIH0pO1xuXHRcdFx0XHRvbkNsZWFudXAoKCkgPT4gdm9pZCB0aGlzLnN0b3JlLnNldCh7IGNvbnRyb2xzOiBvbGRDb250cm9scyB9KSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIHNldEV2ZW50cygpIHtcblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0Y29uc3QgW2NvbnRyb2xzLCBpbnZhbGlkYXRlLCBwZXJmb3JtYW5jZVJlZ3Jlc3MsIHJlZ3Jlc3NdID0gW1xuXHRcdFx0XHR0aGlzLmNvbnRyb2xzUmVmLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHRoaXMuaW52YWxpZGF0ZSgpLFxuXHRcdFx0XHR0aGlzLnBlcmZvcm1hbmNlUmVncmVzcygpLFxuXHRcdFx0XHR0aGlzLnJlZ3Jlc3MoKSxcblx0XHRcdF07XG5cdFx0XHRpZiAoIWNvbnRyb2xzKSByZXR1cm47XG5cdFx0XHRjb25zdCBjaGFuZ2VDYWxsYmFjazogKGU6IFRIUkVFLkV2ZW50KSA9PiB2b2lkID0gKGUpID0+IHtcblx0XHRcdFx0aW52YWxpZGF0ZSgpO1xuXHRcdFx0XHRpZiAocmVncmVzcykgcGVyZm9ybWFuY2VSZWdyZXNzKCk7XG5cdFx0XHRcdGlmICh0aGlzLmNoYW5nZS5vYnNlcnZlZCkgdGhpcy5jaGFuZ2UuZW1pdChlKTtcblx0XHRcdH07XG5cblx0XHRcdGNvbnN0IHN0YXJ0Q2FsbGJhY2sgPSB0aGlzLnN0YXJ0Lm9ic2VydmVkID8gdGhpcy5zdGFydC5lbWl0LmJpbmQodGhpcy5zdGFydCkgOiBudWxsO1xuXHRcdFx0Y29uc3QgZW5kQ2FsbGJhY2sgPSB0aGlzLmVuZC5vYnNlcnZlZCA/IHRoaXMuZW5kLmVtaXQuYmluZCh0aGlzLmVuZCkgOiBudWxsO1xuXG5cdFx0XHRjb250cm9scy5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBjaGFuZ2VDYWxsYmFjayk7XG5cdFx0XHRpZiAoc3RhcnRDYWxsYmFjaykgY29udHJvbHMuYWRkRXZlbnRMaXN0ZW5lcignc3RhcnQnLCBzdGFydENhbGxiYWNrKTtcblx0XHRcdGlmIChlbmRDYWxsYmFjaykgY29udHJvbHMuYWRkRXZlbnRMaXN0ZW5lcignZW5kJywgZW5kQ2FsbGJhY2spO1xuXG5cdFx0XHRvbkNsZWFudXAoKCkgPT4ge1xuXHRcdFx0XHRjb250cm9scy5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBjaGFuZ2VDYWxsYmFjayk7XG5cdFx0XHRcdGlmIChzdGFydENhbGxiYWNrKSBjb250cm9scy5yZW1vdmVFdmVudExpc3RlbmVyKCdzdGFydCcsIHN0YXJ0Q2FsbGJhY2spO1xuXHRcdFx0XHRpZiAoZW5kQ2FsbGJhY2spIGNvbnRyb2xzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2VuZCcsIGVuZENhbGxiYWNrKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1zb2JhLWdpem1vcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9naXptb3Mvc3JjL2FuZ3VsYXItdGhyZWUtc29iYS1naXptb3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -1,197 +0,0 @@
1
- import { NgTemplateOutlet } from '@angular/common';
2
- import { CUSTOM_ELEMENTS_SCHEMA, Component, ContentChild, EventEmitter, Input, Output, TemplateRef, computed, effect, forwardRef, } from '@angular/core';
3
- import { NgtPortal, NgtPortalContent, createInjectionToken, extend, injectBeforeRender, injectNgtRef, injectNgtStore, signalStore, } from 'angular-three';
4
- import { NgtsOrthographicCamera } from 'angular-three-soba/cameras';
5
- import { NgtsSobaContent } from 'angular-three-soba/utils';
6
- import { Group, Matrix4, Object3D, OrthographicCamera, Quaternion, Vector3 } from 'three';
7
- import { OrbitControls } from 'three-stdlib';
8
- import * as i0 from "@angular/core";
9
- const isOrbitControls = (controls) => {
10
- return 'minPolarAngle' in controls;
11
- };
12
- extend({ Group });
13
- export const [injectNgtsGizmoHelperApi, provideNgtsGizmoHelperApi] = createInjectionToken((gizmoHelper) => gizmoHelper.api, { isRoot: false, deps: [forwardRef(() => NgtsGizmoHelper)] });
14
- export class NgtsGizmoHelper {
15
- set _alignment(alignment) {
16
- this.inputs.set({ alignment });
17
- }
18
- set _margin(margin) {
19
- this.inputs.set({ margin });
20
- }
21
- set _renderPriority(renderPriority) {
22
- this.inputs.set({ renderPriority });
23
- }
24
- set _autoClear(autoClear) {
25
- this.inputs.set({ autoClear });
26
- }
27
- constructor() {
28
- this.inputs = signalStore({
29
- alignment: 'bottom-right',
30
- margin: [80, 80],
31
- renderPriority: 1,
32
- });
33
- this.gizmoRef = injectNgtRef();
34
- this.update = new EventEmitter();
35
- this.store = injectNgtStore();
36
- this.mainCamera = this.store.select('camera');
37
- // @ts-expect-error
38
- this.defaultControls = this.store.select('controls');
39
- this.invalidate = this.store.select('invalidate');
40
- this.size = this.store.select('size');
41
- this.animating = false;
42
- this.q1 = new Quaternion();
43
- this.q2 = new Quaternion();
44
- this.turnRate = 2 * Math.PI; // turn rate in angles per second
45
- this.matrix = new Matrix4();
46
- this.radius = 0;
47
- this.focusPoint = new Vector3(0, 0, 0);
48
- this.defaultUp = new Vector3(0, 0, 0);
49
- this.target = new Vector3();
50
- this.targetPosition = new Vector3();
51
- this.dummy = new Object3D();
52
- this.margin = this.inputs.select('margin');
53
- this.alignment = this.inputs.select('alignment');
54
- this.virtualCamRef = injectNgtRef();
55
- this.renderPriority = this.inputs.select('renderPriority');
56
- this.gizmoPosition = computed(() => {
57
- const [{ width, height }, [marginX, marginY], alignment] = [this.size(), this.margin(), this.alignment()];
58
- const x = alignment.endsWith('-center')
59
- ? 0
60
- : alignment.endsWith('-left')
61
- ? -width / 2 + marginX
62
- : width / 2 - marginX;
63
- const y = alignment.startsWith('center-')
64
- ? 0
65
- : alignment.startsWith('top-')
66
- ? height / 2 - marginY
67
- : -height / 2 + marginY;
68
- return [x, y, 0];
69
- });
70
- this.api = {
71
- tweenCamera: (direction) => {
72
- const [defaultControls, mainCamera, invalidate] = [
73
- this.defaultControls(),
74
- this.mainCamera(),
75
- this.invalidate(),
76
- ];
77
- this.animating = true;
78
- if (defaultControls)
79
- this.focusPoint = defaultControls?.target;
80
- this.radius = mainCamera.position.distanceTo(this.target);
81
- // Rotate from current camera orientation
82
- this.q1.copy(mainCamera.quaternion);
83
- // To new current camera orientation
84
- this.targetPosition.copy(direction).multiplyScalar(this.radius).add(this.target);
85
- this.dummy.lookAt(this.targetPosition);
86
- this.dummy.up.copy(mainCamera.up);
87
- this.q2.copy(this.dummy.quaternion);
88
- invalidate();
89
- },
90
- };
91
- this.trackMainCameraUp();
92
- this.beforeRender();
93
- }
94
- trackMainCameraUp() {
95
- effect(() => {
96
- const mainCamera = this.mainCamera();
97
- this.defaultUp.copy(mainCamera.up);
98
- });
99
- }
100
- beforeRender() {
101
- injectBeforeRender(({ delta }) => {
102
- const [gizmo, virtualCam, defaultControls, mainCamera, invalidate] = [
103
- this.gizmoRef.nativeElement,
104
- this.virtualCamRef.nativeElement,
105
- this.defaultControls(),
106
- this.mainCamera(),
107
- this.invalidate(),
108
- ];
109
- if (gizmo && virtualCam) {
110
- // Animate step
111
- if (this.animating) {
112
- if (this.q1.angleTo(this.q2) < 0.01) {
113
- this.animating = false;
114
- // Orbit controls uses UP vector as the orbit axes,
115
- // so we need to reset it after the animation is done
116
- // moving it around for the controls to work correctly
117
- if (isOrbitControls(defaultControls)) {
118
- mainCamera.up.copy(this.defaultUp);
119
- }
120
- }
121
- else {
122
- const step = delta * this.turnRate;
123
- // animate position by doing a slerp and then scaling the position on the unit sphere
124
- this.q1.rotateTowards(this.q2, step);
125
- // animate orientation
126
- mainCamera.position
127
- .set(0, 0, 1)
128
- .applyQuaternion(this.q1)
129
- .multiplyScalar(this.radius)
130
- .add(this.focusPoint);
131
- mainCamera.up.set(0, 1, 0).applyQuaternion(this.q1).normalize();
132
- mainCamera.quaternion.copy(this.q1);
133
- if (this.update.observed)
134
- this.update.emit();
135
- else if (defaultControls)
136
- defaultControls.update();
137
- invalidate();
138
- }
139
- }
140
- // Sync Gizmo with main camera orientation
141
- this.matrix.copy(mainCamera.matrix).invert();
142
- gizmo.quaternion.setFromRotationMatrix(this.matrix);
143
- }
144
- });
145
- }
146
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsGizmoHelper, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
147
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsGizmoHelper, isStandalone: true, selector: "ngts-gizmo-helper", inputs: { gizmoRef: "gizmoRef", _alignment: ["alignment", "_alignment"], _margin: ["margin", "_margin"], _renderPriority: ["renderPriority", "_renderPriority"], _autoClear: ["autoClear", "_autoClear"] }, outputs: { update: "update" }, providers: [provideNgtsGizmoHelperApi()], queries: [{ propertyName: "content", first: true, predicate: NgtsSobaContent, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: `
148
- <ngt-portal [renderPriority]="renderPriority()">
149
- <ng-template ngtPortalContent>
150
- <ngts-orthographic-camera [makeDefault]="true" [position]="[0, 0, 200]" [cameraRef]="virtualCamRef" />
151
- <ngt-group [ref]="gizmoRef" [position]="gizmoPosition()">
152
- <ng-container *ngTemplateOutlet="content" />
153
- </ngt-group>
154
- </ng-template>
155
- </ngt-portal>
156
- `, isInline: true, dependencies: [{ kind: "component", type: NgtPortal, selector: "ngt-portal", inputs: ["container", "state", "autoRender", "autoRenderPriority"], outputs: ["beforeRender"] }, { kind: "directive", type: NgtPortalContent, selector: "ng-template[ngtPortalContent]" }, { kind: "component", type: NgtsOrthographicCamera, selector: "ngts-orthographic-camera", inputs: ["left", "right", "top", "bottom"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
157
- }
158
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsGizmoHelper, decorators: [{
159
- type: Component,
160
- args: [{
161
- selector: 'ngts-gizmo-helper',
162
- standalone: true,
163
- template: `
164
- <ngt-portal [renderPriority]="renderPriority()">
165
- <ng-template ngtPortalContent>
166
- <ngts-orthographic-camera [makeDefault]="true" [position]="[0, 0, 200]" [cameraRef]="virtualCamRef" />
167
- <ngt-group [ref]="gizmoRef" [position]="gizmoPosition()">
168
- <ng-container *ngTemplateOutlet="content" />
169
- </ngt-group>
170
- </ng-template>
171
- </ngt-portal>
172
- `,
173
- imports: [NgtPortal, NgtPortalContent, NgtsOrthographicCamera, NgTemplateOutlet],
174
- providers: [provideNgtsGizmoHelperApi()],
175
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
176
- }]
177
- }], ctorParameters: function () { return []; }, propDecorators: { gizmoRef: [{
178
- type: Input
179
- }], _alignment: [{
180
- type: Input,
181
- args: [{ alias: 'alignment' }]
182
- }], _margin: [{
183
- type: Input,
184
- args: [{ alias: 'margin' }]
185
- }], _renderPriority: [{
186
- type: Input,
187
- args: [{ alias: 'renderPriority' }]
188
- }], _autoClear: [{
189
- type: Input,
190
- args: [{ alias: 'autoClear' }]
191
- }], update: [{
192
- type: Output
193
- }], content: [{
194
- type: ContentChild,
195
- args: [NgtsSobaContent, { static: true, read: TemplateRef }]
196
- }] } });
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l6bW8taGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL2dpem1vcy9zcmMvZ2l6bW8taGVscGVyL2dpem1vLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ04sc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFFBQVEsRUFDUixNQUFNLEVBQ04sVUFBVSxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixjQUFjLEVBQ2QsV0FBVyxHQUVYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMxRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQW9CN0MsTUFBTSxlQUFlLEdBQUcsQ0FBQyxRQUF1QixFQUE2QixFQUFFO0lBQzlFLE9BQU8sZUFBZSxJQUFLLFFBQTBCLENBQUM7QUFDdkQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQVFsQixNQUFNLENBQUMsTUFBTSxDQUFDLHdCQUF3QixFQUFFLHlCQUF5QixDQUFDLEdBQUcsb0JBQW9CLENBQ3hGLENBQUMsV0FBNEIsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFDakQsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUFFLENBQzVELENBQUM7QUFtQkYsTUFBTSxPQUFPLGVBQWU7SUFTM0IsSUFBbUMsVUFBVSxDQUM1QyxTQVNlO1FBRWYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFnQyxPQUFPLENBQUMsTUFBd0I7UUFDL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUF3QyxlQUFlLENBQUMsY0FBc0I7UUFDN0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFtQyxVQUFVLENBQUMsU0FBa0I7UUFDL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUF5RUQ7UUExR1EsV0FBTSxHQUFHLFdBQVcsQ0FBdUI7WUFDbEQsU0FBUyxFQUFFLGNBQWM7WUFDekIsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNoQixjQUFjLEVBQUUsQ0FBQztTQUNqQixDQUFDLENBQUM7UUFFTSxhQUFRLEdBQUcsWUFBWSxFQUFTLENBQUM7UUE2QmhDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBSTlCLFVBQUssR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUN6QixlQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakQsbUJBQW1CO1FBQ1gsb0JBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQTBCLENBQUM7UUFDekUsZUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdDLFNBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVqQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLE9BQUUsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLE9BQUUsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLGFBQVEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLGlDQUFpQztRQUN6RCxXQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUV2QixXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsZUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEMsY0FBUyxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakMsV0FBTSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDdkIsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQy9CLFVBQUssR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBRXZCLFdBQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxjQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFcEQsa0JBQWEsR0FBRyxZQUFZLEVBQXNCLENBQUM7UUFDbkQsbUJBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXRELGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM3QixNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQzFHLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO2dCQUN0QyxDQUFDLENBQUMsQ0FBQztnQkFDSCxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7b0JBQzdCLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsT0FBTztvQkFDdEIsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO2dCQUN4QyxDQUFDLENBQUMsQ0FBQztnQkFDSCxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7b0JBQzlCLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLE9BQU87b0JBQ3RCLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDO1lBQ3pCLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO1FBRUgsUUFBRyxHQUFHO1lBQ0wsV0FBVyxFQUFFLENBQUMsU0FBa0IsRUFBRSxFQUFFO2dCQUNuQyxNQUFNLENBQUMsZUFBZSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRztvQkFDakQsSUFBSSxDQUFDLGVBQWUsRUFBRTtvQkFDdEIsSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDakIsSUFBSSxDQUFDLFVBQVUsRUFBRTtpQkFDakIsQ0FBQztnQkFDRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztnQkFDdEIsSUFBSSxlQUFlO29CQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBZSxFQUFFLE1BQU0sQ0FBQztnQkFDL0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBRTFELHlDQUF5QztnQkFDekMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUVwQyxvQ0FBb0M7Z0JBQ3BDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFFakYsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUVsQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUVwQyxVQUFVLEVBQUUsQ0FBQztZQUNkLENBQUM7U0FDRCxDQUFDO1FBR0QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTyxpQkFBaUI7UUFDeEIsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNYLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sWUFBWTtRQUNuQixrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNoQyxNQUFNLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxHQUFHO2dCQUNwRSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWE7Z0JBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYTtnQkFDaEMsSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFVBQVUsRUFBRTthQUNqQixDQUFDO1lBRUYsSUFBSSxLQUFLLElBQUksVUFBVSxFQUFFO2dCQUN4QixlQUFlO2dCQUNmLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDbkIsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFO3dCQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQzt3QkFDdkIsbURBQW1EO3dCQUNuRCxxREFBcUQ7d0JBQ3JELHNEQUFzRDt3QkFDdEQsSUFBSSxlQUFlLENBQUMsZUFBZSxDQUFDLEVBQUU7NEJBQ3JDLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzt5QkFDbkM7cUJBQ0Q7eUJBQU07d0JBQ04sTUFBTSxJQUFJLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7d0JBQ25DLHFGQUFxRjt3QkFDckYsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQzt3QkFDckMsc0JBQXNCO3dCQUN0QixVQUFVLENBQUMsUUFBUTs2QkFDakIsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzZCQUNaLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDOzZCQUN4QixjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzs2QkFDM0IsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzt3QkFDdkIsVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNoRSxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ3BDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFROzRCQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7NkJBQ3hDLElBQUksZUFBZTs0QkFBRSxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ25ELFVBQVUsRUFBRSxDQUFDO3FCQUNiO2lCQUNEO2dCQUVELDBDQUEwQztnQkFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM3QyxLQUFLLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNwRDtRQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0FuS1csZUFBZTtrR0FBZixlQUFlLDJTQUhoQixDQUFDLHlCQUF5QixFQUFFLENBQUMsK0RBeUMxQixlQUFlLDJCQUF3QixXQUFXLDJDQXBEdEQ7Ozs7Ozs7OztFQVNULDREQUNTLFNBQVMsc0pBQUUsZ0JBQWdCLDBFQUFFLHNCQUFzQixpSEFBRSxnQkFBZ0I7OzJGQUluRSxlQUFlO2tCQWpCM0IsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7Ozs7RUFTVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsZ0JBQWdCLENBQUM7b0JBQ2hGLFNBQVMsRUFBRSxDQUFDLHlCQUF5QixFQUFFLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNqQzswRUFRUyxRQUFRO3NCQUFoQixLQUFLO2dCQUU2QixVQUFVO3NCQUE1QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtnQkFlRyxPQUFPO3NCQUF0QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtnQkFJYyxlQUFlO3NCQUF0RCxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFO2dCQUlDLFVBQVU7c0JBQTVDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO2dCQUluQixNQUFNO3NCQUFmLE1BQU07Z0JBRTZELE9BQU87c0JBQTFFLFlBQVk7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRDb21wb25lbnQsXG5cdENvbnRlbnRDaGlsZCxcblx0RXZlbnRFbWl0dGVyLFxuXHRJbnB1dCxcblx0T3V0cHV0LFxuXHRUZW1wbGF0ZVJlZixcblx0Y29tcHV0ZWQsXG5cdGVmZmVjdCxcblx0Zm9yd2FyZFJlZixcblx0dHlwZSBTaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0Tmd0UG9ydGFsLFxuXHROZ3RQb3J0YWxDb250ZW50LFxuXHRjcmVhdGVJbmplY3Rpb25Ub2tlbixcblx0ZXh0ZW5kLFxuXHRpbmplY3RCZWZvcmVSZW5kZXIsXG5cdGluamVjdE5ndFJlZixcblx0aW5qZWN0Tmd0U3RvcmUsXG5cdHNpZ25hbFN0b3JlLFxuXHR0eXBlIE5ndEdyb3VwLFxufSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndHNPcnRob2dyYXBoaWNDYW1lcmEgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvY2FtZXJhcyc7XG5pbXBvcnQgeyBOZ3RzU29iYUNvbnRlbnQgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvdXRpbHMnO1xuaW1wb3J0IHsgR3JvdXAsIE1hdHJpeDQsIE9iamVjdDNELCBPcnRob2dyYXBoaWNDYW1lcmEsIFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBPcmJpdENvbnRyb2xzIH0gZnJvbSAndGhyZWUtc3RkbGliJztcblxuZXhwb3J0IHR5cGUgTmd0c0dpem1vSGVscGVyU3RhdGUgPSB7XG5cdGFsaWdubWVudDpcblx0XHR8ICd0b3AtbGVmdCdcblx0XHR8ICd0b3AtcmlnaHQnXG5cdFx0fCAnYm90dG9tLXJpZ2h0J1xuXHRcdHwgJ2JvdHRvbS1sZWZ0J1xuXHRcdHwgJ2JvdHRvbS1jZW50ZXInXG5cdFx0fCAnY2VudGVyLXJpZ2h0J1xuXHRcdHwgJ2NlbnRlci1sZWZ0J1xuXHRcdHwgJ2NlbnRlci1jZW50ZXInXG5cdFx0fCAndG9wLWNlbnRlcic7XG5cdG1hcmdpbjogW251bWJlciwgbnVtYmVyXTtcblx0cmVuZGVyUHJpb3JpdHk6IG51bWJlcjtcblx0YXV0b0NsZWFyPzogYm9vbGVhbjtcbn07XG5cbnR5cGUgQ29udHJvbHNQcm90byA9IHsgdXBkYXRlKCk6IHZvaWQ7IHRhcmdldDogVEhSRUUuVmVjdG9yMyB9O1xuXG5jb25zdCBpc09yYml0Q29udHJvbHMgPSAoY29udHJvbHM6IENvbnRyb2xzUHJvdG8pOiBjb250cm9scyBpcyBPcmJpdENvbnRyb2xzID0+IHtcblx0cmV0dXJuICdtaW5Qb2xhckFuZ2xlJyBpbiAoY29udHJvbHMgYXMgT3JiaXRDb250cm9scyk7XG59O1xuXG5leHRlbmQoeyBHcm91cCB9KTtcblxuZGVjbGFyZSBnbG9iYWwge1xuXHRpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcblx0XHQnbmd0cy1naXptby1oZWxwZXInOiBOZ3RzR2l6bW9IZWxwZXJTdGF0ZSAmIE5ndEdyb3VwO1xuXHR9XG59XG5cbmV4cG9ydCBjb25zdCBbaW5qZWN0Tmd0c0dpem1vSGVscGVyQXBpLCBwcm92aWRlTmd0c0dpem1vSGVscGVyQXBpXSA9IGNyZWF0ZUluamVjdGlvblRva2VuKFxuXHQoZ2l6bW9IZWxwZXI6IE5ndHNHaXptb0hlbHBlcikgPT4gZ2l6bW9IZWxwZXIuYXBpLFxuXHR7IGlzUm9vdDogZmFsc2UsIGRlcHM6IFtmb3J3YXJkUmVmKCgpID0+IE5ndHNHaXptb0hlbHBlcildIH0sXG4pO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLWdpem1vLWhlbHBlcicsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wb3J0YWwgW3JlbmRlclByaW9yaXR5XT1cInJlbmRlclByaW9yaXR5KClcIj5cblx0XHRcdDxuZy10ZW1wbGF0ZSBuZ3RQb3J0YWxDb250ZW50PlxuXHRcdFx0XHQ8bmd0cy1vcnRob2dyYXBoaWMtY2FtZXJhIFttYWtlRGVmYXVsdF09XCJ0cnVlXCIgW3Bvc2l0aW9uXT1cIlswLCAwLCAyMDBdXCIgW2NhbWVyYVJlZl09XCJ2aXJ0dWFsQ2FtUmVmXCIgLz5cblx0XHRcdFx0PG5ndC1ncm91cCBbcmVmXT1cImdpem1vUmVmXCIgW3Bvc2l0aW9uXT1cImdpem1vUG9zaXRpb24oKVwiPlxuXHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCIgLz5cblx0XHRcdFx0PC9uZ3QtZ3JvdXA+XG5cdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdDwvbmd0LXBvcnRhbD5cblx0YCxcblx0aW1wb3J0czogW05ndFBvcnRhbCwgTmd0UG9ydGFsQ29udGVudCwgTmd0c09ydGhvZ3JhcGhpY0NhbWVyYSwgTmdUZW1wbGF0ZU91dGxldF0sXG5cdHByb3ZpZGVyczogW3Byb3ZpZGVOZ3RzR2l6bW9IZWxwZXJBcGkoKV0sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0dpem1vSGVscGVyIHtcblx0cHJpdmF0ZSBpbnB1dHMgPSBzaWduYWxTdG9yZTxOZ3RzR2l6bW9IZWxwZXJTdGF0ZT4oe1xuXHRcdGFsaWdubWVudDogJ2JvdHRvbS1yaWdodCcsXG5cdFx0bWFyZ2luOiBbODAsIDgwXSxcblx0XHRyZW5kZXJQcmlvcml0eTogMSxcblx0fSk7XG5cblx0QElucHV0KCkgZ2l6bW9SZWYgPSBpbmplY3ROZ3RSZWY8R3JvdXA+KCk7XG5cblx0QElucHV0KHsgYWxpYXM6ICdhbGlnbm1lbnQnIH0pIHNldCBfYWxpZ25tZW50KFxuXHRcdGFsaWdubWVudDpcblx0XHRcdHwgJ3RvcC1sZWZ0J1xuXHRcdFx0fCAndG9wLXJpZ2h0J1xuXHRcdFx0fCAnYm90dG9tLXJpZ2h0J1xuXHRcdFx0fCAnYm90dG9tLWxlZnQnXG5cdFx0XHR8ICdib3R0b20tY2VudGVyJ1xuXHRcdFx0fCAnY2VudGVyLXJpZ2h0J1xuXHRcdFx0fCAnY2VudGVyLWxlZnQnXG5cdFx0XHR8ICdjZW50ZXItY2VudGVyJ1xuXHRcdFx0fCAndG9wLWNlbnRlcicsXG5cdCkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGFsaWdubWVudCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnbWFyZ2luJyB9KSBzZXQgX21hcmdpbihtYXJnaW46IFtudW1iZXIsIG51bWJlcl0pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBtYXJnaW4gfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3JlbmRlclByaW9yaXR5JyB9KSBzZXQgX3JlbmRlclByaW9yaXR5KHJlbmRlclByaW9yaXR5OiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyByZW5kZXJQcmlvcml0eSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnYXV0b0NsZWFyJyB9KSBzZXQgX2F1dG9DbGVhcihhdXRvQ2xlYXI6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBhdXRvQ2xlYXIgfSk7XG5cdH1cblxuXHRAT3V0cHV0KCkgdXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cdEBDb250ZW50Q2hpbGQoTmd0c1NvYmFDb250ZW50LCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSkgY29udGVudCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3ROZ3RTdG9yZSgpO1xuXHRwcml2YXRlIG1haW5DYW1lcmEgPSB0aGlzLnN0b3JlLnNlbGVjdCgnY2FtZXJhJyk7XG5cdC8vIEB0cy1leHBlY3QtZXJyb3Jcblx0cHJpdmF0ZSBkZWZhdWx0Q29udHJvbHMgPSB0aGlzLnN0b3JlLnNlbGVjdCgnY29udHJvbHMnKSBhcyBTaWduYWw8Q29udHJvbHNQcm90bz47XG5cdHByaXZhdGUgaW52YWxpZGF0ZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdpbnZhbGlkYXRlJyk7XG5cdHByaXZhdGUgc2l6ZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzaXplJyk7XG5cblx0cHJpdmF0ZSBhbmltYXRpbmcgPSBmYWxzZTtcblx0cHJpdmF0ZSBxMSA9IG5ldyBRdWF0ZXJuaW9uKCk7XG5cdHByaXZhdGUgcTIgPSBuZXcgUXVhdGVybmlvbigpO1xuXHRwcml2YXRlIHR1cm5SYXRlID0gMiAqIE1hdGguUEk7IC8vIHR1cm4gcmF0ZSBpbiBhbmdsZXMgcGVyIHNlY29uZFxuXHRwcml2YXRlIG1hdHJpeCA9IG5ldyBNYXRyaXg0KCk7XG5cblx0cHJpdmF0ZSByYWRpdXMgPSAwO1xuXHRwcml2YXRlIGZvY3VzUG9pbnQgPSBuZXcgVmVjdG9yMygwLCAwLCAwKTtcblx0cHJpdmF0ZSBkZWZhdWx0VXAgPSBuZXcgVmVjdG9yMygwLCAwLCAwKTtcblx0cHJpdmF0ZSB0YXJnZXQgPSBuZXcgVmVjdG9yMygpO1xuXHRwcml2YXRlIHRhcmdldFBvc2l0aW9uID0gbmV3IFZlY3RvcjMoKTtcblx0cHJpdmF0ZSBkdW1teSA9IG5ldyBPYmplY3QzRCgpO1xuXG5cdHByaXZhdGUgbWFyZ2luID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdtYXJnaW4nKTtcblx0cHJpdmF0ZSBhbGlnbm1lbnQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2FsaWdubWVudCcpO1xuXG5cdHZpcnR1YWxDYW1SZWYgPSBpbmplY3ROZ3RSZWY8T3J0aG9ncmFwaGljQ2FtZXJhPigpO1xuXHRyZW5kZXJQcmlvcml0eSA9IHRoaXMuaW5wdXRzLnNlbGVjdCgncmVuZGVyUHJpb3JpdHknKTtcblxuXHRnaXptb1Bvc2l0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IFt7IHdpZHRoLCBoZWlnaHQgfSwgW21hcmdpblgsIG1hcmdpblldLCBhbGlnbm1lbnRdID0gW3RoaXMuc2l6ZSgpLCB0aGlzLm1hcmdpbigpLCB0aGlzLmFsaWdubWVudCgpXTtcblx0XHRjb25zdCB4ID0gYWxpZ25tZW50LmVuZHNXaXRoKCctY2VudGVyJylcblx0XHRcdD8gMFxuXHRcdFx0OiBhbGlnbm1lbnQuZW5kc1dpdGgoJy1sZWZ0Jylcblx0XHRcdD8gLXdpZHRoIC8gMiArIG1hcmdpblhcblx0XHRcdDogd2lkdGggLyAyIC0gbWFyZ2luWDtcblx0XHRjb25zdCB5ID0gYWxpZ25tZW50LnN0YXJ0c1dpdGgoJ2NlbnRlci0nKVxuXHRcdFx0PyAwXG5cdFx0XHQ6IGFsaWdubWVudC5zdGFydHNXaXRoKCd0b3AtJylcblx0XHRcdD8gaGVpZ2h0IC8gMiAtIG1hcmdpbllcblx0XHRcdDogLWhlaWdodCAvIDIgKyBtYXJnaW5ZO1xuXHRcdHJldHVybiBbeCwgeSwgMF07XG5cdH0pO1xuXG5cdGFwaSA9IHtcblx0XHR0d2VlbkNhbWVyYTogKGRpcmVjdGlvbjogVmVjdG9yMykgPT4ge1xuXHRcdFx0Y29uc3QgW2RlZmF1bHRDb250cm9scywgbWFpbkNhbWVyYSwgaW52YWxpZGF0ZV0gPSBbXG5cdFx0XHRcdHRoaXMuZGVmYXVsdENvbnRyb2xzKCksXG5cdFx0XHRcdHRoaXMubWFpbkNhbWVyYSgpLFxuXHRcdFx0XHR0aGlzLmludmFsaWRhdGUoKSxcblx0XHRcdF07XG5cdFx0XHR0aGlzLmFuaW1hdGluZyA9IHRydWU7XG5cdFx0XHRpZiAoZGVmYXVsdENvbnRyb2xzKSB0aGlzLmZvY3VzUG9pbnQgPSBkZWZhdWx0Q29udHJvbHM/LnRhcmdldDtcblx0XHRcdHRoaXMucmFkaXVzID0gbWFpbkNhbWVyYS5wb3NpdGlvbi5kaXN0YW5jZVRvKHRoaXMudGFyZ2V0KTtcblxuXHRcdFx0Ly8gUm90YXRlIGZyb20gY3VycmVudCBjYW1lcmEgb3JpZW50YXRpb25cblx0XHRcdHRoaXMucTEuY29weShtYWluQ2FtZXJhLnF1YXRlcm5pb24pO1xuXG5cdFx0XHQvLyBUbyBuZXcgY3VycmVudCBjYW1lcmEgb3JpZW50YXRpb25cblx0XHRcdHRoaXMudGFyZ2V0UG9zaXRpb24uY29weShkaXJlY3Rpb24pLm11bHRpcGx5U2NhbGFyKHRoaXMucmFkaXVzKS5hZGQodGhpcy50YXJnZXQpO1xuXG5cdFx0XHR0aGlzLmR1bW15Lmxvb2tBdCh0aGlzLnRhcmdldFBvc2l0aW9uKTtcblx0XHRcdHRoaXMuZHVtbXkudXAuY29weShtYWluQ2FtZXJhLnVwKTtcblxuXHRcdFx0dGhpcy5xMi5jb3B5KHRoaXMuZHVtbXkucXVhdGVybmlvbik7XG5cblx0XHRcdGludmFsaWRhdGUoKTtcblx0XHR9LFxuXHR9O1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMudHJhY2tNYWluQ2FtZXJhVXAoKTtcblx0XHR0aGlzLmJlZm9yZVJlbmRlcigpO1xuXHR9XG5cblx0cHJpdmF0ZSB0cmFja01haW5DYW1lcmFVcCgpIHtcblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgbWFpbkNhbWVyYSA9IHRoaXMubWFpbkNhbWVyYSgpO1xuXHRcdFx0dGhpcy5kZWZhdWx0VXAuY29weShtYWluQ2FtZXJhLnVwKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgYmVmb3JlUmVuZGVyKCkge1xuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoeyBkZWx0YSB9KSA9PiB7XG5cdFx0XHRjb25zdCBbZ2l6bW8sIHZpcnR1YWxDYW0sIGRlZmF1bHRDb250cm9scywgbWFpbkNhbWVyYSwgaW52YWxpZGF0ZV0gPSBbXG5cdFx0XHRcdHRoaXMuZ2l6bW9SZWYubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0dGhpcy52aXJ0dWFsQ2FtUmVmLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHRoaXMuZGVmYXVsdENvbnRyb2xzKCksXG5cdFx0XHRcdHRoaXMubWFpbkNhbWVyYSgpLFxuXHRcdFx0XHR0aGlzLmludmFsaWRhdGUoKSxcblx0XHRcdF07XG5cblx0XHRcdGlmIChnaXptbyAmJiB2aXJ0dWFsQ2FtKSB7XG5cdFx0XHRcdC8vIEFuaW1hdGUgc3RlcFxuXHRcdFx0XHRpZiAodGhpcy5hbmltYXRpbmcpIHtcblx0XHRcdFx0XHRpZiAodGhpcy5xMS5hbmdsZVRvKHRoaXMucTIpIDwgMC4wMSkge1xuXHRcdFx0XHRcdFx0dGhpcy5hbmltYXRpbmcgPSBmYWxzZTtcblx0XHRcdFx0XHRcdC8vIE9yYml0IGNvbnRyb2xzIHVzZXMgVVAgdmVjdG9yIGFzIHRoZSBvcmJpdCBheGVzLFxuXHRcdFx0XHRcdFx0Ly8gc28gd2UgbmVlZCB0byByZXNldCBpdCBhZnRlciB0aGUgYW5pbWF0aW9uIGlzIGRvbmVcblx0XHRcdFx0XHRcdC8vIG1vdmluZyBpdCBhcm91bmQgZm9yIHRoZSBjb250cm9scyB0byB3b3JrIGNvcnJlY3RseVxuXHRcdFx0XHRcdFx0aWYgKGlzT3JiaXRDb250cm9scyhkZWZhdWx0Q29udHJvbHMpKSB7XG5cdFx0XHRcdFx0XHRcdG1haW5DYW1lcmEudXAuY29weSh0aGlzLmRlZmF1bHRVcCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGNvbnN0IHN0ZXAgPSBkZWx0YSAqIHRoaXMudHVyblJhdGU7XG5cdFx0XHRcdFx0XHQvLyBhbmltYXRlIHBvc2l0aW9uIGJ5IGRvaW5nIGEgc2xlcnAgYW5kIHRoZW4gc2NhbGluZyB0aGUgcG9zaXRpb24gb24gdGhlIHVuaXQgc3BoZXJlXG5cdFx0XHRcdFx0XHR0aGlzLnExLnJvdGF0ZVRvd2FyZHModGhpcy5xMiwgc3RlcCk7XG5cdFx0XHRcdFx0XHQvLyBhbmltYXRlIG9yaWVudGF0aW9uXG5cdFx0XHRcdFx0XHRtYWluQ2FtZXJhLnBvc2l0aW9uXG5cdFx0XHRcdFx0XHRcdC5zZXQoMCwgMCwgMSlcblx0XHRcdFx0XHRcdFx0LmFwcGx5UXVhdGVybmlvbih0aGlzLnExKVxuXHRcdFx0XHRcdFx0XHQubXVsdGlwbHlTY2FsYXIodGhpcy5yYWRpdXMpXG5cdFx0XHRcdFx0XHRcdC5hZGQodGhpcy5mb2N1c1BvaW50KTtcblx0XHRcdFx0XHRcdG1haW5DYW1lcmEudXAuc2V0KDAsIDEsIDApLmFwcGx5UXVhdGVybmlvbih0aGlzLnExKS5ub3JtYWxpemUoKTtcblx0XHRcdFx0XHRcdG1haW5DYW1lcmEucXVhdGVybmlvbi5jb3B5KHRoaXMucTEpO1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMudXBkYXRlLm9ic2VydmVkKSB0aGlzLnVwZGF0ZS5lbWl0KCk7XG5cdFx0XHRcdFx0XHRlbHNlIGlmIChkZWZhdWx0Q29udHJvbHMpIGRlZmF1bHRDb250cm9scy51cGRhdGUoKTtcblx0XHRcdFx0XHRcdGludmFsaWRhdGUoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBTeW5jIEdpem1vIHdpdGggbWFpbiBjYW1lcmEgb3JpZW50YXRpb25cblx0XHRcdFx0dGhpcy5tYXRyaXguY29weShtYWluQ2FtZXJhLm1hdHJpeCkuaW52ZXJ0KCk7XG5cdFx0XHRcdGdpem1vLnF1YXRlcm5pb24uc2V0RnJvbVJvdGF0aW9uTWF0cml4KHRoaXMubWF0cml4KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufVxuIl19
@@ -1,31 +0,0 @@
1
- import * as THREE from 'three';
2
- export const colors = { bg: '#f0f0f0', hover: '#999', text: 'black', stroke: 'black' };
3
- export const defaultFaces = ['Right', 'Left', 'Top', 'Bottom', 'Front', 'Back'];
4
- const makePositionVector = (xyz) => new THREE.Vector3(...xyz).multiplyScalar(0.38);
5
- export const corners = [
6
- [1, 1, 1],
7
- [1, 1, -1],
8
- [1, -1, 1],
9
- [1, -1, -1],
10
- [-1, 1, 1],
11
- [-1, 1, -1],
12
- [-1, -1, 1],
13
- [-1, -1, -1],
14
- ].map(makePositionVector);
15
- export const cornerDimensions = [0.25, 0.25, 0.25];
16
- export const edges = [
17
- [1, 1, 0],
18
- [1, 0, 1],
19
- [1, 0, -1],
20
- [1, -1, 0],
21
- [0, 1, 1],
22
- [0, 1, -1],
23
- [0, -1, 1],
24
- [0, -1, -1],
25
- [-1, 1, 0],
26
- [-1, 0, 1],
27
- [-1, 0, -1],
28
- [-1, -1, 0],
29
- ].map(makePositionVector);
30
- export const edgeDimensions = edges.map((edge) => edge.toArray().map((axis) => (axis == 0 ? 0.5 : 0.25)));
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL2dpem1vcy9zcmMvZ2l6bW8taGVscGVyL2dpem1vLXZpZXdjdWJlL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUvQixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDdkYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNoRixNQUFNLGtCQUFrQixHQUFHLENBQUMsR0FBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFN0YsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFvQjtJQUN2QyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1YsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDVixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ1gsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNaLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFFMUIsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBNkIsQ0FBQztBQUUvRSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQW9CO0lBQ3JDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1YsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNULENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNWLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNWLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUNYLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFFMUIsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQ3RDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBWSxFQUFVLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQTZCLENBQzVHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCBjb25zdCBjb2xvcnMgPSB7IGJnOiAnI2YwZjBmMCcsIGhvdmVyOiAnIzk5OScsIHRleHQ6ICdibGFjaycsIHN0cm9rZTogJ2JsYWNrJyB9O1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRGYWNlcyA9IFsnUmlnaHQnLCAnTGVmdCcsICdUb3AnLCAnQm90dG9tJywgJ0Zyb250JywgJ0JhY2snXTtcbmNvbnN0IG1ha2VQb3NpdGlvblZlY3RvciA9ICh4eXo6IG51bWJlcltdKSA9PiBuZXcgVEhSRUUuVmVjdG9yMyguLi54eXopLm11bHRpcGx5U2NhbGFyKDAuMzgpO1xuXG5leHBvcnQgY29uc3QgY29ybmVyczogVEhSRUUuVmVjdG9yM1tdID0gW1xuXHRbMSwgMSwgMV0sXG5cdFsxLCAxLCAtMV0sXG5cdFsxLCAtMSwgMV0sXG5cdFsxLCAtMSwgLTFdLFxuXHRbLTEsIDEsIDFdLFxuXHRbLTEsIDEsIC0xXSxcblx0Wy0xLCAtMSwgMV0sXG5cdFstMSwgLTEsIC0xXSxcbl0ubWFwKG1ha2VQb3NpdGlvblZlY3Rvcik7XG5cbmV4cG9ydCBjb25zdCBjb3JuZXJEaW1lbnNpb25zID0gWzAuMjUsIDAuMjUsIDAuMjVdIGFzIFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IGVkZ2VzOiBUSFJFRS5WZWN0b3IzW10gPSBbXG5cdFsxLCAxLCAwXSxcblx0WzEsIDAsIDFdLFxuXHRbMSwgMCwgLTFdLFxuXHRbMSwgLTEsIDBdLFxuXHRbMCwgMSwgMV0sXG5cdFswLCAxLCAtMV0sXG5cdFswLCAtMSwgMV0sXG5cdFswLCAtMSwgLTFdLFxuXHRbLTEsIDEsIDBdLFxuXHRbLTEsIDAsIDFdLFxuXHRbLTEsIDAsIC0xXSxcblx0Wy0xLCAtMSwgMF0sXG5dLm1hcChtYWtlUG9zaXRpb25WZWN0b3IpO1xuXG5leHBvcnQgY29uc3QgZWRnZURpbWVuc2lvbnMgPSBlZGdlcy5tYXAoXG5cdChlZGdlKSA9PiBlZGdlLnRvQXJyYXkoKS5tYXAoKGF4aXM6IG51bWJlcik6IG51bWJlciA9PiAoYXhpcyA9PSAwID8gMC41IDogMC4yNSkpIGFzIFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSxcbik7XG4iXX0=