@arcgis/core 4.25.0-next.20220919 → 4.25.0-next.20220921

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 (604) hide show
  1. package/AggregateGraphic.js +1 -1
  2. package/assets/esri/core/workers/RemoteClient.js +1 -1
  3. package/assets/esri/core/workers/chunks/{9f31ab2247c9defb882c.js → 01ac91fc0bc6b4d4e3c6.js} +1 -1
  4. package/assets/esri/core/workers/chunks/{d26108352874af0b6762.js → 053564e659222e8f0efb.js} +1 -1
  5. package/assets/esri/core/workers/chunks/1c65fd714f637ac1ee8c.js +1 -0
  6. package/assets/esri/core/workers/chunks/{8588cbecb8e808f451fe.js → 249e32af1f2d433fae4c.js} +1 -1
  7. package/assets/esri/core/workers/chunks/{5b16b30ac3166f33e81e.js → 26690f4ec1f3cb8099c2.js} +1 -1
  8. package/assets/esri/core/workers/chunks/{be93b0cef85665446944.js → 274b4cdf6c8d77e8a2e6.js} +1 -1
  9. package/assets/esri/core/workers/chunks/{52dcfd6b8b1dfa864e44.js → 2cae0ec5f60ab42a49aa.js} +1 -1
  10. package/assets/esri/core/workers/chunks/43e4560d65e5ddeeef6f.js +1 -0
  11. package/assets/esri/core/workers/chunks/{f436c86f86236ea7ea04.js → 4641e10e0e8e9d257521.js} +1 -1
  12. package/assets/esri/core/workers/chunks/{7a45333de9ded92619c2.js → 466008f793c2e11e854c.js} +1 -1
  13. package/assets/esri/core/workers/chunks/{c9d655675552dcf6cef7.js → 4a699b41072ee88f0956.js} +1 -1
  14. package/assets/esri/core/workers/chunks/{14ea96e398f4842abe4e.js → 4fdd18f5cdaa0d82ebc1.js} +1 -1
  15. package/assets/esri/core/workers/chunks/{9662da3e1e37f3445186.js → 562b9619b8ee13734813.js} +1 -1
  16. package/assets/esri/core/workers/chunks/{5c1a5615c865c10209c2.js → 5880fa48bad79a7c93ab.js} +1 -1
  17. package/assets/esri/core/workers/chunks/58824250492b89ec24ea.js +1 -0
  18. package/assets/esri/core/workers/chunks/64a6b837f1d5d7ad7619.js +1 -0
  19. package/assets/esri/core/workers/chunks/{421241543afbc9a619ea.js → 64de93865088bbe0398f.js} +1 -1
  20. package/assets/esri/core/workers/chunks/{99d56a707039d645622c.js → 6a20d8740ec2a5b2c579.js} +1 -1
  21. package/assets/esri/core/workers/chunks/{8bab21bc6164a593278f.js → 771b92e524802de840ba.js} +1 -1
  22. package/assets/esri/core/workers/chunks/{dbb1bf97c85848bb8ce1.js → 7ce250cc6fbe68aef50d.js} +32 -32
  23. package/assets/esri/core/workers/chunks/{2c4938512dd726a177dd.js → 7fab18074b130b71a648.js} +1 -1
  24. package/assets/esri/core/workers/chunks/{f67357b3c6c591c9da5e.js → 872f1cb3596fb80e387f.js} +1 -1
  25. package/assets/esri/core/workers/chunks/{3ee81834b3217720cb48.js → 8874e69378a27d155f9d.js} +1 -1
  26. package/assets/esri/core/workers/chunks/{31de71018575457155e5.js → 8ee3da8677255b8c8709.js} +1 -1
  27. package/assets/esri/core/workers/chunks/{2e44aee22e70857b893c.js → 93631b10452b0e0189b3.js} +1 -1
  28. package/assets/esri/core/workers/chunks/{cb2dc84d972469445da6.js → 95cd9edca50ea163d50f.js} +1 -1
  29. package/assets/esri/core/workers/chunks/{d31bbb13af45ce8e45dc.js → acf9f753741b677afb44.js} +1 -1
  30. package/assets/esri/core/workers/chunks/{1455944edeba1560eb07.js → afdafa77f5ca1b9e3acc.js} +1 -1
  31. package/assets/esri/core/workers/chunks/{cf3e1ac63580bc495ea6.js → b4da35f1093f3731f9ac.js} +1 -1
  32. package/assets/esri/core/workers/chunks/{09f4296dcb80e3ae4b3d.js → b8eba8c9d5424a7ae5f2.js} +1 -1
  33. package/assets/esri/core/workers/chunks/bb0d86937faf0cd7d16d.js +1 -0
  34. package/assets/esri/core/workers/chunks/bf3e80023e156d5906c7.js +1 -0
  35. package/assets/esri/core/workers/chunks/{8ba83fee56dd4f306d87.js → c2a6ac7046134f725cf3.js} +1 -1
  36. package/assets/esri/core/workers/chunks/{5d3fabe66e1bce1b30fb.js → cc7569489b572b8b3b53.js} +1 -1
  37. package/assets/esri/core/workers/chunks/{fddd4ea487788e003fb1.js → d09f06eb4157a7c2c8ab.js} +1 -1
  38. package/assets/esri/core/workers/chunks/d1be3ab7846e3a555b6c.js +1 -0
  39. package/assets/esri/core/workers/chunks/e064035f959d68e9603f.js +1 -0
  40. package/assets/esri/core/workers/chunks/{d92975e56a1290255252.js → e09df62cf35d636b0975.js} +1 -1
  41. package/assets/esri/core/workers/chunks/{674fa5b93704ef08c9e8.js → e0c763e05feb1c2093ba.js} +1 -1
  42. package/assets/esri/core/workers/chunks/e20e99f8f76f5002437e.js +1 -0
  43. package/assets/esri/core/workers/chunks/{51289d2f5277af4023e9.js → ed33e019bc7775db2e50.js} +1 -1
  44. package/assets/esri/core/workers/chunks/ef95d6ab7b1c032ab4ad.js +1 -0
  45. package/assets/esri/core/workers/chunks/{48aa432e1bf60c68de14.js → f0c4b408a0b88adf6576.js} +1 -1
  46. package/assets/esri/core/workers/chunks/{169f4354a375db5de121.js → ffcbcb928b6cb8c596ad.js} +1 -1
  47. package/assets/esri/t9n/common_ar.json +1 -1
  48. package/assets/esri/t9n/common_bg.json +1 -1
  49. package/assets/esri/t9n/common_bs.json +1 -1
  50. package/assets/esri/t9n/common_ca.json +1 -1
  51. package/assets/esri/t9n/common_cs.json +1 -1
  52. package/assets/esri/t9n/common_da.json +1 -1
  53. package/assets/esri/t9n/common_de.json +1 -1
  54. package/assets/esri/t9n/common_el.json +1 -1
  55. package/assets/esri/t9n/common_es.json +1 -1
  56. package/assets/esri/t9n/common_et.json +1 -1
  57. package/assets/esri/t9n/common_fi.json +1 -1
  58. package/assets/esri/t9n/common_fr.json +1 -1
  59. package/assets/esri/t9n/common_he.json +1 -1
  60. package/assets/esri/t9n/common_hr.json +1 -1
  61. package/assets/esri/t9n/common_hu.json +1 -1
  62. package/assets/esri/t9n/common_id.json +1 -1
  63. package/assets/esri/t9n/common_it.json +1 -1
  64. package/assets/esri/t9n/common_ja.json +1 -1
  65. package/assets/esri/t9n/common_ko.json +1 -1
  66. package/assets/esri/t9n/common_lt.json +1 -1
  67. package/assets/esri/t9n/common_lv.json +1 -1
  68. package/assets/esri/t9n/common_nb.json +1 -1
  69. package/assets/esri/t9n/common_nl.json +1 -1
  70. package/assets/esri/t9n/common_pl.json +1 -1
  71. package/assets/esri/t9n/common_pt-BR.json +1 -1
  72. package/assets/esri/t9n/common_pt-PT.json +1 -1
  73. package/assets/esri/t9n/common_ro.json +1 -1
  74. package/assets/esri/t9n/common_ru.json +1 -1
  75. package/assets/esri/t9n/common_sk.json +1 -1
  76. package/assets/esri/t9n/common_sl.json +1 -1
  77. package/assets/esri/t9n/common_sr.json +1 -1
  78. package/assets/esri/t9n/common_sv.json +1 -1
  79. package/assets/esri/t9n/common_th.json +1 -1
  80. package/assets/esri/t9n/common_tr.json +1 -1
  81. package/assets/esri/t9n/common_uk.json +1 -1
  82. package/assets/esri/t9n/common_vi.json +1 -1
  83. package/assets/esri/t9n/common_zh-CN.json +1 -1
  84. package/assets/esri/t9n/common_zh-HK.json +1 -1
  85. package/assets/esri/t9n/common_zh-TW.json +1 -1
  86. package/assets/esri/themes/base/widgets/_Daylight.scss +1 -0
  87. package/assets/esri/themes/base/widgets/_Directions.scss +1 -2
  88. package/assets/esri/themes/dark/main.css +1 -1
  89. package/assets/esri/themes/light/main.css +1 -1
  90. package/assets/esri/themes/light/view.css +1 -1
  91. package/assets/esri/widgets/Feature/t9n/Feature_ar.json +1 -1
  92. package/assets/esri/widgets/Feature/t9n/Feature_bg.json +1 -1
  93. package/assets/esri/widgets/Feature/t9n/Feature_bs.json +1 -1
  94. package/assets/esri/widgets/Feature/t9n/Feature_ca.json +1 -1
  95. package/assets/esri/widgets/Feature/t9n/Feature_cs.json +1 -1
  96. package/assets/esri/widgets/Feature/t9n/Feature_da.json +1 -1
  97. package/assets/esri/widgets/Feature/t9n/Feature_de.json +1 -1
  98. package/assets/esri/widgets/Feature/t9n/Feature_el.json +1 -1
  99. package/assets/esri/widgets/Feature/t9n/Feature_es.json +1 -1
  100. package/assets/esri/widgets/Feature/t9n/Feature_et.json +1 -1
  101. package/assets/esri/widgets/Feature/t9n/Feature_fi.json +1 -1
  102. package/assets/esri/widgets/Feature/t9n/Feature_fr.json +1 -1
  103. package/assets/esri/widgets/Feature/t9n/Feature_he.json +1 -1
  104. package/assets/esri/widgets/Feature/t9n/Feature_hr.json +1 -1
  105. package/assets/esri/widgets/Feature/t9n/Feature_hu.json +1 -1
  106. package/assets/esri/widgets/Feature/t9n/Feature_id.json +1 -1
  107. package/assets/esri/widgets/Feature/t9n/Feature_it.json +1 -1
  108. package/assets/esri/widgets/Feature/t9n/Feature_ja.json +1 -1
  109. package/assets/esri/widgets/Feature/t9n/Feature_ko.json +1 -1
  110. package/assets/esri/widgets/Feature/t9n/Feature_lt.json +1 -1
  111. package/assets/esri/widgets/Feature/t9n/Feature_lv.json +1 -1
  112. package/assets/esri/widgets/Feature/t9n/Feature_nb.json +1 -1
  113. package/assets/esri/widgets/Feature/t9n/Feature_nl.json +1 -1
  114. package/assets/esri/widgets/Feature/t9n/Feature_pl.json +1 -1
  115. package/assets/esri/widgets/Feature/t9n/Feature_pt-BR.json +1 -1
  116. package/assets/esri/widgets/Feature/t9n/Feature_pt-PT.json +1 -1
  117. package/assets/esri/widgets/Feature/t9n/Feature_ro.json +1 -1
  118. package/assets/esri/widgets/Feature/t9n/Feature_ru.json +1 -1
  119. package/assets/esri/widgets/Feature/t9n/Feature_sk.json +1 -1
  120. package/assets/esri/widgets/Feature/t9n/Feature_sl.json +1 -1
  121. package/assets/esri/widgets/Feature/t9n/Feature_sr.json +1 -1
  122. package/assets/esri/widgets/Feature/t9n/Feature_sv.json +1 -1
  123. package/assets/esri/widgets/Feature/t9n/Feature_th.json +1 -1
  124. package/assets/esri/widgets/Feature/t9n/Feature_tr.json +1 -1
  125. package/assets/esri/widgets/Feature/t9n/Feature_uk.json +1 -1
  126. package/assets/esri/widgets/Feature/t9n/Feature_vi.json +1 -1
  127. package/assets/esri/widgets/Feature/t9n/Feature_zh-CN.json +1 -1
  128. package/assets/esri/widgets/Feature/t9n/Feature_zh-HK.json +1 -1
  129. package/assets/esri/widgets/Feature/t9n/Feature_zh-TW.json +1 -1
  130. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ar.json +1 -1
  131. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_bg.json +1 -1
  132. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_bs.json +1 -1
  133. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ca.json +1 -1
  134. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_cs.json +1 -1
  135. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_da.json +1 -1
  136. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_de.json +1 -1
  137. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_el.json +1 -1
  138. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_es.json +1 -1
  139. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_et.json +1 -1
  140. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_fi.json +1 -1
  141. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_fr.json +1 -1
  142. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_he.json +1 -1
  143. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_hr.json +1 -1
  144. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_hu.json +1 -1
  145. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_id.json +1 -1
  146. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_it.json +1 -1
  147. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ja.json +1 -1
  148. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ko.json +1 -1
  149. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_lt.json +1 -1
  150. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_lv.json +1 -1
  151. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_nb.json +1 -1
  152. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_nl.json +1 -1
  153. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_pl.json +1 -1
  154. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_pt-BR.json +1 -1
  155. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_pt-PT.json +1 -1
  156. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ro.json +1 -1
  157. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ru.json +1 -1
  158. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sk.json +1 -1
  159. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sl.json +1 -1
  160. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sr.json +1 -1
  161. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sv.json +1 -1
  162. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_th.json +1 -1
  163. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_tr.json +1 -1
  164. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_uk.json +1 -1
  165. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_vi.json +1 -1
  166. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_zh-CN.json +1 -1
  167. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_zh-HK.json +1 -1
  168. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_zh-TW.json +1 -1
  169. package/assets/esri/widgets/Popup/t9n/Popup_ar.json +1 -1
  170. package/assets/esri/widgets/Popup/t9n/Popup_bg.json +1 -1
  171. package/assets/esri/widgets/Popup/t9n/Popup_bs.json +1 -1
  172. package/assets/esri/widgets/Popup/t9n/Popup_ca.json +1 -1
  173. package/assets/esri/widgets/Popup/t9n/Popup_cs.json +1 -1
  174. package/assets/esri/widgets/Popup/t9n/Popup_da.json +1 -1
  175. package/assets/esri/widgets/Popup/t9n/Popup_de.json +1 -1
  176. package/assets/esri/widgets/Popup/t9n/Popup_el.json +1 -1
  177. package/assets/esri/widgets/Popup/t9n/Popup_es.json +1 -1
  178. package/assets/esri/widgets/Popup/t9n/Popup_et.json +1 -1
  179. package/assets/esri/widgets/Popup/t9n/Popup_fi.json +1 -1
  180. package/assets/esri/widgets/Popup/t9n/Popup_fr.json +1 -1
  181. package/assets/esri/widgets/Popup/t9n/Popup_he.json +1 -1
  182. package/assets/esri/widgets/Popup/t9n/Popup_hr.json +1 -1
  183. package/assets/esri/widgets/Popup/t9n/Popup_hu.json +1 -1
  184. package/assets/esri/widgets/Popup/t9n/Popup_id.json +1 -1
  185. package/assets/esri/widgets/Popup/t9n/Popup_it.json +1 -1
  186. package/assets/esri/widgets/Popup/t9n/Popup_ja.json +1 -1
  187. package/assets/esri/widgets/Popup/t9n/Popup_ko.json +1 -1
  188. package/assets/esri/widgets/Popup/t9n/Popup_lt.json +1 -1
  189. package/assets/esri/widgets/Popup/t9n/Popup_lv.json +1 -1
  190. package/assets/esri/widgets/Popup/t9n/Popup_nb.json +1 -1
  191. package/assets/esri/widgets/Popup/t9n/Popup_nl.json +1 -1
  192. package/assets/esri/widgets/Popup/t9n/Popup_pl.json +1 -1
  193. package/assets/esri/widgets/Popup/t9n/Popup_pt-BR.json +1 -1
  194. package/assets/esri/widgets/Popup/t9n/Popup_pt-PT.json +1 -1
  195. package/assets/esri/widgets/Popup/t9n/Popup_ro.json +1 -1
  196. package/assets/esri/widgets/Popup/t9n/Popup_ru.json +1 -1
  197. package/assets/esri/widgets/Popup/t9n/Popup_sk.json +1 -1
  198. package/assets/esri/widgets/Popup/t9n/Popup_sl.json +1 -1
  199. package/assets/esri/widgets/Popup/t9n/Popup_sr.json +1 -1
  200. package/assets/esri/widgets/Popup/t9n/Popup_sv.json +1 -1
  201. package/assets/esri/widgets/Popup/t9n/Popup_th.json +1 -1
  202. package/assets/esri/widgets/Popup/t9n/Popup_tr.json +1 -1
  203. package/assets/esri/widgets/Popup/t9n/Popup_uk.json +1 -1
  204. package/assets/esri/widgets/Popup/t9n/Popup_vi.json +1 -1
  205. package/assets/esri/widgets/Popup/t9n/Popup_zh-CN.json +1 -1
  206. package/assets/esri/widgets/Popup/t9n/Popup_zh-HK.json +1 -1
  207. package/assets/esri/widgets/Popup/t9n/Popup_zh-TW.json +1 -1
  208. package/assets/esri/widgets/support/t9n/DatePicker_ar.json +1 -1
  209. package/assets/esri/widgets/support/t9n/DatePicker_bg.json +1 -1
  210. package/assets/esri/widgets/support/t9n/DatePicker_bs.json +1 -1
  211. package/assets/esri/widgets/support/t9n/DatePicker_ca.json +1 -1
  212. package/assets/esri/widgets/support/t9n/DatePicker_cs.json +1 -1
  213. package/assets/esri/widgets/support/t9n/DatePicker_da.json +1 -1
  214. package/assets/esri/widgets/support/t9n/DatePicker_de.json +1 -1
  215. package/assets/esri/widgets/support/t9n/DatePicker_el.json +1 -1
  216. package/assets/esri/widgets/support/t9n/DatePicker_es.json +1 -1
  217. package/assets/esri/widgets/support/t9n/DatePicker_et.json +1 -1
  218. package/assets/esri/widgets/support/t9n/DatePicker_fi.json +1 -1
  219. package/assets/esri/widgets/support/t9n/DatePicker_fr.json +1 -1
  220. package/assets/esri/widgets/support/t9n/DatePicker_he.json +1 -1
  221. package/assets/esri/widgets/support/t9n/DatePicker_hr.json +1 -1
  222. package/assets/esri/widgets/support/t9n/DatePicker_hu.json +1 -1
  223. package/assets/esri/widgets/support/t9n/DatePicker_id.json +1 -1
  224. package/assets/esri/widgets/support/t9n/DatePicker_it.json +1 -1
  225. package/assets/esri/widgets/support/t9n/DatePicker_ja.json +1 -1
  226. package/assets/esri/widgets/support/t9n/DatePicker_ko.json +1 -1
  227. package/assets/esri/widgets/support/t9n/DatePicker_lt.json +1 -1
  228. package/assets/esri/widgets/support/t9n/DatePicker_lv.json +1 -1
  229. package/assets/esri/widgets/support/t9n/DatePicker_nb.json +1 -1
  230. package/assets/esri/widgets/support/t9n/DatePicker_nl.json +1 -1
  231. package/assets/esri/widgets/support/t9n/DatePicker_pl.json +1 -1
  232. package/assets/esri/widgets/support/t9n/DatePicker_pt-BR.json +1 -1
  233. package/assets/esri/widgets/support/t9n/DatePicker_pt-PT.json +1 -1
  234. package/assets/esri/widgets/support/t9n/DatePicker_ro.json +1 -1
  235. package/assets/esri/widgets/support/t9n/DatePicker_ru.json +1 -1
  236. package/assets/esri/widgets/support/t9n/DatePicker_sk.json +1 -1
  237. package/assets/esri/widgets/support/t9n/DatePicker_sl.json +1 -1
  238. package/assets/esri/widgets/support/t9n/DatePicker_sr.json +1 -1
  239. package/assets/esri/widgets/support/t9n/DatePicker_sv.json +1 -1
  240. package/assets/esri/widgets/support/t9n/DatePicker_th.json +1 -1
  241. package/assets/esri/widgets/support/t9n/DatePicker_tr.json +1 -1
  242. package/assets/esri/widgets/support/t9n/DatePicker_uk.json +1 -1
  243. package/assets/esri/widgets/support/t9n/DatePicker_vi.json +1 -1
  244. package/assets/esri/widgets/support/t9n/DatePicker_zh-CN.json +1 -1
  245. package/assets/esri/widgets/support/t9n/DatePicker_zh-HK.json +1 -1
  246. package/assets/esri/widgets/support/t9n/DatePicker_zh-TW.json +1 -1
  247. package/assets/esri/widgets/support/t9n/TimePicker_ar.json +1 -1
  248. package/assets/esri/widgets/support/t9n/TimePicker_bg.json +1 -1
  249. package/assets/esri/widgets/support/t9n/TimePicker_bs.json +1 -1
  250. package/assets/esri/widgets/support/t9n/TimePicker_ca.json +1 -1
  251. package/assets/esri/widgets/support/t9n/TimePicker_cs.json +1 -1
  252. package/assets/esri/widgets/support/t9n/TimePicker_da.json +1 -1
  253. package/assets/esri/widgets/support/t9n/TimePicker_de.json +1 -1
  254. package/assets/esri/widgets/support/t9n/TimePicker_el.json +1 -1
  255. package/assets/esri/widgets/support/t9n/TimePicker_es.json +1 -1
  256. package/assets/esri/widgets/support/t9n/TimePicker_et.json +1 -1
  257. package/assets/esri/widgets/support/t9n/TimePicker_fi.json +1 -1
  258. package/assets/esri/widgets/support/t9n/TimePicker_fr.json +1 -1
  259. package/assets/esri/widgets/support/t9n/TimePicker_he.json +1 -1
  260. package/assets/esri/widgets/support/t9n/TimePicker_hr.json +1 -1
  261. package/assets/esri/widgets/support/t9n/TimePicker_hu.json +1 -1
  262. package/assets/esri/widgets/support/t9n/TimePicker_id.json +1 -1
  263. package/assets/esri/widgets/support/t9n/TimePicker_it.json +1 -1
  264. package/assets/esri/widgets/support/t9n/TimePicker_ja.json +1 -1
  265. package/assets/esri/widgets/support/t9n/TimePicker_ko.json +1 -1
  266. package/assets/esri/widgets/support/t9n/TimePicker_lt.json +1 -1
  267. package/assets/esri/widgets/support/t9n/TimePicker_lv.json +1 -1
  268. package/assets/esri/widgets/support/t9n/TimePicker_nb.json +1 -1
  269. package/assets/esri/widgets/support/t9n/TimePicker_nl.json +1 -1
  270. package/assets/esri/widgets/support/t9n/TimePicker_pl.json +1 -1
  271. package/assets/esri/widgets/support/t9n/TimePicker_pt-BR.json +1 -1
  272. package/assets/esri/widgets/support/t9n/TimePicker_pt-PT.json +1 -1
  273. package/assets/esri/widgets/support/t9n/TimePicker_ro.json +1 -1
  274. package/assets/esri/widgets/support/t9n/TimePicker_ru.json +1 -1
  275. package/assets/esri/widgets/support/t9n/TimePicker_sk.json +1 -1
  276. package/assets/esri/widgets/support/t9n/TimePicker_sl.json +1 -1
  277. package/assets/esri/widgets/support/t9n/TimePicker_sr.json +1 -1
  278. package/assets/esri/widgets/support/t9n/TimePicker_sv.json +1 -1
  279. package/assets/esri/widgets/support/t9n/TimePicker_th.json +1 -1
  280. package/assets/esri/widgets/support/t9n/TimePicker_tr.json +1 -1
  281. package/assets/esri/widgets/support/t9n/TimePicker_uk.json +1 -1
  282. package/assets/esri/widgets/support/t9n/TimePicker_vi.json +1 -1
  283. package/assets/esri/widgets/support/t9n/TimePicker_zh-CN.json +1 -1
  284. package/assets/esri/widgets/support/t9n/TimePicker_zh-HK.json +1 -1
  285. package/assets/esri/widgets/support/t9n/TimePicker_zh-TW.json +1 -1
  286. package/chunks/CheckerBoard.glsl.js +3 -3
  287. package/chunks/ColorMaterial.glsl.js +5 -5
  288. package/chunks/ComponentShader.glsl.js +1 -1
  289. package/chunks/Compositing.glsl.js +4 -19
  290. package/chunks/DefaultMaterial.glsl.js +2 -2
  291. package/chunks/HUDCompositing.glsl.js +7 -0
  292. package/chunks/HeatmapDensity.glsl.js +4 -4
  293. package/chunks/ImageMaterial.glsl.js +1 -1
  294. package/chunks/Laserlines.glsl.js +5 -5
  295. package/chunks/LineMarker.glsl.js +1 -1
  296. package/chunks/MeasurementArrow.glsl.js +3 -3
  297. package/chunks/NativeLine.glsl.js +1 -1
  298. package/chunks/OITCompositing.glsl.js +13 -0
  299. package/chunks/OverlayCompositing.glsl.js +8 -0
  300. package/chunks/Path.glsl.js +3 -3
  301. package/chunks/Pattern.glsl.js +1 -1
  302. package/chunks/Precipitation.glsl.js +3 -3
  303. package/chunks/RealisticTree.glsl.js +2 -2
  304. package/chunks/RibbonLine.glsl.js +25 -25
  305. package/chunks/ShadedColorMaterial.glsl.js +1 -1
  306. package/chunks/ShadowHighlight.glsl.js +1 -1
  307. package/chunks/SlicePlaneMaterial.glsl.js +2 -2
  308. package/chunks/Terrain.glsl.js +4 -4
  309. package/chunks/WaterSurface.glsl.js +1 -1
  310. package/chunks/ar.js +1 -1
  311. package/chunks/bg_BG.js +1 -1
  312. package/chunks/boundedPlane.js +1 -1
  313. package/chunks/bs_BA.js +1 -1
  314. package/chunks/ca_ES.js +1 -1
  315. package/chunks/cameraUtilsPlanar.js +1 -1
  316. package/chunks/cameraUtilsSpherical.js +1 -1
  317. package/chunks/cs_CZ.js +1 -1
  318. package/chunks/da_DK.js +1 -1
  319. package/chunks/de_CH.js +1 -1
  320. package/chunks/de_DE.js +1 -1
  321. package/chunks/el_GR.js +1 -1
  322. package/chunks/en_CA.js +1 -1
  323. package/chunks/en_US.js +1 -1
  324. package/chunks/es_ES.js +1 -1
  325. package/chunks/et_EE.js +1 -1
  326. package/chunks/fi_FI.js +1 -1
  327. package/chunks/fr_FR.js +1 -1
  328. package/chunks/he_IL.js +1 -1
  329. package/chunks/hr_HR.js +1 -1
  330. package/chunks/hu_HU.js +1 -1
  331. package/chunks/id_ID.js +1 -1
  332. package/chunks/index.js +1 -1
  333. package/chunks/it_IT.js +1 -1
  334. package/chunks/ja_JP.js +1 -1
  335. package/chunks/ko_KR.js +1 -1
  336. package/chunks/lt_LT.js +1 -1
  337. package/chunks/lv_LV.js +1 -1
  338. package/chunks/mat3.js +1 -1
  339. package/chunks/nb_NO.js +1 -1
  340. package/chunks/nl_NL.js +1 -1
  341. package/chunks/pl_PL.js +1 -1
  342. package/chunks/pt_BR.js +1 -1
  343. package/chunks/pt_PT.js +1 -1
  344. package/chunks/quat.js +1 -1
  345. package/chunks/quat2.js +1 -1
  346. package/chunks/quatf64.js +1 -1
  347. package/chunks/ro_RO.js +1 -1
  348. package/chunks/ru_RU.js +1 -1
  349. package/chunks/sk_SK.js +1 -1
  350. package/chunks/sl_SL.js +1 -1
  351. package/chunks/sphere.js +1 -1
  352. package/chunks/sr_RS.js +1 -1
  353. package/chunks/sv_SE.js +1 -1
  354. package/chunks/th_TH.js +1 -1
  355. package/chunks/tr_TR.js +1 -1
  356. package/chunks/uk_UA.js +1 -1
  357. package/chunks/vec3.js +1 -1
  358. package/chunks/vec3f32.js +1 -1
  359. package/chunks/vec4f64.js +1 -1
  360. package/chunks/vi_VN.js +1 -1
  361. package/chunks/zh_Hans.js +1 -1
  362. package/chunks/zh_Hant.js +1 -1
  363. package/core/VectorStack.js +1 -1
  364. package/core/libs/gl-matrix-2/factories/quatf64.js +1 -1
  365. package/core/libs/gl-matrix-2/factories/vec3f32.js +1 -1
  366. package/core/libs/gl-matrix-2/factories/vec4f64.js +1 -1
  367. package/core/libs/gl-matrix-2/math/mat3.js +1 -1
  368. package/core/libs/gl-matrix-2/math/quat.js +1 -1
  369. package/core/libs/gl-matrix-2/math/vec3.js +1 -1
  370. package/core/perspectiveUtils.js +1 -1
  371. package/core/workers/workerFactory.js +1 -1
  372. package/geohash/GeohashTree.js +1 -1
  373. package/geometry/support/MeshTransform.js +1 -1
  374. package/geometry/support/axisAngle.js +1 -1
  375. package/geometry/support/axisAngleDegrees.js +1 -1
  376. package/geometry/support/lineSegment.js +1 -1
  377. package/geometry/support/meshUtils/exporters/gltf/gltf.js +1 -1
  378. package/geometry/support/meshUtils/exporters/gltf/node.js +1 -1
  379. package/geometry/support/meshUtils/georeference.js +1 -1
  380. package/geometry/support/meshUtils/loadGLTFMesh.js +1 -1
  381. package/geometry/support/meshUtils/projection.js +1 -1
  382. package/geometry/support/meshUtils/rotate.js +1 -1
  383. package/geometry/support/plane.js +1 -1
  384. package/interfaces.d.ts +70 -0
  385. package/layers/VoxelWasmPerSceneView.js +1 -1
  386. package/layers/buildingSublayers/BuildingComponentSublayer.js +1 -1
  387. package/layers/graphics/featureConversionUtils.js +1 -1
  388. package/layers/mixins/EditBusLayer.js +1 -1
  389. package/layers/mixins/OperationalLayer.js +1 -1
  390. package/layers/support/AggregateField.js +1 -1
  391. package/layers/support/ControlPointsGeoreference.js +1 -1
  392. package/layers/support/ExportImageServiceParameters.js +1 -1
  393. package/layers/support/OutStatistic.js +1 -1
  394. package/layers/support/VoxelVolume.js +1 -1
  395. package/layers/support/voxelPlaneUtils.js +1 -1
  396. package/package.json +1 -1
  397. package/rest/support/AggregateFeatureSet.js +5 -0
  398. package/support/revision.js +1 -1
  399. package/views/2d/ViewState.js +1 -1
  400. package/views/2d/engine/flow/FlowDisplayObject.js +1 -1
  401. package/views/2d/engine/imagery/RasterVFTile.js +1 -1
  402. package/views/2d/engine/vectorTiles/VectorTile.js +1 -1
  403. package/views/2d/engine/webgl/OverlayContainer.js +1 -1
  404. package/views/2d/engine/webgl/TiledDisplayObject.js +1 -1
  405. package/views/2d/engine/webgl/WGLTile.js +1 -1
  406. package/views/2d/engine/webgl/WorldExtentClipRenderer.js +1 -1
  407. package/views/2d/layers/FeatureLayerView2D.js +1 -1
  408. package/views/2d/layers/ImageryLayerView2D.js +1 -1
  409. package/views/2d/layers/LayerView2D.js +1 -1
  410. package/views/2d/layers/features/controllers/FeatureController2D.js +1 -1
  411. package/views/2d/layers/features/schemaUtils.js +1 -1
  412. package/views/2d/layers/features/support/BinStore.js +1 -1
  413. package/views/2d/layers/features/support/ClusterStore.js +1 -1
  414. package/views/2d/layers/graphics/GraphicBoundsRenderer.js +1 -1
  415. package/views/2d/layers/imagery/ImageryView2D.js +1 -1
  416. package/views/2d/layers/support/DebugOverlay.js +1 -1
  417. package/views/2d/layers/support/ExportStrategy.js +1 -1
  418. package/views/2d/layers/support/FeatureLayerProxy.js +1 -1
  419. package/views/2d/layers/support/clusterUtils.js +1 -1
  420. package/views/3d/analysis/AreaMeasurement/support/MeasurementData.js +1 -1
  421. package/views/3d/analysis/Dimensioning/DimensioningTool.js +1 -1
  422. package/views/3d/analysis/Dimensioning/LengthDimensionComputation.js +1 -1
  423. package/views/3d/analysis/Dimensioning/LengthDimensionSubTool.js +1 -1
  424. package/views/3d/analysis/Dimensioning/LengthDimensionVisualization.js +1 -1
  425. package/views/3d/analysis/Dimensioning/lengthDimensionUtils.js +1 -1
  426. package/views/3d/analysis/LineOfSight/LineOfSightController.js +1 -1
  427. package/views/3d/analysis/Slice/SliceTool.js +1 -1
  428. package/views/3d/analysis/Slice/sliceToolConfig.js +1 -1
  429. package/views/3d/analysis/Slice/sliceToolUtils.js +1 -1
  430. package/views/3d/camera/constraintUtils/distance.js +1 -1
  431. package/views/3d/camera/constraintUtils/tilt.js +1 -1
  432. package/views/3d/environment/CloudsComposition.js +1 -1
  433. package/views/3d/environment/CloudsCompositionParameters.js +1 -1
  434. package/views/3d/environment/CloudsGenerator.js +1 -1
  435. package/views/3d/environment/CloudsPresets.js +1 -1
  436. package/views/3d/environment/EnvironmentRenderer.js +1 -1
  437. package/views/3d/environment/Fog.js +1 -1
  438. package/views/3d/environment/PanoramicAtmosphere.js +1 -1
  439. package/views/3d/environment/Precipitation.js +1 -1
  440. package/views/3d/environment/SceneViewEnvironmentManager.js +1 -1
  441. package/views/3d/environment/SimpleAtmosphere.js +1 -1
  442. package/views/3d/environment/weatherUtils.js +1 -1
  443. package/views/3d/externalRenderers/ExternalRendererStore.js +1 -1
  444. package/views/3d/externalRenderers/RenderContext.js +1 -1
  445. package/views/3d/glTF/internal/Resource.js +1 -1
  446. package/views/3d/interactive/Manipulator3D.js +1 -1
  447. package/views/3d/interactive/editingTools/reshapeGraphic/edgeOffsetUtils.js +1 -1
  448. package/views/3d/interactive/editingTools/settings.js +1 -1
  449. package/views/3d/interactive/editingTools/transformGraphic/ExtentTransformTool.js +1 -1
  450. package/views/3d/interactive/editingTools/transformGraphic/GraphicScaleRotateTransform.js +1 -1
  451. package/views/3d/interactive/manipulatorUtils.js +1 -1
  452. package/views/3d/interactive/visualElements/ExtendedLineVisualElement.js +1 -1
  453. package/views/3d/interactive/visualElements/LineVisualElement.js +1 -1
  454. package/views/3d/interactive/visualElements/ParallelLineVisualElement.js +1 -1
  455. package/views/3d/layers/BuildingComponentSublayerView3D.js +1 -1
  456. package/views/3d/layers/I3SMeshView3D.js +1 -1
  457. package/views/3d/layers/ImageryLayerView3D.js +1 -1
  458. package/views/3d/layers/PointCloudLayerView3D.js +1 -1
  459. package/views/3d/layers/PointCloudWorker.js +1 -1
  460. package/views/3d/layers/SceneLayerGraphicsView3D.js +1 -1
  461. package/views/3d/layers/graphics/Deconflictor.js +1 -1
  462. package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
  463. package/views/3d/layers/graphics/Graphics3DExtrudeSymbolLayer.js +1 -1
  464. package/views/3d/layers/graphics/Graphics3DFeatureProcessor.js +1 -1
  465. package/views/3d/layers/graphics/Graphics3DLodInstanceGraphicLayer.js +1 -1
  466. package/views/3d/layers/graphics/Graphics3DObject3DGraphicLayer.js +1 -1
  467. package/views/3d/layers/graphics/Graphics3DObjectSymbolLayer.js +1 -1
  468. package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
  469. package/views/3d/layers/graphics/elevationAlignPointsInFeatures.js +1 -1
  470. package/views/3d/layers/graphics/objectResourceUtils.js +1 -1
  471. package/views/3d/layers/i3s/I3SElevationProvider.js +1 -1
  472. package/views/3d/layers/i3s/I3SIndex.js +1 -1
  473. package/views/3d/layers/i3s/I3SUtil.js +1 -1
  474. package/views/3d/layers/i3s/I3SViewportQueries.js +1 -1
  475. package/views/3d/layers/i3s/PointRenderer.js +1 -1
  476. package/views/3d/layers/support/FeatureTileVisibility3D.js +1 -1
  477. package/views/3d/layers/support/I3STreeDebugger.js +1 -1
  478. package/views/3d/layers/support/edgeUtils.js +1 -1
  479. package/views/3d/layers/support/uvUtils.js +1 -1
  480. package/views/3d/state/Frustum.js +1 -1
  481. package/views/3d/state/controllers/GamepadKeyboardController.js +1 -1
  482. package/views/3d/state/controllers/RotateController.js +1 -1
  483. package/views/3d/state/controllers/global/PinchAndPanController.js +1 -1
  484. package/views/3d/state/controllers/local/PinchAndPanController.js +1 -1
  485. package/views/3d/state/controllers/local/ZoomController.js +1 -1
  486. package/views/3d/state/controllers/momentum/ZoomPlanarMomentumController.js +1 -1
  487. package/views/3d/state/utils/navigationUtils.js +1 -1
  488. package/views/3d/support/FrustumExtentIntersection.js +1 -1
  489. package/views/3d/support/orientedBoundingBox.js +1 -1
  490. package/views/3d/support/pointsOfInterest/CameraOnSurface.js +1 -1
  491. package/views/3d/support/pointsOfInterest/CenterOnSurface.js +1 -1
  492. package/views/3d/support/pointsOfInterest/PointsOfInterest.js +1 -1
  493. package/views/3d/support/sunUtils.js +1 -1
  494. package/views/3d/terrain/OverlayManager.js +1 -1
  495. package/views/3d/terrain/OverlayRenderer.js +1 -1
  496. package/views/3d/terrain/PatchRenderData.js +1 -1
  497. package/views/3d/terrain/TerrainRenderer.js +1 -1
  498. package/views/3d/terrain/TerrainSurface.js +1 -1
  499. package/views/3d/terrain/Tile.js +1 -1
  500. package/views/3d/webgl-engine/collections/Component/ComponentObjectCollection.js +1 -1
  501. package/views/3d/webgl-engine/collections/Component/DepthRange.js +1 -1
  502. package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
  503. package/views/3d/webgl-engine/core/renderPasses/RenderPassManager.js +1 -1
  504. package/views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js +1 -1
  505. package/views/3d/webgl-engine/core/shaderLibrary/attributes/InstancedDoublePrecision.glsl.js +1 -1
  506. package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexPosition.glsl.js +2 -2
  507. package/views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js +6 -6
  508. package/views/3d/webgl-engine/core/shaderLibrary/hud/HUD.glsl.js +2 -2
  509. package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js +13 -13
  510. package/views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js +1 -1
  511. package/views/3d/webgl-engine/core/shaderLibrary/util/CloudsParallaxShading.glsl.js +9 -9
  512. package/views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js +1 -1
  513. package/views/3d/webgl-engine/core/shaderTechnique/ShaderTechniqueRepository.js +1 -1
  514. package/views/3d/webgl-engine/core/util/TwoVectorPosition.js +1 -1
  515. package/views/3d/webgl-engine/lib/AnimationTimer.js +1 -1
  516. package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
  517. package/views/3d/webgl-engine/lib/Camera.js +1 -1
  518. package/views/3d/webgl-engine/lib/CompositingHelper.js +1 -1
  519. package/views/3d/webgl-engine/lib/GeometryRecord.js +1 -1
  520. package/views/3d/webgl-engine/lib/GeometryUtil.js +1 -1
  521. package/views/3d/webgl-engine/lib/Highlight.js +1 -1
  522. package/views/3d/webgl-engine/lib/Intersector.js +1 -1
  523. package/views/3d/webgl-engine/lib/Object3D.js +1 -1
  524. package/views/3d/webgl-engine/lib/ObjectAndLayerIdRenderHelper.js +1 -1
  525. package/views/3d/webgl-engine/lib/OffscreenRendering.js +1 -1
  526. package/views/3d/webgl-engine/lib/RenderGeometry.js +1 -1
  527. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  528. package/views/3d/webgl-engine/lib/ShadowMap.js +1 -1
  529. package/views/3d/webgl-engine/lib/Update.js +5 -0
  530. package/views/3d/webgl-engine/lib/depthRangeUtils.js +1 -1
  531. package/views/3d/webgl-engine/lib/edgeRendering/EdgeRenderer.js +1 -1
  532. package/views/3d/webgl-engine/lib/edgeRendering/EdgeView.js +1 -1
  533. package/views/3d/webgl-engine/lib/edgeRendering/edgePreprocessing.js +1 -1
  534. package/views/3d/webgl-engine/lib/lodRendering/InstanceData.js +1 -1
  535. package/views/3d/webgl-engine/lib/lodRendering/InstanceOctree.js +1 -1
  536. package/views/3d/webgl-engine/lib/lodRendering/LodRenderer.js +1 -1
  537. package/views/3d/webgl-engine/lib/pathGeometryUtils.js +1 -1
  538. package/views/3d/webgl-engine/lib/verticalOffsetUtils.js +1 -1
  539. package/views/3d/webgl-engine/lighting/SceneLighting.js +1 -1
  540. package/views/3d/webgl-engine/lighting/SphericalHarmonics.js +1 -1
  541. package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
  542. package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
  543. package/views/3d/webgl-engine/materials/MeasurementArrowMaterial.js +1 -1
  544. package/views/3d/webgl-engine/materials/NativeLineMaterial.js +1 -1
  545. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  546. package/views/3d/webgl-engine/materials/WaterGLMaterial.js +1 -1
  547. package/views/3d/webgl-engine/parts/RenderView.js +1 -1
  548. package/views/3d/webgl-engine/parts/ScreenshotManager.js +1 -1
  549. package/views/3d/webgl-engine/shaders/Compositing.glsl.js +1 -1
  550. package/views/3d/webgl-engine/shaders/CompositingTechnique.js +1 -1
  551. package/views/3d/webgl-engine/shaders/CompositingTechniqueConfiguration.js +1 -1
  552. package/views/3d/webgl-engine/shaders/HUDCompositing.glsl.js +5 -0
  553. package/views/3d/webgl-engine/shaders/HUDCompositingTechnique.js +5 -0
  554. package/views/3d/webgl-engine/shaders/OITCompositing.glsl.js +5 -0
  555. package/views/3d/webgl-engine/shaders/OITCompositingTechnique.js +5 -0
  556. package/views/3d/webgl-engine/shaders/OverlayCompositing.glsl.js +5 -0
  557. package/views/3d/webgl-engine/shaders/OverlayCompositingTechnique.js +5 -0
  558. package/views/3d/webgl-engine/shaders/TerrainTechniqueConfiguration.js +1 -1
  559. package/views/SceneView.js +1 -1
  560. package/views/draw/support/surfaceCoordinateSystems.js +1 -1
  561. package/views/interactive/coordinateHelper.js +1 -1
  562. package/views/interactive/editGeometry/operations/OffsetEdgeVertex.js +1 -1
  563. package/views/interactive/editGeometry/support/editPlaneUtils.js +1 -1
  564. package/views/interactive/snapping/LineSnapper.js +1 -1
  565. package/views/interactive/snapping/ParallelLineSnapper.js +1 -1
  566. package/views/interactive/snapping/RightAngleSnapper.js +1 -1
  567. package/views/interactive/snapping/RightAngleTriangleSnapper.js +1 -1
  568. package/views/interactive/snapping/SnappingAlgorithm.js +1 -1
  569. package/views/interactive/snapping/SnappingManager.js +1 -1
  570. package/views/interactive/snapping/featureSources/FeatureCollectionSnappingSource.js +1 -1
  571. package/views/interactive/snapping/featureSources/FeatureServiceSnappingSource.js +1 -1
  572. package/views/interactive/snapping/featureSources/GraphicsSnappingSource.js +1 -1
  573. package/views/interactive/snapping/featureSources/SnappingCandidateElevationAligner.js +1 -1
  574. package/views/interactive/snapping/featureSources/SnappingResultElevationFilter.js +1 -1
  575. package/views/interactive/snapping/featureSources/featureServiceSource/FeatureServiceSnappingSourceWorker.js +1 -1
  576. package/views/interactive/snapping/featureSources/featureServiceSource/FeatureServiceSnappingSourceWorkerHandle.js +1 -1
  577. package/views/interactive/snapping/featureSources/sceneLayerSource/SceneLayerSnappingSourceWorker.js +1 -1
  578. package/views/interactive/snapping/featureSources/snappingResultElevationUtils.js +5 -0
  579. package/views/interactive/snapping/snappingUtils.js +1 -1
  580. package/views/layers/FeatureLayerView.js +1 -1
  581. package/views/navigation/PanSphericalMomentumEstimator.js +1 -1
  582. package/views/support/Scheduler.js +1 -1
  583. package/views/support/euclideanAreaMeasurementUtils.js +1 -1
  584. package/views/support/geometry3dUtils.js +1 -1
  585. package/widgets/Directions/support/resources.js +1 -1
  586. package/widgets/Directions.js +1 -1
  587. package/widgets/ElevationProfile/support/ProfileLines3D.js +1 -1
  588. package/widgets/ElevationProfile/support/constants.js +1 -1
  589. package/widgets/Feature/FeatureRelationship/FeatureRelationshipViewModel.js +1 -1
  590. package/widgets/Feature/FeatureRelationship.js +1 -1
  591. package/widgets/Legend/LegendViewModel.js +1 -1
  592. package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
  593. package/widgets/Weather/LabeledSlider.js +1 -1
  594. package/widgets/Weather.js +1 -1
  595. package/assets/esri/core/workers/chunks/0059699bf824f851d51c.js +0 -1
  596. package/assets/esri/core/workers/chunks/01a6005569d0820992a0.js +0 -1
  597. package/assets/esri/core/workers/chunks/2eb547a0be305f2c816c.js +0 -1
  598. package/assets/esri/core/workers/chunks/36dd5654df5c7f00406d.js +0 -1
  599. package/assets/esri/core/workers/chunks/36e0a0d5f86b2b4b88f9.js +0 -1
  600. package/assets/esri/core/workers/chunks/8b8a813f5e6d6551a816.js +0 -1
  601. package/assets/esri/core/workers/chunks/bf84189bd9bf3de81df9.js +0 -1
  602. package/assets/esri/core/workers/chunks/cd7f5c3d328166f28f59.js +0 -1
  603. package/assets/esri/core/workers/chunks/de128d8a643b4297940b.js +0 -1
  604. package/assets/esri/core/workers/chunks/e208d9c34f5db4481441.js +0 -1
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.25/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../../chunks/tslib.es6.js";import{EsriPromise as t}from"../../../../core/Promise.js";import{createResolver as r,ignoreAbortErrors as s,throwIfNotAbortError as o}from"../../../../core/promiseUtils.js";import{open as i}from"../../../../core/workers/workers.js";import{property as n}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as a}from"../../../../core/accessorSupport/decorators/subclass.js";function c(e){return Array.isArray(e)}let l=class extends t{constructor(e){super(e),this._startupResolver=r(),this.isReady=!1}initialize(){this._controller=new AbortController,this.addResolvingPromise(this._startWorker(this._controller.signal))}destroy(){this._controller.abort(),this._connection&&this._connection.close()}set tileRenderer(e){this.client.tileRenderer=e}get closed(){return this._connection.closed}async startup(e,t,r,s){await this.when();const o=this._controller.signal,i=c(r.source)?{transferList:r.source,signal:o}:void 0,n={service:r,config:t,tileInfo:e.tileInfo.toJSON(),tiles:s};await this._connection.invoke("startup",n,i),this._startupResolver.resolve(),this._set("isReady",!0)}async updateTiles(e){return await this._startupResolver.promise,s(this._connection.invoke("updateTiles",e))}async update(e){const t={config:e};return await this._startupResolver.promise,this._connection.invoke("update",t)}async applyUpdate(e){return await this._startupResolver.promise,this._connection.invoke("applyUpdate",e)}async setHighlight(e){return await this._startupResolver.promise,s(this._connection.invoke("controller.setHighlight",e))}async stop(){if(await this._startupResolver.promise,!this.closed)return s(this._connection.invoke("stop"))}async refresh(e){return await this._startupResolver.promise,s(this._connection.invoke("controller.refresh",e))}async querySummaryStatistics(e,t,r){return await this._startupResolver.promise,this._connection.invoke("controller.querySummaryStatistics",{query:e.toJSON(),params:t},r)}async queryUniqueValues(e,t,r){return await this._startupResolver.promise,this._connection.invoke("controller.queryUniqueValues",{query:e.toJSON(),params:t},r)}async queryClassBreaks(e,t,r){return await this._startupResolver.promise,this._connection.invoke("controller.queryClassBreaks",{query:e.toJSON(),params:t},r)}async queryHistogram(e,t,r){return await this._startupResolver.promise,this._connection.invoke("controller.queryHistogram",{query:e.toJSON(),params:t},r)}async queryFeatures(e,t){return await this._startupResolver.promise,this._connection.invoke("controller.queryFeatures",e.toJSON(),t)}async queryVisibleFeatures(e,t){return await this._startupResolver.promise,this._connection.invoke("controller.queryVisibleFeatures",e.toJSON(),t)}async queryObjectIds(e,t){return await this._startupResolver.promise,this._connection.invoke("controller.queryObjectIds",e.toJSON(),t)}async queryFeatureCount(e,t){return await this._startupResolver.promise,this._connection.invoke("controller.queryFeatureCount",e.toJSON(),t)}async queryExtent(e,t){return this._connection.invoke("controller.queryExtent",e.toJSON(),t)}async queryLatestObservations(e,t){return await this._startupResolver.promise,this._connection.invoke("controller.queryLatestObservations",e.toJSON(),t)}async queryStatistics(e){return await this._startupResolver.promise,this._connection.invoke("controller.queryStatistics",e)}async getObjectId(e){return await this._startupResolver.promise,this._connection.invoke("controller.getObjectId",e)}async getDisplayId(e){return await this._startupResolver.promise,this._connection.invoke("controller.getDisplayId",e)}async getFeatures(e){return await this._startupResolver.promise,this._connection.invoke("controller.getFeatures",e)}async getAggregates(){return await this._startupResolver.promise,this._connection.invoke("controller.getAggregates")}async getAggregateValueRanges(){return await this._startupResolver.promise,this._connection.invoke("controller.getAggregateValueRanges")}async mapValidDisplayIds(e){return await this._startupResolver.promise,this._connection.invoke("controller.mapValidDisplayIds",e)}async onEdits(e){return await this._startupResolver.promise,s(this._connection.invoke("controller.onEdits",e))}async enableEvent(e,t){return await this._startupResolver.promise,s(this._connection.invoke("controller.enableEvent",{name:e,value:t}))}pauseStream(){return s(this._connection.invoke("controller.pauseStream"))}resumeStream(){return s(this._connection.invoke("controller.resumeStream"))}async _startWorker(e){try{this._connection=await i("Pipeline",{client:this.client,strategy:"dedicated",signal:e})}catch(t){o(t)}}};e([n()],l.prototype,"isReady",void 0),e([n({constructOnly:!0})],l.prototype,"client",void 0),e([n()],l.prototype,"tileRenderer",null),l=e([a("esri.views.2d.layers.support.FeatureLayerProxy")],l);const u=l;export{u as default};
5
+ import{_ as e}from"../../../../chunks/tslib.es6.js";import{EsriPromise as t}from"../../../../core/Promise.js";import{createResolver as r,ignoreAbortErrors as s,throwIfNotAbortError as o}from"../../../../core/promiseUtils.js";import{open as i}from"../../../../core/workers/workers.js";import{property as n}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as a}from"../../../../core/accessorSupport/decorators/subclass.js";function c(e){return Array.isArray(e)}let l=class extends t{constructor(e){super(e),this._startupResolver=r(),this.isReady=!1}initialize(){this._controller=new AbortController,this.addResolvingPromise(this._startWorker(this._controller.signal))}destroy(){this._controller.abort(),this._connection&&this._connection.close()}set tileRenderer(e){this.client.tileRenderer=e}get closed(){return this._connection.closed}async startup(e,t,r,s){await this.when();const o=this._controller.signal,i=c(r.source)?{transferList:r.source,signal:o}:void 0,n={service:r,config:t,tileInfo:e.tileInfo.toJSON(),tiles:s};await this._connection.invoke("startup",n,i),this._startupResolver.resolve(),this._set("isReady",!0)}async updateTiles(e){return await this._startupResolver.promise,s(this._connection.invoke("updateTiles",e))}async update(e){const t={config:e};return await this._startupResolver.promise,this._connection.invoke("update",t)}async applyUpdate(e){return await this._startupResolver.promise,this._connection.invoke("applyUpdate",e)}async setHighlight(e){return await this._startupResolver.promise,s(this._connection.invoke("controller.setHighlight",e))}async stop(){if(await this._startupResolver.promise,!this.closed)return s(this._connection.invoke("stop"))}async refresh(e){return await this._startupResolver.promise,s(this._connection.invoke("controller.refresh",e))}async querySummaryStatistics(e,t,r){return await this._startupResolver.promise,this._connection.invoke("controller.querySummaryStatistics",{query:e.toJSON(),params:t},r)}async queryUniqueValues(e,t,r){return await this._startupResolver.promise,this._connection.invoke("controller.queryUniqueValues",{query:e.toJSON(),params:t},r)}async queryClassBreaks(e,t,r){return await this._startupResolver.promise,this._connection.invoke("controller.queryClassBreaks",{query:e.toJSON(),params:t},r)}async queryHistogram(e,t,r){return await this._startupResolver.promise,this._connection.invoke("controller.queryHistogram",{query:e.toJSON(),params:t},r)}async queryFeatures(e,t){return await this._startupResolver.promise,this._connection.invoke("controller.queryFeatures",e.toJSON(),t)}async queryVisibleFeatures(e,t){return await this._startupResolver.promise,this._connection.invoke("controller.queryVisibleFeatures",e.toJSON(),t)}async queryObjectIds(e,t){return await this._startupResolver.promise,this._connection.invoke("controller.queryObjectIds",e.toJSON(),t)}async queryFeatureCount(e,t){return await this._startupResolver.promise,this._connection.invoke("controller.queryFeatureCount",e.toJSON(),t)}async queryExtent(e,t){return this._connection.invoke("controller.queryExtent",e.toJSON(),t)}async queryLatestObservations(e,t){return await this._startupResolver.promise,this._connection.invoke("controller.queryLatestObservations",e.toJSON(),t)}async queryStatistics(e){return await this._startupResolver.promise,this._connection.invoke("controller.queryStatistics",e)}async queryAggregates(e,t){return await this._startupResolver.promise,this._connection.invoke("controller.queryAggregates",e.toJSON(),t)}async queryAggregateCount(e,t){return await this._startupResolver.promise,this._connection.invoke("controller.queryAggregateCount",e.toJSON(),t)}async queryAggregateIds(e,t){return await this._startupResolver.promise,this._connection.invoke("controller.queryAggregateIds",e.toJSON(),t)}async getObjectId(e){return await this._startupResolver.promise,this._connection.invoke("controller.getObjectId",e)}async getDisplayId(e){return await this._startupResolver.promise,this._connection.invoke("controller.getDisplayId",e)}async getFeatures(e){return await this._startupResolver.promise,this._connection.invoke("controller.getFeatures",e)}async getAggregates(){return await this._startupResolver.promise,this._connection.invoke("controller.getAggregates")}async getAggregateValueRanges(){return await this._startupResolver.promise,this._connection.invoke("controller.getAggregateValueRanges")}async mapValidDisplayIds(e){return await this._startupResolver.promise,this._connection.invoke("controller.mapValidDisplayIds",e)}async onEdits(e){return await this._startupResolver.promise,s(this._connection.invoke("controller.onEdits",e))}async enableEvent(e,t){return await this._startupResolver.promise,s(this._connection.invoke("controller.enableEvent",{name:e,value:t}))}pauseStream(){return s(this._connection.invoke("controller.pauseStream"))}resumeStream(){return s(this._connection.invoke("controller.resumeStream"))}async _startWorker(e){try{this._connection=await i("Pipeline",{client:this.client,strategy:"dedicated",signal:e})}catch(t){o(t)}}};e([n()],l.prototype,"isReady",void 0),e([n({constructOnly:!0})],l.prototype,"client",void 0),e([n()],l.prototype,"tileRenderer",null),l=e([a("esri.views.2d.layers.support.FeatureLayerProxy")],l);const u=l;export{u as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.25/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../../core/Error.js";import has from"../../../../core/has.js";import i from"../../../../core/Logger.js";import{isNone as t}from"../../../../core/maybe.js";import{createMD5Hash as r}from"../../../../core/MD5.js";import s from"../../../../renderers/visualVariables/SizeVariable.js";import a from"../../../../renderers/visualVariables/support/SizeStop.js";import{LevelDependentSizeVariable as n}from"../../engine/LevelDependentSizeVariable.js";const l=i.getLogger("esri.views.2d.layers.support.clusterUtils");has.add("esri-cluster-arcade-enabled",!0);const o=has("esri-cluster-arcade-enabled"),u=(e,i,r,s)=>{const a=i.clone();if(!f(a))return a;if(r.fields)for(const t of r.fields)v(e,t);if("visualVariables"in a){const i=(a.visualVariables||[]).filter((e=>"$view.scale"!==e.valueExpression)),n=c(i);i.forEach((i=>{"rotation"===i.type?i.field?i.field=S(e,i.field,"avg_angle"):i.valueExpression&&(i.field=x(e,i.valueExpression,"avg_angle"),i.valueExpression=null):i.normalizationField?(i.field=S(e,i.field,"norm",i.normalizationField),i.normalizationField=null):i.field?i.field=S(e,i.field,"avg"):(i.field=x(e,i.valueExpression,"avg"),i.valueExpression=null)})),t(n)&&!d(i)&&(i.push(p(r,s)),a.dynamicClusterSize=!0),a.visualVariables=i}switch(a.type){case"simple":break;case"unique-value":a.field?a.field=S(e,a.field,"mode"):a.valueExpression&&(a.field=x(e,a.valueExpression,"mode"),a.valueExpression=null);break;case"class-breaks":a.normalizationField?(a.field=S(e,a.field,"norm",a.normalizationField),a.normalizationField=null):a.field?a.field=S(e,a.field,"avg"):(a.field=x(e,a.valueExpression,"avg"),a.valueExpression=null)}return a},c=e=>{for(const i of e)if("size"===i.type)return i;return null},d=e=>{for(const i of e)if("cluster_count"===i.field)return!0;return!1},p=(e,i)=>{const r=[new a({value:0,size:0}),new a({value:1})];if(t(i))return new s({field:"cluster_count",stops:[...r,new a({value:2,size:0})]});const l=Object.keys(i).reduce(((t,s)=>({...t,[s]:[...r,new a({value:Math.max(2,i[s].minValue),size:e.clusterMinSize}),new a({value:Math.max(3,i[s].maxValue),size:e.clusterMaxSize})]})),{});return new n({field:"cluster_count",levels:l})},f=i=>{const t=t=>l.error(new e("Unsupported-renderer",t,{renderer:i}));if("unique-value"===i.type){if(i.field2||i.field3)return t("FeatureReductionCluster does not support multi-field UniqueValueRenderers"),!1}else if("class-breaks"===i.type){if(i.normalizationField){const e=i.normalizationType;if("field"!==e)return t(`FeatureReductionCluster does not support a normalizationType of ${e}`),!1}}else if("simple"!==i.type)return t(`FeatureReductionCluster does not support renderers of type ${i.type}`),!1;if(!o){if("valueExpression"in i&&i.valueExpression)return t("FeatureReductionCluster does not currently support renderer.valueExpression. Support will be added in a future release"),!1;if(("visualVariables"in i&&i.visualVariables||[]).some((e=>!(!("valueExpression"in e)||!e.valueExpression))))return t("FeatureReductionCluster does not currently support visualVariables with a valueExpression. Support will be added in a future release"),!1}return!0};function m(e,i,t){switch(e){case"avg":case"avg_angle":return`cluster_avg_${i}`;case"mode":return`cluster_type_${i}`;case"norm":{const e=t,s="field",a=i.toLowerCase()+",norm:"+s+","+e.toLowerCase();return"cluster_avg_"+r(a)}}}function v(i,t){const{name:s,outStatistic:a}=t,{onStatisticField:n,onStatisticValueExpression:o,statisticType:u}=a;if(o){const e=r(o.toLowerCase());i.push({name:s,outStatistic:{onStatisticField:e,onStatisticValueExpression:o,statisticType:u}})}else n?i.push({name:s,outStatistic:{onStatisticField:n,statisticType:u}}):l.error(new e("mapview-unsupported-field","Unable to handle field",{field:t}))}function x(e,i,t){const s=r(i),a="mode"===t?`cluster_type_${s}`:`cluster_avg_${s}`;return e.some((e=>e.name===a))||e.push({name:a,outStatistic:{onStatisticField:s,onStatisticValueExpression:i,statisticType:t}}),a}function S(e,i,t,r){if("cluster_count"===i||e.some((e=>e.name===i)))return i;const s=m(t,i,r);return e.some((e=>e.name===s))||("norm"===t?e.push({name:s,outStatistic:{onStatisticField:i,onStatisticNormalizationField:r,statisticType:t}}):e.push({name:s,outStatistic:{onStatisticField:i,statisticType:t}})),s}export{v as convertAggregateFieldFromPublic,p as createClusterCountSizeVariable,u as createClusterRenderer,c as findSizeVV,d as hasClusterCountVV,f as isClusterCompatibleRenderer};
5
+ import e from"../../../../core/Error.js";import has from"../../../../core/has.js";import r from"../../../../core/Logger.js";import{isNone as i}from"../../../../core/maybe.js";import{createMD5Hash as t}from"../../../../core/MD5.js";import s from"../../../../layers/support/AggregateField.js";import l from"../../../../layers/support/OutStatistic.js";import a from"../../../../renderers/visualVariables/SizeVariable.js";import n from"../../../../renderers/visualVariables/support/SizeStop.js";import{LevelDependentSizeVariable as o}from"../../engine/LevelDependentSizeVariable.js";const u=r.getLogger("esri.views.2d.layers.support.clusterUtils");has.add("esri-cluster-arcade-enabled",!0);const d=has("esri-cluster-arcade-enabled"),p=(e,r,t,s)=>{const l=r.clone();if(!v(l))return l;if(e.push(...t.fields??[]),"visualVariables"in l){const r=(l.visualVariables||[]).filter((e=>"$view.scale"!==e.valueExpression)),a=c(r);r.forEach((r=>{"rotation"===r.type?r.field?r.field=y(e,r.field,"avg_angle","double"):r.valueExpression&&(r.field=b(e,r.valueExpression,"avg_angle","double"),r.valueExpression=null):r.normalizationField?(r.field=y(e,r.field,"avg_norm","double",r.normalizationField),r.normalizationField=null):r.field?r.field=y(e,r.field,"avg","double"):(r.field=b(e,r.valueExpression,"avg","double"),r.valueExpression=null)})),i(a)&&!f(r)&&(r.push(m(t,s)),l.dynamicClusterSize=!0),l.visualVariables=r}switch(l.type){case"simple":break;case"unique-value":l.field?l.field=y(e,l.field,"mode","string"):l.valueExpression&&(l.field=b(e,l.valueExpression,"mode","string"),l.valueExpression=null);break;case"class-breaks":l.normalizationField?(l.field=y(e,l.field,"avg_norm","double",l.normalizationField),l.normalizationField=null):l.field?l.field=y(e,l.field,"avg","double"):(l.field=b(e,l.valueExpression,"avg","double"),l.valueExpression=null)}return l},c=e=>{for(const r of e)if("size"===r.type)return r;return null},f=e=>{for(const r of e)if("cluster_count"===r.field)return!0;return!1},m=(e,r)=>{const t=[new n({value:0,size:0}),new n({value:1})];if(i(r))return new a({field:"cluster_count",stops:[...t,new n({value:2,size:0})]});const s=Object.keys(r).reduce(((i,s)=>({...i,[s]:[...t,new n({value:Math.max(2,r[s].minValue),size:e.clusterMinSize}),new n({value:Math.max(3,r[s].maxValue),size:e.clusterMaxSize})]})),{});return new o({field:"cluster_count",levels:s})},v=r=>{const i=i=>u.error(new e("Unsupported-renderer",i,{renderer:r}));if("unique-value"===r.type){if(r.field2||r.field3)return i("FeatureReductionCluster does not support multi-field UniqueValueRenderers"),!1}else if("class-breaks"===r.type){if(r.normalizationField){const e=r.normalizationType;if("field"!==e)return i(`FeatureReductionCluster does not support a normalizationType of ${e}`),!1}}else if("simple"!==r.type)return i(`FeatureReductionCluster does not support renderers of type ${r.type}`),!1;if(!d){if("valueExpression"in r&&r.valueExpression)return i("FeatureReductionCluster does not currently support renderer.valueExpression. Support will be added in a future release"),!1;if(("visualVariables"in r&&r.visualVariables||[]).some((e=>!(!("valueExpression"in e)||!e.valueExpression))))return i("FeatureReductionCluster does not currently support visualVariables with a valueExpression. Support will be added in a future release"),!1}return!0};function g(e,r,i){switch(e){case"avg":case"avg_angle":return`cluster_avg_${r}`;case"mode":return`cluster_type_${r}`;case"avg_norm":{const e=i,s="field",l=r.toLowerCase()+",norm:"+s+","+e.toLowerCase();return"cluster_avg_"+t(l)}}}function b(e,r,i,a){const n=t(r),o="mode"===i?`cluster_type_${n}`:`cluster_avg_${n}`;return e.some((e=>e.name===o))||e.push(new s({name:o,type:a,outStatistic:new l({onStatisticField:n,onStatisticValueExpression:r,statisticType:i})})),o}function y(e,r,i,t,a){if("cluster_count"===r||e.some((e=>e.name===r)))return r;const n=g(i,r,a);return e.some((e=>e.name===n))||("avg_norm"===i?e.push(new s({name:n,type:t,outStatistic:new l({onStatisticField:r,onStatisticValueExpression:`$feature.${r} / $feature.${a}`,statisticType:"avg"})})):e.push(new s({name:n,type:t,outStatistic:new l({onStatisticField:r,statisticType:i})}))),n}export{m as createClusterCountSizeVariable,p as createClusterRenderer,c as findSizeVV,f as hasClusterCountVV,v as isClusterCompatibleRenderer};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.25/esri/copyright.txt for details.
4
4
  */
5
- import{deg2rad as e}from"../../../../../core/mathUtils.js";import{isSome as t,unwrapOr as s}from"../../../../../core/maybe.js";import{createLength as i,createArea as o}from"../../../../../core/quantityUtils.js";import{s as r,d as n}from"../../../../../chunks/vec2.js";import{a as h}from"../../../../../chunks/vec2f64.js";import{n as a,i as d,c as g,f as l,o as p,b as c,e as m,g as u,a as _}from"../../../../../chunks/vec3.js";import{c as C}from"../../../../../chunks/vec3f64.js";import{c as f}from"../../../../../chunks/vec4f64.js";import{canProjectWithoutEngine as S,canProjectToWGS84ComparableLonLat as L,projectPointToVector as P,projectPointToWGS84ComparableLonLat as R,projectDirection as j,projectVectorToVector as M}from"../../../../../geometry/projection.js";import{getSphericalPCPF as A,getReferenceEllipsoid as W}from"../../../../../geometry/projectionEllipsoid.js";import v from"../../../../../geometry/SpatialReference.js";import{Axis as w}from"../../../../../geometry/support/Axis.js";import{segmentIntersects as z}from"../../../../../geometry/support/intersectsBase.js";import{areaPoints2d as I}from"../../../../../geometry/support/triangle.js";import{MeasurementMode as U}from"../../interfaces.js";import{segmentLengthGeodesicVector as G,bestFitPlane as V,fitHemisphere as y,triangleAreaGeodesic as T,planePointDistance as F,boundingSphere as b,segmentLengthGeodesic as E,segmentLengthEuclidean as N}from"../../support/measurementUtils.js";import{midpoint as x}from"../../support/viewUtils.js";import{getElevationAtPoint as k}from"../../../support/ElevationProvider.js";import{makeOrthonormal as q,tangentFrame as D}from"../../../support/mathUtils.js";import{compactIndices as B}from"../../../webgl-engine/lib/Indices.js";import{triangulate as H}from"../../../../support/euclideanAreaMeasurementUtils.js";class X{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.areaCentroidWorldCoords=C(),this.areaCentroidRenderCoords=C(),this.geodesicAreaCentroidRenderCoords=C(),this._length=0,this._centroidRenderCoords=C(),this._planeWorldCoords=f(),this._worldUp=C(),this._worldTangent=C(),this._frame=[C(),C(),C()],this._pathVersion=-1,this._validMeasurement=!1,this._hasCursorPoint=!1,this._mode=null,this._tempU=C(),this._tempV=C(),this._tempVec3=C(),this._tempSphere={center:C(),radius:0},this._sceneView=e,this.unitNormalizer=t}update(e,s,o,r,n,h,d){const g=this.unitNormalizer,l=this._sceneView.renderSpatialReference,p=this.unitNormalizer.spatialReference,c=t(s);if(this._pathVersion===e.version&&this._validMeasurement===r&&!d&&this._hasCursorPoint===c&&this._mode===h){return!e.isValidPolygon&&(this._updateCursorSegmentLength(e,s),!0)}this._pathVersion=e.version,this._validMeasurement=r,this._hasCursorPoint=c;const m=e.numVertices;this._resize(m);const u=A(o.spatialReference),_=S(o.spatialReference,u)&&L(o.spatialReference),{positionsGeographic:C,positionsWorldCoords:f,positionsRenderCoords:j,positionsSpherical:M}=this;e.forEachVertexPosition(((e,t)=>{Z(o.elevationProvider,e),P(e,f[t],p),P(e,j[t],l),_&&(R(e,C[t]),P(e,M[t],u),a(M[t],M[t]))}));const W=this._updatePathLengths(r);if(this.pathLength=this._length>1?i(g.normalizeDistance(W),"meters"):null,_){const e=this._updateGeodesicPathLengths(r,p);this.geodesicPathLength=this._length>1?i(e,"meters"):null}else this.geodesicPathLength=null;return this._updateCursorSegmentLength(e,s),this._updateMode(e,h),r?(this._updateArea(o,g,l,p,n),_&&this._updateGeodesicArea(o),!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(C()),this.positionsRenderCoords.push(C()),this.positionsProjectedWorldCoords.push(h()),this.positionsFittedRenderCoords.push(C()),this.positionsGeographic.push(C()),this.positionsSpherical.push(C()),this.positionsStereographic.push(h()),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]=d(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]=G(s[r],s[(r+1)%this._length],t);(r<this._length-1||e)&&(o+=n)}return o}_updateArea(e,t,s,n,h){const a=e.renderCoordsHelper,d=this.positionsWorldCoords,C=this.positionsRenderCoords,f=this.positionsProjectedWorldCoords,S=this.positionsFittedRenderCoords,L=this._planeWorldCoords,P=this._centroidRenderCoords;x(C,P),a.worldUpAtPosition(P,this._worldUp),a.worldBasisAtPosition(P,w.X,this._worldTangent),j(P,this._worldUp,s,this._worldUp,n),j(P,this._worldTangent,s,this._worldTangent,n),d.length>2&&V(d,L),this.fittingMode=this._selectFittingMode(L,d,this._worldUp,h);let R=0;if("horizontal"===this.fittingMode){let e=-1/0;C.forEach(((t,s)=>{const i=a.getAltitude(C[s]);i>e&&(e=i,R=s)}))}const A=d[R];let W=L,v=this._worldTangent;"horizontal"===this.fittingMode?W=this._worldUp:"vertical"===this.fittingMode&&(W=this._tempVec3,v=this._worldUp,q(L,this._worldUp,W)),g(this._frame[2],W),q(v,W,this._frame[0]),l(this._frame[1],this._frame[0],this._frame[2]),p(this._frame[1],this._frame[1]);const z=this._tempVec3,I=this._tempU,U=this._tempV;for(let i=0;i<this._length;++i){const e=f[i],t=S[i];c(z,d[i],A),r(e,m(this._frame[0],z),m(this._frame[1],z)),u(I,this._frame[0],e[0]),u(U,this._frame[1],e[1]),_(z,I,U),_(z,z,A),M(z,n,t,s)}this.perimeterLength=this._length>0?i(t.normalizeDistance(this._updatePerimeterLengths()),"meters"):null,x(S,this.areaCentroidRenderCoords),M(this.areaCentroidRenderCoords,s,this.areaCentroidWorldCoords,n),this._updateIntersectingSegments(),this.area=0===this.intersectingSegments.size?o(t.normalizeArea(this._computeArea()),"square-meters"):null}_updateGeodesicArea(e){const{renderCoordsHelper:t,spatialReference:s}=e,{positionsSpherical:i,positionsStereographic:n}=this,h=this._tempVec3,a=y(i,h);if(!a)return void(this.geodesicArea=null);const d=this._tempU,g=this._tempV;D(h,d,g);for(let o=0;o<this._length;++o){const e=m(i[o],d),t=m(i[o],g),s=m(i[o],h);r(n[o],e/s,t/s)}u(h,h,W(s).radius),t.toRenderCoords(h,A(s),this.geodesicAreaCentroidRenderCoords),this._updateGeodesicIntersectingSegments(),this.geodesicArea=a&&0===this.geodesicIntersectingSegments.size?o(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]=n(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];z(o,r,n,h)&&(t.add(s),t.add(i))}}_computeArea(){const e=this.positionsProjectedWorldCoords,t=this.triangleIndices=B(H(e));let s=0;for(let i=0;i<t.length;i+=3)s+=I(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];z(o,r,n,h)&&(t.add(s),t.add(i))}}_computeGeodesicArea(){const e=this.positionsGeographic,t=this.positionsStereographic,s=this.geodesicTriangleIndices=B(H(t));let i=0;for(let o=0;o<s.length;o+=3)i+=T(e[s[o]],e[s[o+1]],e[s[o+2]],v.WGS84);return i}_selectFittingMode(t,s,i,o){const r=s.map((e=>Math.abs(F(t,e)))).reduce(((e,t)=>Math.max(e,t)),0);b(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(m(i,t))>Math.cos(e(o.verticalAngleThreshold))?"horizontal":"vertical"}return d}_updateCursorSegmentLength(e,s){const o=e.lastPoint;!e.isValidPolygon&&t(o)&&t(s)?(this.geodesicCursorSegmentLength=i(E(o,s),"meters"),this.cursorSegmentLength=i(this.unitNormalizer.normalizeDistance(N(o,s,this.unitNormalizer.spatialReference)),"meters")):(this.geodesicCursorSegmentLength=null,this.cursorSegmentLength=null)}_updateMode(e,s){if(s===U.Auto){this.actualMeasurementMode="euclidean";let s=0;null!=this.geodesicPathLength&&(s+=this.geodesicPathLength.value),!e.isValidPolygon&&t(this.geodesicCursorSegmentLength)&&(s+=this.geodesicCursorSegmentLength.value),s>J&&(this.actualMeasurementMode="geodesic")}else this.actualMeasurementMode=s===U.Euclidean?"euclidean":"geodesic";null==this.geodesicPathLength&&(this.actualMeasurementMode="euclidean"),this._mode=s}}function Z(e,t){t.hasZ||(t.z=s(k(e,t,"ground"),0))}const J=1e5;export{X as MeasurementDataManager};
5
+ import{deg2rad as e}from"../../../../../core/mathUtils.js";import{isSome as t,unwrapOr as s}from"../../../../../core/maybe.js";import{createLength as i,createArea as o}from"../../../../../core/quantityUtils.js";import{s as r,d as n}from"../../../../../chunks/vec2.js";import{a as h}from"../../../../../chunks/vec2f64.js";import{n as a,i as d,c as g,f as l,x as p,b as c,e as m,g as u,a as _}from"../../../../../chunks/vec3.js";import{c as C}from"../../../../../chunks/vec3f64.js";import{c as f}from"../../../../../chunks/vec4f64.js";import{canProjectWithoutEngine as S,canProjectToWGS84ComparableLonLat as L,projectPointToVector as P,projectPointToWGS84ComparableLonLat as R,projectDirection as j,projectVectorToVector as M}from"../../../../../geometry/projection.js";import{getSphericalPCPF as A,getReferenceEllipsoid as W}from"../../../../../geometry/projectionEllipsoid.js";import v from"../../../../../geometry/SpatialReference.js";import{Axis as w}from"../../../../../geometry/support/Axis.js";import{segmentIntersects as z}from"../../../../../geometry/support/intersectsBase.js";import{areaPoints2d as I}from"../../../../../geometry/support/triangle.js";import{MeasurementMode as U}from"../../interfaces.js";import{segmentLengthGeodesicVector as G,bestFitPlane as V,fitHemisphere as y,triangleAreaGeodesic as T,planePointDistance as F,boundingSphere as b,segmentLengthGeodesic as x,segmentLengthEuclidean as E}from"../../support/measurementUtils.js";import{midpoint as N}from"../../support/viewUtils.js";import{getElevationAtPoint as k}from"../../../support/ElevationProvider.js";import{makeOrthonormal as q,tangentFrame as D}from"../../../support/mathUtils.js";import{compactIndices as B}from"../../../webgl-engine/lib/Indices.js";import{triangulate as H}from"../../../../support/euclideanAreaMeasurementUtils.js";class X{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.areaCentroidWorldCoords=C(),this.areaCentroidRenderCoords=C(),this.geodesicAreaCentroidRenderCoords=C(),this._length=0,this._centroidRenderCoords=C(),this._planeWorldCoords=f(),this._worldUp=C(),this._worldTangent=C(),this._frame=[C(),C(),C()],this._pathVersion=-1,this._validMeasurement=!1,this._hasCursorPoint=!1,this._mode=null,this._tempU=C(),this._tempV=C(),this._tempVec3=C(),this._tempSphere={center:C(),radius:0},this._sceneView=e,this.unitNormalizer=t}update(e,s,o,r,n,h,d){const g=this.unitNormalizer,l=this._sceneView.renderSpatialReference,p=this.unitNormalizer.spatialReference,c=t(s);if(this._pathVersion===e.version&&this._validMeasurement===r&&!d&&this._hasCursorPoint===c&&this._mode===h){return!e.isValidPolygon&&(this._updateCursorSegmentLength(e,s),!0)}this._pathVersion=e.version,this._validMeasurement=r,this._hasCursorPoint=c;const m=e.numVertices;this._resize(m);const u=A(o.spatialReference),_=S(o.spatialReference,u)&&L(o.spatialReference),{positionsGeographic:C,positionsWorldCoords:f,positionsRenderCoords:j,positionsSpherical:M}=this;e.forEachVertexPosition(((e,t)=>{Z(o.elevationProvider,e),P(e,f[t],p),P(e,j[t],l),_&&(R(e,C[t]),P(e,M[t],u),a(M[t],M[t]))}));const W=this._updatePathLengths(r);if(this.pathLength=this._length>1?i(g.normalizeDistance(W),"meters"):null,_){const e=this._updateGeodesicPathLengths(r,p);this.geodesicPathLength=this._length>1?i(e,"meters"):null}else this.geodesicPathLength=null;return this._updateCursorSegmentLength(e,s),this._updateMode(e,h),r?(this._updateArea(o,g,l,p,n),_&&this._updateGeodesicArea(o),!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(C()),this.positionsRenderCoords.push(C()),this.positionsProjectedWorldCoords.push(h()),this.positionsFittedRenderCoords.push(C()),this.positionsGeographic.push(C()),this.positionsSpherical.push(C()),this.positionsStereographic.push(h()),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]=d(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]=G(s[r],s[(r+1)%this._length],t);(r<this._length-1||e)&&(o+=n)}return o}_updateArea(e,t,s,n,h){const a=e.renderCoordsHelper,d=this.positionsWorldCoords,C=this.positionsRenderCoords,f=this.positionsProjectedWorldCoords,S=this.positionsFittedRenderCoords,L=this._planeWorldCoords,P=this._centroidRenderCoords;N(C,P),a.worldUpAtPosition(P,this._worldUp),a.worldBasisAtPosition(P,w.X,this._worldTangent),j(P,this._worldUp,s,this._worldUp,n),j(P,this._worldTangent,s,this._worldTangent,n),d.length>2&&V(d,L),this.fittingMode=this._selectFittingMode(L,d,this._worldUp,h);let R=0;if("horizontal"===this.fittingMode){let e=-1/0;C.forEach(((t,s)=>{const i=a.getAltitude(C[s]);i>e&&(e=i,R=s)}))}const A=d[R];let W=L,v=this._worldTangent;"horizontal"===this.fittingMode?W=this._worldUp:"vertical"===this.fittingMode&&(W=this._tempVec3,v=this._worldUp,q(L,this._worldUp,W)),g(this._frame[2],W),q(v,W,this._frame[0]),l(this._frame[1],this._frame[0],this._frame[2]),p(this._frame[1],this._frame[1]);const z=this._tempVec3,I=this._tempU,U=this._tempV;for(let i=0;i<this._length;++i){const e=f[i],t=S[i];c(z,d[i],A),r(e,m(this._frame[0],z),m(this._frame[1],z)),u(I,this._frame[0],e[0]),u(U,this._frame[1],e[1]),_(z,I,U),_(z,z,A),M(z,n,t,s)}this.perimeterLength=this._length>0?i(t.normalizeDistance(this._updatePerimeterLengths()),"meters"):null,N(S,this.areaCentroidRenderCoords),M(this.areaCentroidRenderCoords,s,this.areaCentroidWorldCoords,n),this._updateIntersectingSegments(),this.area=0===this.intersectingSegments.size?o(t.normalizeArea(this._computeArea()),"square-meters"):null}_updateGeodesicArea(e){const{renderCoordsHelper:t,spatialReference:s}=e,{positionsSpherical:i,positionsStereographic:n}=this,h=this._tempVec3,a=y(i,h);if(!a)return void(this.geodesicArea=null);const d=this._tempU,g=this._tempV;D(h,d,g);for(let o=0;o<this._length;++o){const e=m(i[o],d),t=m(i[o],g),s=m(i[o],h);r(n[o],e/s,t/s)}u(h,h,W(s).radius),t.toRenderCoords(h,A(s),this.geodesicAreaCentroidRenderCoords),this._updateGeodesicIntersectingSegments(),this.geodesicArea=a&&0===this.geodesicIntersectingSegments.size?o(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]=n(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];z(o,r,n,h)&&(t.add(s),t.add(i))}}_computeArea(){const e=this.positionsProjectedWorldCoords,t=this.triangleIndices=B(H(e));let s=0;for(let i=0;i<t.length;i+=3)s+=I(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];z(o,r,n,h)&&(t.add(s),t.add(i))}}_computeGeodesicArea(){const e=this.positionsGeographic,t=this.positionsStereographic,s=this.geodesicTriangleIndices=B(H(t));let i=0;for(let o=0;o<s.length;o+=3)i+=T(e[s[o]],e[s[o+1]],e[s[o+2]],v.WGS84);return i}_selectFittingMode(t,s,i,o){const r=s.map((e=>Math.abs(F(t,e)))).reduce(((e,t)=>Math.max(e,t)),0);b(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(m(i,t))>Math.cos(e(o.verticalAngleThreshold))?"horizontal":"vertical"}return d}_updateCursorSegmentLength(e,s){const o=e.lastPoint;!e.isValidPolygon&&t(o)&&t(s)?(this.geodesicCursorSegmentLength=i(x(o,s),"meters"),this.cursorSegmentLength=i(this.unitNormalizer.normalizeDistance(E(o,s,this.unitNormalizer.spatialReference)),"meters")):(this.geodesicCursorSegmentLength=null,this.cursorSegmentLength=null)}_updateMode(e,s){if(s===U.Auto){this.actualMeasurementMode="euclidean";let s=0;null!=this.geodesicPathLength&&(s+=this.geodesicPathLength.value),!e.isValidPolygon&&t(this.geodesicCursorSegmentLength)&&(s+=this.geodesicCursorSegmentLength.value),s>J&&(this.actualMeasurementMode="geodesic")}else this.actualMeasurementMode=s===U.Euclidean?"euclidean":"geodesic";null==this.geodesicPathLength&&(this.actualMeasurementMode="euclidean"),this._mode=s}}function Z(e,t){t.hasZ||(t.z=s(k(e,t,"ground"),0))}const J=1e5;export{X 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.25/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../../chunks/tslib.es6.js";import{destroyHandle as t}from"../../../../core/handleUtils.js";import{isSome as i,isNone as o}from"../../../../core/maybe.js";import{watch as s,syncAndInitial as n,when as r}from"../../../../core/reactiveUtils.js";import{property as a}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as l}from"../../../../core/accessorSupport/decorators/subclass.js";import{sv3d as c}from"../../../../geometry/support/vectorStacks.js";import{LengthDimensionSubTool as p}from"./LengthDimensionSubTool.js";import{newIntersector as u}from"../../webgl-engine/lib/Intersector.js";import{StoreResults as d}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{AnalysisToolBase as h}from"../../../interactive/AnalysisToolBase.js";import{SKETCH_KEYS as m}from"../../../interactive/keybindings.js";import{createScreenPointArrayFromEvent as v}from"../../../support/screenUtils.js";var y;!function(e){e.Ready="ready",e.Creating="creating",e.Created="created"}(y||(y={}));let _=class extends h{constructor(e){super(e),this.automaticManipulatorSelection=!1}initialize(){this._intersector=u(this.view.state.viewingMode),this._intersector.options.store=d.MIN,this._lengthDimensionSubTool=new p({analysis:this.analysis,analysisViewData:this.analysisViewData,manipulators:this.manipulators,view:this.view}),this.addHandles(t(this._lengthDimensionSubTool)),this.addHandles([s((()=>this.state),(e=>{e===y.Created&&this.finishToolCreation()}),n),r((()=>this.firstGrabbedManipulator),(e=>{this.selectedDimension=e.metadata}),n)])}get state(){return this.analysis.dimensions.some((e=>"length"===e.type))?i(this._activeSubTool)?y.Creating:y.Created:y.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":m.cancel===e.key?this.selectedDimension=null:m.delete.includes(e.key)&&this._deleteKeyHandler()}}onActivate(){this._activeSubTool=this._lengthDimensionSubTool}onDeactivate(){i(this._activeSubTool)&&(this._activeSubTool.onDeactivate(),this._activeSubTool=null)}onManipulatorSelectionChanged(){this._lengthDimensionSubTool.onManipulatorSelectionChanged()}onHide(){this.selectedDimension=null}_clickHandler(e){if(o(this._activeSubTool))return;if(this.hasFocusedManipulators)return;const t=this._intersectScreen(e);o(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(o(this._activeSubTool))return;if(this.hasFocusedManipulators)return;const t=this._intersectScreen(e);o(t)||this._activeSubTool.onPointerMove({mapPoint:t,pointerType:e.pointerType})}_deleteKeyHandler(){i(this._activeSubTool)&&this._activeSubTool.removeStaged(),this._removeSelected()}_intersectScreen(e){const t=v(e);this.view.sceneIntersectionHelper.intersectToolIntersectorScreen(t,this._intersector);const i=this._intersector.results.min,o=c.get();return i.getIntersectionPoint(o)?this.view.renderCoordsHelper.fromRenderCoords(o,this.view.spatialReference):null}_removeSelected(){i(this.selectedDimension)&&(this.analysis.dimensions.remove(this.selectedDimension),this.selectedDimension=null)}get testInfo(){return this._lengthDimensionSubTool.testInfo}};e([a({constructOnly:!0})],_.prototype,"view",void 0),e([a({constructOnly:!0})],_.prototype,"analysis",void 0),e([a({readOnly:!0})],_.prototype,"state",null),e([a({readOnly:!0})],_.prototype,"updating",null),e([a({readOnly:!0})],_.prototype,"cursor",null),e([a({constructOnly:!0})],_.prototype,"analysisViewData",void 0),e([a()],_.prototype,"selectedDimension",null),e([a()],_.prototype,"automaticManipulatorSelection",void 0),e([a()],_.prototype,"_activeSubTool",void 0),e([a()],_.prototype,"_lengthDimensionSubTool",void 0),_=e([l("esri.views.3d.analysis.Dimensioning.DimensioningTool")],_);export{_ as DimensioningTool};
5
+ import{_ as e}from"../../../../chunks/tslib.es6.js";import{destroyHandle as t}from"../../../../core/handleUtils.js";import{isSome as i,isNone as o}from"../../../../core/maybe.js";import{watch as s,syncAndInitial as n,when as r}from"../../../../core/reactiveUtils.js";import{property as a}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as l}from"../../../../core/accessorSupport/decorators/subclass.js";import{sv3d as c}from"../../../../geometry/support/vectorStacks.js";import{LengthDimensionSubTool as p}from"./LengthDimensionSubTool.js";import{newIntersector as u}from"../../webgl-engine/lib/Intersector.js";import{StoreResults as d}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{AnalysisToolBase as h}from"../../../interactive/AnalysisToolBase.js";import{SKETCH_KEYS as m}from"../../../interactive/keybindings.js";import{createScreenPointArrayFromEvent as v}from"../../../support/screenUtils.js";var y;!function(e){e.Ready="ready",e.Creating="creating",e.Created="created"}(y||(y={}));let _=class extends h{constructor(e){super(e),this.automaticManipulatorSelection=!1}initialize(){this._intersector=u(this.view.state.viewingMode),this._intersector.options.store=d.MIN,this._lengthDimensionSubTool=new p({analysis:this.analysis,analysisViewData:this.analysisViewData,manipulators:this.manipulators,parentTool:this,view:this.view}),this.addHandles(t(this._lengthDimensionSubTool)),this.addHandles([s((()=>this.state),(e=>{e===y.Created&&this.finishToolCreation()}),n),r((()=>this.firstGrabbedManipulator),(e=>{this.selectedDimension=e.metadata}),n)])}get state(){return this.analysis.dimensions.some((e=>"length"===e.type))?i(this._activeSubTool)?y.Creating:y.Created:y.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":m.cancel===e.key?this.selectedDimension=null:m.delete.includes(e.key)&&this._deleteKeyHandler()}}onActivate(){this._activeSubTool=this._lengthDimensionSubTool}onDeactivate(){i(this._activeSubTool)&&(this._activeSubTool.onDeactivate(),this._activeSubTool=null)}onManipulatorSelectionChanged(){this._lengthDimensionSubTool.onManipulatorSelectionChanged()}onHide(){this.selectedDimension=null}_clickHandler(e){if(o(this._activeSubTool))return;if(this.hasFocusedManipulators)return;const t=this._intersectScreen(e);o(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(o(this._activeSubTool))return;if(this.hasFocusedManipulators)return;const t=this._intersectScreen(e);o(t)||this._activeSubTool.onPointerMove({mapPoint:t,pointerType:e.pointerType})}_deleteKeyHandler(){i(this._activeSubTool)&&this._activeSubTool.removeStaged(),this._removeSelected()}_intersectScreen(e){const t=v(e);this.view.sceneIntersectionHelper.intersectToolIntersectorScreen(t,this._intersector);const i=this._intersector.results.min,o=c.get();return i.getIntersectionPoint(o)?this.view.renderCoordsHelper.fromRenderCoords(o,this.view.spatialReference):null}_removeSelected(){i(this.selectedDimension)&&(this.analysis.dimensions.remove(this.selectedDimension),this.selectedDimension=null)}get testInfo(){return this._lengthDimensionSubTool.testInfo}};e([a({constructOnly:!0})],_.prototype,"view",void 0),e([a({constructOnly:!0})],_.prototype,"analysis",void 0),e([a({readOnly:!0})],_.prototype,"state",null),e([a({readOnly:!0})],_.prototype,"updating",null),e([a({readOnly:!0})],_.prototype,"cursor",null),e([a({constructOnly:!0})],_.prototype,"analysisViewData",void 0),e([a()],_.prototype,"selectedDimension",null),e([a()],_.prototype,"automaticManipulatorSelection",void 0),e([a()],_.prototype,"_activeSubTool",void 0),e([a()],_.prototype,"_lengthDimensionSubTool",void 0),_=e([l("esri.views.3d.analysis.Dimensioning.DimensioningTool")],_);export{_ as DimensioningTool};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.25/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../../../../chunks/tslib.es6.js";import e from"../../../../core/Accessor.js";import{isNone as o}from"../../../../core/maybe.js";import{watch as i,syncAndInitial as n}from"../../../../core/reactiveUtils.js";import{property as r}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as s}from"../../../../core/accessorSupport/decorators/subclass.js";import l from"../../../analysis/LengthDimensionResult.js";import{euclideanDirectDistance as p}from"../../../support/euclideanLengthMeasurementUtils.js";let m=class extends e{constructor(t){super(t),this.elevationAlignedStartPoint=null,this.elevationAlignedEndPoint=null,this._geometry=null}normalizeCtorArgs(t){const{dimension:e,...o}=t;return{result:new l({dimension:e}),...o}}initialize(){this.userSetAxis=this.dimension.axis,this.userSetOffsetDirection=this.dimension.offsetDirection,this.addHandles([i((()=>this.dimension.startPoint),(t=>this.elevationAlignedStartPoint=this.projectAndAlignPoint(t)),n),i((()=>this.dimension.endPoint),(t=>this.elevationAlignedEndPoint=this.projectAndAlignPoint(t)),n)])}get dimension(){return this.result.dimension}get length(){return this.result.length}get geometry(){return this._geometry}set geometry(t){this._geometry=t;const e=a(t);this.result.length=e}};function a(t){if(o(t))return null;const e=t.dimensionSegment.startRenderSpace,i=t.dimensionSegment.endRenderSpace;return p(e,i,t.spatialReference)}t([r({constructOnly:!0,nonNullable:!0})],m.prototype,"result",void 0),t([r({constructOnly:!0,nonNullable:!0})],m.prototype,"projectAndAlignPoint",void 0),t([r()],m.prototype,"dimension",null),t([r()],m.prototype,"length",null),t([r()],m.prototype,"geometry",null),t([r()],m.prototype,"elevationAlignedStartPoint",void 0),t([r()],m.prototype,"elevationAlignedEndPoint",void 0),t([r()],m.prototype,"_geometry",void 0),t([r()],m.prototype,"userSetAxis",void 0),t([r()],m.prototype,"userSetOffsetDirection",void 0),m=t([s("esri.views.3d.analysis.LengthDimensionComputation")],m);export{m as LengthDimensionComputation};
5
+ import{_ as t}from"../../../../chunks/tslib.es6.js";import e from"../../../../core/Accessor.js";import{isNone as o}from"../../../../core/maybe.js";import{watch as n,syncAndInitial as i}from"../../../../core/reactiveUtils.js";import{property as r}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as s}from"../../../../core/accessorSupport/decorators/subclass.js";import l from"../../../analysis/LengthDimensionResult.js";import{euclideanDirectDistance as p}from"../../../support/euclideanLengthMeasurementUtils.js";let m=class extends e{constructor(t){super(t),this.elevationAlignedStartPoint=null,this.elevationAlignedEndPoint=null,this._geometry=null}normalizeCtorArgs(t){const{dimension:e,...o}=t;return{result:new l({dimension:e}),...o}}initialize(){this.userSetAxis=this.dimension.axis,this.addHandles([n((()=>this.dimension.startPoint),(t=>this.elevationAlignedStartPoint=this.projectAndAlignPoint(t)),i),n((()=>this.dimension.endPoint),(t=>this.elevationAlignedEndPoint=this.projectAndAlignPoint(t)),i)])}get dimension(){return this.result.dimension}get length(){return this.result.length}get geometry(){return this._geometry}set geometry(t){this._geometry=t;const e=a(t);this.result.length=e}};function a(t){if(o(t))return null;const e=t.dimensionSegment.startRenderSpace,n=t.dimensionSegment.endRenderSpace;return p(e,n,t.spatialReference)}t([r({constructOnly:!0,nonNullable:!0})],m.prototype,"result",void 0),t([r({constructOnly:!0,nonNullable:!0})],m.prototype,"projectAndAlignPoint",void 0),t([r()],m.prototype,"dimension",null),t([r()],m.prototype,"length",null),t([r()],m.prototype,"geometry",null),t([r()],m.prototype,"elevationAlignedStartPoint",void 0),t([r()],m.prototype,"elevationAlignedEndPoint",void 0),t([r()],m.prototype,"_geometry",void 0),t([r()],m.prototype,"userSetAxis",void 0),m=t([s("esri.views.3d.analysis.LengthDimensionComputation")],m);export{m as LengthDimensionComputation};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.25/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{LengthDimensionAxis as i,LengthDimensionOffsetDirection as n}from"../../../../analysis/dimensionUtils.js";import s from"../../../../analysis/LengthDimension.js";import"../../../../core/has.js";import{HandleOwner as a}from"../../../../core/HandleOwner.js";import o from"../../../../core/Handles.js";import{equals as r}from"../../../../core/lang.js";import{rad2deg as p}from"../../../../core/mathUtils.js";import{isSome as d,applySome as c,isNone as l,destroyMaybe as m,unwrapOr as u}from"../../../../core/maybe.js";import{ignoreAbortErrors as h}from"../../../../core/promiseUtils.js";import{watch as g,sync as f,syncAndInitial as _}from"../../../../core/reactiveUtils.js";import{pt2px as y}from"../../../../core/screenUtils.js";import{property as v}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as M}from"../../../../core/accessorSupport/decorators/subclass.js";import{k as S}from"../../../../chunks/mat4.js";import{c as w}from"../../../../chunks/mat4f64.js";import{g as C,b as x,f as D,c as P,e as j,l as O,s as H,p as b}from"../../../../chunks/vec3.js";import{c as R,Z as V,f as k}from"../../../../chunks/vec3f64.js";import{fromPositionAndNormal as T,create as z,signedDistance as A,normal as U}from"../../../../geometry/support/plane.js";import{sv3d as F}from"../../../../geometry/support/vectorStacks.js";import{clonePoint as I}from"../../../../layers/graphics/hydratedFeatures.js";import{directUp as E,headingFromGeometry as G,directStartToEnd as L,dimensionStartToEnd as W}from"./lengthDimensionUtils.js";import{settings as B}from"./settings.js";import{getRotateHeadingTexture as q}from"../Slice/images/Factory.js";import{Manipulator3D as N}from"../../interactive/Manipulator3D.js";import{createSphereManipulator as Z,createRotateManipulator as J,calculateInputRotationTransform as K,calculateTranslateRotateFromBases as Q}from"../../interactive/manipulatorUtils.js";import{SnappingVisualizer3D as X}from"../../interactive/SnappingVisualizer3D.js";import{screenToMap3D as Y,screenToRenderPlane as $,hideManipulatorWhileDragging as tt}from"../../interactive/editingTools/dragEventPipeline3D.js";import{LineVisualElement as et}from"../../interactive/visualElements/LineVisualElement.js";import{createPolylineGeometry as it}from"../../webgl-engine/lib/GeometryUtil.js";import{RenderOccludedFlag as nt}from"../../webgl-engine/lib/Material.js";import{createStipplePatternSimple as st}from"../../webgl-engine/materials/lineStippleUtils.js";import{RibbonLineMaterial as at}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{createCoordinateHelper as ot}from"../../../interactive/coordinateHelper.js";import{createManipulatorDragEventPipeline as rt,resetProperties as pt}from"../../../interactive/dragEventPipeline.js";import{ManipulatorStateFlags as dt}from"../../../interactive/interfaces.js";import{EditGeometry as ct}from"../../../interactive/editGeometry/EditGeometry.js";import{EditGeometryOperations as lt}from"../../../interactive/editGeometry/EditGeometryOperations.js";import{acquire as mt}from"../../../interactive/snapping/SceneSnappingManagerPool.js";import{SnappingContext as ut}from"../../../interactive/snapping/SnappingContext.js";import{SnappingPipeline as ht}from"../../../interactive/snapping/SnappingDragPipelineStep.js";import{SnappingOperation as gt}from"../../../interactive/snapping/SnappingOperation.js";import ft from"../../../../geometry/Point.js";let _t=class extends a{constructor(t){super(t),this._stagedDimension=null,this._computationManipulators=new Map,this._computationHandles=new o,this._snappingPipeline=new ht,this._internalAxisChange=!1,this._snappingManagerResult=mt(t.view),this.addHandles(this._snappingManagerResult),this._unfocusedOffsetManipulatorMaterial=jt(),this._focusedOffsetManipulatorMaterial=jt(),this._updateManipulatorStyle(t.analysis.lineWidth),this._constraintSnappingIndicator=new et({view:t.view,attached:!0,width:1,color:e.toUnitRGBA(B.constraint.color),renderOccluded:nt.OccludeAndTransparent,stipplePattern:st(5)})}initialize(){this._snappingOperation=new gt({view:this.view}),this._rotateManipulatorTexture=q(this.view.toolViewManager.textures);const{computations:t}=this.analysisViewData;for(const e of t)this._addComputation(e);this.addHandles([t.on("after-add",(t=>this._addComputation(t.item))),t.on("after-remove",(t=>this._removeComputation(t.item)))]),this.addHandles([g((()=>this._snappingOperation.stagedPoint),(t=>{d(this._stagedDimension)&&(this._stagedDimension.endPoint=c(t,(t=>I(t,new ft))))}),f),g((()=>this._stagedDimension),(()=>{for(const[t,e]of this._computationManipulators)this._updateManipulators(t.geometry,t.dimension,e)}),_),g((()=>this.analysisViewData.selectedComputation),((t,e)=>{for(const i of[t,e])if(d(i)){const t=this._computationManipulators.get(i);this._updateManipulators(i.geometry,i.dimension,t)}}),_),g((()=>this.analysis.lineWidth),(t=>{this._updateManipulatorStyle(t)})),g((()=>{const{selectedComputation:t}=this.analysisViewData;if(l(t))return null;const{axis:e,offsetDirection:i}=t.dimension;return{axis:e,offsetDirection:i,selectedComputation:t}}),((t,e)=>{if(!l(t)&&!l(e)&&t.selectedComputation===e.selectedComputation&&!this._internalAxisChange){const{axis:e,offsetDirection:i,selectedComputation:n}=t;n.userSetAxis=e,n.userSetOffsetDirection=i}}),f),g((()=>{const t=this._stagedDimension,e=this._stagedComputation;if(l(t)||l(e))return null;const{geometry:i}=e,{startPoint:n,endPoint:s}=t;return{startPoint:n,endPoint:s,computation:e,geometry:i}}),(t=>{if(l(t))return;const{computation:e}=t;this._applyConstraint(e),this._updateHeadingFromCamera(e)}),f)]),this.addHandles(this._snappingIndicatorHandles())}destroy(){this._snappingOperation=m(this._snappingOperation),this._computationHandles.destroy(),this._constraintSnappingIndicator.destroy()}get updating(){return this.updatingHandles.updating||this._snappingManager.updating}get _snappingManager(){return this._snappingManagerResult.snappingManager}get _activeComputation(){return d(this._stagedComputation)?this._stagedComputation:this.analysisViewData.selectedComputation}get _stagedComputation(){const t=this._stagedDimension,e=this.analysisViewData.computations.at(-1);return l(t)||l(e)||e.dimension!==t?null:e}removeStaged(){d(this._stagedDimension)&&(this.analysis.dimensions.remove(this._stagedDimension),this._stagedDimension=null)}onDeactivate(){this.removeStaged(),this._snappingManager.doneSnapping()}onClick(t){const{_stagedDimension:e}=this;if(l(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._snappingContext(e);this.updatingHandles.addPromise(h(this._snappingOperation.snap(t,this._snappingManager,i)))}onManipulatorSelectionChanged(){if(d(this.analysisViewData.selectedComputation)){this._computationManipulators.get(this.analysisViewData.selectedComputation).offset.selected||(this.analysisViewData.selectedDimension=null)}}_snappingIndicatorHandles(){const t="snapping-indicator-event-handles";return[g((()=>({stagedComputation:this._stagedComputation,activeComputation:this._activeComputation})),(({stagedComputation:e,activeComputation:i})=>{const n=this._constraintSnappingIndicator;if(this.removeHandles(t),l(i))n.attached=!1;else if(i===e)n.attached=!0;else{const{start:e,end:s}=this._computationManipulators.get(i),a=()=>{n.attached=e.grabbing||s.grabbing};a(),this.addHandles([e.events.on("grab-changed",a),s.events.on("grab-changed",a)],t)}})),g((()=>{const t=this._activeComputation;return d(t)?t.geometry:null}),(t=>{const e=this._constraintSnappingIndicator;d(t)&&d(Ht(t,this.view))?(e.visible=!0,e.setGeometryFromSegment(t.directSegment)):e.visible=!1}),{equals:r})]}_onUnstagedClick({mapPoint:t,pointerType:e}){const i="mouse"===e?u(this._snappingOperation.stagedPoint,t):t,n=new s({startPoint:I(i,new ft),endPoint:null});return this._stagedDimension=n,this._snappingManager.doneSnapping(),n}_onStagedClick({mapPoint:t,pointerType:e}){if(l(this._stagedDimension))return;const i="mouse"===e?u(this._snappingOperation.stagedPoint,t):t;this._stagedDimension.endPoint=I(i,new ft),this._stagedDimension=null,this._snappingManager.doneSnapping()}_addComputation(t){if(this._computationManipulators.has(t))return;const e=this._createPointManipulator(t,{isStart:!0}),i=this._createPointManipulator(t,{isStart:!1}),n=this._createOffsetManipulator(t),s=this._createHeadingManipulator(t),a=new yt({start:e,end:i,offset:n,heading:s});this._setupComputationToManipulatorsSync(t,a),this._computationManipulators.set(t,a),this.manipulators.addMany(a.values())}_removeComputation(t){const e=this._computationManipulators.get(t);if(!l(e)){this._computationHandles.remove(t),this._computationManipulators.delete(t);for(const t of e.values())this.manipulators.remove(t)}}_setupComputationToManipulatorsSync(t,e){const{dimension:i}=t;this._computationHandles.add([g((()=>t.geometry),(t=>{this._updateManipulators(t,i,e)}),{..._,equals:r})],t)}_createPointManipulator(t,i){const{dimension:n}=t,{isStart:s}=i,a=s?"startPoint":"endPoint",o=Z(this.view,e.toUnitRGB(B.pointManipulators.color),B.pointManipulators.opacity);o.available=!1,o.radius=B.pointManipulators.radius,o.metadata=t.dimension,o.collisionPriority=1;const r=rt(o,((e,i,s,o)=>{const r=tt(e);i.next(r).next(Y(this.view)).next(this._snappingPipeline.createSnapDragEventPipelineStep({snappingContext:this._snappingContext(o),snappingManager:this._snappingManager,cancel:s,updatingHandles:this.updatingHandles}),this._snappingPipeline.next).next((e=>{const i=I(e.mapEnd,new ft);n[a]=i,this._applyConstraint(t),this._updateHeadingFromCamera(t)})),s.next(r).next(pt(n,[a]))}));return this._computationHandles.add(r,t),o}_createOffsetManipulator(t){const e=[k(-.5,0,0),k(.5,0,0)],{lengthFraction:i}=B.offsetManipulator,n=it(e.map((t=>C(R(),t,i)))),s=new N({view:this.view,renderObjects:[{geometry:n,material:this._unfocusedOffsetManipulatorMaterial,stateMask:dt.Unfocused|dt.Selected},{geometry:n,material:this._focusedOffsetManipulatorMaterial,stateMask:dt.Focused|dt.Selected}],collisionType:{type:"line",paths:[e]},radius:this._focusedOffsetWidth(this.analysis.lineWidth)/2,focusMultiplier:1,available:!1,autoScaleRenderObjects:!1,worldSized:!0,metadata:t.dimension}),a=rt(s,((e,i,n)=>{if(l(t.geometry))return;const{dimensionSegment:s,primaryOffsetAxis:a}=t.geometry,o=x(F.get(),s.endRenderSpace,s.startRenderSpace);D(o,o,a);const r=T(s.startRenderSpace,o,z()),p=T(s.startRenderSpace,a,z()),{dimension:d}=t,c=d.offset;let m=0;const u=tt(e);i.next(u).next($(this.view,r)).next((t=>{"start"===t.action&&(m=A(p,t.renderStart));const e=(A(p,t.renderEnd)-m)*this.view.renderCoordsHelper.unitInMeters;d.offset=c+e})),n.next(u).next(pt(d,["offset"]))}));return this._computationHandles.add(a,t),s}_createHeadingManipulator(t){const e=J(this.view,this._rotateManipulatorTexture.texture);e.metadata=t.dimension;const i=rt(e,((e,i,n)=>{const{dimension:s,geometry:a}=t,{renderCoordsHelper:o}=this.view;if(l(a))return;const r=E(F.get(),a,o),d=R(),c=Ct(R(),a,a.directSegment,o),m=T(c,r,z()),h=u(s.heading,(()=>G(a,o)));i.next($(this.view,m)).next((t=>{"start"===t.action&&P(d,t.renderStart);const e=U(m),i=K(d,t.renderEnd,c,e);s.heading=h-p(i)})),n.next(pt(s,["heading"]))}));return this._computationHandles.add(i,t),e}_updateManipulators(t,e,s){const{start:a,end:o,offset:r,heading:p}=s,c=d(t),m=this.analysisViewData.selectedDimension===e,u=c&&l(this._stagedDimension);for(const d of s.values())d===r?(d.available=u,d.selected=m):d.available=d===p?u&&m&&e.axis===i.Vertical&&e.offsetDirection===n.Side:u&&m;u&&(a.renderLocation=t.directSegment.startRenderSpace,o.renderLocation=t.directSegment.endRenderSpace,vt(r,t),p.available&&Mt(p,t,e,this.view.renderCoordsHelper))}_updateManipulatorStyle(t){const e=this._unfocusedOffsetWidth(t),i=this._focusedOffsetWidth(t);for(const{offset:n}of this._computationManipulators.values())n.radius=i/2;this._unfocusedOffsetManipulatorMaterial.setParameters({width:e}),this._focusedOffsetManipulatorMaterial.setParameters({width:i})}_snappingContext(t){return new ut({elevationInfo:{mode:"absolute-height",offset:0},pointer:t,editGeometryOperations:new lt(new ct("point",ot(!0,!1,this.view.spatialReference))),visualizer:new X})}_unfocusedOffsetWidth(t){return y(t)+B.offsetManipulator.linePaddingPx}_focusedOffsetWidth(t){return y(t)+B.offsetManipulator.focusedLinePaddingPx}_applyConstraint(t){const{dimension:e,geometry:s}=t,{startPoint:a,endPoint:o}=e;if(l(s)||l(a)||l(o))return;const r=Ht(s,this.view);if(this._internalAxisChange=!0,l(r))e.axis=t.userSetAxis,e.offsetDirection=t.userSetOffsetDirection;else{const s=this._computationManipulators.get(t),p=this._stagedDimension===e||s.end.grabbing?o:a,d=p.clone();switch(r){case Ot.Horizontal:e.axis=i.Horizontal,p===a?(d.z=o.z,e.startPoint=d):(d.z=a.z,e.endPoint=d);break;case Ot.Vertical:e.axis=i.Vertical,e.offsetDirection=n.Side,p===a?(d.x=o.x,d.y=o.y,e.startPoint=d):(d.x=a.x,d.y=a.y,e.endPoint=d)}}this._internalAxisChange=!1}_updateHeadingFromCamera(t){const{dimension:e,geometry:i}=t;if(l(i))return;if(Ht(i,this.view)===Ot.Vertical)return;const{directSegment:n}=i,{renderCoordsHelper:s}=this.view,a=E(F.get(),i,s),o=L(F.get(),i),r=D(F.get(),o,a),{viewForward:p}=this.view.state.camera;j(r,p)>0&&C(r,r,-1);const d=n.eval(.5,F.get());e.heading=s.headingAtPosition(d,r)}get testInfo(){return{getManipulatorsForDimension:t=>{for(const[e,i]of this._computationManipulators.entries())if(t===e.dimension)return i;return null},getComputationForDimension:t=>{for(const e of this._computationManipulators.keys())if(t===e.dimension)return e;return null},stagedDimension:this._stagedDimension,constraintSnappingIndicator:this._constraintSnappingIndicator}}};t([v({constructOnly:!0})],_t.prototype,"analysis",void 0),t([v({constructOnly:!0})],_t.prototype,"analysisViewData",void 0),t([v({constructOnly:!0})],_t.prototype,"manipulators",void 0),t([v({constructOnly:!0,nonNullable:!0})],_t.prototype,"view",void 0),t([v({readOnly:!0})],_t.prototype,"updating",null),t([v()],_t.prototype,"_stagedDimension",void 0),t([v()],_t.prototype,"_activeComputation",null),t([v()],_t.prototype,"_stagedComputation",null),_t=t([M("esri.views.3d.analysis.Dimensioning.LengthDimensionSubTool")],_t);class yt{constructor(t){this.start=t.start,this.end=t.end,this.offset=t.offset,this.heading=t.heading}values(){return[this.start,this.end,this.offset,this.heading]}}function vt(t,e){const{dimensionSegment:i,primaryOffsetAxis:n}=e,s=W(bt,e),a=Q(s,n,V,Rt),o=O(s);S(a,a,H(bt,o,o,o)),t.modelTransform=a,t.renderLocation=i.eval(.5,bt)}function Mt(t,e,i,n){const{primaryOffsetAxis:s}=e;C(St,s,i.offset>=0?1:-1),W(wt,e),D(wt,wt,St);const a=Q(St,wt,V,Rt);t.modelTransform=a,t.renderLocation=Ct(bt,e,e.dimensionSegment,n)}const St=R(),wt=R();function Ct(t,e,i,n){const{startRenderSpace:s,endRenderSpace:a}=i,o=xt(e,n)?s:a;return P(t,o)}function xt(t,e){const i=L(Dt,t),n=E(Pt,t,e);return j(i,n)>0}const Dt=R(),Pt=R();function jt(){const{color:t,opacity:i}=B.offsetManipulator;return new at({color:[...e.toUnitRGB(t),i],width:1,renderOccluded:nt.OccludeAndTransparent,writeDepth:!1,hasPolygonOffset:!0})}var Ot;function Ht(t,e){const{directSegment:i}=t,{constraintThresholdPx:n}=B,{camera:s}=e.state,a=E(F.get(),t,e.renderCoordsHelper),o=L(F.get(),t),r=C(F.get(),a,j(o,a)),p=x(F.get(),o,r),d=b(p),c=b(r),{startRenderSpace:l,endRenderSpace:m}=i,u=Math.max(s.computeRenderPixelSizeAt(l)*n,s.computeRenderPixelSizeAt(m)*n)**2;return d<u?Ot.Vertical:c<u?Ot.Horizontal:null}!function(t){t[t.Horizontal=0]="Horizontal",t[t.Vertical=1]="Vertical"}(Ot||(Ot={}));const bt=R(),Rt=w();export{yt as LengthDimensionManipulators,_t as LengthDimensionSubTool};
5
+ import{_ as t}from"../../../../chunks/tslib.es6.js";import e from"../../../../Color.js";import"../../../../geometry.js";import{LengthDimensionAxis as i,LengthDimensionOffsetDirection as n}from"../../../../analysis/dimensionUtils.js";import a from"../../../../analysis/LengthDimension.js";import"../../../../core/has.js";import{HandleOwner as s}from"../../../../core/HandleOwner.js";import o from"../../../../core/Handles.js";import{equals as r}from"../../../../core/lang.js";import{rad2deg as p}from"../../../../core/mathUtils.js";import{isNone as d,applySome as l,isSome as c,destroyMaybe as m,unwrapOr as u}from"../../../../core/maybe.js";import{ignoreAbortErrors as h}from"../../../../core/promiseUtils.js";import{watch as g,sync as f,syncAndInitial as _}from"../../../../core/reactiveUtils.js";import{pt2px as y}from"../../../../core/screenUtils.js";import{property as v}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as M}from"../../../../core/accessorSupport/decorators/subclass.js";import{k as S}from"../../../../chunks/mat4.js";import{c as w}from"../../../../chunks/mat4f64.js";import{g as C,b as x,f as j,c as P,e as D,l as b,s as H,z as O}from"../../../../chunks/vec3.js";import{c as R,Z as V,f as T}from"../../../../chunks/vec3f64.js";import{fromPositionAndNormal as k,create as z,signedDistance as U,normal as G}from"../../../../geometry/support/plane.js";import{sv3d as A}from"../../../../geometry/support/vectorStacks.js";import{clonePoint as F}from"../../../../layers/graphics/hydratedFeatures.js";import{directUp as I,headingFromGeometry as E,directStartToEnd as L,dimensionStartToEnd as W}from"./lengthDimensionUtils.js";import{settings as B}from"./settings.js";import{getRotateHeadingTexture as q}from"../Slice/images/Factory.js";import{Manipulator3D as N}from"../../interactive/Manipulator3D.js";import{createSphereManipulator as Z,createRotateManipulator as J,calculateInputRotationTransform as K,calculateTranslateRotateFromBases as Q}from"../../interactive/manipulatorUtils.js";import{SnappingVisualizer3D as X}from"../../interactive/SnappingVisualizer3D.js";import{screenToMap3D as Y,screenToRenderPlane as $,hideManipulatorWhileDragging as tt}from"../../interactive/editingTools/dragEventPipeline3D.js";import{LineVisualElement as et}from"../../interactive/visualElements/LineVisualElement.js";import{createPolylineGeometry as it}from"../../webgl-engine/lib/GeometryUtil.js";import{RenderOccludedFlag as nt}from"../../webgl-engine/lib/Material.js";import{createStipplePatternSimple as at}from"../../webgl-engine/materials/lineStippleUtils.js";import{RibbonLineMaterial as st}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{createCoordinateHelper as ot}from"../../../interactive/coordinateHelper.js";import{createManipulatorDragEventPipeline as rt,resetProperties as pt}from"../../../interactive/dragEventPipeline.js";import{ManipulatorStateFlags as dt}from"../../../interactive/interfaces.js";import{EditGeometry as lt}from"../../../interactive/editGeometry/EditGeometry.js";import{EditGeometryOperations as ct}from"../../../interactive/editGeometry/EditGeometryOperations.js";import{acquire as mt}from"../../../interactive/snapping/SceneSnappingManagerPool.js";import{SnappingContext as ut}from"../../../interactive/snapping/SnappingContext.js";import{SnappingPipeline as ht}from"../../../interactive/snapping/SnappingDragPipelineStep.js";import{SnappingOperation as gt}from"../../../interactive/snapping/SnappingOperation.js";import ft from"../../../../geometry/Point.js";let _t=class extends s{constructor(t){super(t),this._stagedDimension=null,this._computationManipulators=new Map,this._computationHandles=new o,this._snappingPipeline=new ht,this._snappingManagerResult=mt(t.view),this.addHandles(this._snappingManagerResult),this._unfocusedOffsetManipulatorMaterial=Dt(),this._focusedOffsetManipulatorMaterial=Dt(),this._updateManipulatorStyle(t.analysis.lineWidth),this._constraintSnappingIndicator=new et({view:t.view,attached:!0,width:1,color:e.toUnitRGBA(B.constraint.color),renderOccluded:nt.OccludeAndTransparent,stipplePattern:at(5)})}initialize(){this._snappingOperation=new gt({view:this.view}),this._rotateManipulatorTexture=q(this.view.toolViewManager.textures);const{computations:t}=this.analysisViewData;for(const e of t)this._addComputation(e);this.addHandles([t.on("after-add",(t=>this._addComputation(t.item))),t.on("after-remove",(t=>this._removeComputation(t.item)))]),this.addHandles([g((()=>({stagedPoint:this._snappingOperation.stagedPoint,stagedComputation:this._stagedComputation})),(({stagedPoint:t,stagedComputation:e})=>{if(d(e))return;const{dimension:i}=e;i.endPoint=l(t,(t=>F(t,new ft))),this._applyConstraint(e),this._updateHeadingFromCamera(e)}),f),g((()=>this._stagedDimension),(()=>{for(const[t,e]of this._computationManipulators)this._updateManipulators(t.geometry,t.dimension,e)}),_),g((()=>this.analysisViewData.selectedComputation),((t,e)=>{for(const i of[t,e])if(c(i)){const t=this._computationManipulators.get(i);this._updateManipulators(i.geometry,i.dimension,t)}}),_),g((()=>this.analysis.lineWidth),(t=>{this._updateManipulatorStyle(t)}))]),this.addHandles(this._constraintHandles),this.addHandles(this._snappingIndicatorHandles)}destroy(){this._snappingOperation=m(this._snappingOperation),this._computationHandles.destroy(),this._constraintSnappingIndicator.destroy()}get updating(){return this.updatingHandles.updating||this._snappingManager.updating}get hasGrabbedManipulators(){return this.parentTool.hasGrabbedManipulators}get _snappingManager(){return this._snappingManagerResult.snappingManager}get _activeComputation(){if(c(this._stagedComputation))return this._stagedComputation;const{selectedComputation:t}=this.analysisViewData;return this.hasGrabbedManipulators&&c(t)?t:null}get _stagedComputation(){const t=this._stagedDimension,e=this.analysisViewData.computations.at(-1);return d(t)||d(e)||e.dimension!==t?null:e}get _constraintHandles(){return[g((()=>{const t=this._activeComputation;if(d(t))return null;const{axis:e,offsetDirection:i}=t.dimension;return{axis:e,offsetDirection:i,computation:t}}),((t,e)=>{if(c(t)&&d(e)){const{axis:e,computation:i}=t;i.userSetAxis=e}if(d(t)&&c(e)){const{computation:t}=e;t.userSetAxis=null}}),f)]}get _snappingIndicatorHandles(){const t="snapping-indicator-event-handles";return[g((()=>({stagedComputation:this._stagedComputation,activeComputation:this._activeComputation})),(({stagedComputation:e,activeComputation:i})=>{const n=this._constraintSnappingIndicator;if(this.removeHandles(t),d(i))n.attached=!1;else 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)}})),g((()=>{const t=this._activeComputation;return c(t)?t.geometry:null}),(t=>{const e=this._constraintSnappingIndicator;c(t)&&c(Ht(t,this.view))?(e.visible=!0,e.setGeometryFromSegment(t.directSegment)):e.visible=!1}),{equals:r})]}removeStaged(){c(this._stagedDimension)&&(this.analysis.dimensions.remove(this._stagedDimension),this._stagedDimension=null)}onDeactivate(){this.removeStaged(),this._snappingManager.doneSnapping()}onClick(t){const{_stagedDimension:e}=this;if(d(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._snappingContext(e);this.updatingHandles.addPromise(h(this._snappingOperation.snap(t,this._snappingManager,i)))}onManipulatorSelectionChanged(){if(c(this.analysisViewData.selectedComputation)){this._computationManipulators.get(this.analysisViewData.selectedComputation).offset.selected||(this.analysisViewData.selectedDimension=null)}}_onUnstagedClick({mapPoint:t,pointerType:e}){const i="mouse"===e?u(this._snappingOperation.stagedPoint,t):t,n=new a({startPoint:F(i,new ft),endPoint:null});return this._stagedDimension=n,this._snappingManager.doneSnapping(),n}_onStagedClick({mapPoint:t,pointerType:e}){const i=this._stagedComputation;if(d(i))return;const n="mouse"===e?u(this._snappingOperation.stagedPoint,t):t;i.dimension.endPoint=F(n,new ft),this._applyConstraint(i),this._stagedDimension=null,this._snappingManager.doneSnapping()}_addComputation(t){if(this._computationManipulators.has(t))return;const e=this._createPointManipulator(t,{isStart:!0}),i=this._createPointManipulator(t,{isStart:!1}),n=this._createOffsetManipulator(t),a=this._createHeadingManipulator(t),s=new yt({start:e,end:i,offset:n,heading:a});this._setupComputationToManipulatorsSync(t,s),this._computationManipulators.set(t,s),this.manipulators.addMany(s.values())}_removeComputation(t){const e=this._computationManipulators.get(t);if(!d(e)){this._computationHandles.remove(t),this._computationManipulators.delete(t);for(const t of e.values())this.manipulators.remove(t)}}_setupComputationToManipulatorsSync(t,e){const{dimension:i}=t;this._computationHandles.add([g((()=>t.geometry),(t=>{this._updateManipulators(t,i,e)}),{..._,equals:r})],t)}_createPointManipulator(t,i){const{dimension:n}=t,{isStart:a}=i,s=a?"startPoint":"endPoint",o=Z(this.view,e.toUnitRGB(B.pointManipulators.color),B.pointManipulators.opacity);o.available=!1,o.radius=B.pointManipulators.radius,o.metadata=t.dimension,o.collisionPriority=1;const r=rt(o,((e,i,a,o)=>{const r=tt(e);i.next(r).next(Y(this.view)).next(this._snappingPipeline.createSnapDragEventPipelineStep({snappingContext:this._snappingContext(o),snappingManager:this._snappingManager,cancel:a,updatingHandles:this.updatingHandles}),this._snappingPipeline.next).next((e=>{const i=F(e.mapEnd,new ft);n[s]=i,this._applyConstraint(t),this._updateHeadingFromCamera(t)})),a.next(r).next(pt(n,[s]))}));return this._computationHandles.add(r,t),o}_createOffsetManipulator(t){const e=[T(-.5,0,0),T(.5,0,0)],{lengthFraction:i}=B.offsetManipulator,n=it(e.map((t=>C(R(),t,i)))),a=new N({view:this.view,renderObjects:[{geometry:n,material:this._unfocusedOffsetManipulatorMaterial,stateMask:dt.Unfocused|dt.Selected},{geometry:n,material:this._focusedOffsetManipulatorMaterial,stateMask:dt.Focused|dt.Selected}],collisionType:{type:"line",paths:[e]},radius:this._focusedOffsetWidth(this.analysis.lineWidth)/2,focusMultiplier:1,available:!1,autoScaleRenderObjects:!1,worldSized:!0,metadata:t.dimension}),s=rt(a,((e,i,n)=>{if(d(t.geometry))return;const{dimensionSegment:a,primaryOffsetAxis:s}=t.geometry,o=x(A.get(),a.endRenderSpace,a.startRenderSpace);j(o,o,s);const r=k(a.startRenderSpace,o,z()),p=k(a.startRenderSpace,s,z()),{dimension:l}=t,c=l.offset;let m=0;const u=tt(e);i.next(u).next($(this.view,r)).next((t=>{"start"===t.action&&(m=U(p,t.renderStart));const e=(U(p,t.renderEnd)-m)*this.view.renderCoordsHelper.unitInMeters;l.offset=c+e})),n.next(u).next(pt(l,["offset"]))}));return this._computationHandles.add(s,t),a}_createHeadingManipulator(t){const e=J(this.view,this._rotateManipulatorTexture.texture);e.metadata=t.dimension;const i=rt(e,((e,i,n)=>{const{dimension:a,geometry:s}=t,{renderCoordsHelper:o}=this.view;if(d(s))return;const r=I(A.get(),s,o),l=R(),c=Ct(R(),s,s.directSegment,o),m=k(c,r,z()),h=u(a.heading,(()=>E(s,o)));i.next($(this.view,m)).next((t=>{"start"===t.action&&P(l,t.renderStart);const e=G(m),i=K(l,t.renderEnd,c,e);a.heading=h-p(i)})),n.next(pt(a,["heading"]))}));return this._computationHandles.add(i,t),e}_updateManipulators(t,e,a){const{start:s,end:o,offset:r,heading:p}=a,l=c(t),m=this.analysisViewData.selectedDimension===e,u=l&&d(this._stagedDimension);for(const d of a.values())d===r?(d.available=u,d.selected=m):d.available=d===p?u&&m&&e.axis===i.Vertical&&e.offsetDirection===n.Side:u&&m;u&&(s.renderLocation=t.directSegment.startRenderSpace,o.renderLocation=t.directSegment.endRenderSpace,vt(r,t),p.available&&Mt(p,t,e,this.view.renderCoordsHelper))}_updateManipulatorStyle(t){const e=this._unfocusedOffsetWidth(t),i=this._focusedOffsetWidth(t);for(const{offset:n}of this._computationManipulators.values())n.radius=i/2;this._unfocusedOffsetManipulatorMaterial.setParameters({width:e}),this._focusedOffsetManipulatorMaterial.setParameters({width:i})}_snappingContext(t){return new ut({elevationInfo:{mode:"absolute-height",offset:0},pointer:t,editGeometryOperations:new ct(new lt("point",ot(!0,!1,this.view.spatialReference))),visualizer:new X})}_unfocusedOffsetWidth(t){return y(t)+B.offsetManipulator.linePaddingPx}_focusedOffsetWidth(t){return y(t)+B.offsetManipulator.focusedLinePaddingPx}_applyConstraint(t){const{dimension:e,geometry:a}=t,{startPoint:s,endPoint:o}=e;if(d(a)||d(s)||d(o))return;const r=Ht(a,this.view);if(d(r))c(t.userSetAxis)&&(e.axis=t.userSetAxis),e.offsetDirection=n.Up;else{const a=this._computationManipulators.get(t),p=this._stagedDimension===e||a.end.grabbing?o:s,d=p.clone();switch(r){case bt.Horizontal:e.axis=i.Horizontal,p===s?(d.z=o.z,e.startPoint=d):(d.z=s.z,e.endPoint=d);break;case bt.Vertical:e.axis=i.Vertical,e.offsetDirection=n.Side,p===s?(d.x=o.x,d.y=o.y,e.startPoint=d):(d.x=s.x,d.y=s.y,e.endPoint=d)}}}_updateHeadingFromCamera(t){const{dimension:e,geometry:i}=t;if(d(i))return;if(Ht(i,this.view)===bt.Vertical)return;const{directSegment:n}=i,{renderCoordsHelper:a}=this.view,s=I(A.get(),i,a),o=L(A.get(),i),r=j(A.get(),o,s),{viewForward:p}=this.view.state.camera;D(r,p)>0&&C(r,r,-1);const l=n.eval(.5,A.get());e.heading=a.headingAtPosition(l,r)}get testInfo(){return{getManipulatorsForDimension:t=>{for(const[e,i]of this._computationManipulators.entries())if(t===e.dimension)return i;return null},getComputationForDimension:t=>{for(const e of this._computationManipulators.keys())if(t===e.dimension)return e;return null},stagedDimension:this._stagedDimension,constraintSnappingIndicator:this._constraintSnappingIndicator}}};t([v({constructOnly:!0})],_t.prototype,"analysis",void 0),t([v({constructOnly:!0})],_t.prototype,"analysisViewData",void 0),t([v({constructOnly:!0})],_t.prototype,"manipulators",void 0),t([v({constructOnly:!0})],_t.prototype,"parentTool",void 0),t([v({constructOnly:!0,nonNullable:!0})],_t.prototype,"view",void 0),t([v({readOnly:!0})],_t.prototype,"updating",null),t([v()],_t.prototype,"hasGrabbedManipulators",null),t([v()],_t.prototype,"_stagedDimension",void 0),t([v()],_t.prototype,"_activeComputation",null),t([v()],_t.prototype,"_stagedComputation",null),_t=t([M("esri.views.3d.analysis.Dimensioning.LengthDimensionSubTool")],_t);class yt{constructor(t){this.start=t.start,this.end=t.end,this.offset=t.offset,this.heading=t.heading}values(){return[this.start,this.end,this.offset,this.heading]}}function vt(t,e){const{dimensionSegment:i,primaryOffsetAxis:n}=e,a=W(Ot,e),s=Q(a,n,V,Rt),o=b(a);S(s,s,H(Ot,o,o,o)),t.modelTransform=s,t.renderLocation=i.eval(.5,Ot)}function Mt(t,e,i,n){const{primaryOffsetAxis:a}=e;C(St,a,i.offset>=0?1:-1),W(wt,e),j(wt,wt,St);const s=Q(St,wt,V,Rt);t.modelTransform=s,t.renderLocation=Ct(Ot,e,e.dimensionSegment,n)}const St=R(),wt=R();function Ct(t,e,i,n){const{startRenderSpace:a,endRenderSpace:s}=i,o=xt(e,n)?a:s;return P(t,o)}function xt(t,e){const i=L(jt,t),n=I(Pt,t,e);return D(i,n)>0}const jt=R(),Pt=R();function Dt(){const{color:t,opacity:i}=B.offsetManipulator;return new st({color:[...e.toUnitRGB(t),i],width:1,renderOccluded:nt.OccludeAndTransparent,writeDepth:!1,hasPolygonOffset:!0})}var bt;function Ht(t,e){const{directSegment:i}=t,{constraintThresholdPx:n}=B,{camera:a}=e.state,s=I(A.get(),t,e.renderCoordsHelper),o=L(A.get(),t),r=C(A.get(),s,D(o,s)),p=x(A.get(),o,r),d=O(p),l=O(r),{startRenderSpace:c,endRenderSpace:m}=i,u=Math.max(a.computeRenderPixelSizeAt(c)*n,a.computeRenderPixelSizeAt(m)*n)**2;return d<u?bt.Vertical:l<u?bt.Horizontal:null}!function(t){t[t.Horizontal=0]="Horizontal",t[t.Vertical=1]="Vertical"}(bt||(bt={}));const Ot=R(),Rt=w();export{yt as LengthDimensionManipulators,_t 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.25/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../../core/Handles.js";import{destroyMaybe as t,isNone as s,isSome as i}from"../../../../core/maybe.js";import{toUnit as n}from"../../../../core/quantityUtils.js";import{watch as r,initial as a}from"../../../../core/reactiveUtils.js";import{pt2px as l}from"../../../../core/screenUtils.js";import{k as o}from"../../../../chunks/vec3.js";import{sv3d as m}from"../../../../geometry/support/vectorStacks.js";import{formatNumber as d}from"../../../../intl/number.js";import{computeSpanningSegment as c,OffsetSegmentLocation as f,offsetSegment as u}from"./lengthDimensionUtils.js";import{settings as h}from"./settings.js";import{LabelVisualElement as y}from"../../interactive/visualElements/LabelVisualElement.js";import{LineVisualElement as g}from"../../interactive/visualElements/LineVisualElement.js";import{MarkerVisualElement as _}from"../../interactive/visualElements/MarkerVisualElement.js";import{EuclideanSegment as S}from"../../interactive/visualElements/support/Segment.js";class b{constructor(t){this.destroyed=!1,this._handles=new e,this._labelSegment=new S;const{analysis:s,computation:n,view:o}=t;this.analysis=s,this.computation=n,this.view=o;const m=t.visible,d={view:o,attached:m};this._dimensionVisualElement=new g(d,t.dimensionLineMaterial),this._markerVisualElement=new _(d,t.markerMaterial),this._startPrimaryOffsetVisualElement=new g(d,t.primaryOffsetLineMaterial),this._endPrimaryOffsetVisualElement=new g(d,t.primaryOffsetLineMaterial),this._startSecondaryOffsetVisualElement=new g(d,t.secondaryOffsetLineMaterial),this._endSecondaryOffsetVisualElement=new g(d,t.secondaryOffsetLineMaterial);const c={type:"segment",sampleLocation:"center",segment:this._labelSegment,callout:!1};this._label=new y({view:o,attached:m,distance:0,geometry:c,fontSize:l(s.fontSize),textColor:s.textColor.clone(),backgroundColor:s.backgroundColor.clone()}),this._handles.add([r((()=>({geometry:n.geometry})),(({geometry:e})=>{const t=i(e);for(const s of this._geometryVisualElements())s.visible=t;t&&this._updateLines(e)}),a),r((()=>({length:n.length,geometry:n.geometry})),(({length:e,geometry:t})=>this._updateLabelContent(e,t)),a),r((()=>({geometry:n.geometry})),(({geometry:e})=>this.updateLabelGeometry(o.state.camera,e,s)),a)])}set visible(e){for(const t of this._visualElements())t.attached=e}destroy(){this.destroyed=!0,this._handles=t(this._handles);for(const e of this._visualElements())e.destroy()}get testInfo(){return{dimensionVisualElement:this._dimensionVisualElement,label:this._label}}_updateLines(e){this._dimensionVisualElement.setGeometryFromSegment(e.dimensionSegment),this._markerVisualElement.setGeometryFromSegment(e.dimensionSegment),this._startPrimaryOffsetVisualElement.setGeometryFromSegment(c(E,f.Start,e.cornerSegment,e.dimensionSegment)),this._endPrimaryOffsetVisualElement.setGeometryFromSegment(c(E,f.End,e.cornerSegment,e.dimensionSegment));const t=c(E,f.Start,e.directSegment,e.cornerSegment);o(t.startRenderSpace,t.endRenderSpace)?this._startSecondaryOffsetVisualElement.visible=!1:(this._startSecondaryOffsetVisualElement.visible=!0,this._startSecondaryOffsetVisualElement.setGeometryFromSegment(t));const s=c(E,f.End,e.directSegment,e.cornerSegment);o(s.startRenderSpace,s.endRenderSpace)?this._endSecondaryOffsetVisualElement.visible=!1:(this._endSecondaryOffsetVisualElement.visible=!0,this._endSecondaryOffsetVisualElement.setGeometryFromSegment(s))}updateLabelGeometry(e,t,i){if(s(t))return void(this._label.visible=!1);const{dimensionSegment:n,primaryOffsetAxis:r}=t,{offset:a}=this.computation.dimension,l=e.computeRenderPixelSizeAt(n.eval(.5,m.get())),o=(Math.sign(a)>=0?1:-1)*p(i)*l;u(this._labelSegment,n,r,o),this._label.updateLabelPosition()}updateLabelStyle(e){this._label.fontSize=l(e.fontSize),this._label.textColor=e.textColor,this._label.backgroundColor=e.backgroundColor}_updateLabelContent(e,t){if(s(e)||s(t))return this._label.text="",void(this._label.visible=!1);const{value:i}=n(e,"meters");this._label.text=`${d(i,{minimumFractionDigits:2,maximumFractionDigits:2})} m`,this._label.visible=!0}_geometryVisualElements(){return[this._dimensionVisualElement,this._markerVisualElement,this._startPrimaryOffsetVisualElement,this._endPrimaryOffsetVisualElement,this._startSecondaryOffsetVisualElement,this._endSecondaryOffsetVisualElement]}_visualElements(){return[...this._geometryVisualElements(),this._label]}}function p(e){return 1.5*l(e.fontSize)+h.labels.marginPx+l(e.lineWidth/2)}const E=new S;export{b as LengthDimensionVisualization};
5
+ import e from"../../../../core/Handles.js";import{destroyMaybe as t,isNone as s,isSome as i}from"../../../../core/maybe.js";import{toUnit as n}from"../../../../core/quantityUtils.js";import{watch as r,initial as a}from"../../../../core/reactiveUtils.js";import{pt2px as l}from"../../../../core/screenUtils.js";import{w as o}from"../../../../chunks/vec3.js";import{sv3d as m}from"../../../../geometry/support/vectorStacks.js";import{formatNumber as d}from"../../../../intl/number.js";import{computeSpanningSegment as c,OffsetSegmentLocation as f,offsetSegment as u}from"./lengthDimensionUtils.js";import{settings as h}from"./settings.js";import{LabelVisualElement as y}from"../../interactive/visualElements/LabelVisualElement.js";import{LineVisualElement as g}from"../../interactive/visualElements/LineVisualElement.js";import{MarkerVisualElement as _}from"../../interactive/visualElements/MarkerVisualElement.js";import{EuclideanSegment as S}from"../../interactive/visualElements/support/Segment.js";class b{constructor(t){this.destroyed=!1,this._handles=new e,this._labelSegment=new S;const{analysis:s,computation:n,view:o}=t;this.analysis=s,this.computation=n,this.view=o;const m=t.visible,d={view:o,attached:m};this._dimensionVisualElement=new g(d,t.dimensionLineMaterial),this._markerVisualElement=new _(d,t.markerMaterial),this._startPrimaryOffsetVisualElement=new g(d,t.primaryOffsetLineMaterial),this._endPrimaryOffsetVisualElement=new g(d,t.primaryOffsetLineMaterial),this._startSecondaryOffsetVisualElement=new g(d,t.secondaryOffsetLineMaterial),this._endSecondaryOffsetVisualElement=new g(d,t.secondaryOffsetLineMaterial);const c={type:"segment",sampleLocation:"center",segment:this._labelSegment,callout:!1};this._label=new y({view:o,attached:m,distance:0,geometry:c,fontSize:l(s.fontSize),textColor:s.textColor.clone(),backgroundColor:s.backgroundColor.clone()}),this._handles.add([r((()=>({geometry:n.geometry})),(({geometry:e})=>{const t=i(e);for(const s of this._geometryVisualElements())s.visible=t;t&&this._updateLines(e)}),a),r((()=>({length:n.length,geometry:n.geometry})),(({length:e,geometry:t})=>this._updateLabelContent(e,t)),a),r((()=>({geometry:n.geometry})),(({geometry:e})=>this.updateLabelGeometry(o.state.camera,e,s)),a)])}set visible(e){for(const t of this._visualElements())t.attached=e}destroy(){this.destroyed=!0,this._handles=t(this._handles);for(const e of this._visualElements())e.destroy()}get testInfo(){return{dimensionVisualElement:this._dimensionVisualElement,label:this._label}}_updateLines(e){this._dimensionVisualElement.setGeometryFromSegment(e.dimensionSegment),this._markerVisualElement.setGeometryFromSegment(e.dimensionSegment),this._startPrimaryOffsetVisualElement.setGeometryFromSegment(c(E,f.Start,e.cornerSegment,e.dimensionSegment)),this._endPrimaryOffsetVisualElement.setGeometryFromSegment(c(E,f.End,e.cornerSegment,e.dimensionSegment));const t=c(E,f.Start,e.directSegment,e.cornerSegment);o(t.startRenderSpace,t.endRenderSpace)?this._startSecondaryOffsetVisualElement.visible=!1:(this._startSecondaryOffsetVisualElement.visible=!0,this._startSecondaryOffsetVisualElement.setGeometryFromSegment(t));const s=c(E,f.End,e.directSegment,e.cornerSegment);o(s.startRenderSpace,s.endRenderSpace)?this._endSecondaryOffsetVisualElement.visible=!1:(this._endSecondaryOffsetVisualElement.visible=!0,this._endSecondaryOffsetVisualElement.setGeometryFromSegment(s))}updateLabelGeometry(e,t,i){if(s(t))return void(this._label.visible=!1);const{dimensionSegment:n,primaryOffsetAxis:r}=t,{offset:a}=this.computation.dimension,l=e.computeRenderPixelSizeAt(n.eval(.5,m.get())),o=(Math.sign(a)>=0?1:-1)*p(i)*l;u(this._labelSegment,n,r,o),this._label.updateLabelPosition()}updateLabelStyle(e){this._label.fontSize=l(e.fontSize),this._label.textColor=e.textColor,this._label.backgroundColor=e.backgroundColor}_updateLabelContent(e,t){if(s(e)||s(t))return this._label.text="",void(this._label.visible=!1);const{value:i}=n(e,"meters");this._label.text=`${d(i,{minimumFractionDigits:2,maximumFractionDigits:2})} m`,this._label.visible=!0}_geometryVisualElements(){return[this._dimensionVisualElement,this._markerVisualElement,this._startPrimaryOffsetVisualElement,this._endPrimaryOffsetVisualElement,this._startSecondaryOffsetVisualElement,this._endSecondaryOffsetVisualElement]}_visualElements(){return[...this._geometryVisualElements(),this._label]}}function p(e){return 1.5*l(e.fontSize)+h.labels.marginPx+l(e.lineWidth/2)}const E=new S;export{b as LengthDimensionVisualization};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.25/esri/copyright.txt for details.
4
4
  */
5
- import{LengthDimensionOffsetDirection as e,LengthDimensionAxis as t}from"../../../../analysis/dimensionUtils.js";import{deg2rad as n}from"../../../../core/mathUtils.js";import{isNone as r,isSome as s}from"../../../../core/maybe.js";import{d as a}from"../../../../chunks/mat4.js";import{c as i}from"../../../../chunks/mat4f64.js";import{c as o,z as c,m as d,y as f,f as p,e as m,g as S,F as u,n as R}from"../../../../chunks/vec3.js";import{c as g,Z as l}from"../../../../chunks/vec3f64.js";import{Axis as v}from"../../../../geometry/support/Axis.js";import{sv3d as h}from"../../../../geometry/support/vectorStacks.js";import{EuclideanSegment as x}from"../../interactive/visualElements/support/Segment.js";function A({startPoint:t,endPoint:n,offset:a,axis:i,offsetDirection:c,heading:d},f,p=null){if(r(t)||r(n))return null;const m=U(s(p)?p.directSegment:new x,{startPoint:t,endPoint:n},f),S=s(p)?p.primaryOffsetAxis:g(),u=c===e.Side;k(S,{axis:i,directSegment:m,offsetDirection:e.Up,heading:u?null:d},f);const R=s(p)?p.cornerSegment:new x;o(R.startRenderSpace,m.startRenderSpace),o(R.endRenderSpace,m.endRenderSpace),u&&(b(R,{offsetAxis:S,offset:0,relativeToSegment:m},f),k(S,{axis:i,directSegment:m,offsetDirection:c,heading:d},f));return{directSegment:m,cornerSegment:R,dimensionSegment:b(s(p)?p.dimensionSegment:new x,{offsetAxis:S,offset:a,relativeToSegment:R},f),primaryOffsetAxis:S,spatialReference:f.spatialReference}}function j(e,t,n,r){return t===P.Start?(o(e.startRenderSpace,n.startRenderSpace),o(e.endRenderSpace,r.startRenderSpace)):(o(e.startRenderSpace,n.endRenderSpace),o(e.endRenderSpace,r.endRenderSpace)),e}var P;function y(e,t,n,r){c(e.startRenderSpace,t.startRenderSpace,n,r),c(e.endRenderSpace,t.endRenderSpace,n,r)}function U(e,t,n){return n.toRenderCoords(t.startPoint,e.startRenderSpace),n.toRenderCoords(t.endPoint,e.endRenderSpace),e}function k(r,i,c){const{axis:g,directSegment:{startRenderSpace:x,endRenderSpace:A},directSegment:j,offsetDirection:P,heading:y}=i,U=j.eval(.5,h.get()),k=c.worldUpAtPosition(U,h.get()),b=c.worldBasisAtPosition(U,v.Y,h.get());let T=null;s(y)&&(a(D,-n(y),k),T=d(h.get(),b,D));const E=f(w,A,x);switch(g){case t.Horizontal:P===e.Up?o(r,k):s(T)?o(r,T):p(r,E,k);break;case t.Vertical:if(P===e.Up?(m(x,k)<m(A,k)?f(r,A,x):f(r,x,A),p(r,r,k),p(r,r,k)):s(T)?o(r,T):p(r,E,k),u(r,l))return o(r,b);break;case t.Direct:if(p(r,E,k),P===e.Up?p(r,r,E):s(T)&&m(r,T)<0&&S(r,r,-1),u(r,l))return o(r,b)}return R(r,r)}!function(e){e[e.Start=0]="Start",e[e.End=1]="End"}(P||(P={}));const w=g(),D=i();function b(e,t,n){const{offsetAxis:r,offset:s,relativeToSegment:{startRenderSpace:a,endRenderSpace:i},relativeToSegment:o}=t,d=s/n.unitInMeters,[f,p]=T(a,i,r,d);return c(e.startRenderSpace,o.startRenderSpace,r,f),c(e.endRenderSpace,o.endRenderSpace,r,p),e}function T(e,t,n,r=0){const s=m(t,n),a=m(e,n),i=Math.abs(s-a)+r;return s>a?[i,r]:[r,i]}function E(e,t,n){const r=t.directSegment.eval(.5,h.get());return n.worldUpAtPosition(r,e)}function O(e,t){const{startRenderSpace:n,endRenderSpace:r}=t.directSegment;return f(e,r,n)}function z(e,t){const{startRenderSpace:n,endRenderSpace:r}=t.dimensionSegment;return f(e,r,n)}function C(e,t){const n=e.directSegment.eval(.5,h.get());return t.headingAtPosition(n,e.primaryOffsetAxis)}export{P as OffsetSegmentLocation,A as computeGeometryFromDimension,j as computeSpanningSegment,z as dimensionStartToEnd,O as directStartToEnd,E as directUp,C as headingFromGeometry,y as offsetSegment};
5
+ import{LengthDimensionOffsetDirection as e,LengthDimensionAxis as t}from"../../../../analysis/dimensionUtils.js";import{deg2rad as n}from"../../../../core/mathUtils.js";import{isNone as r,isSome as s}from"../../../../core/maybe.js";import{d as a}from"../../../../chunks/mat4.js";import{c as i}from"../../../../chunks/mat4f64.js";import{c as o,q as c,v as d,p,f,e as S,g as m,F as u,n as R}from"../../../../chunks/vec3.js";import{c as g,Z as l}from"../../../../chunks/vec3f64.js";import{Axis as v}from"../../../../geometry/support/Axis.js";import{sv3d as h}from"../../../../geometry/support/vectorStacks.js";import{EuclideanSegment as x}from"../../interactive/visualElements/support/Segment.js";function A({startPoint:t,endPoint:n,offset:a,axis:i,offsetDirection:c,heading:d},p,f=null){if(r(t)||r(n))return null;const S=k(s(f)?f.directSegment:new x,{startPoint:t,endPoint:n},p),m=s(f)?f.primaryOffsetAxis:g(),u=c===e.Side;w(m,{axis:i,directSegment:S,offsetDirection:e.Up,heading:u?null:d},p);const R=s(f)?f.cornerSegment:new x;o(R.startRenderSpace,S.startRenderSpace),o(R.endRenderSpace,S.endRenderSpace),u&&(b(R,{offsetAxis:m,offset:0,relativeToSegment:S},p),w(m,{axis:i,directSegment:S,offsetDirection:c,heading:d},p));return{directSegment:S,cornerSegment:R,dimensionSegment:b(s(f)?f.dimensionSegment:new x,{offsetAxis:m,offset:a,relativeToSegment:R},p),primaryOffsetAxis:m,spatialReference:p.spatialReference}}function j(e,t,n,r){return t===P.Start?(o(e.startRenderSpace,n.startRenderSpace),o(e.endRenderSpace,r.startRenderSpace)):(o(e.startRenderSpace,n.endRenderSpace),o(e.endRenderSpace,r.endRenderSpace)),e}var P;function U(e,t,n,r){c(e.startRenderSpace,t.startRenderSpace,n,r),c(e.endRenderSpace,t.endRenderSpace,n,r)}function k(e,t,n){return n.toRenderCoords(t.startPoint,e.startRenderSpace),n.toRenderCoords(t.endPoint,e.endRenderSpace),e}function w(r,i,c){const{axis:g,directSegment:{startRenderSpace:x,endRenderSpace:A},directSegment:j,offsetDirection:P,heading:U}=i,k=j.eval(.5,h.get()),w=c.worldUpAtPosition(k,h.get()),b=c.worldBasisAtPosition(k,v.Y,h.get());let T=null;s(U)&&(a(D,-n(U),w),T=d(h.get(),b,D));const E=p(y,A,x);switch(g){case t.Horizontal:P===e.Up?o(r,w):s(T)?o(r,T):f(r,E,w);break;case t.Vertical:if(P===e.Up?(S(x,w)<S(A,w)?p(r,A,x):p(r,x,A),f(r,r,w),f(r,r,w)):s(T)?o(r,T):f(r,E,w),u(r,l))return o(r,b);break;case t.Direct:if(f(r,E,w),P===e.Up?f(r,r,E):s(T)&&S(r,T)<0&&m(r,r,-1),u(r,l))return o(r,b)}return R(r,r)}!function(e){e[e.Start=0]="Start",e[e.End=1]="End"}(P||(P={}));const y=g(),D=i();function b(e,t,n){const{offsetAxis:r,offset:s,relativeToSegment:{startRenderSpace:a,endRenderSpace:i},relativeToSegment:o}=t,d=s/n.unitInMeters,[p,f]=T(a,i,r,d);return c(e.startRenderSpace,o.startRenderSpace,r,p),c(e.endRenderSpace,o.endRenderSpace,r,f),e}function T(e,t,n,r=0){const s=S(t,n),a=S(e,n),i=Math.abs(s-a)+r;return s>a?[i,r]:[r,i]}function E(e,t,n){const r=t.directSegment.eval(.5,h.get());return n.worldUpAtPosition(r,e)}function O(e,t){const{startRenderSpace:n,endRenderSpace:r}=t.directSegment;return p(e,r,n)}function C(e,t){const{startRenderSpace:n,endRenderSpace:r}=t.dimensionSegment;return p(e,r,n)}function M(e,t){const n=e.directSegment.eval(.5,h.get());return t.headingAtPosition(n,e.primaryOffsetAxis)}export{P as OffsetSegmentLocation,A as computeGeometryFromDimension,j as computeSpanningSegment,C as dimensionStartToEnd,O as directStartToEnd,E as directUp,M as headingFromGeometry,U 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.25/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../../chunks/tslib.es6.js";import"../../../../geometry.js";import{getFeatureId as t}from"../../../../analysis/featureReferenceUtils.js";import o from"../../../../core/Accessor.js";import{createTask as i}from"../../../../core/asyncUtils.js";import n from"../../../../core/Evented.js";import r from"../../../../core/Handles.js";import{handlesGroup as s,makeHandle as a}from"../../../../core/handleUtils.js";import l from"../../../../core/Logger.js";import{isNone as c,isSome as d,abortMaybe as u,unwrapOr as p,none as h}from"../../../../core/maybe.js";import{ignoreAbortErrors as g}from"../../../../core/promiseUtils.js";import{initial as v}from"../../../../core/reactiveUtils.js";import{property as m}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as f}from"../../../../core/accessorSupport/decorators/subclass.js";import{c as _,i as b,b as y,n as C,g as I,a as T,j as P,y as O}from"../../../../chunks/vec3.js";import{c as S}from"../../../../chunks/vec3f64.js";import{WatchUpdatingTracking as j}from"../../../../core/support/WatchUpdatingTracking.js";import{projectOrLoad as w,projectBoundingRect as R}from"../../../../geometry/projection.js";import{empty as A,containsPointObject as E,intersectsSegment as H}from"../../../../geometry/support/aaBoundingRect.js";import{fromPoints as F,create as L}from"../../../../geometry/support/ray.js";import{zValueInAbsoluteHeightMode as V}from"../../../../support/elevationInfoUtils.js";import{LineOfSightAnalysisResult as D}from"../LineOfSightAnalysisResult.js";import{LineOfSightComputation as x}from"./LineOfSightComputation.js";import{LineOfSightRayIntersector as N}from"./LineOfSightRayIntersector.js";import{logFailedGeometryProjectionError as k}from"../support/projectionUtils.js";import{StoreResults as z}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{toGraphic as G,hasLod as U,getIntersectedFeatureBSRadius as M}from"../../webgl-engine/lib/intersectorUtilsConversions.js";import{ImmediateTask as Z,TaskPriority as q}from"../../../support/Scheduler.js";import B from"../../../../geometry/Point.js";const W="esri.views.3d.analysis.LineOfSight.LineOfSightController",J=l.getLogger(W);let K=class extends(n.EventedMixin(o)){constructor(e){super(e),this.updateOnCameraChange=!0,this._effectiveObserverElevationMode="absolute-height",this._observerFeatureId=null,this._updatingHandles=new j,this._frameTask=Z,this._handles=new r,this._computationHandles=new r,this._externalObserverUpdate=!0}initialize(){const e=this.view.resourceController?.scheduler;this._frameTask=e?e.registerTask(q.LINE_OF_SIGHT_TOOL):Z,this._intersector=new N({view:this.view}),this._handles.add([this._connectObserver(),this._connectComputations(),this._connectTargets()])}destroy(){this._handles.destroy(),this._computationHandles.destroy(),this._computations.removeAll(),this._updatingHandles.destroy()}get updating(){return this._frameTask.updating||this._updatingHandles.updating}get priority(){return this._frameTask.priority}set priority(e){this._frameTask.priority=e}get _computations(){return this.analysisViewData.computations}get _elevationAlignedObserverPositionRenderSpace(){return this.analysisViewData.observerEngineLocation}set _elevationAlignedObserverPositionRenderSpace(e){this.analysisViewData.observerEngineLocation=e}get _screenPixelSize(){return this.view.state.camera.computeScreenPixelSizeAt(this._elevationAlignedObserverPositionRenderSpace)}_computeResult(e){const t=e.computation,{inputPoints:o,computationResult:i}=t,{observerAdjusted:n,targetAdjusted:r}=o,{start:s,end:a}=i;_(s,n),_(a,r);this._canCompute(t)?this._computeIntersection(e):this._interpolateIntersection(e),t.notifyResultChanged(),this.emit("result-changed",{target:e.computation.target,result:t.result})}_updateAdjustedPointsFromFeatures(e){const o=this.view,{sceneIntersectionHelper:i}=o,{inputPoints:n}=e,{observerAdjusted:r,observerFeatureId:s,targetFeatureId:a,targetAdjusted:l}=n;if(c(s)&&c(a))return;const u=b(r,l),p=this._intersector.intersector,h=F(n.observer,n.target,Y);p.options.store=z.ALL,i.intersectToolIntersectorRay(h,p);let g=null,v=null,m=null,f=null;for(const _ of p.results.all){const e=G(_,this.view);if(c(e)||c(_.distanceInRenderSpace))continue;const i=t(e);c(i)||(d(s)&&i===s&&(c(g)&&(g=this._getFeatureDistanceThreshold(_,o,u)),_.distanceInRenderSpace<g&&(m=_)),d(a)&&i===a&&(c(v)&&(v=this._getFeatureDistanceThreshold(_,o,u)),c(f)&&_.distanceInRenderSpace<u&&u-_.distanceInRenderSpace<v&&(f=_)))}d(m)&&m.getIntersectionPoint(r)&&(n.observerSurfaceNormal=m.getTransformedNormal(S())),d(f)&&f.getIntersectionPoint(l)&&(n.targetSurfaceNormal=f.getTransformedNormal(S()))}_getFeatureDistanceThreshold(e,t,o){if(U(e)){const i=M(e,t);if(d(i))return Math.min(i*ee,o)}return 1e-5*o}_adjustStartEndPositions(e){const t=this._screenPixelSize,o=this.view,{inputPoints:i}=e,{observer:n,observerSurfaceNormal:r,target:s,targetSurfaceNormal:a,observerAdjusted:l,targetAdjusted:c}=i,u=X;_(l,n),_(c,s),this._updateAdjustedPointsFromFeatures(e),d(r)?_(u,r):y(u,c,l);const p=t;C(u,u),I(u,u,Math.min(p,1)),T(l,l,u),d(a)?_(u,a):y(u,l,c);const h=o.state.camera.computeScreenPixelSizeAt(c);C(u,u),I(u,u,Math.min(h,1)),T(c,c,u)}_computeIntersection({computation:e,interpolationInfo:t}){const{view:o}=this,{sceneIntersectionHelper:i,renderCoordsHelper:n}=o;if(c(i))return;const r=this._intersector.intersector,{computationResult:s,inputPoints:a}=e,{observer:l,target:u}=a,{start:p,end:h}=s,g=F(p,h,Y);r.options.store=z.MIN,i.intersectToolIntersectorRay(g,r);const v=r.results.min,m=s.intersection,f=X;let b=!0;if(d(v)&&v.getIntersectionPoint(m)){_(t.originalIntersection,m),_(t.originalObserver,p),_(t.originalTarget,h),n.fromRenderCoords(m,f,o.spatialReference);const e=1-P(h,u)/P(p,u);b=P(l,m)>=e*P(l,u)}const y=new B(f,o.spatialReference);{const{result:t,target:i}=e;d(t)?(t.target=i,t.intersectedGraphic=b?null:G(v,o),t.intersectedLocation=b?null:y,t.visible=b):e.result=new D({target:i,elevationAlignedTargetLocation:e.elevationAlignedTargetLocation,intersectedGraphic:b?null:G(v,o),intersectedLocation:b?null:y,visible:b})}s.isValid=a.isValid=!0,s.isTargetVisible=b}_interpolateIntersection({computation:e,interpolationInfo:t}){const{computationResult:o,inputPoints:i}=e,{start:n,end:r,intersection:s}=o,{originalIntersection:a,originalObserver:l,originalTarget:c}=t;if(_(s,a),i.isValid){const e=X,t=P(l,a)/P(l,c);O(e,n,l),I(e,e,1-t),T(s,s,e),O(e,r,c),I(e,e,t),T(s,s,e),o.isValid=!0}else e.result=null,o.isValid=!1,o.isTargetVisible=!1}_canCompute(e){const t=this.analysisViewData.elevationAlignedObserver,o=this.view.frustum;if(c(t)||c(e.elevationAlignedTargetLocation)||c(o))return!1;const{observerAdjusted:i,targetAdjusted:n}=e.inputPoints,r=o.intersectsPoint(i),s=o.intersectsPoint(n);return r&&s}_onObserverPositionChange(e,o,i,n,r){if(this._externalObserverUpdate=r,c(e))return this.analysisViewData.elevationAlignedObserver=null,void(this._observerFeatureId=null);if(c(o))return k(this.analysis,e.spatialReference,J),void(this.analysisViewData.elevationAlignedObserver=null);const s=this._getEffectiveElevationInfo(o,i),{absoluteZ:a,elevation:l}=V(o.x,o.y,o.z,this.view.spatialReference,this.view,s),d=o.clone();d.z=a,this._effectiveObserverElevationMode=s.mode,this.analysisViewData.elevationAlignedObserver=d;const u=S();this.view.renderCoordsHelper.toRenderCoords(d,u),this._elevationAlignedObserverPositionRenderSpace=u,this._observerGroundOffsetRenderSpace=a-l,this._observerFeatureId=t(n),this.priority=q.LINE_OF_SIGHT_TOOL_INTERACTIVE}_onObserverRenderSpacePositionChangeForComputation(e,t,o,i,n){const{inputPoints:r}=e;switch(_(r.observer,t),r.observerFeatureId=n,r.observerSurfaceNormal=null,i){case"on-the-ground":case"relative-to-ground":{const e=this._intersector.updateFromGroundIntersection(r.observer,o,r.observer);c(r.observerFeatureId)&&(r.observerSurfaceNormal=e)}}this._adjustStartEndPositions(e),e.notifyInputPointsChanged(),this.priority=q.LINE_OF_SIGHT_TOOL_INTERACTIVE}_onTargetPositionChange(e,o,i,n,r,s=!0){const a=e.inputPoints;if(s&&(a.isValid=!1),c(i))return d(o)&&k(this.analysis,o.spatialReference,J),e.elevationAlignedTargetLocation=null,void e.notifyInputPointsChanged();const l=this._getEffectiveElevationInfo(i,n),{absoluteZ:u,elevation:p}=V(i.x,i.y,i.z,this.view.spatialReference,this.view,l),h=i.clone();switch(h.z=u,e.elevationAlignedTargetLocation=h,this.view.renderCoordsHelper.toRenderCoords(e.elevationAlignedTargetLocation,a.target),a.targetFeatureId=t(r),a.targetSurfaceNormal=null,l.mode){case"on-the-ground":case"relative-to-ground":{const e=this._intersector.updateFromGroundIntersection(a.target,u-p,a.target);c(a.targetFeatureId)&&(a.targetSurfaceNormal=e)}}this._adjustStartEndPositions(e),e.notifyInputPointsChanged(),this.priority=q.LINE_OF_SIGHT_TOOL_INTERACTIVE}_connectComputationToTarget(e){return s([this._updatingHandles.add((()=>({computation:e,targetPosition:e.target.position,targetElevationInfo:e.target.elevationInfo,targetFeatureInfo:e.target.feature,projectedTargetPosition:w(e.target.position,this.view.spatialReference)})),(({computation:e,targetPosition:t,targetElevationInfo:o,targetFeatureInfo:i,projectedTargetPosition:n})=>{d(n.pending)?this._updatingHandles.addPromise(n.pending):this._onTargetPositionChange(e,t,n.geometry,o,i)}),v)])}_connectComputationToObserver(e){return this._updatingHandles.add((()=>({computation:e,observer:this.analysisViewData.elevationAlignedObserver})),(({computation:e})=>{this._externalObserverUpdate&&(e.inputPoints.isValid=!1,e.notifyInputPointsChanged())}),v)}_connectComputationToRenderSpaceObserver(e){return this._updatingHandles.add((()=>({computation:e,observer:this._elevationAlignedObserverPositionRenderSpace,observerGroundOffset:this._observerGroundOffsetRenderSpace,observerElevationMode:this._effectiveObserverElevationMode,observerFeatureId:this._observerFeatureId})),(({computation:e,observer:t,observerGroundOffset:o,observerElevationMode:i,observerFeatureId:n})=>{this._onObserverRenderSpacePositionChangeForComputation(e,t,o,i,n)}),v)}_connectComputationToCamera(e){return this._updatingHandles.add((()=>({camera:this.view.state.camera,isDirty:this._isCameraDirty})),(({isDirty:t})=>{!this.updateOnCameraChange||e.inputPoints.isValid&&!t||e.notifyInputPointsChanged()}))}_connectComputationToSlicePlane(e){return this._updatingHandles.add((()=>this.view.slicePlane),(()=>{e.inputPoints.isValid=!1,e.notifyInputPointsChanged()}))}_connectComputationToElevation(e){const t=(o,i)=>{const n=this.analysis.observer,r=e.target;let s=null,a=null,l=null,u=null,p=null,h=null;if(d(n)&&d(n.position)){const e=w(n.position,this.view.spatialReference);if(d(e.pending))return this._updatingHandles.addPromise(e.pending),void e.pending.finally((()=>t(o,i)));s=e.geometry,a=n.elevationInfo,l=n.feature}if(d(r.position)){const e=w(r.position,this.view.spatialReference);if(d(e.pending))return this._updatingHandles.addPromise(e.pending),void e.pending.finally((()=>t(o,i)));u=e.geometry,p=r.elevationInfo,h=r.feature}c(s)&&c(u)||(R(o,i,$,this.view.spatialReference),d(s)&&E($,s)&&this._onObserverPositionChange(d(n)?n.position:null,s,a,l,!1),d(u)&&E($,u)&&this._onTargetPositionChange(e,r.position,u,p,h,!1),d(s)&&d(u)&&H($,s,u)&&e.notifyInputPointsChanged())};return this.view.elevationProvider.on("elevation-change",(e=>t(e.extent,e.spatialReference)))}_connectComputationToTask(e){let t=h;const o={computation:e,interpolationInfo:{originalIntersection:S(),originalObserver:S(),originalTarget:S()}};return s([this._updatingHandles.add((()=>e.inputPoints),(()=>{t=u(t),t=i((async e=>{await g(this._frameTask.schedule((()=>this._computeResult(o)),e))}))}),{initial:!0,equals:()=>!1}),a((()=>t=u(t)))])}_connectComputation(e){const t=this._computationHandles;t.has(e)||t.add([this._connectComputationToTarget(e),this._connectComputationToObserver(e),this._connectComputationToRenderSpaceObserver(e),this._connectComputationToCamera(e),this._connectComputationToSlicePlane(e),this._connectComputationToElevation(e),this._connectComputationToTask(e)],e)}_disconnectComputation(e){this._computationHandles.remove(e)}_onComputationCollectionChange({added:e,removed:t}){for(const o of t)this._disconnectComputation(o);for(const o of e)this._connectComputation(o)}_onTargetCollectionChange({added:e,removed:t}){for(const o of t)this._removeTarget(o);for(const o of e)this._addTarget(o)}_onCursorTargetChange(e,t){d(t)&&this._removeTarget(t),d(e)&&this._addTarget(e)}_addTarget(e){this._computations.some((t=>t.target===e))||this._computations.add(new x({target:e}))}_removeTarget(e){const t=this._computations.findIndex((t=>t.target===e));this._computations.removeAt(t)}_connectObserver(){return s([this._updatingHandles.add((()=>({observerPosition:d(this.analysis.observer)?this.analysis.observer.position:null,projectedObserverPosition:w(d(this.analysis.observer)?this.analysis.observer.position:null,this.view.spatialReference),observerElevationInfo:d(this.analysis.observer)?this.analysis.observer.elevationInfo:null,observerFeatureInfo:d(this.analysis.observer)?this.analysis.observer.feature:null})),(({observerPosition:e,projectedObserverPosition:t,observerElevationInfo:o,observerFeatureInfo:i})=>{d(t.pending)?this._updatingHandles.addPromise(t.pending):this._onObserverPositionChange(e,t.geometry,o,i,!0)}),v)])}_connectComputations(){return this._updatingHandles.addOnCollectionChange((()=>this._computations),(e=>this._onComputationCollectionChange(e)),{initial:!0,final:!0})}_connectTargets(){return s([this._updatingHandles.addOnCollectionChange((()=>this.analysis.targets),(e=>this._onTargetCollectionChange(e)),{initial:!0,final:!0}),this._updatingHandles.add((()=>this.analysisViewData.cursorTarget),((e,t)=>{this._onCursorTargetChange(e,t)}))])}get _isCameraDirty(){const e=this.analysisViewData.elevationAlignedObserver,{view:t}=this,{renderCoordsHelper:o}=t;if(c(e)||c(o))return!1;const i=X;o.toRenderCoords(e,i);const n=t.state.camera.computeScreenPixelSizeAt(i);return Math.abs((n-this._screenPixelSize)/this._screenPixelSize)>Q}_getEffectiveElevationInfo(e,t){return e.hasZ?p(t,{mode:"absolute-height",offset:0}):{mode:"on-the-ground",offset:0}}};e([m({constructOnly:!0})],K.prototype,"analysis",void 0),e([m({constructOnly:!0})],K.prototype,"analysisViewData",void 0),e([m({constructOnly:!0})],K.prototype,"view",void 0),e([m()],K.prototype,"updating",null),e([m()],K.prototype,"priority",null),e([m()],K.prototype,"updateOnCameraChange",void 0),e([m()],K.prototype,"_computations",null),e([m()],K.prototype,"_elevationAlignedObserverPositionRenderSpace",null),e([m()],K.prototype,"_observerGroundOffsetRenderSpace",void 0),e([m()],K.prototype,"_effectiveObserverElevationMode",void 0),e([m()],K.prototype,"_observerFeatureId",void 0),e([m()],K.prototype,"_screenPixelSize",null),e([m({readOnly:!0})],K.prototype,"_updatingHandles",void 0),e([m()],K.prototype,"_frameTask",void 0),e([m()],K.prototype,"_isCameraDirty",null),K=e([f(W)],K);const Q=.1,X=S(),Y=L(),$=A(),ee=.05;export{K as LineOfSightController};
5
+ import{_ as e}from"../../../../chunks/tslib.es6.js";import"../../../../geometry.js";import{getFeatureId as t}from"../../../../analysis/featureReferenceUtils.js";import o from"../../../../core/Accessor.js";import{createTask as i}from"../../../../core/asyncUtils.js";import n from"../../../../core/Evented.js";import r from"../../../../core/Handles.js";import{handlesGroup as s,makeHandle as a}from"../../../../core/handleUtils.js";import l from"../../../../core/Logger.js";import{isNone as c,isSome as d,abortMaybe as u,unwrapOr as p,none as h}from"../../../../core/maybe.js";import{ignoreAbortErrors as g}from"../../../../core/promiseUtils.js";import{initial as v}from"../../../../core/reactiveUtils.js";import{property as m}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as f}from"../../../../core/accessorSupport/decorators/subclass.js";import{c as _,i as b,b as y,n as C,g as I,a as T,j as P,p as O}from"../../../../chunks/vec3.js";import{c as S}from"../../../../chunks/vec3f64.js";import{WatchUpdatingTracking as j}from"../../../../core/support/WatchUpdatingTracking.js";import{projectOrLoad as w,projectBoundingRect as R}from"../../../../geometry/projection.js";import{empty as A,containsPointObject as E,intersectsSegment as H}from"../../../../geometry/support/aaBoundingRect.js";import{fromPoints as F,create as L}from"../../../../geometry/support/ray.js";import{zValueInAbsoluteHeightMode as V}from"../../../../support/elevationInfoUtils.js";import{LineOfSightAnalysisResult as D}from"../LineOfSightAnalysisResult.js";import{LineOfSightComputation as x}from"./LineOfSightComputation.js";import{LineOfSightRayIntersector as N}from"./LineOfSightRayIntersector.js";import{logFailedGeometryProjectionError as k}from"../support/projectionUtils.js";import{StoreResults as z}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{toGraphic as G,hasLod as U,getIntersectedFeatureBSRadius as M}from"../../webgl-engine/lib/intersectorUtilsConversions.js";import{ImmediateTask as Z,TaskPriority as q}from"../../../support/Scheduler.js";import B from"../../../../geometry/Point.js";const W="esri.views.3d.analysis.LineOfSight.LineOfSightController",J=l.getLogger(W);let K=class extends(n.EventedMixin(o)){constructor(e){super(e),this.updateOnCameraChange=!0,this._effectiveObserverElevationMode="absolute-height",this._observerFeatureId=null,this._updatingHandles=new j,this._frameTask=Z,this._handles=new r,this._computationHandles=new r,this._externalObserverUpdate=!0}initialize(){const e=this.view.resourceController?.scheduler;this._frameTask=e?e.registerTask(q.LINE_OF_SIGHT_TOOL):Z,this._intersector=new N({view:this.view}),this._handles.add([this._connectObserver(),this._connectComputations(),this._connectTargets()])}destroy(){this._handles.destroy(),this._computationHandles.destroy(),this._computations.removeAll(),this._updatingHandles.destroy()}get updating(){return this._frameTask.updating||this._updatingHandles.updating}get priority(){return this._frameTask.priority}set priority(e){this._frameTask.priority=e}get _computations(){return this.analysisViewData.computations}get _elevationAlignedObserverPositionRenderSpace(){return this.analysisViewData.observerEngineLocation}set _elevationAlignedObserverPositionRenderSpace(e){this.analysisViewData.observerEngineLocation=e}get _screenPixelSize(){return this.view.state.camera.computeScreenPixelSizeAt(this._elevationAlignedObserverPositionRenderSpace)}_computeResult(e){const t=e.computation,{inputPoints:o,computationResult:i}=t,{observerAdjusted:n,targetAdjusted:r}=o,{start:s,end:a}=i;_(s,n),_(a,r);this._canCompute(t)?this._computeIntersection(e):this._interpolateIntersection(e),t.notifyResultChanged(),this.emit("result-changed",{target:e.computation.target,result:t.result})}_updateAdjustedPointsFromFeatures(e){const o=this.view,{sceneIntersectionHelper:i}=o,{inputPoints:n}=e,{observerAdjusted:r,observerFeatureId:s,targetFeatureId:a,targetAdjusted:l}=n;if(c(s)&&c(a))return;const u=b(r,l),p=this._intersector.intersector,h=F(n.observer,n.target,Y);p.options.store=z.ALL,i.intersectToolIntersectorRay(h,p);let g=null,v=null,m=null,f=null;for(const _ of p.results.all){const e=G(_,this.view);if(c(e)||c(_.distanceInRenderSpace))continue;const i=t(e);c(i)||(d(s)&&i===s&&(c(g)&&(g=this._getFeatureDistanceThreshold(_,o,u)),_.distanceInRenderSpace<g&&(m=_)),d(a)&&i===a&&(c(v)&&(v=this._getFeatureDistanceThreshold(_,o,u)),c(f)&&_.distanceInRenderSpace<u&&u-_.distanceInRenderSpace<v&&(f=_)))}d(m)&&m.getIntersectionPoint(r)&&(n.observerSurfaceNormal=m.getTransformedNormal(S())),d(f)&&f.getIntersectionPoint(l)&&(n.targetSurfaceNormal=f.getTransformedNormal(S()))}_getFeatureDistanceThreshold(e,t,o){if(U(e)){const i=M(e,t);if(d(i))return Math.min(i*ee,o)}return 1e-5*o}_adjustStartEndPositions(e){const t=this._screenPixelSize,o=this.view,{inputPoints:i}=e,{observer:n,observerSurfaceNormal:r,target:s,targetSurfaceNormal:a,observerAdjusted:l,targetAdjusted:c}=i,u=X;_(l,n),_(c,s),this._updateAdjustedPointsFromFeatures(e),d(r)?_(u,r):y(u,c,l);const p=t;C(u,u),I(u,u,Math.min(p,1)),T(l,l,u),d(a)?_(u,a):y(u,l,c);const h=o.state.camera.computeScreenPixelSizeAt(c);C(u,u),I(u,u,Math.min(h,1)),T(c,c,u)}_computeIntersection({computation:e,interpolationInfo:t}){const{view:o}=this,{sceneIntersectionHelper:i,renderCoordsHelper:n}=o;if(c(i))return;const r=this._intersector.intersector,{computationResult:s,inputPoints:a}=e,{observer:l,target:u}=a,{start:p,end:h}=s,g=F(p,h,Y);r.options.store=z.MIN,i.intersectToolIntersectorRay(g,r);const v=r.results.min,m=s.intersection,f=X;let b=!0;if(d(v)&&v.getIntersectionPoint(m)){_(t.originalIntersection,m),_(t.originalObserver,p),_(t.originalTarget,h),n.fromRenderCoords(m,f,o.spatialReference);const e=1-P(h,u)/P(p,u);b=P(l,m)>=e*P(l,u)}const y=new B(f,o.spatialReference);{const{result:t,target:i}=e;d(t)?(t.target=i,t.intersectedGraphic=b?null:G(v,o),t.intersectedLocation=b?null:y,t.visible=b):e.result=new D({target:i,elevationAlignedTargetLocation:e.elevationAlignedTargetLocation,intersectedGraphic:b?null:G(v,o),intersectedLocation:b?null:y,visible:b})}s.isValid=a.isValid=!0,s.isTargetVisible=b}_interpolateIntersection({computation:e,interpolationInfo:t}){const{computationResult:o,inputPoints:i}=e,{start:n,end:r,intersection:s}=o,{originalIntersection:a,originalObserver:l,originalTarget:c}=t;if(_(s,a),i.isValid){const e=X,t=P(l,a)/P(l,c);O(e,n,l),I(e,e,1-t),T(s,s,e),O(e,r,c),I(e,e,t),T(s,s,e),o.isValid=!0}else e.result=null,o.isValid=!1,o.isTargetVisible=!1}_canCompute(e){const t=this.analysisViewData.elevationAlignedObserver,o=this.view.frustum;if(c(t)||c(e.elevationAlignedTargetLocation)||c(o))return!1;const{observerAdjusted:i,targetAdjusted:n}=e.inputPoints,r=o.intersectsPoint(i),s=o.intersectsPoint(n);return r&&s}_onObserverPositionChange(e,o,i,n,r){if(this._externalObserverUpdate=r,c(e))return this.analysisViewData.elevationAlignedObserver=null,void(this._observerFeatureId=null);if(c(o))return k(this.analysis,e.spatialReference,J),void(this.analysisViewData.elevationAlignedObserver=null);const s=this._getEffectiveElevationInfo(o,i),{absoluteZ:a,elevation:l}=V(o.x,o.y,o.z,this.view.spatialReference,this.view,s),d=o.clone();d.z=a,this._effectiveObserverElevationMode=s.mode,this.analysisViewData.elevationAlignedObserver=d;const u=S();this.view.renderCoordsHelper.toRenderCoords(d,u),this._elevationAlignedObserverPositionRenderSpace=u,this._observerGroundOffsetRenderSpace=a-l,this._observerFeatureId=t(n),this.priority=q.LINE_OF_SIGHT_TOOL_INTERACTIVE}_onObserverRenderSpacePositionChangeForComputation(e,t,o,i,n){const{inputPoints:r}=e;switch(_(r.observer,t),r.observerFeatureId=n,r.observerSurfaceNormal=null,i){case"on-the-ground":case"relative-to-ground":{const e=this._intersector.updateFromGroundIntersection(r.observer,o,r.observer);c(r.observerFeatureId)&&(r.observerSurfaceNormal=e)}}this._adjustStartEndPositions(e),e.notifyInputPointsChanged(),this.priority=q.LINE_OF_SIGHT_TOOL_INTERACTIVE}_onTargetPositionChange(e,o,i,n,r,s=!0){const a=e.inputPoints;if(s&&(a.isValid=!1),c(i))return d(o)&&k(this.analysis,o.spatialReference,J),e.elevationAlignedTargetLocation=null,void e.notifyInputPointsChanged();const l=this._getEffectiveElevationInfo(i,n),{absoluteZ:u,elevation:p}=V(i.x,i.y,i.z,this.view.spatialReference,this.view,l),h=i.clone();switch(h.z=u,e.elevationAlignedTargetLocation=h,this.view.renderCoordsHelper.toRenderCoords(e.elevationAlignedTargetLocation,a.target),a.targetFeatureId=t(r),a.targetSurfaceNormal=null,l.mode){case"on-the-ground":case"relative-to-ground":{const e=this._intersector.updateFromGroundIntersection(a.target,u-p,a.target);c(a.targetFeatureId)&&(a.targetSurfaceNormal=e)}}this._adjustStartEndPositions(e),e.notifyInputPointsChanged(),this.priority=q.LINE_OF_SIGHT_TOOL_INTERACTIVE}_connectComputationToTarget(e){return s([this._updatingHandles.add((()=>({computation:e,targetPosition:e.target.position,targetElevationInfo:e.target.elevationInfo,targetFeatureInfo:e.target.feature,projectedTargetPosition:w(e.target.position,this.view.spatialReference)})),(({computation:e,targetPosition:t,targetElevationInfo:o,targetFeatureInfo:i,projectedTargetPosition:n})=>{d(n.pending)?this._updatingHandles.addPromise(n.pending):this._onTargetPositionChange(e,t,n.geometry,o,i)}),v)])}_connectComputationToObserver(e){return this._updatingHandles.add((()=>({computation:e,observer:this.analysisViewData.elevationAlignedObserver})),(({computation:e})=>{this._externalObserverUpdate&&(e.inputPoints.isValid=!1,e.notifyInputPointsChanged())}),v)}_connectComputationToRenderSpaceObserver(e){return this._updatingHandles.add((()=>({computation:e,observer:this._elevationAlignedObserverPositionRenderSpace,observerGroundOffset:this._observerGroundOffsetRenderSpace,observerElevationMode:this._effectiveObserverElevationMode,observerFeatureId:this._observerFeatureId})),(({computation:e,observer:t,observerGroundOffset:o,observerElevationMode:i,observerFeatureId:n})=>{this._onObserverRenderSpacePositionChangeForComputation(e,t,o,i,n)}),v)}_connectComputationToCamera(e){return this._updatingHandles.add((()=>({camera:this.view.state.camera,isDirty:this._isCameraDirty})),(({isDirty:t})=>{!this.updateOnCameraChange||e.inputPoints.isValid&&!t||e.notifyInputPointsChanged()}))}_connectComputationToSlicePlane(e){return this._updatingHandles.add((()=>this.view.slicePlane),(()=>{e.inputPoints.isValid=!1,e.notifyInputPointsChanged()}))}_connectComputationToElevation(e){const t=(o,i)=>{const n=this.analysis.observer,r=e.target;let s=null,a=null,l=null,u=null,p=null,h=null;if(d(n)&&d(n.position)){const e=w(n.position,this.view.spatialReference);if(d(e.pending))return this._updatingHandles.addPromise(e.pending),void e.pending.finally((()=>t(o,i)));s=e.geometry,a=n.elevationInfo,l=n.feature}if(d(r.position)){const e=w(r.position,this.view.spatialReference);if(d(e.pending))return this._updatingHandles.addPromise(e.pending),void e.pending.finally((()=>t(o,i)));u=e.geometry,p=r.elevationInfo,h=r.feature}c(s)&&c(u)||(R(o,i,$,this.view.spatialReference),d(s)&&E($,s)&&this._onObserverPositionChange(d(n)?n.position:null,s,a,l,!1),d(u)&&E($,u)&&this._onTargetPositionChange(e,r.position,u,p,h,!1),d(s)&&d(u)&&H($,s,u)&&e.notifyInputPointsChanged())};return this.view.elevationProvider.on("elevation-change",(e=>t(e.extent,e.spatialReference)))}_connectComputationToTask(e){let t=h;const o={computation:e,interpolationInfo:{originalIntersection:S(),originalObserver:S(),originalTarget:S()}};return s([this._updatingHandles.add((()=>e.inputPoints),(()=>{t=u(t),t=i((async e=>{await g(this._frameTask.schedule((()=>this._computeResult(o)),e))}))}),{initial:!0,equals:()=>!1}),a((()=>t=u(t)))])}_connectComputation(e){const t=this._computationHandles;t.has(e)||t.add([this._connectComputationToTarget(e),this._connectComputationToObserver(e),this._connectComputationToRenderSpaceObserver(e),this._connectComputationToCamera(e),this._connectComputationToSlicePlane(e),this._connectComputationToElevation(e),this._connectComputationToTask(e)],e)}_disconnectComputation(e){this._computationHandles.remove(e)}_onComputationCollectionChange({added:e,removed:t}){for(const o of t)this._disconnectComputation(o);for(const o of e)this._connectComputation(o)}_onTargetCollectionChange({added:e,removed:t}){for(const o of t)this._removeTarget(o);for(const o of e)this._addTarget(o)}_onCursorTargetChange(e,t){d(t)&&this._removeTarget(t),d(e)&&this._addTarget(e)}_addTarget(e){this._computations.some((t=>t.target===e))||this._computations.add(new x({target:e}))}_removeTarget(e){const t=this._computations.findIndex((t=>t.target===e));this._computations.removeAt(t)}_connectObserver(){return s([this._updatingHandles.add((()=>({observerPosition:d(this.analysis.observer)?this.analysis.observer.position:null,projectedObserverPosition:w(d(this.analysis.observer)?this.analysis.observer.position:null,this.view.spatialReference),observerElevationInfo:d(this.analysis.observer)?this.analysis.observer.elevationInfo:null,observerFeatureInfo:d(this.analysis.observer)?this.analysis.observer.feature:null})),(({observerPosition:e,projectedObserverPosition:t,observerElevationInfo:o,observerFeatureInfo:i})=>{d(t.pending)?this._updatingHandles.addPromise(t.pending):this._onObserverPositionChange(e,t.geometry,o,i,!0)}),v)])}_connectComputations(){return this._updatingHandles.addOnCollectionChange((()=>this._computations),(e=>this._onComputationCollectionChange(e)),{initial:!0,final:!0})}_connectTargets(){return s([this._updatingHandles.addOnCollectionChange((()=>this.analysis.targets),(e=>this._onTargetCollectionChange(e)),{initial:!0,final:!0}),this._updatingHandles.add((()=>this.analysisViewData.cursorTarget),((e,t)=>{this._onCursorTargetChange(e,t)}))])}get _isCameraDirty(){const e=this.analysisViewData.elevationAlignedObserver,{view:t}=this,{renderCoordsHelper:o}=t;if(c(e)||c(o))return!1;const i=X;o.toRenderCoords(e,i);const n=t.state.camera.computeScreenPixelSizeAt(i);return Math.abs((n-this._screenPixelSize)/this._screenPixelSize)>Q}_getEffectiveElevationInfo(e,t){return e.hasZ?p(t,{mode:"absolute-height",offset:0}):{mode:"on-the-ground",offset:0}}};e([m({constructOnly:!0})],K.prototype,"analysis",void 0),e([m({constructOnly:!0})],K.prototype,"analysisViewData",void 0),e([m({constructOnly:!0})],K.prototype,"view",void 0),e([m()],K.prototype,"updating",null),e([m()],K.prototype,"priority",null),e([m()],K.prototype,"updateOnCameraChange",void 0),e([m()],K.prototype,"_computations",null),e([m()],K.prototype,"_elevationAlignedObserverPositionRenderSpace",null),e([m()],K.prototype,"_observerGroundOffsetRenderSpace",void 0),e([m()],K.prototype,"_effectiveObserverElevationMode",void 0),e([m()],K.prototype,"_observerFeatureId",void 0),e([m()],K.prototype,"_screenPixelSize",null),e([m({readOnly:!0})],K.prototype,"_updatingHandles",void 0),e([m()],K.prototype,"_frameTask",void 0),e([m()],K.prototype,"_isCameraDirty",null),K=e([f(W)],K);const Q=.1,X=S(),Y=L(),$=A(),ee=.05;export{K as LineOfSightController};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.25/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../../../../chunks/tslib.es6.js";import e from"../../../../analysis/SlicePlane.js";import{clock as i}from"../../../../core/clock.js";import a from"../../../../core/Handles.js";import{releaseMaybe as s,destroyMaybe as n,isSome as r,isNone as l,removeMaybe as o}from"../../../../core/maybe.js";import{watch as h,sync as p,syncAndInitial as u}from"../../../../core/reactiveUtils.js";import{addFrameTask as c}from"../../../../core/scheduling.js";import{createScreenPoint as d,screenPointObjectToArray as _,createScreenPointArray as v}from"../../../../core/screenUtils.js";import{property as P}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as y}from"../../../../core/accessorSupport/decorators/subclass.js";import{d as m,C as g,m as w}from"../../../../chunks/mat4.js";import{e as f,l as M,c as D,g as T,a as V,m as b,n as k,s as E}from"../../../../chunks/vec3.js";import{a as S,c as H}from"../../../../chunks/vec3f64.js";import{a as x,c as I,n as R,f as j}from"../../../../chunks/boundedPlane.js";import{signedDistance as C,create as O,intersectRay as z,normal as G}from"../../../../geometry/support/plane.js";import{create as U}from"../../../../geometry/support/ray.js";import{sv3d as L,sm4d as K,sv2d as A}from"../../../../geometry/support/vectorStacks.js";import{POINTER_MOVE_TIMER_MS as B,PLANE_PREVIEW_OUTLINE_WIDTH as F,forceVerticalModifier as N,forceHorizontalModifier as q,PLANE_OUTLINE_COLOR as Z,PLANE_BACKGROUND_COLOR as J,PREVIEW_FADE_DOT_THRESHOLD as Q,PREVIEW_FADE_DURATION_SECONDS as W,INITIAL_DEPTH_OFFSET_FRAC as X}from"./sliceToolConfig.js";import{createShiftManipulator as Y,createRotateManipulator as $,createResizeManipulator as tt,createGridVisualElement as et,createOutlineVisualElement as it,planeToShape as at,createRotatePlane as st,RotationAxis as nt,resizePlane as rt,calculatePlaneHalfSize as lt,SliceOrientation as ot,createPlane as ht,DidPointerMoveRecentlyFlag as pt,calculateBoundedPlaneTranslateRotate as ut,updateShiftRestartHandle as ct,updateRotateHeadingHandle as dt,updateRotateTiltHandle as _t,updateResizeHandle as vt,createShiftPlane as Pt}from"./sliceToolUtils.js";import{getRotateHeadingTexture as yt,getTiltRotateTexture as mt}from"./images/Factory.js";import{calculateInputRotationTransform as gt}from"../../interactive/manipulatorUtils.js";import{screenToRenderPlane as wt}from"../../interactive/editingTools/dragEventPipeline3D.js";import{fromScreen as ft}from"../../support/geometryUtils/ray.js";import{newIntersector as Mt}from"../../webgl-engine/lib/Intersector.js";import{StoreResults as Dt}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{AnalysisToolBase as Tt}from"../../../interactive/AnalysisToolBase.js";import{createManipulatorDragEventPipeline as Vt}from"../../../interactive/dragEventPipeline.js";import{createScreenPointFromEvent as bt}from"../../../support/screenUtils.js";var kt;let Et=kt=class extends Tt{constructor(t){super(t),this._clock=i,this._previewPlaneOpacity=1,this.removeIncompleteOnCancel=!1,this.layersMode="none",this.shiftManipulator=null,this.rotateHeadingManipulator=null,this.rotateTiltManipulator=null,this.resizeManipulators=null,this._handles=new a,this._viewHandles=new a,this._frameTask=null,this._pointerMoveTimerMs=B,this._prevPointerMoveTimeout=null,this._previewPlaneGridVisualElement=null,this._previewPlaneOutlineVisualElement=null,this._startPlane=x(),this._previewPlane=null,this._activeKeyModifiers={},this._lastCursorPosition=d(),this._resizeHandles=[{direction:[1,0]},{direction:[1,1]},{direction:[0,1]},{direction:[-1,1]},{direction:[-1,0]},{direction:[-1,-1]},{direction:[0,-1]},{direction:[1,-1]}],this._intersector=Mt(t.view.state.viewingMode),this._intersector.options.store=Dt.MIN}initialize(){if(null==this.analysis)throw new Error("SliceTool requires valid analysis, but null was provided.");this._rotateHeadingImage=yt(this.view.toolViewManager.textures),this._rotateTiltImage=mt(this.view.toolViewManager.textures);const t=t=>{this._updateManipulatorsInteractive(t),t.grabbing||(r(this.analysisViewData.plane)&&I(this.analysisViewData.plane,this._startPlane),this.inputState=null)};this.shiftManipulator=Y(this.view),this.manipulators.add(this.shiftManipulator),this.shiftManipulator.events.on("grab-changed",(e=>{this._onShiftGrab(e),t(this.shiftManipulator)})),this._handles.add(this._createShiftDragPipeline(this.shiftManipulator)),this.rotateHeadingManipulator=$(this.view,this._rotateHeadingImage.texture),this.manipulators.add(this.rotateHeadingManipulator),this.rotateHeadingManipulator.events.on("grab-changed",(e=>{this._onRotateHeadingGrab(e),t(this.rotateHeadingManipulator)})),this._handles.add(this._createRotateHeadingDragPipeline(this.rotateHeadingManipulator)),this.rotateTiltManipulator=$(this.view,this._rotateTiltImage.texture),this.manipulators.add(this.rotateTiltManipulator),this.rotateTiltManipulator.events.on("grab-changed",(e=>{this._onRotateTiltGrab(e),t(this.rotateTiltManipulator)})),this._handles.add(this._createRotateTiltDragPipeline(this.rotateTiltManipulator)),this.resizeManipulators=this._resizeHandles.map(((e,i)=>{const a=tt(this.view,e);return a.events.on("grab-changed",(e=>{this._onResizeGrab(e,i),t(a)})),this._handles.add(this._createResizeDragPipeline(a)),a})),this.manipulators.addMany(this.resizeManipulators),this._previewPlaneGridVisualElement=et(this.view),this._previewPlaneOutlineVisualElement=it(this.view),this._previewPlaneOutlineVisualElement.width=F,this._handles.add(h((()=>this.analysisViewData.plane),(()=>this._updateManipulators()),p));const e=h((()=>this.state),(t=>{"sliced"===t&&this.finishToolCreation()}),u);this._handles.add([e,h((()=>this.view.state.camera),(()=>this._onCameraChange()))])}destroy(){this._rotateHeadingImage=s(this._rotateHeadingImage),this._rotateTiltImage=s(this._rotateTiltImage),this._handles=n(this._handles),this._viewHandles=n(this._viewHandles),this._removeFrameTask(),this._clearPointerMoveTimeout(),this._previewPlaneOutlineVisualElement=n(this._previewPlaneOutlineVisualElement),this._previewPlaneGridVisualElement=n(this._previewPlaneGridVisualElement)}get state(){const t=!!this.analysisViewData.plane,e=!!this.inputState;return t?t&&e?"slicing":t&&!e?"sliced":"ready":"ready"}get cursor(){return this._isPlacingSlicePlane||"exclude"===this.layersMode?"crosshair":r(this._creatingPointerId)?"grabbing":null}set analysis(t){if(null==t)throw new Error("SliceTool requires valid analysis, but null was provided.");this._handles.remove("analysis"),this._set("analysis",t)}get inputState(){return this._get("inputState")}set inputState(t){this._set("inputState",t),this.analysisViewData.showGrid=r(t)&&"resize"===t.type,this._updateMaterials()}get _isPlacingSlicePlane(){return!this.inputState&&!this.analysisViewData.plane&&this.active}get _creatingPointerId(){return r(this.inputState)&&"shift"===this.inputState.type?this.inputState.creatingPointerId:null}enterExcludeLayerMode(){l(this.analysisViewData.plane)||(this._set("layersMode","exclude"),this.active||(this.view.activeTool=this))}exitExcludeLayerMode(){l(this.analysisViewData.plane)||(this._set("layersMode","none"),this.active&&(this.view.activeTool=null))}onDeactivate(){this._set("layersMode","none"),this._updatePreviewPlane(null)}onShow(){this._updateVisibility(!0)}onHide(){this._updateVisibility(!1)}_updateVisibility(t){this._updateManipulators(),t||this._clearPointerMoveTimeout()}onInputEvent(t){switch(t.type){case"pointer-drag":if(!Ht(t))return;this._isPlacingSlicePlane?this._onClickPlacePlane(t)&&t.stopPropagation():this._onPointerDrag(t)&&t.stopPropagation();break;case"pointer-move":this._onPointerMove(t);break;case"pointer-up":this._onPointerUp(t)&&t.stopPropagation();break;case"immediate-click":if(!Ht(t))return;this._onClickPlacePlane(t)&&t.stopPropagation();break;case"click":if(!Ht(t))return;this._onClickExcludeLayer(t)&&t.stopPropagation();break;case"drag":this.inputState&&t.stopPropagation();break;case"key-down":this._onKeyDown(t)&&t.stopPropagation();break;case"key-up":this._onKeyUp(t)&&t.stopPropagation()}}onEditableChange(){this.analysisViewData.editable=this.editable}_onPointerDrag(t){const e=this.inputState;if(t.pointerId===this._creatingPointerId&&r(e)&&"shift"===e.type){const i=bt(t);return this.shiftManipulator.events.emit("drag",{action:e.hasBeenDragged?"update":"start",pointerType:t.pointerType,start:i,screenPoint:i}),e.hasBeenDragged=!0,!0}return!1}_onPointerMove(t){this._lastCursorPosition.x=t.x,this._lastCursorPosition.y=t.y,this._resetPointerMoveTimeout(),"touch"!==t.pointerType&&this._updatePreviewPlane(bt(t),this._activeKeyModifiers)}_onCameraChange(){this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),this._updateManipulators()}_onPointerUp(t){if(t.pointerId===this._creatingPointerId&&r(this.analysisViewData.plane)){const e=bt(t);return this.shiftManipulator.events.emit("drag",{action:"end",start:e,screenPoint:e}),I(this.analysisViewData.plane,this._startPlane),this.inputState=null,!0}return!1}_onClickPlacePlane(t){if("exclude"===this.layersMode)return!1;if(this._isPlacingSlicePlane){const i=bt(t),a=x();if(this._pickPlane(i,!1,this._activeKeyModifiers,a)){if(I(a,this._startPlane),this.analysis.shape=at(a,this.view,this.view.spatialReference,new e),"pointer-drag"===t.type){const e=this._calculatePickRay(i);this.inputState=St(e,t.pointerId,a.origin,a)}return!0}}return!1}_onClickExcludeLayer(t){return!("exclude"!==this.layersMode||!this.created)&&(this.view.hitTest(bt(t)).then((t=>{if(t.results.length){const e=t.results[0],i="graphic"===e?.type&&e.graphic;if(i){const t=i.sourceLayer||i.layer;t&&this.analysis.excludedLayers.push(t)}}else t.ground.layer?this.analysis.excludedLayers.push(t.ground.layer):this.analysis.excludeGroundSurface=!0})),this._set("layersMode","none"),this.active&&(this.view.activeTool=null),!0)}_onKeyDown(t){return(t.key===N||t.key===q)&&(this._activeKeyModifiers[t.key]=!0,r(this._previewPlane)&&this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),!0)}_onKeyUp(t){return!(t.key!==N&&t.key!==q||!this._activeKeyModifiers[t.key])&&(delete this._activeKeyModifiers[t.key],r(this._previewPlane)&&this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),!0)}_onShiftGrab(t){if("start"!==t.action||l(this.analysisViewData.plane))return;const e=this._calculatePickRay(t.screenPoint);I(this.analysisViewData.plane,this._startPlane),this.inputState=St(e,null,this.shiftManipulator.renderLocation,this.analysisViewData.plane)}_createShiftDragPipeline(t){return Vt(t,((t,e,i)=>{const a=this.inputState;if(l(a)||"shift"!==a.type)return;const s=r(this.analysisViewData.plane)?I(this.analysisViewData.plane,x()):null;e.next(wt(this.view,a.shiftPlane)).next(this._shiftDragAdjustSensitivity(a)).next(this._shiftDragUpdatePlane(a)),i.next((()=>{r(s)&&this._updateBoundedPlane(s)}))}))}_shiftDragAdjustSensitivity(t){return e=>{if(l(this.analysisViewData.plane))return null;const i=.001,a=Math.min((1-Math.abs(f(R(this.analysisViewData.plane),e.ray.direction)/M(e.ray.direction)))/i,1),s=-C(this._startPlane.plane,e.renderEnd),n=-C(this._startPlane.plane,t.startPoint);return t.depth=t.depth*(1-a)+s*a-n,e}}_shiftDragUpdatePlane(t){return()=>{if(l(this.analysisViewData.plane))return;const e=D(L.get(),this._startPlane.origin),i=D(L.get(),R(this._startPlane));T(i,i,-t.depth),V(i,i,e);const a=j(i,this.analysisViewData.plane.basis1,this.analysisViewData.plane.basis2,x());this._updateBoundedPlane(a)}}_onRotateHeadingGrab(t){if("start"!==t.action||l(this.analysisViewData.plane))return;const e=st(this.analysisViewData.plane,this.view.renderCoordsHelper,nt.HEADING,O()),i=this._calculatePickRay(t.screenPoint),a=H();z(e,i,a)&&(I(this.analysisViewData.plane,this._startPlane),this.inputState={type:"rotate",rotatePlane:e,startPoint:a})}_createRotateHeadingDragPipeline(t){return Vt(t,((t,e,i)=>{const a=this.inputState;if(l(a)||"rotate"!==a.type)return;const s=r(this.analysisViewData.plane)?I(this.analysisViewData.plane,x()):null;e.next(wt(this.view,a.rotatePlane)).next(this._rotateDragRenderPlaneToRotate(a)).next(this._rotateDragUpdatePlaneFromRotate()),i.next((()=>{r(s)&&this._updateBoundedPlane(s)}))}))}_onRotateTiltGrab(t){if("start"!==t.action||l(this.analysisViewData.plane))return;const e=st(this.analysisViewData.plane,this.view.renderCoordsHelper,nt.TILT,O()),i=this._calculatePickRay(t.screenPoint),a=H();z(e,i,a)&&(I(this.analysisViewData.plane,this._startPlane),this.inputState={type:"rotate",rotatePlane:e,startPoint:a})}_createRotateTiltDragPipeline(t){return Vt(t,((t,e,i)=>{const a=this.inputState;if(l(a)||"rotate"!==a.type)return;const s=r(this.analysisViewData.plane)?I(this.analysisViewData.plane,x()):null;e.next(wt(this.view,a.rotatePlane)).next(this._rotateDragRenderPlaneToRotate(a)).next(this._rotateDragUpdatePlaneFromRotate()),i.next((()=>{r(s)&&this._updateBoundedPlane(s)}))}))}_rotateDragRenderPlaneToRotate(t){return e=>{if(l(this.analysisViewData.plane))return null;const i=G(t.rotatePlane),a=gt(t.startPoint,e.renderEnd,this.analysisViewData.plane.origin,i);return{...e,rotateAxis:i,rotateAngle:a}}}_rotateDragUpdatePlaneFromRotate(){return t=>{if(l(this.analysisViewData.plane))return;const e=m(K.get(),t.rotateAngle,t.rotateAxis);if(l(e))return;const i=b(L.get(),this._startPlane.basis1,e),a=b(L.get(),this._startPlane.basis2,e),s=j(this.analysisViewData.plane.origin,i,a,x());this._updateBoundedPlane(s)}}_onResizeGrab(t,e){if("start"!==t.action||l(this.analysisViewData.plane))return;const i=this._calculatePickRay(t.screenPoint),a=L.get();z(this.analysisViewData.plane.plane,i,a)&&(I(this.analysisViewData.plane,this._startPlane),this.inputState={type:"resize",activeHandleIdx:e,startPoint:S(a)})}_createResizeDragPipeline(t){return Vt(t,((t,e,i)=>{const a=this.inputState;if(l(a)||"resize"!==a.type||l(this.analysisViewData.plane))return;const s=I(this.analysisViewData.plane,x());e.next(wt(this.view,this.analysisViewData.plane.plane)).next(this._resizeDragUpdatePlane(a)),i.next((()=>{this._updateBoundedPlane(s)}))}))}_resizeDragUpdatePlane(t){return e=>{if(l(this.analysisViewData.plane))return;const i=this._resizeHandles[t.activeHandleIdx],a=rt(i,t.startPoint,e.renderEnd,this.view.state.camera,this._startPlane,I(this.analysisViewData.plane));this._updateBoundedPlane(a)}}_updateBoundedPlane(t){const e=this.analysisViewData;if(!r(e))throw new Error("valid internal object expected");e.plane=t}_updatePreviewPlane(t,e={}){let i=this._previewPlane;if(this._previewPlane=null,l(t))return this._removeFrameTask(),void this._updateManipulators();if(!this.analysisViewData.plane&&this.active){const a=r(i)?i:x();if(i=r(i)?I(i,xt):null,this._pickPlane(t,!0,e,a)){const t=Q;let e=!1;r(i)&&(e=f(i.plane,a.plane)<t||f(k(L.get(),i.basis1),k(L.get(),a.basis1))<t),e&&(this._previewPlaneOpacity=0),this._previewPlane=a}}r(this._previewPlane)&&l(this._frameTask)&&0===this._previewPlaneOpacity?this._frameTask=c({update:({deltaTime:t})=>{this._previewPlaneOpacity=Math.min(this._previewPlaneOpacity+t/(1e3*W),1),this._updateManipulators(),1===this._previewPlaneOpacity&&this._removeFrameTask()}}):l(this._previewPlane)&&r(this._frameTask)?this._removeFrameTask():r(this._previewPlane)&&this._updateManipulators()}_removeFrameTask(){this._frameTask=o(this._frameTask)}_calculatePickRay(t){const e=U(),i=_(t,It);return ft(this.view.state.camera,i,e),k(e.direction,e.direction),e}_pickMinResult(t){const e=_(t,A.get());return this.view.sceneIntersectionHelper.intersectToolIntersectorScreen(e,this._intersector),this._intersector.results.min}_pickPlane(t,e,i,a){const s=this._pickMinResult(t),n=L.get();if(!s.getIntersectionPoint(n))return!1;const r=s.getTransformedNormal(L.get()),l=this.view.state.camera;f(r,l.viewForward)>0&&T(r,r,-1);const o=lt(n,l),h=(e?1:-1)*o*X,p=T(L.get(),r,h);V(p,p,n);const u=this.analysis.tiltEnabled?ot.TILTED:ot.HORIZONTAL_OR_VERTICAL,c=i[N]?ot.VERTICAL:i[q]?ot.HORIZONTAL:u;return ht(p,r,o,o,l,c,this.view.renderCoordsHelper,a),!0}_clearPointerMoveTimeout(){this._prevPointerMoveTimeout=o(this._prevPointerMoveTimeout)}_resetPointerMoveTimeout(){this._clearPointerMoveTimeout(),this.shiftManipulator.state|=pt,this.rotateHeadingManipulator.state|=pt,this.rotateTiltManipulator.state|=pt,this._prevPointerMoveTimeout=this._clock.setTimeout((()=>{this.shiftManipulator.state&=~pt,this.rotateHeadingManipulator.state&=~pt,this.rotateTiltManipulator.state&=~pt}),this._pointerMoveTimerMs)}_updateManipulators(){if(kt.disableEngineLayers)return;let t=null,e=!1;if(r(this.analysisViewData.plane))t=this.analysisViewData.plane,e=!1;else{if(!r(this._previewPlane))return this.shiftManipulator.available=!1,this.rotateHeadingManipulator.available=!1,this.rotateTiltManipulator.available=!1,this.resizeManipulators.forEach((t=>t.available=!1)),this._previewPlaneOutlineVisualElement.visible=!1,void(this._previewPlaneGridVisualElement.visible=!1);t=this._previewPlane,e=!0}const i=ut(t,K.get());e?(this.shiftManipulator.available=!1,this.rotateHeadingManipulator.available=!1,this.rotateTiltManipulator.available=!1,this.resizeManipulators.forEach((t=>t.available=!1)),this._previewPlaneOutlineVisualElement.visible=!0,this._previewPlaneGridVisualElement.visible=!0):(this.shiftManipulator.available=!0,this.rotateHeadingManipulator.available=!0,this.rotateTiltManipulator.available=this.analysis.tiltEnabled,this.resizeManipulators.forEach((t=>t.available=!0)),ct(this.shiftManipulator,i,t,this.view.state.camera),dt(this.rotateHeadingManipulator,i,t,this.view.renderCoordsHelper),_t(this.rotateTiltManipulator,i,t),this.resizeManipulators.forEach(((e,a)=>vt(e,this._resizeHandles[a],i,t))),this._previewPlaneOutlineVisualElement.visible=!1,this._previewPlaneGridVisualElement.visible=!1);const a=E(L.get(),M(t.basis1),M(t.basis2),1),s=g(K.get(),a),n=w(s,i,s);this._previewPlaneOutlineVisualElement.transform=n,this._previewPlaneGridVisualElement.transform=n,this._updateMaterials()}_updateMaterials(){const t=[Z[0],Z[1],Z[2],Z[3]*this._previewPlaneOpacity];this._previewPlaneOutlineVisualElement.color=t;const e=[J[0],J[1],J[2],J[3]*this._previewPlaneOpacity],i=[0,0,0,0];this._previewPlaneGridVisualElement.backgroundColor=e,this._previewPlaneGridVisualElement.gridColor=i}_updateManipulatorsInteractive(t){if(!t.grabbing)return this.shiftManipulator.interactive=!0,this.rotateHeadingManipulator.interactive=!0,this.rotateTiltManipulator.interactive=!0,void this.resizeManipulators.forEach((t=>{t.interactive=!0}));this.shiftManipulator.interactive=this.shiftManipulator===t,this.rotateHeadingManipulator.interactive=this.rotateHeadingManipulator===t,this.rotateTiltManipulator.interactive=this.rotateTiltManipulator===t,this.resizeManipulators.forEach((e=>{e.interactive=e===t}))}testData(){return{plane:this.analysisViewData.plane,setPointerMoveTimerMs:t=>{this._pointerMoveTimerMs=t}}}};function St(t,e,i,a){const s=Pt(i,R(a),t.direction,O()),n=H();return z(s,t,n)?{type:"shift",creatingPointerId:e,hasBeenDragged:!1,shiftPlane:s,depth:0,startPoint:n}:null}function Ht(t){return"mouse"!==t.pointerType||0===t.button}Et.disableEngineLayers=!1,t([P()],Et.prototype,"_clock",void 0),t([P({constructOnly:!0})],Et.prototype,"view",void 0),t([P()],Et.prototype,"analysisViewData",void 0),t([P({readOnly:!0})],Et.prototype,"state",null),t([P({readOnly:!0})],Et.prototype,"cursor",null),t([P()],Et.prototype,"analysis",null),t([P()],Et.prototype,"removeIncompleteOnCancel",void 0),t([P({readOnly:!0})],Et.prototype,"layersMode",void 0),t([P({value:null})],Et.prototype,"inputState",null),t([P()],Et.prototype,"_isPlacingSlicePlane",null),t([P()],Et.prototype,"_creatingPointerId",null),Et=kt=t([y("esri.views.3d.analysis.Slice.SliceTool")],Et);const xt=x(),It=v(),Rt=Et;export{Rt as default};
5
+ import{_ as t}from"../../../../chunks/tslib.es6.js";import e from"../../../../analysis/SlicePlane.js";import{clock as i}from"../../../../core/clock.js";import a from"../../../../core/Handles.js";import{releaseMaybe as s,destroyMaybe as n,isSome as r,isNone as l,removeMaybe as o}from"../../../../core/maybe.js";import{watch as h,sync as p,syncAndInitial as u}from"../../../../core/reactiveUtils.js";import{addFrameTask as c}from"../../../../core/scheduling.js";import{createScreenPoint as d,screenPointObjectToArray as _,createScreenPointArray as v}from"../../../../core/screenUtils.js";import{property as P}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as y}from"../../../../core/accessorSupport/decorators/subclass.js";import{d as m,C as g,m as w}from"../../../../chunks/mat4.js";import{e as f,l as M,c as D,g as T,a as V,v as b,n as k,s as E}from"../../../../chunks/vec3.js";import{a as S,c as H}from"../../../../chunks/vec3f64.js";import{a as x,c as I,n as R,f as j}from"../../../../chunks/boundedPlane.js";import{signedDistance as C,create as O,intersectRay as z,normal as G}from"../../../../geometry/support/plane.js";import{create as U}from"../../../../geometry/support/ray.js";import{sv3d as L,sm4d as K,sv2d as A}from"../../../../geometry/support/vectorStacks.js";import{POINTER_MOVE_TIMER_MS as B,PLANE_PREVIEW_OUTLINE_WIDTH as F,forceVerticalModifier as N,forceHorizontalModifier as q,PLANE_OUTLINE_COLOR as Z,PLANE_BACKGROUND_COLOR as J,PREVIEW_FADE_DOT_THRESHOLD as Q,PREVIEW_FADE_DURATION_SECONDS as W,INITIAL_DEPTH_OFFSET_FRAC as X}from"./sliceToolConfig.js";import{createShiftManipulator as Y,createRotateManipulator as $,createResizeManipulator as tt,createGridVisualElement as et,createOutlineVisualElement as it,planeToShape as at,createRotatePlane as st,RotationAxis as nt,resizePlane as rt,calculatePlaneHalfSize as lt,SliceOrientation as ot,createPlane as ht,DidPointerMoveRecentlyFlag as pt,calculateBoundedPlaneTranslateRotate as ut,updateShiftRestartHandle as ct,updateRotateHeadingHandle as dt,updateRotateTiltHandle as _t,updateResizeHandle as vt,createShiftPlane as Pt}from"./sliceToolUtils.js";import{getRotateHeadingTexture as yt,getTiltRotateTexture as mt}from"./images/Factory.js";import{calculateInputRotationTransform as gt}from"../../interactive/manipulatorUtils.js";import{screenToRenderPlane as wt}from"../../interactive/editingTools/dragEventPipeline3D.js";import{fromScreen as ft}from"../../support/geometryUtils/ray.js";import{newIntersector as Mt}from"../../webgl-engine/lib/Intersector.js";import{StoreResults as Dt}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{AnalysisToolBase as Tt}from"../../../interactive/AnalysisToolBase.js";import{createManipulatorDragEventPipeline as Vt}from"../../../interactive/dragEventPipeline.js";import{createScreenPointFromEvent as bt}from"../../../support/screenUtils.js";var kt;let Et=kt=class extends Tt{constructor(t){super(t),this._clock=i,this._previewPlaneOpacity=1,this.removeIncompleteOnCancel=!1,this.layersMode="none",this.shiftManipulator=null,this.rotateHeadingManipulator=null,this.rotateTiltManipulator=null,this.resizeManipulators=null,this._handles=new a,this._viewHandles=new a,this._frameTask=null,this._pointerMoveTimerMs=B,this._prevPointerMoveTimeout=null,this._previewPlaneGridVisualElement=null,this._previewPlaneOutlineVisualElement=null,this._startPlane=x(),this._previewPlane=null,this._activeKeyModifiers={},this._lastCursorPosition=d(),this._resizeHandles=[{direction:[1,0]},{direction:[1,1]},{direction:[0,1]},{direction:[-1,1]},{direction:[-1,0]},{direction:[-1,-1]},{direction:[0,-1]},{direction:[1,-1]}],this._intersector=Mt(t.view.state.viewingMode),this._intersector.options.store=Dt.MIN}initialize(){if(null==this.analysis)throw new Error("SliceTool requires valid analysis, but null was provided.");this._rotateHeadingImage=yt(this.view.toolViewManager.textures),this._rotateTiltImage=mt(this.view.toolViewManager.textures);const t=t=>{this._updateManipulatorsInteractive(t),t.grabbing||(r(this.analysisViewData.plane)&&I(this.analysisViewData.plane,this._startPlane),this.inputState=null)};this.shiftManipulator=Y(this.view),this.manipulators.add(this.shiftManipulator),this.shiftManipulator.events.on("grab-changed",(e=>{this._onShiftGrab(e),t(this.shiftManipulator)})),this._handles.add(this._createShiftDragPipeline(this.shiftManipulator)),this.rotateHeadingManipulator=$(this.view,this._rotateHeadingImage.texture),this.manipulators.add(this.rotateHeadingManipulator),this.rotateHeadingManipulator.events.on("grab-changed",(e=>{this._onRotateHeadingGrab(e),t(this.rotateHeadingManipulator)})),this._handles.add(this._createRotateHeadingDragPipeline(this.rotateHeadingManipulator)),this.rotateTiltManipulator=$(this.view,this._rotateTiltImage.texture),this.manipulators.add(this.rotateTiltManipulator),this.rotateTiltManipulator.events.on("grab-changed",(e=>{this._onRotateTiltGrab(e),t(this.rotateTiltManipulator)})),this._handles.add(this._createRotateTiltDragPipeline(this.rotateTiltManipulator)),this.resizeManipulators=this._resizeHandles.map(((e,i)=>{const a=tt(this.view,e);return a.events.on("grab-changed",(e=>{this._onResizeGrab(e,i),t(a)})),this._handles.add(this._createResizeDragPipeline(a)),a})),this.manipulators.addMany(this.resizeManipulators),this._previewPlaneGridVisualElement=et(this.view),this._previewPlaneOutlineVisualElement=it(this.view),this._previewPlaneOutlineVisualElement.width=F,this._handles.add(h((()=>this.analysisViewData.plane),(()=>this._updateManipulators()),p));const e=h((()=>this.state),(t=>{"sliced"===t&&this.finishToolCreation()}),u);this._handles.add([e,h((()=>this.view.state.camera),(()=>this._onCameraChange()))])}destroy(){this._rotateHeadingImage=s(this._rotateHeadingImage),this._rotateTiltImage=s(this._rotateTiltImage),this._handles=n(this._handles),this._viewHandles=n(this._viewHandles),this._removeFrameTask(),this._clearPointerMoveTimeout(),this._previewPlaneOutlineVisualElement=n(this._previewPlaneOutlineVisualElement),this._previewPlaneGridVisualElement=n(this._previewPlaneGridVisualElement)}get state(){const t=!!this.analysisViewData.plane,e=!!this.inputState;return t?t&&e?"slicing":t&&!e?"sliced":"ready":"ready"}get cursor(){return this._isPlacingSlicePlane||"exclude"===this.layersMode?"crosshair":r(this._creatingPointerId)?"grabbing":null}set analysis(t){if(null==t)throw new Error("SliceTool requires valid analysis, but null was provided.");this._handles.remove("analysis"),this._set("analysis",t)}get inputState(){return this._get("inputState")}set inputState(t){this._set("inputState",t),this.analysisViewData.showGrid=r(t)&&"resize"===t.type,this._updateMaterials()}get _isPlacingSlicePlane(){return!this.inputState&&!this.analysisViewData.plane&&this.active}get _creatingPointerId(){return r(this.inputState)&&"shift"===this.inputState.type?this.inputState.creatingPointerId:null}enterExcludeLayerMode(){l(this.analysisViewData.plane)||(this._set("layersMode","exclude"),this.active||(this.view.activeTool=this))}exitExcludeLayerMode(){l(this.analysisViewData.plane)||(this._set("layersMode","none"),this.active&&(this.view.activeTool=null))}onDeactivate(){this._set("layersMode","none"),this._updatePreviewPlane(null)}onShow(){this._updateVisibility(!0)}onHide(){this._updateVisibility(!1)}_updateVisibility(t){this._updateManipulators(),t||this._clearPointerMoveTimeout()}onInputEvent(t){switch(t.type){case"pointer-drag":if(!Ht(t))return;this._isPlacingSlicePlane?this._onClickPlacePlane(t)&&t.stopPropagation():this._onPointerDrag(t)&&t.stopPropagation();break;case"pointer-move":this._onPointerMove(t);break;case"pointer-up":this._onPointerUp(t)&&t.stopPropagation();break;case"immediate-click":if(!Ht(t))return;this._onClickPlacePlane(t)&&t.stopPropagation();break;case"click":if(!Ht(t))return;this._onClickExcludeLayer(t)&&t.stopPropagation();break;case"drag":this.inputState&&t.stopPropagation();break;case"key-down":this._onKeyDown(t)&&t.stopPropagation();break;case"key-up":this._onKeyUp(t)&&t.stopPropagation()}}onEditableChange(){this.analysisViewData.editable=this.editable}_onPointerDrag(t){const e=this.inputState;if(t.pointerId===this._creatingPointerId&&r(e)&&"shift"===e.type){const i=bt(t);return this.shiftManipulator.events.emit("drag",{action:e.hasBeenDragged?"update":"start",pointerType:t.pointerType,start:i,screenPoint:i}),e.hasBeenDragged=!0,!0}return!1}_onPointerMove(t){this._lastCursorPosition.x=t.x,this._lastCursorPosition.y=t.y,this._resetPointerMoveTimeout(),"touch"!==t.pointerType&&this._updatePreviewPlane(bt(t),this._activeKeyModifiers)}_onCameraChange(){this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),this._updateManipulators()}_onPointerUp(t){if(t.pointerId===this._creatingPointerId&&r(this.analysisViewData.plane)){const e=bt(t);return this.shiftManipulator.events.emit("drag",{action:"end",start:e,screenPoint:e}),I(this.analysisViewData.plane,this._startPlane),this.inputState=null,!0}return!1}_onClickPlacePlane(t){if("exclude"===this.layersMode)return!1;if(this._isPlacingSlicePlane){const i=bt(t),a=x();if(this._pickPlane(i,!1,this._activeKeyModifiers,a)){if(I(a,this._startPlane),this.analysis.shape=at(a,this.view,this.view.spatialReference,new e),"pointer-drag"===t.type){const e=this._calculatePickRay(i);this.inputState=St(e,t.pointerId,a.origin,a)}return!0}}return!1}_onClickExcludeLayer(t){return!("exclude"!==this.layersMode||!this.created)&&(this.view.hitTest(bt(t)).then((t=>{if(t.results.length){const e=t.results[0],i="graphic"===e?.type&&e.graphic;if(i){const t=i.sourceLayer||i.layer;t&&this.analysis.excludedLayers.push(t)}}else t.ground.layer?this.analysis.excludedLayers.push(t.ground.layer):this.analysis.excludeGroundSurface=!0})),this._set("layersMode","none"),this.active&&(this.view.activeTool=null),!0)}_onKeyDown(t){return(t.key===N||t.key===q)&&(this._activeKeyModifiers[t.key]=!0,r(this._previewPlane)&&this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),!0)}_onKeyUp(t){return!(t.key!==N&&t.key!==q||!this._activeKeyModifiers[t.key])&&(delete this._activeKeyModifiers[t.key],r(this._previewPlane)&&this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),!0)}_onShiftGrab(t){if("start"!==t.action||l(this.analysisViewData.plane))return;const e=this._calculatePickRay(t.screenPoint);I(this.analysisViewData.plane,this._startPlane),this.inputState=St(e,null,this.shiftManipulator.renderLocation,this.analysisViewData.plane)}_createShiftDragPipeline(t){return Vt(t,((t,e,i)=>{const a=this.inputState;if(l(a)||"shift"!==a.type)return;const s=r(this.analysisViewData.plane)?I(this.analysisViewData.plane,x()):null;e.next(wt(this.view,a.shiftPlane)).next(this._shiftDragAdjustSensitivity(a)).next(this._shiftDragUpdatePlane(a)),i.next((()=>{r(s)&&this._updateBoundedPlane(s)}))}))}_shiftDragAdjustSensitivity(t){return e=>{if(l(this.analysisViewData.plane))return null;const i=.001,a=Math.min((1-Math.abs(f(R(this.analysisViewData.plane),e.ray.direction)/M(e.ray.direction)))/i,1),s=-C(this._startPlane.plane,e.renderEnd),n=-C(this._startPlane.plane,t.startPoint);return t.depth=t.depth*(1-a)+s*a-n,e}}_shiftDragUpdatePlane(t){return()=>{if(l(this.analysisViewData.plane))return;const e=D(L.get(),this._startPlane.origin),i=D(L.get(),R(this._startPlane));T(i,i,-t.depth),V(i,i,e);const a=j(i,this.analysisViewData.plane.basis1,this.analysisViewData.plane.basis2,x());this._updateBoundedPlane(a)}}_onRotateHeadingGrab(t){if("start"!==t.action||l(this.analysisViewData.plane))return;const e=st(this.analysisViewData.plane,this.view.renderCoordsHelper,nt.HEADING,O()),i=this._calculatePickRay(t.screenPoint),a=H();z(e,i,a)&&(I(this.analysisViewData.plane,this._startPlane),this.inputState={type:"rotate",rotatePlane:e,startPoint:a})}_createRotateHeadingDragPipeline(t){return Vt(t,((t,e,i)=>{const a=this.inputState;if(l(a)||"rotate"!==a.type)return;const s=r(this.analysisViewData.plane)?I(this.analysisViewData.plane,x()):null;e.next(wt(this.view,a.rotatePlane)).next(this._rotateDragRenderPlaneToRotate(a)).next(this._rotateDragUpdatePlaneFromRotate()),i.next((()=>{r(s)&&this._updateBoundedPlane(s)}))}))}_onRotateTiltGrab(t){if("start"!==t.action||l(this.analysisViewData.plane))return;const e=st(this.analysisViewData.plane,this.view.renderCoordsHelper,nt.TILT,O()),i=this._calculatePickRay(t.screenPoint),a=H();z(e,i,a)&&(I(this.analysisViewData.plane,this._startPlane),this.inputState={type:"rotate",rotatePlane:e,startPoint:a})}_createRotateTiltDragPipeline(t){return Vt(t,((t,e,i)=>{const a=this.inputState;if(l(a)||"rotate"!==a.type)return;const s=r(this.analysisViewData.plane)?I(this.analysisViewData.plane,x()):null;e.next(wt(this.view,a.rotatePlane)).next(this._rotateDragRenderPlaneToRotate(a)).next(this._rotateDragUpdatePlaneFromRotate()),i.next((()=>{r(s)&&this._updateBoundedPlane(s)}))}))}_rotateDragRenderPlaneToRotate(t){return e=>{if(l(this.analysisViewData.plane))return null;const i=G(t.rotatePlane),a=gt(t.startPoint,e.renderEnd,this.analysisViewData.plane.origin,i);return{...e,rotateAxis:i,rotateAngle:a}}}_rotateDragUpdatePlaneFromRotate(){return t=>{if(l(this.analysisViewData.plane))return;const e=m(K.get(),t.rotateAngle,t.rotateAxis);if(l(e))return;const i=b(L.get(),this._startPlane.basis1,e),a=b(L.get(),this._startPlane.basis2,e),s=j(this.analysisViewData.plane.origin,i,a,x());this._updateBoundedPlane(s)}}_onResizeGrab(t,e){if("start"!==t.action||l(this.analysisViewData.plane))return;const i=this._calculatePickRay(t.screenPoint),a=L.get();z(this.analysisViewData.plane.plane,i,a)&&(I(this.analysisViewData.plane,this._startPlane),this.inputState={type:"resize",activeHandleIdx:e,startPoint:S(a)})}_createResizeDragPipeline(t){return Vt(t,((t,e,i)=>{const a=this.inputState;if(l(a)||"resize"!==a.type||l(this.analysisViewData.plane))return;const s=I(this.analysisViewData.plane,x());e.next(wt(this.view,this.analysisViewData.plane.plane)).next(this._resizeDragUpdatePlane(a)),i.next((()=>{this._updateBoundedPlane(s)}))}))}_resizeDragUpdatePlane(t){return e=>{if(l(this.analysisViewData.plane))return;const i=this._resizeHandles[t.activeHandleIdx],a=rt(i,t.startPoint,e.renderEnd,this.view.state.camera,this._startPlane,I(this.analysisViewData.plane));this._updateBoundedPlane(a)}}_updateBoundedPlane(t){const e=this.analysisViewData;if(!r(e))throw new Error("valid internal object expected");e.plane=t}_updatePreviewPlane(t,e={}){let i=this._previewPlane;if(this._previewPlane=null,l(t))return this._removeFrameTask(),void this._updateManipulators();if(!this.analysisViewData.plane&&this.active){const a=r(i)?i:x();if(i=r(i)?I(i,xt):null,this._pickPlane(t,!0,e,a)){const t=Q;let e=!1;r(i)&&(e=f(i.plane,a.plane)<t||f(k(L.get(),i.basis1),k(L.get(),a.basis1))<t),e&&(this._previewPlaneOpacity=0),this._previewPlane=a}}r(this._previewPlane)&&l(this._frameTask)&&0===this._previewPlaneOpacity?this._frameTask=c({update:({deltaTime:t})=>{this._previewPlaneOpacity=Math.min(this._previewPlaneOpacity+t/(1e3*W),1),this._updateManipulators(),1===this._previewPlaneOpacity&&this._removeFrameTask()}}):l(this._previewPlane)&&r(this._frameTask)?this._removeFrameTask():r(this._previewPlane)&&this._updateManipulators()}_removeFrameTask(){this._frameTask=o(this._frameTask)}_calculatePickRay(t){const e=U(),i=_(t,It);return ft(this.view.state.camera,i,e),k(e.direction,e.direction),e}_pickMinResult(t){const e=_(t,A.get());return this.view.sceneIntersectionHelper.intersectToolIntersectorScreen(e,this._intersector),this._intersector.results.min}_pickPlane(t,e,i,a){const s=this._pickMinResult(t),n=L.get();if(!s.getIntersectionPoint(n))return!1;const r=s.getTransformedNormal(L.get()),l=this.view.state.camera;f(r,l.viewForward)>0&&T(r,r,-1);const o=lt(n,l),h=(e?1:-1)*o*X,p=T(L.get(),r,h);V(p,p,n);const u=this.analysis.tiltEnabled?ot.TILTED:ot.HORIZONTAL_OR_VERTICAL,c=i[N]?ot.VERTICAL:i[q]?ot.HORIZONTAL:u;return ht(p,r,o,o,l,c,this.view.renderCoordsHelper,a),!0}_clearPointerMoveTimeout(){this._prevPointerMoveTimeout=o(this._prevPointerMoveTimeout)}_resetPointerMoveTimeout(){this._clearPointerMoveTimeout(),this.shiftManipulator.state|=pt,this.rotateHeadingManipulator.state|=pt,this.rotateTiltManipulator.state|=pt,this._prevPointerMoveTimeout=this._clock.setTimeout((()=>{this.shiftManipulator.state&=~pt,this.rotateHeadingManipulator.state&=~pt,this.rotateTiltManipulator.state&=~pt}),this._pointerMoveTimerMs)}_updateManipulators(){if(kt.disableEngineLayers)return;let t=null,e=!1;if(r(this.analysisViewData.plane))t=this.analysisViewData.plane,e=!1;else{if(!r(this._previewPlane))return this.shiftManipulator.available=!1,this.rotateHeadingManipulator.available=!1,this.rotateTiltManipulator.available=!1,this.resizeManipulators.forEach((t=>t.available=!1)),this._previewPlaneOutlineVisualElement.visible=!1,void(this._previewPlaneGridVisualElement.visible=!1);t=this._previewPlane,e=!0}const i=ut(t,K.get());e?(this.shiftManipulator.available=!1,this.rotateHeadingManipulator.available=!1,this.rotateTiltManipulator.available=!1,this.resizeManipulators.forEach((t=>t.available=!1)),this._previewPlaneOutlineVisualElement.visible=!0,this._previewPlaneGridVisualElement.visible=!0):(this.shiftManipulator.available=!0,this.rotateHeadingManipulator.available=!0,this.rotateTiltManipulator.available=this.analysis.tiltEnabled,this.resizeManipulators.forEach((t=>t.available=!0)),ct(this.shiftManipulator,i,t,this.view.state.camera),dt(this.rotateHeadingManipulator,i,t,this.view.renderCoordsHelper),_t(this.rotateTiltManipulator,i,t),this.resizeManipulators.forEach(((e,a)=>vt(e,this._resizeHandles[a],i,t))),this._previewPlaneOutlineVisualElement.visible=!1,this._previewPlaneGridVisualElement.visible=!1);const a=E(L.get(),M(t.basis1),M(t.basis2),1),s=g(K.get(),a),n=w(s,i,s);this._previewPlaneOutlineVisualElement.transform=n,this._previewPlaneGridVisualElement.transform=n,this._updateMaterials()}_updateMaterials(){const t=[Z[0],Z[1],Z[2],Z[3]*this._previewPlaneOpacity];this._previewPlaneOutlineVisualElement.color=t;const e=[J[0],J[1],J[2],J[3]*this._previewPlaneOpacity],i=[0,0,0,0];this._previewPlaneGridVisualElement.backgroundColor=e,this._previewPlaneGridVisualElement.gridColor=i}_updateManipulatorsInteractive(t){if(!t.grabbing)return this.shiftManipulator.interactive=!0,this.rotateHeadingManipulator.interactive=!0,this.rotateTiltManipulator.interactive=!0,void this.resizeManipulators.forEach((t=>{t.interactive=!0}));this.shiftManipulator.interactive=this.shiftManipulator===t,this.rotateHeadingManipulator.interactive=this.rotateHeadingManipulator===t,this.rotateTiltManipulator.interactive=this.rotateTiltManipulator===t,this.resizeManipulators.forEach((e=>{e.interactive=e===t}))}testData(){return{plane:this.analysisViewData.plane,setPointerMoveTimerMs:t=>{this._pointerMoveTimerMs=t}}}};function St(t,e,i,a){const s=Pt(i,R(a),t.direction,O()),n=H();return z(s,t,n)?{type:"shift",creatingPointerId:e,hasBeenDragged:!1,shiftPlane:s,depth:0,startPoint:n}:null}function Ht(t){return"mouse"!==t.pointerType||0===t.button}Et.disableEngineLayers=!1,t([P()],Et.prototype,"_clock",void 0),t([P({constructOnly:!0})],Et.prototype,"view",void 0),t([P()],Et.prototype,"analysisViewData",void 0),t([P({readOnly:!0})],Et.prototype,"state",null),t([P({readOnly:!0})],Et.prototype,"cursor",null),t([P()],Et.prototype,"analysis",null),t([P()],Et.prototype,"removeIncompleteOnCancel",void 0),t([P({readOnly:!0})],Et.prototype,"layersMode",void 0),t([P({value:null})],Et.prototype,"inputState",null),t([P()],Et.prototype,"_isPlacingSlicePlane",null),t([P()],Et.prototype,"_creatingPointerId",null),Et=kt=t([y("esri.views.3d.analysis.Slice.SliceTool")],Et);const xt=x(),It=v(),Rt=Et;export{Rt as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.25/esri/copyright.txt for details.
4
4
  */
5
- import has from"../../../../core/has.js";import{deg2rad as o}from"../../../../core/mathUtils.js";import{f as s}from"../../../../chunks/vec3f64.js";import{b as t,f as r}from"../../../../chunks/vec4f64.js";const c=has("mac")?"Meta":"Control",m="Shift",a=2,f=1.15,h=1.15,e=2500,i=.02,p=Math.cos(o(45)),j=Math.cos(o(5)),n=.95,M=.3,k=.7,l=s(1,.5,0),u=2,v=1,b=t([...l,k]),x=[0,0,0,.04],C=t([...l,.5]),S=r(1,1,1,1),U=r(1,.8,.6,1),d=r(1,.93,.86,1),g=t([...l,1]),q=t([...l,1]),w=3,y=11,z=22.5,A=40,B=48,D=2.25,E=t([...l,1]),F=4,G=1,H=.3,I=6,J=4,K=1600,L=.4;export{a as DISPLAY_FOCUS_MULTIPLIER,C as GRID_COLOR,i as INITIAL_DEPTH_OFFSET_FRAC,L as INITIAL_PLANE_HALF_SIZE_VIEW_PROPORTION,x as PLANE_BACKGROUND_COLOR,K as PLANE_MIN_BASIS_SCREEN_LEN2,b as PLANE_OUTLINE_COLOR,v as PLANE_OUTLINE_WIDTH,u as PLANE_PREVIEW_OUTLINE_WIDTH,e as POINTER_MOVE_TIMER_MS,n as PREVIEW_FADE_DOT_THRESHOLD,M as PREVIEW_FADE_DURATION_SECONDS,E as RESIZE_HANDLE_COLOR,I as RESIZE_HANDLE_CORNER_INPUT_RADIUS,F as RESIZE_HANDLE_CORNER_WIDTH,J as RESIZE_HANDLE_EDGE_INPUT_RADIUS,H as RESIZE_HANDLE_EDGE_PADDING_FRAC,G as RESIZE_HANDLE_EDGE_WIDTH,U as SHIFT_RESTART_ARROW_CAP_COLOR,B as SHIFT_RESTART_ARROW_LENGTH,D as SHIFT_RESTART_ARROW_OUTLINE_WIDTH,S as SHIFT_RESTART_ARROW_TIP_COLOR,g as SHIFT_RESTART_CALLOUT_COLOR,A as SHIFT_RESTART_OFFSET_DISTANCE,q as SHIFT_RESTART_OUTLINE_COLOR,h as SHIFT_RESTART_TIP_FOCUS_MULTIPLIER,z as SHIFT_RESTART_TIP_LENGTH,y as SHIFT_RESTART_TIP_RADIUS,d as SHIFT_RESTART_TUBE_COLOR,f as SHIFT_RESTART_TUBE_FOCUS_MULTIPLIER,w as SHIFT_RESTART_TUBE_RADIUS,j as SMALL_ANGLE_DOT_THRESHOLD,p as VERTICAL_DOT_THRESHOLD,c as forceHorizontalModifier,m as forceVerticalModifier};
5
+ import has from"../../../../core/has.js";import{deg2rad as o}from"../../../../core/mathUtils.js";import{f as s}from"../../../../chunks/vec3f64.js";import{a as t,f as r}from"../../../../chunks/vec4f64.js";const a=has("mac")?"Meta":"Control",c="Shift",m=2,f=1.15,h=1.15,e=2500,i=.02,p=Math.cos(o(45)),j=Math.cos(o(5)),n=.95,M=.3,k=.7,l=s(1,.5,0),u=2,v=1,x=t([...l,k]),C=[0,0,0,.04],S=t([...l,.5]),U=r(1,1,1,1),b=r(1,.8,.6,1),d=r(1,.93,.86,1),g=t([...l,1]),q=t([...l,1]),w=3,y=11,z=22.5,A=40,B=48,D=2.25,E=t([...l,1]),F=4,G=1,H=.3,I=6,J=4,K=1600,L=.4;export{m as DISPLAY_FOCUS_MULTIPLIER,S as GRID_COLOR,i as INITIAL_DEPTH_OFFSET_FRAC,L as INITIAL_PLANE_HALF_SIZE_VIEW_PROPORTION,C as PLANE_BACKGROUND_COLOR,K as PLANE_MIN_BASIS_SCREEN_LEN2,x as PLANE_OUTLINE_COLOR,v as PLANE_OUTLINE_WIDTH,u as PLANE_PREVIEW_OUTLINE_WIDTH,e as POINTER_MOVE_TIMER_MS,n as PREVIEW_FADE_DOT_THRESHOLD,M as PREVIEW_FADE_DURATION_SECONDS,E as RESIZE_HANDLE_COLOR,I as RESIZE_HANDLE_CORNER_INPUT_RADIUS,F as RESIZE_HANDLE_CORNER_WIDTH,J as RESIZE_HANDLE_EDGE_INPUT_RADIUS,H as RESIZE_HANDLE_EDGE_PADDING_FRAC,G as RESIZE_HANDLE_EDGE_WIDTH,b as SHIFT_RESTART_ARROW_CAP_COLOR,B as SHIFT_RESTART_ARROW_LENGTH,D as SHIFT_RESTART_ARROW_OUTLINE_WIDTH,U as SHIFT_RESTART_ARROW_TIP_COLOR,g as SHIFT_RESTART_CALLOUT_COLOR,A as SHIFT_RESTART_OFFSET_DISTANCE,q as SHIFT_RESTART_OUTLINE_COLOR,h as SHIFT_RESTART_TIP_FOCUS_MULTIPLIER,z as SHIFT_RESTART_TIP_LENGTH,y as SHIFT_RESTART_TIP_RADIUS,d as SHIFT_RESTART_TUBE_COLOR,f as SHIFT_RESTART_TUBE_FOCUS_MULTIPLIER,w as SHIFT_RESTART_TUBE_RADIUS,j as SMALL_ANGLE_DOT_THRESHOLD,p as VERTICAL_DOT_THRESHOLD,a as forceHorizontalModifier,c as forceVerticalModifier};