@arcgis/core 4.28.0-next.20230821 → 4.28.0-next.20230823

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 (668) hide show
  1. package/Basemap.js +1 -1
  2. package/WebScene.js +1 -1
  3. package/arcade/functions/geomasync.js +1 -1
  4. package/arcade/portalUtils.js +1 -1
  5. package/assets/esri/core/workers/RemoteClient.js +1 -1
  6. package/assets/esri/core/workers/chunks/0746319459dbcd3ab6f7.js +1 -0
  7. package/assets/esri/core/workers/chunks/{587437526ea77f764986.js → 0759d4ab9695096d2bbd.js} +1 -1
  8. package/assets/esri/core/workers/chunks/{d0c4367a197b193e95d4.js → 10c014a6d8767ae8a666.js} +1 -1
  9. package/assets/esri/core/workers/chunks/{5ffabd1a90c5b08109aa.js → 196937631ac20795e0ae.js} +1 -1
  10. package/assets/esri/core/workers/chunks/{e05b54a0b834b4e4268e.js → 1c2b69dfcd0db58150e2.js} +1 -1
  11. package/assets/esri/core/workers/chunks/1c2f7c95825fdac790be.js +1 -0
  12. package/assets/esri/core/workers/chunks/1f9c80815f90fd0886d7.js +1 -0
  13. package/assets/esri/core/workers/chunks/217910f88fe2c03e6bdd.js +1 -0
  14. package/assets/esri/core/workers/chunks/238966b2fc6cc3dfcc05.js +1 -0
  15. package/assets/esri/core/workers/chunks/2c9f709d64954b3c1650.js +1 -0
  16. package/assets/esri/core/workers/chunks/35faede04d4539aab6e8.js +1 -0
  17. package/assets/esri/core/workers/chunks/3e3edcbacf8eaf275b97.js +1 -0
  18. package/assets/esri/core/workers/chunks/{b78dc6cbe14e5817b4d9.js → 4968018bc693c053fdd2.js} +1 -1
  19. package/assets/esri/core/workers/chunks/{c35b850fbfcb28133235.js → 49a1ba3e7ea204adeddb.js} +1 -1
  20. package/assets/esri/core/workers/chunks/{12b8fe0374fa9ab4ca09.js → 49cf3ae224f56f45f65b.js} +1 -1
  21. package/assets/esri/core/workers/chunks/5330040eeacc9c03fbdb.js +1 -0
  22. package/assets/esri/core/workers/chunks/54aaa21144431b29b6ed.js +1 -0
  23. package/assets/esri/core/workers/chunks/{6c40f16e6d10321295d8.js → 5b13d28cf5efc312a21c.js} +1 -1
  24. package/assets/esri/core/workers/chunks/{d6c96a20e9640b433719.js → 67c6618339d323460d45.js} +57 -57
  25. package/assets/esri/core/workers/chunks/{dd86f43505b636eb41c0.js → 7714c16f9c8860efd461.js} +1 -1
  26. package/assets/esri/core/workers/chunks/{752d389c7bdcbe7004dc.js → 83e0af5522a672c2c73b.js} +1 -1
  27. package/assets/esri/core/workers/chunks/{873111ddf4813cdd4903.js → 872d0d4bf364be43a92e.js} +1 -1
  28. package/assets/esri/core/workers/chunks/8a784ddd5607f1ddbb5b.js +1 -0
  29. package/assets/esri/core/workers/chunks/{0cad2b991d0d0fd07846.js → 8c9c4162617f31e3f5f2.js} +1 -1
  30. package/assets/esri/core/workers/chunks/8db3ee2931be5cca3f5e.js +1 -0
  31. package/assets/esri/core/workers/chunks/{fd3920159ab9748402a2.js → 92350664e2719a9e860e.js} +1 -1
  32. package/assets/esri/core/workers/chunks/{ff755962fd1c771f5be5.js → a3b461174984a1cb92b3.js} +1 -1
  33. package/assets/esri/core/workers/chunks/{dd4c6d000222798a0317.js → a47aff9c97c5ce52d0dc.js} +1 -1
  34. package/assets/esri/core/workers/chunks/{028534e3d4e13c9ea687.js → a645f08a7678f2ca037c.js} +1 -1
  35. package/assets/esri/core/workers/chunks/{d9fe6cfbc9ad2920ca9c.js → aca45e54ec925002df9a.js} +1 -1
  36. package/assets/esri/core/workers/chunks/{40ff0e7c948615b8bfc0.js → b07d32a60307d04391fc.js} +1 -1
  37. package/assets/esri/core/workers/chunks/{fdc703330bf194a48e0e.js → b086e798f43dacb0175f.js} +1 -1
  38. package/assets/esri/core/workers/chunks/bd0b9647880cbbec95e2.js +1 -0
  39. package/assets/esri/core/workers/chunks/{ab420bacdd63ee8fbd8b.js → bf9b5e2803a5444bd944.js} +1 -1
  40. package/assets/esri/core/workers/chunks/{c58ca2685eb7e559f428.js → c0a2a737a3085690afc5.js} +1 -1
  41. package/assets/esri/core/workers/chunks/{e04e8af4224fff8c3ec3.js → c34615c0b7ad83d1ad24.js} +1 -1
  42. package/assets/esri/core/workers/chunks/{05ab09713d599687afa3.js → d105ee2e394e2c48303c.js} +1 -1
  43. package/assets/esri/core/workers/chunks/{ef03b78659c72de93076.js → d183144fa504064d23d3.js} +1 -1
  44. package/assets/esri/core/workers/chunks/{4f5207abb034375927c7.js → d8495c6dcd4d9bec8dd6.js} +1 -1
  45. package/assets/esri/core/workers/chunks/{1a485d63330f5e7fe4e3.js → dba61fa8cbb57dde54b2.js} +1 -1
  46. package/assets/esri/core/workers/chunks/{8a306e3aa210861b8c17.js → deb0bd575c63d9dbcde5.js} +1 -1
  47. package/assets/esri/core/workers/chunks/{d0a2f9ca338b60f2ba2a.js → e302fe771d92ccf945a3.js} +1 -1
  48. package/assets/esri/core/workers/chunks/{cb0a5bc6deaa98026bb5.js → ed0dea88b2865fc6e06b.js} +1 -1
  49. package/assets/esri/core/workers/chunks/ed733eea5d065131b159.js +1 -0
  50. package/assets/esri/core/workers/chunks/{1c51c52fb2233153d7ae.js → f3ec53ee9567bb7e4d2f.js} +1 -1
  51. package/assets/esri/core/workers/chunks/{4922a0fed7cbc6895882.js → f701a5afa1b730c51a49.js} +1 -1
  52. package/assets/esri/t9n/common.json +1 -1
  53. package/assets/esri/t9n/common_ar.json +1 -1
  54. package/assets/esri/t9n/common_bg.json +1 -1
  55. package/assets/esri/t9n/common_ca.json +1 -1
  56. package/assets/esri/t9n/common_cs.json +1 -1
  57. package/assets/esri/t9n/common_da.json +1 -1
  58. package/assets/esri/t9n/common_de.json +1 -1
  59. package/assets/esri/t9n/common_el.json +1 -1
  60. package/assets/esri/t9n/common_en.json +1 -1
  61. package/assets/esri/t9n/common_es.json +1 -1
  62. package/assets/esri/t9n/common_et.json +1 -1
  63. package/assets/esri/t9n/common_fi.json +1 -1
  64. package/assets/esri/t9n/common_fr.json +1 -1
  65. package/assets/esri/t9n/common_he.json +1 -1
  66. package/assets/esri/t9n/common_hr.json +1 -1
  67. package/assets/esri/t9n/common_hu.json +1 -1
  68. package/assets/esri/t9n/common_id.json +1 -1
  69. package/assets/esri/t9n/common_it.json +1 -1
  70. package/assets/esri/t9n/common_ja.json +1 -1
  71. package/assets/esri/t9n/common_ko.json +1 -1
  72. package/assets/esri/t9n/common_lt.json +1 -1
  73. package/assets/esri/t9n/common_lv.json +1 -1
  74. package/assets/esri/t9n/common_nb.json +1 -1
  75. package/assets/esri/t9n/common_nl.json +1 -1
  76. package/assets/esri/t9n/common_pl.json +1 -1
  77. package/assets/esri/t9n/common_pt-BR.json +1 -1
  78. package/assets/esri/t9n/common_pt-PT.json +1 -1
  79. package/assets/esri/t9n/common_ro.json +1 -1
  80. package/assets/esri/t9n/common_ru.json +1 -1
  81. package/assets/esri/t9n/common_sk.json +1 -1
  82. package/assets/esri/t9n/common_sl.json +1 -1
  83. package/assets/esri/t9n/common_sr.json +1 -1
  84. package/assets/esri/t9n/common_sv.json +1 -1
  85. package/assets/esri/t9n/common_th.json +1 -1
  86. package/assets/esri/t9n/common_tr.json +1 -1
  87. package/assets/esri/t9n/common_uk.json +1 -1
  88. package/assets/esri/t9n/common_vi.json +1 -1
  89. package/assets/esri/t9n/common_zh-CN.json +1 -1
  90. package/assets/esri/t9n/common_zh-TW.json +1 -1
  91. package/assets/esri/themes/base/widgets/_OrientedImageryViewer.scss +10 -17
  92. package/assets/esri/themes/dark/main.css +1 -1
  93. package/assets/esri/themes/light/main.css +1 -1
  94. package/assets/esri/themes/light/view.css +1 -1
  95. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_ar.json +1 -0
  96. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_bg.json +1 -0
  97. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_bs.json +1 -0
  98. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_ca.json +1 -0
  99. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_cs.json +1 -0
  100. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_da.json +1 -0
  101. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_de.json +1 -0
  102. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_el.json +1 -0
  103. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_es.json +1 -0
  104. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_et.json +1 -0
  105. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_fi.json +1 -0
  106. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_fr.json +1 -0
  107. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_he.json +1 -0
  108. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_hr.json +1 -0
  109. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_hu.json +1 -0
  110. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_id.json +1 -0
  111. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_it.json +1 -0
  112. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_ja.json +1 -0
  113. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_ko.json +1 -0
  114. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_lt.json +1 -0
  115. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_lv.json +1 -0
  116. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_nb.json +1 -0
  117. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_nl.json +1 -0
  118. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_pl.json +1 -0
  119. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_pt-BR.json +1 -0
  120. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_pt-PT.json +1 -0
  121. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_ro.json +1 -0
  122. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_ru.json +1 -0
  123. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_sk.json +1 -0
  124. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_sl.json +1 -0
  125. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_sr.json +1 -0
  126. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_sv.json +1 -0
  127. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_th.json +1 -0
  128. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_tr.json +1 -0
  129. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_uk.json +1 -0
  130. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_vi.json +1 -0
  131. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_zh-CN.json +1 -0
  132. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_zh-HK.json +1 -0
  133. package/assets/esri/widgets/DirectionalPad/t9n/DirectionalPad_zh-TW.json +1 -0
  134. package/assets/esri/widgets/Editor/t9n/Editor_ar.json +1 -1
  135. package/assets/esri/widgets/Editor/t9n/Editor_bg.json +1 -1
  136. package/assets/esri/widgets/Editor/t9n/Editor_bs.json +1 -1
  137. package/assets/esri/widgets/Editor/t9n/Editor_ca.json +1 -1
  138. package/assets/esri/widgets/Editor/t9n/Editor_cs.json +1 -1
  139. package/assets/esri/widgets/Editor/t9n/Editor_da.json +1 -1
  140. package/assets/esri/widgets/Editor/t9n/Editor_de.json +1 -1
  141. package/assets/esri/widgets/Editor/t9n/Editor_el.json +1 -1
  142. package/assets/esri/widgets/Editor/t9n/Editor_es.json +1 -1
  143. package/assets/esri/widgets/Editor/t9n/Editor_et.json +1 -1
  144. package/assets/esri/widgets/Editor/t9n/Editor_fi.json +1 -1
  145. package/assets/esri/widgets/Editor/t9n/Editor_fr.json +1 -1
  146. package/assets/esri/widgets/Editor/t9n/Editor_he.json +1 -1
  147. package/assets/esri/widgets/Editor/t9n/Editor_hr.json +1 -1
  148. package/assets/esri/widgets/Editor/t9n/Editor_hu.json +1 -1
  149. package/assets/esri/widgets/Editor/t9n/Editor_id.json +1 -1
  150. package/assets/esri/widgets/Editor/t9n/Editor_it.json +1 -1
  151. package/assets/esri/widgets/Editor/t9n/Editor_ja.json +1 -1
  152. package/assets/esri/widgets/Editor/t9n/Editor_ko.json +1 -1
  153. package/assets/esri/widgets/Editor/t9n/Editor_lt.json +1 -1
  154. package/assets/esri/widgets/Editor/t9n/Editor_lv.json +1 -1
  155. package/assets/esri/widgets/Editor/t9n/Editor_nb.json +1 -1
  156. package/assets/esri/widgets/Editor/t9n/Editor_nl.json +1 -1
  157. package/assets/esri/widgets/Editor/t9n/Editor_pl.json +1 -1
  158. package/assets/esri/widgets/Editor/t9n/Editor_pt-BR.json +1 -1
  159. package/assets/esri/widgets/Editor/t9n/Editor_pt-PT.json +1 -1
  160. package/assets/esri/widgets/Editor/t9n/Editor_ro.json +1 -1
  161. package/assets/esri/widgets/Editor/t9n/Editor_ru.json +1 -1
  162. package/assets/esri/widgets/Editor/t9n/Editor_sk.json +1 -1
  163. package/assets/esri/widgets/Editor/t9n/Editor_sl.json +1 -1
  164. package/assets/esri/widgets/Editor/t9n/Editor_sr.json +1 -1
  165. package/assets/esri/widgets/Editor/t9n/Editor_sv.json +1 -1
  166. package/assets/esri/widgets/Editor/t9n/Editor_th.json +1 -1
  167. package/assets/esri/widgets/Editor/t9n/Editor_tr.json +1 -1
  168. package/assets/esri/widgets/Editor/t9n/Editor_uk.json +1 -1
  169. package/assets/esri/widgets/Editor/t9n/Editor_vi.json +1 -1
  170. package/assets/esri/widgets/Editor/t9n/Editor_zh-CN.json +1 -1
  171. package/assets/esri/widgets/Editor/t9n/Editor_zh-HK.json +1 -1
  172. package/assets/esri/widgets/Editor/t9n/Editor_zh-TW.json +1 -1
  173. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ar.json +1 -1
  174. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_bg.json +1 -1
  175. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_bs.json +1 -1
  176. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ca.json +1 -1
  177. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_cs.json +1 -1
  178. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_da.json +1 -1
  179. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_de.json +1 -1
  180. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_el.json +1 -1
  181. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_es.json +1 -1
  182. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_et.json +1 -1
  183. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_fi.json +1 -1
  184. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_fr.json +1 -1
  185. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_he.json +1 -1
  186. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_hr.json +1 -1
  187. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_hu.json +1 -1
  188. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_id.json +1 -1
  189. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_it.json +1 -1
  190. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ja.json +1 -1
  191. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ko.json +1 -1
  192. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_lt.json +1 -1
  193. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_lv.json +1 -1
  194. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_nb.json +1 -1
  195. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_nl.json +1 -1
  196. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_pl.json +1 -1
  197. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_pt-BR.json +1 -1
  198. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_pt-PT.json +1 -1
  199. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ro.json +1 -1
  200. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ru.json +1 -1
  201. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_sk.json +1 -1
  202. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_sl.json +1 -1
  203. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_sr.json +1 -1
  204. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_sv.json +1 -1
  205. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_th.json +1 -1
  206. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_tr.json +1 -1
  207. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_uk.json +1 -1
  208. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_vi.json +1 -1
  209. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_zh-CN.json +1 -1
  210. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_zh-HK.json +1 -1
  211. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_zh-TW.json +1 -1
  212. package/chunks/ChapmanAtmosphere.glsl.js +1 -1
  213. package/chunks/Clouds.glsl.js +1 -1
  214. package/chunks/CloudsComposition.glsl.js +2 -2
  215. package/chunks/ComponentShader.glsl.js +36 -36
  216. package/chunks/Fog.glsl.js +1 -1
  217. package/chunks/LaserlinePath.glsl.js +1 -1
  218. package/chunks/Laserlines.glsl.js +1 -1
  219. package/chunks/LineSeries.js +1 -1
  220. package/chunks/NativeLine.glsl.js +8 -20
  221. package/chunks/PointRenderer.glsl.js +1 -1
  222. package/chunks/Precipitation.glsl.js +2 -2
  223. package/chunks/SSAOBlur.glsl.js +1 -1
  224. package/chunks/ShadowCastAccumulate.glsl.js +1 -1
  225. package/chunks/ShadowCastVisualize.glsl.js +2 -2
  226. package/chunks/ShadowHighlight.glsl.js +1 -1
  227. package/chunks/Stars.glsl.js +1 -1
  228. package/chunks/Terrain.glsl.js +35 -35
  229. package/chunks/TextureOnly.glsl.js +1 -1
  230. package/chunks/Theme.js +1 -1
  231. package/chunks/boundedPlane.js +1 -1
  232. package/chunks/cameraUtilsPlanar.js +1 -1
  233. package/chunks/cameraUtilsSpherical.js +1 -1
  234. package/chunks/chartUtilsAm5.js +1 -1
  235. package/chunks/mat3.js +1 -1
  236. package/chunks/mat3f64.js +1 -1
  237. package/chunks/mat4.js +1 -1
  238. package/chunks/mat4f64.js +1 -1
  239. package/chunks/quat.js +1 -1
  240. package/chunks/quat2.js +1 -1
  241. package/chunks/quatf64.js +1 -1
  242. package/chunks/sphere.js +1 -1
  243. package/chunks/terrainUtilsPlanar.js +1 -1
  244. package/chunks/vec3.js +1 -1
  245. package/chunks/vec3f64.js +1 -1
  246. package/chunks/vec4.js +1 -1
  247. package/chunks/vec4f64.js +1 -1
  248. package/core/VectorStack.js +1 -1
  249. package/core/accessorSupport/decorators/persistable.js +1 -1
  250. package/core/accessorSupport/testSupport.js +1 -1
  251. package/core/colorUtils.js +1 -1
  252. package/core/libs/gl-matrix-2/factories/mat3f64.js +1 -1
  253. package/core/libs/gl-matrix-2/factories/mat4f64.js +1 -1
  254. package/core/libs/gl-matrix-2/factories/quatf64.js +1 -1
  255. package/core/libs/gl-matrix-2/factories/vec3f64.js +1 -1
  256. package/core/libs/gl-matrix-2/factories/vec4f64.js +1 -1
  257. package/core/libs/gl-matrix-2/math/mat3.js +1 -1
  258. package/core/libs/gl-matrix-2/math/mat4.js +1 -1
  259. package/core/libs/gl-matrix-2/math/vec3.js +1 -1
  260. package/core/libs/gl-matrix-2/math/vec4.js +1 -1
  261. package/core/mathUtils.js +1 -1
  262. package/core/perspectiveUtils.js +1 -1
  263. package/form/elements/inputs/DatePickerInput.d.ts +4 -0
  264. package/form/elements/inputs/DatePickerInput.js +5 -0
  265. package/form/elements/inputs/DateTimeOffsetPickerInput.d.ts +4 -0
  266. package/form/elements/inputs/DateTimeOffsetPickerInput.js +5 -0
  267. package/form/elements/inputs/TimePickerInput.d.ts +4 -0
  268. package/form/elements/inputs/TimePickerInput.js +5 -0
  269. package/form/elements/support/inputs.js +1 -1
  270. package/geometry/projection/computeTranslationToOriginAndRotation.js +1 -1
  271. package/geometry/projection/projectDirection.js +1 -1
  272. package/geometry/support/MeshTransform.js +1 -1
  273. package/geometry/support/axisAngle.js +1 -1
  274. package/geometry/support/axisAngleDegrees.js +1 -1
  275. package/geometry/support/clipRay.js +1 -1
  276. package/geometry/support/coordinateSystem.js +1 -1
  277. package/geometry/support/frustum.js +1 -1
  278. package/geometry/support/lineSegment.js +1 -1
  279. package/geometry/support/meshUtils/centerAt.js +1 -1
  280. package/geometry/support/meshUtils/exporters/gltf/geometry.js +1 -1
  281. package/geometry/support/meshUtils/exporters/gltf/gltf.js +1 -1
  282. package/geometry/support/meshUtils/exporters/gltf/node.js +1 -1
  283. package/geometry/support/meshUtils/georeference.js +1 -1
  284. package/geometry/support/meshUtils/loadGLTFMesh.js +1 -1
  285. package/geometry/support/meshUtils/merge.js +1 -1
  286. package/geometry/support/meshUtils/offset.js +1 -1
  287. package/geometry/support/meshUtils/primitives.js +1 -1
  288. package/geometry/support/meshUtils/projection.js +1 -1
  289. package/geometry/support/meshUtils/rotate.js +1 -1
  290. package/geometry/support/meshUtils/scale.js +1 -1
  291. package/geometry/support/meshVertexSpaceUtils.js +1 -1
  292. package/geometry/support/plane.js +1 -1
  293. package/geometry/support/ray.js +1 -1
  294. package/geometry/support/triangle.js +1 -1
  295. package/geometry/support/vector.js +1 -1
  296. package/interfaces.d.ts +405 -7
  297. package/layers/VoxelWasmPerSceneView.js +1 -1
  298. package/layers/mixins/SceneService.js +1 -1
  299. package/layers/orientedImagery/core/ExposurePoint.js +1 -1
  300. package/layers/orientedImagery/core/coverageUtils.js +1 -1
  301. package/layers/orientedImagery/transformations/imageToGroundUtils.js +1 -1
  302. package/layers/orientedImagery/transformations/utils.js +1 -1
  303. package/layers/support/ControlPointsGeoreference.js +1 -1
  304. package/layers/support/ImageElement.js +1 -1
  305. package/layers/support/SceneFilter.js +1 -1
  306. package/layers/support/layerUtils.js +1 -1
  307. package/layers/video/VideoCameraSensorModel.js +1 -1
  308. package/layers/voxel/VoxelVolume.js +1 -1
  309. package/layers/voxel/voxelPlaneUtils.js +1 -1
  310. package/package.json +1 -1
  311. package/portal/support/resourceExtension.js +1 -1
  312. package/portal/support/resourceUtils.js +1 -1
  313. package/portal/support/utils.js +5 -0
  314. package/smartMapping/popup/support/utils.js +1 -1
  315. package/smartMapping/raster/renderers/classBreaks.js +1 -1
  316. package/smartMapping/raster/support/adapters/ImageryLayerAdapter.js +1 -1
  317. package/smartMapping/raster/support/adapters/ImageryTileLayerAdapter.js +1 -1
  318. package/smartMapping/raster/support/adapters/RasterLayerAdapter.js +1 -1
  319. package/support/revision.js +1 -1
  320. package/symbols/cim/CIMImageColorSubstitutionHelper.js +1 -1
  321. package/symbols/support/previewSymbol3D.js +1 -1
  322. package/views/2d/ViewState.js +1 -1
  323. package/views/2d/engine/flow/FlowDisplayObject.js +1 -1
  324. package/views/2d/engine/imagery/RasterVFTile.js +1 -1
  325. package/views/2d/engine/vectorTiles/VTLPainter3D.js +1 -1
  326. package/views/2d/engine/vectorTiles/VectorTile.js +1 -1
  327. package/views/2d/engine/vectorTiles/VectorTileRendererHelper3D.js +1 -1
  328. package/views/2d/engine/webgl/Overlay.js +1 -1
  329. package/views/2d/engine/webgl/OverlayContainer.js +1 -1
  330. package/views/2d/engine/webgl/TiledDisplayObject.js +1 -1
  331. package/views/2d/engine/webgl/WGLTile.js +1 -1
  332. package/views/2d/engine/webgl/WorldExtentClipRenderer.js +1 -1
  333. package/views/2d/engine/webgl/brushes/WGLBrushVTLSymbol.js +1 -1
  334. package/views/2d/interactive/editingTools/TransformTool.js +1 -1
  335. package/views/2d/interactive/editingTools/manipulations/RotateManipulation.js +1 -1
  336. package/views/2d/interactive/editingTools/manipulations/ScaleManipulation.js +1 -1
  337. package/views/2d/layers/graphics/GraphicBoundsRenderer.js +1 -1
  338. package/views/2d/layers/support/DebugOverlay.js +1 -1
  339. package/views/2d/navigation/actions/Pan.js +1 -1
  340. package/views/3d/analysis/AreaMeasurement/support/AreaMeasurementVisualization.js +1 -1
  341. package/views/3d/analysis/AreaMeasurement/support/MeasurementData.js +1 -1
  342. package/views/3d/analysis/Dimension/DimensionTool.js +1 -1
  343. package/views/3d/analysis/Dimension/LengthDimensionSubTool.js +1 -1
  344. package/views/3d/analysis/Dimension/lengthDimensionConstraintUtils.js +1 -1
  345. package/views/3d/analysis/Dimension/lengthDimensionManipulatorUtils.js +1 -1
  346. package/views/3d/analysis/Dimension/lengthDimensionUtils.js +1 -1
  347. package/views/3d/analysis/DirectLineMeasurement/DirectLineMeasurementController.js +1 -1
  348. package/views/3d/analysis/DirectLineMeasurement/DirectLineMeasurementVisualization.js +1 -1
  349. package/views/3d/analysis/LineOfSight/LineOfSightController.js +1 -1
  350. package/views/3d/analysis/LineOfSight/LineOfSightIntersectionResult.js +1 -1
  351. package/views/3d/analysis/LineOfSight/LineOfSightRayIntersector.js +1 -1
  352. package/views/3d/analysis/LineOfSight/LineOfSightVisualization.js +1 -1
  353. package/views/3d/analysis/Slice/SliceTool.js +1 -1
  354. package/views/3d/analysis/Slice/sliceToolUtils.js +1 -1
  355. package/views/3d/analysis/images/Factory.js +5 -0
  356. package/views/3d/analysis/support/measurementUtils.js +1 -1
  357. package/views/3d/analysis/support/viewUtils.js +1 -1
  358. package/views/3d/animation/pointToPoint/Animation.js +1 -1
  359. package/views/3d/animation/pointToPoint/Camera.js +1 -1
  360. package/views/3d/camera/constraintUtils/altitude.js +1 -1
  361. package/views/3d/camera/constraintUtils/common.js +1 -1
  362. package/views/3d/camera/constraintUtils/distance.js +1 -1
  363. package/views/3d/camera/constraintUtils/surfaceCollision.js +1 -1
  364. package/views/3d/camera/constraintUtils/tilt.js +1 -1
  365. package/views/3d/camera/intersectionUtils.js +1 -1
  366. package/views/3d/environment/ChapmanAtmosphere.js +1 -1
  367. package/views/3d/environment/CloudsGenerator.js +1 -1
  368. package/views/3d/environment/CloudsParameters.js +1 -1
  369. package/views/3d/environment/EnvironmentRenderer.js +1 -1
  370. package/views/3d/environment/Fog.js +1 -1
  371. package/views/3d/environment/LocalAtmosphere.js +1 -1
  372. package/views/3d/environment/MarsAtmosphere.js +1 -1
  373. package/views/3d/environment/SceneViewEnvironment.js +1 -1
  374. package/views/3d/environment/SceneViewEnvironmentManager.js +1 -1
  375. package/views/3d/environment/Stars.js +1 -1
  376. package/views/3d/environment/StarsTechnique.js +1 -1
  377. package/views/3d/externalRenderers.js +1 -1
  378. package/views/3d/glTF/internal/Resource.js +1 -1
  379. package/views/3d/interactive/Manipulator3D.js +1 -1
  380. package/views/3d/interactive/SnappingVisualizer3D.js +1 -1
  381. package/views/3d/interactive/editingTools/dragEventPipeline3D.js +1 -1
  382. package/views/3d/interactive/editingTools/lineGraphicVisualElementUtils.js +1 -1
  383. package/views/3d/interactive/editingTools/manipulations/MoveXYAxisManipulation.js +1 -1
  384. package/views/3d/interactive/editingTools/manipulations/MoveXYDiscManipulation.js +1 -1
  385. package/views/3d/interactive/editingTools/manipulations/MoveZManipulation.js +1 -1
  386. package/views/3d/interactive/editingTools/reshapeGraphic/ReshapeOperation.js +1 -1
  387. package/views/3d/interactive/editingTools/reshapeGraphic/edgeOffsetUtils.js +1 -1
  388. package/views/3d/interactive/editingTools/transformGraphic/ExtentTransformTool.js +1 -1
  389. package/views/3d/interactive/editingTools/transformGraphic/GraphicScaleRotateTransform.js +1 -1
  390. package/views/3d/interactive/editingTools/transformGraphic/ScaleRotateMeshAdapter.js +1 -1
  391. package/views/3d/interactive/editingTools/transformGraphic/undoRecords.js +1 -1
  392. package/views/3d/interactive/manipulatorUtils.js +1 -1
  393. package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DView.js +1 -1
  394. package/views/3d/interactive/visualElements/ExtendedLineVisualElement.js +1 -1
  395. package/views/3d/interactive/visualElements/LabelVisualElement.js +1 -1
  396. package/views/3d/interactive/visualElements/LaserlineVisualElement.js +1 -1
  397. package/views/3d/interactive/visualElements/LineVisualElement.js +1 -1
  398. package/views/3d/interactive/visualElements/MarkerVisualElement.js +1 -1
  399. package/views/3d/interactive/visualElements/MeasurementAreaVisualElement.js +1 -1
  400. package/views/3d/interactive/visualElements/MeasurementArrowVisualElement.js +1 -1
  401. package/views/3d/interactive/visualElements/Object3DVisualElement.js +1 -1
  402. package/views/3d/interactive/visualElements/OutlineVisualElement.js +1 -1
  403. package/views/3d/interactive/visualElements/ParallelLineVisualElement.js +1 -1
  404. package/views/3d/interactive/visualElements/PointVisualElement.js +1 -1
  405. package/views/3d/interactive/visualElements/RightAngleQuadVisualElement.js +1 -1
  406. package/views/3d/interactive/visualElements/SlicePlaneVisualElement.js +1 -1
  407. package/views/3d/interactive/visualElements/VerticesVisualElement.js +1 -1
  408. package/views/3d/interactive/visualElements/VisualElementResources.js +1 -1
  409. package/views/3d/interactive/visualElements/support/Segment.js +1 -1
  410. package/views/3d/layers/DynamicLayerView3D.js +1 -1
  411. package/views/3d/layers/I3SMeshView3D.js +1 -1
  412. package/views/3d/layers/MediaLayerView3D.js +1 -1
  413. package/views/3d/layers/PointCloudLayerView3D.js +1 -1
  414. package/views/3d/layers/PointCloudWorker.js +1 -1
  415. package/views/3d/layers/VoxelLayerView3D.js +1 -1
  416. package/views/3d/layers/graphics/Deconflictor.js +1 -1
  417. package/views/3d/layers/graphics/ElevationAligners.js +1 -1
  418. package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
  419. package/views/3d/layers/graphics/Graphics3DExtrudeSymbolLayer.js +1 -1
  420. package/views/3d/layers/graphics/Graphics3DGraphic.js +1 -1
  421. package/views/3d/layers/graphics/Graphics3DIconSymbolLayer.js +1 -1
  422. package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
  423. package/views/3d/layers/graphics/Graphics3DLodInstanceGraphicLayer.js +1 -1
  424. package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
  425. package/views/3d/layers/graphics/Graphics3DMeshObject3DGraphicLayer.js +1 -1
  426. package/views/3d/layers/graphics/Graphics3DObject3DGraphicLayer.js +1 -1
  427. package/views/3d/layers/graphics/Graphics3DObjectSymbolLayer.js +1 -1
  428. package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
  429. package/views/3d/layers/graphics/Graphics3DSymbolLayer.js +1 -1
  430. package/views/3d/layers/graphics/Graphics3DTextSymbolLayer.js +1 -1
  431. package/views/3d/layers/graphics/LabelParameters.js +1 -1
  432. package/views/3d/layers/graphics/elevationAlignmentUtils.js +1 -1
  433. package/views/3d/layers/graphics/graphicUtils.js +1 -1
  434. package/views/3d/layers/graphics/objectResourceUtils.js +1 -1
  435. package/views/3d/layers/graphics/wosrLoader.js +1 -1
  436. package/views/3d/layers/i3s/I3SClientNodeLoader.js +1 -1
  437. package/views/3d/layers/i3s/I3SElevationProvider.js +1 -1
  438. package/views/3d/layers/i3s/I3SGeometryUtil.js +1 -1
  439. package/views/3d/layers/i3s/I3SMeshViewFilter.js +1 -1
  440. package/views/3d/layers/i3s/I3SProjectionUtil.js +1 -1
  441. package/views/3d/layers/i3s/I3SUtil.js +1 -1
  442. package/views/3d/layers/i3s/I3SViewportQueries.js +1 -1
  443. package/views/3d/layers/i3s/LoDUtil.js +1 -1
  444. package/views/3d/layers/i3s/PointRenderer.js +1 -1
  445. package/views/3d/layers/support/FastSymbolUpdates.js +1 -1
  446. package/views/3d/layers/support/FeatureTileMeasurements3D.js +1 -1
  447. package/views/3d/layers/support/FeatureTileVisibility3D.js +1 -1
  448. package/views/3d/layers/support/I3STreeDebugger.js +1 -1
  449. package/views/3d/layers/support/StageLayerElevationProvider.js +1 -1
  450. package/views/3d/layers/support/edgeUtils.js +1 -1
  451. package/views/3d/layers/support/patternUtils.js +1 -1
  452. package/views/3d/layers/support/uvUtils.js +1 -1
  453. package/views/3d/state/Frustum.js +1 -1
  454. package/views/3d/state/NearFarHeuristic.js +1 -1
  455. package/views/3d/state/ViewStateManager.js +1 -1
  456. package/views/3d/state/controllers/GamepadKeyboardController.js +1 -1
  457. package/views/3d/state/controllers/RotateController.js +1 -1
  458. package/views/3d/state/controllers/global/PinchAndPanController.js +1 -1
  459. package/views/3d/state/controllers/global/ZoomController.js +1 -1
  460. package/views/3d/state/controllers/global/ZoomStepController.js +1 -1
  461. package/views/3d/state/controllers/local/PinchAndPanController.js +1 -1
  462. package/views/3d/state/controllers/local/ZoomController.js +1 -1
  463. package/views/3d/state/controllers/local/ZoomStepController.js +1 -1
  464. package/views/3d/state/controllers/momentum/PanPlanarMomentumController.js +1 -1
  465. package/views/3d/state/controllers/momentum/PanSphericalMomentumController.js +1 -1
  466. package/views/3d/state/controllers/momentum/RotationMomentumController.js +1 -1
  467. package/views/3d/state/controllers/momentum/ZoomPlanarMomentumController.js +1 -1
  468. package/views/3d/state/controllers/momentum/ZoomSphericalMomentumController.js +1 -1
  469. package/views/3d/state/helpers/SceneIntersectionHelper.js +1 -1
  470. package/views/3d/state/utils/navigationUtils.js +1 -1
  471. package/views/3d/state/utils/viewUtils.js +1 -1
  472. package/views/3d/support/FrustumExtentIntersection.js +1 -1
  473. package/views/3d/support/LaserLineRenderer.js +1 -1
  474. package/views/3d/support/LaserlinePathData.js +1 -1
  475. package/views/3d/support/RenderCoordsHelper.js +1 -1
  476. package/views/3d/support/StreamTextureCollection.js +1 -1
  477. package/views/3d/support/TextureCollection.js +1 -1
  478. package/views/3d/support/cameraUtils.js +1 -1
  479. package/views/3d/support/cameraUtilsInternal.js +1 -1
  480. package/views/3d/support/engineContent/sdfPrimitives.js +1 -1
  481. package/views/3d/support/geometryUtils/ray.js +1 -1
  482. package/views/3d/support/intersectionUtils.js +1 -1
  483. package/views/3d/support/mathUtils.js +1 -1
  484. package/views/3d/support/orientedBoundingBox.js +1 -1
  485. package/views/3d/support/pointsOfInterest/CameraOnSurface.js +1 -1
  486. package/views/3d/support/pointsOfInterest/CenterOnSurface.js +1 -1
  487. package/views/3d/support/pointsOfInterest/Focus.js +1 -1
  488. package/views/3d/support/pointsOfInterest/PointsOfInterest.js +1 -1
  489. package/views/3d/support/sunUtils.js +1 -1
  490. package/views/3d/support/viewpointUtils.js +1 -1
  491. package/views/3d/terrain/Overlay.js +1 -1
  492. package/views/3d/terrain/OverlayContent.js +5 -0
  493. package/views/3d/terrain/OverlayManager.js +1 -1
  494. package/views/3d/terrain/OverlayRenderTarget.js +1 -1
  495. package/views/3d/terrain/OverlayRenderer.js +1 -1
  496. package/views/3d/terrain/PatchGeometry.js +1 -1
  497. package/views/3d/terrain/PatchRenderData.js +1 -1
  498. package/views/3d/terrain/SphericalPatch.js +1 -1
  499. package/views/3d/terrain/TerrainRenderer.js +1 -1
  500. package/views/3d/terrain/TerrainSurface.js +1 -1
  501. package/views/3d/terrain/TextureReference.js +1 -1
  502. package/views/3d/terrain/Tile.js +1 -1
  503. package/views/3d/terrain/TileCompositor.js +1 -1
  504. package/views/3d/terrain/TileOverlayData.js +1 -1
  505. package/views/3d/terrain/TileRenderInfo.js +1 -1
  506. package/views/3d/terrain/interfaces.js +1 -1
  507. package/views/3d/terrain/support/MultiSizeFramebuffer.js +1 -1
  508. package/views/3d/webgl-engine/Stage.js +1 -1
  509. package/views/3d/webgl-engine/collections/Component/ComponentObjectCollection.js +1 -1
  510. package/views/3d/webgl-engine/collections/Component/DepthRange.js +1 -1
  511. package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
  512. package/views/3d/webgl-engine/collections/Component/Material/shader/ComponentShader.glsl.js +1 -1
  513. package/views/3d/webgl-engine/core/renderPasses/RenderPassManager.js +1 -1
  514. package/views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js +1 -1
  515. package/views/3d/webgl-engine/core/shaderLibrary/attributes/InstancedDoublePrecision.glsl.js +1 -1
  516. package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexNormal.glsl.js +1 -1
  517. package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexPosition.glsl.js +1 -1
  518. package/views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js +1 -1
  519. package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +32 -53
  520. package/views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js +6 -6
  521. package/views/3d/webgl-engine/core/shaderLibrary/terrain/Terrain.glsl.js +1 -1
  522. package/views/3d/webgl-engine/core/shaderLibrary/terrain/TerrainTexture.glsl.js +9 -9
  523. package/views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js +1 -1
  524. package/views/3d/webgl-engine/core/util/TwoVectorPosition.js +1 -1
  525. package/views/3d/webgl-engine/effects/highlight/HighlightPassParameters.js +1 -1
  526. package/views/3d/webgl-engine/effects/highlight/ShadowHighlight.js +1 -1
  527. package/views/3d/webgl-engine/effects/highlight/ShadowHighlightTechnique.js +1 -1
  528. package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
  529. package/views/3d/webgl-engine/lib/BoundingInfo.js +1 -1
  530. package/views/3d/webgl-engine/lib/Camera.js +1 -1
  531. package/views/3d/webgl-engine/lib/CascadeCamera.js +1 -1
  532. package/views/3d/webgl-engine/lib/ContentObject.js +1 -1
  533. package/views/3d/webgl-engine/lib/GLMaterialRepository.js +1 -1
  534. package/views/3d/webgl-engine/lib/GLTextureMaterial.js +1 -1
  535. package/views/3d/webgl-engine/lib/Geometry.js +1 -1
  536. package/views/3d/webgl-engine/lib/GeometryUtil.js +1 -1
  537. package/views/3d/webgl-engine/lib/GridLocalOriginFactory.js +1 -1
  538. package/views/3d/webgl-engine/lib/ITexture.js +5 -0
  539. package/views/3d/webgl-engine/lib/Intersector.js +1 -1
  540. package/views/3d/webgl-engine/lib/IntersectorTarget.js +1 -1
  541. package/views/3d/webgl-engine/lib/LocalOriginManager.js +1 -1
  542. package/views/3d/webgl-engine/lib/Object3D.js +1 -1
  543. package/views/3d/webgl-engine/lib/ObjectAndLayerIdRenderHelper.js +1 -1
  544. package/views/3d/webgl-engine/lib/Octree.js +1 -1
  545. package/views/3d/webgl-engine/lib/Path.js +1 -1
  546. package/views/3d/webgl-engine/lib/PathExtruder.js +1 -1
  547. package/views/3d/webgl-engine/lib/PathGeometryData.js +1 -1
  548. package/views/3d/webgl-engine/lib/PathVertex.js +1 -1
  549. package/views/3d/webgl-engine/lib/RenderGeometry.js +1 -1
  550. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  551. package/views/3d/webgl-engine/lib/ShadowAccumulator.js +1 -1
  552. package/views/3d/webgl-engine/lib/ShadowCastRenderer.js +1 -1
  553. package/views/3d/webgl-engine/lib/ShadowMap.js +1 -1
  554. package/views/3d/webgl-engine/lib/TextTextureAtlas.js +1 -1
  555. package/views/3d/webgl-engine/lib/Texture.js +1 -1
  556. package/views/3d/webgl-engine/lib/TextureRepository.js +1 -1
  557. package/views/3d/webgl-engine/lib/depthRangeUtils.js +1 -1
  558. package/views/3d/webgl-engine/lib/edgeRendering/EdgeRenderer.js +1 -1
  559. package/views/3d/webgl-engine/lib/edgeRendering/EdgeShaderParameters.js +1 -1
  560. package/views/3d/webgl-engine/lib/edgeRendering/EdgeView.js +1 -1
  561. package/views/3d/webgl-engine/lib/edgeRendering/edgeBufferWriters.js +1 -1
  562. package/views/3d/webgl-engine/lib/edgeRendering/edgePreprocessing.js +1 -1
  563. package/views/3d/webgl-engine/lib/geometryDataUtils.js +1 -1
  564. package/views/3d/webgl-engine/lib/intersectorUtils.js +1 -1
  565. package/views/3d/webgl-engine/lib/lodRendering/InstanceData.js +1 -1
  566. package/views/3d/webgl-engine/lib/lodRendering/InstanceOctree.js +1 -1
  567. package/views/3d/webgl-engine/lib/lodRendering/LodRenderer.js +1 -1
  568. package/views/3d/webgl-engine/lib/octreeUtils.js +1 -1
  569. package/views/3d/webgl-engine/lib/pathGeometryUtils.js +1 -1
  570. package/views/3d/webgl-engine/lib/verticalOffsetUtils.js +1 -1
  571. package/views/3d/webgl-engine/lighting/SceneLighting.js +1 -1
  572. package/views/3d/webgl-engine/lighting/SphericalHarmonics.js +1 -1
  573. package/views/3d/webgl-engine/materials/CheckerBoardMaterial.js +1 -1
  574. package/views/3d/webgl-engine/materials/DefaultMaterial.js +1 -1
  575. package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
  576. package/views/3d/webgl-engine/materials/LineDrawParameters.js +1 -1
  577. package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
  578. package/views/3d/webgl-engine/materials/MeasurementArrowMaterial.js +1 -1
  579. package/views/3d/webgl-engine/materials/NativeLineMaterial.js +1 -1
  580. package/views/3d/webgl-engine/materials/PatternMaterial.js +1 -1
  581. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  582. package/views/3d/webgl-engine/materials/ShadedColorMaterial.js +1 -1
  583. package/views/3d/webgl-engine/materials/WaterMaterial.js +1 -1
  584. package/views/3d/webgl-engine/materials/internal/MaterialUtil.js +1 -1
  585. package/views/3d/webgl-engine/materials/pbrUtils.js +1 -1
  586. package/views/3d/webgl-engine/materials/renderers/MergedRenderer.js +1 -1
  587. package/views/3d/webgl-engine/parts/Model.js +1 -1
  588. package/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js +1 -1
  589. package/views/3d/webgl-engine/shaders/NativeLine.glsl.js +1 -1
  590. package/views/3d/webgl-engine/shaders/NativeLineTechnique.js +1 -1
  591. package/views/3d/webgl-engine/shaders/NativeLineTechniqueConfiguration.js +1 -1
  592. package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
  593. package/views/3d/webgl-engine/shaders/SlicePlaneMaterialTechnique.js +1 -1
  594. package/views/GroundView.js +1 -1
  595. package/views/SceneView.js +1 -1
  596. package/views/draw/DrawManipulator.js +1 -1
  597. package/views/draw/support/createUtils.js +1 -1
  598. package/views/draw/support/surfaceCoordinateSystems.js +1 -1
  599. package/views/interactive/GraphicManipulator.js +1 -1
  600. package/views/interactive/ManipulatorCollection.js +1 -1
  601. package/views/interactive/ToolViewManagerManipulatorState.js +1 -1
  602. package/views/interactive/coordinateHelper.js +1 -1
  603. package/views/interactive/dragEventPipeline.js +1 -1
  604. package/views/interactive/editGeometry/operations/OffsetEdgeVertex.js +1 -1
  605. package/views/interactive/editGeometry/support/editPlaneUtils.js +1 -1
  606. package/views/interactive/sketch/constraints.js +1 -1
  607. package/views/interactive/sketch/normalizedPoint.js +1 -1
  608. package/views/interactive/snapping/FeatureSnappingEngine.js +1 -1
  609. package/views/interactive/snapping/RightAngleSnapper.js +1 -1
  610. package/views/interactive/snapping/candidates/ParallelLineSnappingCandidate.js +1 -1
  611. package/views/interactive/snapping/candidates/RightAngleTriangleSnappingCandidate.js +1 -1
  612. package/views/interactive/snapping/featureSources/sceneLayerSource/SceneLayerSnappingSourceWorker.js +1 -1
  613. package/views/interactive/snapping/featureSources/sceneLayerSource/sceneLayerSnappingUtils.js +1 -1
  614. package/views/interactive/snapping/hints/IntersectionSnappingHint.js +1 -1
  615. package/views/interactive/snapping/hints/LineSnappingHint.js +1 -1
  616. package/views/interactive/snapping/hints/ParallelSnappingHint.js +1 -1
  617. package/views/interactive/snapping/hints/PointSnappingHint.js +1 -1
  618. package/views/interactive/snapping/hints/RightAngleSnappingHint.js +1 -1
  619. package/views/interactive/support/viewUtils.js +1 -1
  620. package/views/interactive/tooltip/constraintUtils.js +1 -1
  621. package/views/navigation/PanPlanarMomentumEstimator.js +1 -1
  622. package/views/navigation/PanSphericalMomentumEstimator.js +1 -1
  623. package/views/navigation/gamepadAndKeyboardUtils.js +1 -1
  624. package/views/support/euclideanAreaMeasurementUtils.js +1 -1
  625. package/views/support/euclideanLengthMeasurementUtils.js +1 -1
  626. package/views/support/geometry3dUtils.js +1 -1
  627. package/views/support/layerViewUtils.js +1 -1
  628. package/webdoc/support/saveUtils.js +1 -1
  629. package/webscene/Slide.js +1 -1
  630. package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
  631. package/widgets/Editor/CreateFeaturesWorkflowData.js +1 -1
  632. package/widgets/Editor/EditorViewModel.js +1 -1
  633. package/widgets/Editor/UpdateRecordWorkflow.js +1 -1
  634. package/widgets/Editor/UpdateRecordWorkflowData.js +1 -1
  635. package/widgets/Editor/UpdateWorkflow.js +1 -1
  636. package/widgets/Editor/workflowUtils.js +1 -1
  637. package/widgets/Editor.js +1 -1
  638. package/widgets/ElevationProfile/support/ProfileLines3D.js +1 -1
  639. package/widgets/ElevationProfile/support/constants.js +1 -1
  640. package/widgets/ElevationProfile/support/geometryUtils.js +1 -1
  641. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  642. package/widgets/OrientedImageryViewer.js +1 -1
  643. package/widgets/Sketch.js +1 -1
  644. package/widgets/smartMapping/BinaryColorSizeSlider/BinaryColorSizeSliderViewModel.d.ts +4 -0
  645. package/widgets/smartMapping/BinaryColorSizeSlider.d.ts +4 -0
  646. package/widgets/support/SelectionToolbar/SelectionToolbarViewModel.js +1 -1
  647. package/widgets/support/Selector2D/selectorUtils.js +1 -1
  648. package/widgets/support/templateUtils.js +5 -0
  649. package/assets/esri/core/workers/chunks/19857e5420cdf23c5f2e.js +0 -1
  650. package/assets/esri/core/workers/chunks/26289742b9280f0b5247.js +0 -1
  651. package/assets/esri/core/workers/chunks/46f6b77e586d78aeb75c.js +0 -1
  652. package/assets/esri/core/workers/chunks/4e39252f40bc57be9d12.js +0 -1
  653. package/assets/esri/core/workers/chunks/54513578f735d274a20e.js +0 -1
  654. package/assets/esri/core/workers/chunks/8dab0acdbbd5c282645a.js +0 -1
  655. package/assets/esri/core/workers/chunks/8e4b01a0cb8c8926f2b6.js +0 -1
  656. package/assets/esri/core/workers/chunks/a3a1d4f32e518e97d071.js +0 -1
  657. package/assets/esri/core/workers/chunks/b2d4a56197dcabdbae35.js +0 -1
  658. package/assets/esri/core/workers/chunks/be0565d923afba7ca300.js +0 -1
  659. package/assets/esri/core/workers/chunks/c99fa4189a114370b004.js +0 -1
  660. package/assets/esri/core/workers/chunks/daa79c14150c12d8bc3d.js +0 -1
  661. package/assets/esri/core/workers/chunks/ebd006fcd568a7731115.js +0 -1
  662. package/assets/esri/core/workers/chunks/f67388c4b7103fda6633.js +0 -1
  663. package/views/3d/analysis/Slice/images/Factory.js +0 -5
  664. /package/assets/esri/views/3d/analysis/{Slice/images → images}/heading-rotate.ts.svg +0 -0
  665. /package/assets/esri/views/3d/analysis/{Slice/images → images}/tilt-rotate.ts.svg +0 -0
  666. /package/views/3d/analysis/{Slice/images → images}/generateTextures.js +0 -0
  667. /package/views/3d/analysis/{Slice/images → images}/heading-rotate-svg.js +0 -0
  668. /package/views/3d/analysis/{Slice/images → images}/tilt-rotate-svg.js +0 -0
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import"../../../../core/has.js";import{clamp as e}from"../../../../core/mathUtils.js";import{f as t}from"../../../../chunks/mat3.js";import{c as o}from"../../../../chunks/mat3f64.js";import{i,c as n,s,m as r,k as l,w as a,o as u,r as f,n as c}from"../../../../chunks/mat4.js";import{c as p}from"../../../../chunks/mat4f64.js";import{s as d}from"../../../../chunks/vec3.js";import{c as z}from"../../../../chunks/vec3f64.js";import{meterIn as v}from"../../../../renderers/support/lengthUtils.js";import{debugFlags as m}from"../../support/debugFlags.js";import{NoParameters as h}from"../../webgl-engine/core/shaderModules/interfaces.js";var S,y;!function(e){e[e.Undefined=0]="Undefined",e[e.DefinedSize=1]="DefinedSize",e[e.DefinedScale=2]="DefinedScale"}(S||(S={})),function(e){e[e.Undefined=0]="Undefined",e[e.DefinedAngle=1]="DefinedAngle"}(y||(y={}));class x{constructor(e){this.field=e}}class g extends x{constructor(e){super(e),this.minSize=[0,0,0],this.maxSize=[0,0,0],this.offset=[0,0,0],this.factor=[0,0,0],this.type=[S.Undefined,S.Undefined,S.Undefined]}}class b extends x{constructor(e){super(e),this.colors=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.values=[0,0,0,0,0,0,0,0]}}class C extends x{constructor(e){super(e),this.values=[0,0,0,0,0,0,0,0],this.opacityValues=[0,0,0,0,0,0,0,0]}}class D extends x{constructor(e){super(e),this.offset=[0,0,0],this.factor=[1,1,1],this.type=[0,0,0]}}class w{}function U(e){return null!=e}function V(e){return"number"==typeof e}function M(e){return"string"==typeof e}function j(e){return null==e||M(e)}function k(e,t){e&&e.push(t)}function A(e,t,o,i=p()){const n=e||0,s=t||0,r=o||0;return 0!==n&&u(i,i,-n/180*Math.PI),0!==s&&f(i,i,s/180*Math.PI),0!==r&&c(i,i,r/180*Math.PI),i}function I(e,t,o,i,n){const s=e.minSize,r=e.maxSize;if(e.expression)return k(n,"Could not convert size info: expression not supported"),!1;if(e.useSymbolValue){const e=i.symbolSize[o];return t.minSize[o]=e,t.maxSize[o]=e,t.offset[o]=t.minSize[o],t.factor[o]=0,t.type[o]=S.DefinedSize,!0}if(U(e.field))return U(e.stops)?2===e.stops.length&&V(e.stops[0].size)&&V(e.stops[1].size)?(T(e.stops[0].size,e.stops[1].size,e.stops[0].value,e.stops[1].value,t,o),t.type[o]=S.DefinedSize,!0):(k(n,"Could not convert size info: stops only supported with 2 elements"),!1):V(s)&&V(r)&&U(e.minDataValue)&&U(e.maxDataValue)?(T(s,r,e.minDataValue,e.maxDataValue,t,o),t.type[o]=S.DefinedSize,!0):"unknown"===e.valueUnit?(k(n,"Could not convert size info: proportional size not supported"),!1):null!=v[e.valueUnit]?(t.minSize[o]=-1/0,t.maxSize[o]=1/0,t.offset[o]=0,t.factor[o]=1/v[e.valueUnit],t.type[o]=S.DefinedSize,!0):(k(n,"Could not convert size info: scale-dependent size not supported"),!1);if(!U(e.field)){if(e.stops&&e.stops[0]&&V(e.stops[0].size))return t.minSize[o]=e.stops[0].size,t.maxSize[o]=e.stops[0].size,t.offset[o]=t.minSize[o],t.factor[o]=0,t.type[o]=S.DefinedSize,!0;if(V(s))return t.minSize[o]=s,t.maxSize[o]=s,t.offset[o]=s,t.factor[o]=0,t.type[o]=S.DefinedSize,!0}return k(n,"Could not convert size info: unsupported variant of sizeInfo"),!1}function T(e,t,o,i,n,s){const r=Math.abs(i-o)>0?(t-e)/(i-o):0;n.minSize[s]=r>0?e:t,n.maxSize[s]=r>0?t:e,n.offset[s]=e-o*r,n.factor[s]=r}function F(e,t,o,i){if(e.normalizationField||e.valueRepresentation)return k(i,"Could not convert size info: unsupported property"),null;if(!j(e.field))return k(i,"Could not convert size info: field is not a string"),null;if(t.size){if(e.field)if(t.size.field){if(e.field!==t.size.field)return k(i,"Could not convert size info: multiple fields in use"),null}else t.size.field=e.field}else t.size=new g(e.field);let n;switch(e.axis){case"width":return n=I(e,t.size,0,o,i),n?t:null;case"height":return n=I(e,t.size,2,o,i),n?t:null;case"depth":return n=I(e,t.size,1,o,i),n?t:null;case"width-and-depth":return n=I(e,t.size,0,o,i),n&&I(e,t.size,1,o,i),n?t:null;case null:case void 0:case"all":return n=I(e,t.size,0,o,i),n=n&&I(e,t.size,1,o,i),n=n&&I(e,t.size,2,o,i),n?t:null;default:return k(i,`Could not convert size info: unknown axis "${e.axis}""`),null}}function P(e,t,o){for(let n=0;n<3;++n){let o=t.unitInMeters;e.type[n]===S.DefinedSize&&(o*=t.modelSize[n],e.type[n]=S.DefinedScale),e.minSize[n]=e.minSize[n]/o,e.maxSize[n]=e.maxSize[n]/o,e.offset[n]=e.offset[n]/o,e.factor[n]=e.factor[n]/o}let i;if(e.type[0]!==S.Undefined)i=0;else if(e.type[1]!==S.Undefined)i=1;else{if(e.type[2]===S.Undefined)return k(o,"No size axis contains a valid size or scale"),!1;i=2}for(let n=0;n<3;++n)e.type[n]===S.Undefined&&(e.minSize[n]=e.minSize[i],e.maxSize[n]=e.maxSize[i],e.offset[n]=e.offset[i],e.factor[n]=e.factor[i],e.type[n]=e.type[i]);return!0}function R(e,t,o){e[4*t]=o.r/255,e[4*t+1]=o.g/255,e[4*t+2]=o.b/255,e[4*t+3]=o.a}function E(e,t,o){if(e.normalizationField)return k(o,"Could not convert color info: unsupported property"),null;if(M(e.field)){if(!e.stops)return k(o,"Could not convert color info: missing stops or colors"),null;{if(e.stops.length>8)return k(o,"Could not convert color info: too many color stops"),null;t.color=new b(e.field);const i=e.stops;for(let e=0;e<8;++e){const o=i[Math.min(e,i.length-1)];t.color.values[e]=o.value,R(t.color.colors,e,o.color)}}}else{if(!(e.stops&&e.stops.length>=0))return k(o,"Could not convert color info: no field and no colors/stops"),null;{const o=e.stops&&e.stops.length>=0&&e.stops[0].color;t.color={field:null,values:[0,0,0,0,0,0,0,0],colors:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]};for(let e=0;e<8;e++)t.color.values[e]=1/0,R(t.color.colors,e,o)}}return t}function _(e,t,o){if(e.normalizationField)return k(o,"Could not convert opacity info: unsupported property"),null;if(M(e.field)){if(!e.stops)return k(o,"Could not convert opacity info: missing stops or opacities"),null;{if(e.stops.length>8)return k(o,"Could not convert opacity info: too many opacity stops"),null;t.opacity=new C(e.field);const i=e.stops;for(let e=0;e<8;++e){const o=i[Math.min(e,i.length-1)];t.opacity.values[e]=o.value,t.opacity.opacityValues[e]=o.opacity}}}else{if(!(e.stops&&e.stops.length>=0))return k(o,"Could not convert opacity info: no field and no opacities/stops"),null;{const o=e.stops&&e.stops.length>=0?e.stops[0].opacity:0;t.opacity={field:null,values:[0,0,0,0,0,0,0,0],opacityValues:[0,0,0,0,0,0,0,0]};for(let e=0;e<8;e++)t.opacity.values[e]=1/0,t.opacity.opacityValues[e]=o}}return t}function q(e,t,o){const i=2===o&&"arithmetic"===e.rotationType;t.offset[o]=i?90:0,t.factor[o]=i?-1:1,t.type[o]=1}function $(e,t,o){if(!M(e.field))return k(o,"Could not convert rotation info: field is not a string"),null;if(t.rotation){if(e.field)if(t.rotation.field){if(e.field!==t.rotation.field)return k(o,"Could not convert rotation info: multiple fields in use"),null}else t.rotation.field=e.field}else t.rotation={field:e.field,offset:[0,0,0],factor:[1,1,1],type:[0,0,0]};switch(e.axis){case"tilt":return q(e,t.rotation,0),t;case"roll":return q(e,t.rotation,1),t;case null:case void 0:case"heading":return q(e,t.rotation,2),t;default:return k(o,`Could not convert rotation info: unknown axis "${e.axis}""`),null}}class B{constructor(e,t=[1,1,1],o=[1,1,1],i=1,n=[0,0,0],s=[1,1,1],r=[0,0,0]){this.supports=e,this.modelSize=t,this.symbolSize=o,this.unitInMeters=i,this.anchor=n,this.scale=s,this.rotation=r}}function L(e,t,o){if(!e)return null;const i=e.reduce(((e,i)=>{if(!e)return e;if(i.valueExpression)return k(o,"Could not convert visual variables: arcade expressions not supported"),null;switch(i.type){case"size":return t.supports.size?F(i,e,t,o):e;case"color":return t.supports.color?E(i,e,o):e;case"opacity":return t.supports.opacity?_(i,e,o):null;case"rotation":return t.supports.rotation?$(i,e,o):e;default:return null}}),new w);return!(e.length>0&&i)||i.size||i.color||i.opacity||i.rotation?i&&i.size&&!P(i.size,t,o)?null:i:null}class N{constructor(e,t,o){this.visualVariables=e,this.materialParameters=t,this.requiresShaderTransformation=o}}function O(e,t){if(!e)return null;if(m.TESTS_DISABLE_FAST_UPDATES)return null;const o=L(e.visualVariables,t);return o?new N(o,K(o,t),!!o.size):null}function G(e,t,o){if(!t||!e)return!1;const i=e.visualVariables,n=L(t.visualVariables,o);return!!n&&(!!(H(i.size,n.size,"size")&&H(i.color,n.color,"color")&&H(i.rotation,n.rotation,"rotation")&&H(i.opacity,n.opacity,"opacity"))&&(e.visualVariables=n,e.materialParameters=K(n,o),e.requiresShaderTransformation=!!n.size,!0))}function H(e,t,o){if(!!e!=!!t)return!1;if(e&&e.field!==t?.field)return!1;if(e&&"rotation"===o){const o=e,i=t;for(let e=0;e<3;e++)if(o.type[e]!==i.type[e]||o.offset[e]!==i.offset[e]||o.factor[e]!==i.factor[e])return!1}return!0}class J extends h{constructor(e){super(),this.vvSize=e?.size??null,this.vvColor=e?.color??null,this.vvOpacity=e?.opacity??null}}function K(e,n){const s=new J(e);return s.vvSize&&(s.vvSymbolAnchor=n.anchor,i(ee),A(n.rotation[2],n.rotation[0],n.rotation[1],ee),s.vvSymbolRotationMatrix=s.vvSymbolRotationMatrix||o(),t(s.vvSymbolRotationMatrix,ee)),s}function Q(t,o,i){if(!t.vvSize)return i;n(Y,i);const u=t.vvSymbolRotationMatrix;s(ee,u[0],u[1],u[2],0,u[3],u[4],u[5],0,u[6],u[7],u[8],0,0,0,0,1),r(Y,Y,ee);for(let n=0;n<3;++n){const i=t.vvSize.offset[n]+o[0]*t.vvSize.factor[n];Z[n]=e(i,t.vvSize.minSize[n],t.vvSize.maxSize[n])}return l(Y,Y,Z),a(Y,Y,t.vvSymbolAnchor),Y}function W(t,o,i){if(!o.vvSize)return d(t,1,1,1),t;for(let n=0;n<3;++n){const s=o.vvSize.offset[n]+i[0]*o.vvSize.factor[n];t[n]=e(s,o.vvSize.minSize[n],o.vvSize.maxSize[n])}return t}function X(e,t){const o=null==e?0:t.attributes[e];return"number"==typeof o&&isFinite(o)?o:0}const Y=p(),Z=z(),ee=p();export{B as ConvertOptions,b as FastColorInfo,C as FastOpacityInfo,D as FastRotationInfo,y as FastRotationType,g as FastSizeInfo,S as FastSizeType,N as FastSymbolUpdatesState,w as FastVisualVariables,J as VisualVariablesParameters,L as convertVisualVariables,Q as evaluateModelTransform,W as evaluateModelTransformScale,X as getAttributeValue,K as getMaterialParameters,O as initFastSymbolUpdatesState,G as updateFastSymbolUpdatesState};
5
+ import"../../../../core/has.js";import{clamp as e}from"../../../../core/mathUtils.js";import{f as t}from"../../../../chunks/mat3.js";import{a as o}from"../../../../chunks/mat3f64.js";import{g as i,h as n,s,m as r,b as l,w as a,o as u,r as f,n as c}from"../../../../chunks/mat4.js";import{a as p}from"../../../../chunks/mat4f64.js";import{s as d}from"../../../../chunks/vec3.js";import{c as z}from"../../../../chunks/vec3f64.js";import{meterIn as v}from"../../../../renderers/support/lengthUtils.js";import{debugFlags as m}from"../../support/debugFlags.js";import{NoParameters as h}from"../../webgl-engine/core/shaderModules/interfaces.js";var S,y;!function(e){e[e.Undefined=0]="Undefined",e[e.DefinedSize=1]="DefinedSize",e[e.DefinedScale=2]="DefinedScale"}(S||(S={})),function(e){e[e.Undefined=0]="Undefined",e[e.DefinedAngle=1]="DefinedAngle"}(y||(y={}));class x{constructor(e){this.field=e}}class g extends x{constructor(e){super(e),this.minSize=[0,0,0],this.maxSize=[0,0,0],this.offset=[0,0,0],this.factor=[0,0,0],this.type=[S.Undefined,S.Undefined,S.Undefined]}}class b extends x{constructor(e){super(e),this.colors=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.values=[0,0,0,0,0,0,0,0]}}class C extends x{constructor(e){super(e),this.values=[0,0,0,0,0,0,0,0],this.opacityValues=[0,0,0,0,0,0,0,0]}}class D extends x{constructor(e){super(e),this.offset=[0,0,0],this.factor=[1,1,1],this.type=[0,0,0]}}class w{}function U(e){return null!=e}function V(e){return"number"==typeof e}function M(e){return"string"==typeof e}function j(e){return null==e||M(e)}function k(e,t){e&&e.push(t)}function A(e,t,o,i=p()){const n=e||0,s=t||0,r=o||0;return 0!==n&&u(i,i,-n/180*Math.PI),0!==s&&f(i,i,s/180*Math.PI),0!==r&&c(i,i,r/180*Math.PI),i}function I(e,t,o,i,n){const s=e.minSize,r=e.maxSize;if(e.expression)return k(n,"Could not convert size info: expression not supported"),!1;if(e.useSymbolValue){const e=i.symbolSize[o];return t.minSize[o]=e,t.maxSize[o]=e,t.offset[o]=t.minSize[o],t.factor[o]=0,t.type[o]=S.DefinedSize,!0}if(U(e.field))return U(e.stops)?2===e.stops.length&&V(e.stops[0].size)&&V(e.stops[1].size)?(T(e.stops[0].size,e.stops[1].size,e.stops[0].value,e.stops[1].value,t,o),t.type[o]=S.DefinedSize,!0):(k(n,"Could not convert size info: stops only supported with 2 elements"),!1):V(s)&&V(r)&&U(e.minDataValue)&&U(e.maxDataValue)?(T(s,r,e.minDataValue,e.maxDataValue,t,o),t.type[o]=S.DefinedSize,!0):"unknown"===e.valueUnit?(k(n,"Could not convert size info: proportional size not supported"),!1):null!=v[e.valueUnit]?(t.minSize[o]=-1/0,t.maxSize[o]=1/0,t.offset[o]=0,t.factor[o]=1/v[e.valueUnit],t.type[o]=S.DefinedSize,!0):(k(n,"Could not convert size info: scale-dependent size not supported"),!1);if(!U(e.field)){if(e.stops&&e.stops[0]&&V(e.stops[0].size))return t.minSize[o]=e.stops[0].size,t.maxSize[o]=e.stops[0].size,t.offset[o]=t.minSize[o],t.factor[o]=0,t.type[o]=S.DefinedSize,!0;if(V(s))return t.minSize[o]=s,t.maxSize[o]=s,t.offset[o]=s,t.factor[o]=0,t.type[o]=S.DefinedSize,!0}return k(n,"Could not convert size info: unsupported variant of sizeInfo"),!1}function T(e,t,o,i,n,s){const r=Math.abs(i-o)>0?(t-e)/(i-o):0;n.minSize[s]=r>0?e:t,n.maxSize[s]=r>0?t:e,n.offset[s]=e-o*r,n.factor[s]=r}function F(e,t,o,i){if(e.normalizationField||e.valueRepresentation)return k(i,"Could not convert size info: unsupported property"),null;if(!j(e.field))return k(i,"Could not convert size info: field is not a string"),null;if(t.size){if(e.field)if(t.size.field){if(e.field!==t.size.field)return k(i,"Could not convert size info: multiple fields in use"),null}else t.size.field=e.field}else t.size=new g(e.field);let n;switch(e.axis){case"width":return n=I(e,t.size,0,o,i),n?t:null;case"height":return n=I(e,t.size,2,o,i),n?t:null;case"depth":return n=I(e,t.size,1,o,i),n?t:null;case"width-and-depth":return n=I(e,t.size,0,o,i),n&&I(e,t.size,1,o,i),n?t:null;case null:case void 0:case"all":return n=I(e,t.size,0,o,i),n=n&&I(e,t.size,1,o,i),n=n&&I(e,t.size,2,o,i),n?t:null;default:return k(i,`Could not convert size info: unknown axis "${e.axis}""`),null}}function P(e,t,o){for(let n=0;n<3;++n){let o=t.unitInMeters;e.type[n]===S.DefinedSize&&(o*=t.modelSize[n],e.type[n]=S.DefinedScale),e.minSize[n]=e.minSize[n]/o,e.maxSize[n]=e.maxSize[n]/o,e.offset[n]=e.offset[n]/o,e.factor[n]=e.factor[n]/o}let i;if(e.type[0]!==S.Undefined)i=0;else if(e.type[1]!==S.Undefined)i=1;else{if(e.type[2]===S.Undefined)return k(o,"No size axis contains a valid size or scale"),!1;i=2}for(let n=0;n<3;++n)e.type[n]===S.Undefined&&(e.minSize[n]=e.minSize[i],e.maxSize[n]=e.maxSize[i],e.offset[n]=e.offset[i],e.factor[n]=e.factor[i],e.type[n]=e.type[i]);return!0}function R(e,t,o){e[4*t]=o.r/255,e[4*t+1]=o.g/255,e[4*t+2]=o.b/255,e[4*t+3]=o.a}function E(e,t,o){if(e.normalizationField)return k(o,"Could not convert color info: unsupported property"),null;if(M(e.field)){if(!e.stops)return k(o,"Could not convert color info: missing stops or colors"),null;{if(e.stops.length>8)return k(o,"Could not convert color info: too many color stops"),null;t.color=new b(e.field);const i=e.stops;for(let e=0;e<8;++e){const o=i[Math.min(e,i.length-1)];t.color.values[e]=o.value,R(t.color.colors,e,o.color)}}}else{if(!(e.stops&&e.stops.length>=0))return k(o,"Could not convert color info: no field and no colors/stops"),null;{const o=e.stops&&e.stops.length>=0&&e.stops[0].color;t.color={field:null,values:[0,0,0,0,0,0,0,0],colors:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]};for(let e=0;e<8;e++)t.color.values[e]=1/0,R(t.color.colors,e,o)}}return t}function _(e,t,o){if(e.normalizationField)return k(o,"Could not convert opacity info: unsupported property"),null;if(M(e.field)){if(!e.stops)return k(o,"Could not convert opacity info: missing stops or opacities"),null;{if(e.stops.length>8)return k(o,"Could not convert opacity info: too many opacity stops"),null;t.opacity=new C(e.field);const i=e.stops;for(let e=0;e<8;++e){const o=i[Math.min(e,i.length-1)];t.opacity.values[e]=o.value,t.opacity.opacityValues[e]=o.opacity}}}else{if(!(e.stops&&e.stops.length>=0))return k(o,"Could not convert opacity info: no field and no opacities/stops"),null;{const o=e.stops&&e.stops.length>=0?e.stops[0].opacity:0;t.opacity={field:null,values:[0,0,0,0,0,0,0,0],opacityValues:[0,0,0,0,0,0,0,0]};for(let e=0;e<8;e++)t.opacity.values[e]=1/0,t.opacity.opacityValues[e]=o}}return t}function q(e,t,o){const i=2===o&&"arithmetic"===e.rotationType;t.offset[o]=i?90:0,t.factor[o]=i?-1:1,t.type[o]=1}function $(e,t,o){if(!M(e.field))return k(o,"Could not convert rotation info: field is not a string"),null;if(t.rotation){if(e.field)if(t.rotation.field){if(e.field!==t.rotation.field)return k(o,"Could not convert rotation info: multiple fields in use"),null}else t.rotation.field=e.field}else t.rotation={field:e.field,offset:[0,0,0],factor:[1,1,1],type:[0,0,0]};switch(e.axis){case"tilt":return q(e,t.rotation,0),t;case"roll":return q(e,t.rotation,1),t;case null:case void 0:case"heading":return q(e,t.rotation,2),t;default:return k(o,`Could not convert rotation info: unknown axis "${e.axis}""`),null}}class B{constructor(e,t=[1,1,1],o=[1,1,1],i=1,n=[0,0,0],s=[1,1,1],r=[0,0,0]){this.supports=e,this.modelSize=t,this.symbolSize=o,this.unitInMeters=i,this.anchor=n,this.scale=s,this.rotation=r}}function L(e,t,o){if(!e)return null;const i=e.reduce(((e,i)=>{if(!e)return e;if(i.valueExpression)return k(o,"Could not convert visual variables: arcade expressions not supported"),null;switch(i.type){case"size":return t.supports.size?F(i,e,t,o):e;case"color":return t.supports.color?E(i,e,o):e;case"opacity":return t.supports.opacity?_(i,e,o):null;case"rotation":return t.supports.rotation?$(i,e,o):e;default:return null}}),new w);return!(e.length>0&&i)||i.size||i.color||i.opacity||i.rotation?i&&i.size&&!P(i.size,t,o)?null:i:null}class N{constructor(e,t,o){this.visualVariables=e,this.materialParameters=t,this.requiresShaderTransformation=o}}function O(e,t){if(!e)return null;if(m.TESTS_DISABLE_FAST_UPDATES)return null;const o=L(e.visualVariables,t);return o?new N(o,K(o,t),!!o.size):null}function G(e,t,o){if(!t||!e)return!1;const i=e.visualVariables,n=L(t.visualVariables,o);return!!n&&(!!(H(i.size,n.size,"size")&&H(i.color,n.color,"color")&&H(i.rotation,n.rotation,"rotation")&&H(i.opacity,n.opacity,"opacity"))&&(e.visualVariables=n,e.materialParameters=K(n,o),e.requiresShaderTransformation=!!n.size,!0))}function H(e,t,o){if(!!e!=!!t)return!1;if(e&&e.field!==t?.field)return!1;if(e&&"rotation"===o){const o=e,i=t;for(let e=0;e<3;e++)if(o.type[e]!==i.type[e]||o.offset[e]!==i.offset[e]||o.factor[e]!==i.factor[e])return!1}return!0}class J extends h{constructor(e){super(),this.vvSize=e?.size??null,this.vvColor=e?.color??null,this.vvOpacity=e?.opacity??null}}function K(e,n){const s=new J(e);return s.vvSize&&(s.vvSymbolAnchor=n.anchor,i(ee),A(n.rotation[2],n.rotation[0],n.rotation[1],ee),s.vvSymbolRotationMatrix=s.vvSymbolRotationMatrix||o(),t(s.vvSymbolRotationMatrix,ee)),s}function Q(t,o,i){if(!t.vvSize)return i;n(Y,i);const u=t.vvSymbolRotationMatrix;s(ee,u[0],u[1],u[2],0,u[3],u[4],u[5],0,u[6],u[7],u[8],0,0,0,0,1),r(Y,Y,ee);for(let n=0;n<3;++n){const i=t.vvSize.offset[n]+o[0]*t.vvSize.factor[n];Z[n]=e(i,t.vvSize.minSize[n],t.vvSize.maxSize[n])}return l(Y,Y,Z),a(Y,Y,t.vvSymbolAnchor),Y}function W(t,o,i){if(!o.vvSize)return d(t,1,1,1),t;for(let n=0;n<3;++n){const s=o.vvSize.offset[n]+i[0]*o.vvSize.factor[n];t[n]=e(s,o.vvSize.minSize[n],o.vvSize.maxSize[n])}return t}function X(e,t){const o=null==e?0:t.attributes[e];return"number"==typeof o&&isFinite(o)?o:0}const Y=p(),Z=z(),ee=p();export{B as ConvertOptions,b as FastColorInfo,C as FastOpacityInfo,D as FastRotationInfo,y as FastRotationType,g as FastSizeInfo,S as FastSizeType,N as FastSymbolUpdatesState,w as FastVisualVariables,J as VisualVariablesParameters,L as convertVisualVariables,Q as evaluateModelTransform,W as evaluateModelTransformScale,X as getAttributeValue,K as getMaterialParameters,O as initFastSymbolUpdatesState,G as updateFastSymbolUpdatesState};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{createScreenPointArray as e,createRenderScreenPointArray3 as t}from"../../../../core/screenUtils.js";import{b as i,e as r}from"../../../../chunks/vec3.js";import{c as s}from"../../../../chunks/vec3f64.js";import{create as o,fromValues as n,distance as a,empty as c,expandPointInPlace as l,expand as h}from"../../../../geometry/support/aaBoundingRect.js";import{PlaneIndex as m}from"../../../../geometry/support/frustum.js";import{signedDistance as _,normal as u}from"../../../../geometry/support/plane.js";import{areaPoints2d as p}from"../../../../geometry/support/triangle.js";import{Visibility as d}from"./FeatureTileDescriptor3D.js";import{FeatureTileVisibility3D as f}from"./FeatureTileVisibility3D.js";import{Camera as S}from"../../webgl-engine/lib/Camera.js";class j{constructor(e){this._camera=new S,this._focusOnMap=[0,0],this._screenRect=o(),this._tileSize=e.tileSize,this._renderCoordsHelper=e.renderCoordsHelper,this._tilingScheme=e.tilingScheme,this._visibility=new f(e.renderCoordsHelper)}begin(e,t,i){this._camera.copyFrom(e),this._surfaceElevation=i,this._focusOnMap[0]=t.x,this._focusOnMap[1]=t.y,n(0,0,e.fullWidth,e.fullHeight,this._screenRect),this._visibility.begin(this._camera,i)}end(){this._visibility.end()}updateTile(e){e.measures.visibility=this._visibility.calculate(e),e.measures.distance=a(e.extent,this._focusOnMap),e.measures.visibility!==d.INVISIBLE&&this._updateScreenMeasure(e)}_updateScreenMeasure(e){const t=T,i=1<<t,r=e.measures.screenRect;c(r);let s=0;const o=e.lij[0]+t,n=e.lij[1]<<t,a=e.lij[2]<<t,l=this._tileSizeWithBias(e),h=l*l;for(let c=0;c<i;c++)for(let t=0;t<i;t++)if(s+=this._computeScreenArea(e,o,n+c,a+t,r),s>h)return void(e.measures.shouldSplit=!0);e.measures.shouldSplit=!1}_tileSizeWithBias(e){return e.measures.visibility===d.VISIBLE_WHEN_EXTENDED?this._tileSize*y:this._tileSize}_computeScreenArea(e,t,i,r,s){const o=e.measures.visibility===d.VISIBLE_WHEN_EXTENDED;this._projectToScreen(t,i,r,o,E),c(g);for(let n=0;n<4;n++)l(g,E[n]);return h(s,g,s),p(E[0],E[1],E[2])+p(E[0],E[2],E[3])}_projectToScreen(e,t,i,r,s){this._tilingScheme.ensureMaxLod(e),this._tilingScheme.getExtent(e,t,i,b),this._toRenderCoords(b,0,3,R[0]),this._toRenderCoords(b,2,3,R[1]),this._toRenderCoords(b,2,1,R[2]),this._toRenderCoords(b,0,1,R[3]),r&&(this._projectToPlane(R,this._camera.frustum[m.NEAR]),this._projectToPlane(R,this._camera.frustum[m.TOP]),this._projectToPlane(R,this._camera.frustum[m.BOTTOM]));for(let o=0;o<4;o++)this._camera.projectToRenderScreen(R[o],M),this._camera.renderToScreen(M,s[o])}_projectToPlane(e,t){for(let i=0;i<4;i++)C[i]=_(t,e[i]);const s=Math.max(C[0],C[1],C[2],C[3]);if(s>0){const o=i(v,u(t),-s);for(let t=0;t<4;t++)r(e[t],e[t],o)}}_toRenderCoords(e,t,i,r){return v[0]=e[t],v[1]=e[i],v[2]=this._surfaceElevation,this._renderCoordsHelper.toRenderCoords(v,this._tilingScheme.spatialReference,r),r}}const g=o(),T=2,y=5,E=[e(),e(),e(),e()],b=o(),v=s(),R=[s(),s(),s(),s()],C=[0,0,0,0],M=t();export{j as FeatureTileMeasurements3D};
5
+ import{createScreenPointArray as e,createRenderScreenPointArray3 as t}from"../../../../core/screenUtils.js";import{i,g as r}from"../../../../chunks/vec3.js";import{c as s}from"../../../../chunks/vec3f64.js";import{create as o,fromValues as n,distance as a,empty as c,expandPointInPlace as l,expand as h}from"../../../../geometry/support/aaBoundingRect.js";import{PlaneIndex as m}from"../../../../geometry/support/frustum.js";import{signedDistance as _,normal as u}from"../../../../geometry/support/plane.js";import{areaPoints2d as p}from"../../../../geometry/support/triangle.js";import{Visibility as d}from"./FeatureTileDescriptor3D.js";import{FeatureTileVisibility3D as f}from"./FeatureTileVisibility3D.js";import{Camera as S}from"../../webgl-engine/lib/Camera.js";class j{constructor(e){this._camera=new S,this._focusOnMap=[0,0],this._screenRect=o(),this._tileSize=e.tileSize,this._renderCoordsHelper=e.renderCoordsHelper,this._tilingScheme=e.tilingScheme,this._visibility=new f(e.renderCoordsHelper)}begin(e,t,i){this._camera.copyFrom(e),this._surfaceElevation=i,this._focusOnMap[0]=t.x,this._focusOnMap[1]=t.y,n(0,0,e.fullWidth,e.fullHeight,this._screenRect),this._visibility.begin(this._camera,i)}end(){this._visibility.end()}updateTile(e){e.measures.visibility=this._visibility.calculate(e),e.measures.distance=a(e.extent,this._focusOnMap),e.measures.visibility!==d.INVISIBLE&&this._updateScreenMeasure(e)}_updateScreenMeasure(e){const t=T,i=1<<t,r=e.measures.screenRect;c(r);let s=0;const o=e.lij[0]+t,n=e.lij[1]<<t,a=e.lij[2]<<t,l=this._tileSizeWithBias(e),h=l*l;for(let c=0;c<i;c++)for(let t=0;t<i;t++)if(s+=this._computeScreenArea(e,o,n+c,a+t,r),s>h)return void(e.measures.shouldSplit=!0);e.measures.shouldSplit=!1}_tileSizeWithBias(e){return e.measures.visibility===d.VISIBLE_WHEN_EXTENDED?this._tileSize*y:this._tileSize}_computeScreenArea(e,t,i,r,s){const o=e.measures.visibility===d.VISIBLE_WHEN_EXTENDED;this._projectToScreen(t,i,r,o,E),c(g);for(let n=0;n<4;n++)l(g,E[n]);return h(s,g,s),p(E[0],E[1],E[2])+p(E[0],E[2],E[3])}_projectToScreen(e,t,i,r,s){this._tilingScheme.ensureMaxLod(e),this._tilingScheme.getExtent(e,t,i,b),this._toRenderCoords(b,0,3,R[0]),this._toRenderCoords(b,2,3,R[1]),this._toRenderCoords(b,2,1,R[2]),this._toRenderCoords(b,0,1,R[3]),r&&(this._projectToPlane(R,this._camera.frustum[m.NEAR]),this._projectToPlane(R,this._camera.frustum[m.TOP]),this._projectToPlane(R,this._camera.frustum[m.BOTTOM]));for(let o=0;o<4;o++)this._camera.projectToRenderScreen(R[o],M),this._camera.renderToScreen(M,s[o])}_projectToPlane(e,t){for(let i=0;i<4;i++)C[i]=_(t,e[i]);const s=Math.max(C[0],C[1],C[2],C[3]);if(s>0){const o=i(v,u(t),-s);for(let t=0;t<4;t++)r(e[t],e[t],o)}}_toRenderCoords(e,t,i,r){return v[0]=e[t],v[1]=e[i],v[2]=this._surfaceElevation,this._renderCoordsHelper.toRenderCoords(v,this._tilingScheme.spatialReference,r),r}}const g=o(),T=2,y=5,E=[e(),e(),e(),e()],b=o(),v=s(),R=[s(),s(),s(),s()],C=[0,0,0,0],M=t();export{j as FeatureTileMeasurements3D};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{acosClamped as e}from"../../../../core/mathUtils.js";import t from"../../../../core/ObjectPool.js";import{g as i,b as s,e as r,o as n,d as o}from"../../../../chunks/vec3.js";import{c as a}from"../../../../chunks/vec3f64.js";import{getReferenceEllipsoid as u}from"../../../../geometry/ellipsoidUtils.js";import{PointIndex as l,PlaneIndex as d}from"../../../../geometry/support/frustum.js";import{create as _,projectVector as c,fromPoints as h,normal as m}from"../../../../geometry/support/plane.js";import{wrap as T}from"../../../../geometry/support/ray.js";import{ViewingMode as p}from"../../../ViewingMode.js";import{FeatureTileDescriptor3D as E,Visibility as I}from"./FeatureTileDescriptor3D.js";import{Frustum as F}from"../../state/Frustum.js";import{FrustumExtentIntersection as f}from"../../support/FrustumExtentIntersection.js";class A{constructor(e){this._renderCoordsHelper=e,this._surfaceElevation=0,this._cache=new Map,this._frustum=new F(e),this._extendedFrustum=new F(e),this._intersector=new f({renderCoordsHelper:e}),this._renderCoordsHelper=e}begin(e,t){this._surfaceElevation=t,this._aboveGround=this._renderCoordsHelper.getAltitude(e.eye)>t,this._frustum.update(e),this._shortenFrustumFarPlane(this._frustum),this._updateExtendedFrustum(e)}end(){this._cache.clear()}calculate(e){if(this._allTilesInvisible)return I.INVISIBLE;const t=this._renderCoordsHelper.viewingMode===p.Global&&e.lij[0]>=R&&e.lij[0]<O,i=this._getOrCalculateSingleTileVisibility(e,!t);return i!==I.INVISIBLE&&t?this._calculateAggregatedChildrenVisibility(e):i}_shortenFrustumFarPlane(e){const t=F.nearFarLineIndices,n=e.mutablePoints;for(const o of t){const[e,t]=o,a=n[e],u=n[t];i(S,u,a),s(S,S,b),r(n[t],a,S)}e.updatePoints(n)}_calculateAggregatedChildrenVisibility(e){let t=I.INVISIBLE;const i=this._cache.get(e.id);if(null!=i)return i;const s=H.acquire();e.getChildren(s);for(const r of s){const e=this.calculate(r);if(e!==I.INVISIBLE&&(t=e,e===I.VISIBLE_ON_SURFACE))break}return H.release(s),this._cache.set(e.id,t),t}_getOrCalculateSingleTileVisibility(e,t){const i=this._cache.get(e.id);if(null!=i)return i;const s=this._calculateSingleTileVisibility(e);return t&&this._cache.set(e.id,s),s}_calculateSingleTileVisibility(e){if(!this._aboveGround&&this._renderCoordsHelper.viewingMode===p.Global&&e.lij[0]<g){return this._calculateSingleTileVisibilitySided(e,!1)===I.INVISIBLE?this._calculateSingleTileVisibilitySided(e,!0):void 0}return this._calculateSingleTileVisibilitySided(e,this._aboveGround)}_calculateSingleTileVisibilitySided(e,t){this._intersector.update(e.extent,e.tilingScheme.spatialReference,this._surfaceElevation,t);const i=u(e.tilingScheme.spatialReference).radius;return this._intersector.isVisibleInFrustum(this._extendedFrustum,i)?this._intersector.isVisibleInFrustum(this._frustum,i,!0)?I.VISIBLE_ON_SURFACE:I.VISIBLE_WHEN_EXTENDED:I.INVISIBLE}_updateExtendedFrustum(t){this._extendedFrustum.update(t),this._shortenFrustumFarPlane(this._extendedFrustum);const i=this._renderCoordsHelper.worldUpAtPosition(t.eye,S);this._aboveGround||n(i,i);const r=e(-o(i,t.viewForward));if(this._allTilesInvisible=r>(Math.PI+t.fovY)/2,this._allTilesInvisible)return;if(this._hasExtendedFrustum=r>t.fovY/2,!this._hasExtendedFrustum)return;const a=this._extendedFrustumParameters(),u=this._extendedFrustum.mutablePoints;for(let e=0;e<4;e++){const t=a.pointIndices[e],i=u[t],r=this._renderCoordsHelper.getAltitude(i);if(a.needsAltitudeAdjustment(r)){switch(this._renderCoordsHelper.worldUpAtPosition(i,S),t){case l.FAR_BOTTOM_LEFT:case l.FAR_TOP_LEFT:case l.NEAR_BOTTOM_LEFT:case l.NEAR_TOP_LEFT:c(this._extendedFrustum.planes[d.LEFT],S,S);break;case l.FAR_BOTTOM_RIGHT:case l.FAR_TOP_RIGHT:case l.NEAR_BOTTOM_RIGHT:case l.NEAR_TOP_RIGHT:c(this._extendedFrustum.planes[d.RIGHT],S,S)}s(S,S,a.direction),this._renderCoordsHelper.intersectInfiniteManifold(T(i,S),a.zWithMargin,i)}}if(this._extendedFrustum.updatePoints(u),h(u[l.NEAR_BOTTOM_LEFT],u[l.NEAR_BOTTOM_RIGHT],u[l.NEAR_TOP_RIGHT],N),h(u[l.NEAR_BOTTOM_RIGHT],u[l.NEAR_TOP_RIGHT],u[l.NEAR_TOP_LEFT],v),o(m(N),m(v))<0){const e=this._extendedFrustum.mutablePoints;this._aboveGround?[e[l.NEAR_BOTTOM_LEFT],e[l.NEAR_BOTTOM_RIGHT]]=[e[l.NEAR_BOTTOM_RIGHT],e[l.NEAR_BOTTOM_LEFT]]:[e[l.NEAR_TOP_LEFT],e[l.NEAR_TOP_RIGHT]]=[e[l.NEAR_TOP_RIGHT],e[l.NEAR_TOP_LEFT]],this._extendedFrustum.updatePoints(e)}}_extendedFrustumParameters(){return this._aboveGround?this._extendedFrustumParametersAboveSurface():this._extendedFrustumParametersBelowSurface()}_extendedFrustumParametersAboveSurface(){const e=this._surfaceElevation-P;return{zWithMargin:e,pointIndices:F.planePointIndices.bottom,direction:-1,needsAltitudeAdjustment:t=>t>e}}_extendedFrustumParametersBelowSurface(){const e=this._surfaceElevation+P;return{zWithMargin:e,pointIndices:F.planePointIndices.top,direction:1,needsAltitudeAdjustment:t=>t<e}}}const R=2,O=6,g=12,b=.95,P=1,S=a(),N=_(),v=_(),H=new t(Array,(e=>{4!==e.length&&(e[0]=new E,e[1]=new E,e[2]=new E,e[3]=new E)}),(e=>{e[0].release(),e[1].release(),e[2].release(),e[3].release()}));export{A as FeatureTileVisibility3D};
5
+ import{acosClamped as e}from"../../../../core/mathUtils.js";import t from"../../../../core/ObjectPool.js";import{f as i,i as s,g as r,E as n,j as o}from"../../../../chunks/vec3.js";import{c as a}from"../../../../chunks/vec3f64.js";import{getReferenceEllipsoid as u}from"../../../../geometry/ellipsoidUtils.js";import{PointIndex as l,PlaneIndex as d}from"../../../../geometry/support/frustum.js";import{create as _,projectVector as c,fromPoints as h,normal as m}from"../../../../geometry/support/plane.js";import{wrap as T}from"../../../../geometry/support/ray.js";import{ViewingMode as p}from"../../../ViewingMode.js";import{FeatureTileDescriptor3D as E,Visibility as I}from"./FeatureTileDescriptor3D.js";import{Frustum as F}from"../../state/Frustum.js";import{FrustumExtentIntersection as f}from"../../support/FrustumExtentIntersection.js";class A{constructor(e){this._renderCoordsHelper=e,this._surfaceElevation=0,this._cache=new Map,this._frustum=new F(e),this._extendedFrustum=new F(e),this._intersector=new f({renderCoordsHelper:e}),this._renderCoordsHelper=e}begin(e,t){this._surfaceElevation=t,this._aboveGround=this._renderCoordsHelper.getAltitude(e.eye)>t,this._frustum.update(e),this._shortenFrustumFarPlane(this._frustum),this._updateExtendedFrustum(e)}end(){this._cache.clear()}calculate(e){if(this._allTilesInvisible)return I.INVISIBLE;const t=this._renderCoordsHelper.viewingMode===p.Global&&e.lij[0]>=R&&e.lij[0]<O,i=this._getOrCalculateSingleTileVisibility(e,!t);return i!==I.INVISIBLE&&t?this._calculateAggregatedChildrenVisibility(e):i}_shortenFrustumFarPlane(e){const t=F.nearFarLineIndices,n=e.mutablePoints;for(const o of t){const[e,t]=o,a=n[e],u=n[t];i(S,u,a),s(S,S,b),r(n[t],a,S)}e.updatePoints(n)}_calculateAggregatedChildrenVisibility(e){let t=I.INVISIBLE;const i=this._cache.get(e.id);if(null!=i)return i;const s=H.acquire();e.getChildren(s);for(const r of s){const e=this.calculate(r);if(e!==I.INVISIBLE&&(t=e,e===I.VISIBLE_ON_SURFACE))break}return H.release(s),this._cache.set(e.id,t),t}_getOrCalculateSingleTileVisibility(e,t){const i=this._cache.get(e.id);if(null!=i)return i;const s=this._calculateSingleTileVisibility(e);return t&&this._cache.set(e.id,s),s}_calculateSingleTileVisibility(e){if(!this._aboveGround&&this._renderCoordsHelper.viewingMode===p.Global&&e.lij[0]<g){return this._calculateSingleTileVisibilitySided(e,!1)===I.INVISIBLE?this._calculateSingleTileVisibilitySided(e,!0):void 0}return this._calculateSingleTileVisibilitySided(e,this._aboveGround)}_calculateSingleTileVisibilitySided(e,t){this._intersector.update(e.extent,e.tilingScheme.spatialReference,this._surfaceElevation,t);const i=u(e.tilingScheme.spatialReference).radius;return this._intersector.isVisibleInFrustum(this._extendedFrustum,i)?this._intersector.isVisibleInFrustum(this._frustum,i,!0)?I.VISIBLE_ON_SURFACE:I.VISIBLE_WHEN_EXTENDED:I.INVISIBLE}_updateExtendedFrustum(t){this._extendedFrustum.update(t),this._shortenFrustumFarPlane(this._extendedFrustum);const i=this._renderCoordsHelper.worldUpAtPosition(t.eye,S);this._aboveGround||n(i,i);const r=e(-o(i,t.viewForward));if(this._allTilesInvisible=r>(Math.PI+t.fovY)/2,this._allTilesInvisible)return;if(this._hasExtendedFrustum=r>t.fovY/2,!this._hasExtendedFrustum)return;const a=this._extendedFrustumParameters(),u=this._extendedFrustum.mutablePoints;for(let e=0;e<4;e++){const t=a.pointIndices[e],i=u[t],r=this._renderCoordsHelper.getAltitude(i);if(a.needsAltitudeAdjustment(r)){switch(this._renderCoordsHelper.worldUpAtPosition(i,S),t){case l.FAR_BOTTOM_LEFT:case l.FAR_TOP_LEFT:case l.NEAR_BOTTOM_LEFT:case l.NEAR_TOP_LEFT:c(this._extendedFrustum.planes[d.LEFT],S,S);break;case l.FAR_BOTTOM_RIGHT:case l.FAR_TOP_RIGHT:case l.NEAR_BOTTOM_RIGHT:case l.NEAR_TOP_RIGHT:c(this._extendedFrustum.planes[d.RIGHT],S,S)}s(S,S,a.direction),this._renderCoordsHelper.intersectInfiniteManifold(T(i,S),a.zWithMargin,i)}}if(this._extendedFrustum.updatePoints(u),h(u[l.NEAR_BOTTOM_LEFT],u[l.NEAR_BOTTOM_RIGHT],u[l.NEAR_TOP_RIGHT],N),h(u[l.NEAR_BOTTOM_RIGHT],u[l.NEAR_TOP_RIGHT],u[l.NEAR_TOP_LEFT],v),o(m(N),m(v))<0){const e=this._extendedFrustum.mutablePoints;this._aboveGround?[e[l.NEAR_BOTTOM_LEFT],e[l.NEAR_BOTTOM_RIGHT]]=[e[l.NEAR_BOTTOM_RIGHT],e[l.NEAR_BOTTOM_LEFT]]:[e[l.NEAR_TOP_LEFT],e[l.NEAR_TOP_RIGHT]]=[e[l.NEAR_TOP_RIGHT],e[l.NEAR_TOP_LEFT]],this._extendedFrustum.updatePoints(e)}}_extendedFrustumParameters(){return this._aboveGround?this._extendedFrustumParametersAboveSurface():this._extendedFrustumParametersBelowSurface()}_extendedFrustumParametersAboveSurface(){const e=this._surfaceElevation-P;return{zWithMargin:e,pointIndices:F.planePointIndices.bottom,direction:-1,needsAltitudeAdjustment:t=>t>e}}_extendedFrustumParametersBelowSurface(){const e=this._surfaceElevation+P;return{zWithMargin:e,pointIndices:F.planePointIndices.top,direction:1,needsAltitudeAdjustment:t=>t<e}}}const R=2,O=6,g=12,b=.95,P=1,S=a(),N=_(),v=_(),H=new t(Array,(e=>{4!==e.length&&(e[0]=new E,e[1]=new E,e[2]=new E,e[3]=new E)}),(e=>{e[0].release(),e[1].release(),e[2].release(),e[3].release()}));export{A as FeatureTileVisibility3D};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../../chunks/tslib.es6.js";import"../../../../geometry.js";import{isSome as r}from"../../../../core/arrayUtils.js";import{property as s}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/has.js";import{subclass as o}from"../../../../core/accessorSupport/decorators/subclass.js";import{F as t}from"../../../../chunks/mat4.js";import{c as i}from"../../../../chunks/mat4f64.js";import{i as p,m as l}from"../../../../chunks/vec3.js";import{c}from"../../../../chunks/vec3f64.js";import{projectBuffer as u}from"../../../../geometry/projection/projectBuffer.js";import{TileTreeDebugger as n}from"../../../support/TileTreeDebugger.js";import a from"../../../../geometry/Polygon.js";let m=class extends n{constructor(e){super(e)}getTiles(){const e=this.lv.getVisibleNodes(),s=this.view.renderSpatialReference,o=this.nodeSR;return e.map((e=>h(e,s,o))).filter(r).sort(((e,r)=>e.lij[0]===r.lij[0]?e.label>r.label?-1:1:e.lij[0]-r.lij[0]))}};function h(e,r,s){const o=e.serviceObb;if(null==o||null==r)return null;t(f,o.quaternion),p(j,o.center),u(j,s,0,j,r,0,1),f[12]=j[0],f[13]=j[1],f[14]=j[2];const i=[[],[],[]];p(j,o.halfSize),l(j,j,f),u(j,r,0,j,s,0,1),i[0].push([j[0],j[1]]),p(j,o.halfSize),j[0]=-j[0],l(j,j,f),u(j,r,0,j,s,0,1),i[0].push([j[0],j[1]]),p(j,o.halfSize),j[0]=-j[0],j[1]=-j[1],l(j,j,f),u(j,r,0,j,s,0,1),i[0].push([j[0],j[1]]),p(j,o.halfSize),j[1]=-j[1],l(j,j,f),u(j,r,0,j,s,0,1),i[0].push([j[0],j[1]]),i[1].push(i[0][0]),i[1].push(i[0][1]),p(j,o.halfSize),j[0]=-j[0],j[2]=-j[2],l(j,j,f),u(j,r,0,j,s,0,1),i[1].push([j[0],j[1]]),p(j,o.halfSize),j[2]=-j[2],l(j,j,f),u(j,r,0,j,s,0,1),i[1].push([j[0],j[1]]),i[2].push(i[0][0]),i[2].push(i[0][3]),p(j,o.halfSize),j[1]=-j[1],j[2]=-j[2],l(j,j,f),u(j,r,0,j,s,0,1),i[2].push([j[0],j[1]]),i[2].push(i[1][3]);const c=new a({rings:i,spatialReference:s});return{lij:[e.level,e.childCount,0],label:e.id,geometry:c}}e([s({constructOnly:!0})],m.prototype,"lv",void 0),e([s({constructOnly:!0})],m.prototype,"nodeSR",void 0),m=e([o("esri.views.3d.layers.support.I3STreeDebugger")],m);const f=i(),j=c();export{m as I3STreeDebugger};
5
+ import{_ as e}from"../../../../chunks/tslib.es6.js";import"../../../../geometry.js";import{isSome as r}from"../../../../core/arrayUtils.js";import{property as s}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/has.js";import{subclass as o}from"../../../../core/accessorSupport/decorators/subclass.js";import{F as t}from"../../../../chunks/mat4.js";import{a as i}from"../../../../chunks/mat4f64.js";import{c as p,e as l}from"../../../../chunks/vec3.js";import{c}from"../../../../chunks/vec3f64.js";import{projectBuffer as u}from"../../../../geometry/projection/projectBuffer.js";import{TileTreeDebugger as n}from"../../../support/TileTreeDebugger.js";import a from"../../../../geometry/Polygon.js";let m=class extends n{constructor(e){super(e)}getTiles(){const e=this.lv.getVisibleNodes(),s=this.view.renderSpatialReference,o=this.nodeSR;return e.map((e=>h(e,s,o))).filter(r).sort(((e,r)=>e.lij[0]===r.lij[0]?e.label>r.label?-1:1:e.lij[0]-r.lij[0]))}};function h(e,r,s){const o=e.serviceObb;if(null==o||null==r)return null;t(f,o.quaternion),p(j,o.center),u(j,s,0,j,r,0,1),f[12]=j[0],f[13]=j[1],f[14]=j[2];const i=[[],[],[]];p(j,o.halfSize),l(j,j,f),u(j,r,0,j,s,0,1),i[0].push([j[0],j[1]]),p(j,o.halfSize),j[0]=-j[0],l(j,j,f),u(j,r,0,j,s,0,1),i[0].push([j[0],j[1]]),p(j,o.halfSize),j[0]=-j[0],j[1]=-j[1],l(j,j,f),u(j,r,0,j,s,0,1),i[0].push([j[0],j[1]]),p(j,o.halfSize),j[1]=-j[1],l(j,j,f),u(j,r,0,j,s,0,1),i[0].push([j[0],j[1]]),i[1].push(i[0][0]),i[1].push(i[0][1]),p(j,o.halfSize),j[0]=-j[0],j[2]=-j[2],l(j,j,f),u(j,r,0,j,s,0,1),i[1].push([j[0],j[1]]),p(j,o.halfSize),j[2]=-j[2],l(j,j,f),u(j,r,0,j,s,0,1),i[1].push([j[0],j[1]]),i[2].push(i[0][0]),i[2].push(i[0][3]),p(j,o.halfSize),j[1]=-j[1],j[2]=-j[2],l(j,j,f),u(j,r,0,j,s,0,1),i[2].push([j[0],j[1]]),i[2].push(i[1][3]);const c=new a({rings:i,spatialReference:s});return{lij:[e.level,e.childCount,0],label:e.id,geometry:c}}e([s({constructOnly:!0})],m.prototype,"lv",void 0),e([s({constructOnly:!0})],m.prototype,"nodeSR",void 0),m=e([o("esri.views.3d.layers.support.I3STreeDebugger")],m);const f=i(),j=c();export{m as I3STreeDebugger};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Accessor.js";import o from"../../../../core/Evented.js";import r from"../../../../core/Logger.js";import{getMetersPerVerticalUnitForSR as s}from"../../../../core/unitUtils.js";import{property as n}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as i}from"../../../../core/accessorSupport/decorators/subclass.js";import{i as a}from"../../../../chunks/vec3.js";import{c as l}from"../../../../chunks/vec3f64.js";import{empty as c,toRect as d,expandWithVec3 as p}from"../../../../geometry/support/aaBoundingBox.js";import{empty as m}from"../../../../geometry/support/aaBoundingRect.js";import{getMetersPerUnit as h}from"../../../../symbols/support/unitConversionUtils.js";import{newIntersector as u}from"../../webgl-engine/lib/Intersector.js";import{StoreResults as f}from"../../webgl-engine/lib/IntersectorInterfaces.js";const _=1;let y=class extends(o.EventedMixin(t)){get spatialReference(){return this.view?.spatialReference}constructor(e){super(e),this._elevationOffset=0,this._layerHandlesKey="layerHandles"}initialize(){this._renderCoordsHelper=this.view.renderCoordsHelper,this._intersectLayers=[this.stageLayer],this._intersector=u(this.view.state.viewingMode),this._intersector.options.store=f.MIN;const e=this._computeLayerExtent(this.spatialReference,this.stageLayer);this._zmin=e[2],this._zmax=e[5];const t=this.stageLayer.events;this.addHandles([t.on("layerObjectAdded",(e=>this._objectChanged(e.object))),t.on("layerObjectRemoved",(e=>this._objectChanged(e.object))),t.on("objectGeometryAdded",(e=>this._objectChanged(e.object))),t.on("objectGeometryRemoved",(e=>this._objectChanged(e.object))),t.on("objectGeometryUpdated",(e=>this._objectChanged(e.object))),t.on("objectTransformation",(e=>this._objectChanged(e)))],this._layerHandlesKey)}dispose(){this.removeHandles(this._layerHandlesKey)}elevationInfoChanged(){const e=null!=this.layer?this.layer.elevationInfo:null;if(null!=e&&"on-the-ground"!==e.mode){const t=s(this.layer.spatialReference),o=h(e.unit??"meters");this._elevationOffset=(e.offset??0)*o/t}else this._elevationOffset=0}getElevation(e,t,o,s){if(b[0]=e,b[1]=t,b[2]=o,!this._renderCoordsHelper.toRenderCoords(b,s,b))return r.getLogger(this).error("could not project point for elevation alignment"),null;const n=this._elevationOffset,i=this._zmin+n,a=this._zmax+n;this._renderCoordsHelper.setAltitude(x,a,b),this._renderCoordsHelper.setAltitude(C,i,b);const l=e=>!!e.lastValidElevationBB;return this._intersector.reset(x,C,null),this._intersector.intersect(this._intersectLayers,null,_,null,l),this._intersector.results.min.getIntersectionPoint(b)?this._renderCoordsHelper.getAltitude(b):null}_objectChanged(e){const t=this.spatialReference;if(!e.lastValidElevationBB||!t)return;c(g);const o=e.lastValidElevationBB;o.isEmpty()||this._expandExtent(t,o.min,o.max,g);const{min:r,max:s}=e.boundingVolumeWorldSpace;this._expandExtent(t,r,s,g),d(g,j),this._zmin=Math.min(this._zmin,g[2]),this._zmax=Math.max(this._zmax,g[5]),v.extent=j,v.spatialReference=t,this.emit("elevation-change",v),a(o.min,r),a(o.max,s)}_computeLayerExtent(e,t){return c(g),null!=e&&t.objects.forAll((t=>this._expandExtent(e,t.boundingVolumeWorldSpace.min,t.boundingVolumeWorldSpace.max,g))),g}_expandExtent(e,t,o,r){for(let s=0;s<8;++s)b[0]=1&s?t[0]:o[0],b[1]=2&s?t[1]:o[1],b[2]=4&s?t[2]:o[2],this._renderCoordsHelper.fromRenderCoords(b,b,e),p(r,b);return r}};e([n({constructOnly:!0})],y.prototype,"layer",void 0),e([n({constructOnly:!0})],y.prototype,"stageLayer",void 0),e([n({constructOnly:!0})],y.prototype,"view",void 0),e([n()],y.prototype,"spatialReference",null),y=e([i("esri.views.3d.layers.support.StageLayerElevationProvider")],y);const g=c(),j=m(),v={spatialReference:null,extent:j,context:"scene"},b=l(),x=l(),C=l();export{y as StageLayerElevationProvider};
5
+ import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Accessor.js";import o from"../../../../core/Evented.js";import r from"../../../../core/Logger.js";import{getMetersPerVerticalUnitForSR as s}from"../../../../core/unitUtils.js";import{property as n}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as i}from"../../../../core/accessorSupport/decorators/subclass.js";import{c as a}from"../../../../chunks/vec3.js";import{c as l}from"../../../../chunks/vec3f64.js";import{empty as c,toRect as d,expandWithVec3 as p}from"../../../../geometry/support/aaBoundingBox.js";import{empty as m}from"../../../../geometry/support/aaBoundingRect.js";import{getMetersPerUnit as h}from"../../../../symbols/support/unitConversionUtils.js";import{newIntersector as u}from"../../webgl-engine/lib/Intersector.js";import{StoreResults as f}from"../../webgl-engine/lib/IntersectorInterfaces.js";const _=1;let y=class extends(o.EventedMixin(t)){get spatialReference(){return this.view?.spatialReference}constructor(e){super(e),this._elevationOffset=0,this._layerHandlesKey="layerHandles"}initialize(){this._renderCoordsHelper=this.view.renderCoordsHelper,this._intersectLayers=[this.stageLayer],this._intersector=u(this.view.state.viewingMode),this._intersector.options.store=f.MIN;const e=this._computeLayerExtent(this.spatialReference,this.stageLayer);this._zmin=e[2],this._zmax=e[5];const t=this.stageLayer.events;this.addHandles([t.on("layerObjectAdded",(e=>this._objectChanged(e.object))),t.on("layerObjectRemoved",(e=>this._objectChanged(e.object))),t.on("objectGeometryAdded",(e=>this._objectChanged(e.object))),t.on("objectGeometryRemoved",(e=>this._objectChanged(e.object))),t.on("objectGeometryUpdated",(e=>this._objectChanged(e.object))),t.on("objectTransformation",(e=>this._objectChanged(e)))],this._layerHandlesKey)}dispose(){this.removeHandles(this._layerHandlesKey)}elevationInfoChanged(){const e=null!=this.layer?this.layer.elevationInfo:null;if(null!=e&&"on-the-ground"!==e.mode){const t=s(this.layer.spatialReference),o=h(e.unit??"meters");this._elevationOffset=(e.offset??0)*o/t}else this._elevationOffset=0}getElevation(e,t,o,s){if(b[0]=e,b[1]=t,b[2]=o,!this._renderCoordsHelper.toRenderCoords(b,s,b))return r.getLogger(this).error("could not project point for elevation alignment"),null;const n=this._elevationOffset,i=this._zmin+n,a=this._zmax+n;this._renderCoordsHelper.setAltitude(x,a,b),this._renderCoordsHelper.setAltitude(C,i,b);const l=e=>!!e.lastValidElevationBB;return this._intersector.reset(x,C,null),this._intersector.intersect(this._intersectLayers,null,_,null,l),this._intersector.results.min.getIntersectionPoint(b)?this._renderCoordsHelper.getAltitude(b):null}_objectChanged(e){const t=this.spatialReference;if(!e.lastValidElevationBB||!t)return;c(g);const o=e.lastValidElevationBB;o.isEmpty()||this._expandExtent(t,o.min,o.max,g);const{min:r,max:s}=e.boundingVolumeWorldSpace;this._expandExtent(t,r,s,g),d(g,j),this._zmin=Math.min(this._zmin,g[2]),this._zmax=Math.max(this._zmax,g[5]),v.extent=j,v.spatialReference=t,this.emit("elevation-change",v),a(o.min,r),a(o.max,s)}_computeLayerExtent(e,t){return c(g),null!=e&&t.objects.forAll((t=>this._expandExtent(e,t.boundingVolumeWorldSpace.min,t.boundingVolumeWorldSpace.max,g))),g}_expandExtent(e,t,o,r){for(let s=0;s<8;++s)b[0]=1&s?t[0]:o[0],b[1]=2&s?t[1]:o[1],b[2]=4&s?t[2]:o[2],this._renderCoordsHelper.fromRenderCoords(b,b,e),p(r,b);return r}};e([n({constructOnly:!0})],y.prototype,"layer",void 0),e([n({constructOnly:!0})],y.prototype,"stageLayer",void 0),e([n({constructOnly:!0})],y.prototype,"view",void 0),e([n()],y.prototype,"spatialReference",null),y=e([i("esri.views.3d.layers.support.StageLayerElevationProvider")],y);const g=c(),j=m(),v={spatialReference:null,extent:j,context:"scene"},b=l(),x=l(),C=l();export{y as StageLayerElevationProvider};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../../Color.js";import"../../../../core/has.js";import{pt2px as n}from"../../../../core/screenUtils.js";import{f as t,b as o}from"../../../../chunks/vec4f64.js";import{isExtrudeSymbol3DLayer as r,isFillSymbol3DLayer as s}from"./layerUtils.js";import{Transparency as i}from"../../webgl-engine/lib/edgeRendering/interfaces.js";function c(e){return e&&e.enabled&&(r(e)||s(e))&&null!=e.edges}function l(e){return e&&e.enabled&&e.edges||null}function u(e,n){return a(l(e),n)}function a(r,s){if(null==r)return null;const i=null!=r.color?o(e.toUnitRGBA(r.color)):t(0,0,0,0),c=n(r.size),l=n(r.extensionLength);switch(r.type){case"solid":return f({color:i,size:c,extensionLength:l,...s});case"sketch":return p({color:i,size:c,extensionLength:l,...s});default:return}}function f(e){return{...h,...e,type:"solid"}}function p(e){return{...g,...e,type:"sketch"}}const h={color:t(0,0,0,.2),size:1,extensionLength:0,opacity:1,objectTransparency:i.OPAQUE,hasSlicePlane:!1},g={color:t(0,0,0,.2),size:1,extensionLength:0,opacity:1,objectTransparency:i.OPAQUE,hasSlicePlane:!1};export{u as createMaterial,a as createMaterialFromEdges,f as createSolidEdgeMaterial,c as hasEdges};
5
+ import e from"../../../../Color.js";import"../../../../core/has.js";import{pt2px as n}from"../../../../core/screenUtils.js";import{a as t,f as o}from"../../../../chunks/vec4f64.js";import{isExtrudeSymbol3DLayer as r,isFillSymbol3DLayer as s}from"./layerUtils.js";import{Transparency as i}from"../../webgl-engine/lib/edgeRendering/interfaces.js";function c(e){return e&&e.enabled&&(r(e)||s(e))&&null!=e.edges}function l(e){return e&&e.enabled&&e.edges||null}function u(e,n){return a(l(e),n)}function a(r,s){if(null==r)return null;const i=null!=r.color?o(e.toUnitRGBA(r.color)):t(0,0,0,0),c=n(r.size),l=n(r.extensionLength);switch(r.type){case"solid":return f({color:i,size:c,extensionLength:l,...s});case"sketch":return p({color:i,size:c,extensionLength:l,...s});default:return}}function f(e){return{...h,...e,type:"solid"}}function p(e){return{...g,...e,type:"sketch"}}const h={color:t(0,0,0,.2),size:1,extensionLength:0,opacity:1,objectTransparency:i.OPAQUE,hasSlicePlane:!1},g={color:t(0,0,0,.2),size:1,extensionLength:0,opacity:1,objectTransparency:i.OPAQUE,hasSlicePlane:!1};export{u as createMaterial,a as createMaterialFromEdges,f as createSolidEdgeMaterial,c as hasEdges};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import"../../../../core/has.js";import{f as t}from"../../../../chunks/vec4f64.js";import{perVertexElevationAligner as e}from"../graphics/ElevationAligners.js";import{createMapSpaceUVCoords as r}from"./uvUtils.js";import{VertexAttribute as a}from"../../webgl-engine/lib/VertexAttribute.js";import{ColorMaterial as n}from"../../webgl-engine/materials/ColorMaterial.js";import{PatternMaterial as o}from"../../webgl-engine/materials/PatternMaterial.js";import{Style as i}from"../../webgl-engine/materials/PatternStyle.js";function s(e,r){const a=e?.pattern??null;return null==a?new n(r):"none"===a.style||"solid"===a.style?("none"===a.style&&(r.color=t(0,0,0,0),r.transparent=!0),new n(r)):(r.style=l(a.style),new o(r))}function l(t){switch(t){case"horizontal":return i.Horizontal;case"vertical":return i.Vertical;case"cross":return i.Cross;case"forward-diagonal":return i.ForwardDiagonal;case"backward-diagonal":return i.BackwardDiagonal;case"diagonal-cross":return i.DiagonalCross;default:return}}function c(t){return t.material instanceof o&&!t.material.parameters.draped}function u(t,e){if(c(t)){const n=t.vertexAttributes.get(a.POSITION).data,o=t.getMutableAttribute(a.UVMAPSPACE).data,i=t.getMutableAttribute(a.BOUNDINGRECT).data;r(o,i,n,e)}}function m(t,r,a,n,o){const i=e(t,r,a,n,o),s=t.stageObject.geometries;for(const e of s)u(e,o);return i}export{s as createMaterial,l as parsePatternStyle,c as requiresUVUpdates,u as updateMapSpaceUVCoords,m as uvElevationAligner};
5
+ import"../../../../core/has.js";import{a as t}from"../../../../chunks/vec4f64.js";import{perVertexElevationAligner as e}from"../graphics/ElevationAligners.js";import{createMapSpaceUVCoords as r}from"./uvUtils.js";import{VertexAttribute as a}from"../../webgl-engine/lib/VertexAttribute.js";import{ColorMaterial as n}from"../../webgl-engine/materials/ColorMaterial.js";import{PatternMaterial as o}from"../../webgl-engine/materials/PatternMaterial.js";import{Style as i}from"../../webgl-engine/materials/PatternStyle.js";function s(e,r){const a=e?.pattern??null;return null==a?new n(r):"none"===a.style||"solid"===a.style?("none"===a.style&&(r.color=t(0,0,0,0),r.transparent=!0),new n(r)):(r.style=l(a.style),new o(r))}function l(t){switch(t){case"horizontal":return i.Horizontal;case"vertical":return i.Vertical;case"cross":return i.Cross;case"forward-diagonal":return i.ForwardDiagonal;case"backward-diagonal":return i.BackwardDiagonal;case"diagonal-cross":return i.DiagonalCross;default:return}}function c(t){return t.material instanceof o&&!t.material.parameters.draped}function u(t,e){if(c(t)){const n=t.vertexAttributes.get(a.POSITION).data,o=t.getMutableAttribute(a.UVMAPSPACE).data,i=t.getMutableAttribute(a.BOUNDINGRECT).data;r(o,i,n,e)}}function m(t,r,a,n,o){const i=e(t,r,a,n,o),s=t.stageObject.geometries;for(const e of s)u(e,o);return i}export{s as createMaterial,l as parsePatternStyle,c as requiresUVUpdates,u as updateMapSpaceUVCoords,m as uvElevationAligner};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{c as t}from"../../../../chunks/mat4f64.js";import{s as o}from"../../../../chunks/vec2.js";import{a as s}from"../../../../chunks/vec2f64.js";import{s as r,d as n,g as e,b as m,e as a,i as c,q as i,n as I,c as f}from"../../../../chunks/vec3.js";import{c as l}from"../../../../chunks/vec3f64.js";import{getReferenceEllipsoid as h}from"../../../../geometry/ellipsoidUtils.js";import{lonLatToWebMercatorComparable as p}from"../../../../geometry/projection/projectors.js";import{newDoubleArray as u}from"../../../../geometry/support/DoubleArray.js";import{create as N,fromArray as g,normal as b}from"../../../../geometry/support/plane.js";import{ViewingMode as j}from"../../../ViewingMode.js";function T(t,s,r,n,e=1){if(r.isGeographic&&n===j.Global){const t=u(s.length),o=s.length,n=h(r);for(let r=0;r<o;r+=3)p(s,r,t,r,n);s=t}o(y,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY);for(let o=0;o<s.length;o+=3)y[0]=Math.min(y[0],s[o]),y[1]=Math.min(y[1],s[o+1]);const m=y[0]%e,a=y[1]%e,c=y[0]-m,i=y[1]-a;for(let o=0;o<s.length;o+=3){const r=o/3*4;t[r]=(s[o]-c)/e,t[r+1]=(s[o+1]-i)/e,t[r+2]=c/e,t[r+3]=i/e}}function M(t,s,c,i,I=1){r(Y,1,0,0),r(_,0,1,0),r(k,0,0,1),w(E,c),g(F,c)&&G(F,Y,_,k,i,E),o(y,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),o(P,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY);for(let o=0;o<c.length;o+=3){r(V,c[o],c[o+1],c[o+2]);const t=n(Y,V),s=n(_,V);y[0]=Math.min(y[0],t),y[1]=Math.min(y[1],s),P[0]=Math.max(P[0],t),P[1]=Math.max(P[1],s)}const f=n(k,E);U(v,y[0],y[1],f,Y,_,k),U(x,P[0],y[1],f,Y,_,k),U(A,y[0],P[1],f,Y,_,k),e(x,x,v),m(x,x,.5),e(A,A,v),m(A,A,.5),a(v,v,x),a(v,v,A);const l=y[0]%I,h=y[1]%I,p=y[0]-l,u=y[1]-h;for(let o=0;o<c.length;o+=3){r(V,c[o],c[o+1],c[o+2]);const e=o/3,m=4*e;t[m]=(n(Y,V)-p)/I,t[m+1]=(n(_,V)-u)/I,t[m+2]=p/I,t[m+3]=u/I;const a=9*e;for(let t=0;t<3;t++)s[a+t]=v[t],s[a+t+3]=x[t],s[a+t+6]=A[t]}}const E=l(),V=l(),F=N(),Y=l(),_=l(),k=l(),y=s(),P=s(),v=l(),x=l(),A=l();function G(t,o,s,e,a,l){null!=a?(a.basisMatrixAtPosition(l,O),r(S,O[0],O[1],O[2]),r(d,O[4],O[5],O[6]),r(q,O[8],O[9],O[10])):(r(S,1,0,0),r(d,0,1,0),r(q,0,0,1));const h=b(t);n(h,q)<0&&m(h,h,-1),c(e,h);const p=n(h,d),u=n(h,S);Math.abs(p)>Math.abs(u)?(i(o,S,h,-u),I(o,o),f(s,o,h),I(s,s),m(s,s,-1)):(i(s,d,h,-p),I(s,s),f(o,s,h),I(o,o))}const O=t(),S=l(),d=l(),q=l();function w(t,o){r(D,0,0,0);for(let s=0;s<o.length-3;s+=3)D[0]+=o[s],D[1]+=o[s+1],D[2]+=o[s+2];m(t,D,1/(o.length/3-1))}const D=l();function U(t,o,s,n,e,m,a){r(t,o*e[0]+s*m[0]+n*a[0],o*e[1]+s*m[1]+n*a[1],o*e[2]+s*m[2]+n*a[2])}export{M as createMapSpaceUVCoords,T as createMapSpaceUVCoordsDraped};
5
+ import{a as t}from"../../../../chunks/mat4f64.js";import{s as o}from"../../../../chunks/vec2.js";import{a as s}from"../../../../chunks/vec2f64.js";import{s as r,j as n,f as e,i as m,g as a,c as i,y as c,n as I,b as f}from"../../../../chunks/vec3.js";import{c as l}from"../../../../chunks/vec3f64.js";import{getReferenceEllipsoid as h}from"../../../../geometry/ellipsoidUtils.js";import{lonLatToWebMercatorComparable as p}from"../../../../geometry/projection/projectors.js";import{newDoubleArray as u}from"../../../../geometry/support/DoubleArray.js";import{create as N,fromArray as g,normal as j}from"../../../../geometry/support/plane.js";import{ViewingMode as b}from"../../../ViewingMode.js";function T(t,s,r,n,e=1){if(r.isGeographic&&n===b.Global){const t=u(s.length),o=s.length,n=h(r);for(let r=0;r<o;r+=3)p(s,r,t,r,n);s=t}o(k,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY);for(let o=0;o<s.length;o+=3)k[0]=Math.min(k[0],s[o]),k[1]=Math.min(k[1],s[o+1]);const m=k[0]%e,a=k[1]%e,i=k[0]-m,c=k[1]-a;for(let o=0;o<s.length;o+=3){const r=o/3*4;t[r]=(s[o]-i)/e,t[r+1]=(s[o+1]-c)/e,t[r+2]=i/e,t[r+3]=c/e}}function M(t,s,i,c,I=1){r(F,1,0,0),r(Y,0,1,0),r(_,0,0,1),D(E,i),g(y,i)&&G(y,F,Y,_,c,E),o(k,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),o(P,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY);for(let o=0;o<i.length;o+=3){r(V,i[o],i[o+1],i[o+2]);const t=n(F,V),s=n(Y,V);k[0]=Math.min(k[0],t),k[1]=Math.min(k[1],s),P[0]=Math.max(P[0],t),P[1]=Math.max(P[1],s)}const f=n(_,E);q(v,k[0],k[1],f,F,Y,_),q(x,P[0],k[1],f,F,Y,_),q(A,k[0],P[1],f,F,Y,_),e(x,x,v),m(x,x,.5),e(A,A,v),m(A,A,.5),a(v,v,x),a(v,v,A);const l=k[0]%I,h=k[1]%I,p=k[0]-l,u=k[1]-h;for(let o=0;o<i.length;o+=3){r(V,i[o],i[o+1],i[o+2]);const e=o/3,m=4*e;t[m]=(n(F,V)-p)/I,t[m+1]=(n(Y,V)-u)/I,t[m+2]=p/I,t[m+3]=u/I;const a=9*e;for(let t=0;t<3;t++)s[a+t]=v[t],s[a+t+3]=x[t],s[a+t+6]=A[t]}}const E=l(),V=l(),y=N(),F=l(),Y=l(),_=l(),k=s(),P=s(),v=l(),x=l(),A=l();function G(t,o,s,e,a,l){null!=a?(a.basisMatrixAtPosition(l,O),r(S,O[0],O[1],O[2]),r(d,O[4],O[5],O[6]),r(w,O[8],O[9],O[10])):(r(S,1,0,0),r(d,0,1,0),r(w,0,0,1));const h=j(t);n(h,w)<0&&m(h,h,-1),i(e,h);const p=n(h,d),u=n(h,S);Math.abs(p)>Math.abs(u)?(c(o,S,h,-u),I(o,o),f(s,o,h),I(s,s),m(s,s,-1)):(c(s,d,h,-p),I(s,s),f(o,s,h),I(o,o))}const O=t(),S=l(),d=l(),w=l();function D(t,o){r(U,0,0,0);for(let s=0;s<o.length-3;s+=3)U[0]+=o[s],U[1]+=o[s+1],U[2]+=o[s+2];m(t,U,1/(o.length/3-1))}const U=l();function q(t,o,s,n,e,m,a){r(t,o*e[0]+s*m[0]+n*a[0],o*e[1]+s*m[1]+n*a[1],o*e[2]+s*m[2]+n*a[2])}export{M as createMapSpaceUVCoords,T as createMapSpaceUVCoordsDraped};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{i as t,x as i}from"../../../chunks/vec3.js";import{c as s}from"../../../chunks/vec3f64.js";import{PointIndex as e,create as r,createPoints as n,fromMatrix as o,computePlanes as u,intersectsSphere as h,intersectsRay as _,intersectsLineSegment as p,intersectsPoint as l,planePointIndices as d}from"../../../geometry/support/frustum.js";class c{get planes(){return this.frustum}get points(){return this._points}get mutablePoints(){return this._points}get direction(){return this._direction}constructor(t){this.renderCoordsHelper=t,this.frustum=r(),this._points=n(),this.lines=new Array(12),this._origin=s(),this._direction=s(),this._altitude=null;for(let i=0;i<12;i++)this.lines[i]={origin:null,direction:s(),endpoint:null}}update(i){o(i.viewMatrix,i.projectionMatrix,this.frustum,this._points),t(this._origin,i.eye),t(this._direction,i.viewForward),this._altitude=this.renderCoordsHelper.getAltitude(this._origin),this._updateLines()}updatePoints(i){for(let s=0;s<this._points.length;s++)t(this._points[s],i[s]);u(this.frustum,this._points),this._updateLines()}get altitude(){return this._altitude}intersectsSphere(t){return h(this.frustum,t)}intersectsRay(t){return _(this.frustum,t)}intersectsLineSegment(t,i){return p(this.frustum,t,i)}intersectsPoint(t){return l(this.frustum,t)}_updateLines(){const t=this._points;for(let i=0;i<4;i++){const s=i+4;a(this.lines[i],t[i],t[s]),a(this.lines[i+4],t[i],3===i?t[0]:t[i+1]),a(this.lines[i+8],t[s],3===i?t[4]:t[s+1])}}}function a(t,s,e){t.origin=s,t.endpoint=e,i(t.direction,s,e)}c.planePointIndices=d,c.nearFarLineIndices=[[e.NEAR_BOTTOM_LEFT,e.FAR_BOTTOM_LEFT],[e.NEAR_BOTTOM_RIGHT,e.FAR_BOTTOM_RIGHT],[e.NEAR_TOP_RIGHT,e.FAR_TOP_RIGHT],[e.NEAR_TOP_LEFT,e.FAR_TOP_LEFT]];export{c as Frustum};
5
+ import{c as t,C as i}from"../../../chunks/vec3.js";import{c as s}from"../../../chunks/vec3f64.js";import{PointIndex as e,create as r,createPoints as n,fromMatrix as o,computePlanes as u,intersectsSphere as h,intersectsRay as _,intersectsLineSegment as p,intersectsPoint as l,planePointIndices as c}from"../../../geometry/support/frustum.js";class d{get planes(){return this.frustum}get points(){return this._points}get mutablePoints(){return this._points}get direction(){return this._direction}constructor(t){this.renderCoordsHelper=t,this.frustum=r(),this._points=n(),this.lines=new Array(12),this._origin=s(),this._direction=s(),this._altitude=null;for(let i=0;i<12;i++)this.lines[i]={origin:null,direction:s(),endpoint:null}}update(i){o(i.viewMatrix,i.projectionMatrix,this.frustum,this._points),t(this._origin,i.eye),t(this._direction,i.viewForward),this._altitude=this.renderCoordsHelper.getAltitude(this._origin),this._updateLines()}updatePoints(i){for(let s=0;s<this._points.length;s++)t(this._points[s],i[s]);u(this.frustum,this._points),this._updateLines()}get altitude(){return this._altitude}intersectsSphere(t){return h(this.frustum,t)}intersectsRay(t){return _(this.frustum,t)}intersectsLineSegment(t,i){return p(this.frustum,t,i)}intersectsPoint(t){return l(this.frustum,t)}_updateLines(){const t=this._points;for(let i=0;i<4;i++){const s=i+4;a(this.lines[i],t[i],t[s]),a(this.lines[i+4],t[i],3===i?t[0]:t[i+1]),a(this.lines[i+8],t[s],3===i?t[4]:t[s+1])}}}function a(t,s,e){t.origin=s,t.endpoint=e,i(t.direction,s,e)}d.planePointIndices=c,d.nearFarLineIndices=[[e.NEAR_BOTTOM_LEFT,e.FAR_BOTTOM_LEFT],[e.NEAR_BOTTOM_RIGHT,e.FAR_BOTTOM_RIGHT],[e.NEAR_TOP_RIGHT,e.FAR_TOP_RIGHT],[e.NEAR_TOP_LEFT,e.FAR_TOP_LEFT]];export{d as Frustum};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{lerp as e,clamp as t}from"../../../core/mathUtils.js";import{getMetersPerUnitForSR as i}from"../../../core/unitUtils.js";import{g as r,n as s,d as n,l as a}from"../../../chunks/vec3.js";import{c as m}from"../../../chunks/vec3f64.js";import{getReferenceEllipsoid as o}from"../../../geometry/ellipsoidUtils.js";import h from"../../../geometry/Extent.js";import{ViewingMode as l}from"../../ViewingMode.js";import{computeInnerAltitudeFade as x}from"../environment/atmosphereUtils.js";function c(e,t,i){return e===l.Global?new M(i):new u(t,i)}class u{constructor(e,t){this._elevationProvider=e,this._referenceEllipsoid=o(t),this._unitInMeters=i(t,this._referenceEllipsoid.metersPerDegree)}compute(i,a,m,o,l){l||(l={near:0,far:0});let x=i[2]*this._unitInMeters;const c=x,u=x-o,M=this._elevationProvider?.visibleElevationBounds;M&&(x=u>=0?c-this._unitInMeters*M.min:this._unitInMeters*M.max-c);const _={x:(m=null!=m?m:new h({xmin:0,ymin:0,zmin:0,xmax:0,ymax:0,zmax:0})).xmax-m.xmin,y:m.ymax-m.ymin,z:4*Math.max(m.xmax-m.xmin,m.ymax-m.ymin)},I=Math.max(_.x,_.y,_.z);r(E,a,i),v[0]=E[0]>0?m.xmax:m.xmin,v[1]=E[1]>0?m.ymax:m.ymin,v[2]=E[2]>0?I/2:-I/2,r(v,v,i),s(E,E);const j=1.1*n(v,E)*this._unitInMeters,g=Math.sqrt(x*(x+2*this._referenceEllipsoid.radius)),b=Math.max(m.xmax-m.xmin,m.ymax-m.ymin),w=b*d*this._unitInMeters,z=b*y*this._unitInMeters,U=t((x-z)/(w-z),0,1)**3,P=Math.min(e(g,j,U),g)*Math.max(Math.log(Math.abs(u)),1);return f(Math.min(P,Math.max(34064e4,I))/this._unitInMeters,p,this._unitInMeters,l)}}class M{constructor(e){this._referenceEllipsoid=o(e)}compute(i,r,s,n,m){m||(m={near:0,far:0});const o=a(i),h=o-this._referenceEllipsoid.radius,l=this._referenceEllipsoid.radius+Math.min(0,n),c=Math.abs(h-n),u=Math.max(c,Math.abs(h)),M=Math.sqrt(u*(u+2*l)),p=o+this._referenceEllipsoid.radius;return f(1.2*e(M,p,x(u)),t(2e4-(Math.log(u)-7.983)/9.011*19e3,1e3,2e4),1,m)}}function f(e,t,i,r){const s=_/i;return e/t>s?(r.far=e,r.near=r.far/t):(r.near=s,r.far=r.near*t),r}const p=2e4,_=2,d=.001,y=1e-4,v=m(),E=m();export{c as createNearFarHeuristic};
5
+ import{lerp as e,clamp as t}from"../../../core/mathUtils.js";import{getMetersPerUnitForSR as i}from"../../../core/unitUtils.js";import{f as r,n as s,j as n,l as a}from"../../../chunks/vec3.js";import{c as m}from"../../../chunks/vec3f64.js";import{getReferenceEllipsoid as o}from"../../../geometry/ellipsoidUtils.js";import h from"../../../geometry/Extent.js";import{ViewingMode as l}from"../../ViewingMode.js";import{computeInnerAltitudeFade as x}from"../environment/atmosphereUtils.js";function c(e,t,i){return e===l.Global?new M(i):new u(t,i)}class u{constructor(e,t){this._elevationProvider=e,this._referenceEllipsoid=o(t),this._unitInMeters=i(t,this._referenceEllipsoid.metersPerDegree)}compute(i,a,m,o,l){l||(l={near:0,far:0});let x=i[2]*this._unitInMeters;const c=x,u=x-o,M=this._elevationProvider?.visibleElevationBounds;M&&(x=u>=0?c-this._unitInMeters*M.min:this._unitInMeters*M.max-c);const _={x:(m=null!=m?m:new h({xmin:0,ymin:0,zmin:0,xmax:0,ymax:0,zmax:0})).xmax-m.xmin,y:m.ymax-m.ymin,z:4*Math.max(m.xmax-m.xmin,m.ymax-m.ymin)},E=Math.max(_.x,_.y,_.z);r(v,a,i),j[0]=v[0]>0?m.xmax:m.xmin,j[1]=v[1]>0?m.ymax:m.ymin,j[2]=v[2]>0?E/2:-E/2,r(j,j,i),s(v,v);const I=1.1*n(j,v)*this._unitInMeters,g=Math.sqrt(x*(x+2*this._referenceEllipsoid.radius)),b=Math.max(m.xmax-m.xmin,m.ymax-m.ymin),w=b*d*this._unitInMeters,z=b*y*this._unitInMeters,U=t((x-z)/(w-z),0,1)**3,P=Math.min(e(g,I,U),g)*Math.max(Math.log(Math.abs(u)),1);return f(Math.min(P,Math.max(34064e4,E))/this._unitInMeters,p,this._unitInMeters,l)}}class M{constructor(e){this._referenceEllipsoid=o(e)}compute(i,r,s,n,m){m||(m={near:0,far:0});const o=a(i),h=o-this._referenceEllipsoid.radius,l=this._referenceEllipsoid.radius+Math.min(0,n),c=Math.abs(h-n),u=Math.max(c,Math.abs(h)),M=Math.sqrt(u*(u+2*l)),p=o+this._referenceEllipsoid.radius;return f(1.2*e(M,p,x(u)),t(2e4-(Math.log(u)-7.983)/9.011*19e3,1e3,2e4),1,m)}}function f(e,t,i,r){const s=_/i;return e/t>s?(r.far=e,r.near=r.far/t):(r.near=s,r.far=r.near*t),r}const p=2e4,_=2,d=.001,y=1e-4,j=m(),v=m();export{c as createNearFarHeuristic};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../Camera.js";import i from"../../../Viewpoint.js";import a from"../../../core/Accessor.js";import r from"../../../core/Logger.js";import{destroyMaybe as s}from"../../../core/maybe.js";import{watch as n,on as o,sync as h,when as l}from"../../../core/reactiveUtils.js";import{addFrameTask as p}from"../../../core/scheduling.js";import{createScreenPoint as c}from"../../../core/screenUtils.js";import{property as m}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import{subclass as d}from"../../../core/accessorSupport/decorators/subclass.js";import{a as v}from"../../../chunks/vec3.js";import{g as u}from"../../../chunks/vec3f64.js";import{s as w}from"../../../chunks/vec4.js";import{c as g}from"../../../chunks/vec4f64.js";import y from"../../../geometry/Extent.js";import _ from"../../../geometry/Point.js";import{canProject as C}from"../../../geometry/support/webMercatorUtils.js";import{ViewingMode as f}from"../../ViewingMode.js";import{applyAll as R}from"../camera/constraintUtils.js";import{cameraOnContentAlongViewDirection as x,surfaceElevationBelowRenderLocation as P}from"../camera/intersectionUtils.js";import{ConstraintsManager as S}from"./ConstraintsManager.js";import{Frustum as O}from"./Frustum.js";import{GoToOperation as T}from"./GoToOperation.js";import{SurfaceCollisionCorrectionController as b}from"./controllers/SurfaceCollisionCorrectionController.js";import{internalToExternal as I,externalToInternal as j,toExtent as z,distanceToScale as M,scaleToZoom as E,fromExtentSync as A,OrientationMode as H,getObserverForPointAtDistanceSync as N,scaleToDistance as V,zoomToScale as L}from"../support/cameraUtils.js";import{PropertiesPool as B}from"../support/PropertiesPool.js";import{fromCamera as D,toCameraSync as U}from"../support/viewpointUtils.js";import{Camera as k,PaddingSide as F}from"../webgl-engine/lib/Camera.js";import{RenderFeature as G}from"../webgl-engine/lib/RenderFeature.js";import{RenderState as q}from"../../support/RenderState.js";import{ensureAttachmentMaxSize as W}from"../../webgl/FramebufferObject.js";let J=class extends a{get camera(){const e=this._get("camera");if(!this.ready)return e;const t=I(this.view,this.view.state.camera,Z);return t&&e&&t.equals(e)?e:t.clone()}set camera(e){this._updatePropertyBeforeReady("camera",e)||(this.view.elevationProvider?.enableElevationCache(!0),this.setStateCamera(j(this.view,e),{applyConstraints:!1})||r.getLogger(this).error("#camera=","Invalid camera",e),this.view.elevationProvider?.enableElevationCache(!1))}get contentCamera(){const e=this._get("contentCamera");if(!this.ready)return e;const t=I(this.view,this.view.state.contentCamera,Z);return t&&e&&t.equals(e)?e:t.clone()}set contentCamera(e){if(this._updatePropertyBeforeReady("contentCamera",e))return;const t=j(this.view,e);null!=t?(this._updateElevation(t),this.view.state.contentCamera=t):this.view.state.contentCamera=null}installContentCameraReset(e){if(this.removeHandles(ie),this.test.contentCameraResetState.clear(),!this.view.state.fixedContentCamera)return!1;const t=this.zoom,i=this.view.state.camera.distance**2,a=u(this.view.state.camera.center),r=e.sticky?this.contentCamera.clone():null;return this.addHandles([n((()=>this.contentCamera),(()=>{e.sticky||(this.removeHandles(ie),this.test.contentCameraResetState.clear())})),n((()=>this.zoom),(e=>{void 0!==e&&void 0!==t&&(this.test.contentCameraResetState.set("view.zoom",Math.abs(e-t)/2),Math.abs(e-t)>2?this.contentCamera=null:this.view.state.fixedContentCamera||(this.contentCamera=r))})),n((()=>this.view.state.camera),(e=>{const t=v(a,e.center);this.test.contentCameraResetState.set("camera.center",t/i),t>i?this.contentCamera=null:this.view.state.fixedContentCamera||(this.contentCamera=r)}))],ie),!0}get center(){return this.ready?this.view.pointsOfInterest.centerOnContent.location:this._get("center")}set center(e){this._updatePropertyBeforeReady("center",e)||(e?this.isCompatible(e)?this.setStateCamera(this._centerToCamera(e),{applyConstraints:!0})?this.view.pointsOfInterest.centerOnContent.runTask():r.getLogger(this).error("#center=","Invalid center",e):r.getLogger(this).error("#center=","Center has an incompatible spatial reference (center: "+(e.spatialReference?e.spatialReference.wkid:"none")+", view: "+this.view.spatialReference?.wkid+")",e):r.getLogger(this).error("#center=","Center may not be null or undefined"))}get extent(){if(!this.ready)return this._get("extent");const e=this.view,t=z(e,e.state.camera,e.pointsOfInterest.centerOnContent.renderLocation);return null!=t?t:this._get("extent")}set extent(e){this._updatePropertyBeforeReady("extent",e)||(e?this.isCompatible(e)?this.setStateCamera(this._extentToCamera(e),{applyConstraints:!0})||r.getLogger(this).error("#extent=","Invalid extent",e):r.getLogger(this).error("#extent=","Extent has an incompatible spatial reference (extent: "+(e.spatialReference?e.spatialReference.wkid:"none")+", view: "+this.view.spatialReference?.wkid+")",e):r.getLogger(this).error("#extent=","Extent may not be null or undefined"))}get frustum(){const e=this._propertiesPool.get("frustum");return e.renderCoordsHelper=this.view.renderCoordsHelper,e.update(this.view.state.camera),e}get _initialViewpoint(){const e=this.view.map;return e&&"initialViewProperties"in e?e.initialViewProperties?.viewpoint:void 0}get hasInitialView(){return!!this._initialViewpoint}get scale(){if(this.ready){const e=this.view.pointsOfInterest.centerOnContent;return M(this.view,e.distance,e.location.latitude)}return this._get("scale")}set scale(e){this._updatePropertyBeforeReady("scale",e)||this.setStateCamera(this._scaleToCamera(e),{applyConstraints:!0})||r.getLogger(this).error("#scale=","Invalid scale",e)}get padding(){if(!this.ready)return this._get("padding");const e=this.view.state.camera,t=e.padding,i=e.pixelRatio,a=this._get("padding"),r=Math.round(t[F.TOP]/i),s=Math.round(t[F.RIGHT]/i),n=Math.round(t[F.BOTTOM]/i),o=Math.round(t[F.LEFT]/i);return null!=a&&a.top===r&&a.right===s&&a.bottom===n&&a.left===o?a:{top:r,right:s,bottom:n,left:o}}set padding(e){this._updatePropertyBeforeReady("padding",e)||(this._paddingToArray(e,this.view.state.camera.pixelRatio,ee),this.view.state.updateCamera((e=>e.padding=ee)))}_paddingToArray(e,t,i){e?w(i,e.top||0,e.right||0,e.bottom||0,e.left||0):w(i,0,0,0,0);for(let a=0;a<4;a++)i[a]=Math.round(i[a]*t)}get screenCenter(){const e=this.padding;return c((this.view.width-(e.left+e.right))/2+e.left,(this.view.height-(e.top+e.bottom))/2+e.top)}get viewpoint(){return this.ready?D(this.view,this.camera):this._get("viewpoint")}set viewpoint(e){if(!this._updatePropertyBeforeReady("viewpoint",e))if(e)if(this.isCompatible(e))this.setStateCamera(this._viewpointToCamera(e),{applyConstraints:!e.camera})||r.getLogger(this).error("#viewpoint=","Invalid viewpoint",e);else{const t=null!=e.camera?e.camera.position:e.targetGeometry,i=null!=t&&t.spatialReference;r.getLogger(this).error("#viewpoint=","Viewpoint has an incompatible spatial reference (viewpoint: "+(i?i.wkid:"none")+", view: "+this.view.spatialReference?.wkid+")",e)}else r.getLogger(this).error("#viewpoint=","Viewpoint may not be null or undefined")}get zoom(){return this.ready?E(this.view,this.scale):this._get("zoom")}set zoom(e){this._updatePropertyBeforeReady("zoom",e)||void 0===e||this.setStateCamera(this._zoomToCamera(e),{applyConstraints:!0})||r.getLogger(this).error("#zoom=","Invalid zoom",e)}_computeCanvasSize(){if(this._devicePixelRatioOverride)return this.view.state.contentPixelRatio=this._devicePixelRatioOverride,this._tmpCanvasSize.width=Math.round(this.view.surface.clientWidth*this._devicePixelRatioOverride),this._tmpCanvasSize.height=Math.round(this.view.surface.clientHeight*this._devicePixelRatioOverride),this._tmpCanvasSize.pixelRatio=this._devicePixelRatioOverride,this._tmpCanvasSize;const e=Math.min(this._windowDevicePixelRatio,this.view.qualitySettings.maximumPixelRatio),t=(this._usePhysicalPixelRendering?this._windowDevicePixelRatio:e)*this.view.resolutionScale;this._tmpCanvasSize.width=Math.round(this.view.surface.clientWidth*t),this._tmpCanvasSize.height=Math.round(this.view.surface.clientHeight*t);const i=this.view._stage.renderView.renderingContext.parameters.maxTextureSize;return W(this._tmpCanvasSize,i),this._tmpCanvasSize.pixelRatio=this._tmpCanvasSize.width>0?this._tmpCanvasSize.width/this.view.surface.clientWidth*.5+this._tmpCanvasSize.height/this.view.surface.clientHeight*.5:t,this.view.state&&(this.view.state.contentPixelRatio=Math.min(this._windowDevicePixelRatio,this.view.qualitySettings.maximumPixelRatio)),this._tmpCanvasSize}get _rasterPixelRatio(){return null!=this._devicePixelRatioOverride?this._devicePixelRatioOverride:this._usePhysicalPixelRenderingAny?this._windowDevicePixelRatio:Math.min(this._windowDevicePixelRatio,this.view.qualitySettings.maximumPixelRatio)}get _usePhysicalPixelRendering(){return this.view?._stage?.renderer.isFeatureEnabled(G.PhysicalPixelRendering)??!1}get _usePhysicalPixelRenderingAny(){const e=this.view?._stage?.renderer;return e&&(e.isFeatureEnabled(G.PhysicalPixelRendering,q.IDLE)||e.isFeatureEnabled(G.PhysicalPixelRendering,q.INTERACTING)||e.isFeatureEnabled(G.PhysicalPixelRendering,q.ANIMATING))}constructor(e){super(e),this.constraintsManager=null,this.ready=!1,this._windowDevicePixelRatio=1,this._devicePixelRatioOverride=null,this._updatingIgnoreRenderState=!1,this.test={viewStateManager:this,contentCameraResetState:new Map,setDevicePixelRatio:e=>this._devicePixelRatioOverride=e,renderState:null,get maximumPixelRatio(){return this.viewStateManager.view.qualitySettings.maximumPixelRatio},set updatingIgnoreRenderState(e){this.viewStateManager._updatingIgnoreRenderState=e},get updatingIgnoreRenderState(){return this.viewStateManager._updatingIgnoreRenderState||null!=this.renderState}},this._propertiesPool=new B({frustum:O},this),this._cameraSetByUser=!1,this._gotoOperation=null,this._cameraChangeTime=0,this._tmpCanvasSize=new K}initialize(){this._cameraChangeTime=performance.now(),this.addHandles([o((()=>this.view.state.events),"before-camera-change",(e=>e&&this._updateElevation(e))),n((()=>this.view.state?.camera),((e,t)=>this._cameraChangedHandler(e,t)),h)]),l((()=>this.view.state?.camera),(e=>this._updateElevation(e)),{once:!0,sync:!0}),this.addHandles([p({prepare:()=>this._prepareFrame()}),n((()=>this.view.state.cameraController),(()=>{this._cameraSetByUser=!0,this.removeHandles(te)})),o((()=>this.view.state.events),"camera-projection-changed",(()=>this.notifyChange("scale")))])}destroy(){this.exit(),this._propertiesPool=s(this._propertiesPool)}init(){this.constraintsManager=new S({view:this.view}),this._prepareFrame();const e=this._getInitialProperties();this._cameraSetByUser=!1,this._set("ready",!0);for(const t of e)this.set(t.name,t.value);if(!this._cameraSetByUser){const e=this._initialViewpoint||this.view.initialExtent;e&&this.isCompatible(e)?this._setInitialView(e):this.view.state.viewingMode===f.Local&&this.addHandles(l((()=>this.view.basemapTerrain.ready),(()=>{this.removeHandles(te),this._setInitialView(this.view.dataExtent)}),{once:!0,initial:!0}),te)}}exit(){this._cancelGoToOperation(),this.ready&&(this._override("padding",this.padding),this._set("ready",!1),this._clearOverride("hasInitialView"),this._cameraSetByUser=!1,this.removeHandles(te),this.constraintsManager=s(this.constraintsManager))}async goTo(e,t){const i={animate:!0,...t};return null!=this._gotoOperation&&this._gotoOperation.abort(i.animate),this._gotoOperation=new T(e,i,this.view),this.view.resourceController.scheduler.stopFrame(),this._gotoOperation.promise}debugSetCameraOnContent(){this.setStateCamera(x(this.view),{applyConstraints:!1})}step(e){const t=this.view.state,i=t?.cameraController;i&&(t.updateCamera((t=>i.stepController(e,t))),i.steppingFinished&&i.finishController())}_cancelGoToOperation(){null!=this._gotoOperation&&(this._gotoOperation.abort(),this._gotoOperation=null)}_getInitialProperties(){const e=new Set,t=[];for(const{propertyName:i,overrides:a}of X){const r=e.has(i),s=this._isOverridden(i);!r&&s&&t.push({name:i,value:this._get(i)}),this._clearOverride(i),(r||s)&&a.forEach((t=>e.add(t)))}return t}_setInitialView(e){if(null==e||this._cameraSetByUser)return;if(e instanceof t)return void this.setStateCamera(j(this.view,e),{applyConstraints:!1});if(e instanceof i){if(e.targetGeometry instanceof y){const t=A(this.view,e.targetGeometry,0,.5,H.LOCKED);return void(null!=t&&this.setStateCamera(j(this.view,t),{applyConstraints:!0}))}const t={applyConstraints:!e.camera},i=this._viewpointToCamera(e);return void this.setStateCamera(i,t)}const a=A(this.view,e,0,.5,H.LOCKED);null!=a&&this.setStateCamera(j(this.view,a),{applyConstraints:!0})}_updatePropertyBeforeReady(e,t){return!this.ready&&(this._override(e,t),t&&Q.includes(e)&&this._override("hasInitialView",!0),!0)}isCompatible(e){return null!=e&&(e instanceof i?e.camera?this.isCompatible(e.camera):this.isCompatible(e.targetGeometry):e instanceof t?this.isCompatible(e.position):e.spatialReference&&C(e.spatialReference,this.view.spatialReference))}_getPreservingHeadingTilt(e=Y){return this._cameraSetByUser?(e.heading=this.camera.heading,e.tilt=this.camera.tilt):(e.heading=0,e.tilt=.5),e}_centerPointAtDistanceToCamera(e,t,i=$){const{heading:a,tilt:r}=this._getPreservingHeadingTilt(),s=N(this.view,a,r,e,t,H.ADJUST);return null==s?null:(i.copyFrom(this.view.state.camera),i.eye=s.eye,i.center=s.center,i.up=s.up,i)}_centerToCamera(e){const t=this.view.pointsOfInterest.centerOnContent;t.runTask();const i=t.distance;return this._centerPointAtDistanceToCamera(e,i)}_extentToCamera(e){const{heading:t,tilt:i}=this._getPreservingHeadingTilt(),a=A(this.view,e,t,i,H.ADJUST,Z);return a?j(this.view,a):null}_scaleToCamera(e){if(null==e)return null;const t=this.view.pointsOfInterest.centerOnContent;t.runTask();const i=t.renderLocation,a=t.location.latitude;if(null==a)return null;const r=V(this.view,e,a);return this._centerPointAtDistanceToCamera(i,r)}_zoomToCamera(e){return this._scaleToCamera(L(this.view,e))}_viewpointToCamera(e){return j(this.view,U(this.view,e))}setStateCamera(e,t){return!(null==e||!this.view.state.stopActiveCameraController())&&(this._cameraSetByUser=!0,t.doNotCancelGoToOperation||this._cancelGoToOperation(),this.view.state.updateCamera((i=>{t.positionAndOrientationOnly?(i.eye=e.eye,i.center=e.center,i.up=e.up):i.copyFrom(e),t.applyConstraints&&R(this.view,i)})),t.applyConstraints||(this.view.state.cameraController=new b({view:this.view,desiredCamera:e})),!0)}_prepareFrame(){const{surface:e,canvas:t}=this.view;if(!e||!t)return;this._windowDevicePixelRatio=window.devicePixelRatio;const i=this._computeCanvasSize();if(0!==i.width&&0!==i.height&&(t.width===i.width&&t.height===i.height||(t.width=i.width,t.height=i.height),this.view.state)){const e=this.view.state.camera;e.fullWidth===i.width&&e.fullHeight===i.height&&e.pixelRatio===i.pixelRatio||($.copyFrom(e),$.pixelRatio!==i.pixelRatio&&(this._paddingToArray(this.padding,i.pixelRatio,ee),$.padding=ee),$.fullWidth=i.width,$.fullHeight=i.height,$.pixelRatio=i.pixelRatio,this.view.state.camera=$),this._updateViewState()}}_updateElevation(e){const t=this.view.basemapTerrain&&this.view.basemapTerrain.spatialReference,i=this.view.renderCoordsHelper?.getAltitude(e.eye)??0,a=t?P(this.view,e.eye):0;e.relativeElevation=i-a}_updateViewState(){null!=this.test.renderState?this.view.state.mode=this.test.renderState:this.view.animation?this.view.state.mode=q.ANIMATING:this.view.interacting?this.view.state.mode=q.INTERACTING:(this.view.state.mode===q.ANIMATING&&(this._cameraChangeTime=0),performance.now()-this._cameraChangeTime<=ae?this.view.state.mode=q.INTERACTING:this.view.state.mode=q.IDLE),this.view.state.rasterPixelRatio=this._rasterPixelRatio}_cameraChangedHandler(e,t){e&&t&&e.almostEquals(t)||(this._cameraChangeTime=performance.now(),this._updateViewState())}};e([m({type:t,dependsOn:["view.state.camera","ready"]})],J.prototype,"camera",null),e([m({type:t,dependsOn:["view.state.contentCamera","ready"]})],J.prototype,"contentCamera",null),e([m({type:_})],J.prototype,"center",null),e([m({type:y})],J.prototype,"extent",null),e([m({readOnly:!0})],J.prototype,"frustum",null),e([m()],J.prototype,"_initialViewpoint",null),e([m({readOnly:!0})],J.prototype,"hasInitialView",null),e([m({readOnly:!0,type:Boolean})],J.prototype,"ready",void 0),e([m({type:Number})],J.prototype,"scale",null),e([m()],J.prototype,"padding",null),e([m({readOnly:!0})],J.prototype,"screenCenter",null),e([m({constructOnly:!0})],J.prototype,"view",void 0),e([m({type:i})],J.prototype,"viewpoint",null),e([m({type:Number})],J.prototype,"zoom",null),e([m({readOnly:!0})],J.prototype,"_rasterPixelRatio",null),e([m({readOnly:!0})],J.prototype,"_usePhysicalPixelRendering",null),e([m({readOnly:!0})],J.prototype,"_usePhysicalPixelRenderingAny",null),e([m()],J.prototype,"_windowDevicePixelRatio",void 0),e([m()],J.prototype,"_devicePixelRatioOverride",void 0),J=e([d("esri.views.3d.state.ViewStateManager")],J);class K{constructor(){this.width=0,this.height=0,this.pixelRatio=1}}const Q=["camera","viewpoint","extent","scale","center","zoom"],X=[{propertyName:"camera",overrides:["viewpoint"]},{propertyName:"viewpoint",overrides:["extent"]},{propertyName:"extent",overrides:["center","scale"]},{propertyName:"center",overrides:[]},{propertyName:"scale",overrides:["zoom"]},{propertyName:"zoom",overrides:[]},{propertyName:"padding",overrides:[]}],Y={heading:0,tilt:0},Z=new t,$=new k,ee=g(),te="pending-initial-view",ie="content-camera-reset",ae=300,re=100;export{re as INTERACTING_TIMEOUT,J as ViewStateManager};
5
+ import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../Camera.js";import i from"../../../Viewpoint.js";import a from"../../../core/Accessor.js";import r from"../../../core/Logger.js";import{destroyMaybe as s}from"../../../core/maybe.js";import{watch as n,on as o,sync as h,when as l}from"../../../core/reactiveUtils.js";import{addFrameTask as p}from"../../../core/scheduling.js";import{createScreenPoint as c}from"../../../core/screenUtils.js";import{property as m}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import{subclass as d}from"../../../core/accessorSupport/decorators/subclass.js";import{a as v}from"../../../chunks/vec3.js";import{e as u}from"../../../chunks/vec3f64.js";import{s as w}from"../../../chunks/vec4.js";import{c as g}from"../../../chunks/vec4f64.js";import y from"../../../geometry/Extent.js";import _ from"../../../geometry/Point.js";import{canProject as C}from"../../../geometry/support/webMercatorUtils.js";import{ViewingMode as f}from"../../ViewingMode.js";import{applyAll as R}from"../camera/constraintUtils.js";import{cameraOnContentAlongViewDirection as x,surfaceElevationBelowRenderLocation as P}from"../camera/intersectionUtils.js";import{ConstraintsManager as S}from"./ConstraintsManager.js";import{Frustum as O}from"./Frustum.js";import{GoToOperation as T}from"./GoToOperation.js";import{SurfaceCollisionCorrectionController as b}from"./controllers/SurfaceCollisionCorrectionController.js";import{internalToExternal as I,externalToInternal as j,toExtent as z,distanceToScale as M,scaleToZoom as E,fromExtentSync as A,OrientationMode as H,getObserverForPointAtDistanceSync as N,scaleToDistance as V,zoomToScale as L}from"../support/cameraUtils.js";import{PropertiesPool as B}from"../support/PropertiesPool.js";import{fromCamera as D,toCameraSync as U}from"../support/viewpointUtils.js";import{Camera as k,PaddingSide as F}from"../webgl-engine/lib/Camera.js";import{RenderFeature as G}from"../webgl-engine/lib/RenderFeature.js";import{RenderState as q}from"../../support/RenderState.js";import{ensureAttachmentMaxSize as W}from"../../webgl/FramebufferObject.js";let J=class extends a{get camera(){const e=this._get("camera");if(!this.ready)return e;const t=I(this.view,this.view.state.camera,Z);return t&&e&&t.equals(e)?e:t.clone()}set camera(e){this._updatePropertyBeforeReady("camera",e)||(this.view.elevationProvider?.enableElevationCache(!0),this.setStateCamera(j(this.view,e),{applyConstraints:!1})||r.getLogger(this).error("#camera=","Invalid camera",e),this.view.elevationProvider?.enableElevationCache(!1))}get contentCamera(){const e=this._get("contentCamera");if(!this.ready)return e;const t=I(this.view,this.view.state.contentCamera,Z);return t&&e&&t.equals(e)?e:t.clone()}set contentCamera(e){if(this._updatePropertyBeforeReady("contentCamera",e))return;const t=j(this.view,e);null!=t?(this._updateElevation(t),this.view.state.contentCamera=t):this.view.state.contentCamera=null}installContentCameraReset(e){if(this.removeHandles(ie),this.test.contentCameraResetState.clear(),!this.view.state.fixedContentCamera)return!1;const t=this.zoom,i=this.view.state.camera.distance**2,a=u(this.view.state.camera.center),r=e.sticky?this.contentCamera.clone():null;return this.addHandles([n((()=>this.contentCamera),(()=>{e.sticky||(this.removeHandles(ie),this.test.contentCameraResetState.clear())})),n((()=>this.zoom),(e=>{void 0!==e&&void 0!==t&&(this.test.contentCameraResetState.set("view.zoom",Math.abs(e-t)/2),Math.abs(e-t)>2?this.contentCamera=null:this.view.state.fixedContentCamera||(this.contentCamera=r))})),n((()=>this.view.state.camera),(e=>{const t=v(a,e.center);this.test.contentCameraResetState.set("camera.center",t/i),t>i?this.contentCamera=null:this.view.state.fixedContentCamera||(this.contentCamera=r)}))],ie),!0}get center(){return this.ready?this.view.pointsOfInterest.centerOnContent.location:this._get("center")}set center(e){this._updatePropertyBeforeReady("center",e)||(e?this.isCompatible(e)?this.setStateCamera(this._centerToCamera(e),{applyConstraints:!0})?this.view.pointsOfInterest.centerOnContent.runTask():r.getLogger(this).error("#center=","Invalid center",e):r.getLogger(this).error("#center=","Center has an incompatible spatial reference (center: "+(e.spatialReference?e.spatialReference.wkid:"none")+", view: "+this.view.spatialReference?.wkid+")",e):r.getLogger(this).error("#center=","Center may not be null or undefined"))}get extent(){if(!this.ready)return this._get("extent");const e=this.view,t=z(e,e.state.camera,e.pointsOfInterest.centerOnContent.renderLocation);return null!=t?t:this._get("extent")}set extent(e){this._updatePropertyBeforeReady("extent",e)||(e?this.isCompatible(e)?this.setStateCamera(this._extentToCamera(e),{applyConstraints:!0})||r.getLogger(this).error("#extent=","Invalid extent",e):r.getLogger(this).error("#extent=","Extent has an incompatible spatial reference (extent: "+(e.spatialReference?e.spatialReference.wkid:"none")+", view: "+this.view.spatialReference?.wkid+")",e):r.getLogger(this).error("#extent=","Extent may not be null or undefined"))}get frustum(){const e=this._propertiesPool.get("frustum");return e.renderCoordsHelper=this.view.renderCoordsHelper,e.update(this.view.state.camera),e}get _initialViewpoint(){const e=this.view.map;return e&&"initialViewProperties"in e?e.initialViewProperties?.viewpoint:void 0}get hasInitialView(){return!!this._initialViewpoint}get scale(){if(this.ready){const e=this.view.pointsOfInterest.centerOnContent;return M(this.view,e.distance,e.location.latitude)}return this._get("scale")}set scale(e){this._updatePropertyBeforeReady("scale",e)||this.setStateCamera(this._scaleToCamera(e),{applyConstraints:!0})||r.getLogger(this).error("#scale=","Invalid scale",e)}get padding(){if(!this.ready)return this._get("padding");const e=this.view.state.camera,t=e.padding,i=e.pixelRatio,a=this._get("padding"),r=Math.round(t[F.TOP]/i),s=Math.round(t[F.RIGHT]/i),n=Math.round(t[F.BOTTOM]/i),o=Math.round(t[F.LEFT]/i);return null!=a&&a.top===r&&a.right===s&&a.bottom===n&&a.left===o?a:{top:r,right:s,bottom:n,left:o}}set padding(e){this._updatePropertyBeforeReady("padding",e)||(this._paddingToArray(e,this.view.state.camera.pixelRatio,ee),this.view.state.updateCamera((e=>e.padding=ee)))}_paddingToArray(e,t,i){e?w(i,e.top||0,e.right||0,e.bottom||0,e.left||0):w(i,0,0,0,0);for(let a=0;a<4;a++)i[a]=Math.round(i[a]*t)}get screenCenter(){const e=this.padding;return c((this.view.width-(e.left+e.right))/2+e.left,(this.view.height-(e.top+e.bottom))/2+e.top)}get viewpoint(){return this.ready?D(this.view,this.camera):this._get("viewpoint")}set viewpoint(e){if(!this._updatePropertyBeforeReady("viewpoint",e))if(e)if(this.isCompatible(e))this.setStateCamera(this._viewpointToCamera(e),{applyConstraints:!e.camera})||r.getLogger(this).error("#viewpoint=","Invalid viewpoint",e);else{const t=null!=e.camera?e.camera.position:e.targetGeometry,i=null!=t&&t.spatialReference;r.getLogger(this).error("#viewpoint=","Viewpoint has an incompatible spatial reference (viewpoint: "+(i?i.wkid:"none")+", view: "+this.view.spatialReference?.wkid+")",e)}else r.getLogger(this).error("#viewpoint=","Viewpoint may not be null or undefined")}get zoom(){return this.ready?E(this.view,this.scale):this._get("zoom")}set zoom(e){this._updatePropertyBeforeReady("zoom",e)||void 0===e||this.setStateCamera(this._zoomToCamera(e),{applyConstraints:!0})||r.getLogger(this).error("#zoom=","Invalid zoom",e)}_computeCanvasSize(){if(this._devicePixelRatioOverride)return this.view.state.contentPixelRatio=this._devicePixelRatioOverride,this._tmpCanvasSize.width=Math.round(this.view.surface.clientWidth*this._devicePixelRatioOverride),this._tmpCanvasSize.height=Math.round(this.view.surface.clientHeight*this._devicePixelRatioOverride),this._tmpCanvasSize.pixelRatio=this._devicePixelRatioOverride,this._tmpCanvasSize;const e=Math.min(this._windowDevicePixelRatio,this.view.qualitySettings.maximumPixelRatio),t=(this._usePhysicalPixelRendering?this._windowDevicePixelRatio:e)*this.view.resolutionScale;this._tmpCanvasSize.width=Math.round(this.view.surface.clientWidth*t),this._tmpCanvasSize.height=Math.round(this.view.surface.clientHeight*t);const i=this.view._stage.renderView.renderingContext.parameters.maxTextureSize;return W(this._tmpCanvasSize,i),this._tmpCanvasSize.pixelRatio=this._tmpCanvasSize.width>0?this._tmpCanvasSize.width/this.view.surface.clientWidth*.5+this._tmpCanvasSize.height/this.view.surface.clientHeight*.5:t,this.view.state&&(this.view.state.contentPixelRatio=Math.min(this._windowDevicePixelRatio,this.view.qualitySettings.maximumPixelRatio)),this._tmpCanvasSize}get _rasterPixelRatio(){return null!=this._devicePixelRatioOverride?this._devicePixelRatioOverride:this._usePhysicalPixelRenderingAny?this._windowDevicePixelRatio:Math.min(this._windowDevicePixelRatio,this.view.qualitySettings.maximumPixelRatio)}get _usePhysicalPixelRendering(){return this.view?._stage?.renderer.isFeatureEnabled(G.PhysicalPixelRendering)??!1}get _usePhysicalPixelRenderingAny(){const e=this.view?._stage?.renderer;return e&&(e.isFeatureEnabled(G.PhysicalPixelRendering,q.IDLE)||e.isFeatureEnabled(G.PhysicalPixelRendering,q.INTERACTING)||e.isFeatureEnabled(G.PhysicalPixelRendering,q.ANIMATING))}constructor(e){super(e),this.constraintsManager=null,this.ready=!1,this._windowDevicePixelRatio=1,this._devicePixelRatioOverride=null,this._updatingIgnoreRenderState=!1,this.test={viewStateManager:this,contentCameraResetState:new Map,setDevicePixelRatio:e=>this._devicePixelRatioOverride=e,renderState:null,get maximumPixelRatio(){return this.viewStateManager.view.qualitySettings.maximumPixelRatio},set updatingIgnoreRenderState(e){this.viewStateManager._updatingIgnoreRenderState=e},get updatingIgnoreRenderState(){return this.viewStateManager._updatingIgnoreRenderState||null!=this.renderState}},this._propertiesPool=new B({frustum:O},this),this._cameraSetByUser=!1,this._gotoOperation=null,this._cameraChangeTime=0,this._tmpCanvasSize=new K}initialize(){this._cameraChangeTime=performance.now(),this.addHandles([o((()=>this.view.state.events),"before-camera-change",(e=>e&&this._updateElevation(e))),n((()=>this.view.state?.camera),((e,t)=>this._cameraChangedHandler(e,t)),h)]),l((()=>this.view.state?.camera),(e=>this._updateElevation(e)),{once:!0,sync:!0}),this.addHandles([p({prepare:()=>this._prepareFrame()}),n((()=>this.view.state.cameraController),(()=>{this._cameraSetByUser=!0,this.removeHandles(te)})),o((()=>this.view.state.events),"camera-projection-changed",(()=>this.notifyChange("scale")))])}destroy(){this.exit(),this._propertiesPool=s(this._propertiesPool)}init(){this.constraintsManager=new S({view:this.view}),this._prepareFrame();const e=this._getInitialProperties();this._cameraSetByUser=!1,this._set("ready",!0);for(const t of e)this.set(t.name,t.value);if(!this._cameraSetByUser){const e=this._initialViewpoint||this.view.initialExtent;e&&this.isCompatible(e)?this._setInitialView(e):this.view.state.viewingMode===f.Local&&this.addHandles(l((()=>this.view.basemapTerrain.ready),(()=>{this.removeHandles(te),this._setInitialView(this.view.dataExtent)}),{once:!0,initial:!0}),te)}}exit(){this._cancelGoToOperation(),this.ready&&(this._override("padding",this.padding),this._set("ready",!1),this._clearOverride("hasInitialView"),this._cameraSetByUser=!1,this.removeHandles(te),this.constraintsManager=s(this.constraintsManager))}async goTo(e,t){const i={animate:!0,...t};return null!=this._gotoOperation&&this._gotoOperation.abort(i.animate),this._gotoOperation=new T(e,i,this.view),this.view.resourceController.scheduler.stopFrame(),this._gotoOperation.promise}debugSetCameraOnContent(){this.setStateCamera(x(this.view),{applyConstraints:!1})}step(e){const t=this.view.state,i=t?.cameraController;i&&(t.updateCamera((t=>i.stepController(e,t))),i.steppingFinished&&i.finishController())}_cancelGoToOperation(){null!=this._gotoOperation&&(this._gotoOperation.abort(),this._gotoOperation=null)}_getInitialProperties(){const e=new Set,t=[];for(const{propertyName:i,overrides:a}of X){const r=e.has(i),s=this._isOverridden(i);!r&&s&&t.push({name:i,value:this._get(i)}),this._clearOverride(i),(r||s)&&a.forEach((t=>e.add(t)))}return t}_setInitialView(e){if(null==e||this._cameraSetByUser)return;if(e instanceof t)return void this.setStateCamera(j(this.view,e),{applyConstraints:!1});if(e instanceof i){if(e.targetGeometry instanceof y){const t=A(this.view,e.targetGeometry,0,.5,H.LOCKED);return void(null!=t&&this.setStateCamera(j(this.view,t),{applyConstraints:!0}))}const t={applyConstraints:!e.camera},i=this._viewpointToCamera(e);return void this.setStateCamera(i,t)}const a=A(this.view,e,0,.5,H.LOCKED);null!=a&&this.setStateCamera(j(this.view,a),{applyConstraints:!0})}_updatePropertyBeforeReady(e,t){return!this.ready&&(this._override(e,t),t&&Q.includes(e)&&this._override("hasInitialView",!0),!0)}isCompatible(e){return null!=e&&(e instanceof i?e.camera?this.isCompatible(e.camera):this.isCompatible(e.targetGeometry):e instanceof t?this.isCompatible(e.position):e.spatialReference&&C(e.spatialReference,this.view.spatialReference))}_getPreservingHeadingTilt(e=Y){return this._cameraSetByUser?(e.heading=this.camera.heading,e.tilt=this.camera.tilt):(e.heading=0,e.tilt=.5),e}_centerPointAtDistanceToCamera(e,t,i=$){const{heading:a,tilt:r}=this._getPreservingHeadingTilt(),s=N(this.view,a,r,e,t,H.ADJUST);return null==s?null:(i.copyFrom(this.view.state.camera),i.eye=s.eye,i.center=s.center,i.up=s.up,i)}_centerToCamera(e){const t=this.view.pointsOfInterest.centerOnContent;t.runTask();const i=t.distance;return this._centerPointAtDistanceToCamera(e,i)}_extentToCamera(e){const{heading:t,tilt:i}=this._getPreservingHeadingTilt(),a=A(this.view,e,t,i,H.ADJUST,Z);return a?j(this.view,a):null}_scaleToCamera(e){if(null==e)return null;const t=this.view.pointsOfInterest.centerOnContent;t.runTask();const i=t.renderLocation,a=t.location.latitude;if(null==a)return null;const r=V(this.view,e,a);return this._centerPointAtDistanceToCamera(i,r)}_zoomToCamera(e){return this._scaleToCamera(L(this.view,e))}_viewpointToCamera(e){return j(this.view,U(this.view,e))}setStateCamera(e,t){return!(null==e||!this.view.state.stopActiveCameraController())&&(this._cameraSetByUser=!0,t.doNotCancelGoToOperation||this._cancelGoToOperation(),this.view.state.updateCamera((i=>{t.positionAndOrientationOnly?(i.eye=e.eye,i.center=e.center,i.up=e.up):i.copyFrom(e),t.applyConstraints&&R(this.view,i)})),t.applyConstraints||(this.view.state.cameraController=new b({view:this.view,desiredCamera:e})),!0)}_prepareFrame(){const{surface:e,canvas:t}=this.view;if(!e||!t)return;this._windowDevicePixelRatio=window.devicePixelRatio;const i=this._computeCanvasSize();if(0!==i.width&&0!==i.height&&(t.width===i.width&&t.height===i.height||(t.width=i.width,t.height=i.height),this.view.state)){const e=this.view.state.camera;e.fullWidth===i.width&&e.fullHeight===i.height&&e.pixelRatio===i.pixelRatio||($.copyFrom(e),$.pixelRatio!==i.pixelRatio&&(this._paddingToArray(this.padding,i.pixelRatio,ee),$.padding=ee),$.fullWidth=i.width,$.fullHeight=i.height,$.pixelRatio=i.pixelRatio,this.view.state.camera=$),this._updateViewState()}}_updateElevation(e){const t=this.view.basemapTerrain&&this.view.basemapTerrain.spatialReference,i=this.view.renderCoordsHelper?.getAltitude(e.eye)??0,a=t?P(this.view,e.eye):0;e.relativeElevation=i-a}_updateViewState(){null!=this.test.renderState?this.view.state.mode=this.test.renderState:this.view.animation?this.view.state.mode=q.ANIMATING:this.view.interacting?this.view.state.mode=q.INTERACTING:(this.view.state.mode===q.ANIMATING&&(this._cameraChangeTime=0),performance.now()-this._cameraChangeTime<=ae?this.view.state.mode=q.INTERACTING:this.view.state.mode=q.IDLE),this.view.state.rasterPixelRatio=this._rasterPixelRatio}_cameraChangedHandler(e,t){e&&t&&e.almostEquals(t)||(this._cameraChangeTime=performance.now(),this._updateViewState())}};e([m({type:t,dependsOn:["view.state.camera","ready"]})],J.prototype,"camera",null),e([m({type:t,dependsOn:["view.state.contentCamera","ready"]})],J.prototype,"contentCamera",null),e([m({type:_})],J.prototype,"center",null),e([m({type:y})],J.prototype,"extent",null),e([m({readOnly:!0})],J.prototype,"frustum",null),e([m()],J.prototype,"_initialViewpoint",null),e([m({readOnly:!0})],J.prototype,"hasInitialView",null),e([m({readOnly:!0,type:Boolean})],J.prototype,"ready",void 0),e([m({type:Number})],J.prototype,"scale",null),e([m()],J.prototype,"padding",null),e([m({readOnly:!0})],J.prototype,"screenCenter",null),e([m({constructOnly:!0})],J.prototype,"view",void 0),e([m({type:i})],J.prototype,"viewpoint",null),e([m({type:Number})],J.prototype,"zoom",null),e([m({readOnly:!0})],J.prototype,"_rasterPixelRatio",null),e([m({readOnly:!0})],J.prototype,"_usePhysicalPixelRendering",null),e([m({readOnly:!0})],J.prototype,"_usePhysicalPixelRenderingAny",null),e([m()],J.prototype,"_windowDevicePixelRatio",void 0),e([m()],J.prototype,"_devicePixelRatioOverride",void 0),J=e([d("esri.views.3d.state.ViewStateManager")],J);class K{constructor(){this.width=0,this.height=0,this.pixelRatio=1}}const Q=["camera","viewpoint","extent","scale","center","zoom"],X=[{propertyName:"camera",overrides:["viewpoint"]},{propertyName:"viewpoint",overrides:["extent"]},{propertyName:"extent",overrides:["center","scale"]},{propertyName:"center",overrides:[]},{propertyName:"scale",overrides:["zoom"]},{propertyName:"zoom",overrides:[]},{propertyName:"padding",overrides:[]}],Y={heading:0,tilt:0},Z=new t,$=new k,ee=g(),te="pending-initial-view",ie="content-camera-reset",ae=300,re=100;export{re as INTERACTING_TIMEOUT,J as ViewStateManager};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../../../../chunks/tslib.es6.js";import{neverReached as e}from"../../../../core/compilerUtils.js";import{clamp as i,acosClamped as a,deg2rad as r}from"../../../../core/mathUtils.js";import{property as o}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import{subclass as s}from"../../../../core/accessorSupport/decorators/subclass.js";import{w as n,e as c,i as m}from"../../../../chunks/mat4.js";import{c as l}from"../../../../chunks/mat4f64.js";import{g as p,m as h,e as d,b as u,i as _,o as f,l as v,s as C,n as g,c as y,h as w,x as O,d as b}from"../../../../chunks/vec3.js";import{c as S}from"../../../../chunks/vec3f64.js";import{getReferenceEllipsoid as x}from"../../../../geometry/ellipsoidUtils.js";import{wrap as j}from"../../../../geometry/support/ray.js";import{b as M,e as T,t as L}from"../../../../chunks/sphere.js";import{angle as A}from"../../../../geometry/support/vector.js";import{sv3d as z}from"../../../../geometry/support/vectorStacks.js";import{applyAll as E}from"../../camera/constraintUtils.js";import{ConstraintTypes as I}from"../../camera/constraintUtils/ConstraintTypes.js";import{InteractionType as D}from"../../camera/constraintUtils/InteractionType.js";import{TiltMode as U}from"../../camera/constraintUtils/TiltMode.js";import{TiltDefault as R}from"../Constraints.js";import{InteractiveController as k}from"./InteractiveController.js";import{panMotionToRotationMatrix as H,onSurfaceTiltToEyeTiltGlobal as N,offSurfaceTiltToEyeTiltGlobal as P}from"../utils/navigationUtils.js";import{viewAngle as F}from"../utils/viewUtils.js";import{headingTiltToDirectionUp as G}from"../../support/cameraUtils.js";import{createDirectionUp as V}from"../../support/cameraUtilsInternal.js";import{Camera as B}from"../../webgl-engine/lib/Camera.js";import{extractTransformation as K,isZeroTransformation as X,extractTransformationKeyboard as Z}from"../../../navigation/gamepadAndKeyboardUtils.js";let q=class extends k{constructor(t){super(t),this._filteredSurfaceElevation=0,this._transformation={translation:[0,0,0],heading:0,tilt:0,zoom:0},this._keysButtonState=[0,0,0,0,0,0,0,0,0,0,0,0],this._tmpCamera=new B,this._headingStart=0,this._constraintOptions={selection:I.ALL,interactionType:D.NONE,interactionStartCamera:new B,interactionFactor:0,interactionDirection:null,tiltMode:U.LOOK_AROUND}}handleEventGamepad(t){const e=K(t,this.view.navigation.gamepad,this._transformation);("end"===t.action||X(e))&&this.finishController()}activateDirection(t){this._keysButtonState[t]=1,Z(this._keysButtonState,this._transformation)}deactivateDirection(t){this._keysButtonState[t]=0;const e=Z(this._keysButtonState,this._transformation);X(e)&&this.finishController()}onControllerStart(t){this._filteredSurfaceElevation=this.view.pointsOfInterest.cameraOnSurface.location.z,this._headingStart=this.view.camera.heading,super.onControllerStart(t)}_updateFilteredSurfaceElevation(t){const e=this.view.pointsOfInterest.cameraOnSurface.location.z,i=1;this._filteredSurfaceElevation+=i*(e-this._filteredSurfaceElevation)*t}stepController(t,e){this._updateStartHeading(),this._updateFilteredSurfaceElevation(t),this.currentCamera.copyViewFrom(e),this._updateCameraCenter(),this._constraintOptions.interactionStartCamera?.copyFrom(this.currentCamera),this._calculateControlTransformation(t,this.currentCamera,it),this._applyDisabledMovementTypes(it),this._applyPan(it.pan),this._applyRotate(it.rotate),this._applyZoom(it.zoom),this._applyAscend(it.ascend),this._constraintOptions.interactionType=D.NONE,this._constraintOptions.selection=I.COLLISION,E(this.view,this.currentCamera,this._constraintOptions),super.stepController(t,e)}_updateStartHeading(){0!==this._transformation.heading&&(this._headingStart=this.view.camera.heading)}_applyRotate(t){if(!t.enabled)return;const e=this.currentCamera;p(at,e.center,e.eye),h(at,at,t.matrix),e.center=d(at,at,e.eye),e.up=h(at,e.up,t.matrix),this._constraintOptions.interactionType=D.LOOK_AROUND,this._constraintOptions.selection=I.ALL_EXCEPT_COLLISION,E(this.view,e,this._constraintOptions)}_applyPan(t,e=this.currentCamera){if(!t.enabled)return;e.eye=h(at,e.eye,t.matrix),e.center=h(at,e.center,t.matrix);this.view.state.isGlobal&&(e.up=h(at,e.up,t.matrix)),this._constraintOptions.interactionType=D.PAN,this._constraintOptions.selection=I.ALL,E(this.view,e,this._constraintOptions)}_applyZoom(t){if(!t)return;const e=this.currentCamera.viewForward;this.currentCamera.eye=d(at,this.currentCamera.eye,u(z.get(),e,t)),_(rt,e),f(rt,rt),this._constraintOptions.interactionDirection=rt,this._constraintOptions.interactionType=D.ZOOM,this._constraintOptions.selection=I.ALL_EXCEPT_COLLISION,E(this.view,this.currentCamera,this._constraintOptions),this._constraintOptions.interactionDirection=null}_applyAscend(t){if(!t)return;const e=this.view.renderCoordsHelper.worldUpAtPosition(this.currentCamera.eye,z.get());this._constraintOptions.interactionDirection=_(rt,e);if(this.view.state.isGlobal){const e=v(this.currentCamera.eye),i=(e+t)/e;this.currentCamera.eye=u(at,this.currentCamera.eye,i),this.currentCamera.center=u(at,this.currentCamera.center,i)}else{const i=u(z.get(),e,t);this.currentCamera.eye=d(at,this.currentCamera.eye,i),this.currentCamera.center=d(at,this.currentCamera.center,i)}this._updateCameraCenter(),this._constraintOptions.interactionType=D.ASCEND,this._constraintOptions.selection=I.COLLISION,E(this.view,this.currentCamera,this._constraintOptions)&&this._updateCameraCenter(),this._constraintOptions.selection=I.ALL_EXCEPT_COLLISION,E(this.view,this.currentCamera,this._constraintOptions),this._constraintOptions.interactionDirection=null}_calculateControlTransformation(t,e,i){st(i);const a=this._computeVelocities(t);this.view.state.isLocal?this._calculateControlTransformationLocal(a,e,i):this._calculateControlTransformationGlobal(a,e,i)}_updateCameraCenter(){const t=this.view.pointsOfInterest.centerOnSurfaceFrequent.estimatedSurfaceAltitude,e=this.view.renderCoordsHelper,i=this.currentCamera.ray;this.currentCamera.center=e.intersectManifoldClosestSilhouette(i,t,at)}_calculateControlTransformationLocal(t,a,r){const{viewRight:o,viewForward:s}=a,m=this._transformation,l=this.view.navigation.gamepad,p=C(z.get(),s[0],s[1],0);g(p,p);const h=m.translation[0]*t.pan;if(0!==h){const t=u(z.get(),o,h);n(r.pan.matrix,r.pan.matrix,t),r.pan.enabled=!0}switch(l.mode){case"pan":{const e=-m.translation[1]*t.pan;if(0!==e){const t=u(z.get(),p,e);n(r.pan.matrix,r.pan.matrix,t),r.pan.enabled=!0}r.zoom=m.zoom*t.zoom;break}case"zoom":r.zoom=(-m.translation[1]+m.zoom)*t.zoom;break;default:e(l.mode)}const d=m.translation[2]*t.ascend;r.ascend=d;const _=-m.heading*t.rotate;0!==_&&(c(r.rotate.matrix,r.rotate.matrix,_,this.view.renderCoordsHelper.worldUpAtPosition(a.eye,z.get())),r.rotate.enabled=!0);const f=m.tilt*t.rotate,v=F(this.view.renderCoordsHelper,a.center,a.eye),y=i(v+f,R.min,R.max)-v;y&&(c(r.rotate.matrix,r.rotate.matrix,y,o),r.rotate.enabled=!0)}_calculateControlTransformationGlobal(t,e,i){const{eye:a,viewRight:r}=e,o=this._transformation,s=this.view.navigation.gamepad,n=y(z.get(),r,a);g(n,n),f(n,n),H(this.startCamera,e,o,t,this.view.camera.heading,this._headingStart,this.view.camera.tilt,i,s),this._tmpCamera.copyFrom(this.currentCamera),this._applyPan(it.pan,this._tmpCamera);const m=this.view.pointsOfInterest.centerOnSurfaceFrequent.estimatedSurfaceAltitude,l=o.translation[2]*t.ascend;i.ascend=l;const p=-o.heading*t.rotate;0!==p&&(c(i.rotate.matrix,i.rotate.matrix,p,this._tmpCamera.eye),i.rotate.enabled=!0);const h=o.tilt*t.rotate,d=this._clampTiltDeltaGlobalToValidRange(h,e.ray,m);0!==d&&(c(i.rotate.matrix,i.rotate.matrix,d,this._tmpCamera.viewRight),i.rotate.enabled=!0),i.zoom+=o.zoom*t.zoom}_clampTiltDeltaGlobalToValidRange(t,e,a){const r=x(this.view.spatialReference),o=N(R.min,e.origin,a,r);let s=0,n=0;const c=z.get();if(this.view.renderCoordsHelper.intersectManifold(e,a,c)){const t=F(this.view.renderCoordsHelper,c,e.origin);s=N(t,e.origin,a,r),n=N(R.max,e.origin,a,r)}else{M(T(L,a+r.radius),e,c);const t=Math.PI+A(e.direction,c);s=P(t,e.origin,a,r),n=P(R.max,e.origin,a,r)}return i(s+t,o,n)-s}_getPointAbsoluteSurfaceElevation(t,e,i){const{renderCoordsHelper:a}=this.view,r=a.getAltitude(t),o=e+Math.abs(r-e);return a.setAltitude(i,o,t),o}_clampedDistanceToSurface(t,e){const{renderCoordsHelper:i}=this.view,{camera:a}=this.view.state,{direction:r}=G(this.view,e,0,Q,ot),o=i.intersectManifoldClosestSilhouette(j(e,r),t,z.get()),s=w(e,o),n=i.intersectManifoldClosestSilhouette(j(e,O(z.get(),e,a.center)),t,z.get()),c=w(e,n);return Math.min(s,c)}_computeHeadingRotateRadius(t){const{renderCoordsHelper:e,state:i}=this.view,{camera:r,isGlobal:o}=i,s=e.intersectManifoldClosestSilhouette(r.ray,this._filteredSurfaceElevation,z.get());if(o){const e=p(z.get(),t,s),i=v(e);u(e,e,1/i);const r=g(z.get(),t),o=a(b(r,e));return i*Math.sin(Math.min(W,o))}{const i=_(z.get(),t);return e.setAltitude(i,this._filteredSurfaceElevation),w(s,i)}}_minimumAscendVelocity(){return this.view.state.constraints.collision.enabled?0:$}_computeVelocities(t){const e=this._filteredSurfaceElevation,a=e+x(this.view.spatialReference).radius,{camera:r,isGlobal:o}=this.view.state,s=z.get(),n=this._getPointAbsoluteSurfaceElevation(r.eye,e,s),c=this._clampedDistanceToSurface(e,s),m=r.width/2,l=Y*r.width,p=Y*r.width,h=c*Math.tan(.5*r.fovX)/m,d=h/a,u=h/this._computeHeadingRotateRadius(s),_=n-e;return{pan:(o?d:h)*l*t,ascend:Math.max(this._minimumAscendVelocity()*t,2**(l*t/m)*_-_),zoom:2**(l*t/m)*c-c,rotate:i(u*p,tt,et)*t}}_applyDisabledMovementTypes(t){null==this.disableMovements||void 0!==this.disableMovements.mode&&this.view.state.viewingMode!==this.disableMovements.mode||(t.zoom=this.disableMovements.zoom?0:t.zoom,t.ascend=this.disableMovements.ascend?0:t.ascend,t.pan.enabled=!this.disableMovements.pan,this.disableMovements.pan&&m(t.pan.matrix),t.rotate.enabled=!this.disableMovements.rotate,this.disableMovements.rotate&&m(t.rotate.matrix))}static activatesFor(t,e){const i=K(e,t.navigation.gamepad,J);return!("end"===e.action||X(i))}};t([o({constructOnly:!0})],q.prototype,"gamepadDevice",void 0),t([o({constructOnly:!0})],q.prototype,"disableMovements",void 0),q=t([s("esri.views.3d.state.controllers.GamepadKeyboardController")],q);const J={translation:[0,0,0],heading:0,tilt:0,zoom:0},Q=80,W=r(Q),Y=.75,$=5,tt=r(30),et=r(80),it={zoom:0,ascend:0,pan:{enabled:!1,matrix:l()},rotate:{enabled:!1,matrix:l()}},at=S(),rt=S(),ot=V();function st(t){t.zoom=0,t.ascend=0,t.pan.enabled=!1,m(t.pan.matrix),t.rotate.enabled=!1,m(t.rotate.matrix)}export{q as GamepadKeyboardController};
5
+ import{_ as t}from"../../../../chunks/tslib.es6.js";import{neverReached as e}from"../../../../core/compilerUtils.js";import{clamp as i,acosClamped as a,deg2rad as r}from"../../../../core/mathUtils.js";import{property as s}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import{subclass as o}from"../../../../core/accessorSupport/decorators/subclass.js";import{w as n,k as c,g as m}from"../../../../chunks/mat4.js";import{a as l}from"../../../../chunks/mat4f64.js";import{f as p,e as h,g as d,i as u,c as _,E as f,l as v,s as C,n as g,b as y,m as w,C as O,j as b}from"../../../../chunks/vec3.js";import{c as S}from"../../../../chunks/vec3f64.js";import{getReferenceEllipsoid as j}from"../../../../geometry/ellipsoidUtils.js";import{wrap as x}from"../../../../geometry/support/ray.js";import{b as M,e as T,t as L}from"../../../../chunks/sphere.js";import{angle as A}from"../../../../geometry/support/vector.js";import{sv3d as E}from"../../../../geometry/support/vectorStacks.js";import{applyAll as z}from"../../camera/constraintUtils.js";import{ConstraintTypes as I}from"../../camera/constraintUtils/ConstraintTypes.js";import{InteractionType as D}from"../../camera/constraintUtils/InteractionType.js";import{TiltMode as U}from"../../camera/constraintUtils/TiltMode.js";import{TiltDefault as k}from"../Constraints.js";import{InteractiveController as R}from"./InteractiveController.js";import{panMotionToRotationMatrix as H,onSurfaceTiltToEyeTiltGlobal as N,offSurfaceTiltToEyeTiltGlobal as P}from"../utils/navigationUtils.js";import{viewAngle as F}from"../utils/viewUtils.js";import{headingTiltToDirectionUp as G}from"../../support/cameraUtils.js";import{createDirectionUp as V}from"../../support/cameraUtilsInternal.js";import{Camera as B}from"../../webgl-engine/lib/Camera.js";import{extractTransformation as K,isZeroTransformation as X,extractTransformationKeyboard as Z}from"../../../navigation/gamepadAndKeyboardUtils.js";let q=class extends R{constructor(t){super(t),this._filteredSurfaceElevation=0,this._transformation={translation:[0,0,0],heading:0,tilt:0,zoom:0},this._keysButtonState=[0,0,0,0,0,0,0,0,0,0,0,0],this._tmpCamera=new B,this._headingStart=0,this._constraintOptions={selection:I.ALL,interactionType:D.NONE,interactionStartCamera:new B,interactionFactor:0,interactionDirection:null,tiltMode:U.LOOK_AROUND}}handleEventGamepad(t){const e=K(t,this.view.navigation.gamepad,this._transformation);("end"===t.action||X(e))&&this.finishController()}activateDirection(t){this._keysButtonState[t]=1,Z(this._keysButtonState,this._transformation)}deactivateDirection(t){this._keysButtonState[t]=0;const e=Z(this._keysButtonState,this._transformation);X(e)&&this.finishController()}onControllerStart(t){this._filteredSurfaceElevation=this.view.pointsOfInterest.cameraOnSurface.location.z,this._headingStart=this.view.camera.heading,super.onControllerStart(t)}_updateFilteredSurfaceElevation(t){const e=this.view.pointsOfInterest.cameraOnSurface.location.z,i=1;this._filteredSurfaceElevation+=i*(e-this._filteredSurfaceElevation)*t}stepController(t,e){this._updateStartHeading(),this._updateFilteredSurfaceElevation(t),this.currentCamera.copyViewFrom(e),this._updateCameraCenter(),this._constraintOptions.interactionStartCamera?.copyFrom(this.currentCamera),this._calculateControlTransformation(t,this.currentCamera,it),this._applyDisabledMovementTypes(it),this._applyPan(it.pan),this._applyRotate(it.rotate),this._applyZoom(it.zoom),this._applyAscend(it.ascend),this._constraintOptions.interactionType=D.NONE,this._constraintOptions.selection=I.COLLISION,z(this.view,this.currentCamera,this._constraintOptions),super.stepController(t,e)}_updateStartHeading(){0!==this._transformation.heading&&(this._headingStart=this.view.camera.heading)}_applyRotate(t){if(!t.enabled)return;const e=this.currentCamera;p(at,e.center,e.eye),h(at,at,t.matrix),e.center=d(at,at,e.eye),e.up=h(at,e.up,t.matrix),this._constraintOptions.interactionType=D.LOOK_AROUND,this._constraintOptions.selection=I.ALL_EXCEPT_COLLISION,z(this.view,e,this._constraintOptions)}_applyPan(t,e=this.currentCamera){if(!t.enabled)return;e.eye=h(at,e.eye,t.matrix),e.center=h(at,e.center,t.matrix);this.view.state.isGlobal&&(e.up=h(at,e.up,t.matrix)),this._constraintOptions.interactionType=D.PAN,this._constraintOptions.selection=I.ALL,z(this.view,e,this._constraintOptions)}_applyZoom(t){if(!t)return;const e=this.currentCamera.viewForward;this.currentCamera.eye=d(at,this.currentCamera.eye,u(E.get(),e,t)),_(rt,e),f(rt,rt),this._constraintOptions.interactionDirection=rt,this._constraintOptions.interactionType=D.ZOOM,this._constraintOptions.selection=I.ALL_EXCEPT_COLLISION,z(this.view,this.currentCamera,this._constraintOptions),this._constraintOptions.interactionDirection=null}_applyAscend(t){if(!t)return;const e=this.view.renderCoordsHelper.worldUpAtPosition(this.currentCamera.eye,E.get());this._constraintOptions.interactionDirection=_(rt,e);if(this.view.state.isGlobal){const e=v(this.currentCamera.eye),i=(e+t)/e;this.currentCamera.eye=u(at,this.currentCamera.eye,i),this.currentCamera.center=u(at,this.currentCamera.center,i)}else{const i=u(E.get(),e,t);this.currentCamera.eye=d(at,this.currentCamera.eye,i),this.currentCamera.center=d(at,this.currentCamera.center,i)}this._updateCameraCenter(),this._constraintOptions.interactionType=D.ASCEND,this._constraintOptions.selection=I.COLLISION,z(this.view,this.currentCamera,this._constraintOptions)&&this._updateCameraCenter(),this._constraintOptions.selection=I.ALL_EXCEPT_COLLISION,z(this.view,this.currentCamera,this._constraintOptions),this._constraintOptions.interactionDirection=null}_calculateControlTransformation(t,e,i){ot(i);const a=this._computeVelocities(t);this.view.state.isLocal?this._calculateControlTransformationLocal(a,e,i):this._calculateControlTransformationGlobal(a,e,i)}_updateCameraCenter(){const t=this.view.pointsOfInterest.centerOnSurfaceFrequent.estimatedSurfaceAltitude,e=this.view.renderCoordsHelper,i=this.currentCamera.ray;this.currentCamera.center=e.intersectManifoldClosestSilhouette(i,t,at)}_calculateControlTransformationLocal(t,a,r){const{viewRight:s,viewForward:o}=a,m=this._transformation,l=this.view.navigation.gamepad,p=C(E.get(),o[0],o[1],0);g(p,p);const h=m.translation[0]*t.pan;if(0!==h){const t=u(E.get(),s,h);n(r.pan.matrix,r.pan.matrix,t),r.pan.enabled=!0}switch(l.mode){case"pan":{const e=-m.translation[1]*t.pan;if(0!==e){const t=u(E.get(),p,e);n(r.pan.matrix,r.pan.matrix,t),r.pan.enabled=!0}r.zoom=m.zoom*t.zoom;break}case"zoom":r.zoom=(-m.translation[1]+m.zoom)*t.zoom;break;default:e(l.mode)}const d=m.translation[2]*t.ascend;r.ascend=d;const _=-m.heading*t.rotate;0!==_&&(c(r.rotate.matrix,r.rotate.matrix,_,this.view.renderCoordsHelper.worldUpAtPosition(a.eye,E.get())),r.rotate.enabled=!0);const f=m.tilt*t.rotate,v=F(this.view.renderCoordsHelper,a.center,a.eye),y=i(v+f,k.min,k.max)-v;y&&(c(r.rotate.matrix,r.rotate.matrix,y,s),r.rotate.enabled=!0)}_calculateControlTransformationGlobal(t,e,i){const{eye:a,viewRight:r}=e,s=this._transformation,o=this.view.navigation.gamepad,n=y(E.get(),r,a);g(n,n),f(n,n),H(this.startCamera,e,s,t,this.view.camera.heading,this._headingStart,this.view.camera.tilt,i,o),this._tmpCamera.copyFrom(this.currentCamera),this._applyPan(it.pan,this._tmpCamera);const m=this.view.pointsOfInterest.centerOnSurfaceFrequent.estimatedSurfaceAltitude,l=s.translation[2]*t.ascend;i.ascend=l;const p=-s.heading*t.rotate;0!==p&&(c(i.rotate.matrix,i.rotate.matrix,p,this._tmpCamera.eye),i.rotate.enabled=!0);const h=s.tilt*t.rotate,d=this._clampTiltDeltaGlobalToValidRange(h,e.ray,m);0!==d&&(c(i.rotate.matrix,i.rotate.matrix,d,this._tmpCamera.viewRight),i.rotate.enabled=!0),i.zoom+=s.zoom*t.zoom}_clampTiltDeltaGlobalToValidRange(t,e,a){const r=j(this.view.spatialReference),s=N(k.min,e.origin,a,r);let o=0,n=0;const c=E.get();if(this.view.renderCoordsHelper.intersectManifold(e,a,c)){const t=F(this.view.renderCoordsHelper,c,e.origin);o=N(t,e.origin,a,r),n=N(k.max,e.origin,a,r)}else{M(T(L,a+r.radius),e,c);const t=Math.PI+A(e.direction,c);o=P(t,e.origin,a,r),n=P(k.max,e.origin,a,r)}return i(o+t,s,n)-o}_getPointAbsoluteSurfaceElevation(t,e,i){const{renderCoordsHelper:a}=this.view,r=a.getAltitude(t),s=e+Math.abs(r-e);return a.setAltitude(i,s,t),s}_clampedDistanceToSurface(t,e){const{renderCoordsHelper:i}=this.view,{camera:a}=this.view.state,{direction:r}=G(this.view,e,0,Q,st),s=i.intersectManifoldClosestSilhouette(x(e,r),t,E.get()),o=w(e,s),n=i.intersectManifoldClosestSilhouette(x(e,O(E.get(),e,a.center)),t,E.get()),c=w(e,n);return Math.min(o,c)}_computeHeadingRotateRadius(t){const{renderCoordsHelper:e,state:i}=this.view,{camera:r,isGlobal:s}=i,o=e.intersectManifoldClosestSilhouette(r.ray,this._filteredSurfaceElevation,E.get());if(s){const e=p(E.get(),t,o),i=v(e);u(e,e,1/i);const r=g(E.get(),t),s=a(b(r,e));return i*Math.sin(Math.min(W,s))}{const i=_(E.get(),t);return e.setAltitude(i,this._filteredSurfaceElevation),w(o,i)}}_minimumAscendVelocity(){return this.view.state.constraints.collision.enabled?0:$}_computeVelocities(t){const e=this._filteredSurfaceElevation,a=e+j(this.view.spatialReference).radius,{camera:r,isGlobal:s}=this.view.state,o=E.get(),n=this._getPointAbsoluteSurfaceElevation(r.eye,e,o),c=this._clampedDistanceToSurface(e,o),m=r.width/2,l=Y*r.width,p=Y*r.width,h=c*Math.tan(.5*r.fovX)/m,d=h/a,u=h/this._computeHeadingRotateRadius(o),_=n-e;return{pan:(s?d:h)*l*t,ascend:Math.max(this._minimumAscendVelocity()*t,2**(l*t/m)*_-_),zoom:2**(l*t/m)*c-c,rotate:i(u*p,tt,et)*t}}_applyDisabledMovementTypes(t){null==this.disableMovements||void 0!==this.disableMovements.mode&&this.view.state.viewingMode!==this.disableMovements.mode||(t.zoom=this.disableMovements.zoom?0:t.zoom,t.ascend=this.disableMovements.ascend?0:t.ascend,t.pan.enabled=!this.disableMovements.pan,this.disableMovements.pan&&m(t.pan.matrix),t.rotate.enabled=!this.disableMovements.rotate,this.disableMovements.rotate&&m(t.rotate.matrix))}static activatesFor(t,e){const i=K(e,t.navigation.gamepad,J);return!("end"===e.action||X(i))}};t([s({constructOnly:!0})],q.prototype,"gamepadDevice",void 0),t([s({constructOnly:!0})],q.prototype,"disableMovements",void 0),q=t([o("esri.views.3d.state.controllers.GamepadKeyboardController")],q);const J={translation:[0,0,0],heading:0,tilt:0,zoom:0},Q=80,W=r(Q),Y=.75,$=5,tt=r(30),et=r(80),it={zoom:0,ascend:0,pan:{enabled:!1,matrix:l()},rotate:{enabled:!1,matrix:l()}},at=S(),rt=S(),st=V();function ot(t){t.zoom=0,t.ascend=0,t.pan.enabled=!1,m(t.pan.matrix),t.rotate.enabled=!1,m(t.rotate.matrix)}export{q as GamepadKeyboardController};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../../../../chunks/tslib.es6.js";import{acosClamped as i,clamp as s}from"../../../../core/mathUtils.js";import{createScreenPointArray as r}from"../../../../core/screenUtils.js";import{property as o}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as e}from"../../../../core/accessorSupport/decorators/subclass.js";import{d as a,e as n}from"../../../../chunks/mat4.js";import{c as h}from"../../../../chunks/mat4f64.js";import{j as p}from"../../../../chunks/vec2.js";import{a as m}from"../../../../chunks/vec2f64.js";import{i as c,g as l,l as _,d as v,n as u,e as C,b as f,c as P,m as d}from"../../../../chunks/vec3.js";import{c as E}from"../../../../chunks/vec3f64.js";import{getReferenceEllipsoid as w}from"../../../../geometry/ellipsoidUtils.js";import{applyAll as T}from"../../camera/constraintUtils.js";import{ConstraintTypes as R}from"../../camera/constraintUtils/ConstraintTypes.js";import{InteractionType as j}from"../../camera/constraintUtils/InteractionType.js";import{TiltMode as y}from"../../camera/constraintUtils/TiltMode.js";import{TiltDefault as U}from"../Constraints.js";import{InteractiveController as M}from"./InteractiveController.js";import{contentIntersectorOptions as O,normalizeCoordinate as x,ROTATE_PIVOT_DISTANCE_MODIFIER as D,ROTATE_PIVOT_MIN_DISTANCE_MODIFIER as g,decideNavigationMode as A,ROTATE_SCREEN_PIXEL_AREA as N,NavigationMode as k}from"../utils/navigationUtils.js";var b;!function(t){t[t.CENTER=0]="CENTER",t[t.EYE=1]="EYE"}(b||(b={}));let L=class extends M{get _intersectionHelper(){return this.view.sceneIntersectionHelper}constructor(t){super(t),this.pivot=b.CENTER,this._rotScale=0,this._lastPoint=m(),this._tmpWorldUp=E(),this._tmpViewDir=E(),this._tmpRotCurPoint=m(),this._tmpTransf=h(),this._tmpAxis=E(),this._tmpPivotPoint=E(),this._pivotPos=E(),this._constraintOptions={selection:R.ALL,interactionType:j.TUMBLE,interactionFactor:0,interactionStartCamera:null,interactionDirection:null,tiltMode:y.TUMBLE}}initialize(){this._rotScale=this.pivot===b.CENTER?3:1.5}begin(t){if(this.active){switch(this.pivot){case b.EYE:c(this._pivotPos,this.startCamera.eye),this._constraintOptions.interactionType=j.LOOK_AROUND,this._constraintOptions.tiltMode=y.LOOK_AROUND,this._constraintOptions.selection=R.NONE;break;case b.CENTER:{const i=this._intersectionHelper.intersectRayFreePointFallback(this.startCamera.ray,this._pivotPos,0===this.view.map.ground.opacity?O:{});i||c(this._pivotPos,this.startCamera.center),this._constrainPivotPoint(t,i),this.startCamera.center=this._pivotPos,this._constraintOptions.interactionType=j.TUMBLE,this._constraintOptions.tiltMode=y.TUMBLE,this._constraintOptions.selection=R.ALL&~R.DISTANCE;break}}this._constraintOptions.interactionStartCamera=this.startCamera,x(this.startCamera,t,this._lastPoint)}}_constrainPivotPoint(t,i){const s=this.startCamera,o=E();l(o,this._pivotPos,s.eye);const e=_(o),a=Math.abs(this.view.camera.position.z);this.view.renderCoordsHelper.worldUpAtPosition(s.eye,V);let n=Math.max(Math.min(D,1/Math.abs(v(V,s.viewForward)))*a,g);i&&(n=Math.min(e,n));const h=w(this.view.spatialReference),p=r(s.width/s.pixelRatio*.5,s.height/s.pixelRatio*.5),m=A(this.startCamera,p,h);let P=this.view._stage.renderView.getMinimalDepthForArea(this.view.voxelWasm,s.fullWidth/s.pixelRatio*.5,s.fullHeight/s.pixelRatio*.5,s,2.5*N,N),d=this.view._stage.renderView.getMinimalDepthForArea(this.view.voxelWasm,t[0],t[1],s,N);null==P&&null==d||(P=P??d??0,d=null==d||m===k.Horizontal?P:d,n=P>d?d:P,n=i?Math.min(n,e):n),u(o,o),c(this._pivotPos,C(this._tmpPivotPoint,s.eye,f(this._tmpPivotPoint,o,n)))}update(t){if(this.active){switch(this.pivot){case b.EYE:this.currentCamera.center=this._applyRotation(this.currentCamera,t,this.currentCamera.center,this._pivotPos);break;case b.CENTER:this.currentCamera.center=this._pivotPos,this.currentCamera.eye=this._applyRotation(this.currentCamera,t,this.currentCamera.eye,this._pivotPos)}T(this.view,this.currentCamera,this._constraintOptions),this.commitCamera()}}end(){this.active&&this.finishController()}_applyRotation(t,r,o,e){this.view.renderCoordsHelper.worldUpAtPosition(e,this._tmpWorldUp),x(t,r,this._tmpRotCurPoint);let h=(this._lastPoint[1]-this._tmpRotCurPoint[1])*this._rotScale,m=(this._tmpRotCurPoint[0]-this._lastPoint[0])*this._rotScale;l(this._tmpViewDir,o,e);const c=_(this._tmpViewDir),u=i(v(this._tmpViewDir,this._tmpWorldUp)/c);if(this.pivot===b.EYE){h*=-.5;const t=.5*Math.PI-u,i=.5*Math.PI*.99;h=t-Math.max(-i,Math.min(i,t+h))}return h=s(h+u,U.min,U.max)-u,P(this._tmpAxis,t.up,this._tmpViewDir),this.pivot===b.CENTER&&(m=-m),a(this._tmpTransf,m,this._tmpWorldUp),n(this._tmpTransf,this._tmpTransf,h,this._tmpAxis),d(this._tmpViewDir,this._tmpViewDir,this._tmpTransf),t.up=d(S,t.up,this._tmpTransf),C(S,e,this._tmpViewDir),p(this._lastPoint,this._tmpRotCurPoint),S}};t([o()],L.prototype,"pivot",void 0),L=t([e("esri.views.3d.state.controllers.RotateController")],L);const S=E(),V=E();export{b as PivotPoint,L as RotateController};
5
+ import{_ as t}from"../../../../chunks/tslib.es6.js";import{acosClamped as i,clamp as s}from"../../../../core/mathUtils.js";import{createScreenPointArray as r}from"../../../../core/screenUtils.js";import{property as o}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as e}from"../../../../core/accessorSupport/decorators/subclass.js";import{c as a,k as n}from"../../../../chunks/mat4.js";import{a as h}from"../../../../chunks/mat4f64.js";import{j as p}from"../../../../chunks/vec2.js";import{a as m}from"../../../../chunks/vec2f64.js";import{c,f as l,l as _,j as v,n as u,g as C,i as f,b as P,e as E}from"../../../../chunks/vec3.js";import{c as w}from"../../../../chunks/vec3f64.js";import{getReferenceEllipsoid as d}from"../../../../geometry/ellipsoidUtils.js";import{applyAll as T}from"../../camera/constraintUtils.js";import{ConstraintTypes as j}from"../../camera/constraintUtils/ConstraintTypes.js";import{InteractionType as R}from"../../camera/constraintUtils/InteractionType.js";import{TiltMode as y}from"../../camera/constraintUtils/TiltMode.js";import{TiltDefault as U}from"../Constraints.js";import{InteractiveController as M}from"./InteractiveController.js";import{contentIntersectorOptions as O,normalizeCoordinate as x,ROTATE_PIVOT_DISTANCE_MODIFIER as D,ROTATE_PIVOT_MIN_DISTANCE_MODIFIER as g,decideNavigationMode as k,ROTATE_SCREEN_PIXEL_AREA as A,NavigationMode as N}from"../utils/navigationUtils.js";var b;!function(t){t[t.CENTER=0]="CENTER",t[t.EYE=1]="EYE"}(b||(b={}));let L=class extends M{get _intersectionHelper(){return this.view.sceneIntersectionHelper}constructor(t){super(t),this.pivot=b.CENTER,this._rotScale=0,this._lastPoint=m(),this._tmpWorldUp=w(),this._tmpViewDir=w(),this._tmpRotCurPoint=m(),this._tmpTransf=h(),this._tmpAxis=w(),this._tmpPivotPoint=w(),this._pivotPos=w(),this._constraintOptions={selection:j.ALL,interactionType:R.TUMBLE,interactionFactor:0,interactionStartCamera:null,interactionDirection:null,tiltMode:y.TUMBLE}}initialize(){this._rotScale=this.pivot===b.CENTER?3:1.5}begin(t){if(this.active){switch(this.pivot){case b.EYE:c(this._pivotPos,this.startCamera.eye),this._constraintOptions.interactionType=R.LOOK_AROUND,this._constraintOptions.tiltMode=y.LOOK_AROUND,this._constraintOptions.selection=j.NONE;break;case b.CENTER:{const i=this._intersectionHelper.intersectRayFreePointFallback(this.startCamera.ray,this._pivotPos,0===this.view.map.ground.opacity?O:{});i||c(this._pivotPos,this.startCamera.center),this._constrainPivotPoint(t,i),this.startCamera.center=this._pivotPos,this._constraintOptions.interactionType=R.TUMBLE,this._constraintOptions.tiltMode=y.TUMBLE,this._constraintOptions.selection=j.ALL&~j.DISTANCE;break}}this._constraintOptions.interactionStartCamera=this.startCamera,x(this.startCamera,t,this._lastPoint)}}_constrainPivotPoint(t,i){const s=this.startCamera,o=w();l(o,this._pivotPos,s.eye);const e=_(o),a=Math.abs(this.view.camera.position.z);this.view.renderCoordsHelper.worldUpAtPosition(s.eye,V);let n=Math.max(Math.min(D,1/Math.abs(v(V,s.viewForward)))*a,g);i&&(n=Math.min(e,n));const h=d(this.view.spatialReference),p=r(s.width/s.pixelRatio*.5,s.height/s.pixelRatio*.5),m=k(this.startCamera,p,h);let P=this.view._stage.renderView.getMinimalDepthForArea(this.view.voxelWasm,s.fullWidth/s.pixelRatio*.5,s.fullHeight/s.pixelRatio*.5,s,2.5*A,A),E=this.view._stage.renderView.getMinimalDepthForArea(this.view.voxelWasm,t[0],t[1],s,A);null==P&&null==E||(P=P??E??0,E=null==E||m===N.Horizontal?P:E,n=P>E?E:P,n=i?Math.min(n,e):n),u(o,o),c(this._pivotPos,C(this._tmpPivotPoint,s.eye,f(this._tmpPivotPoint,o,n)))}update(t){if(this.active){switch(this.pivot){case b.EYE:this.currentCamera.center=this._applyRotation(this.currentCamera,t,this.currentCamera.center,this._pivotPos);break;case b.CENTER:this.currentCamera.center=this._pivotPos,this.currentCamera.eye=this._applyRotation(this.currentCamera,t,this.currentCamera.eye,this._pivotPos)}T(this.view,this.currentCamera,this._constraintOptions),this.commitCamera()}}end(){this.active&&this.finishController()}_applyRotation(t,r,o,e){this.view.renderCoordsHelper.worldUpAtPosition(e,this._tmpWorldUp),x(t,r,this._tmpRotCurPoint);let h=(this._lastPoint[1]-this._tmpRotCurPoint[1])*this._rotScale,m=(this._tmpRotCurPoint[0]-this._lastPoint[0])*this._rotScale;l(this._tmpViewDir,o,e);const c=_(this._tmpViewDir),u=i(v(this._tmpViewDir,this._tmpWorldUp)/c);if(this.pivot===b.EYE){h*=-.5;const t=.5*Math.PI-u,i=.5*Math.PI*.99;h=t-Math.max(-i,Math.min(i,t+h))}return h=s(h+u,U.min,U.max)-u,P(this._tmpAxis,t.up,this._tmpViewDir),this.pivot===b.CENTER&&(m=-m),a(this._tmpTransf,m,this._tmpWorldUp),n(this._tmpTransf,this._tmpTransf,h,this._tmpAxis),E(this._tmpViewDir,this._tmpViewDir,this._tmpTransf),t.up=E(S,t.up,this._tmpTransf),C(S,e,this._tmpViewDir),p(this._lastPoint,this._tmpRotCurPoint),S}};t([o()],L.prototype,"pivot",void 0),L=t([e("esri.views.3d.state.controllers.RotateController")],L);const S=w(),V=w();export{b as PivotPoint,L as RotateController};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../../../../../chunks/tslib.es6.js";import{cyclicalPI as i}from"../../../../../core/Cyclical.js";import{deg2rad as e}from"../../../../../core/mathUtils.js";import{createScreenPointArray as n,screenPointObjectToArray as s,createRenderScreenPointArray3 as o}from"../../../../../core/screenUtils.js";import"../../../../../core/Logger.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import"../../../../../core/Error.js";import{subclass as r}from"../../../../../core/accessorSupport/decorators/subclass.js";import{j as a,d as m}from"../../../../../chunks/vec2.js";import{i as h,o as c,l as p,g as _,n as l,e as u,b as d,d as g}from"../../../../../chunks/vec3.js";import{c as P}from"../../../../../chunks/vec3f64.js";import{getReferenceEllipsoid as v}from"../../../../../geometry/ellipsoidUtils.js";import{wrapAxisAngle as C}from"../../../../../geometry/support/axisAngle.js";import{create as M,fromPositionAndNormal as S,normal as w}from"../../../../../geometry/support/plane.js";import{c as b}from"../../../../../chunks/sphere.js";import{pixelDistanceToInteractionFactor as f,applyAll as j}from"../../../camera/constraintUtils.js";import{ConstraintTypes as E}from"../../../camera/constraintUtils/ConstraintTypes.js";import{InteractionType as y}from"../../../camera/constraintUtils/InteractionType.js";import{TiltMode as O}from"../../../camera/constraintUtils/TiltMode.js";import{ExponentialFalloff as A}from"../../../input/util.js";import{InteractiveController as k}from"../InteractiveController.js";import{PanPlanarMomentumController as z}from"../momentum/PanPlanarMomentumController.js";import{PanSphericalMomentumController as R}from"../momentum/PanSphericalMomentumController.js";import{RotationMomentumController as x}from"../momentum/RotationMomentumController.js";import{ZoomPlanarMomentumController as T}from"../momentum/ZoomPlanarMomentumController.js";import{ZoomSphericalMomentumController as H}from"../momentum/ZoomSphericalMomentumController.js";import{NavigationMode as U,pickPointAndInitSphere as F,contentIntersectorOptions as D,SpherePickPointFallback as I,decideNavigationMode as L,sphereOrPlanePointFromScreenPoint as Z,PAN_DISTANCE_MODIFIER as N,MIN_HEIGHT_LIMIT as B,SCREEN_PIXEL_AREA as G,intersectPlaneFromScreenPointAtEye as V,applyZoomOnSphere as q,preserveHeadingThreshold as J,applyPanSphericalPreserveHeading as K,applyPanSphericalDirectRotation as Q,normalizeRotationDelta as W,applyRotation as X,applyPanPlanar as Y,applyZoomToPoint as $}from"../../utils/navigationUtils.js";import{Camera as tt}from"../../../webgl-engine/lib/Camera.js";import{PanPlanarMomentumEstimator as it}from"../../../../navigation/PanPlanarMomentumEstimator.js";import{PanSphericalMomentumEstimator as et}from"../../../../navigation/PanSphericalMomentumEstimator.js";import{RotationMomentumEstimator as nt}from"../../../../navigation/RotationMomentumEstimator.js";import{ZoomMomentumEstimator as st}from"../../../../navigation/ZoomMomentumEstimator.js";let ot=class extends k{constructor(){super(...arguments),this._smoothRotation=new A(.05),this._rotationAxis=P(),this._beginAngle=0,this._beginHeading=0,this._panningPlane=M(),this._beginRadius=0,this._smoothScaling=new A(.05),this._zoomCenterScreen=n(),this._zoomMomentumEstimator=new st,this._rotationMomentumEstimator=new nt,this._panSphericalMomentumEstimator=new et,this._panPlanarMomentumEstimator=new it,this._adjustedSphere=b(),this._tmp3d=P(),this._tmpScreenPointArray=n(),this._beginScreenPoint=n(),this._beginScenePoint=P(),this._screenPickPoint=n(),this._scenePickPoint=P(),this._mode=U.Horizontal,this._sphere=b(),this._pointerCount=0,this._tmpInteractionDirection=P(),this._constraintOptions={selection:E.ALL,interactionType:y.NONE,interactionFactor:0,interactionStartCamera:new tt,interactionDirection:null,tiltMode:O.TUMBLE}}get _intersectionHelper(){return this.view.sceneIntersectionHelper}begin(t){if(!this.active)return;const n=this.view.navigation.momentumEnabled;this._zoomMomentumEstimator.enabled=n,this._rotationMomentumEstimator.enabled=n,this._panPlanarMomentumEstimator.enabled=n,this._panSphericalMomentumEstimator.enabled=n,this._beginHeading=-i.normalize(e(this.view.camera.heading)),this._beginRadius=t.radius,this._pointerCount=t.pointers.size,this._beginAngle=t.angle,this._smoothRotation.reset(),s(t.center,this._screenPickPoint),a(this._beginScreenPoint,this._screenPickPoint);const o=v(this.view.spatialReference),r=F(this._intersectionHelper,this.startCamera,this._screenPickPoint,o,I.Silhouette,0===this.view.map.ground.opacity?D:{});null!=r.scenePickPoint&&(this._scenePickPoint=r.scenePickPoint,this._sphere=r.sphere,h(this._beginScenePoint,this._scenePickPoint),this._mode=L(this.startCamera,this._screenPickPoint,o),this._mode===U.Vertical&&this._preparePlanarPanMode(t,r.hasGeometryIntersection),this._constraintOptions.interactionStartCamera?.copyFrom(this.startCamera))}update(t){if(!this.active)return;this.currentCamera.copyFrom(this.startCamera);const i=t.pointers.size>1;this._mode===U.Horizontal?(i&&this._zoomSpherical(t),this._panningSpherical(t),i&&this._rotateSpherical(t)):(i&&this._zoomPlanar(t),this._panningPlanar(t),i&&this._rotatePlanar(t)),this.commitCamera()}end(t){t.pointers.size===this._pointerCount&&this.update(t),this.finishController();const i=this._zoomMomentumEstimator.evaluateMomentum();if(i)return this._mode===U.Horizontal?new H({view:this.view,momentum:i,screenCenter:this._zoomCenterScreen,sceneCenter:this._beginScenePoint,radius:this._sphere[3]}):new T({view:this.view,momentum:i,zoomCenter:this._beginScenePoint});const e=this._rotationMomentumEstimator.evaluateMomentum();if(e)return new x({view:this.view,momentum:e,center:this._sphere,axis:this._rotationAxis});if(this._mode===U.Horizontal){const t=this._panSphericalMomentumEstimator.evaluateMomentum();if(t)return new R({view:this.view,momentum:t})}else{const t=this._panPlanarMomentumEstimator.evaluateMomentum();if(t)return new z({view:this.view,momentum:t})}return null}_preparePlanarPanMode(t,i){const e=c(this._tmp3d,this.startCamera.viewForward);S(this._scenePickPoint,e,this._panningPlane);const r=n(this._screenPickPoint[0],0),a=P(),m=p(this.startCamera.eye);this._adjustedSphere[3]=m<this._sphere[3]?m-100:this._sphere[3],Z(this._adjustedSphere,this.startCamera,r,a);const v=o();this.startCamera.projectToRenderScreen(a,v);const C=P(),M=P(),b=P();_(C,this._scenePickPoint,this.currentCamera.eye);const f=p(C);l(C,C);const j=N*Math.max(Math.abs(this.view.camera.position.z),B),E=this.view._stage.renderView.getMinimalDepthForArea(null,this._screenPickPoint[0],this._screenPickPoint[1],this.view.state.camera,G);let y=null!=E?E:j;y=i?Math.min(y,f):y,h(b,u(M,this.currentCamera.eye,d(M,C,y))),this._panningPlane[3]=-g(w(this._panningPlane),b),this.startCamera.center=u(M,this.startCamera.eye,d(M,this.startCamera.viewForward,y));const O=s(t.center,this._tmpScreenPointArray);V(this._panningPlane,this.startCamera,O,this._beginScenePoint)}_zoomSpherical(t){const i=this._beginRadius/t.radius,e=.001875*Math.min(Math.max(t.radius,40),120);this._smoothScaling.gain=e,this._smoothScaling.update(i),q(this._sphere,this.currentCamera,this._smoothScaling.value),s(t.center,this._zoomCenterScreen),this._zoomMomentumEstimator.add(this._smoothScaling.value,.001*t.timestamp),this._constraintOptions.interactionType=y.ZOOM,this._constraintOptions.interactionFactor=f(t.radius-this._beginRadius),j(this.view,this.currentCamera,this._constraintOptions)}_panningSpherical(t){const i=s(t.center,this._tmpScreenPointArray);Z(this._sphere,this.currentCamera,i,this._tmp3d),J(this._beginScenePoint,g(this.currentCamera.up,this._beginScenePoint),this._sphere[3],this._beginHeading,this.view.camera.tilt,this.startCamera)?(K(this._sphere,this.currentCamera,this._beginScenePoint,this._tmp3d,this._beginHeading,this.view.camera.tilt,!1),this._panSphericalMomentumEstimator.addMomentumPreserveHeading(i,this._tmp3d,.001*t.timestamp,this.startCamera,this._sphere,this._beginHeading,this.view.camera.tilt)):(Q(this._sphere,this.currentCamera,this._beginScenePoint,this._tmp3d,this.view.camera.tilt,!1),this._panSphericalMomentumEstimator.addMomentumDirectRotation(i,this._tmp3d,.001*t.timestamp,this.startCamera,this._sphere[3],this.view.camera.tilt)),this._constraintOptions.interactionType=y.PAN,this._constraintOptions.interactionFactor=f(m(this._screenPickPoint,i)),j(this.view,this.currentCamera,this._constraintOptions)}_rotateSpherical(t){l(this._rotationAxis,this._scenePickPoint),this.currentCamera.aboveGround||c(this._rotationAxis,this._rotationAxis);const i=this._smoothRotation.value,e=i+W(t.angle-i),n=.00125*Math.min(Math.max(t.radius,40),120);this._smoothRotation.gain=n,this._smoothRotation.update(e);const s=this._smoothRotation.value-this._beginAngle;this._rotationMomentumEstimator.add(s,.001*t.timestamp),X(this.currentCamera,this._sphere,C(this._rotationAxis,s)),this._constraintOptions.interactionType=y.TUMBLE,this._constraintOptions.interactionFactor=f(t.radius*e),j(this.view,this.currentCamera,this._constraintOptions)}_panningPlanar(t){const i=s(t.center,this._tmpScreenPointArray);V(this._panningPlane,this.currentCamera,i,this._tmp3d)&&(Y(this.currentCamera,this._beginScenePoint,this._tmp3d),this._panPlanarMomentumEstimator.add(i,this._tmp3d,.001*t.timestamp),this._constraintOptions.interactionType=y.PAN,this._constraintOptions.interactionFactor=f(m(this._beginScreenPoint,i)),this._constraintOptions.interactionDirection=this.view.renderCoordsHelper.worldUpAtPosition(this.currentCamera.eye,this._tmpInteractionDirection),j(this.view,this.currentCamera,this._constraintOptions),this._constraintOptions.interactionDirection=null)}_zoomPlanar(t){const i=this._beginRadius/t.radius,e=.001875*Math.min(Math.max(t.radius,40),120);this._smoothScaling.gain=e,this._smoothScaling.update(i),this._zoomMomentumEstimator.add(this._smoothScaling.value,.001*t.timestamp),$(this.currentCamera,this._beginScenePoint,this._smoothScaling.value,this.view.state.constraints.minimumPoiDistance),this._constraintOptions.interactionType=y.ZOOM,this._constraintOptions.interactionFactor=f(t.radius-this._beginRadius),j(this.view,this.currentCamera,this._constraintOptions)}_rotatePlanar(t){h(this._rotationAxis,this._beginScenePoint),this.currentCamera.aboveGround||c(this._rotationAxis,this._rotationAxis);const i=this._smoothRotation.value;let e=t.angle-i;e=W(e);const n=i+e,s=.00125*Math.min(Math.max(t.radius,40),120);this._smoothRotation.gain=s,this._smoothRotation.update(n);const o=this._smoothRotation.value-this._beginAngle;this._rotationMomentumEstimator.add(o,.001*t.timestamp),X(this.currentCamera,this._sphere,C(this._rotationAxis,o)),this._constraintOptions.interactionType=y.TUMBLE,this._constraintOptions.interactionFactor=f(t.radius*o),j(this.view,this.currentCamera,this._constraintOptions)}};ot=t([r("esri.views.3d.state.controllers.global.PinchAndPanController")],ot);export{ot as PinchAndPanController};
5
+ import{_ as t}from"../../../../../chunks/tslib.es6.js";import{cyclicalPI as i}from"../../../../../core/Cyclical.js";import{deg2rad as e}from"../../../../../core/mathUtils.js";import{createScreenPointArray as n,screenPointObjectToArray as s,createRenderScreenPointArray3 as o}from"../../../../../core/screenUtils.js";import"../../../../../core/Logger.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import"../../../../../core/Error.js";import{subclass as r}from"../../../../../core/accessorSupport/decorators/subclass.js";import{j as a,d as m}from"../../../../../chunks/vec2.js";import{c as h,E as c,l as p,f as _,n as l,g as u,i as d,j as g}from"../../../../../chunks/vec3.js";import{c as P}from"../../../../../chunks/vec3f64.js";import{getReferenceEllipsoid as v}from"../../../../../geometry/ellipsoidUtils.js";import{wrapAxisAngle as C}from"../../../../../geometry/support/axisAngle.js";import{create as M,fromPositionAndNormal as S,normal as w}from"../../../../../geometry/support/plane.js";import{c as b}from"../../../../../chunks/sphere.js";import{pixelDistanceToInteractionFactor as f,applyAll as j}from"../../../camera/constraintUtils.js";import{ConstraintTypes as E}from"../../../camera/constraintUtils/ConstraintTypes.js";import{InteractionType as y}from"../../../camera/constraintUtils/InteractionType.js";import{TiltMode as O}from"../../../camera/constraintUtils/TiltMode.js";import{ExponentialFalloff as A}from"../../../input/util.js";import{InteractiveController as k}from"../InteractiveController.js";import{PanPlanarMomentumController as z}from"../momentum/PanPlanarMomentumController.js";import{PanSphericalMomentumController as R}from"../momentum/PanSphericalMomentumController.js";import{RotationMomentumController as x}from"../momentum/RotationMomentumController.js";import{ZoomPlanarMomentumController as T}from"../momentum/ZoomPlanarMomentumController.js";import{ZoomSphericalMomentumController as H}from"../momentum/ZoomSphericalMomentumController.js";import{NavigationMode as U,pickPointAndInitSphere as F,contentIntersectorOptions as D,SpherePickPointFallback as I,decideNavigationMode as L,sphereOrPlanePointFromScreenPoint as Z,PAN_DISTANCE_MODIFIER as N,MIN_HEIGHT_LIMIT as B,SCREEN_PIXEL_AREA as G,intersectPlaneFromScreenPointAtEye as V,applyZoomOnSphere as q,preserveHeadingThreshold as J,applyPanSphericalPreserveHeading as K,applyPanSphericalDirectRotation as Q,normalizeRotationDelta as W,applyRotation as X,applyPanPlanar as Y,applyZoomToPoint as $}from"../../utils/navigationUtils.js";import{Camera as tt}from"../../../webgl-engine/lib/Camera.js";import{PanPlanarMomentumEstimator as it}from"../../../../navigation/PanPlanarMomentumEstimator.js";import{PanSphericalMomentumEstimator as et}from"../../../../navigation/PanSphericalMomentumEstimator.js";import{RotationMomentumEstimator as nt}from"../../../../navigation/RotationMomentumEstimator.js";import{ZoomMomentumEstimator as st}from"../../../../navigation/ZoomMomentumEstimator.js";let ot=class extends k{constructor(){super(...arguments),this._smoothRotation=new A(.05),this._rotationAxis=P(),this._beginAngle=0,this._beginHeading=0,this._panningPlane=M(),this._beginRadius=0,this._smoothScaling=new A(.05),this._zoomCenterScreen=n(),this._zoomMomentumEstimator=new st,this._rotationMomentumEstimator=new nt,this._panSphericalMomentumEstimator=new et,this._panPlanarMomentumEstimator=new it,this._adjustedSphere=b(),this._tmp3d=P(),this._tmpScreenPointArray=n(),this._beginScreenPoint=n(),this._beginScenePoint=P(),this._screenPickPoint=n(),this._scenePickPoint=P(),this._mode=U.Horizontal,this._sphere=b(),this._pointerCount=0,this._tmpInteractionDirection=P(),this._constraintOptions={selection:E.ALL,interactionType:y.NONE,interactionFactor:0,interactionStartCamera:new tt,interactionDirection:null,tiltMode:O.TUMBLE}}get _intersectionHelper(){return this.view.sceneIntersectionHelper}begin(t){if(!this.active)return;const n=this.view.navigation.momentumEnabled;this._zoomMomentumEstimator.enabled=n,this._rotationMomentumEstimator.enabled=n,this._panPlanarMomentumEstimator.enabled=n,this._panSphericalMomentumEstimator.enabled=n,this._beginHeading=-i.normalize(e(this.view.camera.heading)),this._beginRadius=t.radius,this._pointerCount=t.pointers.size,this._beginAngle=t.angle,this._smoothRotation.reset(),s(t.center,this._screenPickPoint),a(this._beginScreenPoint,this._screenPickPoint);const o=v(this.view.spatialReference),r=F(this._intersectionHelper,this.startCamera,this._screenPickPoint,o,I.Silhouette,0===this.view.map.ground.opacity?D:{});null!=r.scenePickPoint&&(this._scenePickPoint=r.scenePickPoint,this._sphere=r.sphere,h(this._beginScenePoint,this._scenePickPoint),this._mode=L(this.startCamera,this._screenPickPoint,o),this._mode===U.Vertical&&this._preparePlanarPanMode(t,r.hasGeometryIntersection),this._constraintOptions.interactionStartCamera?.copyFrom(this.startCamera))}update(t){if(!this.active)return;this.currentCamera.copyFrom(this.startCamera);const i=t.pointers.size>1;this._mode===U.Horizontal?(i&&this._zoomSpherical(t),this._panningSpherical(t),i&&this._rotateSpherical(t)):(i&&this._zoomPlanar(t),this._panningPlanar(t),i&&this._rotatePlanar(t)),this.commitCamera()}end(t){t.pointers.size===this._pointerCount&&this.update(t),this.finishController();const i=this._zoomMomentumEstimator.evaluateMomentum();if(i)return this._mode===U.Horizontal?new H({view:this.view,momentum:i,screenCenter:this._zoomCenterScreen,sceneCenter:this._beginScenePoint,radius:this._sphere[3]}):new T({view:this.view,momentum:i,zoomCenter:this._beginScenePoint});const e=this._rotationMomentumEstimator.evaluateMomentum();if(e)return new x({view:this.view,momentum:e,center:this._sphere,axis:this._rotationAxis});if(this._mode===U.Horizontal){const t=this._panSphericalMomentumEstimator.evaluateMomentum();if(t)return new R({view:this.view,momentum:t})}else{const t=this._panPlanarMomentumEstimator.evaluateMomentum();if(t)return new z({view:this.view,momentum:t})}return null}_preparePlanarPanMode(t,i){const e=c(this._tmp3d,this.startCamera.viewForward);S(this._scenePickPoint,e,this._panningPlane);const r=n(this._screenPickPoint[0],0),a=P(),m=p(this.startCamera.eye);this._adjustedSphere[3]=m<this._sphere[3]?m-100:this._sphere[3],Z(this._adjustedSphere,this.startCamera,r,a);const v=o();this.startCamera.projectToRenderScreen(a,v);const C=P(),M=P(),b=P();_(C,this._scenePickPoint,this.currentCamera.eye);const f=p(C);l(C,C);const j=N*Math.max(Math.abs(this.view.camera.position.z),B),E=this.view._stage.renderView.getMinimalDepthForArea(null,this._screenPickPoint[0],this._screenPickPoint[1],this.view.state.camera,G);let y=null!=E?E:j;y=i?Math.min(y,f):y,h(b,u(M,this.currentCamera.eye,d(M,C,y))),this._panningPlane[3]=-g(w(this._panningPlane),b),this.startCamera.center=u(M,this.startCamera.eye,d(M,this.startCamera.viewForward,y));const O=s(t.center,this._tmpScreenPointArray);V(this._panningPlane,this.startCamera,O,this._beginScenePoint)}_zoomSpherical(t){const i=this._beginRadius/t.radius,e=.001875*Math.min(Math.max(t.radius,40),120);this._smoothScaling.gain=e,this._smoothScaling.update(i),q(this._sphere,this.currentCamera,this._smoothScaling.value),s(t.center,this._zoomCenterScreen),this._zoomMomentumEstimator.add(this._smoothScaling.value,.001*t.timestamp),this._constraintOptions.interactionType=y.ZOOM,this._constraintOptions.interactionFactor=f(t.radius-this._beginRadius),j(this.view,this.currentCamera,this._constraintOptions)}_panningSpherical(t){const i=s(t.center,this._tmpScreenPointArray);Z(this._sphere,this.currentCamera,i,this._tmp3d),J(this._beginScenePoint,g(this.currentCamera.up,this._beginScenePoint),this._sphere[3],this._beginHeading,this.view.camera.tilt,this.startCamera)?(K(this._sphere,this.currentCamera,this._beginScenePoint,this._tmp3d,this._beginHeading,this.view.camera.tilt,!1),this._panSphericalMomentumEstimator.addMomentumPreserveHeading(i,this._tmp3d,.001*t.timestamp,this.startCamera,this._sphere,this._beginHeading,this.view.camera.tilt)):(Q(this._sphere,this.currentCamera,this._beginScenePoint,this._tmp3d,this.view.camera.tilt,!1),this._panSphericalMomentumEstimator.addMomentumDirectRotation(i,this._tmp3d,.001*t.timestamp,this.startCamera,this._sphere[3],this.view.camera.tilt)),this._constraintOptions.interactionType=y.PAN,this._constraintOptions.interactionFactor=f(m(this._screenPickPoint,i)),j(this.view,this.currentCamera,this._constraintOptions)}_rotateSpherical(t){l(this._rotationAxis,this._scenePickPoint),this.currentCamera.aboveGround||c(this._rotationAxis,this._rotationAxis);const i=this._smoothRotation.value,e=i+W(t.angle-i),n=.00125*Math.min(Math.max(t.radius,40),120);this._smoothRotation.gain=n,this._smoothRotation.update(e);const s=this._smoothRotation.value-this._beginAngle;this._rotationMomentumEstimator.add(s,.001*t.timestamp),X(this.currentCamera,this._sphere,C(this._rotationAxis,s)),this._constraintOptions.interactionType=y.TUMBLE,this._constraintOptions.interactionFactor=f(t.radius*e),j(this.view,this.currentCamera,this._constraintOptions)}_panningPlanar(t){const i=s(t.center,this._tmpScreenPointArray);V(this._panningPlane,this.currentCamera,i,this._tmp3d)&&(Y(this.currentCamera,this._beginScenePoint,this._tmp3d),this._panPlanarMomentumEstimator.add(i,this._tmp3d,.001*t.timestamp),this._constraintOptions.interactionType=y.PAN,this._constraintOptions.interactionFactor=f(m(this._beginScreenPoint,i)),this._constraintOptions.interactionDirection=this.view.renderCoordsHelper.worldUpAtPosition(this.currentCamera.eye,this._tmpInteractionDirection),j(this.view,this.currentCamera,this._constraintOptions),this._constraintOptions.interactionDirection=null)}_zoomPlanar(t){const i=this._beginRadius/t.radius,e=.001875*Math.min(Math.max(t.radius,40),120);this._smoothScaling.gain=e,this._smoothScaling.update(i),this._zoomMomentumEstimator.add(this._smoothScaling.value,.001*t.timestamp),$(this.currentCamera,this._beginScenePoint,this._smoothScaling.value,this.view.state.constraints.minimumPoiDistance),this._constraintOptions.interactionType=y.ZOOM,this._constraintOptions.interactionFactor=f(t.radius-this._beginRadius),j(this.view,this.currentCamera,this._constraintOptions)}_rotatePlanar(t){h(this._rotationAxis,this._beginScenePoint),this.currentCamera.aboveGround||c(this._rotationAxis,this._rotationAxis);const i=this._smoothRotation.value;let e=t.angle-i;e=W(e);const n=i+e,s=.00125*Math.min(Math.max(t.radius,40),120);this._smoothRotation.gain=s,this._smoothRotation.update(n);const o=this._smoothRotation.value-this._beginAngle;this._rotationMomentumEstimator.add(o,.001*t.timestamp),X(this.currentCamera,this._sphere,C(this._rotationAxis,o)),this._constraintOptions.interactionType=y.TUMBLE,this._constraintOptions.interactionFactor=f(t.radius*o),j(this.view,this.currentCamera,this._constraintOptions)}};ot=t([r("esri.views.3d.state.controllers.global.PinchAndPanController")],ot);export{ot as PinchAndPanController};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../../../../../chunks/tslib.es6.js";import{clamp as i}from"../../../../../core/mathUtils.js";import{createScreenPointArray as r}from"../../../../../core/screenUtils.js";import"../../../../../core/Logger.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import"../../../../../core/Error.js";import{subclass as e}from"../../../../../core/accessorSupport/decorators/subclass.js";import{j as s,d as a}from"../../../../../chunks/vec2.js";import{a as n}from"../../../../../chunks/vec2f64.js";import{n as o,g as c,l as h,d as m,b as p,e as l}from"../../../../../chunks/vec3.js";import{c as _}from"../../../../../chunks/vec3f64.js";import{getReferenceEllipsoid as u}from"../../../../../geometry/ellipsoidUtils.js";import{create as P,fromPoints as y}from"../../../../../geometry/support/axisAngle.js";import{c as C}from"../../../../../chunks/sphere.js";import{pixelDistanceToInteractionFactor as d,applyAll as f}from"../../../camera/constraintUtils.js";import{ConstraintTypes as g}from"../../../camera/constraintUtils/ConstraintTypes.js";import{InteractionType as j}from"../../../camera/constraintUtils/InteractionType.js";import{applySurfaceCollisionConstraint as v}from"../../../camera/constraintUtils/surfaceCollision.js";import{TiltMode as R}from"../../../camera/constraintUtils/TiltMode.js";import{InteractiveController as k}from"../InteractiveController.js";import{NavigationMode as D,normalizeCoordinate as M,pickPointAndInitSphere as w,contentIntersectorOptions as A,SpherePickPointFallback as U,decideNavigationMode as O,DISTANCE_CLAMP_VALUES as b,PIVOT_DISTANCE_MODIFIER as z,SCREEN_PIXEL_AREA as S,sphereOrPlanePointFromScreenPoint as H,applyRotation as T}from"../../utils/navigationUtils.js";import{fromScreenAtEye as x}from"../../../support/geometryUtils/ray.js";let L=class extends k{constructor(){super(...arguments),this._pickPoint=_(),this._tmpP0=n(),this._panAxisAngle=P(),this._tmpRayDir=_(),this._tmpRayDirPick=_(),this._targetOnSphere=_(),this._navMode=D.Horizontal,this._tmpRay={origin:_(),direction:_()},this.dragBeginPoint=r(),this._normalizedAnchorPoint=n(),this._constraintOptions={selection:g.ALL_EXCEPT_COLLISION,interactionType:j.ZOOM,interactionFactor:0,interactionStartCamera:null,interactionDirection:null,tiltMode:R.TUMBLE},this._sphere=C(),this._hasPickPoint=!1}get _intersectionHelper(){return this.view.sceneIntersectionHelper}begin(t){if(!this.active)return;s(this.dragBeginPoint,t),M(this.startCamera,t,this._normalizedAnchorPoint);const r=u(this.view.spatialReference),e=w(this._intersectionHelper,this.startCamera,t,r,U.Ellipsoid,0===this.view.map.ground.opacity?A:{});if(this._navMode=O(this.startCamera,t,r),this._navMode===D.Horizontal)this._hasPickPoint=!!e.scenePickPoint,this._pickPoint=e.scenePickPoint??this._pickPoint,this._sphere=e.sphere;else{let r;x(this.startCamera,t,this._tmpRay),o(this._tmpRay.direction,this._tmpRay.direction),null!=e.scenePickPoint&&(c(this._tmpRayDirPick,this.startCamera.eye,e.scenePickPoint),r=h(this._tmpRayDirPick));const s=Math.abs(this.view.camera.position.z);this.view.renderCoordsHelper.worldUpAtPosition(this.startCamera.eye,E);let a=i(Math.min(z,1/Math.abs(m(E,this._tmpRay.direction)))*s,b[0],b[1]);const n=this.view._stage.renderView.getMinimalDepthForArea(null,t[0],t[1],this.view.state.camera,S);a=null!=n?n:a,a=null!=r?Math.min(a,r):a,this._hasPickPoint=!0,p(this._tmpRay.direction,this._tmpRay.direction,a),l(this._pickPoint,this._tmpRay.origin,this._tmpRay.direction)}this._constraintOptions.interactionStartCamera=this.startCamera}update(t){if(this.active){if(this.currentCamera.eye=this.startCamera.eye,this.currentCamera.center=this.startCamera.center,this.currentCamera.up=this.startCamera.up,this._navMode===D.Horizontal){c(this._tmpRayDir,this.currentCamera.center,this.currentCamera.eye);const i=h(this._tmpRayDir);M(this.currentCamera,t,this._tmpP0);const r=12*(this._normalizedAnchorPoint[1]-this._tmpP0[1]);let e=i*2**r;const s=this.view.state.constraints.minimumPoiDistance;if(r<0&&e<s&&(e=s),Math.abs(i-e)<1e-6)return;if(this._hasPickPoint&&e<i){const t=1-(1-e/i)*(1-this._sphere[3]/h(this.currentCamera.center));this.currentCamera.center=p(B,this.currentCamera.center,t)}p(this._tmpRayDir,this._tmpRayDir,-e/i),this.currentCamera.eye=l(B,this.currentCamera.center,this._tmpRayDir),this._constraintOptions.interactionFactor=d(a(this.dragBeginPoint,t)),f(this.view,this.currentCamera,this._constraintOptions),this._hasPickPoint&&(H(this._sphere,this.currentCamera,this.dragBeginPoint,this._targetOnSphere),y(this._pickPoint,this._targetOnSphere,this._panAxisAngle),T(this.currentCamera,this._sphere,this._panAxisAngle))}else{const i=h(this._tmpRay.direction);M(this.currentCamera,t,this._tmpP0);const r=12*(this._normalizedAnchorPoint[1]-this._tmpP0[1]);let e=i*2**r;const s=this.view.state.constraints.minimumPoiDistance;if(r<0&&e<s&&(e=s),Math.abs(i-e)<1e-6)return;p(this._tmpRayDir,this._tmpRay.direction,1-e/i),this.currentCamera.eye=l(B,this.currentCamera.eye,this._tmpRayDir),this.currentCamera.center=l(B,this.currentCamera.center,this._tmpRayDir)}v(this.view,this.currentCamera),this.commitCamera()}}end(){this.active&&this.finishController()}};L=t([e("esri.views.3d.state.controllers.global.ZoomController")],L);const B=_(),E=_();export{L as ZoomController};
5
+ import{_ as t}from"../../../../../chunks/tslib.es6.js";import{clamp as i}from"../../../../../core/mathUtils.js";import{createScreenPointArray as r}from"../../../../../core/screenUtils.js";import"../../../../../core/Logger.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import"../../../../../core/Error.js";import{subclass as e}from"../../../../../core/accessorSupport/decorators/subclass.js";import{j as s,d as a}from"../../../../../chunks/vec2.js";import{a as n}from"../../../../../chunks/vec2f64.js";import{n as o,f as c,l as h,j as m,i as p,g as l}from"../../../../../chunks/vec3.js";import{c as _}from"../../../../../chunks/vec3f64.js";import{getReferenceEllipsoid as u}from"../../../../../geometry/ellipsoidUtils.js";import{create as P,fromPoints as y}from"../../../../../geometry/support/axisAngle.js";import{c as C}from"../../../../../chunks/sphere.js";import{pixelDistanceToInteractionFactor as d,applyAll as f}from"../../../camera/constraintUtils.js";import{ConstraintTypes as g}from"../../../camera/constraintUtils/ConstraintTypes.js";import{InteractionType as j}from"../../../camera/constraintUtils/InteractionType.js";import{applySurfaceCollisionConstraint as v}from"../../../camera/constraintUtils/surfaceCollision.js";import{TiltMode as R}from"../../../camera/constraintUtils/TiltMode.js";import{InteractiveController as k}from"../InteractiveController.js";import{NavigationMode as D,normalizeCoordinate as M,pickPointAndInitSphere as w,contentIntersectorOptions as A,SpherePickPointFallback as U,decideNavigationMode as O,DISTANCE_CLAMP_VALUES as b,PIVOT_DISTANCE_MODIFIER as z,SCREEN_PIXEL_AREA as S,sphereOrPlanePointFromScreenPoint as H,applyRotation as T}from"../../utils/navigationUtils.js";import{fromScreenAtEye as x}from"../../../support/geometryUtils/ray.js";let L=class extends k{constructor(){super(...arguments),this._pickPoint=_(),this._tmpP0=n(),this._panAxisAngle=P(),this._tmpRayDir=_(),this._tmpRayDirPick=_(),this._targetOnSphere=_(),this._navMode=D.Horizontal,this._tmpRay={origin:_(),direction:_()},this.dragBeginPoint=r(),this._normalizedAnchorPoint=n(),this._constraintOptions={selection:g.ALL_EXCEPT_COLLISION,interactionType:j.ZOOM,interactionFactor:0,interactionStartCamera:null,interactionDirection:null,tiltMode:R.TUMBLE},this._sphere=C(),this._hasPickPoint=!1}get _intersectionHelper(){return this.view.sceneIntersectionHelper}begin(t){if(!this.active)return;s(this.dragBeginPoint,t),M(this.startCamera,t,this._normalizedAnchorPoint);const r=u(this.view.spatialReference),e=w(this._intersectionHelper,this.startCamera,t,r,U.Ellipsoid,0===this.view.map.ground.opacity?A:{});if(this._navMode=O(this.startCamera,t,r),this._navMode===D.Horizontal)this._hasPickPoint=!!e.scenePickPoint,this._pickPoint=e.scenePickPoint??this._pickPoint,this._sphere=e.sphere;else{let r;x(this.startCamera,t,this._tmpRay),o(this._tmpRay.direction,this._tmpRay.direction),null!=e.scenePickPoint&&(c(this._tmpRayDirPick,this.startCamera.eye,e.scenePickPoint),r=h(this._tmpRayDirPick));const s=Math.abs(this.view.camera.position.z);this.view.renderCoordsHelper.worldUpAtPosition(this.startCamera.eye,E);let a=i(Math.min(z,1/Math.abs(m(E,this._tmpRay.direction)))*s,b[0],b[1]);const n=this.view._stage.renderView.getMinimalDepthForArea(null,t[0],t[1],this.view.state.camera,S);a=null!=n?n:a,a=null!=r?Math.min(a,r):a,this._hasPickPoint=!0,p(this._tmpRay.direction,this._tmpRay.direction,a),l(this._pickPoint,this._tmpRay.origin,this._tmpRay.direction)}this._constraintOptions.interactionStartCamera=this.startCamera}update(t){if(this.active){if(this.currentCamera.eye=this.startCamera.eye,this.currentCamera.center=this.startCamera.center,this.currentCamera.up=this.startCamera.up,this._navMode===D.Horizontal){c(this._tmpRayDir,this.currentCamera.center,this.currentCamera.eye);const i=h(this._tmpRayDir);M(this.currentCamera,t,this._tmpP0);const r=12*(this._normalizedAnchorPoint[1]-this._tmpP0[1]);let e=i*2**r;const s=this.view.state.constraints.minimumPoiDistance;if(r<0&&e<s&&(e=s),Math.abs(i-e)<1e-6)return;if(this._hasPickPoint&&e<i){const t=1-(1-e/i)*(1-this._sphere[3]/h(this.currentCamera.center));this.currentCamera.center=p(B,this.currentCamera.center,t)}p(this._tmpRayDir,this._tmpRayDir,-e/i),this.currentCamera.eye=l(B,this.currentCamera.center,this._tmpRayDir),this._constraintOptions.interactionFactor=d(a(this.dragBeginPoint,t)),f(this.view,this.currentCamera,this._constraintOptions),this._hasPickPoint&&(H(this._sphere,this.currentCamera,this.dragBeginPoint,this._targetOnSphere),y(this._pickPoint,this._targetOnSphere,this._panAxisAngle),T(this.currentCamera,this._sphere,this._panAxisAngle))}else{const i=h(this._tmpRay.direction);M(this.currentCamera,t,this._tmpP0);const r=12*(this._normalizedAnchorPoint[1]-this._tmpP0[1]);let e=i*2**r;const s=this.view.state.constraints.minimumPoiDistance;if(r<0&&e<s&&(e=s),Math.abs(i-e)<1e-6)return;p(this._tmpRayDir,this._tmpRay.direction,1-e/i),this.currentCamera.eye=l(B,this.currentCamera.eye,this._tmpRayDir),this.currentCamera.center=l(B,this.currentCamera.center,this._tmpRayDir)}v(this.view,this.currentCamera),this.commitCamera()}}end(){this.active&&this.finishController()}};L=t([e("esri.views.3d.state.controllers.global.ZoomController")],L);const B=_(),E=_();export{L as ZoomController};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../../../../../chunks/tslib.es6.js";import{clamp as i}from"../../../../../core/mathUtils.js";import{Milliseconds as e}from"../../../../../core/time.js";import"../../../../../core/Logger.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import"../../../../../core/Error.js";import{subclass as r}from"../../../../../core/accessorSupport/decorators/subclass.js";import{i as s,n as o,b as a,d as n,l as m,g as c,e as h,a as p}from"../../../../../chunks/vec3.js";import{c as _}from"../../../../../chunks/vec3f64.js";import{getReferenceEllipsoid as l}from"../../../../../geometry/ellipsoidUtils.js";import{c as y}from"../../../../../chunks/sphere.js";import{applyAll as f}from"../../../camera/constraintUtils.js";import{ConstraintTypes as d}from"../../../camera/constraintUtils/ConstraintTypes.js";import{InteractionType as g}from"../../../camera/constraintUtils/InteractionType.js";import{applySurfaceCollisionConstraint as u}from"../../../camera/constraintUtils/surfaceCollision.js";import{TiltMode as w}from"../../../camera/constraintUtils/TiltMode.js";import{PointToPointAnimationController as j}from"../PointToPointAnimationController.js";import{contentIntersectorOptions as C,decideNavigationMode as D,ZOOM_MAX_DISTANCE_MODIFIER as v,ZOOM_MIN_DISTANCE_MODIFIER as R,ZOOM_DISTANCE_MODIFIER as M,NavigationMode as b,panToPosition as L}from"../../utils/navigationUtils.js";import{fromScreenAtEye as S}from"../../../support/geometryUtils/ray.js";import{intersectScreen as U}from"../../../support/geometryUtils/sphere.js";import{Camera as z}from"../../../webgl-engine/lib/Camera.js";import{newIntersector as O}from"../../../webgl-engine/lib/Intersector.js";import{outExpo as V}from"../../../../animation/easing.js";const T=.6,F=4,k=60;let A=class extends j{constructor(){super(...arguments),this._zoomLocation=_(),this._tmpCamera=new z,this._tmpViewDir=_(),this._tmpRayDir={origin:_(),direction:_()},this._targetOnSphere=_(),this._tmpCenter=_(),this._constraintOptions={selection:d.ALL_EXCEPT_COLLISION,interactionType:g.ZOOM,interactionFactor:null,interactionStartCamera:new z,interactionDirection:null,tiltMode:w.TUMBLE},this._sphere=y()}initialize(){this._intersector=O(this.view.state.viewingMode)}zoomStep(t,i){if(!this.active)return;const e=this.view.state,{interactionStartCamera:r}=this._constraintOptions;r&&(this.animation.finished?r.copyFrom(e.camera):this.animation.cameraAt(1,r));let o=!1,a=!1;this.intersectionHelper.intersectScreen(i,this._zoomLocation,0===this.view.map.ground.opacity?C:{})&&(o=t>0,a=!0),this._tmpCamera.copyFrom(e.camera),o?this.intersectionHelper.intersectRay(this._tmpCamera.ray,this._intersector,this._tmpCenter)&&(this._tmpCamera.center=this._tmpCenter):this.intersectionHelper.intersectRay(this._tmpCamera.ray,this._intersector,this._zoomLocation)?this._tmpCamera.center=this._zoomLocation:s(this._zoomLocation,this._tmpCamera.center),this._updateCamera(this._tmpCamera,t,this._zoomLocation,i,a),this.begin(this._tmpCamera)}animationSettings(){return{duration:e(600),easing:V}}_updateCamera(t,e,r,s,_){const y=l(this.view.spatialReference),d=D(t,s,y),g=Math.abs(this.view.camera.position.z);o(H,t.eye),a(H,H,-1),S(t,s,this._tmpRayDir),o(this._tmpRayDir.direction,this._tmpRayDir.direction);const w=i(Math.min(M,1/Math.abs(n(H,this._tmpRayDir.direction)))*g,R,v);if(d===b.Horizontal){let i=T**e;this._sphere[3]=m(r),c(this._tmpViewDir,t.center,t.eye);const o=Math.min(m(this._tmpViewDir),w);let n=o*i;if(i<=1&&n<F&&(n=F,i=n/o),Math.abs(o-n)<1e-6)return;const _=m(t.center);if(this._sphere[3]!==_){const e=this._sphere[3]+i*(_-this._sphere[3]);t.center=a(E,t.center,e/_)}a(this._tmpViewDir,this._tmpViewDir,-i),t.eye=h(E,t.center,this._tmpViewDir),f(this.view,t,this._constraintOptions),p(r,t.center)>1e-12&&U(this._sphere,t,s,this._targetOnSphere)&&L(this._sphere,t,r,this._targetOnSphere,this.view.camera.heading,this.view.camera.tilt,!0)}else{let i=T**Math.abs(e);const o=e>0?1:-1;c(this._tmpViewDir,r,t.eye);const n=m(this._tmpViewDir),p=this.view._stage.renderView.getMinimalDepthForArea(null,s[0],s[1],this.view.state.camera,k);let l=null!=p?p:w;l=_&&e>0?Math.min(l,n):l,a(this._tmpRayDir.direction,this._tmpRayDir.direction,l),h(r,this._tmpRayDir.origin,this._tmpRayDir.direction);let y=l*i;const f=Math.max(F,1.01*t.nearFar[0]);if(e>0&&y<f&&(y=f,i=y/l),Math.abs(l-y)<1e-6)return;a(this._tmpRayDir.direction,this._tmpRayDir.direction,o*(1-i)),t.eye=h(E,t.eye,this._tmpRayDir.direction),t.center=h(E,t.center,this._tmpRayDir.direction)}u(this.view,t)}};A=t([r("esri.views.3d.state.controllers.global.ZoomStepController")],A);const E=_(),H=_();export{A as ZoomStepController};
5
+ import{_ as t}from"../../../../../chunks/tslib.es6.js";import{clamp as i}from"../../../../../core/mathUtils.js";import{Milliseconds as e}from"../../../../../core/time.js";import"../../../../../core/Logger.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import"../../../../../core/Error.js";import{subclass as r}from"../../../../../core/accessorSupport/decorators/subclass.js";import{c as s,n as o,i as a,j as n,l as m,f as c,g as h,a as p}from"../../../../../chunks/vec3.js";import{c as _}from"../../../../../chunks/vec3f64.js";import{getReferenceEllipsoid as l}from"../../../../../geometry/ellipsoidUtils.js";import{c as y}from"../../../../../chunks/sphere.js";import{applyAll as f}from"../../../camera/constraintUtils.js";import{ConstraintTypes as g}from"../../../camera/constraintUtils/ConstraintTypes.js";import{InteractionType as j}from"../../../camera/constraintUtils/InteractionType.js";import{applySurfaceCollisionConstraint as u}from"../../../camera/constraintUtils/surfaceCollision.js";import{TiltMode as w}from"../../../camera/constraintUtils/TiltMode.js";import{PointToPointAnimationController as d}from"../PointToPointAnimationController.js";import{contentIntersectorOptions as C,decideNavigationMode as D,ZOOM_MAX_DISTANCE_MODIFIER as v,ZOOM_MIN_DISTANCE_MODIFIER as R,ZOOM_DISTANCE_MODIFIER as M,NavigationMode as b,panToPosition as L}from"../../utils/navigationUtils.js";import{fromScreenAtEye as S}from"../../../support/geometryUtils/ray.js";import{intersectScreen as U}from"../../../support/geometryUtils/sphere.js";import{Camera as z}from"../../../webgl-engine/lib/Camera.js";import{newIntersector as O}from"../../../webgl-engine/lib/Intersector.js";import{outExpo as V}from"../../../../animation/easing.js";const T=.6,F=4,k=60;let A=class extends d{constructor(){super(...arguments),this._zoomLocation=_(),this._tmpCamera=new z,this._tmpViewDir=_(),this._tmpRayDir={origin:_(),direction:_()},this._targetOnSphere=_(),this._tmpCenter=_(),this._constraintOptions={selection:g.ALL_EXCEPT_COLLISION,interactionType:j.ZOOM,interactionFactor:null,interactionStartCamera:new z,interactionDirection:null,tiltMode:w.TUMBLE},this._sphere=y()}initialize(){this._intersector=O(this.view.state.viewingMode)}zoomStep(t,i){if(!this.active)return;const e=this.view.state,{interactionStartCamera:r}=this._constraintOptions;r&&(this.animation.finished?r.copyFrom(e.camera):this.animation.cameraAt(1,r));let o=!1,a=!1;this.intersectionHelper.intersectScreen(i,this._zoomLocation,0===this.view.map.ground.opacity?C:{})&&(o=t>0,a=!0),this._tmpCamera.copyFrom(e.camera),o?this.intersectionHelper.intersectRay(this._tmpCamera.ray,this._intersector,this._tmpCenter)&&(this._tmpCamera.center=this._tmpCenter):this.intersectionHelper.intersectRay(this._tmpCamera.ray,this._intersector,this._zoomLocation)?this._tmpCamera.center=this._zoomLocation:s(this._zoomLocation,this._tmpCamera.center),this._updateCamera(this._tmpCamera,t,this._zoomLocation,i,a),this.begin(this._tmpCamera)}animationSettings(){return{duration:e(600),easing:V}}_updateCamera(t,e,r,s,_){const y=l(this.view.spatialReference),g=D(t,s,y),j=Math.abs(this.view.camera.position.z);o(H,t.eye),a(H,H,-1),S(t,s,this._tmpRayDir),o(this._tmpRayDir.direction,this._tmpRayDir.direction);const w=i(Math.min(M,1/Math.abs(n(H,this._tmpRayDir.direction)))*j,R,v);if(g===b.Horizontal){let i=T**e;this._sphere[3]=m(r),c(this._tmpViewDir,t.center,t.eye);const o=Math.min(m(this._tmpViewDir),w);let n=o*i;if(i<=1&&n<F&&(n=F,i=n/o),Math.abs(o-n)<1e-6)return;const _=m(t.center);if(this._sphere[3]!==_){const e=this._sphere[3]+i*(_-this._sphere[3]);t.center=a(E,t.center,e/_)}a(this._tmpViewDir,this._tmpViewDir,-i),t.eye=h(E,t.center,this._tmpViewDir),f(this.view,t,this._constraintOptions),p(r,t.center)>1e-12&&U(this._sphere,t,s,this._targetOnSphere)&&L(this._sphere,t,r,this._targetOnSphere,this.view.camera.heading,this.view.camera.tilt,!0)}else{let i=T**Math.abs(e);const o=e>0?1:-1;c(this._tmpViewDir,r,t.eye);const n=m(this._tmpViewDir),p=this.view._stage.renderView.getMinimalDepthForArea(null,s[0],s[1],this.view.state.camera,k);let l=null!=p?p:w;l=_&&e>0?Math.min(l,n):l,a(this._tmpRayDir.direction,this._tmpRayDir.direction,l),h(r,this._tmpRayDir.origin,this._tmpRayDir.direction);let y=l*i;const f=Math.max(F,1.01*t.nearFar[0]);if(e>0&&y<f&&(y=f,i=y/l),Math.abs(l-y)<1e-6)return;a(this._tmpRayDir.direction,this._tmpRayDir.direction,o*(1-i)),t.eye=h(E,t.eye,this._tmpRayDir.direction),t.center=h(E,t.center,this._tmpRayDir.direction)}u(this.view,t)}};A=t([r("esri.views.3d.state.controllers.global.ZoomStepController")],A);const E=_(),H=_();export{A as ZoomStepController};