@arcgis/core 4.27.0-rc.4 → 4.27.0-rc.5

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 (534) hide show
  1. package/assets/esri/core/workers/RemoteClient.js +1 -1
  2. package/assets/esri/core/workers/chunks/{91785144901dfe56c5e2.js → 0f51fa430333cf77faf7.js} +1 -1
  3. package/assets/esri/core/workers/chunks/2132edadb75a2c6c216d.js +1 -0
  4. package/assets/esri/core/workers/chunks/{470e34f5c33185919719.js → 4db447d0f1d865ab6c88.js} +1 -1
  5. package/assets/esri/core/workers/chunks/85191485a7556d3c99f2.js +1 -0
  6. package/assets/esri/core/workers/chunks/{6e4940fe3bba014c921b.js → 979d9f37c555df0e8fa6.js} +2 -2
  7. package/assets/esri/core/workers/chunks/b3c42e9ba07217a51911.js +1 -0
  8. package/assets/esri/t9n/common_sv.json +1 -1
  9. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ar.json +1 -1
  10. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_bg.json +1 -1
  11. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_bs.json +1 -1
  12. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ca.json +1 -1
  13. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_cs.json +1 -1
  14. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_da.json +1 -1
  15. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_de.json +1 -1
  16. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_el.json +1 -1
  17. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_es.json +1 -1
  18. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_et.json +1 -1
  19. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_fi.json +1 -1
  20. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_fr.json +1 -1
  21. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_he.json +1 -1
  22. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_hr.json +1 -1
  23. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_hu.json +1 -1
  24. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_id.json +1 -1
  25. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_it.json +1 -1
  26. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ja.json +1 -1
  27. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ko.json +1 -1
  28. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_lt.json +1 -1
  29. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_lv.json +1 -1
  30. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_nb.json +1 -1
  31. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_nl.json +1 -1
  32. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_pl.json +1 -1
  33. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_pt-BR.json +1 -1
  34. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_pt-PT.json +1 -1
  35. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ro.json +1 -1
  36. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ru.json +1 -1
  37. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_sk.json +1 -1
  38. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_sl.json +1 -1
  39. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_sr.json +1 -1
  40. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_sv.json +1 -1
  41. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_th.json +1 -1
  42. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_tr.json +1 -1
  43. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_uk.json +1 -1
  44. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_vi.json +1 -1
  45. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_zh-CN.json +1 -1
  46. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_zh-HK.json +1 -1
  47. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_zh-TW.json +1 -1
  48. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_ar.json +1 -1
  49. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_bg.json +1 -1
  50. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_bs.json +1 -1
  51. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_ca.json +1 -1
  52. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_cs.json +1 -1
  53. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_da.json +1 -1
  54. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_de.json +1 -1
  55. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_el.json +1 -1
  56. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_es.json +1 -1
  57. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_et.json +1 -1
  58. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_fi.json +1 -1
  59. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_fr.json +1 -1
  60. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_he.json +1 -1
  61. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_hr.json +1 -1
  62. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_hu.json +1 -1
  63. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_id.json +1 -1
  64. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_it.json +1 -1
  65. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_ja.json +1 -1
  66. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_ko.json +1 -1
  67. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_lt.json +1 -1
  68. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_lv.json +1 -1
  69. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_nb.json +1 -1
  70. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_nl.json +1 -1
  71. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_pl.json +1 -1
  72. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_pt-BR.json +1 -1
  73. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_pt-PT.json +1 -1
  74. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_ro.json +1 -1
  75. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_ru.json +1 -1
  76. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_sk.json +1 -1
  77. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_sl.json +1 -1
  78. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_sr.json +1 -1
  79. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_sv.json +1 -1
  80. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_th.json +1 -1
  81. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_tr.json +1 -1
  82. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_uk.json +1 -1
  83. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_vi.json +1 -1
  84. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_zh-CN.json +1 -1
  85. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_zh-HK.json +1 -1
  86. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_zh-TW.json +1 -1
  87. package/assets/esri/widgets/CoordinateConversion/t9n/CoordinateConversion_ja.json +1 -1
  88. package/assets/esri/widgets/Editor/t9n/Editor_ar.json +1 -1
  89. package/assets/esri/widgets/Editor/t9n/Editor_bg.json +1 -1
  90. package/assets/esri/widgets/Editor/t9n/Editor_bs.json +1 -1
  91. package/assets/esri/widgets/Editor/t9n/Editor_ca.json +1 -1
  92. package/assets/esri/widgets/Editor/t9n/Editor_cs.json +1 -1
  93. package/assets/esri/widgets/Editor/t9n/Editor_da.json +1 -1
  94. package/assets/esri/widgets/Editor/t9n/Editor_de.json +1 -1
  95. package/assets/esri/widgets/Editor/t9n/Editor_el.json +1 -1
  96. package/assets/esri/widgets/Editor/t9n/Editor_es.json +1 -1
  97. package/assets/esri/widgets/Editor/t9n/Editor_et.json +1 -1
  98. package/assets/esri/widgets/Editor/t9n/Editor_fi.json +1 -1
  99. package/assets/esri/widgets/Editor/t9n/Editor_fr.json +1 -1
  100. package/assets/esri/widgets/Editor/t9n/Editor_he.json +1 -1
  101. package/assets/esri/widgets/Editor/t9n/Editor_hr.json +1 -1
  102. package/assets/esri/widgets/Editor/t9n/Editor_hu.json +1 -1
  103. package/assets/esri/widgets/Editor/t9n/Editor_id.json +1 -1
  104. package/assets/esri/widgets/Editor/t9n/Editor_it.json +1 -1
  105. package/assets/esri/widgets/Editor/t9n/Editor_ja.json +1 -1
  106. package/assets/esri/widgets/Editor/t9n/Editor_ko.json +1 -1
  107. package/assets/esri/widgets/Editor/t9n/Editor_lt.json +1 -1
  108. package/assets/esri/widgets/Editor/t9n/Editor_lv.json +1 -1
  109. package/assets/esri/widgets/Editor/t9n/Editor_nb.json +1 -1
  110. package/assets/esri/widgets/Editor/t9n/Editor_nl.json +1 -1
  111. package/assets/esri/widgets/Editor/t9n/Editor_pl.json +1 -1
  112. package/assets/esri/widgets/Editor/t9n/Editor_pt-BR.json +1 -1
  113. package/assets/esri/widgets/Editor/t9n/Editor_pt-PT.json +1 -1
  114. package/assets/esri/widgets/Editor/t9n/Editor_ro.json +1 -1
  115. package/assets/esri/widgets/Editor/t9n/Editor_ru.json +1 -1
  116. package/assets/esri/widgets/Editor/t9n/Editor_sk.json +1 -1
  117. package/assets/esri/widgets/Editor/t9n/Editor_sl.json +1 -1
  118. package/assets/esri/widgets/Editor/t9n/Editor_sr.json +1 -1
  119. package/assets/esri/widgets/Editor/t9n/Editor_sv.json +1 -1
  120. package/assets/esri/widgets/Editor/t9n/Editor_th.json +1 -1
  121. package/assets/esri/widgets/Editor/t9n/Editor_tr.json +1 -1
  122. package/assets/esri/widgets/Editor/t9n/Editor_uk.json +1 -1
  123. package/assets/esri/widgets/Editor/t9n/Editor_vi.json +1 -1
  124. package/assets/esri/widgets/Editor/t9n/Editor_zh-CN.json +1 -1
  125. package/assets/esri/widgets/Editor/t9n/Editor_zh-HK.json +1 -1
  126. package/assets/esri/widgets/Editor/t9n/Editor_zh-TW.json +1 -1
  127. package/assets/esri/widgets/Feature/t9n/Feature_ar.json +1 -1
  128. package/assets/esri/widgets/Feature/t9n/Feature_bg.json +1 -1
  129. package/assets/esri/widgets/Feature/t9n/Feature_bs.json +1 -1
  130. package/assets/esri/widgets/Feature/t9n/Feature_ca.json +1 -1
  131. package/assets/esri/widgets/Feature/t9n/Feature_cs.json +1 -1
  132. package/assets/esri/widgets/Feature/t9n/Feature_da.json +1 -1
  133. package/assets/esri/widgets/Feature/t9n/Feature_de.json +1 -1
  134. package/assets/esri/widgets/Feature/t9n/Feature_el.json +1 -1
  135. package/assets/esri/widgets/Feature/t9n/Feature_es.json +1 -1
  136. package/assets/esri/widgets/Feature/t9n/Feature_et.json +1 -1
  137. package/assets/esri/widgets/Feature/t9n/Feature_fi.json +1 -1
  138. package/assets/esri/widgets/Feature/t9n/Feature_fr.json +1 -1
  139. package/assets/esri/widgets/Feature/t9n/Feature_he.json +1 -1
  140. package/assets/esri/widgets/Feature/t9n/Feature_hr.json +1 -1
  141. package/assets/esri/widgets/Feature/t9n/Feature_hu.json +1 -1
  142. package/assets/esri/widgets/Feature/t9n/Feature_id.json +1 -1
  143. package/assets/esri/widgets/Feature/t9n/Feature_it.json +1 -1
  144. package/assets/esri/widgets/Feature/t9n/Feature_ja.json +1 -1
  145. package/assets/esri/widgets/Feature/t9n/Feature_ko.json +1 -1
  146. package/assets/esri/widgets/Feature/t9n/Feature_lt.json +1 -1
  147. package/assets/esri/widgets/Feature/t9n/Feature_lv.json +1 -1
  148. package/assets/esri/widgets/Feature/t9n/Feature_nb.json +1 -1
  149. package/assets/esri/widgets/Feature/t9n/Feature_nl.json +1 -1
  150. package/assets/esri/widgets/Feature/t9n/Feature_pl.json +1 -1
  151. package/assets/esri/widgets/Feature/t9n/Feature_pt-BR.json +1 -1
  152. package/assets/esri/widgets/Feature/t9n/Feature_pt-PT.json +1 -1
  153. package/assets/esri/widgets/Feature/t9n/Feature_ro.json +1 -1
  154. package/assets/esri/widgets/Feature/t9n/Feature_ru.json +1 -1
  155. package/assets/esri/widgets/Feature/t9n/Feature_sk.json +1 -1
  156. package/assets/esri/widgets/Feature/t9n/Feature_sl.json +1 -1
  157. package/assets/esri/widgets/Feature/t9n/Feature_sr.json +1 -1
  158. package/assets/esri/widgets/Feature/t9n/Feature_sv.json +1 -1
  159. package/assets/esri/widgets/Feature/t9n/Feature_th.json +1 -1
  160. package/assets/esri/widgets/Feature/t9n/Feature_tr.json +1 -1
  161. package/assets/esri/widgets/Feature/t9n/Feature_uk.json +1 -1
  162. package/assets/esri/widgets/Feature/t9n/Feature_vi.json +1 -1
  163. package/assets/esri/widgets/Feature/t9n/Feature_zh-CN.json +1 -1
  164. package/assets/esri/widgets/Feature/t9n/Feature_zh-HK.json +1 -1
  165. package/assets/esri/widgets/Feature/t9n/Feature_zh-TW.json +1 -1
  166. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ar.json +1 -1
  167. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_bg.json +1 -1
  168. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_bs.json +1 -1
  169. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ca.json +1 -1
  170. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_cs.json +1 -1
  171. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_da.json +1 -1
  172. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_de.json +1 -1
  173. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_el.json +1 -1
  174. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_es.json +1 -1
  175. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_et.json +1 -1
  176. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_fi.json +1 -1
  177. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_fr.json +1 -1
  178. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_he.json +1 -1
  179. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_hr.json +1 -1
  180. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_hu.json +1 -1
  181. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_id.json +1 -1
  182. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_it.json +1 -1
  183. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ja.json +1 -1
  184. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ko.json +1 -1
  185. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_lt.json +1 -1
  186. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_lv.json +1 -1
  187. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_nb.json +1 -1
  188. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_nl.json +1 -1
  189. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_pl.json +1 -1
  190. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_pt-BR.json +1 -1
  191. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_pt-PT.json +1 -1
  192. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ro.json +1 -1
  193. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ru.json +1 -1
  194. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_sk.json +1 -1
  195. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_sl.json +1 -1
  196. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_sr.json +1 -1
  197. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_sv.json +1 -1
  198. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_th.json +1 -1
  199. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_tr.json +1 -1
  200. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_uk.json +1 -1
  201. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_vi.json +1 -1
  202. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_zh-CN.json +1 -1
  203. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_zh-HK.json +1 -1
  204. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_zh-TW.json +1 -1
  205. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_ja.json +1 -1
  206. package/assets/esri/widgets/Features/t9n/Features_ar.json +1 -1
  207. package/assets/esri/widgets/Features/t9n/Features_bg.json +1 -1
  208. package/assets/esri/widgets/Features/t9n/Features_bs.json +1 -1
  209. package/assets/esri/widgets/Features/t9n/Features_ca.json +1 -1
  210. package/assets/esri/widgets/Features/t9n/Features_cs.json +1 -1
  211. package/assets/esri/widgets/Features/t9n/Features_da.json +1 -1
  212. package/assets/esri/widgets/Features/t9n/Features_de.json +1 -1
  213. package/assets/esri/widgets/Features/t9n/Features_el.json +1 -1
  214. package/assets/esri/widgets/Features/t9n/Features_es.json +1 -1
  215. package/assets/esri/widgets/Features/t9n/Features_et.json +1 -1
  216. package/assets/esri/widgets/Features/t9n/Features_fi.json +1 -1
  217. package/assets/esri/widgets/Features/t9n/Features_fr.json +1 -1
  218. package/assets/esri/widgets/Features/t9n/Features_he.json +1 -1
  219. package/assets/esri/widgets/Features/t9n/Features_hr.json +1 -1
  220. package/assets/esri/widgets/Features/t9n/Features_hu.json +1 -1
  221. package/assets/esri/widgets/Features/t9n/Features_id.json +1 -1
  222. package/assets/esri/widgets/Features/t9n/Features_it.json +1 -1
  223. package/assets/esri/widgets/Features/t9n/Features_ja.json +1 -1
  224. package/assets/esri/widgets/Features/t9n/Features_ko.json +1 -1
  225. package/assets/esri/widgets/Features/t9n/Features_lt.json +1 -1
  226. package/assets/esri/widgets/Features/t9n/Features_lv.json +1 -1
  227. package/assets/esri/widgets/Features/t9n/Features_nb.json +1 -1
  228. package/assets/esri/widgets/Features/t9n/Features_nl.json +1 -1
  229. package/assets/esri/widgets/Features/t9n/Features_pl.json +1 -1
  230. package/assets/esri/widgets/Features/t9n/Features_pt-BR.json +1 -1
  231. package/assets/esri/widgets/Features/t9n/Features_pt-PT.json +1 -1
  232. package/assets/esri/widgets/Features/t9n/Features_ro.json +1 -1
  233. package/assets/esri/widgets/Features/t9n/Features_ru.json +1 -1
  234. package/assets/esri/widgets/Features/t9n/Features_sk.json +1 -1
  235. package/assets/esri/widgets/Features/t9n/Features_sl.json +1 -1
  236. package/assets/esri/widgets/Features/t9n/Features_sr.json +1 -1
  237. package/assets/esri/widgets/Features/t9n/Features_sv.json +1 -1
  238. package/assets/esri/widgets/Features/t9n/Features_th.json +1 -1
  239. package/assets/esri/widgets/Features/t9n/Features_tr.json +1 -1
  240. package/assets/esri/widgets/Features/t9n/Features_uk.json +1 -1
  241. package/assets/esri/widgets/Features/t9n/Features_vi.json +1 -1
  242. package/assets/esri/widgets/Features/t9n/Features_zh-CN.json +1 -1
  243. package/assets/esri/widgets/Features/t9n/Features_zh-HK.json +1 -1
  244. package/assets/esri/widgets/Features/t9n/Features_zh-TW.json +1 -1
  245. package/assets/esri/widgets/Legend/t9n/Legend_ar.json +1 -1
  246. package/assets/esri/widgets/Legend/t9n/Legend_bg.json +1 -1
  247. package/assets/esri/widgets/Legend/t9n/Legend_bs.json +1 -1
  248. package/assets/esri/widgets/Legend/t9n/Legend_ca.json +1 -1
  249. package/assets/esri/widgets/Legend/t9n/Legend_cs.json +1 -1
  250. package/assets/esri/widgets/Legend/t9n/Legend_da.json +1 -1
  251. package/assets/esri/widgets/Legend/t9n/Legend_de.json +1 -1
  252. package/assets/esri/widgets/Legend/t9n/Legend_el.json +1 -1
  253. package/assets/esri/widgets/Legend/t9n/Legend_es.json +1 -1
  254. package/assets/esri/widgets/Legend/t9n/Legend_et.json +1 -1
  255. package/assets/esri/widgets/Legend/t9n/Legend_fi.json +1 -1
  256. package/assets/esri/widgets/Legend/t9n/Legend_fr.json +1 -1
  257. package/assets/esri/widgets/Legend/t9n/Legend_he.json +1 -1
  258. package/assets/esri/widgets/Legend/t9n/Legend_hr.json +1 -1
  259. package/assets/esri/widgets/Legend/t9n/Legend_hu.json +1 -1
  260. package/assets/esri/widgets/Legend/t9n/Legend_id.json +1 -1
  261. package/assets/esri/widgets/Legend/t9n/Legend_it.json +1 -1
  262. package/assets/esri/widgets/Legend/t9n/Legend_ja.json +1 -1
  263. package/assets/esri/widgets/Legend/t9n/Legend_ko.json +1 -1
  264. package/assets/esri/widgets/Legend/t9n/Legend_lt.json +1 -1
  265. package/assets/esri/widgets/Legend/t9n/Legend_lv.json +1 -1
  266. package/assets/esri/widgets/Legend/t9n/Legend_nb.json +1 -1
  267. package/assets/esri/widgets/Legend/t9n/Legend_nl.json +1 -1
  268. package/assets/esri/widgets/Legend/t9n/Legend_pl.json +1 -1
  269. package/assets/esri/widgets/Legend/t9n/Legend_pt-BR.json +1 -1
  270. package/assets/esri/widgets/Legend/t9n/Legend_pt-PT.json +1 -1
  271. package/assets/esri/widgets/Legend/t9n/Legend_ro.json +1 -1
  272. package/assets/esri/widgets/Legend/t9n/Legend_ru.json +1 -1
  273. package/assets/esri/widgets/Legend/t9n/Legend_sk.json +1 -1
  274. package/assets/esri/widgets/Legend/t9n/Legend_sl.json +1 -1
  275. package/assets/esri/widgets/Legend/t9n/Legend_sr.json +1 -1
  276. package/assets/esri/widgets/Legend/t9n/Legend_sv.json +1 -1
  277. package/assets/esri/widgets/Legend/t9n/Legend_th.json +1 -1
  278. package/assets/esri/widgets/Legend/t9n/Legend_tr.json +1 -1
  279. package/assets/esri/widgets/Legend/t9n/Legend_uk.json +1 -1
  280. package/assets/esri/widgets/Legend/t9n/Legend_vi.json +1 -1
  281. package/assets/esri/widgets/Legend/t9n/Legend_zh-CN.json +1 -1
  282. package/assets/esri/widgets/Legend/t9n/Legend_zh-HK.json +1 -1
  283. package/assets/esri/widgets/Legend/t9n/Legend_zh-TW.json +1 -1
  284. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ar.json +1 -1
  285. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_bg.json +1 -1
  286. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_bs.json +1 -1
  287. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ca.json +1 -1
  288. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_cs.json +1 -1
  289. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_da.json +1 -1
  290. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_de.json +1 -1
  291. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_el.json +1 -1
  292. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_es.json +1 -1
  293. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_et.json +1 -1
  294. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_fi.json +1 -1
  295. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_fr.json +1 -1
  296. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_he.json +1 -1
  297. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_hr.json +1 -1
  298. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_hu.json +1 -1
  299. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_id.json +1 -1
  300. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_it.json +1 -1
  301. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ja.json +1 -1
  302. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ko.json +1 -1
  303. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_lt.json +1 -1
  304. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_lv.json +1 -1
  305. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_nb.json +1 -1
  306. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_nl.json +1 -1
  307. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_pl.json +1 -1
  308. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_pt-BR.json +1 -1
  309. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_pt-PT.json +1 -1
  310. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ro.json +1 -1
  311. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ru.json +1 -1
  312. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sk.json +1 -1
  313. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sl.json +1 -1
  314. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sr.json +1 -1
  315. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sv.json +1 -1
  316. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_th.json +1 -1
  317. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_tr.json +1 -1
  318. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_uk.json +1 -1
  319. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_vi.json +1 -1
  320. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_zh-CN.json +1 -1
  321. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_zh-HK.json +1 -1
  322. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_zh-TW.json +1 -1
  323. package/assets/esri/widgets/Popup/t9n/Popup_ar.json +1 -1
  324. package/assets/esri/widgets/Popup/t9n/Popup_bg.json +1 -1
  325. package/assets/esri/widgets/Popup/t9n/Popup_bs.json +1 -1
  326. package/assets/esri/widgets/Popup/t9n/Popup_ca.json +1 -1
  327. package/assets/esri/widgets/Popup/t9n/Popup_cs.json +1 -1
  328. package/assets/esri/widgets/Popup/t9n/Popup_da.json +1 -1
  329. package/assets/esri/widgets/Popup/t9n/Popup_de.json +1 -1
  330. package/assets/esri/widgets/Popup/t9n/Popup_el.json +1 -1
  331. package/assets/esri/widgets/Popup/t9n/Popup_es.json +1 -1
  332. package/assets/esri/widgets/Popup/t9n/Popup_et.json +1 -1
  333. package/assets/esri/widgets/Popup/t9n/Popup_fi.json +1 -1
  334. package/assets/esri/widgets/Popup/t9n/Popup_fr.json +1 -1
  335. package/assets/esri/widgets/Popup/t9n/Popup_he.json +1 -1
  336. package/assets/esri/widgets/Popup/t9n/Popup_hr.json +1 -1
  337. package/assets/esri/widgets/Popup/t9n/Popup_hu.json +1 -1
  338. package/assets/esri/widgets/Popup/t9n/Popup_id.json +1 -1
  339. package/assets/esri/widgets/Popup/t9n/Popup_it.json +1 -1
  340. package/assets/esri/widgets/Popup/t9n/Popup_ja.json +1 -1
  341. package/assets/esri/widgets/Popup/t9n/Popup_ko.json +1 -1
  342. package/assets/esri/widgets/Popup/t9n/Popup_lt.json +1 -1
  343. package/assets/esri/widgets/Popup/t9n/Popup_lv.json +1 -1
  344. package/assets/esri/widgets/Popup/t9n/Popup_nb.json +1 -1
  345. package/assets/esri/widgets/Popup/t9n/Popup_nl.json +1 -1
  346. package/assets/esri/widgets/Popup/t9n/Popup_pl.json +1 -1
  347. package/assets/esri/widgets/Popup/t9n/Popup_pt-BR.json +1 -1
  348. package/assets/esri/widgets/Popup/t9n/Popup_pt-PT.json +1 -1
  349. package/assets/esri/widgets/Popup/t9n/Popup_ro.json +1 -1
  350. package/assets/esri/widgets/Popup/t9n/Popup_ru.json +1 -1
  351. package/assets/esri/widgets/Popup/t9n/Popup_sk.json +1 -1
  352. package/assets/esri/widgets/Popup/t9n/Popup_sl.json +1 -1
  353. package/assets/esri/widgets/Popup/t9n/Popup_sr.json +1 -1
  354. package/assets/esri/widgets/Popup/t9n/Popup_sv.json +1 -1
  355. package/assets/esri/widgets/Popup/t9n/Popup_th.json +1 -1
  356. package/assets/esri/widgets/Popup/t9n/Popup_tr.json +1 -1
  357. package/assets/esri/widgets/Popup/t9n/Popup_uk.json +1 -1
  358. package/assets/esri/widgets/Popup/t9n/Popup_vi.json +1 -1
  359. package/assets/esri/widgets/Popup/t9n/Popup_zh-CN.json +1 -1
  360. package/assets/esri/widgets/Popup/t9n/Popup_zh-HK.json +1 -1
  361. package/assets/esri/widgets/Popup/t9n/Popup_zh-TW.json +1 -1
  362. package/assets/esri/widgets/Sketch/t9n/Sketch_ar.json +1 -1
  363. package/assets/esri/widgets/Sketch/t9n/Sketch_bg.json +1 -1
  364. package/assets/esri/widgets/Sketch/t9n/Sketch_bs.json +1 -1
  365. package/assets/esri/widgets/Sketch/t9n/Sketch_ca.json +1 -1
  366. package/assets/esri/widgets/Sketch/t9n/Sketch_cs.json +1 -1
  367. package/assets/esri/widgets/Sketch/t9n/Sketch_da.json +1 -1
  368. package/assets/esri/widgets/Sketch/t9n/Sketch_de.json +1 -1
  369. package/assets/esri/widgets/Sketch/t9n/Sketch_el.json +1 -1
  370. package/assets/esri/widgets/Sketch/t9n/Sketch_es.json +1 -1
  371. package/assets/esri/widgets/Sketch/t9n/Sketch_et.json +1 -1
  372. package/assets/esri/widgets/Sketch/t9n/Sketch_fi.json +1 -1
  373. package/assets/esri/widgets/Sketch/t9n/Sketch_fr.json +1 -1
  374. package/assets/esri/widgets/Sketch/t9n/Sketch_he.json +1 -1
  375. package/assets/esri/widgets/Sketch/t9n/Sketch_hr.json +1 -1
  376. package/assets/esri/widgets/Sketch/t9n/Sketch_hu.json +1 -1
  377. package/assets/esri/widgets/Sketch/t9n/Sketch_id.json +1 -1
  378. package/assets/esri/widgets/Sketch/t9n/Sketch_it.json +1 -1
  379. package/assets/esri/widgets/Sketch/t9n/Sketch_ja.json +1 -1
  380. package/assets/esri/widgets/Sketch/t9n/Sketch_ko.json +1 -1
  381. package/assets/esri/widgets/Sketch/t9n/Sketch_lt.json +1 -1
  382. package/assets/esri/widgets/Sketch/t9n/Sketch_lv.json +1 -1
  383. package/assets/esri/widgets/Sketch/t9n/Sketch_nb.json +1 -1
  384. package/assets/esri/widgets/Sketch/t9n/Sketch_nl.json +1 -1
  385. package/assets/esri/widgets/Sketch/t9n/Sketch_pl.json +1 -1
  386. package/assets/esri/widgets/Sketch/t9n/Sketch_pt-BR.json +1 -1
  387. package/assets/esri/widgets/Sketch/t9n/Sketch_pt-PT.json +1 -1
  388. package/assets/esri/widgets/Sketch/t9n/Sketch_ro.json +1 -1
  389. package/assets/esri/widgets/Sketch/t9n/Sketch_ru.json +1 -1
  390. package/assets/esri/widgets/Sketch/t9n/Sketch_sk.json +1 -1
  391. package/assets/esri/widgets/Sketch/t9n/Sketch_sl.json +1 -1
  392. package/assets/esri/widgets/Sketch/t9n/Sketch_sr.json +1 -1
  393. package/assets/esri/widgets/Sketch/t9n/Sketch_sv.json +1 -1
  394. package/assets/esri/widgets/Sketch/t9n/Sketch_th.json +1 -1
  395. package/assets/esri/widgets/Sketch/t9n/Sketch_tr.json +1 -1
  396. package/assets/esri/widgets/Sketch/t9n/Sketch_uk.json +1 -1
  397. package/assets/esri/widgets/Sketch/t9n/Sketch_vi.json +1 -1
  398. package/assets/esri/widgets/Sketch/t9n/Sketch_zh-CN.json +1 -1
  399. package/assets/esri/widgets/Sketch/t9n/Sketch_zh-HK.json +1 -1
  400. package/assets/esri/widgets/Sketch/t9n/Sketch_zh-TW.json +1 -1
  401. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ar.json +1 -1
  402. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_bg.json +1 -1
  403. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_bs.json +1 -1
  404. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ca.json +1 -1
  405. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_cs.json +1 -1
  406. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_da.json +1 -1
  407. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_de.json +1 -1
  408. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_el.json +1 -1
  409. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_es.json +1 -1
  410. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_et.json +1 -1
  411. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_fi.json +1 -1
  412. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_fr.json +1 -1
  413. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_he.json +1 -1
  414. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_hr.json +1 -1
  415. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_hu.json +1 -1
  416. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_id.json +1 -1
  417. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_it.json +1 -1
  418. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ja.json +1 -1
  419. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ko.json +1 -1
  420. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_lt.json +1 -1
  421. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_lv.json +1 -1
  422. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_nb.json +1 -1
  423. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_nl.json +1 -1
  424. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pl.json +1 -1
  425. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pt-BR.json +1 -1
  426. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pt-PT.json +1 -1
  427. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ro.json +1 -1
  428. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ru.json +1 -1
  429. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sk.json +1 -1
  430. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sl.json +1 -1
  431. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sr.json +1 -1
  432. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sv.json +1 -1
  433. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_th.json +1 -1
  434. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_tr.json +1 -1
  435. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_uk.json +1 -1
  436. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_vi.json +1 -1
  437. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-CN.json +1 -1
  438. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-HK.json +1 -1
  439. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-TW.json +1 -1
  440. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ar.json +1 -1
  441. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_bg.json +1 -1
  442. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_bs.json +1 -1
  443. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ca.json +1 -1
  444. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_cs.json +1 -1
  445. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_da.json +1 -1
  446. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_de.json +1 -1
  447. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_el.json +1 -1
  448. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_es.json +1 -1
  449. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_et.json +1 -1
  450. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_fi.json +1 -1
  451. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_fr.json +1 -1
  452. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_he.json +1 -1
  453. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_hr.json +1 -1
  454. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_hu.json +1 -1
  455. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_id.json +1 -1
  456. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_it.json +1 -1
  457. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ja.json +1 -1
  458. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ko.json +1 -1
  459. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_lt.json +1 -1
  460. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_lv.json +1 -1
  461. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_nb.json +1 -1
  462. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_nl.json +1 -1
  463. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_pl.json +1 -1
  464. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_pt-BR.json +1 -1
  465. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_pt-PT.json +1 -1
  466. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ro.json +1 -1
  467. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ru.json +1 -1
  468. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_sk.json +1 -1
  469. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_sl.json +1 -1
  470. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_sr.json +1 -1
  471. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_sv.json +1 -1
  472. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_th.json +1 -1
  473. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_tr.json +1 -1
  474. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_uk.json +1 -1
  475. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_vi.json +1 -1
  476. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_zh-CN.json +1 -1
  477. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_zh-HK.json +1 -1
  478. package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_zh-TW.json +1 -1
  479. package/chunks/AtmosphereCompositing.glsl.js +9 -5
  480. package/chunks/ChapmanAtmosphere.glsl.js +6 -6
  481. package/chunks/Fog.glsl.js +2 -2
  482. package/chunks/vec2.js +1 -1
  483. package/core/fontUtils.js +1 -1
  484. package/core/libs/gl-matrix-2/math/vec2.js +1 -1
  485. package/core/libs/gl-matrix-2/vec2.js +1 -1
  486. package/core/workers/workers.js +1 -1
  487. package/geometry/support/meshUtils/loadGLTFMesh.js +1 -1
  488. package/interfaces.d.ts +735 -128
  489. package/kernel.js +1 -1
  490. package/layers/OrientedImageryLayer.js +1 -1
  491. package/layers/graphics/controllers/I3SOnDemandController.js +1 -1
  492. package/networks/support/TraceJobInfo.d.ts +4 -0
  493. package/package.json +1 -1
  494. package/smartMapping/labels/bins.d.ts +4 -0
  495. package/support/revision.js +1 -1
  496. package/symbols/cim/CIMSymbolDrawHelper.js +1 -1
  497. package/symbols/cim/CIMSymbolHelper.js +1 -1
  498. package/symbols/cim/CIMSymbolRasterizer.js +1 -1
  499. package/symbols/support/previewCIMSymbol.js +1 -1
  500. package/views/2d/MapViewConstraints.js +1 -1
  501. package/views/3d/environment/ChapmanAtmosphere.js +1 -1
  502. package/views/3d/layers/I3SMeshView3D.js +1 -1
  503. package/views/3d/layers/SceneLayerWorker.js +1 -1
  504. package/views/3d/layers/graphics/Graphics3DIconSymbolLayer.js +1 -1
  505. package/views/3d/layers/i3s/I3SClientNodeLoader.js +1 -1
  506. package/views/3d/layers/i3s/I3SMeshViewFilter.js +1 -1
  507. package/views/3d/layers/i3s/I3SOverrides.js +1 -1
  508. package/views/3d/layers/i3s/featureEditing.js +1 -1
  509. package/views/3d/support/engineContent/line.js +1 -1
  510. package/views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js +3 -3
  511. package/views/3d/webgl-engine/lib/CompositingHelper.js +1 -1
  512. package/views/3d/webgl-engine/lib/PathVertex.js +1 -1
  513. package/views/3d/webgl-engine/shaders/AtmosphereCompositing.glsl.js +1 -1
  514. package/views/interactive/editGeometry/operations/ScaleVertex.js +1 -1
  515. package/views/interactive/editGeometry/support/editPlaneUtils.js +1 -1
  516. package/views/interactive/snapping/RightAngleSnapper.js +1 -1
  517. package/views/support/geometry2dUtils.js +1 -1
  518. package/views/support/geometry3dUtils.js +1 -1
  519. package/widgets/BasemapGallery.js +1 -1
  520. package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
  521. package/widgets/Editor/CreateFeaturesWorkflowData.js +1 -1
  522. package/widgets/Editor/UpdateWorkflow.js +1 -1
  523. package/widgets/Editor.js +1 -1
  524. package/widgets/Feature/FeatureMedia.js +1 -1
  525. package/widgets/FeatureForm.js +1 -1
  526. package/widgets/FeatureTemplates/ItemList.js +1 -1
  527. package/widgets/OrientedImageryViewer.js +1 -1
  528. package/widgets/UtilityNetworkTrace/UtilityNetworkTraceViewModel.js +1 -1
  529. package/widgets/UtilityNetworkTrace.js +1 -1
  530. package/widgets/support/chartUtils.js +1 -1
  531. package/widgets/support/chartUtilsAm5.js +1 -1
  532. package/assets/esri/core/workers/chunks/030b43764f945cb1f8b0.js +0 -1
  533. package/assets/esri/core/workers/chunks/b5fb9da45cc9dee286f8.js +0 -1
  534. package/assets/esri/core/workers/chunks/f6e68befe2812b90b40d.js +0 -1
