@arcgis/core 4.28.0-rc.1 → 4.28.0-rc.2

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 (688) hide show
  1. package/arcade/featureset/sources/FeatureLayerDynamic.js +1 -1
  2. package/arcade/featureset/sources/FeatureLayerMemory.js +1 -1
  3. package/arcade/featureset/sources/FeatureLayerRelated.js +1 -1
  4. package/arcade/featureset/support/FeatureSet.js +1 -1
  5. package/arcade/functions/featuresetbase.js +1 -1
  6. package/arcade/treeAnalysis.js +1 -1
  7. package/assets/esri/core/workers/RemoteClient.js +1 -1
  8. package/assets/esri/core/workers/chunks/00da3c16741a9bc47f3a.js +1 -0
  9. package/assets/esri/core/workers/chunks/020825b9c12f2b6386a7.js +1 -0
  10. package/assets/esri/core/workers/chunks/07adca463da5554e514d.js +1 -0
  11. package/assets/esri/core/workers/chunks/07c1783baf9b19b4876a.js +1 -0
  12. package/assets/esri/core/workers/chunks/08a98e85e86ce560d005.js +1 -0
  13. package/assets/esri/core/workers/chunks/0e354096ad8817971eed.js +1 -0
  14. package/assets/esri/core/workers/chunks/0e4646d14fa0775bf463.js +1 -0
  15. package/assets/esri/core/workers/chunks/0ea41f142793edb99d3a.js +1 -0
  16. package/assets/esri/core/workers/chunks/10dc578a90e1194c8720.js +1 -0
  17. package/assets/esri/core/workers/chunks/18e0c5bfeb1aa7213dfa.js +1 -0
  18. package/assets/esri/core/workers/chunks/19c9966f74d287750aaa.js +1 -0
  19. package/assets/esri/core/workers/chunks/1a65d9b9f823d1e8b315.js +1 -0
  20. package/assets/esri/core/workers/chunks/1eb5468c7cf653338d53.js +1 -0
  21. package/assets/esri/core/workers/chunks/1f30ea1a598ddd2e5df3.js +1 -0
  22. package/assets/esri/core/workers/chunks/{40c00b352618c7839f7e.js → 1f87f22e00e3218661c6.js} +1 -1
  23. package/assets/esri/core/workers/chunks/1fc3b526e881ada30420.js +1 -0
  24. package/assets/esri/core/workers/chunks/2304b7456ced997904f6.js +1 -0
  25. package/assets/esri/core/workers/chunks/2d92df1e3ba4f05e0510.js +1 -0
  26. package/assets/esri/core/workers/chunks/32bd6a343ea49c331e1f.js +1 -0
  27. package/assets/esri/core/workers/chunks/3491f1945d9c06d8b2c7.js +1 -0
  28. package/assets/esri/core/workers/chunks/366cf9bba6989342e447.js +1 -0
  29. package/assets/esri/core/workers/chunks/37edbd9b05bfdb2e645d.js +1 -0
  30. package/assets/esri/core/workers/chunks/3c5a112a9b58770a5242.js +1 -0
  31. package/assets/esri/core/workers/chunks/41778f8c49febe1f9404.js +1 -0
  32. package/assets/esri/core/workers/chunks/430ec9f5949b31959893.js +1 -0
  33. package/assets/esri/core/workers/chunks/43575b9acf9819f195f9.js +1 -0
  34. package/assets/esri/core/workers/chunks/43f7d9366d06d69e7c50.js +1 -0
  35. package/assets/esri/core/workers/chunks/{b98a2191cb997d632438.js → 4672504d6fe649da19f2.js} +1 -1
  36. package/assets/esri/core/workers/chunks/4e813f112a428b4acf0e.js +1 -0
  37. package/assets/esri/core/workers/chunks/{ca023e409bb7de9a69ab.js → 51b8913dff24e693bd25.js} +1 -1
  38. package/assets/esri/core/workers/chunks/5386b166f2e5dc0d9143.js +1 -0
  39. package/assets/esri/core/workers/chunks/562eafa5090827ebb7ec.js +1 -0
  40. package/assets/esri/core/workers/chunks/56a61a8bff08ae273de4.js +1 -0
  41. package/assets/esri/core/workers/chunks/580e7d3cbf6797a50ded.js +1 -0
  42. package/assets/esri/core/workers/chunks/5e8f02da4eae41f57383.js +1 -0
  43. package/assets/esri/core/workers/chunks/6046be598e8c673eeb1f.js +1 -0
  44. package/assets/esri/core/workers/chunks/61dec8399919b278b636.js +1 -0
  45. package/assets/esri/core/workers/chunks/6334a8a7b671d4042108.js +1 -0
  46. package/assets/esri/core/workers/chunks/6747503826bfc94bc6c0.js +1 -0
  47. package/assets/esri/core/workers/chunks/6867ed1860afb7aac536.js +1 -0
  48. package/assets/esri/core/workers/chunks/69c1c850af7ee33258e0.js +1 -0
  49. package/assets/esri/core/workers/chunks/70aa04b09143b7dd2ecb.js +1 -0
  50. package/assets/esri/core/workers/chunks/7388fd97e7b1a2142744.js +1 -0
  51. package/assets/esri/core/workers/chunks/7648f3341b7dff2825c3.js +1 -0
  52. package/assets/esri/core/workers/chunks/768271a12dc7e1781447.js +1 -0
  53. package/assets/esri/core/workers/chunks/{efb17a298363beca5209.js → 7756ed853b4ba54cd081.js} +1 -1
  54. package/assets/esri/core/workers/chunks/7f3bc7a2de59e485f22f.js +1 -0
  55. package/assets/esri/core/workers/chunks/7f433e25f3892475d5dc.js +1 -0
  56. package/assets/esri/core/workers/chunks/80bf6cf1bef17215bca4.js +1 -0
  57. package/assets/esri/core/workers/chunks/83d063b7ce768e9ab3de.js +1 -0
  58. package/assets/esri/core/workers/chunks/83f7e22a12d90ef93e62.js +1 -0
  59. package/assets/esri/core/workers/chunks/{4cc680fe4c9c39d2f853.js → 8a7fa4e8b0d14da7c9eb.js} +1 -1
  60. package/assets/esri/core/workers/chunks/92d8f75e616afa5c761e.js +1 -0
  61. package/assets/esri/core/workers/chunks/99fd09dd42b75a932e84.js +1 -0
  62. package/assets/esri/core/workers/chunks/{f0664a24f2c3705747a5.js → 9c77d69a13ec22cdd760.js} +1 -1
  63. package/assets/esri/core/workers/chunks/a360534e89a337871921.js +1 -0
  64. package/assets/esri/core/workers/chunks/a4341ec0fe89b865d849.js +1 -0
  65. package/assets/esri/core/workers/chunks/a821fa1870b83fed5d31.js +1 -0
  66. package/assets/esri/core/workers/chunks/a8e4726c1db23324eb54.js +1 -0
  67. package/assets/esri/core/workers/chunks/abcfe3bda6f40318b092.js +1 -0
  68. package/assets/esri/core/workers/chunks/ac3e429d43f80c596ec8.js +1 -0
  69. package/assets/esri/core/workers/chunks/ac53b5479dd229fa4f7d.js +1 -0
  70. package/assets/esri/core/workers/chunks/aeb3efa91165dd3d2493.js.LICENSE.txt +1 -1
  71. package/assets/esri/core/workers/chunks/b03eaba5fa75d6ef834a.js +1 -0
  72. package/assets/esri/core/workers/chunks/b251d8a856dc8b9406e0.js +1 -0
  73. package/assets/esri/core/workers/chunks/b3f5e97b47e896c6008a.js +1 -0
  74. package/assets/esri/core/workers/chunks/b6cc8d7dcc710231fe72.js +1 -0
  75. package/assets/esri/core/workers/chunks/b7c81a5bbcdd94b8a7f6.js +1 -0
  76. package/assets/esri/core/workers/chunks/b9a726f3bbad6fd4d65a.js +1 -0
  77. package/assets/esri/core/workers/chunks/c416df0668f6c596095f.js +1 -0
  78. package/assets/esri/core/workers/chunks/c447f4bf0e5f012f8f9b.js +1 -0
  79. package/assets/esri/core/workers/chunks/c7bd63103f101c09b1ea.js +1 -0
  80. package/assets/esri/core/workers/chunks/ca3d5803cdf035d7389d.js +1 -0
  81. package/assets/esri/core/workers/chunks/cb4b17f5cf96a9e36781.js +1 -0
  82. package/assets/esri/core/workers/chunks/cbddfcf57f72428a6992.js +1 -0
  83. package/assets/esri/core/workers/chunks/cc86c8c88124d916e1b3.js +1 -0
  84. package/assets/esri/core/workers/chunks/d0119dff8771e749436a.js +1 -0
  85. package/assets/esri/core/workers/chunks/d07235ce2765a25b9be4.js +1 -0
  86. package/assets/esri/core/workers/chunks/d0f903f2257eb96f7789.js +1 -0
  87. package/assets/esri/core/workers/chunks/d153a8b71111165fc891.js +1 -0
  88. package/assets/esri/core/workers/chunks/d213024012b1a019bfde.js +1 -0
  89. package/assets/esri/core/workers/chunks/d5fec54e98c8622349a4.js +1 -0
  90. package/assets/esri/core/workers/chunks/d878bb6409df183ea0ce.js +1 -0
  91. package/assets/esri/core/workers/chunks/da124ccd18d2745195fe.js +1 -0
  92. package/assets/esri/core/workers/chunks/dd55151bfac60b0deaac.js +1 -0
  93. package/assets/esri/core/workers/chunks/e06cd10b6f8f363b5131.js +1 -0
  94. package/assets/esri/core/workers/chunks/e5352dc8983d06d4ee0f.js +1 -0
  95. package/assets/esri/core/workers/chunks/e67c4b7ad06d8404895a.js +1 -0
  96. package/assets/esri/core/workers/chunks/e810336a4292ea6076a6.js +1 -0
  97. package/assets/esri/core/workers/chunks/{4c3345ffbe79ee0167fb.js → ea9ae9d2aef01af90896.js} +1 -1
  98. package/assets/esri/core/workers/chunks/ef757269fb3fe0e74ef8.js +1 -0
  99. package/assets/esri/core/workers/chunks/f0d342303fc20e266d27.js +1 -0
  100. package/assets/esri/core/workers/chunks/f73563b23fd8dc6cf2fe.js +1 -0
  101. package/assets/esri/core/workers/chunks/f85107720159b855a469.js +1 -0
  102. package/assets/esri/core/workers/chunks/fbc57985d55b5fbe1e8a.js +1 -0
  103. package/assets/esri/core/workers/chunks/fc95b1a36ed68b851400.js +1 -0
  104. package/assets/esri/core/workers/chunks/{7cf7f2b991a7cbdad2ce.js → fd28400141a6751327ae.js} +1 -1
  105. package/assets/esri/themes/base/_core.scss +2 -0
  106. package/assets/esri/themes/base/widgets/_DatePicker.scss +4 -0
  107. package/assets/esri/themes/base/widgets/_Features.scss +1 -1
  108. package/assets/esri/themes/base/widgets/_ScaleRangeSlider.scss +1 -1
  109. package/assets/esri/themes/base/widgets/_TimeZoneLabel.scss +46 -0
  110. package/assets/esri/themes/base/widgets/_Tooltip.scss +1 -1
  111. package/assets/esri/themes/base/widgets/_UtilityNetworkTrace.scss +4 -0
  112. package/assets/esri/themes/dark/main.css +1 -1
  113. package/assets/esri/themes/light/main.css +1 -1
  114. package/assets/esri/themes/light/view.css +1 -1
  115. package/assets/esri/widgets/Editor/t9n/Editor_ar.json +1 -1
  116. package/assets/esri/widgets/Editor/t9n/Editor_bg.json +1 -1
  117. package/assets/esri/widgets/Editor/t9n/Editor_bs.json +1 -1
  118. package/assets/esri/widgets/Editor/t9n/Editor_ca.json +1 -1
  119. package/assets/esri/widgets/Editor/t9n/Editor_cs.json +1 -1
  120. package/assets/esri/widgets/Editor/t9n/Editor_da.json +1 -1
  121. package/assets/esri/widgets/Editor/t9n/Editor_de.json +1 -1
  122. package/assets/esri/widgets/Editor/t9n/Editor_el.json +1 -1
  123. package/assets/esri/widgets/Editor/t9n/Editor_es.json +1 -1
  124. package/assets/esri/widgets/Editor/t9n/Editor_et.json +1 -1
  125. package/assets/esri/widgets/Editor/t9n/Editor_fi.json +1 -1
  126. package/assets/esri/widgets/Editor/t9n/Editor_fr.json +1 -1
  127. package/assets/esri/widgets/Editor/t9n/Editor_he.json +1 -1
  128. package/assets/esri/widgets/Editor/t9n/Editor_hr.json +1 -1
  129. package/assets/esri/widgets/Editor/t9n/Editor_hu.json +1 -1
  130. package/assets/esri/widgets/Editor/t9n/Editor_id.json +1 -1
  131. package/assets/esri/widgets/Editor/t9n/Editor_it.json +1 -1
  132. package/assets/esri/widgets/Editor/t9n/Editor_ja.json +1 -1
  133. package/assets/esri/widgets/Editor/t9n/Editor_ko.json +1 -1
  134. package/assets/esri/widgets/Editor/t9n/Editor_lt.json +1 -1
  135. package/assets/esri/widgets/Editor/t9n/Editor_lv.json +1 -1
  136. package/assets/esri/widgets/Editor/t9n/Editor_nb.json +1 -1
  137. package/assets/esri/widgets/Editor/t9n/Editor_nl.json +1 -1
  138. package/assets/esri/widgets/Editor/t9n/Editor_pl.json +1 -1
  139. package/assets/esri/widgets/Editor/t9n/Editor_pt-BR.json +1 -1
  140. package/assets/esri/widgets/Editor/t9n/Editor_pt-PT.json +1 -1
  141. package/assets/esri/widgets/Editor/t9n/Editor_ro.json +1 -1
  142. package/assets/esri/widgets/Editor/t9n/Editor_ru.json +1 -1
  143. package/assets/esri/widgets/Editor/t9n/Editor_sk.json +1 -1
  144. package/assets/esri/widgets/Editor/t9n/Editor_sl.json +1 -1
  145. package/assets/esri/widgets/Editor/t9n/Editor_sr.json +1 -1
  146. package/assets/esri/widgets/Editor/t9n/Editor_sv.json +1 -1
  147. package/assets/esri/widgets/Editor/t9n/Editor_th.json +1 -1
  148. package/assets/esri/widgets/Editor/t9n/Editor_tr.json +1 -1
  149. package/assets/esri/widgets/Editor/t9n/Editor_uk.json +1 -1
  150. package/assets/esri/widgets/Editor/t9n/Editor_vi.json +1 -1
  151. package/assets/esri/widgets/Editor/t9n/Editor_zh-CN.json +1 -1
  152. package/assets/esri/widgets/Editor/t9n/Editor_zh-HK.json +1 -1
  153. package/assets/esri/widgets/Editor/t9n/Editor_zh-TW.json +1 -1
  154. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ar.json +1 -1
  155. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_bg.json +1 -1
  156. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_bs.json +1 -1
  157. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ca.json +1 -1
  158. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_cs.json +1 -1
  159. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_da.json +1 -1
  160. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_de.json +1 -1
  161. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_el.json +1 -1
  162. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_es.json +1 -1
  163. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_et.json +1 -1
  164. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_fi.json +1 -1
  165. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_fr.json +1 -1
  166. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_he.json +1 -1
  167. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_hr.json +1 -1
  168. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_hu.json +1 -1
  169. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_id.json +1 -1
  170. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_it.json +1 -1
  171. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ja.json +1 -1
  172. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ko.json +1 -1
  173. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_lt.json +1 -1
  174. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_lv.json +1 -1
  175. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_nb.json +1 -1
  176. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_nl.json +1 -1
  177. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_pl.json +1 -1
  178. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_pt-BR.json +1 -1
  179. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_pt-PT.json +1 -1
  180. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ro.json +1 -1
  181. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ru.json +1 -1
  182. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_sk.json +1 -1
  183. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_sl.json +1 -1
  184. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_sr.json +1 -1
  185. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_sv.json +1 -1
  186. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_th.json +1 -1
  187. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_tr.json +1 -1
  188. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_uk.json +1 -1
  189. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_vi.json +1 -1
  190. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_zh-CN.json +1 -1
  191. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_zh-HK.json +1 -1
  192. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_zh-TW.json +1 -1
  193. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ar.json +1 -1
  194. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_bg.json +1 -1
  195. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_bs.json +1 -1
  196. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ca.json +1 -1
  197. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_cs.json +1 -1
  198. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_da.json +1 -1
  199. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_de.json +1 -1
  200. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_el.json +1 -1
  201. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_es.json +1 -1
  202. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_et.json +1 -1
  203. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_fi.json +1 -1
  204. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_fr.json +1 -1
  205. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_he.json +1 -1
  206. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_hr.json +1 -1
  207. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_hu.json +1 -1
  208. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_id.json +1 -1
  209. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_it.json +1 -1
  210. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ja.json +1 -1
  211. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ko.json +1 -1
  212. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_lt.json +1 -1
  213. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_lv.json +1 -1
  214. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_nb.json +1 -1
  215. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_nl.json +1 -1
  216. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_pl.json +1 -1
  217. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_pt-BR.json +1 -1
  218. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_pt-PT.json +1 -1
  219. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ro.json +1 -1
  220. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ru.json +1 -1
  221. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sk.json +1 -1
  222. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sl.json +1 -1
  223. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sr.json +1 -1
  224. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sv.json +1 -1
  225. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_th.json +1 -1
  226. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_tr.json +1 -1
  227. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_uk.json +1 -1
  228. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_vi.json +1 -1
  229. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_zh-CN.json +1 -1
  230. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_zh-HK.json +1 -1
  231. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_zh-TW.json +1 -1
  232. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_ar.json +1 -1
  233. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_bg.json +1 -1
  234. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_bs.json +1 -1
  235. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_ca.json +1 -1
  236. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_cs.json +1 -1
  237. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_da.json +1 -1
  238. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_de.json +1 -1
  239. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_el.json +1 -1
  240. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_es.json +1 -1
  241. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_et.json +1 -1
  242. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_fi.json +1 -1
  243. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_fr.json +1 -1
  244. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_he.json +1 -1
  245. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_hr.json +1 -1
  246. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_hu.json +1 -1
  247. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_id.json +1 -1
  248. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_it.json +1 -1
  249. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_ja.json +1 -1
  250. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_ko.json +1 -1
  251. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_lt.json +1 -1
  252. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_lv.json +1 -1
  253. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_nb.json +1 -1
  254. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_nl.json +1 -1
  255. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_pl.json +1 -1
  256. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_pt-BR.json +1 -1
  257. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_pt-PT.json +1 -1
  258. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_ro.json +1 -1
  259. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_ru.json +1 -1
  260. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_sk.json +1 -1
  261. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_sl.json +1 -1
  262. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_sr.json +1 -1
  263. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_sv.json +1 -1
  264. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_th.json +1 -1
  265. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_tr.json +1 -1
  266. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_uk.json +1 -1
  267. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_vi.json +1 -1
  268. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_zh-CN.json +1 -1
  269. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_zh-HK.json +1 -1
  270. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_zh-TW.json +1 -1
  271. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_ar.json +1 -1
  272. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_bg.json +1 -1
  273. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_bs.json +1 -1
  274. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_ca.json +1 -1
  275. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_cs.json +1 -1
  276. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_da.json +1 -1
  277. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_de.json +1 -1
  278. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_el.json +1 -1
  279. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_es.json +1 -1
  280. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_et.json +1 -1
  281. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_fi.json +1 -1
  282. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_fr.json +1 -1
  283. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_he.json +1 -1
  284. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_hr.json +1 -1
  285. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_hu.json +1 -1
  286. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_id.json +1 -1
  287. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_it.json +1 -1
  288. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_ja.json +1 -1
  289. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_ko.json +1 -1
  290. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_lt.json +1 -1
  291. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_lv.json +1 -1
  292. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_nb.json +1 -1
  293. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_nl.json +1 -1
  294. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_pl.json +1 -1
  295. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_pt-BR.json +1 -1
  296. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_pt-PT.json +1 -1
  297. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_ro.json +1 -1
  298. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_ru.json +1 -1
  299. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_sk.json +1 -1
  300. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_sl.json +1 -1
  301. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_sr.json +1 -1
  302. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_sv.json +1 -1
  303. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_th.json +1 -1
  304. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_tr.json +1 -1
  305. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_uk.json +1 -1
  306. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_vi.json +1 -1
  307. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_zh-CN.json +1 -1
  308. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_zh-HK.json +1 -1
  309. package/assets/esri/widgets/TimeZoneLabel/t9n/TimeZoneLabel_zh-TW.json +1 -1
  310. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ar.json +1 -1
  311. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_bg.json +1 -1
  312. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_bs.json +1 -1
  313. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ca.json +1 -1
  314. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_cs.json +1 -1
  315. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_da.json +1 -1
  316. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_de.json +1 -1
  317. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_el.json +1 -1
  318. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_es.json +1 -1
  319. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_et.json +1 -1
  320. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_fi.json +1 -1
  321. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_fr.json +1 -1
  322. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_he.json +1 -1
  323. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_hr.json +1 -1
  324. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_hu.json +1 -1
  325. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_id.json +1 -1
  326. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_it.json +1 -1
  327. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ja.json +1 -1
  328. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ko.json +1 -1
  329. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_lt.json +1 -1
  330. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_lv.json +1 -1
  331. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_nb.json +1 -1
  332. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_nl.json +1 -1
  333. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_pl.json +1 -1
  334. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_pt-BR.json +1 -1
  335. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_pt-PT.json +1 -1
  336. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ro.json +1 -1
  337. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ru.json +1 -1
  338. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_sk.json +1 -1
  339. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_sl.json +1 -1
  340. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_sr.json +1 -1
  341. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_sv.json +1 -1
  342. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_th.json +1 -1
  343. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_tr.json +1 -1
  344. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_uk.json +1 -1
  345. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_vi.json +1 -1
  346. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_zh-CN.json +1 -1
  347. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_zh-HK.json +1 -1
  348. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_zh-TW.json +1 -1
  349. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ar.json +1 -1
  350. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_bg.json +1 -1
  351. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_bs.json +1 -1
  352. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ca.json +1 -1
  353. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_cs.json +1 -1
  354. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_da.json +1 -1
  355. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_de.json +1 -1
  356. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_el.json +1 -1
  357. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_es.json +1 -1
  358. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_et.json +1 -1
  359. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_fi.json +1 -1
  360. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_fr.json +1 -1
  361. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_he.json +1 -1
  362. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_hr.json +1 -1
  363. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_hu.json +1 -1
  364. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_id.json +1 -1
  365. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_it.json +1 -1
  366. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ja.json +1 -1
  367. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ko.json +1 -1
  368. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_lt.json +1 -1
  369. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_lv.json +1 -1
  370. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_nb.json +1 -1
  371. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_nl.json +1 -1
  372. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pl.json +1 -1
  373. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pt-BR.json +1 -1
  374. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pt-PT.json +1 -1
  375. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ro.json +1 -1
  376. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ru.json +1 -1
  377. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sk.json +1 -1
  378. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sl.json +1 -1
  379. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sr.json +1 -1
  380. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sv.json +1 -1
  381. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_th.json +1 -1
  382. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_tr.json +1 -1
  383. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_uk.json +1 -1
  384. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_vi.json +1 -1
  385. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-CN.json +1 -1
  386. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-HK.json +1 -1
  387. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-TW.json +1 -1
  388. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ar.json +1 -1
  389. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_bg.json +1 -1
  390. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_bs.json +1 -1
  391. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ca.json +1 -1
  392. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_cs.json +1 -1
  393. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_da.json +1 -1
  394. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_de.json +1 -1
  395. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_el.json +1 -1
  396. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_es.json +1 -1
  397. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_et.json +1 -1
  398. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_fi.json +1 -1
  399. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_fr.json +1 -1
  400. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_he.json +1 -1
  401. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_hr.json +1 -1
  402. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_hu.json +1 -1
  403. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_id.json +1 -1
  404. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_it.json +1 -1
  405. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ja.json +1 -1
  406. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ko.json +1 -1
  407. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_lt.json +1 -1
  408. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_lv.json +1 -1
  409. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_nb.json +1 -1
  410. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_nl.json +1 -1
  411. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_pl.json +1 -1
  412. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_pt-BR.json +1 -1
  413. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_pt-PT.json +1 -1
  414. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ro.json +1 -1
  415. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ru.json +1 -1
  416. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_sk.json +1 -1
  417. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_sl.json +1 -1
  418. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_sr.json +1 -1
  419. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_sv.json +1 -1
  420. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_th.json +1 -1
  421. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_tr.json +1 -1
  422. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_uk.json +1 -1
  423. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_vi.json +1 -1
  424. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_zh-CN.json +1 -1
  425. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_zh-HK.json +1 -1
  426. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_zh-TW.json +1 -1
  427. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_ar.json +1 -1
  428. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_bg.json +1 -1
  429. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_bs.json +1 -1
  430. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_ca.json +1 -1
  431. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_cs.json +1 -1
  432. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_da.json +1 -1
  433. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_de.json +1 -1
  434. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_el.json +1 -1
  435. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_es.json +1 -1
  436. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_et.json +1 -1
  437. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_fi.json +1 -1
  438. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_fr.json +1 -1
  439. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_he.json +1 -1
  440. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_hr.json +1 -1
  441. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_hu.json +1 -1
  442. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_id.json +1 -1
  443. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_it.json +1 -1
  444. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_ja.json +1 -1
  445. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_ko.json +1 -1
  446. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_lt.json +1 -1
  447. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_lv.json +1 -1
  448. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_nb.json +1 -1
  449. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_nl.json +1 -1
  450. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_pl.json +1 -1
  451. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_pt-BR.json +1 -1
  452. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_pt-PT.json +1 -1
  453. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_ro.json +1 -1
  454. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_ru.json +1 -1
  455. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_sk.json +1 -1
  456. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_sl.json +1 -1
  457. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_sr.json +1 -1
  458. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_sv.json +1 -1
  459. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_th.json +1 -1
  460. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_tr.json +1 -1
  461. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_uk.json +1 -1
  462. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_vi.json +1 -1
  463. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_zh-CN.json +1 -1
  464. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_zh-HK.json +1 -1
  465. package/assets/esri/widgets/support/SketchTooltipControls/t9n/SketchTooltipControls_zh-TW.json +1 -1
  466. package/chunks/HighlightApply.glsl.js +6 -7
  467. package/chunks/HighlightBlur.glsl.js +5 -6
  468. package/chunks/HighlightDownsample.glsl.js +8 -8
  469. package/chunks/languageUtils.js +1 -1
  470. package/core/MemCache.js +1 -1
  471. package/core/MemCachePool.js +1 -1
  472. package/core/colorUtils.js +1 -1
  473. package/geometry/GeometryCursor.js +1 -1
  474. package/interfaces.d.ts +317 -27
  475. package/intl/date.js +1 -1
  476. package/kernel.js +1 -1
  477. package/layers/GroupLayer.js +1 -1
  478. package/layers/MapNotesLayer.js +1 -1
  479. package/layers/SceneLayer.js +1 -1
  480. package/layers/graphics/controllers/I3SOnDemandController.js +1 -1
  481. package/layers/graphics/data/AttributesBuilder.js +1 -1
  482. package/layers/graphics/data/QueryEngineResult.js +1 -1
  483. package/layers/graphics/editingSupport.js +1 -1
  484. package/layers/graphics/sources/FeatureLayerSource.js +1 -1
  485. package/layers/graphics/sources/csv/csv.js +1 -1
  486. package/layers/graphics/sources/geojson/GeoJSONSourceWorker.js +1 -1
  487. package/layers/graphics/sources/support/MemorySourceWorker.js +1 -1
  488. package/layers/graphics/sources/support/sourceUtils.js +1 -1
  489. package/layers/ogc/wfsUtils.js +1 -1
  490. package/layers/support/Field.js +1 -1
  491. package/layers/support/FieldsIndex.js +1 -1
  492. package/layers/support/LayerContingentValuesCache.js +1 -1
  493. package/layers/support/fieldProperties.js +1 -1
  494. package/layers/support/fieldUtils.js +1 -1
  495. package/layers/support/imageryRendererUtils.js +1 -1
  496. package/layers/support/labelFormatUtils.js +1 -1
  497. package/package.json +2 -2
  498. package/renderers/UniqueValueRenderer.js +1 -1
  499. package/renderers/support/utils.js +1 -1
  500. package/rest/featureService/FeatureService.js +1 -1
  501. package/rest/query/operations/query.js +1 -1
  502. package/smartMapping/labels/clusters.js +1 -1
  503. package/smartMapping/popup/support/clusterUtils.js +1 -1
  504. package/smartMapping/renderers/color.js +1 -1
  505. package/smartMapping/renderers/opacity.js +1 -1
  506. package/smartMapping/renderers/size.js +1 -1
  507. package/smartMapping/renderers/support/utils.js +1 -1
  508. package/smartMapping/renderers/type.js +1 -1
  509. package/smartMapping/renderers/univariateColorSize.js +1 -1
  510. package/smartMapping/statistics/histogram.js +1 -1
  511. package/smartMapping/statistics/summaryStatistics.js +1 -1
  512. package/smartMapping/statistics/support/statsWorker.js +1 -1
  513. package/smartMapping/statistics/support/utils.js +1 -1
  514. package/smartMapping/support/adapters/FeatureLayerAdapter.js +1 -1
  515. package/smartMapping/support/adapters/FeatureLayerBinningAdapter.js +1 -1
  516. package/smartMapping/support/adapters/InMemoryLayerAdapter.js +1 -1
  517. package/smartMapping/support/adapters/OGCFeatureLayerAdapter.js +1 -1
  518. package/smartMapping/support/adapters/SceneLayerAdapter.js +1 -1
  519. package/smartMapping/support/adapters/StreamLayerAdapter.js +1 -1
  520. package/smartMapping/support/adapters/support/utils.js +1 -1
  521. package/smartMapping/support/clusterUtils.js +1 -1
  522. package/smartMapping/support/utils.js +1 -1
  523. package/support/revision.js +1 -1
  524. package/symbols/cim/CIMSymbolHelper.js +1 -1
  525. package/symbols/cim/effects/EffectDashes.js +1 -1
  526. package/symbols/support/previewCIMSymbol.js +1 -1
  527. package/time/timeZoneUtils.js +1 -1
  528. package/versionManagement/VersionManagementService.js +1 -1
  529. package/views/2d/engine/vectorTiles/RenderBucket.js +1 -1
  530. package/views/2d/input/handlers/KeyPan.js +1 -1
  531. package/views/2d/layers/ImageryTileLayerView2D.js +1 -1
  532. package/views/2d/viewpointUtils.js +1 -1
  533. package/views/3d/analysis/AreaMeasurement/support/AreaMeasurementVisualization.js +1 -1
  534. package/views/3d/analysis/DirectLineMeasurement/DirectLineMeasurementVisualization.js +1 -1
  535. package/views/3d/interactive/editingTools/transformGraphic/GraphicScaleRotateTransform.js +1 -1
  536. package/views/3d/layers/I3SMeshView3D.js +1 -1
  537. package/views/3d/layers/i3s/I3SOverrides.js +1 -1
  538. package/views/3d/layers/i3s/I3SViewportQueries.js +1 -1
  539. package/views/3d/support/buffer/InterleavedLayout.js +1 -1
  540. package/views/3d/terrain/PlanarPatch.js +1 -1
  541. package/views/3d/terrain/SphericalPatch.js +1 -1
  542. package/views/3d/terrain/TerrainSurface.js +1 -1
  543. package/views/3d/terrain/Tile.js +1 -1
  544. package/views/3d/terrain/TileRenderer.js +1 -1
  545. package/views/3d/terrain/TileTexture.js +1 -1
  546. package/views/3d/webgl-engine/core/FBOCache.js +1 -1
  547. package/views/3d/webgl-engine/core/shaderLibrary/shading/ScreenSpaceReflections.glsl.js +1 -1
  548. package/views/3d/webgl-engine/effects/highlight/Highlight.js +1 -1
  549. package/views/3d/webgl-engine/effects/highlight/HighlightPassParameters.js +1 -1
  550. package/views/3d/webgl-engine/lib/TextRenderer.js +1 -1
  551. package/views/3d/webgl-engine/lib/edgeRendering/EdgeView.js +1 -1
  552. package/views/3d/webgl-engine/materials/renderers/MergedRenderer.js +1 -1
  553. package/views/3d/webgl-engine/shaders/HighlightApply.glsl.js +1 -1
  554. package/views/3d/webgl-engine/shaders/HighlightBlur.glsl.js +1 -1
  555. package/views/3d/webgl-engine/shaders/HighlightDownsample.glsl.js +1 -1
  556. package/views/interactive/SegmentLabels.js +1 -1
  557. package/views/overlay/TextOverlayItem.js +1 -1
  558. package/views/webgl/VertexArrayObject.js +1 -1
  559. package/widgets/AreaMeasurement2D/AreaMeasurement2DTool.js +1 -1
  560. package/widgets/DistanceMeasurement2D/DistanceMeasurement2DTool.js +1 -1
  561. package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
  562. package/widgets/Editor/CreateFeaturesWorkflowData.js +1 -1
  563. package/widgets/Editor/EditorViewModel.js +1 -1
  564. package/widgets/Editor/UpdateFeatureWorkflow.js +1 -1
  565. package/widgets/Editor/UpdateRecordWorkflow.js +1 -1
  566. package/widgets/Editor/UpdateWorkflow.js +1 -1
  567. package/widgets/Editor/workflowUtils.js +1 -1
  568. package/widgets/Editor.js +1 -1
  569. package/widgets/Feature/FeatureRelationship/FeatureRelationshipViewModel.js +1 -1
  570. package/widgets/Feature/FeatureViewModel.js +1 -1
  571. package/widgets/Feature/support/featureUtils.js +1 -1
  572. package/widgets/FeatureForm/FieldInput.js +1 -1
  573. package/widgets/FeatureForm/RelationshipInput.js +1 -1
  574. package/widgets/FeatureForm/featureFormUtils.js +1 -1
  575. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  576. package/widgets/FeatureTable/FieldColumn.js +1 -1
  577. package/widgets/Features/FeaturesViewModel.js +1 -1
  578. package/widgets/Features/css.js +1 -1
  579. package/widgets/Features.js +1 -1
  580. package/widgets/Legend/LegendViewModel.js +1 -1
  581. package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
  582. package/widgets/Legend/support/utils.js +1 -1
  583. package/widgets/LineOfSight.js +1 -1
  584. package/widgets/OrientedImageryViewer.d.ts +4 -0
  585. package/widgets/Popup/actionUtils.js +1 -1
  586. package/widgets/ScaleRangeSlider.js +1 -1
  587. package/widgets/TimeZoneLabel/TimeZoneLabelViewModel.js +5 -0
  588. package/widgets/TimeZoneLabel/css.js +5 -0
  589. package/widgets/TimeZoneLabel.d.ts +4 -0
  590. package/widgets/TimeZoneLabel.js +5 -0
  591. package/widgets/UtilityNetworkTrace/UtilityNetworkTraceViewModel.js +1 -1
  592. package/widgets/UtilityNetworkTrace/support/ResultAreaHandler.js +1 -1
  593. package/widgets/UtilityNetworkTrace.js +1 -1
  594. package/widgets/UtilityNetworkValidateTopology/UtilityNetworkValidateTopologyViewModel.js +1 -1
  595. package/widgets/support/SnappingControls/SnappingControlsViewModel.js +1 -1
  596. package/assets/esri/core/workers/chunks/0036b6df93a17e57e3b9.js +0 -1
  597. package/assets/esri/core/workers/chunks/089e59445bd0b1131ffb.js +0 -1
  598. package/assets/esri/core/workers/chunks/09886c56427c4b3f18b5.js +0 -1
  599. package/assets/esri/core/workers/chunks/0b539dacc5c72399ab32.js +0 -1
  600. package/assets/esri/core/workers/chunks/0bb57b54897fb4381b46.js +0 -1
  601. package/assets/esri/core/workers/chunks/0d77c9c97301a4ee4167.js +0 -1
  602. package/assets/esri/core/workers/chunks/0d8ca51043c7784aed96.js +0 -1
  603. package/assets/esri/core/workers/chunks/121a9e148509f2fe2210.js +0 -1
  604. package/assets/esri/core/workers/chunks/1461910bd37aea28948b.js +0 -1
  605. package/assets/esri/core/workers/chunks/1586929658af88f6f961.js +0 -1
  606. package/assets/esri/core/workers/chunks/16d45f439b89da3ec835.js +0 -1
  607. package/assets/esri/core/workers/chunks/1ef3533abdd937ae2794.js +0 -1
  608. package/assets/esri/core/workers/chunks/24c504585da8e44f956f.js +0 -1
  609. package/assets/esri/core/workers/chunks/24ff267cf253feac22de.js +0 -1
  610. package/assets/esri/core/workers/chunks/2561c2bd5a0826dedcb1.js +0 -1
  611. package/assets/esri/core/workers/chunks/2832161454babb40614b.js +0 -1
  612. package/assets/esri/core/workers/chunks/29cab345819ec02ed60a.js +0 -1
  613. package/assets/esri/core/workers/chunks/2f8e71dac98135bbc3e6.js +0 -1
  614. package/assets/esri/core/workers/chunks/369f2ef414498c17a05a.js +0 -1
  615. package/assets/esri/core/workers/chunks/4108445c4a653772c5ee.js +0 -1
  616. package/assets/esri/core/workers/chunks/432a009e756643f59cb4.js +0 -1
  617. package/assets/esri/core/workers/chunks/435f04e3964b1c6d4880.js +0 -1
  618. package/assets/esri/core/workers/chunks/44a3d01b7daa46584ed9.js +0 -1
  619. package/assets/esri/core/workers/chunks/44b870cb53ba68b17c32.js +0 -1
  620. package/assets/esri/core/workers/chunks/4736188659a62488c777.js +0 -1
  621. package/assets/esri/core/workers/chunks/4763831c8815fed636f7.js +0 -1
  622. package/assets/esri/core/workers/chunks/4781e2011a32d7724889.js +0 -1
  623. package/assets/esri/core/workers/chunks/4d81aa50d90f5701a343.js +0 -1
  624. package/assets/esri/core/workers/chunks/4e60ac00b15b34a3b5f5.js +0 -1
  625. package/assets/esri/core/workers/chunks/4e6bf1efe3b0b474cbb4.js +0 -1
  626. package/assets/esri/core/workers/chunks/505132c47dbdf5fdeacc.js +0 -1
  627. package/assets/esri/core/workers/chunks/526ae87737777154c3f3.js +0 -1
  628. package/assets/esri/core/workers/chunks/53859d0bd8bb14af2d4d.js +0 -1
  629. package/assets/esri/core/workers/chunks/593d7f17090b74945345.js +0 -1
  630. package/assets/esri/core/workers/chunks/5a3ccc0a19ac8fa9e524.js +0 -1
  631. package/assets/esri/core/workers/chunks/5baae5acd184e87d5dc4.js +0 -1
  632. package/assets/esri/core/workers/chunks/5bdd2a3422fe52aa2c65.js +0 -1
  633. package/assets/esri/core/workers/chunks/66ba749ab0a631bbfdec.js +0 -1
  634. package/assets/esri/core/workers/chunks/69da907a92901f0fb391.js +0 -1
  635. package/assets/esri/core/workers/chunks/6b14d89d689a21014aec.js +0 -1
  636. package/assets/esri/core/workers/chunks/6b7b5544ed1f9a84623f.js +0 -1
  637. package/assets/esri/core/workers/chunks/6ce986f4213df8a2d934.js +0 -1
  638. package/assets/esri/core/workers/chunks/785d9a9a933314551b10.js +0 -1
  639. package/assets/esri/core/workers/chunks/7f6840c53a456524b74c.js +0 -1
  640. package/assets/esri/core/workers/chunks/84870178173951ad6c2b.js +0 -1
  641. package/assets/esri/core/workers/chunks/8634d6a62f4de973e39b.js +0 -1
  642. package/assets/esri/core/workers/chunks/88d43db03cc11cbffa68.js +0 -1
  643. package/assets/esri/core/workers/chunks/902b672a3475ec83b58b.js +0 -1
  644. package/assets/esri/core/workers/chunks/943ea851c1b07af91172.js +0 -1
  645. package/assets/esri/core/workers/chunks/9a5e3b0cc8536f79c377.js +0 -1
  646. package/assets/esri/core/workers/chunks/9f8207c82a17508a87a8.js +0 -1
  647. package/assets/esri/core/workers/chunks/a01ffe03b1465c21b9e6.js +0 -1
  648. package/assets/esri/core/workers/chunks/a298c9031962951e55a9.js +0 -1
  649. package/assets/esri/core/workers/chunks/a9a0194120ec65a00f6d.js +0 -1
  650. package/assets/esri/core/workers/chunks/aa453ae526a233cedf0c.js +0 -1
  651. package/assets/esri/core/workers/chunks/ab5ffcf0db724d40f714.js +0 -1
  652. package/assets/esri/core/workers/chunks/ad38e456a7cee940a165.js +0 -1
  653. package/assets/esri/core/workers/chunks/ae3ea5fa813aec0db5e1.js +0 -1
  654. package/assets/esri/core/workers/chunks/ae59e10b225f08f38487.js +0 -1
  655. package/assets/esri/core/workers/chunks/b030cf4b00e42337dc89.js +0 -1
  656. package/assets/esri/core/workers/chunks/b0526633a93ef69ec47b.js +0 -1
  657. package/assets/esri/core/workers/chunks/b0d6e6e489aaa331861c.js +0 -1
  658. package/assets/esri/core/workers/chunks/b0ddb503463328531d8f.js +0 -1
  659. package/assets/esri/core/workers/chunks/b1a8024bf8cdd0cd3884.js +0 -1
  660. package/assets/esri/core/workers/chunks/b3243695e0edfcbca276.js +0 -1
  661. package/assets/esri/core/workers/chunks/be57692d4b9ff6cd4c02.js +0 -1
  662. package/assets/esri/core/workers/chunks/c0061d993e1ede22b1dc.js +0 -1
  663. package/assets/esri/core/workers/chunks/c260ad3434bb00ba64a7.js +0 -1
  664. package/assets/esri/core/workers/chunks/c2be3b9aa28e454cf931.js +0 -1
  665. package/assets/esri/core/workers/chunks/c459c8d8630eb4b955b1.js +0 -1
  666. package/assets/esri/core/workers/chunks/c4df42fe859a9115a6e4.js +0 -1
  667. package/assets/esri/core/workers/chunks/c5acddea13fd01912e79.js +0 -1
  668. package/assets/esri/core/workers/chunks/c607fe4df3ca054f9aa8.js +0 -1
  669. package/assets/esri/core/workers/chunks/ca85e88dad30b5f2956b.js +0 -1
  670. package/assets/esri/core/workers/chunks/ce3bb546a729f0ccf696.js +0 -1
  671. package/assets/esri/core/workers/chunks/cfd63bd57eea2caa4bcb.js +0 -1
  672. package/assets/esri/core/workers/chunks/d6ded127949160103f69.js +0 -1
  673. package/assets/esri/core/workers/chunks/d95eed98316e59f8f35d.js +0 -1
  674. package/assets/esri/core/workers/chunks/e0b49c5eb5427656e835.js +0 -1
  675. package/assets/esri/core/workers/chunks/e52b9e423c0ba4134309.js +0 -1
  676. package/assets/esri/core/workers/chunks/e52d5a48e83d8df36f92.js +0 -1
  677. package/assets/esri/core/workers/chunks/e53df0f018a82e3a35bd.js +0 -1
  678. package/assets/esri/core/workers/chunks/ea953f5a0a975f7bd7b9.js +0 -1
  679. package/assets/esri/core/workers/chunks/eb4bfafe821daeb4bb6e.js +0 -1
  680. package/assets/esri/core/workers/chunks/f183a4b52095e4c498b4.js +0 -1
  681. package/assets/esri/core/workers/chunks/f221b9c6ae6c7eb4ca01.js +0 -1
  682. package/assets/esri/core/workers/chunks/f57100e3dfc7f087c3ad.js +0 -1
  683. package/assets/esri/core/workers/chunks/f5fd2ee5878c63777c51.js +0 -1
  684. package/assets/esri/core/workers/chunks/f6b7036114b1d754fdd9.js +0 -1
  685. package/assets/esri/core/workers/chunks/f6c0680c535c5a3c73ee.js +0 -1
  686. package/assets/esri/core/workers/chunks/f72a5af2a7ca1536f10a.js +0 -1
  687. package/assets/esri/core/workers/chunks/f99deed4120f605b6cd6.js +0 -1
  688. package/layers/graphics/sources/support/QueryEngineBuildLayer.js +0 -5
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{disposeMaybe as e,releaseMaybe as t}from"../../../core/maybe.js";import{s as r,j as s}from"../../../chunks/vec2.js";import{Z as o}from"../../../chunks/vec2f64.js";import{isBaseLayer as a,isGroupLayer as i}from"../../../layers/support/layerUtils.js";import{isImageWithType as n}from"../support/StreamDataLoader.js";import{BlendLayersPassParameters as c}from"./BlendLayersTechnique.js";import{TextureUpdate as u}from"./interfaces.js";import{NeighborIndex as l}from"./ITile.js";import{LayerClass as p}from"./LayerClass.js";import{isBlendableLayerView as h,isVectorTileLayerView as d,isVectorTileRenderInfo as m,isImageryTileRenderInfo as _,isRasterTileRenderInfo as f,isTextureTileRenderInfo as T,isVectorTilePerLayerInfo as y}from"./terrainUtils.js";import{ActivationTime as g}from"./TextureFader.js";import{TextureReference as x}from"./TextureReference.js";import{TileCompositor as b}from"./TileCompositor.js";import{TileRenderInfo as w}from"./TileRenderInfo.js";import I from"./TileTexture.js";import{TileUpdate as k}from"./TileUpdate.js";import{blendModeFromString as A}from"../webgl-engine/core/shaderLibrary/output/BlendOptions.js";import{BaseOpacityMode as P,BlendLayersOutput as E}from"../webgl-engine/core/shaderLibrary/terrain/TileBackground.glsl.js";import{createEmptyTexture as M}from"../webgl-engine/lib/glUtil3D.js";import{TextureSamplingMode as R,TextureWrapMode as D,PixelFormat as L}from"../../webgl/enums.js";import{Texture as O}from"../../webgl/Texture.js";import{TextureDescriptor as j}from"../../webgl/TextureDescriptor.js";class N{constructor(e,t,r,s){this.start=e,this.end=t,this.blendMode=r,this.opacity=s}}class C{constructor(e,t,r,s){this._rctx=e,this.tileSize=t,this._techniques=r,this._cache=s,this._passParameters=new c,this._backgroundTexture=null,this._backgroundColor=null,this._backgroundDirty=!1,this._maxAnisotropy=this._rctx.parameters.maxMaxAnisotropy,this._composition=new b(this._rctx,this._techniques),this._ensureBackgroundTexture(this.tileSize)}dispose(){this._composition=e(this._composition),this._backgroundTexture=t(this._backgroundTexture)}get backgroundIsGrid(){return null==this._backgroundColor}get backgroundColor(){return this._backgroundColor}updateTileTexture(e,t){if(!e.renderData)return;const r=e.surface,s=r.baseOpacity;let o=0,n=0,c=this.tileSize,u=!1;const l=r.view.state.contentPixelRatio;let m=!1;z.clear(),H.length=0;const _=e.layerInfo[p.MAP];let f=_.length,T=0,y=null;for(;T<_.length;T++){const t=r.layerViewByIndex(T,p.MAP),g=t.layer.opacity;F[T]=g;const x=t.fullOpacity;if(q[T]=x,a(t.layer)&&f>=_.length&&(f=T),h(t)){v[T]=t.layer.blendMode;let e="normal"!==t.layer.blendMode;if(i(t.layer.parent)){const r=B(t.layer.parent);null!=r&&""!==r&&(e=U(t.layer.parent)||e)}e&&(m=e,u=!1)}if(0===g&&!m){_[T].pendingUpdates&=~(k.TEXTURE_NOFADING&k.TEXTURE_FADING);continue}++n;const b=d(t),w=S(e,T,b);if(w){if(_[T].pendingUpdates&=~(k.TEXTURE_NOFADING&k.TEXTURE_FADING),i(t.layer.parent)){const e=B(t.layer.parent);null!=e&&""!==e&&G(t.layer.parent,T)}b?c=Math.max(c,this.tileSize*l):1===s&&1===x&&(t.isOpaque||this._dataToTexture(w)&&w.sourceLayerInfo.data.descriptor.isOpaque)&&(u=!0),++o,null===y&&(y=T)}}const g=c/this.tileSize;0!==o&&null!==y?1===o&&!m&&this._useLayerTexture(e,y,f,q[y])||this._composeMapLayers(e,t,T-1,f,F,v,c,g,!u||m,z,m):this._useBackgroundTexture(e,n)}_ensureBackgroundTexture(e){return null==this._backgroundTexture&&(this._backgroundTexture=this._buildTexture(e,!1),this._backgroundDirty=!0),this._backgroundDirty&&(this._composition.bind(e),this._passParameters.offset=o,this._passParameters.scale=1,this._passParameters.opacity=1,this.backgroundColor&&(this._passParameters.backgroundColor=this.backgroundColor),this._composition.drawBackground(this._passParameters,null!=this.backgroundColor),this._composition.copyFBOToTexture(this._backgroundTexture),this._composition.unbind(),this._backgroundDirty=!1),this._backgroundTexture}_useBackgroundTexture(e,t){const r=this._ensureBackgroundTexture(this.tileSize);let s=g.Immediate;(e.surface.view.layerViewManager.updating||t>0)&&(s=g.Delayed);const o=e.renderData;null==o.textureReference&&(s=g.Immediate),o.setTextureReference(new x(r,u.FADING,V,e.surface.baseOpacity,0,1),s)}_useLayerTexture(e,t,r,s){const o=t<r,a=o?1:e.surface.baseOpacity,i=o?e.surface.baseOpacity:1,n=S(e,t,!1);return!!this._dataToTexture(n)&&(e.renderData.setTextureReference(new x(n.sourceLayerInfo.data,u.FADING,n,a,i,s)),!0)}_composeMapLayers(e,t,r,s,a,i,n,c,u,l,h){this._composition.ensureBuffer(n);const f=e.surface.baseOpacity;let T=!1,y=R.LINEAR_MIPMAP_LINEAR,g=!1,b=0;for(let x=r;x>=0;x--){const t=e.surface.layerViewByIndex(x,p.MAP),r=d(t),w=S(e,x,r);if(!w||0===a[x]&&!h)continue;const I=x<s&&f<1&&!T;I&&(T=!0),this._passParameters.baseOpacity=I?f:1;const k=this._passParameters.baseOpacity<1?P.Required:P.NotRequired;let M=!1;l.forEach((e=>{e.start===x&&(H.push(e),this._composition.openGroup(n),M=!0)}));const D=0===b,L=M?E.GroupBackgroundComposite:u&&D?this.backgroundIsGrid?E.GridComposite:E.ColorComposite:E.Composite,O=A[i[x]];for(m(w)?(this._passParameters.opacity=a[x],g=this._composition.drawVectorData(this._passParameters,L,n,O,k,w,c,this.tileSize,g)):_(w)?(this._passParameters.opacity=a[x],this._composition.drawImageryTileData(this._passParameters,L,n,O,k,w),this._hasNearestInterpolation(w)&&(y=R.NEAREST)):this._dataToTexture(w)&&(this._passParameters.texture=w.sourceLayerInfo.data.texture,this._passParameters.offset=w.offset,this._passParameters.scale=w.scale,this._passParameters.opacity=a[x],this._composition.drawRasterData(this._passParameters,L,n,O,k));H.length>0&&H[H.length-1].end===x;){const e=H.pop();this._passParameters.opacity=e.opacity,this._passParameters.offset=o,this._passParameters.scale=1;const t=u&&D?this.backgroundIsGrid?E.GridComposite:E.ColorComposite:E.Composite;this._composition.drawGroup(this._passParameters,t,n,A[e.blendMode],k)}b++}const w=e.renderData,I=h||T&&f<1,k=w.ensureTexture(n,I,(()=>this._buildTexture(n,I,y)));this._composition.copyFBOToTexture(k),this._composition.unbind(),w.setTextureReference(new x(k,t,V,T?1:f,0,1))}_hasNearestInterpolation(e){const t=e.sourceLayerInfo.data;return!!t.source&&"nearest"===t.interpolation}_dataToTexture(e){if(f(e)){const t=e.sourceLayerInfo;t.data=this._buildTexture(t.data,!0),e.tile.setMemoryDirty()}return T(e)}setBackground(e){this._backgroundColor!==e&&(this._backgroundColor=e,this._backgroundDirty=!0)}_buildTexture(e,t,r=R.LINEAR_MIPMAP_LINEAR){if(null==e)return null;const s=new j;s.wrapMode=D.CLAMP_TO_EDGE,s.samplingMode=r,s.maxAnisotropy=this._maxAnisotropy,s.preMultiplyAlpha=!0,s.flipped=!0,s.hasMipmap=!0,t||(s.pixelFormat=L.RGB);const o=this._rctx;let a;if("number"==typeof e){s.width=s.height=e;const t=`${e} ${s.pixelFormat}`;a=this._cache.pop(t),a?a.retain():a=new I(new O(o,s),this._cache)}else if(n(e)){s.isOpaque=e.isOpaque,s.isOpaque&&(s.pixelFormat=L.RGB);const t=`${e} ${s.pixelFormat}`;a=this._cache.pop(t),a?(a.retain(),a.texture.setData(e.image)):a=new I(new O(o,s,e.image),this._cache),e.release()}else try{s.width=e.width,s.height=e.height,a=new I(new O(o,s,e))}catch(c){a=new I(M(o)),console.warn("TileRenderer: failed to execute 'texImage2D', cross-origin image may not be loaded.")}const i=o.bindTexture(a.texture,O.TEXTURE_UNIT_FOR_UPDATES);return a.generateMipmap(),o.bindTexture(i,O.TEXTURE_UNIT_FOR_UPDATES),a}get test(){return{backgroundTexture:this._backgroundTexture}}}function S(e,t,o){X.layerIndex=t,X.vtlNeighborInfos.clear();const a=e.layerInfo[p.MAP][t];if(r(X.offset,0,0),X.tile=e,X.scale=1,X.sourceLod=e.lij,X.sourceLayerInfo=a,X.isVTLBackground=o,a.data)return o&&e.forEachLoadedNeighbor(((r,s)=>{if(r.level!==e.level)return;const o=r.layerInfo[p.MAP][t];if(!y(o)||a.data===o.data)return;const i=X.vtlNeighborInfos.pushNew();i.offset=$[s],i.sourceLod=r.lij,i.sourceLayerInfo=o})),X;const i=a.upsampleInfo;if(i){const e=i.tile.layerInfo[p.MAP][t];return X.tile=i.tile,s(X.offset,i.offset),X.scale=i.scale,X.sourceLod=i.tile.lij,X.sourceLayerInfo=e,X}return o?X:null}function B(e){return e.uid}function U(e){let t="normal"!==e.blendMode;return i(e.parent)&&(t=U(e.parent)||t),t}function G(e,t){i(e.parent)&&G(e.parent,t);const r=B(e);if(null!=r&&""!==r){const s=z.get(r);s?s.start=t:z.set(r,new N(t,t,e.blendMode,e.opacity))}}const F=new Array,q=new Array,v=new Array,z=new Map,H=new Array,X=new w,V={offset:[0,0],scale:1},$=new Array;$[l.NORTH]=[0,-1],$[l.NORTH_EAST]=[-1,-1],$[l.EAST]=[-1,0],$[l.SOUTH_EAST]=[-1,1],$[l.SOUTH]=[0,1],$[l.SOUTH_WEST]=[1,1],$[l.WEST]=[1,0],$[l.NORTH_WEST]=[1,-1];export{N as GroupInfo,C as TileRenderer};
5
+ import{disposeMaybe as e,releaseMaybe as t}from"../../../core/maybe.js";import{s as r,j as s}from"../../../chunks/vec2.js";import{Z as o}from"../../../chunks/vec2f64.js";import{isBaseLayer as a,isGroupLayer as i}from"../../../layers/support/layerUtils.js";import{isImageWithType as n}from"../support/StreamDataLoader.js";import{BlendLayersPassParameters as u}from"./BlendLayersTechnique.js";import{TextureUpdate as c}from"./interfaces.js";import{NeighborIndex as l}from"./ITile.js";import{LayerClass as p}from"./LayerClass.js";import{isBlendableLayerView as h,isVectorTileLayerView as d,isVectorTileRenderInfo as m,isImageryTileRenderInfo as _,isRasterTileRenderInfo as f,isTextureTileRenderInfo as y,isVectorTilePerLayerInfo as T}from"./terrainUtils.js";import{ActivationTime as g}from"./TextureFader.js";import{TextureReference as b}from"./TextureReference.js";import{TileCompositor as x}from"./TileCompositor.js";import{TileRenderInfo as I}from"./TileRenderInfo.js";import w from"./TileTexture.js";import{TileUpdate as k}from"./TileUpdate.js";import{blendModeFromString as P}from"../webgl-engine/core/shaderLibrary/output/BlendOptions.js";import{BlendLayersOutput as A,BaseOpacityMode as O}from"../webgl-engine/core/shaderLibrary/terrain/TileBackground.glsl.js";import{createEmptyTexture as R}from"../webgl-engine/lib/glUtil3D.js";import{TextureSamplingMode as E,TextureWrapMode as M,PixelFormat as D}from"../../webgl/enums.js";import{Texture as L}from"../../webgl/Texture.js";import{TextureDescriptor as j}from"../../webgl/TextureDescriptor.js";class N{constructor(e,t,r,s,o,a){this.start=e,this.end=t,this.blendMode=r,this.opacity=s,this.output=o,this.baseOpacity=a}}class C{constructor(e,t,r,s){this._rctx=e,this.tileSize=t,this._techniques=r,this._cache=s,this._passParameters=new u,this._backgroundTexture=null,this._backgroundColor=null,this._backgroundDirty=!1,this._maxAnisotropy=this._rctx.parameters.maxMaxAnisotropy,this._composition=new x(this._rctx,this._techniques),this._ensureBackgroundTexture(this.tileSize)}dispose(){this._composition=e(this._composition),this._backgroundTexture=t(this._backgroundTexture)}get backgroundIsGrid(){return null==this._backgroundColor}get backgroundColor(){return this._backgroundColor}updateTileTexture(e,t){if(!e.renderData)return;const r=e.surface,s=r.baseOpacity;let o=0,n=0,u=this.tileSize,c=!1,l=!1;const m=r.view.state.contentPixelRatio;let _=!1;F.clear(),q.length=0;const f=e.layerInfo[p.MAP];let y=0,T=null;for(;y<f.length;y++){const t=r.layerViewByIndex(y,p.MAP),g=t.layer.opacity,b=t.fullOpacity;if(l=l||a(t.layer),h(t)){let e="normal"!==t.layer.blendMode;if(i(t.layer.parent)){const r=S(t.layer.parent);null!=r&&""!==r&&(e=U(t.layer.parent)||e)}e&&(_=e,c=!1)}if(0===g&&!_){f[y].pendingUpdates&=~(k.TEXTURE_NOFADING&k.TEXTURE_FADING);continue}++n;const x=d(t),I=B(e,y,x);if(I){if(f[y].pendingUpdates&=~(k.TEXTURE_NOFADING&k.TEXTURE_FADING),i(t.layer.parent)){const e=S(t.layer.parent);null!=e&&""!==e&&G(t.layer.parent,y)}x?u=Math.max(u,this.tileSize*m):1===s&&1===b&&(t.isOpaque||this._dataToTexture(I)&&I.sourceLayerInfo.data.descriptor.isOpaque)&&(c=!0),++o,null===T&&(T=y)}}const g=u/this.tileSize;0!==o&&null!==T?1===o&&!_&&this._useLayerTexture(e,T)||this._composeMapLayers(e,t,y-1,l,u,g,!c||_,F,_):this._useBackgroundTexture(e,n)}_ensureBackgroundTexture(e){return null==this._backgroundTexture&&(this._backgroundTexture=this._buildTexture(e,!1),this._backgroundDirty=!0),this._backgroundDirty&&(this._composition.bind(e),this._passParameters.offset=o,this._passParameters.scale=1,this._passParameters.opacity=1,this.backgroundColor&&(this._passParameters.backgroundColor=this.backgroundColor),this._composition.drawBackground(this._passParameters,null!=this.backgroundColor),this._composition.copyFBOToTexture(this._backgroundTexture),this._composition.unbind(),this._backgroundDirty=!1),this._backgroundTexture}_useBackgroundTexture(e,t){const r=this._ensureBackgroundTexture(this.tileSize);let s=g.Immediate;(e.surface.view.layerViewManager.updating||t>0)&&(s=g.Delayed);const o=e.renderData;null==o.textureReference&&(s=g.Immediate),o.setTextureReference(new b(r,c.FADING,z,e.surface.baseOpacity,0,1),s)}_useLayerTexture(e,t){const r=e.surface.layerViewByIndex(t,p.MAP),s=a(r.layer),o=s?e.surface.baseOpacity:1,i=s?1:e.surface.baseOpacity,n=r.fullOpacity,u=B(e,t,!1);return!!this._dataToTexture(u)&&(e.renderData.setTextureReference(new b(u.sourceLayerInfo.data,c.FADING,u,o,i,n)),!0)}_composeMapLayers(e,t,r,s,i,n,u,c,l){this._composition.ensureBuffer(i);const f=e.surface.baseOpacity;let y=!1,T=E.LINEAR_MIPMAP_LINEAR,g=!1,x=0;for(let b=r;b>=0;b--){const t=e.surface.layerViewByIndex(b,p.MAP),r=d(t),I=B(e,b,r),w=t.layer.opacity;if(!I||0===w&&!l)continue;const k=!a(t.layer)&&!y;k&&(y=!0);let R=!1;c.forEach((e=>{e.start===b&&(e.output=s?A.Composite:u&&k?this.backgroundIsGrid?A.GridComposite:A.ColorComposite:A.Composite,e.baseOpacity=k?f:1,q.push(e),this._composition.openGroup(i),R=!0)})),this._passParameters.baseOpacity=k&&!R&&f<1?f:1;const M=this._passParameters.baseOpacity<1?O.Required:O.NotRequired,D=0===x,L=R?A.GroupBackgroundComposite:u&&D?this.backgroundIsGrid?A.GridComposite:A.ColorComposite:A.Composite,j=P[h(t)?t.layer.blendMode:"normal"];for(this._passParameters.opacity=w,m(I)?g=this._composition.drawVectorData(this._passParameters,L,i,j,M,I,n,this.tileSize,g):_(I)?(this._composition.drawImageryTileData(this._passParameters,L,i,j,M,I),this._hasNearestInterpolation(I)&&(T=E.NEAREST)):this._dataToTexture(I)&&(this._passParameters.texture=I.sourceLayerInfo.data.texture,this._passParameters.offset=I.offset,this._passParameters.scale=I.scale,this._composition.drawRasterData(this._passParameters,L,i,j,M));q.length>0&&q[q.length-1].end===b;){const e=q.pop();this._passParameters.baseOpacity=e.baseOpacity;const t=this._passParameters.baseOpacity<1?O.Required:O.NotRequired;this._passParameters.opacity=e.opacity,this._passParameters.offset=o,this._passParameters.scale=1,this._composition.drawGroup(this._passParameters,e.output,i,P[e.blendMode],t)}x++}const I=e.renderData,w=l||y&&f<1,k=I.ensureTexture(i,w,(()=>this._buildTexture(i,w,T)));this._composition.copyFBOToTexture(k),this._composition.unbind(),I.setTextureReference(new b(k,t,z,y?1:f,0,1))}_hasNearestInterpolation(e){const t=e.sourceLayerInfo.data;return!!t.source&&"nearest"===t.interpolation}_dataToTexture(e){if(f(e)){const t=e.sourceLayerInfo;t.data=this._buildTexture(t.data,!0),e.tile.setMemoryDirty()}return y(e)}setBackground(e){this._backgroundColor!==e&&(this._backgroundColor=e,this._backgroundDirty=!0)}_buildTexture(e,t,r=E.LINEAR_MIPMAP_LINEAR){if(null==e)return null;const s=new j;s.wrapMode=M.CLAMP_TO_EDGE,s.samplingMode=r,s.maxAnisotropy=this._maxAnisotropy,s.preMultiplyAlpha=!0,s.flipped=!0,s.hasMipmap=!0,t||(s.pixelFormat=D.RGB);const o=this._rctx;let a;if("number"==typeof e){s.width=s.height=e;const t=`${e} ${s.pixelFormat}`;a=this._cache.pop(t),a?a.retain():a=new w(new L(o,s),this._cache)}else if(n(e)){s.isOpaque=e.isOpaque,s.isOpaque&&(s.pixelFormat=D.RGB);const t=`${e} ${s.pixelFormat}`;a=this._cache.pop(t),a?(a.retain(),a.texture.setData(e.image)):a=new w(new L(o,s,e.image),this._cache),e.release()}else try{s.width=e.width,s.height=e.height,a=new w(new L(o,s,e))}catch(u){a=new w(R(o)),console.warn("TileRenderer: failed to execute 'texImage2D', cross-origin image may not be loaded.")}const i=o.bindTexture(a.texture,L.TEXTURE_UNIT_FOR_UPDATES);return a.generateMipmap(),o.bindTexture(i,L.TEXTURE_UNIT_FOR_UPDATES),a}get test(){return{backgroundTexture:this._backgroundTexture}}}function B(e,t,o){v.layerIndex=t,v.vtlNeighborInfos.clear();const a=e.layerInfo[p.MAP][t];if(r(v.offset,0,0),v.tile=e,v.scale=1,v.sourceLod=e.lij,v.sourceLayerInfo=a,v.isVTLBackground=o,a.data)return o&&e.forEachLoadedNeighbor(((r,s)=>{if(r.level!==e.level)return;const o=r.layerInfo[p.MAP][t];if(!T(o)||a.data===o.data)return;const i=v.vtlNeighborInfos.pushNew();i.offset=H[s],i.sourceLod=r.lij,i.sourceLayerInfo=o})),v;const i=a.upsampleInfo;if(i){const e=i.tile.layerInfo[p.MAP][t];return v.tile=i.tile,s(v.offset,i.offset),v.scale=i.scale,v.sourceLod=i.tile.lij,v.sourceLayerInfo=e,v}return o?v:null}function S(e){return e.uid}function U(e){let t="normal"!==e.blendMode;return i(e.parent)&&(t=U(e.parent)||t),t}function G(e,t){i(e.parent)&&G(e.parent,t);const r=S(e);if(null!=r&&""!==r){const s=F.get(r);s?s.start=t:F.set(r,new N(t,t,e.blendMode,e.opacity,A.Composite,1))}}const F=new Map,q=new Array,v=new I,z={offset:[0,0],scale:1},H=new Array;H[l.NORTH]=[0,-1],H[l.NORTH_EAST]=[-1,-1],H[l.EAST]=[-1,0],H[l.SOUTH_EAST]=[-1,1],H[l.SOUTH]=[0,1],H[l.SOUTH_WEST]=[1,1],H[l.WEST]=[1,0],H[l.NORTH_WEST]=[1,-1];export{N as GroupInfo,C as TileRenderer};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- class t{constructor(t,e){this._texture=t,this._cache=e,this.type="tile-texture",this._refCount=1}retain(){++this._refCount}release(){if(--this._refCount,0===this._refCount)if(this._cache){const t=`${this._texture.descriptor.width} ${this._texture.descriptor.pixelFormat}`;this._cache.put(t,this)}else this.dispose()}dispose(){this._texture.dispose()}get texture(){return this._texture}generateMipmap(){this._texture.generateMipmap()}get descriptor(){return this._texture.descriptor}get memoryUsage(){return this._texture.gpuMemoryUsage}}export{t as default};
5
+ class t{constructor(t,e){this._texture=t,this._cache=e,this.type="tile-texture",this._refCount=1}retain(){++this._refCount}release(){if(--this._refCount,0===this._refCount)if(this._cache){const t=`${this._texture.descriptor.width} ${this._texture.descriptor.pixelFormat}`;this._cache.put(t,this)}else this.dispose()}dispose(){this._texture.dispose()}get texture(){return this._texture}generateMipmap(){this._texture.generateMipmap()}get descriptor(){return this._texture.descriptor}get usedMemory(){return this._texture.gpuMemoryUsage}}export{t 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.28/esri/copyright.txt for details.
4
4
  */
5
- import{releaseMaybe as e}from"../../../../core/maybe.js";import{MemCachePool as t}from"../../../../core/MemCachePool.js";import{PixelFormat as r,SizedPixelFormat as o,TextureWrapMode as a,PixelType as s,TextureSamplingMode as h,RenderbufferFormat as c,ColorAttachment as i}from"../../../webgl/enums.js";import{FramebufferObject as n}from"../../../webgl/FramebufferObject.js";import{Renderbuffer as l}from"../../../webgl/Renderbuffer.js";import{RenderbufferDescriptor as _}from"../../../webgl/RenderbufferDescriptor.js";import{Texture as p}from"../../../webgl/Texture.js";import{TextureDescriptor as m}from"../../../webgl/TextureDescriptor.js";class E{constructor(e){this.rctx=e,this._peakMemoryUsage=0,this._allocatedMemory=new Set,this._cache=new t(e.newCache,"FBOCache"),this._depthCache=new t(e.newCache,"DepthAttachmentCache"),this._colorCache=new t(e.newCache,"ColorAttachmentCache")}destroy(){this._cache.destroy(),this._depthCache.destroy(),this._colorCache.destroy()}resetPeakMemoryUsage(){this._peakMemoryUsage=this._accumulateMemory()}get peakMemoryUsage(){return this._peakMemoryUsage}acquire(e,t,r){const o=M(e,t,r),a=this._cache.pop(o)||new d(new n(this.rctx,{...y[e],width:t,height:r}),(e=>(a.releaseDepth(),a.depth=this._acquireDepth(e,a.fbo.width,a.fbo.height),a.fbo.attachDepthStencil(a.depth.attachment),a)),((e,o)=>{const s=this._acquireColor(e,t,r);return a.colors??=new Map,a.colors.set(o,s),a.fbo.attachColorTexture(s.attachment,o),a}));return a.release=()=>{this._allocatedMemory.delete(a),a.releaseDepth(),this._cache.put(o,a),a.release=()=>console.log(`Double FBO release in ${(new Error).stack}`)},this.rctx.unbindTexture(a.fbo.colorTexture),this._trackHandle(a)}acquireDepth(e,t,r){return this._acquireDepth(e,t,r)}_acquireDepth(e,t,r){const o=M(e,t,r),a=this._depthCache.pop(o);if(a)return this._trackHandle(a);const s=e===x.DEPTH_STENCIL_TEXTURE?new T(new p(this.rctx,{...U[e],width:t,height:r}),(()=>{this._allocatedMemory.delete(s),this._depthCache.put(o,s)})):new T(new l(this.rctx,{...U[e],width:t,height:r}),(()=>{this._allocatedMemory.delete(s),this._depthCache.put(o,s)}));return this._trackHandle(s)}_acquireColor(e,t,r){const o=M(e,t,r),a=this._colorCache.pop(o);if(a)return this._trackHandle(a);const s=new D(new p(this.rctx,{...y[e],width:t,height:r}),(()=>{this._allocatedMemory.delete(s),this._colorCache.put(o,s)}));return this._trackHandle(s)}_trackHandle(e){return this._allocatedMemory.add(e),this._peakMemoryUsage=Math.max(this._peakMemoryUsage,this._accumulateMemory()),e}_accumulateMemory(){return Array.from(this._allocatedMemory.values()).reduce(((e,t)=>e+("colorTexture"in t?t.colorTexture?.gpuMemoryUsage??0:t.memoryUsage)),0)}}class d{constructor(e,t,r){this.fbo=e,this.acquireDepth=t,this.acquireColor=r,this.release=()=>{}}dispose(){this.fbo.dispose()}releaseDepth(){this.fbo.detachDepthStencilTexture(),this.fbo.detachDepthStencilBuffer(),this.depth=e(this.depth)}detachDepth(){const e=this.depth;return this.depth=void 0,this.fbo.detachDepthStencilTexture(),this.fbo.detachDepthStencilBuffer(),e}attachDepth(e){return this.releaseDepth(),e&&(this.fbo.attachDepthStencil(e.attachment),this.depth=e),this}releaseColor(t){this.fbo.detachColorTexture(t);const r=this.colors?.get(t);this.colors?.delete(t),e(r)}get colorTexture(){return this.fbo?.colorTexture}getColorTexture(e=i.COLOR_ATTACHMENT0){return this.fbo?.getColorTexture(e)}get memoryUsage(){return this.fbo.gpuMemoryUsage}}class u{constructor(e,t){this.attachment=e,this.release=t}dispose(){this.attachment.dispose()}get memoryUsage(){return this.attachment.gpuMemoryUsage}}class T extends u{}class D extends u{constructor(e,t){super(e,t),this.attachment=e,this.release=t}}function M(e,t,r){return`${e}x${t}x${r}`}var R;!function(e){e[e.RED=0]="RED",e[e.RG=1]="RG",e[e.RGBA4=2]="RGBA4",e[e.RGBA=3]="RGBA",e[e.RGBA_MIPMAP=4]="RGBA_MIPMAP",e[e.R16F=5]="R16F",e[e.RGBA16F=6]="RGBA16F"}(R||(R={}));const w=new m;w.pixelFormat=r.RED,w.internalFormat=o.R8,w.wrapMode=a.CLAMP_TO_EDGE;const C=new m;C.pixelFormat=r.RG,C.internalFormat=o.RG8,C.wrapMode=a.CLAMP_TO_EDGE;const F=new m;F.internalFormat=o.RGBA4,F.dataType=s.UNSIGNED_SHORT_4_4_4_4,F.wrapMode=a.CLAMP_TO_EDGE;const f=new m;f.wrapMode=a.CLAMP_TO_EDGE;const g=new m;g.wrapMode=a.CLAMP_TO_EDGE,g.samplingMode=h.LINEAR_MIPMAP_LINEAR,g.hasMipmap=!0,g.maxAnisotropy=8;const A=new m;A.pixelFormat=r.RED,A.dataType=s.HALF_FLOAT,A.internalFormat=o.R16F,A.samplingMode=h.NEAREST;const P=new m;P.dataType=s.HALF_FLOAT,P.internalFormat=o.RGBA16F,P.samplingMode=h.NEAREST;const y={[R.RED]:w,[R.RG]:C,[R.RGBA4]:F,[R.RGBA]:f,[R.RGBA_MIPMAP]:g,[R.R16F]:A,[R.RGBA16F]:P};var x;!function(e){e[e.DEPTH_STENCIL_TEXTURE=0]="DEPTH_STENCIL_TEXTURE",e[e.DEPTH_STENCIL_BUFFER=1]="DEPTH_STENCIL_BUFFER",e[e.DEPTH24_BUFFER=2]="DEPTH24_BUFFER",e[e.DEPTH16_BUFFER=3]="DEPTH16_BUFFER"}(x||(x={}));const b=new m;b.pixelFormat=r.DEPTH_STENCIL,b.dataType=s.UNSIGNED_INT_24_8,b.samplingMode=h.NEAREST,b.wrapMode=a.CLAMP_TO_EDGE;const U={[x.DEPTH_STENCIL_TEXTURE]:b,[x.DEPTH_STENCIL_BUFFER]:new _(c.DEPTH24_STENCIL8,4),[x.DEPTH24_BUFFER]:new _(c.DEPTH_COMPONENT24,4),[x.DEPTH16_BUFFER]:new _(c.DEPTH_COMPONENT16,4)};export{R as ColorFormat,x as DepthFormat,E as FBOCache};
5
+ import{releaseMaybe as e}from"../../../../core/maybe.js";import{MemCachePool as t}from"../../../../core/MemCachePool.js";import{PixelFormat as r,SizedPixelFormat as o,TextureWrapMode as a,PixelType as s,TextureSamplingMode as h,RenderbufferFormat as c,ColorAttachment as i}from"../../../webgl/enums.js";import{FramebufferObject as n}from"../../../webgl/FramebufferObject.js";import{Renderbuffer as l}from"../../../webgl/Renderbuffer.js";import{RenderbufferDescriptor as _}from"../../../webgl/RenderbufferDescriptor.js";import{Texture as p}from"../../../webgl/Texture.js";import{TextureDescriptor as d}from"../../../webgl/TextureDescriptor.js";class u{constructor(e){this.rctx=e,this._peakMemoryUsage=0,this._allocatedMemory=new Set,this._cache=new t(e.newCache,"FBOCache"),this._depthCache=new t(e.newCache,"DepthAttachmentCache"),this._colorCache=new t(e.newCache,"ColorAttachmentCache")}destroy(){this._cache.destroy(),this._depthCache.destroy(),this._colorCache.destroy()}resetPeakMemoryUsage(){this._peakMemoryUsage=this._accumulateMemory()}get peakMemoryUsage(){return this._peakMemoryUsage}acquire(e,t,r){const o=D(e,t,r),a=this._cache.pop(o)||new E(new n(this.rctx,{...y[e],width:t,height:r}),(e=>(a.releaseDepth(),a.depth=this._acquireDepth(e,a.fbo.width,a.fbo.height),a.fbo.attachDepthStencil(a.depth.attachment),a)),((e,o)=>{const s=this._acquireColor(e,t,r);return a.colors??=new Map,a.colors.set(o,s),a.fbo.attachColorTexture(s.attachment,o),a}));return a.release=()=>{this._allocatedMemory.delete(a),a.releaseDepth(),this._cache.put(o,a),a.release=()=>console.log(`Double FBO release in ${(new Error).stack}`)},this.rctx.unbindTexture(a.fbo.colorTexture),this._trackHandle(a)}acquireDepth(e,t,r){return this._acquireDepth(e,t,r)}_acquireDepth(e,t,r){const o=D(e,t,r),a=this._depthCache.pop(o);if(a)return this._trackHandle(a);const s=e===x.DEPTH_STENCIL_TEXTURE?new T(new p(this.rctx,{...B[e],width:t,height:r}),(()=>{this._allocatedMemory.delete(s),this._depthCache.put(o,s)})):new T(new l(this.rctx,{...B[e],width:t,height:r}),(()=>{this._allocatedMemory.delete(s),this._depthCache.put(o,s)}));return this._trackHandle(s)}_acquireColor(e,t,r){const o=D(e,t,r),a=this._colorCache.pop(o);if(a)return this._trackHandle(a);const s=new M(new p(this.rctx,{...y[e],width:t,height:r}),(()=>{this._allocatedMemory.delete(s),this._colorCache.put(o,s)}));return this._trackHandle(s)}_trackHandle(e){return this._allocatedMemory.add(e),this._peakMemoryUsage=Math.max(this._peakMemoryUsage,this._accumulateMemory()),e}_accumulateMemory(){return Array.from(this._allocatedMemory.values()).reduce(((e,t)=>e+("colorTexture"in t?t.colorTexture?.gpuMemoryUsage??0:t.usedMemory)),0)}}class E{constructor(e,t,r){this.fbo=e,this.acquireDepth=t,this.acquireColor=r,this.release=()=>{}}dispose(){this.fbo.dispose()}releaseDepth(){this.fbo.detachDepthStencilTexture(),this.fbo.detachDepthStencilBuffer(),this.depth=e(this.depth)}detachDepth(){const e=this.depth;return this.depth=void 0,this.fbo.detachDepthStencilTexture(),this.fbo.detachDepthStencilBuffer(),e}attachDepth(e){return this.releaseDepth(),e&&(this.fbo.attachDepthStencil(e.attachment),this.depth=e),this}releaseColor(t){this.fbo.detachColorTexture(t);const r=this.colors?.get(t);this.colors?.delete(t),e(r)}get colorTexture(){return this.fbo?.colorTexture}getColorTexture(e=i.COLOR_ATTACHMENT0){return this.fbo?.getColorTexture(e)}get usedMemory(){return this.fbo.gpuMemoryUsage}}class m{constructor(e,t){this.attachment=e,this.release=t}dispose(){this.attachment.dispose()}get usedMemory(){return this.attachment.gpuMemoryUsage}}class T extends m{}class M extends m{constructor(e,t){super(e,t),this.attachment=e,this.release=t}}function D(e,t,r){return`${e}x${t}x${r}`}var R;!function(e){e[e.RED=0]="RED",e[e.RG=1]="RG",e[e.RGBA4=2]="RGBA4",e[e.RGBA=3]="RGBA",e[e.RGBA_MIPMAP=4]="RGBA_MIPMAP",e[e.R16F=5]="R16F",e[e.RGBA16F=6]="RGBA16F"}(R||(R={}));const w=new d;w.pixelFormat=r.RED,w.internalFormat=o.R8,w.wrapMode=a.CLAMP_TO_EDGE;const C=new d;C.pixelFormat=r.RG,C.internalFormat=o.RG8,C.wrapMode=a.CLAMP_TO_EDGE;const F=new d;F.internalFormat=o.RGBA4,F.dataType=s.UNSIGNED_SHORT_4_4_4_4,F.wrapMode=a.CLAMP_TO_EDGE;const f=new d;f.wrapMode=a.CLAMP_TO_EDGE;const A=new d;A.wrapMode=a.CLAMP_TO_EDGE,A.samplingMode=h.LINEAR_MIPMAP_LINEAR,A.hasMipmap=!0,A.maxAnisotropy=8;const g=new d;g.pixelFormat=r.RED,g.dataType=s.HALF_FLOAT,g.internalFormat=o.R16F,g.samplingMode=h.NEAREST;const P=new d;P.dataType=s.HALF_FLOAT,P.internalFormat=o.RGBA16F,P.samplingMode=h.NEAREST;const y={[R.RED]:w,[R.RG]:C,[R.RGBA4]:F,[R.RGBA]:f,[R.RGBA_MIPMAP]:A,[R.R16F]:g,[R.RGBA16F]:P};var x;!function(e){e[e.DEPTH_STENCIL_TEXTURE=0]="DEPTH_STENCIL_TEXTURE",e[e.DEPTH_STENCIL_BUFFER=1]="DEPTH_STENCIL_BUFFER",e[e.DEPTH24_BUFFER=2]="DEPTH24_BUFFER",e[e.DEPTH16_BUFFER=3]="DEPTH16_BUFFER"}(x||(x={}));const b=new d;b.pixelFormat=r.DEPTH_STENCIL,b.dataType=s.UNSIGNED_INT_24_8,b.samplingMode=h.NEAREST,b.wrapMode=a.CLAMP_TO_EDGE;const B={[x.DEPTH_STENCIL_TEXTURE]:b,[x.DEPTH_STENCIL_BUFFER]:new _(c.DEPTH24_STENCIL8,4),[x.DEPTH24_BUFFER]:new _(c.DEPTH_COMPONENT24,4),[x.DEPTH16_BUFFER]:new _(c.DEPTH_COMPONENT16,4)};export{R as ColorFormat,x as DepthFormat,u as FBOCache};
@@ -102,7 +102,7 @@ import{ReadLinearDepth as e}from"../output/ReadLinearDepth.glsl.js";import{Float
102
102
  }
103
103
 
104
104
  // continue with ray marching
105
- P += dP;
105
+ P = clamp(P + dP, vec2(0.0), vec2(0.999));
106
106
  Q.z += dQ.z;
107
107
  k += dk;
108
108
  rayDiffZOld = rayDiffZ;
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../../../chunks/tslib.es6.js";import{unitRGBAFromColor as t}from"../../../../../core/colorUtils.js";import{releaseMaybe as r,disposeMaybe as i}from"../../../../../core/maybe.js";import{watch as s,syncAndInitial as o}from"../../../../../core/reactiveUtils.js";import{property as a}from"../../../../../core/accessorSupport/decorators/property.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import{subclass as h}from"../../../../../core/accessorSupport/decorators/subclass.js";import{s as l}from"../../../../../chunks/vec2.js";import{ColorFormat as c}from"../../core/FBOCache.js";import{SyncRenderPlugin as n,ConsumesHighlight as p}from"../RenderPlugin.js";import{HighlightApplyTechnique as u}from"./HighlightApplyTechnique.js";import{HighlightBlurTechnique as m}from"./HighlightBlurTechnique.js";import{defaultColor as _,defaultHaloOpacity as d,defaultFillOpacity as g}from"./HighlightDefaults.js";import{HighlightDownsampleTechnique as b}from"./HighlightDownsampleTechnique.js";import{HighlightPassParameters as f}from"./HighlightPassParameters.js";import{Default3D as w}from"../../lib/DefaultVertexAttributeLocations.js";import{Pos2Tex as T}from"../../lib/DefaultVertexBufferLayouts.js";import{RenderSlot as q}from"../../lib/RenderSlot.js";import{VertexArrayObject as v}from"../../lib/VertexArrayObject.js";import{H as x}from"../../../../../chunks/HighlightBlur.glsl.js";import{H as P,g as y}from"../../../../../chunks/HighlightDownsample.glsl.js";import{BufferObject as j}from"../../../../webgl/BufferObject.js";import{ClearBufferBit as C,Usage as O}from"../../../../webgl/enums.js";import{vertexCount as R}from"../../../../webgl/Util.js";let D=class extends n{constructor(e){super(e),this._context=null,this._passParameters=new f,this._downsampleDrawParameters=new P,this._blurDrawParameters=new x,this._grid={coverage:null,vao:null,verticalCellCount:0,horizontalCellCount:0,viewportWidth:0,viewportHeight:0},this.produces=new Map([[q.HIGHLIGHT,()=>!0]])}consumes(){return p}initializeRenderContext(e){this._context=e,null==this._blurTechnique&&(this._blurTechnique=this._context.techniqueRepository.acquire(m)),null==this._downsampleTechnique&&(this._downsampleTechnique=this._context.techniqueRepository.acquire(b)),null==this._applyTechnique&&(this._applyTechnique=this._context.techniqueRepository.acquire(u)),this.addHandles([s((()=>this.view.highlightOptions.color),(e=>{this._passParameters.color=t(e??_),this.view.highlightOptions.haloColor||(this._passParameters.haloColor=this._passParameters.color),this._context.requestRender()}),o),s((()=>this.view.highlightOptions.haloColor),(e=>{this._passParameters.haloColor=null!=e?t(e):this._passParameters.color,this._context.requestRender()}),o),s((()=>this.view.highlightOptions.haloOpacity),(e=>{this._passParameters.haloOpacity=e??d,this._passParameters.haloOpacityOccluded=.25*this._passParameters.haloOpacity,this._context.requestRender()}),o),s((()=>this.view.highlightOptions.fillOpacity),(e=>{this._passParameters.fillOpacity=e??g,this._passParameters.fillOpacityOccluded=.25*this._passParameters.fillOpacity,this._context.requestRender()}),o)])}uninitializeRenderContext(){this._context=null}dispose(){this._blurTechnique=r(this._blurTechnique),this._downsampleTechnique=r(this._downsampleTechnique),this._applyTechnique=r(this._applyTechnique),this._grid.coverage=r(this._grid.coverage),this._grid.vao=i(this._grid.vao)}renderNode(e,t,r,i){const s=r?.highlight?.colorTexture;if(!this._context||!s)return;if(!(this._blurTechnique.compiled&&this._downsampleTechnique.compiled&&this._applyTechnique.compiled))return void this._context.requestRender();const o=e.bindParameters.camera,a=o.fullWidth,h=o.fullHeight,n=o.pixelRatio,p=Math.ceil(a/n),u=Math.ceil(h/n),m=this._context.fbos.rctx,_=this._context.fbos;this._gridUpdateResources(s),this._gridComputeCoverage(s,e.bindParameters),this._passParameters.highlightTexture=s,this._passParameters.coverageTexture=this._grid.coverage?.colorTexture;const d=m.bindTechnique(this._blurTechnique,this._passParameters,e.bindParameters),g=this._grid.vao;m.bindVAO(g);const b=_.acquire(c.RGBA4,p,u);m.bindFramebuffer(b.fbo),m.setViewport(0,0,p,u),m.setClearColor(0,0,0,0),m.clear(C.COLOR_BUFFER_BIT),this._blurDrawParameters.blurInputTexture=s,l(this._blurDrawParameters.blurSize,1/p,0),d.bindDraw(this._blurDrawParameters,e.bindParameters,this._passParameters),m.drawArrays(this._blurTechnique.primitiveType,0,R(g,"geometry"));const f=_.acquire(c.RGBA4,p,u);m.bindFramebuffer(f.fbo),m.clear(C.COLOR_BUFFER_BIT),this._blurDrawParameters.blurInputTexture=b.colorTexture,l(this._blurDrawParameters.blurSize,0,1/u),d.bindDraw(this._blurDrawParameters,e.bindParameters,this._passParameters),m.drawArrays(this._blurTechnique.primitiveType,0,R(g,"geometry")),m.bindFramebuffer(i?.fbo),m.setViewport4fv(o.fullViewport),this._passParameters.blurTexture=f.colorTexture,m.bindTechnique(this._applyTechnique,this._passParameters,e.bindParameters),m.drawArrays(this._applyTechnique.primitiveType,0,R(g,"geometry")),f.release(),b.release()}_gridUpdateResources(e){if(!this._context)return;const t=this._context.fbos.rctx,r=this._grid,s=Math.ceil(e.descriptor.height/y),o=Math.ceil(e.descriptor.width/y);if(!r.vao||r.verticalCellCount!==s||r.horizontalCellCount!==o){r.verticalCellCount=s,r.horizontalCellCount=o;const e=s+1,a=o+1,h=1/s,l=1/o,c=6,n=4,p=new Float32Array(c*n*e*a);let u=0;for(let t=0;t<e;t++)for(let e=0;e<a;e++)p[u]=(e-.5)*l*2-1,p[u+1]=(t-.5)*h*2-1,p[u+2]=e*l,p[u+3]=t*h,p[u+4]=(e+.5)*l*2-1,p[u+5]=(t-.5)*h*2-1,p[u+6]=e*l,p[u+7]=t*h,p[u+8]=(e-.5)*l*2-1,p[u+9]=(t+.5)*h*2-1,p[u+10]=e*l,p[u+11]=t*h,p[u+12]=(e-.5)*l*2-1,p[u+13]=(t+.5)*h*2-1,p[u+14]=e*l,p[u+15]=t*h,p[u+16]=(e+.5)*l*2-1,p[u+17]=(t-.5)*h*2-1,p[u+18]=e*l,p[u+19]=t*h,p[u+20]=(e+.5)*l*2-1,p[u+21]=(t+.5)*h*2-1,p[u+22]=e*l,p[u+23]=t*h,u+=c*n;r.vao=i(r.vao),r.vao=new v(t,w,{geometry:T},{geometry:j.createVertex(t,O.STATIC_DRAW,p)})}}_gridComputeCoverage(e,t){if(!this._context)return;const r=this._context.fbos.rctx,i=this._grid,s=r.bindTechnique(this._downsampleTechnique,this._passParameters,t),o=e.descriptor;i.coverage?.release(),i.coverage=this._context.fbos.acquire(c.RG,Math.ceil(o.width/y),Math.ceil(o.height/y)),r.bindFramebuffer(i.coverage.fbo),this._downsampleDrawParameters.input=e,s.bindDraw(this._downsampleDrawParameters,t,this._passParameters);const{width:a,height:h}=o;r.setViewport(0,0,a,h),r.screen.draw()}get test(){return{coverage:this._grid.coverage}}};e([a()],D.prototype,"_context",void 0),e([a()],D.prototype,"view",void 0),D=e([h("esri.views.3d.webgl-engine.effects.highlight.Highlight")],D);export{D as Highlight};
5
+ import{_ as e}from"../../../../../chunks/tslib.es6.js";import{unitRGBAFromColor as t}from"../../../../../core/colorUtils.js";import{releaseMaybe as r,disposeMaybe as i}from"../../../../../core/maybe.js";import{watch as s,syncAndInitial as o}from"../../../../../core/reactiveUtils.js";import{property as a}from"../../../../../core/accessorSupport/decorators/property.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import{subclass as h}from"../../../../../core/accessorSupport/decorators/subclass.js";import{s as l}from"../../../../../chunks/vec2.js";import{ColorFormat as c}from"../../core/FBOCache.js";import{SyncRenderPlugin as n,ConsumesHighlight as p}from"../RenderPlugin.js";import{HighlightApplyTechnique as u}from"./HighlightApplyTechnique.js";import{HighlightBlurTechnique as m}from"./HighlightBlurTechnique.js";import{defaultColor as _,defaultHaloOpacity as d,defaultFillOpacity as g}from"./HighlightDefaults.js";import{HighlightDownsampleTechnique as b}from"./HighlightDownsampleTechnique.js";import{HighlightPassParameters as f}from"./HighlightPassParameters.js";import{Default3D as w}from"../../lib/DefaultVertexAttributeLocations.js";import{Pos2Tex as T}from"../../lib/DefaultVertexBufferLayouts.js";import{RenderSlot as q}from"../../lib/RenderSlot.js";import{VertexArrayObject as v}from"../../lib/VertexArrayObject.js";import{H as P}from"../../../../../chunks/HighlightBlur.glsl.js";import{H as x,g as y}from"../../../../../chunks/HighlightDownsample.glsl.js";import{BufferObject as j}from"../../../../webgl/BufferObject.js";import{ClearBufferBit as C,Usage as R}from"../../../../webgl/enums.js";import{vertexCount as O}from"../../../../webgl/Util.js";let D=class extends n{constructor(e){super(e),this._context=null,this._passParameters=new f,this._downsampleDrawParameters=new x,this._blurDrawParameters=new P,this._grid={coverage:null,vao:null,verticalCellCount:0,horizontalCellCount:0,viewportWidth:0,viewportHeight:0},this.produces=new Map([[q.HIGHLIGHT,()=>!0]])}consumes(){return p}initializeRenderContext(e){this._context=e,null==this._blurTechnique&&(this._blurTechnique=this._context.techniqueRepository.acquire(m)),null==this._downsampleTechnique&&(this._downsampleTechnique=this._context.techniqueRepository.acquire(b)),null==this._applyTechnique&&(this._applyTechnique=this._context.techniqueRepository.acquire(u)),this.addHandles([s((()=>this.view.highlightOptions.color),(e=>{this._passParameters.color=t(e??_),this.view.highlightOptions.haloColor||(this._passParameters.haloColor=this._passParameters.color),this._context.requestRender()}),o),s((()=>this.view.highlightOptions.haloColor),(e=>{this._passParameters.haloColor=null!=e?t(e):this._passParameters.color,this._context.requestRender()}),o),s((()=>this.view.highlightOptions.haloOpacity),(e=>{this._passParameters.haloOpacity=e??d,this._passParameters.haloOpacityOccluded=.25*this._passParameters.haloOpacity,this._context.requestRender()}),o),s((()=>this.view.highlightOptions.fillOpacity),(e=>{this._passParameters.fillOpacity=e??g,this._passParameters.fillOpacityOccluded=.25*this._passParameters.fillOpacity,this._context.requestRender()}),o)])}uninitializeRenderContext(){this._context=null}dispose(){this._blurTechnique=r(this._blurTechnique),this._downsampleTechnique=r(this._downsampleTechnique),this._applyTechnique=r(this._applyTechnique),this._grid.coverage=r(this._grid.coverage),this._grid.vao=i(this._grid.vao)}renderNode(e,t,r,i){const s=r?.highlight?.colorTexture;if(!this._context||!s)return;if(!(this._blurTechnique.compiled&&this._downsampleTechnique.compiled&&this._applyTechnique.compiled))return void this._context.requestRender();const o=e.bindParameters.camera,a=o.fullWidth,h=o.fullHeight,n=o.pixelRatio,p=Math.ceil(a/n),u=Math.ceil(h/n),m=this._context.fbos,_=m.rctx;this._gridUpdateResources(s),this._gridComputeCoverage(s,e.bindParameters),this._passParameters.highlightTexture=s,this._passParameters.coverageTexture=this._grid.coverage?.colorTexture;const{width:d,height:g}=s.descriptor;l(this._passParameters.coverageRounding,d/(Math.ceil(d/y)*y),g/(Math.ceil(g/y)*y));const b=_.bindTechnique(this._blurTechnique,this._passParameters,e.bindParameters),f=this._grid.vao;_.bindVAO(f);const w=m.acquire(c.RGBA4,p,u);_.bindFramebuffer(w.fbo),_.setViewport(0,0,p,u),_.setClearColor(0,0,0,0),_.clear(C.COLOR_BUFFER_BIT),this._blurDrawParameters.blurInputTexture=s,l(this._blurDrawParameters.blurSize,1/p,0),b.bindDraw(this._blurDrawParameters,e.bindParameters,this._passParameters),_.drawArrays(this._blurTechnique.primitiveType,0,O(f,"geometry"));const T=m.acquire(c.RGBA4,p,u);_.bindFramebuffer(T.fbo),_.clear(C.COLOR_BUFFER_BIT),this._blurDrawParameters.blurInputTexture=w.colorTexture,l(this._blurDrawParameters.blurSize,0,1/u),b.bindDraw(this._blurDrawParameters,e.bindParameters,this._passParameters),_.drawArrays(this._blurTechnique.primitiveType,0,O(f,"geometry")),_.bindFramebuffer(i?.fbo),_.setViewport4fv(o.fullViewport),this._passParameters.blurTexture=T.colorTexture,_.bindTechnique(this._applyTechnique,this._passParameters,e.bindParameters),_.drawArrays(this._applyTechnique.primitiveType,0,O(f,"geometry")),T.release(),w.release()}_gridUpdateResources(e){if(!this._context)return;const t=this._context.fbos.rctx,r=this._grid,i=Math.ceil(e.descriptor.height/y),s=Math.ceil(e.descriptor.width/y);if(r.vao&&r.verticalCellCount===i&&r.horizontalCellCount===s)return;r.verticalCellCount=i,r.horizontalCellCount=s;const o=i+1,a=s+1,h=1/i,l=1/s,c=new Float32Array(6*4*o*a);let n=0;for(let p=0;p<o;p++)for(let e=0;e<a;e++)c[n++]=(e-.5)*l*2-1,c[n++]=(p-.5)*h*2-1,c[n++]=e*l,c[n++]=p*h,c[n++]=(e+.5)*l*2-1,c[n++]=(p-.5)*h*2-1,c[n++]=e*l,c[n++]=p*h,c[n++]=(e-.5)*l*2-1,c[n++]=(p+.5)*h*2-1,c[n++]=e*l,c[n++]=p*h,c[n++]=(e-.5)*l*2-1,c[n++]=(p+.5)*h*2-1,c[n++]=e*l,c[n++]=p*h,c[n++]=(e+.5)*l*2-1,c[n++]=(p-.5)*h*2-1,c[n++]=e*l,c[n++]=p*h,c[n++]=(e+.5)*l*2-1,c[n++]=(p+.5)*h*2-1,c[n++]=e*l,c[n++]=p*h;r.vao?.dispose(),r.vao=new v(t,w,{geometry:T},{geometry:j.createVertex(t,R.STATIC_DRAW,c)})}_gridComputeCoverage(e,t){if(!this._context)return;const r=this._context.fbos.rctx,i=this._grid,s=e.descriptor,o=Math.ceil(s.width/y),a=Math.ceil(s.height/y);i.coverage?.release(),i.coverage=this._context.fbos.acquire(c.RG,o,a),this._downsampleDrawParameters.input=e,r.bindFramebuffer(i.coverage.fbo),r.bindTechnique(this._downsampleTechnique,this._passParameters,t).bindDraw(this._downsampleDrawParameters,t,this._passParameters),r.setViewport(0,0,o,a),r.screen.draw()}get test(){return{coverage:this._grid.coverage}}};e([a()],D.prototype,"_context",void 0),e([a()],D.prototype,"view",void 0),D=e([h("esri.views.3d.webgl-engine.effects.highlight.Highlight")],D);export{D as Highlight};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{f as s}from"../../../../../chunks/vec4f64.js";import{NoParameters as t}from"../../core/shaderModules/interfaces.js";class c extends t{constructor(){super(...arguments),this.color=s(1,0,1,1),this.haloColor=s(1,0,1,1),this.haloOpacity=1,this.haloOpacityOccluded=.25,this.fillOpacity=.2,this.fillOpacityOccluded=.05}}export{c as HighlightPassParameters};
5
+ import{f as s}from"../../../../../chunks/vec2f64.js";import{f as o}from"../../../../../chunks/vec4f64.js";import{NoParameters as c}from"../../core/shaderModules/interfaces.js";class t extends c{constructor(){super(...arguments),this.color=o(1,0,1,1),this.haloColor=o(1,0,1,1),this.haloOpacity=1,this.haloOpacityOccluded=.25,this.fillOpacity=.2,this.fillOpacityOccluded=.05,this.coverageRounding=s(1,1)}}export{t as HighlightPassParameters};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{clamp as t}from"../../../../core/mathUtils.js";import{debugFlags as e}from"../../support/debugFlags.js";import{getFontMetrics as i}from"./FontMetrics.js";import{getTextHelperCanvas as n}from"./TextHelperCanvas.js";const s=1;class r{constructor(t,e,i,n){this.text=t,this._alignment=e,this._parameters=i,this._maxSize=n,this._textWidths=[],this._lineWidths=[],this._renderPixelRatio=null,this._metricsCached=null,this.key=`TextRenderer-${this._parameters.key}-${this._alignment}--${t}`,this._lines=t.split(/\r?\n/)}get displayWidth(){return Math.ceil(this._displayWidth+2*this._horizontalPadding)}get displayHeight(){let t=this._metrics.firstLineAscent;for(let e=0;e<this._lines.length-1;e++)t+=this._lineSpacing;return t+=this._metrics.lastLineDescent,Math.ceil(t+2*this._haloSize+2*this._verticalPadding)}get renderedWidth(){return this._toRoundedRenderUnit(this.displayWidth)}get renderedHeight(){return this._toRoundedRenderUnit(this.displayHeight)}get firstRenderedBaselinePosition(){return this._toRenderUnit(this._firstLineYOffset+this._metrics.firstLineAscent)}get _firstLineYOffset(){return this._verticalPadding+this._haloSize}get _metrics(){if(null==this._metricsCached){const t=n(a,l,l).getContext("2d");this._parameters.setFontProperties(t,this._fontSize);let e=2*this._haloSize;const s=this._parameters.definition.font;"italic"!==s.style&&"oblique"!==s.style&&"bold"!==s.weight&&"bolder"!==s.weight||(e+=.3*t.measureText("A").width),this._textWidths.length=0,this._lineWidths.length=0;let r,h,o=0,d=0,_=0;this._lines.forEach(((i,n)=>{const s=t.measureText(i),a=s.width,l=a+e;this._textWidths.push(a),this._lineWidths.push(l),o=Math.max(o,l),d=Math.max(d,s.actualBoundingBoxAscent),_=Math.max(_,s.actualBoundingBoxDescent),0===n&&(r=s),n===this._lines.length-1&&(h=s)}));const g=i(this._parameters);d=Math.max(d,g.maxAscent),_=Math.max(_,g.maxDescent);const m=r.actualBoundingBoxAscent,f="underline"===this._parameters.definition.font.decoration?_:h.actualBoundingBoxDescent;this._metricsCached=new c(m,f,d,_,o)}return this._metricsCached}get _lineSpacing(){return(this._midLineHeight+this._linePadding)*this._parameters.definition.lineSpacingFactor}get _midLineHeight(){return this._metrics.midLineHeight}get _linePadding(){return this._midLineHeight*d}get _midLineAscent(){return this._metrics.maxLineAscent}get _renderedFontSize(){return this._toRenderUnit(this._fontSize)}get _fontSize(){return this._parameters.definition.size}get _renderedHaloSize(){return this._toRenderUnit(this._haloSize)}get _haloSize(){return this._parameters.haloSize}get _horizontalPadding(){return this._hasBackground?this._parameters.definition.background.padding[0]:0}get _verticalPadding(){return Math.max(this._hasBackground?this._parameters.definition.background.padding[1]:0,s)}get _hasBackground(){return!!this._parameters.backgroundStyle}get renderPixelRatio(){if(null==this._renderPixelRatio){const t=this._parameters.definition.pixelRatio;this._renderPixelRatio=Math.min(t,Math.min(this._maxSize[0]/this.displayWidth,this._maxSize[1]/this.displayHeight))}return this._renderPixelRatio}_getLineXOffset(t){switch(this._alignment){case o.Left:return this._horizontalPadding;case o.Center:return(this.displayWidth-this._lineWidths[t])/2;case o.Right:return this.displayWidth-this._horizontalPadding-this._lineWidths[t]}}render(t,i,n){t.save();const s=i/=this.renderPixelRatio,r=n/=this.renderPixelRatio,h=this._haloSize,o=this._firstLineYOffset+this._metrics.firstLineAscent;i+=h,n+=o;const a=this._haloSize>0;a&&this._renderHalo(t,s,r,h,o),this._parameters.setFontProperties(t,this._renderedFontSize);for(let e=0;e<this._lines.length;++e){const s=this._lines[e],r=this._getLineXOffset(e);a&&(t.globalCompositeOperation="destination-out",t.fillStyle="rgb(0, 0, 0)",this._fillText(t,s,i+r,n),this._renderLineDecoration(t,i+r,n,this._textWidths[e])),t.globalCompositeOperation="source-over",t.fillStyle=this._parameters.textStyle,this._fillText(t,s,i+this._getLineXOffset(e),n),this._renderLineDecoration(t,i+r,n,this._textWidths[e]),n+=this._lineSpacing}if(e.TEXT_SHOW_BASELINE){t.strokeStyle=_,t.setLineDash([2,2]),t.lineWidth=1;let e=r+o;for(let i=0;i<this._lines.length;++i)this._drawLine(t,[s,e],[s+this.displayWidth,e]),e+=this._lineSpacing}if(e.TEXT_SHOW_BORDER&&(t.strokeStyle=_,t.setLineDash([]),t.lineWidth=1,this._drawBox(t,[s,r],[this.displayWidth,this.displayHeight])),this._hasBackground){const e=this._parameters.definition.background.borderRadius*this.renderPixelRatio;this._roundedRect(t,s,r,e),t.globalCompositeOperation="destination-over",t.fillStyle=this._parameters.backgroundStyle,t.fill()}t.restore()}_renderLineDecoration(t,e,i,n,s=!1){if("none"===this._parameters.definition.font.decoration||0===n)return;const r=1,h=Math.max(this._parameters.definition.size/16,r);switch(this._parameters.definition.font.decoration){case"underline":i+=2*h;break;case"line-through":i-=.33*this._midLineAscent}const o=s?this._haloSize:0;t.strokeStyle=s?this._parameters.haloStyle:this._parameters.textStyle,t.lineWidth=this._toRenderUnit(h+2*o),t.beginPath(),t.moveTo(this._toRenderUnit(e-o),this._toRenderUnit(i)),t.lineTo(this._toRenderUnit(e+n+o),this._toRenderUnit(i)),t.stroke()}_roundedRect(e,i,n,s){i=this._toRenderUnit(i),n=this._toRenderUnit(n);const r=this.renderedWidth,h=this.renderedHeight;0!==s?(s=t(s,0,Math.floor(h/2)),e.beginPath(),e.moveTo(i,n+s),e.arcTo(i,n,i+s,n,s),e.lineTo(i+r-s,n),e.arcTo(i+r,n,i+r,n+s,s),e.lineTo(i+r,n+h-s),e.arcTo(i+r,n+h,i+r-s,n+h,s),e.lineTo(i+s,n+h),e.arcTo(i,n+h,i,n+h-s,s),e.closePath()):e.rect(i,n,r,h)}_renderHalo(t,e,i,s,r){const h=this.renderedWidth,o=this.renderedHeight,d=n(a,Math.max(h,l),Math.max(o,l)),_=d.getContext("2d");_.clearRect(0,0,h,o),this._parameters.setFontProperties(_,this._renderedFontSize),_.fillStyle=this._parameters.haloStyle,_.strokeStyle=this._parameters.haloStyle;const c=this._renderedHaloSize<3;_.lineJoin=c?"miter":"round",c?this._renderHaloEmulated(_,s,r):this._renderHaloNative(_,s,r);let g=r;for(let n=0;n<this._lines.length;++n){const t=this._getLineXOffset(n);this._renderLineDecoration(_,s+t,g,this._textWidths[n],!0),g+=this._lineSpacing}t.globalAlpha=this._parameters.definition.halo.color[3],t.drawImage(d,0,0,h,o,this._toRenderUnit(e),this._toRenderUnit(i),h,o),t.globalAlpha=1}_renderHaloEmulated(t,e,i){for(let n=0;n<this._lines.length;++n){const s=this._lines[n],r=this._getLineXOffset(n);for(const[n,o]of h)this._fillText(t,s,e+r+this._haloSize*n,i+this._haloSize*o);i+=this._lineSpacing}}_renderHaloNative(t,e,i){const n=2*this._haloSize;for(let s=0;s<this._lines.length;++s){const r=this._lines[s],h=this._getLineXOffset(s),o=5,a=.1;for(let s=0;s<o;s++){const d=1-(o-1)*a+s*a;t.lineWidth=this._toRenderUnit(d*n),this._strokeText(t,r,e+h,i)}i+=this._lineSpacing}}get _displayWidth(){return this._metrics.displayWidth}_toRenderUnit(t){return t*this.renderPixelRatio}_toRoundedRenderUnit(t){return Math.round(t*this.renderPixelRatio)}_fillText(t,e,i,n){t.fillText(e,this._toRenderUnit(i),this._toRenderUnit(n))}_strokeText(t,e,i,n){t.strokeText(e,this._toRenderUnit(i),this._toRenderUnit(n))}_drawLine(t,e,i){t.beginPath(),t.moveTo(this._toRoundedRenderUnit(e[0])+.5,this._toRoundedRenderUnit(e[1])+.5),t.lineTo(this._toRoundedRenderUnit(i[0])+.5,this._toRoundedRenderUnit(i[1])+.5),t.stroke()}_drawBox(t,e,i){const n=this._toRenderUnit(e[0]),s=this._toRenderUnit(e[1]),r=this._toRenderUnit(i[0]),h=this._toRenderUnit(i[1]),o=Math.floor(n)+.5,a=Math.ceil(n+r)-.5,d=Math.floor(s)+.5,l=Math.ceil(s+h)-.5;t.beginPath(),t.moveTo(o,d),t.lineTo(a,d),t.lineTo(a,l),t.lineTo(o,l),t.lineTo(o,d),t.stroke()}}const h=[];{const t=16;for(let e=0;e<360;e+=360/t)h.push([Math.cos(Math.PI*e/180),Math.sin(Math.PI*e/180)])}var o;!function(t){t[t.Left=0]="Left",t[t.Center=1]="Center",t[t.Right=2]="Right"}(o||(o={}));const a={canvas:null},d=.2,l=512,_="rgb(255, 0, 255, 0.5)";class c{get firstLineHeight(){return this.firstLineAscent+this.maxLineDescent}get midLineHeight(){return this.maxLineAscent+this.maxLineDescent}get lastLineHeight(){return this.maxLineAscent+this.lastLineDescent}constructor(t,e,i,n,s){this.firstLineAscent=t,this.lastLineDescent=e,this.maxLineAscent=i,this.maxLineDescent=n,this.displayWidth=s}}export{o as TextRenderAlignment,r as TextRenderer,s as textVerticalPaddingPx};
5
+ import{clamp as t}from"../../../../core/mathUtils.js";import{debugFlags as e}from"../../support/debugFlags.js";import{getFontMetrics as i}from"./FontMetrics.js";import{getTextHelperCanvas as n}from"./TextHelperCanvas.js";const s=1;class r{constructor(t,e,i,n){this.text=t,this._alignment=e,this._parameters=i,this._maxSize=n,this._textWidths=[],this._lineWidths=[],this._renderPixelRatio=null,this._metricsCached=null,this.key=`TextRenderer-${this._parameters.key}-${this._alignment}--${t}`,this._lines=t.replaceAll(" "," ").split(/\r?\n/)}get displayWidth(){return Math.ceil(this._displayWidth+2*this._horizontalPadding)}get displayHeight(){let t=this._metrics.firstLineAscent;for(let e=0;e<this._lines.length-1;e++)t+=this._lineSpacing;return t+=this._metrics.lastLineDescent,Math.ceil(t+2*this._haloSize+2*this._verticalPadding)}get renderedWidth(){return this._toRoundedRenderUnit(this.displayWidth)}get renderedHeight(){return this._toRoundedRenderUnit(this.displayHeight)}get firstRenderedBaselinePosition(){return this._toRenderUnit(this._firstLineYOffset+this._metrics.firstLineAscent)}get _firstLineYOffset(){return this._verticalPadding+this._haloSize}get _metrics(){if(null==this._metricsCached){const t=n(a,l,l).getContext("2d");this._parameters.setFontProperties(t,this._fontSize);let e=2*this._haloSize;const s=this._parameters.definition.font;"italic"!==s.style&&"oblique"!==s.style&&"bold"!==s.weight&&"bolder"!==s.weight||(e+=.3*t.measureText("A").width),this._textWidths.length=0,this._lineWidths.length=0;let r,h,o=0,d=0,_=0;this._lines.forEach(((i,n)=>{const s=t.measureText(i),a=s.width,l=a+e;this._textWidths.push(a),this._lineWidths.push(l),o=Math.max(o,l),d=Math.max(d,s.actualBoundingBoxAscent),_=Math.max(_,s.actualBoundingBoxDescent),0===n&&(r=s),n===this._lines.length-1&&(h=s)}));const g=i(this._parameters);d=Math.max(d,g.maxAscent),_=Math.max(_,g.maxDescent);const m=r.actualBoundingBoxAscent,f="underline"===this._parameters.definition.font.decoration?_:h.actualBoundingBoxDescent;this._metricsCached=new c(m,f,d,_,o)}return this._metricsCached}get _lineSpacing(){return(this._midLineHeight+this._linePadding)*this._parameters.definition.lineSpacingFactor}get _midLineHeight(){return this._metrics.midLineHeight}get _linePadding(){return this._midLineHeight*d}get _midLineAscent(){return this._metrics.maxLineAscent}get _renderedFontSize(){return this._toRenderUnit(this._fontSize)}get _fontSize(){return this._parameters.definition.size}get _renderedHaloSize(){return this._toRenderUnit(this._haloSize)}get _haloSize(){return this._parameters.haloSize}get _horizontalPadding(){return this._hasBackground?this._parameters.definition.background.padding[0]:0}get _verticalPadding(){return Math.max(this._hasBackground?this._parameters.definition.background.padding[1]:0,s)}get _hasBackground(){return!!this._parameters.backgroundStyle}get renderPixelRatio(){if(null==this._renderPixelRatio){const t=this._parameters.definition.pixelRatio;this._renderPixelRatio=Math.min(t,Math.min(this._maxSize[0]/this.displayWidth,this._maxSize[1]/this.displayHeight))}return this._renderPixelRatio}_getLineXOffset(t){switch(this._alignment){case o.Left:return this._horizontalPadding;case o.Center:return(this.displayWidth-this._lineWidths[t])/2;case o.Right:return this.displayWidth-this._horizontalPadding-this._lineWidths[t]}}render(t,i,n){t.save();const s=i/=this.renderPixelRatio,r=n/=this.renderPixelRatio,h=this._haloSize,o=this._firstLineYOffset+this._metrics.firstLineAscent;i+=h,n+=o;const a=this._haloSize>0;a&&this._renderHalo(t,s,r,h,o),this._parameters.setFontProperties(t,this._renderedFontSize);for(let e=0;e<this._lines.length;++e){const s=this._lines[e],r=this._getLineXOffset(e);a&&(t.globalCompositeOperation="destination-out",t.fillStyle="rgb(0, 0, 0)",this._fillText(t,s,i+r,n),this._renderLineDecoration(t,i+r,n,this._textWidths[e])),t.globalCompositeOperation="source-over",t.fillStyle=this._parameters.textStyle,this._fillText(t,s,i+this._getLineXOffset(e),n),this._renderLineDecoration(t,i+r,n,this._textWidths[e]),n+=this._lineSpacing}if(e.TEXT_SHOW_BASELINE){t.strokeStyle=_,t.setLineDash([2,2]),t.lineWidth=1;let e=r+o;for(let i=0;i<this._lines.length;++i)this._drawLine(t,[s,e],[s+this.displayWidth,e]),e+=this._lineSpacing}if(e.TEXT_SHOW_BORDER&&(t.strokeStyle=_,t.setLineDash([]),t.lineWidth=1,this._drawBox(t,[s,r],[this.displayWidth,this.displayHeight])),this._hasBackground){const e=this._parameters.definition.background.borderRadius*this.renderPixelRatio;this._roundedRect(t,s,r,e),t.globalCompositeOperation="destination-over",t.fillStyle=this._parameters.backgroundStyle,t.fill()}t.restore()}_renderLineDecoration(t,e,i,n,s=!1){if("none"===this._parameters.definition.font.decoration||0===n)return;const r=1,h=Math.max(this._parameters.definition.size/16,r);switch(this._parameters.definition.font.decoration){case"underline":i+=2*h;break;case"line-through":i-=.33*this._midLineAscent}const o=s?this._haloSize:0;t.strokeStyle=s?this._parameters.haloStyle:this._parameters.textStyle,t.lineWidth=this._toRenderUnit(h+2*o),t.beginPath(),t.moveTo(this._toRenderUnit(e-o),this._toRenderUnit(i)),t.lineTo(this._toRenderUnit(e+n+o),this._toRenderUnit(i)),t.stroke()}_roundedRect(e,i,n,s){i=this._toRenderUnit(i),n=this._toRenderUnit(n);const r=this.renderedWidth,h=this.renderedHeight;0!==s?(s=t(s,0,Math.floor(h/2)),e.beginPath(),e.moveTo(i,n+s),e.arcTo(i,n,i+s,n,s),e.lineTo(i+r-s,n),e.arcTo(i+r,n,i+r,n+s,s),e.lineTo(i+r,n+h-s),e.arcTo(i+r,n+h,i+r-s,n+h,s),e.lineTo(i+s,n+h),e.arcTo(i,n+h,i,n+h-s,s),e.closePath()):e.rect(i,n,r,h)}_renderHalo(t,e,i,s,r){const h=this.renderedWidth,o=this.renderedHeight,d=n(a,Math.max(h,l),Math.max(o,l)),_=d.getContext("2d");_.clearRect(0,0,h,o),this._parameters.setFontProperties(_,this._renderedFontSize),_.fillStyle=this._parameters.haloStyle,_.strokeStyle=this._parameters.haloStyle;const c=this._renderedHaloSize<3;_.lineJoin=c?"miter":"round",c?this._renderHaloEmulated(_,s,r):this._renderHaloNative(_,s,r);let g=r;for(let n=0;n<this._lines.length;++n){const t=this._getLineXOffset(n);this._renderLineDecoration(_,s+t,g,this._textWidths[n],!0),g+=this._lineSpacing}t.globalAlpha=this._parameters.definition.halo.color[3],t.drawImage(d,0,0,h,o,this._toRenderUnit(e),this._toRenderUnit(i),h,o),t.globalAlpha=1}_renderHaloEmulated(t,e,i){for(let n=0;n<this._lines.length;++n){const s=this._lines[n],r=this._getLineXOffset(n);for(const[n,o]of h)this._fillText(t,s,e+r+this._haloSize*n,i+this._haloSize*o);i+=this._lineSpacing}}_renderHaloNative(t,e,i){const n=2*this._haloSize;for(let s=0;s<this._lines.length;++s){const r=this._lines[s],h=this._getLineXOffset(s),o=5,a=.1;for(let s=0;s<o;s++){const d=1-(o-1)*a+s*a;t.lineWidth=this._toRenderUnit(d*n),this._strokeText(t,r,e+h,i)}i+=this._lineSpacing}}get _displayWidth(){return this._metrics.displayWidth}_toRenderUnit(t){return t*this.renderPixelRatio}_toRoundedRenderUnit(t){return Math.round(t*this.renderPixelRatio)}_fillText(t,e,i,n){t.fillText(e,this._toRenderUnit(i),this._toRenderUnit(n))}_strokeText(t,e,i,n){t.strokeText(e,this._toRenderUnit(i),this._toRenderUnit(n))}_drawLine(t,e,i){t.beginPath(),t.moveTo(this._toRoundedRenderUnit(e[0])+.5,this._toRoundedRenderUnit(e[1])+.5),t.lineTo(this._toRoundedRenderUnit(i[0])+.5,this._toRoundedRenderUnit(i[1])+.5),t.stroke()}_drawBox(t,e,i){const n=this._toRenderUnit(e[0]),s=this._toRenderUnit(e[1]),r=this._toRenderUnit(i[0]),h=this._toRenderUnit(i[1]),o=Math.floor(n)+.5,a=Math.ceil(n+r)-.5,d=Math.floor(s)+.5,l=Math.ceil(s+h)-.5;t.beginPath(),t.moveTo(o,d),t.lineTo(a,d),t.lineTo(a,l),t.lineTo(o,l),t.lineTo(o,d),t.stroke()}}const h=[];{const t=16;for(let e=0;e<360;e+=360/t)h.push([Math.cos(Math.PI*e/180),Math.sin(Math.PI*e/180)])}var o;!function(t){t[t.Left=0]="Left",t[t.Center=1]="Center",t[t.Right=2]="Right"}(o||(o={}));const a={canvas:null},d=.2,l=512,_="rgb(255, 0, 255, 0.5)";class c{get firstLineHeight(){return this.firstLineAscent+this.maxLineDescent}get midLineHeight(){return this.maxLineAscent+this.maxLineDescent}get lastLineHeight(){return this.maxLineAscent+this.lastLineDescent}constructor(t,e,i,n,s){this.firstLineAscent=t,this.lastLineDescent=e,this.maxLineAscent=i,this.maxLineDescent=n,this.displayWidth=s}}export{o as TextRenderAlignment,r as TextRenderer,s as textVerticalPaddingPx};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../../../chunks/tslib.es6.js";import t from"../../../../../core/Accessor.js";import{equals as r,binaryIndexOf as s}from"../../../../../core/arrayUtils.js";import n from"../../../../../core/Logger.js";import{clamp as o}from"../../../../../core/mathUtils.js";import{disposeMaybe as i,destroyMaybe as a}from"../../../../../core/maybe.js";import{property as c}from"../../../../../core/accessorSupport/decorators/property.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/has.js";import{subclass as l}from"../../../../../core/accessorSupport/decorators/subclass.js";import{f as d,t as u,d as h}from"../../../../../chunks/mat3.js";import{a as m}from"../../../../../chunks/mat3f64.js";import{a as g}from"../../../../../chunks/mat4f64.js";import{s as p,c as f,u as _,j as b}from"../../../../../chunks/vec3.js";import{c as y}from"../../../../../chunks/vec3f64.js";import{UpdatingHandles as j}from"../../../../../core/support/UpdatingHandles.js";import{g as O,a as w}from"../../../../../chunks/sphere.js";import{c as E}from"../../../../../chunks/vec33.js";import{ViewingMode as R}from"../../../../ViewingMode.js";import{encodeElevationOffset as v}from"../../collections/Component/Material/shader/ComponentData.glsl.js";import{TwoVectorPosition as x}from"../../core/util/TwoVectorPosition.js";import{Attribute as T}from"../Attribute.js";import{GridLocalOriginFactory as M}from"../GridLocalOriginFactory.js";import{applyToModelMatrix as C}from"../localOriginHelper.js";import{LocalOriginManager as D}from"../LocalOriginManager.js";import{Object3D as P}from"../Object3D.js";import{VertexArrayObject as S}from"../VertexArrayObject.js";import{VertexAttribute as A}from"../VertexAttribute.js";import{VertexLayout as U,EdgeInputBufferLayout as B,EdgeShaderAttributeLocations as L,glVertexLayout as k}from"./bufferLayouts.js";import{RegularEdgeBufferWriter as I,SilhouetteEdgeBufferWriter as H}from"./edgeBufferWriters.js";import{EdgeType as V}from"./edgePreprocessing.js";import{EdgeRenderer as N,lineWidthFractionFactor as G,extensionLengthOffset as W}from"./EdgeRenderer.js";import{EdgePassParameters as q}from"./EdgeShaderParameters.js";import{EdgeWorkerHandle as z}from"./EdgeWorkerHandle.js";import{Transparency as K}from"./interfaces.js";import{generateStrokesTexture as F}from"./strokes.js";import{determineRendererType as Q,determineEdgeTransparency as J,determineObjectTransparency as X,fillComponenBufferIndices as Y}from"./util.js";import{BufferManager as Z}from"../TextureBackedBuffer/BufferManager.js";import{EdgeSilhouette as $}from"../../shaders/sources/edgeRenderer/EdgeUtil.glsl.js";import{BufferObject as ee}from"../../../../webgl/BufferObject.js";import{Usage as te}from"../../../../webgl/enums.js";let re=class extends t{constructor(e){super(e),this._updatingHandles=new j,this._perObjectData=new Map,this._perObjectDataEvictionCache=new Set,this._renderers=new Map,this._gpuMemoryUsage=0,this._workerAbort=new AbortController,this._tmpModelPosition=y(),this._localOrigins=new D(new M(e.renderSR))}initialize(){this._worker=new z(this.schedule),this._componentColorManager=new Z(this.rctx,3);const e=U.createBuffer(4);for(let t=0;t<4;t++)e.sideness.set(t,0,0===t||3===t?0:1),e.sideness.set(t,1,0===t||1===t?0:1);this._verticesBufferObject=ee.createVertex(this.rctx,te.STATIC_DRAW,e.buffer)}destroy(){this.destroyed||(this._perObjectData.forEach((e=>this._discardObjectEntry(e))),this._perObjectData.clear(),this._strokesTexture=i(this._strokesTexture),this._componentColorManager=a(this._componentColorManager),this._workerAbort.abort(),this._worker.destroy(),this._verticesBufferObject=i(this._verticesBufferObject),this._renderers.clear(),this._updatingHandles.destroy(),this._set("schedule",_e))}get updating(){return this._updatingHandles.updating}get usedMemory(){return this._gpuMemoryUsage}shouldRender(){return this._renderers.size>0}async addComponentObject(e,t,r,s,n,o,i,a){if(this.hasObject(e))return this.getObjectMemoryUsage(e);let c;const l=new oe(new Promise((e=>c=e)),r.center,r.radius);this._perObjectData.set(e,l);const d=await this._updatingHandles.addPromise(this._addComponentGeometry(t,l,s,n,o,i,a));return this.setNeedsRender(),c(),d}async addOrUpdateObject3D(e,t,r,s){if(this.destroyed)return void n.getLogger(this).warn("Attempt to add an object to a destroyed instance");const o=this._perObjectData.get(e);let i;o?.renderables.length>0&&this._perObjectDataEvictionCache.add(o);const a=e.boundingVolumeWorldSpace.bounds,c=new oe(new Promise((e=>i=e)),O(a),w(a));this._perObjectData.set(e,c);const l=new Array;if(r.mergeGeometries&&e.geometries.length>1&&ne(e))l.push(this._addObjectMergedGeometries(e,c,t,r,s));else for(let n=0;n<e.geometries.length;n++){const o=e.geometries[n];o.material.supportsEdges&&l.push(this._addGeometry(e,c,o,t[0],r,s))}await this._updatingHandles.addPromise(Promise.all(l)),this._perObjectDataEvictionCache.delete(c),this._discardObjectEntry(o),this.setNeedsRender(),i()}fastUpdateObject3DEdgesTransform(e){if(this.destroyed)return!1;const t=this._perObjectData.get(e);if(!t)return!1;const{geometries:r}=e,{renderables:s}=t;if(0===r.length||0===s.length)return!0;if(s.length>1)return!1;const[n]=s,o=n.transform;if(!(o instanceof ce))return!1;const[i]=r;if(i.localOrigin!==o.origin.origin)return!1;const a=g(),c=this._computeModelTransformWithLocalOrigin(e,i,a);return n.transform=new ce(a,c),this.setNeedsRender(),!0}_discardObjectEntry(e){e&&(e.renderables.length&&(e.renderables.forEach((e=>this._removeRenderable(e))),this.setNeedsRender()),e.loaded=null)}hasObject(e){return this._perObjectData.has(e)}async updateAllComponentOpacities(e,t){const r=await this._updatingHandles.addPromise(this._getObjectEntry(e));if(null==r)return;const s=t instanceof Array?e=>t[e]:()=>t;r.renderables.forEach((e=>{const t=e.components.meta.length;for(let r=0;r<t;r++){const t=s(r),n=e.components.meta[r],o=n.index;n.material.opacity=t,e.components.buffer.textureBuffer.setDataElement(o,1,3,255*t)}this._updateTransparency(e)})),this.setNeedsRender()}async getObjectMemoryUsage(e){const t=await this._getObjectEntry(e);return null!=t?t.renderables.reduce(((e,t)=>e+t.statistics.gpuMemoryUsage),0):0}async updateAllComponentMaterials(e,t,r,s){const n=e instanceof P,o=!!r.hasSlicePlane,i=Q(t),a=N.getKey(i,o,n),c=await this._updatingHandles.addPromise(this._getObjectEntry(e));null!=c&&(c.renderables.forEach((e=>{if(a!==e.rendererKey){const t=this._renderers.get(e.rendererKey),r=this._acquireRenderer(i,o,n);t.removeRenderable(e),--t.refCount,e.rendererKey=a,r.addRenderable(e)}for(let r=0;r<t.length;r++)e.components.meta[r].material=t[r];s&&this._updateComponentBuffer(e.components),this._updateTransparency(e)})),this.setNeedsRender())}async updateAllVerticalOffsets(e,t){const r=await this._updatingHandles.addPromise(this._getObjectEntry(e));null!=r&&(r.renderables.forEach((e=>{const r=e.components.meta;for(let s=0;s<r.length;s++)e.components.meta[s].verticalOffset=t?.[s]??0;this._updateComponentBuffer(e.components)})),this.setNeedsRender())}async updateObjectVisibility(e,t){const r=await this._updatingHandles.addPromise(this._getObjectEntry(e));null!=r&&(r.renderables.forEach((e=>e.visible=t)),this.setNeedsRender())}removeObject(e){const t=this._perObjectData.get(e);t&&(this._perObjectData.delete(e),this._discardObjectEntry(t))}async _getObjectEntry(e){const t=this._perObjectData.get(e);if(!t)throw new Error("no object");return await t.loaded,null==t.loaded?null:t}render(e,t){if(null==this._componentColorManager)return;this._localOrigins.updateViewMatrices(e.camera.viewMatrix);const r=e.camera.viewInverseTransposeMatrix,s=y(),n=new x;let o=0,i=0;if(this._renderers.forEach((r=>{if(0===r.refCount)return this._renderers.delete(r.key),void r.dispose();let s=!0,n=!0;r.forEachRenderable((t=>{t.visible&&(o+=t.statistics.averageEdgeLength,i++,s&&t.regular&&(r.updateTechnique(e,!1),s=!1),n&&t.silhouette&&(r.updateTechnique(e,!0),n=!1))}),t)})),this._componentColorManager.garbageCollect(),this._componentColorManager.updateTextures(),0===i)return;const a=new q(40*o/i,t);p(s,r[3],r[7],r[11]),n.set(s),f(a.transformWorldFromViewTH,n.high),f(a.transformWorldFromViewTL,n.low),d(a.transformViewFromCameraRelativeRS,e.camera.viewMatrix),u(fe,a.transformViewFromCameraRelativeRS),h(a.transformNormalViewFromGlobal,fe),a.transformProjFromView=e.camera.projectionMatrix,this._updateObjectCameraDistances(e),this._renderers.forEach((t=>{this._renderRegularEdges(t,e,a),this._renderSilhouetteEdges(t,e,a)}))}_updateTransparency(e){const t=J(e.components.meta),r=X(e.components.meta);t===e.edgeTransparency&&r===e.objectTransparency||(e.edgeTransparency=t,e.objectTransparency=r,this._renderers.get(e.rendererKey).setRenderablesDirty())}_computeModelTransformWithLocalOrigin(e,t,r){e.getCombinedShaderTransformation(t,r);const s=null!=t.localOrigin?this._localOrigins.register(t.localOrigin):this._localOrigins.acquire(p(this._tmpModelPosition,r[12],r[13],r[14]));return t.localOrigin=s.origin,C(s.origin.vec3,r),s}_updateComponentBuffer(e){const{meta:t,buffer:r}=e,s=new Uint8Array(4);for(let n=0;n<t.length;n++){const e=t[n].material,i=t[n].index,a=o(Math.round(e.size*G),0,255),c=o(e.extensionLength,-W,255-W)+W,l="solid"===e.type?V.SOLID:V.SKETCH,d=255*e.opacity,u=e.color,h=255*u[0],m=255*u[1],g=255*u[2],p=255*u[3];r.textureBuffer.setData(i,0,h,m,g,p),r.textureBuffer.setData(i,1,a,c,l,d),v(t[n].verticalOffset,s),r.textureBuffer.setData(i,2,s[0],s[1],s[2],s[3])}}_createComponentBuffers(e){if(null==this._componentColorManager)return null;const t=new Array,r=this._componentColorManager.getBuffer(e.length);for(let n=0;n<e.length;n++){const s=e[n],o=r.acquireIndex();t.push({index:o,verticalOffset:0,material:s})}const s=new ie(r,t);return this._updateComponentBuffer(s),s}_extractEdges(e,t,r,s,n,o=n.length){return this._worker.process({data:t,indices:n,indicesLength:o,writerSettings:e,skipDeduplicate:r},this._workerAbort.signal,s)}_createRenderable(e,t,r,s,n){const o=t=>null!=this._verticesBufferObject?new ae(new S(this.rctx,L,{vertices:k,instances:t===$.REGULAR?I.glLayout:H.glLayout},{vertices:this._verticesBufferObject,instances:ee.createVertex(this.rctx,te.STATIC_DRAW,t===$.REGULAR?e.regular.instancesData.buffer:e.silhouette.instancesData.buffer)}),t===$.REGULAR?e.regular.lodInfo:e.silhouette.lodInfo):null,i=e.regular.lodInfo.lengths.length>0?o($.REGULAR):null,a=e.silhouette.lodInfo.lengths.length>0?o($.SILHOUETTE):null,c=(i?.vao.memoryUsage??0)+(a?.vao.memoryUsage??0);return new le(i,a,{gpuMemoryUsage:c,externalMemoryUsage:n,averageEdgeLength:e.averageEdgeLength},r,J(t.meta),X(t.meta),t,s)}async _addGeometry(e,t,r,s,n,o){if(r.edgeIndicesLength<=0)return;const i=r.attributes.get(A.POSITION),a=g(),c=this._computeModelTransformWithLocalOrigin(e,r,a),l=new pe(i,a,c);return this._addPositionData(t,l,r.edgeIndicesLength,s,n,o)}async _addPositionData(e,t,r,s,n,o=!1){if(null==e.loaded)return;const i=this._createComponentBuffers([s]);if(null==i)return;const a=this._acquireRenderer(s.type,!!n.hasSlicePlane,!0),{modelTransform:c,origin:l}=t,d=t.position.indices,u=t.position,h=u.data.length/u.size,m=B.createBuffer(h);for(let f=0;f<h;f++)m.position.set(f,0,u.data[f*u.size]),m.position.set(f,1,u.data[f*u.size+1]),m.position.set(f,2,u.data[f*u.size+2]);Y(i.meta,[0,m.componentIndex.count],m.componentIndex);const g=await this._updatingHandles.addPromise(this._extractEdges(a.writerSettings,m,!1,o,d,r));if(null==e.loaded)return;const p=this._createRenderable(g,i,new ce(c,l),a.key,!1);e.renderables.push(p),a.addRenderable(p),this._gpuMemoryUsage+=p.statistics.gpuMemoryUsage}async _addComponentGeometry(e,t,r,s,n,o,i){if(null==t.loaded)return 0;const a=this._createComponentBuffers(o);if(null==a)return 0;const c=Q(o),l=this._acquireRenderer(c,i.hasSlicePlane||!1,!1),d=B.createBuffer(r.length/3);E(d.position.typedBuffer,r,d.position.typedBufferStride,3),Y(a.meta,n,d.componentIndex,s);const u=!0,h=l.writerSettings,m=await this._updatingHandles.addPromise(this._extractEdges(h,d,u,!1,s));if(null==t.loaded)return 0;const g=this._createRenderable(m,a,e,l.key,!0);return t.renderables.push(g),l.addRenderable(g),g.statistics.gpuMemoryUsage}async _addObjectMergedGeometries(e,t,r,s,n){const o=new Map;let i=0,a=null,c=0;const l=e.geometries.filter((e=>{if(e.edgeIndicesLength<=0||!e.material.supportsEdges)return!1;!a&&e.localOrigin&&(a=e);const t=e.attributes.get(A.POSITION);return c+=t.data.length/t.size,i+=e.edgeIndicesLength,!0}));if(0===l.length)return;const d=c>=65536?Uint32Array:Uint16Array,u=i?new d(i):null,h=[];let m=0;l.forEach((e=>{const t=e.attributes.get(A.POSITION),r=t.indices;let s=o.get(t.data);if(null==s){s=h.length/3;for(let e=0;e<t.data.length;e+=t.size)h.push(t.data[e]),h.push(t.data[e+1]),h.push(t.data[e+2]);o.set(t.data,s)}for(let n=0;n<e.edgeIndicesLength;n++)u[m++]=s+r[n]}));const p=a||e.geometries[0],f=g(),_=this._computeModelTransformWithLocalOrigin(e,p,f);for(let g=0;g<e.geometries.length;g++)e.geometries[g].localOrigin=_.origin;const b=new pe(new T(h,u,3),f,_);await this._updatingHandles.addPromise(this._addPositionData(t,b,u.length,r[0],s,n))}_acquireRenderer(e,t,r){const s=N.getKey(e,t,r);let n=this._renderers.get(s);return null==this._strokesTexture&&(this._strokesTexture=F(this.rctx)),n||(n=new N(this.rctx,this.techniqueRepository,{type:e,hasSlicePlane:t,strokesTexture:this._strokesTexture,legacy:r,spherical:this.viewingMode===R.Global}),this._renderers.set(s,n)),++n.refCount,n}_removeRenderable(e){se(e.regular),se(e.silhouette);const t=this._renderers.get(e.rendererKey);if(t){t.removeRenderable(e),--t.refCount,"origin"in e.transform&&this._localOrigins.release(e.transform.origin),this._gpuMemoryUsage-=e.statistics.externalMemoryUsage?0:e.statistics.gpuMemoryUsage;for(const t of e.components.meta)e.components.buffer.releaseIndex(t.index)}}_updateObjectCameraDistances(e){const t=e.camera.eye,r=e.camera.viewForward,s=y(),n=e=>{_(s,e.center,t);const n=b(s,r),o=e.radius,i=n<-o?1/0:n<o?0:n-o;e.renderables.forEach((e=>e.distanceToCamera=i))};this._perObjectData.forEach(n),this._perObjectDataEvictionCache.forEach(n)}_renderRegularEdges(e,t,r){const s=e.bindRegularEdges(r,t),n=r.transparency,o=t.camera.perScreenPixelRatio;e.forEachRenderable((n=>{if(!ue(n)||!n.visible)return;const i=ge(n.regular.lod.lengths,n.distanceToCamera,o);e.renderRegularEdges(s,n,r,t,i)}),n)}_renderSilhouetteEdges(e,t,r){const s=e.bindSilhouetteEdges(r,t),n=r.transparency,o=t.camera.perScreenPixelRatio;e.forEachRenderable((n=>{if(!me(n)||!n.visible)return;const i=ge(n.silhouette.lod.lengths,n.distanceToCamera,o);e.renderSilhouetteEdges(s,n,r,t,i)}),n)}get test(){return{hasRenderedPrimitives:e=>{let t=!1;const r=e.perScreenPixelRatio,s=(e,s)=>e.forEachRenderable((e=>{e.visible&&!t&&(ue(e)&&(t=ge(e.regular.lod.lengths,e.distanceToCamera,r)>0),!t&&me(e)&&(t=ge(e.silhouette.lod.lengths,e.distanceToCamera,r)>0))}),s);return this._renderers.forEach((e=>{t||(s(e,K.OPAQUE),s(e,K.TRANSPARENT))})),t},getObjectData:e=>this._perObjectData.get(e)}}};function se(e){null!=e&&(e.vao.vertexBuffers.instances.dispose(),e.vao.disposeVAOOnly(),e.vao=null)}function ne(e){let t=null,s=null;for(let n=0;n<e.geometries.length;n++){const o=e.geometries[n];if(o.material.supportsEdges){if(t){if(!r(t,o.transformation))return!1}else t=o.transformation;if(s||null==o.localOrigin){if(null!=s?.localOrigin&&null!=o.localOrigin&&s.localOrigin.id!==o.localOrigin.id)return!1}else s=o}}return!0}e([c({constructOnly:!0})],re.prototype,"rctx",void 0),e([c({constructOnly:!0})],re.prototype,"renderSR",void 0),e([c({constructOnly:!0})],re.prototype,"viewingMode",void 0),e([c({constructOnly:!0})],re.prototype,"techniqueRepository",void 0),e([c({constructOnly:!0})],re.prototype,"setNeedsRender",void 0),e([c({constructOnly:!0})],re.prototype,"schedule",void 0),e([c({readOnly:!0})],re.prototype,"_updatingHandles",void 0),e([c({readOnly:!0})],re.prototype,"updating",null),re=e([l("esri.views.3d.webgl-engine.lib.edgeRendering.EdgeView")],re);class oe{constructor(e,t,r){this.center=t,this.radius=r,this.renderables=new Array,this.loaded=e,this.loaded.then((()=>{null!=this.loaded&&(this.loaded=!0)}))}}class ie{constructor(e,t){this.buffer=e,this.meta=t}}class ae{constructor(e,t){this.vao=e,this.lod=t}}class ce{constructor(e,t){this.modelMatrix=e,this.origin=t}}class le{constructor(e,t,r,s,n,o,i,a){this.regular=e,this.silhouette=t,this.statistics=r,this.transform=s,this.edgeTransparency=n,this.objectTransparency=o,this.components=i,this.rendererKey=a,this.distanceToCamera=0,this.visible=!0}}class de extends le{}function ue(e){return null!=e.regular}class he extends le{}function me(e){return null!=e.silhouette}function ge(e,t,r){const n=t*r,o=s(e,n,!0);return-1===o?n<e[0]?e.length:0:e.length-o}class pe{constructor(e,t,r){this.position=e,this.modelTransform=t,this.origin=r}}const fe=m(),_e=()=>Promise.reject();export{re as EdgeView,ce as LegacyTransform,de as RegularRenderable,le as Renderable,he as SilhouetteRenderable};
5
+ import{_ as e}from"../../../../../chunks/tslib.es6.js";import t from"../../../../../core/Accessor.js";import{equals as r,binaryIndexOf as s}from"../../../../../core/arrayUtils.js";import n from"../../../../../core/Logger.js";import{clamp as o}from"../../../../../core/mathUtils.js";import{disposeMaybe as i,destroyMaybe as a}from"../../../../../core/maybe.js";import{property as c}from"../../../../../core/accessorSupport/decorators/property.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/has.js";import{subclass as l}from"../../../../../core/accessorSupport/decorators/subclass.js";import{f as d,t as u,d as h}from"../../../../../chunks/mat3.js";import{a as m}from"../../../../../chunks/mat3f64.js";import{a as g}from"../../../../../chunks/mat4f64.js";import{s as p,c as f,u as _,j as b}from"../../../../../chunks/vec3.js";import{c as y}from"../../../../../chunks/vec3f64.js";import{UpdatingHandles as j}from"../../../../../core/support/UpdatingHandles.js";import{g as O,a as w}from"../../../../../chunks/sphere.js";import{c as E}from"../../../../../chunks/vec33.js";import{ViewingMode as R}from"../../../../ViewingMode.js";import{encodeElevationOffset as v}from"../../collections/Component/Material/shader/ComponentData.glsl.js";import{TwoVectorPosition as x}from"../../core/util/TwoVectorPosition.js";import{Attribute as T}from"../Attribute.js";import{GridLocalOriginFactory as M}from"../GridLocalOriginFactory.js";import{applyToModelMatrix as C}from"../localOriginHelper.js";import{LocalOriginManager as D}from"../LocalOriginManager.js";import{Object3D as P}from"../Object3D.js";import{VertexArrayObject as S}from"../VertexArrayObject.js";import{VertexAttribute as A}from"../VertexAttribute.js";import{VertexLayout as B,EdgeInputBufferLayout as L,EdgeShaderAttributeLocations as U,glVertexLayout as k}from"./bufferLayouts.js";import{RegularEdgeBufferWriter as I,SilhouetteEdgeBufferWriter as H}from"./edgeBufferWriters.js";import{EdgeType as V}from"./edgePreprocessing.js";import{EdgeRenderer as N,lineWidthFractionFactor as G,extensionLengthOffset as W}from"./EdgeRenderer.js";import{EdgePassParameters as q}from"./EdgeShaderParameters.js";import{EdgeWorkerHandle as z}from"./EdgeWorkerHandle.js";import{Transparency as K}from"./interfaces.js";import{generateStrokesTexture as F}from"./strokes.js";import{determineRendererType as Q,determineEdgeTransparency as J,determineObjectTransparency as X,fillComponenBufferIndices as Y}from"./util.js";import{BufferManager as Z}from"../TextureBackedBuffer/BufferManager.js";import{EdgeSilhouette as $}from"../../shaders/sources/edgeRenderer/EdgeUtil.glsl.js";import{BufferObject as ee}from"../../../../webgl/BufferObject.js";import{Usage as te}from"../../../../webgl/enums.js";let re=class extends t{constructor(e){super(e),this._updatingHandles=new j,this._perObjectData=new Map,this._perObjectDataEvictionCache=new Set,this._renderers=new Map,this._gpuMemoryUsage=0,this._workerAbort=new AbortController,this._tmpModelPosition=y(),this._localOrigins=new D(new M(e.renderSR))}initialize(){this._worker=new z(this.schedule),this._componentColorManager=new Z(this.rctx,3);const e=B.createBuffer(4);for(let t=0;t<4;t++)e.sideness.set(t,0,0===t||3===t?0:1),e.sideness.set(t,1,0===t||1===t?0:1);this._verticesBufferObject=ee.createVertex(this.rctx,te.STATIC_DRAW,e.buffer)}destroy(){this.destroyed||(this._perObjectData.forEach((e=>this._discardObjectEntry(e))),this._perObjectData.clear(),this._strokesTexture=i(this._strokesTexture),this._componentColorManager=a(this._componentColorManager),this._workerAbort.abort(),this._worker.destroy(),this._verticesBufferObject=i(this._verticesBufferObject),this._renderers.clear(),this._updatingHandles.destroy(),this._set("schedule",_e))}get updating(){return this._updatingHandles.updating}get usedMemory(){return this._gpuMemoryUsage}shouldRender(){return this._renderers.size>0}async addComponentObject(e,t,r,s,n,o,i,a){if(this.hasObject(e))return this.getObjectMemoryUsage(e);let c;const l=new oe(new Promise((e=>c=e)),r.center,r.radius);this._perObjectData.set(e,l);const d=await this._updatingHandles.addPromise(this._addComponentGeometry(t,l,s,n,o,i,a));return this.setNeedsRender(),c(),d}async addOrUpdateObject3D(e,t,r,s){if(this.destroyed)return void n.getLogger(this).warn("Attempt to add an object to a destroyed instance");const o=this._perObjectData.get(e);let i;o?.renderables.length>0&&this._perObjectDataEvictionCache.add(o);const a=e.boundingVolumeWorldSpace.bounds,c=new oe(new Promise((e=>i=e)),O(a),w(a));this._perObjectData.set(e,c);const l=new Array;if(r.mergeGeometries&&e.geometries.length>1&&ne(e))l.push(this._addObjectMergedGeometries(e,c,t,r,s));else for(let n=0;n<e.geometries.length;n++){const o=e.geometries[n];o.material.supportsEdges&&l.push(this._addGeometry(e,c,o,t[0],r,s))}await this._updatingHandles.addPromise(Promise.all(l)),this._perObjectDataEvictionCache.delete(c),this._discardObjectEntry(o),this.setNeedsRender(),i()}fastUpdateObject3DEdgesTransform(e){if(this.destroyed)return!1;const t=this._perObjectData.get(e);if(!t)return!1;const{geometries:r}=e,{renderables:s}=t;if(0===r.length||0===s.length)return!0;if(s.length>1)return!1;const[n]=s,o=n.transform;if(!(o instanceof ce))return!1;const[i]=r;if(i.localOrigin!==o.origin.origin)return!1;const a=g(),c=this._computeModelTransformWithLocalOrigin(e,i,a);return n.transform=new ce(a,c),this.setNeedsRender(),!0}_discardObjectEntry(e){e&&(e.renderables.length&&(e.renderables.forEach((e=>this._removeRenderable(e))),this.setNeedsRender()),e.loaded=null)}hasObject(e){return this._perObjectData.has(e)}async updateAllComponentOpacities(e,t){const r=await this._updatingHandles.addPromise(this._getObjectEntry(e));if(null==r)return;const s=t instanceof Array?e=>t[e]:()=>t;r.renderables.forEach((e=>{const t=e.components.meta.length;for(let r=0;r<t;r++){const t=s(r),n=e.components.meta[r],o=n.index;n.material.opacity=t,e.components.buffer.textureBuffer.setDataElement(o,1,3,255*t)}this._updateTransparency(e)})),this.setNeedsRender()}async getObjectMemoryUsage(e){const t=await this._getObjectEntry(e);return null!=t?t.renderables.reduce(((e,t)=>e+t.statistics.gpuMemoryUsage),0):0}async updateAllComponentMaterials(e,t,r,s){const n=e instanceof P,o=!!r.hasSlicePlane,i=Q(t),a=N.getKey(i,o,n),c=await this._updatingHandles.addPromise(this._getObjectEntry(e));null!=c&&(c.renderables.forEach((e=>{if(a!==e.rendererKey){const t=this._renderers.get(e.rendererKey),r=this._acquireRenderer(i,o,n);t.removeRenderable(e),--t.refCount,e.rendererKey=a,r.addRenderable(e)}for(let r=0;r<t.length;r++)e.components.meta[r].material=t[r];s&&this._updateComponentBuffer(e.components),this._updateTransparency(e)})),this.setNeedsRender())}async updateAllVerticalOffsets(e,t){const r=await this._updatingHandles.addPromise(this._getObjectEntry(e));null!=r&&(r.renderables.forEach((e=>{const r=e.components.meta;for(let s=0;s<r.length;s++)e.components.meta[s].verticalOffset=t?.[s]??0;this._updateComponentBuffer(e.components)})),this.setNeedsRender())}async updateObjectVisibility(e,t){const r=await this._updatingHandles.addPromise(this._getObjectEntry(e));null!=r&&(r.renderables.forEach((e=>e.visible=t)),this.setNeedsRender())}removeObject(e){const t=this._perObjectData.get(e);t&&(this._perObjectData.delete(e),this._discardObjectEntry(t))}async _getObjectEntry(e){const t=this._perObjectData.get(e);if(!t)throw new Error("no object");return await t.loaded,null==t.loaded?null:t}render(e,t){if(null==this._componentColorManager)return;this._localOrigins.updateViewMatrices(e.camera.viewMatrix);const r=e.camera.viewInverseTransposeMatrix,s=y(),n=new x;let o=0,i=0;if(this._renderers.forEach((r=>{if(0===r.refCount)return this._renderers.delete(r.key),void r.dispose();let s=!0,n=!0;r.forEachRenderable((t=>{t.visible&&(o+=t.statistics.averageEdgeLength,i++,s&&t.regular&&(r.updateTechnique(e,!1),s=!1),n&&t.silhouette&&(r.updateTechnique(e,!0),n=!1))}),t)})),this._componentColorManager.garbageCollect(),this._componentColorManager.updateTextures(),0===i)return;const a=new q(40*o/i,t);p(s,r[3],r[7],r[11]),n.set(s),f(a.transformWorldFromViewTH,n.high),f(a.transformWorldFromViewTL,n.low),d(a.transformViewFromCameraRelativeRS,e.camera.viewMatrix),u(fe,a.transformViewFromCameraRelativeRS),h(a.transformNormalViewFromGlobal,fe),a.transformProjFromView=e.camera.projectionMatrix,this._updateObjectCameraDistances(e),this._renderers.forEach((t=>{this._renderRegularEdges(t,e,a),this._renderSilhouetteEdges(t,e,a)}))}_updateTransparency(e){const t=J(e.components.meta),r=X(e.components.meta);t===e.edgeTransparency&&r===e.objectTransparency||(e.edgeTransparency=t,e.objectTransparency=r,this._renderers.get(e.rendererKey).setRenderablesDirty())}_computeModelTransformWithLocalOrigin(e,t,r){e.getCombinedShaderTransformation(t,r);const s=null!=t.localOrigin?this._localOrigins.register(t.localOrigin):this._localOrigins.acquire(p(this._tmpModelPosition,r[12],r[13],r[14]));return t.localOrigin=s.origin,C(s.origin.vec3,r),s}_updateComponentBuffer(e){const{meta:t,buffer:r}=e,s=new Uint8Array(4);for(let n=0;n<t.length;n++){const e=t[n].material,i=t[n].index,a=o(Math.round(e.size*G),0,255),c=o(e.extensionLength,-W,255-W)+W,l="solid"===e.type?V.SOLID:V.SKETCH,d=255*e.opacity,u=e.color,h=255*u[0],m=255*u[1],g=255*u[2],p=255*u[3];r.textureBuffer.setData(i,0,h,m,g,p),r.textureBuffer.setData(i,1,a,c,l,d),v(t[n].verticalOffset,s),r.textureBuffer.setData(i,2,s[0],s[1],s[2],s[3])}}_createComponentBuffers(e){if(null==this._componentColorManager)return null;const t=new Array,r=this._componentColorManager.getBuffer(e.length);for(let n=0;n<e.length;n++){const s=e[n],o=r.acquireIndex();t.push({index:o,verticalOffset:0,material:s})}const s=new ie(r,t);return this._updateComponentBuffer(s),s}_extractEdges(e,t,r,s,n,o=n.length){return this._worker.process({data:t,indices:n,indicesLength:o,writerSettings:e,skipDeduplicate:r},this._workerAbort.signal,s)}_createRenderable(e,t,r,s,n){const o=t=>null!=this._verticesBufferObject?new ae(new S(this.rctx,U,{vertices:k,instances:t===$.REGULAR?I.glLayout:H.glLayout},{vertices:this._verticesBufferObject,instances:ee.createVertex(this.rctx,te.STATIC_DRAW,t===$.REGULAR?e.regular.instancesData.buffer:e.silhouette.instancesData.buffer)}),t===$.REGULAR?e.regular.lodInfo:e.silhouette.lodInfo):null,i=e.regular.lodInfo.lengths.length>0?o($.REGULAR):null,a=e.silhouette.lodInfo.lengths.length>0?o($.SILHOUETTE):null,c=(i?.vao.usedMemory??0)+(a?.vao.usedMemory??0);return new le(i,a,{gpuMemoryUsage:c,externalMemoryUsage:n,averageEdgeLength:e.averageEdgeLength},r,J(t.meta),X(t.meta),t,s)}async _addGeometry(e,t,r,s,n,o){if(r.edgeIndicesLength<=0)return;const i=r.attributes.get(A.POSITION),a=g(),c=this._computeModelTransformWithLocalOrigin(e,r,a),l=new pe(i,a,c);return this._addPositionData(t,l,r.edgeIndicesLength,s,n,o)}async _addPositionData(e,t,r,s,n,o=!1){if(null==e.loaded)return;const i=this._createComponentBuffers([s]);if(null==i)return;const a=this._acquireRenderer(s.type,!!n.hasSlicePlane,!0),{modelTransform:c,origin:l}=t,d=t.position.indices,u=t.position,h=u.data.length/u.size,m=L.createBuffer(h);for(let f=0;f<h;f++)m.position.set(f,0,u.data[f*u.size]),m.position.set(f,1,u.data[f*u.size+1]),m.position.set(f,2,u.data[f*u.size+2]);Y(i.meta,[0,m.componentIndex.count],m.componentIndex);const g=await this._updatingHandles.addPromise(this._extractEdges(a.writerSettings,m,!1,o,d,r));if(null==e.loaded)return;const p=this._createRenderable(g,i,new ce(c,l),a.key,!1);e.renderables.push(p),a.addRenderable(p),this._gpuMemoryUsage+=p.statistics.gpuMemoryUsage}async _addComponentGeometry(e,t,r,s,n,o,i){if(null==t.loaded)return 0;const a=this._createComponentBuffers(o);if(null==a)return 0;const c=Q(o),l=this._acquireRenderer(c,i.hasSlicePlane||!1,!1),d=L.createBuffer(r.length/3);E(d.position.typedBuffer,r,d.position.typedBufferStride,3),Y(a.meta,n,d.componentIndex,s);const u=!0,h=l.writerSettings,m=await this._updatingHandles.addPromise(this._extractEdges(h,d,u,!1,s));if(null==t.loaded)return 0;const g=this._createRenderable(m,a,e,l.key,!0);return t.renderables.push(g),l.addRenderable(g),g.statistics.gpuMemoryUsage}async _addObjectMergedGeometries(e,t,r,s,n){const o=new Map;let i=0,a=null,c=0;const l=e.geometries.filter((e=>{if(e.edgeIndicesLength<=0||!e.material.supportsEdges)return!1;!a&&e.localOrigin&&(a=e);const t=e.attributes.get(A.POSITION);return c+=t.data.length/t.size,i+=e.edgeIndicesLength,!0}));if(0===l.length)return;const d=c>=65536?Uint32Array:Uint16Array,u=i?new d(i):null,h=[];let m=0;l.forEach((e=>{const t=e.attributes.get(A.POSITION),r=t.indices;let s=o.get(t.data);if(null==s){s=h.length/3;for(let e=0;e<t.data.length;e+=t.size)h.push(t.data[e]),h.push(t.data[e+1]),h.push(t.data[e+2]);o.set(t.data,s)}for(let n=0;n<e.edgeIndicesLength;n++)u[m++]=s+r[n]}));const p=a||e.geometries[0],f=g(),_=this._computeModelTransformWithLocalOrigin(e,p,f);for(let g=0;g<e.geometries.length;g++)e.geometries[g].localOrigin=_.origin;const b=new pe(new T(h,u,3),f,_);await this._updatingHandles.addPromise(this._addPositionData(t,b,u.length,r[0],s,n))}_acquireRenderer(e,t,r){const s=N.getKey(e,t,r);let n=this._renderers.get(s);return null==this._strokesTexture&&(this._strokesTexture=F(this.rctx)),n||(n=new N(this.rctx,this.techniqueRepository,{type:e,hasSlicePlane:t,strokesTexture:this._strokesTexture,legacy:r,spherical:this.viewingMode===R.Global}),this._renderers.set(s,n)),++n.refCount,n}_removeRenderable(e){se(e.regular),se(e.silhouette);const t=this._renderers.get(e.rendererKey);if(t){t.removeRenderable(e),--t.refCount,"origin"in e.transform&&this._localOrigins.release(e.transform.origin),this._gpuMemoryUsage-=e.statistics.externalMemoryUsage?0:e.statistics.gpuMemoryUsage;for(const t of e.components.meta)e.components.buffer.releaseIndex(t.index)}}_updateObjectCameraDistances(e){const t=e.camera.eye,r=e.camera.viewForward,s=y(),n=e=>{_(s,e.center,t);const n=b(s,r),o=e.radius,i=n<-o?1/0:n<o?0:n-o;e.renderables.forEach((e=>e.distanceToCamera=i))};this._perObjectData.forEach(n),this._perObjectDataEvictionCache.forEach(n)}_renderRegularEdges(e,t,r){const s=e.bindRegularEdges(r,t),n=r.transparency,o=t.camera.perScreenPixelRatio;e.forEachRenderable((n=>{if(!ue(n)||!n.visible)return;const i=ge(n.regular.lod.lengths,n.distanceToCamera,o);e.renderRegularEdges(s,n,r,t,i)}),n)}_renderSilhouetteEdges(e,t,r){const s=e.bindSilhouetteEdges(r,t),n=r.transparency,o=t.camera.perScreenPixelRatio;e.forEachRenderable((n=>{if(!me(n)||!n.visible)return;const i=ge(n.silhouette.lod.lengths,n.distanceToCamera,o);e.renderSilhouetteEdges(s,n,r,t,i)}),n)}get test(){return{hasRenderedPrimitives:e=>{let t=!1;const r=e.perScreenPixelRatio,s=(e,s)=>e.forEachRenderable((e=>{e.visible&&!t&&(ue(e)&&(t=ge(e.regular.lod.lengths,e.distanceToCamera,r)>0),!t&&me(e)&&(t=ge(e.silhouette.lod.lengths,e.distanceToCamera,r)>0))}),s);return this._renderers.forEach((e=>{t||(s(e,K.OPAQUE),s(e,K.TRANSPARENT))})),t},getObjectData:e=>this._perObjectData.get(e)}}};function se(e){null!=e&&(e.vao.vertexBuffers.instances.dispose(),e.vao.disposeVAOOnly(),e.vao=null)}function ne(e){let t=null,s=null;for(let n=0;n<e.geometries.length;n++){const o=e.geometries[n];if(o.material.supportsEdges){if(t){if(!r(t,o.transformation))return!1}else t=o.transformation;if(s||null==o.localOrigin){if(null!=s?.localOrigin&&null!=o.localOrigin&&s.localOrigin.id!==o.localOrigin.id)return!1}else s=o}}return!0}e([c({constructOnly:!0})],re.prototype,"rctx",void 0),e([c({constructOnly:!0})],re.prototype,"renderSR",void 0),e([c({constructOnly:!0})],re.prototype,"viewingMode",void 0),e([c({constructOnly:!0})],re.prototype,"techniqueRepository",void 0),e([c({constructOnly:!0})],re.prototype,"setNeedsRender",void 0),e([c({constructOnly:!0})],re.prototype,"schedule",void 0),e([c({readOnly:!0})],re.prototype,"_updatingHandles",void 0),e([c({readOnly:!0})],re.prototype,"updating",null),re=e([l("esri.views.3d.webgl-engine.lib.edgeRendering.EdgeView")],re);class oe{constructor(e,t,r){this.center=t,this.radius=r,this.renderables=new Array,this.loaded=e,this.loaded.then((()=>{null!=this.loaded&&(this.loaded=!0)}))}}class ie{constructor(e,t){this.buffer=e,this.meta=t}}class ae{constructor(e,t){this.vao=e,this.lod=t}}class ce{constructor(e,t){this.modelMatrix=e,this.origin=t}}class le{constructor(e,t,r,s,n,o,i,a){this.regular=e,this.silhouette=t,this.statistics=r,this.transform=s,this.edgeTransparency=n,this.objectTransparency=o,this.components=i,this.rendererKey=a,this.distanceToCamera=0,this.visible=!0}}class de extends le{}function ue(e){return null!=e.regular}class he extends le{}function me(e){return null!=e.silhouette}function ge(e,t,r){const n=t*r,o=s(e,n,!0);return-1===o?n<e[0]?e.length:0:e.length-o}class pe{constructor(e,t,r){this.position=e,this.modelTransform=t,this.origin=r}}const fe=m(),_e=()=>Promise.reject();export{re as EdgeView,ce as LegacyTransform,de as RegularRenderable,le as Renderable,he as SilhouetteRenderable};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../../../chunks/tslib.es6.js";import{removeUnordered as t,filterInPlace as r}from"../../../../../core/arrayUtils.js";import{someMap as s}from"../../../../../core/MapUtils.js";import{nextHighestPowerOfTwo as i}from"../../../../../core/mathUtils.js";import{disposeMaybe as a}from"../../../../../core/maybe.js";import{NestedMap as o}from"../../../../../core/NestedMap.js";import n from"../../../../../core/PooledArray.js";import{property as l}from"../../../../../core/accessorSupport/decorators/property.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/has.js";import{subclass as u}from"../../../../../core/accessorSupport/decorators/subclass.js";import{m as h,i as c,t as f}from"../../../../../chunks/mat4.js";import{a as m}from"../../../../../chunks/mat4f64.js";import{glLayout as d}from"../../../support/buffer/glUtil.js";import{ShaderOutput as g}from"../../core/shaderLibrary/ShaderOutput.js";import{SyncPrepareRenderPlugin as p}from"../../effects/RenderPlugin.js";import{GLMaterials as y}from"../../lib/GLMaterials.js";import{RenderOccludedFlag as _}from"../../lib/Material.js";import{DirtyState as b}from"../../lib/ModelDirtyTypes.js";import{RenderSlot as v}from"../../lib/RenderSlot.js";import{assert as w,setMatrixTranslation3 as C}from"../../lib/Util.js";import{DrawParameters as O}from"../DrawParameters.js";import{WaterMaterial as E}from"../WaterMaterial.js";import{BufferRange as A,mergeAdjacentRanges as B}from"./BufferRange.js";import{Instance as M}from"./Instance.js";import{PerBufferData as D,hasVao as H}from"./PerBufferData.js";import{PerOriginData as j}from"./PerOriginData.js";import{VaoCache as R}from"./VaoCache.js";let S=class extends p{constructor(e){super(e),this._vaoCache=null,this._glMaterials=null,this._bufferWriter=null,this._dataByOrigin=new Map,this._hasHighlights=!1,this._hasOccludees=!1,this.priority=0,this.produces=new Map}dispose(){this._glMaterials=a(this._glMaterials),this._dataByOrigin.forEach((e=>e.dispose())),this._dataByOrigin.clear(),this._vaoCache=a(this._vaoCache)}initializeRenderContext(e,t){const{rctx:r}=e.renderContext;this._glMaterials=new y(this.material,t??e.materialRepository),this._bufferWriter=this.material.createBufferWriter(),this._vaoCache=new R(r,this.material.vertexAttributeLocations,d(this._bufferWriter.vertexBufferLayout))}uninitializeRenderContext(){}get isEmpty(){return 0===this._dataByOrigin.size}get hasHighlights(){return this._hasHighlights}get hasOccludees(){return this._hasOccludees}get hasWater(){return!this.isEmpty&&this.material instanceof E}get isDecoration(){return this.material.parameters.isDecoration}get rendersOccluded(){return!this.isEmpty&&this.material.parameters.renderOccluded!==_.Occlude}get numGeometries(){let e=0;return this._dataByOrigin.forEach((t=>e+=t.buffers.reduce(((e,t)=>e+t.instances.size),0))),e}get usedMemory(){let e=0;return this._dataByOrigin.forEach((t=>e+=t.buffers.reduce(((e,t)=>e+t.vao.memoryUsage),0))),e}forEachGeometry(e){this._dataByOrigin.forEach((t=>t.buffers.forEach((t=>t.instances.forEach((t=>e(t.geometry)))))))}modify(e){this._updateGeometries(e.updates),this._addAndRemoveGeometries(e.adds,e.removes),this._updateDrawCommands()}_updateGeometries(e){const t=this._bufferWriter;if(null===t)return;const r=t.vertexBufferLayout.stride/4;for(const s of e){const e=s.renderGeometry,i=this._dataByOrigin.get(e.localOrigin.id),a=i?.findBuffer(e.id);if(null==a)return;const o=a.instances.get(e.id);if(s.updateType&(b.GEOMETRY|b.TRANSFORMATION)){const s=F(t.elementCount(o.geometry.geometry)*r),i=t.vertexBufferLayout.createView(s.buffer);this._writeGeometry(e,i,0),a.vao.vertexBuffers.geometry.setSubData(s,o.from*r,0,o.numElements*r)}s.updateType&(b.HIGHLIGHT|b.OCCLUDEE|b.VISIBILITY)&&(a.drawCommandsDirty=!0)}}_computeDeltas(e,t){const r=new o;for(const s of e){const e=s.localOrigin;if(null==e)continue;let t=r.get(e.id,null);null==t&&(t=new x(e.vec3),r.set(e.id,null,t)),t.changes.push(s)}for(const s of t){const e=s.localOrigin;if(null==e)continue;const t=this._dataByOrigin.get(e.id),i=t?.findBuffer(s.id);if(null==i)continue;let a=r.get(e.id,i);null==a&&(a=new x(e.vec3),r.set(e.id,i,a)),a.changes.push(s)}return r}_addAndRemoveGeometries(e,r){if(null===this._bufferWriter||null===this._vaoCache)return;const{_bufferWriter:s,_dataByOrigin:i}=this,a=s.vertexBufferLayout.stride/4,o=this._computeDeltas(e,r);o.forEach(((e,r)=>{const n=e.get(null),l=null!=n?n.changes:[];o.delete(r,null);let u=i.get(r);if(e.forEach(((e,n)=>{if(o.delete(r,n),null==n)return void w(!1,"No VAO for removed geometries");if(n.instances.size===e.changes.length)return this._vaoCache.deleteVao(n.vao),t(u.buffers,n),void(0===u.buffers.length&&0===l.length&&i.delete(r));const h=n.numElements,c=n.vao.byteSize/4,f=l.reduce(((e,t)=>e+s.elementCount(t.geometry)),0),m=e.changes.reduce(((e,t)=>e+s.elementCount(t.geometry)),0),d=Math.min((h+f-m)*a,N),g=d>c;d>P&&d<c/2?(e.changes.forEach((({id:e})=>n.deleteInstance(e))),n.instances.forEach((({geometry:e})=>l.push(e))),this._vaoCache.deleteVao(n.vao),t(u.buffers,n)):g?this._applyAndRebuild(n,l,e):this._applyRemoves(n,e)})),l.length>0)for(null==u&&(u=new j(n.origin),i.set(r,u)),u.buffers.forEach((e=>this._applyAdds(e,l)));l.length>0;)u.buffers.push(this._applyAndRebuild(new D,l,null))}))}_updateDrawCommands(){this._hasHighlights=!1,this._hasOccludees=!1,this._dataByOrigin.forEach((e=>{e.buffers.forEach((e=>{e.drawCommandsDirty&&(e.hasHiddenInstances=!1,e.hasHighlights=!1,e.hasOccludees=!1,s(e.instances,(t=>(e.updateDrawState(t),e.hasHiddenInstances&&e.hasHighlights&&e.hasOccludees))),e.updateDrawCommands(this._bufferWriter.vertexBufferLayout.stride)),this._hasHighlights=this._hasHighlights||e.hasHighlights,this._hasOccludees=this._hasOccludees||e.hasOccludees}))}))}_applyAndRebuild(e,t,r){if(null!=r)for(const m of r.changes)e.deleteInstance(m.id);const s=this._bufferWriter,i=s.vertexBufferLayout.stride,a=i/4,o=Math.floor(N/a);let n=e.numElements;for(;t.length>0;){const r=t.pop(),i=s.elementCount(r.geometry);if(n+i>o&&n>0){t.push(r);break}n+=i;const a=new M(r,0,0);w(null==e.instances.get(r.id)),e.addInstance(r.id,a)}const l=n*a,u=F(l),h=s.vertexBufferLayout.createView(u.buffer);let c=0;e.hasHiddenInstances=!1,e.hasHighlights=!1,e.hasOccludees=!1,e.instances.forEach(((t,r)=>{this._writeGeometry(t.geometry,h,c);const i=c;c+=s.elementCount(t.geometry.geometry),e.updateInstance(r,i,c),e.updateDrawState(t)})),this._vaoCache.deleteVao(e.vao),e.vao=this._vaoCache.newVao(q(l)),e.vao.vertexBuffers.geometry.setSubData(u,0,0,c*a),e.holes.clear();const f=e.holes.pushNew();return f.from=c,f.to=Math.floor(e.vao.byteSize/i),e.updateDrawCommands(i),e}_applyRemoves(e,t){if(0===t.changes.length||null===this._bufferWriter)return;for(const o of t.changes){const t=o.id,r=e.instances.get(t);if(!r)continue;e.deleteInstance(t);const s=G.back();if(s){if(s.to===r.from){s.to=r.to;continue}if(s.from===r.to){s.from=r.from;continue}}const i=G.pushNew();i.from=r.from,i.to=r.to}B(G);const r=this._bufferWriter.vertexBufferLayout.stride/4,s=G.reduce(((e,t)=>Math.max(e,t.numElements)),0)*r,i=F(s);i.fill(0,0,s);const a=e.vao.vertexBuffers.geometry;G.forAll((e=>a.setSubData(i,e.from*r,0,e.numElements*r))),e.holes.pushArray(G.data,G.length),G.forAll(((e,t)=>G.data[t]=null)),G.clear(),e.drawCommandsDirty=!0}_applyAdds(e,t){if(0===t.length||null===this._bufferWriter)return;if(!H(e))return void this._applyAndRebuild(e,t,null);const s=this._bufferWriter,i=s.vertexBufferLayout.stride/4,a=e.numElements,o=t.reduce(((e,t)=>e+s.elementCount(t.geometry)),0),n=Math.min((a+o)*i,N),l=4*n;if(e.vao.byteSize<q(N-P)&&l>e.vao.byteSize)return void this._applyAndRebuild(e,t,null);B(e.holes);const u=new Array;for(const r of t){const t=s.elementCount(r.geometry),i=L(e.holes,t);u.push(i)}const h=e.vao.vertexBuffers.geometry;let c=0,f=0,m=0;const d=F(n),g=s.vertexBufferLayout.createView(d.buffer);t.forEach(((t,r)=>{const a=u[r];if(null==a)return;if(!(m===a)){const e=m-f;e>0&&h.setSubData(d,f*i,0,e*i),f=a,c=0}const o=s.elementCount(t.geometry);this._writeGeometry(t,g,c),c+=o,m=a+o;const n=new M(t,a,a+o);w(null==e.instances.get(t.id)),e.addInstance(t.id,n),e.drawCommandsDirty=!0}));const p=m-f;p>0&&h.setSubData(d,f*i,0,p*i),r(t,((e,t)=>null==u[t]))}_writeGeometry(e,t,r){if(null===this._bufferWriter)return;const s=e.localOrigin.vec3;C(I,-s[0],-s[1],-s[2]);const i=h(T,I,e.transformation);c(W,i),f(W,W),this._bufferWriter.write(i,W,e.geometry,t,r)}updateAnimation(e){return this.material.update(e)}prepareTechnique(e){if(!this.material.shouldRender(e))return null;const{output:t,bindParameters:r}=e;if(!this.material.produces(r.slot,t))return null;const s=t===g.Highlight||t===g.ShadowHighlight;if(s&&!this._hasHighlights)return null;const i=t===g.ShadowExcludeHighlight,a=!(s||i);for(const o of this._dataByOrigin.values())for(const n of o.buffers){if(s&&!n.hasHighlights)continue;const o=(s?n.drawCommandsHighlight:i&&n.needsMultipleCommands()?n.drawCommandsShadowHighlightRest:n.drawCommandsDefault)||null,l=a&&n.drawCommandsOccludees||null;if(o?.length||l?.length){const s=this._glMaterials.load(e.rctx,r.slot,t),i=null!=s?s.beginSlot(r):null;if(null!=i)return i}}return null}renderNode(e,t){const{output:r,bindParameters:s}=e,i=r===g.Highlight||r===g.ShadowHighlight,a=r===g.ShadowExcludeHighlight,o=!(i||a),n=e.rctx,l=e.bindParameters.slot===v.OCCLUDER_MATERIAL,u=e.bindParameters.slot===v.TRANSPARENT_OCCLUDER_MATERIAL;n.runAppleAmdDriverHelper(),n.bindTechnique(t,this.material.parameters,s);for(const h of this._dataByOrigin.values())for(const e of h.buffers){if(i&&!e.hasHighlights)continue;const r=(i?e.drawCommandsHighlight:a&&e.needsMultipleCommands()?e.drawCommandsShadowHighlightRest:e.drawCommandsDefault)||null,c=o&&e.drawCommandsOccludees||null;if(r?.length||c?.length){t.program.bindDraw(new O(h.origin),s,this.material.parameters),t.ensureAttributeLocations(e.vao),n.bindVAO(e.vao),r?.length&&(n.setPipelineState(t.getPipeline(!1,l,u)),r.forAll((e=>n.drawArrays(t.primitiveType,e.first,e.count)))),c?.length&&(n.setPipelineState(t.getPipeline(!0,l,u)),c.forAll((e=>n.drawArrays(t.primitiveType,e.first,e.count))))}}}get test(){return{material:this.material,glMaterials:this._glMaterials,dataByOrigin:this._dataByOrigin}}};e([l({constructOnly:!0})],S.prototype,"material",void 0),S=e([u("esri.views.3d.webgl-engine.materials.renderers.MergedRenderer")],S);class x{constructor(e){this.origin=e,this.changes=new Array}}function L(e,t){let r;if(!e.some((e=>!(e.numElements<t)&&(r=e,!0))))return null;const s=r.from;return r.from+=t,r.from>=r.to&&e.removeUnordered(r),s}const I=m(),T=m(),W=m(),G=new n({allocator:e=>e||new A,deallocator:null}),P=65536,V=4*P,U=1024,z=16777216,N=z/4;let k=new Float32Array(P);function F(e){return k.length<e&&(k=new Float32Array(e)),k}function q(e){const t=4*e;return t<=U?U:t<V?i(t):Math.max(Math.min(Math.ceil(1.5*t/V)*V,z),t)}export{S as MergedRenderer};
5
+ import{_ as e}from"../../../../../chunks/tslib.es6.js";import{removeUnordered as t,filterInPlace as r}from"../../../../../core/arrayUtils.js";import{someMap as s}from"../../../../../core/MapUtils.js";import{nextHighestPowerOfTwo as i}from"../../../../../core/mathUtils.js";import{disposeMaybe as a}from"../../../../../core/maybe.js";import{NestedMap as o}from"../../../../../core/NestedMap.js";import n from"../../../../../core/PooledArray.js";import{property as l}from"../../../../../core/accessorSupport/decorators/property.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/has.js";import{subclass as u}from"../../../../../core/accessorSupport/decorators/subclass.js";import{m as h,i as c,t as f}from"../../../../../chunks/mat4.js";import{a as m}from"../../../../../chunks/mat4f64.js";import{glLayout as d}from"../../../support/buffer/glUtil.js";import{ShaderOutput as g}from"../../core/shaderLibrary/ShaderOutput.js";import{SyncPrepareRenderPlugin as p}from"../../effects/RenderPlugin.js";import{GLMaterials as y}from"../../lib/GLMaterials.js";import{RenderOccludedFlag as _}from"../../lib/Material.js";import{DirtyState as b}from"../../lib/ModelDirtyTypes.js";import{RenderSlot as v}from"../../lib/RenderSlot.js";import{assert as w,setMatrixTranslation3 as C}from"../../lib/Util.js";import{DrawParameters as O}from"../DrawParameters.js";import{WaterMaterial as E}from"../WaterMaterial.js";import{BufferRange as A,mergeAdjacentRanges as B}from"./BufferRange.js";import{Instance as M}from"./Instance.js";import{PerBufferData as D,hasVao as H}from"./PerBufferData.js";import{PerOriginData as j}from"./PerOriginData.js";import{VaoCache as R}from"./VaoCache.js";let S=class extends p{constructor(e){super(e),this._vaoCache=null,this._glMaterials=null,this._bufferWriter=null,this._dataByOrigin=new Map,this._hasHighlights=!1,this._hasOccludees=!1,this.priority=0,this.produces=new Map}dispose(){this._glMaterials=a(this._glMaterials),this._dataByOrigin.forEach((e=>e.dispose())),this._dataByOrigin.clear(),this._vaoCache=a(this._vaoCache)}initializeRenderContext(e,t){const{rctx:r}=e.renderContext;this._glMaterials=new y(this.material,t??e.materialRepository),this._bufferWriter=this.material.createBufferWriter(),this._vaoCache=new R(r,this.material.vertexAttributeLocations,d(this._bufferWriter.vertexBufferLayout))}uninitializeRenderContext(){}get isEmpty(){return 0===this._dataByOrigin.size}get hasHighlights(){return this._hasHighlights}get hasOccludees(){return this._hasOccludees}get hasWater(){return!this.isEmpty&&this.material instanceof E}get isDecoration(){return this.material.parameters.isDecoration}get rendersOccluded(){return!this.isEmpty&&this.material.parameters.renderOccluded!==_.Occlude}get numGeometries(){let e=0;return this._dataByOrigin.forEach((t=>e+=t.buffers.reduce(((e,t)=>e+t.instances.size),0))),e}get usedMemory(){let e=0;return this._dataByOrigin.forEach((t=>e+=t.buffers.reduce(((e,t)=>e+t.vao.usedMemory),0))),e}forEachGeometry(e){this._dataByOrigin.forEach((t=>t.buffers.forEach((t=>t.instances.forEach((t=>e(t.geometry)))))))}modify(e){this._updateGeometries(e.updates),this._addAndRemoveGeometries(e.adds,e.removes),this._updateDrawCommands()}_updateGeometries(e){const t=this._bufferWriter;if(null===t)return;const r=t.vertexBufferLayout.stride/4;for(const s of e){const e=s.renderGeometry,i=this._dataByOrigin.get(e.localOrigin.id),a=i?.findBuffer(e.id);if(null==a)return;const o=a.instances.get(e.id);if(s.updateType&(b.GEOMETRY|b.TRANSFORMATION)){const s=F(t.elementCount(o.geometry.geometry)*r),i=t.vertexBufferLayout.createView(s.buffer);this._writeGeometry(e,i,0),a.vao.vertexBuffers.geometry.setSubData(s,o.from*r,0,o.numElements*r)}s.updateType&(b.HIGHLIGHT|b.OCCLUDEE|b.VISIBILITY)&&(a.drawCommandsDirty=!0)}}_computeDeltas(e,t){const r=new o;for(const s of e){const e=s.localOrigin;if(null==e)continue;let t=r.get(e.id,null);null==t&&(t=new x(e.vec3),r.set(e.id,null,t)),t.changes.push(s)}for(const s of t){const e=s.localOrigin;if(null==e)continue;const t=this._dataByOrigin.get(e.id),i=t?.findBuffer(s.id);if(null==i)continue;let a=r.get(e.id,i);null==a&&(a=new x(e.vec3),r.set(e.id,i,a)),a.changes.push(s)}return r}_addAndRemoveGeometries(e,r){if(null===this._bufferWriter||null===this._vaoCache)return;const{_bufferWriter:s,_dataByOrigin:i}=this,a=s.vertexBufferLayout.stride/4,o=this._computeDeltas(e,r);o.forEach(((e,r)=>{const n=e.get(null),l=null!=n?n.changes:[];o.delete(r,null);let u=i.get(r);if(e.forEach(((e,n)=>{if(o.delete(r,n),null==n)return void w(!1,"No VAO for removed geometries");if(n.instances.size===e.changes.length)return this._vaoCache.deleteVao(n.vao),t(u.buffers,n),void(0===u.buffers.length&&0===l.length&&i.delete(r));const h=n.numElements,c=n.vao.byteSize/4,f=l.reduce(((e,t)=>e+s.elementCount(t.geometry)),0),m=e.changes.reduce(((e,t)=>e+s.elementCount(t.geometry)),0),d=Math.min((h+f-m)*a,U),g=d>c;d>P&&d<c/2?(e.changes.forEach((({id:e})=>n.deleteInstance(e))),n.instances.forEach((({geometry:e})=>l.push(e))),this._vaoCache.deleteVao(n.vao),t(u.buffers,n)):g?this._applyAndRebuild(n,l,e):this._applyRemoves(n,e)})),l.length>0)for(null==u&&(u=new j(n.origin),i.set(r,u)),u.buffers.forEach((e=>this._applyAdds(e,l)));l.length>0;)u.buffers.push(this._applyAndRebuild(new D,l,null))}))}_updateDrawCommands(){this._hasHighlights=!1,this._hasOccludees=!1,this._dataByOrigin.forEach((e=>{e.buffers.forEach((e=>{e.drawCommandsDirty&&(e.hasHiddenInstances=!1,e.hasHighlights=!1,e.hasOccludees=!1,s(e.instances,(t=>(e.updateDrawState(t),e.hasHiddenInstances&&e.hasHighlights&&e.hasOccludees))),e.updateDrawCommands(this._bufferWriter.vertexBufferLayout.stride)),this._hasHighlights=this._hasHighlights||e.hasHighlights,this._hasOccludees=this._hasOccludees||e.hasOccludees}))}))}_applyAndRebuild(e,t,r){if(null!=r)for(const m of r.changes)e.deleteInstance(m.id);const s=this._bufferWriter,i=s.vertexBufferLayout.stride,a=i/4,o=Math.floor(U/a);let n=e.numElements;for(;t.length>0;){const r=t.pop(),i=s.elementCount(r.geometry);if(n+i>o&&n>0){t.push(r);break}n+=i;const a=new M(r,0,0);w(null==e.instances.get(r.id)),e.addInstance(r.id,a)}const l=n*a,u=F(l),h=s.vertexBufferLayout.createView(u.buffer);let c=0;e.hasHiddenInstances=!1,e.hasHighlights=!1,e.hasOccludees=!1,e.instances.forEach(((t,r)=>{this._writeGeometry(t.geometry,h,c);const i=c;c+=s.elementCount(t.geometry.geometry),e.updateInstance(r,i,c),e.updateDrawState(t)})),this._vaoCache.deleteVao(e.vao),e.vao=this._vaoCache.newVao(q(l)),e.vao.vertexBuffers.geometry.setSubData(u,0,0,c*a),e.holes.clear();const f=e.holes.pushNew();return f.from=c,f.to=Math.floor(e.vao.byteSize/i),e.updateDrawCommands(i),e}_applyRemoves(e,t){if(0===t.changes.length||null===this._bufferWriter)return;for(const o of t.changes){const t=o.id,r=e.instances.get(t);if(!r)continue;e.deleteInstance(t);const s=G.back();if(s){if(s.to===r.from){s.to=r.to;continue}if(s.from===r.to){s.from=r.from;continue}}const i=G.pushNew();i.from=r.from,i.to=r.to}B(G);const r=this._bufferWriter.vertexBufferLayout.stride/4,s=G.reduce(((e,t)=>Math.max(e,t.numElements)),0)*r,i=F(s);i.fill(0,0,s);const a=e.vao.vertexBuffers.geometry;G.forAll((e=>a.setSubData(i,e.from*r,0,e.numElements*r))),e.holes.pushArray(G.data,G.length),G.forAll(((e,t)=>G.data[t]=null)),G.clear(),e.drawCommandsDirty=!0}_applyAdds(e,t){if(0===t.length||null===this._bufferWriter)return;if(!H(e))return void this._applyAndRebuild(e,t,null);const s=this._bufferWriter,i=s.vertexBufferLayout.stride/4,a=e.numElements,o=t.reduce(((e,t)=>e+s.elementCount(t.geometry)),0),n=Math.min((a+o)*i,U),l=4*n;if(e.vao.byteSize<q(U-P)&&l>e.vao.byteSize)return void this._applyAndRebuild(e,t,null);B(e.holes);const u=new Array;for(const r of t){const t=s.elementCount(r.geometry),i=L(e.holes,t);u.push(i)}const h=e.vao.vertexBuffers.geometry;let c=0,f=0,m=0;const d=F(n),g=s.vertexBufferLayout.createView(d.buffer);t.forEach(((t,r)=>{const a=u[r];if(null==a)return;if(!(m===a)){const e=m-f;e>0&&h.setSubData(d,f*i,0,e*i),f=a,c=0}const o=s.elementCount(t.geometry);this._writeGeometry(t,g,c),c+=o,m=a+o;const n=new M(t,a,a+o);w(null==e.instances.get(t.id)),e.addInstance(t.id,n),e.drawCommandsDirty=!0}));const p=m-f;p>0&&h.setSubData(d,f*i,0,p*i),r(t,((e,t)=>null==u[t]))}_writeGeometry(e,t,r){if(null===this._bufferWriter)return;const s=e.localOrigin.vec3;C(I,-s[0],-s[1],-s[2]);const i=h(T,I,e.transformation);c(W,i),f(W,W),this._bufferWriter.write(i,W,e.geometry,t,r)}updateAnimation(e){return this.material.update(e)}prepareTechnique(e){if(!this.material.shouldRender(e))return null;const{output:t,bindParameters:r}=e;if(!this.material.produces(r.slot,t))return null;const s=t===g.Highlight||t===g.ShadowHighlight;if(s&&!this._hasHighlights)return null;const i=t===g.ShadowExcludeHighlight,a=!(s||i);for(const o of this._dataByOrigin.values())for(const n of o.buffers){if(s&&!n.hasHighlights)continue;const o=(s?n.drawCommandsHighlight:i&&n.needsMultipleCommands()?n.drawCommandsShadowHighlightRest:n.drawCommandsDefault)||null,l=a&&n.drawCommandsOccludees||null;if(o?.length||l?.length){const s=this._glMaterials.load(e.rctx,r.slot,t),i=null!=s?s.beginSlot(r):null;if(null!=i)return i}}return null}renderNode(e,t){const{output:r,bindParameters:s}=e,i=r===g.Highlight||r===g.ShadowHighlight,a=r===g.ShadowExcludeHighlight,o=!(i||a),n=e.rctx,l=e.bindParameters.slot===v.OCCLUDER_MATERIAL,u=e.bindParameters.slot===v.TRANSPARENT_OCCLUDER_MATERIAL;n.runAppleAmdDriverHelper(),n.bindTechnique(t,this.material.parameters,s);for(const h of this._dataByOrigin.values())for(const e of h.buffers){if(i&&!e.hasHighlights)continue;const r=(i?e.drawCommandsHighlight:a&&e.needsMultipleCommands()?e.drawCommandsShadowHighlightRest:e.drawCommandsDefault)||null,c=o&&e.drawCommandsOccludees||null;if(r?.length||c?.length){t.program.bindDraw(new O(h.origin),s,this.material.parameters),t.ensureAttributeLocations(e.vao),n.bindVAO(e.vao),r?.length&&(n.setPipelineState(t.getPipeline(!1,l,u)),r.forAll((e=>n.drawArrays(t.primitiveType,e.first,e.count)))),c?.length&&(n.setPipelineState(t.getPipeline(!0,l,u)),c.forAll((e=>n.drawArrays(t.primitiveType,e.first,e.count))))}}}get test(){return{material:this.material,glMaterials:this._glMaterials,dataByOrigin:this._dataByOrigin}}};e([l({constructOnly:!0})],S.prototype,"material",void 0),S=e([u("esri.views.3d.webgl-engine.materials.renderers.MergedRenderer")],S);class x{constructor(e){this.origin=e,this.changes=new Array}}function L(e,t){let r;if(!e.some((e=>!(e.numElements<t)&&(r=e,!0))))return null;const s=r.from;return r.from+=t,r.from>=r.to&&e.removeUnordered(r),s}const I=m(),T=m(),W=m(),G=new n({allocator:e=>e||new A,deallocator:null}),P=65536,V=4*P,z=1024,N=16777216,U=N/4;let k=new Float32Array(P);function F(e){return k.length<e&&(k=new Float32Array(e)),k}function q(e){const t=4*e;return t<=z?z:t<V?i(t):Math.max(Math.min(Math.ceil(1.5*t/V)*V,N),t)}export{S as MergedRenderer};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import"../../../../chunks/vec4.js";import"../../../../chunks/vec4f64.js";import"../core/shaderModules/Float4PassUniform.js";import"../core/shaderModules/interfaces.js";import"../core/shaderModules/ShaderBuilder.js";import"../core/shaderModules/Texture2DPassUniform.js";import"../lib/VertexAttribute.js";export{b as build}from"../../../../chunks/HighlightApply.glsl.js";
5
+ import"../../../../chunks/vec4.js";import"../../../../chunks/vec4f64.js";import"../core/shaderModules/Float2PassUniform.js";import"../core/shaderModules/Float4PassUniform.js";import"../core/shaderModules/interfaces.js";import"../core/shaderModules/ShaderBuilder.js";import"../core/shaderModules/Texture2DPassUniform.js";import"../lib/VertexAttribute.js";import"../../../../chunks/HighlightDownsample.glsl.js";export{b as build}from"../../../../chunks/HighlightApply.glsl.js";
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import"../../../../chunks/vec2f64.js";import"../core/shaderModules/Float2DrawUniform.js";import"../core/shaderModules/interfaces.js";import"../core/shaderModules/ShaderBuilder.js";import"../core/shaderModules/Texture2DDrawUniform.js";import"../core/shaderModules/Texture2DPassUniform.js";import"../lib/VertexAttribute.js";export{H as HighlightBlurDrawParameters,b as build}from"../../../../chunks/HighlightBlur.glsl.js";
5
+ import"../../../../chunks/vec2f64.js";import"../core/shaderModules/Float2DrawUniform.js";import"../core/shaderModules/Float2PassUniform.js";import"../core/shaderModules/interfaces.js";import"../core/shaderModules/ShaderBuilder.js";import"../core/shaderModules/Texture2DDrawUniform.js";import"../core/shaderModules/Texture2DPassUniform.js";import"../lib/VertexAttribute.js";export{H as HighlightBlurDrawParameters,b as build}from"../../../../chunks/HighlightBlur.glsl.js";
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import"../core/shaderLibrary/ScreenSpacePass.glsl.js";import"../core/shaderModules/interfaces.js";import"../core/shaderModules/ShaderBuilder.js";import"../core/shaderModules/Texture2DDrawUniform.js";export{H as HighlightDownsampleDrawParameters,b as build,g as gridCellPixelSize}from"../../../../chunks/HighlightDownsample.glsl.js";
5
+ import"../core/shaderLibrary/ScreenSpacePass.glsl.js";import"../core/shaderModules/interfaces.js";import"../core/shaderModules/ShaderBuilder.js";import"../core/shaderModules/Texture2DDrawUniform.js";export{H as HighlightDownsampleDrawParameters,b as blurSize,c as build,g as gridCellPixelSize,o as outlineSize}from"../../../../chunks/HighlightDownsample.glsl.js";
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../../chunks/tslib.es6.js";import e from"../../Color.js";import s from"../../core/Accessor.js";import{createTask as o}from"../../core/asyncUtils.js";import{multiplyOpacity as r,getContrast as i}from"../../core/colorUtils.js";import{makeHandle as n}from"../../core/handleUtils.js";import{throwIfAborted as l}from"../../core/promiseUtils.js";import{formatLength as a}from"../../core/quantityFormatUtils.js";import{watch as c,on as p}from"../../core/reactiveUtils.js";import{createScreenPointArray as h}from"../../core/screenUtils.js";import{property as d}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as m}from"../../core/accessorSupport/decorators/subclass.js";import{k as u,s as b,e as f,a as g,l as x,i as _}from"../../chunks/vec2.js";import{a as y}from"../../chunks/vec2f64.js";import{G as v}from"../../chunks/vec3.js";import{isClockwise as j}from"../../geometry/support/coordsUtils.js";import{fetchMessageBundle as I}from"../../intl/messages.js";import{getGeometryEffectiveElevationMode as U}from"../../support/elevationInfoUtils.js";import{getDefaultUnitForView as L}from"../../support/getDefaultUnitForView.js";import C from"../overlay/TextOverlayItem.js";import{autoDirectDistanceByElevationMode as k}from"../support/automaticLengthMeasurementUtils.js";const S=3025,D={default:15,far:25};let w=class extends s{constructor(t){super(t),this.context=null,this.stagedVertex=null,this.visible=!0,this.edgeDistance="default",this._messagesUnits=null,this._labelInfos=[],this._nextLabelIndex=0}initialize(){const t=o((async t=>{const e=await I("esri/core/t9n/Units");l(t),this._messagesUnits=e}));this.addHandles([c((()=>[null!=this.context&&this.getCameraOrExtent(this.context),this.visible,this._edgeDistancePixels,this.stagedVertex,this._messagesUnits]),(()=>this._update())),...["vertex-add","vertex-update","vertex-remove"].map((t=>p((()=>this.context?.editGeometryOperations),t,(()=>this._update())))),n((()=>t.abort())),c((()=>this._colors),(t=>this._updateStyle(t)))])}destroy(){for(this._nextLabelIndex=0;this._labelInfos.length;)this._destroyLabel(this._labelInfos.pop())}get updating(){return null==this._messagesUnits}get test(){return{labelContents:this._labelInfos.slice(0,this._nextLabelIndex).map((t=>t.label.text))}}get _edgeDistancePixels(){return D[this.edgeDistance]}get _colors(){const t=this.context?.view.effectiveTheme.textColor??e.fromArray([255,255,255]);return{textColor:t,backgroundColor:r(i(t),.6)}}_update(){if(this.destroyed)return;this._nextLabelIndex=0;const t=this.context;if(null==t)return void this._destroyUnusedLabels();const{components:e,geometry:s,coordinateHelper:o}=t.editGeometryOperations.data;if(!s)return void this._destroyUnusedLabels();const r=e.length;for(let i=0;i<r;++i){const n=[];if(e[i].iterateVertices((t=>{n.push(o.toXYZ(t.pos))})),0===i&&null!=this.stagedVertex&&n.push(o.toXYZ(this.stagedVertex)),n.length<2)continue;const l=n[0],a=n[n.length-1];"polygon"===s.type&&n.length>2&&!v(l,a)&&n.push(l);const c=1===r&&!j(n);let p=P,h=G;this.toScreenPointArray(t,l,p);for(let e=1;e<n.length;++e){const s=n[e-1],o=n[e];this.toScreenPointArray(t,o,h),this._addLabel(t,s,p,o,h,c),[p,h]=[h,p]}}this._destroyUnusedLabels()}_updateStyle({textColor:t,backgroundColor:e}){const s=this._nextLabelIndex,o=this._labelInfos;for(let r=0;r<s;++r){const{label:s}=o[r];s.textColor=t,s.backgroundColor=e}}_addLabel(t,e,s,o,r,i){const{label:n}=this._getOrCreateLabel(t);if(!this.visible||u(s,r)<S)return void(n.visible=!1);const l=null!=t.graphicState?t.graphicState.isDraped?"on-the-ground":"absolute-height":U(t.editGeometryOperations.data.geometry,t.elevationInfo),{spatialReference:c}=t.editGeometryOperations.data,p=k(e,o,c,l),h=this._messagesUnits,d=L(t.view);n.text=null!=h&&null!=p?a(h,p,d):"",n.visible=!0;const m=r[0]-s[0],y=r[1]-s[1];i?b(O,-y,m):b(O,y,-m),f(O,O),g(O,O,this._edgeDistancePixels),x(V,s,r,.5),_(V,V,O),n.position=[V[0],V[1]],Math.abs(O[0])>Math.abs(O[1])?n.anchor=O[0]>0?"left":"right":n.anchor=-O[1]<0?"top":"bottom"}_getOrCreateLabel(t){const e=this._labelInfos.length>this._nextLabelIndex,{textColor:s,backgroundColor:o}=this._colors;if(e){const t=this._labelInfos[this._nextLabelIndex++],{label:e}=t;return e.textColor=s,e.backgroundColor=o,t}const r=new C({anchor:"center",fontSize:10,textColor:s,backgroundColor:o});t.view.overlay?.items.add(r);const i={label:r};return this._labelInfos.push(i),this._nextLabelIndex=this._labelInfos.length,i}_destroyUnusedLabels(){for(;this._labelInfos.length>this._nextLabelIndex;)this._destroyLabel(this._labelInfos.pop())}_destroyLabel({label:t}){this.context?.view.overlay?.items.remove(t),t.destroy()}};t([d()],w.prototype,"context",void 0),t([d()],w.prototype,"stagedVertex",void 0),t([d()],w.prototype,"visible",void 0),t([d()],w.prototype,"edgeDistance",void 0),t([d()],w.prototype,"updating",null),t([d()],w.prototype,"_messagesUnits",void 0),t([d()],w.prototype,"_edgeDistancePixels",null),t([d()],w.prototype,"_colors",null),w=t([m("esri.views.interactive")],w);const O=y(),V=y(),P=h(),G=h();export{w as SegmentLabels};
5
+ import{_ as t}from"../../chunks/tslib.es6.js";import e from"../../Color.js";import s from"../../core/Accessor.js";import{createTask as o}from"../../core/asyncUtils.js";import{multiplyOpacity as r,getContrast as i,BrightnessThreshold as n}from"../../core/colorUtils.js";import{makeHandle as l}from"../../core/handleUtils.js";import{throwIfAborted as a}from"../../core/promiseUtils.js";import{formatLength as c}from"../../core/quantityFormatUtils.js";import{watch as p,on as h}from"../../core/reactiveUtils.js";import{createScreenPointArray as d}from"../../core/screenUtils.js";import{property as m}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as u}from"../../core/accessorSupport/decorators/subclass.js";import{k as b,s as f,e as g,a as x,l as _,i as y}from"../../chunks/vec2.js";import{a as v}from"../../chunks/vec2f64.js";import{G as j}from"../../chunks/vec3.js";import{isClockwise as I}from"../../geometry/support/coordsUtils.js";import{fetchMessageBundle as U}from"../../intl/messages.js";import{getGeometryEffectiveElevationMode as L}from"../../support/elevationInfoUtils.js";import{getDefaultUnitForView as C}from"../../support/getDefaultUnitForView.js";import k from"../overlay/TextOverlayItem.js";import{autoDirectDistanceByElevationMode as S}from"../support/automaticLengthMeasurementUtils.js";const w=3025,D={default:15,far:25};let O=class extends s{constructor(t){super(t),this.context=null,this.stagedVertex=null,this.visible=!0,this.edgeDistance="default",this._messagesUnits=null,this._labelInfos=[],this._nextLabelIndex=0}initialize(){const t=o((async t=>{const e=await U("esri/core/t9n/Units");a(t),this._messagesUnits=e}));this.addHandles([p((()=>[null!=this.context&&this.getCameraOrExtent(this.context),this.visible,this._edgeDistancePixels,this.stagedVertex,this._messagesUnits]),(()=>this._update())),...["vertex-add","vertex-update","vertex-remove"].map((t=>h((()=>this.context?.editGeometryOperations),t,(()=>this._update())))),l((()=>t.abort())),p((()=>this._colors),(t=>this._updateStyle(t)))])}destroy(){for(this._nextLabelIndex=0;this._labelInfos.length;)this._destroyLabel(this._labelInfos.pop())}get updating(){return null==this._messagesUnits}get test(){return{labelContents:this._labelInfos.slice(0,this._nextLabelIndex).map((t=>t.label.text))}}get _edgeDistancePixels(){return D[this.edgeDistance]}get _colors(){const t=this.context?.view.effectiveTheme.textColor??e.fromArray([255,255,255]);return{textColor:t,backgroundColor:r(i(t,n.Low),.6)}}_update(){if(this.destroyed)return;this._nextLabelIndex=0;const t=this.context;if(null==t)return void this._destroyUnusedLabels();const{components:e,geometry:s,coordinateHelper:o}=t.editGeometryOperations.data;if(!s)return void this._destroyUnusedLabels();const r=e.length;for(let i=0;i<r;++i){const n=[];if(e[i].iterateVertices((t=>{n.push(o.toXYZ(t.pos))})),0===i&&null!=this.stagedVertex&&n.push(o.toXYZ(this.stagedVertex)),n.length<2)continue;const l=n[0],a=n[n.length-1];"polygon"===s.type&&n.length>2&&!j(l,a)&&n.push(l);const c=1===r&&!I(n);let p=G,h=A;this.toScreenPointArray(t,l,p);for(let e=1;e<n.length;++e){const s=n[e-1],o=n[e];this.toScreenPointArray(t,o,h),this._addLabel(t,s,p,o,h,c),[p,h]=[h,p]}}this._destroyUnusedLabels()}_updateStyle({textColor:t,backgroundColor:e}){const s=this._nextLabelIndex,o=this._labelInfos;for(let r=0;r<s;++r){const{label:s}=o[r];s.textColor=t,s.backgroundColor=e}}_addLabel(t,e,s,o,r,i){const{label:n}=this._getOrCreateLabel(t);if(!this.visible||b(s,r)<w)return void(n.visible=!1);const l=null!=t.graphicState?t.graphicState.isDraped?"on-the-ground":"absolute-height":L(t.editGeometryOperations.data.geometry,t.elevationInfo),{spatialReference:a}=t.editGeometryOperations.data,p=S(e,o,a,l),h=this._messagesUnits,d=C(t.view);n.text=null!=h&&null!=p?c(h,p,d):"",n.visible=!0;const m=r[0]-s[0],u=r[1]-s[1];i?f(V,-u,m):f(V,u,-m),g(V,V),x(V,V,this._edgeDistancePixels),_(P,s,r,.5),y(P,P,V),n.position=[P[0],P[1]],Math.abs(V[0])>Math.abs(V[1])?n.anchor=V[0]>0?"left":"right":n.anchor=-V[1]<0?"top":"bottom"}_getOrCreateLabel(t){const e=this._labelInfos.length>this._nextLabelIndex,{textColor:s,backgroundColor:o}=this._colors;if(e){const t=this._labelInfos[this._nextLabelIndex++],{label:e}=t;return e.textColor=s,e.backgroundColor=o,t}const r=new k({anchor:"center",fontSize:10,textColor:s,backgroundColor:o});t.view.overlay?.items.add(r);const i={label:r};return this._labelInfos.push(i),this._nextLabelIndex=this._labelInfos.length,i}_destroyUnusedLabels(){for(;this._labelInfos.length>this._nextLabelIndex;)this._destroyLabel(this._labelInfos.pop())}_destroyLabel({label:t}){this.context?.view.overlay?.items.remove(t),t.destroy()}};t([m()],O.prototype,"context",void 0),t([m()],O.prototype,"stagedVertex",void 0),t([m()],O.prototype,"visible",void 0),t([m()],O.prototype,"edgeDistance",void 0),t([m()],O.prototype,"updating",null),t([m()],O.prototype,"_messagesUnits",void 0),t([m()],O.prototype,"_edgeDistancePixels",null),t([m()],O.prototype,"_colors",null),O=t([u("esri.views.interactive")],O);const V=v(),P=v(),G=d(),A=d();export{O as SegmentLabels};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../../chunks/tslib.es6.js";import e from"../../Color.js";import o from"../../core/Accessor.js";import{property as i}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as r}from"../../core/accessorSupport/decorators/subclass.js";import"../../libs/maquette/projection.js";import{h as s}from"../../libs/maquette/h.js";import"../../libs/maquette/projector.js";const l={bottom:"esri-text-overlay-item-anchor-bottom","bottom-right":"esri-text-overlay-item-anchor-bottom-right","bottom-left":"esri-text-overlay-item-anchor-bottom-left",top:"esri-text-overlay-item-anchor-top","top-right":"esri-text-overlay-item-anchor-top-right","top-left":"esri-text-overlay-item-anchor-top-left",center:"esri-text-overlay-item-anchor-center",right:"esri-text-overlay-item-anchor-right",left:"esri-text-overlay-item-anchor-left"};let n=class extends o{get position(){return[this.x,this.y]}set position(t){this._set("x",t[0]),this._set("y",t[1])}get _textShadowColor(){return this.backgroundColor}get _textShadow(){const t=this._textShadowColor.toCss(!1);return`0 0 ${this._textShadowSize}px ${t}`}get _padding(){return.5*this.fontSize}get _borderRadius(){return this._padding}constructor(t){super(t),this.x=0,this.y=0,this.text="-",this.fontSize=14,this.anchor="center",this.visible=!0,this.isDecoration=!0,this.backgroundColor=new e([0,0,0,.6]),this.textColor=new e([255,255,255]),this._textShadowSize=1}render(){return s("div",{classes:this._cssClasses(),styles:{left:Math.floor(this.x)+"px",top:Math.floor(this.y)+"px",visibility:this.visible?"visible":"hidden",fontSize:this.fontSize+"px",lineHeight:this.fontSize+"px",backgroundColor:this.backgroundColor.toCss(!0),color:this.textColor.toCss(!0),padding:this._padding+"px",borderRadius:this._borderRadius+"px",textShadow:this._textShadow}},[this.text])}renderCanvas(t){if(!this.visible)return;const e=t.font.replace(/^(.*?)px/,"");t.font=`${this.fontSize}px ${e}`;const o=this._padding,i=this._borderRadius,r=t.measureText(this.text).width,s=this.fontSize,l=h[this.anchor];t.textAlign="center",t.textBaseline="middle";const n=r+2*o,a=s+2*o,x=this.x+l.x*n,p=this.y+l.y*a;this._roundedRect(t,x,p,n,a,i),t.fillStyle=this.backgroundColor.toCss(!0),t.fill();const d=this.x+(l.x+.5)*n,c=this.y+(l.y+.5)*a;this._renderTextShadow(t,this.text,d,c),t.fillStyle=this.textColor.toCss(!0),t.fillText(this.text,d,c)}_renderTextShadow(t,e,o,i){t.lineJoin="miter",t.fillStyle=`rgba(${this._textShadowColor.r}, ${this._textShadowColor.g}, ${this._textShadowColor.b}, ${1/a.length})`;const r=this._textShadowSize;for(const[s,l]of a)t.fillText(e,o+r*s,i+r*l)}_roundedRect(t,e,o,i,r,s){t.beginPath(),t.moveTo(e,o+s),t.arcTo(e,o,e+s,o,s),t.lineTo(e+i-s,o),t.arcTo(e+i,o,e+i,o+s,s),t.lineTo(e+i,o+r-s),t.arcTo(e+i,o+r,e+i-s,o+r,s),t.lineTo(e+s,o+r),t.arcTo(e,o+r,e,o+r-s,s),t.closePath()}_cssClasses(){const t={"esri-text-overlay-item":!0};let e;for(e in l)t[l[e]]=this.anchor===e;return t}};t([i()],n.prototype,"x",void 0),t([i()],n.prototype,"y",void 0),t([i()],n.prototype,"position",null),t([i()],n.prototype,"text",void 0),t([i()],n.prototype,"fontSize",void 0),t([i()],n.prototype,"anchor",void 0),t([i()],n.prototype,"visible",void 0),t([i()],n.prototype,"isDecoration",void 0),t([i()],n.prototype,"backgroundColor",void 0),t([i()],n.prototype,"textColor",void 0),t([i()],n.prototype,"_textShadowSize",void 0),t([i()],n.prototype,"_textShadowColor",null),t([i()],n.prototype,"_textShadow",null),t([i()],n.prototype,"_padding",null),t([i()],n.prototype,"_borderRadius",null),n=t([r("esri.views.overlay.TextOverlayItem")],n);const h={bottom:{x:-.5,y:-1,textAlign:"center",textBaseline:"bottom"},"bottom-left":{x:0,y:-1,textAlign:"left",textBaseline:"bottom"},"bottom-right":{x:-1,y:-1,textAlign:"right",textBaseline:"bottom"},center:{x:-.5,y:-.5,textAlign:"center",textBaseline:"middle"},left:{x:0,y:-.5,textAlign:"left",textBaseline:"middle"},right:{x:-1,y:-.5,textAlign:"right",textBaseline:"middle"},top:{x:-.5,y:0,textAlign:"center",textBaseline:"top"},"top-left":{x:0,y:0,textAlign:"left",textBaseline:"top"},"top-right":{x:-1,y:0,textAlign:"right",textBaseline:"top"}},a=[];{const t=16;for(let e=0;e<360;e+=360/t)a.push([Math.cos(Math.PI*e/180),Math.sin(Math.PI*e/180)])}const x=n;export{x as default};
5
+ import{_ as t}from"../../chunks/tslib.es6.js";import e from"../../Color.js";import o from"../../core/Accessor.js";import{property as i}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as r}from"../../core/accessorSupport/decorators/subclass.js";import"../../libs/maquette/projection.js";import{h as s}from"../../libs/maquette/h.js";import"../../libs/maquette/projector.js";const l={bottom:"esri-text-overlay-item-anchor-bottom","bottom-right":"esri-text-overlay-item-anchor-bottom-right","bottom-left":"esri-text-overlay-item-anchor-bottom-left",top:"esri-text-overlay-item-anchor-top","top-right":"esri-text-overlay-item-anchor-top-right","top-left":"esri-text-overlay-item-anchor-top-left",center:"esri-text-overlay-item-anchor-center",right:"esri-text-overlay-item-anchor-right",left:"esri-text-overlay-item-anchor-left"};let n=class extends o{get position(){return[this.x,this.y]}set position(t){this._set("x",t[0]),this._set("y",t[1])}get _textShadowColor(){const{textColor:t,backgroundColor:e}=this,o=e.clone();return o.a*=t.a,o}get _textShadow(){const t=this._textShadowColor.toCss(!0);return`0 0 ${this._textShadowSize}px ${t}`}get _padding(){return.5*this.fontSize}get _borderRadius(){return this._padding}constructor(t){super(t),this.x=0,this.y=0,this.text="-",this.fontSize=14,this.anchor="center",this.visible=!0,this.isDecoration=!0,this.backgroundColor=new e([0,0,0,.6]),this.textColor=new e([255,255,255]),this._textShadowSize=1}render(){return s("div",{classes:this._cssClasses(),styles:{left:Math.floor(this.x)+"px",top:Math.floor(this.y)+"px",visibility:this.visible?"visible":"hidden",fontSize:this.fontSize+"px",lineHeight:this.fontSize+"px",backgroundColor:this.backgroundColor.toCss(!0),color:this.textColor.toCss(!0),padding:this._padding+"px",borderRadius:this._borderRadius+"px",textShadow:this._textShadow}},[this.text])}renderCanvas(t){if(!this.visible)return;const e=t.font.replace(/^(.*?)px/,"");t.font=`${this.fontSize}px ${e}`;const o=this._padding,i=this._borderRadius,r=t.measureText(this.text).width,s=this.fontSize,l=h[this.anchor];t.textAlign="center",t.textBaseline="middle";const n=r+2*o,a=s+2*o,x=this.x+l.x*n,p=this.y+l.y*a;this._roundedRect(t,x,p,n,a,i),t.fillStyle=this.backgroundColor.toCss(!0),t.fill();const c=this.x+(l.x+.5)*n,d=this.y+(l.y+.5)*a;this._renderTextShadow(t,this.text,c,d),t.fillStyle=this.textColor.toCss(!0),t.fillText(this.text,c,d)}_renderTextShadow(t,e,o,i){t.lineJoin="miter",t.fillStyle=`rgba(${this._textShadowColor.r}, ${this._textShadowColor.g}, ${this._textShadowColor.b}, ${1/a.length})`;const r=this._textShadowSize;for(const[s,l]of a)t.fillText(e,o+r*s,i+r*l)}_roundedRect(t,e,o,i,r,s){t.beginPath(),t.moveTo(e,o+s),t.arcTo(e,o,e+s,o,s),t.lineTo(e+i-s,o),t.arcTo(e+i,o,e+i,o+s,s),t.lineTo(e+i,o+r-s),t.arcTo(e+i,o+r,e+i-s,o+r,s),t.lineTo(e+s,o+r),t.arcTo(e,o+r,e,o+r-s,s),t.closePath()}_cssClasses(){const t={"esri-text-overlay-item":!0};let e;for(e in l)t[l[e]]=this.anchor===e;return t}};t([i()],n.prototype,"x",void 0),t([i()],n.prototype,"y",void 0),t([i()],n.prototype,"position",null),t([i()],n.prototype,"text",void 0),t([i()],n.prototype,"fontSize",void 0),t([i()],n.prototype,"anchor",void 0),t([i()],n.prototype,"visible",void 0),t([i()],n.prototype,"isDecoration",void 0),t([i()],n.prototype,"backgroundColor",void 0),t([i()],n.prototype,"textColor",void 0),t([i()],n.prototype,"_textShadowSize",void 0),t([i()],n.prototype,"_textShadowColor",null),t([i()],n.prototype,"_textShadow",null),t([i()],n.prototype,"_padding",null),t([i()],n.prototype,"_borderRadius",null),n=t([r("esri.views.overlay.TextOverlayItem")],n);const h={bottom:{x:-.5,y:-1,textAlign:"center",textBaseline:"bottom"},"bottom-left":{x:0,y:-1,textAlign:"left",textBaseline:"bottom"},"bottom-right":{x:-1,y:-1,textAlign:"right",textBaseline:"bottom"},center:{x:-.5,y:-.5,textAlign:"center",textBaseline:"middle"},left:{x:0,y:-.5,textAlign:"left",textBaseline:"middle"},right:{x:-1,y:-.5,textAlign:"right",textBaseline:"middle"},top:{x:-.5,y:0,textAlign:"center",textBaseline:"top"},"top-left":{x:0,y:0,textAlign:"left",textBaseline:"top"},"top-right":{x:-1,y:0,textAlign:"right",textBaseline:"top"}},a=[];{const t=16;for(let e=0;e<360;e+=360/t)a.push([Math.cos(Math.PI*e/180),Math.sin(Math.PI*e/180)])}const x=n;export{x 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.28/esri/copyright.txt for details.
4
4
  */
5
- import t from"../../core/Logger.js";import{disposeMaybe as e}from"../../core/maybe.js";import{typedArrayStaticSize as i}from"../../core/typedArrayUtil.js";import{ResourceType as r}from"./enums.js";import{bindVertexBufferLayout as s,unbindVertexBufferLayout as n}from"./Util.js";const o=t.getLogger("esri.views.webgl.VertexArrayObject");let f=class{constructor(t,e,i,r,s=null){this._context=t,this._locations=e,this._layout=i,this._buffers=r,this._indexBuffer=s,this._glName=null,this._initialized=!1}get glName(){return this._glName}get context(){return this._context}get vertexBuffers(){return this._buffers}get indexBuffer(){return this._indexBuffer}get byteSize(){return Object.keys(this._buffers).reduce(((t,e)=>t+this._buffers[e].byteLength),null!=this._indexBuffer?this._indexBuffer.byteLength:0)}get layout(){return this._layout}get locations(){return this._locations}get memoryUsage(){return this.byteSize+(Object.keys(this._buffers).length+(this._indexBuffer?1:0))*i}dispose(){if(this._context){this._context.getBoundVAO()===this&&this._context.bindVAO(null);for(const t in this._buffers)this._buffers[t]?.dispose(),delete this._buffers[t];this._indexBuffer=e(this._indexBuffer),this.disposeVAOOnly()}else(this._glName||Object.getOwnPropertyNames(this._buffers).length>0)&&o.warn("Leaked WebGL VAO")}disposeVAOOnly(){if(this._glName){const t=this._context?.capabilities?.vao;t.deleteVertexArray(this._glName),this._glName=null,this._context.instanceCounter.decrement(r.VertexArrayObject,this)}this._context=null}initialize(){if(this._initialized)return;const t=this._context.capabilities.vao;if(t){const e=t.createVertexArray();t.bindVertexArray(e),this._bindLayout(),t.bindVertexArray(null),this._glName=e,this._context.instanceCounter.increment(r.VertexArrayObject,this)}this._initialized=!0}bind(){this.initialize();const t=this._context.capabilities.vao;t?t.bindVertexArray(this.glName):(this._context.bindVAO(null),this._bindLayout())}_bindLayout(){const{_buffers:t,_layout:e,_indexBuffer:i}=this;t||o.error("Vertex buffer dictionary is empty!");const r=this._context.gl;for(const n in t){const i=t[n];i||o.error("Vertex buffer is uninitialized!");const r=e[n];r||o.error("Vertex element descriptor is empty!"),s(this._context,this._locations,i,r)}if(null!=i){!!this._context.capabilities.vao?r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,i.glName):this._context.bindBuffer(i)}}unbind(){this.initialize();const t=this._context.capabilities.vao;t?t.bindVertexArray(null):this._unbindLayout()}_unbindLayout(){const{_buffers:t,_layout:e}=this;t||o.error("Vertex buffer dictionary is empty!");for(const i in t){const r=t[i];r||o.error("Vertex buffer is uninitialized!");const s=e[i];n(this._context,this._locations,r,s)}null!=this._indexBuffer&&this._context.unbindBuffer(this._indexBuffer.bufferType)}};export{f as VertexArrayObject};
5
+ import t from"../../core/Logger.js";import{disposeMaybe as e}from"../../core/maybe.js";import{typedArrayStaticSize as i}from"../../core/typedArrayUtil.js";import{ResourceType as r}from"./enums.js";import{bindVertexBufferLayout as s,unbindVertexBufferLayout as n}from"./Util.js";const o=t.getLogger("esri.views.webgl.VertexArrayObject");let f=class{constructor(t,e,i,r,s=null){this._context=t,this._locations=e,this._layout=i,this._buffers=r,this._indexBuffer=s,this._glName=null,this._initialized=!1}get glName(){return this._glName}get context(){return this._context}get vertexBuffers(){return this._buffers}get indexBuffer(){return this._indexBuffer}get byteSize(){return Object.keys(this._buffers).reduce(((t,e)=>t+this._buffers[e].byteLength),null!=this._indexBuffer?this._indexBuffer.byteLength:0)}get layout(){return this._layout}get locations(){return this._locations}get usedMemory(){return this.byteSize+(Object.keys(this._buffers).length+(this._indexBuffer?1:0))*i}dispose(){if(this._context){this._context.getBoundVAO()===this&&this._context.bindVAO(null);for(const t in this._buffers)this._buffers[t]?.dispose(),delete this._buffers[t];this._indexBuffer=e(this._indexBuffer),this.disposeVAOOnly()}else(this._glName||Object.getOwnPropertyNames(this._buffers).length>0)&&o.warn("Leaked WebGL VAO")}disposeVAOOnly(){if(this._glName){const t=this._context?.capabilities?.vao;t.deleteVertexArray(this._glName),this._glName=null,this._context.instanceCounter.decrement(r.VertexArrayObject,this)}this._context=null}initialize(){if(this._initialized)return;const t=this._context.capabilities.vao;if(t){const e=t.createVertexArray();t.bindVertexArray(e),this._bindLayout(),t.bindVertexArray(null),this._glName=e,this._context.instanceCounter.increment(r.VertexArrayObject,this)}this._initialized=!0}bind(){this.initialize();const t=this._context.capabilities.vao;t?t.bindVertexArray(this.glName):(this._context.bindVAO(null),this._bindLayout())}_bindLayout(){const{_buffers:t,_layout:e,_indexBuffer:i}=this;t||o.error("Vertex buffer dictionary is empty!");const r=this._context.gl;for(const n in t){const i=t[n];i||o.error("Vertex buffer is uninitialized!");const r=e[n];r||o.error("Vertex element descriptor is empty!"),s(this._context,this._locations,i,r)}if(null!=i){!!this._context.capabilities.vao?r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,i.glName):this._context.bindBuffer(i)}}unbind(){this.initialize();const t=this._context.capabilities.vao;t?t.bindVertexArray(null):this._unbindLayout()}_unbindLayout(){const{_buffers:t,_layout:e}=this;t||o.error("Vertex buffer dictionary is empty!");for(const i in t){const r=t[i];r||o.error("Vertex buffer is uninitialized!");const s=e[i];n(this._context,this._locations,r,s)}null!=this._indexBuffer&&this._context.unbindBuffer(this._indexBuffer.bufferType)}};export{f as VertexArrayObject};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../chunks/tslib.es6.js";import"../../geometry.js";import t from"../../Graphic.js";import"../../intl.js";import"../../symbols.js";import{multiplyOpacity as r,getContrast as s}from"../../core/colorUtils.js";import{destroyMaybe as i}from"../../core/maybe.js";import{watch as o,initial as a}from"../../core/reactiveUtils.js";import{formatDecimal as n,formatImperialArea as m,formatMetricArea as l,formatImperialLength as c,formatMetricLength as u}from"../../core/unitFormatUtils.js";import{convertUnit as h}from"../../core/unitUtils.js";import{property as p}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as d}from"../../core/accessorSupport/decorators/subclass.js";import{geodesicDensify as f,planarLength as y,simplify as v,geodesicLength as _,geodesicArea as w,planarArea as g}from"../../geometry/geometryEngine.js";import{isLoaded as b,project as j}from"../../geometry/projection.js";import{isSupported as L,geodesicDensify as S,geodesicLengths as A,geodesicAreas as G}from"../../geometry/support/geodesicUtils.js";import k from"../../layers/GraphicsLayer.js";import{ViewingMode as q}from"../../views/ViewingMode.js";import x from"../../views/draw/Draw.js";import{createManipulatorDragEventPipeline as M,screenToMap as T,dragGraphic as C}from"../../views/interactive/dragEventPipeline.js";import{GraphicManipulator as D}from"../../views/interactive/GraphicManipulator.js";import{InteractiveToolBase as R}from"../../views/interactive/InteractiveToolBase.js";import{fetchMessageBundle as U}from"../../intl/messages.js";import{onLocaleChange as W}from"../../intl/locale.js";import z from"../../geometry/Point.js";import E from"../../symbols/SimpleFillSymbol.js";import O from"../../symbols/SimpleLineSymbol.js";import P from"../../symbols/TextSymbol.js";import V from"../../symbols/Font.js";import F from"../../symbols/SimpleMarkerSymbol.js";import H from"../../geometry/Polyline.js";import B from"../../geometry/SpatialReference.js";import I from"../../geometry/Polygon.js";const N=1e5;let J=class extends R{constructor(e){super(e),this._drawActive=!1,this._measurementLayer=new k({internal:!0,listMode:"hide",visible:!1}),this._manipulatorLayer=new k({internal:!0,listMode:"hide",visible:!1}),this._vertices=[],this.geodesicDistanceThreshold=1e5,this.measurement=null,this.measurementLabel=null}initialize(){U("esri/core/t9n/Units").then((e=>{this.messages=e})),this.addHandles(W((async()=>{this.messages=await U("esri/core/t9n/Units")})));const e=this.view;this._draw=new x({view:e}),e.map.addMany([this._measurementLayer,this._manipulatorLayer]),e.focus(),this.addHandles([o((()=>[this.unit,this.geodesicDistanceThreshold,this.messages]),(()=>{this._updateGraphics()}),a),o((()=>[this.view.effectiveTheme.accentColor,this.view.effectiveTheme.textColor]),(()=>{if(!this._vertices.length)return;const e=this._vertices.map((({coord:e})=>e));for(const{handle:t}of this._vertices)t.remove();this._vertices=[],this._measurementLayer.removeAll(),this._manipulatorLayer.removeAll(),this.manipulators.removeAll(),this._updateSketch(e)}))])}destroy(){const{map:e}=this.view;this._draw.view=null,this._draw=i(this._draw),e.removeMany([this._measurementLayer,this._manipulatorLayer]),this._measurementLayer.removeAll(),this._manipulatorLayer.removeAll(),this._set("measurement",null),this._set("measurementLabel",null),this._measurementLayer=i(this._measurementLayer),this._manipulatorLayer=i(this._manipulatorLayer),this._resetVertices()}get cursor(){return this._drawActive?"crosshair":null}set editable(e){this._set("editable",e),e||this._draw.reset()}onActivate(){this._drawActive||0!==this._vertices.length||this._startSketch()}onShow(){this._measurementLayer.visible=!0,this._manipulatorLayer.visible=!0}onHide(){this._measurementLayer.visible=!1,this._manipulatorLayer.visible=!1}reset(){this.manipulators.removeAll(),this._resetVertices(),this._measurementLayer.removeAll(),this._manipulatorLayer.removeAll(),this._set("measurement",null),this._set("measurementLabel",null),this._draw.reset(),this._drawActive=!1}_resetVertices(){for(const{handle:e}of this._vertices)e.remove();this._vertices=[]}_startSketch(){this._drawActive=!0;const e=this._draw.create("polyline",{mode:"click"});e.on(["vertex-add","vertex-update","vertex-remove","cursor-update","undo","redo"],(e=>this._updateSketch(e.vertices))),e.on("draw-complete",(()=>this._stopSketch()))}_stopSketch(){if(this._vertices.length<3)return this.reset(),void this._startSketch();this.manipulators.forEach((({manipulator:e})=>{e.interactive=!0})),this._drawActive=!1,this.finishToolCreation()}_updateSketch(e){const t=this.view.spatialReference;if(t&&(!Y(t)||b())){for(;this._vertices.length>e.length;){const{handle:e,manipulator:t}=this._vertices.pop();e.remove(),this.manipulators.remove(t)}for(let r=this._vertices.length;r<e.length;r++){const[s,i]=e[r],o=K(new z({x:s,y:i,spatialReference:t}),this.view,this._manipulatorLayer);this.manipulators.add(o);const a=M(o,((e,t)=>{t.next(T(this.view)).next(C(e.graphic,q.Local)).next((()=>{const t=e.graphic.geometry;this._vertices[r].coord=[t.x,t.y],this._updateGraphics()}))}));this._vertices.push({manipulator:o,coord:[s,i],handle:a})}if(this._vertices.length){const r=this._vertices.length-1,s=this._vertices[r],[i,o]=e[r];s.coord[0]===i&&s.coord[1]===o||(s.coord=[i,o],s.manipulator.graphic.geometry=new z({x:i,y:o,spatialReference:t}));const a=this._drawActive?this._vertices[r].manipulator:null;this.manipulators.forEach((({manipulator:e})=>{e.interactive=null==a||e!==a}))}this._updateGraphics()}}_updateGraphics(){if(this._vertices.length<2)return void this._measurementLayer.removeAll();const e=Q(this._vertices.map((({coord:e})=>e)),this.view.spatialReference,this.geodesicDistanceThreshold);if(!e)return;const{measurement:i,fillGeometry:o,outlineGeometry:a}=e;this._set("measurement",i);const n=i?Z(this.messages,i,this.unit):null;if(this._set("measurementLabel",n),!o&&!a)return;let m,l,c;const{graphics:u}=this._measurementLayer,h=3===u.length,{effectiveTheme:p}=this.view;h?(m=u.at(0),l=u.at(1),c=u.at(2)):(m=new t({symbol:new E({color:r(p.accentColor,.3),outline:null})}),l=new t({symbol:new O({color:p.accentColor,width:2})}),c=new t({symbol:new P({color:p.textColor,font:new V({size:14,family:"sans-serif"}),haloColor:r(s(p.textColor),.5),haloSize:2})}),u.removeAll(),u.addMany([m,l,c])),m.geometry=o,l.geometry=a,c.geometry=o?.centroid,c.symbol.text=n?.area??""}};function K(e,s,i){const o=8,a={style:"circle",color:r(s.effectiveTheme.accentColor,.5),outline:{type:"simple-line",width:0}},n=new F({...a,size:o}),m=new F({...a,size:1.5*o}),l=new t({geometry:e,symbol:n});return new D({view:s,layer:i,graphic:l,focusedSymbol:m})}function Q(e,t,r){if(2===e.length){const s=new H({paths:e,spatialReference:t});let i;if(t?.isGeographic)if(L(t))i=S(s,N);else{const e=j(s,B.WGS84),r=S(e,N);i=j(r,t)}else if(t?.isWebMercator)i=f(s,N,"meters");else{if(y(s,"meters")>=r){const e=j(s,B.WGS84),r=S(e,N);i=j(r,t)}else i=s}return{measurement:null,fillGeometry:null,outlineGeometry:i}}e.push(e[0]);const s=new H({paths:[e],spatialReference:t}),i=new I({rings:[e],spatialReference:t});let o,a,n=null,m=null;if(t?.isGeographic)if(L(t)){if(n=S(s,N),m=S(i,N),m=v(m),!m)return null;o=A([s],"meters")[0],a=G([m],"square-meters")[0]}else{const e=B.WGS84,r=j(s,e),l=j(i,e);if(n=S(r,N),m=S(l,N),m=v(m),!m)return null;o=A([r],"meters")[0],a=G([m],"square-meters")[0],n=j(n,t),m=j(m,t)}else if(t?.isWebMercator){if(n=f(s,N,"meters"),m=f(i,N,"meters"),m=v(m),!m)return null;o=_(s,"meters"),a=w(m,"square-meters")}else{const e=y(s,"meters");if(e>=r){const e=B.WGS84,r=j(s,e),l=j(i,e);if(n=S(r,N),m=S(l,N),m=v(m),!m)return null;o=A([r],"meters")[0],a=G([m],"square-meters")[0],n=j(n,t),m=j(m,t)}else{if(n=s,m=v(i),!m)return null;o=e,a=g(m,"square-meters")}}return{measurement:{geometry:m,area:a,perimeter:o},fillGeometry:m,outlineGeometry:n}}function X(e){return null!=e}function Y(e){if(!e)return!1;const{isGeographic:t,isWebMercator:r,isWGS84:s}=e;return t&&!s&&!L(e)||!t&&!r}function Z(e,t,r){if(!t||!e)return null;const s={area:null,perimeter:null},{area:i,perimeter:o}=t;switch(r){case"metric":s.area=l(e,i,"square-meters");break;case"imperial":s.area=m(e,i,"square-meters");break;default:{const t=h(i,"square-meters",r);s.area=n(e,t,r);break}}const a=$(r);if(a)switch(a){case"metric":s.perimeter=u(e,o,"meters");break;case"imperial":s.perimeter=c(e,o,"meters");break;default:{const t=h(o,"meters",a);s.perimeter=n(e,t,a);break}}else s.perimeter="";return s}function $(e){switch(e){case"metric":case"ares":case"hectares":return"metric";case"imperial":case"acres":return"imperial";case"square-inches":return"inches";case"square-feet":return"feet";case"square-yards":return"yards";case"square-miles":return"miles";case"square-us-feet":return"us-feet";case"square-meters":return"meters";case"square-kilometers":return"kilometers";case"square-millimeters":return"millimeters";case"square-centimeters":return"centimeters";case"square-decimeters":return"decimeters";default:return null}}e([p()],J.prototype,"_drawActive",void 0),e([p({readOnly:!0})],J.prototype,"cursor",null),e([p({value:!0})],J.prototype,"editable",null),e([p({type:Number})],J.prototype,"geodesicDistanceThreshold",void 0),e([p({readOnly:!0})],J.prototype,"measurement",void 0),e([p({readOnly:!0})],J.prototype,"measurementLabel",void 0),e([p()],J.prototype,"messages",void 0),e([p()],J.prototype,"unit",void 0),e([p({constructOnly:!0})],J.prototype,"view",void 0),J=e([d("esri.widgets.AreaMeasurement2D.AreaMeasurement2DTool")],J);export{J as AreaMeasurement2DTool,Q as createAreaMeasurementInfo2D,Z as createAreaMeasurementLabel,Y as isProjectionEngineRequired,X as isSupported};
5
+ import{_ as e}from"../../chunks/tslib.es6.js";import"../../geometry.js";import t from"../../Graphic.js";import"../../intl.js";import"../../symbols.js";import{multiplyOpacity as r,getContrast as s,BrightnessThreshold as i}from"../../core/colorUtils.js";import{destroyMaybe as o}from"../../core/maybe.js";import{watch as a,initial as n}from"../../core/reactiveUtils.js";import{formatDecimal as m,formatImperialArea as l,formatMetricArea as c,formatImperialLength as u,formatMetricLength as h}from"../../core/unitFormatUtils.js";import{convertUnit as p}from"../../core/unitUtils.js";import{property as d}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as f}from"../../core/accessorSupport/decorators/subclass.js";import{geodesicDensify as y,planarLength as v,simplify as _,geodesicLength as w,geodesicArea as g,planarArea as b}from"../../geometry/geometryEngine.js";import{isLoaded as j,project as L}from"../../geometry/projection.js";import{isSupported as S,geodesicDensify as A,geodesicLengths as G,geodesicAreas as k}from"../../geometry/support/geodesicUtils.js";import q from"../../layers/GraphicsLayer.js";import{ViewingMode as x}from"../../views/ViewingMode.js";import M from"../../views/draw/Draw.js";import{createManipulatorDragEventPipeline as T,screenToMap as C,dragGraphic as D}from"../../views/interactive/dragEventPipeline.js";import{GraphicManipulator as R}from"../../views/interactive/GraphicManipulator.js";import{InteractiveToolBase as U}from"../../views/interactive/InteractiveToolBase.js";import{fetchMessageBundle as W}from"../../intl/messages.js";import{onLocaleChange as z}from"../../intl/locale.js";import E from"../../geometry/Point.js";import O from"../../symbols/SimpleFillSymbol.js";import P from"../../symbols/SimpleLineSymbol.js";import V from"../../symbols/TextSymbol.js";import F from"../../symbols/Font.js";import H from"../../symbols/SimpleMarkerSymbol.js";import B from"../../geometry/Polyline.js";import I from"../../geometry/SpatialReference.js";import N from"../../geometry/Polygon.js";const J=1e5;let K=class extends U{constructor(e){super(e),this._drawActive=!1,this._measurementLayer=new q({internal:!0,listMode:"hide",visible:!1}),this._manipulatorLayer=new q({internal:!0,listMode:"hide",visible:!1}),this._vertices=[],this.geodesicDistanceThreshold=1e5,this.measurement=null,this.measurementLabel=null}initialize(){W("esri/core/t9n/Units").then((e=>{this.messages=e})),this.addHandles(z((async()=>{this.messages=await W("esri/core/t9n/Units")})));const e=this.view;this._draw=new M({view:e}),e.map.addMany([this._measurementLayer,this._manipulatorLayer]),e.focus(),this.addHandles([a((()=>[this.unit,this.geodesicDistanceThreshold,this.messages]),(()=>{this._updateGraphics()}),n),a((()=>[this.view.effectiveTheme.accentColor,this.view.effectiveTheme.textColor]),(()=>{if(!this._vertices.length)return;const e=this._vertices.map((({coord:e})=>e));for(const{handle:t}of this._vertices)t.remove();this._vertices=[],this._measurementLayer.removeAll(),this._manipulatorLayer.removeAll(),this.manipulators.removeAll(),this._updateSketch(e)}))])}destroy(){const{map:e}=this.view;this._draw.view=null,this._draw=o(this._draw),e.removeMany([this._measurementLayer,this._manipulatorLayer]),this._measurementLayer.removeAll(),this._manipulatorLayer.removeAll(),this._set("measurement",null),this._set("measurementLabel",null),this._measurementLayer=o(this._measurementLayer),this._manipulatorLayer=o(this._manipulatorLayer),this._resetVertices()}get cursor(){return this._drawActive?"crosshair":null}set editable(e){this._set("editable",e),e||this._draw.reset()}onActivate(){this._drawActive||0!==this._vertices.length||this._startSketch()}onShow(){this._measurementLayer.visible=!0,this._manipulatorLayer.visible=!0}onHide(){this._measurementLayer.visible=!1,this._manipulatorLayer.visible=!1}reset(){this.manipulators.removeAll(),this._resetVertices(),this._measurementLayer.removeAll(),this._manipulatorLayer.removeAll(),this._set("measurement",null),this._set("measurementLabel",null),this._draw.reset(),this._drawActive=!1}_resetVertices(){for(const{handle:e}of this._vertices)e.remove();this._vertices=[]}_startSketch(){this._drawActive=!0;const e=this._draw.create("polyline",{mode:"click"});e.on(["vertex-add","vertex-update","vertex-remove","cursor-update","undo","redo"],(e=>this._updateSketch(e.vertices))),e.on("draw-complete",(()=>this._stopSketch()))}_stopSketch(){if(this._vertices.length<3)return this.reset(),void this._startSketch();this.manipulators.forEach((({manipulator:e})=>{e.interactive=!0})),this._drawActive=!1,this.finishToolCreation()}_updateSketch(e){const t=this.view.spatialReference;if(t&&(!Z(t)||j())){for(;this._vertices.length>e.length;){const{handle:e,manipulator:t}=this._vertices.pop();e.remove(),this.manipulators.remove(t)}for(let r=this._vertices.length;r<e.length;r++){const[s,i]=e[r],o=Q(new E({x:s,y:i,spatialReference:t}),this.view,this._manipulatorLayer);this.manipulators.add(o);const a=T(o,((e,t)=>{t.next(C(this.view)).next(D(e.graphic,x.Local)).next((()=>{const t=e.graphic.geometry;this._vertices[r].coord=[t.x,t.y],this._updateGraphics()}))}));this._vertices.push({manipulator:o,coord:[s,i],handle:a})}if(this._vertices.length){const r=this._vertices.length-1,s=this._vertices[r],[i,o]=e[r];s.coord[0]===i&&s.coord[1]===o||(s.coord=[i,o],s.manipulator.graphic.geometry=new E({x:i,y:o,spatialReference:t}));const a=this._drawActive?this._vertices[r].manipulator:null;this.manipulators.forEach((({manipulator:e})=>{e.interactive=null==a||e!==a}))}this._updateGraphics()}}_updateGraphics(){if(this._vertices.length<2)return void this._measurementLayer.removeAll();const e=X(this._vertices.map((({coord:e})=>e)),this.view.spatialReference,this.geodesicDistanceThreshold);if(!e)return;const{measurement:o,fillGeometry:a,outlineGeometry:n}=e;this._set("measurement",o);const m=o?$(this.messages,o,this.unit):null;if(this._set("measurementLabel",m),!a&&!n)return;let l,c,u;const{graphics:h}=this._measurementLayer,p=3===h.length,{effectiveTheme:d}=this.view;p?(l=h.at(0),c=h.at(1),u=h.at(2)):(l=new t({symbol:new O({color:r(d.accentColor,.3),outline:null})}),c=new t({symbol:new P({color:d.accentColor,width:2})}),u=new t({symbol:new V({color:d.textColor,font:new F({size:14,family:"sans-serif"}),haloColor:r(s(d.textColor,i.Low),.5),haloSize:2})}),h.removeAll(),h.addMany([l,c,u])),l.geometry=a,c.geometry=n,u.geometry=a?.centroid,u.symbol.text=m?.area??""}};function Q(e,s,i){const o=8,a={style:"circle",color:r(s.effectiveTheme.accentColor,.5),outline:{type:"simple-line",width:0}},n=new H({...a,size:o}),m=new H({...a,size:1.5*o}),l=new t({geometry:e,symbol:n});return new R({view:s,layer:i,graphic:l,focusedSymbol:m})}function X(e,t,r){if(2===e.length){const s=new B({paths:e,spatialReference:t});let i;if(t?.isGeographic)if(S(t))i=A(s,J);else{const e=L(s,I.WGS84),r=A(e,J);i=L(r,t)}else if(t?.isWebMercator)i=y(s,J,"meters");else{if(v(s,"meters")>=r){const e=L(s,I.WGS84),r=A(e,J);i=L(r,t)}else i=s}return{measurement:null,fillGeometry:null,outlineGeometry:i}}e.push(e[0]);const s=new B({paths:[e],spatialReference:t}),i=new N({rings:[e],spatialReference:t});let o,a,n=null,m=null;if(t?.isGeographic)if(S(t)){if(n=A(s,J),m=A(i,J),m=_(m),!m)return null;o=G([s],"meters")[0],a=k([m],"square-meters")[0]}else{const e=I.WGS84,r=L(s,e),l=L(i,e);if(n=A(r,J),m=A(l,J),m=_(m),!m)return null;o=G([r],"meters")[0],a=k([m],"square-meters")[0],n=L(n,t),m=L(m,t)}else if(t?.isWebMercator){if(n=y(s,J,"meters"),m=y(i,J,"meters"),m=_(m),!m)return null;o=w(s,"meters"),a=g(m,"square-meters")}else{const e=v(s,"meters");if(e>=r){const e=I.WGS84,r=L(s,e),l=L(i,e);if(n=A(r,J),m=A(l,J),m=_(m),!m)return null;o=G([r],"meters")[0],a=k([m],"square-meters")[0],n=L(n,t),m=L(m,t)}else{if(n=s,m=_(i),!m)return null;o=e,a=b(m,"square-meters")}}return{measurement:{geometry:m,area:a,perimeter:o},fillGeometry:m,outlineGeometry:n}}function Y(e){return null!=e}function Z(e){if(!e)return!1;const{isGeographic:t,isWebMercator:r,isWGS84:s}=e;return t&&!s&&!S(e)||!t&&!r}function $(e,t,r){if(!t||!e)return null;const s={area:null,perimeter:null},{area:i,perimeter:o}=t;switch(r){case"metric":s.area=c(e,i,"square-meters");break;case"imperial":s.area=l(e,i,"square-meters");break;default:{const t=p(i,"square-meters",r);s.area=m(e,t,r);break}}const a=ee(r);if(a)switch(a){case"metric":s.perimeter=h(e,o,"meters");break;case"imperial":s.perimeter=u(e,o,"meters");break;default:{const t=p(o,"meters",a);s.perimeter=m(e,t,a);break}}else s.perimeter="";return s}function ee(e){switch(e){case"metric":case"ares":case"hectares":return"metric";case"imperial":case"acres":return"imperial";case"square-inches":return"inches";case"square-feet":return"feet";case"square-yards":return"yards";case"square-miles":return"miles";case"square-us-feet":return"us-feet";case"square-meters":return"meters";case"square-kilometers":return"kilometers";case"square-millimeters":return"millimeters";case"square-centimeters":return"centimeters";case"square-decimeters":return"decimeters";default:return null}}e([d()],K.prototype,"_drawActive",void 0),e([d({readOnly:!0})],K.prototype,"cursor",null),e([d({value:!0})],K.prototype,"editable",null),e([d({type:Number})],K.prototype,"geodesicDistanceThreshold",void 0),e([d({readOnly:!0})],K.prototype,"measurement",void 0),e([d({readOnly:!0})],K.prototype,"measurementLabel",void 0),e([d()],K.prototype,"messages",void 0),e([d()],K.prototype,"unit",void 0),e([d({constructOnly:!0})],K.prototype,"view",void 0),K=e([f("esri.widgets.AreaMeasurement2D.AreaMeasurement2DTool")],K);export{K as AreaMeasurement2DTool,X as createAreaMeasurementInfo2D,$ as createAreaMeasurementLabel,Z as isProjectionEngineRequired,Y as isSupported};