@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{_ as e}from"../../../../../chunks/tslib.es6.js";import t from"../../../../../Color.js";import"../../../../../intl.js";import i from"../../../../../core/Accessor.js";import{multiplyOpacity as s,getContrast as r}from"../../../../../core/colorUtils.js";import"../../../../../core/has.js";import{nextHighestPowerOfTen as n}from"../../../../../core/mathUtils.js";import{destroyMaybe as a}from"../../../../../core/maybe.js";import{formatDecimal as o}from"../../../../../core/quantityFormatUtils.js";import{toUnit as l}from"../../../../../core/quantityUtils.js";import{watch as h,syncAndInitial as c}from"../../../../../core/reactiveUtils.js";import{convertUnit as m,adaptiveImperialAreaUnit as p,adaptiveMetricAreaUnit as u,adaptiveImperialLengthUnit as d,adaptiveMetricLengthUnit as g}from"../../../../../core/unitUtils.js";import{property as L}from"../../../../../core/accessorSupport/decorators/property.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import{subclass as _}from"../../../../../core/accessorSupport/decorators/subclass.js";import{f as b}from"../../../../../chunks/mat4.js";import{c as v}from"../../../../../chunks/mat4f64.js";import{g as f}from"../../../../../chunks/vec3.js";import{c as S}from"../../../../../chunks/vec3f64.js";import{midpoint as w}from"../../support/viewUtils.js";import{LabelVisualElement as y}from"../../../interactive/visualElements/LabelVisualElement.js";import{LineVisualElement as j}from"../../../interactive/visualElements/LineVisualElement.js";import{MeasurementAreaVisualElement as C}from"../../../interactive/visualElements/MeasurementAreaVisualElement.js";import{GeodesicSegment as D,EuclideanSegment as A}from"../../../interactive/visualElements/support/Segment.js";import{RenderOccludedFlag as P}from"../../../webgl-engine/lib/Material.js";import{createStipplePatternSimple as V}from"../../../webgl-engine/materials/lineStippleUtils.js";import{onLocaleChange as M}from"../../../../../intl/locale.js";import{fetchMessageBundle as R}from"../../../../../intl/messages.js";let U=class extends i{get _parameters(){const{accentColor:e}=this.view.effectiveTheme,i=t.toUnitRGBA(e);return{pathLineColor:i,pathLineWidth:3,intersectingLineColor:[1,.2,0,1],perimeterLineColor:i,perimeterLineWidth:2,projectionLineColor:i,projectionLineWidth:2,projectionLineStippleSize:5,areaColor1:t.toUnitRGBA(s(e,.5)),areaColor2:t.toUnitRGBA(s(r(e),.5)),labelDistance:25}}get visible(){return this.analysisViewData.visible}get testData(){return{labels:{area:this._areaLabel,pathLength:this._pathLengthLabel,cursorSegmentLength:this._cursorSegmentLengthLabel,perimeterLength:this._perimeterLengthLabel}}}constructor(e){super(e),this._path=null,this._intersectedPath=null,this._perimeter=null,this._intersectedPerimeter=null,this._projectionLines=null,this._measurementArea=null,this._areaLabel=null,this._pathLengthLabel=null,this._cursorSegmentLengthLabel=null,this._perimeterLengthLabel=null,this._pathSegments=[],this._perimeterSegments=[],this._cursorSegment=null,this._origin=S(),this._originTransform=v(),this._cursorPositionRenderSpace=S(),this.messages=null,this.viewData=O,this.areaLabel=null,this.perimeterLengthLabel=null,this.loadingMessages=!0}initialize(){const{analysisViewData:e,_parameters:t,view:i}=this;this._path=new j({view:i,attached:!0,width:t.pathLineWidth,color:t.pathLineColor,polygonOffset:!0,renderOccluded:P.OccludeAndTransparent,isDecoration:!0}),this._intersectedPath=new j({view:i,attached:!0,width:t.pathLineWidth,color:t.intersectingLineColor,polygonOffset:!0,renderOccluded:P.OccludeAndTransparent,isDecoration:!0}),this._perimeter=new j({view:i,attached:!0,width:t.perimeterLineWidth,color:t.perimeterLineColor,polygonOffset:!0,renderOccluded:P.OccludeAndTransparent,isDecoration:!0}),this._intersectedPerimeter=new j({view:i,attached:!0,width:t.perimeterLineWidth,color:t.intersectingLineColor,polygonOffset:!0,renderOccluded:P.OccludeAndTransparent,isDecoration:!0}),this._projectionLines=new j({view:i,attached:!0,width:t.projectionLineWidth,color:t.projectionLineColor,stipplePattern:V(t.projectionLineStippleSize),polygonOffset:!0,renderOccluded:P.OccludeAndTransparent,isDecoration:!0}),this._measurementArea=new C({view:i,attached:!0,color1:t.areaColor1,color2:t.areaColor2,isDecoration:!0});const{textColor:n}=i.effectiveTheme,a={attached:!0,backgroundColor:s(r(n),.6),calloutColor:s(r(n),.5),textColor:n,view:i,isDecoration:!0};this._areaLabel=new y({...a,fontSize:I.Large}),this._pathLengthLabel=new y({...a,fontSize:I.Small}),this._cursorSegmentLengthLabel=new y({...a,fontSize:I.Small}),this._perimeterLengthLabel=new y({...a,fontSize:I.Small}),this.addHandles([h((()=>[e.mode,this.visible,e.unit,e.measurementData,e.cursorPoint]),(()=>this._update()),c),h((()=>i.state?.camera),(()=>this._updateLabels()),c),M((()=>this._updateMessageBundle()))]),this._updateMessageBundle()}destroy(){this._measurementArea=a(this._measurementArea),this._path=a(this._path),this._intersectedPath=a(this._intersectedPath),this._perimeter=a(this._perimeter),this._intersectedPerimeter=a(this._intersectedPerimeter),this._areaLabel=a(this._areaLabel),this._pathLengthLabel=a(this._pathLengthLabel),this._cursorSegmentLengthLabel=a(this._cursorSegmentLengthLabel),this._perimeterLengthLabel=a(this._perimeterLengthLabel),this._projectionLines=a(this._projectionLines),this.set("view",null)}_update(){if(this.destroyed||!this.view.ready||!this.view.renderCoordsHelper)return;const{analysisViewData:{measurementData:e},analysisViewData:t}=this;null!=e&&(this._updateViewData(e,t.path,t.cursorPoint),this._updateOrigin(),this._updatePathSegments(),this._updatePerimeterSegments(),this._updateArea(),this._updateProjectionLines(),this._updateLabels())}_updateViewData(e,t,i){const s=t.isValidPolygon,r="geodesic"===e.actualMeasurementMode,a=r?e.geodesicArea:e.area;let o=1;if(a){const t=this._toPreferredAreaUnit(a,this.analysisViewData.unit);o=n(Math.sqrt(t.value)/Math.sqrt(300)),o*=Math.sqrt(m(1,t.unit,"square-meters")),o/=e.unitNormalizer.normalizeDistance(1)}const l={validMeasurement:s,path:t,pathVersion:t.version,cursorPoint:i,measurementData:e,mode:e.actualMeasurementMode,positionsGeographic:e.positionsGeographic,positionsRenderCoords:e.positionsRenderCoords,positionsProjected:e.positionsProjectedWorldCoords,positionsFittedRenderCoords:e.positionsFittedRenderCoords,intersectingSegments:r?e.geodesicIntersectingSegments:e.intersectingSegments,triangleIndices:r?e.geodesicTriangleIndices:e.triangleIndices,fittingMode:e.fittingMode,areaCentroid:r?e.geodesicAreaCentroidRenderCoords:e.areaCentroidRenderCoords,pathLengthLabelSegmentIndex:s?0:t.numVertices-2,perimeterLengthLabelSegmentIndex:0,checkerSize:o};this._set("viewData",l)}_updateOrigin(){const e=this.viewData;w(e.positionsRenderCoords,this._origin),b(this._originTransform,this._origin),this._measurementArea.transform=this._originTransform,this._projectionLines.transform=this._originTransform}_createSegments(e){const t=this.viewData,i=t.path,s=this.view.renderCoordsHelper.spatialReference,r=t.mode,n=[],a=[],o=[],l=t.validMeasurement?i.numVertices:i.numVertices-1;for(let h=0;h<l;++h){const l=t[e][h],c=t[e][(h+1)%i.numVertices];let m=null;switch(r){case"euclidean":m=new A(l,c);break;case"geodesic":m=new D(l,c,s)}t.intersectingSegments.has(h)?o.push(m):a.push(m),n.push(m)}return{all:n,nonIntersecting:a,intersecting:o}}_updatePathSegments(){const{view:{renderCoordsHelper:e},viewData:t,visible:i}=this,s=this._createSegments("positionsRenderCoords"),{cursorPoint:r,mode:n,path:a}=t,o=!a.isValidPolygon,l=e.spatialReference;if(this._cursorSegment=null,a.numVertices>0&&o&&null!=r){if(e.toRenderCoords(r,this._cursorPositionRenderSpace)){const e=t.positionsRenderCoords[a.numVertices-1],i=this._cursorPositionRenderSpace;let r=null;switch(n){case"euclidean":r=new A(e,i);break;case"geodesic":r=new D(e,i,l)}s.nonIntersecting.push(r),this._cursorSegment=r}}this._path.setGeometryFromSegments(s.nonIntersecting,this._origin),this._path.visible=i,this._intersectedPath.setGeometryFromSegments(s.intersecting,this._origin),this._intersectedPath.visible=i,this._pathSegments=s.all}_updatePerimeterSegments(){const e=this.visible&&"euclidean"===this.viewData.mode,t=this._createSegments("positionsFittedRenderCoords");this._perimeter.setGeometryFromSegments(t.nonIntersecting,this._origin),this._perimeter.visible=e,this._intersectedPerimeter.setGeometryFromSegments(t.intersecting,this._origin),this._intersectedPerimeter.visible=e,this._perimeterSegments=t.all}_updateArea(){const e=this.viewData;switch(e.mode){case"euclidean":this._updateAreaEuclidean(e);break;case"geodesic":this._updateAreaGeodesic()}}_updateAreaEuclidean(e){const t=this.visible;e.validMeasurement&&0===e.intersectingSegments.size&&e.triangleIndices?(this._measurementArea.geometry={uv:e.positionsProjected,position:e.positionsFittedRenderCoords,triangleIndices:e.triangleIndices},this._measurementArea.size=[e.checkerSize,e.checkerSize],this._measurementArea.visible=t):this._measurementArea.visible=!1}_updateAreaGeodesic(){this._measurementArea.visible=!1}_updateProjectionLines(){const e=this.viewData,t=this.visible,i=e.path,s=e.mode;if(i.numVertices>0&&e.validMeasurement&&"euclidean"===s){const s=[];for(let t=0;t<i.numVertices;++t){const i=S();f(i,e.positionsRenderCoords[t],this._origin);const r=S();f(r,e.positionsFittedRenderCoords[t],this._origin),s.push([i,r])}this._projectionLines.geometry=s,this._projectionLines.visible=t}else this._projectionLines.geometry=null,this._projectionLines.visible=!1}_updateLabels(){if(this.destroyed)return;const{viewData:e}=this,{measurementData:t,mode:i,path:s}=e;if(!s)return;const r=!s.isValidPolygon,n=this.visible,a=this._formatAreaLabel(this.messages,"geodesic"===i?t.geodesicArea:t.area,this.analysisViewData.unit);null!=a?(this._areaLabel.geometry={type:"point",point:e.areaCentroid},this._areaLabel.text=a,this._areaLabel.visible=e.validMeasurement&&0===e.intersectingSegments.size&&n):this._areaLabel.visible=!1,this._set("areaLabel",a);const o=this._formatLengthLabel(this.messages,"geodesic"===i?t.geodesicPathLength:t.pathLength,this.analysisViewData.unit);if(null!=o&&e.pathLengthLabelSegmentIndex>=0&&e.pathLengthLabelSegmentIndex<this._pathSegments.length){const t=this._pathSegments[e.pathLengthLabelSegmentIndex],i=null!=this._cursorSegment?this._cursorSegment:z;this._pathLengthLabel.distance=this._parameters.labelDistance,this._pathLengthLabel.geometry={type:"corner",left:t,right:i},this._pathLengthLabel.text=o,this._pathLengthLabel.visible=r&&s.numVertices>0&&n}else this._pathLengthLabel.visible=!1;const l="geodesic"===i?e.measurementData.geodesicCursorSegmentLength:e.measurementData.cursorSegmentLength;if(null!=l){const e=this._formatLengthLabel(this.messages,l,this.analysisViewData.unit);this._cursorSegmentLengthLabel.distance=this._parameters.labelDistance,this._cursorSegmentLengthLabel.geometry=null!=this._cursorSegment?{type:"segment",segment:this._cursorSegment,sampleLocation:"end"}:null,this._cursorSegmentLengthLabel.anchor="bottom",this._cursorSegmentLengthLabel.text=e,this._cursorSegmentLengthLabel.visible=r&&0!==l.value&&n}else this._cursorSegmentLengthLabel.visible=!1;this._cursorSegmentLengthLabel.overlaps(this._pathLengthLabel)&&(this._cursorSegmentLengthLabel.visible=!1),this._pathLengthLabel.overlaps(this._areaLabel)&&(this._pathLengthLabel.visible=!1);const h="geodesic"===e.mode,c=h?t.geodesicPathLength:t.perimeterLength,m=this._formatLengthLabel(this.messages,c,this.analysisViewData.unit);if(this._set("perimeterLengthLabel",m),e.validMeasurement&&0===e.intersectingSegments.size){this._perimeterLengthLabel.distance=this._parameters.labelDistance,this._perimeterLengthLabel.anchor="top",this._perimeterLengthLabel.text=m,this._perimeterLengthLabel.visible=!0;let t=!0;for(let i=0;i<e.path.numVertices;++i){const s=(e.perimeterLengthLabelSegmentIndex+i)%e.path.numVertices,r=h?this._pathSegments[s]:this._perimeterSegments[s];if(t=!0,this._perimeterLengthLabel.geometry={type:"segment",segment:r,sampleLocation:"center"},!this._perimeterLengthLabel.overlaps(this._areaLabel))break;t=!1}this._perimeterLengthLabel.visible=t&&n}else this._perimeterLengthLabel.visible=!1}_toPreferredAreaUnit(e,t){return l(e,this._preferredAreaUnit(e,t))}_preferredAreaUnit(e,t){switch(t){case"metric":return u(e.value,e.unit);case"imperial":return p(e.value,e.unit);default:return t}}_preferredLengthUnit(e,t){const i=this._deriveLengthUnitFromAreaUnit(t);switch(i){case"metric":return g(e.value,e.unit);case"imperial":return d(e.value,e.unit);default:return i}}_deriveLengthUnitFromAreaUnit(e){switch(e){case"metric":case"ares":case"hectares":return"metric";case"imperial":case"acres":return"imperial";case"square-inches":return"inches";case"square-feet":return"feet";case"square-yards":return"yards";case"square-miles":return"miles";case"square-us-feet":return"us-feet";case"square-millimeters":return"millimeters";case"square-centimeters":return"centimeters";case"square-decimeters":return"decimeters";case"square-meters":return"meters";case"square-kilometers":return"kilometers"}throw new Error("unhandled area unit")}_formatAreaLabel(e,t,i){return e&&t&&o(e,t,this._preferredAreaUnit(t,i))}_formatLengthLabel(e,t,i){return e&&t&&o(e,t,this._preferredLengthUnit(t,i))}_updateMessageBundle(){this.loadingMessages=!0,R("esri/core/t9n/Units").then((e=>{this.messages=e,this.view&&this._update()})).finally((()=>{this.loadingMessages=!1}))}};var I;e([L()],U.prototype,"_parameters",null),e([L()],U.prototype,"view",void 0),e([L()],U.prototype,"messages",void 0),e([L()],U.prototype,"analysis",void 0),e([L()],U.prototype,"viewData",void 0),e([L()],U.prototype,"analysisViewData",void 0),e([L({readOnly:!0})],U.prototype,"areaLabel",void 0),e([L({readOnly:!0})],U.prototype,"perimeterLengthLabel",void 0),e([L()],U.prototype,"loadingMessages",void 0),e([L()],U.prototype,"visible",null),U=e([_("esri.views.3d.analysis.AreaMeasurement.support.AreaMeasurementVisualization")],U),function(e){e[e.Small=12]="Small",e[e.Large=16]="Large"}(I||(I={}));const O={validMeasurement:!1,path:null,pathVersion:-1,cursorPoint:null,measurementData:null,mode:null,positionsGeographic:null,positionsRenderCoords:null,positionsProjected:null,positionsFittedRenderCoords:null,intersectingSegments:null,triangleIndices:null,fittingMode:null,areaCentroid:null,pathLengthLabelSegmentIndex:null,perimeterLengthLabelSegmentIndex:null,checkerSize:null},z=new A(S(),S());export{U as AreaMeasurementVisualization};
5
+ import{_ as e}from"../../../../../chunks/tslib.es6.js";import t from"../../../../../Color.js";import"../../../../../intl.js";import i from"../../../../../core/Accessor.js";import{multiplyOpacity as s,getContrast as r}from"../../../../../core/colorUtils.js";import"../../../../../core/has.js";import{nextHighestPowerOfTen as n}from"../../../../../core/mathUtils.js";import{destroyMaybe as a}from"../../../../../core/maybe.js";import{formatDecimal as o}from"../../../../../core/quantityFormatUtils.js";import{toUnit as l}from"../../../../../core/quantityUtils.js";import{watch as h,syncAndInitial as c}from"../../../../../core/reactiveUtils.js";import{convertUnit as m,adaptiveImperialAreaUnit as p,adaptiveMetricAreaUnit as u,adaptiveImperialLengthUnit as d,adaptiveMetricLengthUnit as g}from"../../../../../core/unitUtils.js";import{property as L}from"../../../../../core/accessorSupport/decorators/property.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import{subclass as _}from"../../../../../core/accessorSupport/decorators/subclass.js";import{d as b}from"../../../../../chunks/mat4.js";import{a as v}from"../../../../../chunks/mat4f64.js";import{f}from"../../../../../chunks/vec3.js";import{c as S}from"../../../../../chunks/vec3f64.js";import{midpoint as w}from"../../support/viewUtils.js";import{LabelVisualElement as y}from"../../../interactive/visualElements/LabelVisualElement.js";import{LineVisualElement as j}from"../../../interactive/visualElements/LineVisualElement.js";import{MeasurementAreaVisualElement as C}from"../../../interactive/visualElements/MeasurementAreaVisualElement.js";import{GeodesicSegment as D,EuclideanSegment as A}from"../../../interactive/visualElements/support/Segment.js";import{RenderOccludedFlag as P}from"../../../webgl-engine/lib/Material.js";import{createStipplePatternSimple as V}from"../../../webgl-engine/materials/lineStippleUtils.js";import{onLocaleChange as M}from"../../../../../intl/locale.js";import{fetchMessageBundle as R}from"../../../../../intl/messages.js";let U=class extends i{get _parameters(){const{accentColor:e}=this.view.effectiveTheme,i=t.toUnitRGBA(e);return{pathLineColor:i,pathLineWidth:3,intersectingLineColor:[1,.2,0,1],perimeterLineColor:i,perimeterLineWidth:2,projectionLineColor:i,projectionLineWidth:2,projectionLineStippleSize:5,areaColor1:t.toUnitRGBA(s(e,.5)),areaColor2:t.toUnitRGBA(s(r(e),.5)),labelDistance:25}}get visible(){return this.analysisViewData.visible}get testData(){return{labels:{area:this._areaLabel,pathLength:this._pathLengthLabel,cursorSegmentLength:this._cursorSegmentLengthLabel,perimeterLength:this._perimeterLengthLabel}}}constructor(e){super(e),this._path=null,this._intersectedPath=null,this._perimeter=null,this._intersectedPerimeter=null,this._projectionLines=null,this._measurementArea=null,this._areaLabel=null,this._pathLengthLabel=null,this._cursorSegmentLengthLabel=null,this._perimeterLengthLabel=null,this._pathSegments=[],this._perimeterSegments=[],this._cursorSegment=null,this._origin=S(),this._originTransform=v(),this._cursorPositionRenderSpace=S(),this.messages=null,this.viewData=O,this.areaLabel=null,this.perimeterLengthLabel=null,this.loadingMessages=!0}initialize(){const{analysisViewData:e,_parameters:t,view:i}=this;this._path=new j({view:i,attached:!0,width:t.pathLineWidth,color:t.pathLineColor,polygonOffset:!0,renderOccluded:P.OccludeAndTransparent,isDecoration:!0}),this._intersectedPath=new j({view:i,attached:!0,width:t.pathLineWidth,color:t.intersectingLineColor,polygonOffset:!0,renderOccluded:P.OccludeAndTransparent,isDecoration:!0}),this._perimeter=new j({view:i,attached:!0,width:t.perimeterLineWidth,color:t.perimeterLineColor,polygonOffset:!0,renderOccluded:P.OccludeAndTransparent,isDecoration:!0}),this._intersectedPerimeter=new j({view:i,attached:!0,width:t.perimeterLineWidth,color:t.intersectingLineColor,polygonOffset:!0,renderOccluded:P.OccludeAndTransparent,isDecoration:!0}),this._projectionLines=new j({view:i,attached:!0,width:t.projectionLineWidth,color:t.projectionLineColor,stipplePattern:V(t.projectionLineStippleSize),polygonOffset:!0,renderOccluded:P.OccludeAndTransparent,isDecoration:!0}),this._measurementArea=new C({view:i,attached:!0,color1:t.areaColor1,color2:t.areaColor2,isDecoration:!0});const{textColor:n}=i.effectiveTheme,a={attached:!0,backgroundColor:s(r(n),.6),calloutColor:s(r(n),.5),textColor:n,view:i,isDecoration:!0};this._areaLabel=new y({...a,fontSize:I.Large}),this._pathLengthLabel=new y({...a,fontSize:I.Small}),this._cursorSegmentLengthLabel=new y({...a,fontSize:I.Small}),this._perimeterLengthLabel=new y({...a,fontSize:I.Small}),this.addHandles([h((()=>[e.mode,this.visible,e.unit,e.measurementData,e.cursorPoint]),(()=>this._update()),c),h((()=>i.state?.camera),(()=>this._updateLabels()),c),M((()=>this._updateMessageBundle()))]),this._updateMessageBundle()}destroy(){this._measurementArea=a(this._measurementArea),this._path=a(this._path),this._intersectedPath=a(this._intersectedPath),this._perimeter=a(this._perimeter),this._intersectedPerimeter=a(this._intersectedPerimeter),this._areaLabel=a(this._areaLabel),this._pathLengthLabel=a(this._pathLengthLabel),this._cursorSegmentLengthLabel=a(this._cursorSegmentLengthLabel),this._perimeterLengthLabel=a(this._perimeterLengthLabel),this._projectionLines=a(this._projectionLines),this.set("view",null)}_update(){if(this.destroyed||!this.view.ready||!this.view.renderCoordsHelper)return;const{analysisViewData:{measurementData:e},analysisViewData:t}=this;null!=e&&(this._updateViewData(e,t.path,t.cursorPoint),this._updateOrigin(),this._updatePathSegments(),this._updatePerimeterSegments(),this._updateArea(),this._updateProjectionLines(),this._updateLabels())}_updateViewData(e,t,i){const s=t.isValidPolygon,r="geodesic"===e.actualMeasurementMode,a=r?e.geodesicArea:e.area;let o=1;if(a){const t=this._toPreferredAreaUnit(a,this.analysisViewData.unit);o=n(Math.sqrt(t.value)/Math.sqrt(300)),o*=Math.sqrt(m(1,t.unit,"square-meters")),o/=e.unitNormalizer.normalizeDistance(1)}const l={validMeasurement:s,path:t,pathVersion:t.version,cursorPoint:i,measurementData:e,mode:e.actualMeasurementMode,positionsGeographic:e.positionsGeographic,positionsRenderCoords:e.positionsRenderCoords,positionsProjected:e.positionsProjectedWorldCoords,positionsFittedRenderCoords:e.positionsFittedRenderCoords,intersectingSegments:r?e.geodesicIntersectingSegments:e.intersectingSegments,triangleIndices:r?e.geodesicTriangleIndices:e.triangleIndices,fittingMode:e.fittingMode,areaCentroid:r?e.geodesicAreaCentroidRenderCoords:e.areaCentroidRenderCoords,pathLengthLabelSegmentIndex:s?0:t.numVertices-2,perimeterLengthLabelSegmentIndex:0,checkerSize:o};this._set("viewData",l)}_updateOrigin(){const e=this.viewData;w(e.positionsRenderCoords,this._origin),b(this._originTransform,this._origin),this._measurementArea.transform=this._originTransform,this._projectionLines.transform=this._originTransform}_createSegments(e){const t=this.viewData,i=t.path,s=this.view.renderCoordsHelper.spatialReference,r=t.mode,n=[],a=[],o=[],l=t.validMeasurement?i.numVertices:i.numVertices-1;for(let h=0;h<l;++h){const l=t[e][h],c=t[e][(h+1)%i.numVertices];let m=null;switch(r){case"euclidean":m=new A(l,c);break;case"geodesic":m=new D(l,c,s)}t.intersectingSegments.has(h)?o.push(m):a.push(m),n.push(m)}return{all:n,nonIntersecting:a,intersecting:o}}_updatePathSegments(){const{view:{renderCoordsHelper:e},viewData:t,visible:i}=this,s=this._createSegments("positionsRenderCoords"),{cursorPoint:r,mode:n,path:a}=t,o=!a.isValidPolygon,l=e.spatialReference;if(this._cursorSegment=null,a.numVertices>0&&o&&null!=r){if(e.toRenderCoords(r,this._cursorPositionRenderSpace)){const e=t.positionsRenderCoords[a.numVertices-1],i=this._cursorPositionRenderSpace;let r=null;switch(n){case"euclidean":r=new A(e,i);break;case"geodesic":r=new D(e,i,l)}s.nonIntersecting.push(r),this._cursorSegment=r}}this._path.setGeometryFromSegments(s.nonIntersecting,this._origin),this._path.visible=i,this._intersectedPath.setGeometryFromSegments(s.intersecting,this._origin),this._intersectedPath.visible=i,this._pathSegments=s.all}_updatePerimeterSegments(){const e=this.visible&&"euclidean"===this.viewData.mode,t=this._createSegments("positionsFittedRenderCoords");this._perimeter.setGeometryFromSegments(t.nonIntersecting,this._origin),this._perimeter.visible=e,this._intersectedPerimeter.setGeometryFromSegments(t.intersecting,this._origin),this._intersectedPerimeter.visible=e,this._perimeterSegments=t.all}_updateArea(){const e=this.viewData;switch(e.mode){case"euclidean":this._updateAreaEuclidean(e);break;case"geodesic":this._updateAreaGeodesic()}}_updateAreaEuclidean(e){const t=this.visible;e.validMeasurement&&0===e.intersectingSegments.size&&e.triangleIndices?(this._measurementArea.geometry={uv:e.positionsProjected,position:e.positionsFittedRenderCoords,triangleIndices:e.triangleIndices},this._measurementArea.size=[e.checkerSize,e.checkerSize],this._measurementArea.visible=t):this._measurementArea.visible=!1}_updateAreaGeodesic(){this._measurementArea.visible=!1}_updateProjectionLines(){const e=this.viewData,t=this.visible,i=e.path,s=e.mode;if(i.numVertices>0&&e.validMeasurement&&"euclidean"===s){const s=[];for(let t=0;t<i.numVertices;++t){const i=S();f(i,e.positionsRenderCoords[t],this._origin);const r=S();f(r,e.positionsFittedRenderCoords[t],this._origin),s.push([i,r])}this._projectionLines.geometry=s,this._projectionLines.visible=t}else this._projectionLines.geometry=null,this._projectionLines.visible=!1}_updateLabels(){if(this.destroyed)return;const{viewData:e}=this,{measurementData:t,mode:i,path:s}=e;if(!s)return;const r=!s.isValidPolygon,n=this.visible,a=this._formatAreaLabel(this.messages,"geodesic"===i?t.geodesicArea:t.area,this.analysisViewData.unit);null!=a?(this._areaLabel.geometry={type:"point",point:e.areaCentroid},this._areaLabel.text=a,this._areaLabel.visible=e.validMeasurement&&0===e.intersectingSegments.size&&n):this._areaLabel.visible=!1,this._set("areaLabel",a);const o=this._formatLengthLabel(this.messages,"geodesic"===i?t.geodesicPathLength:t.pathLength,this.analysisViewData.unit);if(null!=o&&e.pathLengthLabelSegmentIndex>=0&&e.pathLengthLabelSegmentIndex<this._pathSegments.length){const t=this._pathSegments[e.pathLengthLabelSegmentIndex],i=null!=this._cursorSegment?this._cursorSegment:z;this._pathLengthLabel.distance=this._parameters.labelDistance,this._pathLengthLabel.geometry={type:"corner",left:t,right:i},this._pathLengthLabel.text=o,this._pathLengthLabel.visible=r&&s.numVertices>0&&n}else this._pathLengthLabel.visible=!1;const l="geodesic"===i?e.measurementData.geodesicCursorSegmentLength:e.measurementData.cursorSegmentLength;if(null!=l){const e=this._formatLengthLabel(this.messages,l,this.analysisViewData.unit);this._cursorSegmentLengthLabel.distance=this._parameters.labelDistance,this._cursorSegmentLengthLabel.geometry=null!=this._cursorSegment?{type:"segment",segment:this._cursorSegment,sampleLocation:"end"}:null,this._cursorSegmentLengthLabel.anchor="bottom",this._cursorSegmentLengthLabel.text=e,this._cursorSegmentLengthLabel.visible=r&&0!==l.value&&n}else this._cursorSegmentLengthLabel.visible=!1;this._cursorSegmentLengthLabel.overlaps(this._pathLengthLabel)&&(this._cursorSegmentLengthLabel.visible=!1),this._pathLengthLabel.overlaps(this._areaLabel)&&(this._pathLengthLabel.visible=!1);const h="geodesic"===e.mode,c=h?t.geodesicPathLength:t.perimeterLength,m=this._formatLengthLabel(this.messages,c,this.analysisViewData.unit);if(this._set("perimeterLengthLabel",m),e.validMeasurement&&0===e.intersectingSegments.size){this._perimeterLengthLabel.distance=this._parameters.labelDistance,this._perimeterLengthLabel.anchor="top",this._perimeterLengthLabel.text=m,this._perimeterLengthLabel.visible=!0;let t=!0;for(let i=0;i<e.path.numVertices;++i){const s=(e.perimeterLengthLabelSegmentIndex+i)%e.path.numVertices,r=h?this._pathSegments[s]:this._perimeterSegments[s];if(t=!0,this._perimeterLengthLabel.geometry={type:"segment",segment:r,sampleLocation:"center"},!this._perimeterLengthLabel.overlaps(this._areaLabel))break;t=!1}this._perimeterLengthLabel.visible=t&&n}else this._perimeterLengthLabel.visible=!1}_toPreferredAreaUnit(e,t){return l(e,this._preferredAreaUnit(e,t))}_preferredAreaUnit(e,t){switch(t){case"metric":return u(e.value,e.unit);case"imperial":return p(e.value,e.unit);default:return t}}_preferredLengthUnit(e,t){const i=this._deriveLengthUnitFromAreaUnit(t);switch(i){case"metric":return g(e.value,e.unit);case"imperial":return d(e.value,e.unit);default:return i}}_deriveLengthUnitFromAreaUnit(e){switch(e){case"metric":case"ares":case"hectares":return"metric";case"imperial":case"acres":return"imperial";case"square-inches":return"inches";case"square-feet":return"feet";case"square-yards":return"yards";case"square-miles":return"miles";case"square-us-feet":return"us-feet";case"square-millimeters":return"millimeters";case"square-centimeters":return"centimeters";case"square-decimeters":return"decimeters";case"square-meters":return"meters";case"square-kilometers":return"kilometers"}throw new Error("unhandled area unit")}_formatAreaLabel(e,t,i){return e&&t&&o(e,t,this._preferredAreaUnit(t,i))}_formatLengthLabel(e,t,i){return e&&t&&o(e,t,this._preferredLengthUnit(t,i))}_updateMessageBundle(){this.loadingMessages=!0,R("esri/core/t9n/Units").then((e=>{this.messages=e,this.view&&this._update()})).finally((()=>{this.loadingMessages=!1}))}};var I;e([L()],U.prototype,"_parameters",null),e([L()],U.prototype,"view",void 0),e([L()],U.prototype,"messages",void 0),e([L()],U.prototype,"analysis",void 0),e([L()],U.prototype,"viewData",void 0),e([L()],U.prototype,"analysisViewData",void 0),e([L({readOnly:!0})],U.prototype,"areaLabel",void 0),e([L({readOnly:!0})],U.prototype,"perimeterLengthLabel",void 0),e([L()],U.prototype,"loadingMessages",void 0),e([L()],U.prototype,"visible",null),U=e([_("esri.views.3d.analysis.AreaMeasurement.support.AreaMeasurementVisualization")],U),function(e){e[e.Small=12]="Small",e[e.Large=16]="Large"}(I||(I={}));const O={validMeasurement:!1,path:null,pathVersion:-1,cursorPoint:null,measurementData:null,mode:null,positionsGeographic:null,positionsRenderCoords:null,positionsProjected:null,positionsFittedRenderCoords:null,intersectingSegments:null,triangleIndices:null,fittingMode:null,areaCentroid:null,pathLengthLabelSegmentIndex:null,perimeterLengthLabelSegmentIndex:null,checkerSize:null},z=new A(S(),S());export{U as AreaMeasurementVisualization};
@@ -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{deg2rad as e}from"../../../../../core/mathUtils.js";import{createLength as t,createArea as s}from"../../../../../core/quantityUtils.js";import{s as i,d as o}from"../../../../../chunks/vec2.js";import{a as r}from"../../../../../chunks/vec2f64.js";import{n,h,i as a,c as d,o as l,g,d as p,b as c,e as m}from"../../../../../chunks/vec3.js";import{c as u}from"../../../../../chunks/vec3f64.js";import{c as _}from"../../../../../chunks/vec4f64.js";import{getReferenceEllipsoid as f}from"../../../../../geometry/ellipsoidUtils.js";import{canProjectWithoutEngine as C,canProjectToWGS84ComparableLonLat as S}from"../../../../../geometry/projection.js";import L from"../../../../../geometry/SpatialReference.js";import{getSphericalPCPF as j}from"../../../../../geometry/spatialReferenceEllipsoidUtils.js";import{projectDirection as P}from"../../../../../geometry/projection/projectDirection.js";import{projectPointToVector as R}from"../../../../../geometry/projection/projectPointToVector.js";import{projectPointToWGS84ComparableLonLat as M}from"../../../../../geometry/projection/projectPointToWGS84ComparableLonLat.js";import{projectVectorToVector as A}from"../../../../../geometry/projection/projectVectorToVector.js";import{Axis as W}from"../../../../../geometry/support/Axis.js";import{compactIndices as v}from"../../../../../geometry/support/Indices.js";import{segmentIntersects as I}from"../../../../../geometry/support/intersectsBase.js";import{areaPoints2d as w}from"../../../../../geometry/support/triangle.js";import{MeasurementMode as z}from"../../interfaces.js";import{segmentLengthGeodesicVector as U,bestFitPlane as V,fitHemisphere as G,triangleAreaGeodesic as y,planePointDistance as T,boundingSphere as F,segmentLengthGeodesic as E,segmentLengthEuclidean as N}from"../../support/measurementUtils.js";import{midpoint as x}from"../../support/viewUtils.js";import{getElevationAtPoint as b}from"../../../support/ElevationProvider.js";import{makeOrthonormal as k,tangentFrame as D}from"../../../support/mathUtils.js";import{triangulate as q}from"../../../../support/euclideanAreaMeasurementUtils.js";class B{constructor(e,t){this.positionsWorldCoords=[],this.positionsRenderCoords=[],this.positionsProjectedWorldCoords=[],this.positionsFittedRenderCoords=[],this.positionsGeographic=[],this.positionsSpherical=[],this.positionsStereographic=[],this.pathSegmentLengths=[],this.geodesicPathSegmentLengths=[],this.perimeterSegmentLengths=[],this.intersectingSegments=new Set,this.geodesicIntersectingSegments=new Set,this.triangleIndices=null,this.geodesicTriangleIndices=null,this.areaCentroidWorldCoords=u(),this.areaCentroidRenderCoords=u(),this.geodesicAreaCentroidRenderCoords=u(),this.area=null,this.geodesicArea=null,this.pathLength=null,this.geodesicPathLength=null,this.perimeterLength=null,this._length=0,this._centroidRenderCoords=u(),this._planeWorldCoords=_(),this._worldUp=u(),this._worldTangent=u(),this._frame=[u(),u(),u()],this._pathVersion=-1,this._validMeasurement=!1,this._hasCursorPoint=!1,this._mode=null,this._tempU=u(),this._tempV=u(),this._tempVec3=u(),this._tempSphere={center:u(),radius:0},this._sceneView=e,this.unitNormalizer=t}update(e,s,i,o,r,h,a){const d=this.unitNormalizer,l=this._sceneView.renderSpatialReference,g=this.unitNormalizer.spatialReference,p=null!=s;if(this._pathVersion===e.version&&this._validMeasurement===o&&!a&&this._hasCursorPoint===p&&this._mode===h){return!e.isValidPolygon&&(this._updateCursorSegmentLength(e,s),!0)}this._pathVersion=e.version,this._validMeasurement=o,this._hasCursorPoint=p;const c=e.numVertices;this._resize(c);const m=j(i.spatialReference),u=C(i.spatialReference,m)&&S(i.spatialReference),{positionsGeographic:_,positionsWorldCoords:f,positionsRenderCoords:L,positionsSpherical:P}=this;e.forEachVertexPosition(((e,t)=>{H(i.elevationProvider,e),R(e,f[t],g),R(e,L[t],l),u&&(M(e,_[t]),R(e,P[t],m),n(P[t],P[t]))}));const A=this._updatePathLengths(o);if(this.pathLength=this._length>1?t(d.normalizeDistance(A),"meters"):null,u){const e=this._updateGeodesicPathLengths(o,g);this.geodesicPathLength=this._length>1?t(e,"meters"):null}else this.geodesicPathLength=null;return this._updateCursorSegmentLength(e,s),this._updateMode(e,h),o?(this._updateArea(i,d,l,g,r),u&&this._updateGeodesicArea(i),!0):(this.area=null,this.geodesicArea=null,this.perimeterLength=null,this.triangleIndices=null,this.geodesicTriangleIndices=null,this.intersectingSegments.clear(),this.geodesicIntersectingSegments.clear(),!0)}getData(){return{positionsWorldCoords:this.positionsWorldCoords,positionsRenderCoords:this.positionsRenderCoords,positionsProjectedWorldCoords:this.positionsProjectedWorldCoords,positionsFittedRenderCoords:this.positionsFittedRenderCoords,positionsGeographic:this.positionsGeographic,positionsSpherical:this.positionsSpherical,positionsStereographic:this.positionsStereographic,pathSegmentLengths:this.pathSegmentLengths,geodesicPathSegmentLengths:this.geodesicPathSegmentLengths,perimeterSegmentLengths:this.perimeterSegmentLengths,intersectingSegments:this.intersectingSegments,geodesicIntersectingSegments:this.geodesicIntersectingSegments,triangleIndices:this.triangleIndices,geodesicTriangleIndices:this.geodesicTriangleIndices,areaCentroidWorldCoords:this.areaCentroidWorldCoords,areaCentroidRenderCoords:this.areaCentroidRenderCoords,geodesicAreaCentroidRenderCoords:this.geodesicAreaCentroidRenderCoords,fittingMode:this.fittingMode,area:this.area,geodesicArea:this.geodesicArea,pathLength:this.pathLength,geodesicPathLength:this.geodesicPathLength,perimeterLength:this.perimeterLength,cursorSegmentLength:this.cursorSegmentLength,geodesicCursorSegmentLength:this.geodesicCursorSegmentLength,unitNormalizer:this.unitNormalizer,actualMeasurementMode:this.actualMeasurementMode}}_resize(e){for(e<this._length&&(this.positionsWorldCoords.length=e,this.positionsRenderCoords.length=e,this.positionsProjectedWorldCoords.length=e,this.positionsFittedRenderCoords.length=e,this.positionsGeographic.length=e,this.positionsSpherical.length=e,this.positionsStereographic.length=e,this.pathSegmentLengths.length=e,this.geodesicPathSegmentLengths.length=e,this.perimeterSegmentLengths.length=e,this._length=e);this._length<e;)this.positionsWorldCoords.push(u()),this.positionsRenderCoords.push(u()),this.positionsProjectedWorldCoords.push(r()),this.positionsFittedRenderCoords.push(u()),this.positionsGeographic.push(u()),this.positionsSpherical.push(u()),this.positionsStereographic.push(r()),this.pathSegmentLengths.push(0),this.geodesicPathSegmentLengths.push(0),this.perimeterSegmentLengths.push(0),++this._length}_updatePathLengths(e){const t=this.positionsWorldCoords,s=this.pathSegmentLengths;let i=0;for(let o=0;o<this._length;++o){const r=s[o]=h(t[o],t[(o+1)%this._length]);(o<this._length-1||e)&&(i+=r)}return i}_updateGeodesicPathLengths(e,t){const s=this.positionsGeographic,i=this.geodesicPathSegmentLengths;let o=0;for(let r=0;r<this._length;++r){const n=i[r]=U(s[r],s[(r+1)%this._length],t??void 0);(r<this._length-1||e)&&(o+=n)}return o}_updateArea(e,o,r,n,h){const u=e.renderCoordsHelper,_=this.positionsWorldCoords,f=this.positionsRenderCoords,C=this.positionsProjectedWorldCoords,S=this.positionsFittedRenderCoords,L=this._planeWorldCoords,j=this._centroidRenderCoords;x(f,j),u.worldUpAtPosition(j,this._worldUp),u.worldBasisAtPosition(j,W.X,this._worldTangent),P(j,this._worldUp,r,this._worldUp,n),P(j,this._worldTangent,r,this._worldTangent,n),_.length>2&&V(_,L),this.fittingMode=this._selectFittingMode(L,_,this._worldUp,h);let R=0;if("horizontal"===this.fittingMode){let e=-1/0;f.forEach(((t,s)=>{const i=u.getAltitude(f[s]);i>e&&(e=i,R=s)}))}const M=_[R];let v=L,I=this._worldTangent;"horizontal"===this.fittingMode?v=this._worldUp:"vertical"===this.fittingMode&&(v=this._tempVec3,I=this._worldUp,k(L,this._worldUp,v)),a(this._frame[2],v),k(I,v,this._frame[0]),d(this._frame[1],this._frame[0],this._frame[2]),l(this._frame[1],this._frame[1]);const w=this._tempVec3,z=this._tempU,U=this._tempV;for(let t=0;t<this._length;++t){const e=C[t],s=S[t];g(w,_[t],M),i(e,p(this._frame[0],w),p(this._frame[1],w)),c(z,this._frame[0],e[0]),c(U,this._frame[1],e[1]),m(w,z,U),m(w,w,M),A(w,n,s,r)}this.perimeterLength=this._length>0?t(o.normalizeDistance(this._updatePerimeterLengths()),"meters"):null,x(S,this.areaCentroidRenderCoords),A(this.areaCentroidRenderCoords,r,this.areaCentroidWorldCoords,n),this._updateIntersectingSegments(),this.area=0===this.intersectingSegments.size?s(o.normalizeArea(this._computeArea()),"square-meters"):null}_updateGeodesicArea(e){const{renderCoordsHelper:t,spatialReference:o}=e,{positionsSpherical:r,positionsStereographic:n}=this,h=this._tempVec3,a=G(r,h);if(!a)return void(this.geodesicArea=null);const d=this._tempU,l=this._tempV;D(h,d,l);for(let s=0;s<this._length;++s){const e=p(r[s],d),t=p(r[s],l),o=p(r[s],h);i(n[s],e/o,t/o)}c(h,h,f(o).radius),t.toRenderCoords(h,j(o),this.geodesicAreaCentroidRenderCoords),this._updateGeodesicIntersectingSegments(),this.geodesicArea=a&&0===this.geodesicIntersectingSegments.size?s(this._computeGeodesicArea(),"square-meters"):null}_updatePerimeterLengths(){const e=this.positionsProjectedWorldCoords,t=this.perimeterSegmentLengths;let s=0;for(let i=0;i<this._length;++i){s+=t[i]=o(e[i],e[(i+1)%this._length])}return s}_updateIntersectingSegments(){const e=this.positionsProjectedWorldCoords,t=this.intersectingSegments;t.clear();for(let s=0;s<this._length;++s)for(let i=s+2;i<this._length;++i){if((i+1)%this._length===s)continue;const o=e[s],r=e[(s+1)%this._length],n=e[i],h=e[(i+1)%this._length];I(o,r,n,h)&&(t.add(s),t.add(i))}}_computeArea(){const e=this.positionsProjectedWorldCoords,t=this.triangleIndices=v(q(e));let s=0;for(let i=0;i<t.length;i+=3)s+=w(e[t[i]],e[t[i+1]],e[t[i+2]]);return s}_updateGeodesicIntersectingSegments(){const e=this.positionsStereographic,t=this.geodesicIntersectingSegments;t.clear();for(let s=0;s<this._length;++s)for(let i=s+2;i<this._length;++i){if((i+1)%this._length===s)continue;const o=e[s],r=e[(s+1)%this._length],n=e[i],h=e[(i+1)%this._length];I(o,r,n,h)&&(t.add(s),t.add(i))}}_computeGeodesicArea(){const e=this.positionsGeographic,t=this.positionsStereographic,s=this.geodesicTriangleIndices=v(q(t));let i=0;for(let o=0;o<s.length;o+=3)i+=y(e[s[o]],e[s[o+1]],e[s[o+2]],L.WGS84);return i}_selectFittingMode(t,s,i,o){const r=s.map((e=>Math.abs(T(t,e)))).reduce(((e,t)=>Math.max(e,t)),0);F(s,this._tempSphere);const n=r/(2*this._tempSphere.radius),h=n<o.maxRelativeErrorCoplanar,a=n<o.maxRelativeErrorAlmostCoplanar;let d="horizontal";if(h)d="oblique";else if(a){d=Math.abs(p(i,t))>Math.cos(e(o.verticalAngleThreshold))?"horizontal":"vertical"}return d}_updateCursorSegmentLength(e,s){const i=e.lastPoint;e.isValidPolygon||null==i||null==s?(this.geodesicCursorSegmentLength=null,this.cursorSegmentLength=null):(this.geodesicCursorSegmentLength=t(E(i,s),"meters"),this.cursorSegmentLength=t(this.unitNormalizer.normalizeDistance(N(i,s,this.unitNormalizer.spatialReference)),"meters"))}_updateMode(e,t){if(t===z.Auto){this.actualMeasurementMode="euclidean";let t=0;null!=this.geodesicPathLength&&(t+=this.geodesicPathLength.value),e.isValidPolygon||null==this.geodesicCursorSegmentLength||(t+=this.geodesicCursorSegmentLength.value),t>X&&(this.actualMeasurementMode="geodesic")}else this.actualMeasurementMode=t===z.Euclidean?"euclidean":"geodesic";null==this.geodesicPathLength&&(this.actualMeasurementMode="euclidean"),this._mode=t}}function H(e,t){t.hasZ||(t.z=b(e,t,"ground")??0)}const X=1e5;export{B as MeasurementDataManager};
5
+ import{deg2rad as e}from"../../../../../core/mathUtils.js";import{createLength as t,createArea as s}from"../../../../../core/quantityUtils.js";import{s as i,d as o}from"../../../../../chunks/vec2.js";import{a as r}from"../../../../../chunks/vec2f64.js";import{n,m as h,c as a,b as d,E as l,f as g,j as p,i as c,g as m}from"../../../../../chunks/vec3.js";import{c as u}from"../../../../../chunks/vec3f64.js";import{c as _}from"../../../../../chunks/vec4f64.js";import{getReferenceEllipsoid as f}from"../../../../../geometry/ellipsoidUtils.js";import{canProjectWithoutEngine as C,canProjectToWGS84ComparableLonLat as S}from"../../../../../geometry/projection.js";import L from"../../../../../geometry/SpatialReference.js";import{getSphericalPCPF as j}from"../../../../../geometry/spatialReferenceEllipsoidUtils.js";import{projectDirection as P}from"../../../../../geometry/projection/projectDirection.js";import{projectPointToVector as R}from"../../../../../geometry/projection/projectPointToVector.js";import{projectPointToWGS84ComparableLonLat as M}from"../../../../../geometry/projection/projectPointToWGS84ComparableLonLat.js";import{projectVectorToVector as A}from"../../../../../geometry/projection/projectVectorToVector.js";import{Axis as W}from"../../../../../geometry/support/Axis.js";import{compactIndices as v}from"../../../../../geometry/support/Indices.js";import{segmentIntersects as I}from"../../../../../geometry/support/intersectsBase.js";import{areaPoints2d as w}from"../../../../../geometry/support/triangle.js";import{MeasurementMode as z}from"../../interfaces.js";import{segmentLengthGeodesicVector as U,bestFitPlane as V,fitHemisphere as G,triangleAreaGeodesic as y,planePointDistance as T,boundingSphere as E,segmentLengthGeodesic as F,segmentLengthEuclidean as N}from"../../support/measurementUtils.js";import{midpoint as x}from"../../support/viewUtils.js";import{getElevationAtPoint as b}from"../../../support/ElevationProvider.js";import{makeOrthonormal as k,tangentFrame as D}from"../../../support/mathUtils.js";import{triangulate as q}from"../../../../support/euclideanAreaMeasurementUtils.js";class B{constructor(e,t){this.positionsWorldCoords=[],this.positionsRenderCoords=[],this.positionsProjectedWorldCoords=[],this.positionsFittedRenderCoords=[],this.positionsGeographic=[],this.positionsSpherical=[],this.positionsStereographic=[],this.pathSegmentLengths=[],this.geodesicPathSegmentLengths=[],this.perimeterSegmentLengths=[],this.intersectingSegments=new Set,this.geodesicIntersectingSegments=new Set,this.triangleIndices=null,this.geodesicTriangleIndices=null,this.areaCentroidWorldCoords=u(),this.areaCentroidRenderCoords=u(),this.geodesicAreaCentroidRenderCoords=u(),this.area=null,this.geodesicArea=null,this.pathLength=null,this.geodesicPathLength=null,this.perimeterLength=null,this._length=0,this._centroidRenderCoords=u(),this._planeWorldCoords=_(),this._worldUp=u(),this._worldTangent=u(),this._frame=[u(),u(),u()],this._pathVersion=-1,this._validMeasurement=!1,this._hasCursorPoint=!1,this._mode=null,this._tempU=u(),this._tempV=u(),this._tempVec3=u(),this._tempSphere={center:u(),radius:0},this._sceneView=e,this.unitNormalizer=t}update(e,s,i,o,r,h,a){const d=this.unitNormalizer,l=this._sceneView.renderSpatialReference,g=this.unitNormalizer.spatialReference,p=null!=s;if(this._pathVersion===e.version&&this._validMeasurement===o&&!a&&this._hasCursorPoint===p&&this._mode===h){return!e.isValidPolygon&&(this._updateCursorSegmentLength(e,s),!0)}this._pathVersion=e.version,this._validMeasurement=o,this._hasCursorPoint=p;const c=e.numVertices;this._resize(c);const m=j(i.spatialReference),u=C(i.spatialReference,m)&&S(i.spatialReference),{positionsGeographic:_,positionsWorldCoords:f,positionsRenderCoords:L,positionsSpherical:P}=this;e.forEachVertexPosition(((e,t)=>{H(i.elevationProvider,e),R(e,f[t],g),R(e,L[t],l),u&&(M(e,_[t]),R(e,P[t],m),n(P[t],P[t]))}));const A=this._updatePathLengths(o);if(this.pathLength=this._length>1?t(d.normalizeDistance(A),"meters"):null,u){const e=this._updateGeodesicPathLengths(o,g);this.geodesicPathLength=this._length>1?t(e,"meters"):null}else this.geodesicPathLength=null;return this._updateCursorSegmentLength(e,s),this._updateMode(e,h),o?(this._updateArea(i,d,l,g,r),u&&this._updateGeodesicArea(i),!0):(this.area=null,this.geodesicArea=null,this.perimeterLength=null,this.triangleIndices=null,this.geodesicTriangleIndices=null,this.intersectingSegments.clear(),this.geodesicIntersectingSegments.clear(),!0)}getData(){return{positionsWorldCoords:this.positionsWorldCoords,positionsRenderCoords:this.positionsRenderCoords,positionsProjectedWorldCoords:this.positionsProjectedWorldCoords,positionsFittedRenderCoords:this.positionsFittedRenderCoords,positionsGeographic:this.positionsGeographic,positionsSpherical:this.positionsSpherical,positionsStereographic:this.positionsStereographic,pathSegmentLengths:this.pathSegmentLengths,geodesicPathSegmentLengths:this.geodesicPathSegmentLengths,perimeterSegmentLengths:this.perimeterSegmentLengths,intersectingSegments:this.intersectingSegments,geodesicIntersectingSegments:this.geodesicIntersectingSegments,triangleIndices:this.triangleIndices,geodesicTriangleIndices:this.geodesicTriangleIndices,areaCentroidWorldCoords:this.areaCentroidWorldCoords,areaCentroidRenderCoords:this.areaCentroidRenderCoords,geodesicAreaCentroidRenderCoords:this.geodesicAreaCentroidRenderCoords,fittingMode:this.fittingMode,area:this.area,geodesicArea:this.geodesicArea,pathLength:this.pathLength,geodesicPathLength:this.geodesicPathLength,perimeterLength:this.perimeterLength,cursorSegmentLength:this.cursorSegmentLength,geodesicCursorSegmentLength:this.geodesicCursorSegmentLength,unitNormalizer:this.unitNormalizer,actualMeasurementMode:this.actualMeasurementMode}}_resize(e){for(e<this._length&&(this.positionsWorldCoords.length=e,this.positionsRenderCoords.length=e,this.positionsProjectedWorldCoords.length=e,this.positionsFittedRenderCoords.length=e,this.positionsGeographic.length=e,this.positionsSpherical.length=e,this.positionsStereographic.length=e,this.pathSegmentLengths.length=e,this.geodesicPathSegmentLengths.length=e,this.perimeterSegmentLengths.length=e,this._length=e);this._length<e;)this.positionsWorldCoords.push(u()),this.positionsRenderCoords.push(u()),this.positionsProjectedWorldCoords.push(r()),this.positionsFittedRenderCoords.push(u()),this.positionsGeographic.push(u()),this.positionsSpherical.push(u()),this.positionsStereographic.push(r()),this.pathSegmentLengths.push(0),this.geodesicPathSegmentLengths.push(0),this.perimeterSegmentLengths.push(0),++this._length}_updatePathLengths(e){const t=this.positionsWorldCoords,s=this.pathSegmentLengths;let i=0;for(let o=0;o<this._length;++o){const r=s[o]=h(t[o],t[(o+1)%this._length]);(o<this._length-1||e)&&(i+=r)}return i}_updateGeodesicPathLengths(e,t){const s=this.positionsGeographic,i=this.geodesicPathSegmentLengths;let o=0;for(let r=0;r<this._length;++r){const n=i[r]=U(s[r],s[(r+1)%this._length],t??void 0);(r<this._length-1||e)&&(o+=n)}return o}_updateArea(e,o,r,n,h){const u=e.renderCoordsHelper,_=this.positionsWorldCoords,f=this.positionsRenderCoords,C=this.positionsProjectedWorldCoords,S=this.positionsFittedRenderCoords,L=this._planeWorldCoords,j=this._centroidRenderCoords;x(f,j),u.worldUpAtPosition(j,this._worldUp),u.worldBasisAtPosition(j,W.X,this._worldTangent),P(j,this._worldUp,r,this._worldUp,n),P(j,this._worldTangent,r,this._worldTangent,n),_.length>2&&V(_,L),this.fittingMode=this._selectFittingMode(L,_,this._worldUp,h);let R=0;if("horizontal"===this.fittingMode){let e=-1/0;f.forEach(((t,s)=>{const i=u.getAltitude(f[s]);i>e&&(e=i,R=s)}))}const M=_[R];let v=L,I=this._worldTangent;"horizontal"===this.fittingMode?v=this._worldUp:"vertical"===this.fittingMode&&(v=this._tempVec3,I=this._worldUp,k(L,this._worldUp,v)),a(this._frame[2],v),k(I,v,this._frame[0]),d(this._frame[1],this._frame[0],this._frame[2]),l(this._frame[1],this._frame[1]);const w=this._tempVec3,z=this._tempU,U=this._tempV;for(let t=0;t<this._length;++t){const e=C[t],s=S[t];g(w,_[t],M),i(e,p(this._frame[0],w),p(this._frame[1],w)),c(z,this._frame[0],e[0]),c(U,this._frame[1],e[1]),m(w,z,U),m(w,w,M),A(w,n,s,r)}this.perimeterLength=this._length>0?t(o.normalizeDistance(this._updatePerimeterLengths()),"meters"):null,x(S,this.areaCentroidRenderCoords),A(this.areaCentroidRenderCoords,r,this.areaCentroidWorldCoords,n),this._updateIntersectingSegments(),this.area=0===this.intersectingSegments.size?s(o.normalizeArea(this._computeArea()),"square-meters"):null}_updateGeodesicArea(e){const{renderCoordsHelper:t,spatialReference:o}=e,{positionsSpherical:r,positionsStereographic:n}=this,h=this._tempVec3,a=G(r,h);if(!a)return void(this.geodesicArea=null);const d=this._tempU,l=this._tempV;D(h,d,l);for(let s=0;s<this._length;++s){const e=p(r[s],d),t=p(r[s],l),o=p(r[s],h);i(n[s],e/o,t/o)}c(h,h,f(o).radius),t.toRenderCoords(h,j(o),this.geodesicAreaCentroidRenderCoords),this._updateGeodesicIntersectingSegments(),this.geodesicArea=a&&0===this.geodesicIntersectingSegments.size?s(this._computeGeodesicArea(),"square-meters"):null}_updatePerimeterLengths(){const e=this.positionsProjectedWorldCoords,t=this.perimeterSegmentLengths;let s=0;for(let i=0;i<this._length;++i){s+=t[i]=o(e[i],e[(i+1)%this._length])}return s}_updateIntersectingSegments(){const e=this.positionsProjectedWorldCoords,t=this.intersectingSegments;t.clear();for(let s=0;s<this._length;++s)for(let i=s+2;i<this._length;++i){if((i+1)%this._length===s)continue;const o=e[s],r=e[(s+1)%this._length],n=e[i],h=e[(i+1)%this._length];I(o,r,n,h)&&(t.add(s),t.add(i))}}_computeArea(){const e=this.positionsProjectedWorldCoords,t=this.triangleIndices=v(q(e));let s=0;for(let i=0;i<t.length;i+=3)s+=w(e[t[i]],e[t[i+1]],e[t[i+2]]);return s}_updateGeodesicIntersectingSegments(){const e=this.positionsStereographic,t=this.geodesicIntersectingSegments;t.clear();for(let s=0;s<this._length;++s)for(let i=s+2;i<this._length;++i){if((i+1)%this._length===s)continue;const o=e[s],r=e[(s+1)%this._length],n=e[i],h=e[(i+1)%this._length];I(o,r,n,h)&&(t.add(s),t.add(i))}}_computeGeodesicArea(){const e=this.positionsGeographic,t=this.positionsStereographic,s=this.geodesicTriangleIndices=v(q(t));let i=0;for(let o=0;o<s.length;o+=3)i+=y(e[s[o]],e[s[o+1]],e[s[o+2]],L.WGS84);return i}_selectFittingMode(t,s,i,o){const r=s.map((e=>Math.abs(T(t,e)))).reduce(((e,t)=>Math.max(e,t)),0);E(s,this._tempSphere);const n=r/(2*this._tempSphere.radius),h=n<o.maxRelativeErrorCoplanar,a=n<o.maxRelativeErrorAlmostCoplanar;let d="horizontal";if(h)d="oblique";else if(a){d=Math.abs(p(i,t))>Math.cos(e(o.verticalAngleThreshold))?"horizontal":"vertical"}return d}_updateCursorSegmentLength(e,s){const i=e.lastPoint;e.isValidPolygon||null==i||null==s?(this.geodesicCursorSegmentLength=null,this.cursorSegmentLength=null):(this.geodesicCursorSegmentLength=t(F(i,s),"meters"),this.cursorSegmentLength=t(this.unitNormalizer.normalizeDistance(N(i,s,this.unitNormalizer.spatialReference)),"meters"))}_updateMode(e,t){if(t===z.Auto){this.actualMeasurementMode="euclidean";let t=0;null!=this.geodesicPathLength&&(t+=this.geodesicPathLength.value),e.isValidPolygon||null==this.geodesicCursorSegmentLength||(t+=this.geodesicCursorSegmentLength.value),t>X&&(this.actualMeasurementMode="geodesic")}else this.actualMeasurementMode=t===z.Euclidean?"euclidean":"geodesic";null==this.geodesicPathLength&&(this.actualMeasurementMode="euclidean"),this._mode=t}}function H(e,t){t.hasZ||(t.z=b(e,t,"ground")??0)}const X=1e5;export{B as MeasurementDataManager};
@@ -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{clock as t}from"../../../../core/clock.js";import{destroyHandle as i,makeHandle as o}from"../../../../core/handleUtils.js";import{removeMaybe as s}from"../../../../core/maybe.js";import{watch as n,syncAndInitial as r,when as a}from"../../../../core/reactiveUtils.js";import{property as l}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as c}from"../../../../core/accessorSupport/decorators/subclass.js";import{sv3d as u}from"../../../../geometry/support/vectorStacks.js";import{DidPointerMoveRecentlyFlag as p}from"./lengthDimensionManipulatorUtils.js";import{LengthDimensionSubTool as m}from"./LengthDimensionSubTool.js";import{pointerMoveTimeoutMs as h}from"./settings.js";import{newIntersector as d}from"../../webgl-engine/lib/Intersector.js";import{StoreResults as v}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{AnalysisToolBase as _}from"../../../interactive/AnalysisToolBase.js";import{SKETCH_KEYS as y}from"../../../interactive/keybindings.js";import{createScreenPointArrayFromEvent as T}from"../../../support/screenUtils.js";var g;!function(e){e.Ready="ready",e.Creating="creating",e.Created="created"}(g||(g={}));let S=class extends _{constructor(e){super(e),this.automaticManipulatorSelection=!1,this.removeIncompleteOnCancel=!1,this._pointerMoveTimerMs=h,this._prevPointerMoveTimeout=null}initialize(){this._intersector=d(this.view.state.viewingMode),this._intersector.options.store=v.MIN,this._lengthDimensionSubTool=new m({analysis:this.analysis,analysisViewData:this.analysisViewData,manipulators:this.manipulators,parentTool:this,view:this.view}),this.addHandles([i(this._lengthDimensionSubTool),o((()=>this._clearPointerMoveTimeout())),n((()=>this.state),(e=>{e===g.Created&&this.finishToolCreation()}),r),a((()=>this.firstGrabbedManipulator),(e=>{this.selectedDimension=e.metadata}),r),n((()=>this.selectedDimension),(()=>this._resetPointerMoveTimeout()),r)])}get state(){return this.analysis.dimensions.some((e=>"length"===e.type))?null!=this._activeSubTool?g.Creating:g.Created:g.Ready}get updating(){return this._lengthDimensionSubTool.updating}get cursor(){return this.active?"crosshair":null}get selectedDimension(){return this.analysisViewData.selectedDimension}set selectedDimension(e){this.analysisViewData.selectedDimension=e}onInputEvent(e){switch(e.type){case"immediate-click":this._clickHandler(e);break;case"immediate-double-click":this._doubleClickHandler(e);break;case"pointer-move":this._pointerMoveHandler(e);break;case"key-down":if(y.cancel===e.key){if(null!=this._activeSubTool&&this._activeSubTool.removeStaged())return void e.stopPropagation();this.active||(this.selectedDimension=null)}else y.delete.includes(e.key)&&this._deleteKeyHandler()}}onActivate(){this._activeSubTool=this._lengthDimensionSubTool}onDeactivate(){null!=this._activeSubTool&&(this._activeSubTool.onDeactivate(),this._activeSubTool=null)}onShow(){this._resetPointerMoveTimeout()}onManipulatorSelectionChanged(){this._lengthDimensionSubTool.onManipulatorSelectionChanged()}onHide(){this.selectedDimension=null}_clickHandler(e){if(this.hasFocusedManipulators)return void e.stopPropagation();if(null==this._activeSubTool)return;const t=this._intersectScreen(e);null!=t&&(this.selectedDimension=this._activeSubTool.onClick({mapPoint:t,pointerType:e.pointerType}),e.stopPropagation())}_doubleClickHandler(e){this.active&&(this.view.activeTool=null,e.stopPropagation())}_pointerMoveHandler(e){if(this._resetPointerMoveTimeout(),null==this._activeSubTool)return;if(this.hasFocusedManipulators)return;const t=this._intersectScreen(e);null!=t&&this._activeSubTool.onPointerMove({mapPoint:t,pointerType:e.pointerType})}_deleteKeyHandler(){null!=this._activeSubTool&&this._activeSubTool.removeStaged(),this._removeSelected()}_intersectScreen(e){const t=T(e);this.view.sceneIntersectionHelper.intersectToolIntersectorScreen(t,this._intersector);const i=this._intersector.results.min,o=u.get();return i.getIntersectionPoint(o)?this.view.renderCoordsHelper.fromRenderCoords(o,this.view.spatialReference):null}_removeSelected(){null!=this.selectedDimension&&(this.analysis.dimensions.remove(this.selectedDimension),this.selectedDimension=null)}_clearPointerMoveTimeout(){this._prevPointerMoveTimeout=s(this._prevPointerMoveTimeout)}_resetPointerMoveTimeout(){this._clearPointerMoveTimeout(),this.manipulators.forEach((e=>{e.manipulator.state|=p})),this._prevPointerMoveTimeout=t.setTimeout((()=>{this.manipulators.forEach((e=>{e.manipulator.state&=~p}))}),this._pointerMoveTimerMs)}get testInfo(){return{...this._lengthDimensionSubTool.testInfo,setManipulatorAutoHideDelay:e=>{this._pointerMoveTimerMs=e,this._resetPointerMoveTimeout()}}}};e([l({constructOnly:!0})],S.prototype,"view",void 0),e([l({constructOnly:!0})],S.prototype,"analysis",void 0),e([l({readOnly:!0})],S.prototype,"state",null),e([l({readOnly:!0})],S.prototype,"updating",null),e([l({readOnly:!0})],S.prototype,"cursor",null),e([l({constructOnly:!0})],S.prototype,"analysisViewData",void 0),e([l()],S.prototype,"selectedDimension",null),e([l()],S.prototype,"automaticManipulatorSelection",void 0),e([l()],S.prototype,"_activeSubTool",void 0),e([l()],S.prototype,"_lengthDimensionSubTool",void 0),S=e([c("esri.views.3d.analysis.Dimension.DimensionTool")],S);export{S as DimensionTool};
5
+ import{_ as e}from"../../../../chunks/tslib.es6.js";import{clock as t}from"../../../../core/clock.js";import{destroyHandle as i,makeHandle as o}from"../../../../core/handleUtils.js";import{removeMaybe as s}from"../../../../core/maybe.js";import{watch as n,syncAndInitial as r,when as a}from"../../../../core/reactiveUtils.js";import{property as l}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as c}from"../../../../core/accessorSupport/decorators/subclass.js";import{sv3d as u}from"../../../../geometry/support/vectorStacks.js";import{DidPointerMoveRecentlyFlag as p}from"./lengthDimensionManipulatorUtils.js";import{LengthDimensionSubTool as m}from"./LengthDimensionSubTool.js";import{pointerMoveTimeoutMs as h}from"./settings.js";import{newIntersector as d}from"../../webgl-engine/lib/Intersector.js";import{StoreResults as v}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{AnalysisToolBase as _}from"../../../interactive/AnalysisToolBase.js";import{SKETCH_KEYS as y}from"../../../interactive/keybindings.js";import{createScreenPointArrayFromEvent as T}from"../../../support/screenUtils.js";var g;!function(e){e.Ready="ready",e.Creating="creating",e.Created="created"}(g||(g={}));let S=class extends _{constructor(e){super(e),this.automaticManipulatorSelection=!1,this.removeIncompleteOnCancel=!1,this._pointerMoveTimerMs=h,this._prevPointerMoveTimeout=null}initialize(){this._intersector=d(this.view.state.viewingMode),this._intersector.options.store=v.MIN,this._lengthDimensionSubTool=new m({analysis:this.analysis,analysisViewData:this.analysisViewData,manipulators:this.manipulators,parentTool:this,view:this.view}),this.addHandles([i(this._lengthDimensionSubTool),o((()=>this._clearPointerMoveTimeout())),n((()=>this.state),(e=>{e===g.Created&&this.finishToolCreation()}),r),a((()=>this.firstGrabbedManipulator),(e=>{this.selectedDimension=e.metadata}),r),n((()=>this.selectedDimension),(()=>this._resetPointerMoveTimeout()),r)])}get state(){return this.analysis.dimensions.some((e=>"length"===e.type))?null!=this._activeSubTool?g.Creating:g.Created:g.Ready}get updating(){return this._lengthDimensionSubTool.updating}get cursor(){return this.active?"crosshair":null}get selectedDimension(){return this.analysisViewData.selectedDimension}set selectedDimension(e){this.analysisViewData.selectedDimension=e}onInputEvent(e){switch(e.type){case"immediate-click":this._clickHandler(e);break;case"immediate-double-click":this._doubleClickHandler(e);break;case"pointer-move":this._pointerMoveHandler(e);break;case"key-down":if(y.cancel===e.key){if(null!=this._activeSubTool&&this._activeSubTool.removeStaged())return void e.stopPropagation();this.active||(this.selectedDimension=null)}else y.delete.includes(e.key)&&this._deleteKeyHandler()}}onActivate(){this._activeSubTool=this._lengthDimensionSubTool}onDeactivate(){null!=this._activeSubTool&&(this._activeSubTool.onDeactivate(),this._activeSubTool=null)}onShow(){this._resetPointerMoveTimeout()}onManipulatorSelectionChanged(){this._lengthDimensionSubTool.onManipulatorSelectionChanged()}onHide(){this.selectedDimension=null}_clickHandler(e){if(this.hasFocusedManipulators)return void e.stopPropagation();if(null==this._activeSubTool)return;const t=this._intersectScreen(e);null!=t&&(this.selectedDimension=this._activeSubTool.onClick({mapPoint:t,pointerType:e.pointerType}),e.stopPropagation())}_doubleClickHandler(e){this.active&&(this.view.activeTool=null,e.stopPropagation())}_pointerMoveHandler(e){if(this._resetPointerMoveTimeout(),null==this._activeSubTool)return;if(this.hasFocusedManipulators)return;const t=this._intersectScreen(e);null!=t&&this._activeSubTool.onPointerMove({mapPoint:t,pointerType:e.pointerType})}_deleteKeyHandler(){null!=this._activeSubTool&&this._activeSubTool.removeStaged(),this._removeSelected()}_intersectScreen(e){const t=T(e);this.view.sceneIntersectionHelper.intersectToolIntersectorScreen(t,this._intersector);const i=this._intersector.results.min,o=u.get();return i.getIntersectionPoint(o)?this.view.renderCoordsHelper.fromRenderCoords(o,this.view.spatialReference):null}_removeSelected(){null!=this.selectedDimension&&(this.analysis.dimensions.remove(this.selectedDimension),this.selectedDimension=null)}_clearPointerMoveTimeout(){this._prevPointerMoveTimeout=s(this._prevPointerMoveTimeout)}_resetPointerMoveTimeout(){this._clearPointerMoveTimeout(),this.manipulators.forEach((e=>e.manipulator.state|=p)),this._prevPointerMoveTimeout=t.setTimeout((()=>{this.manipulators.forEach((e=>e.manipulator.state&=~p))}),this._pointerMoveTimerMs)}get testInfo(){return{...this._lengthDimensionSubTool.testInfo,setManipulatorAutoHideDelay:e=>{this._pointerMoveTimerMs=e,this._resetPointerMoveTimeout()}}}};e([l({constructOnly:!0})],S.prototype,"view",void 0),e([l({constructOnly:!0})],S.prototype,"analysis",void 0),e([l({readOnly:!0})],S.prototype,"state",null),e([l({readOnly:!0})],S.prototype,"updating",null),e([l({readOnly:!0})],S.prototype,"cursor",null),e([l({constructOnly:!0})],S.prototype,"analysisViewData",void 0),e([l()],S.prototype,"selectedDimension",null),e([l()],S.prototype,"automaticManipulatorSelection",void 0),e([l()],S.prototype,"_activeSubTool",void 0),e([l()],S.prototype,"_lengthDimensionSubTool",void 0),S=e([c("esri.views.3d.analysis.Dimension.DimensionTool")],S);export{S as DimensionTool};
@@ -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 e from"../../../../Color.js";import"../../../../geometry.js";import{LengthDimensionMeasureType as i}from"../../../../analysis/dimensionUtils.js";import n from"../../../../analysis/LengthDimension.js";import a from"../../../../core/Accessor.js";import s from"../../../../core/Handles.js";import{destroyHandle as o}from"../../../../core/handleUtils.js";import{equals as r}from"../../../../core/lang.js";import{destroyMaybe as p}from"../../../../core/maybe.js";import{memoize as l}from"../../../../core/memoize.js";import{ignoreAbortErrors as u}from"../../../../core/promiseUtils.js";import{mapCollection as d,watch as c,sync as m,syncAndInitial as h,initial as g,when as f}from"../../../../core/reactiveUtils.js";import{property as _}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as M}from"../../../../core/accessorSupport/decorators/subclass.js";import{c as y}from"../../../../chunks/vec3f64.js";import{UpdatingHandles as v}from"../../../../core/support/UpdatingHandles.js";import{clonePoint as S}from"../../../../layers/graphics/hydratedFeatures.js";import{reapplyConstraint as C,LengthDimensionConstraint as w,applyConstraint as b,computeConstraint as D,constraintDependencies as O}from"./lengthDimensionConstraintUtils.js";import{LengthDimensionManipulators as P,createPointManipulator as j,pointManipulatorHandles as H,createOffsetManipulator as T,offsetManipulatorHandles as G,createOrientationManipulator as I,headingManipulatorHandles as z,rotationManipulatorHandles as x,createMeasureTypeManipulator as U,measureTypeManipulatorHandles as V,updateOffsetManipulatorTransform as R,updateHeadingManipulatorTransform as A,updateRotationManipulatorTransform as k,updateMeasureTypeManipulatorTransform as E,updateOrientationManipulator as F,unfocusedOffsetWidth as L,focusedOffsetWidth as q}from"./lengthDimensionManipulatorUtils.js";import{isValidComputation as B,arePointsVerticallyAligned as N,computeGeometryFromDimension as J,computationToGeometryDependencies as K}from"./lengthDimensionUtils.js";import{Settings as Q}from"./settings.js";import{getRotateHeadingTexture as W}from"../Slice/images/Factory.js";import{SnappingVisualizer3D as X}from"../../interactive/SnappingVisualizer3D.js";import{LineVisualElement as Y}from"../../interactive/visualElements/LineVisualElement.js";import{VerticesVisualElement as Z}from"../../interactive/visualElements/VerticesVisualElement.js";import{RenderOccludedFlag as $}from"../../webgl-engine/lib/Material.js";import{ImageMaterial as tt}from"../../webgl-engine/materials/ImageMaterial.js";import{createStipplePatternSimple as et}from"../../webgl-engine/materials/lineStippleUtils.js";import{RibbonLineMaterial as it}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{createCoordinateHelper as nt}from"../../../interactive/coordinateHelper.js";import{EditGeometry as at}from"../../../interactive/editGeometry/EditGeometry.js";import{EditGeometryOperations as st}from"../../../interactive/editGeometry/EditGeometryOperations.js";import{acquire as ot}from"../../../interactive/snapping/SceneSnappingManagerPool.js";import{SnappingContext as rt}from"../../../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as pt}from"../../../interactive/snapping/SnappingDragPipelineStep.js";import{SnappingOperation as lt}from"../../../interactive/snapping/SnappingOperation.js";import{setupSnappingToggleHandles as ut}from"../../../interactive/snapping/snappingUtils.js";import dt from"../../../../geometry/Point.js";let ct=class extends a{constructor(t){super(t),this._stagedDimension=null,this._computationManipulators=new Map,this._computationHandles=new s,this._updatingHandles=new v,this._getSnappingContext=l((t=>new rt({elevationInfo:{mode:"absolute-height",offset:0},pointer:t,editGeometryOperations:new st(new at("point",nt(!0,!1,this.view.spatialReference))),visualizer:new X})));const{view:i}=t;this._settings=new Q(i.effectiveTheme),this._snappingManagerResult=ot(i),this.addHandles(this._snappingManagerResult),this._unfocusedOffsetManipulatorMaterial=this._createOffsetManipulatorMaterial(),this._focusedOffsetManipulatorMaterial=this._createOffsetManipulatorMaterial(),this._thinOffsetManipulatorMaterial=this._createOffsetManipulatorMaterial(),this._thinOffsetManipulatorMaterial.setParameters({stipplePattern:et(2)}),this._constraintSnappingIndicator=new Y({view:i,attached:!0,width:1,color:e.toUnitRGBA(this._settings.constraint.color),renderOccluded:$.OccludeAndTransparent,stipplePattern:et(5),isDecoration:!0});const n=e.toUnitRGBA(this._settings.disabledPointIndicator.color);this._stagedStartIndicator=new Z({view:i,attached:!1,elevationInfo:{mode:"absolute-height",offset:0},spatialReference:t.view.renderCoordsHelper.spatialReference,color:n,size:2*this._settings.disabledPointIndicator.radius,outlineSize:0,renderOccluded:$.OccludeAndTransparent,isDecoration:!0})}initialize(){this._snappingOperation=new lt({view:this.view});const{color:t,contrastColor:e}=this._settings.orientationManipulator,i=!this.view._stage?.renderView.renderingContext.driverTest.svgPremultipliesAlpha.result;this._orientationManipulatorTexture=W(this.view.toolViewManager.textures,{accentColor:t,contrastColor:e,preMultiplyAlpha:i}),this._orientationManipulatorMaterial=new tt({transparent:!0,writeDepth:!1,textureId:this._orientationManipulatorTexture.texture.id,renderOccluded:$.Opaque,isDecoration:!0});const n=d((()=>this.analysisViewData.computations),(({computation:t})=>this._createManipulators(t)));this.addHandles(o(n)),this.addHandles([c((()=>({stagedPoint:this._snappingOperation.stagedPoint,stagedComputation:this._stagedComputation})),(({stagedPoint:t,stagedComputation:e})=>{if(null==e||null==t)return;const i=S(t,new dt);this._applyPointUpdate(e,{endPoint:i})}),m),c((()=>({stagedDimension:this._stagedDimension,selectedComputation:this.analysisViewData.selectedComputation,firstGrabbedManipulator:this.firstGrabbedManipulator})),((t,e)=>{const{stagedDimension:i,selectedComputation:n,firstGrabbedManipulator:a}=t;if(i===e?.stagedDimension&&a===e?.firstGrabbedManipulator){for(const s of[n,e?.selectedComputation])if(null!=s){const e=this._computationManipulators.get(s);null!=e&&this._updateManipulators(s,e,t)}}else for(const[s,o]of this._computationManipulators)this._updateManipulators(s,o,t)}),h),c((()=>this.analysis.style.lineSize),(t=>{this._updateManipulatorStyle(t)}),g),c((()=>this.view.state.camera),(()=>{null!=this._stagedComputation&&this._updateStagedDimensionOffset(this._stagedComputation)})),c((()=>{const t=this._stagedComputation;if(!t)return null;const e=t.elevationAlignedStartPoint,i=y();return null!=e&&this.view.renderCoordsHelper.toRenderCoords(e,i)?i:null}),(t=>{null!=t?(this._stagedStartIndicator.vertices=[t],this._stagedStartIndicator.attached=!0):this._stagedStartIndicator.attached=!1}))]),this.addHandles(this._constraintHandles),this.addHandles(this._snappingIndicatorHandles),ut(this,(()=>{const t=this._activeComputation,e=this._stagedComputation;if(null==t||null!=e){const t=this.view.inputManager.latestPointerType??"mouse",e=this._getSnappingContext(t);this._updatingHandles.addPromise(u(this._snappingOperation.resnap(this._snappingManager,e)))}if(null!=t){const{start:e,end:i}=this._computationManipulators.get(t);if(e.grabbing||i.grabbing){const i=e.grabbing?"start":"end",n=this._computeConstraint(t);C(t,i,{constraint:n,view:this.view})}}}))}destroy(){this._snappingOperation=p(this._snappingOperation),this._computationHandles.destroy(),this._constraintSnappingIndicator.destroy(),this._stagedStartIndicator.destroy(),this._orientationManipulatorTexture.release()}get updating(){return this._updatingHandles.updating||this._snappingManager.updating}get firstGrabbedManipulator(){return this.parentTool.firstGrabbedManipulator}get hasGrabbedManipulators(){return this.parentTool.hasGrabbedManipulators}get snappingOptions(){return this._snappingManager.options}get _snappingManager(){return this._snappingManagerResult.snappingManager}get _activeComputation(){if(null!=this._stagedComputation)return this._stagedComputation;const{selectedComputation:t}=this.analysisViewData;return this.hasGrabbedManipulators&&null!=t?t:null}get _stagedComputation(){const t=this._stagedDimension,e=this.analysisViewData.computations.at(-1)?.computation;return null==t||null==e||e.dimension!==t?null:e}get _constraintHandles(){return[f((()=>this.analysisViewData.selectedComputation),(t=>{t.previousConstraint=this._computeConstraint(t)}),{...h,equals:r}),c((()=>{const t=this._activeComputation;if(null==t)return null;const{measureType:e,orientation:i}=t.dimension;return{measureType:e,orientation:i,computation:t}}),((t,e)=>{if(null!=t&&null==e){const{measureType:e,orientation:n,computation:a}=t;switch(a.previousConstraint){case w.Horizontal:a.preConstraintProperties={measureType:i.Horizontal,orientation:0};break;case w.Vertical:a.preConstraintProperties={measureType:i.Vertical,orientation:0};break;case w.Direct:a.preConstraintProperties={measureType:i.Direct,orientation:n};break;default:a.preConstraintProperties={measureType:e,orientation:n}}}null==t&&null!=e&&(e.computation.preConstraintProperties=null)}),m)]}get _snappingIndicatorHandles(){const t="snapping-indicator-event-handles";return[c((()=>({stagedComputation:this._stagedComputation,activeComputation:this._activeComputation})),(({stagedComputation:e,activeComputation:i})=>{const n=this._constraintSnappingIndicator;if(this.removeHandles(t),null!=i)if(i===e)n.attached=!0;else{const{start:e,end:a}=this._computationManipulators.get(i),s=()=>{n.attached=e.grabbing||a.grabbing};s(),this.addHandles([e.events.on("grab-changed",s),a.events.on("grab-changed",s)],t)}else n.attached=!1})),c((()=>{const t=this._activeComputation;return null!=t?{geometry:t.geometry,constraint:t.previousConstraint}:{}}),(({geometry:t,constraint:e})=>{const i=this._constraintSnappingIndicator;null!=t&&null!=e&&e!==w.Direct?(i.visible=!0,i.setGeometryFromSegment(t.directSegment)):i.visible=!1}))]}removeStaged(){return null!=this._stagedDimension&&(this.analysis.dimensions.remove(this._stagedDimension),this._stagedDimension=null,!0)}onDeactivate(){this.removeStaged(),this._resetSnappingState()}onClick(t){const{_stagedDimension:e}=this;if(null==e){const e=this._onUnstagedClick(t);return this.analysis.dimensions.add(e),null}return this._onStagedClick(t),e}onPointerMove({mapPoint:t,pointerType:e}){if("touch"===e)return;const i=this._getSnappingContext(e);this._updatingHandles.addPromise(u(this._snappingOperation.snap({point:t},this._snappingManager,i)))}onManipulatorSelectionChanged(){if(null!=this.analysisViewData.selectedComputation){this._computationManipulators.get(this.analysisViewData.selectedComputation).offset.selected||(this.analysisViewData.selectedDimension=null)}}_onUnstagedClick({mapPoint:t,pointerType:e}){let a=t;if("mouse"===e){const i=this._getSnappingContext(e);a=this._snappingManager.update({point:t,context:i})}const s=new n({startPoint:S(a,new dt),endPoint:null,measureType:i.Horizontal});return this._stagedDimension=s,this._resetSnappingState(),s}_onStagedClick({mapPoint:t,pointerType:e}){const i=this._stagedComputation;if(null==i)return;let n=t;if("mouse"===e){const i=this._getSnappingContext(e);n=this._snappingManager.update({point:t,context:i})}const a=S(n,new dt);this._applyPointUpdate(i,{endPoint:a}),this._stagedDimension=null,this._resetSnappingState()}_resetSnappingState(){this._snappingManager.doneSnapping(),this._snappingOperation.abort(),this._snappingOperation.stagedPoint=null}_createManipulators(t){const e=this._setupPointManipulator(t,{isStart:!0}),n=this._setupPointManipulator(t,{isStart:!1}),a=this._setupOffsetManipulator(t),s=this._setupHeadingManipulator(t),o=this._setupRotationManipulator(t),r=this._setupMeasureTypeManipulator(t,i.Direct),p=this._setupMeasureTypeManipulator(t,i.Horizontal),l=this._setupMeasureTypeManipulator(t,i.Vertical),u=new P({start:e,end:n,offset:a,heading:s,rotation:o,direct:r,horizontal:p,vertical:l});return this._setupComputationToManipulatorsSync(t,u),this._computationManipulators.set(t,u),this.manipulators.addMany(u.values()),{manipulators:u,remove:()=>{this._computationHandles.remove(t),this._computationManipulators.delete(t);for(const t of u.values())this.manipulators.remove(t)}}}_setupComputationToManipulatorsSync(t,e){this._computationHandles.add([c((()=>t.geometry),(()=>this._updateManipulators(t,e)),{...h,equals:r})],t)}_setupPointManipulator(t,e){const{view:i}=this,{dimension:n}=t,a=j(i,{metadata:n}),s=H(a,{isStart:e.isStart,createSnappingPipelineStep:t=>pt({snappingContext:this._getSnappingContext(t),snappingManager:this._snappingManager,updatingHandles:this._updatingHandles}),dimension:n,onUpdate:e=>this._applyPointUpdate(t,e),view:i});return this._computationHandles.add(s,t),a}_setupOffsetManipulator(t){const{view:e}=this,i=T(e,{lineSizePt:this.analysis.style.lineSize,unfocusedMaterial:this._unfocusedOffsetManipulatorMaterial,focusedMaterial:this._focusedOffsetManipulatorMaterial,metadata:t.dimension}),n=G(i,{computation:t,view:e});return this._computationHandles.add(n,t),i}_setupHeadingManipulator(t){const{view:e}=this,i=I(e,{lineSizePt:this.analysis.style.lineSize,material:this._orientationManipulatorMaterial,metadata:t.dimension}),n=z(i,{computation:t,view:e});return this._computationHandles.add(n,t),i}_setupRotationManipulator(t){const{view:e}=this,i=I(e,{lineSizePt:this.analysis.style.lineSize,material:this._orientationManipulatorMaterial,metadata:t.dimension}),n=x(i,{computation:t,view:e});return this._computationHandles.add(n,t),i}_setupMeasureTypeManipulator(t,e){const{view:i}=this,n=U(i,{lineSizePt:this.analysis.style.lineSize,unfocusedMaterial:this._unfocusedOffsetManipulatorMaterial,focusedMaterial:this._focusedOffsetManipulatorMaterial,thinOffsetManipulatorMaterial:this._thinOffsetManipulatorMaterial,metadata:t.dimension}),a=V(n,{computation:t,manipulatorMeasureType:e,view:i});return this._computationHandles.add(a,t),n}_updateManipulators(t,e,n={stagedDimension:this._stagedDimension,selectedComputation:this.analysisViewData.selectedComputation,firstGrabbedManipulator:this.firstGrabbedManipulator}){const{stagedDimension:a,selectedComputation:s,firstGrabbedManipulator:o}=n,{start:r,end:p,offset:l,heading:u,rotation:d}=e,c=s===t,m=B(t),{dimension:h}=t;for(const i of e.values()){const t=m&&null==a&&(null==o||i===o);i===l?(i.available=t,i.selected=c):i.available=t&&c}if(!m)return;null!=this._computeConstraint(t)?e.forEachMeasureTypeManipulator((t=>t.available=!1)):e.manipulatorForMeasureType(h.measureType).available=!1;for(const _ of[u,d])h.measureType===i.Direct&&0!==h.offset||(_.available=!1);N(t)?d.available=!1:u.available=!1;const{geometry:g}=t;r.renderLocation=g.directSegment.startRenderSpace,p.renderLocation=g.directSegment.endRenderSpace;const{renderCoordsHelper:f}=this.view;R(l,g,f),u.available&&A(u,t,f),d.available&&k(d,t,f),e.forEachMeasureTypeManipulator(((e,i)=>{e.available&&E(e,t,i,f)}))}_updateManipulatorStyle(t){const e=L(t),i=q(t),n={lineSizePt:t,material:this._orientationManipulatorMaterial};for(const{offset:a,heading:s,rotation:o}of this._computationManipulators.values())a.radius=i/2,F(this.view,s,n),F(this.view,o,n);this._unfocusedOffsetManipulatorMaterial.setParameters({width:e}),this._focusedOffsetManipulatorMaterial.setParameters({width:i})}_applyPointUpdate(t,e){const{view:i}=this,n=K(t);"startPoint"in e&&(n.elevationAlignedStartPoint=e.startPoint),"endPoint"in e&&(n.elevationAlignedEndPoint=e.endPoint);const a=J(n,i.renderCoordsHelper);if(null==a)return;const s=this._computeConstraint({...n,geometry:a});b(t,e,{...n,constraint:s,unconstrainedGeometry:a,view:i}),t===this._stagedComputation&&this._updateStagedDimensionOffset(t)}_updateStagedDimensionOffset(t){if(null==t.geometry)return;t.geometry.directSegment.eval(.5,mt);const e=this.view.state.camera.computeRenderPixelSizeAt(mt);t.dimension.offset=this._settings.initialOffsetPx*e}_computeConstraint(t){return D(O(t,this._snappingManager.options),this.view)}_createOffsetManipulatorMaterial(){const{color:t}=this._settings.offsetManipulator;return new it({color:e.toUnitRGBA(t),width:1,renderOccluded:$.OccludeAndTransparent,writeDepth:!1,hasPolygonOffset:!0,isDecoration:!0})}get testInfo(){const t=t=>this.analysisViewData.computations.find((({computation:e})=>e.dimension===t))?.computation;return{disableManipulatorPartialOcclusion:()=>{this._stagedStartIndicator.renderOccluded=$.Occlude,this.manipulators.forEach((({manipulator:t})=>{for(const{geometry:e}of t.renderObjects)e.material.setParameters({renderOccluded:$.Occlude})}))},getManipulatorsForDimension:e=>this._computationManipulators.get(t(e)),getComputationForDimension:e=>t(e),getConstraintForDimension:e=>{const i=t(e);return null!=i?this._computeConstraint(i):null},stagedDimension:this._stagedDimension,stagedStartIndicator:this._stagedStartIndicator,constraintSnappingIndicator:this._constraintSnappingIndicator,snappingManager:this._snappingManager}}};t([_({constructOnly:!0})],ct.prototype,"analysis",void 0),t([_({constructOnly:!0})],ct.prototype,"analysisViewData",void 0),t([_({constructOnly:!0})],ct.prototype,"manipulators",void 0),t([_({constructOnly:!0})],ct.prototype,"parentTool",void 0),t([_({constructOnly:!0,nonNullable:!0})],ct.prototype,"view",void 0),t([_({readOnly:!0})],ct.prototype,"updating",null),t([_()],ct.prototype,"firstGrabbedManipulator",null),t([_()],ct.prototype,"hasGrabbedManipulators",null),t([_()],ct.prototype,"snappingOptions",null),t([_()],ct.prototype,"_stagedDimension",void 0),t([_()],ct.prototype,"_activeComputation",null),t([_()],ct.prototype,"_stagedComputation",null),ct=t([M("esri.views.3d.analysis.Dimension.LengthDimensionSubTool")],ct);const mt=y();export{ct as LengthDimensionSubTool};
5
+ import{_ as t}from"../../../../chunks/tslib.es6.js";import e from"../../../../Color.js";import"../../../../geometry.js";import{LengthDimensionMeasureType as i}from"../../../../analysis/dimensionUtils.js";import n from"../../../../analysis/LengthDimension.js";import a from"../../../../core/Accessor.js";import s from"../../../../core/Handles.js";import{destroyHandle as o}from"../../../../core/handleUtils.js";import{equals as r}from"../../../../core/lang.js";import{destroyMaybe as p}from"../../../../core/maybe.js";import{memoize as l}from"../../../../core/memoize.js";import{ignoreAbortErrors as u}from"../../../../core/promiseUtils.js";import{mapCollection as d,watch as c,sync as m,syncAndInitial as h,initial as g,when as f}from"../../../../core/reactiveUtils.js";import{property as _}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as M}from"../../../../core/accessorSupport/decorators/subclass.js";import{c as y}from"../../../../chunks/vec3f64.js";import{UpdatingHandles as v}from"../../../../core/support/UpdatingHandles.js";import{clonePoint as S}from"../../../../layers/graphics/hydratedFeatures.js";import{reapplyConstraint as C,LengthDimensionConstraint as w,applyConstraint as b,computeConstraint as D,constraintDependencies as O}from"./lengthDimensionConstraintUtils.js";import{LengthDimensionManipulators as P,createPointManipulator as j,pointManipulatorHandles as H,createOffsetManipulator as T,offsetManipulatorHandles as G,createOrientationManipulator as I,headingManipulatorHandles as z,rotationManipulatorHandles as x,createMeasureTypeManipulator as U,measureTypeManipulatorHandles as V,updateOffsetManipulatorTransform as R,updateHeadingManipulatorTransform as A,updateRotationManipulatorTransform as k,updateMeasureTypeManipulatorTransform as E,updateOrientationManipulator as F,unfocusedOffsetWidth as L,focusedOffsetWidth as q}from"./lengthDimensionManipulatorUtils.js";import{isValidComputation as B,arePointsVerticallyAligned as N,computeGeometryFromDimension as J,computationToGeometryDependencies as K}from"./lengthDimensionUtils.js";import{Settings as Q}from"./settings.js";import{getRotateHeadingTexture as W}from"../images/Factory.js";import{SnappingVisualizer3D as X}from"../../interactive/SnappingVisualizer3D.js";import{LineVisualElement as Y}from"../../interactive/visualElements/LineVisualElement.js";import{VerticesVisualElement as Z}from"../../interactive/visualElements/VerticesVisualElement.js";import{RenderOccludedFlag as $}from"../../webgl-engine/lib/Material.js";import{ImageMaterial as tt}from"../../webgl-engine/materials/ImageMaterial.js";import{createStipplePatternSimple as et}from"../../webgl-engine/materials/lineStippleUtils.js";import{RibbonLineMaterial as it}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{createCoordinateHelper as nt}from"../../../interactive/coordinateHelper.js";import{EditGeometry as at}from"../../../interactive/editGeometry/EditGeometry.js";import{EditGeometryOperations as st}from"../../../interactive/editGeometry/EditGeometryOperations.js";import{acquire as ot}from"../../../interactive/snapping/SceneSnappingManagerPool.js";import{SnappingContext as rt}from"../../../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as pt}from"../../../interactive/snapping/SnappingDragPipelineStep.js";import{SnappingOperation as lt}from"../../../interactive/snapping/SnappingOperation.js";import{setupSnappingToggleHandles as ut}from"../../../interactive/snapping/snappingUtils.js";import dt from"../../../../geometry/Point.js";let ct=class extends a{constructor(t){super(t),this._stagedDimension=null,this._computationManipulators=new Map,this._computationHandles=new s,this._updatingHandles=new v,this._getSnappingContext=l((t=>new rt({elevationInfo:{mode:"absolute-height",offset:0},pointer:t,editGeometryOperations:new st(new at("point",nt(!0,!1,this.view.spatialReference))),visualizer:new X})));const{view:i}=t;this._settings=new Q(i.effectiveTheme),this._snappingManagerResult=ot(i),this.addHandles(this._snappingManagerResult),this._unfocusedOffsetManipulatorMaterial=this._createOffsetManipulatorMaterial(),this._focusedOffsetManipulatorMaterial=this._createOffsetManipulatorMaterial(),this._thinOffsetManipulatorMaterial=this._createOffsetManipulatorMaterial(),this._thinOffsetManipulatorMaterial.setParameters({stipplePattern:et(2)}),this._constraintSnappingIndicator=new Y({view:i,attached:!0,width:1,color:e.toUnitRGBA(this._settings.constraint.color),renderOccluded:$.OccludeAndTransparent,stipplePattern:et(5),isDecoration:!0});const n=e.toUnitRGBA(this._settings.disabledPointIndicator.color);this._stagedStartIndicator=new Z({view:i,attached:!1,elevationInfo:{mode:"absolute-height",offset:0},spatialReference:t.view.renderCoordsHelper.spatialReference,color:n,size:2*this._settings.disabledPointIndicator.radius,outlineSize:0,renderOccluded:$.OccludeAndTransparent,isDecoration:!0})}initialize(){this._snappingOperation=new lt({view:this.view});const{color:t,contrastColor:e}=this._settings.orientationManipulator,i=!this.view._stage?.renderView.renderingContext.driverTest.svgPremultipliesAlpha.result;this._orientationManipulatorTexture=W(this.view.toolViewManager.textures,{accentColor:t,contrastColor:e,preMultiplyAlpha:i}),this._orientationManipulatorMaterial=new tt({transparent:!0,writeDepth:!1,textureId:this._orientationManipulatorTexture.texture.id,renderOccluded:$.Opaque,isDecoration:!0});const n=d((()=>this.analysisViewData.computations),(({computation:t})=>this._createManipulators(t)));this.addHandles(o(n)),this.addHandles([c((()=>({stagedPoint:this._snappingOperation.stagedPoint,stagedComputation:this._stagedComputation})),(({stagedPoint:t,stagedComputation:e})=>{if(null==e||null==t)return;const i=S(t,new dt);this._applyPointUpdate(e,{endPoint:i})}),m),c((()=>({stagedDimension:this._stagedDimension,selectedComputation:this.analysisViewData.selectedComputation,firstGrabbedManipulator:this.firstGrabbedManipulator})),((t,e)=>{const{stagedDimension:i,selectedComputation:n,firstGrabbedManipulator:a}=t;if(i===e?.stagedDimension&&a===e?.firstGrabbedManipulator){for(const s of[n,e?.selectedComputation])if(null!=s){const e=this._computationManipulators.get(s);null!=e&&this._updateManipulators(s,e,t)}}else for(const[s,o]of this._computationManipulators)this._updateManipulators(s,o,t)}),h),c((()=>this.analysis.style.lineSize),(t=>{this._updateManipulatorStyle(t)}),g),c((()=>this.view.state.camera),(()=>{null!=this._stagedComputation&&this._updateStagedDimensionOffset(this._stagedComputation)})),c((()=>{const t=this._stagedComputation;if(!t)return null;const e=t.elevationAlignedStartPoint,i=y();return null!=e&&this.view.renderCoordsHelper.toRenderCoords(e,i)?i:null}),(t=>{null!=t?(this._stagedStartIndicator.vertices=[t],this._stagedStartIndicator.attached=!0):this._stagedStartIndicator.attached=!1}))]),this.addHandles(this._constraintHandles),this.addHandles(this._snappingIndicatorHandles),ut(this,(()=>{const t=this._activeComputation,e=this._stagedComputation;if(null==t||null!=e){const t=this.view.inputManager.latestPointerType??"mouse",e=this._getSnappingContext(t);this._updatingHandles.addPromise(u(this._snappingOperation.resnap(this._snappingManager,e)))}if(null!=t){const{start:e,end:i}=this._computationManipulators.get(t);if(e.grabbing||i.grabbing){const i=e.grabbing?"start":"end",n=this._computeConstraint(t);C(t,i,{constraint:n,view:this.view})}}}))}destroy(){this._snappingOperation=p(this._snappingOperation),this._computationHandles.destroy(),this._constraintSnappingIndicator.destroy(),this._stagedStartIndicator.destroy(),this._orientationManipulatorTexture.release()}get updating(){return this._updatingHandles.updating||this._snappingManager.updating}get firstGrabbedManipulator(){return this.parentTool.firstGrabbedManipulator}get hasGrabbedManipulators(){return this.parentTool.hasGrabbedManipulators}get snappingOptions(){return this._snappingManager.options}get _snappingManager(){return this._snappingManagerResult.snappingManager}get _activeComputation(){if(null!=this._stagedComputation)return this._stagedComputation;const{selectedComputation:t}=this.analysisViewData;return this.hasGrabbedManipulators&&null!=t?t:null}get _stagedComputation(){const t=this._stagedDimension,e=this.analysisViewData.computations.at(-1)?.computation;return null==t||null==e||e.dimension!==t?null:e}get _constraintHandles(){return[f((()=>this.analysisViewData.selectedComputation),(t=>{t.previousConstraint=this._computeConstraint(t)}),{...h,equals:r}),c((()=>{const t=this._activeComputation;if(null==t)return null;const{measureType:e,orientation:i}=t.dimension;return{measureType:e,orientation:i,computation:t}}),((t,e)=>{if(null!=t&&null==e){const{measureType:e,orientation:n,computation:a}=t;switch(a.previousConstraint){case w.Horizontal:a.preConstraintProperties={measureType:i.Horizontal,orientation:0};break;case w.Vertical:a.preConstraintProperties={measureType:i.Vertical,orientation:0};break;case w.Direct:a.preConstraintProperties={measureType:i.Direct,orientation:n};break;default:a.preConstraintProperties={measureType:e,orientation:n}}}null==t&&null!=e&&(e.computation.preConstraintProperties=null)}),m)]}get _snappingIndicatorHandles(){const t="snapping-indicator-event-handles";return[c((()=>({stagedComputation:this._stagedComputation,activeComputation:this._activeComputation})),(({stagedComputation:e,activeComputation:i})=>{const n=this._constraintSnappingIndicator;if(this.removeHandles(t),null!=i)if(i===e)n.attached=!0;else{const{start:e,end:a}=this._computationManipulators.get(i),s=()=>{n.attached=e.grabbing||a.grabbing};s(),this.addHandles([e.events.on("grab-changed",s),a.events.on("grab-changed",s)],t)}else n.attached=!1})),c((()=>{const t=this._activeComputation;return null!=t?{geometry:t.geometry,constraint:t.previousConstraint}:{}}),(({geometry:t,constraint:e})=>{const i=this._constraintSnappingIndicator;null!=t&&null!=e&&e!==w.Direct?(i.visible=!0,i.setGeometryFromSegment(t.directSegment)):i.visible=!1}))]}removeStaged(){return null!=this._stagedDimension&&(this.analysis.dimensions.remove(this._stagedDimension),this._stagedDimension=null,!0)}onDeactivate(){this.removeStaged(),this._resetSnappingState()}onClick(t){const{_stagedDimension:e}=this;if(null==e){const e=this._onUnstagedClick(t);return this.analysis.dimensions.add(e),null}return this._onStagedClick(t),e}onPointerMove({mapPoint:t,pointerType:e}){if("touch"===e)return;const i=this._getSnappingContext(e);this._updatingHandles.addPromise(u(this._snappingOperation.snap({point:t},this._snappingManager,i)))}onManipulatorSelectionChanged(){if(null!=this.analysisViewData.selectedComputation){this._computationManipulators.get(this.analysisViewData.selectedComputation).offset.selected||(this.analysisViewData.selectedDimension=null)}}_onUnstagedClick({mapPoint:t,pointerType:e}){let a=t;if("mouse"===e){const i=this._getSnappingContext(e);a=this._snappingManager.update({point:t,context:i})}const s=new n({startPoint:S(a,new dt),endPoint:null,measureType:i.Horizontal});return this._stagedDimension=s,this._resetSnappingState(),s}_onStagedClick({mapPoint:t,pointerType:e}){const i=this._stagedComputation;if(null==i)return;let n=t;if("mouse"===e){const i=this._getSnappingContext(e);n=this._snappingManager.update({point:t,context:i})}const a=S(n,new dt);this._applyPointUpdate(i,{endPoint:a}),this._stagedDimension=null,this._resetSnappingState()}_resetSnappingState(){this._snappingManager.doneSnapping(),this._snappingOperation.abort(),this._snappingOperation.stagedPoint=null}_createManipulators(t){const e=this._setupPointManipulator(t,{isStart:!0}),n=this._setupPointManipulator(t,{isStart:!1}),a=this._setupOffsetManipulator(t),s=this._setupHeadingManipulator(t),o=this._setupRotationManipulator(t),r=this._setupMeasureTypeManipulator(t,i.Direct),p=this._setupMeasureTypeManipulator(t,i.Horizontal),l=this._setupMeasureTypeManipulator(t,i.Vertical),u=new P({start:e,end:n,offset:a,heading:s,rotation:o,direct:r,horizontal:p,vertical:l});return this._setupComputationToManipulatorsSync(t,u),this._computationManipulators.set(t,u),this.manipulators.addMany(u.values()),{manipulators:u,remove:()=>{this._computationHandles.remove(t),this._computationManipulators.delete(t);for(const t of u.values())this.manipulators.remove(t)}}}_setupComputationToManipulatorsSync(t,e){this._computationHandles.add([c((()=>t.geometry),(()=>this._updateManipulators(t,e)),{...h,equals:r})],t)}_setupPointManipulator(t,e){const{view:i}=this,{dimension:n}=t,a=j(i,{metadata:n}),s=H(a,{isStart:e.isStart,createSnappingPipelineStep:t=>pt({snappingContext:this._getSnappingContext(t),snappingManager:this._snappingManager,updatingHandles:this._updatingHandles}),dimension:n,onUpdate:e=>this._applyPointUpdate(t,e),view:i});return this._computationHandles.add(s,t),a}_setupOffsetManipulator(t){const{view:e}=this,i=T(e,{lineSizePt:this.analysis.style.lineSize,unfocusedMaterial:this._unfocusedOffsetManipulatorMaterial,focusedMaterial:this._focusedOffsetManipulatorMaterial,metadata:t.dimension}),n=G(i,{computation:t,view:e});return this._computationHandles.add(n,t),i}_setupHeadingManipulator(t){const{view:e}=this,i=I(e,{lineSizePt:this.analysis.style.lineSize,material:this._orientationManipulatorMaterial,metadata:t.dimension}),n=z(i,{computation:t,view:e});return this._computationHandles.add(n,t),i}_setupRotationManipulator(t){const{view:e}=this,i=I(e,{lineSizePt:this.analysis.style.lineSize,material:this._orientationManipulatorMaterial,metadata:t.dimension}),n=x(i,{computation:t,view:e});return this._computationHandles.add(n,t),i}_setupMeasureTypeManipulator(t,e){const{view:i}=this,n=U(i,{lineSizePt:this.analysis.style.lineSize,unfocusedMaterial:this._unfocusedOffsetManipulatorMaterial,focusedMaterial:this._focusedOffsetManipulatorMaterial,thinOffsetManipulatorMaterial:this._thinOffsetManipulatorMaterial,metadata:t.dimension}),a=V(n,{computation:t,manipulatorMeasureType:e,view:i});return this._computationHandles.add(a,t),n}_updateManipulators(t,e,n={stagedDimension:this._stagedDimension,selectedComputation:this.analysisViewData.selectedComputation,firstGrabbedManipulator:this.firstGrabbedManipulator}){const{stagedDimension:a,selectedComputation:s,firstGrabbedManipulator:o}=n,{start:r,end:p,offset:l,heading:u,rotation:d}=e,c=s===t,m=B(t),{dimension:h}=t;for(const i of e.values()){const t=m&&null==a&&(null==o||i===o);i===l?(i.available=t,i.selected=c):i.available=t&&c}if(!m)return;null!=this._computeConstraint(t)?e.forEachMeasureTypeManipulator((t=>t.available=!1)):e.manipulatorForMeasureType(h.measureType).available=!1;for(const _ of[u,d])h.measureType===i.Direct&&0!==h.offset||(_.available=!1);N(t)?d.available=!1:u.available=!1;const{geometry:g}=t;r.renderLocation=g.directSegment.startRenderSpace,p.renderLocation=g.directSegment.endRenderSpace;const{renderCoordsHelper:f}=this.view;R(l,g,f),u.available&&A(u,t,f),d.available&&k(d,t,f),e.forEachMeasureTypeManipulator(((e,i)=>{e.available&&E(e,t,i,f)}))}_updateManipulatorStyle(t){const e=L(t),i=q(t),n={lineSizePt:t,material:this._orientationManipulatorMaterial};for(const{offset:a,heading:s,rotation:o}of this._computationManipulators.values())a.radius=i/2,F(this.view,s,n),F(this.view,o,n);this._unfocusedOffsetManipulatorMaterial.setParameters({width:e}),this._focusedOffsetManipulatorMaterial.setParameters({width:i})}_applyPointUpdate(t,e){const{view:i}=this,n=K(t);"startPoint"in e&&(n.elevationAlignedStartPoint=e.startPoint),"endPoint"in e&&(n.elevationAlignedEndPoint=e.endPoint);const a=J(n,i.renderCoordsHelper);if(null==a)return;const s=this._computeConstraint({...n,geometry:a});b(t,e,{...n,constraint:s,unconstrainedGeometry:a,view:i}),t===this._stagedComputation&&this._updateStagedDimensionOffset(t)}_updateStagedDimensionOffset(t){if(null==t.geometry)return;t.geometry.directSegment.eval(.5,mt);const e=this.view.state.camera.computeRenderPixelSizeAt(mt);t.dimension.offset=this._settings.initialOffsetPx*e}_computeConstraint(t){return D(O(t,this._snappingManager.options),this.view)}_createOffsetManipulatorMaterial(){const{color:t}=this._settings.offsetManipulator;return new it({color:e.toUnitRGBA(t),width:1,renderOccluded:$.OccludeAndTransparent,writeDepth:!1,hasPolygonOffset:!0,isDecoration:!0})}get testInfo(){const t=t=>this.analysisViewData.computations.find((({computation:e})=>e.dimension===t))?.computation;return{disableManipulatorPartialOcclusion:()=>{this._stagedStartIndicator.renderOccluded=$.Occlude,this.manipulators.forEach((({manipulator:t})=>{for(const{geometry:e}of t.renderObjects)e.material.setParameters({renderOccluded:$.Occlude})}))},getManipulatorsForDimension:e=>this._computationManipulators.get(t(e)),getComputationForDimension:e=>t(e),getConstraintForDimension:e=>{const i=t(e);return null!=i?this._computeConstraint(i):null},stagedDimension:this._stagedDimension,stagedStartIndicator:this._stagedStartIndicator,constraintSnappingIndicator:this._constraintSnappingIndicator,snappingManager:this._snappingManager}}};t([_({constructOnly:!0})],ct.prototype,"analysis",void 0),t([_({constructOnly:!0})],ct.prototype,"analysisViewData",void 0),t([_({constructOnly:!0})],ct.prototype,"manipulators",void 0),t([_({constructOnly:!0})],ct.prototype,"parentTool",void 0),t([_({constructOnly:!0,nonNullable:!0})],ct.prototype,"view",void 0),t([_({readOnly:!0})],ct.prototype,"updating",null),t([_()],ct.prototype,"firstGrabbedManipulator",null),t([_()],ct.prototype,"hasGrabbedManipulators",null),t([_()],ct.prototype,"snappingOptions",null),t([_()],ct.prototype,"_stagedDimension",void 0),t([_()],ct.prototype,"_activeComputation",null),t([_()],ct.prototype,"_stagedComputation",null),ct=t([M("esri.views.3d.analysis.Dimension.LengthDimensionSubTool")],ct);const mt=y();export{ct as LengthDimensionSubTool};
@@ -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"../../../../geometry.js";import{LengthDimensionMeasureType as e}from"../../../../analysis/dimensionUtils.js";import"../../../../core/has.js";import{k as t,b as n,d as i,g as o,p as r}from"../../../../chunks/vec3.js";import{sv3d as a}from"../../../../geometry/support/vectorStacks.js";import{automaticHeadingFromCamera as s}from"./lengthDimensionManipulatorUtils.js";import{isGeodesicDimension as l,directUp as d,directStartToEnd as c}from"./lengthDimensionUtils.js";import{constraintThresholdPx as m}from"./settings.js";import u from"../../../../geometry/Point.js";var P;function p(e,t){return{enabled:t.effectiveFeatureEnabled,elevationAlignedStartPoint:e.elevationAlignedStartPoint,elevationAlignedEndPoint:e.elevationAlignedEndPoint,geometry:e.geometry}}function g(e,s){if(l(e))return P.Direct;if(!e.enabled)return null;const{geometry:u}=e;if(null==u||t(u.directSegment.startRenderSpace,u.directSegment.endRenderSpace))return null;const{camera:p}=s.state,g=d(a.get(),u,s.renderCoordsHelper),f=c(a.get(),u),v=n(a.get(),g,i(f,g)),y=o(a.get(),f,v),S=r(y),A=r(v),{startRenderSpace:R,endRenderSpace:z}=u.directSegment,j=Math.max(p.computeRenderPixelSizeAt(R)*m,p.computeRenderPixelSizeAt(z)*m)**2;return S<j?P.Vertical:A<j?P.Horizontal:null}function f(e,t,{constraint:n,view:i}){const{unconstrainedGeometry:o}=e;if(null==o)return;const{renderCoordsHelper:r,spatialReference:a}=i,{startRenderSpace:s,endRenderSpace:l}=o.directSegment,d=r.fromRenderCoords(s,new u,a),c=r.fromRenderCoords(l,new u,a);let m;m="start"===t?{startPoint:d}:{endPoint:c},v(e,m,{constraint:n,elevationAlignedStartPoint:e.elevationAlignedStartPoint,elevationAlignedEndPoint:e.elevationAlignedEndPoint,unconstrainedGeometry:o,view:i})}function v(t,n,i){const{constraint:o,elevationAlignedStartPoint:r,elevationAlignedEndPoint:a,unconstrainedGeometry:l,view:d}=i,{dimension:c,previousConstraint:m,preConstraintProperties:u}=t;if(null==r||null==a)return;const p=()=>{"startPoint"in n?c.startPoint=n.startPoint:"endPoint"in n&&(c.endPoint=n.endPoint)};if(null==o)p(),null!=m&&null!=u&&(c.measureType=u.measureType,c.orientation=u.orientation);else switch(c.measureType=e.Direct,o){case P.Horizontal:if(o!==m&&(c.orientation=0),"startPoint"in n){const e=n.startPoint;null!=e&&(e.z=a.z),c.startPoint=e}else if("endPoint"in n){const e=n.endPoint;null!=e&&(e.z=r.z),c.endPoint=e}break;case P.Vertical:if(o!==m&&(c.orientation=s(l,d)),"startPoint"in n){const e=n.startPoint;null!=e&&(e.x=a.x,e.y=a.y),c.startPoint=e}else if("endPoint"in n){const e=n.endPoint;null!=e&&(e.x=r.x,e.y=r.y),c.endPoint=e}break;case P.Direct:o!==m&&null!=u&&(c.orientation=u.orientation),p()}t.previousConstraint=o,t.unconstrainedGeometry=l}!function(e){e[e.Horizontal=0]="Horizontal",e[e.Vertical=1]="Vertical",e[e.Direct=2]="Direct"}(P||(P={}));export{P as LengthDimensionConstraint,v as applyConstraint,g as computeConstraint,p as constraintDependencies,f as reapplyConstraint};
5
+ import"../../../../geometry.js";import{LengthDimensionMeasureType as e}from"../../../../analysis/dimensionUtils.js";import"../../../../core/has.js";import{h as t,i as n,j as i,f as o,o as r}from"../../../../chunks/vec3.js";import{sv3d as a}from"../../../../geometry/support/vectorStacks.js";import{automaticHeadingFromCamera as s}from"./lengthDimensionManipulatorUtils.js";import{isGeodesicDimension as l,directUp as d,directStartToEnd as c}from"./lengthDimensionUtils.js";import{constraintThresholdPx as m}from"./settings.js";import u from"../../../../geometry/Point.js";var P;function p(e,t){return{enabled:t.effectiveFeatureEnabled,elevationAlignedStartPoint:e.elevationAlignedStartPoint,elevationAlignedEndPoint:e.elevationAlignedEndPoint,geometry:e.geometry}}function f(e,s){if(l(e))return P.Direct;if(!e.enabled)return null;const{geometry:u}=e;if(null==u||t(u.directSegment.startRenderSpace,u.directSegment.endRenderSpace))return null;const{camera:p}=s.state,f=d(a.get(),u,s.renderCoordsHelper),g=c(a.get(),u),v=n(a.get(),f,i(g,f)),y=o(a.get(),g,v),S=r(y),A=r(v),{startRenderSpace:R,endRenderSpace:j}=u.directSegment,z=Math.max(p.computeRenderPixelSizeAt(R)*m,p.computeRenderPixelSizeAt(j)*m)**2;return S<z?P.Vertical:A<z?P.Horizontal:null}function g(e,t,{constraint:n,view:i}){const{unconstrainedGeometry:o}=e;if(null==o)return;const{renderCoordsHelper:r,spatialReference:a}=i,{startRenderSpace:s,endRenderSpace:l}=o.directSegment,d=r.fromRenderCoords(s,new u,a),c=r.fromRenderCoords(l,new u,a);let m;m="start"===t?{startPoint:d}:{endPoint:c},v(e,m,{constraint:n,elevationAlignedStartPoint:e.elevationAlignedStartPoint,elevationAlignedEndPoint:e.elevationAlignedEndPoint,unconstrainedGeometry:o,view:i})}function v(t,n,i){const{constraint:o,elevationAlignedStartPoint:r,elevationAlignedEndPoint:a,unconstrainedGeometry:l,view:d}=i,{dimension:c,previousConstraint:m,preConstraintProperties:u}=t;if(null==r||null==a)return;const p=()=>{"startPoint"in n?c.startPoint=n.startPoint:"endPoint"in n&&(c.endPoint=n.endPoint)};if(null==o)p(),null!=m&&null!=u&&(c.measureType=u.measureType,c.orientation=u.orientation);else switch(c.measureType=e.Direct,o){case P.Horizontal:if(o!==m&&(c.orientation=0),"startPoint"in n){const e=n.startPoint;null!=e&&(e.z=a.z),c.startPoint=e}else if("endPoint"in n){const e=n.endPoint;null!=e&&(e.z=r.z),c.endPoint=e}break;case P.Vertical:if(o!==m&&(c.orientation=s(l,d)),"startPoint"in n){const e=n.startPoint;null!=e&&(e.x=a.x,e.y=a.y),c.startPoint=e}else if("endPoint"in n){const e=n.endPoint;null!=e&&(e.x=r.x,e.y=r.y),c.endPoint=e}break;case P.Direct:o!==m&&null!=u&&(c.orientation=u.orientation),p()}t.previousConstraint=o,t.unconstrainedGeometry=l}!function(e){e[e.Horizontal=0]="Horizontal",e[e.Vertical=1]="Vertical",e[e.Direct=2]="Direct"}(P||(P={}));export{P as LengthDimensionConstraint,v as applyConstraint,f as computeConstraint,p as constraintDependencies,g as reapplyConstraint};
@@ -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"../../../../geometry.js";import{lengthDimensionMeasureType as t,LengthDimensionMeasureType as n}from"../../../../analysis/dimensionUtils.js";import{cyclicalDegrees as r}from"../../../../core/Cyclical.js";import{rad2deg as o}from"../../../../core/mathUtils.js";import{pt2px as i}from"../../../../core/screenUtils.js";import{i as a,k as s}from"../../../../chunks/mat4.js";import{c}from"../../../../chunks/mat4f64.js";import{b as m,i as d,g as u,c as l,d as f,k as p,l as g,s as h,A as v}from"../../../../chunks/vec3.js";import{c as y,Z as S,f as j}from"../../../../chunks/vec3f64.js";import{fromPositionAndNormal as w,create as x,signedDistance as H,normal as M}from"../../../../geometry/support/plane.js";import{sv3d as C}from"../../../../geometry/support/vectorStacks.js";import{clonePoint as P}from"../../../../layers/graphics/hydratedFeatures.js";import{isValidComputation as T,computeGeometryFromDimension as b,computationToGeometryDependencies as k,headingFromGeometry as R,computeOffsetForPoint as U,computeSegmentForMeasureType as z,computeOffsetAxis as O,directUp as A,directStartToEnd as D,dimensionStartToEnd as E}from"./lengthDimensionUtils.js";import{PointStyle as F,lengthFraction as L,orientationSnapThresholdDegrees as G,minLengthMeters as B,linePaddingPx as I,focusedLinePaddingPx as W,OrientationManipulatorStyle as N,MarkerStyle as V}from"./settings.js";import{Manipulator3D as Z}from"../../interactive/Manipulator3D.js";import{createSphereManipulator as q,worldScaledManipulatorSettings as J,createRotateManipulator as K,updateRotateManipulator as Q,calculateInputRotationTransform as X,calculateTranslateRotateFromBases as Y}from"../../interactive/manipulatorUtils.js";import{RenderObject as $}from"../../interactive/RenderObject.js";import{screenToMap3D as _,screenToRenderPlane as ee,hideManipulatorWhileDragging as te}from"../../interactive/editingTools/dragEventPipeline3D.js";import{EuclideanSegment as ne}from"../../interactive/visualElements/support/Segment.js";import{MARKER_SIZE_PER_LINE_WIDTH as re}from"../../support/engineContent/marker.js";import{createPolylineGeometry as oe}from"../../webgl-engine/lib/GeometryUtil.js";import{createManipulatorDragEventPipeline as ie,resetProperties as ae,EventPipeline as se}from"../../../interactive/dragEventPipeline.js";import{ManipulatorStateCustomFlags as ce,ManipulatorStateFlags as me}from"../../../interactive/interfaces.js";import de from"../../../../geometry/Point.js";class ue{constructor(e){this.start=e.start,this.end=e.end,this.offset=e.offset,this.heading=e.heading,this.rotation=e.rotation,this.direct=e.direct,this.horizontal=e.horizontal,this.vertical=e.vertical}manipulatorName(e){return Object.keys(this).find((t=>this.hasOwnProperty(t)&&e===this[t]))}values(){return[this.start,this.end,this.offset,this.heading,this.rotation,this.direct,this.horizontal,this.vertical]}forEachMeasureTypeManipulator(e){for(const n of t)e(this.manipulatorForMeasureType(n),n)}manipulatorForMeasureType(e){switch(e){case n.Direct:return this.direct;case n.Horizontal:return this.horizontal;case n.Vertical:return this.vertical}}}function le(t,n){const r=new F(t.effectiveTheme),o=q(t,e.toUnitRGBA(r.color),We);return o.available=!1,o.grabCursor="crosshair",o.radius=r.radius,o.metadata=n.metadata,o.collisionPriority=1,o}function fe(e,t){const n=[j(-.5,0,0),j(.5,0,0)],r=oe(t.unfocusedMaterial,n.map((e=>m(y(),e,L)))),o=r.instantiate({material:t.focusedMaterial});return new Z({view:e,renderObjects:[new $(r,me.Unfocused|me.Selected|We),new $(o,me.Focused|We)],collisionType:{type:"line",paths:[n]},radius:Ie(t.lineSizePt)/2,metadata:t.metadata,available:!1,...J})}function pe(t,n,{lineSizePt:r,material:o}){const a=new N(t.effectiveTheme),{calloutOffsetPx:s,calloutWidth:c,discScale:m,focusMultiplier:d,color:u}=a,l=new V;return{calloutLength:.25*re*l.lineSizeFraction*i(r)+s,calloutColor:e.toUnitRGBA(u),calloutWidth:c,customStateMask:We,discScale:m,focusMultiplier:d,material:o,metadata:n}}function ge(e,t){return K(e,pe(e,t.metadata,t))}function he(e,t,n){Q(t,pe(e,t.metadata,n))}function ve(e,t){const n=[j(-.5,0,0),j(.5,0,0)],r=oe(t.thinOffsetManipulatorMaterial,n),o=oe(t.unfocusedMaterial,n.map((e=>m(y(),e,L)))),i=o.instantiate({material:t.focusedMaterial});return new Z({view:e,renderObjects:[new $(o,me.Unfocused|We),new $(i,me.Focused|We),new $(r,We)],collisionType:{type:"line",paths:[n]},radius:Ie(t.lineSizePt)/2,available:!1,metadata:t.metadata,...J})}function ye(e,{isStart:t,createSnappingPipelineStep:n,dimension:r,onUpdate:o,view:i}){const a=t?"startPoint":"endPoint",s=ie(e,((e,t,s,c)=>{const m=te(e),{snappingStep:d,cancelSnapping:u}=n(c);s=s.next(m).next(ae(r,[a,"measureType","orientation"])).next(u),t.next(m).next(_(i)).next(...d).next((e=>{const t=P(e.mapEnd,new de);o("startPoint"===a?{startPoint:t}:{endPoint:t})}))}));return[s]}function Se(e,{computation:t,view:n}){return[ie(e,((e,r,o)=>{if(!T(t)||!e.selected)return;const{geometry:i,dimension:a}=t,s=te(e);r.next(s).next(Pe(n,a,i.dimensionSegment,i.primaryOffsetAxis)),o.next(s).next(ae(a,["offset"]))}))]}function je(e,{computation:t,view:n}){return[ie(e,((e,r,o)=>{He({cancel:o,computation:t,settingHeading:!0,steps:r,view:n})}))]}function we(e,{computation:t,view:n}){return[ie(e,((e,r,o)=>{He({cancel:o,computation:t,settingHeading:!1,steps:r,view:n})})),e.events.on("immediate-click",(e=>{xe(e,t,n)}))]}function xe(e,t,n){const{dimension:o,geometry:i}=t;if(90===o.orientation||270===o.orientation)return o.orientation=0,void e.stopPropagation();if(null==i)return;const{renderCoordsHelper:a}=n,s=b({...k(t),orientation:90},a),c=b({...k(t),orientation:270},a);if(null==s||null==c)return;const m=R(s,a),d=R(c,a),u=Te(i,n),l=r.shortestSignedDiff(u,m),f=r.shortestSignedDiff(u,d);o.orientation=Math.abs(l)<Math.abs(f)?90:270,e.stopPropagation()}function He(e){const{cancel:t,computation:n,settingHeading:r,steps:i,view:a}=e;if(!T(n))return;const{renderCoordsHelper:s}=a,{dimension:c,geometry:m}=n,u=y(),l=De(y(),m,m.directSegment,s),f=Ee(C.get(),{forHeading:r,geometry:m,renderCoordsHelper:s}),p=w(l,f,x()),g=r?c.orientation??R(m,a.renderCoordsHelper):c.orientation??0;i.next(ee(a,p)).next((e=>{"start"===e.action&&d(u,e.renderStart);const t=M(p),n=X(u,e.renderEnd,l,t);let i=g-o(n);r||(i=Me(i)),c.orientation=i})),t.next(ae(c,["orientation"]))}function Me(e){const t=r.normalize(e)%90;return t<G?e-t:90-t<G?e+(90-t):e}function Ce(e,{computation:t,manipulatorMeasureType:r,view:o}){let i=n.Direct,a=0,s=0;return[e.events.on("grab-changed",(n=>{if("start"!==n.action||!T(t))return;const{dimension:c,geometry:m}=t;i=c.measureType,a=c.offset,s=c.orientation;const u=d(C.get(),e.renderLocation);c.measureType=r,c.offset=U(u,r,m,o.renderCoordsHelper),c.orientation=0})),ie(e,((e,n,c)=>{if(!T(t))return;const{geometry:m,dimension:d}=t,{renderCoordsHelper:u}=o,l=z(qe,r,t,u),f=O(C.get(),{measureType:r,directSegment:m.directSegment,renderCoordsHelper:u}),p=te(e);n.next(p).next(Pe(o,d,l,f)),c.next(p).next((e=>(d.measureType=i,d.offset=a,d.orientation=s,e)))}))]}function Pe(e,t,n,r){const o=u(C.get(),n.endRenderSpace,n.startRenderSpace);l(o,o,r);const i=w(n.startRenderSpace,o,x()),a=w(n.startRenderSpace,r,x()),s=t.offset;let c,m=0;const d=new se;return d.next(ee(e,i)).next((n=>{"start"===n.action&&(m=H(a,n.renderStart));const r=(H(a,n.renderEnd)-m)*e.renderCoordsHelper.unitInMeters;t.offset=s+r,c=n})),e=>(d.execute(e),c)}function Te(e,t){const{directSegment:n}=e,{renderCoordsHelper:r}=t,o=A(C.get(),e,r),i=D(C.get(),e),a=l(C.get(),i,o),{viewForward:s}=t.state.camera;f(a,s)>0&&m(a,a,-1);const c=n.eval(.5,C.get());return r.headingAtPosition(c,a)}function be(e,t,n){const{dimensionSegment:r,primaryOffsetAxis:o}=t,i=E(Ne,t),c=p(i,S)?a(Ze):Y(i,o,S,Ze),m=Math.max(g(i),B/n.unitInMeters);s(c,c,h(Ne,m,m,m)),e.modelTransform=c,e.renderLocation=r.eval(.5,Ne)}function ke(e,t,n){Ue(e,t,n,{forHeading:!0})}function Re(e,t,n){Ue(e,t,n,{forHeading:!1})}function Ue(e,t,n,{forHeading:r}){const{dimension:o,geometry:i}=t,{primaryOffsetAxis:a}=i,s=m(ze,a,o.offset>=0?1:-1),c=Ee(Oe,{forHeading:r,geometry:i,renderCoordsHelper:n});l(c,c,s);const d=Y(s,c,S,Ze);e.modelTransform=d,e.renderLocation=De(Ne,i,i.dimensionSegment,n)}const ze=y(),Oe=y();function Ae(e,t,n,r){const{geometry:o}=t,i=z(qe,n,t,r),a=O(Ne,{measureType:n,directSegment:o.directSegment,renderCoordsHelper:r}),c=v(Ve,i.endRenderSpace,i.startRenderSpace),m=Y(c,a,S,Ze),d=g(c);s(m,m,h(Ve,d,d,d)),e.modelTransform=m,e.renderLocation=i.eval(.5,Ve)}function De(e,t,n,r){const{startRenderSpace:o,endRenderSpace:i}=n,a=Fe(t,r)?o:i;return d(e,a)}function Ee(e,{forHeading:t,geometry:n,renderCoordsHelper:r}){return t?A(e,n,r):E(e,n,{invert:!0})}function Fe(e,t){const n=D(Le,e),r=A(Ge,e,t);return f(n,r)>0}const Le=y(),Ge=y();function Be(e){return i(e)+I}function Ie(e){return i(e)+W}const We=ce.Custom1,Ne=y(),Ve=y(),Ze=c(),qe=new ne;export{We as DidPointerMoveRecentlyFlag,ue as LengthDimensionManipulators,Te as automaticHeadingFromCamera,ve as createMeasureTypeManipulator,fe as createOffsetManipulator,ge as createOrientationManipulator,le as createPointManipulator,Ie as focusedOffsetWidth,je as headingManipulatorHandles,Ce as measureTypeManipulatorHandles,Se as offsetManipulatorHandles,ye as pointManipulatorHandles,we as rotationManipulatorHandles,Me as snapOrientationToNearestRightAngle,Be as unfocusedOffsetWidth,ke as updateHeadingManipulatorTransform,Ae as updateMeasureTypeManipulatorTransform,be as updateOffsetManipulatorTransform,he as updateOrientationManipulator,Re as updateRotationManipulatorTransform};
5
+ import e from"../../../../Color.js";import"../../../../geometry.js";import{lengthDimensionMeasureType as t,LengthDimensionMeasureType as n}from"../../../../analysis/dimensionUtils.js";import{cyclicalDegrees as r}from"../../../../core/Cyclical.js";import{rad2deg as o}from"../../../../core/mathUtils.js";import{pt2px as i}from"../../../../core/screenUtils.js";import{g as a,b as s}from"../../../../chunks/mat4.js";import{a as c}from"../../../../chunks/mat4f64.js";import{i as m,c as d,f as u,b as l,j as f,h as p,l as g,s as h,r as v}from"../../../../chunks/vec3.js";import{c as y,Z as S,f as j}from"../../../../chunks/vec3f64.js";import{fromPositionAndNormal as w,create as x,signedDistance as H,normal as M}from"../../../../geometry/support/plane.js";import{sv3d as C}from"../../../../geometry/support/vectorStacks.js";import{clonePoint as P}from"../../../../layers/graphics/hydratedFeatures.js";import{isValidComputation as T,computeGeometryFromDimension as b,computationToGeometryDependencies as R,headingFromGeometry as U,computeOffsetForPoint as z,computeSegmentForMeasureType as O,computeOffsetAxis as k,directUp as D,directStartToEnd as E,dimensionStartToEnd as F}from"./lengthDimensionUtils.js";import{PointStyle as A,lengthFraction as L,orientationSnapThresholdDegrees as G,minLengthMeters as B,linePaddingPx as I,focusedLinePaddingPx as W,OrientationManipulatorStyle as N,MarkerStyle as V}from"./settings.js";import{Manipulator3D as Z}from"../../interactive/Manipulator3D.js";import{createSphereManipulator as q,worldScaledManipulatorSettings as J,createRotateManipulator as K,updateRotateManipulator as Q,calculateInputRotationTransform as X,calculateTranslateRotateFromBases as Y}from"../../interactive/manipulatorUtils.js";import{RenderObject as $}from"../../interactive/RenderObject.js";import{screenToMap3D as _,screenToRenderPlane as ee,hideManipulatorWhileDragging as te}from"../../interactive/editingTools/dragEventPipeline3D.js";import{EuclideanSegment as ne}from"../../interactive/visualElements/support/Segment.js";import{MARKER_SIZE_PER_LINE_WIDTH as re}from"../../support/engineContent/marker.js";import{createPolylineGeometry as oe}from"../../webgl-engine/lib/GeometryUtil.js";import{createManipulatorDragEventPipeline as ie,resetProperties as ae,EventPipeline as se}from"../../../interactive/dragEventPipeline.js";import{ManipulatorStateCustomFlags as ce,ManipulatorStateFlags as me}from"../../../interactive/interfaces.js";import de from"../../../../geometry/Point.js";class ue{constructor(e){this.start=e.start,this.end=e.end,this.offset=e.offset,this.heading=e.heading,this.rotation=e.rotation,this.direct=e.direct,this.horizontal=e.horizontal,this.vertical=e.vertical}manipulatorName(e){return Object.keys(this).find((t=>this.hasOwnProperty(t)&&e===this[t]))}values(){return[this.start,this.end,this.offset,this.heading,this.rotation,this.direct,this.horizontal,this.vertical]}forEachMeasureTypeManipulator(e){for(const n of t)e(this.manipulatorForMeasureType(n),n)}manipulatorForMeasureType(e){switch(e){case n.Direct:return this.direct;case n.Horizontal:return this.horizontal;case n.Vertical:return this.vertical}}}function le(t,n){const r=new A(t.effectiveTheme),o=q(t,e.toUnitRGBA(r.color),We);return o.available=!1,o.grabCursor="crosshair",o.radius=r.radius,o.metadata=n.metadata,o.collisionPriority=1,o}function fe(e,t){const n=[j(-.5,0,0),j(.5,0,0)],r=oe(t.unfocusedMaterial,n.map((e=>m(y(),e,L)))),o=r.instantiate({material:t.focusedMaterial});return new Z({view:e,renderObjects:[new $(r,me.Unfocused|me.Selected|We),new $(o,me.Focused|We)],collisionType:{type:"line",paths:[n]},radius:Ie(t.lineSizePt)/2,metadata:t.metadata,available:!1,...J})}function pe(t,n,{lineSizePt:r,material:o}){const a=new N(t.effectiveTheme),{calloutOffsetPx:s,calloutWidth:c,discScale:m,focusMultiplier:d,color:u}=a,l=new V;return{calloutLength:.25*re*l.lineSizeFraction*i(r)+s,calloutColor:e.toUnitRGBA(u),calloutWidth:c,customStateMask:We,discScale:m,focusMultiplier:d,material:o,metadata:n}}function ge(e,t){return K(e,pe(e,t.metadata,t))}function he(e,t,n){Q(t,pe(e,t.metadata,n))}function ve(e,t){const n=[j(-.5,0,0),j(.5,0,0)],r=oe(t.thinOffsetManipulatorMaterial,n),o=oe(t.unfocusedMaterial,n.map((e=>m(y(),e,L)))),i=o.instantiate({material:t.focusedMaterial});return new Z({view:e,renderObjects:[new $(o,me.Unfocused|We),new $(i,me.Focused|We),new $(r,We)],collisionType:{type:"line",paths:[n]},radius:Ie(t.lineSizePt)/2,available:!1,metadata:t.metadata,...J})}function ye(e,{isStart:t,createSnappingPipelineStep:n,dimension:r,onUpdate:o,view:i}){const a=t?"startPoint":"endPoint",s=ie(e,((e,t,s,c)=>{const m=te(e),{snappingStep:d,cancelSnapping:u}=n(c);s=s.next(m).next(ae(r,[a,"measureType","orientation"])).next(u),t.next(m).next(_(i)).next(...d).next((e=>{const t=P(e.mapEnd,new de);o("startPoint"===a?{startPoint:t}:{endPoint:t})}))}));return[s]}function Se(e,{computation:t,view:n}){return[ie(e,((e,r,o)=>{if(!T(t)||!e.selected)return;const{geometry:i,dimension:a}=t,s=te(e);r.next(s).next(Pe(n,a,i.dimensionSegment,i.primaryOffsetAxis)),o.next(s).next(ae(a,["offset"]))}))]}function je(e,{computation:t,view:n}){return[ie(e,((e,r,o)=>{He({cancel:o,computation:t,settingHeading:!0,steps:r,view:n})}))]}function we(e,{computation:t,view:n}){return[ie(e,((e,r,o)=>{He({cancel:o,computation:t,settingHeading:!1,steps:r,view:n})})),e.events.on("immediate-click",(e=>{xe(e,t,n)}))]}function xe(e,t,n){const{dimension:o,geometry:i}=t;if(90===o.orientation||270===o.orientation)return o.orientation=0,void e.stopPropagation();if(null==i)return;const{renderCoordsHelper:a}=n,s=b({...R(t),orientation:90},a),c=b({...R(t),orientation:270},a);if(null==s||null==c)return;const m=U(s,a),d=U(c,a),u=Te(i,n),l=r.shortestSignedDiff(u,m),f=r.shortestSignedDiff(u,d);o.orientation=Math.abs(l)<Math.abs(f)?90:270,e.stopPropagation()}function He(e){const{cancel:t,computation:n,settingHeading:r,steps:i,view:a}=e;if(!T(n))return;const{renderCoordsHelper:s}=a,{dimension:c,geometry:m}=n,u=y(),l=Ee(y(),m,m.directSegment,s),f=Fe(C.get(),{forHeading:r,geometry:m,renderCoordsHelper:s}),p=w(l,f,x()),g=r?c.orientation??U(m,a.renderCoordsHelper):c.orientation??0;i.next(ee(a,p)).next((e=>{"start"===e.action&&d(u,e.renderStart);const t=M(p),n=X(u,e.renderEnd,l,t);let i=g-o(n);r||(i=Me(i)),c.orientation=i})),t.next(ae(c,["orientation"]))}function Me(e){const t=r.normalize(e)%90;return t<G?e-t:90-t<G?e+(90-t):e}function Ce(e,{computation:t,manipulatorMeasureType:r,view:o}){let i=n.Direct,a=0,s=0;return[e.events.on("grab-changed",(n=>{if("start"!==n.action||!T(t))return;const{dimension:c,geometry:m}=t;i=c.measureType,a=c.offset,s=c.orientation;const u=d(C.get(),e.renderLocation);c.measureType=r,c.offset=z(u,r,m,o.renderCoordsHelper),c.orientation=0})),ie(e,((e,n,c)=>{if(!T(t))return;const{geometry:m,dimension:d}=t,{renderCoordsHelper:u}=o,l=O(qe,r,t,u),f=k(C.get(),{measureType:r,directSegment:m.directSegment,renderCoordsHelper:u}),p=te(e);n.next(p).next(Pe(o,d,l,f)),c.next(p).next((e=>(d.measureType=i,d.offset=a,d.orientation=s,e)))}))]}function Pe(e,t,n,r){const o=u(C.get(),n.endRenderSpace,n.startRenderSpace);l(o,o,r);const i=w(n.startRenderSpace,o,x()),a=w(n.startRenderSpace,r,x()),s=t.offset;let c,m=0;const d=new se;return d.next(ee(e,i)).next((n=>{"start"===n.action&&(m=H(a,n.renderStart));const r=(H(a,n.renderEnd)-m)*e.renderCoordsHelper.unitInMeters;t.offset=s+r,c=n})),e=>(d.execute(e),c)}function Te(e,t){const{directSegment:n}=e,{renderCoordsHelper:r}=t,o=D(C.get(),e,r),i=E(C.get(),e),a=l(C.get(),i,o),{viewForward:s}=t.state.camera;f(a,s)>0&&m(a,a,-1);const c=n.eval(.5,C.get());return r.headingAtPosition(c,a)}function be(e,t,n){const{dimensionSegment:r,primaryOffsetAxis:o}=t,i=F(Ne,t),c=p(i,S)?a(Ze):Y(i,o,S,Ze),m=Math.max(g(i),B/n.unitInMeters);s(c,c,h(Ne,m,m,m)),e.modelTransform=c,e.renderLocation=r.eval(.5,Ne)}function Re(e,t,n){ze(e,t,n,{forHeading:!0})}function Ue(e,t,n){ze(e,t,n,{forHeading:!1})}function ze(e,t,n,{forHeading:r}){const{dimension:o,geometry:i}=t,{primaryOffsetAxis:a}=i,s=m(Oe,a,o.offset>=0?1:-1),c=Fe(ke,{forHeading:r,geometry:i,renderCoordsHelper:n});l(c,c,s);const d=Y(s,c,S,Ze);e.modelTransform=d,e.renderLocation=Ee(Ne,i,i.dimensionSegment,n)}const Oe=y(),ke=y();function De(e,t,n,r){const{geometry:o}=t,i=O(qe,n,t,r),a=k(Ne,{measureType:n,directSegment:o.directSegment,renderCoordsHelper:r}),c=v(Ve,i.endRenderSpace,i.startRenderSpace),m=Y(c,a,S,Ze),d=g(c);s(m,m,h(Ve,d,d,d)),e.modelTransform=m,e.renderLocation=i.eval(.5,Ve)}function Ee(e,t,n,r){const{startRenderSpace:o,endRenderSpace:i}=n,a=Ae(t,r)?o:i;return d(e,a)}function Fe(e,{forHeading:t,geometry:n,renderCoordsHelper:r}){return t?D(e,n,r):F(e,n,{invert:!0})}function Ae(e,t){const n=E(Le,e),r=D(Ge,e,t);return f(n,r)>0}const Le=y(),Ge=y();function Be(e){return i(e)+I}function Ie(e){return i(e)+W}const We=ce.Custom1,Ne=y(),Ve=y(),Ze=c(),qe=new ne;export{We as DidPointerMoveRecentlyFlag,ue as LengthDimensionManipulators,Te as automaticHeadingFromCamera,ve as createMeasureTypeManipulator,fe as createOffsetManipulator,ge as createOrientationManipulator,le as createPointManipulator,Ie as focusedOffsetWidth,je as headingManipulatorHandles,Ce as measureTypeManipulatorHandles,Se as offsetManipulatorHandles,ye as pointManipulatorHandles,we as rotationManipulatorHandles,Me as snapOrientationToNearestRightAngle,Be as unfocusedOffsetWidth,Re as updateHeadingManipulatorTransform,De as updateMeasureTypeManipulatorTransform,be as updateOffsetManipulatorTransform,he as updateOrientationManipulator,Ue as updateRotationManipulatorTransform};
@@ -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{LengthDimensionMeasureType as e}from"../../../../analysis/dimensionUtils.js";import{deg2rad as n}from"../../../../core/mathUtils.js";import{toUnit as t}from"../../../../core/quantityUtils.js";import{adaptiveVerticalLengthUnit as r,adaptiveLengthUnit as i}from"../../../../core/unitUtils.js";import{d as o}from"../../../../chunks/mat4.js";import{c as a}from"../../../../chunks/mat4f64.js";import{i as s,q as d,A as c,G as l,d as u,z as p,m,c as S,n as f,p as g}from"../../../../chunks/vec3.js";import{c as v,Z as R}from"../../../../chunks/vec3f64.js";import{Axis as A}from"../../../../geometry/support/Axis.js";import{sv3d as P}from"../../../../geometry/support/vectorStacks.js";import{makeDehydratedPoint as y}from"../../../../layers/graphics/dehydratedPoint.js";import{clonePoint as E}from"../../../../layers/graphics/hydratedFeatures.js";import{EuclideanSegment as h}from"../../interactive/visualElements/support/Segment.js";import{euclideanDirectDistance as j,euclideanDirectDistanceBetweenPoints as x}from"../../../support/euclideanLengthMeasurementUtils.js";function T(n,o,a){if(null==n)return null;const s=n.dimensionSegment.startRenderSpace,d=n.dimensionSegment.endRenderSpace,c=j(s,d,n.spatialReference);if(null==c)return null;const l=o===e.Vertical?r(c.value,c.unit,a):i(c.value,c.unit,a);return t(c,l)}function C(e){const{elevationAlignedStartPoint:n,elevationAlignedEndPoint:t,dimension:{offset:r,measureType:i,orientation:o}}=e;return{elevationAlignedStartPoint:n,elevationAlignedEndPoint:t,offset:r,measureType:i,orientation:o}}function H({elevationAlignedStartPoint:n,elevationAlignedEndPoint:t,offset:r,measureType:i,orientation:o},a,d=null){if(null==n||null==t)return null;const c=b(null!=d?d.directSegment:new h,{elevationAlignedStartPoint:n,elevationAlignedEndPoint:t},a),l=null!=d?d.primaryOffsetAxis:v();I(l,{measureType:i,elevationAlignedStartPoint:n,elevationAlignedEndPoint:t,directSegment:c,orientation:o,renderCoordsHelper:a});const u=null!=d?d.dimensionSegment:new h;return F({elevationAlignedStartPoint:n,elevationAlignedEndPoint:t})&&i===e.Vertical?(s(u.startRenderSpace,c.startRenderSpace),s(u.endRenderSpace,c.endRenderSpace)):G(u,{offsetAxis:l,offset:r,relativeToSegment:c,renderCoordsHelper:a}),{directSegment:c,dimensionSegment:u,primaryOffsetAxis:l,spatialReference:a.spatialReference}}function w(e,n,t,r){return n===z.Start?(s(e.startRenderSpace,t.startRenderSpace),s(e.endRenderSpace,r.startRenderSpace)):(s(e.startRenderSpace,t.endRenderSpace),s(e.endRenderSpace,r.endRenderSpace)),e}var z;function k(e,n,t,r){d(e.startRenderSpace,n.startRenderSpace,t,r),d(e.endRenderSpace,n.endRenderSpace,t,r)}function U(n,t,r,i){switch(t){case e.Direct:return b(n,r,i);case e.Horizontal:case e.Vertical:{const{elevationAlignedStartPoint:o,elevationAlignedEndPoint:a,dimension:s,geometry:d}=r;let c;if(s.measureType===e.Direct){c=M(d,i)===o.z>a.z,t===e.Horizontal&&(c=!c)}else c=!V(d);const[l,u]=c?[o,a]:[a,o],p=E(u,D);return t===e.Horizontal?p.z=l.z:(p.x=l.x,p.y=l.y),i.toRenderCoords(l,n.startRenderSpace),i.toRenderCoords(p,n.endRenderSpace),n}}}function b(e,n,t){return t.toRenderCoords(n.elevationAlignedStartPoint,e.startRenderSpace),t.toRenderCoords(n.elevationAlignedEndPoint,e.endRenderSpace),e}function M(e,n){const t=e.directSegment.eval(.5,P.get()),r=n.worldUpAtPosition(t,P.get()),i=e.dimensionSegment.eval(.5,P.get()),o=c(P.get(),i,t);return!l(o,R)&&u(o,r)>0}function V(e){const{startRenderSpace:n,endRenderSpace:t}=e.dimensionSegment,{startRenderSpace:r,endRenderSpace:i}=e.directSegment;return p(r,n)<p(i,t)}!function(e){e[e.Start=0]="Start",e[e.End=1]="End"}(z||(z={}));const D=y(0,0,0,null);function O(e,n,t,r){const{directSegment:i}=t,o=I(P.get(),{measureType:n,directSegment:i,renderCoordsHelper:r}),a=G(q,{offsetAxis:o,offset:0,relativeToSegment:i,renderCoordsHelper:r}).eval(.5,P.get()),s=c(P.get(),e,a);return u(s,o)*r.unitInMeters}const q=new h;function I(t,r){const{measureType:i,elevationAlignedStartPoint:a,elevationAlignedEndPoint:d,directSegment:{startRenderSpace:p,endRenderSpace:g},directSegment:v,renderCoordsHelper:y}=r,E=v.eval(.5,P.get()),h=y.worldUpAtPosition(E,P.get()),j=y.worldBasisAtPosition(E,A.Y,P.get());switch(i){case e.Horizontal:s(t,h);break;case e.Vertical:u(p,h)<u(g,h)?c(t,g,p):c(t,p,g),S(t,t,h),S(t,t,h);break;case e.Direct:{const e=r.orientation??0;if(F({elevationAlignedStartPoint:a,elevationAlignedEndPoint:d}))o(B,-n(e),h),m(t,j,B);else{const r=c(P.get(),g,p),i=S(P.get(),r,h);S(i,i,r),o(B,n(e),r),m(t,i,B)}break}}return l(t,R)?s(t,j):f(t,t)}const B=a();function F({elevationAlignedStartPoint:e,elevationAlignedEndPoint:n}){return null!=e&&null!=n&&e.x===n.x&&e.y===n.y}function G(e,n){const{offsetAxis:t,offset:r,relativeToSegment:{startRenderSpace:i,endRenderSpace:o},relativeToSegment:a,renderCoordsHelper:s}=n,c=r/s.unitInMeters,[l,u]=L(i,o,t,c);return d(e.startRenderSpace,a.startRenderSpace,t,l),d(e.endRenderSpace,a.endRenderSpace,t,u),e}function L(e,n,t,r=0){const i=u(n,t),o=u(e,t),a=Math.abs(i-o)+r;return i>o?[a,r]:[r,a]}function Y(e,n,t){const r=n.directSegment.eval(.5,P.get());return t.worldUpAtPosition(r,e)}function Z(e,n){const{startRenderSpace:t,endRenderSpace:r}=n.directSegment;return c(e,r,t)}function J(e,n,t={invert:!1}){const{startRenderSpace:r,endRenderSpace:i}=n.dimensionSegment;return t.invert?c(e,r,i):c(e,i,r)}function K(e,n){const t=e.directSegment.eval(.5,P.get());return n.headingAtPosition(t,e.primaryOffsetAxis)}function N(e,n){return g(J(Q,e))/n**2}const Q=v();function W(e){const{elevationAlignedStartPoint:n,elevationAlignedEndPoint:r}=e;if(null==n||null==r)return!1;const i=x(n,r);return null!=i&&t(i,"meters").value>X}const X=1e5;function $(e){return null!=e.geometry}export{X as GEODESIC_DISTANCE_THRESHOLD,z as OffsetSegmentLocation,F as arePointsVerticallyAligned,C as computationToGeometryDependencies,H as computeGeometryFromDimension,T as computeLength,I as computeOffsetAxis,O as computeOffsetForPoint,U as computeSegmentForMeasureType,w as computeSpanningSegment,J as dimensionStartToEnd,Z as directStartToEnd,Y as directUp,K as headingFromGeometry,W as isGeodesicDimension,$ as isValidComputation,N as maxScreenLengthSquaredFromGeometry,k as offsetSegment};
5
+ import{LengthDimensionMeasureType as e}from"../../../../analysis/dimensionUtils.js";import{deg2rad as n}from"../../../../core/mathUtils.js";import{toUnit as t}from"../../../../core/quantityUtils.js";import{adaptiveVerticalLengthUnit as r,adaptiveLengthUnit as i}from"../../../../core/unitUtils.js";import{c as o}from"../../../../chunks/mat4.js";import{a}from"../../../../chunks/mat4f64.js";import{c as s,y as d,r as c,G as l,j as u,x as p,e as m,b as S,n as f,o as g}from"../../../../chunks/vec3.js";import{c as v,Z as R}from"../../../../chunks/vec3f64.js";import{Axis as A}from"../../../../geometry/support/Axis.js";import{sv3d as P}from"../../../../geometry/support/vectorStacks.js";import{makeDehydratedPoint as y}from"../../../../layers/graphics/dehydratedPoint.js";import{clonePoint as j}from"../../../../layers/graphics/hydratedFeatures.js";import{EuclideanSegment as E}from"../../interactive/visualElements/support/Segment.js";import{euclideanDirectDistance as h,euclideanDirectDistanceBetweenPoints as x}from"../../../support/euclideanLengthMeasurementUtils.js";function T(n,o,a){if(null==n)return null;const s=n.dimensionSegment.startRenderSpace,d=n.dimensionSegment.endRenderSpace,c=h(s,d,n.spatialReference);if(null==c)return null;const l=o===e.Vertical?r(c.value,c.unit,a):i(c.value,c.unit,a);return t(c,l)}function C(e){const{elevationAlignedStartPoint:n,elevationAlignedEndPoint:t,dimension:{offset:r,measureType:i,orientation:o}}=e;return{elevationAlignedStartPoint:n,elevationAlignedEndPoint:t,offset:r,measureType:i,orientation:o}}function H({elevationAlignedStartPoint:n,elevationAlignedEndPoint:t,offset:r,measureType:i,orientation:o},a,d=null){if(null==n||null==t)return null;const c=b(null!=d?d.directSegment:new E,{elevationAlignedStartPoint:n,elevationAlignedEndPoint:t},a),l=null!=d?d.primaryOffsetAxis:v();q(l,{measureType:i,elevationAlignedStartPoint:n,elevationAlignedEndPoint:t,directSegment:c,orientation:o,renderCoordsHelper:a});const u=null!=d?d.dimensionSegment:new E;return F({elevationAlignedStartPoint:n,elevationAlignedEndPoint:t})&&i===e.Vertical?(s(u.startRenderSpace,c.startRenderSpace),s(u.endRenderSpace,c.endRenderSpace)):G(u,{offsetAxis:l,offset:r,relativeToSegment:c,renderCoordsHelper:a}),{directSegment:c,dimensionSegment:u,primaryOffsetAxis:l,spatialReference:a.spatialReference}}function w(e,n,t,r){return n===k.Start?(s(e.startRenderSpace,t.startRenderSpace),s(e.endRenderSpace,r.startRenderSpace)):(s(e.startRenderSpace,t.endRenderSpace),s(e.endRenderSpace,r.endRenderSpace)),e}var k;function z(e,n,t,r){d(e.startRenderSpace,n.startRenderSpace,t,r),d(e.endRenderSpace,n.endRenderSpace,t,r)}function U(n,t,r,i){switch(t){case e.Direct:return b(n,r,i);case e.Horizontal:case e.Vertical:{const{elevationAlignedStartPoint:o,elevationAlignedEndPoint:a,dimension:s,geometry:d}=r;let c;if(s.measureType===e.Direct){c=M(d,i)===o.z>a.z,t===e.Horizontal&&(c=!c)}else c=!V(d);const[l,u]=c?[o,a]:[a,o],p=j(u,D);return t===e.Horizontal?p.z=l.z:(p.x=l.x,p.y=l.y),i.toRenderCoords(l,n.startRenderSpace),i.toRenderCoords(p,n.endRenderSpace),n}}}function b(e,n,t){return t.toRenderCoords(n.elevationAlignedStartPoint,e.startRenderSpace),t.toRenderCoords(n.elevationAlignedEndPoint,e.endRenderSpace),e}function M(e,n){const t=e.directSegment.eval(.5,P.get()),r=n.worldUpAtPosition(t,P.get()),i=e.dimensionSegment.eval(.5,P.get()),o=c(P.get(),i,t);return!l(o,R)&&u(o,r)>0}function V(e){const{startRenderSpace:n,endRenderSpace:t}=e.dimensionSegment,{startRenderSpace:r,endRenderSpace:i}=e.directSegment;return p(r,n)<p(i,t)}!function(e){e[e.Start=0]="Start",e[e.End=1]="End"}(k||(k={}));const D=y(0,0,0,null);function O(e,n,t,r){const{directSegment:i}=t,o=q(P.get(),{measureType:n,directSegment:i,renderCoordsHelper:r}),a=G(I,{offsetAxis:o,offset:0,relativeToSegment:i,renderCoordsHelper:r}).eval(.5,P.get()),s=c(P.get(),e,a);return u(s,o)*r.unitInMeters}const I=new E;function q(t,r){const{measureType:i,elevationAlignedStartPoint:a,elevationAlignedEndPoint:d,directSegment:{startRenderSpace:p,endRenderSpace:g},directSegment:v,renderCoordsHelper:y}=r,j=v.eval(.5,P.get()),E=y.worldUpAtPosition(j,P.get()),h=y.worldBasisAtPosition(j,A.Y,P.get());switch(i){case e.Horizontal:s(t,E);break;case e.Vertical:u(p,E)<u(g,E)?c(t,g,p):c(t,p,g),S(t,t,E),S(t,t,E);break;case e.Direct:{const e=r.orientation??0;if(F({elevationAlignedStartPoint:a,elevationAlignedEndPoint:d}))o(B,-n(e),E),m(t,h,B);else{const r=c(P.get(),g,p),i=S(P.get(),r,E);S(i,i,r),o(B,n(e),r),m(t,i,B)}break}}return l(t,R)?s(t,h):f(t,t)}const B=a();function F({elevationAlignedStartPoint:e,elevationAlignedEndPoint:n}){return null!=e&&null!=n&&e.x===n.x&&e.y===n.y}function G(e,n){const{offsetAxis:t,offset:r,relativeToSegment:{startRenderSpace:i,endRenderSpace:o},relativeToSegment:a,renderCoordsHelper:s}=n,c=r/s.unitInMeters,[l,u]=L(i,o,t,c);return d(e.startRenderSpace,a.startRenderSpace,t,l),d(e.endRenderSpace,a.endRenderSpace,t,u),e}function L(e,n,t,r=0){const i=u(n,t),o=u(e,t),a=Math.abs(i-o)+r;return i>o?[a,r]:[r,a]}function Y(e,n,t){const r=n.directSegment.eval(.5,P.get());return t.worldUpAtPosition(r,e)}function Z(e,n){const{startRenderSpace:t,endRenderSpace:r}=n.directSegment;return c(e,r,t)}function J(e,n,t={invert:!1}){const{startRenderSpace:r,endRenderSpace:i}=n.dimensionSegment;return t.invert?c(e,r,i):c(e,i,r)}function K(e,n){const t=e.directSegment.eval(.5,P.get());return n.headingAtPosition(t,e.primaryOffsetAxis)}function N(e,n){return g(J(Q,e))/n**2}const Q=v();function W(e){const{elevationAlignedStartPoint:n,elevationAlignedEndPoint:r}=e;if(null==n||null==r)return!1;const i=x(n,r);return null!=i&&t(i,"meters").value>X}const X=1e5;function $(e){return null!=e.geometry}export{X as GEODESIC_DISTANCE_THRESHOLD,k as OffsetSegmentLocation,F as arePointsVerticallyAligned,C as computationToGeometryDependencies,H as computeGeometryFromDimension,T as computeLength,q as computeOffsetAxis,O as computeOffsetForPoint,U as computeSegmentForMeasureType,w as computeSpanningSegment,J as dimensionStartToEnd,Z as directStartToEnd,Y as directUp,K as headingFromGeometry,W as isGeodesicDimension,$ as isValidComputation,N as maxScreenLengthSquaredFromGeometry,z as offsetSegment};
@@ -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 i from"../../../../core/Logger.js";import{createQuantity as o}from"../../../../core/quantityUtils.js";import{watch as r,syncAndInitial as s}from"../../../../core/reactiveUtils.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 a}from"../../../../core/accessorSupport/decorators/subclass.js";import{h as c}from"../../../../chunks/vec3.js";import{c as l}from"../../../../chunks/vec3f64.js";import{geodesicLength as p}from"../../../../geometry/geometryEngine.js";import m from"../../../../geometry/Polyline.js";import{canProjectWithoutEngine as u}from"../../../../geometry/projection.js";import{getSphericalPCPF as d,SphericalECEFSpatialReference as h,WGS84ECEFSpatialReference as v}from"../../../../geometry/spatialReferenceEllipsoidUtils.js";import{projectPointToVector as f}from"../../../../geometry/projection/projectPointToVector.js";import{projectPointToWGS84ComparableLonLat as j}from"../../../../geometry/projection/projectPointToWGS84ComparableLonLat.js";import{isSupported as g,geodesicLengths as P,InverseGeodeticSolverResult as y,inverseGeodeticSolver as D}from"../../../../geometry/support/geodesicUtils.js";import{MeasurementMode as _}from"../interfaces.js";import{applyProjectionAndElevationAlignment as w,logFailedGeometryProjectionError as z}from"../support/projectionUtils.js";import{UnitNormalizer as A}from"../support/UnitNormalizer.js";const R="esri.views.3d.analysis.DirectLineMeasurement.DirectLineMeasurementController",E=i.getLogger(R),S=1e5;let b=class extends t{constructor(e){super(e),this._unitNormalizer=new A,this._tempStartPosition=l(),this._tempEndPosition=l(),this._tempCornerPosition=l()}initialize(){const e=this.view.spatialReference,t=d(e),i=t===h?v:t;this._sphericalPCPF=i;const o=u(e,i);this._unitNormalizer.spatialReference=o?i:e,this.addHandles([r((()=>({viewData:this.viewData,startPoint:this.analysis.startPoint})),(({viewData:e,startPoint:t})=>{e.elevationAlignedStartPoint=this._applyProjectionAndElevationAlignment(t)}),s),r((()=>({viewData:this.viewData,endPoint:this.analysis.endPoint})),(({viewData:e,endPoint:t})=>{e.elevationAlignedEndPoint=this._applyProjectionAndElevationAlignment(t)}),s),r((()=>({result:this._computedResult,viewData:this.viewData})),(({result:e,viewData:t})=>{t.result=e}),s)])}_applyProjectionAndElevationAlignment(e){if(null==e)return e;const{spatialReference:t,elevationProvider:i}=this.view,o=w(e,t,i);return o??(z(this.analysis,e.spatialReference,E),null)}get _computedResult(){const{elevationAlignedStartPoint:e,elevationAlignedEndPoint:t,measurementMode:i}=this.viewData;if(null==e||null==t)return null;const o=this._euclideanDistances(e,t),r=this._geodesicDistance(e,t,o.horizontal.value),s=i===_.Geodesic||i===_.Auto&&o.horizontal.value>S?"geodesic":"euclidean";return{mode:s,distance:"euclidean"===s?o.direct:r,directDistance:o.direct,horizontalDistance:o.horizontal,verticalDistance:o.vertical,geodesicDistance:r}}_euclideanDistances(e,t){const i=e.clone();i.z=t.z;const r=this._tempStartPosition,s=this._tempEndPosition,n=this._tempCornerPosition,a=this.view.spatialReference,l=this._sphericalPCPF,p=u(a,l)?l:a;f(e,r,p),f(t,s,p),f(i,n,p);const m=c(r,s),d=c(n,s),h=Math.abs(t.z-e.z),v=e=>this._unitNormalizer.normalizeDistance(e),j=v(m),g=v(d),P=v(h);return{direct:o(j,"meters"),horizontal:o(g,"meters"),vertical:o(P,"meters")}}_geodesicDistance(e,t,i){const r=e.spatialReference,s=new m({spatialReference:r});s.addPath([e,t]);const n=r.isGeographic&&g(r)?P([s],"meters")[0]:r.isWebMercator?p(s,"meters"):null,a=null!=n?n:this._fallbackGeodesicDistance(e,t,i);return o(a,"meters")}_fallbackGeodesicDistance(e,t,i){if(j(e,U)&&j(t,C)){const e=new y;return D(e,U,C),e.distance}return i}};e([n()],b.prototype,"view",void 0),e([n()],b.prototype,"analysis",void 0),e([n()],b.prototype,"viewData",void 0),e([n()],b.prototype,"_computedResult",null),b=e([a(R)],b);const U=l(),C=l();export{b as DirectLineMeasurementController};
5
+ import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Accessor.js";import i from"../../../../core/Logger.js";import{createQuantity as o}from"../../../../core/quantityUtils.js";import{watch as r,syncAndInitial as s}from"../../../../core/reactiveUtils.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 a}from"../../../../core/accessorSupport/decorators/subclass.js";import{m as c}from"../../../../chunks/vec3.js";import{c as l}from"../../../../chunks/vec3f64.js";import{geodesicLength as p}from"../../../../geometry/geometryEngine.js";import m from"../../../../geometry/Polyline.js";import{canProjectWithoutEngine as u}from"../../../../geometry/projection.js";import{getSphericalPCPF as d,SphericalECEFSpatialReference as h,WGS84ECEFSpatialReference as v}from"../../../../geometry/spatialReferenceEllipsoidUtils.js";import{projectPointToVector as f}from"../../../../geometry/projection/projectPointToVector.js";import{projectPointToWGS84ComparableLonLat as j}from"../../../../geometry/projection/projectPointToWGS84ComparableLonLat.js";import{isSupported as g,geodesicLengths as P,InverseGeodeticSolverResult as y,inverseGeodeticSolver as D}from"../../../../geometry/support/geodesicUtils.js";import{MeasurementMode as _}from"../interfaces.js";import{applyProjectionAndElevationAlignment as w,logFailedGeometryProjectionError as z}from"../support/projectionUtils.js";import{UnitNormalizer as A}from"../support/UnitNormalizer.js";const R="esri.views.3d.analysis.DirectLineMeasurement.DirectLineMeasurementController",E=i.getLogger(R),S=1e5;let b=class extends t{constructor(e){super(e),this._unitNormalizer=new A,this._tempStartPosition=l(),this._tempEndPosition=l(),this._tempCornerPosition=l()}initialize(){const e=this.view.spatialReference,t=d(e),i=t===h?v:t;this._sphericalPCPF=i;const o=u(e,i);this._unitNormalizer.spatialReference=o?i:e,this.addHandles([r((()=>({viewData:this.viewData,startPoint:this.analysis.startPoint})),(({viewData:e,startPoint:t})=>{e.elevationAlignedStartPoint=this._applyProjectionAndElevationAlignment(t)}),s),r((()=>({viewData:this.viewData,endPoint:this.analysis.endPoint})),(({viewData:e,endPoint:t})=>{e.elevationAlignedEndPoint=this._applyProjectionAndElevationAlignment(t)}),s),r((()=>({result:this._computedResult,viewData:this.viewData})),(({result:e,viewData:t})=>{t.result=e}),s)])}_applyProjectionAndElevationAlignment(e){if(null==e)return e;const{spatialReference:t,elevationProvider:i}=this.view,o=w(e,t,i);return o??(z(this.analysis,e.spatialReference,E),null)}get _computedResult(){const{elevationAlignedStartPoint:e,elevationAlignedEndPoint:t,measurementMode:i}=this.viewData;if(null==e||null==t)return null;const o=this._euclideanDistances(e,t),r=this._geodesicDistance(e,t,o.horizontal.value),s=i===_.Geodesic||i===_.Auto&&o.horizontal.value>S?"geodesic":"euclidean";return{mode:s,distance:"euclidean"===s?o.direct:r,directDistance:o.direct,horizontalDistance:o.horizontal,verticalDistance:o.vertical,geodesicDistance:r}}_euclideanDistances(e,t){const i=e.clone();i.z=t.z;const r=this._tempStartPosition,s=this._tempEndPosition,n=this._tempCornerPosition,a=this.view.spatialReference,l=this._sphericalPCPF,p=u(a,l)?l:a;f(e,r,p),f(t,s,p),f(i,n,p);const m=c(r,s),d=c(n,s),h=Math.abs(t.z-e.z),v=e=>this._unitNormalizer.normalizeDistance(e),j=v(m),g=v(d),P=v(h);return{direct:o(j,"meters"),horizontal:o(g,"meters"),vertical:o(P,"meters")}}_geodesicDistance(e,t,i){const r=e.spatialReference,s=new m({spatialReference:r});s.addPath([e,t]);const n=r.isGeographic&&g(r)?P([s],"meters")[0]:r.isWebMercator?p(s,"meters"):null,a=null!=n?n:this._fallbackGeodesicDistance(e,t,i);return o(a,"meters")}_fallbackGeodesicDistance(e,t,i){if(j(e,U)&&j(t,C)){const e=new y;return D(e,U,C),e.distance}return i}};e([n()],b.prototype,"view",void 0),e([n()],b.prototype,"analysis",void 0),e([n()],b.prototype,"viewData",void 0),e([n()],b.prototype,"_computedResult",null),b=e([a(R)],b);const U=l(),C=l();export{b as DirectLineMeasurementController};
@@ -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"../../../../Color.js";import"../../../../intl.js";import i from"../../../../core/Accessor.js";import{multiplyOpacity as s,getContrast as n}from"../../../../core/colorUtils.js";import{nextHighestPowerOfTen as o,deg2rad as l}from"../../../../core/mathUtils.js";import{destroyMaybe as r}from"../../../../core/maybe.js";import{formatDecimal as a,formatImperialLength as c,formatImperialVerticalLength as d,formatMetricLength as h,formatMetricVerticalLength as u}from"../../../../core/quantityFormatUtils.js";import{toUnit as m}from"../../../../core/quantityUtils.js";import{watch as g,syncAndInitial as p}from"../../../../core/reactiveUtils.js";import{createRenderScreenPointArray3 as v,createRenderScreenPointArray as _}from"../../../../core/screenUtils.js";import{adaptiveImperialLengthUnit as b,convertUnit as L}from"../../../../core/unitUtils.js";import{property as w}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as S}from"../../../../core/accessorSupport/decorators/subclass.js";import{g as f}from"../../../../chunks/vec2.js";import{b as y,e as A}from"../../../../chunks/vec3.js";import{c as P}from"../../../../chunks/vec3f64.js";import{MeasurementMode as V}from"../interfaces.js";import{ViewMode as j,VisualElementOrientation as E}from"./interfaces.js";import{screenSpaceTangent as z}from"../support/viewUtils.js";import{LabelVisualElement as M,mirrorPosition as D}from"../../interactive/visualElements/LabelVisualElement.js";import{LineVisualElement as O}from"../../interactive/visualElements/LineVisualElement.js";import{MeasurementArrowVisualElement as C}from"../../interactive/visualElements/MeasurementArrowVisualElement.js";import{RightAngleQuadVisualElement as G}from"../../interactive/visualElements/RightAngleQuadVisualElement.js";import{GeodesicSegment as x,EuclideanSegment as T}from"../../interactive/visualElements/support/Segment.js";import{RenderOccludedFlag as H}from"../../webgl-engine/lib/Material.js";import{createStipplePatternSimple as k}from"../../webgl-engine/materials/lineStippleUtils.js";import{onLocaleChange as U}from"../../../../intl/locale.js";import{fetchMessageBundle as R}from"../../../../intl/messages.js";let F=class extends i{get _parameters(){const e=t.toUnitRGBA(s(this.view.effectiveTheme.accentColor,.75));return{triangleColor:e,triangleLineWidth:3,geodesicProjectionLineWidth:2,geodesicProjectionLineColor:e,guideLineWidth:2,guideStippleLengthPixels:3,directLabelFontSize:16,horizontalLabelFontSize:12,verticalLabelFontSize:12}}get visible(){return this.analysisView.visible}get viewMode(){const{elevationAlignedStartPoint:e,elevationAlignedEndPoint:t}=this.analysisView;if(null==e||null==t||e.equals(t))return j.None;const i=this.analysisView.result;if(null==i)return j.Direct;if("geodesic"===i.mode)return this._requiresGeodesicGuideAt(this._startPosition)||this._requiresGeodesicGuideAt(this._endPosition)?j.ProjectedGeodesic:j.Direct;const{verticalDistance:s,horizontalDistance:n}=i,o=s.value,l=n.value;return Math.min(o/l,l/o)<this.triangleCollapseRatioThreshold?j.Direct:j.Triangle}get actualVisualizedMeasurement(){if(null==this.analysisView.result)switch(this.analysisView.measurementMode){case V.Auto:case V.Euclidean:default:return"euclidean";case V.Geodesic:return"geodesic"}return this.analysisView.result.mode}get allowVisualElementsOrientationChange(){return null==this._triangleOrientationOverride}set allowVisualElementsOrientationChange(e){null==this._triangleOrientationOverride!==e&&(null==this._triangleOrientationOverride?this._triangleOrientationOverride=this._actualVisualElementsOrientation:this._triangleOrientationOverride=null)}get labels(){const e="geodesic"===this.actualVisualizedMeasurement;return{direct:this._segmentLabel,horizontal:e?this._segmentLabel:this._horizontalLabel,vertical:this._verticalLabel}}constructor(e){super(e),this._segmentVisualElement=null,this._triangleVisualElement=null,this._rightAngleQuad=null,this._projectedGeodesicLine=null,this._geodesicStartHint=null,this._geodesicEndHint=null,this._segmentLabel=null,this._verticalLabel=null,this._horizontalLabel=null,this._startPosition=P(),this._endPosition=P(),this._cornerPosition=P(),this._startPositionAtSeaLevel=P(),this._endPositionAtSeaLevel=P(),this._triangleOrientationOverride=null,this.messages=null,this.loadingMessages=!0,this.visualElementOrientation=E.Auto,this.triangleCollapseRatioThreshold=.03}initialize(){const e=this._parameters,i={attached:!0,view:this.view,isDecoration:!0},{accentColor:o,textColor:l}=this.view.effectiveTheme;this._segmentVisualElement=new C({...i,geometry:null,renderOccluded:H.OccludeAndTransparent}),this._triangleVisualElement=new O({...i,width:e.triangleLineWidth,color:e.triangleColor,renderOccluded:H.OccludeAndTransparent}),this._rightAngleQuad=new G({...i,color:t.toUnitRGBA(s(o,.75)),renderOccluded:H.OccludeAndTransparent});const r={...i,polygonOffset:!0,renderOccluded:H.OccludeAndTransparent};this._projectedGeodesicLine=new O({...r,width:e.geodesicProjectionLineWidth,color:e.geodesicProjectionLineColor,stipplePattern:k(e.guideStippleLengthPixels)}),this._geodesicStartHint=new O({...r,width:e.guideLineWidth,color:e.geodesicProjectionLineColor,stipplePattern:k(e.guideStippleLengthPixels)}),this._geodesicEndHint=new O({...r,width:e.guideLineWidth,color:e.geodesicProjectionLineColor,stipplePattern:k(e.guideStippleLengthPixels)});const a={...i,backgroundColor:s(n(l),.6),calloutColor:s(n(l),.5),textColor:l};this._segmentLabel=new M({...a,fontSize:e.directLabelFontSize}),this._verticalLabel=new M({...a,fontSize:e.verticalLabelFontSize}),this._horizontalLabel=new M({...a,fontSize:e.horizontalLabelFontSize}),this.addHandles([g((()=>{const{elevationAlignedStartPoint:e,elevationAlignedEndPoint:t}=this.analysisView,i=this.view;return{view:i,camera:i.state.camera,viewMode:this.viewMode,elevationAlignedStartPoint:e,elevationAlignedEndPoint:t,orientation:this._actualVisualElementsOrientation,visualizedMeasurement:this.actualVisualizedMeasurement,stripeLength:this._measurementArrowStripeLength}}),(e=>this._updateGeometryAndViewMode(e)),p),g((()=>({visible:this.visible,viewMode:this.viewMode})),(e=>this._updateVisualElementVisibility(e)),p),g((()=>({text:this._labelsText,visualizedMeasurement:this.actualVisualizedMeasurement})),(e=>this._updateLabelText(e)),p),g((()=>({visible:this.visible,viewMode:this.viewMode})),(e=>this._updateLabelVisibility(e)),p),g((()=>this._measurementArrowStripeLength),(e=>this._updateSegmentStripeLength(e)),p),U((async()=>this._updateMessageBundle()))]),this._updateMessageBundle()}destroy(){this._segmentVisualElement=r(this._segmentVisualElement),this._triangleVisualElement=r(this._triangleVisualElement),this._rightAngleQuad=r(this._rightAngleQuad),this._projectedGeodesicLine=r(this._projectedGeodesicLine),this._geodesicStartHint=r(this._geodesicStartHint),this._geodesicEndHint=r(this._geodesicEndHint),this._segmentLabel=r(this._segmentLabel),this._verticalLabel=r(this._verticalLabel),this._horizontalLabel=r(this._horizontalLabel),this.set("view",null)}_updateVisualElementVisibility({visible:e,viewMode:t}){if(this._segmentVisualElement.visible=!1,this._triangleVisualElement.visible=!1,this._rightAngleQuad.visible=!1,this._projectedGeodesicLine.visible=!1,this._geodesicStartHint.visible=!1,this._geodesicEndHint.visible=!1,e)switch(t){case j.None:break;case j.Direct:this._segmentVisualElement.visible=!0;break;case j.Triangle:this._segmentVisualElement.visible=!0,this._triangleVisualElement.visible=!0,this._rightAngleQuad.visible=!0;break;case j.ProjectedGeodesic:this._segmentVisualElement.visible=!0,this._projectedGeodesicLine.visible=!0,this._geodesicStartHint.visible=!0,this._geodesicEndHint.visible=!0}}_updateGeometryAndViewMode({view:e,camera:t,viewMode:i,elevationAlignedStartPoint:s,elevationAlignedEndPoint:n,orientation:o,visualizedMeasurement:l,stripeLength:r}){const a=e.renderCoordsHelper;if(null==a||null==s||null==n||s.equals(n))return;let c=this._startPosition,d=this._endPosition;a.toRenderCoords(s,c),a.toRenderCoords(n,d);const h=o===E.AboveSegment?1:-1,u=h*(a.getAltitude(d)-a.getAltitude(c));u<0&&(c=this._endPosition,d=this._startPosition);const m="geodesic"===l?new x(this._startPosition,this._endPosition,a.spatialReference):new T(this._startPosition,this._endPosition);switch(this._segmentVisualElement.geometry=m,this._updateSegmentStripeLength(r),i){case j.Direct:this._updateSegment(m,o);break;case j.Triangle:this._updateSegmentAndTriangle({view:e,camera:t,segment:m,orientation:o,startPosition:c,endPosition:d,deltaSign:h,altitudeDelta:u});break;case j.ProjectedGeodesic:this._updateSegmentAndProjection({view:e,orientation:o,startPosition:c,endPosition:d})}}_updateSegment(e,t){this._segmentLabel.anchor=t===E.AboveSegment?"top":"bottom",this._segmentLabel.geometry={type:"segment",segment:e,sampleLocation:"center"}}_updateSegmentAndTriangle({view:{renderCoordsHelper:e},camera:t,segment:i,orientation:s,startPosition:n,endPosition:o,deltaSign:l,altitudeDelta:r}){const a=this._cornerPosition;e.worldUpAtPosition(n,a),y(a,a,l*Math.abs(r)),A(a,a,n),this._triangleVisualElement.geometry=[[[n[0],n[1],n[2]],[a[0],a[1],a[2]],[o[0],o[1],o[2]]]],this._rightAngleQuad.geometry={previous:n,center:a,next:o};const c=new T(n,a),d=new T(a,o),h=Q(n,o,a,s,t);this._segmentLabel.anchor=h.segment,this._segmentLabel.geometry={type:"segment",segment:i,sampleLocation:"center"},this._verticalLabel.geometry={type:"segment",segment:c,sampleLocation:"center"},this._verticalLabel.anchor=h.vertical,this._horizontalLabel.geometry={type:"segment",segment:d,sampleLocation:"center"},this._horizontalLabel.anchor=h.horizontal}_updateSegmentAndProjection({view:{renderCoordsHelper:e},orientation:t,startPosition:i,endPosition:s}){e.setAltitude(this._startPositionAtSeaLevel,0,i),e.setAltitude(this._endPositionAtSeaLevel,0,s);const n=new x(this._startPositionAtSeaLevel,this._endPositionAtSeaLevel,e.spatialReference);this._projectedGeodesicLine.setGeometryFromSegment(n),this._geodesicStartHint.setGeometryFromSegment(new T(this._startPositionAtSeaLevel,i)),this._geodesicEndHint.setGeometryFromSegment(new T(this._endPositionAtSeaLevel,s)),this._segmentLabel.geometry={type:"segment",segment:n,sampleLocation:"center"},this._segmentLabel.anchor=t===E.AboveSegment?"top":"bottom"}_updateLabelText({text:e,visualizedMeasurement:t}){null!=e?(this._segmentLabel.text="euclidean"===t?e.euclideanDistance:e.geodesicDistance,this._horizontalLabel.text=e.horizontalDistance,this._verticalLabel.text=e.verticalDistance):(this._segmentLabel.text=null,this._horizontalLabel.text=null,this._verticalLabel.text=null),this.notifyChange("labels")}_updateLabelVisibility({visible:e,viewMode:t}){const i=this._segmentLabel,s=this._horizontalLabel,n=this._verticalLabel;if(i.visible=!1,s.visible=!1,n.visible=!1,e)switch(t){case j.Direct:i.visible=!0;break;case j.Triangle:i.visible=!0,s.visible=!0,n.visible=!0;break;case j.ProjectedGeodesic:i.visible=!0;case j.None:}}get _labelsText(){if(this.destroyed)return null;const e=this.messages,t=this.analysisView.result;if(null==t||null==e)return null;const{directDistance:i,horizontalDistance:s,verticalDistance:n,geodesicDistance:o}=t,l=this.analysisView.unit,r=e=>({euclideanDistance:"",geodesicDistance:"",horizontalDistance:"",verticalDistance:"",...e});switch(l){case"metric":return r({euclideanDistance:i&&h(e,i),geodesicDistance:o&&h(e,o),horizontalDistance:s&&h(e,s),verticalDistance:n&&u(e,n)});case"imperial":return r({euclideanDistance:i&&c(e,i),geodesicDistance:o&&c(e,o),horizontalDistance:s&&c(e,s),verticalDistance:n&&d(e,n)});default:return r({euclideanDistance:i&&a(e,i,l),geodesicDistance:o&&a(e,o,l),horizontalDistance:s&&a(e,s,l),verticalDistance:n&&a(e,n,l)})}}_updateSegmentStripeLength(e){const t=this._segmentVisualElement;null!=e?(t.stripeLength=e,t.stripesEnabled=!0):t.stripesEnabled=!1}get _actualVisualElementsOrientation(){if(null!=this._triangleOrientationOverride)return this._triangleOrientationOverride;const e=this.visualElementOrientation;return e===E.Auto?this.view.state.camera.aboveGround?E.AboveSegment:E.BelowSegment:e}_requiresGeodesicGuideAt(e){const t=this.view;if(!t?.state)return!1;const i=t.state.camera,s=t.renderCoordsHelper;if(!s)return!1;const n=i.computeScreenPixelSizeAt(e);return s.getAltitude(e)/n>=10}get _measurementArrowStripeLength(){const{result:e,unit:t}=this.analysisView;if(null==e)return null;let i=null;const s=e.directDistance;switch(t){case"metric":i=s&&m(s,"meters");break;case"imperial":i=s&&m(s,b(s.value,s.unit));break;default:i=s&&m(s,t)}if(null==i)return null;return o(i.value/30)*L(1,i.unit,"meters")}_updateMessageBundle(){this.loadingMessages=!0,R("esri/core/t9n/Units").then((e=>{this.messages=e})).finally((()=>{this.loadingMessages=!1}))}get testData(){return{labels:this.labels,stripeLength:this._segmentVisualElement?.stripeLength}}};function Q(e,t,i,s,n){const o=B,l=W;n.projectToRenderScreen(i,o),n.projectToRenderScreen(t,l);const r={segment:"bottom",horizontal:"top",vertical:o[0]<l[0]?"left":"right"};{const s=N,o=I;if(z(e,i,s,n),z(e,t,o,n),f(s,o)>=q){const e=Math.sign(s[1])===Math.sign(o[1]);r.segment=e?D(r.vertical):r.vertical}else{const e=J;z(i,t,e,n),f(e,o)>=q&&(r.segment=Math.sign(e[0])===Math.sign(o[0])?D(r.horizontal):r.horizontal)}}if(s===E.BelowSegment){const e=e=>"top"===e?"bottom":"top";r.segment=e(r.segment),r.horizontal=e(r.horizontal),r.vertical=e(r.vertical)}return r}e([w()],F.prototype,"_parameters",null),e([w()],F.prototype,"_triangleOrientationOverride",void 0),e([w()],F.prototype,"messages",void 0),e([w()],F.prototype,"view",void 0),e([w()],F.prototype,"analysis",void 0),e([w()],F.prototype,"analysisView",void 0),e([w()],F.prototype,"loadingMessages",void 0),e([w()],F.prototype,"visible",null),e([w()],F.prototype,"viewMode",null),e([w()],F.prototype,"actualVisualizedMeasurement",null),e([w()],F.prototype,"visualElementOrientation",void 0),e([w()],F.prototype,"triangleCollapseRatioThreshold",void 0),e([w()],F.prototype,"allowVisualElementsOrientationChange",null),e([w()],F.prototype,"labels",null),e([w()],F.prototype,"_labelsText",null),e([w()],F.prototype,"_actualVisualElementsOrientation",null),e([w()],F.prototype,"_measurementArrowStripeLength",null),F=e([S("esri.views.3d.analysis.DirectLineMeasurement.DirectLineMeasurementVisualization")],F);const q=Math.cos(l(12)),B=v(),W=v(),N=_(),I=_(),J=_();export{F as DirectLineMeasurementVisualization};
5
+ import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../Color.js";import"../../../../intl.js";import i from"../../../../core/Accessor.js";import{multiplyOpacity as s,getContrast as n}from"../../../../core/colorUtils.js";import{nextHighestPowerOfTen as o,deg2rad as l}from"../../../../core/mathUtils.js";import{destroyMaybe as r}from"../../../../core/maybe.js";import{formatDecimal as a,formatImperialLength as c,formatImperialVerticalLength as d,formatMetricLength as u,formatMetricVerticalLength as h}from"../../../../core/quantityFormatUtils.js";import{toUnit as m}from"../../../../core/quantityUtils.js";import{watch as g,syncAndInitial as p,initial as _}from"../../../../core/reactiveUtils.js";import{createRenderScreenPointArray3 as v,createRenderScreenPointArray as b}from"../../../../core/screenUtils.js";import{adaptiveImperialLengthUnit as L,convertUnit as w}from"../../../../core/unitUtils.js";import{property as S}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as y}from"../../../../core/accessorSupport/decorators/subclass.js";import{g as f}from"../../../../chunks/vec2.js";import{i as A,g as E}from"../../../../chunks/vec3.js";import{c as V}from"../../../../chunks/vec3f64.js";import{MeasurementMode as P}from"../interfaces.js";import{ViewMode as j,VisualElementOrientation as z}from"./interfaces.js";import{screenSpaceTangent as M}from"../support/viewUtils.js";import{LabelVisualElement as C,mirrorPosition as D}from"../../interactive/visualElements/LabelVisualElement.js";import{LineVisualElement as O}from"../../interactive/visualElements/LineVisualElement.js";import{MeasurementArrowVisualElement as x}from"../../interactive/visualElements/MeasurementArrowVisualElement.js";import{RightAngleQuadVisualElement as G}from"../../interactive/visualElements/RightAngleQuadVisualElement.js";import{GeodesicSegment as T,EuclideanSegment as H}from"../../interactive/visualElements/support/Segment.js";import{RenderOccludedFlag as k}from"../../webgl-engine/lib/Material.js";import{createStipplePatternSimple as U}from"../../webgl-engine/materials/lineStippleUtils.js";import{onLocaleChange as R}from"../../../../intl/locale.js";import{fetchMessageBundle as B}from"../../../../intl/messages.js";let F=class extends i{get _parameters(){const e=this.view.effectiveTheme,{accentColor:i,textColor:o}=e,l=t.toUnitRGBA(i),r=t.toUnitRGBA(s(i,.75)),a=t.toUnitRGBA(n(i)),c=n(o);return{accentColor:l,contrastColor:a,translucentAccentColor:r,triangleLineWidth:3,geodesicProjectionLineWidth:2,guideLineWidth:2,guideStippleLengthPixels:3,directLabelFontSize:16,horizontalLabelFontSize:12,verticalLabelFontSize:12,textColor:o,textBackgroundColor:s(c,.6),textCalloutColor:s(c,.5)}}get visible(){return this.analysisView.visible}get viewMode(){const{elevationAlignedStartPoint:e,elevationAlignedEndPoint:t}=this.analysisView;if(null==e||null==t||e.equals(t))return j.None;const i=this.analysisView.result;if(null==i)return j.Direct;if("geodesic"===i.mode)return this._requiresGeodesicGuideAt(this._startPosition)||this._requiresGeodesicGuideAt(this._endPosition)?j.ProjectedGeodesic:j.Direct;const{verticalDistance:s,horizontalDistance:n}=i,o=s.value,l=n.value;return Math.min(o/l,l/o)<this.triangleCollapseRatioThreshold?j.Direct:j.Triangle}get actualVisualizedMeasurement(){if(null==this.analysisView.result)switch(this.analysisView.measurementMode){case P.Auto:case P.Euclidean:default:return"euclidean";case P.Geodesic:return"geodesic"}return this.analysisView.result.mode}get allowVisualElementsOrientationChange(){return null==this._triangleOrientationOverride}set allowVisualElementsOrientationChange(e){null==this._triangleOrientationOverride!==e&&(null==this._triangleOrientationOverride?this._triangleOrientationOverride=this._actualVisualElementsOrientation:this._triangleOrientationOverride=null)}get labels(){const e="geodesic"===this.actualVisualizedMeasurement;return{direct:this._segmentLabel,horizontal:e?this._segmentLabel:this._horizontalLabel,vertical:this._verticalLabel}}constructor(e){super(e),this._segmentVisualElement=null,this._triangleVisualElement=null,this._rightAngleQuad=null,this._projectedGeodesicLine=null,this._geodesicStartHint=null,this._geodesicEndHint=null,this._segmentLabel=null,this._verticalLabel=null,this._horizontalLabel=null,this._startPosition=V(),this._endPosition=V(),this._cornerPosition=V(),this._startPositionAtSeaLevel=V(),this._endPositionAtSeaLevel=V(),this._triangleOrientationOverride=null,this.messages=null,this.loadingMessages=!0,this.visualElementOrientation=z.Auto,this.triangleCollapseRatioThreshold=.03}initialize(){const e=this._parameters,t={attached:!0,view:this.view,isDecoration:!0},{guideLineWidth:i,guideStippleLengthPixels:s,triangleLineWidth:n,geodesicProjectionLineWidth:o,directLabelFontSize:l,verticalLabelFontSize:r,horizontalLabelFontSize:a}=e;this._segmentVisualElement=new x({...t,geometry:null,renderOccluded:k.OccludeAndTransparent}),this._triangleVisualElement=new O({...t,width:n,renderOccluded:k.OccludeAndTransparent}),this._rightAngleQuad=new G({...t,renderOccluded:k.OccludeAndTransparent});const c={...t,polygonOffset:!0,renderOccluded:k.OccludeAndTransparent};this._projectedGeodesicLine=new O({...c,width:o,stipplePattern:U(s)}),this._geodesicStartHint=new O({...c,width:i,stipplePattern:U(s)}),this._geodesicEndHint=new O({...c,width:i,stipplePattern:U(s)}),this._segmentLabel=new C({...t,fontSize:l}),this._verticalLabel=new C({...t,fontSize:r}),this._horizontalLabel=new C({...t,fontSize:a}),this.addHandles([g((()=>{const{elevationAlignedStartPoint:e,elevationAlignedEndPoint:t}=this.analysisView,i=this.view;return{view:i,camera:i.state.camera,viewMode:this.viewMode,elevationAlignedStartPoint:e,elevationAlignedEndPoint:t,orientation:this._actualVisualElementsOrientation,visualizedMeasurement:this.actualVisualizedMeasurement,stripeLength:this._measurementArrowStripeLength}}),(e=>this._updateGeometryAndViewMode(e)),p),g((()=>({visible:this.visible,viewMode:this.viewMode})),(e=>this._updateVisualElementVisibility(e)),p),g((()=>({text:this._labelsText,visualizedMeasurement:this.actualVisualizedMeasurement})),(e=>this._updateLabelText(e)),p),g((()=>({visible:this.visible,viewMode:this.viewMode})),(e=>this._updateLabelVisibility(e)),p),g((()=>this._measurementArrowStripeLength),(e=>this._updateSegmentStripeLength(e)),p),R((async()=>this._updateMessageBundle())),g((()=>this._parameters),(({textBackgroundColor:e,textCalloutColor:t,textColor:i,translucentAccentColor:s,accentColor:n,contrastColor:o})=>{const{_segmentLabel:l,_verticalLabel:r,_horizontalLabel:a,_triangleVisualElement:c,_rightAngleQuad:d,_projectedGeodesicLine:u,_geodesicStartHint:h,_geodesicEndHint:m,_segmentVisualElement:g}=this;l.backgroundColor=e,l.calloutColor=t,l.textColor=i,r.backgroundColor=e,r.calloutColor=t,r.textColor=i,a.backgroundColor=e,a.calloutColor=t,a.textColor=i,c.color=s,d.color=s,u.color=s,h.color=s,m.color=s,g.color=n,g.contrastColor=o}),_)]),this._updateMessageBundle()}destroy(){this._segmentVisualElement=r(this._segmentVisualElement),this._triangleVisualElement=r(this._triangleVisualElement),this._rightAngleQuad=r(this._rightAngleQuad),this._projectedGeodesicLine=r(this._projectedGeodesicLine),this._geodesicStartHint=r(this._geodesicStartHint),this._geodesicEndHint=r(this._geodesicEndHint),this._segmentLabel=r(this._segmentLabel),this._verticalLabel=r(this._verticalLabel),this._horizontalLabel=r(this._horizontalLabel),this.set("view",null)}_updateVisualElementVisibility({visible:e,viewMode:t}){if(this._segmentVisualElement.visible=!1,this._triangleVisualElement.visible=!1,this._rightAngleQuad.visible=!1,this._projectedGeodesicLine.visible=!1,this._geodesicStartHint.visible=!1,this._geodesicEndHint.visible=!1,e)switch(t){case j.None:break;case j.Direct:this._segmentVisualElement.visible=!0;break;case j.Triangle:this._segmentVisualElement.visible=!0,this._triangleVisualElement.visible=!0,this._rightAngleQuad.visible=!0;break;case j.ProjectedGeodesic:this._segmentVisualElement.visible=!0,this._projectedGeodesicLine.visible=!0,this._geodesicStartHint.visible=!0,this._geodesicEndHint.visible=!0}}_updateGeometryAndViewMode({view:e,camera:t,viewMode:i,elevationAlignedStartPoint:s,elevationAlignedEndPoint:n,orientation:o,visualizedMeasurement:l,stripeLength:r}){const a=e.renderCoordsHelper;if(null==a||null==s||null==n||s.equals(n))return;let c=this._startPosition,d=this._endPosition;a.toRenderCoords(s,c),a.toRenderCoords(n,d);const u=o===z.AboveSegment?1:-1,h=u*(a.getAltitude(d)-a.getAltitude(c));h<0&&(c=this._endPosition,d=this._startPosition);const m="geodesic"===l?new T(this._startPosition,this._endPosition,a.spatialReference):new H(this._startPosition,this._endPosition);switch(this._segmentVisualElement.geometry=m,this._updateSegmentStripeLength(r),i){case j.Direct:this._updateSegment(m,o);break;case j.Triangle:this._updateSegmentAndTriangle({view:e,camera:t,segment:m,orientation:o,startPosition:c,endPosition:d,deltaSign:u,altitudeDelta:h});break;case j.ProjectedGeodesic:this._updateSegmentAndProjection({view:e,orientation:o,startPosition:c,endPosition:d})}}_updateSegment(e,t){this._segmentLabel.anchor=t===z.AboveSegment?"top":"bottom",this._segmentLabel.geometry={type:"segment",segment:e,sampleLocation:"center"}}_updateSegmentAndTriangle({view:{renderCoordsHelper:e},camera:t,segment:i,orientation:s,startPosition:n,endPosition:o,deltaSign:l,altitudeDelta:r}){const a=this._cornerPosition;e.worldUpAtPosition(n,a),A(a,a,l*Math.abs(r)),E(a,a,n),this._triangleVisualElement.geometry=[[[n[0],n[1],n[2]],[a[0],a[1],a[2]],[o[0],o[1],o[2]]]],this._rightAngleQuad.geometry={previous:n,center:a,next:o};const c=new H(n,a),d=new H(a,o),u=Q(n,o,a,s,t);this._segmentLabel.anchor=u.segment,this._segmentLabel.geometry={type:"segment",segment:i,sampleLocation:"center"},this._verticalLabel.geometry={type:"segment",segment:c,sampleLocation:"center"},this._verticalLabel.anchor=u.vertical,this._horizontalLabel.geometry={type:"segment",segment:d,sampleLocation:"center"},this._horizontalLabel.anchor=u.horizontal}_updateSegmentAndProjection({view:{renderCoordsHelper:e},orientation:t,startPosition:i,endPosition:s}){e.setAltitude(this._startPositionAtSeaLevel,0,i),e.setAltitude(this._endPositionAtSeaLevel,0,s);const n=new T(this._startPositionAtSeaLevel,this._endPositionAtSeaLevel,e.spatialReference);this._projectedGeodesicLine.setGeometryFromSegment(n),this._geodesicStartHint.setGeometryFromSegment(new H(this._startPositionAtSeaLevel,i)),this._geodesicEndHint.setGeometryFromSegment(new H(this._endPositionAtSeaLevel,s)),this._segmentLabel.geometry={type:"segment",segment:n,sampleLocation:"center"},this._segmentLabel.anchor=t===z.AboveSegment?"top":"bottom"}_updateLabelText({text:e,visualizedMeasurement:t}){null!=e?(this._segmentLabel.text="euclidean"===t?e.euclideanDistance:e.geodesicDistance,this._horizontalLabel.text=e.horizontalDistance,this._verticalLabel.text=e.verticalDistance):(this._segmentLabel.text=null,this._horizontalLabel.text=null,this._verticalLabel.text=null),this.notifyChange("labels")}_updateLabelVisibility({visible:e,viewMode:t}){const i=this._segmentLabel,s=this._horizontalLabel,n=this._verticalLabel;if(i.visible=!1,s.visible=!1,n.visible=!1,e)switch(t){case j.Direct:i.visible=!0;break;case j.Triangle:i.visible=!0,s.visible=!0,n.visible=!0;break;case j.ProjectedGeodesic:i.visible=!0;case j.None:}}get _labelsText(){if(this.destroyed)return null;const e=this.messages,t=this.analysisView.result;if(null==t||null==e)return null;const{directDistance:i,horizontalDistance:s,verticalDistance:n,geodesicDistance:o}=t,l=this.analysisView.unit,r=e=>({euclideanDistance:"",geodesicDistance:"",horizontalDistance:"",verticalDistance:"",...e});switch(l){case"metric":return r({euclideanDistance:i&&u(e,i),geodesicDistance:o&&u(e,o),horizontalDistance:s&&u(e,s),verticalDistance:n&&h(e,n)});case"imperial":return r({euclideanDistance:i&&c(e,i),geodesicDistance:o&&c(e,o),horizontalDistance:s&&c(e,s),verticalDistance:n&&d(e,n)});default:return r({euclideanDistance:i&&a(e,i,l),geodesicDistance:o&&a(e,o,l),horizontalDistance:s&&a(e,s,l),verticalDistance:n&&a(e,n,l)})}}_updateSegmentStripeLength(e){const t=this._segmentVisualElement;null!=e?(t.stripeLength=e,t.stripesEnabled=!0):t.stripesEnabled=!1}get _actualVisualElementsOrientation(){if(null!=this._triangleOrientationOverride)return this._triangleOrientationOverride;const e=this.visualElementOrientation;return e===z.Auto?this.view.state.camera.aboveGround?z.AboveSegment:z.BelowSegment:e}_requiresGeodesicGuideAt(e){const t=this.view;if(!t?.state)return!1;const i=t.state.camera,s=t.renderCoordsHelper;if(!s)return!1;const n=i.computeScreenPixelSizeAt(e);return s.getAltitude(e)/n>=10}get _measurementArrowStripeLength(){const{result:e,unit:t}=this.analysisView;if(null==e)return null;let i=null;const s=e.directDistance;switch(t){case"metric":i=s&&m(s,"meters");break;case"imperial":i=s&&m(s,L(s.value,s.unit));break;default:i=s&&m(s,t)}if(null==i)return null;return o(i.value/30)*w(1,i.unit,"meters")}_updateMessageBundle(){this.loadingMessages=!0,B("esri/core/t9n/Units").then((e=>{this.messages=e})).finally((()=>{this.loadingMessages=!1}))}get testData(){return{labels:this.labels,stripeLength:this._segmentVisualElement?.stripeLength}}};function Q(e,t,i,s,n){const o=W,l=N;n.projectToRenderScreen(i,o),n.projectToRenderScreen(t,l);const r={segment:"bottom",horizontal:"top",vertical:o[0]<l[0]?"left":"right"};{const s=I,o=J;if(M(e,i,s,n),M(e,t,o,n),f(s,o)>=q){const e=Math.sign(s[1])===Math.sign(o[1]);r.segment=e?D(r.vertical):r.vertical}else{const e=K;M(i,t,e,n),f(e,o)>=q&&(r.segment=Math.sign(e[0])===Math.sign(o[0])?D(r.horizontal):r.horizontal)}}if(s===z.BelowSegment){const e=e=>"top"===e?"bottom":"top";r.segment=e(r.segment),r.horizontal=e(r.horizontal),r.vertical=e(r.vertical)}return r}e([S()],F.prototype,"_parameters",null),e([S()],F.prototype,"_triangleOrientationOverride",void 0),e([S()],F.prototype,"messages",void 0),e([S()],F.prototype,"view",void 0),e([S()],F.prototype,"analysis",void 0),e([S()],F.prototype,"analysisView",void 0),e([S()],F.prototype,"loadingMessages",void 0),e([S()],F.prototype,"visible",null),e([S()],F.prototype,"viewMode",null),e([S()],F.prototype,"actualVisualizedMeasurement",null),e([S()],F.prototype,"visualElementOrientation",void 0),e([S()],F.prototype,"triangleCollapseRatioThreshold",void 0),e([S()],F.prototype,"allowVisualElementsOrientationChange",null),e([S()],F.prototype,"labels",null),e([S()],F.prototype,"_labelsText",null),e([S()],F.prototype,"_actualVisualElementsOrientation",null),e([S()],F.prototype,"_measurementArrowStripeLength",null),F=e([y("esri.views.3d.analysis.DirectLineMeasurement.DirectLineMeasurementVisualization")],F);const q=Math.cos(l(12)),W=v(),N=v(),I=b(),J=b(),K=b();export{F as DirectLineMeasurementVisualization};