package/kernel.js CHANGED
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import has from"./core/has.js";import{getInterceptor as t,addQueryParameter as e}from"./core/urlUtils.js";export{buildDate,commitHash as revision}from"./support/revision.js";const a="4.27";let s=a;s="4.27.0-rc.4";const r={async request(e,a){const{default:s}=await import("./request.js"),r=e.options,n=r.responseType;r.signal=a?.signal,r.responseType="native"===n||"native-request-init"===n?"native-request-init":n&&["blob","json","text"].includes(n)&&t(e.url)?.after?n:"array-buffer";const o=await s(e.url,r),i={data:o.data,httpStatus:o.httpStatus,ssl:o.ssl};switch(o.requestOptions?.responseType){case"native-request-init":return delete i.data.signal,i;case"blob":i.data=await i.data.arrayBuffer();break;case"json":i.data=(new TextEncoder).encode(JSON.stringify(i.data)).buffer;break;case"text":i.data=(new TextEncoder).encode(i.data).buffer}return{result:i,transferList:[i.data]}}};let n;function o(t){n=t}function i(t){const a=n?.findCredential(t);return a?.token?e(t,"token",a.token):t}has("host-webworker");export{i as addTokenParameter,s as fullVersion,n as id,o as setId,a as version,r as workerMessages};
5
+ import has from"./core/has.js";import{getInterceptor as t,addQueryParameter as e}from"./core/urlUtils.js";export{buildDate,commitHash as revision}from"./support/revision.js";const a="4.27";let s=a;s="4.27.0-rc.5";const r={async request(e,a){const{default:s}=await import("./request.js"),r=e.options,n=r.responseType;r.signal=a?.signal,r.responseType="native"===n||"native-request-init"===n?"native-request-init":n&&["blob","json","text"].includes(n)&&t(e.url)?.after?n:"array-buffer";const o=await s(e.url,r),i={data:o.data,httpStatus:o.httpStatus,ssl:o.ssl};switch(o.requestOptions?.responseType){case"native-request-init":return delete i.data.signal,i;case"blob":i.data=await i.data.arrayBuffer();break;case"json":i.data=(new TextEncoder).encode(JSON.stringify(i.data)).buffer;break;case"text":i.data=(new TextEncoder).encode(i.data).buffer}return{result:i,transferList:[i.data]}}};let n;function o(t){n=t}function i(t){const a=n?.findCredential(t);return a?.token?e(t,"token",a.token):t}has("host-webworker");export{i as addTokenParameter,s as fullVersion,n as id,o as setId,a as version,r as workerMessages};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../chunks/tslib.es6.js";import r from"../core/Error.js";import{property as o}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as t}from"../core/accessorSupport/decorators/subclass.js";import a from"./FeatureLayer.js";const i=e=>(r,o,t)=>{if(!r)return null;const a=r[0].orientedImageryProperties;return a?a[e]:null};let s=class extends a{constructor(){super(...arguments),this.geometryType="point",this.operationalLayerType="OrientedImageryLayer",this.type="oriented-imagery"}get effectiveElevationSource(){const{elevationSource:e,demPathPrefix:r,demPathSuffix:o}=this;if(!e?.url?.trim())return e;let t=e.url.trim();return r?.trim()&&(t=`${r.trim()}/${t}`),o?.trim()&&(t+=`/${o.trim()}`),{...e,url:t}}_verifySource(){if(super._verifySource(),"point"!==this.geometryType)throw new r("oriented-imagery-layer:invalid-geometry-type","OrientedImageryLayer only supports point geometry type")}};e([o({json:{type:Number,write:!0,read:{source:"layers",reader:i("cameraHeading")}}})],s.prototype,"cameraHeading",void 0),e([o({json:{type:Number,write:!0,read:{source:"layers",reader:i("cameraHeight")}}})],s.prototype,"cameraHeight",void 0),e([o({json:{type:Number,write:!0,read:{source:"layers",reader:i("cameraPitch")}}})],s.prototype,"cameraPitch",void 0),e([o({json:{type:Number,write:!0,read:{source:"layers",reader:i("cameraRoll")}}})],s.prototype,"cameraRoll",void 0),e([o({json:{type:Number,write:!0,read:{source:"layers",reader:i("coveragePercent")}}})],s.prototype,"coveragePercent",void 0),e([o({json:{write:!0,read:{source:"layers",reader:i("demPathPrefix")}}})],s.prototype,"demPathPrefix",void 0),e([o({json:{write:!0,read:{source:"layers",reader:i("demPathSuffix")}}})],s.prototype,"demPathSuffix",void 0),e([o({json:{write:!0,read:{source:"layers",reader:i("depthImagePathPrefix")}}})],s.prototype,"depthImagePathPrefix",void 0),e([o({json:{write:!0,read:{source:"layers",reader:i("depthImagePathSuffix")}}})],s.prototype,"depthImagePathSuffix",void 0),e([o({json:{type:Number,write:!0,read:{source:"layers",reader:i("farDistance")}}})],s.prototype,"farDistance",void 0),e([o({json:{write:!0}})],s.prototype,"geometryType",void 0),e([o({json:{type:Number,write:!0,read:{source:"layers",reader:i("horizontalFieldOfView")}}})],s.prototype,"horizontalFieldOfView",void 0),e([o({json:{write:!0,read:{source:"layers",reader:i("horizontalMeasurementUnit")}}})],s.prototype,"horizontalMeasurementUnit",void 0),e([o({json:{write:!0,read:{source:"layers",reader:i("imagePathPrefix")}}})],s.prototype,"imagePathPrefix",void 0),e([o({json:{write:!0,read:{source:"layers",reader:i("imagePathSuffix")}}})],s.prototype,"imagePathSuffix",void 0),e([o({json:{type:Number,write:!0,read:{source:"layers",reader:i("imageRotation")}}})],s.prototype,"imageRotation",void 0),e([o({type:Number,json:{write:!0,read:{source:"layers",reader:i("maximumDistance")}}})],s.prototype,"maximumDistance",void 0),e([o({json:{write:!0,read:{source:"layers",reader:i("nearDistance")}}})],s.prototype,"nearDistance",void 0),e([o({type:["OrientedImageryLayer"]})],s.prototype,"operationalLayerType",void 0),e([o({json:{write:!0,read:{source:"layers",reader:i("orientedImageryType")}}})],s.prototype,"orientedImageryType",void 0),e([o({json:{read:!1},value:"oriented-imagery",readOnly:!0})],s.prototype,"type",void 0),e([o({json:{write:!0,read:{source:"layers",reader:i("verticalFieldOfView")}}})],s.prototype,"verticalFieldOfView",void 0),e([o({json:{write:!0,read:{source:"layers",reader:i("verticalMeasurementUnit")}}})],s.prototype,"verticalMeasurementUnit",void 0),e([o({json:{write:!0,read:{source:"layers",reader:i("videoPathPrefix")}}})],s.prototype,"videoPathPrefix",void 0),e([o({json:{write:!0,read:{source:"layers",reader:i("videoPathSuffix")}}})],s.prototype,"videoPathSuffix",void 0),e([o({json:{write:!0,read:{source:"layers",reader:i("elevationSource")}}})],s.prototype,"elevationSource",void 0),e([o()],s.prototype,"effectiveElevationSource",null),s=e([t("esri.layers.OrientedImageryLayer")],s);const d=s;export{d as default};
5
+ import{_ as e}from"../chunks/tslib.es6.js";import r from"../core/Error.js";import{property as t}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as o}from"../core/accessorSupport/decorators/subclass.js";import a from"./FeatureLayer.js";function i(e){return(r,t,o)=>{if(!r)return null;const a=r[0].orientedImageryProperties;return a?.[e]??null}}let s=class extends a{constructor(){super(...arguments),this.geometryType="point",this.operationalLayerType="OrientedImageryLayer",this.type="oriented-imagery"}get effectiveElevationSource(){const{elevationSource:e,demPathPrefix:r,demPathSuffix:t}=this;if(!e?.url?.trim())return e;let o=e.url.trim();return r?.trim()&&(o=`${r.trim()}/${o}`),t?.trim()&&(o+=`/${t.trim()}`),{...e,url:o}}_verifySource(){if(super._verifySource(),"point"!==this.geometryType)throw new r("oriented-imagery-layer:invalid-geometry-type","OrientedImageryLayer only supports point geometry type")}};e([t({json:{type:Number,write:!0,read:{source:"layers",reader:i("cameraHeading")}}})],s.prototype,"cameraHeading",void 0),e([t({json:{type:Number,write:!0,read:{source:"layers",reader:i("cameraHeight")}}})],s.prototype,"cameraHeight",void 0),e([t({json:{type:Number,write:!0,read:{source:"layers",reader:i("cameraPitch")}}})],s.prototype,"cameraPitch",void 0),e([t({json:{type:Number,write:!0,read:{source:"layers",reader:i("cameraRoll")}}})],s.prototype,"cameraRoll",void 0),e([t({json:{type:Number,write:!0,read:{source:"layers",reader:i("coveragePercent")}}})],s.prototype,"coveragePercent",void 0),e([t({json:{write:!0,read:{source:"layers",reader:i("demPathPrefix")}}})],s.prototype,"demPathPrefix",void 0),e([t({json:{write:!0,read:{source:"layers",reader:i("demPathSuffix")}}})],s.prototype,"demPathSuffix",void 0),e([t({json:{write:!0,read:{source:"layers",reader:i("depthImagePathPrefix")}}})],s.prototype,"depthImagePathPrefix",void 0),e([t({json:{write:!0,read:{source:"layers",reader:i("depthImagePathSuffix")}}})],s.prototype,"depthImagePathSuffix",void 0),e([t({json:{type:Number,write:!0,read:{source:"layers",reader:i("farDistance")}}})],s.prototype,"farDistance",void 0),e([t({json:{write:!0}})],s.prototype,"geometryType",void 0),e([t({json:{type:Number,write:!0,read:{source:"layers",reader:i("horizontalFieldOfView")}}})],s.prototype,"horizontalFieldOfView",void 0),e([t({json:{write:!0,read:{source:"layers",reader:i("horizontalMeasurementUnit")}}})],s.prototype,"horizontalMeasurementUnit",void 0),e([t({json:{write:!0,read:{source:"layers",reader:i("imagePathPrefix")}}})],s.prototype,"imagePathPrefix",void 0),e([t({json:{write:!0,read:{source:"layers",reader:i("imagePathSuffix")}}})],s.prototype,"imagePathSuffix",void 0),e([t({json:{type:Number,write:!0,read:{source:"layers",reader:i("imageRotation")}}})],s.prototype,"imageRotation",void 0),e([t({type:Number,json:{write:!0,read:{source:"layers",reader:i("maximumDistance")}}})],s.prototype,"maximumDistance",void 0),e([t({json:{write:!0,read:{source:"layers",reader:i("nearDistance")}}})],s.prototype,"nearDistance",void 0),e([t({type:["OrientedImageryLayer"]})],s.prototype,"operationalLayerType",void 0),e([t({json:{write:!0,read:{source:"layers",reader:i("orientedImageryType")}}})],s.prototype,"orientedImageryType",void 0),e([t({json:{read:!1},value:"oriented-imagery",readOnly:!0})],s.prototype,"type",void 0),e([t({json:{write:!0,read:{source:"layers",reader:i("verticalFieldOfView")}}})],s.prototype,"verticalFieldOfView",void 0),e([t({json:{write:!0,read:{source:"layers",reader:i("verticalMeasurementUnit")}}})],s.prototype,"verticalMeasurementUnit",void 0),e([t({json:{write:!0,read:{source:"layers",reader:i("videoPathPrefix")}}})],s.prototype,"videoPathPrefix",void 0),e([t({json:{write:!0,read:{source:"layers",reader:i("videoPathSuffix")}}})],s.prototype,"videoPathSuffix",void 0),e([t({json:{write:!0,read:{source:"layers",reader:i("elevationSource")}}})],s.prototype,"elevationSource",void 0),e([t()],s.prototype,"effectiveElevationSource",null),s=e([o("esri.layers.OrientedImageryLayer")],s);const d=s;export{d 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.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../core/Accessor.js";import i from"../../../core/Handles.js";import has from"../../../core/has.js";import s from"../../../core/Logger.js";import r from"../../../core/PooledArray.js";import{EsriPromiseMixin as a}from"../../../core/Promise.js";import{isAbortError as d}from"../../../core/promiseUtils.js";import{watch as o,initial as n,sync as l}from"../../../core/reactiveUtils.js";import{property as h}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import{subclass as u}from"../../../core/accessorSupport/decorators/subclass.js";import{projectBoundingRect as _}from"../../../geometry/projection.js";import{create as c,intersectsSphere as p}from"../../../geometry/support/aaBoundingRect.js";import{makeDehydratedPoint as g}from"../dehydratedFeatures.js";import{PromiseQueue as m}from"../../support/PromiseQueue.js";import{viewingModeFromString as y}from"../../../views/ViewingMode.js";import{I3SClientNodeLoader as x}from"../../../views/3d/layers/i3s/I3SClientNodeLoader.js";import{addCallback as f}from"../../../views/3d/layers/i3s/I3SFrameTask.js";import{I3SIndex as b}from"../../../views/3d/layers/i3s/I3SIndex.js";import N from"../../../views/3d/layers/i3s/I3SLodHandling.js";import{NodeState as w,CacheState as v}from"../../../views/3d/layers/i3s/I3SNode.js";import C from"../../../views/3d/layers/i3s/I3SNodeLoader.js";import{I3SStreamDataController as D}from"../../../views/3d/layers/i3s/I3SStreamDataController.js";import{getVertexCrs as L,getIndexCrs as S,findIntersectingNodes as V}from"../../../views/3d/layers/i3s/I3SUtil.js";import I from"../../../views/3d/layers/i3s/I3SViewportQueries.js";import{FadeDirection as A}from"../../../views/3d/layers/support/I3SLayerView.js";import{toBoundingRect as F}from"../../../views/3d/support/extentUtils.js";import{ClientType as M,maxDownloadSlots as O}from"../../../views/3d/support/index.js";import{extractSafeScaleBounds as U,scaleBoundsPredicate as P}from"../../../views/support/layerViewUtils.js";import{noBudget as G}from"../../../views/support/Scheduler.js";const q="esri.layers.graphics.controllers.I3SOnDemandController",j=s.getLogger(q),Q=100,T=2,E=1e4,H=1e-4,k=1.2,R=500,B=1.5;let z=class extends(a(t)){get isMeshPyramid(){return"mesh-pyramids"===this.layer.profile||"MeshPyramid"===this.layer.store?.lodType}get isGraphics3D(){return"points"===this.layer.profile}get useMaximumNumberOfFeatures(){return!this.isMeshPyramid&&(null==this.layer.priority||"High"===this.layer.priority)}get indexStreamController(){const e=this.layerView.view.resourceController.createStreamDataRequester(M.I3S_INDEX);return new D(e,this.layer.apiKey)}get dataStreamController(){const e=this.layerView.view.resourceController.createStreamDataRequester(M.I3S_DATA);return new D(e,this.layer.apiKey)}get crsVertex(){return L(this.layer)}get crsIndex(){return S(this.layer)}get layer(){return this.layerView.i3slayer}get running(){return this.updating}get rootNodeVisible(){if(null!=this._index){const e=this._index.rootNode;if(null!=e)return this._updateViewData(),this._index.isNodeVisible(e.index)}return!0}get index(){return this._index}constructor(e){super(e),this.screenSizeFactor=0,this.featureTarget=5e4,this.fixedFeatureTarget=!1,this.updating=!0,this.updatingProgress=1,this.leavesReached=!1,this.scaleVisibilityEnabled=!0,this.worker=null,this._featureLOD=1,this._stableFeatureLOD=!1,this._isIdle=!1,this._cameraDirty=!0,this._invisibleDirty=!1,this._idleStateCallbacks=null,this._newLoadingNodes=new r({deallocator:null}),this._loadedNodeScales=new Map,this._modificationsNodeFilteringArray=new r,this._downloadingCount=0,this._loadingNodes=new Map,this._updatingNodes=new Map,this._progressMaxNumNodes=1,this._requiredAttributes=new Array,this._requiredAttributesDirty=!0,this._updatesDisabled=!1,this.disableIDBCache=!1,this._disableMemCache=!1,this._restartNodeLoading=!1,this._fields=null,this._attributeStorageInfo=null,this._handles=new i,this._idleQueue=new m,this._elevationUpdateNodes=new r({deallocator:null}),this._errorCount=0}initialize(){const{layerView:e,layer:t}=this;this._disableMemCache=!e.loadCachedGPUData||!e.addCachedGPUData,this._lodHandling=new N(e),this._defaultGeometrySchema=t.store.defaultGeometrySchema,this.disableIDBCache=has("disable-feature:idb-cache"),"fields"in t&&(this._fields=t.fields,this._attributeStorageInfo=t.attributeStorageInfo),this.addResolvingPromise(Promise.all([t.indexInfo,t.when(),e.when()]).then((([i])=>{if(this.destroyed||!e||e.destroyed||!i)return;const{view:s,clientGeometry:r}=e,{resourceController:a}=s;if(this._setClippingArea(s.clippingArea),this.addHandles([o((()=>s?.pointsOfInterest?.focus?.renderLocation),(e=>this._pointOfInterestChanged(e)),n),o((()=>a.memoryController.memoryFactor),(()=>this._setCameraDirty()),l),o((()=>e.contentVisible),(e=>{const t=e?()=>this._updateIdleState(!0):()=>this._updateViewData(),i=e?()=>this._updateIdleState(!1):()=>{};e&&null!=this._index&&this._index.invalidateAllElevationRanges(),this._idleStateCallbacks?(e||this.cancelNodeLoading(),this.restartNodeLoading(),this._idleStateCallbacks.idleBegin=t,this._idleStateCallbacks.idleEnd=i):this._idleStateCallbacks=a.scheduler.registerIdleStateCallbacks(t,i)}),n),f(e.view.resourceController.scheduler,this),o((()=>e.uncompressedTextureDownsamplingEnabled),(()=>this.restartNodeLoading())),o((()=>[this.featureTarget,this.fixedFeatureTarget]),(()=>{this._setCameraDirty(),this._stableFeatureLOD=!1})),o((()=>s.state?.contentCamera),(()=>this._setCameraDirty())),o((()=>t.elevationInfo),(e=>this._elevationInfoChanged(e))),o((()=>t.effectiveScaleRange),(()=>this._scaleBoundsChanged())),o((()=>e.lodFactor),(()=>this._setCameraDirty())),o((()=>e.availableFields),(()=>this._requiredFieldsChange())),o((()=>e.holeFilling),(e=>null!=this._index&&(this._index.holeFilling=e)))]),this._updateScaleHandles(),this._viewportQueries=new I(this.crsIndex,s.renderCoordsHelper,s.state.contentCamera,!s.state.fixedContentCamera||this.isGraphics3D,this._clippingArea,this.isMeshPyramid?s.basemapTerrain:s.elevationProvider,y(s.viewingMode),this.layer.elevationInfo,{progressiveLoadFactor:this._getProgressiveLoadFactor(),screenspaceErrorBias:this._lod,angleDependentLoD:this._lod<.5}),this._clientNodeLoader=new x(this.layer.uid,this.crsIndex,s.renderCoordsHelper.spatialReference,s.state.viewingMode,s.resourceController.memoryController,this.worker),this._index=new b(t,i,this.indexStreamController,this._clientNodeLoader,this._viewportQueries,j,e.holeFilling,(t=>e.isNodeLoaded(t)),(t=>e.isNodeReloading(t)),(e=>this._shouldLoadNode(e)),(e=>this._enableFromGPUCache(e,w.Leaf)),(e=>this._needsUpdate(e)),(()=>!this.indexStreamController.busy),(t=>e.computeVisibilityObb?e.computeVisibilityObb(t):null),e?.computeNodeFiltering?t=>e.computeNodeFiltering(t):void 0),this._index.updateElevationInfo(this.layer.elevationInfo,this.isMeshPyramid||this.isGraphics3D),this._index.imModificationsChanged(!!e.hasModifications),null!=r){for(const e of r)this._addMesh(e.mesh,e.oid);this.addHandles(r.on("change",(e=>{for(const t of e.removed)this._removeMesh(t.oid);for(const t of e.added)this._addMesh(t.mesh,t.oid)})))}this._startNodeLoading()}))),this._tmpPoint=g(0,0,0,this.crsIndex)}updateNodeModificationStatus(e){const t=this._index,i=this.layerView;null!=t&&i?.updateNodeModificationStatus&&(this._modificationsNodeFilteringArray.clear(),e.forAll((e=>{const i=t.getNode(e);null!=i&&this._modificationsNodeFilteringArray.push(i)})),i.updateNodeModificationStatus(this._modificationsNodeFilteringArray),this._invisibleDirty=!0)}destroy(){this.cancelNodeLoading(),this._idleStateCallbacks&&(this._isIdle=!1,this._idleStateCallbacks.remove(),this._idleStateCallbacks=null),this._handles.destroy(),this._nodeLoader=null,K.prune(),null!=W&&(W.hide(),W=null)}_getRequiredAttributes(){if(null==this._attributeStorageInfo||!this._fields||!this.layerView.availableFields)return[];const e=this._attributeStorageInfo,t=this._fields,i=this.layer.objectIdField;return this.layerView.availableFields.map((i=>{const s=$(e,i),r=$(t,i);return s>=0&&r>=0?{index:s,name:t[r].name,field:t[r],attributeStorageInfo:e[s]}:null})).filter((e=>null!=e&&e.name!==i))}_requiredFieldsChange(){const e=this._getRequiredAttributes();X(this._requiredAttributes,e)||(this._requiredAttributes=e,this._requiredAttributesDirty=!1,this.restartNodeLoading())}requestUpdate(){this._requiredAttributesDirty=!0,this.restartNodeLoading()}_setClippingArea(e){const t=c();F(e,t,this.layerView.view.renderSpatialReference)?this._clippingArea=t:this._clippingArea=null}_pointOfInterestChanged(e){null!=this._viewportQueries&&(this._viewportQueries.setPointOfInterest(e),null!=this._index&&(this._index.progressiveLoadPenalty=J.distancePenalty*this._viewportQueries.distCameraToPOI(),this._index.requestUpdate()))}updateClippingArea(e){this._setClippingArea(e),null!=this._viewportQueries&&null!=this._index&&(this._viewportQueries.updateClippingArea(this._clippingArea),this._index.invalidateVisibilityCache()),this._setCameraDirty()}_setCameraDirty(){this._cameraDirty=!0,this._lodHandling.setLodGlobalDirty(),this._evaluateUpdating()}_addMesh(e,t){if(null==this._index)return;const i=this._clientNodeLoader.createMeshNodeInfo(e,t),s=this._index.addClientNodeToIndex(i.id,i.mbs);this._clientNodeLoader.addMeshNode(s,i),this._evaluateUpdating(),this.notifyChange("rootNodeVisible")}_removeMesh(e){const t=this._clientNodeLoader.getMeshNodeIndex(e);if(null==this._index||null==t)throw new Error("delayed removal of client side i3s node geometry not supported yet.");{const e=(e,t)=>{this.layerView.removeNode(t),this._loadedNodeScales.delete(t),this._clientNodeLoader.removeNode(e),this.layerView.deleteCachedNodeData&&null!=e&&this.layerView.deleteCachedNodeData(e),this.layerView.deleteCachedGPUData?.(this.layerView.loadCachedGPUData?.(t))},i=(e,t,i)=>{this._clientNodeLoader.updateNodeIndex(e,t,i),this.layerView.updateNodeIndex&&this.layerView.updateNodeIndex(t,i)};this._index.removeClientNodeFromIndex(t,e,i),this.notifyChange("rootNodeVisible")}}updateElevationChanged(e,t){const i=this._index;if(null==i||null==i.rootNode||null==t)return null;this.crsIndex.equals(t)||(_(e,t,Y,this.crsIndex),e=Y);const s=this._elevationUpdateNodes;return s.clear(),V(e,i.rootNode,i,(e=>s.push(e.index))),s.length&&(s.forAll((e=>i.updateElevationChanged(e))),this._setCameraDirty()),s}removeAllGeometryObbs(){null!=this._index&&this._index.removeAllGeometryObbs()}getRenderMbs(e){return null!=this._viewportQueries?this._viewportQueries.getRenderMbs(e):null}_elevationInfoChanged(e){null!=this._index&&(this._index.updateElevationInfo(e,this.isMeshPyramid||this.isGraphics3D),this._setCameraDirty())}_updateScaleHandles(){const e="scale-bounds";this._handles.remove(e),this._areScaleBoundsActive&&this._handles.add(this.layerView.view.basemapTerrain.on("scale-change",(e=>this._scaleUpdateHandler(e))),e)}_scaleBoundsChanged(){this._areScaleBoundsActive||this._loadedNodeScales.clear(),this._updateScaleHandles(),this._setCameraDirty()}_scaleUpdateHandler(e){this._updateScaleInBoundingRect(e.extent,e.spatialReference),this._setCameraDirty()}_updateScaleInBoundingRect(e,t){const i=this._index;if(null==i)return;null!=i.rootNode&&_(e,t,Y,this.crsIndex)&&this._loadedNodeScales.forEach(((e,t)=>{const s=i.getNode(t);null!=s&&p(Y,s.mbs)&&this._loadedNodeScales.set(t,this._computeScale(s))}))}restartNodeLoading(){this._restartNodeLoading=!0,this.cancelNodeLoading(),this._evaluateUpdating()}schedule(e,t){return this._idleQueue.push(e,t)}reschedule(e,t){return this._idleQueue.unshift(e,t)}get _isIntegratedMesh(){return"integrated-mesh"===this.layer.type}get _areScaleBoundsActive(){const{minScale:e,maxScale:t}=U(this.layer);return this.scaleVisibilityEnabled&&(e>0||t>0)}get unloadedMemoryEstimate(){return null!=this._index&&this.layerView.contentVisible?this._index.unloadedMemoryEstimate*this._lodDropFactor:0}async _loadNodeData(e,t){return(e.index<0?this._clientNodeLoader:this._nodeLoader).loadNodeData(e,t)}async _loadAttributes(e,t,i){return(e.index<0?this._clientNodeLoader:this._nodeLoader).loadAttributes(e,t,i)}get indexDepth(){return null!=this._index?this._index.maxLevel:0}set disableMemCache(e){this.layerView.loadCachedGPUData&&this.layerView.addCachedGPUData||(this._disableMemCache=!0),this._disableMemCache=e}runTask(e,t){return this.layerView.contentVisible?this.layerView.visible&&null!=this._index?(this._processWithErrorLogging(e,t),this._index.maxPriority):-1/0:(this._updateViewData(),this._evaluateUpdating(),-1/0)}_processWithErrorLogging(e,t){try{this._process(e,t)}catch(i){this._errorCount<50?j.error("Error during processing: "+i):50===this._errorCount&&j.error("Too many errors for this layer. Further errors will not be displayed."),this._errorCount++}}_process(e,t){this._restartNodeLoading&&this._startNodeLoading(),null!=this._nodeLoader&&null!=this._index&&(this._updateViewData(),this._invisibleDirty&&this._removeInvisibleNodes(e)&&(this._invisibleDirty=!1),this._isIntegratedMesh&&(e.enabled=!1),e.run((()=>this._processIndex(e))),this._updateFeatureLOD(),e.run((()=>this._processCache(e))),this._isIntegratedMesh&&(e.enabled=!0),e.run((()=>this._processNodes(e,t))),this._idleQueue.runTask(e),e.run((()=>this._prefetchIndex())),t.numIndexLoading+=this._index.indexLoading,t.numNodesLoading+=this._downloadingCount,e.run((()=>this._lodHandling.lodGlobalHandling(e))),this._evaluateUpdating())}_processIndex(e){if(null==this._index)return!1;if(this._index.dirty){this._newLoadingNodes.clear(),this._index.update(Array.from(this._loadingNodes.keys()),e,(e=>this.updateNodeModificationStatus(e))),this._disableMemCache||(this._newLoadingNodes.pushArray(this._index.updates.add.data,this._index.updates.add.length),this._newLoadingNodes.pushArray(this._index.updates.missing.data,this._index.updates.missing.length));const t=this._index.featureEstimate.leavesReached;this._index.isLoading||t===this._get("leavesReached")||this._set("leavesReached",t)}return this._index.load()}_prefetchIndex(){return!(null==this._index||this._loadingNodes.size>0||this._index.updates.add.length>0)&&this._index.prefetch()}_updateFeatureLOD(){if(!this.useMaximumNumberOfFeatures||null==this._index||null==this._viewportQueries)return;const e=!this._index.isLoading,t=this.featureTarget*this._baseLOD,i=this._index.featureEstimate;if(i.estimate=i.estimate||t/2,this._index.indexMissing>R){if(this._featureLOD<=H)return;this._featureLOD/=B,this._stableFeatureLOD=!1}else if(e&&i.estimate<t){if(i.leavesReached||this._featureLOD>=E||this._stableFeatureLOD)return;const e=Math.min(10,Math.max(t/i.estimate,1.001));this._featureLOD*=e;const s=this._lod,r=this._index.checkFeatureTarget(t,s);r!==s&&(this._featureLOD=r/this._baseLOD,this._stableFeatureLOD=!0)}else{if(!(i.estimate>t*k||e&&i.estimate>t))return;if(this._featureLOD<=H)return;this._featureLOD/=1+.25*(i.estimate/t-1),this._stableFeatureLOD=!1}this._featureLOD=Math.min(E,Math.max(H,this._featureLOD)),this._viewportQueries.updateScreenSpaceErrorBias(this._lod),this._index.requestUpdate()}_processCache(e){const t=this._index;if(null==t)return!1;for(;this._newLoadingNodes.length>0&&!e.done;){const i=this._newLoadingNodes.pop();for(let s=t.getParent(i);null!=s&&(!this.layerView.isNodeLoaded(s.index)&&this._isNodeInScaleBounds(s));s=t.getParent(s.index))if(this._enableFromGPUCache(s,w.Hole)){e.madeProgress();break}}return e.hasProgressed}_processNodes(e,t){if(null==this._index)return!1;let i=(this._isIdle?Q:T)-this._loadingNodes.size;const s=this._index.updates;for(s.cancel.forEach(this._cancelNode,this),s.cancel=[];s.remove.length>0&&!e.done;)this.layerView.removeNode(s.remove.pop()),e.madeProgress();for(;s.update.length>0&&!e.done;){const t=this._index.getNode(s.update.pop());null!=t&&(this._updateLoadedNode(t),e.madeProgress())}for(;s.add.length>0&&!e.done&&i>0;){--i;const r=this._index.getNode(s.add.back());if(null==r||r.cacheState!==v.Cached&&!this._hasNodeLoadToken(t))break;s.add.pop(),this._loadNode(r),e.madeProgress()}return e.hasProgressed}_cancelAllNodes(){this._loadingNodes.forEach((e=>e.abort())),this._loadingNodes.clear(),this._updatingNodes.forEach((e=>e.abort())),this._updatingNodes.clear()}_cancelNode(e){const t=this._loadingNodes.get(e);t&&(t.abort(),this._loadingNodes.delete(e))}_hasNodeLoadToken(e){return!(!this._isIdle&&e.numNodesLoading+this._loadingNodes.size>=T)&&(this._downloadingCount<O&&!this.dataStreamController.busy)}_evaluateUpdating(){let e=!1,t=0;if(this.layerView){if(this.layerView.contentVisible){const i=(null!=this._index?this._index.indexMissing:0)+3*(null!=this._index?this._index.updates.add.length:0)+2*this._loadingNodes.size;e=!!(i>0||this._updatingNodes.size>0||this._restartNodeLoading||this._cameraDirty||this._idleQueue.running||this._lodHandling&&this._lodHandling.requiresLODGlobalHandling||null!=this._index&&this._index.isPrefetching),0===i&&(this._progressMaxNumNodes=1),this._progressMaxNumNodes=Math.max(i,this._progressMaxNumNodes),t=1-i/this._progressMaxNumNodes}else e=this._cameraDirty,t=e?0:1;this.updating=e,this.updatingProgress=t}}_updateViewData(){if(!this._cameraDirty||null==this._index||null==this._viewportQueries)return;const e=this.layerView.view,{contentCamera:t,fixedContentCamera:i}=e.state;this.screenSizeFactor=1/(t.perScreenPixelRatio/2),this._viewportQueries.updateCamera(t,!i||this.isGraphics3D),this._viewportQueries.setPointOfInterest(e.pointsOfInterest.focus.renderLocation),this._viewportQueries.updateScreenSpaceErrorBias(this._lod),this._index.invalidateVisibilityCache(),this._index.progressiveLoadPenalty=J.distancePenalty*this._viewportQueries.distCameraToPOI(),this._index.requestUpdate(),this._stableFeatureLOD=!1,this._invisibleDirty=!0,this._cameraDirty=!1,this.notifyChange("rootNodeVisible")}_getProgressiveLoadFactor(){return this.layerView.view.resourceController.memoryController.memoryFactor<1?1:this.layerView.progressiveLoadFactor}get _lod(){return this._featureLOD*this._baseLOD}get _baseLOD(){const e=this.layerView.lodFactor,t=this.layerView.view.resourceController.memoryController.memoryFactor;return this.fixedFeatureTarget?1:(e>0?e:1)*t}get _lodDropFactor(){if(this.fixedFeatureTarget)return 1;const e=this.layerView.view.resourceController.memoryController;return(Math.min(e.memoryFactor,.5)-e.minQuality)/(.5-e.minQuality)}isGeometryVisible(e){return null!=this._index&&this._index.isGeometryVisible(e.index)}updateVisibility(e){null!=this._index&&this._index.invalidateNodeVisibilityCache(e)}invalidateGeometryVisibility(e){null!=this._index&&this._index.invalidateGeometryVisibility(e)}invalidateVisibilityObbs(){null!=this._index&&this._index.invalidateVisibilityObbs()}modificationsChanged(){null!=this._index&&this._index.imModificationsChanged(!!this.layerView.hasModifications),this._invisibleDirty=!0}_shouldLoadNode(e){return!(!this._lodHandling.shouldLoadNode(e)||this._shouldDropNode(e))&&(!(null==this._index||!this._index.isGeometryVisible(e.index))&&this._isNodeInScaleBounds(e))}_shouldDropNode(e){if(null==this._viewportQueries)return!1;const t=this._lodDropFactor;if(t>=1||!this._lodHandling.hasNoVisibleChildren(e))return!1;return Math.abs(this._viewportQueries.calcCameraDistanceToCenter(e))-this._viewportQueries.minDistance>(this._viewportQueries.maxDistance-this._viewportQueries.minDistance)*t}_startNodeLoading(){this._restartNodeLoading=!1;const e=this._index;if(this._updatesDisabled||null==e||null==this._viewportQueries)return;this._updateViewData(),this._requiredAttributesDirty&&(this._requiredAttributes=this._getRequiredAttributes(),this._requiredAttributesDirty=!1);const t={textureEncodings:this.layerView.supportedTextureEncodings,uncompressedTextureDownsamplingEnabled:this.layerView.uncompressedTextureDownsamplingEnabled,textureUsageMask:this.layerView.rendererTextureUsage,loadFeatureData:this.useMaximumNumberOfFeatures};this._nodeLoader=new C(this.layer,this.dataStreamController,j,this._defaultGeometrySchema,this._requiredAttributes,t),e.requestUpdate(),this._lodHandling.startNodeLoading((e=>this._isNodeInScaleBounds(e)),((e,t)=>this._removeNodes(e,t,Z.fadeout)),e,{maxLodLevel:this._viewportQueries.maxLodLevel}),this._evaluateUpdating()}isNodeLoading(){return null!=this._nodeLoader&&null!=this._index}cancelNodeLoading(){this.isNodeLoading()&&(this.indexStreamController.cancelAll(),this.dataStreamController.cancelAll(),this._idleQueue.cancelAll(),this._cancelAllNodes(),this._nodeLoader=null,this._evaluateUpdating())}_removeInvisibleNodes(e){const t=this._index;if(null==t||null==this._viewportQueries)return!1;K.clear(),this.layerView.getLoadedNodeIndices(K);const i=0===this._viewportQueries.maxDistance,s=i?()=>!1:e=>this._shouldDropNode(e);return K.filterInPlace((e=>{const i=t.getNode(e);return null==i||!t.isGeometryVisible(e)||s(i)||!this._isNodeInScaleBounds(i)})),K.length>0&&this._lodHandling.setLodGlobalDirty(),this._removeNodes(K,e,Z.pop),!(i&&this._lodDropFactor<1)&&(0===K.length||(K.clear(),!1))}markNodeToRemove(e){K.push(e)}removeMarkedNodes(){this._removeNodes(K,G,Z.pop)}_removeNodes(e,t,i){const s=e.length;if(0!==s&&!t.done){for(null!=this._index&&this._index.requestUpdate();e.length>0&&!t.done;){const s=e.pop(),r=this._index;i===Z.fadeout&&this.layerView.nodeFadeoutEnabled&&null!=r&&r.isGeometryVisible(s)?this.layerView.fadeNode(s,A.FadeOut,!0):this.layerView.removeNode(s),t.madeProgress()}if(this._loadedNodeScales.size>0)for(let t=e.length;t<s;t++){const i=e.data[t];this._loadedNodeScales.delete(i)}}}_needsUpdate(e){if(e.resources.isEmpty||this._updatingNodes.has(e.index))return!1;const t=this.layerView.getLoadedAttributes(e.index);return null!=t&&t!==this._requiredAttributes}async _updateLoadedNode(e){const t=new AbortController;this._updatingNodes.set(e.index,t),this._evaluateUpdating();try{const i=X(this.layerView.getLoadedAttributes(e.index),this._requiredAttributes);let s=null;s=i?await Promise.resolve(this.layerView.getAttributeData(e.index)):await this._loadAttributes(e,this._requiredAttributes,t.signal),await this.schedule((()=>this.layerView.updateAttributes(e.index,{loadedAttributes:this._requiredAttributes,attributeData:s},t.signal)),t.signal)}catch(i){if(!d(i))return this.layerView.updateAttributes(e.index,{loadedAttributes:this._requiredAttributes,attributeData:{}},t.signal)}this._updatingNodes.delete(e.index),this._evaluateUpdating()}_loadNode(e){if(this._loadingNodes.has(e.index))return void j.error("already loading node "+e.index);const t=new AbortController;this._loadingNodes.set(e.index,t),this._evaluateUpdating(),this._loadAndAddNode(e,t.signal).then((i=>{i&&null!=this._index&&this._loadingNodes.get(e.index)===t&&(this._loadingNodes.delete(e.index),this._index.requestUpdate())})).catch((e=>{if(!d(e))throw e})).finally((()=>{this._loadingNodes.get(e.index)===t&&this._loadingNodes.delete(e.index),this._evaluateUpdating()}))}_loadAndAddNode(e,t){return e.cacheState===v.Uncached?this._loadUncached(e,t).then((()=>!1)):this._loadCached(e,t).then((t=>!t&&(e.cacheState=v.Uncached,!0))).catch((t=>!d(t)&&(e.cacheState=v.Uncached,!0)))}_enableFromGPUCache(e,t){if(this._disableMemCache||null==this._index)return!1;if(t===w.Hole&&!this._index.useNodeAsHole(e.index))return!0;const i=this._loadCachedGPUData(e);return!!i&&(this.layerView.addCachedGPUData(e,i,t),this._nodeAdded(),!0)}_loadCachedGPUData(e){const t=this.layerView.loadCachedGPUData(e.index);return null!=t&&null!=t.attributeInfo&&X(t.attributeInfo.loadedAttributes,this._requiredAttributes)?t:(this.layerView.deleteCachedGPUData(t),null)}_nodeAdded(){null!=this._index&&this._index.requestUpdate(),this._lodHandling.setLodGlobalDirty(),this._evaluateUpdating()}updateLoadStatus(e,t){const i=this._index;null!=i&&i.updateChildrenLoaded(e,t?1:-1)}async _loadCached(e,t){if(this._enableFromGPUCache(e,w.Leaf))return!0;const i=this.layerView;if(this.disableIDBCache||!i.loadCachedNodeData||!i.addCachedNodeData)return!1;const s=(t,i)=>this._nodeLoader.loadTextures(e,t,i),r=(t,i)=>this._clientNodeLoader.loadTextures(e,t,i),a=e.index>=0?s:r,d=await this.schedule((()=>i.loadCachedNodeData(e,t,a)),t);if(null==d)return!1;const o=this._requiredAttributes,n=await this.reschedule((()=>this._loadAttributes(e,o,t)),t);return await this.reschedule((()=>i.addCachedNodeData(e,d,{loadedAttributes:o,attributeData:n},t)),t),this._nodeAdded(),!0}_loadUncached(e,t){return this._downloadingCount++,this._loadNodeData(e,t).catch((e=>{throw this._downloadingCount--,e})).then((i=>(this._downloadingCount--,this.schedule((()=>this.layerView.addNode(e,i,t)),t)))).then((()=>{this._nodeAdded(),e.cacheState=v.Cached})).catch((t=>{if(!d(t))throw j.error("#loadNodeData()",this.layer,`Failed to load node '${e.id}'`,t),e.failed=!0,null!=this._index&&this._index.requestUpdate(),t}))}_updateIdleState(e){e!==this._isIdle&&(this._isIdle=e,this._evaluateUpdating(),e&&this._index&&null!=this._index&&this._index.resetFailedNodes())}_getScale(e){if(this._loadedNodeScales.has(e.index))return this._loadedNodeScales.get(e.index);const t=this._computeScale(e);return this.layerView.isNodeLoaded(e.index)&&this._loadedNodeScales.set(e.index,t),t}_computeScale(e){this._tmpPoint.x=e.mbs[0],this._tmpPoint.y=e.mbs[1],this._tmpPoint.z=e.mbs[2];const t=e.mbs[3];return this.layerView.view.basemapTerrain.getSphereScale(this._tmpPoint,t)}_isNodeInScaleBounds(e){if(!this._areScaleBoundsActive)return!0;const t=this._getScale(e),{minScale:i,maxScale:s}=U(this.layer);return P(t,i,s)}updateStats(e){e.index=null!=this._index?this._index.size:0,this.isGraphics3D&&(e.detail=this._featureLOD,e.target=this.featureTarget*this._baseLOD),null!=this._index&&this._index.updateStats(e)}get test(){const e=this;return{index:this._index,set disableUpdates(t){e._updatesDisabled=t,t?e.cancelNodeLoading():e.requestUpdate()},set disableIDBCache(t){e.disableIDBCache=t},set ignoreServiceObb(t){null!=e._index&&(e._index.ignoreServiceObb=t)},shouldLoadNode:t=>e._shouldLoadNode(t)}}notifyLODUpdate(){this._lodHandling.setLodGlobalDirty(),this._evaluateUpdating(),null!=this._index&&this._index.requestUpdate()}geometryFilterChanged(e){const t=this._index;null!=t&&t.layerFilterChanged(e),this._setCameraDirty()}};e([h({readOnly:!0})],z.prototype,"isMeshPyramid",null),e([h({readOnly:!0})],z.prototype,"isGraphics3D",null),e([h({readOnly:!0})],z.prototype,"useMaximumNumberOfFeatures",null),e([h({readOnly:!0})],z.prototype,"indexStreamController",null),e([h({readOnly:!0})],z.prototype,"dataStreamController",null),e([h({readOnly:!0})],z.prototype,"crsVertex",null),e([h({readOnly:!0})],z.prototype,"crsIndex",null),e([h()],z.prototype,"screenSizeFactor",void 0),e([h()],z.prototype,"featureTarget",void 0),e([h()],z.prototype,"fixedFeatureTarget",void 0),e([h()],z.prototype,"layerView",void 0),e([h()],z.prototype,"layer",null),e([h()],z.prototype,"updating",void 0),e([h({readOnly:!0})],z.prototype,"running",null),e([h()],z.prototype,"updatingProgress",void 0),e([h({readOnly:!0})],z.prototype,"leavesReached",void 0),e([h({constructOnly:!0})],z.prototype,"scaleVisibilityEnabled",void 0),e([h({constructOnly:!0})],z.prototype,"worker",void 0),e([h({readOnly:!0,dependsOn:[]})],z.prototype,"rootNodeVisible",null),z=e([u(q)],z);const K=new r({deallocator:null});let W;function X(e,t){return null!=e&&e.length===t.length&&e.every((e=>$(t,e.name)>=0))}function $(e,t){const i=t.toLowerCase();for(let s=0;s<e.length;s++)if(e[s].name.toLowerCase()===i)return s;return-1}const J={factorIM:.2,factor3dObject:.05,distancePenalty:10},Y=c();var Z;!function(e){e[e.pop=0]="pop",e[e.fadeout=1]="fadeout"}(Z||(Z={}));const ee=z;export{ee as default};
5
+ import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../core/Accessor.js";import i from"../../../core/Handles.js";import has from"../../../core/has.js";import s from"../../../core/Logger.js";import r from"../../../core/PooledArray.js";import{EsriPromiseMixin as a}from"../../../core/Promise.js";import{isAbortError as d}from"../../../core/promiseUtils.js";import{watch as o,initial as n,sync as l}from"../../../core/reactiveUtils.js";import{property as h}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import{subclass as u}from"../../../core/accessorSupport/decorators/subclass.js";import{projectBoundingRect as _}from"../../../geometry/projection.js";import{create as c,intersectsSphere as p}from"../../../geometry/support/aaBoundingRect.js";import{makeDehydratedPoint as g}from"../dehydratedFeatures.js";import{PromiseQueue as m}from"../../support/PromiseQueue.js";import{viewingModeFromString as y}from"../../../views/ViewingMode.js";import{I3SClientNodeLoader as x}from"../../../views/3d/layers/i3s/I3SClientNodeLoader.js";import{addCallback as f}from"../../../views/3d/layers/i3s/I3SFrameTask.js";import{I3SIndex as b}from"../../../views/3d/layers/i3s/I3SIndex.js";import N from"../../../views/3d/layers/i3s/I3SLodHandling.js";import{NodeState as w,CacheState as v}from"../../../views/3d/layers/i3s/I3SNode.js";import C from"../../../views/3d/layers/i3s/I3SNodeLoader.js";import{I3SStreamDataController as D}from"../../../views/3d/layers/i3s/I3SStreamDataController.js";import{getVertexCrs as L,getIndexCrs as S,findIntersectingNodes as V}from"../../../views/3d/layers/i3s/I3SUtil.js";import I from"../../../views/3d/layers/i3s/I3SViewportQueries.js";import{FadeDirection as A}from"../../../views/3d/layers/support/I3SLayerView.js";import{toBoundingRect as F}from"../../../views/3d/support/extentUtils.js";import{ClientType as M,maxDownloadSlots as O}from"../../../views/3d/support/index.js";import{extractSafeScaleBounds as U,scaleBoundsPredicate as P}from"../../../views/support/layerViewUtils.js";import{noBudget as G}from"../../../views/support/Scheduler.js";const q="esri.layers.graphics.controllers.I3SOnDemandController",j=s.getLogger(q),Q=100,T=2,E=1e4,H=1e-4,k=1.2,R=500,B=1.5;let z=class extends(a(t)){get isMeshPyramid(){return"mesh-pyramids"===this.layer.profile||"MeshPyramid"===this.layer.store?.lodType}get isGraphics3D(){return"points"===this.layer.profile}get useMaximumNumberOfFeatures(){return!this.isMeshPyramid&&(null==this.layer.priority||"High"===this.layer.priority)}get indexStreamController(){const e=this.layerView.view.resourceController.createStreamDataRequester(M.I3S_INDEX);return new D(e,this.layer.apiKey)}get dataStreamController(){const e=this.layerView.view.resourceController.createStreamDataRequester(M.I3S_DATA);return new D(e,this.layer.apiKey)}get crsVertex(){return L(this.layer)}get crsIndex(){return S(this.layer)}get layer(){return this.layerView.i3slayer}get running(){return this.updating}get rootNodeVisible(){if(null!=this._index){const e=this._index.rootNode;if(null!=e)return this._updateViewData(),this._index.isNodeVisible(e.index)}return!0}get index(){return this._index}constructor(e){super(e),this.screenSizeFactor=0,this.featureTarget=5e4,this.fixedFeatureTarget=!1,this.updating=!0,this.updatingProgress=1,this.leavesReached=!1,this.scaleVisibilityEnabled=!0,this.worker=null,this._featureLOD=1,this._stableFeatureLOD=!1,this._isIdle=!1,this._cameraDirty=!0,this._invisibleDirty=!1,this._idleStateCallbacks=null,this._newLoadingNodes=new r({deallocator:null}),this._loadedNodeScales=new Map,this._modificationsNodeFilteringArray=new r,this._downloadingCount=0,this._loadingNodes=new Map,this._updatingNodes=new Map,this._progressMaxNumNodes=1,this._requiredAttributes=new Array,this._requiredAttributesDirty=!0,this._updatesDisabled=!1,this.disableIDBCache=!1,this._disableMemCache=!1,this._restartNodeLoading=!1,this._fields=null,this._attributeStorageInfo=null,this._handles=new i,this._idleQueue=new m,this._elevationUpdateNodes=new r({deallocator:null}),this._errorCount=0}initialize(){const{layerView:e,layer:t}=this;this._disableMemCache=!e.loadCachedGPUData||!e.addCachedGPUData,this._lodHandling=new N(e),this._defaultGeometrySchema=t.store.defaultGeometrySchema,this.disableIDBCache=has("disable-feature:idb-cache"),"fields"in t&&(this._fields=t.fields,this._attributeStorageInfo=t.attributeStorageInfo),this.addResolvingPromise(Promise.all([t.indexInfo,t.when(),e.when()]).then((([i])=>{if(this.destroyed||!e||e.destroyed||!i)return;const{view:s,clientGeometry:r}=e,{resourceController:a}=s;if(this._setClippingArea(s.clippingArea),this.addHandles([o((()=>s?.pointsOfInterest?.focus?.renderLocation),(e=>this._pointOfInterestChanged(e)),n),o((()=>a.memoryController.memoryFactor),(()=>this._setCameraDirty()),l),o((()=>e.contentVisible),(e=>{const t=e?()=>this._updateIdleState(!0):()=>this._updateViewData(),i=e?()=>this._updateIdleState(!1):()=>{};e&&null!=this._index&&this._index.invalidateAllElevationRanges(),this._idleStateCallbacks?(e||this.cancelNodeLoading(),this.restartNodeLoading(),this._idleStateCallbacks.idleBegin=t,this._idleStateCallbacks.idleEnd=i):this._idleStateCallbacks=a.scheduler.registerIdleStateCallbacks(t,i)}),n),f(e.view.resourceController.scheduler,this),o((()=>e.uncompressedTextureDownsamplingEnabled),(()=>this.restartNodeLoading())),o((()=>[this.featureTarget,this.fixedFeatureTarget]),(()=>{this._setCameraDirty(),this._stableFeatureLOD=!1})),o((()=>s.state?.contentCamera),(()=>this._setCameraDirty())),o((()=>t.elevationInfo),(e=>this._elevationInfoChanged(e))),o((()=>t.effectiveScaleRange),(()=>this._scaleBoundsChanged())),o((()=>e.lodFactor),(()=>this._setCameraDirty())),o((()=>e.availableFields),(()=>this._requiredFieldsChange())),o((()=>e.holeFilling),(e=>null!=this._index&&(this._index.holeFilling=e)))]),this._updateScaleHandles(),this._viewportQueries=new I(this.crsIndex,s.renderCoordsHelper,s.state.contentCamera,!s.state.fixedContentCamera||this.isGraphics3D,this._clippingArea,this.isMeshPyramid?s.basemapTerrain:s.elevationProvider,y(s.viewingMode),this.layer.elevationInfo,{progressiveLoadFactor:this._getProgressiveLoadFactor(),screenspaceErrorBias:this._lod,angleDependentLoD:this._lod<.5}),this._clientNodeLoader=new x(this.layer.uid,this.crsIndex,s.renderCoordsHelper.spatialReference,s.state.viewingMode,s.resourceController.memoryController,this.worker),this._index=new b(t,i,this.indexStreamController,this._clientNodeLoader,this._viewportQueries,j,e.holeFilling,(t=>e.isNodeLoaded(t)),(t=>e.isNodeReloading(t)),(e=>this._shouldLoadNode(e)),(e=>this._enableFromGPUCache(e,w.Leaf)),(e=>this._needsUpdate(e)),(()=>!this.indexStreamController.busy),(t=>e.computeVisibilityObb?e.computeVisibilityObb(t):null),e?.computeNodeFiltering?t=>e.computeNodeFiltering(t):void 0),this._index.updateElevationInfo(this.layer.elevationInfo,this.isMeshPyramid||this.isGraphics3D),this._index.imModificationsChanged(!!e.hasModifications),this._index.layerFilterChanged(!!e.hasGeometryFilter),null!=r){for(const e of r)this._addMesh(e.mesh,e.oid);this.addHandles(r.on("change",(e=>{for(const t of e.removed)this._removeMesh(t.oid);for(const t of e.added)this._addMesh(t.mesh,t.oid)})))}this._startNodeLoading()}))),this._tmpPoint=g(0,0,0,this.crsIndex)}updateNodeModificationStatus(e){const t=this._index,i=this.layerView;null!=t&&i?.updateNodeModificationStatus&&(this._modificationsNodeFilteringArray.clear(),e.forAll((e=>{const i=t.getNode(e);null!=i&&this._modificationsNodeFilteringArray.push(i)})),i.updateNodeModificationStatus(this._modificationsNodeFilteringArray),this._invisibleDirty=!0)}destroy(){this.cancelNodeLoading(),this._idleStateCallbacks&&(this._isIdle=!1,this._idleStateCallbacks.remove(),this._idleStateCallbacks=null),this._handles.destroy(),this._nodeLoader=null,K.prune(),null!=W&&(W.hide(),W=null)}_getRequiredAttributes(){if(null==this._attributeStorageInfo||!this._fields||!this.layerView.availableFields)return[];const e=this._attributeStorageInfo,t=this._fields,i=this.layer.objectIdField;return this.layerView.availableFields.map((i=>{const s=$(e,i),r=$(t,i);return s>=0&&r>=0?{index:s,name:t[r].name,field:t[r],attributeStorageInfo:e[s]}:null})).filter((e=>null!=e&&e.name!==i))}_requiredFieldsChange(){const e=this._getRequiredAttributes();X(this._requiredAttributes,e)||(this._requiredAttributes=e,this._requiredAttributesDirty=!1,this.restartNodeLoading())}requestUpdate(){this._requiredAttributesDirty=!0,this.restartNodeLoading()}_setClippingArea(e){const t=c();F(e,t,this.layerView.view.renderSpatialReference)?this._clippingArea=t:this._clippingArea=null}_pointOfInterestChanged(e){null!=this._viewportQueries&&(this._viewportQueries.setPointOfInterest(e),null!=this._index&&(this._index.progressiveLoadPenalty=J.distancePenalty*this._viewportQueries.distCameraToPOI(),this._index.requestUpdate()))}updateClippingArea(e){this._setClippingArea(e),null!=this._viewportQueries&&null!=this._index&&(this._viewportQueries.updateClippingArea(this._clippingArea),this._index.invalidateVisibilityCache()),this._setCameraDirty()}_setCameraDirty(){this._cameraDirty=!0,this._lodHandling.setLodGlobalDirty(),this._evaluateUpdating()}_addMesh(e,t){if(null==this._index)return;const i=this._clientNodeLoader.createMeshNodeInfo(e,t),s=this._index.addClientNodeToIndex(i.id,i.mbs);this._clientNodeLoader.addMeshNode(s,i),this._evaluateUpdating(),this.notifyChange("rootNodeVisible")}_removeMesh(e){const t=this._clientNodeLoader.getMeshNodeIndex(e);if(null!=t){if(null==this._index)throw new Error("delayed removal of client side i3s node geometry not supported yet.");{const e=(e,t)=>{this.layerView.removeNode(t),this._loadedNodeScales.delete(t),this._clientNodeLoader.removeNode(e),this.layerView.deleteCachedNodeData&&null!=e&&this.layerView.deleteCachedNodeData(e),this.layerView.deleteCachedGPUData?.(this.layerView.loadCachedGPUData?.(t))},i=(e,t,i)=>{this._clientNodeLoader.updateNodeIndex(e,t,i),this.layerView.updateNodeIndex&&this.layerView.updateNodeIndex(t,i)};this._index.removeClientNodeFromIndex(t,e,i),this.notifyChange("rootNodeVisible")}}}updateElevationChanged(e,t){const i=this._index;if(null==i||null==i.rootNode||null==t)return null;this.crsIndex.equals(t)||(_(e,t,Y,this.crsIndex),e=Y);const s=this._elevationUpdateNodes;return s.clear(),V(e,i.rootNode,i,(e=>s.push(e.index))),s.length&&(s.forAll((e=>i.updateElevationChanged(e))),this._setCameraDirty()),s}removeAllGeometryObbs(){null!=this._index&&this._index.removeAllGeometryObbs()}getRenderMbs(e){return null!=this._viewportQueries?this._viewportQueries.getRenderMbs(e):null}_elevationInfoChanged(e){null!=this._index&&(this._index.updateElevationInfo(e,this.isMeshPyramid||this.isGraphics3D),this._setCameraDirty())}_updateScaleHandles(){const e="scale-bounds";this._handles.remove(e),this._areScaleBoundsActive&&this._handles.add(this.layerView.view.basemapTerrain.on("scale-change",(e=>this._scaleUpdateHandler(e))),e)}_scaleBoundsChanged(){this._areScaleBoundsActive||this._loadedNodeScales.clear(),this._updateScaleHandles(),this._setCameraDirty()}_scaleUpdateHandler(e){this._updateScaleInBoundingRect(e.extent,e.spatialReference),this._setCameraDirty()}_updateScaleInBoundingRect(e,t){const i=this._index;if(null==i)return;null!=i.rootNode&&_(e,t,Y,this.crsIndex)&&this._loadedNodeScales.forEach(((e,t)=>{const s=i.getNode(t);null!=s&&p(Y,s.mbs)&&this._loadedNodeScales.set(t,this._computeScale(s))}))}restartNodeLoading(){this._restartNodeLoading=!0,this.cancelNodeLoading(),this._evaluateUpdating()}schedule(e,t){return this._idleQueue.push(e,t)}reschedule(e,t){return this._idleQueue.unshift(e,t)}get _isIntegratedMesh(){return"integrated-mesh"===this.layer.type}get _areScaleBoundsActive(){const{minScale:e,maxScale:t}=U(this.layer);return this.scaleVisibilityEnabled&&(e>0||t>0)}get unloadedMemoryEstimate(){return null!=this._index&&this.layerView.contentVisible?this._index.unloadedMemoryEstimate*this._lodDropFactor:0}async _loadNodeData(e,t){return(e.index<0?this._clientNodeLoader:this._nodeLoader).loadNodeData(e,t)}async _loadAttributes(e,t,i){return(e.index<0?this._clientNodeLoader:this._nodeLoader).loadAttributes(e,t,i)}get indexDepth(){return null!=this._index?this._index.maxLevel:0}set disableMemCache(e){this.layerView.loadCachedGPUData&&this.layerView.addCachedGPUData||(this._disableMemCache=!0),this._disableMemCache=e}runTask(e,t){return this.layerView.contentVisible?this.layerView.visible&&null!=this._index?(this._processWithErrorLogging(e,t),this._index.maxPriority):-1/0:(this._updateViewData(),this._evaluateUpdating(),-1/0)}_processWithErrorLogging(e,t){try{this._process(e,t)}catch(i){this._errorCount<50?j.error("Error during processing: "+i):50===this._errorCount&&j.error("Too many errors for this layer. Further errors will not be displayed."),this._errorCount++}}_process(e,t){this._restartNodeLoading&&this._startNodeLoading(),null!=this._nodeLoader&&null!=this._index&&(this._updateViewData(),this._invisibleDirty&&this._removeInvisibleNodes(e)&&(this._invisibleDirty=!1),this._isIntegratedMesh&&(e.enabled=!1),e.run((()=>this._processIndex(e))),this._updateFeatureLOD(),e.run((()=>this._processCache(e))),this._isIntegratedMesh&&(e.enabled=!0),e.run((()=>this._processNodes(e,t))),this._idleQueue.runTask(e),e.run((()=>this._prefetchIndex())),t.numIndexLoading+=this._index.indexLoading,t.numNodesLoading+=this._downloadingCount,e.run((()=>this._lodHandling.lodGlobalHandling(e))),this._evaluateUpdating())}_processIndex(e){if(null==this._index)return!1;if(this._index.dirty){this._newLoadingNodes.clear(),this._index.update(Array.from(this._loadingNodes.keys()),e,(e=>this.updateNodeModificationStatus(e))),this._disableMemCache||(this._newLoadingNodes.pushArray(this._index.updates.add.data,this._index.updates.add.length),this._newLoadingNodes.pushArray(this._index.updates.missing.data,this._index.updates.missing.length));const t=this._index.featureEstimate.leavesReached;this._index.isLoading||t===this._get("leavesReached")||this._set("leavesReached",t)}return this._index.load()}_prefetchIndex(){return!(null==this._index||this._loadingNodes.size>0||this._index.updates.add.length>0)&&this._index.prefetch()}_updateFeatureLOD(){if(!this.useMaximumNumberOfFeatures||null==this._index||null==this._viewportQueries)return;const e=!this._index.isLoading,t=this.featureTarget*this._baseLOD,i=this._index.featureEstimate;if(i.estimate=i.estimate||t/2,this._index.indexMissing>R){if(this._featureLOD<=H)return;this._featureLOD/=B,this._stableFeatureLOD=!1}else if(e&&i.estimate<t){if(i.leavesReached||this._featureLOD>=E||this._stableFeatureLOD)return;const e=Math.min(10,Math.max(t/i.estimate,1.001));this._featureLOD*=e;const s=this._lod,r=this._index.checkFeatureTarget(t,s);r!==s&&(this._featureLOD=r/this._baseLOD,this._stableFeatureLOD=!0)}else{if(!(i.estimate>t*k||e&&i.estimate>t))return;if(this._featureLOD<=H)return;this._featureLOD/=1+.25*(i.estimate/t-1),this._stableFeatureLOD=!1}this._featureLOD=Math.min(E,Math.max(H,this._featureLOD)),this._viewportQueries.updateScreenSpaceErrorBias(this._lod),this._index.requestUpdate()}_processCache(e){const t=this._index;if(null==t)return!1;for(;this._newLoadingNodes.length>0&&!e.done;){const i=this._newLoadingNodes.pop();for(let s=t.getParent(i);null!=s&&(!this.layerView.isNodeLoaded(s.index)&&this._isNodeInScaleBounds(s));s=t.getParent(s.index))if(this._enableFromGPUCache(s,w.Hole)){e.madeProgress();break}}return e.hasProgressed}_processNodes(e,t){if(null==this._index)return!1;let i=(this._isIdle?Q:T)-this._loadingNodes.size;const s=this._index.updates;for(s.cancel.forEach(this._cancelNode,this),s.cancel=[];s.remove.length>0&&!e.done;)this.layerView.removeNode(s.remove.pop()),e.madeProgress();for(;s.update.length>0&&!e.done;){const t=this._index.getNode(s.update.pop());null!=t&&(this._updateLoadedNode(t),e.madeProgress())}for(;s.add.length>0&&!e.done&&i>0;){--i;const r=this._index.getNode(s.add.back());if(null==r||r.cacheState!==v.Cached&&!this._hasNodeLoadToken(t))break;s.add.pop(),this._loadNode(r),e.madeProgress()}return e.hasProgressed}_cancelAllNodes(){this._loadingNodes.forEach((e=>e.abort())),this._loadingNodes.clear(),this._updatingNodes.forEach((e=>e.abort())),this._updatingNodes.clear()}_cancelNode(e){const t=this._loadingNodes.get(e);t&&(t.abort(),this._loadingNodes.delete(e))}_hasNodeLoadToken(e){return!(!this._isIdle&&e.numNodesLoading+this._loadingNodes.size>=T)&&(this._downloadingCount<O&&!this.dataStreamController.busy)}_evaluateUpdating(){let e=!1,t=0;if(this.layerView){if(this.layerView.contentVisible){const i=(null!=this._index?this._index.indexMissing:0)+3*(null!=this._index?this._index.updates.add.length:0)+2*this._loadingNodes.size;e=!!(i>0||this._updatingNodes.size>0||this._restartNodeLoading||this._cameraDirty||this._idleQueue.running||this._lodHandling&&this._lodHandling.requiresLODGlobalHandling||null!=this._index&&this._index.isPrefetching),0===i&&(this._progressMaxNumNodes=1),this._progressMaxNumNodes=Math.max(i,this._progressMaxNumNodes),t=1-i/this._progressMaxNumNodes}else e=this._cameraDirty,t=e?0:1;this.updating=e,this.updatingProgress=t}}_updateViewData(){if(!this._cameraDirty||null==this._index||null==this._viewportQueries)return;const e=this.layerView.view,{contentCamera:t,fixedContentCamera:i}=e.state;this.screenSizeFactor=1/(t.perScreenPixelRatio/2),this._viewportQueries.updateCamera(t,!i||this.isGraphics3D),this._viewportQueries.setPointOfInterest(e.pointsOfInterest.focus.renderLocation),this._viewportQueries.updateScreenSpaceErrorBias(this._lod),this._index.invalidateVisibilityCache(),this._index.progressiveLoadPenalty=J.distancePenalty*this._viewportQueries.distCameraToPOI(),this._index.requestUpdate(),this._stableFeatureLOD=!1,this._invisibleDirty=!0,this._cameraDirty=!1,this.notifyChange("rootNodeVisible")}_getProgressiveLoadFactor(){return this.layerView.view.resourceController.memoryController.memoryFactor<1?1:this.layerView.progressiveLoadFactor}get _lod(){return this._featureLOD*this._baseLOD}get _baseLOD(){const e=this.layerView.lodFactor,t=this.layerView.view.resourceController.memoryController.memoryFactor;return this.fixedFeatureTarget?1:(e>0?e:1)*t}get _lodDropFactor(){if(this.fixedFeatureTarget)return 1;const e=this.layerView.view.resourceController.memoryController;return(Math.min(e.memoryFactor,.5)-e.minQuality)/(.5-e.minQuality)}isGeometryVisible(e){return null!=this._index&&this._index.isGeometryVisible(e.index)}updateVisibility(e){null!=this._index&&this._index.invalidateNodeVisibilityCache(e)}invalidateGeometryVisibility(e){null!=this._index&&this._index.invalidateGeometryVisibility(e)}invalidateVisibilityObbs(){null!=this._index&&this._index.invalidateVisibilityObbs()}modificationsChanged(){null!=this._index&&this._index.imModificationsChanged(!!this.layerView.hasModifications),this._invisibleDirty=!0}_shouldLoadNode(e){return!(!this._lodHandling.shouldLoadNode(e)||this._shouldDropNode(e))&&(!(null==this._index||!this._index.isGeometryVisible(e.index))&&this._isNodeInScaleBounds(e))}_shouldDropNode(e){if(null==this._viewportQueries)return!1;const t=this._lodDropFactor;if(t>=1||!this._lodHandling.hasNoVisibleChildren(e))return!1;return Math.abs(this._viewportQueries.calcCameraDistanceToCenter(e))-this._viewportQueries.minDistance>(this._viewportQueries.maxDistance-this._viewportQueries.minDistance)*t}_startNodeLoading(){this._restartNodeLoading=!1;const e=this._index;if(this._updatesDisabled||null==e||null==this._viewportQueries)return;this._updateViewData(),this._requiredAttributesDirty&&(this._requiredAttributes=this._getRequiredAttributes(),this._requiredAttributesDirty=!1);const t={textureEncodings:this.layerView.supportedTextureEncodings,uncompressedTextureDownsamplingEnabled:this.layerView.uncompressedTextureDownsamplingEnabled,textureUsageMask:this.layerView.rendererTextureUsage,loadFeatureData:this.useMaximumNumberOfFeatures};this._nodeLoader=new C(this.layer,this.dataStreamController,j,this._defaultGeometrySchema,this._requiredAttributes,t),e.requestUpdate(),this._lodHandling.startNodeLoading((e=>this._isNodeInScaleBounds(e)),((e,t)=>this._removeNodes(e,t,Z.fadeout)),e,{maxLodLevel:this._viewportQueries.maxLodLevel}),this._evaluateUpdating()}isNodeLoading(){return null!=this._nodeLoader&&null!=this._index}cancelNodeLoading(){this.isNodeLoading()&&(this.indexStreamController.cancelAll(),this.dataStreamController.cancelAll(),this._idleQueue.cancelAll(),this._cancelAllNodes(),this._nodeLoader=null,this._evaluateUpdating())}_removeInvisibleNodes(e){const t=this._index;if(null==t||null==this._viewportQueries)return!1;K.clear(),this.layerView.getLoadedNodeIndices(K);const i=0===this._viewportQueries.maxDistance,s=i?()=>!1:e=>this._shouldDropNode(e);return K.filterInPlace((e=>{const i=t.getNode(e);return null==i||!t.isGeometryVisible(e)||s(i)||!this._isNodeInScaleBounds(i)})),K.length>0&&this._lodHandling.setLodGlobalDirty(),this._removeNodes(K,e,Z.pop),!(i&&this._lodDropFactor<1)&&(0===K.length||(K.clear(),!1))}markNodeToRemove(e){K.push(e)}removeMarkedNodes(){this._removeNodes(K,G,Z.pop)}_removeNodes(e,t,i){const s=e.length;if(0!==s&&!t.done){for(null!=this._index&&this._index.requestUpdate();e.length>0&&!t.done;){const s=e.pop(),r=this._index;i===Z.fadeout&&this.layerView.nodeFadeoutEnabled&&null!=r&&r.isGeometryVisible(s)?this.layerView.fadeNode(s,A.FadeOut,!0):this.layerView.removeNode(s),t.madeProgress()}if(this._loadedNodeScales.size>0)for(let t=e.length;t<s;t++){const i=e.data[t];this._loadedNodeScales.delete(i)}}}_needsUpdate(e){if(e.resources.isEmpty||this._updatingNodes.has(e.index))return!1;const t=this.layerView.getLoadedAttributes(e.index);return null!=t&&t!==this._requiredAttributes}async _updateLoadedNode(e){const t=new AbortController;this._updatingNodes.set(e.index,t),this._evaluateUpdating();try{const i=X(this.layerView.getLoadedAttributes(e.index),this._requiredAttributes);let s=null;s=i?await Promise.resolve(this.layerView.getAttributeData(e.index)):await this._loadAttributes(e,this._requiredAttributes,t.signal),await this.schedule((()=>this.layerView.updateAttributes(e.index,{loadedAttributes:this._requiredAttributes,attributeData:s},t.signal)),t.signal)}catch(i){if(!d(i))return this.layerView.updateAttributes(e.index,{loadedAttributes:this._requiredAttributes,attributeData:{}},t.signal)}this._updatingNodes.delete(e.index),this._evaluateUpdating()}_loadNode(e){if(this._loadingNodes.has(e.index))return void j.error("already loading node "+e.index);const t=new AbortController;this._loadingNodes.set(e.index,t),this._evaluateUpdating(),this._loadAndAddNode(e,t.signal).then((i=>{i&&null!=this._index&&this._loadingNodes.get(e.index)===t&&(this._loadingNodes.delete(e.index),this._index.requestUpdate())})).catch((e=>{if(!d(e))throw e})).finally((()=>{this._loadingNodes.get(e.index)===t&&this._loadingNodes.delete(e.index),this._evaluateUpdating()}))}_loadAndAddNode(e,t){return e.cacheState===v.Uncached?this._loadUncached(e,t).then((()=>!1)):this._loadCached(e,t).then((t=>!t&&(e.cacheState=v.Uncached,!0))).catch((t=>!d(t)&&(e.cacheState=v.Uncached,!0)))}_enableFromGPUCache(e,t){if(this._disableMemCache||null==this._index)return!1;if(t===w.Hole&&!this._index.useNodeAsHole(e.index))return!0;const i=this._loadCachedGPUData(e);return!!i&&(this.layerView.addCachedGPUData(e,i,t),this._nodeAdded(),!0)}_loadCachedGPUData(e){const t=this.layerView.loadCachedGPUData(e.index);return null!=t&&null!=t.attributeInfo&&X(t.attributeInfo.loadedAttributes,this._requiredAttributes)?t:(this.layerView.deleteCachedGPUData(t),null)}_nodeAdded(){null!=this._index&&this._index.requestUpdate(),this._lodHandling.setLodGlobalDirty(),this._evaluateUpdating()}updateLoadStatus(e,t){const i=this._index;null!=i&&i.updateChildrenLoaded(e,t?1:-1)}async _loadCached(e,t){if(this._enableFromGPUCache(e,w.Leaf))return!0;const i=this.layerView;if(this.disableIDBCache||!i.loadCachedNodeData||!i.addCachedNodeData)return!1;const s=(t,i)=>this._nodeLoader.loadTextures(e,t,i),r=(t,i)=>this._clientNodeLoader.loadTextures(e,t,i),a=e.index>=0?s:r,d=await this.schedule((()=>i.loadCachedNodeData(e,t,a)),t);if(null==d)return!1;const o=this._requiredAttributes,n=await this.reschedule((()=>this._loadAttributes(e,o,t)),t);return await this.reschedule((()=>i.addCachedNodeData(e,d,{loadedAttributes:o,attributeData:n},t)),t),this._nodeAdded(),!0}_loadUncached(e,t){return this._downloadingCount++,this._loadNodeData(e,t).catch((e=>{throw this._downloadingCount--,e})).then((i=>(this._downloadingCount--,this.schedule((()=>this.layerView.addNode(e,i,t)),t)))).then((()=>{this._nodeAdded(),e.cacheState=v.Cached})).catch((t=>{if(!d(t))throw j.error("#loadNodeData()",this.layer,`Failed to load node '${e.id}'`,t),e.failed=!0,null!=this._index&&this._index.requestUpdate(),t}))}_updateIdleState(e){e!==this._isIdle&&(this._isIdle=e,this._evaluateUpdating(),e&&this._index&&null!=this._index&&this._index.resetFailedNodes())}_getScale(e){if(this._loadedNodeScales.has(e.index))return this._loadedNodeScales.get(e.index);const t=this._computeScale(e);return this.layerView.isNodeLoaded(e.index)&&this._loadedNodeScales.set(e.index,t),t}_computeScale(e){this._tmpPoint.x=e.mbs[0],this._tmpPoint.y=e.mbs[1],this._tmpPoint.z=e.mbs[2];const t=e.mbs[3];return this.layerView.view.basemapTerrain.getSphereScale(this._tmpPoint,t)}_isNodeInScaleBounds(e){if(!this._areScaleBoundsActive)return!0;const t=this._getScale(e),{minScale:i,maxScale:s}=U(this.layer);return P(t,i,s)}updateStats(e){e.index=null!=this._index?this._index.size:0,this.isGraphics3D&&(e.detail=this._featureLOD,e.target=this.featureTarget*this._baseLOD),null!=this._index&&this._index.updateStats(e)}get test(){const e=this;return{index:this._index,set disableUpdates(t){e._updatesDisabled=t,t?e.cancelNodeLoading():e.requestUpdate()},set disableIDBCache(t){e.disableIDBCache=t},set ignoreServiceObb(t){null!=e._index&&(e._index.ignoreServiceObb=t)},shouldLoadNode:t=>e._shouldLoadNode(t)}}notifyLODUpdate(){this._lodHandling.setLodGlobalDirty(),this._evaluateUpdating(),null!=this._index&&this._index.requestUpdate()}geometryFilterChanged(e){const t=this._index;null!=t&&t.layerFilterChanged(e),this._setCameraDirty()}};e([h({readOnly:!0})],z.prototype,"isMeshPyramid",null),e([h({readOnly:!0})],z.prototype,"isGraphics3D",null),e([h({readOnly:!0})],z.prototype,"useMaximumNumberOfFeatures",null),e([h({readOnly:!0})],z.prototype,"indexStreamController",null),e([h({readOnly:!0})],z.prototype,"dataStreamController",null),e([h({readOnly:!0})],z.prototype,"crsVertex",null),e([h({readOnly:!0})],z.prototype,"crsIndex",null),e([h()],z.prototype,"screenSizeFactor",void 0),e([h()],z.prototype,"featureTarget",void 0),e([h()],z.prototype,"fixedFeatureTarget",void 0),e([h()],z.prototype,"layerView",void 0),e([h()],z.prototype,"layer",null),e([h()],z.prototype,"updating",void 0),e([h({readOnly:!0})],z.prototype,"running",null),e([h()],z.prototype,"updatingProgress",void 0),e([h({readOnly:!0})],z.prototype,"leavesReached",void 0),e([h({constructOnly:!0})],z.prototype,"scaleVisibilityEnabled",void 0),e([h({constructOnly:!0})],z.prototype,"worker",void 0),e([h({readOnly:!0,dependsOn:[]})],z.prototype,"rootNodeVisible",null),z=e([u(q)],z);const K=new r({deallocator:null});let W;function X(e,t){return null!=e&&e.length===t.length&&e.every((e=>$(t,e.name)>=0))}function $(e,t){const i=t.toLowerCase();for(let s=0;s<e.length;s++)if(e[s].name.toLowerCase()===i)return s;return-1}const J={factorIM:.2,factor3dObject:.05,distancePenalty:10},Y=c();var Z;!function(e){e[e.pop=0]="pop",e[e.fadeout=1]="fadeout"}(Z||(Z={}));const ee=z;export{ee as default};
@@ -0,0 +1,4 @@
1
+ import "../../interfaces";
2
+
3
+ import TraceJobInfo = __esri.TraceJobInfo;
4
+ export default TraceJobInfo;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcgis/core",
3
- "version": "4.27.0-rc.4",
3
+ "version": "4.27.0-rc.5",
4
4
  "homepage": "https://js.arcgis.com",
5
5
  "description": "ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API",
6
6
  "keywords": [
@@ -0,0 +1,4 @@
1
+ import "../../interfaces";
2
+
3
+ import bins = __esri.bins;
4
+ export = bins;
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- const e="20230607",c="516d3b5b1c4ece63868d7224e7ac05335f2b8de0";export{e as buildDate,c as commitHash};
5
+ const c="20230609",e="c1f0882351886000f457b966cd4e3774ccbe9ced";export{c as buildDate,e as commitHash};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{bidiText as t}from"../../core/BidiText.js";import{getFontFamily as e}from"../../core/fontUtils.js";import{clone as r}from"../../core/lang.js";import i from"../../core/Logger.js";import s from"../../core/ObjectPool.js";import{px2pt as o,pt2px as n}from"../../core/screenUtils.js";import{GeometryCursor as a}from"../../geometry/GeometryCursor.js";import{create as l,fromValues as h}from"../../geometry/support/aaBoundingRect.js";import{getBoundsXY as c}from"../../geometry/support/boundsUtils.js";import{polygonCentroid as m}from"../../geometry/support/centroid.js";import{isPoint as f,isPolygon as u,isPolyline as d,isExtent as p,isMultipoint as _}from"../../geometry/support/jsonUtils.js";import{SimpleEffectCursor as g}from"./CIMEffects.js";import y from"./CIMImageColorSubstitutionHelper.js";import{getEffectOperator as P,getPlacementOperator as w}from"./CIMOperators.js";import{Placement as x}from"./CIMPlacements.js";import{LineCapStyle as S,LineJoinStyle as M}from"./enums.js";import{getFirstFrame as b}from"./imageUtils.js";import k from"./Rect.js";import C from"./TextRasterizer.js";import{getValue as I,isSVGImage as T,fromCIMFontDecoration as R,fromCIMFontStyle as v,fromCIMHorizontalAlignment as z,fromCIMVerticalAlignment as F,getFillColor as L,getStrokeWidth as A,getStrokeColor as j,getFontStyle as U,getFontWeight as H}from"./utils.js";import{HAlign as B,VAlign as G}from"../../views/2d/engine/webgl/alignmentUtils.js";import{GLYPH_SIZE as D,MAGIC_LABEL_LINE_HEIGHT as X}from"../../views/2d/engine/webgl/definitions.js";import{shapeGlyphs as E}from"../../views/2d/engine/webgl/mesh/templates/shapingUtils.js";const J=Math.PI/180,N=i.getLogger("esri.symbols.cim.CIMSymbolDrawHelper"),O=4,q=10,V=10,Y=4,W=10,K=1;class Q{constructor(t){this._t=t}static createIdentity(){return new Q([1,0,0,0,1,0])}clone(){const t=this._t;return new Q(t.slice())}transform(t){const e=this._t;return[e[0]*t[0]+e[1]*t[1]+e[2],e[3]*t[0]+e[4]*t[1]+e[5]]}static createScale(t,e){return new Q([t,0,0,0,e,0])}scale(t,e){const r=this._t;return r[0]*=t,r[1]*=t,r[2]*=t,r[3]*=e,r[4]*=e,r[5]*=e,this}scaleRatio(){return Math.sqrt(this._t[0]*this._t[0]+this._t[1]*this._t[1])}static createTranslate(t,e){return new Q([0,0,t,0,0,e])}translate(t,e){const r=this._t;return r[2]+=t,r[5]+=e,this}static createRotate(t){const e=Math.cos(t),r=Math.sin(t);return new Q([e,-r,0,r,e,0])}rotate(t){return Q.multiply(this,Q.createRotate(t),this)}angle(){const t=this._t[0],e=this._t[3],r=Math.sqrt(t*t+e*e);return[t/r,e/r]}static multiply(t,e,r){const i=t._t,s=e._t,o=i[0]*s[0]+i[3]*s[1],n=i[1]*s[0]+i[4]*s[1],a=i[2]*s[0]+i[5]*s[1]+s[2],l=i[0]*s[3]+i[3]*s[4],h=i[1]*s[3]+i[4]*s[4],c=i[2]*s[3]+i[5]*s[4]+s[5],m=r._t;return m[0]=o,m[1]=n,m[2]=a,m[3]=l,m[4]=h,m[5]=c,r}invert(){const t=this._t;let e=t[0]*t[4]-t[1]*t[3];if(0===e)return new Q([0,0,0,0,0,0]);e=1/e;const r=(t[1]*t[5]-t[2]*t[4])*e,i=(t[2]*t[3]-t[0]*t[5])*e,s=t[4]*e,o=-t[1]*e,n=-t[3]*e,a=t[0]*e;return new Q([s,o,r,n,a,i])}}class Z{constructor(t,e){this._resourceManager=t,this._transfos=[],this._sizeTransfos=[],this._geomUnitsPerPoint=1,this._placementPool=new s(x,void 0,void 0,100),this._earlyReturn=!1,this._mapRotation=0,this._transfos.push(e||Q.createIdentity()),this._sizeTransfos.push(e?e.scaleRatio():1)}setTransform(t,e){this._transfos=[t||Q.createIdentity()],this._sizeTransfos=[e||(t?t.scaleRatio():1)]}setGeomUnitsPerPoint(t){this._geomUnitsPerPoint=t}transformPt(t){return this._transfos[this._transfos.length-1].transform(t)}transformSize(t){return t*this._sizeTransfos[this._sizeTransfos.length-1]}reverseTransformPt(t){return this._transfos[this._transfos.length-1].invert().transform(t)}reverseTransformSize(t){return t/this._sizeTransfos[this._sizeTransfos.length-1]}getTransformAngle(){return this._transfos[this._transfos.length-1].angle()}geomUnitsPerPoint(){return this.isEmbedded()?1:this._geomUnitsPerPoint}isEmbedded(){return this._transfos.length>1}back(){return this._transfos[this._transfos.length-1]}push(t,e){const r=e?t.scaleRatio():1;Q.multiply(t,this.back(),t),this._transfos.push(t),this._sizeTransfos.push(this._sizeTransfos[this._sizeTransfos.length-1]*r)}pop(){this._transfos.splice(-1,1),this._sizeTransfos.splice(-1,1)}drawSymbol(t,e,r){if(t)switch(t.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":this.drawMultiLayerSymbol(t,e);break;case"CIMTextSymbol":this.drawTextSymbol(t,e,r)}}drawMultiLayerSymbol(t,e){if(!t||!e)return;const r=t.symbolLayers;if(!r)return;const i=t.effects;if(i&&i.length>0){const t=this.executeEffects(i,e);if(t){let e=t.next();for(;e;)this.drawSymbolLayers(r,e.asJSON()),e=t.next()}}else this.drawSymbolLayers(r,e)}executeEffects(t,e){const r=this._resourceManager.geometryEngine;let i=new g(a.fromJSONCIM(e));for(const s of t){const t=P(s);t&&(i=t.execute(i,s,this.geomUnitsPerPoint(),null,r))}return i}drawSymbolLayers(t,e){let r=t.length;for(;r--;){const i=t[r];if(!i||!1===i.enable)continue;const s=i.effects;if(s&&s.length>0){const t=this.executeEffects(s,e);if(t){let e=null;for(;(e=t.next())&&(this.drawSymbolLayer(i,e.asJSON()),!this._earlyReturn););}}else this.drawSymbolLayer(i,e);if(this._earlyReturn)return}}drawSymbolLayer(t,e){switch(t.type){case"CIMSolidFill":this.drawSolidFill(e,t.color);break;case"CIMHatchFill":this.drawHatchFill(e,t);break;case"CIMPictureFill":this.drawPictureFill(e,t);break;case"CIMGradientFill":this.drawGradientFill(e,t);break;case"CIMSolidStroke":this.drawSolidStroke(e,t.color,t.width,t.capStyle,t.joinStyle,t.miterLimit);break;case"CIMPictureStroke":this.drawPictureStroke(e,t);break;case"CIMGradientStroke":this.drawGradientStroke(e,t);break;case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":this.drawMarkerLayer(t,e)}}drawHatchFill(t,e){const r=this._buildHatchPolyline(e,t,this.geomUnitsPerPoint());r&&(this.pushClipPath(t),this.drawMultiLayerSymbol(e.lineSymbol,r),this.popClipPath())}drawPictureFill(t,e){}drawGradientFill(t,e){}drawPictureStroke(t,e){}drawGradientStroke(t,e){}drawMarkerLayer(t,e){const r=t.markerPlacement;if(r){const i=w(r);if(i){const s="CIMMarkerPlacementInsidePolygon"===r.type||"CIMMarkerPlacementPolygonCenter"===r.type&&r.clipAtBoundary;s&&this.pushClipPath(e);const o=i.execute(a.fromJSONCIM(e),r,this.geomUnitsPerPoint(),null,this._resourceManager.geometryEngine);if(o){let e=null;for(;(e=o.next())&&(this.drawMarker(t,e),!this._earlyReturn););}s&&this.popClipPath()}}else{const r=this._placementPool.acquire();if(f(e))r.tx=e.x,r.ty=e.y,this.drawMarker(t,r);else if(u(e)){const i=m(e);i&&([r.tx,r.ty]=i,this.drawMarker(t,r))}else for(const i of e.points)if(r.tx=i[0],r.ty=i[1],this.drawMarker(t,r),this._earlyReturn)break;this._placementPool.release(r)}}drawMarker(t,e){switch(t.type){case"CIMCharacterMarker":case"CIMPictureMarker":this.drawPictureMarker(t,e);break;case"CIMVectorMarker":this.drawVectorMarker(t,e)}}drawPictureMarker(t,e){if(!t)return;const r=this._resourceManager.getResource(t.url),i=I(t.size,q);if(null==r||i<=0)return;const s=r.width,o=r.height;if(!s||!o)return;const n=s/o,a=I(t.scaleX,1),l=Q.createIdentity(),h=t.anchorPoint;if(h){let e=h.x,r=h.y;"Absolute"!==t.anchorPointUnits&&(e*=i*n*a,r*=i),l.translate(-e,-r)}let c=I(t.rotation);t.rotateClockwise&&(c=-c),this._mapRotation&&(c+=this._mapRotation),c&&l.rotate(c*J);let m=I(t.offsetX),f=I(t.offsetY);if(m||f){if(this._mapRotation){const t=J*this._mapRotation,e=Math.cos(t),r=Math.sin(t),i=m*r+f*e;m=m*e-f*r,f=i}l.translate(m,f)}const u=this.geomUnitsPerPoint();1!==u&&l.scale(u,u);const d=e.getAngle();d&&l.rotate(d),l.translate(e.tx,e.ty),this.push(l,!1),this.drawImage(t,i),this.pop()}drawVectorMarker(t,e){if(!t)return;const r=t.markerGraphics;if(!r)return;const i=I(t.size,q),s=t.frame,o=s?s.ymax-s.ymin:0,n=i&&o?i/o:1,a=Q.createIdentity();s&&a.translate(.5*-(s.xmax+s.xmin),.5*-(s.ymax+s.ymin));const l=t.anchorPoint;if(l){let e=l.x,r=l.y;"Absolute"!==t.anchorPointUnits?s&&(e*=s.xmax-s.xmin,r*=s.ymax-s.ymin):(e/=n,r/=n),a.translate(-e,-r)}1!==n&&a.scale(n,n);let h=I(t.rotation);t.rotateClockwise&&(h=-h),this._mapRotation&&(h+=this._mapRotation),h&&a.rotate(h*J);let c=I(t.offsetX),m=I(t.offsetY);if(c||m){if(this._mapRotation){const t=J*this._mapRotation,e=Math.cos(t),r=Math.sin(t),i=c*r+m*e;c=c*e-m*r,m=i}a.translate(c,m)}const f=this.geomUnitsPerPoint();1!==f&&a.scale(f,f);const u=e.getAngle();u&&a.rotate(u),a.translate(e.tx,e.ty),this.push(a,t.scaleSymbolsProportionally);for(const d of r)if(d&&d.symbol&&d.geometry||N.error("Invalid marker graphic",d),this.drawSymbol(d.symbol,d.geometry,d.textString),this._earlyReturn)break;this.pop()}drawTextSymbol(t,e,r){if(!t)return;if(!f(e))return;if(I(t.height,W)<=0)return;const i=Q.createIdentity();let s=I(t.angle);s=-s,s&&i.rotate(s*J);const o=I(t.offsetX),n=I(t.offsetY);(o||n)&&i.translate(o,n);const a=this.geomUnitsPerPoint();1!==a&&i.scale(a,a),i.translate(e.x,e.y),this.push(i,!1),this.drawText(t,r),this.pop()}_buildHatchPolyline(t,e,r){let i=I(t.separation,Y)*r,s=I(t.rotation);if(0===i)return null;i<0&&(i=-i);let o=0;const n=.5*i;for(;o>n;)o-=i;for(;o<-n;)o+=i;const a=l();c(a,e),a[0]-=n,a[1]-=n,a[2]+=n,a[3]+=n;const h=[[a[0],a[1]],[a[0],a[3]],[a[2],a[3]],[a[2],a[1]]];for(;s>180;)s-=180;for(;s<0;)s+=180;const m=Math.cos(s*J),f=Math.sin(s*J),u=-i*f,d=i*m;let p,_,g,y;o=I(t.offsetX)*r*f-I(t.offsetY)*r*m,p=g=Number.MAX_VALUE,_=y=-Number.MAX_VALUE;for(const l of h){const t=l[0],e=l[1],r=m*t+f*e,i=-f*t+m*e;p=Math.min(p,r),g=Math.min(g,i),_=Math.max(_,r),y=Math.max(y,i)}g=Math.floor(g/i)*i;let P=m*p-f*g-u*o/i,w=f*p+m*g-d*o/i,x=m*_-f*g-u*o/i,S=f*_+m*g-d*o/i;const M=1+Math.round((y-g)/i),b=[];for(let l=0;l<M;l++)P+=u,w+=d,x+=u,S+=d,b.push([[P,w],[x,S]]);return{paths:b}}}class $ extends Z{constructor(t,e){super(t,e),this.reset()}reset(){this._xmin=this._ymin=1/0,this._xmax=this._ymax=-1/0,this._clipCount=0}envelope(){return new k(this._xmin,this._ymin,this._xmax-this._xmin,this._ymax-this._ymin)}bounds(){return h(this._xmin,this._ymin,this._xmax,this._ymax)}drawSolidFill(t){if(t&&!(this._clipCount>0))if(u(t))this._processPath(t.rings,0);else if(d(t))this._processPath(t.paths,0);else if(p(t)){const e=it(t);e&&this._processPath(e.rings,0)}else console.error("drawSolidFill Unexpected geometry type!")}drawSolidStroke(t,e,r){if(!t||this._clipCount>0)return;const i=.5*this.transformSize(I(r,O));if(u(t))this._processPath(t.rings,i);else if(d(t))this._processPath(t.paths,i);else if(p(t)){const e=it(t);e&&this._processPath(e.rings,i)}else console.error("drawSolidStroke unexpected geometry type!")}drawMarkerLayer(t,e){u(e)&&t.markerPlacement&&("CIMMarkerPlacementInsidePolygon"===t.markerPlacement.type||"CIMMarkerPlacementPolygonCenter"===t.markerPlacement.type&&t.markerPlacement.clipAtBoundary)?this._processPath(e.rings,0):super.drawMarkerLayer(t,e)}drawHatchFill(t,e){this.drawSolidFill(t)}drawPictureFill(t,e){this.drawSolidFill(t)}drawGradientFill(t,e){this.drawSolidFill(t)}drawPictureStroke(t,e){this.drawSolidStroke(t,null,e.width)}drawGradientStroke(t,e){this.drawSolidStroke(t,null,e.width)}pushClipPath(t){this.drawSolidFill(t),this._clipCount++}popClipPath(){this._clipCount--}drawImage(t,e){const{url:r}=t,i=I(t.scaleX,1);let s=i*e,o=e;const n=this._resourceManager.getResource(r);e||null==n||(s=i*n.width,o=n.height),this._merge(this.transformPt([-s/2,-o/2]),0),this._merge(this.transformPt([-s/2,o/2]),0),this._merge(this.transformPt([s/2,-o/2]),0),this._merge(this.transformPt([s/2,o/2]),0)}drawText(t,e){if(!e||0===e.length)return;this._textRasterizer||(this._textRasterizer=new C);const r=at(t),[i,s]=this._textRasterizer.computeTextSize(e,r);let o=0;switch(t.horizontalAlignment){case"Left":o=i/2;break;case"Right":o=-i/2}let n=0;switch(t.verticalAlignment){case"Bottom":n=s/2;break;case"Top":n=-s/2;break;case"Baseline":n=s/6}this._merge(this.transformPt([-i/2+o,-s/2+n]),0),this._merge(this.transformPt([-i/2+o,s/2+n]),0),this._merge(this.transformPt([i/2+o,-s/2+n]),0),this._merge(this.transformPt([i/2+o,s/2+n]),0)}_processPath(t,e){if(t)for(const r of t){const t=r?r.length:0;if(t>1){this._merge(this.transformPt(r[0]),e);for(let i=1;i<t;i++)this._merge(this.transformPt(r[i]),e)}}}_merge(t,e){t[0]-e<this._xmin&&(this._xmin=t[0]-e),t[0]+e>this._xmax&&(this._xmax=t[0]+e),t[1]-e<this._ymin&&(this._ymin=t[1]-e),t[1]+e>this._ymax&&(this._ymax=t[1]+e)}}class tt extends Z{constructor(){super(...arguments),this._searchPoint=[0,0],this._searchDistPoint=0,this._textInfo=null}hitTest(t,e,r,i,s,o){const a=o*n(1);this.setTransform(),this.setGeomUnitsPerPoint(a),this._searchPoint=[(t[0]+t[2])/2,(t[1]+t[3])/2],this._searchDistPoint=(t[2]-t[0])/2/a,this._textInfo=i;const l=e&&("CIMPointSymbol"===e.type&&"Map"!==e.angleAlignment||"CIMTextSymbol"===e.type);return this._mapRotation=l?s:0,this._earlyReturn=!1,this.drawSymbol(e,r),this._earlyReturn}drawSolidFill(t,e){this._hitTestFill(t)}drawHatchFill(t,e){this._hitTestFill(t)}drawPictureFill(t,e){this._hitTestFill(t)}drawGradientFill(t,e){this._hitTestFill(t)}drawSolidStroke(t,e,r,i,s,o){this._hitTestStroke(t,r)}drawPictureStroke(t,e){this._hitTestStroke(t,e.width)}drawGradientStroke(t,e){this._hitTestStroke(t,e.width)}drawMarkerLayer(t,e){t.markerPlacement&&("CIMMarkerPlacementInsidePolygon"===t.markerPlacement.type||"CIMMarkerPlacementPolygonCenter"===t.markerPlacement.type&&t.markerPlacement.clipAtBoundary)?this._hitTestFill(e):super.drawMarkerLayer(t,e)}pushClipPath(t){}popClipPath(){}drawImage(t,e){const{url:r}=t,i=I(t.scaleX,1),s=this._resourceManager.getResource(r);if(null==s||0===s.height||0===e)return;const o=e*this.geomUnitsPerPoint(),n=o*i*(s.width/s.height),a=this.reverseTransformPt(this._searchPoint),l=this._searchDistPoint;Math.abs(a[0])<n/2+l&&Math.abs(a[1])<o/2+l&&(this._earlyReturn=!0)}drawText(e,r){const i=this._textInfo;if(!i)return;const s=i.get(e);if(!s)return;const{text:o,mosaicItem:n}=s;if(!n?.glyphMosaicItems?.length)return;const a=I(e.height,W),{lineGapType:l,lineGap:h}=e,c=l?nt(l,I(h),a):0,m=t(o)[1],f=n.glyphMosaicItems,u="CIMBackgroundCallout"===e.callout?.type,d=E(f,m,{scale:a/D,angle:0,xOffset:0,yOffset:0,hAlign:st(e.horizontalAlignment),vAlign:ot(e.verticalAlignment),maxLineWidth:512,lineHeight:X*Math.max(.25,Math.min(c||1,4)),decoration:e.font.decoration||"none",isCIM:!0,hasBackground:u}),p=this.reverseTransformPt(this._searchPoint),_=p[0],g=p[1];for(const t of d.glyphs)if(_>t.xTopLeft&&_<t.xBottomRight&&g>-t.yBottomRight&&g<-t.yTopLeft){this._earlyReturn=!0;break}}_hitTestFill(t){let e=null;if(p(t)){const r=t;e=[[[r.xmin,r.ymin],[r.xmin,r.ymax],[r.xmax,r.ymax],[r.xmax,r.ymin],[r.xmin,r.ymin]]]}else if(u(t))e=t.rings;else{if(!d(t))return;e=t.paths}const r=this.reverseTransformPt(this._searchPoint);if(this._pointInPolygon(r,e)&&(this._earlyReturn=!0),!this._earlyReturn){const t=this.reverseTransformSize(this._searchDistPoint)*this.geomUnitsPerPoint();this._nearLine(r,e,t)&&(this._earlyReturn=!0)}}_hitTestStroke(t,e){let r=null;if(p(t)){const e=t;r=[[[e.xmin,e.ymin],[e.xmin,e.ymax],[e.xmax,e.ymax],[e.xmax,e.ymin],[e.xmin,e.ymin]]]}else if(u(t))r=t.rings;else{if(!d(t))return;r=t.paths}const i=this.reverseTransformPt(this._searchPoint),s=I(e,O)*this.geomUnitsPerPoint(),o=this.reverseTransformSize(this._searchDistPoint)*this.geomUnitsPerPoint();this._nearLine(i,r,s/2+o)&&(this._earlyReturn=!0)}_pointInPolygon(t,e){let r=0;for(const i of e){const e=i.length;for(let s=1;s<e;s++){const e=i[s-1],o=i[s];if(e[1]>t[1]==o[1]>t[1])continue;(o[0]-e[0])*(t[1]-e[1])-(o[1]-e[1])*(t[0]-e[0])>0?r++:r--}}return 0!==r}_nearLine(t,e,r){for(const i of e){const e=i.length;for(let s=1;s<e;s++){const e=i[s-1],o=i[s];let n=(o[0]-e[0])*(o[0]-e[0])+(o[1]-e[1])*(o[1]-e[1]);if(0===n)continue;n=Math.sqrt(n);const a=((o[0]-e[0])*(t[1]-e[1])-(o[1]-e[1])*(t[0]-e[0]))/n;if(Math.abs(a)<r){const i=((o[0]-e[0])*(t[0]-e[0])+(o[1]-e[1])*(t[1]-e[1]))/n;if(i>-r&&i<n+r)return!0}}}return!1}}class et extends Z{constructor(t,e,r,i){super(e,r),this._applyAdditionalRenderProps=i,this._colorSubstitutionHelper=new y,this._ctx=t}drawSolidFill(t,e){if(!t)return;if(u(t))this._buildPath(t.rings,!0);else if(d(t))this._buildPath(t.paths,!0);else if(p(t))this._buildPath(it(t).rings,!0);else{if(!_(t))return;console.log("CanvasDrawHelper.drawSolidFill - No implementation!")}const r=this._ctx;r.fillStyle="string"==typeof e?e:"rgba("+Math.round(e[0])+","+Math.round(e[1])+","+Math.round(e[2])+","+(e[3]??255)/255+")",r.fill("evenodd")}drawSolidStroke(t,e,r,i,s,o){if(!t||!e||0===r)return;if(u(t))this._buildPath(t.rings,!0);else if(d(t))this._buildPath(t.paths,!1);else{if(!p(t))return void console.log("CanvasDrawHelper.drawSolidStroke isn't implemented!");this._buildPath(it(t).rings,!0)}const n=this._ctx;n.strokeStyle="string"==typeof e?e:"rgba("+Math.round(e[0])+","+Math.round(e[1])+","+Math.round(e[2])+","+(e[3]??255)/255+")",n.lineWidth=Math.max(this.transformSize(r),.5),this._setCapStyle(i),this._setJoinStyle(s),n.miterLimit=o,n.stroke()}pushClipPath(t){if(this._ctx.save(),u(t))this._buildPath(t.rings,!0);else if(d(t))this._buildPath(t.paths,!0);else{if(!p(t))return;this._buildPath(it(t).rings,!0)}this._ctx.clip("evenodd")}popClipPath(){this._ctx.restore()}drawImage(t,e){const{colorSubstitutions:r,url:i,tintColor:s}=t,o=I(t.scaleX,1),n=this._resourceManager.getResource(i);if(null==n)return;let a=e*(n.width/n.height),l=e;e||(a=n.width,l=n.height);const h=T(i)||"src"in n&&T(n.src);let c="getFrame"in n?b(n):n;r&&(c=this._colorSubstitutionHelper.applyColorSubstituition(c,r)),this._applyAdditionalRenderProps&&!h&&s&&(c=this._colorSubstitutionHelper.tintImageData(c,s));const m=this.transformPt([0,0]),[f,u]=this.getTransformAngle(),d=this.transformSize(1),p=this._ctx;p.save(),p.setTransform({m11:o*d*f,m12:o*d*u,m21:-d*u,m22:d*f,m41:m[0],m42:m[1]}),p.drawImage(c,-a/2,-l/2,a,l),p.restore()}drawText(t,e){if(!e||0===e.length)return;this._textRasterizer||(this._textRasterizer=new C);const r=at(t);r.size*=this.transformSize(o(1));const i=this._textRasterizer.rasterizeText(e,r);if(!i)return;const{size:s,anchorX:n,anchorY:a,canvas:l}=i,h=s[0]*(n+.5),c=s[1]*(a-.5),m=this._ctx,f=this.transformPt([0,0]),[u,d]=this.getTransformAngle(),p=1;m.save(),m.setTransform({m11:p*u,m12:p*d,m21:-p*d,m22:p*u,m41:f[0]-p*h,m42:f[1]+p*c}),m.drawImage(l,0,0),m.restore()}drawPictureFill(t,e){if(!t)return;let{colorSubstitutions:r,height:i,offsetX:s,offsetY:o,rotation:n,scaleX:a,tintColor:l,url:h}=e;const c=this._resourceManager.getResource(h);if(null==c)return;if(u(t))this._buildPath(t.rings,!0);else if(d(t))this._buildPath(t.paths,!0);else if(p(t))this._buildPath(it(t).rings,!0);else{if(!_(t))return;console.log("CanvasDrawHelper.drawPictureFill - No implementation!")}const m=this._ctx,f=T(h)||"src"in c&&T(c.src);let g,y="getFrame"in c?b(c):c;if(r&&(y=this._colorSubstitutionHelper.applyColorSubstituition(y,r)),this._applyAdditionalRenderProps){f||l&&(y=this._colorSubstitutionHelper.tintImageData(y,l)),g=m.createPattern(y,"repeat");const t=this.transformSize(1);n||(n=0),s?s*=t:s=0,o?o*=t:o=0,i&&(i*=t);const e=i?i/c.height:1,r=a&&i?a*i/c.width:1;if(0!==n||1!==e||1!==r||0!==s||0!==o){const t=new DOMMatrix;t.rotateSelf(0,0,-n).translateSelf(s,o).scaleSelf(r,e,1),g.setTransform(t)}}else g=m.createPattern(y,"repeat");m.save(),m.fillStyle=g,m.fill("evenodd"),m.restore()}drawPictureStroke(t,e){if(!t)return;let{colorSubstitutions:i,capStyle:s,joinStyle:o,miterLimit:a,tintColor:l,url:h,width:c}=e;const m=this._resourceManager.getResource(h);if(null==m)return;let f;if(u(t))f=t.rings;else if(d(t))f=t.paths;else{if(!p(t))return _(t)?void console.log("CanvasDrawHelper.drawPictureStroke - No implementation!"):void 0;f=it(t).rings}c||(c=m.width);const g=T(h)||"src"in m&&T(m.src);let y="getFrame"in m?b(m):m;i&&(y=this._colorSubstitutionHelper.applyColorSubstituition(y,i)),this._applyAdditionalRenderProps&&(g||l&&(y=this._colorSubstitutionHelper.tintImageData(y,l)));const P=Math.max(this.transformSize(n(c)),.5),w=P/y.width,x=this._ctx,S=x.createPattern(y,"repeat-y");let M,k;x.save(),this._setCapStyle(s),this._setJoinStyle(o),void 0!==a&&(x.miterLimit=a),x.lineWidth=P;for(let n of f)if(n=r(n),ht(n),n&&!(n.length<=1)){M=this.transformPt(n[0]);for(let t=1;t<n.length;t++){k=this.transformPt(n[t]);const e=rt(M,k),r=new DOMMatrix;r.translateSelf(0,M[1]-P/2).scaleSelf(w,w,1).rotateSelf(0,0,90-e),S.setTransform(r),x.strokeStyle=S,x.beginPath(),x.moveTo(M[0],M[1]),x.lineTo(k[0],k[1]),x.stroke(),M=k}}x.restore()}_buildPath(t,e){const r=this._ctx;if(r.beginPath(),t)for(const i of t){const t=i?i.length:0;if(t>1){let s=this.transformPt(i[0]);r.moveTo(s[0],s[1]);for(let e=1;e<t;e++)s=this.transformPt(i[e]),r.lineTo(s[0],s[1]);e&&r.closePath()}}}_setCapStyle(t){switch(t){case S.Butt:this._ctx.lineCap="butt";break;case S.Round:this._ctx.lineCap="round";break;case S.Square:this._ctx.lineCap="square"}}_setJoinStyle(t){switch(t){case M.Bevel:this._ctx.lineJoin="bevel";break;case M.Round:this._ctx.lineJoin="round";break;case M.Miter:this._ctx.lineJoin="miter"}}}function rt(t,e){const r=e[0]-t[0],i=e[1]-t[1];return 180/Math.PI*Math.atan2(i,r)}const it=t=>t?{spatialReference:t.spatialReference,rings:[[[t.xmin,t.ymin],[t.xmin,t.ymax],[t.xmax,t.ymax],[t.xmax,t.ymin],[t.xmin,t.ymin]]]}:null,st=t=>{switch(t){case"Left":return B.Left;case"Right":return B.Right;case"Center":return B.Center;case"Justify":return N.warnOnce("Horizontal alignment 'justify' is not implemented. Falling back to 'center'."),B.Center}},ot=t=>{switch(t){case"Top":return G.Top;case"Center":return G.Center;case"Bottom":return G.Bottom;case"Baseline":return G.Baseline}},nt=(t,e,r)=>{switch(t){case"ExtraLeading":return 1+e/r;case"Multiple":return e;case"Exact":return e/r}};function at(t,r=1){const i=R(t),s=v(t.fontStyleName),o=e(t.fontFamilyName),{weight:n,style:a}=s,l=r*(t.height||5),h=z(t.horizontalAlignment),c=F(t.verticalAlignment),m=L(t),f=L(t.haloSymbol),u=f?r*(0|t.haloSize):0,d="CIMBackgroundCallout"===t.callout?.type?t.callout.backgroundSymbol:null,p=L(d),_=A(d),g=j(d);return{color:m,size:l,horizontalAlignment:h,verticalAlignment:c,font:{family:o,style:U(a),weight:H(n),decoration:i},halo:{size:u||0,color:f,style:a},backgroundColor:p,borderLine:null!=_&&null!=g?{size:_,color:g}:null,pixelRatio:1,premultiplyColors:!0}}const lt=1e-4;function ht(t){let e,r,i,s,o,n=t[0],a=1;for(;a<t.length;)e=t[a][0]-n[0],r=t[a][1]-n[1],s=0!==e?r/e:Math.PI/2,void 0!==i&&s-i<=lt?(t.splice(a-1,1),n=o):(o=n,n=t[a],a++),i=s}export{Z as CIMSymbolDrawHelper,J as C_DEG_TO_RAD,et as CanvasDrawHelper,Y as DEFAULT_HATCH_FILL_SEPARATION,q as DEFAULT_MARKER_SIZE,V as DEFAULT_PICTURE_FILL_HEIGHT,O as DEFAULT_STROKE_WIDTH,K as DEFAULT_TEXT_HALO_SIZE,W as DEFAULT_TEXT_HEIGHT,$ as EnvDrawHelper,tt as HittestDrawHelper,Q as Transformation,st as horizontalAlignment2HAlign,nt as lineGapType2LineHeight,ot as verticalAlignment2VAlign};
5
+ import{bidiText as t}from"../../core/BidiText.js";import{DEFAULT_FONT_FAMILY as e}from"../../core/fontUtils.js";import{clone as r}from"../../core/lang.js";import i from"../../core/Logger.js";import s from"../../core/ObjectPool.js";import{px2pt as o,pt2px as n}from"../../core/screenUtils.js";import{GeometryCursor as a}from"../../geometry/GeometryCursor.js";import{create as l,fromValues as h}from"../../geometry/support/aaBoundingRect.js";import{getBoundsXY as c}from"../../geometry/support/boundsUtils.js";import{polygonCentroid as m}from"../../geometry/support/centroid.js";import{isPoint as f,isPolygon as u,isPolyline as d,isExtent as p,isMultipoint as _}from"../../geometry/support/jsonUtils.js";import{SimpleEffectCursor as g}from"./CIMEffects.js";import y from"./CIMImageColorSubstitutionHelper.js";import{getEffectOperator as P,getPlacementOperator as w}from"./CIMOperators.js";import{Placement as x}from"./CIMPlacements.js";import{LineCapStyle as S,LineJoinStyle as M}from"./enums.js";import{getFirstFrame as b}from"./imageUtils.js";import k from"./Rect.js";import C from"./TextRasterizer.js";import{getValue as I,isSVGImage as T,fromCIMFontDecoration as R,fromCIMFontStyle as v,fromCIMHorizontalAlignment as z,fromCIMVerticalAlignment as F,getFillColor as L,getStrokeWidth as A,getStrokeColor as j,getFontStyle as U,getFontWeight as H}from"./utils.js";import{HAlign as B,VAlign as G}from"../../views/2d/engine/webgl/alignmentUtils.js";import{GLYPH_SIZE as D,MAGIC_LABEL_LINE_HEIGHT as X}from"../../views/2d/engine/webgl/definitions.js";import{shapeGlyphs as E}from"../../views/2d/engine/webgl/mesh/templates/shapingUtils.js";const J=Math.PI/180,N=i.getLogger("esri.symbols.cim.CIMSymbolDrawHelper"),O=4,q=10,V=10,Y=4,W=10,K=1;class Q{constructor(t){this._t=t}static createIdentity(){return new Q([1,0,0,0,1,0])}clone(){const t=this._t;return new Q(t.slice())}transform(t){const e=this._t;return[e[0]*t[0]+e[1]*t[1]+e[2],e[3]*t[0]+e[4]*t[1]+e[5]]}static createScale(t,e){return new Q([t,0,0,0,e,0])}scale(t,e){const r=this._t;return r[0]*=t,r[1]*=t,r[2]*=t,r[3]*=e,r[4]*=e,r[5]*=e,this}scaleRatio(){return Math.sqrt(this._t[0]*this._t[0]+this._t[1]*this._t[1])}static createTranslate(t,e){return new Q([0,0,t,0,0,e])}translate(t,e){const r=this._t;return r[2]+=t,r[5]+=e,this}static createRotate(t){const e=Math.cos(t),r=Math.sin(t);return new Q([e,-r,0,r,e,0])}rotate(t){return Q.multiply(this,Q.createRotate(t),this)}angle(){const t=this._t[0],e=this._t[3],r=Math.sqrt(t*t+e*e);return[t/r,e/r]}static multiply(t,e,r){const i=t._t,s=e._t,o=i[0]*s[0]+i[3]*s[1],n=i[1]*s[0]+i[4]*s[1],a=i[2]*s[0]+i[5]*s[1]+s[2],l=i[0]*s[3]+i[3]*s[4],h=i[1]*s[3]+i[4]*s[4],c=i[2]*s[3]+i[5]*s[4]+s[5],m=r._t;return m[0]=o,m[1]=n,m[2]=a,m[3]=l,m[4]=h,m[5]=c,r}invert(){const t=this._t;let e=t[0]*t[4]-t[1]*t[3];if(0===e)return new Q([0,0,0,0,0,0]);e=1/e;const r=(t[1]*t[5]-t[2]*t[4])*e,i=(t[2]*t[3]-t[0]*t[5])*e,s=t[4]*e,o=-t[1]*e,n=-t[3]*e,a=t[0]*e;return new Q([s,o,r,n,a,i])}}class Z{constructor(t,e){this._resourceManager=t,this._transfos=[],this._sizeTransfos=[],this._geomUnitsPerPoint=1,this._placementPool=new s(x,void 0,void 0,100),this._earlyReturn=!1,this._mapRotation=0,this._transfos.push(e||Q.createIdentity()),this._sizeTransfos.push(e?e.scaleRatio():1)}setTransform(t,e){this._transfos=[t||Q.createIdentity()],this._sizeTransfos=[e||(t?t.scaleRatio():1)]}setGeomUnitsPerPoint(t){this._geomUnitsPerPoint=t}transformPt(t){return this._transfos[this._transfos.length-1].transform(t)}transformSize(t){return t*this._sizeTransfos[this._sizeTransfos.length-1]}reverseTransformPt(t){return this._transfos[this._transfos.length-1].invert().transform(t)}reverseTransformSize(t){return t/this._sizeTransfos[this._sizeTransfos.length-1]}getTransformAngle(){return this._transfos[this._transfos.length-1].angle()}geomUnitsPerPoint(){return this.isEmbedded()?1:this._geomUnitsPerPoint}isEmbedded(){return this._transfos.length>1}back(){return this._transfos[this._transfos.length-1]}push(t,e){const r=e?t.scaleRatio():1;Q.multiply(t,this.back(),t),this._transfos.push(t),this._sizeTransfos.push(this._sizeTransfos[this._sizeTransfos.length-1]*r)}pop(){this._transfos.splice(-1,1),this._sizeTransfos.splice(-1,1)}drawSymbol(t,e,r){if(t)switch(t.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":this.drawMultiLayerSymbol(t,e);break;case"CIMTextSymbol":this.drawTextSymbol(t,e,r)}}drawMultiLayerSymbol(t,e){if(!t||!e)return;const r=t.symbolLayers;if(!r)return;const i=t.effects;if(i&&i.length>0){const t=this.executeEffects(i,e);if(t){let e=t.next();for(;e;)this.drawSymbolLayers(r,e.asJSON()),e=t.next()}}else this.drawSymbolLayers(r,e)}executeEffects(t,e){const r=this._resourceManager.geometryEngine;let i=new g(a.fromJSONCIM(e));for(const s of t){const t=P(s);t&&(i=t.execute(i,s,this.geomUnitsPerPoint(),null,r))}return i}drawSymbolLayers(t,e){let r=t.length;for(;r--;){const i=t[r];if(!i||!1===i.enable)continue;const s=i.effects;if(s&&s.length>0){const t=this.executeEffects(s,e);if(t){let e=null;for(;(e=t.next())&&(this.drawSymbolLayer(i,e.asJSON()),!this._earlyReturn););}}else this.drawSymbolLayer(i,e);if(this._earlyReturn)return}}drawSymbolLayer(t,e){switch(t.type){case"CIMSolidFill":this.drawSolidFill(e,t.color);break;case"CIMHatchFill":this.drawHatchFill(e,t);break;case"CIMPictureFill":this.drawPictureFill(e,t);break;case"CIMGradientFill":this.drawGradientFill(e,t);break;case"CIMSolidStroke":this.drawSolidStroke(e,t.color,t.width,t.capStyle,t.joinStyle,t.miterLimit);break;case"CIMPictureStroke":this.drawPictureStroke(e,t);break;case"CIMGradientStroke":this.drawGradientStroke(e,t);break;case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":this.drawMarkerLayer(t,e)}}drawHatchFill(t,e){const r=this._buildHatchPolyline(e,t,this.geomUnitsPerPoint());r&&(this.pushClipPath(t),this.drawMultiLayerSymbol(e.lineSymbol,r),this.popClipPath())}drawPictureFill(t,e){}drawGradientFill(t,e){}drawPictureStroke(t,e){}drawGradientStroke(t,e){}drawMarkerLayer(t,e){const r=t.markerPlacement;if(r){const i=w(r);if(i){const s="CIMMarkerPlacementInsidePolygon"===r.type||"CIMMarkerPlacementPolygonCenter"===r.type&&r.clipAtBoundary;s&&this.pushClipPath(e);const o=i.execute(a.fromJSONCIM(e),r,this.geomUnitsPerPoint(),null,this._resourceManager.geometryEngine);if(o){let e=null;for(;(e=o.next())&&(this.drawMarker(t,e),!this._earlyReturn););}s&&this.popClipPath()}}else{const r=this._placementPool.acquire();if(f(e))r.tx=e.x,r.ty=e.y,this.drawMarker(t,r);else if(u(e)){const i=m(e);i&&([r.tx,r.ty]=i,this.drawMarker(t,r))}else for(const i of e.points)if(r.tx=i[0],r.ty=i[1],this.drawMarker(t,r),this._earlyReturn)break;this._placementPool.release(r)}}drawMarker(t,e){switch(t.type){case"CIMCharacterMarker":case"CIMPictureMarker":this.drawPictureMarker(t,e);break;case"CIMVectorMarker":this.drawVectorMarker(t,e)}}drawPictureMarker(t,e){if(!t)return;const r=this._resourceManager.getResource(t.url),i=I(t.size,q);if(null==r||i<=0)return;const s=r.width,o=r.height;if(!s||!o)return;const n=s/o,a=I(t.scaleX,1),l=Q.createIdentity(),h=t.anchorPoint;if(h){let e=h.x,r=h.y;"Absolute"!==t.anchorPointUnits&&(e*=i*n*a,r*=i),l.translate(-e,-r)}let c=I(t.rotation);t.rotateClockwise&&(c=-c),this._mapRotation&&(c+=this._mapRotation),c&&l.rotate(c*J);let m=I(t.offsetX),f=I(t.offsetY);if(m||f){if(this._mapRotation){const t=J*this._mapRotation,e=Math.cos(t),r=Math.sin(t),i=m*r+f*e;m=m*e-f*r,f=i}l.translate(m,f)}const u=this.geomUnitsPerPoint();1!==u&&l.scale(u,u);const d=e.getAngle();d&&l.rotate(d),l.translate(e.tx,e.ty),this.push(l,!1),this.drawImage(t,i),this.pop()}drawVectorMarker(t,e){if(!t)return;const r=t.markerGraphics;if(!r)return;const i=I(t.size,q),s=t.frame,o=s?s.ymax-s.ymin:0,n=i&&o?i/o:1,a=Q.createIdentity();s&&a.translate(.5*-(s.xmax+s.xmin),.5*-(s.ymax+s.ymin));const l=t.anchorPoint;if(l){let e=l.x,r=l.y;"Absolute"!==t.anchorPointUnits?s&&(e*=s.xmax-s.xmin,r*=s.ymax-s.ymin):(e/=n,r/=n),a.translate(-e,-r)}1!==n&&a.scale(n,n);let h=I(t.rotation);t.rotateClockwise&&(h=-h),this._mapRotation&&(h+=this._mapRotation),h&&a.rotate(h*J);let c=I(t.offsetX),m=I(t.offsetY);if(c||m){if(this._mapRotation){const t=J*this._mapRotation,e=Math.cos(t),r=Math.sin(t),i=c*r+m*e;c=c*e-m*r,m=i}a.translate(c,m)}const f=this.geomUnitsPerPoint();1!==f&&a.scale(f,f);const u=e.getAngle();u&&a.rotate(u),a.translate(e.tx,e.ty),this.push(a,t.scaleSymbolsProportionally);for(const d of r)if(d&&d.symbol&&d.geometry||N.error("Invalid marker graphic",d),this.drawSymbol(d.symbol,d.geometry,d.textString),this._earlyReturn)break;this.pop()}drawTextSymbol(t,e,r){if(!t)return;if(!f(e))return;if(I(t.height,W)<=0)return;const i=Q.createIdentity();let s=I(t.angle);s=-s,s&&i.rotate(s*J);const o=I(t.offsetX),n=I(t.offsetY);(o||n)&&i.translate(o,n);const a=this.geomUnitsPerPoint();1!==a&&i.scale(a,a),i.translate(e.x,e.y),this.push(i,!1),this.drawText(t,r),this.pop()}_buildHatchPolyline(t,e,r){let i=I(t.separation,Y)*r,s=I(t.rotation);if(0===i)return null;i<0&&(i=-i);let o=0;const n=.5*i;for(;o>n;)o-=i;for(;o<-n;)o+=i;const a=l();c(a,e),a[0]-=n,a[1]-=n,a[2]+=n,a[3]+=n;const h=[[a[0],a[1]],[a[0],a[3]],[a[2],a[3]],[a[2],a[1]]];for(;s>180;)s-=180;for(;s<0;)s+=180;const m=Math.cos(s*J),f=Math.sin(s*J),u=-i*f,d=i*m;let p,_,g,y;o=I(t.offsetX)*r*f-I(t.offsetY)*r*m,p=g=Number.MAX_VALUE,_=y=-Number.MAX_VALUE;for(const l of h){const t=l[0],e=l[1],r=m*t+f*e,i=-f*t+m*e;p=Math.min(p,r),g=Math.min(g,i),_=Math.max(_,r),y=Math.max(y,i)}g=Math.floor(g/i)*i;let P=m*p-f*g-u*o/i,w=f*p+m*g-d*o/i,x=m*_-f*g-u*o/i,S=f*_+m*g-d*o/i;const M=1+Math.round((y-g)/i),b=[];for(let l=0;l<M;l++)P+=u,w+=d,x+=u,S+=d,b.push([[P,w],[x,S]]);return{paths:b}}}class $ extends Z{constructor(t,e){super(t,e),this.reset()}reset(){this._xmin=this._ymin=1/0,this._xmax=this._ymax=-1/0,this._clipCount=0}envelope(){return new k(this._xmin,this._ymin,this._xmax-this._xmin,this._ymax-this._ymin)}bounds(){return h(this._xmin,this._ymin,this._xmax,this._ymax)}drawSolidFill(t){if(t&&!(this._clipCount>0))if(u(t))this._processPath(t.rings,0);else if(d(t))this._processPath(t.paths,0);else if(p(t)){const e=it(t);e&&this._processPath(e.rings,0)}else console.error("drawSolidFill Unexpected geometry type!")}drawSolidStroke(t,e,r){if(!t||this._clipCount>0)return;const i=.5*this.transformSize(I(r,O));if(u(t))this._processPath(t.rings,i);else if(d(t))this._processPath(t.paths,i);else if(p(t)){const e=it(t);e&&this._processPath(e.rings,i)}else console.error("drawSolidStroke unexpected geometry type!")}drawMarkerLayer(t,e){u(e)&&t.markerPlacement&&("CIMMarkerPlacementInsidePolygon"===t.markerPlacement.type||"CIMMarkerPlacementPolygonCenter"===t.markerPlacement.type&&t.markerPlacement.clipAtBoundary)?this._processPath(e.rings,0):super.drawMarkerLayer(t,e)}drawHatchFill(t,e){this.drawSolidFill(t)}drawPictureFill(t,e){this.drawSolidFill(t)}drawGradientFill(t,e){this.drawSolidFill(t)}drawPictureStroke(t,e){this.drawSolidStroke(t,null,e.width)}drawGradientStroke(t,e){this.drawSolidStroke(t,null,e.width)}pushClipPath(t){this.drawSolidFill(t),this._clipCount++}popClipPath(){this._clipCount--}drawImage(t,e){const{url:r}=t,i=I(t.scaleX,1);let s=i*e,o=e;const n=this._resourceManager.getResource(r);e||null==n||(s=i*n.width,o=n.height),this._merge(this.transformPt([-s/2,-o/2]),0),this._merge(this.transformPt([-s/2,o/2]),0),this._merge(this.transformPt([s/2,-o/2]),0),this._merge(this.transformPt([s/2,o/2]),0)}drawText(t,e){if(!e||0===e.length)return;this._textRasterizer||(this._textRasterizer=new C);const r=at(t),[i,s]=this._textRasterizer.computeTextSize(e,r);let o=0;switch(t.horizontalAlignment){case"Left":o=i/2;break;case"Right":o=-i/2}let n=0;switch(t.verticalAlignment){case"Bottom":n=s/2;break;case"Top":n=-s/2;break;case"Baseline":n=s/6}this._merge(this.transformPt([-i/2+o,-s/2+n]),0),this._merge(this.transformPt([-i/2+o,s/2+n]),0),this._merge(this.transformPt([i/2+o,-s/2+n]),0),this._merge(this.transformPt([i/2+o,s/2+n]),0)}_processPath(t,e){if(t)for(const r of t){const t=r?r.length:0;if(t>1){this._merge(this.transformPt(r[0]),e);for(let i=1;i<t;i++)this._merge(this.transformPt(r[i]),e)}}}_merge(t,e){t[0]-e<this._xmin&&(this._xmin=t[0]-e),t[0]+e>this._xmax&&(this._xmax=t[0]+e),t[1]-e<this._ymin&&(this._ymin=t[1]-e),t[1]+e>this._ymax&&(this._ymax=t[1]+e)}}class tt extends Z{constructor(){super(...arguments),this._searchPoint=[0,0],this._searchDistPoint=0,this._textInfo=null}hitTest(t,e,r,i,s,o){const a=o*n(1);this.setTransform(),this.setGeomUnitsPerPoint(a),this._searchPoint=[(t[0]+t[2])/2,(t[1]+t[3])/2],this._searchDistPoint=(t[2]-t[0])/2/a,this._textInfo=i;const l=e&&("CIMPointSymbol"===e.type&&"Map"!==e.angleAlignment||"CIMTextSymbol"===e.type);return this._mapRotation=l?s:0,this._earlyReturn=!1,this.drawSymbol(e,r),this._earlyReturn}drawSolidFill(t,e){this._hitTestFill(t)}drawHatchFill(t,e){this._hitTestFill(t)}drawPictureFill(t,e){this._hitTestFill(t)}drawGradientFill(t,e){this._hitTestFill(t)}drawSolidStroke(t,e,r,i,s,o){this._hitTestStroke(t,r)}drawPictureStroke(t,e){this._hitTestStroke(t,e.width)}drawGradientStroke(t,e){this._hitTestStroke(t,e.width)}drawMarkerLayer(t,e){t.markerPlacement&&("CIMMarkerPlacementInsidePolygon"===t.markerPlacement.type||"CIMMarkerPlacementPolygonCenter"===t.markerPlacement.type&&t.markerPlacement.clipAtBoundary)?this._hitTestFill(e):super.drawMarkerLayer(t,e)}pushClipPath(t){}popClipPath(){}drawImage(t,e){const{url:r}=t,i=I(t.scaleX,1),s=this._resourceManager.getResource(r);if(null==s||0===s.height||0===e)return;const o=e*this.geomUnitsPerPoint(),n=o*i*(s.width/s.height),a=this.reverseTransformPt(this._searchPoint),l=this._searchDistPoint;Math.abs(a[0])<n/2+l&&Math.abs(a[1])<o/2+l&&(this._earlyReturn=!0)}drawText(e,r){const i=this._textInfo;if(!i)return;const s=i.get(e);if(!s)return;const{text:o,mosaicItem:n}=s;if(!n?.glyphMosaicItems?.length)return;const a=I(e.height,W),{lineGapType:l,lineGap:h}=e,c=l?nt(l,I(h),a):0,m=t(o)[1],f=n.glyphMosaicItems,u="CIMBackgroundCallout"===e.callout?.type,d=E(f,m,{scale:a/D,angle:0,xOffset:0,yOffset:0,hAlign:st(e.horizontalAlignment),vAlign:ot(e.verticalAlignment),maxLineWidth:512,lineHeight:X*Math.max(.25,Math.min(c||1,4)),decoration:e.font.decoration||"none",isCIM:!0,hasBackground:u}),p=this.reverseTransformPt(this._searchPoint),_=p[0],g=p[1];for(const t of d.glyphs)if(_>t.xTopLeft&&_<t.xBottomRight&&g>-t.yBottomRight&&g<-t.yTopLeft){this._earlyReturn=!0;break}}_hitTestFill(t){let e=null;if(p(t)){const r=t;e=[[[r.xmin,r.ymin],[r.xmin,r.ymax],[r.xmax,r.ymax],[r.xmax,r.ymin],[r.xmin,r.ymin]]]}else if(u(t))e=t.rings;else{if(!d(t))return;e=t.paths}const r=this.reverseTransformPt(this._searchPoint);if(this._pointInPolygon(r,e)&&(this._earlyReturn=!0),!this._earlyReturn){const t=this.reverseTransformSize(this._searchDistPoint)*this.geomUnitsPerPoint();this._nearLine(r,e,t)&&(this._earlyReturn=!0)}}_hitTestStroke(t,e){let r=null;if(p(t)){const e=t;r=[[[e.xmin,e.ymin],[e.xmin,e.ymax],[e.xmax,e.ymax],[e.xmax,e.ymin],[e.xmin,e.ymin]]]}else if(u(t))r=t.rings;else{if(!d(t))return;r=t.paths}const i=this.reverseTransformPt(this._searchPoint),s=I(e,O)*this.geomUnitsPerPoint(),o=this.reverseTransformSize(this._searchDistPoint)*this.geomUnitsPerPoint();this._nearLine(i,r,s/2+o)&&(this._earlyReturn=!0)}_pointInPolygon(t,e){let r=0;for(const i of e){const e=i.length;for(let s=1;s<e;s++){const e=i[s-1],o=i[s];if(e[1]>t[1]==o[1]>t[1])continue;(o[0]-e[0])*(t[1]-e[1])-(o[1]-e[1])*(t[0]-e[0])>0?r++:r--}}return 0!==r}_nearLine(t,e,r){for(const i of e){const e=i.length;for(let s=1;s<e;s++){const e=i[s-1],o=i[s];let n=(o[0]-e[0])*(o[0]-e[0])+(o[1]-e[1])*(o[1]-e[1]);if(0===n)continue;n=Math.sqrt(n);const a=((o[0]-e[0])*(t[1]-e[1])-(o[1]-e[1])*(t[0]-e[0]))/n;if(Math.abs(a)<r){const i=((o[0]-e[0])*(t[0]-e[0])+(o[1]-e[1])*(t[1]-e[1]))/n;if(i>-r&&i<n+r)return!0}}}return!1}}class et extends Z{constructor(t,e,r,i){super(e,r),this._applyAdditionalRenderProps=i,this._colorSubstitutionHelper=new y,this._ctx=t}drawSolidFill(t,e){if(!t)return;if(u(t))this._buildPath(t.rings,!0);else if(d(t))this._buildPath(t.paths,!0);else if(p(t))this._buildPath(it(t).rings,!0);else{if(!_(t))return;console.log("CanvasDrawHelper.drawSolidFill - No implementation!")}const r=this._ctx;r.fillStyle="string"==typeof e?e:"rgba("+Math.round(e[0])+","+Math.round(e[1])+","+Math.round(e[2])+","+(e[3]??255)/255+")",r.fill("evenodd")}drawSolidStroke(t,e,r,i,s,o){if(!t||!e||0===r)return;if(u(t))this._buildPath(t.rings,!0);else if(d(t))this._buildPath(t.paths,!1);else{if(!p(t))return void console.log("CanvasDrawHelper.drawSolidStroke isn't implemented!");this._buildPath(it(t).rings,!0)}const n=this._ctx;n.strokeStyle="string"==typeof e?e:"rgba("+Math.round(e[0])+","+Math.round(e[1])+","+Math.round(e[2])+","+(e[3]??255)/255+")",n.lineWidth=Math.max(this.transformSize(r),.5),this._setCapStyle(i),this._setJoinStyle(s),n.miterLimit=o,n.stroke()}pushClipPath(t){if(this._ctx.save(),u(t))this._buildPath(t.rings,!0);else if(d(t))this._buildPath(t.paths,!0);else{if(!p(t))return;this._buildPath(it(t).rings,!0)}this._ctx.clip("evenodd")}popClipPath(){this._ctx.restore()}drawImage(t,e){const{colorSubstitutions:r,url:i,tintColor:s}=t,o=I(t.scaleX,1),n=this._resourceManager.getResource(i);if(null==n)return;let a=e*(n.width/n.height),l=e;e||(a=n.width,l=n.height);const h=T(i)||"src"in n&&T(n.src);let c="getFrame"in n?b(n):n;r&&(c=this._colorSubstitutionHelper.applyColorSubstituition(c,r)),this._applyAdditionalRenderProps&&!h&&s&&(c=this._colorSubstitutionHelper.tintImageData(c,s));const m=this.transformPt([0,0]),[f,u]=this.getTransformAngle(),d=this.transformSize(1),p=this._ctx;p.save(),p.setTransform({m11:o*d*f,m12:o*d*u,m21:-d*u,m22:d*f,m41:m[0],m42:m[1]}),p.drawImage(c,-a/2,-l/2,a,l),p.restore()}drawText(t,e){if(!e||0===e.length)return;this._textRasterizer||(this._textRasterizer=new C);const r=at(t);r.size*=this.transformSize(o(1));const i=this._textRasterizer.rasterizeText(e,r);if(!i)return;const{size:s,anchorX:n,anchorY:a,canvas:l}=i,h=s[0]*(n+.5),c=s[1]*(a-.5),m=this._ctx,f=this.transformPt([0,0]),[u,d]=this.getTransformAngle(),p=1;m.save(),m.setTransform({m11:p*u,m12:p*d,m21:-p*d,m22:p*u,m41:f[0]-p*h,m42:f[1]+p*c}),m.drawImage(l,0,0),m.restore()}drawPictureFill(t,e){if(!t)return;let{colorSubstitutions:r,height:i,offsetX:s,offsetY:o,rotation:n,scaleX:a,tintColor:l,url:h}=e;const c=this._resourceManager.getResource(h);if(null==c)return;if(u(t))this._buildPath(t.rings,!0);else if(d(t))this._buildPath(t.paths,!0);else if(p(t))this._buildPath(it(t).rings,!0);else{if(!_(t))return;console.log("CanvasDrawHelper.drawPictureFill - No implementation!")}const m=this._ctx,f=T(h)||"src"in c&&T(c.src);let g,y="getFrame"in c?b(c):c;if(r&&(y=this._colorSubstitutionHelper.applyColorSubstituition(y,r)),this._applyAdditionalRenderProps){f||l&&(y=this._colorSubstitutionHelper.tintImageData(y,l)),g=m.createPattern(y,"repeat");const t=this.transformSize(1);n||(n=0),s?s*=t:s=0,o?o*=t:o=0,i&&(i*=t);const e=i?i/c.height:1,r=a&&i?a*i/c.width:1;if(0!==n||1!==e||1!==r||0!==s||0!==o){const t=new DOMMatrix;t.rotateSelf(0,0,-n).translateSelf(s,o).scaleSelf(r,e,1),g.setTransform(t)}}else g=m.createPattern(y,"repeat");m.save(),m.fillStyle=g,m.fill("evenodd"),m.restore()}drawPictureStroke(t,e){if(!t)return;let{colorSubstitutions:i,capStyle:s,joinStyle:o,miterLimit:a,tintColor:l,url:h,width:c}=e;const m=this._resourceManager.getResource(h);if(null==m)return;let f;if(u(t))f=t.rings;else if(d(t))f=t.paths;else{if(!p(t))return _(t)?void console.log("CanvasDrawHelper.drawPictureStroke - No implementation!"):void 0;f=it(t).rings}c||(c=m.width);const g=T(h)||"src"in m&&T(m.src);let y="getFrame"in m?b(m):m;i&&(y=this._colorSubstitutionHelper.applyColorSubstituition(y,i)),this._applyAdditionalRenderProps&&(g||l&&(y=this._colorSubstitutionHelper.tintImageData(y,l)));const P=Math.max(this.transformSize(n(c)),.5),w=P/y.width,x=this._ctx,S=x.createPattern(y,"repeat-y");let M,k;x.save(),this._setCapStyle(s),this._setJoinStyle(o),void 0!==a&&(x.miterLimit=a),x.lineWidth=P;for(let n of f)if(n=r(n),ht(n),n&&!(n.length<=1)){M=this.transformPt(n[0]);for(let t=1;t<n.length;t++){k=this.transformPt(n[t]);const e=rt(M,k),r=new DOMMatrix;r.translateSelf(0,M[1]-P/2).scaleSelf(w,w,1).rotateSelf(0,0,90-e),S.setTransform(r),x.strokeStyle=S,x.beginPath(),x.moveTo(M[0],M[1]),x.lineTo(k[0],k[1]),x.stroke(),M=k}}x.restore()}_buildPath(t,e){const r=this._ctx;if(r.beginPath(),t)for(const i of t){const t=i?i.length:0;if(t>1){let s=this.transformPt(i[0]);r.moveTo(s[0],s[1]);for(let e=1;e<t;e++)s=this.transformPt(i[e]),r.lineTo(s[0],s[1]);e&&r.closePath()}}}_setCapStyle(t){switch(t){case S.Butt:this._ctx.lineCap="butt";break;case S.Round:this._ctx.lineCap="round";break;case S.Square:this._ctx.lineCap="square"}}_setJoinStyle(t){switch(t){case M.Bevel:this._ctx.lineJoin="bevel";break;case M.Round:this._ctx.lineJoin="round";break;case M.Miter:this._ctx.lineJoin="miter"}}}function rt(t,e){const r=e[0]-t[0],i=e[1]-t[1];return 180/Math.PI*Math.atan2(i,r)}const it=t=>t?{spatialReference:t.spatialReference,rings:[[[t.xmin,t.ymin],[t.xmin,t.ymax],[t.xmax,t.ymax],[t.xmax,t.ymin],[t.xmin,t.ymin]]]}:null,st=t=>{switch(t){case"Left":return B.Left;case"Right":return B.Right;case"Center":return B.Center;case"Justify":return N.warnOnce("Horizontal alignment 'justify' is not implemented. Falling back to 'center'."),B.Center}},ot=t=>{switch(t){case"Top":return G.Top;case"Center":return G.Center;case"Bottom":return G.Bottom;case"Baseline":return G.Baseline}},nt=(t,e,r)=>{switch(t){case"ExtraLeading":return 1+e/r;case"Multiple":return e;case"Exact":return e/r}};function at(t,r=1){const i=R(t),s=v(t.fontStyleName),o=t.fontFamilyName??e,{weight:n,style:a}=s,l=r*(t.height||5),h=z(t.horizontalAlignment),c=F(t.verticalAlignment),m=L(t),f=L(t.haloSymbol),u=f?r*(0|t.haloSize):0,d="CIMBackgroundCallout"===t.callout?.type?t.callout.backgroundSymbol:null,p=L(d),_=A(d),g=j(d);return{color:m,size:l,horizontalAlignment:h,verticalAlignment:c,font:{family:o,style:U(a),weight:H(n),decoration:i},halo:{size:u||0,color:f,style:a},backgroundColor:p,borderLine:null!=_&&null!=g?{size:_,color:g}:null,pixelRatio:1,premultiplyColors:!0}}const lt=1e-4;function ht(t){let e,r,i,s,o,n=t[0],a=1;for(;a<t.length;)e=t[a][0]-n[0],r=t[a][1]-n[1],s=0!==e?r/e:Math.PI/2,void 0!==i&&s-i<=lt?(t.splice(a-1,1),n=o):(o=n,n=t[a],a++),i=s}export{Z as CIMSymbolDrawHelper,J as C_DEG_TO_RAD,et as CanvasDrawHelper,Y as DEFAULT_HATCH_FILL_SEPARATION,q as DEFAULT_MARKER_SIZE,V as DEFAULT_PICTURE_FILL_HEIGHT,O as DEFAULT_STROKE_WIDTH,K as DEFAULT_TEXT_HALO_SIZE,W as DEFAULT_TEXT_HEIGHT,$ as EnvDrawHelper,tt as HittestDrawHelper,Q as Transformation,st as horizontalAlignment2HAlign,nt as lineGapType2LineHeight,ot as verticalAlignment2VAlign};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../Color.js";import"../../symbols.js";import{bidiText as t}from"../../core/BidiText.js";import{getFontFamily as r}from"../../core/fontUtils.js";import{clone as a}from"../../core/lang.js";import o from"../../core/Logger.js";import i from"../../core/RandomLCG.js";import{pt2px as s,px2pt as n}from"../../core/screenUtils.js";import{create as l,expandPointInPlace as c}from"../../geometry/support/aaBoundingRect.js";import{getBoundsXY as m}from"../../geometry/support/boundsUtils.js";import{createRendererExpression as f}from"../../support/arcadeOnDemand.js";import{Placement as y}from"./CIMPlacements.js";import{DEFAULT_TEXT_HEIGHT as u,horizontalAlignment2HAlign as h,verticalAlignment2VAlign as p,EnvDrawHelper as M,Transformation as d,CanvasDrawHelper as S,DEFAULT_HATCH_FILL_SEPARATION as b,lineGapType2LineHeight as g}from"./CIMSymbolDrawHelper.js";import{LineCapStyle as C,LineJoinStyle as I,BlockProgression as k,FontEffects as x,FontEncoding as w,FontType as P,GlyphHinting as v,TextReadingDirection as L,VerticalGlyphOrientation as F,BillBoardMode as D,TextureFilter as T,ExtremityPlacement as G}from"./enums.js";import{getValue as z,fromCIMFontStyle as E,fromCIMFontDecoration as O,isCIMMarkerStrokePlacement as A,attributesToFields as N,analyzeTextParts as R,assignTextValuesFromFeature as j,isGeometryEngineRequired as V,importGeometryEngine as B}from"./utils.js";import X from"../../views/2d/arcade/callExpressionWithFeature.js";import{C_INFINITY as _}from"../../views/2d/engine/vectorTiles/GeometryUtils.js";import{GLYPH_SIZE as H,MAGIC_LABEL_LINE_HEIGHT as Y,RANDOM_INSIDE_POLYGON_TEXTURE_SIZE as U}from"../../views/2d/engine/webgl/definitions.js";import{shapeGlyphs as $}from"../../views/2d/engine/webgl/mesh/templates/shapingUtils.js";import q from"../Font.js";const W=Math.PI,J=W/2,K=Math.PI/180,Q=96/72,Z=4,ee=o.getLogger("esri.symbols.cim.CIMSymbolHelper");function te(e){if(!e||!e.type)return null;let t;switch(e.type){case"cim":return e.data;case"web-style":return e;case"simple-marker":{const r=ne.fromSimpleMarker(e);if(!r)return null;t=r;break}case"picture-marker":t=ne.fromPictureMarker(e);break;case"simple-line":t=ne.fromSimpleLineSymbol(e);break;case"simple-fill":t=ne.fromSimpleFillSymbol(e);break;case"picture-fill":t=ne.fromPictureFillSymbol(e);break;case"text":t=ne.fromTextSymbol(e)}return{type:"CIMSymbolReference",symbol:t}}function re(e,t,r){switch(t.type){case"CIMSymbolReference":return re(e,t.symbol,r);case"CIMPointSymbol":null==r&&(r={x:0,y:0}),e.drawSymbol(t,r);break;case"CIMLineSymbol":null==r&&(r={paths:[[[0,0],[10,0]]]}),e.drawSymbol(t,r);break;case"CIMPolygonSymbol":null==r&&(r={rings:[[[0,0],[0,10],[10,10],[10,0],[0,0]]]}),e.drawSymbol(t,r);break;case"CIMTextSymbol":{const r={x:0,y:0};e.drawSymbol(t,r);break}case"CIMVectorMarker":{const r=new y;e.drawMarker(t,r);break}}return e.envelope()}function ae(e){if(!e)return 0;switch(e.type){case"CIMMarkerPlacementAlongLineSameSize":case"CIMMarkerPlacementAlongLineRandomSize":case"CIMMarkerPlacementAtExtremities":case"CIMMarkerPlacementAtMeasuredUnits":case"CIMMarkerPlacementAtRatioPositions":case"CIMMarkerPlacementOnLine":case"CIMMarkerPlacementOnVertices":return Math.abs(e.offset);default:return 0}}function oe(e){if(!e)return 0;switch(e.type){case"CIMGeometricEffectArrow":return Math.abs(.5*e.width);case"CIMGeometricEffectBuffer":return Math.abs(e.size);case"CIMGeometricEffectExtension":case"CIMGeometricEffectRadial":return Math.abs(e.length);case"CIMGeometricEffectJog":return Math.abs(.5*e.length);case"CIMGeometricEffectMove":return Math.max(Math.abs(z(e.offsetX)),Math.abs(z(e.offsetY)));case"CIMGeometricEffectOffset":case"CIMGeometricEffectOffsetTangent":return Math.abs(e.offset);case"CIMGeometricEffectRegularPolygon":return Math.abs(e.radius);case"CIMGeometricEffectRotate":case"CIMGeometricEffectScale":default:return 0;case"CIMGeometricEffectTaperedPolygon":return.5*Math.max(Math.abs(e.fromWidth),Math.abs(e.toWidth));case"CIMGeometricEffectWave":return Math.abs(e.amplitude);case"CIMGeometricEffectDonut":return Math.abs(e.width)}}function ie(e){if(!e)return 0;let t=0;for(const r of e)t+=oe(r);return t}class se{getSymbolInflateSize(e,t,r,a,o){return e||(e=[0,0,0,0]),t?this._getInflateSize(e,t,r,a,o):e}static safeSize(e){const t=Math.max(Math.abs(e[0]),Math.abs(e[2])),r=Math.max(Math.abs(e[1]),Math.abs(e[3]));return Math.sqrt(t*t+r*r)}_vectorMarkerBounds(e,t,r,a){let o=!0;const i=l();if(t&&t.markerGraphics)for(const s of t.markerGraphics){const t=[0,0,0,0];s.geometry&&(m(i,s.geometry),t[0]=0,t[1]=0,t[2]=0,t[3]=0,this.getSymbolInflateSize(t,s.symbol,r,0,a),i[0]+=t[0],i[1]+=t[1],i[2]+=t[2],i[3]+=t[3],o?(e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],o=!1):(e[0]=Math.min(e[0],i[0]),e[1]=Math.min(e[1],i[1]),e[2]=Math.max(e[2],i[2]),e[3]=Math.max(e[3],i[3])))}return e}_getInflateSize(e,t,r,a,o){if(Se(t)){const i=this._getLayersInflateSize(e,t.symbolLayers,r,a,o),s=ie(t.effects);return s>0&&(i[0]-=s,i[1]-=s,i[2]+=s,i[3]+=s),i}return this._getTextInflatedSize(e,t,o)}_getLayersInflateSize(e,t,r,a,o){let i=!0;if(!t)return e;for(const s of t){if(!s)continue;let t=[0,0,0,0];switch(s.type){case"CIMSolidFill":case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":break;case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":{const e=s;let r=e.width;null!=r&&(e.capStyle===C.Square||e.joinStyle===I.Miter?r/=1.4142135623730951:r/=2,t[0]=-r,t[1]=-r,t[2]=r,t[3]=r);break}case"CIMCharacterMarker":case"CIMVectorMarker":case"CIMPictureMarker":{const e=s;if("CIMVectorMarker"===s.type){const e=s;if(t=this._vectorMarkerBounds(t,e,r,o),e.frame){const r=(e.frame.xmin+e.frame.xmax)/2,a=(e.frame.ymin+e.frame.ymax)/2;if(t[0]-=r,t[1]-=a,t[2]-=r,t[3]-=a,null!=e.size){const r=e.size/(e.frame.ymax-e.frame.ymin);t[0]*=r,t[1]*=r,t[2]*=r,t[3]*=r}}}else if("CIMPictureMarker"===s.type){const a=s,o=r.getResource(a.url);let i=1;if(null!=o&&o.height&&(i=o.width/o.height),null!=e.size){const r=e.size/2,o=e.size*i*a.scaleX/2;t=[-o,-r,o,r]}}else if(null!=e.size){const r=e.size/2;t=[-r,-r,r,r]}if(e.anchorPoint){let r,a;"Absolute"===e.anchorPointUnits?(r=e.anchorPoint.x,a=e.anchorPoint.y):(r=e.anchorPoint.x*(t[2]-t[0]),a=e.anchorPoint.y*(t[3]-t[1])),t[0]-=r,t[1]-=a,t[2]-=r,t[3]-=a}let i=z(e.rotation);if(e.rotateClockwise&&(i=-i),a&&(i-=a),i){const e=K*i,r=Math.cos(e),a=Math.sin(e),o=l([_,_,-_,-_]);c(o,[t[0]*r-t[1]*a,t[0]*a+t[1]*r]),c(o,[t[0]*r-t[3]*a,t[0]*a+t[3]*r]),c(o,[t[2]*r-t[1]*a,t[2]*a+t[1]*r]),c(o,[t[2]*r-t[3]*a,t[2]*a+t[3]*r]),t=o}let n=z(e.offsetX),m=z(e.offsetY);if(a){const e=K*a,t=Math.cos(e),r=Math.sin(e),o=n*r+m*t;n=n*t-m*r,m=o}t[0]+=n,t[1]+=m,t[2]+=n,t[3]+=m;const f=ae(e.markerPlacement);f>0&&(t[0]-=f,t[1]-=f,t[2]+=f,t[3]+=f);break}}const n=ie(s.effects);n>0&&(t[0]-=n,t[1]-=n,t[2]+=n,t[3]+=n),i?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],i=!1):(e[0]=Math.min(e[0],t[0]),e[1]=Math.min(e[1],t[1]),e[2]=Math.max(e[2],t[2]),e[3]=Math.max(e[3],t[3]))}return e}_getTextInflatedSize(e,r,a){const o=r.height??u;if(e[0]=-o/2,e[1]=-o/2,e[2]=o/2,e[3]=o/2,!a)return e;const i=a.get(r);if(!i)return e;const{text:s,mosaicItem:n}=i;if(!n?.glyphMosaicItems?.length)return e;const{lineGapType:l,lineGap:c}=r,m=l?g(l,c??0,o):0,f=t(s)[1],y=n.glyphMosaicItems,M="CIMBackgroundCallout"===r.callout?.type,d=$(y,f,{scale:o/H,angle:z(r.angle),xOffset:z(r.offsetX),yOffset:z(r.offsetY),hAlign:h(r.horizontalAlignment),vAlign:p(r.verticalAlignment),maxLineWidth:512,lineHeight:Y*Math.max(.25,Math.min(m||1,4)),decoration:r.font.decoration||"none",isCIM:!0,hasBackground:M}).boundsT;return e[0]=d.x-d.halfWidth,e[1]=-d.y-d.halfHeight,e[2]=d.x+d.halfWidth,e[3]=-d.y+d.halfHeight,e}}class ne{static getEnvelope(e,t,r){if(!e)return null;const a=new M(r);if(Array.isArray(e)){let r;for(const o of e)r?r.union(re(a,o,t)):r=re(a,o,t);return r}return re(a,e,t)}static getTextureAnchor(e,t){const r=this.getEnvelope(e,null,t);if(!r)return[0,0,0];const a=(r.x+.5*r.width)*Q,o=(r.y+.5*r.height)*Q,i=r.width*Q+2,s=r.height*Q+2;return[-a/i,-o/s,s]}static rasterize(e,t,r,a,o=!0){const i=r||this.getEnvelope(t,null,a);if(!i)return[null,0,0,0,0];const s=(i.x+.5*i.width)*Q,n=(i.y+.5*i.height)*Q;e.width=i.width*Q,e.height=i.height*Q,r||(e.width+=2,e.height+=2);const l=e.getContext("2d"),c=d.createScale(Q,-Q);c.translate(.5*e.width-s,.5*e.height+n);const m=new S(l,a,c);switch(t.type){case"CIMPointSymbol":{const e={type:"point",x:0,y:0};m.drawSymbol(t,e);break}case"CIMVectorMarker":{const e=new y;m.drawMarker(t,e);break}}const f=l.getImageData(0,0,e.width,e.height),u=new Uint8Array(f.data);if(o){let e;for(let t=0;t<u.length;t+=4)e=u[t+3]/255,u[t]=u[t]*e,u[t+1]=u[t+1]*e,u[t+2]=u[t+2]*e}return[u,e.width,e.height,-s/e.width,-n/e.height]}static fromTextSymbol(e){const{angle:r,color:a,font:o,haloColor:i,haloSize:s,horizontalAlignment:n,kerning:l,text:c,verticalAlignment:m,xoffset:f,yoffset:y,backgroundColor:u,borderLineColor:h,borderLineSize:p}=e;let M,d,S,b,g,C;o&&(M=o.family,d=o.style,S=o.weight,b=o.size,g=o.decoration);let I=!1;if(c){I=t(c)[1]}return(u||p)&&(C={type:"CIMBackgroundCallout",margin:null,backgroundSymbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",color:ue(u)},{type:"CIMSolidStroke",color:ue(h),width:p}]},accentBarSymbol:null,gap:null,leaderLineSymbol:null,lineStyle:null}),{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,anchorPointUnits:"Relative",dominantSizeAxis3D:"Y",size:10,billboardMode3D:"FaceNearPlane",frame:{xmin:-5,ymin:-5,xmax:5,ymax:5},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{x:0,y:0},symbol:{type:"CIMTextSymbol",angle:r,blockProgression:k.BTT,depth3D:1,extrapolateBaselines:!0,fontEffects:x.Normal,fontEncoding:w.Unicode,fontFamilyName:M||"Arial",fontStyleName:he(d,S),fontType:P.Unspecified,haloSize:s,height:b,hinting:v.Default,horizontalAlignment:fe(n??"center"),kerning:l,letterWidth:100,ligatures:!0,lineGapType:"Multiple",offsetX:z(f),offsetY:z(y),strikethrough:"line-through"===g,underline:"underline"===g,symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:ue(a)}]},haloSymbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:ue(i)}]},shadowColor:[0,0,0,255],shadowOffsetX:1,shadowOffsetY:1,textCase:"Normal",textDirection:I?L.RTL:L.LTR,verticalAlignment:ye(m??"baseline"),verticalGlyphOrientation:F.Right,wordSpacing:100,billboardMode3D:D.FaceNearPlane,callout:C},textString:c}],scaleSymbolsProportionally:!0,respectFrame:!0}],scaleX:1,angleAlignment:"Display"}}static fromPictureFillSymbol(e){const{height:t,outline:r,width:a,xoffset:o,xscale:i,yoffset:s,yscale:n}=e,l=[],c={type:"CIMPolygonSymbol",symbolLayers:l};if(r){const e=ke(r);e&&l.push(e)}let m=e.url;"esriPFS"===e.type&&e.imageData&&(m=e.imageData);const f="angle"in e?e.angle??0:0,y=(a??0)*(i||1),u=(t??0)*(n||1);return l.push({type:"CIMPictureFill",invertBackfaceTexture:!1,scaleX:1,textureFilter:T.Picture,tintColor:null,url:m,height:u,width:y,offsetX:z(o),offsetY:z(s),rotation:z(-f),colorSubstitutions:null}),c}static fromSimpleFillSymbol(e){const{color:t,style:r,outline:o}=e,i=[],s={type:"CIMPolygonSymbol",symbolLayers:i};if(o){const e=ke(o);e&&i.push(e)}if(r&&"solid"!==r&&"none"!==r&&"esriSFSSolid"!==r&&"esriSFSNull"!==r){const e={type:"CIMLineSymbol",symbolLayers:[{type:"CIMSolidStroke",color:ue(t),capStyle:C.Butt,joinStyle:I.Miter,width:.75}]};let o=0;const s=n(ge(r)?8:10);switch(r){case"vertical":case"esriSFSVertical":o=90;break;case"forward-diagonal":case"esriSFSForwardDiagonal":case"diagonal-cross":case"esriSFSDiagonalCross":o=-45;break;case"backward-diagonal":case"esriSFSBackwardDiagonal":o=45;break;case"cross":case"esriSFSCross":o=0}i.push({type:"CIMHatchFill",lineSymbol:e,offsetX:0,offsetY:0,rotation:o,separation:s}),"cross"===r||"esriSFSCross"===r?i.push({type:"CIMHatchFill",lineSymbol:a(e),offsetX:0,offsetY:0,rotation:90,separation:s}):"diagonal-cross"!==r&&"esriSFSDiagonalCross"!==r||i.push({type:"CIMHatchFill",lineSymbol:a(e),offsetX:0,offsetY:0,rotation:45,separation:s})}else!r||"solid"!==r&&"esriSFSSolid"!==r||i.push({type:"CIMSolidFill",enable:!0,color:ue(t)});return s}static fromSimpleLineSymbol(e){const{cap:t,color:r,join:a,marker:o,miterLimit:i,style:s,width:n}=e;let l=null;"solid"!==s&&"none"!==s&&"esriSLSSolid"!==s&&"esriSLSNull"!==s&&(l=[{type:"CIMGeometricEffectDashes",dashTemplate:de(s,t),lineDashEnding:"NoConstraint",scaleDash:!0,offsetAlongLine:null}]);const c=[];if(o){let e;switch(o.placement){case"begin-end":e=G.Both;break;case"begin":e=G.JustBegin;break;case"end":e=G.JustEnd;break;default:e=G.None}const t=ne.fromSimpleMarker(o,n,r).symbolLayers[0];t.markerPlacement={type:"CIMMarkerPlacementAtExtremities",angleToLine:!0,offset:0,extremityPlacement:e,offsetAlongLine:0},c.push(t)}return c.push({type:"CIMSolidStroke",color:"none"!==s&&"esriSLSNull"!==s?ue(r):[0,0,0,0],capStyle:ce(t),joinStyle:me(a),miterLimit:i,width:n,effects:l}),{type:"CIMLineSymbol",symbolLayers:c}}static fromPictureMarker(e){const{angle:t,height:r,width:a,xoffset:o,yoffset:i}=e;let s=e.url;return"esriPMS"===e.type&&e.imageData&&(s=e.imageData),{type:"CIMPointSymbol",symbolLayers:[{type:"CIMPictureMarker",invertBackfaceTexture:!1,scaleX:1,textureFilter:T.Picture,tintColor:null,url:s,size:r,width:a,offsetX:z(o),offsetY:z(i),rotation:z(-t)}]}}static fromSimpleMarker(e,t,r){const{style:a}=e,o=e.color??r;if("path"===a){const t=[];if("outline"in e&&e.outline){const r=e.outline;t.push({type:"CIMSolidStroke",enable:!0,width:s(Math.round(n(r.width))),color:ue(r.color)})}t.push({type:"CIMSolidFill",enable:!0,color:ue(o),path:e.path});const[r,a]=be("square");return{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,rotation:z(-e.angle),size:z(e.size||6),offsetX:z(e.xoffset),offsetY:z(e.yoffset),frame:r,markerGraphics:[{type:"CIMMarkerGraphic",geometry:a,symbol:{type:"CIMPolygonSymbol",symbolLayers:t}}]}]}}const[i,l]=be(a);let c;if(l&&i){const r=[];if("outline"in e&&e.outline){const t=e.outline;r.push({type:"CIMSolidStroke",enable:!0,width:null!=t.width&&t.width>.667?s(Math.round(n(t.width))):t.width,color:ue(t.color)})}else!t||"line-marker"!==e.type||"cross"!==e.style&&"x"!==e.style||r.push({type:"CIMSolidStroke",enable:!0,width:t,color:ue(o)});r.push({type:"CIMSolidFill",enable:!0,color:ue(o)});const a={type:"CIMPolygonSymbol",symbolLayers:r};c={type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,rotation:z(-e.angle),size:z(e.size||6*t),offsetX:z(e.xoffset),offsetY:z(e.yoffset),frame:i,markerGraphics:[{type:"CIMMarkerGraphic",geometry:l,symbol:a}]}]}}return c}static fromCIMHatchFill(e,t){const r=t*(e.separation??b),o=r/2,i=a(e.lineSymbol);i.symbolLayers?.forEach((e=>{switch(e.type){case"CIMSolidStroke":null!=e.width&&(e.width*=t),e.effects?.forEach((e=>{"CIMGeometricEffectDashes"===e.type&&(e.dashTemplate=e.dashTemplate.map((e=>e*t)))}));break;case"CIMVectorMarker":{null!=e.size&&(e.size*=t);const r=e.markerPlacement;null!=r&&"placementTemplate"in r&&(r.placementTemplate=r.placementTemplate.map((e=>e*t)));break}}}));let s=this._getLineSymbolPeriod(i)||Z;for(;s<Z;)s*=2;const n=s/2;return{type:"CIMVectorMarker",frame:{xmin:-n,xmax:n,ymin:-o,ymax:o},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{paths:[[[-n,0],[n,0]]]},symbol:i}],size:r}}static fetchResources(e,t,a){if(e&&t)switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":{const r=e.symbolLayers;if(!r)return;for(const e of r)switch(Ie(e,t,a),e.type){case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":case"CIMPictureStroke":case"CIMGradientStroke":case"CIMCharacterMarker":case"CIMPictureMarker":"url"in e&&e.url&&a.push(t.fetchResource(e.url,null));break;case"CIMVectorMarker":{const r=e.markerGraphics;if(!r)continue;for(const e of r)if(e){const r=e.symbol;r&&ne.fetchResources(r,t,a)}}}break}case"CIMTextSymbol":{const o=e,i=r(o.fontFamilyName),{style:s,weight:n}=E(o.fontStyleName),l=O(o);a.push(t.loadFont(new q({family:i,style:s,weight:n,decoration:l})).catch((()=>{ee.error("unsupported font in preview")})));break}}}static _getLineSymbolPeriod(e){if(e){const t=this._getEffectsRepeat(e.effects);if(t)return t;if(e.symbolLayers)for(const r of e.symbolLayers)if(r){const e=this._getEffectsRepeat(r.effects);if(e)return e;switch(r.type){case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":{const e=this._getPlacementRepeat(r.markerPlacement);if(e)return e}}}}return 0}static _getEffectsRepeat(e){if(e)for(const t of e)if(t)switch(t.type){case"CIMGeometricEffectDashes":{const e=t.dashTemplate;if(e&&e.length){let t=0;for(const r of e)t+=r;return 1&e.length&&(t*=2),t}break}case"CIMGeometricEffectWave":return t.period;default:ee.error(`unsupported geometric effect type ${t.type}`)}return 0}static _getPlacementRepeat(e){if(e)switch(e.type){case"CIMMarkerPlacementAlongLineSameSize":case"CIMMarkerPlacementAlongLineRandomSize":case"CIMMarkerPlacementAlongLineVariableSize":{const t=e.placementTemplate;if(t&&t.length){let e=0;for(const r of t)e+=+r;return 1&t.length&&(e*=2),e}break}}return 0}static fromCIMInsidePolygon(e){const t=e.markerPlacement,r={...e};r.markerPlacement=null,r.anchorPoint=null;const a=Math.abs(t.stepX),o=Math.abs(t.stepY),s=(t.randomness??100)/100;let l,c,m,f;if("Random"===t.gridType){const e=n(U),r=Math.max(Math.floor(e/a),1),y=Math.max(Math.floor(e/o),1);l=r*a/2,c=y*o/2,m=2*c;const u=new i(t.seed),h=s*a/1.5,p=s*o/1.5;f=[];for(let t=0;t<r;t++)for(let e=0;e<y;e++){const r=t*a-l+h*(.5-u.getFloat()),i=e*o-c+p*(.5-u.getFloat());f.push({x:r,y:i}),0===t&&f.push({x:r+2*l,y:i}),0===e&&f.push({x:r,y:i+2*c})}}else!0===t.shiftOddRows?(l=a/2,c=o,m=2*o,f=[{x:-l,y:0},{x:l,y:0},{x:0,y:c},{x:0,y:-c}]):(l=a/2,c=o/2,m=o,f=[{x:-a,y:0},{x:0,y:-o},{x:-a,y:-o},{x:0,y:0},{x:a,y:0},{x:0,y:o},{x:a,y:o},{x:-a,y:o},{x:a,y:-o}]);return{type:"CIMVectorMarker",frame:{xmin:-l,xmax:l,ymin:-c,ymax:c},markerGraphics:f.map((e=>({type:"CIMMarkerGraphic",geometry:e,symbol:{type:"CIMPointSymbol",symbolLayers:[r]}}))),size:m}}static getSize(e){if(e)switch(e.type){case"CIMTextSymbol":return e.height;case"CIMPointSymbol":{let t=0;if(e.symbolLayers)for(const r of e.symbolLayers)if(r)switch(r.type){case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":{const e=r.size;null!=e&&e>t&&(t=e);break}}return t}case"CIMLineSymbol":case"CIMPolygonSymbol":{let t=0;if(e.symbolLayers)for(const r of e.symbolLayers)if(r)switch(r.type){case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":{const e=r.width;null!=e&&e>t&&(t=e);break}case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":if(r.markerPlacement&&A(r.markerPlacement)){const e=r.size;null!=e&&e>t&&(t=e)}}return t}}}static getMarkerScaleRatio(e){if(e&&"CIMVectorMarker"===e.type)if(!1!==e.scaleSymbolsProportionally&&e.frame&&null!=e.size){const t=e.frame.ymax-e.frame.ymin;return e.size/t}return 1}}class le{static findApplicableOverrides(e,t,r){if(e&&t){if(e.primitiveName){let a=!1;for(const t of r)if(t.primitiveName===e.primitiveName){a=!0;break}if(!a)for(const o of t)o.primitiveName===e.primitiveName&&r.push(o)}switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":if(e.effects)for(const a of e.effects)le.findApplicableOverrides(a,t,r);if(e.symbolLayers)for(const a of e.symbolLayers)le.findApplicableOverrides(a,t,r);break;case"CIMTextSymbol":break;case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":case"CIMSolidFill":case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":case"CIMVectorMarker":case"CIMCharacterMarker":case"CIMPictureMarker":if(e.effects)for(const a of e.effects)le.findApplicableOverrides(a,t,r);if(e.markerPlacement&&le.findApplicableOverrides(e.markerPlacement,t,r),"CIMVectorMarker"===e.type){if(e.markerGraphics)for(const a of e.markerGraphics)le.findApplicableOverrides(a,t,r),le.findApplicableOverrides(a.symbol,t,r)}else"CIMCharacterMarker"===e.type?le.findApplicableOverrides(e.symbol,t,r):"CIMHatchFill"===e.type?le.findApplicableOverrides(e.lineSymbol,t,r):"CIMPictureMarker"===e.type&&le.findApplicableOverrides(e.animatedSymbolProperties,t,r)}}}static findEffectOverrides(e,t,r){if(!t||!e)return;const a=e.length;for(let o=0;o<a;o++){const a=e[o],i=a?.primitiveName;if(i){let e=!1;for(const t of r)if(t.primitiveName===i){e=!0;break}if(!e)for(const a of t)a.primitiveName===i&&r.push(a)}}}static async resolveSymbolOverrides(e,t,r,o,i,s,n){if(!e||!e.symbol)return null;let{symbol:l,primitiveOverrides:c}=e;const m=!!c;if(!m&&!o)return l;l=a(l);let f=!0;if(t||(t={attributes:{}},f=!1),m){if(f||(c=c.filter((e=>!e.valueExpressionInfo?.expression.includes("$feature")))),n||(c=c.filter((e=>!e.valueExpressionInfo?.expression.includes("$view")))),c.length>0){const e=N(t.attributes);await le.evaluateOverrides(c,t,{spatialReference:r,fields:e,geometryType:i},s,n)}le.applyOverrides(l,c)}return o&&le.applyDictionaryTextOverrides(l,t,o),l}static async evaluateOverrides(e,t,r,a,o){if(!t)return;let i;for(const s of e){const e=s.valueExpressionInfo;if(e&&r&&r.geometryType){i||(i=[]),s.value=void 0;const n=f(e.expression,r.spatialReference,r.fields).then((e=>{s.value=X(e,t,{$view:o},r.geometryType,a)}));i.push(n)}}void 0!==i&&i.length>0&&await Promise.all(i)}static applyDictionaryTextOverrides(e,t,r,a="Normal"){if(e&&e.type)switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":case"CIMTextSymbol":{const o=e.symbolLayers;if(!o)return;for(const i of o)i&&"CIMVectorMarker"===i.type&&le.applyDictionaryTextOverrides(i,t,r,"CIMTextSymbol"===e.type?e.textCase:a)}break;case"CIMVectorMarker":{const a=e.markerGraphics;if(!a)return;for(const e of a)e&&le.applyDictionaryTextOverrides(e,t,r)}break;case"CIMMarkerGraphic":{const o=e.textString;if(o&&o.includes("[")){const i=R(o,r);e.textString=j(t,i,a)}}}}static applyOverrides(e,t,r,a){if(e.primitiveName)for(const o of t)if(o.primitiveName===e.primitiveName){const t=Ce(o.propertyName);if(a&&a.push({cim:e,nocapPropertyName:t,value:e[t]}),o.expression&&(o.value=le.toValue(o.propertyName,o.expression)),r){let t=!1;for(const a of r)a.primitiveName===e.primitiveName&&(t=!0);t||r.push(o)}null!=o.value&&(e[t]=o.value)}switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":if(e.effects)for(const o of e.effects)le.applyOverrides(o,t,r,a);if(e.symbolLayers)for(const o of e.symbolLayers)le.applyOverrides(o,t,r,a);break;case"CIMTextSymbol":break;case"CIMSolidStroke":case"CIMSolidFill":case"CIMVectorMarker":if(e.effects)for(const o of e.effects)le.applyOverrides(o,t,r,a);if("CIMVectorMarker"===e.type&&e.markerGraphics)for(const o of e.markerGraphics)le.applyOverrides(o,t,r,a),le.applyOverrides(o.symbol,t,r,a)}}static restoreOverrides(e){for(const t of e)t.cim[t.nocapPropertyName]=t.value}static buildOverrideKey(e){let t="";for(const r of e)void 0!==r.value&&(t+=`${r.primitiveName}${r.propertyName}${JSON.stringify(r.value)}`);return t}static toValue(t,r){if("DashTemplate"===t)return r.split(" ").map((e=>Number(e)));if("Color"===t){const t=new e(r).toRgba();return t[3]*=255,t}return r}}const ce=e=>{if(!e)return C.Butt;switch(e){case"butt":return C.Butt;case"square":return C.Square;case"round":return C.Round}},me=e=>{if(!e)return I.Miter;switch(e){case"miter":return I.Miter;case"round":return I.Round;case"bevel":return I.Bevel}},fe=e=>{if(null==e)return"Center";switch(e){case"left":return"Left";case"right":return"Right";case"center":return"Center"}},ye=e=>{if(null==e)return"Center";switch(e){case"baseline":return"Baseline";case"top":return"Top";case"middle":return"Center";case"bottom":return"Bottom"}},ue=e=>{if(!e)return[0,0,0,0];const{r:t,g:r,b:a,a:o}=e;return[t,r,a,255*o]},he=(e,t)=>{const r=pe(t),a=Me(e);return r&&a?`${r}-${a}`:`${r}${a}`},pe=e=>{if(!e)return"";switch(e.toLowerCase()){case"bold":case"bolder":return"bold"}return""},Me=e=>{if(!e)return"";switch(e.toLowerCase()){case"italic":case"oblique":return"italic"}return""},de=(e,t)=>{const r="butt"===t;switch(e){case"dash":case"esriSLSDash":return r?[4,3]:[3,4];case"dash-dot":case"esriSLSDashDot":return r?[4,3,1,3]:[3,4,0,4];case"dot":case"esriSLSDot":return r?[1,3]:[0,4];case"long-dash":case"esriSLSLongDash":return r?[8,3]:[7,4];case"long-dash-dot":case"esriSLSLongDashDot":return r?[8,3,1,3]:[7,4,0,4];case"long-dash-dot-dot":case"esriSLSDashDotDot":return r?[8,3,1,3,1,3]:[7,4,0,4,0,4];case"short-dash":case"esriSLSShortDash":return r?[4,1]:[3,2];case"short-dash-dot":case"esriSLSShortDashDot":return r?[4,1,1,1]:[3,2,0,2];case"short-dash-dot-dot":case"esriSLSShortDashDotDot":return r?[4,1,1,1,1,1]:[3,2,0,2,0,2];case"short-dot":case"esriSLSShortDot":return r?[1,1]:[0,2];case"solid":case"esriSLSSolid":case"none":return ee.error("Unexpected: style does not require rasterization"),[0,0];default:return ee.error(`Tried to rasterize SLS, but found an unexpected style: ${e}!`),[0,0]}};function Se(e){return void 0!==e.symbolLayers}const be=e=>{const t=100,r=50;let a,o;const i=e;if("circle"===i||"esriSMSCircle"===i){const e=.25;let t=Math.acos(1-e/r),i=Math.ceil(W/t/4);0===i&&(i=1),t=J/i,i*=4;const s=[];s.push([r,0]);for(let a=1;a<i;a++)s.push([r*Math.cos(a*t),-r*Math.sin(a*t)]);s.push([r,0]),a={rings:[s]},o={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("cross"===i||"esriSMSCross"===i){const e=0;a={rings:[[[e,r],[e,e],[r,e],[r,-e],[e,-e],[e,-r],[-e,-r],[-e,-e],[-r,-e],[-r,e],[-e,e],[-e,r],[e,r]]]},o={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("diamond"===i||"esriSMSDiamond"===i)a={rings:[[[-r,0],[0,r],[r,0],[0,-r],[-r,0]]]},o={xmin:-r,ymin:-r,xmax:r,ymax:r};else if("square"===i||"esriSMSSquare"===i)a={rings:[[[-r,-r],[-r,r],[r,r],[r,-r],[-r,-r]]]},o={xmin:-r,ymin:-r,xmax:r,ymax:r};else if("x"===i||"esriSMSX"===i){const e=0;a={rings:[[[0,e],[r-e,r],[r,r-e],[e,0],[r,e-r],[r-e,-r],[0,-e],[e-r,-r],[-r,e-r],[-e,0],[-r,r-e],[e-r,r],[0,e]]]},o={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("triangle"===i||"esriSMSTriangle"===i){const e=t*.5773502691896257,r=-e,i=2/3*t,s=i-t;a={rings:[[[r,s],[0,i],[e,s],[r,s]]]},o={xmin:r,ymin:s,xmax:e,ymax:i}}else"arrow"===i&&(a={rings:[[[-50,50],[50,0],[-50,-50],[-33,-20],[-33,20],[-50,50]]]},o={xmin:-r,ymin:-r,xmax:r,ymax:r});return[o,a]},ge=e=>"vertical"===e||"horizontal"===e||"cross"===e||"esriSFSCross"===e||"esriSFSVertical"===e||"esriSFSHorizontal"===e,Ce=e=>e?e.charAt(0).toLowerCase()+e.substr(1):e;function Ie(e,t,r){if(!e.effects||null!=t.geometryEngine)return;if(t.geometryEnginePromise)return void r.push(t.geometryEnginePromise);V(e.effects)&&(t.geometryEnginePromise=B(),r.push(t.geometryEnginePromise),t.geometryEnginePromise.then((e=>t.geometryEngine=e)))}function ke(e){if(!e)return null;let t=null;const{cap:r,color:a,join:o,miterLimit:i,style:s,width:n}=e;return"solid"!==s&&"none"!==s&&"esriSLSSolid"!==s&&"esriSLSNull"!==s&&(t=[{type:"CIMGeometricEffectDashes",dashTemplate:de(s,r),lineDashEnding:"NoConstraint",scaleDash:!0,offsetAlongLine:null}]),{type:"CIMSolidStroke",color:"esriSLSNull"!==s&&"none"!==s?ue(a):[0,0,0,0],capStyle:ce(r),joinStyle:me(o),miterLimit:i,width:n,effects:t}}export{ne as CIMSymbolHelper,se as CIMSymbolInflatedSizeHelper,le as OverrideHelper,ie as getEffectsInflateSize,de as slsDashToTemplateArray,te as symbolToCIM};
5
+ import e from"../../Color.js";import"../../symbols.js";import{bidiText as t}from"../../core/BidiText.js";import{clone as r}from"../../core/lang.js";import o from"../../core/Logger.js";import a from"../../core/RandomLCG.js";import{pt2px as s,px2pt as i}from"../../core/screenUtils.js";import{create as n,expandPointInPlace as l}from"../../geometry/support/aaBoundingRect.js";import{getBoundsXY as c}from"../../geometry/support/boundsUtils.js";import{createRendererExpression as f}from"../../support/arcadeOnDemand.js";import{Placement as m}from"./CIMPlacements.js";import{DEFAULT_TEXT_HEIGHT as y,horizontalAlignment2HAlign as u,verticalAlignment2VAlign as h,EnvDrawHelper as p,Transformation as M,CanvasDrawHelper as d,DEFAULT_HATCH_FILL_SEPARATION as S,lineGapType2LineHeight as b}from"./CIMSymbolDrawHelper.js";import{LineCapStyle as C,LineJoinStyle as g,BlockProgression as I,FontEffects as k,FontEncoding as x,FontType as w,GlyphHinting as P,TextReadingDirection as L,VerticalGlyphOrientation as v,BillBoardMode as F,TextureFilter as D,ExtremityPlacement as G}from"./enums.js";import{getValue as T,fromCIMFontStyle as z,fromCIMFontDecoration as E,isCIMMarkerStrokePlacement as O,attributesToFields as A,analyzeTextParts as N,assignTextValuesFromFeature as R,isGeometryEngineRequired as j,importGeometryEngine as V}from"./utils.js";import B from"../../views/2d/arcade/callExpressionWithFeature.js";import{C_INFINITY as X}from"../../views/2d/engine/vectorTiles/GeometryUtils.js";import{GLYPH_SIZE as _,MAGIC_LABEL_LINE_HEIGHT as H,RANDOM_INSIDE_POLYGON_TEXTURE_SIZE as Y}from"../../views/2d/engine/webgl/definitions.js";import{shapeGlyphs as $}from"../../views/2d/engine/webgl/mesh/templates/shapingUtils.js";import U from"../Font.js";const q=Math.PI,W=q/2,J=Math.PI/180,K=96/72,Q=4,Z=o.getLogger("esri.symbols.cim.CIMSymbolHelper");function ee(e){if(!e||!e.type)return null;let t;switch(e.type){case"cim":return e.data;case"web-style":return e;case"simple-marker":{const r=ie.fromSimpleMarker(e);if(!r)return null;t=r;break}case"picture-marker":t=ie.fromPictureMarker(e);break;case"simple-line":t=ie.fromSimpleLineSymbol(e);break;case"simple-fill":t=ie.fromSimpleFillSymbol(e);break;case"picture-fill":t=ie.fromPictureFillSymbol(e);break;case"text":t=ie.fromTextSymbol(e)}return{type:"CIMSymbolReference",symbol:t}}function te(e,t,r){switch(t.type){case"CIMSymbolReference":return te(e,t.symbol,r);case"CIMPointSymbol":null==r&&(r={x:0,y:0}),e.drawSymbol(t,r);break;case"CIMLineSymbol":null==r&&(r={paths:[[[0,0],[10,0]]]}),e.drawSymbol(t,r);break;case"CIMPolygonSymbol":null==r&&(r={rings:[[[0,0],[0,10],[10,10],[10,0],[0,0]]]}),e.drawSymbol(t,r);break;case"CIMTextSymbol":{const r={x:0,y:0};e.drawSymbol(t,r);break}case"CIMVectorMarker":{const r=new m;e.drawMarker(t,r);break}}return e.envelope()}function re(e){if(!e)return 0;switch(e.type){case"CIMMarkerPlacementAlongLineSameSize":case"CIMMarkerPlacementAlongLineRandomSize":case"CIMMarkerPlacementAtExtremities":case"CIMMarkerPlacementAtMeasuredUnits":case"CIMMarkerPlacementAtRatioPositions":case"CIMMarkerPlacementOnLine":case"CIMMarkerPlacementOnVertices":return Math.abs(e.offset);default:return 0}}function oe(e){if(!e)return 0;switch(e.type){case"CIMGeometricEffectArrow":return Math.abs(.5*e.width);case"CIMGeometricEffectBuffer":return Math.abs(e.size);case"CIMGeometricEffectExtension":case"CIMGeometricEffectRadial":return Math.abs(e.length);case"CIMGeometricEffectJog":return Math.abs(.5*e.length);case"CIMGeometricEffectMove":return Math.max(Math.abs(T(e.offsetX)),Math.abs(T(e.offsetY)));case"CIMGeometricEffectOffset":case"CIMGeometricEffectOffsetTangent":return Math.abs(e.offset);case"CIMGeometricEffectRegularPolygon":return Math.abs(e.radius);case"CIMGeometricEffectRotate":case"CIMGeometricEffectScale":default:return 0;case"CIMGeometricEffectTaperedPolygon":return.5*Math.max(Math.abs(e.fromWidth),Math.abs(e.toWidth));case"CIMGeometricEffectWave":return Math.abs(e.amplitude);case"CIMGeometricEffectDonut":return Math.abs(e.width)}}function ae(e){if(!e)return 0;let t=0;for(const r of e)t+=oe(r);return t}class se{getSymbolInflateSize(e,t,r,o,a){return e||(e=[0,0,0,0]),t?this._getInflateSize(e,t,r,o,a):e}static safeSize(e){const t=Math.max(Math.abs(e[0]),Math.abs(e[2])),r=Math.max(Math.abs(e[1]),Math.abs(e[3]));return Math.sqrt(t*t+r*r)}_vectorMarkerBounds(e,t,r,o){let a=!0;const s=n();if(t&&t.markerGraphics)for(const i of t.markerGraphics){const t=[0,0,0,0];i.geometry&&(c(s,i.geometry),t[0]=0,t[1]=0,t[2]=0,t[3]=0,this.getSymbolInflateSize(t,i.symbol,r,0,o),s[0]+=t[0],s[1]+=t[1],s[2]+=t[2],s[3]+=t[3],a?(e[0]=s[0],e[1]=s[1],e[2]=s[2],e[3]=s[3],a=!1):(e[0]=Math.min(e[0],s[0]),e[1]=Math.min(e[1],s[1]),e[2]=Math.max(e[2],s[2]),e[3]=Math.max(e[3],s[3])))}return e}_getInflateSize(e,t,r,o,a){if(de(t)){const s=this._getLayersInflateSize(e,t.symbolLayers,r,o,a),i=ae(t.effects);return i>0&&(s[0]-=i,s[1]-=i,s[2]+=i,s[3]+=i),s}return this._getTextInflatedSize(e,t,a)}_getLayersInflateSize(e,t,r,o,a){let s=!0;if(!t)return e;for(const i of t){if(!i)continue;let t=[0,0,0,0];switch(i.type){case"CIMSolidFill":case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":break;case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":{const e=i;let r=e.width;null!=r&&(e.capStyle===C.Square||e.joinStyle===g.Miter?r/=1.4142135623730951:r/=2,t[0]=-r,t[1]=-r,t[2]=r,t[3]=r);break}case"CIMCharacterMarker":case"CIMVectorMarker":case"CIMPictureMarker":{const e=i;if("CIMVectorMarker"===i.type){const e=i;if(t=this._vectorMarkerBounds(t,e,r,a),e.frame){const r=(e.frame.xmin+e.frame.xmax)/2,o=(e.frame.ymin+e.frame.ymax)/2;if(t[0]-=r,t[1]-=o,t[2]-=r,t[3]-=o,null!=e.size){const r=e.size/(e.frame.ymax-e.frame.ymin);t[0]*=r,t[1]*=r,t[2]*=r,t[3]*=r}}}else if("CIMPictureMarker"===i.type){const o=i,a=r.getResource(o.url);let s=1;if(null!=a&&a.height&&(s=a.width/a.height),null!=e.size){const r=e.size/2,a=e.size*s*o.scaleX/2;t=[-a,-r,a,r]}}else if(null!=e.size){const r=e.size/2;t=[-r,-r,r,r]}if(e.anchorPoint){let r,o;"Absolute"===e.anchorPointUnits?(r=e.anchorPoint.x,o=e.anchorPoint.y):(r=e.anchorPoint.x*(t[2]-t[0]),o=e.anchorPoint.y*(t[3]-t[1])),t[0]-=r,t[1]-=o,t[2]-=r,t[3]-=o}let s=T(e.rotation);if(e.rotateClockwise&&(s=-s),o&&(s-=o),s){const e=J*s,r=Math.cos(e),o=Math.sin(e),a=n([X,X,-X,-X]);l(a,[t[0]*r-t[1]*o,t[0]*o+t[1]*r]),l(a,[t[0]*r-t[3]*o,t[0]*o+t[3]*r]),l(a,[t[2]*r-t[1]*o,t[2]*o+t[1]*r]),l(a,[t[2]*r-t[3]*o,t[2]*o+t[3]*r]),t=a}let c=T(e.offsetX),f=T(e.offsetY);if(o){const e=J*o,t=Math.cos(e),r=Math.sin(e),a=c*r+f*t;c=c*t-f*r,f=a}t[0]+=c,t[1]+=f,t[2]+=c,t[3]+=f;const m=re(e.markerPlacement);m>0&&(t[0]-=m,t[1]-=m,t[2]+=m,t[3]+=m);break}}const c=ae(i.effects);c>0&&(t[0]-=c,t[1]-=c,t[2]+=c,t[3]+=c),s?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],s=!1):(e[0]=Math.min(e[0],t[0]),e[1]=Math.min(e[1],t[1]),e[2]=Math.max(e[2],t[2]),e[3]=Math.max(e[3],t[3]))}return e}_getTextInflatedSize(e,r,o){const a=r.height??y;if(e[0]=-a/2,e[1]=-a/2,e[2]=a/2,e[3]=a/2,!o)return e;const s=o.get(r);if(!s)return e;const{text:i,mosaicItem:n}=s;if(!n?.glyphMosaicItems?.length)return e;const{lineGapType:l,lineGap:c}=r,f=l?b(l,c??0,a):0,m=t(i)[1],p=n.glyphMosaicItems,M="CIMBackgroundCallout"===r.callout?.type,d=$(p,m,{scale:a/_,angle:T(r.angle),xOffset:T(r.offsetX),yOffset:T(r.offsetY),hAlign:u(r.horizontalAlignment),vAlign:h(r.verticalAlignment),maxLineWidth:512,lineHeight:H*Math.max(.25,Math.min(f||1,4)),decoration:r.font.decoration||"none",isCIM:!0,hasBackground:M}).boundsT;return e[0]=d.x-d.halfWidth,e[1]=-d.y-d.halfHeight,e[2]=d.x+d.halfWidth,e[3]=-d.y+d.halfHeight,e}}class ie{static getEnvelope(e,t,r){if(!e)return null;const o=new p(r);if(Array.isArray(e)){let r;for(const a of e)r?r.union(te(o,a,t)):r=te(o,a,t);return r}return te(o,e,t)}static getTextureAnchor(e,t){const r=this.getEnvelope(e,null,t);if(!r)return[0,0,0];const o=(r.x+.5*r.width)*K,a=(r.y+.5*r.height)*K,s=r.width*K+2,i=r.height*K+2;return[-o/s,-a/i,i]}static rasterize(e,t,r,o,a=!0){const s=r||this.getEnvelope(t,null,o);if(!s)return[null,0,0,0,0];const i=(s.x+.5*s.width)*K,n=(s.y+.5*s.height)*K;e.width=s.width*K,e.height=s.height*K,r||(e.width+=2,e.height+=2);const l=e.getContext("2d"),c=M.createScale(K,-K);c.translate(.5*e.width-i,.5*e.height+n);const f=new d(l,o,c);switch(t.type){case"CIMPointSymbol":{const e={type:"point",x:0,y:0};f.drawSymbol(t,e);break}case"CIMVectorMarker":{const e=new m;f.drawMarker(t,e);break}}const y=l.getImageData(0,0,e.width,e.height),u=new Uint8Array(y.data);if(a){let e;for(let t=0;t<u.length;t+=4)e=u[t+3]/255,u[t]=u[t]*e,u[t+1]=u[t+1]*e,u[t+2]=u[t+2]*e}return[u,e.width,e.height,-i/e.width,-n/e.height]}static fromTextSymbol(e){const{angle:r,color:o,font:a,haloColor:s,haloSize:i,horizontalAlignment:n,kerning:l,text:c,verticalAlignment:f,xoffset:m,yoffset:y,backgroundColor:u,borderLineColor:h,borderLineSize:p}=e;let M,d,S,b,C,g;a&&(M=a.family,d=a.style,S=a.weight,b=a.size,C=a.decoration);let D=!1;if(c){D=t(c)[1]}return(u||p)&&(g={type:"CIMBackgroundCallout",margin:null,backgroundSymbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",color:ye(u)},{type:"CIMSolidStroke",color:ye(h),width:p}]},accentBarSymbol:null,gap:null,leaderLineSymbol:null,lineStyle:null}),{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,anchorPointUnits:"Relative",dominantSizeAxis3D:"Y",size:10,billboardMode3D:"FaceNearPlane",frame:{xmin:-5,ymin:-5,xmax:5,ymax:5},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{x:0,y:0},symbol:{type:"CIMTextSymbol",angle:r,blockProgression:I.BTT,depth3D:1,extrapolateBaselines:!0,fontEffects:k.Normal,fontEncoding:x.Unicode,fontFamilyName:M||"Arial",fontStyleName:ue(d,S),fontType:w.Unspecified,haloSize:i,height:b,hinting:P.Default,horizontalAlignment:fe(n??"center"),kerning:l,letterWidth:100,ligatures:!0,lineGapType:"Multiple",offsetX:T(m),offsetY:T(y),strikethrough:"line-through"===C,underline:"underline"===C,symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:ye(o)}]},haloSymbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:ye(s)}]},shadowColor:[0,0,0,255],shadowOffsetX:1,shadowOffsetY:1,textCase:"Normal",textDirection:D?L.RTL:L.LTR,verticalAlignment:me(f??"baseline"),verticalGlyphOrientation:v.Right,wordSpacing:100,billboardMode3D:F.FaceNearPlane,callout:g},textString:c}],scaleSymbolsProportionally:!0,respectFrame:!0}],scaleX:1,angleAlignment:"Display"}}static fromPictureFillSymbol(e){const{height:t,outline:r,width:o,xoffset:a,xscale:s,yoffset:i,yscale:n}=e,l=[],c={type:"CIMPolygonSymbol",symbolLayers:l};if(r){const e=Ie(r);e&&l.push(e)}let f=e.url;"esriPFS"===e.type&&e.imageData&&(f=e.imageData);const m="angle"in e?e.angle??0:0,y=(o??0)*(s||1),u=(t??0)*(n||1);return l.push({type:"CIMPictureFill",invertBackfaceTexture:!1,scaleX:1,textureFilter:D.Picture,tintColor:null,url:f,height:u,width:y,offsetX:T(a),offsetY:T(i),rotation:T(-m),colorSubstitutions:null}),c}static fromSimpleFillSymbol(e){const{color:t,style:o,outline:a}=e,s=[],n={type:"CIMPolygonSymbol",symbolLayers:s};if(a){const e=Ie(a);e&&s.push(e)}if(o&&"solid"!==o&&"none"!==o&&"esriSFSSolid"!==o&&"esriSFSNull"!==o){const e={type:"CIMLineSymbol",symbolLayers:[{type:"CIMSolidStroke",color:ye(t),capStyle:C.Butt,joinStyle:g.Miter,width:.75}]};let a=0;const n=i(be(o)?8:10);switch(o){case"vertical":case"esriSFSVertical":a=90;break;case"forward-diagonal":case"esriSFSForwardDiagonal":case"diagonal-cross":case"esriSFSDiagonalCross":a=-45;break;case"backward-diagonal":case"esriSFSBackwardDiagonal":a=45;break;case"cross":case"esriSFSCross":a=0}s.push({type:"CIMHatchFill",lineSymbol:e,offsetX:0,offsetY:0,rotation:a,separation:n}),"cross"===o||"esriSFSCross"===o?s.push({type:"CIMHatchFill",lineSymbol:r(e),offsetX:0,offsetY:0,rotation:90,separation:n}):"diagonal-cross"!==o&&"esriSFSDiagonalCross"!==o||s.push({type:"CIMHatchFill",lineSymbol:r(e),offsetX:0,offsetY:0,rotation:45,separation:n})}else!o||"solid"!==o&&"esriSFSSolid"!==o||s.push({type:"CIMSolidFill",enable:!0,color:ye(t)});return n}static fromSimpleLineSymbol(e){const{cap:t,color:r,join:o,marker:a,miterLimit:s,style:i,width:n}=e;let l=null;"solid"!==i&&"none"!==i&&"esriSLSSolid"!==i&&"esriSLSNull"!==i&&(l=[{type:"CIMGeometricEffectDashes",dashTemplate:Me(i,t),lineDashEnding:"NoConstraint",scaleDash:!0,offsetAlongLine:null}]);const c=[];if(a){let e;switch(a.placement){case"begin-end":e=G.Both;break;case"begin":e=G.JustBegin;break;case"end":e=G.JustEnd;break;default:e=G.None}const t=ie.fromSimpleMarker(a,n,r).symbolLayers[0];t.markerPlacement={type:"CIMMarkerPlacementAtExtremities",angleToLine:!0,offset:0,extremityPlacement:e,offsetAlongLine:0},c.push(t)}return c.push({type:"CIMSolidStroke",color:"none"!==i&&"esriSLSNull"!==i?ye(r):[0,0,0,0],capStyle:le(t),joinStyle:ce(o),miterLimit:s,width:n,effects:l}),{type:"CIMLineSymbol",symbolLayers:c}}static fromPictureMarker(e){const{angle:t,height:r,width:o,xoffset:a,yoffset:s}=e;let i=e.url;return"esriPMS"===e.type&&e.imageData&&(i=e.imageData),{type:"CIMPointSymbol",symbolLayers:[{type:"CIMPictureMarker",invertBackfaceTexture:!1,scaleX:1,textureFilter:D.Picture,tintColor:null,url:i,size:r,width:o,offsetX:T(a),offsetY:T(s),rotation:T(-t)}]}}static fromSimpleMarker(e,t,r){const{style:o}=e,a=e.color??r;if("path"===o){const t=[];if("outline"in e&&e.outline){const r=e.outline;t.push({type:"CIMSolidStroke",enable:!0,width:s(Math.round(i(r.width))),color:ye(r.color)})}t.push({type:"CIMSolidFill",enable:!0,color:ye(a),path:e.path});const[r,o]=Se("square");return{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,rotation:T(-e.angle),size:T(e.size||6),offsetX:T(e.xoffset),offsetY:T(e.yoffset),frame:r,markerGraphics:[{type:"CIMMarkerGraphic",geometry:o,symbol:{type:"CIMPolygonSymbol",symbolLayers:t}}]}]}}const[n,l]=Se(o);let c;if(l&&n){const r=[];if("outline"in e&&e.outline){const t=e.outline;r.push({type:"CIMSolidStroke",enable:!0,width:null!=t.width&&t.width>.667?s(Math.round(i(t.width))):t.width,color:ye(t.color)})}else!t||"line-marker"!==e.type||"cross"!==e.style&&"x"!==e.style||r.push({type:"CIMSolidStroke",enable:!0,width:t,color:ye(a)});r.push({type:"CIMSolidFill",enable:!0,color:ye(a)});const o={type:"CIMPolygonSymbol",symbolLayers:r};c={type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,rotation:T(-e.angle),size:T(e.size||6*t),offsetX:T(e.xoffset),offsetY:T(e.yoffset),frame:n,markerGraphics:[{type:"CIMMarkerGraphic",geometry:l,symbol:o}]}]}}return c}static fromCIMHatchFill(e,t){const o=t*(e.separation??S),a=o/2,s=r(e.lineSymbol);s.symbolLayers?.forEach((e=>{switch(e.type){case"CIMSolidStroke":null!=e.width&&(e.width*=t),e.effects?.forEach((e=>{"CIMGeometricEffectDashes"===e.type&&(e.dashTemplate=e.dashTemplate.map((e=>e*t)))}));break;case"CIMVectorMarker":{null!=e.size&&(e.size*=t);const r=e.markerPlacement;null!=r&&"placementTemplate"in r&&(r.placementTemplate=r.placementTemplate.map((e=>e*t)));break}}}));let i=this._getLineSymbolPeriod(s)||Q;for(;i<Q;)i*=2;const n=i/2;return{type:"CIMVectorMarker",frame:{xmin:-n,xmax:n,ymin:-a,ymax:a},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{paths:[[[-n,0],[n,0]]]},symbol:s}],size:o}}static fetchResources(e,t,r){if(e&&t)switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":{const o=e.symbolLayers;if(!o)return;for(const e of o)switch(ge(e,t,r),e.type){case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":case"CIMPictureStroke":case"CIMGradientStroke":case"CIMCharacterMarker":case"CIMPictureMarker":"url"in e&&e.url&&r.push(t.fetchResource(e.url,null));break;case"CIMVectorMarker":{const o=e.markerGraphics;if(!o)continue;for(const e of o)if(e){const o=e.symbol;o&&ie.fetchResources(o,t,r)}}}break}}}static fetchFonts(e,t,r){if(e&&t)if("symbolLayers"in e&&e.symbolLayers){for(const o of e.symbolLayers)if("CIMVectorMarker"===o.type&&o.markerGraphics)for(const e of o.markerGraphics)e?.symbol&&ie.fetchFonts(e.symbol,t,r)}else if("CIMTextSymbol"===e.type){const{fontFamilyName:o,fontStyleName:a}=e;if(!o||"calcitewebcoreicons"===o.toLowerCase())return;const{style:s,weight:i}=z(a),n=E(e),l=new U({family:o,style:s,weight:i,decoration:n});r.push(t.loadFont(l).catch((()=>{Z.error(`Unsupported font ${o} in CIM symbol`)})))}}static _getLineSymbolPeriod(e){if(e){const t=this._getEffectsRepeat(e.effects);if(t)return t;if(e.symbolLayers)for(const r of e.symbolLayers)if(r){const e=this._getEffectsRepeat(r.effects);if(e)return e;switch(r.type){case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":{const e=this._getPlacementRepeat(r.markerPlacement);if(e)return e}}}}return 0}static _getEffectsRepeat(e){if(e)for(const t of e)if(t)switch(t.type){case"CIMGeometricEffectDashes":{const e=t.dashTemplate;if(e&&e.length){let t=0;for(const r of e)t+=r;return 1&e.length&&(t*=2),t}break}case"CIMGeometricEffectWave":return t.period;default:Z.error(`unsupported geometric effect type ${t.type}`)}return 0}static _getPlacementRepeat(e){if(e)switch(e.type){case"CIMMarkerPlacementAlongLineSameSize":case"CIMMarkerPlacementAlongLineRandomSize":case"CIMMarkerPlacementAlongLineVariableSize":{const t=e.placementTemplate;if(t&&t.length){let e=0;for(const r of t)e+=+r;return 1&t.length&&(e*=2),e}break}}return 0}static fromCIMInsidePolygon(e){const t=e.markerPlacement,r={...e};r.markerPlacement=null,r.anchorPoint=null;const o=Math.abs(t.stepX),s=Math.abs(t.stepY),n=(t.randomness??100)/100;let l,c,f,m;if("Random"===t.gridType){const e=i(Y),r=Math.max(Math.floor(e/o),1),y=Math.max(Math.floor(e/s),1);l=r*o/2,c=y*s/2,f=2*c;const u=new a(t.seed),h=n*o/1.5,p=n*s/1.5;m=[];for(let t=0;t<r;t++)for(let e=0;e<y;e++){const r=t*o-l+h*(.5-u.getFloat()),a=e*s-c+p*(.5-u.getFloat());m.push({x:r,y:a}),0===t&&m.push({x:r+2*l,y:a}),0===e&&m.push({x:r,y:a+2*c})}}else!0===t.shiftOddRows?(l=o/2,c=s,f=2*s,m=[{x:-l,y:0},{x:l,y:0},{x:0,y:c},{x:0,y:-c}]):(l=o/2,c=s/2,f=s,m=[{x:-o,y:0},{x:0,y:-s},{x:-o,y:-s},{x:0,y:0},{x:o,y:0},{x:0,y:s},{x:o,y:s},{x:-o,y:s},{x:o,y:-s}]);return{type:"CIMVectorMarker",frame:{xmin:-l,xmax:l,ymin:-c,ymax:c},markerGraphics:m.map((e=>({type:"CIMMarkerGraphic",geometry:e,symbol:{type:"CIMPointSymbol",symbolLayers:[r]}}))),size:f}}static getSize(e){if(e)switch(e.type){case"CIMTextSymbol":return e.height;case"CIMPointSymbol":{let t=0;if(e.symbolLayers)for(const r of e.symbolLayers)if(r)switch(r.type){case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":{const e=r.size;null!=e&&e>t&&(t=e);break}}return t}case"CIMLineSymbol":case"CIMPolygonSymbol":{let t=0;if(e.symbolLayers)for(const r of e.symbolLayers)if(r)switch(r.type){case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":{const e=r.width;null!=e&&e>t&&(t=e);break}case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":if(r.markerPlacement&&O(r.markerPlacement)){const e=r.size;null!=e&&e>t&&(t=e)}}return t}}}static getMarkerScaleRatio(e){if(e&&"CIMVectorMarker"===e.type)if(!1!==e.scaleSymbolsProportionally&&e.frame&&null!=e.size){const t=e.frame.ymax-e.frame.ymin;return e.size/t}return 1}}class ne{static findApplicableOverrides(e,t,r){if(e&&t){if(e.primitiveName){let o=!1;for(const t of r)if(t.primitiveName===e.primitiveName){o=!0;break}if(!o)for(const a of t)a.primitiveName===e.primitiveName&&r.push(a)}switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":if(e.effects)for(const o of e.effects)ne.findApplicableOverrides(o,t,r);if(e.symbolLayers)for(const o of e.symbolLayers)ne.findApplicableOverrides(o,t,r);break;case"CIMTextSymbol":break;case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":case"CIMSolidFill":case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":case"CIMVectorMarker":case"CIMCharacterMarker":case"CIMPictureMarker":if(e.effects)for(const o of e.effects)ne.findApplicableOverrides(o,t,r);if(e.markerPlacement&&ne.findApplicableOverrides(e.markerPlacement,t,r),"CIMVectorMarker"===e.type){if(e.markerGraphics)for(const o of e.markerGraphics)ne.findApplicableOverrides(o,t,r),ne.findApplicableOverrides(o.symbol,t,r)}else"CIMCharacterMarker"===e.type?ne.findApplicableOverrides(e.symbol,t,r):"CIMHatchFill"===e.type?ne.findApplicableOverrides(e.lineSymbol,t,r):"CIMPictureMarker"===e.type&&ne.findApplicableOverrides(e.animatedSymbolProperties,t,r)}}}static findEffectOverrides(e,t,r){if(!t||!e)return;const o=e.length;for(let a=0;a<o;a++){const o=e[a],s=o?.primitiveName;if(s){let e=!1;for(const t of r)if(t.primitiveName===s){e=!0;break}if(!e)for(const o of t)o.primitiveName===s&&r.push(o)}}}static async resolveSymbolOverrides(e,t,o,a,s,i,n){if(!e||!e.symbol)return null;let{symbol:l,primitiveOverrides:c}=e;const f=!!c;if(!f&&!a)return l;l=r(l);let m=!0;if(t||(t={attributes:{}},m=!1),f){if(m||(c=c.filter((e=>!e.valueExpressionInfo?.expression.includes("$feature")))),n||(c=c.filter((e=>!e.valueExpressionInfo?.expression.includes("$view")))),c.length>0){const e=A(t.attributes);await ne.evaluateOverrides(c,t,{spatialReference:o,fields:e,geometryType:s},i,n)}ne.applyOverrides(l,c)}return a&&ne.applyDictionaryTextOverrides(l,t,a),l}static async evaluateOverrides(e,t,r,o,a){if(!t)return;let s;for(const i of e){const e=i.valueExpressionInfo;if(e&&r&&r.geometryType){s||(s=[]),i.value=void 0;const n=f(e.expression,r.spatialReference,r.fields).then((e=>{i.value=B(e,t,{$view:a},r.geometryType,o)}));s.push(n)}}void 0!==s&&s.length>0&&await Promise.all(s)}static applyDictionaryTextOverrides(e,t,r,o="Normal"){if(e&&e.type)switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":case"CIMTextSymbol":{const a=e.symbolLayers;if(!a)return;for(const s of a)s&&"CIMVectorMarker"===s.type&&ne.applyDictionaryTextOverrides(s,t,r,"CIMTextSymbol"===e.type?e.textCase:o)}break;case"CIMVectorMarker":{const o=e.markerGraphics;if(!o)return;for(const e of o)e&&ne.applyDictionaryTextOverrides(e,t,r)}break;case"CIMMarkerGraphic":{const a=e.textString;if(a&&a.includes("[")){const s=N(a,r);e.textString=R(t,s,o)}}}}static applyOverrides(e,t,r,o){if(e.primitiveName)for(const a of t)if(a.primitiveName===e.primitiveName){const t=Ce(a.propertyName);if(o&&o.push({cim:e,nocapPropertyName:t,value:e[t]}),a.expression&&(a.value=ne.toValue(a.propertyName,a.expression)),r){let t=!1;for(const o of r)o.primitiveName===e.primitiveName&&(t=!0);t||r.push(a)}null!=a.value&&(e[t]=a.value)}switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":if(e.effects)for(const a of e.effects)ne.applyOverrides(a,t,r,o);if(e.symbolLayers)for(const a of e.symbolLayers)ne.applyOverrides(a,t,r,o);break;case"CIMTextSymbol":break;case"CIMSolidStroke":case"CIMSolidFill":case"CIMVectorMarker":if(e.effects)for(const a of e.effects)ne.applyOverrides(a,t,r,o);if("CIMVectorMarker"===e.type&&e.markerGraphics)for(const a of e.markerGraphics)ne.applyOverrides(a,t,r,o),ne.applyOverrides(a.symbol,t,r,o)}}static restoreOverrides(e){for(const t of e)t.cim[t.nocapPropertyName]=t.value}static buildOverrideKey(e){let t="";for(const r of e)void 0!==r.value&&(t+=`${r.primitiveName}${r.propertyName}${JSON.stringify(r.value)}`);return t}static toValue(t,r){if("DashTemplate"===t)return r.split(" ").map((e=>Number(e)));if("Color"===t){const t=new e(r).toRgba();return t[3]*=255,t}return r}}const le=e=>{if(!e)return C.Butt;switch(e){case"butt":return C.Butt;case"square":return C.Square;case"round":return C.Round}},ce=e=>{if(!e)return g.Miter;switch(e){case"miter":return g.Miter;case"round":return g.Round;case"bevel":return g.Bevel}},fe=e=>{if(null==e)return"Center";switch(e){case"left":return"Left";case"right":return"Right";case"center":return"Center"}},me=e=>{if(null==e)return"Center";switch(e){case"baseline":return"Baseline";case"top":return"Top";case"middle":return"Center";case"bottom":return"Bottom"}},ye=e=>{if(!e)return[0,0,0,0];const{r:t,g:r,b:o,a}=e;return[t,r,o,255*a]},ue=(e,t)=>{const r=he(t),o=pe(e);return r&&o?`${r}-${o}`:`${r}${o}`},he=e=>{if(!e)return"";switch(e.toLowerCase()){case"bold":case"bolder":return"bold"}return""},pe=e=>{if(!e)return"";switch(e.toLowerCase()){case"italic":case"oblique":return"italic"}return""},Me=(e,t)=>{const r="butt"===t;switch(e){case"dash":case"esriSLSDash":return r?[4,3]:[3,4];case"dash-dot":case"esriSLSDashDot":return r?[4,3,1,3]:[3,4,0,4];case"dot":case"esriSLSDot":return r?[1,3]:[0,4];case"long-dash":case"esriSLSLongDash":return r?[8,3]:[7,4];case"long-dash-dot":case"esriSLSLongDashDot":return r?[8,3,1,3]:[7,4,0,4];case"long-dash-dot-dot":case"esriSLSDashDotDot":return r?[8,3,1,3,1,3]:[7,4,0,4,0,4];case"short-dash":case"esriSLSShortDash":return r?[4,1]:[3,2];case"short-dash-dot":case"esriSLSShortDashDot":return r?[4,1,1,1]:[3,2,0,2];case"short-dash-dot-dot":case"esriSLSShortDashDotDot":return r?[4,1,1,1,1,1]:[3,2,0,2,0,2];case"short-dot":case"esriSLSShortDot":return r?[1,1]:[0,2];case"solid":case"esriSLSSolid":case"none":return Z.error("Unexpected: style does not require rasterization"),[0,0];default:return Z.error(`Tried to rasterize SLS, but found an unexpected style: ${e}!`),[0,0]}};function de(e){return void 0!==e.symbolLayers}const Se=e=>{const t=100,r=50;let o,a;const s=e;if("circle"===s||"esriSMSCircle"===s){const e=.25;let t=Math.acos(1-e/r),s=Math.ceil(q/t/4);0===s&&(s=1),t=W/s,s*=4;const i=[];i.push([r,0]);for(let o=1;o<s;o++)i.push([r*Math.cos(o*t),-r*Math.sin(o*t)]);i.push([r,0]),o={rings:[i]},a={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("cross"===s||"esriSMSCross"===s){const e=0;o={rings:[[[e,r],[e,e],[r,e],[r,-e],[e,-e],[e,-r],[-e,-r],[-e,-e],[-r,-e],[-r,e],[-e,e],[-e,r],[e,r]]]},a={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("diamond"===s||"esriSMSDiamond"===s)o={rings:[[[-r,0],[0,r],[r,0],[0,-r],[-r,0]]]},a={xmin:-r,ymin:-r,xmax:r,ymax:r};else if("square"===s||"esriSMSSquare"===s)o={rings:[[[-r,-r],[-r,r],[r,r],[r,-r],[-r,-r]]]},a={xmin:-r,ymin:-r,xmax:r,ymax:r};else if("x"===s||"esriSMSX"===s){const e=0;o={rings:[[[0,e],[r-e,r],[r,r-e],[e,0],[r,e-r],[r-e,-r],[0,-e],[e-r,-r],[-r,e-r],[-e,0],[-r,r-e],[e-r,r],[0,e]]]},a={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("triangle"===s||"esriSMSTriangle"===s){const e=t*.5773502691896257,r=-e,s=2/3*t,i=s-t;o={rings:[[[r,i],[0,s],[e,i],[r,i]]]},a={xmin:r,ymin:i,xmax:e,ymax:s}}else"arrow"===s&&(o={rings:[[[-50,50],[50,0],[-50,-50],[-33,-20],[-33,20],[-50,50]]]},a={xmin:-r,ymin:-r,xmax:r,ymax:r});return[a,o]},be=e=>"vertical"===e||"horizontal"===e||"cross"===e||"esriSFSCross"===e||"esriSFSVertical"===e||"esriSFSHorizontal"===e,Ce=e=>e?e.charAt(0).toLowerCase()+e.substr(1):e;function ge(e,t,r){if(!e.effects||null!=t.geometryEngine)return;if(t.geometryEnginePromise)return void r.push(t.geometryEnginePromise);j(e.effects)&&(t.geometryEnginePromise=V(),r.push(t.geometryEnginePromise),t.geometryEnginePromise.then((e=>t.geometryEngine=e)))}function Ie(e){if(!e)return null;let t=null;const{cap:r,color:o,join:a,miterLimit:s,style:i,width:n}=e;return"solid"!==i&&"none"!==i&&"esriSLSSolid"!==i&&"esriSLSNull"!==i&&(t=[{type:"CIMGeometricEffectDashes",dashTemplate:Me(i,r),lineDashEnding:"NoConstraint",scaleDash:!0,offsetAlongLine:null}]),{type:"CIMSolidStroke",color:"esriSLSNull"!==i&&"none"!==i?ye(o):[0,0,0,0],capStyle:le(r),joinStyle:ce(a),miterLimit:s,width:n,effects:t}}export{ie as CIMSymbolHelper,se as CIMSymbolInflatedSizeHelper,ne as OverrideHelper,ae as getEffectsInflateSize,Me as slsDashToTemplateArray,ee as symbolToCIM};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../Color.js";import t from"../../request.js";import{unwrapOrThrow as a}from"../../core/maybe.js";import{throwIfAborted as i}from"../../core/promiseUtils.js";import{pt2px as r}from"../../core/screenUtils.js";import{CIMAnalyzer as o,analyzeCIMResource as s}from"./cimAnalyzer.js";import n from"./CIMResourceManager.js";import{Transformation as c,CanvasDrawHelper as l}from"./CIMSymbolDrawHelper.js";import{OverrideHelper as h,CIMSymbolHelper as m}from"./CIMSymbolHelper.js";import g from"./Rasterizer.js";import u from"./TextRasterizer.js";import{mapCIMSymbolToGeometryType as f,createLabelOverrideFunction as d,evaluateValueOrFunction as y,colorToArray as p}from"./utils.js";import{scaleCIMMarker as w}from"../support/cimSymbolUtils.js";import{Symbol3DAnchorPosition2D as C}from"../support/Symbol3DAnchorPosition2D.js";var M;!function(e){e.Legend="legend",e.Preview="preview"}(M||(M={}));const _=e=>e&&e.scaleFactor?e.scaleFactor:1,b=96/72;class z{constructor(e,t){this._spatialReference=e,this._avoidSDF=t,this._resourceCache=new Map,this._imageDataCanvas=null,this._pictureMarkerCache=new Map,this._textRasterizer=new u,this._cimResourceManager=new n,this._rasterizer=new g(this._cimResourceManager)}get resourceManager(){return this._cimResourceManager}async rasterizeCIMSymbolAsync(e,t,a,i,r,o,s,n){if(!e)return null;const{data:g}=e;if(!g||"CIMSymbolReference"!==g.type||!g.symbol)return null;const{symbol:u}=g;o||(o=f(u));const d=await h.resolveSymbolOverrides(g,t,this._spatialReference,r,o,s,n);this._imageDataCanvas||(this._imageDataCanvas=document.createElement("canvas"));const y=this._imageDataCanvas,p=this._cimResourceManager,w=[];m.fetchResources(d,p,w),w.length>0&&await Promise.all(w);const{width:C,height:M}=a,_=v(o,C,M,i),z=m.getEnvelope(d,_,p);if(!z)return null;const I=(window.devicePixelRatio||1)*b;let x=1,R=0,P=0;switch(u.type){case"CIMPointSymbol":case"CIMTextSymbol":{let e=1;z.width>C&&(e=C/z.width);let t=1;z.height>M&&(t=M/z.height),"preview"===i&&(z.width<C&&(e=C/z.width),z.height<M&&(t=M/z.height)),x=Math.min(e,t),R=z.x+z.width/2,P=z.y+z.height/2}break;case"CIMLineSymbol":{let e=1;z.height>M&&(e=M/z.height),x=e,P=z.y+z.height/2;const t=z.x*x+C/2,a=(z.x+z.width)*x+C/2;if(t<0){const{paths:e}=_;e[0][0][0]-=t}if(a>C){const{paths:e}=_;e[0][2][0]-=a-C}}break;case"CIMPolygonSymbol":{R=z.x+z.width/2,P=z.y+z.height/2;const e=z.x*x+C/2,t=(z.x+z.width)*x+C/2,a=z.y*x+M/2,i=(z.y+z.height)*x+M/2,{rings:r}=_;e<0&&(r[0][0][0]-=e,r[0][3][0]-=e,r[0][4][0]-=e),a<0&&(r[0][0][1]+=a,r[0][1][1]+=a,r[0][4][1]+=a),t>C&&(r[0][1][0]-=t-C,r[0][2][0]-=t-C),i>M&&(r[0][2][1]+=i-M,r[0][3][1]+=i-M)}}y.width=C*I,y.height=M*I;const D=1;y.width+=2*D,y.height+=2*D;const S=y.getContext("2d"),k=c.createIdentity();k.translate(-R,-P),k.scale(x*I,-x*I),k.translate(C*I/2+D,M*I/2+D),S.clearRect(0,0,y.width,y.height);return new l(S,p,k,!0).drawSymbol(d,_),S.getImageData(0,0,y.width,y.height)}async analyzeCIMSymbol(e,t,a,r,s){const n=[],c=t?{geometryType:r,spatialReference:this._spatialReference,fields:t}:null,l=new o(this._cimResourceManager,c);let h;await l.analyzeSymbolReference(e.data,this._avoidSDF,n),i(s);for(const i of n)"CIMPictureMarker"!==i.cim.type&&"CIMPictureFill"!==i.cim.type&&"CIMPictureStroke"!==i.cim.type||(h||(h=[]),h.push(this._fetchPictureMarkerResource(i,s))),a&&"text"===i.type&&"string"==typeof i.text&&i.text.includes("[")&&(i.text=d(a,i.text,i.cim.textCase));return h&&await Promise.all(h),n}rasterizeCIMSymbol3D(e,t,a,i,r,o){const s=[];for(const n of e){i&&"function"==typeof i.scaleFactor&&(i.scaleFactor=i.scaleFactor(t,r,o));const e=this._getRasterizedResource(n,t,a,i,r,o);if(!e)continue;let c=0,l=e.anchorX||0,h=e.anchorY||0,m=!1,g=0,u=0;if("esriGeometryPoint"===a){const e=_(i);if(g=y(n.offsetX,t,r,o)*e||0,u=y(n.offsetY,t,r,o)*e||0,"marker"===n.type)c=y(n.rotation,t,r,o)||0,m=n.rotateClockwise??!1;else if("text"===n.type){if(c=y(n.angle,t,r,o)||0,void 0!==n.horizontalAlignment)switch(n.horizontalAlignment){case"left":l=-.5;break;case"right":l=.5;break;default:l=0}if(void 0!==n.verticalAlignment)switch(n.verticalAlignment){case"top":h=.5;break;case"bottom":h=-.5;break;case"baseline":h=-.25;break;default:h=0}}}null!=e&&s.push({angle:c,rotateClockWise:m,anchorX:l,anchorY:h,offsetX:g,offsetY:u,rasterizedResource:e})}return this.getSymbolImage(s)}getSymbolImage(e){const t=document.createElement("canvas"),i=a(t.getContext("2d"));let o=0,s=0,n=0,c=0;const l=[];for(let a=0;a<e.length;a++){const t=e[a],h=t.rasterizedResource;if(!h)continue;const m=h.size,g=t.offsetX,u=t.offsetY,f=t.anchorX,d=t.anchorY,y=t.rotateClockWise||!1;let p=t.angle,w=r(g)-m[0]*(.5+f),C=r(u)-m[1]*(.5+d),M=w+m[0],_=C+m[1];if(p){y&&(p=-p);const e=Math.sin(p*Math.PI/180),t=Math.cos(p*Math.PI/180),a=w*t-C*e,i=w*e+C*t,r=w*t-_*e,o=w*e+_*t,s=M*t-_*e,n=M*e+_*t,c=M*t-C*e,l=M*e+C*t;w=Math.min(a,r,s,c),C=Math.min(i,o,n,l),M=Math.max(a,r,s,c),_=Math.max(i,o,n,l)}o=w<o?w:o,s=C<s?C:s,n=M>n?M:n,c=_>c?_:c;const b=i.createImageData(h.size[0],h.size[1]);b.data.set(new Uint8ClampedArray(h.image.buffer));const z={offsetX:g,offsetY:u,rotateClockwise:y,angle:p,rasterizedImage:b,anchorX:f,anchorY:d};l.push(z)}t.width=n-o,t.height=c-s;const h=-o,m=c;for(let a=0;a<l.length;a++){const e=l[a],t=this._imageDataToCanvas(e.rasterizedImage),o=e.rasterizedImage.width,s=e.rasterizedImage.height,n=h-o*(.5+e.anchorX),c=m-s*(.5-e.anchorY);if(e.angle){const a=(360-e.angle)*Math.PI/180;i.save(),i.translate(r(e.offsetX),-r(e.offsetY)),i.translate(h,m),i.rotate(a),i.translate(-h,-m),i.drawImage(t,n,c),i.restore()}else i.drawImage(t,n+r(e.offsetX),c-r(e.offsetY))}const g=new C({x:h/t.width-.5,y:m/t.height-.5});return{imageData:0!==t.width&&0!==t.height?i.getImageData(0,0,t.width,t.height):i.createImageData(1,1),anchorPosition:g}}async _fetchPictureMarkerResource(e,a){const i=e.materialHash;if(!this._pictureMarkerCache.get(i)){const r=(await t(e.cim.url,{responseType:"image",signal:a&&a.signal})).data;this._pictureMarkerCache.set(i,r)}}_imageDataToCanvas(e){this._imageDataCanvas||(this._imageDataCanvas=document.createElement("canvas"));const t=this._imageDataCanvas,i=a(t.getContext("2d"));return t.width=e.width,t.height=e.height,i.putImageData(e,0,0),t}_imageTo32Array(t,i,r,o){this._imageDataCanvas||(this._imageDataCanvas=document.createElement("canvas"));const s=this._imageDataCanvas,n=a(s.getContext("2d"));if(s.width=i,s.height=r,n.drawImage(t,0,0,i,r),o){n.save();const a=new e(o);n.fillStyle=a.toHex(),n.globalCompositeOperation="multiply",n.fillRect(0,0,i,r),n.globalCompositeOperation="destination-atop",n.drawImage(t,0,0,i,r),n.restore()}return new Uint32Array(n.getImageData(0,0,i,r).data.buffer)}_getRasterizedResource(e,t,i,r,o,s){let n,c,l;const h=null,m=null;if("text"===e.type)return this._rasterizeTextResource(e,t,r,o,s);({analyzedCIM:n,hash:c}=I(e,t,o,s));const g=_(r);if("CIMPictureMarker"===e.cim.type){const i=y(e.size,t,o,s)*g,{image:r,width:n,height:c}=a(this._getPictureResource(e,i,y(e.color,t,o,s)));return l={image:r,size:[n,c],sdf:!1,simplePattern:!1,anchorX:e.anchorPoint?e.anchorPoint.x:0,anchorY:e.anchorPoint?e.anchorPoint.y:0},l}w(n,g,{preserveOutlineWidth:!1});const u=n;c+=i,r&&(c+=JSON.stringify(r));const f=this._resourceCache;return f.has(c)?f.get(c):(l=this._rasterizer.rasterizeJSONResource({cim:u,type:e.type,url:e.url,mosaicHash:c,size:h,path:m},window.devicePixelRatio||1,this._avoidSDF),f.set(c,l),l)}_rasterizeTextResource(e,t,a,i,r){const o=_(a),s=y(e.text,t,i,r);if(!s||0===s.length)return null;const n=e.cim,c=y(n?.fontFamilyName||e.fontName,t,i,r),l=y(n?.font?.style||e.style,t,i,r),h=y(n?.font?.weight||e.weight,t,i,r),m=y(n?.font?.decoration||e.decoration,t,i,r),g=y(e.size,t,i,r)*o,u=y(e.horizontalAlignment,t,i,r),f=y(e.verticalAlignment,t,i,r),d=p(y(e.color,t,i,r)),w=p(y(e.outlineColor,t,i,r)),C=y(e.outlineSize,t,i,r),M=null!=e.backgroundColor?p(e.backgroundColor):null,b=null!=e.borderLineColor?p(e.borderLineColor):null,z=null!=e.borderLineWidth?e.borderLineWidth:null,v={color:d,size:g,horizontalAlignment:u,verticalAlignment:f,font:{family:c,style:l,weight:h,decoration:m},halo:{size:C||0,color:w,style:l},backgroundColor:M,borderLine:null!=b&&null!=z?{color:b,size:z}:null,pixelRatio:1,premultiplyColors:!this._avoidSDF};return this._textRasterizer.rasterizeText(s,v)}_getPictureResource(e,t,a){const i=this._pictureMarkerCache.get(e.materialHash);if(!i)return null;const o=i.height/i.width,s=t?o>1?r(t):r(t)/o:i.width,n=t?o>1?r(t)*o:r(t):i.height;return{image:this._imageTo32Array(i,s,n,a),width:s,height:n}}}function v(e,t,a,i){const r=1,o=-t/2+r,s=t/2-r,n=a/2-r,c=-a/2+r;switch(e){case"esriGeometryPoint":return{x:0,y:0};case"esriGeometryPolyline":return{paths:[[[o,0],[0,0],[s,0]]]};default:return"legend"===i?{rings:[[[o,n],[s,0],[s,c],[o,c],[o,n]]]}:{rings:[[[o,n],[s,n],[s,c],[o,c],[o,n]]]}}}function I(e,t,a,i){let r,o;if("function"==typeof e.materialHash){r=(0,e.materialHash)(t,a,i),o=s(e.cim,e.materialOverrides)}else r=e.materialHash,o=e.cim;return{analyzedCIM:o,hash:r}}export{z as CIMSymbolRasterizer,M as GeometryStyle};
5
+ import e from"../../Color.js";import t from"../../request.js";import{unwrapOrThrow as a}from"../../core/maybe.js";import{throwIfAborted as i}from"../../core/promiseUtils.js";import{pt2px as r}from"../../core/screenUtils.js";import{CIMAnalyzer as o,analyzeCIMResource as s}from"./cimAnalyzer.js";import n from"./CIMResourceManager.js";import{Transformation as c,CanvasDrawHelper as l}from"./CIMSymbolDrawHelper.js";import{OverrideHelper as h,CIMSymbolHelper as m}from"./CIMSymbolHelper.js";import g from"./Rasterizer.js";import u from"./TextRasterizer.js";import{mapCIMSymbolToGeometryType as f,createLabelOverrideFunction as d,evaluateValueOrFunction as y,colorToArray as p}from"./utils.js";import{scaleCIMMarker as w}from"../support/cimSymbolUtils.js";import{Symbol3DAnchorPosition2D as C}from"../support/Symbol3DAnchorPosition2D.js";var M;!function(e){e.Legend="legend",e.Preview="preview"}(M||(M={}));const _=e=>e&&e.scaleFactor?e.scaleFactor:1,b=96/72;class z{constructor(e,t){this._spatialReference=e,this._avoidSDF=t,this._resourceCache=new Map,this._imageDataCanvas=null,this._pictureMarkerCache=new Map,this._textRasterizer=new u,this._cimResourceManager=new n,this._rasterizer=new g(this._cimResourceManager)}get resourceManager(){return this._cimResourceManager}async rasterizeCIMSymbolAsync(e,t,a,i,r,o,s,n){if(!e)return null;const{data:g}=e;if(!g||"CIMSymbolReference"!==g.type||!g.symbol)return null;const{symbol:u}=g;o||(o=f(u));const d=await h.resolveSymbolOverrides(g,t,this._spatialReference,r,o,s,n);this._imageDataCanvas||(this._imageDataCanvas=document.createElement("canvas"));const y=this._imageDataCanvas,p=this._cimResourceManager,w=[];m.fetchResources(d,p,w),m.fetchFonts(d,p,w),w.length>0&&await Promise.all(w);const{width:C,height:M}=a,_=v(o,C,M,i),z=m.getEnvelope(d,_,p);if(!z)return null;const I=(window.devicePixelRatio||1)*b;let x=1,R=0,P=0;switch(u.type){case"CIMPointSymbol":case"CIMTextSymbol":{let e=1;z.width>C&&(e=C/z.width);let t=1;z.height>M&&(t=M/z.height),"preview"===i&&(z.width<C&&(e=C/z.width),z.height<M&&(t=M/z.height)),x=Math.min(e,t),R=z.x+z.width/2,P=z.y+z.height/2}break;case"CIMLineSymbol":{let e=1;z.height>M&&(e=M/z.height),x=e,P=z.y+z.height/2;const t=z.x*x+C/2,a=(z.x+z.width)*x+C/2;if(t<0){const{paths:e}=_;e[0][0][0]-=t}if(a>C){const{paths:e}=_;e[0][2][0]-=a-C}}break;case"CIMPolygonSymbol":{R=z.x+z.width/2,P=z.y+z.height/2;const e=z.x*x+C/2,t=(z.x+z.width)*x+C/2,a=z.y*x+M/2,i=(z.y+z.height)*x+M/2,{rings:r}=_;e<0&&(r[0][0][0]-=e,r[0][3][0]-=e,r[0][4][0]-=e),a<0&&(r[0][0][1]+=a,r[0][1][1]+=a,r[0][4][1]+=a),t>C&&(r[0][1][0]-=t-C,r[0][2][0]-=t-C),i>M&&(r[0][2][1]+=i-M,r[0][3][1]+=i-M)}}y.width=C*I,y.height=M*I;const D=1;y.width+=2*D,y.height+=2*D;const S=y.getContext("2d"),k=c.createIdentity();k.translate(-R,-P),k.scale(x*I,-x*I),k.translate(C*I/2+D,M*I/2+D),S.clearRect(0,0,y.width,y.height);return new l(S,p,k,!0).drawSymbol(d,_),S.getImageData(0,0,y.width,y.height)}async analyzeCIMSymbol3D(e,t,a,r,s){const n=[],c=t?{geometryType:r,spatialReference:this._spatialReference,fields:t}:null,l=[];m.fetchFonts(e.data.symbol,this._cimResourceManager,l),await Promise.all(l);const h=new o(this._cimResourceManager,c);let g;await h.analyzeSymbolReference(e.data,this._avoidSDF,n),i(s);for(const i of n)"CIMPictureMarker"!==i.cim.type&&"CIMPictureFill"!==i.cim.type&&"CIMPictureStroke"!==i.cim.type||(g||(g=[]),g.push(this._fetchPictureMarkerResource(i,s))),a&&"text"===i.type&&"string"==typeof i.text&&i.text.includes("[")&&(i.text=d(a,i.text,i.cim.textCase));return g&&await Promise.all(g),n}rasterizeCIMSymbol3D(e,t,a,i,r,o){const s=[];for(const n of e){i&&"function"==typeof i.scaleFactor&&(i.scaleFactor=i.scaleFactor(t,r,o));const e=this._getRasterizedResource(n,t,a,i,r,o);if(!e)continue;let c=0,l=e.anchorX||0,h=e.anchorY||0,m=!1,g=0,u=0;if("esriGeometryPoint"===a){const e=_(i);if(g=y(n.offsetX,t,r,o)*e||0,u=y(n.offsetY,t,r,o)*e||0,"marker"===n.type)c=y(n.rotation,t,r,o)||0,m=n.rotateClockwise??!1;else if("text"===n.type){if(c=y(n.angle,t,r,o)||0,void 0!==n.horizontalAlignment)switch(n.horizontalAlignment){case"left":l=-.5;break;case"right":l=.5;break;default:l=0}if(void 0!==n.verticalAlignment)switch(n.verticalAlignment){case"top":h=.5;break;case"bottom":h=-.5;break;case"baseline":h=-.25;break;default:h=0}}}null!=e&&s.push({angle:c,rotateClockWise:m,anchorX:l,anchorY:h,offsetX:g,offsetY:u,rasterizedResource:e})}return this.getSymbolImage(s)}getSymbolImage(e){const t=document.createElement("canvas"),i=a(t.getContext("2d"));let o=0,s=0,n=0,c=0;const l=[];for(let a=0;a<e.length;a++){const t=e[a],h=t.rasterizedResource;if(!h)continue;const m=h.size,g=t.offsetX,u=t.offsetY,f=t.anchorX,d=t.anchorY,y=t.rotateClockWise||!1;let p=t.angle,w=r(g)-m[0]*(.5+f),C=r(u)-m[1]*(.5+d),M=w+m[0],_=C+m[1];if(p){y&&(p=-p);const e=Math.sin(p*Math.PI/180),t=Math.cos(p*Math.PI/180),a=w*t-C*e,i=w*e+C*t,r=w*t-_*e,o=w*e+_*t,s=M*t-_*e,n=M*e+_*t,c=M*t-C*e,l=M*e+C*t;w=Math.min(a,r,s,c),C=Math.min(i,o,n,l),M=Math.max(a,r,s,c),_=Math.max(i,o,n,l)}o=w<o?w:o,s=C<s?C:s,n=M>n?M:n,c=_>c?_:c;const b=i.createImageData(h.size[0],h.size[1]);b.data.set(new Uint8ClampedArray(h.image.buffer));const z={offsetX:g,offsetY:u,rotateClockwise:y,angle:p,rasterizedImage:b,anchorX:f,anchorY:d};l.push(z)}t.width=n-o,t.height=c-s;const h=-o,m=c;for(let a=0;a<l.length;a++){const e=l[a],t=this._imageDataToCanvas(e.rasterizedImage),o=e.rasterizedImage.width,s=e.rasterizedImage.height,n=h-o*(.5+e.anchorX),c=m-s*(.5-e.anchorY);if(e.angle){const a=(360-e.angle)*Math.PI/180;i.save(),i.translate(r(e.offsetX),-r(e.offsetY)),i.translate(h,m),i.rotate(a),i.translate(-h,-m),i.drawImage(t,n,c),i.restore()}else i.drawImage(t,n+r(e.offsetX),c-r(e.offsetY))}const g=new C({x:h/t.width-.5,y:m/t.height-.5});return{imageData:0!==t.width&&0!==t.height?i.getImageData(0,0,t.width,t.height):i.createImageData(1,1),anchorPosition:g}}async _fetchPictureMarkerResource(e,a){const i=e.materialHash;if(!this._pictureMarkerCache.get(i)){const r=(await t(e.cim.url,{responseType:"image",signal:a&&a.signal})).data;this._pictureMarkerCache.set(i,r)}}_imageDataToCanvas(e){this._imageDataCanvas||(this._imageDataCanvas=document.createElement("canvas"));const t=this._imageDataCanvas,i=a(t.getContext("2d"));return t.width=e.width,t.height=e.height,i.putImageData(e,0,0),t}_imageTo32Array(t,i,r,o){this._imageDataCanvas||(this._imageDataCanvas=document.createElement("canvas"));const s=this._imageDataCanvas,n=a(s.getContext("2d"));if(s.width=i,s.height=r,n.drawImage(t,0,0,i,r),o){n.save();const a=new e(o);n.fillStyle=a.toHex(),n.globalCompositeOperation="multiply",n.fillRect(0,0,i,r),n.globalCompositeOperation="destination-atop",n.drawImage(t,0,0,i,r),n.restore()}return new Uint32Array(n.getImageData(0,0,i,r).data.buffer)}_getRasterizedResource(e,t,i,r,o,s){let n,c,l;const h=null,m=null;if("text"===e.type)return this._rasterizeTextResource(e,t,r,o,s);({analyzedCIM:n,hash:c}=I(e,t,o,s));const g=_(r);if("CIMPictureMarker"===e.cim.type){const i=y(e.size,t,o,s)*g,{image:r,width:n,height:c}=a(this._getPictureResource(e,i,y(e.color,t,o,s)));return l={image:r,size:[n,c],sdf:!1,simplePattern:!1,anchorX:e.anchorPoint?e.anchorPoint.x:0,anchorY:e.anchorPoint?e.anchorPoint.y:0},l}w(n,g,{preserveOutlineWidth:!1});const u=n;c+=i,r&&(c+=JSON.stringify(r));const f=this._resourceCache;return f.has(c)?f.get(c):(l=this._rasterizer.rasterizeJSONResource({cim:u,type:e.type,url:e.url,mosaicHash:c,size:h,path:m},window.devicePixelRatio||1,this._avoidSDF),f.set(c,l),l)}_rasterizeTextResource(e,t,a,i,r){const o=_(a),s=y(e.text,t,i,r);if(!s||0===s.length)return null;const n=e.cim,c=y(n?.fontFamilyName||e.fontName,t,i,r),l=y(n?.font?.style||e.style,t,i,r),h=y(n?.font?.weight||e.weight,t,i,r),m=y(n?.font?.decoration||e.decoration,t,i,r),g=y(e.size,t,i,r)*o,u=y(e.horizontalAlignment,t,i,r),f=y(e.verticalAlignment,t,i,r),d=p(y(e.color,t,i,r)),w=p(y(e.outlineColor,t,i,r)),C=y(e.outlineSize,t,i,r),M=null!=e.backgroundColor?p(e.backgroundColor):null,b=null!=e.borderLineColor?p(e.borderLineColor):null,z=null!=e.borderLineWidth?e.borderLineWidth:null,v={color:d,size:g,horizontalAlignment:u,verticalAlignment:f,font:{family:c,style:l,weight:h,decoration:m},halo:{size:C||0,color:w,style:l},backgroundColor:M,borderLine:null!=b&&null!=z?{color:b,size:z}:null,pixelRatio:1,premultiplyColors:!this._avoidSDF};return this._textRasterizer.rasterizeText(s,v)}_getPictureResource(e,t,a){const i=this._pictureMarkerCache.get(e.materialHash);if(!i)return null;const o=i.height/i.width,s=t?o>1?r(t):r(t)/o:i.width,n=t?o>1?r(t)*o:r(t):i.height;return{image:this._imageTo32Array(i,s,n,a),width:s,height:n}}}function v(e,t,a,i){const r=1,o=-t/2+r,s=t/2-r,n=a/2-r,c=-a/2+r;switch(e){case"esriGeometryPoint":return{x:0,y:0};case"esriGeometryPolyline":return{paths:[[[o,0],[0,0],[s,0]]]};default:return"legend"===i?{rings:[[[o,n],[s,0],[s,c],[o,c],[o,n]]]}:{rings:[[[o,n],[s,n],[s,c],[o,c],[o,n]]]}}}function I(e,t,a,i){let r,o;if("function"==typeof e.materialHash){r=(0,e.materialHash)(t,a,i),o=s(e.cim,e.materialOverrides)}else r=e.materialHash,o=e.cim;return{analyzedCIM:o,hash:r}}export{z as CIMSymbolRasterizer,M as GeometryStyle};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{px2pt as e,pt2px as t}from"../../core/screenUtils.js";import{OverrideHelper as i,CIMSymbolHelper as l}from"../cim/CIMSymbolHelper.js";import{CIMSymbolRasterizer as n,GeometryStyle as r}from"../cim/CIMSymbolRasterizer.js";import{mapCIMSymbolToGeometryType as o}from"../cim/utils.js";import{SymbolSizeDefaults as a}from"./previewUtils.js";import{renderSymbol as s}from"./renderUtils.js";const h=new n(null,!0),m=e(a.size),c=e(a.maxSize),u=e(a.lineWidth),f=1;function y(e){const t=e?.size;if("number"==typeof t)return{width:t,height:t};return{width:null!=t&&"object"==typeof t&&"width"in t?t.width:null,height:null!=t&&"object"==typeof t&&"height"in t?t.height:null}}async function d(e,n={}){const{node:a,opacity:d,symbolConfig:p}=n,g=null!=p&&"object"==typeof p&&"isSquareFill"in p&&p.isSquareFill,w=n.cimOptions||n,b=w.geometryType||o(e?.data?.symbol),M=y(n),{feature:j,fieldMap:v}=w;if(null==M.width||null==M.height){const t=await i.resolveSymbolOverrides(e.data,j,null,v,b);if(!t)return null;(e=e.clone()).data={type:"CIMSymbolReference",symbol:t},e.data.primitiveOverrides=void 0;const n=[];l.fetchResources(t,h.resourceManager,n),n.length>0&&await Promise.all(n);const r=l.getEnvelope(t,null,h.resourceManager),o=r?.width,a=r?.height;M.width="esriGeometryPolygon"===b?m:"esriGeometryPolyline"===b?u:null!=o&&isFinite(o)?Math.min(o,c):m,M.height="esriGeometryPolygon"===b?m:null!=a&&isFinite(a)?Math.max(Math.min(a,c),f):m}const S=await h.rasterizeCIMSymbolAsync(e,j,M,g||"esriGeometryPolygon"!==b?r.Preview:r.Legend,v,b);if(!S)return null;const{width:C,height:L}=S,I=document.createElement("canvas");I.width=C,I.height=L;I.getContext("2d").putImageData(S,0,0);const P=t(M.width),x=t(M.height),z=new Image(P,x);z.src=I.toDataURL(),z.ariaLabel=n.ariaLabel??null,z.alt=n.ariaLabel??"",null!=d&&(z.style.opacity=`${d}`);let F=z;if(null!=n.effectView){const e={shape:{type:"image",x:0,y:0,width:P,height:x,src:z.src},fill:null,stroke:null,offset:[0,0]};F=s([[e]],[P,x],{effectView:n.effectView,ariaLabel:n.ariaLabel})}return a&&F&&a.appendChild(F),F}export{d as previewCIMSymbol};
5
+ import{px2pt as e,pt2px as t}from"../../core/screenUtils.js";import{OverrideHelper as i,CIMSymbolHelper as l}from"../cim/CIMSymbolHelper.js";import{CIMSymbolRasterizer as r,GeometryStyle as n}from"../cim/CIMSymbolRasterizer.js";import{mapCIMSymbolToGeometryType as o}from"../cim/utils.js";import{SymbolSizeDefaults as a}from"./previewUtils.js";import{renderSymbol as s}from"./renderUtils.js";const c=new r(null,!0),h=e(a.size),m=e(a.maxSize),u=e(a.lineWidth),f=1;function y(e){const t=e?.size;if("number"==typeof t)return{width:t,height:t};return{width:null!=t&&"object"==typeof t&&"width"in t?t.width:null,height:null!=t&&"object"==typeof t&&"height"in t?t.height:null}}async function d(e,r={}){const{node:a,opacity:d,symbolConfig:g}=r,p=null!=g&&"object"==typeof g&&"isSquareFill"in g&&g.isSquareFill,w=r.cimOptions||r,b=w.geometryType||o(e?.data?.symbol),M=y(r),{feature:j,fieldMap:v}=w;if(null==M.width||null==M.height){const t=await i.resolveSymbolOverrides(e.data,j,null,v,b);if(!t)return null;(e=e.clone()).data={type:"CIMSymbolReference",symbol:t},e.data.primitiveOverrides=void 0;const r=[];l.fetchResources(t,c.resourceManager,r),l.fetchFonts(t,c.resourceManager,r),r.length>0&&await Promise.all(r);const n=l.getEnvelope(t,null,c.resourceManager),o=n?.width,a=n?.height;M.width="esriGeometryPolygon"===b?h:"esriGeometryPolyline"===b?u:null!=o&&isFinite(o)?Math.min(o,m):h,M.height="esriGeometryPolygon"===b?h:null!=a&&isFinite(a)?Math.max(Math.min(a,m),f):h}const S=await c.rasterizeCIMSymbolAsync(e,j,M,p||"esriGeometryPolygon"!==b?n.Preview:n.Legend,v,b);if(!S)return null;const{width:C,height:L}=S,I=document.createElement("canvas");I.width=C,I.height=L;I.getContext("2d").putImageData(S,0,0);const P=t(M.width),x=t(M.height),z=new Image(P,x);z.src=I.toDataURL(),z.ariaLabel=r.ariaLabel??null,z.alt=r.ariaLabel??"",null!=d&&(z.style.opacity=`${d}`);let F=z;if(null!=r.effectView){const e={shape:{type:"image",x:0,y:0,width:P,height:x,src:z.src},fill:null,stroke:null,offset:[0,0]};F=s([[e]],[P,x],{effectView:r.effectView,ariaLabel:r.ariaLabel})}return a&&F&&a.appendChild(F),F}export{d as previewCIMSymbol};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as o}from"../../chunks/tslib.es6.js";import"../../geometry.js";import t from"../../core/Accessor.js";import e from"../../core/Collection.js";import{property as r}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as s}from"../../core/accessorSupport/decorators/subclass.js";import i from"../../layers/support/LOD.js";import{GeometryConstraint as n}from"./constraints/GeometryConstraint.js";import a from"./constraints/RotationConstraint.js";import m from"./constraints/ZoomConstraint.js";import c from"../../geometry/Extent.js";import l from"../../geometry/Polygon.js";const p={base:null,key:"type",typeMap:{extent:c,polygon:l}};let y=class extends t{constructor(o){super(o),this.lods=null,this.minScale=0,this.maxScale=0,this.minZoom=-1,this.maxZoom=-1,this.rotationEnabled=!0,this.snapToZoom=!0,this.customConstraints=new e}destroy(){this.view=null}get effectiveLODs(){return this._zoom.effectiveLODs}get effectiveMinScale(){return this._zoom.effectiveMinScale}get effectiveMaxScale(){return this._zoom.effectiveMaxScale}get effectiveMinZoom(){return this._zoom.effectiveMinZoom}get effectiveMaxZoom(){return this._zoom.effectiveMaxZoom}set geometry(o){o?this._set("geometry",o):this._set("geometry",null)}get version(){return`${this._zoom?.uid}/${this._rotation?.uid}/${this._geometry?.uid}`}get _geometry(){return new n({geometry:this.geometry,spatialReference:this.view?.constraintsInfo.spatialReference})}get _rotation(){return new a({rotationEnabled:this.rotationEnabled})}get _zoom(){const o=this._get("_zoom"),t=this.lods||this.view?.constraintsInfo.lods,e=this.minZoom,r=this.maxZoom,s=this.minScale,i=this.maxScale,n=this.snapToZoom;return o&&o.lods===t&&o.minZoom===e&&o.maxZoom===r&&o.minScale===s&&o.maxScale===i&&o.snapToZoom===n?o:new m({lods:t,minZoom:e,maxZoom:r,minScale:s,maxScale:i,snapToZoom:n})}canZoomInTo(o){const t=this.effectiveMaxScale;return 0===t||o>=t}canZoomOutTo(o){const t=this.effectiveMinScale;return 0===t||o<=t}constrain(o,t){return this._zoom.constrain(o,t),this._rotation.constrain(o,t),this._geometry.constrain(o,t),this.customConstraints.forEach((e=>e.constrain(o,t))),o}constrainByGeometry(o){return this._geometry.constrain(o)}fit(o){return this._zoom.fit(o)}zoomToScale(o){return this._zoom.zoomToScale(o)}scaleToZoom(o){return this._zoom.scaleToZoom(o)}snapScale(o){return this._zoom.snapToClosestScale(o)}snapToNextScale(o){return this._zoom.snapToNextScale(o)}snapToPreviousScale(o){return this._zoom.snapToPreviousScale(o)}};o([r({readOnly:!0})],y.prototype,"effectiveLODs",null),o([r({readOnly:!0})],y.prototype,"effectiveMinScale",null),o([r({readOnly:!0})],y.prototype,"effectiveMaxScale",null),o([r({readOnly:!0})],y.prototype,"effectiveMinZoom",null),o([r({readOnly:!0})],y.prototype,"effectiveMaxZoom",null),o([r({types:p,value:null})],y.prototype,"geometry",null),o([r({type:[i]})],y.prototype,"lods",void 0),o([r()],y.prototype,"minScale",void 0),o([r()],y.prototype,"maxScale",void 0),o([r()],y.prototype,"minZoom",void 0),o([r()],y.prototype,"maxZoom",void 0),o([r()],y.prototype,"rotationEnabled",void 0),o([r()],y.prototype,"snapToZoom",void 0),o([r({type:e})],y.prototype,"customConstraints",void 0),o([r()],y.prototype,"view",void 0),o([r({readOnly:!0})],y.prototype,"version",null),o([r({type:n})],y.prototype,"_geometry",null),o([r({type:a})],y.prototype,"_rotation",null),o([r({readOnly:!0,type:m})],y.prototype,"_zoom",null),y=o([s("esri.views.2d.MapViewConstraints")],y);const u=y;export{u as default};
5
+ import{_ as o}from"../../chunks/tslib.es6.js";import"../../geometry.js";import t from"../../core/Accessor.js";import e from"../../core/Collection.js";import{property as r}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as s}from"../../core/accessorSupport/decorators/subclass.js";import i from"../../layers/support/LOD.js";import{GeometryConstraint as n}from"./constraints/GeometryConstraint.js";import a from"./constraints/RotationConstraint.js";import m from"./constraints/ZoomConstraint.js";import c from"../../geometry/Extent.js";import l from"../../geometry/Polygon.js";const p={base:null,key:"type",typeMap:{extent:c,polygon:l}};let y=class extends t{constructor(o){super(o),this.lods=null,this.minScale=0,this.maxScale=0,this.minZoom=-1,this.maxZoom=-1,this.rotationEnabled=!0,this.snapToZoom=!0,this.customConstraints=new e}destroy(){this.view=null}get effectiveLODs(){return this._zoom.effectiveLODs}get effectiveMinScale(){return this._zoom.effectiveMinScale}get effectiveMaxScale(){return this._zoom.effectiveMaxScale}get effectiveMinZoom(){return this._zoom.effectiveMinZoom}get effectiveMaxZoom(){return this._zoom.effectiveMaxZoom}set geometry(o){o?this._set("geometry",o):this._set("geometry",null)}get version(){return`${this._zoom?.uid}/${this._rotation?.uid}/${this._geometry?.uid}`}get _geometry(){const o=this._get("_geometry");return o&&this.geometry===o.geometry&&this.view?.constraintsInfo.spatialReference===o.spatialReference?o:new n({geometry:this.geometry,spatialReference:this.view?.constraintsInfo.spatialReference})}get _rotation(){return new a({rotationEnabled:this.rotationEnabled})}get _zoom(){const o=this._get("_zoom"),t=this.lods||this.view?.constraintsInfo.lods,e=this.minZoom,r=this.maxZoom,s=this.minScale,i=this.maxScale,n=this.snapToZoom;return o&&o.lods===t&&o.minZoom===e&&o.maxZoom===r&&o.minScale===s&&o.maxScale===i&&o.snapToZoom===n?o:new m({lods:t,minZoom:e,maxZoom:r,minScale:s,maxScale:i,snapToZoom:n})}canZoomInTo(o){const t=this.effectiveMaxScale;return 0===t||o>=t}canZoomOutTo(o){const t=this.effectiveMinScale;return 0===t||o<=t}constrain(o,t){return this._zoom.constrain(o,t),this._rotation.constrain(o,t),this._geometry.constrain(o,t),this.customConstraints.forEach((e=>e.constrain(o,t))),o}constrainByGeometry(o){return this._geometry.constrain(o)}fit(o){return this._zoom.fit(o)}zoomToScale(o){return this._zoom.zoomToScale(o)}scaleToZoom(o){return this._zoom.scaleToZoom(o)}snapScale(o){return this._zoom.snapToClosestScale(o)}snapToNextScale(o){return this._zoom.snapToNextScale(o)}snapToPreviousScale(o){return this._zoom.snapToPreviousScale(o)}};o([r({readOnly:!0})],y.prototype,"effectiveLODs",null),o([r({readOnly:!0})],y.prototype,"effectiveMinScale",null),o([r({readOnly:!0})],y.prototype,"effectiveMaxScale",null),o([r({readOnly:!0})],y.prototype,"effectiveMinZoom",null),o([r({readOnly:!0})],y.prototype,"effectiveMaxZoom",null),o([r({types:p,value:null})],y.prototype,"geometry",null),o([r({type:[i]})],y.prototype,"lods",void 0),o([r()],y.prototype,"minScale",void 0),o([r()],y.prototype,"maxScale",void 0),o([r()],y.prototype,"minZoom",void 0),o([r()],y.prototype,"maxZoom",void 0),o([r()],y.prototype,"rotationEnabled",void 0),o([r()],y.prototype,"snapToZoom",void 0),o([r({type:e})],y.prototype,"customConstraints",void 0),o([r()],y.prototype,"view",void 0),o([r({readOnly:!0})],y.prototype,"version",null),o([r({type:n,readOnly:!0})],y.prototype,"_geometry",null),o([r({type:a})],y.prototype,"_rotation",null),o([r({readOnly:!0,type:m})],y.prototype,"_zoom",null),y=o([s("esri.views.2d.MapViewConstraints")],y);const f=y;export{f as default};