@arcgis/core 5.1.0-next.65 → 5.1.0-next.66

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 (481) hide show
  1. package/applications/KnowledgeStudio/generalSdkInternalAccess.d.ts +11 -1
  2. package/applications/KnowledgeStudio/generalSdkInternalAccess.js +1 -1
  3. package/applications/WebEditor/drawToolZSnapping.d.ts +17 -0
  4. package/applications/WebEditor/drawToolZSnapping.js +2 -0
  5. package/arcade/Dictionary.js +1 -1
  6. package/arcade/Feature.js +1 -1
  7. package/arcade/Pixel.js +1 -1
  8. package/arcade/Voxel.js +1 -1
  9. package/assets/esri/core/workers/RemoteClient.js +1 -1
  10. package/assets/esri/core/workers/chunks/01be1315c60810651783.js +1 -0
  11. package/assets/esri/core/workers/chunks/02e8fc598ee09cf1b678.js +1 -0
  12. package/assets/esri/core/workers/chunks/0d650b0d090a425c9c18.js +1 -0
  13. package/assets/esri/core/workers/chunks/0e90e9ea1ad587eb3495.js +1 -0
  14. package/assets/esri/core/workers/chunks/0f196ec93925dfefc69a.js +1 -0
  15. package/assets/esri/core/workers/chunks/12294f8c32c34788b6de.js +1 -0
  16. package/assets/esri/core/workers/chunks/13a8346abe5509167578.js +1 -0
  17. package/assets/esri/core/workers/chunks/1515824f11ef5ab95378.js +1 -0
  18. package/assets/esri/core/workers/chunks/151c2766a4cacc6adbd6.js +1 -0
  19. package/assets/esri/core/workers/chunks/155f57fe9886ef322e2a.js +1 -0
  20. package/assets/esri/core/workers/chunks/170f4d83555d238e365b.js +1 -0
  21. package/assets/esri/core/workers/chunks/171cca726a763c770469.js +1 -0
  22. package/assets/esri/core/workers/chunks/17445fd8048966617d49.js +1 -0
  23. package/assets/esri/core/workers/chunks/1761dc5799850ca7b66c.js +1 -0
  24. package/assets/esri/core/workers/chunks/17d54e77001ccb48a258.js +1 -0
  25. package/assets/esri/core/workers/chunks/19afacc9a741038e4bfb.js +1 -0
  26. package/assets/esri/core/workers/chunks/1d8777266fb1c5cfca55.js +1 -0
  27. package/assets/esri/core/workers/chunks/1f16bc8c02d8c4b2f693.js +1 -0
  28. package/assets/esri/core/workers/chunks/1f76c06af4682c85bc21.js +1 -0
  29. package/assets/esri/core/workers/chunks/{9eef3cd5f519c8ae88c0.js → 205e957ffd7e95f530f7.js} +1 -1
  30. package/assets/esri/core/workers/chunks/{fa6e1ad099b43a6f5501.js → 21a8e2a11ffacc226e2b.js} +1 -1
  31. package/assets/esri/core/workers/chunks/{811b378fa5bf8a4d3d66.js → 224461c1d9755966d0b6.js} +1 -1
  32. package/assets/esri/core/workers/chunks/27262083d37fe623ca9c.js +1 -0
  33. package/assets/esri/core/workers/chunks/2a3145a595d19391bb8a.js +1 -0
  34. package/assets/esri/core/workers/chunks/2a65bbe6c63c384cbf5f.js +1 -0
  35. package/assets/esri/core/workers/chunks/2fa69ca3ba8c442dd7d6.js +1 -0
  36. package/assets/esri/core/workers/chunks/314140e2e9b813191907.js +1 -0
  37. package/assets/esri/core/workers/chunks/32e22d6eee9fed1f70b0.js +1 -0
  38. package/assets/esri/core/workers/chunks/{af40e2e6eaf3d2226812.js → 3464a38e758c687a28d4.js} +1 -1
  39. package/assets/esri/core/workers/chunks/38816f95e801f1c5bbad.js +1 -0
  40. package/assets/esri/core/workers/chunks/3f8e8f83ebda07d29ca8.js +1 -0
  41. package/assets/esri/core/workers/chunks/41396724040180d2537f.js +1 -0
  42. package/assets/esri/core/workers/chunks/{66baacbef23291eab853.js → 413d2fa54508e6f42c74.js} +1 -1
  43. package/assets/esri/core/workers/chunks/{32e9e92bbbd000fbbaf7.js → 4141a3a93732996601e8.js} +2 -2
  44. package/assets/esri/core/workers/chunks/41e59d75ccb51a238739.js +1 -0
  45. package/assets/esri/core/workers/chunks/44016e1176629c36bc11.js +1 -0
  46. package/assets/esri/core/workers/chunks/468c70e5fdb61dfaad80.js +1 -0
  47. package/assets/esri/core/workers/chunks/4d069a0ebadb9c53b550.js +1 -0
  48. package/assets/esri/core/workers/chunks/4e7b084f7104deea1ddb.js +1 -0
  49. package/assets/esri/core/workers/chunks/{9c72127de7afcbaafbaf.js → 51852ef71ac04954fdae.js} +1 -1
  50. package/assets/esri/core/workers/chunks/549a51dedcc49f366e53.js +1 -0
  51. package/assets/esri/core/workers/chunks/{42e084704dea6e4135b6.js → 54c0306082d30d59cba2.js} +1 -1
  52. package/assets/esri/core/workers/chunks/56036327e721f9c42b33.js +1 -0
  53. package/assets/esri/core/workers/chunks/57cdd5d4ae073d5ca725.js +1 -0
  54. package/assets/esri/core/workers/chunks/5b9257c5359fa05f4f28.js +1 -0
  55. package/assets/esri/core/workers/chunks/5d574079f0e96e883aab.js +1 -0
  56. package/assets/esri/core/workers/chunks/5d967bcf71c05ddb1ab6.js +1 -0
  57. package/assets/esri/core/workers/chunks/5fccb372b4d5ee2f64cc.js +1 -0
  58. package/assets/esri/core/workers/chunks/61778185d702da468b00.js +1 -0
  59. package/assets/esri/core/workers/chunks/61794a861a9209b72622.js +1 -0
  60. package/assets/esri/core/workers/chunks/61b49cdaf288f36f9288.js +1 -0
  61. package/assets/esri/core/workers/chunks/{8ea67b502f9355dab7e9.js → 621ea864e2774f160d1c.js} +1 -1
  62. package/assets/esri/core/workers/chunks/{9d289cee96e7c7fe1029.js → 62a2da0ffc67f98445c1.js} +1 -1
  63. package/assets/esri/core/workers/chunks/{254898b41cabe313b6ce.js → 62d96b012c2d6f601863.js} +1 -1
  64. package/assets/esri/core/workers/chunks/644dd906bee3ef465ec0.js +1 -0
  65. package/assets/esri/core/workers/chunks/66692d6edc1bd96645e2.js +1 -0
  66. package/assets/esri/core/workers/chunks/679086351352756b33c9.js +1 -0
  67. package/assets/esri/core/workers/chunks/681e97ebbf9c69c410c6.js +1 -0
  68. package/assets/esri/core/workers/chunks/69520cad347947b09f21.js +1 -0
  69. package/assets/esri/core/workers/chunks/{c86b15f6a18880f921cd.js → 6a567755b67c06d16f21.js} +1 -1
  70. package/assets/esri/core/workers/chunks/{fdf4c1f202cfddf0f226.js → 6d11ec355e5474b2968b.js} +1 -1
  71. package/assets/esri/core/workers/chunks/6e7bb6d3e739527116a4.js +1 -0
  72. package/assets/esri/core/workers/chunks/751f3cfb000045ac78bb.js +1 -0
  73. package/assets/esri/core/workers/chunks/{64ad6130de549083caba.js → 789357e0f79823f145dd.js} +1 -1
  74. package/assets/esri/core/workers/chunks/{b6d94cbd1c5adad2f247.js → 78fbfc03d9b827c3f767.js} +1 -1
  75. package/assets/esri/core/workers/chunks/79df97e3f5975b42dc4d.js +1 -0
  76. package/assets/esri/core/workers/chunks/{25e4568a3ff76f48ac5e.js → 7a56c836c89a8b978800.js} +1 -1
  77. package/assets/esri/core/workers/chunks/7e9b790fe01b89acdf6d.js +1 -0
  78. package/assets/esri/core/workers/chunks/7fb9a5bc22d7581f1d20.js +1 -0
  79. package/assets/esri/core/workers/chunks/{5c1abb46b9937a050c32.js → 7ffcd308087c35adda04.js} +1 -1
  80. package/assets/esri/core/workers/chunks/84eb889b9cce35dac2e5.js +1 -0
  81. package/assets/esri/core/workers/chunks/891d97d0da6361d63679.js +1 -0
  82. package/assets/esri/core/workers/chunks/8a0f254d45d00b293479.js +1 -0
  83. package/assets/esri/core/workers/chunks/8ede12f54b215c52cf3c.js +1 -0
  84. package/assets/esri/core/workers/chunks/8fed6becd107d2ed9bbd.js +1 -0
  85. package/assets/esri/core/workers/chunks/90cef6f96df7dc27db39.js +1 -0
  86. package/assets/esri/core/workers/chunks/921c30b7f4dfc3e018d9.js +1 -0
  87. package/assets/esri/core/workers/chunks/927773ed23b1fc245bf7.js +1 -0
  88. package/assets/esri/core/workers/chunks/{b056b4c79bcd542dd1d2.js → 9622a83b29acb768fcb5.js} +1 -1
  89. package/assets/esri/core/workers/chunks/97062996e1e4196cfa7c.js +1 -0
  90. package/assets/esri/core/workers/chunks/97210bcb5e3cf3ac961b.js +1 -0
  91. package/assets/esri/core/workers/chunks/{f550fc8c078ebd47d7a3.js → 97e15e66e55d9149fd48.js} +1 -1
  92. package/assets/esri/core/workers/chunks/9c819ebdc98ed8b6afcf.js +1 -0
  93. package/assets/esri/core/workers/chunks/9dfd00972c12a4adc15d.js +1 -0
  94. package/assets/esri/core/workers/chunks/9fab410b9fa668dc498b.js +1 -0
  95. package/assets/esri/core/workers/chunks/a118de5a163ae42bee60.js +1 -0
  96. package/assets/esri/core/workers/chunks/a4b6fdbc995be03d2afb.js +1 -0
  97. package/assets/esri/core/workers/chunks/a59db907ec1e31002100.js +1 -0
  98. package/assets/esri/core/workers/chunks/a5b395e518e4c5fc95d0.js +1414 -0
  99. package/assets/esri/core/workers/chunks/a5d9dbb1fef8c4465943.js +1 -0
  100. package/assets/esri/core/workers/chunks/{62c2757f5dc4aaca2df8.js → a73e8b80760dc88f926f.js} +1 -1
  101. package/assets/esri/core/workers/chunks/a96692514dcaa50340dd.js +1 -0
  102. package/assets/esri/core/workers/chunks/b4fb4484fa39eede1f62.js +1 -0
  103. package/assets/esri/core/workers/chunks/b50a42a9f96515beb929.js +1 -0
  104. package/assets/esri/core/workers/chunks/b8bf3e8b8b870f69f231.js +1 -0
  105. package/assets/esri/core/workers/chunks/b8e85b7d5eed6e7c79b5.js +1 -0
  106. package/assets/esri/core/workers/chunks/{fd629a3ab558adf52617.js → bc2c7cb99e227ddbd3a6.js} +1 -1
  107. package/assets/esri/core/workers/chunks/bc85bb82cfcbc216fa31.js +1 -0
  108. package/assets/esri/core/workers/chunks/{4eca871ca51a59f6540a.js → bcb8a25438c66815e37a.js} +1 -1
  109. package/assets/esri/core/workers/chunks/be1e4c3ec53fc92a26f1.js +1 -0
  110. package/assets/esri/core/workers/chunks/be4d13088a557b7de4b1.js +1 -0
  111. package/assets/esri/core/workers/chunks/bf758d57091fa534c1f8.js +1 -0
  112. package/assets/esri/core/workers/chunks/bfd516c37fb717e14d71.js +1 -0
  113. package/assets/esri/core/workers/chunks/c22945637a40355fbe61.js +1 -0
  114. package/assets/esri/core/workers/chunks/c25a58d9f94aaa96957d.js +1 -0
  115. package/assets/esri/core/workers/chunks/c4e936879c6cb25cf586.js +1 -0
  116. package/assets/esri/core/workers/chunks/c6a43f748dbf8bac4bb5.js +1 -0
  117. package/assets/esri/core/workers/chunks/cb9185ed31109781fe59.js +1 -0
  118. package/assets/esri/core/workers/chunks/d21fdd67477800101f3b.js +1 -0
  119. package/assets/esri/core/workers/chunks/d264aed5dbe09e34040f.js +1 -0
  120. package/assets/esri/core/workers/chunks/d315098b038a96084ff5.js +1 -0
  121. package/assets/esri/core/workers/chunks/d4465fd3319d0b6a26cc.js +1 -0
  122. package/assets/esri/core/workers/chunks/{13eb0162d95b4d27389c.js → d598d08dbf2796742e8c.js} +1 -1
  123. package/assets/esri/core/workers/chunks/d5c7ebfd5c2ca635a7a8.js +1 -0
  124. package/assets/esri/core/workers/chunks/{d4368e281c12fa7c17c5.js → d635f97b7b82a37482d6.js} +1 -1
  125. package/assets/esri/core/workers/chunks/d7b92bd9198dd3b27eb5.js +1 -0
  126. package/assets/esri/core/workers/chunks/d83ac66478a419e08af6.js +1 -0
  127. package/assets/esri/core/workers/chunks/d8dde0d1759e009b8373.js +1 -0
  128. package/assets/esri/core/workers/chunks/d94dfb2ce31e59b3306b.js +1 -0
  129. package/assets/esri/core/workers/chunks/{0f3b8a08f843a080af0d.js → deddf6ae4498a3d0d0e5.js} +1 -1
  130. package/assets/esri/core/workers/chunks/{45f1e682668cffc00b44.js → e0df7554b1679168663d.js} +1 -1
  131. package/assets/esri/core/workers/chunks/e0fcb5fa0e9f21fde2b6.js +1 -0
  132. package/assets/esri/core/workers/chunks/e305ced975d885c28e7e.js +1 -0
  133. package/assets/esri/core/workers/chunks/e3c60b7df2740e600066.js +1 -0
  134. package/assets/esri/core/workers/chunks/e611cd03eee4fae7c413.js +1 -0
  135. package/assets/esri/core/workers/chunks/e64a92b6f4075616f40f.js +1 -0
  136. package/assets/esri/core/workers/chunks/e78b442417f6a903b9b1.js +1 -0
  137. package/assets/esri/core/workers/chunks/{ba72989749543122a6fe.js → e9f2b573f482718306e6.js} +1 -1
  138. package/assets/esri/core/workers/chunks/ea6d3b7c7d720aa7bc94.js +1 -0
  139. package/assets/esri/core/workers/chunks/eab1b45ab5a802e29f8c.js +1 -0
  140. package/assets/esri/core/workers/chunks/eb7392799a01c2a8497a.js +1 -0
  141. package/assets/esri/core/workers/chunks/{c17c3453d014dc73fe0b.js → ef013a77950c1902de11.js} +1 -1
  142. package/assets/esri/core/workers/chunks/ef0fe4e1a9e960a74c60.js +1 -0
  143. package/assets/esri/core/workers/chunks/efbbcf467b2a27a92b85.js +1 -0
  144. package/assets/esri/core/workers/chunks/f201edf9b68717a6106d.js +1 -0
  145. package/assets/esri/core/workers/chunks/f43a63094190d2074cd0.js +1 -0
  146. package/assets/esri/core/workers/chunks/f59f1db572be1f19887f.js +1 -0
  147. package/assets/esri/core/workers/chunks/{dc07dc1cd30edc0c4193.js → f62e42659b406435573d.js} +1 -1
  148. package/assets/esri/core/workers/chunks/fa160a2a5dc9f5a7c34b.js +1 -0
  149. package/assets/esri/core/workers/chunks/fa7ae035472540999721.js +1 -0
  150. package/assets/esri/core/workers/chunks/fe3b42eadcdd9ba54f05.js +1 -0
  151. package/assets/esri/core/workers/chunks/fee31d9297648219375d.js +1 -0
  152. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ar.json +1 -1
  153. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_bg.json +1 -1
  154. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_bs.json +1 -1
  155. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ca.json +1 -1
  156. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_cs.json +1 -1
  157. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_da.json +1 -1
  158. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_de.json +1 -1
  159. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_el.json +1 -1
  160. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_es.json +1 -1
  161. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_et.json +1 -1
  162. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_fi.json +1 -1
  163. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_fr.json +1 -1
  164. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_he.json +1 -1
  165. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_hr.json +1 -1
  166. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_hu.json +1 -1
  167. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_id.json +1 -1
  168. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_it.json +1 -1
  169. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ja.json +1 -1
  170. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ko.json +1 -1
  171. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_lt.json +1 -1
  172. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_lv.json +1 -1
  173. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_nl.json +1 -1
  174. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_no.json +1 -1
  175. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_pl.json +1 -1
  176. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_pt-BR.json +1 -1
  177. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_pt-PT.json +1 -1
  178. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ro.json +1 -1
  179. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ru.json +1 -1
  180. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_sk.json +1 -1
  181. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_sl.json +1 -1
  182. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_sr.json +1 -1
  183. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_sv.json +1 -1
  184. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_th.json +1 -1
  185. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_tr.json +1 -1
  186. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_uk.json +1 -1
  187. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_vi.json +1 -1
  188. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_zh-CN.json +1 -1
  189. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_zh-HK.json +1 -1
  190. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_zh-TW.json +1 -1
  191. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ar.json +1 -1
  192. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_bg.json +1 -1
  193. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_bs.json +1 -1
  194. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ca.json +1 -1
  195. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_cs.json +1 -1
  196. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_da.json +1 -1
  197. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_de.json +1 -1
  198. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_el.json +1 -1
  199. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_es.json +1 -1
  200. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_et.json +1 -1
  201. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_fi.json +1 -1
  202. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_fr.json +1 -1
  203. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_he.json +1 -1
  204. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_hr.json +1 -1
  205. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_hu.json +1 -1
  206. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_id.json +1 -1
  207. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_it.json +1 -1
  208. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ja.json +1 -1
  209. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ko.json +1 -1
  210. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_lt.json +1 -1
  211. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_lv.json +1 -1
  212. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_nl.json +1 -1
  213. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_no.json +1 -1
  214. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_pl.json +1 -1
  215. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_pt-BR.json +1 -1
  216. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_pt-PT.json +1 -1
  217. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ro.json +1 -1
  218. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ru.json +1 -1
  219. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sk.json +1 -1
  220. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sl.json +1 -1
  221. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sr.json +1 -1
  222. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sv.json +1 -1
  223. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_th.json +1 -1
  224. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_tr.json +1 -1
  225. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_uk.json +1 -1
  226. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_vi.json +1 -1
  227. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_zh-CN.json +1 -1
  228. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_zh-HK.json +1 -1
  229. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_zh-TW.json +1 -1
  230. package/chunks/ComponentShader.glsl.js +1 -1
  231. package/chunks/DefaultMaterial.glsl.js +1 -1
  232. package/chunks/GaussianSplat.glsl.js +14 -2
  233. package/chunks/OITDim.glsl.js +3 -2
  234. package/chunks/Path.glsl.js +1 -1
  235. package/chunks/RealisticTree.glsl.js +1 -1
  236. package/chunks/ShadowCastAccumulate.glsl.js +2 -2
  237. package/chunks/ShadowHighlight.glsl.js +3 -3
  238. package/chunks/ShadowHighlightBuffer.glsl.js +1 -1
  239. package/chunks/Terrain.glsl.js +1 -1
  240. package/chunks/Water.glsl.js +1 -1
  241. package/config.js +1 -1
  242. package/core/timeUtils.js +1 -1
  243. package/core/workers/Connection.js +1 -1
  244. package/form/elements/FieldElement.d.ts +2 -2
  245. package/form/elements/inputs/DateTimeOffsetPickerInput.d.ts +1 -1
  246. package/form/elements/inputs/DateTimeOffsetPickerInput.js +1 -1
  247. package/form/elements/inputs/Input.d.ts +1 -1
  248. package/form/elements/inputs/inputUtils.js +1 -1
  249. package/form/elements/inputs.js +1 -1
  250. package/geometry/support/spatialReferenceUtils.js +1 -1
  251. package/interfaces.d.ts +4 -2
  252. package/intl.js +1 -1
  253. package/kernel.js +1 -1
  254. package/layers/FeatureLayer.d.ts +7 -0
  255. package/layers/FeatureLayer.js +1 -1
  256. package/layers/SubtypeGroupLayer.js +1 -1
  257. package/layers/VoxelWasmPerSceneView.js +1 -1
  258. package/layers/graphics/data/AttributesBuilder.js +1 -1
  259. package/layers/support/SymbolLayerDrawing.d.ts +15 -0
  260. package/layers/support/SymbolLayerDrawing.js +2 -0
  261. package/networks/support/jsonTypes.d.ts +36 -11
  262. package/package.json +4 -4
  263. package/popup/Feature.d.ts +14 -4
  264. package/popup/Features.d.ts +81 -215
  265. package/popup/Features.js +1 -1
  266. package/popup/support/FeatureAbilities.d.ts +45 -9
  267. package/popup/types.d.ts +0 -67
  268. package/smartMapping/statistics/support/utils.js +1 -1
  269. package/smartMapping/support/adapters/support/utils.js +1 -1
  270. package/support/basemapDefinitions.js +1 -1
  271. package/support/revision.js +1 -1
  272. package/symbols/cim/cimAnalyzer.js +1 -1
  273. package/symbols/cim/types.d.ts +6 -0
  274. package/views/2d/engine/Stage.js +1 -1
  275. package/views/2d/engine/vectorTiles/VTLPainter3D.js +1 -1
  276. package/views/2d/engine/webgl/AttributeStoreView.js +1 -1
  277. package/views/2d/engine/webgl/FeatureDisplayList.js +1 -1
  278. package/views/2d/engine/webgl/Painter.js +1 -1
  279. package/views/2d/engine/webgl/VideoScreenRenderer.js +1 -1
  280. package/views/2d/engine/webgl/effects/FeatureEffect.js +1 -1
  281. package/views/2d/engine/webgl/effects/HighlightEffect.js +1 -1
  282. package/views/2d/engine/webgl/effects/highlight/HighlightSurfaces.js +1 -1
  283. package/views/2d/engine/webgl/shaderGraph/techniques/FeatureInstanceStore.js +1 -1
  284. package/views/2d/engine/webgl/shaderGraph/techniques/GraphicInstanceStore.js +1 -1
  285. package/views/2d/engine/webgl/shaderGraph/techniques/TextureStatisticsTechnique.js +1 -1
  286. package/views/2d/engine/webgl/shaderGraph/techniques/blend/BlendTechnique.js +1 -1
  287. package/views/2d/engine/webgl/shaderGraph/techniques/bloom/BloomTechnique.js +1 -1
  288. package/views/2d/engine/webgl/shaderGraph/techniques/blur/BlurTechnique.js +1 -1
  289. package/views/2d/engine/webgl/shaderGraph/techniques/dotDensity/DotDensityResources.js +1 -1
  290. package/views/2d/engine/webgl/shaderGraph/techniques/dotDensity/DotDensityTechnique.js +1 -1
  291. package/views/2d/engine/webgl/shaderGraph/techniques/drop-shadow/DropShadowTechnique.js +1 -1
  292. package/views/2d/engine/webgl/shaderGraph/techniques/heatmap/HeatmapResources.js +1 -1
  293. package/views/2d/engine/webgl/shaderGraph/techniques/heatmap/HeatmapTechnique.js +1 -1
  294. package/views/2d/engine/webgl/shaderGraph/techniques/raster/RasterColorizerTechnique.js +1 -1
  295. package/views/2d/engine/webgl/shaderGraph/techniques/raster/RasterHighlightTechnique.js +1 -1
  296. package/views/2d/engine/webgl/shaderGraph/techniques/raster/processor/BaseRasterProcessorTechnique.js +1 -1
  297. package/views/2d/engine/webgl/shaderGraph/techniques/raster/processor/textureUtils.js +1 -1
  298. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  299. package/views/2d/layers/BaseLayerViewGL2D.d.ts +1 -1
  300. package/views/2d/layers/BaseLayerViewGL2D.js +1 -1
  301. package/views/2d/layers/features/FeatureContainer.js +1 -1
  302. package/views/2d/layers/features/layerAdapters/FeatureLayerAdapter.js +1 -1
  303. package/views/2d/layers/features/layerAdapters/SubtypeGroupLayerAdapter.js +1 -1
  304. package/views/2d/layers/features/schema/processor/SimpleProcessorSchema.js +1 -1
  305. package/views/2d/layers/features/schema/processor/symbols/ComplexSymbolSchema.js +1 -1
  306. package/views/2d/layers/support/DisplayGL.js +1 -1
  307. package/views/3d/analysis/Viewshed/ViewshedSubTool.js +1 -1
  308. package/views/3d/analysis/Viewshed/ViewshedTool.js +1 -1
  309. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  310. package/views/3d/support/gaussianSplatting/GaussianSplatIntersectionHandler.js +1 -1
  311. package/views/3d/support/gaussianSplatting/GaussianSplatTextureAtlas.js +1 -1
  312. package/views/3d/support/gaussianSplatting/GaussianTile.js +1 -1
  313. package/views/3d/terrain/support/MultiSizeFramebuffer.js +1 -1
  314. package/views/3d/webgl/ManagedFBO.js +1 -1
  315. package/views/3d/webgl-engine/core/FBOCache.js +1 -1
  316. package/views/3d/webgl-engine/core/renderPasses/RenderPassManager.js +1 -1
  317. package/views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js +18 -5
  318. package/views/3d/webgl-engine/core/shaderLibrary/shading/ShadowmapFiltering.glsl.js +2 -2
  319. package/views/3d/webgl-engine/core/shaderLibrary/shading/calculateUVZShadow.glsl.js +2 -2
  320. package/views/3d/webgl-engine/core/shaderLibrary/shading/calculateUVZShadowFromDepth.glsl.js +1 -1
  321. package/views/3d/webgl-engine/effects/RenderPluginManager.js +1 -1
  322. package/views/3d/webgl-engine/effects/clouds/CloudsRenderer.js +1 -1
  323. package/views/3d/webgl-engine/effects/clouds/NoiseTextureAtlas.js +1 -1
  324. package/views/3d/webgl-engine/effects/debug/RenderNodeVisualizerNode.js +1 -1
  325. package/views/3d/webgl-engine/effects/highlight/Highlight.js +1 -1
  326. package/views/3d/webgl-engine/effects/transparency/OITBlend.js +1 -1
  327. package/views/3d/webgl-engine/effects/transparency/OITDim.glsl.js +1 -1
  328. package/views/3d/webgl-engine/effects/transparency/OITDimTechniqueConfiguration.js +2 -0
  329. package/views/3d/webgl-engine/lib/DrapedHeatmapRenderer.js +1 -1
  330. package/views/3d/webgl-engine/lib/GaussianSplatRenderNode.js +1 -1
  331. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  332. package/views/3d/webgl-engine/materials/PolygonOffset.js +1 -1
  333. package/views/3d/webgl-engine/shaders/GaussianSplat.glsl.js +1 -1
  334. package/views/3d/webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js +1 -1
  335. package/views/3d/webgl-engine/shaders/ShadowCastAccumulate.glsl.js +1 -1
  336. package/views/draw/DrawTool.js +1 -1
  337. package/views/draw/support/InteractiveHandle.js +1 -1
  338. package/views/draw/support/Reshape.js +1 -1
  339. package/views/draw/support/drawUtils.js +1 -1
  340. package/views/draw/support/reshapeTooltipUtils.js +1 -1
  341. package/views/draw/support/types.d.ts +9 -1
  342. package/views/layers/FeatureLikeLayerView.js +1 -1
  343. package/views/support/imageReprojection.js +1 -1
  344. package/views/webgl/FramebufferObject.js +1 -1
  345. package/views/webgl/RenderingContext.js +1 -1
  346. package/views/webgl/Texture.js +1 -1
  347. package/views/webgl/testFloatBufferBlend.js +1 -1
  348. package/views/webgl/testSVGPremultipliedAlpha.js +1 -1
  349. package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.js +1 -1
  350. package/widgets/BatchAttributeForm/expressions/ExpressionsManager.js +1 -1
  351. package/widgets/BatchAttributeForm/inputs/FieldInput.js +1 -1
  352. package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
  353. package/widgets/Editor/UpdateFeatureWorkflow.js +1 -1
  354. package/widgets/Editor/UpdateFeaturesWorkflow.js +1 -1
  355. package/widgets/Editor/UpdateWorkflow.js +1 -1
  356. package/widgets/Editor/Workflow.js +1 -1
  357. package/widgets/Feature/FeatureViewModel.d.ts +14 -4
  358. package/widgets/Feature/FeatureViewModel.js +1 -1
  359. package/widgets/FeatureForm/FieldInput.js +1 -1
  360. package/widgets/Features/FeaturesViewModel.d.ts +16 -5
  361. package/widgets/Features/FeaturesViewModel.js +1 -1
  362. package/widgets/Features.js +1 -1
  363. package/widgets/Popup/PopupViewModel.d.ts +2 -1
  364. package/widgets/Popup/PopupViewModel.js +1 -1
  365. package/widgets/Popup.d.ts +13 -4
  366. package/widgets/Popup.js +1 -1
  367. package/widgets/UtilityNetworkTrace/UtilityNetworkTraceFeature.js +1 -1
  368. package/assets/esri/core/workers/chunks/02aaeaa988e9e7d65a7f.js +0 -1
  369. package/assets/esri/core/workers/chunks/05c8d2c0362af4511d86.js +0 -1
  370. package/assets/esri/core/workers/chunks/06868e4f52de9d918255.js +0 -1
  371. package/assets/esri/core/workers/chunks/06c0b93e276cfc1fb7ac.js +0 -1
  372. package/assets/esri/core/workers/chunks/0888baa99c9007ad63bc.js +0 -1
  373. package/assets/esri/core/workers/chunks/0de66f13e84830a654fb.js +0 -1
  374. package/assets/esri/core/workers/chunks/0f597c690e5c60fe944b.js +0 -1
  375. package/assets/esri/core/workers/chunks/0f8736242544f9e9a57a.js +0 -1
  376. package/assets/esri/core/workers/chunks/0ff12fe9e358100668d9.js +0 -1
  377. package/assets/esri/core/workers/chunks/11a8541f3909f9ffb000.js +0 -1
  378. package/assets/esri/core/workers/chunks/13a009229c96ecb7b04f.js +0 -1
  379. package/assets/esri/core/workers/chunks/185f59f90070d5d6ac94.js +0 -1
  380. package/assets/esri/core/workers/chunks/190bc75254bc0542a6be.js +0 -1
  381. package/assets/esri/core/workers/chunks/1af247c86d1c4ae8fef3.js +0 -1
  382. package/assets/esri/core/workers/chunks/2339465190c9d5ede25f.js +0 -1
  383. package/assets/esri/core/workers/chunks/23eb204d3cb818adea32.js +0 -1
  384. package/assets/esri/core/workers/chunks/241ef4a1bea20b49d812.js +0 -1
  385. package/assets/esri/core/workers/chunks/2669a7195f1de21a9cf3.js +0 -1
  386. package/assets/esri/core/workers/chunks/2a2d5f9ea42cb2eee9c6.js +0 -1
  387. package/assets/esri/core/workers/chunks/2a7e7a497823e9f05aa3.js +0 -1
  388. package/assets/esri/core/workers/chunks/31e0bfc2cab055aebf9a.js +0 -1
  389. package/assets/esri/core/workers/chunks/32360a55d1836b2a737e.js +0 -1
  390. package/assets/esri/core/workers/chunks/330da3828eefd8d72d3f.js +0 -1
  391. package/assets/esri/core/workers/chunks/34acecd7a314fed12335.js +0 -1
  392. package/assets/esri/core/workers/chunks/34fe4570eef9e73839b8.js +0 -1
  393. package/assets/esri/core/workers/chunks/368b4c0a5eecbb06feac.js +0 -1
  394. package/assets/esri/core/workers/chunks/37729578a7c4cf15eded.js +0 -1
  395. package/assets/esri/core/workers/chunks/3af1e2f0b3d30c58d0c2.js +0 -1
  396. package/assets/esri/core/workers/chunks/3c155efd5768003a91eb.js +0 -1
  397. package/assets/esri/core/workers/chunks/3d4bb59ab2f644f4d675.js +0 -1
  398. package/assets/esri/core/workers/chunks/3f0d9fdd8c37605dd85d.js +0 -1
  399. package/assets/esri/core/workers/chunks/48eca6f51112ba80bd3b.js +0 -1
  400. package/assets/esri/core/workers/chunks/4b5737021a149aa786af.js +0 -1
  401. package/assets/esri/core/workers/chunks/55214e1d9f3d98fa7ed9.js +0 -1
  402. package/assets/esri/core/workers/chunks/55a0b69cf034ac32fc25.js +0 -1
  403. package/assets/esri/core/workers/chunks/576a1784e93c5406e657.js +0 -1
  404. package/assets/esri/core/workers/chunks/59289867cce97da74e39.js +0 -1
  405. package/assets/esri/core/workers/chunks/5a6d6082c5bcb1a80eda.js +0 -1
  406. package/assets/esri/core/workers/chunks/5a9620cb66c8e64e4668.js +0 -1
  407. package/assets/esri/core/workers/chunks/5eeb6d3a7b815d41621e.js +0 -1
  408. package/assets/esri/core/workers/chunks/5f06a57b4f7d7de16bbf.js +0 -1
  409. package/assets/esri/core/workers/chunks/5f2e246ffcbdedea4de5.js +0 -1
  410. package/assets/esri/core/workers/chunks/5ff41f43e57be0557541.js +0 -1414
  411. package/assets/esri/core/workers/chunks/6b32b3f98872771ff81e.js +0 -1
  412. package/assets/esri/core/workers/chunks/6be9d00839002f24fafd.js +0 -1
  413. package/assets/esri/core/workers/chunks/6c886f19875291d02407.js +0 -1
  414. package/assets/esri/core/workers/chunks/77f6659e400064d38130.js +0 -1
  415. package/assets/esri/core/workers/chunks/78c7eace6ec3fa5c7413.js +0 -1
  416. package/assets/esri/core/workers/chunks/7cee28575fd57430cf02.js +0 -1
  417. package/assets/esri/core/workers/chunks/82e0691995d821137d5f.js +0 -1
  418. package/assets/esri/core/workers/chunks/8435b6bf356959009b76.js +0 -1
  419. package/assets/esri/core/workers/chunks/8677865189081e0b83bc.js +0 -1
  420. package/assets/esri/core/workers/chunks/86f1aa2c108f5224d8b5.js +0 -1
  421. package/assets/esri/core/workers/chunks/86f70bd786d6d57fde69.js +0 -1
  422. package/assets/esri/core/workers/chunks/8878ab87ef7961fafae8.js +0 -1
  423. package/assets/esri/core/workers/chunks/8a893f23827769d42092.js +0 -1
  424. package/assets/esri/core/workers/chunks/8d1d0c3f0532aa98487d.js +0 -1
  425. package/assets/esri/core/workers/chunks/8e68b4628e9616356c34.js +0 -1
  426. package/assets/esri/core/workers/chunks/8edae79554843dd77ada.js +0 -1
  427. package/assets/esri/core/workers/chunks/9032c040b214b5af775b.js +0 -1
  428. package/assets/esri/core/workers/chunks/909ef35fa33be2b6da41.js +0 -1
  429. package/assets/esri/core/workers/chunks/90b7acc70adba193b215.js +0 -1
  430. package/assets/esri/core/workers/chunks/91718795fc4ca6516ac7.js +0 -1
  431. package/assets/esri/core/workers/chunks/92d4e962284e13ba2fc5.js +0 -1
  432. package/assets/esri/core/workers/chunks/94f80c46ccf5e19038b8.js +0 -1
  433. package/assets/esri/core/workers/chunks/979c2f52b6d6e1e8241b.js +0 -1
  434. package/assets/esri/core/workers/chunks/97f10efb0fe05bedcebd.js +0 -1
  435. package/assets/esri/core/workers/chunks/98f5bf1b91f3696b2fce.js +0 -1
  436. package/assets/esri/core/workers/chunks/9c52d4b54dfdb69dee29.js +0 -1
  437. package/assets/esri/core/workers/chunks/9de8149ae0a0726a4ab2.js +0 -1
  438. package/assets/esri/core/workers/chunks/9def5d17b94e5db71883.js +0 -1
  439. package/assets/esri/core/workers/chunks/9f272445c285ee9abb7b.js +0 -1
  440. package/assets/esri/core/workers/chunks/a10be7eb05a007fff1ed.js +0 -1
  441. package/assets/esri/core/workers/chunks/a32c87b89567a9fd1efc.js +0 -1
  442. package/assets/esri/core/workers/chunks/a3b29eca5807978fb2a3.js +0 -1
  443. package/assets/esri/core/workers/chunks/a446dff865332268625a.js +0 -1
  444. package/assets/esri/core/workers/chunks/a5bf2718c02a0e645013.js +0 -1
  445. package/assets/esri/core/workers/chunks/a6d166058e3025bb280e.js +0 -1
  446. package/assets/esri/core/workers/chunks/a8e111a5cfd6151d5dbb.js +0 -1
  447. package/assets/esri/core/workers/chunks/aed45f7e7eee154a21b8.js +0 -1
  448. package/assets/esri/core/workers/chunks/af3bd661b355eed3da21.js +0 -1
  449. package/assets/esri/core/workers/chunks/b0f2ce61d3cad413898e.js +0 -1
  450. package/assets/esri/core/workers/chunks/b2b77598048818c957b7.js +0 -1
  451. package/assets/esri/core/workers/chunks/b744b950999b92393e37.js +0 -1
  452. package/assets/esri/core/workers/chunks/b75165880704efccc47c.js +0 -1
  453. package/assets/esri/core/workers/chunks/ba9e107edc2027238be3.js +0 -1
  454. package/assets/esri/core/workers/chunks/bc3b22dc08c147b8d425.js +0 -1
  455. package/assets/esri/core/workers/chunks/c08e9914deb1dc62bc0f.js +0 -1
  456. package/assets/esri/core/workers/chunks/c0bb53d8d58ad18334d3.js +0 -1
  457. package/assets/esri/core/workers/chunks/c0d453f93af2d4a6ce64.js +0 -1
  458. package/assets/esri/core/workers/chunks/c9a42d86185a0ad35dd1.js +0 -1
  459. package/assets/esri/core/workers/chunks/cbb50415f7de8746ee1a.js +0 -1
  460. package/assets/esri/core/workers/chunks/d23dd7da45a7aa341540.js +0 -1
  461. package/assets/esri/core/workers/chunks/d2801df3fa44dee15ec8.js +0 -1
  462. package/assets/esri/core/workers/chunks/d53b31c9056f82831bc0.js +0 -1
  463. package/assets/esri/core/workers/chunks/d626e08d23330d84413b.js +0 -1
  464. package/assets/esri/core/workers/chunks/d9d69cf2496ebe76eade.js +0 -1
  465. package/assets/esri/core/workers/chunks/db6e03fe8dd316f5005f.js +0 -1
  466. package/assets/esri/core/workers/chunks/de79645e559a2d1ffa67.js +0 -1
  467. package/assets/esri/core/workers/chunks/e2779965db231fb666a5.js +0 -1
  468. package/assets/esri/core/workers/chunks/e4e2f059c52674dcae5b.js +0 -1
  469. package/assets/esri/core/workers/chunks/e622a23034f055de8b55.js +0 -1
  470. package/assets/esri/core/workers/chunks/ec21311584e4fb13e510.js +0 -1
  471. package/assets/esri/core/workers/chunks/ec9d5dcf2a0a11c85341.js +0 -1
  472. package/assets/esri/core/workers/chunks/eca45cd479f7fd28ca6e.js +0 -1
  473. package/assets/esri/core/workers/chunks/efdd75896ca53eb6242f.js +0 -1
  474. package/assets/esri/core/workers/chunks/f1c348cf2a1e35da9b20.js +0 -1
  475. package/assets/esri/core/workers/chunks/f4053e4e2d6e678db48a.js +0 -1
  476. package/assets/esri/core/workers/chunks/f4d577ff61da7964e08a.js +0 -1
  477. package/assets/esri/core/workers/chunks/f7da652f8dab57677cc3.js +0 -1
  478. package/assets/esri/core/workers/chunks/fe92f54e45fd21ccd75f.js +0 -1
  479. package/assets/esri/core/workers/chunks/fee1d873127dca02459f.js +0 -1
  480. package/assets/esri/core/workers/chunks/ff31936236dd9b1acb24.js +0 -1
  481. /package/assets/esri/core/workers/chunks/{32e9e92bbbd000fbbaf7.js.LICENSE.txt → 4141a3a93732996601e8.js.LICENSE.txt} +0 -0
package/popup/Features.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../Graphic.js";import{isSome as i}from"../core/arrayUtils.js";import s from"../core/Error.js";import{EventedAccessor as r}from"../core/Evented.js";import o from"../core/Logger.js";import{abortMaybe as n}from"../core/maybe.js";import{debounce as a,isAbortError as l}from"../core/promiseUtils.js";import u from"../core/ReactiveSet.js";import{watch as h,when as c,sync as p}from"../core/reactiveUtils.js";import{addMany as d}from"../core/SetUtils.js";import{property as g,subclass as m}from"../core/accessorSupport/decorators.js";import f from"../geometry/Point.js";import{initializeProjection as y,project as _}from"../geometry/projectionUtils.js";import F from"../geometry/SpatialReference.js";import{geographicToWebMercator as w}from"../geometry/support/webMercatorUtils.js";import{getGraphicLayer as v}from"../graphic/graphicOriginUtils.js";import{fallbackObjectIDAttribute as C}from"../layers/LayerConstants.js";import b from"./Feature.js";import I from"./support/FeatureAbilities.js";import P from"../symbols/SimpleFillSymbol.js";import{getDisplayedSymbol as A}from"../symbols/support/symbolUtils.js";import{system as L}from"../time/constants.js";import{highlightsSupported as j}from"../views/support/layerViewUtils.js";import{ActionsCollection as E,zoomToClusteredFeatures as x,browseClusteredFeatures as R,zoomToFeature as O}from"../widgets/Popup/actions.js";import{isClusterFeature as U,removeClusteredFeaturesForBrowsing as S,displayClusterExtent as T,browseAggregateFeatures as B,getSelectedTarget as H}from"../widgets/Popup/actionUtils.js";import{GoTo as G}from"../widgets/support/GoTo.js";const M="location-scale-handle",V=()=>[O.clone()],Z=()=>[x.clone(),R.clone()];let D=null;function z(e,t){switch(e){case"building-scene":case"map-image":case"tile":case"imagery":return!0;case"imagery-tile":return"2d"===t;default:return!1}}let N=class extends(G(r)){constructor(e){super(e),this._pendingPromises=new u,this._fetchFeaturesController=null,this._centerAtLocationController=null,this._locationUpdateController=null,this._highlightPromises={"highlight-active-feature":null,"highlight-selected-feature":null},this._selectedClusterFeature=null,this.actions=new E,this.activeFeature=null,this.browseClusterEnabled=!1,this.defaultPopupTemplateEnabled=!1,this.featurePage=null,this.featuresPerPage=20,this.featureMenuOpen=!1,this.featureItemAbilities=null,this.featureItems=[],this.highlightEnabled=!0,this.includeDefaultActions=!0,this.initialDisplayMode="feature",this.selectedClusterBoundaryFeature=new t({symbol:new P({outline:{width:1.5,color:"cyan"},style:"none"})}),this.heading=null,this.updateLocationEnabled=!1,this.view=null,this.open=!1,this.zoomFactor=4,this._debouncedLocationUpdate=a(async e=>{this._cancelLocationUpdate();const t=new AbortController,{signal:i}=t;this._locationUpdateController=t,await this._locationUpdate(e,{signal:i}).catch(()=>{}).finally(()=>{this._locationUpdateController===t&&(this._locationUpdateController=null)})})}initialize(){this.addHandles([h(()=>[this.highlightEnabled,this.selectedFeature,this.open,this.view],()=>this._highlightSelectedFeature()),h(()=>[this.highlightEnabled,this.activeFeature,this.open,this.view],()=>this._highlightActiveFeature()),h(()=>this.location,e=>this._locationChange(e)),h(()=>this.selectedFeature,e=>this._selectedFeatureChange(e)),h(()=>[this.selectedFeatureIndex,this.featureCount,this.featuresPerPage],()=>this._selectedFeatureIndexChange()),h(()=>[this.featurePage,this.selectedFeatureIndex,this.featureCount,this.featuresPerPage,this.featureItems],()=>this._setGraphicOnFeatureItems()),h(()=>this.featureItems,()=>this._featureItemsChange()),h(()=>[this.featureItemAbilities?.attachmentsContent,this.featureItemAbilities?.chartAnimation,this.featureItemAbilities?.customContent,this.featureItemAbilities?.expressionContent,this.featureItemAbilities?.fieldsContent,this.featureItemAbilities?.mediaContent,this.featureItemAbilities?.relationshipContent,this.featureItemAbilities?.textContent,this.featureItemAbilities?.utilityNetworkAssociationsContent,this.features,this.map,this.spatialReference,this.timeZone],()=>this._updateFeatureItems()),c(()=>!this.waitingForResult,()=>this._waitingForResultChange(),p),h(()=>this.view?.scale,()=>this._viewScaleChange()),c(()=>!this.open,()=>this.browseClusterEnabled=!1),h(()=>this.browseClusterEnabled,e=>e?this.enableClusterBrowsing():this.disableClusterBrowsing())])}destroy(){this._cancelLocationUpdate(),this._cancelFetchingFeatures(),this._cancelCenterAtLocation(),this._clearBrowsedClusterGraphics(),this._pendingPromises.clear(),this.browseClusterEnabled=!1,this.view=null,this.map=null,this.spatialReference=null,this.timeZone=null}get active(){return this.open&&!this.waitingForResult}get allActions(){const e=this._get("allActions")||new E;e.removeAll();const{actions:t,defaultActions:s,defaultPopupTemplateEnabled:r,includeDefaultActions:o,selectedFeature:n}=this,a=o?s.concat(t):t,l=n&&("function"==typeof n.getEffectivePopupTemplate&&n.getEffectivePopupTemplate(r)||n.popupTemplate),u=l?.actions,h=l?.overwriteActions?u:u?.concat(a)??a;return h?.filter(i).forEach(t=>e.add(t)),e}set content(e){this.promises=[],this._set("content",e)}get defaultActions(){const e=this._get("defaultActions")||new E;return e.removeAll(),e.addMany(U(this.selectedFeature)?Z():V()),e}get featureCount(){return this.features.length}set features(e){if(this._get("features")===e)return;const t=e||[];this._set("features",t);const{pendingPromisesCount:i,promiseCount:s,selectedFeatureIndex:r}=this,o=s&&t.length;"list"!==this.initialDisplayMode?o&&i&&-1===r?this.selectedFeatureIndex=0:o&&-1!==r||(this.selectedFeatureIndex=t.length?0:-1):(!o||o&&i===s)&&(this.selectedFeatureIndex=-1)}set location(e){let t=e;const i=this.spatialReference?.isWebMercator,s=e?.spatialReference?.isWGS84;s&&i&&(t=w(e)),this._set("location",t)}get map(){return this.view?.map??null}set map(e){this._override("map",e)}get pendingPromisesCount(){return this._pendingPromises.size}get promiseCount(){return this.promises.length}get promises(){return this._get("promises")||[]}set promises(e){this._get("promises")!==e&&(this._pendingPromises.clear(),this.features=[],Array.isArray(e)&&e.length?(this._set("promises",e),e=e.slice(),d(this._pendingPromises,e),e.reduce((e,t)=>e.finally(()=>t.then(e=>{this._pendingPromises.has(t)&&this._updateFeatures(e)}).finally(()=>this._pendingPromises.delete(t)).catch(()=>{})),Promise.resolve())):this._set("promises",[]))}get selectedFeature(){const{features:e,selectedFeatureIndex:t}=this;if(-1===t)return null;return e[t]||null}get selectedFeatureIndex(){const e=this._get("selectedFeatureIndex");return"number"==typeof e?e:-1}set selectedFeatureIndex(e){const{featureCount:t}=this;(isNaN(e)||e<0||!t)&&(e=-1),this.activeFeature=null,this._set("selectedFeatureIndex",e)}get selectedFeatureItem(){return this.featureItems[this.selectedFeatureIndex]||null}get spatialReference(){return this.view?.spatialReference??null}set spatialReference(e){this._override("spatialReference",e)}get state(){const{view:e,map:t}=this;return e?e.ready?"ready":"disabled":t?"ready":"disabled"}get timeZone(){return this.view?.timeZone??L}set timeZone(e){this._overrideIfSome("timeZone",e)}get waitingForContents(){return this.featureItems.some(e=>e.waitingForContent)}get waitingForResult(){return(!!this._fetchFeaturesController||this.pendingPromisesCount>0)&&0===this.featureCount}zoomTo(e){return this.callGoTo(e)}clear(){this.set({promises:[],features:[],content:null,heading:null,location:null,activeFeature:null})}fetchFeatures(e,t){const{view:i}=this;if(!i||!e)throw new s("fetch-features:invalid-screenpoint-or-view","Cannot fetch features without a screenPoint and view.",{screenPoint:e,view:i});return i.fetchPopupFeatures(e,{pointerType:t?.event?.pointerType,defaultPopupTemplateEnabled:this.defaultPopupTemplateEnabled,signal:t?.signal})}next(){return this.selectedFeatureIndex=this._getRoundRobinIndex(this.selectedFeatureIndex+1,this.featureCount),this}previous(){return this.selectedFeatureIndex=this._getRoundRobinIndex(this.selectedFeatureIndex-1,this.featureCount),this}disableClusterBrowsing(){S(this),this._clearBrowsedClusterGraphics()}async enableClusterBrowsing(){const{view:e,selectedFeature:t}=this;"2d"===e?.type?U(t)?(await T(this),await B(this)):o.getLogger(this).warn("enableClusterBrowsing:invalid-selectedFeature: Selected feature must represent an aggregate/cluster graphic.",t):o.getLogger(this).warn("enableClusterBrowsing:invalid-view: View must be 2d MapView.",t)}async handleViewClick(e){return this._fetchFeaturesAndOpen(e)}_centerAtLocation(){const{view:e}=this,t=H(this);this._cancelCenterAtLocation();const i=new AbortController,{signal:r}=i;return this._centerAtLocationController=i,t&&e?this.callGoTo({target:{target:t,scale:e.scale},options:{signal:r}}).catch(e=>{l(e)||o.getLogger(this).error(e)}):Promise.reject(new s("center-at-location:invalid-target-or-view","Cannot center at a location without a target and view.",{target:t,view:e}))}_getRoundRobinIndex(e,t){return(e+t)%t}_clearBrowsedClusterGraphics(){const e=[this.selectedClusterBoundaryFeature,this._selectedClusterFeature].filter(i);this.view?.graphics?.removeMany(e),this._selectedClusterFeature=null,this.selectedClusterBoundaryFeature.geometry=null}_viewScaleChange(){if(U(this.selectedFeature))return this.browseClusterEnabled=!1,this.open=!1,void this.clear();this.browseClusterEnabled&&(this.features=this.selectedFeature?[this.selectedFeature]:[])}_locationChange(e){const{selectedFeature:t,updateLocationEnabled:i,view:s}=this;s&&!this._locationUpdateController&&i&&e&&(!t||t.geometry)&&this._centerAtLocation()}_selectedFeatureIndexChange(){this.featurePage=this.featureCount>0?Math.floor(this.selectedFeatureIndex/this.featuresPerPage)+1:null}_featureItemsChange(){this.featurePage=this.featureCount>0?1:null}_setGraphicOnFeatureItems(){const{features:e,featureCount:t,featurePage:i,featuresPerPage:s,featureItems:r}=this;if(null==i)return;const o=((i-1)*s+t)%t,n=o+s;r.slice(o,n).forEach((t,i)=>{t&&(t.graphic??=e[o+i])})}async _selectedFeatureChange(e){const{location:t,updateLocationEnabled:i,view:s}=this;if(!e||!s)return;if(this.browseClusterEnabled){if(this._selectedClusterFeature&&(s.graphics.remove(this._selectedClusterFeature),this._selectedClusterFeature=null),U(e))return;return e.symbol=await A(e),this._selectedClusterFeature=e,void s.graphics.add(this._selectedClusterFeature)}const r=v(e)?.type;if("map-image"!==r&&"imagery"!==r&&"imagery-tile"!==r||(e.symbol=await A(e)),(i||!t)&&e.geometry){if("point"===e.geometry.type)return void(this.location=e.geometry);const t=await import("../geometry/operators/labelPointOperator.js");return void(this.location=t.execute(e.geometry))}if(i&&!e.geometry){await this._centerAtLocation();const e=s.center?.clone();e&&(this.location=e)}}_waitingForResultChange(){!this.featureCount&&this.promises&&(this.open=!1)}_destroyFeatureItems(){this.featureItems.forEach(e=>e&&!e.destroyed&&e.destroy()),this._set("featureItems",[])}_updateFeatureItems(){const e=this.selectedFeature,t=this.features,i=this.featureItems,s=this.view,r=this.spatialReference,o=this.map,n=this.timeZone,a=this.location,l=this.featureItemAbilities??new I;if(U(t[0])||(this.browseClusterEnabled=!1),!t?.length)return void this._destroyFeatureItems();const u=i.slice(),h=[];t.forEach((t,i)=>{if(!t)return;const c=u.findIndex(e=>e?.graphic===t);if(-1!==c){const e=u[c];u.splice(c,1),e.abilities=l,h[i]=e}else{const u=new b({abilities:l,defaultPopupTemplateEnabled:this.defaultPopupTemplateEnabled,spatialReference:r,graphic:t===e?t:null,location:a,map:o,view:s,timeZone:n});h[i]=u}}),u.forEach(e=>e&&!e.destroyed&&e.destroy()),this._set("featureItems",h)}async _getScreenPoint(e,t){const{spatialReference:i,view:s}=this;if(!s)return null;await s.when();const r=e?.spatialReference;return r&&i?(await y(r,i,null,t),s.toScreen(e)):null}_cancelCenterAtLocation(){this._centerAtLocationController=n(this._centerAtLocationController)}_cancelFetchingFeatures(){this._fetchFeaturesController=n(this._fetchFeaturesController)}async _projectScreenPointAndFetchFeatures({mapPoint:e,screenPoint:t,event:i,signal:s}){return this.fetchFeatures(t??await this._getScreenPoint(e??this.location,{signal:s}),{signal:s,event:i})}_fetchFeaturesWithController({mapPoint:e,screenPoint:t,event:i}){this._cancelFetchingFeatures();const s=new AbortController,{signal:r}=s;this._fetchFeaturesController=s;const o=this._projectScreenPointAndFetchFeatures({mapPoint:e,screenPoint:t,signal:r,event:i});return o.catch(()=>{}).finally(()=>{this._fetchFeaturesController===s&&(this._fetchFeaturesController=null)}),o}async _fetchFeaturesAndOpen(e){const{mapPoint:t,screenPoint:i}=e;this.removeHandles(M),this.addHandles([h(()=>this.view?.scale,()=>this._debouncedLocationUpdate(t).catch(e=>{l(e)||o.getLogger(this).error(e)})),c(()=>!this.open,()=>{this.removeHandles(M)},{once:!0})],M);const{pendingFeatures:s}=await this._fetchFeaturesWithController({mapPoint:t,screenPoint:i,event:e});return{location:t??void 0,promises:s}}async _locationUpdate(e,t){const{spatialReference:i}=this,s=this.selectedFeature?.geometry?.type,r=this.location??e;if(s&&"mesh"!==s&&i&&r&&this.selectedFeature){if("point"===s){const e=await import("../geometry/operators/labelPointOperator.js");return void(this.location=e.execute(this.selectedFeature.geometry))}try{const e=this.selectedFeature;let s=e.geometry;const o=this._getHighlightLayer(e),n=e.getObjectId();if(!o||!this.view)return;if(n){const e=this.view?.allLayerViews.find(e=>e.layer.uid===o.uid);if(!e||!("queryFeatures"in e))return;const r=e.createQuery();r.outSpatialReference=i,r.objectIds=[n],r.returnGeometry=!0;const{features:a}=await e.queryFeatures(r,t);s=a[0]?.geometry}if(!s||"mesh"===s.type)return;s=_(s,i),D??=await Promise.all([import("../geometry/operators/intersectsOperator.js"),import("../geometry/operators/proximityOperator.js")]);const[a,l]=D;if(!a.execute(s,r)){const t=l.getNearestCoordinate(s,r).coordinate??r;this.selectedFeature===e&&(this.location=t)}}catch(n){l(n)||o.getLogger(this).error(n)}}}_cancelLocationUpdate(){this._locationUpdateController=n(this._locationUpdateController)}async _getLayerView(e,t){return await e.when(),e.whenLayerView(t)}_getHighlightLayer(e){const t=v(e),{layer:i}=e;return t&&"layer"in t&&t.layer?t.layer:"map-notes"===t?.type||"subtype-group"===t?.type?t:i??t}_getHighlightLayerView(e,t){return"subtype-sublayer"===t.type&&t.parent&&this._mapIncludesLayer(t.parent)?this._getLayerView(e,t.parent):t&&this._mapIncludesLayer(t)?this._getLayerView(e,t):null}_getHighlightTarget(e,t,i){if(z(t.type,i))return e;const s=e.getObjectId();if(null!=s)return s;const r="imagery"===t.type?void 0:"objectIdField"in t?t.objectIdField||C:null,o=e.attributes;return o&&r&&o[r]||e}_mapIncludesLayer(e){return!!this.map?.allLayers?.includes(e)}async _highlightFeature(e,t){this.removeHandles(e);const i=this[t];if(!i)return;const{highlightEnabled:s,view:r,open:o}=this;if(!r||!s||!o)return;const n=this._getHighlightLayer(i);if(!n)return;const a=this._getHighlightLayerView(r,n);if(!a)return;this._highlightPromises[e]=a;const l=await a;if(!(l&&j(l)&&this._highlightPromises[e]===a&&this[t]&&this.highlightEnabled))return;const u=l.highlight(this._getHighlightTarget(i,n,r.type));this.addHandles(u,e)}async _highlightActiveFeature(){return this._highlightFeature("highlight-active-feature","activeFeature")}async _highlightSelectedFeature(){return this._highlightFeature("highlight-selected-feature","selectedFeature")}_updateFeatures(e){const{features:t}=this,i=e.filter(e=>!t.includes(e));i?.length&&(this.features=t.concat(i))}};e([g()],N.prototype,"_fetchFeaturesController",void 0),e([g({type:E})],N.prototype,"actions",void 0),e([g({readOnly:!0})],N.prototype,"active",null),e([g()],N.prototype,"activeFeature",void 0),e([g({readOnly:!0})],N.prototype,"allActions",null),e([g()],N.prototype,"browseClusterEnabled",void 0),e([g({value:null})],N.prototype,"content",null),e([g({type:E,readOnly:!0})],N.prototype,"defaultActions",null),e([g({type:Boolean})],N.prototype,"defaultPopupTemplateEnabled",void 0),e([g({readOnly:!0})],N.prototype,"featureCount",null),e([g()],N.prototype,"featurePage",void 0),e([g({value:[]})],N.prototype,"features",null),e([g()],N.prototype,"featuresPerPage",void 0),e([g()],N.prototype,"featureMenuOpen",void 0),e([g({type:I})],N.prototype,"featureItemAbilities",void 0),e([g({readOnly:!0})],N.prototype,"featureItems",void 0),e([g()],N.prototype,"highlightEnabled",void 0),e([g()],N.prototype,"includeDefaultActions",void 0),e([g()],N.prototype,"initialDisplayMode",void 0),e([g({type:f})],N.prototype,"location",null),e([g()],N.prototype,"map",null),e([g({readOnly:!0})],N.prototype,"pendingPromisesCount",null),e([g({readOnly:!0})],N.prototype,"promiseCount",null),e([g()],N.prototype,"promises",null),e([g({readOnly:!0})],N.prototype,"selectedClusterBoundaryFeature",void 0),e([g({value:null,readOnly:!0})],N.prototype,"selectedFeature",null),e([g({value:-1})],N.prototype,"selectedFeatureIndex",null),e([g({readOnly:!0})],N.prototype,"selectedFeatureItem",null),e([g({type:F})],N.prototype,"spatialReference",null),e([g({readOnly:!0})],N.prototype,"state",null),e([g()],N.prototype,"timeZone",null),e([g()],N.prototype,"heading",void 0),e([g()],N.prototype,"updateLocationEnabled",void 0),e([g()],N.prototype,"view",void 0),e([g()],N.prototype,"open",void 0),e([g({readOnly:!0})],N.prototype,"waitingForContents",null),e([g({readOnly:!0})],N.prototype,"waitingForResult",null),e([g()],N.prototype,"zoomFactor",void 0),N=e([m("esri.popup.Features")],N);const W=N;export{W as default};
2
+ import{__decorate as e}from"tslib";import t from"../Graphic.js";import{isSome as i}from"../core/arrayUtils.js";import s from"../core/Error.js";import{EventedAccessor as r}from"../core/Evented.js";import o from"../core/Logger.js";import{abortMaybe as n}from"../core/maybe.js";import{debounce as a,isAbortError as l}from"../core/promiseUtils.js";import u from"../core/ReactiveSet.js";import{watch as h,when as c,sync as p}from"../core/reactiveUtils.js";import{addMany as d}from"../core/SetUtils.js";import{property as g,subclass as m}from"../core/accessorSupport/decorators.js";import f from"../geometry/Point.js";import{initializeProjection as y,project as _}from"../geometry/projectionUtils.js";import F from"../geometry/SpatialReference.js";import{geographicToWebMercator as w}from"../geometry/support/webMercatorUtils.js";import{getGraphicLayer as v}from"../graphic/graphicOriginUtils.js";import{fallbackObjectIDAttribute as C}from"../layers/LayerConstants.js";import b from"./Feature.js";import I from"./support/FeatureAbilities.js";import P from"../symbols/SimpleFillSymbol.js";import{getDisplayedSymbol as A}from"../symbols/support/symbolUtils.js";import{system as L}from"../time/constants.js";import{highlightsSupported as j}from"../views/support/layerViewUtils.js";import{ActionsCollection as x,zoomToClusteredFeatures as E,browseClusteredFeatures as R,zoomToFeature as O}from"../widgets/Popup/actions.js";import{isClusterFeature as U,removeClusteredFeaturesForBrowsing as S,displayClusterExtent as T,browseAggregateFeatures as B,getSelectedTarget as M}from"../widgets/Popup/actionUtils.js";import{GoTo as H}from"../widgets/support/GoTo.js";const G="location-scale-handle",V=()=>[O.clone()],D=()=>[E.clone(),R.clone()];let Z=null;function z(e,t){switch(e){case"building-scene":case"map-image":case"tile":case"imagery":return!0;case"imagery-tile":return"2d"===t;default:return!1}}let N=class extends(H(r)){constructor(e){super(e),this._pendingPromises=new u,this._fetchFeaturesController=null,this._centerAtLocationController=null,this._locationUpdateController=null,this._highlightPromises={"highlight-active-feature":null,"highlight-selected-feature":null},this._selectedClusterFeature=null,this.actions=new x,this.activeFeature=null,this.browseClusterEnabled=!1,this.defaultPopupTemplateEnabled=!1,this.featurePage=null,this.featuresPerPage=20,this.featureMenuOpen=!1,this.featureItemAbilities=null,this.featureItems=[],this.heading=null,this.highlightEnabled=!0,this.includeDefaultActions=!0,this.open=!1,this.selectedClusterBoundaryFeature=new t({symbol:new P({outline:{width:1.5,color:"cyan"},style:"none"})}),this.updateLocationEnabled=!1,this.view=null,this.zoomFactor=4,this._debouncedLocationUpdate=a(async e=>{this._cancelLocationUpdate();const t=new AbortController,{signal:i}=t;this._locationUpdateController=t,await this._locationUpdate(e,{signal:i}).catch(()=>{}).finally(()=>{this._locationUpdateController===t&&(this._locationUpdateController=null)})})}initialize(){this.addHandles([h(()=>[this.highlightEnabled,this.selectedFeature,this.open,this.view],()=>this._highlightSelectedFeature()),h(()=>[this.highlightEnabled,this.activeFeature,this.open,this.view],()=>this._highlightActiveFeature()),h(()=>this.location,e=>this._locationChange(e)),h(()=>this.selectedFeature,e=>this._selectedFeatureChange(e)),h(()=>[this.selectedFeatureIndex,this.featureCount,this.featuresPerPage],()=>this._selectedFeatureIndexChange()),h(()=>[this.featurePage,this.selectedFeatureIndex,this.featureCount,this.featuresPerPage,this.featureItems],()=>this._setGraphicOnFeatureItems()),h(()=>this.featureItems,()=>this._featureItemsChange()),h(()=>[this.featureItemAbilities?.attachmentsContent,this.featureItemAbilities?.chartAnimation,this.featureItemAbilities?.customContent,this.featureItemAbilities?.expressionContent,this.featureItemAbilities?.fieldsContent,this.featureItemAbilities?.mediaContent,this.featureItemAbilities?.relationshipContent,this.featureItemAbilities?.textContent,this.featureItemAbilities?.utilityNetworkAssociationsContent,this.features,this.map,this.spatialReference,this.timeZone],()=>this._updateFeatureItems()),c(()=>!this.waitingForResult,()=>this._waitingForResultChange(),p),h(()=>this.view?.scale,()=>this._viewScaleChange()),c(()=>!this.open,()=>this.browseClusterEnabled=!1),h(()=>this.browseClusterEnabled,e=>e?this.enableClusterBrowsing():this.disableClusterBrowsing())])}destroy(){this._cancelLocationUpdate(),this._cancelFetchingFeatures(),this._cancelCenterAtLocation(),this._clearBrowsedClusterGraphics(),this._pendingPromises.clear(),this.browseClusterEnabled=!1,this.view=null,this.map=null,this.spatialReference=null,this.timeZone=null}get active(){return this.open&&!this.waitingForResult}get allActions(){const e=this._get("allActions")||new x;e.removeAll();const{actions:t,defaultActions:s,defaultPopupTemplateEnabled:r,includeDefaultActions:o,selectedFeature:n}=this,a=o?s.concat(t):t,l=n&&("function"==typeof n.getEffectivePopupTemplate&&n.getEffectivePopupTemplate(r)||n.popupTemplate),u=l?.actions,h=l?.overwriteActions?u:u?.concat(a)??a;return h?.filter(i).forEach(t=>e.add(t)),e}set content(e){this.promises=[],this._set("content",e)}get defaultActions(){const e=this._get("defaultActions")||new x;return e.removeAll(),e.addMany(U(this.selectedFeature)?D():V()),e}get featureCount(){return this.features.length}set features(e){if(this._get("features")===e)return;const t=e||[];this._set("features",t),this._syncSelectedFeatureIndex(t)}get initialDisplayMode(){return this._get("initialDisplayMode")||"feature"}set initialDisplayMode(e){this._set("initialDisplayMode",e),this._syncSelectedFeatureIndex(this.features)}set location(e){let t=e;const i=this.spatialReference?.isWebMercator,s=e?.spatialReference?.isWGS84;s&&i&&(t=w(e)),this._set("location",t)}get map(){return this.view?.map??null}set map(e){this._override("map",e)}get pendingPromisesCount(){return this._pendingPromises.size}get promiseCount(){return this.promises.length}get promises(){return this._get("promises")||[]}set promises(e){this._get("promises")!==e&&(this._pendingPromises.clear(),this.features=[],Array.isArray(e)&&e.length?(this._set("promises",e),e=e.slice(),d(this._pendingPromises,e),e.reduce((e,t)=>e.finally(()=>t.then(e=>{this._pendingPromises.has(t)&&this._updateFeatures(e)}).finally(()=>this._pendingPromises.delete(t)).catch(()=>{})),Promise.resolve())):this._set("promises",[]))}get selectedFeature(){const{features:e,selectedFeatureIndex:t}=this;if(-1===t)return null;return e[t]||null}get selectedFeatureIndex(){const e=this._get("selectedFeatureIndex");return"number"==typeof e?e:-1}set selectedFeatureIndex(e){const{featureCount:t}=this;(isNaN(e)||e<0||!t)&&(e=-1),this.activeFeature=null,this._set("selectedFeatureIndex",e)}get selectedFeatureItem(){return this.featureItems[this.selectedFeatureIndex]||null}get spatialReference(){return this.view?.spatialReference??null}set spatialReference(e){this._override("spatialReference",e)}get state(){const{view:e,map:t}=this;return e?e.ready?"ready":"disabled":t?"ready":"disabled"}get timeZone(){return this.view?.timeZone??L}set timeZone(e){this._overrideIfSome("timeZone",e)}get waitingForContents(){return this.featureItems.some(e=>e.waitingForContent)}get waitingForResult(){return(!!this._fetchFeaturesController||this.pendingPromisesCount>0)&&0===this.featureCount}zoomTo(e){return this.callGoTo(e)}clear(){this.set({promises:[],features:[],content:null,heading:null,location:null,activeFeature:null})}fetchFeatures(e,t){const{view:i}=this;if(!i||!e)throw new s("fetch-features:invalid-screenpoint-or-view","Cannot fetch features without a screenPoint and view.",{screenPoint:e,view:i});return i.fetchPopupFeatures(e,{pointerType:t?.event?.pointerType,defaultPopupTemplateEnabled:this.defaultPopupTemplateEnabled,signal:t?.signal})}next(){return this.selectedFeatureIndex=this._getRoundRobinIndex(this.selectedFeatureIndex+1,this.featureCount),this}previous(){return this.selectedFeatureIndex=this._getRoundRobinIndex(this.selectedFeatureIndex-1,this.featureCount),this}disableClusterBrowsing(){S(this),this._clearBrowsedClusterGraphics()}async enableClusterBrowsing(){const{view:e,selectedFeature:t}=this;"2d"===e?.type?U(t)?(await T(this),await B(this)):o.getLogger(this).warn("enableClusterBrowsing:invalid-selectedFeature: Selected feature must represent an aggregate/cluster graphic.",t):o.getLogger(this).warn("enableClusterBrowsing:invalid-view: View must be 2d MapView.",t)}async handleViewClick(e){return this._fetchFeaturesAndOpen(e)}_syncSelectedFeatureIndex(e){const{pendingPromisesCount:t,promiseCount:i,selectedFeatureIndex:s}=this,r=i&&e.length;"list"!==this.initialDisplayMode?r&&t&&-1===s?this.selectedFeatureIndex=0:r&&-1!==s||(this.selectedFeatureIndex=e.length?0:-1):(!r||r&&t===i)&&(this.selectedFeatureIndex=-1)}_centerAtLocation(){const{view:e}=this,t=M(this);this._cancelCenterAtLocation();const i=new AbortController,{signal:r}=i;return this._centerAtLocationController=i,t&&e?this.callGoTo({target:{target:t,scale:e.scale},options:{signal:r}}).catch(e=>{l(e)||o.getLogger(this).error(e)}):Promise.reject(new s("center-at-location:invalid-target-or-view","Cannot center at a location without a target and view.",{target:t,view:e}))}_getRoundRobinIndex(e,t){return(e+t)%t}_clearBrowsedClusterGraphics(){const e=[this.selectedClusterBoundaryFeature,this._selectedClusterFeature].filter(i);this.view?.graphics?.removeMany(e),this._selectedClusterFeature=null,this.selectedClusterBoundaryFeature.geometry=null}_viewScaleChange(){if(U(this.selectedFeature))return this.browseClusterEnabled=!1,this.open=!1,void this.clear();this.browseClusterEnabled&&(this.features=this.selectedFeature?[this.selectedFeature]:[])}_locationChange(e){const{selectedFeature:t,updateLocationEnabled:i,view:s}=this;s&&!this._locationUpdateController&&i&&e&&(!t||t.geometry)&&this._centerAtLocation()}_selectedFeatureIndexChange(){this.featurePage=this.featureCount>0?Math.floor(this.selectedFeatureIndex/this.featuresPerPage)+1:null}_featureItemsChange(){this.featurePage=this.featureCount>0?1:null}_setGraphicOnFeatureItems(){const{features:e,featureCount:t,featurePage:i,featuresPerPage:s,featureItems:r}=this;if(null==i)return;const o=((i-1)*s+t)%t,n=o+s;r.slice(o,n).forEach((t,i)=>{t&&(t.graphic??=e[o+i])})}async _selectedFeatureChange(e){const{location:t,updateLocationEnabled:i,view:s}=this;if(!e||!s)return;if(this.browseClusterEnabled){if(this._selectedClusterFeature&&(s.graphics.remove(this._selectedClusterFeature),this._selectedClusterFeature=null),U(e))return;return e.symbol=await A(e),this._selectedClusterFeature=e,void s.graphics.add(this._selectedClusterFeature)}const r=v(e)?.type;if("map-image"!==r&&"imagery"!==r&&"imagery-tile"!==r||(e.symbol=await A(e)),(i||!t)&&e.geometry){if("point"===e.geometry.type)return void(this.location=e.geometry);const t=await import("../geometry/operators/labelPointOperator.js");return void(this.location=t.execute(e.geometry))}if(i&&!e.geometry){await this._centerAtLocation();const e=s.center?.clone();e&&(this.location=e)}}_waitingForResultChange(){!this.featureCount&&this.promises&&(this.open=!1)}_destroyFeatureItems(){this.featureItems.forEach(e=>e&&!e.destroyed&&e.destroy()),this._set("featureItems",[])}_updateFeatureItems(){const e=this.selectedFeature,t=this.features,i=this.featureItems,s=this.view,r=this.spatialReference,o=this.map,n=this.timeZone,a=this.location,l=this.featureItemAbilities??new I;if(U(t[0])||(this.browseClusterEnabled=!1),!t?.length)return void this._destroyFeatureItems();const u=i.slice(),h=[];t.forEach((t,i)=>{if(!t)return;const c=u.findIndex(e=>e?.graphic===t);if(-1!==c){const e=u[c];u.splice(c,1),e.abilities=l,h[i]=e}else{const u=new b({abilities:l,defaultPopupTemplateEnabled:this.defaultPopupTemplateEnabled,spatialReference:r,graphic:t===e?t:null,location:a,map:o,view:s,timeZone:n});h[i]=u}}),u.forEach(e=>e&&!e.destroyed&&e.destroy()),this._set("featureItems",h)}async _getScreenPoint(e,t){const{spatialReference:i,view:s}=this;if(!s)return null;await s.when();const r=e?.spatialReference;return r&&i?(await y(r,i,null,t),s.toScreen(e)):null}_cancelCenterAtLocation(){this._centerAtLocationController=n(this._centerAtLocationController)}_cancelFetchingFeatures(){this._fetchFeaturesController=n(this._fetchFeaturesController)}async _projectScreenPointAndFetchFeatures({mapPoint:e,screenPoint:t,event:i,signal:s}){return this.fetchFeatures(t??await this._getScreenPoint(e??this.location,{signal:s}),{signal:s,event:i})}_fetchFeaturesWithController({mapPoint:e,screenPoint:t,event:i}){this._cancelFetchingFeatures();const s=new AbortController,{signal:r}=s;this._fetchFeaturesController=s;const o=this._projectScreenPointAndFetchFeatures({mapPoint:e,screenPoint:t,signal:r,event:i});return o.catch(()=>{}).finally(()=>{this._fetchFeaturesController===s&&(this._fetchFeaturesController=null)}),o}async _fetchFeaturesAndOpen(e){const{mapPoint:t,screenPoint:i}=e;this.removeHandles(G),this.addHandles([h(()=>this.view?.scale,()=>this._debouncedLocationUpdate(t).catch(e=>{l(e)||o.getLogger(this).error(e)})),c(()=>!this.open,()=>{this.removeHandles(G)},{once:!0})],G);const{pendingFeatures:s}=await this._fetchFeaturesWithController({mapPoint:t,screenPoint:i,event:e});return{location:t??void 0,promises:s}}async _locationUpdate(e,t){const{spatialReference:i}=this,s=this.selectedFeature?.geometry?.type,r=this.location??e;if(s&&"mesh"!==s&&i&&r&&this.selectedFeature){if("point"===s){const e=await import("../geometry/operators/labelPointOperator.js");return void(this.location=e.execute(this.selectedFeature.geometry))}try{const e=this.selectedFeature;let s=e.geometry;const o=this._getHighlightLayer(e),n=e.getObjectId();if(!o||!this.view)return;if(n){const e=this.view?.allLayerViews.find(e=>e.layer.uid===o.uid);if(!e||!("queryFeatures"in e))return;const r=e.createQuery();r.outSpatialReference=i,r.objectIds=[n],r.returnGeometry=!0;const{features:a}=await e.queryFeatures(r,t);s=a[0]?.geometry}if(!s||"mesh"===s.type)return;s=_(s,i),Z??=await Promise.all([import("../geometry/operators/intersectsOperator.js"),import("../geometry/operators/proximityOperator.js")]);const[a,l]=Z;if(!a.execute(s,r)){const t=l.getNearestCoordinate(s,r).coordinate??r;this.selectedFeature===e&&(this.location=t)}}catch(n){l(n)||o.getLogger(this).error(n)}}}_cancelLocationUpdate(){this._locationUpdateController=n(this._locationUpdateController)}async _getLayerView(e,t){return await e.when(),e.whenLayerView(t)}_getHighlightLayer(e){const t=v(e),{layer:i}=e;return t&&"layer"in t&&t.layer?t.layer:"map-notes"===t?.type||"subtype-group"===t?.type?t:i??t}_getHighlightLayerView(e,t){return"subtype-sublayer"===t.type&&t.parent&&this._mapIncludesLayer(t.parent)?this._getLayerView(e,t.parent):t&&this._mapIncludesLayer(t)?this._getLayerView(e,t):null}_getHighlightTarget(e,t,i){if(z(t.type,i))return e;const s=e.getObjectId();if(null!=s)return s;const r="imagery"===t.type?void 0:"objectIdField"in t?t.objectIdField||C:null,o=e.attributes;return o&&r&&o[r]||e}_mapIncludesLayer(e){return!!this.map?.allLayers?.includes(e)}async _highlightFeature(e,t){this.removeHandles(e);const i=this[t];if(!i)return;const{highlightEnabled:s,view:r,open:o}=this;if(!r||!s||!o)return;const n=this._getHighlightLayer(i);if(!n)return;const a=this._getHighlightLayerView(r,n);if(!a)return;this._highlightPromises[e]=a;const l=await a;if(!(l&&j(l)&&this._highlightPromises[e]===a&&this[t]&&this.highlightEnabled))return;const u=l.highlight(this._getHighlightTarget(i,n,r.type));this.addHandles(u,e)}async _highlightActiveFeature(){return this._highlightFeature("highlight-active-feature","activeFeature")}async _highlightSelectedFeature(){return this._highlightFeature("highlight-selected-feature","selectedFeature")}_updateFeatures(e){const{features:t}=this,i=e.filter(e=>!t.includes(e));i?.length&&(this.features=t.concat(i))}};e([g()],N.prototype,"_fetchFeaturesController",void 0),e([g({type:x})],N.prototype,"actions",void 0),e([g({readOnly:!0})],N.prototype,"active",null),e([g()],N.prototype,"activeFeature",void 0),e([g({readOnly:!0})],N.prototype,"allActions",null),e([g()],N.prototype,"browseClusterEnabled",void 0),e([g({value:null})],N.prototype,"content",null),e([g({type:x,readOnly:!0})],N.prototype,"defaultActions",null),e([g({type:Boolean})],N.prototype,"defaultPopupTemplateEnabled",void 0),e([g({readOnly:!0})],N.prototype,"featureCount",null),e([g()],N.prototype,"featurePage",void 0),e([g({value:[]})],N.prototype,"features",null),e([g()],N.prototype,"featuresPerPage",void 0),e([g()],N.prototype,"featureMenuOpen",void 0),e([g({type:I})],N.prototype,"featureItemAbilities",void 0),e([g({readOnly:!0})],N.prototype,"featureItems",void 0),e([g()],N.prototype,"heading",void 0),e([g()],N.prototype,"highlightEnabled",void 0),e([g()],N.prototype,"includeDefaultActions",void 0),e([g({value:"feature"})],N.prototype,"initialDisplayMode",null),e([g({type:f})],N.prototype,"location",null),e([g()],N.prototype,"map",null),e([g()],N.prototype,"open",void 0),e([g({readOnly:!0})],N.prototype,"pendingPromisesCount",null),e([g({readOnly:!0})],N.prototype,"promiseCount",null),e([g()],N.prototype,"promises",null),e([g({readOnly:!0})],N.prototype,"selectedClusterBoundaryFeature",void 0),e([g({value:null,readOnly:!0})],N.prototype,"selectedFeature",null),e([g({value:-1})],N.prototype,"selectedFeatureIndex",null),e([g({readOnly:!0})],N.prototype,"selectedFeatureItem",null),e([g({type:F})],N.prototype,"spatialReference",null),e([g({readOnly:!0})],N.prototype,"state",null),e([g()],N.prototype,"timeZone",null),e([g()],N.prototype,"updateLocationEnabled",void 0),e([g()],N.prototype,"view",void 0),e([g({readOnly:!0})],N.prototype,"waitingForContents",null),e([g({readOnly:!0})],N.prototype,"waitingForResult",null),e([g()],N.prototype,"zoomFactor",void 0),N=e([m("esri.popup.Features")],N);const W=N;export{W as default};
@@ -9,22 +9,58 @@ export interface FeatureAbilitiesProperties extends Partial<Pick<FeatureAbilitie
9
9
  */
10
10
  export default class FeatureAbilities extends Accessor {
11
11
  constructor(properties?: FeatureAbilitiesProperties);
12
- /** @default true */
12
+ /**
13
+ * Indicates whether to query and display [attachments](https://developers.arcgis.com/javascript/latest/references/core/popup/content/AttachmentsContent/) associated with the feature.
14
+ *
15
+ * @default true
16
+ */
13
17
  accessor attachmentsContent: boolean;
14
- /** @default true */
18
+ /**
19
+ * Indicates whether to display animations for charts residing in [media content elements](https://developers.arcgis.com/javascript/latest/references/core/popup/content/MediaContent/).
20
+ *
21
+ * @default true
22
+ */
15
23
  accessor chartAnimation: boolean;
16
- /** @default true */
24
+ /**
25
+ * Indicates whether to display any [custom content elements](https://developers.arcgis.com/javascript/latest/references/core/popup/content/CustomContent/).
26
+ *
27
+ * @default true
28
+ */
17
29
  accessor customContent: boolean;
18
- /** @default true */
30
+ /**
31
+ * Indicates whether to display any [expression content elements](https://developers.arcgis.com/javascript/latest/references/core/popup/content/ExpressionContent/).
32
+ *
33
+ * @default true
34
+ */
19
35
  accessor expressionContent: boolean;
20
- /** @default true */
36
+ /**
37
+ * Indicates whether to display any [fields content elements](https://developers.arcgis.com/javascript/latest/references/core/popup/content/FieldsContent/).
38
+ *
39
+ * @default true
40
+ */
21
41
  accessor fieldsContent: boolean;
22
- /** @default true */
42
+ /**
43
+ * Indicates whether to display any [media content elements](https://developers.arcgis.com/javascript/latest/references/core/popup/content/MediaContent/).
44
+ *
45
+ * @default true
46
+ */
23
47
  accessor mediaContent: boolean;
24
- /** @default true */
48
+ /**
49
+ * Indicates whether to display [relationship content elements](https://developers.arcgis.com/javascript/latest/references/core/popup/content/RelationshipContent/).
50
+ *
51
+ * @default true
52
+ */
25
53
  accessor relationshipContent: boolean;
26
- /** @default true */
54
+ /**
55
+ * Indicates whether to display any [text content elements](https://developers.arcgis.com/javascript/latest/references/core/popup/content/TextContent/).
56
+ *
57
+ * @default true
58
+ */
27
59
  accessor textContent: boolean;
28
- /** @default true */
60
+ /**
61
+ * Indicates whether to display [utility network associations content elements](https://developers.arcgis.com/javascript/latest/references/core/popup/content/UtilityNetworkAssociationsContent/).
62
+ *
63
+ * @default true
64
+ */
29
65
  accessor utilityNetworkAssociationsContent: boolean;
30
66
  }
package/popup/types.d.ts CHANGED
@@ -296,71 +296,4 @@ export interface RelatedInfo {
296
296
  * @since 5.1
297
297
  */
298
298
  sourceSpatialReference?: SpatialReference;
299
- }
300
-
301
- /** @since 5.1 */
302
- export interface Abilities {
303
- /**
304
- * Indicate whether to query and display [attachments](https://developers.arcgis.com/javascript/latest/references/core/popup/content/AttachmentsContent/) associated with the feature.
305
- *
306
- * @default true
307
- * @since 5.1
308
- */
309
- attachmentsContent?: boolean;
310
- /**
311
- * Indicate whether to display animations for charts residing in [media content elements](https://developers.arcgis.com/javascript/latest/references/core/popup/content/MediaContent/).
312
- *
313
- * @default true
314
- * @since 5.1
315
- */
316
- chartAnimation?: boolean;
317
- /**
318
- * Indicate whether to display any [custom content elements](https://developers.arcgis.com/javascript/latest/references/core/popup/content/CustomContent/).
319
- *
320
- * @default true
321
- * @since 5.1
322
- */
323
- customContent?: boolean;
324
- /**
325
- * Indicate whether to display any [expression content elements](https://developers.arcgis.com/javascript/latest/references/core/popup/content/ExpressionContent/).
326
- *
327
- * @default true
328
- * @since 5.1
329
- */
330
- expressionContent?: boolean;
331
- /**
332
- * Indicate whether to display any [fields content elements](https://developers.arcgis.com/javascript/latest/references/core/popup/content/FieldsContent/).
333
- *
334
- * @default true
335
- * @since 5.1
336
- */
337
- fieldsContent?: boolean;
338
- /**
339
- * Indicate whether to display any [media content elements](https://developers.arcgis.com/javascript/latest/references/core/popup/content/MediaContent/).
340
- *
341
- * @default true
342
- * @since 5.1
343
- */
344
- mediaContent?: boolean;
345
- /**
346
- * Indicate whether to display any [text content elements](https://developers.arcgis.com/javascript/latest/references/core/popup/content/TextContent/).
347
- *
348
- * @default true
349
- * @since 5.1
350
- */
351
- textContent?: boolean;
352
- /**
353
- * Indicate whether the widget should display [relationship content elements](https://developers.arcgis.com/javascript/latest/references/core/popup/content/RelationshipContent/).
354
- *
355
- * @default true
356
- * @since 5.1
357
- */
358
- relationshipContent?: boolean;
359
- /**
360
- * Indicate whether the widget should display [utility network associations content elements](https://developers.arcgis.com/javascript/latest/references/core/popup/content/UtilityNetworkAssociationsContent/).
361
- *
362
- * @default true
363
- * @since 5.1
364
- */
365
- utilityNetworkAssociationsContent?: boolean;
366
299
  }
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import e from"../../../core/Error.js";import{pt2px as t}from"../../../core/screenUtils.js";import{millisecondsPerTimeUnit as n}from"../../../core/timeUtils.js";import o from"../../../geometry/Point.js";import r from"../../../geometry/SpatialReference.js";import{quantizePoint as i}from"../../../geometry/support/quantizationUtils.js";import{isWrappable as s,getInfo as l}from"../../../geometry/support/spatialReferenceUtils.js";import a from"../../../layers/support/FieldsIndex.js";import{isTimeOnlyField as u,isNumericField as f,numericTypes as c}from"../../../layers/support/fieldUtils.js";import{createValueFunction as m,evaluateDensityKernel as p}from"../../../renderers/support/heatmapUtils.js";import{isAnyDateField as d,getWhereClause as h}from"../../support/utils.js";import{processNullValue as y,getNormalizedValue as $}from"../../../statistics/utils.js";import{loadArcade as g}from"../../../support/loadArcade.js";let j=null;const w=/^(?<hh>([01][0-9])|(2[0-3])):(?<mm>[0-5][0-9])(:(?<ss>[0-5][0-9]))?(\.(?<ms>\d+))?$/;function x(e,t,n){return e.x<0?e.x+=t:e.x>n&&(e.x-=t),e}function b(e,t,n,r){const a=s(n)?l(n):null,u=a?Math.round((a.valid[1]-a.valid[0])/t.scale[0]):null;return e.map(e=>{const n=new o(e.geometry);return i(t,n,n),e.geometry=a?x(n,u??0,r[0]):n,e})}function I(e,n=18,o,r,i){const s=new Float64Array(r*i);n=Math.round(t(n));let l=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY;const u=m(o);for(const{geometry:t,attributes:f}of e){const{x:e,y:o}=t,c=Math.max(0,e-n),m=Math.max(0,o-n),d=Math.min(i,o+n),h=Math.min(r,e+n),y=+u(f);for(let t=m;t<d;t++)for(let i=c;i<h;i++){const u=t*r+i,f=p(i-e,t-o,n)*y,c=s[u]+=f;l=Math.min(l,c),a=Math.max(a,c)}}return{min:l,max:a}}function F(e){const t=w.exec(e);if(!t)return null;const{hh:o,mm:r,ss:i,ms:s}=t.groups;return Number(o)*n.hours+Number(r)*n.minutes+Number(i)*n.seconds+Number(s||0)}async function N(e,t,n=!0){if(!t)return[];const{field:o,field2:i,field3:s,fieldDelimiter:l,sqlExpression:f,fieldInfos:c,timeZone:m}=e,p=o&&c?.find(e=>e.name.toLowerCase()===o.toLowerCase()),w=!!p&&u(p),x=!!p&&d(p),b=e.valueExpression,I=e.normalizationType,N=e.normalizationField,E=e.normalizationTotal,v=[],U=e.viewInfoParams;let M=null,T=null;if(b){if(!j){const{arcadeUtils:e}=await g();j=e}j.hasGeometryOperations(b)&&await j.enableGeometryOperations(),M=j.createFunction(b),T=U?j.getViewInfo({viewingMode:U.viewingMode,scale:U.scale,spatialReference:new r(U.spatialReference)}):null}const z=e.fieldInfos,O=!(t[0]&&"declaredClass"in t[0]&&"esri.Graphic"===t[0].declaredClass)&&z?{fields:z}:null;for await(const r of t){const e=r.attributes;let t;if(f){const e=await h(f,new a(z));e&&(t=e.calculateValue(r.attributes))}else if(b){const e=O?Object.assign({},r,{layer:O}):r,n=j.createExecContext(e,T,m);t=j.executeFunction(M,n)}else e&&(t=e[o],i?(t=`${y(t)}${l}${y(e[i])}`,s&&(t=`${t}${l}${y(e[s])}`)):"string"==typeof t&&n&&(x?t=t?new Date(t).getTime():null:w&&(t=t?F(t):null)));if(I&&"number"==typeof t&&isFinite(t)){const n=e&&parseFloat(e[N]);t=$(t,I,n,E)}v.push(t)}return v}function E(e){const t=e.field,n=e.normalizationType,o=e.normalizationField;let r;return"field"===n?r="(NOT "+o+" = 0)":"log"!==n&&"natural-log"!==n&&"square-root"!==n||(r=`(${t} > 0)`),r}function v(e,t,n){const o=null!=t?e+" >= "+t:"",r=null!=n?e+" <= "+n:"";let i="";return i=o&&r?T(o,r):o||r,i?"("+i+")":""}function U(t,n,o,r){let i;return n?n.name!==t.objectIdField&&r.includes(n.type)||(i=new e(o,"'field' should be one of these types: "+r.join(","))):i=new e(o,"'field' is not defined in the layer schema"),i}function M(t,n,o){let r;return n?n.name!==t.objectIdField&&f(n)||(r=new e(o,"'field' should be one of these numeric types: "+c.join(","))):r=new e(o,"'field' is not defined in the layer schema"),r}function T(e,t){let n=null!=e?e:"";return null!=t&&t&&(n=n?"("+n+") AND ("+t+")":t),n}function z(t,n){if(t&&"intersects"!==t.spatialRelationship)return new e(n,"Only 'intersects' spatialRelationship is supported for featureFilter")}function O(t,n,o){const r=R({layer:t,fields:n});if(r.length)return new e(o,"Unknown fields: "+r.join(", ")+". You can only use fields defined in the layer schema");const i=V({layer:t,fields:n});return i.length?new e(o,"Unsupported fields: "+i.join(", ")+". You can only use fields that can be fetched i.e. AdapterFieldUsageInfo.supportsStatistics must be true"):void 0}function R(e){const t=e.layer;return e.fields.filter(e=>!t.getField(e))}function V(e){const t=e.layer;return e.fields.filter(e=>{const n=t.getFieldUsageInfo(e);return!n||!n.supportsStatistics})}function q(e,t,n){const o=[],r=[],i=[],s=[],l=[];e.forEach((e,t)=>{const a=e.field?"field":"expression",u=e.field||e.valueExpression;e.field?(l.push(u),r.push(`var ${a}${t} = Number($feature["${u}"]);`)):(o.push(`function getValueForExpr${t}() {\n ${u} \n}`),r.push(`var ${a}${t} = Number(getValueForExpr${t}());`)),n||i.push(`${a}${t} = IIf(${a}${t} < 0, 0, ${a}${t});`),s.push(`${a}${t}`)});const a=o.length?null:l.reduce((e,t)=>`${e} + ${t}`);let u=null;t||n?t?n||a&&(u=`(( ${a} ) >= 0)`):a&&(u=`(( ${a} ) <> 0)`):a&&(u=`(( ${a} ) > 0)`);return{valueExpression:[o.length?o.join("\n"):"",r.join("\n"),i.join("\n"),`var total = ${s.join(" + ")};`,"return total;"].filter(Boolean).join("\n\n"),sqlExpression:a,sqlWhere:u}}export{I as calculateHeatmapStats,N as getDataValues,v as getRangeExpr,E as getSQLFilterForNormalization,q as getSumOfAttributesExpr,T as mergeWhereClauses,b as quantizeFeatures,F as timeOnlyToMilliseconds,O as verifyBasicFieldValidity,U as verifyFieldType,z as verifyFilterValidity,M as verifyNumericField};
2
+ import e from"../../../core/Error.js";import{pt2px as t}from"../../../core/screenUtils.js";import{timeOnlyToMilliseconds as n}from"../../../core/timeUtils.js";import o from"../../../geometry/Point.js";import i from"../../../geometry/SpatialReference.js";import{quantizePoint as r}from"../../../geometry/support/quantizationUtils.js";import{isWrappable as s,getInfo as l}from"../../../geometry/support/spatialReferenceUtils.js";import a from"../../../layers/support/FieldsIndex.js";import{isTimeOnlyField as u,isNumericField as f,numericTypes as c}from"../../../layers/support/fieldUtils.js";import{createValueFunction as p,evaluateDensityKernel as m}from"../../../renderers/support/heatmapUtils.js";import{isAnyDateField as d,getWhereClause as h}from"../../support/utils.js";import{processNullValue as y,getNormalizedValue as $}from"../../../statistics/utils.js";import{loadArcade as g}from"../../../support/loadArcade.js";let j=null;function w(e,t,n){return e.x<0?e.x+=t:e.x>n&&(e.x-=t),e}function x(e,t,n,i){const a=s(n)?l(n):null,u=a?Math.round((a.valid[1]-a.valid[0])/t.scale[0]):null;return e.map(e=>{const n=new o(e.geometry);return r(t,n,n),e.geometry=a?w(n,u??0,i[0]):n,e})}function I(e,n=18,o,i,r){const s=new Float64Array(i*r);n=Math.round(t(n));let l=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY;const u=p(o);for(const{geometry:t,attributes:f}of e){const{x:e,y:o}=t,c=Math.max(0,e-n),p=Math.max(0,o-n),d=Math.min(r,o+n),h=Math.min(i,e+n),y=+u(f);for(let t=p;t<d;t++)for(let r=c;r<h;r++){const u=t*i+r,f=m(r-e,t-o,n)*y,c=s[u]+=f;l=Math.min(l,c),a=Math.max(a,c)}}return{min:l,max:a}}async function F(e,t,o=!0){if(!t)return[];const{field:r,field2:s,field3:l,fieldDelimiter:f,sqlExpression:c,fieldInfos:p,timeZone:m}=e,w=r&&p?.find(e=>e.name.toLowerCase()===r.toLowerCase()),x=!!w&&u(w),I=!!w&&d(w),F=e.valueExpression,b=e.normalizationType,E=e.normalizationField,v=e.normalizationTotal,N=[],U=e.viewInfoParams;let M=null,T=null;if(F){if(!j){const{arcadeUtils:e}=await g();j=e}j.hasGeometryOperations(F)&&await j.enableGeometryOperations(),M=j.createFunction(F),T=U?j.getViewInfo({viewingMode:U.viewingMode,scale:U.scale,spatialReference:new i(U.spatialReference)}):null}const z=e.fieldInfos,O=!(t[0]&&"declaredClass"in t[0]&&"esri.Graphic"===t[0].declaredClass)&&z?{fields:z}:null;for await(const i of t){const e=i.attributes;let t;if(c){const e=await h(c,new a(z));e&&(t=e.calculateValue(i.attributes))}else if(F){const e=O?Object.assign({},i,{layer:O}):i,n=j.createExecContext(e,T,m);t=j.executeFunction(M,n)}else e&&(t=e[r],s?(t=`${y(t)}${f}${y(e[s])}`,l&&(t=`${t}${f}${y(e[l])}`)):"string"==typeof t&&o&&(I?t=t?new Date(t).getTime():null:x&&(t=t?n(t):null)));if(b&&"number"==typeof t&&isFinite(t)){const n=e&&parseFloat(e[E]);t=$(t,b,n,v)}N.push(t)}return N}function b(e){const t=e.field,n=e.normalizationType,o=e.normalizationField;let i;return"field"===n?i="(NOT "+o+" = 0)":"log"!==n&&"natural-log"!==n&&"square-root"!==n||(i=`(${t} > 0)`),i}function E(e,t,n){const o=null!=t?e+" >= "+t:"",i=null!=n?e+" <= "+n:"";let r="";return r=o&&i?U(o,i):o||i,r?"("+r+")":""}function v(t,n,o,i){let r;return n?n.name!==t.objectIdField&&i.includes(n.type)||(r=new e(o,"'field' should be one of these types: "+i.join(","))):r=new e(o,"'field' is not defined in the layer schema"),r}function N(t,n,o){let i;return n?n.name!==t.objectIdField&&f(n)||(i=new e(o,"'field' should be one of these numeric types: "+c.join(","))):i=new e(o,"'field' is not defined in the layer schema"),i}function U(e,t){let n=null!=e?e:"";return null!=t&&t&&(n=n?"("+n+") AND ("+t+")":t),n}function M(t,n){if(t&&"intersects"!==t.spatialRelationship)return new e(n,"Only 'intersects' spatialRelationship is supported for featureFilter")}function T(t,n,o){const i=z({layer:t,fields:n});if(i.length)return new e(o,"Unknown fields: "+i.join(", ")+". You can only use fields defined in the layer schema");const r=O({layer:t,fields:n});return r.length?new e(o,"Unsupported fields: "+r.join(", ")+". You can only use fields that can be fetched i.e. AdapterFieldUsageInfo.supportsStatistics must be true"):void 0}function z(e){const t=e.layer;return e.fields.filter(e=>!t.getField(e))}function O(e){const t=e.layer;return e.fields.filter(e=>{const n=t.getFieldUsageInfo(e);return!n||!n.supportsStatistics})}function R(e,t,n){const o=[],i=[],r=[],s=[],l=[];e.forEach((e,t)=>{const a=e.field?"field":"expression",u=e.field||e.valueExpression;e.field?(l.push(u),i.push(`var ${a}${t} = Number($feature["${u}"]);`)):(o.push(`function getValueForExpr${t}() {\n ${u} \n}`),i.push(`var ${a}${t} = Number(getValueForExpr${t}());`)),n||r.push(`${a}${t} = IIf(${a}${t} < 0, 0, ${a}${t});`),s.push(`${a}${t}`)});const a=o.length?null:l.reduce((e,t)=>`${e} + ${t}`);let u=null;t||n?t?n||a&&(u=`(( ${a} ) >= 0)`):a&&(u=`(( ${a} ) <> 0)`):a&&(u=`(( ${a} ) > 0)`);return{valueExpression:[o.length?o.join("\n"):"",i.join("\n"),r.join("\n"),`var total = ${s.join(" + ")};`,"return total;"].filter(Boolean).join("\n\n"),sqlExpression:a,sqlWhere:u}}export{I as calculateHeatmapStats,F as getDataValues,E as getRangeExpr,b as getSQLFilterForNormalization,R as getSumOfAttributesExpr,U as mergeWhereClauses,x as quantizeFeatures,T as verifyBasicFieldValidity,v as verifyFieldType,M as verifyFilterValidity,N as verifyNumericField};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{isSome as e}from"../../../../core/arrayUtils.js";import{throwIfAborted as t}from"../../../../core/promiseUtils.js";import n from"../../../../layers/support/CodedValue.js";import i from"../../../../layers/support/CodedValueDomain.js";import l from"../../../../layers/support/Field.js";import{isStringField as o,isTimeOnlyField as r,getAggregateFieldType as a}from"../../../../layers/support/fieldUtils.js";import u from"../../../../rest/support/PivotQuery.js";import s from"../../../../rest/support/StatisticDefinition.js";import c from"../../../../rest/support/UnPivotDefinition.js";import{noDominantCategoryField as f}from"../../../statistics/support/predominanceUtils.js";import{getRangeExpr as m,getSQLFilterForNormalization as d,mergeWhereClauses as p}from"../../../statistics/support/utils.js";import{isIntegerField as v,isAnyDateField as y,getDateDiffSQL as x,castIntegerFieldToFloat as w}from"../../utils.js";import{isNullCountSupported as h,statisticTypes as F,getEqualIntervalBins as g,processNullValue as E}from"../../../../statistics/utils.js";const T=/_value$/i,S=Math.LOG10E,V={SECOND:1e3,MINUTE:6e4,HOUR:36e5},$=10;function z(e){return e.map(e=>e.toJSON())}function q(e,t){const n=[],i=e.layer,l="featureReduction"in i?i.featureReduction:null,o="binning"===l?.type,r=null!=l&&"fields"in l?l.fields?.map(e=>e.name?.toLowerCase()).filter(Boolean):[];if(!o||!t)return n;for(const a of t)r.includes(a.toLowerCase())||n.push(a);return n}function C(e,t,n){const i=[];if(t)for(const l of t){const t=e.getField(l);t&&n&&"availableFields"in n&&!n.availableFields?.includes(t.name)&&i.push(t.name)}return i}function j(e,t){const n=e&&e.features;if(0===n?.length)return{avg:null,count:0,max:null,median:null,min:null,nullcount:0,stddev:null,sum:null,variance:null};const i=n?.[0]?.attributes,l={};for(const o in i)l[o.replace(T,"").toLowerCase()]=i[o];return null!=l.totalcount&&l.totalcount>=l.count&&(l.nullcount=l.totalcount-l.count),delete l.totalcount,l.min===l.max&&null!=l.min&&null==l.stddev&&(l.stddev=l.variance=0),t&&(["min","max","avg","stddev","sum","variance"].forEach(e=>{null!=l[e]&&(l[e]=Math.ceil(l[e]))}),l.min===l.max&&null!=l.min&&(l.avg=l.min,l.stddev=l.variance=0)),l}function O(e){const t=[],n=e.classBreaks,i=n[0].minValue,l=n[n.length-1].maxValue;n.forEach(e=>{t.push([e.minValue,e.maxValue])});const o={field:e.field,normalizationType:e.normalizationType,normalizationField:e.normalizationField,normalizationTotal:e.normalizationTotal,layer:e.layer};return{min:i,max:l,intervals:t,sqlExpr:b(o),excludeZerosExpr:e.where,normTotal:e.normalizationTotal}}function b(e){const{field:t,normalizationType:n,normalizationField:i,normalizationTotal:l,layer:o}=e,r=v(o,t);let a=t;return"percent-of-total"===n?a=`((${r?w(t):t} / ${l}) * 100)`:"log"===n?a=`(log(${t}) * ${S})`:"field"===n?a=`(${r?w(t):t} / ${i})`:"natural-log"===n?a=`(log(${r?w(t):t}))`:"square-root"===n&&(a=`(power(${r?w(t):t}, 0.5))`),a}function L(e,t){let n;if(t=t.toLowerCase(),e)for(const i in e)if(i.toLowerCase()!==t){n=e[i];break}return n}function R(e,t){let n;if(t=t.toLowerCase(),e)for(const i in e)if(i.toLowerCase()===t){n=e[i];break}return n}function N(e,t,n,i,l){const o={},r="countOFExpr";e&&e.features&&e.features.forEach(e=>{const t=e.attributes,n=L(t,r),i=R(t,r);null!=n&&null!=i&&0!==n&&(o[n]=i)});const a=[];return g(t,n,i).forEach((e,t)=>{const n=(t+1).toString();a.push({minValue:e[0],maxValue:e[1],count:o.hasOwnProperty(n)?o[n]:0})}),{bins:a,minValue:t,maxValue:n,normalizationTotal:l}}async function U(e,n){const i=e&&e.features,{field:l,field2:o,field3:r,fieldDelimiter:a,layer:u,view:s,signal:c,labels:f}=n,m=`countOF${!(!l||!o)?"Expr":l||"Expr"}`,d={};let p=!1;for(const t of i){const e=t.attributes,n=R(e,m);let i=l?R(e,l):L(e,m),u=o?R(e,o):null,s=r?R(e,r):null;null===i&&0===n&&(p=!0),(null==i||"string"==typeof i&&""===i.trim())&&(i=null),o&&(null==u||"string"==typeof u&&""===u.trim())&&(u=null),r&&(null==s||"string"==typeof s&&""===s.trim())&&(s=null);let c=i;o&&(c=`${E(c)}${a}${E(u)}`,r&&(c=`${c}${a}${E(s)}`)),null==d[c]?d[c]={count:n,data:c}:d[c].count=d[c].count+n}if(l&&p){const e=l+" is NULL";try{const t=await u.queryFeatureCount({whereClause:e,view:s,signal:c});return d.null.count=d.null.count+t,D(d,f)}catch{return t(c),D(d,f)}}return D(d,f)}function D(e,t){if(t)for(const n in e)e[n].label=t[n];return{count:e}}async function I(e,t,l){const o=e?l.getField(e):null,r=o?l.getFieldDomain(o.name):null;if(r)return r;const{uniqueValueInfos:a}=await l.uniqueValues({field:e,sqlWhere:t.sqlWhere,features:t.features,useFeaturesInView:t.useFeaturesInView,view:t.view,signal:t.signal}),u=a.map(e=>new n({code:e.value}));return new i({codedValues:u})}async function Q(e,t){if(!e.returnAllCodedValues)return[];const{field:n,field2:i,field3:l}=e;if(n&&!i){const e=n?t.getField(n):null,i=e?t.getFieldDomain(e.name):null;return i?[i]:[]}const o=[];return n&&(o.push(I(n,e,t)),i&&(o.push(I(i,e,t)),l&&o.push(I(l,e,t)))),Promise.all(o)}function M(e,t){return x(e,new Date(0),t,"milliseconds").sqlExpression}function P(e,t){return`EXTRACT(${t} FROM ${e}) * ${V[t]}`}function B(e){if(!e)return null;return w(["HOUR","MINUTE","SECOND"].map(t=>`(${P(e,t)})`).join(" + "))}function W(e){return{viewingMode:"2d"===e.type?"map":e.viewingMode,scale:e.scale,spatialReference:e.spatialReference?.toJSON()}}function _(e,t){const n=new Set(e.map(e=>e.value)),i=t.filter(e=>!n.has(e));for(const l of i)e.push({value:l,count:0});e.sort((e,n)=>t.indexOf(e.value)-t.indexOf(n.value));for(const l of e)l.value===f&&(l.value=null);return{predominantCategoryInfos:e}}function k(t){const n="featureReduction"in t?t.featureReduction:null;return((null!=n&&"fields"in n?n.fields:null)??[]).map(e=>{const n=a(e,t.fieldsIndex);return n?new l({type:n,name:e.name,alias:e.alias}):null}).filter(e)}function A(e,t){return y(t)?M(e,t?.name):r(t)?B(t?.name):null}function H(e,t,n){let i=null;for(const l of n){const n=l?e.getField(l):null,o=Z(e,{...t,field:l,outStatisticTypes:{include:["min","max","sum","count"]}},n,!0,!0);i?i.outStatistics=i.outStatistics.concat(o.outStatistics):i=o}return i.where=e.createQuery()?.where,i}function J(e,t,n,i){return t.map(t=>{const l=new s;let o=null,r=null,a=`${t}_value${i?`_${i}`:""}`;if("variance"===t)o="var",r=n;else if("nullcount"===t){const t=e.objectIdField;o="count",r=t&&e.getField(t)?t:"1",a="totalcount_value"}else"median"===t?(o="percentile-continuous",r=n,l.statisticParameters={value:.5}):(o=t,r=n);return l.statisticType=o,l.onStatisticField=r,l.outStatisticFieldName=a,l})}function Z(e,t,n,i=!0,l=!1){const{field:r,normalizationType:a,normalizationField:u,normalizationTotal:s,minValue:c,maxValue:f,filter:v}=t,y=e.supportsSQLExpression?A(e,n)||t.sqlExpression:null,x=b({field:r,normalizationType:a,normalizationField:u,normalizationTotal:s,layer:e}),w=y||x,g=w?m(w,c,f):null,E=d({field:r,normalizationField:u,normalizationType:a}),T=p(t.sqlWhere,E),S=p(T,g),V=h({normalizationField:u,normalizationType:a,sqlExpression:y,supportsSQLExpression:e.supportsSQLExpression,minValue:c,maxValue:f}),$=o(e.getField(r??void 0)),{include:z,exclude:q}=t.outStatisticTypes||{},C=F.filter(e=>(!z||z.includes(e))&&(!q||!q.includes(e))&&("nullcount"===e?V:!$||"count"===e)&&("median"!==e||i)),j=e.createQuery();return j.where=p(j.where,S),j.sqlFormat=y?"standard":null,j.outStatistics=J(e,C,w,l?r:void 0),X(j,v),j}function G(e,t,n=!0){const{fields:i,filter:l}=t,{include:o,exclude:r}=t.outStatisticTypes||{},a=F.filter(e=>(!o||o.includes(e))&&(!r||!r.includes(e))&&("median"!==e||n)),s=new u;s.where=p(e.createQuery()?.where,t.sqlWhere)??void 0;const f="new_value";return s.outPivots=[new c({sourceFields:i,valueFieldName:f})],s.outStatistics=J(e,a,f),X(s,l),s}function X(e,t){t&&(e.geometry=t.geometry,e.spatialRelationship=t.spatialRelationship,e.timeExtent=e.timeExtent?.intersection(t.timeExtent)??t.timeExtent,e.distance=t.distance,e.units=t.units)}function K(e,t){const{field:n,field2:i,field3:l,sqlExpression:o}=t,r=!(!n||!i),a=e.createQuery();return a.where=p(a.where,t.sqlWhere),a.sqlFormat=o?"standard":null,a.outStatistics=[Y(r?null:n,r?"1":o)].filter(Boolean),a.groupByFieldsForStatistics=[n||o,i,l].filter(Boolean),X(a,t.filter),a}function Y(e,t){const n="countOF"+(e||"Expr"),i=new s;return i.statisticType="count",i.onStatisticField=t?"1":e,i.outStatisticFieldName=n,i}function ee(e,t,n,i=$,l,o,r){const{min:a,max:u,normTotal:s,excludeZerosExpr:c}=t,f=t.intervals||g(a,u,i),m=t.sqlExpr||n;return te(e,f,m,c,l,o,r).then(e=>({bins:e.map((e,t)=>({minValue:f[t][0],maxValue:f[t][1],count:"fulfilled"===e.status?e.value:0})),minValue:a,maxValue:u,normalizationTotal:s}))}function te(e,t,n,i,l,o,r){const a=[],u=t.length;for(let s=0;s<u;s++){const e=p(i,p(n+" >= "+t[s][0],null!==t[s][1]?n+(s===u-1?" <= ":" < ")+t[s][1]:""));a.push(e)}return Promise.allSettled(a.map(t=>e.queryFeatureCount({whereClause:t,view:l,filter:o,signal:r})))}export{$ as defaultNumBins,z as ensureFeaturesJSON,O as generateBinParams,ee as getBins,Q as getDomainsForFields,k as getFeatureReductionFields,b as getFieldExpr,N as getHistogramFromFeatureSet,C as getMissingFields,q as getMissingFieldsForBinning,_ as getPredominantCategoriesFromUVInfos,A as getSQLExpressionForDateOrTimeField,j as getSummaryStatisticsFromFeatureSet,G as getSummaryStatsPivotQuery,Z as getSummaryStatsQuery,H as getSummaryStatsQueryForFields,K as getUVQuery,U as getUniqueValuesFromFeatureSet,W as getViewInfoParams,B as msForTimeOnlyFieldSQL,M as msSinceUnixEpochSQL,X as updateQueryWithFeatureFilter};
2
+ import{isSome as e}from"../../../../core/arrayUtils.js";import{throwIfAborted as t}from"../../../../core/promiseUtils.js";import n from"../../../../layers/support/CodedValue.js";import i from"../../../../layers/support/CodedValueDomain.js";import l from"../../../../layers/support/Field.js";import{isStringField as o,isTimeOnlyField as r,getAggregateFieldType as a}from"../../../../layers/support/fieldUtils.js";import u from"../../../../rest/support/PivotQuery.js";import s from"../../../../rest/support/StatisticDefinition.js";import c from"../../../../rest/support/UnPivotDefinition.js";import{noDominantCategoryField as f}from"../../../statistics/support/predominanceUtils.js";import{getSQLFilterForNormalization as m,mergeWhereClauses as d,getRangeExpr as p}from"../../../statistics/support/utils.js";import{isIntegerField as v,isAnyDateField as y,getDateDiffSQL as x,castIntegerFieldToFloat as w}from"../../utils.js";import{isNullCountSupported as h,statisticTypes as F,getEqualIntervalBins as g,processNullValue as E}from"../../../../statistics/utils.js";const T=/_value$/i,S=Math.LOG10E,V={SECOND:1e3,MINUTE:6e4,HOUR:36e5},$=10;function z(e){return e.map(e=>e.toJSON())}function q(e,t){const n=[],i=e.layer,l="featureReduction"in i?i.featureReduction:null,o="binning"===l?.type,r=null!=l&&"fields"in l?l.fields?.map(e=>e.name?.toLowerCase()).filter(Boolean):[];if(!o||!t)return n;for(const a of t)r.includes(a.toLowerCase())||n.push(a);return n}function C(e,t,n){const i=[];if(t)for(const l of t){const t=e.getField(l);t&&n&&"availableFields"in n&&!n.availableFields?.includes(t.name)&&i.push(t.name)}return i}function j(e,t){const n=e&&e.features;if(0===n?.length)return{avg:null,count:0,max:null,median:null,min:null,nullcount:0,stddev:null,sum:null,variance:null};const i=n?.[0]?.attributes,l={};for(const o in i)l[o.replace(T,"").toLowerCase()]=i[o];return null!=l.totalcount&&l.totalcount>=l.count&&(l.nullcount=l.totalcount-l.count),delete l.totalcount,l.min===l.max&&null!=l.min&&null==l.stddev&&(l.stddev=l.variance=0),t&&(["min","max","avg","stddev","sum","variance"].forEach(e=>{null!=l[e]&&(l[e]=Math.ceil(l[e]))}),l.min===l.max&&null!=l.min&&(l.avg=l.min,l.stddev=l.variance=0)),l}function O(e){const t=[],n=e.classBreaks,i=n[0].minValue,l=n[n.length-1].maxValue;n.forEach(e=>{t.push([e.minValue,e.maxValue])});const o={field:e.field,normalizationType:e.normalizationType,normalizationField:e.normalizationField,normalizationTotal:e.normalizationTotal,layer:e.layer};return{min:i,max:l,intervals:t,sqlExpr:b(o),excludeZerosExpr:e.where,normTotal:e.normalizationTotal}}function b(e){const{field:t,normalizationType:n,normalizationField:i,normalizationTotal:l,layer:o}=e,r=v(o,t);let a=t;return"percent-of-total"===n?a=`((${r?w(t):t} / ${l}) * 100)`:"log"===n?a=`(log(${t}) * ${S})`:"field"===n?a=`(${r?w(t):t} / ${i})`:"natural-log"===n?a=`(log(${r?w(t):t}))`:"square-root"===n&&(a=`(power(${r?w(t):t}, 0.5))`),a}function L(e,t){let n;if(t=t.toLowerCase(),e)for(const i in e)if(i.toLowerCase()!==t){n=e[i];break}return n}function R(e,t){let n;if(t=t.toLowerCase(),e)for(const i in e)if(i.toLowerCase()===t){n=e[i];break}return n}function N(e,t,n,i,l){const o={},r="countOFExpr";e&&e.features&&e.features.forEach(e=>{const t=e.attributes,n=L(t,r),i=R(t,r);null!=n&&null!=i&&0!==n&&(o[n]=i)});const a=[];return g(t,n,i).forEach((e,t)=>{const n=(t+1).toString();a.push({minValue:e[0],maxValue:e[1],count:o.hasOwnProperty(n)?o[n]:0})}),{bins:a,minValue:t,maxValue:n,normalizationTotal:l}}async function U(e,n){const i=e&&e.features,{field:l,field2:o,field3:r,fieldDelimiter:a,layer:u,view:s,signal:c,labels:f}=n,m=`countOF${!(!l||!o)?"Expr":l||"Expr"}`,d={};let p=!1;for(const t of i){const e=t.attributes,n=R(e,m);let i=l?R(e,l):L(e,m),u=o?R(e,o):null,s=r?R(e,r):null;null===i&&0===n&&(p=!0),(null==i||"string"==typeof i&&""===i.trim())&&(i=null),o&&(null==u||"string"==typeof u&&""===u.trim())&&(u=null),r&&(null==s||"string"==typeof s&&""===s.trim())&&(s=null);let c=i;o&&(c=`${E(c)}${a}${E(u)}`,r&&(c=`${c}${a}${E(s)}`)),null==d[c]?d[c]={count:n,data:c}:d[c].count=d[c].count+n}if(l&&p){const e=l+" is NULL";try{const t=await u.queryFeatureCount({whereClause:e,view:s,signal:c});return d.null.count=d.null.count+t,D(d,f)}catch{return t(c),D(d,f)}}return D(d,f)}function D(e,t){if(t)for(const n in e)e[n].label=t[n];return{count:e}}async function I(e,t,l){const o=e?l.getField(e):null,r=o?l.getFieldDomain(o.name):null;if(r)return r;const{uniqueValueInfos:a}=await l.uniqueValues({field:e,sqlWhere:t.sqlWhere,features:t.features,useFeaturesInView:t.useFeaturesInView,view:t.view,signal:t.signal}),u=a.map(e=>new n({code:e.value}));return new i({codedValues:u})}async function Q(e,t){if(!e.returnAllCodedValues)return[];const{field:n,field2:i,field3:l}=e;if(n&&!i){const e=n?t.getField(n):null,i=e?t.getFieldDomain(e.name):null;return i?[i]:[]}const o=[];return n&&(o.push(I(n,e,t)),i&&(o.push(I(i,e,t)),l&&o.push(I(l,e,t)))),Promise.all(o)}function M(e,t){return x(e,new Date(0),t,"milliseconds").sqlExpression}function P(e,t){return`EXTRACT(${t} FROM ${e}) * ${V[t]}`}function B(e){if(!e)return null;return w(["HOUR","MINUTE","SECOND"].map(t=>`(${P(e,t)})`).join(" + "))}function W(e){return{viewingMode:"2d"===e.type?"map":e.viewingMode,scale:e.scale,spatialReference:e.spatialReference?.toJSON()}}function _(e,t){const n=new Set(e.map(e=>e.value)),i=t.filter(e=>!n.has(e));for(const l of i)e.push({value:l,count:0});e.sort((e,n)=>t.indexOf(e.value)-t.indexOf(n.value));for(const l of e)l.value===f&&(l.value=null);return{predominantCategoryInfos:e}}function k(t){const n="featureReduction"in t?t.featureReduction:null;return((null!=n&&"fields"in n?n.fields:null)??[]).map(e=>{const n=a(e,t.fieldsIndex);return n?new l({type:n,name:e.name,alias:e.alias}):null}).filter(e)}function A(e,t){return y(t)?M(e,t?.name):r(t)?B(t?.name):null}function H(e,t,n){let i=null;for(const l of n){const n=l?e.getField(l):null,o=Z(e,{...t,field:l,outStatisticTypes:{include:["min","max","sum","count"]}},n,!0,!0);i?i.outStatistics=i.outStatistics.concat(o.outStatistics):i=o}return i.where=e.createQuery()?.where,i}function J(e,t,n,i){return t.map(t=>{const l=new s;let o=null,r=null,a=`${t}_value${i?`_${i}`:""}`;if("variance"===t)o="var",r=n;else if("nullcount"===t){const t=e.objectIdField;o="count",r=t&&e.getField(t)?t:"1",a="totalcount_value"}else"median"===t?(o="percentile-continuous",r=n,l.statisticParameters={value:.5}):(o=t,r=n);return l.statisticType=o,l.onStatisticField=r,l.outStatisticFieldName=a,l})}function Z(e,t,n,i=!0,l=!1){const{field:r,normalizationType:a,normalizationField:u,normalizationTotal:s,minValue:c,maxValue:f,filter:v}=t,y=e.supportsSQLExpression?A(e,n)||t.sqlExpression:null,x=b({field:r,normalizationType:a,normalizationField:u,normalizationTotal:s,layer:e}),w=y||x,g=w?p(w,c,f):null,E=m({field:r,normalizationField:u,normalizationType:a}),T=d(t.sqlWhere,E),S=d(T,g),V=h({normalizationField:u,normalizationType:a,sqlExpression:y,supportsSQLExpression:e.supportsSQLExpression,minValue:c,maxValue:f}),$=o(e.getField(r??void 0)),{include:z,exclude:q}=t.outStatisticTypes||{},C=F.filter(e=>(!z||z.includes(e))&&(!q||!q.includes(e))&&("nullcount"===e?V:!$||"count"===e)&&("median"!==e||i)),j=e.createQuery();return j.where=d(j.where,S),j.sqlFormat=y?"standard":null,j.outStatistics=J(e,C,w,l?r:void 0),X(j,v),j}function G(e,t,n=!0){const{fields:i,filter:l}=t,{include:o,exclude:r}=t.outStatisticTypes||{},a=F.filter(e=>(!o||o.includes(e))&&(!r||!r.includes(e))&&("median"!==e||n)),s=new u;s.where=d(e.createQuery()?.where,t.sqlWhere)??void 0;const f="new_value";return s.outPivots=[new c({sourceFields:i,valueFieldName:f})],s.outStatistics=J(e,a,f),X(s,l),s}function X(e,t){t&&(e.geometry=t.geometry,e.spatialRelationship=t.spatialRelationship,e.timeExtent=e.timeExtent?.intersection(t.timeExtent)??t.timeExtent,e.distance=t.distance,e.units=t.units)}function K(e,t){const{field:n,field2:i,field3:l,sqlExpression:o}=t,r=!(!n||!i),a=e.createQuery();return a.where=d(a.where,t.sqlWhere),a.sqlFormat=o?"standard":null,a.outStatistics=[Y(r?null:n,r?"1":o)].filter(Boolean),a.groupByFieldsForStatistics=[n||o,i,l].filter(Boolean),X(a,t.filter),a}function Y(e,t){const n="countOF"+(e||"Expr"),i=new s;return i.statisticType="count",i.onStatisticField=t?"1":e,i.outStatisticFieldName=n,i}function ee(e,t,n,i=$,l,o,r){const{min:a,max:u,normTotal:s,excludeZerosExpr:c}=t,f=t.intervals||g(a,u,i),m=t.sqlExpr||n;return te(e,f,m,c,l,o,r).then(e=>({bins:e.map((e,t)=>({minValue:f[t][0],maxValue:f[t][1],count:"fulfilled"===e.status?e.value:0})),minValue:a,maxValue:u,normalizationTotal:s}))}function te(e,t,n,i,l,o,r){const a=[],u=t.length;for(let s=0;s<u;s++){const e=d(i,d(n+" >= "+t[s][0],null!==t[s][1]?n+(s===u-1?" <= ":" < ")+t[s][1]:""));a.push(e)}return Promise.allSettled(a.map(t=>e.queryFeatureCount({whereClause:t,view:l,filter:o,signal:r})))}export{$ as defaultNumBins,z as ensureFeaturesJSON,O as generateBinParams,ee as getBins,Q as getDomainsForFields,k as getFeatureReductionFields,b as getFieldExpr,N as getHistogramFromFeatureSet,C as getMissingFields,q as getMissingFieldsForBinning,_ as getPredominantCategoriesFromUVInfos,A as getSQLExpressionForDateOrTimeField,j as getSummaryStatisticsFromFeatureSet,G as getSummaryStatsPivotQuery,Z as getSummaryStatsQuery,H as getSummaryStatsQueryForFields,K as getUVQuery,U as getUniqueValuesFromFeatureSet,W as getViewInfoParams,B as msForTimeOnlyFieldSQL,M as msSinceUnixEpochSQL,X as updateQueryWithFeatureFilter};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{getAssetUrl as e}from"../assets.js";import{fetchMessageBundle as r}from"../intl/messages.js";async function s(e){if(!e)return;const s=e.includes("-vector")?e.slice(0,e.indexOf("-vector")):e.includes("-3d")?e.slice(0,e.indexOf("-3d")):e,a=await r("esri/t9n/basemaps");return a[e]||a[s]}const a={satellite:{id:"satellite",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/satellite.jpg")},baseMapLayers:[{id:"satellite-base-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Imagery",showLegend:!1,visibility:!0,opacity:1}]},hybrid:{id:"hybrid",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/hybrid.jpg")},baseMapLayers:[{id:"hybrid-base-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Imagery",showLegend:!1,visibility:!0,opacity:1},{id:"hybrid-reference-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/30d6b8271e1849cd9c3042060001f425/resources/styles/root.json",layerType:"VectorTileLayer",title:"Hybrid Reference Layer",isReference:!0,showLegend:!1,visibility:!0,opacity:1}]},terrain:{id:"terrain",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/terrain.jpg")},baseMapLayers:[{id:"terrain-hillshade",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Elevation/World_Hillshade/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Hillshade",showLegend:!1},{id:"terrain-base",styleUrl:"https://www.arcgis.com/sharing/rest/content/items/33064a20de0c48d2bb61efa8faca93a8/resources/styles/root.json",layerType:"VectorTileLayer",title:"World Terrain Base"},{id:"terrain-reference",styleUrl:"https://www.arcgis.com/sharing/rest/content/items/14fbc125ccc9488888b014db09f35f67/resources/styles/root.json",layerType:"VectorTileLayer",title:"World Reference Reference",isReference:!0}]},oceans:{id:"oceans",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/oceans.jpg")},baseMapLayers:[{id:"oceans-base-layer",url:"//services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Ocean Base",showLegend:!1,visibility:!0,opacity:1},{id:"oceans-reference-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/94329802cbfa44a18f423e6f1a0b875c/resources/styles/root.json",layerType:"VectorTileLayer",title:"World Ocean Reference",isReference:!0,showLegend:!1,visibility:!0,opacity:1}]},osm:{id:"osm",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/osm.jpg")},baseMapLayers:[{id:"osm-base-layer",layerType:"OpenStreetMap",title:"Open Street Map",showLegend:!1,visibility:!0,opacity:1}]},"dark-gray-vector":{id:"dark-gray-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/dark-gray-vector.jpg")},baseMapLayers:[{id:"dark-gray-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/5e9b3685f4c24d8781073dd928ebda50/resources/styles/root.json",layerType:"VectorTileLayer",title:"Dark Gray Base",visibility:!0,opacity:1},{id:"dark-gray-reference-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/747cb7a5329c478cbe6981076cc879c5/resources/styles/root.json",layerType:"VectorTileLayer",title:"Dark Gray Reference",isReference:!0,visibility:!0,opacity:1}]},get"dark-gray"(){return{...this["dark-gray-vector"],id:"dark-gray"}},"gray-vector":{id:"gray-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/gray-vector.jpg")},baseMapLayers:[{id:"gray-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/291da5eab3a0412593b66d384379f89f/resources/styles/root.json",layerType:"VectorTileLayer",title:"Light Gray Base",visibility:!0,opacity:1},{id:"gray-reference-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/1768e8369a214dfab4e2167d5c5f2454/resources/styles/root.json",layerType:"VectorTileLayer",title:"Light Gray Reference",isReference:!0,visibility:!0,opacity:1}]},get gray(){return{...this["gray-vector"],id:"gray"}},"streets-vector":{id:"streets-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/streets-vector.jpg")},baseMapLayers:[{id:"streets-vector-base-layer",styleUrl:"//cdn.arcgis.com/sharing/rest/content/items/de26a3cf4cc9451298ea173c4b324736/resources/styles/root.json",layerType:"VectorTileLayer",title:"World Streets",visibility:!0,opacity:1}]},get streets(){return{...this["streets-vector"],id:"streets"}},"topo-vector":{id:"topo-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/topo-vector.jpg")},baseMapLayers:[{id:"world-hillshade-layer",url:"//services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Hillshade",showLegend:!1,visibility:!0,opacity:1},{id:"topo-vector-base-layer",styleUrl:"//cdn.arcgis.com/sharing/rest/content/items/7dc6cea0b1764a1f9af2e679f642f0f5/resources/styles/root.json",layerType:"VectorTileLayer",title:"World Topo",visibility:!0,opacity:1}]},get topo(){return{...this["topo-vector"],id:"topo"}},"streets-night-vector":{id:"streets-night-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/streets-night.jpg")},baseMapLayers:[{id:"streets-night-vector-base-layer",styleUrl:"//cdn.arcgis.com/sharing/rest/content/items/86f556a2d1fd468181855a35e344567f/resources/styles/root.json",layerType:"VectorTileLayer",title:"World Streets Night",visibility:!0,opacity:1}]},"streets-relief-vector":{id:"streets-relief-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/streets-relief.jpg")},baseMapLayers:[{id:"world-hillshade-layer",url:"//services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Hillshade",showLegend:!1,visibility:!0,opacity:1},{id:"streets-relief-vector-base-layer",styleUrl:"//www.arcgis.com/sharing/rest/content/items/b266e6d17fc345b498345613930fbd76/resources/styles/root.json",title:"World Streets Relief",layerType:"VectorTileLayer",visibility:!0,opacity:1}]},"streets-navigation-vector":{id:"streets-navigation-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/streets-navigation.jpg")},baseMapLayers:[{id:"streets-navigation-vector-base-layer",styleUrl:"//cdn.arcgis.com/sharing/rest/content/items/63c47b7177f946b49902c24129b87252/resources/styles/root.json",layerType:"VectorTileLayer",title:"World Streets Navigation",visibility:!0,opacity:1}]},"topo-3d":{id:"topo-3d",is3d:!0,get thumbnailUrl(){return e("esri/images/basemap/topo-3d.png")},baseMapLayers:[{id:"topo-3d-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/d309c87e9f8c46a0af638d0533193e9b/resources/styles/root.json",layerType:"VectorTileLayer",title:"Topographic",visibility:!0,opacity:1},{id:"topo-3d-trees",title:"Trees",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Open3D_Trees_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"topo-3d-places-and-labels",title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Open3D_DarkLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"topo-3d-buildings",title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Esri3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]},"navigation-3d":{id:"navigation-3d",is3d:!0,get thumbnailUrl(){return e("esri/images/basemap/navigation-3d.jpg")},baseMapLayers:[{id:"navigation-3d-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/dbcfc899c38945d5b42416329e31df2a/resources/styles/root.json",layerType:"VectorTileLayer",title:"Navigation",visibility:!0,opacity:1},{id:"navigation-3d-places-and-labels",title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Open3D_DarkLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"navigation-3d-buildings",title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Esri3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]},"streets-3d":{id:"streets-3d",is3d:!0,get thumbnailUrl(){return e("esri/images/basemap/streets-3d.png")},baseMapLayers:[{id:"streets-3d-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/204b38a0b9b24b0fac373167db16c5cd/resources/styles/root.json",layerType:"VectorTileLayer",title:"Streets",visibility:!0,opacity:1},{id:"streets-3d-places-and-labels",title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Open3D_DarkLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"streets-3d-buildings",title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Esri3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]},"osm-3d":{id:"osm-3d",is3d:!0,get thumbnailUrl(){return e("esri/images/basemap/osm-3d.png")},baseMapLayers:[{id:"osm-3d-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/4694cc30a67a434f80d09e557e74413d/resources/styles/root.json",layerType:"VectorTileLayer",title:"OpenStreetMap Style",visibility:!0,opacity:1},{id:"osm-3d-trees",title:"Trees",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Open3D_Trees_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"osm-3d-places-and-labels",title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Open3D_DarkLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"osm-3d-buildings",title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Open3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]},"gray-3d":{id:"gray-3d",is3d:!0,get thumbnailUrl(){return e("esri/images/basemap/gray-3d.png")},baseMapLayers:[{id:"gray-3d-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/75610658508d4d6e99298abaac8aff62/resources/styles/root.json",layerType:"VectorTileLayer",title:"Light Gray Canvas",visibility:!0,opacity:1},{id:"gray-3d-places-and-labels",title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Open3D_DarkLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"gray-3d-buildings",title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Esri3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]},"navigation-dark-3d":{id:"navigation-dark-3d",itemId:"84f9f68a3b6e4f68b09ddf9cdef8cb9f",is3d:!0,baseMapLayers:[{id:"navigation-dark-3d-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/6a8f24366a8b42abb2535d8f14777768/resources/styles/root.json",layerType:"VectorTileLayer",title:"Navigation (Dark)"},{id:"navigation-dark-3d-places-and-labels",title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Open3D_LightLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"navigation-dark-3d-buildings",title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Esri3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]},"streets-dark-3d":{id:"streets-dark-3d",itemId:"0281b25f75b24ca9b8835c6285cef9c2",is3d:!0,baseMapLayers:[{id:"streets-dark-3d-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/9a8a322ab26f412fa4c299039f441ad7/resources/styles/root.json",layerType:"VectorTileLayer",title:"Streets (Dark)"},{id:"streets-dark-3d-places-and-labels",title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Open3D_LightLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"streets-dark-3d-buildings",title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Esri3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]},"dark-gray-3d":{id:"dark-gray-3d",itemId:"da21f8d16bcd4bd392a06212e121de32",is3d:!0,baseMapLayers:[{id:"dark-gray-3d-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/e6b230fe483b43f390a7e767731d52d6/resources/styles/root.json",layerType:"VectorTileLayer",title:"Dark Gray Canvas"},{id:"dark-gray-3d-places-and-labels",title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Open3D_LightLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"dark-gray-3d-buildings",title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Esri3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]}};export{a as esriBasemapDefinitions,s as getBasemapTitle};
2
+ import{getAssetUrl as e}from"../assets.js";import{fetchMessageBundle as r}from"../intl.js";async function s(e){if(!e)return;const s=e.includes("-vector")?e.slice(0,e.indexOf("-vector")):e.includes("-3d")?e.slice(0,e.indexOf("-3d")):e,a=await r("esri/t9n/basemaps");return a[e]||a[s]}const a={satellite:{id:"satellite",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/satellite.jpg")},baseMapLayers:[{id:"satellite-base-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Imagery",showLegend:!1,visibility:!0,opacity:1}]},hybrid:{id:"hybrid",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/hybrid.jpg")},baseMapLayers:[{id:"hybrid-base-layer",url:"//services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Imagery",showLegend:!1,visibility:!0,opacity:1},{id:"hybrid-reference-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/30d6b8271e1849cd9c3042060001f425/resources/styles/root.json",layerType:"VectorTileLayer",title:"Hybrid Reference Layer",isReference:!0,showLegend:!1,visibility:!0,opacity:1}]},terrain:{id:"terrain",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/terrain.jpg")},baseMapLayers:[{id:"terrain-hillshade",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Elevation/World_Hillshade/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Hillshade",showLegend:!1},{id:"terrain-base",styleUrl:"https://www.arcgis.com/sharing/rest/content/items/33064a20de0c48d2bb61efa8faca93a8/resources/styles/root.json",layerType:"VectorTileLayer",title:"World Terrain Base"},{id:"terrain-reference",styleUrl:"https://www.arcgis.com/sharing/rest/content/items/14fbc125ccc9488888b014db09f35f67/resources/styles/root.json",layerType:"VectorTileLayer",title:"World Reference Reference",isReference:!0}]},oceans:{id:"oceans",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/oceans.jpg")},baseMapLayers:[{id:"oceans-base-layer",url:"//services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Ocean Base",showLegend:!1,visibility:!0,opacity:1},{id:"oceans-reference-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/94329802cbfa44a18f423e6f1a0b875c/resources/styles/root.json",layerType:"VectorTileLayer",title:"World Ocean Reference",isReference:!0,showLegend:!1,visibility:!0,opacity:1}]},osm:{id:"osm",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/osm.jpg")},baseMapLayers:[{id:"osm-base-layer",layerType:"OpenStreetMap",title:"Open Street Map",showLegend:!1,visibility:!0,opacity:1}]},"dark-gray-vector":{id:"dark-gray-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/dark-gray-vector.jpg")},baseMapLayers:[{id:"dark-gray-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/5e9b3685f4c24d8781073dd928ebda50/resources/styles/root.json",layerType:"VectorTileLayer",title:"Dark Gray Base",visibility:!0,opacity:1},{id:"dark-gray-reference-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/747cb7a5329c478cbe6981076cc879c5/resources/styles/root.json",layerType:"VectorTileLayer",title:"Dark Gray Reference",isReference:!0,visibility:!0,opacity:1}]},get"dark-gray"(){return{...this["dark-gray-vector"],id:"dark-gray"}},"gray-vector":{id:"gray-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/gray-vector.jpg")},baseMapLayers:[{id:"gray-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/291da5eab3a0412593b66d384379f89f/resources/styles/root.json",layerType:"VectorTileLayer",title:"Light Gray Base",visibility:!0,opacity:1},{id:"gray-reference-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/1768e8369a214dfab4e2167d5c5f2454/resources/styles/root.json",layerType:"VectorTileLayer",title:"Light Gray Reference",isReference:!0,visibility:!0,opacity:1}]},get gray(){return{...this["gray-vector"],id:"gray"}},"streets-vector":{id:"streets-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/streets-vector.jpg")},baseMapLayers:[{id:"streets-vector-base-layer",styleUrl:"//cdn.arcgis.com/sharing/rest/content/items/de26a3cf4cc9451298ea173c4b324736/resources/styles/root.json",layerType:"VectorTileLayer",title:"World Streets",visibility:!0,opacity:1}]},get streets(){return{...this["streets-vector"],id:"streets"}},"topo-vector":{id:"topo-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/topo-vector.jpg")},baseMapLayers:[{id:"world-hillshade-layer",url:"//services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Hillshade",showLegend:!1,visibility:!0,opacity:1},{id:"topo-vector-base-layer",styleUrl:"//cdn.arcgis.com/sharing/rest/content/items/7dc6cea0b1764a1f9af2e679f642f0f5/resources/styles/root.json",layerType:"VectorTileLayer",title:"World Topo",visibility:!0,opacity:1}]},get topo(){return{...this["topo-vector"],id:"topo"}},"streets-night-vector":{id:"streets-night-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/streets-night.jpg")},baseMapLayers:[{id:"streets-night-vector-base-layer",styleUrl:"//cdn.arcgis.com/sharing/rest/content/items/86f556a2d1fd468181855a35e344567f/resources/styles/root.json",layerType:"VectorTileLayer",title:"World Streets Night",visibility:!0,opacity:1}]},"streets-relief-vector":{id:"streets-relief-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/streets-relief.jpg")},baseMapLayers:[{id:"world-hillshade-layer",url:"//services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",layerType:"ArcGISTiledMapServiceLayer",title:"World Hillshade",showLegend:!1,visibility:!0,opacity:1},{id:"streets-relief-vector-base-layer",styleUrl:"//www.arcgis.com/sharing/rest/content/items/b266e6d17fc345b498345613930fbd76/resources/styles/root.json",title:"World Streets Relief",layerType:"VectorTileLayer",visibility:!0,opacity:1}]},"streets-navigation-vector":{id:"streets-navigation-vector",classic:!0,get thumbnailUrl(){return e("esri/images/basemap/streets-navigation.jpg")},baseMapLayers:[{id:"streets-navigation-vector-base-layer",styleUrl:"//cdn.arcgis.com/sharing/rest/content/items/63c47b7177f946b49902c24129b87252/resources/styles/root.json",layerType:"VectorTileLayer",title:"World Streets Navigation",visibility:!0,opacity:1}]},"topo-3d":{id:"topo-3d",is3d:!0,get thumbnailUrl(){return e("esri/images/basemap/topo-3d.png")},baseMapLayers:[{id:"topo-3d-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/d309c87e9f8c46a0af638d0533193e9b/resources/styles/root.json",layerType:"VectorTileLayer",title:"Topographic",visibility:!0,opacity:1},{id:"topo-3d-trees",title:"Trees",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Open3D_Trees_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"topo-3d-places-and-labels",title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Open3D_DarkLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"topo-3d-buildings",title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Esri3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]},"navigation-3d":{id:"navigation-3d",is3d:!0,get thumbnailUrl(){return e("esri/images/basemap/navigation-3d.jpg")},baseMapLayers:[{id:"navigation-3d-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/dbcfc899c38945d5b42416329e31df2a/resources/styles/root.json",layerType:"VectorTileLayer",title:"Navigation",visibility:!0,opacity:1},{id:"navigation-3d-places-and-labels",title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Open3D_DarkLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"navigation-3d-buildings",title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Esri3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]},"streets-3d":{id:"streets-3d",is3d:!0,get thumbnailUrl(){return e("esri/images/basemap/streets-3d.png")},baseMapLayers:[{id:"streets-3d-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/204b38a0b9b24b0fac373167db16c5cd/resources/styles/root.json",layerType:"VectorTileLayer",title:"Streets",visibility:!0,opacity:1},{id:"streets-3d-places-and-labels",title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Open3D_DarkLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"streets-3d-buildings",title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Esri3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]},"osm-3d":{id:"osm-3d",is3d:!0,get thumbnailUrl(){return e("esri/images/basemap/osm-3d.png")},baseMapLayers:[{id:"osm-3d-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/4694cc30a67a434f80d09e557e74413d/resources/styles/root.json",layerType:"VectorTileLayer",title:"OpenStreetMap Style",visibility:!0,opacity:1},{id:"osm-3d-trees",title:"Trees",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Open3D_Trees_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"osm-3d-places-and-labels",title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Open3D_DarkLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"osm-3d-buildings",title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Open3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]},"gray-3d":{id:"gray-3d",is3d:!0,get thumbnailUrl(){return e("esri/images/basemap/gray-3d.png")},baseMapLayers:[{id:"gray-3d-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/75610658508d4d6e99298abaac8aff62/resources/styles/root.json",layerType:"VectorTileLayer",title:"Light Gray Canvas",visibility:!0,opacity:1},{id:"gray-3d-places-and-labels",title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Open3D_DarkLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"gray-3d-buildings",title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Esri3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]},"navigation-dark-3d":{id:"navigation-dark-3d",itemId:"84f9f68a3b6e4f68b09ddf9cdef8cb9f",is3d:!0,baseMapLayers:[{id:"navigation-dark-3d-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/6a8f24366a8b42abb2535d8f14777768/resources/styles/root.json",layerType:"VectorTileLayer",title:"Navigation (Dark)"},{id:"navigation-dark-3d-places-and-labels",title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Open3D_LightLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"navigation-dark-3d-buildings",title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Esri3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]},"streets-dark-3d":{id:"streets-dark-3d",itemId:"0281b25f75b24ca9b8835c6285cef9c2",is3d:!0,baseMapLayers:[{id:"streets-dark-3d-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/9a8a322ab26f412fa4c299039f441ad7/resources/styles/root.json",layerType:"VectorTileLayer",title:"Streets (Dark)"},{id:"streets-dark-3d-places-and-labels",title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Open3D_LightLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"streets-dark-3d-buildings",title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Esri3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]},"dark-gray-3d":{id:"dark-gray-3d",itemId:"da21f8d16bcd4bd392a06212e121de32",is3d:!0,baseMapLayers:[{id:"dark-gray-3d-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/e6b230fe483b43f390a7e767731d52d6/resources/styles/root.json",layerType:"VectorTileLayer",title:"Dark Gray Canvas"},{id:"dark-gray-3d-places-and-labels",title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Open3D_LightLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"dark-gray-3d-buildings",title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Esri3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]}};export{a as esriBasemapDefinitions,s as getBasemapTitle};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- const b="20260408",a="a8ff77bdabb8ef264a3d12b37aa15d36d3e5b2b4";export{b as buildDate,a as commitHash};
2
+ const b="20260409",c="2467f96e49f949d1b82c6b40fb9969bc91aa5151";export{b as buildDate,c as commitHash};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{isRGB as e}from"../../core/colorUtils.js";import{getFontFamily as t}from"../../core/fontUtils.js";import"../../core/has.js";import{clone as r}from"../../core/lang.js";import i from"../../core/Logger.js";import{pt2px as o,px2pt as a}from"../../core/screenUtils.js";import{numericHash as s}from"../../core/string.js";import{checkForAnimations as l,getAnimationParams as n,handleAbsoluteAnchor as p,handleMarker as m,handleRelativeAnchor as c,getFrameTranslation as d,translate as y,getStaticParam as f,shouldUseAnimatedPath as h}from"./animationUtils.js";import{forEachSymbolLayer as u,CIMSymbolHelper as v}from"./CIMSymbolHelper.js";import{antialiasingOutlineFillSettings as O}from"./constants.js";import{defaultCIMValues as g}from"./defaultCIMValues.js";import{fitVectorMarker as S}from"./fitVectorMarker.js";import{OverrideHelper as _}from"./OverrideHelper.js";import{getExtent as M,getSDFMetrics as k,getSDFDimensions as C}from"./SDFHelper.js";import{CIMSymbolUnits as b}from"./types.js";import{colorToArray as x,normalizeAlpha as P,getSize as z,isCIMMarkerStrokePlacement as I,hasStrokeLayer as E,getTintColor as L,getNumericValue as V,normalizePrimitiveOverrideProps as N,getDefaultCIMValue as R,getEnum as A,getFillColor as T,getStrokeColor as w,fromCIMFontDecoration as G,fromCIMFontStyle as F,getStrokeWidth as X,fromCIMVerticalAlignment as j,fromCIMHorizontalAlignment as W,getTextCasing as Y,isValidCIMValue as D,uncapitalize as U}from"./utils.js";import{EffectHelper as H}from"./effects/EffectHelper.js";import{rasterizedVectorMarkerMinSize as J,randomInsidePolygonTextureSize as B}from"../../views/2d/engine/webgl/definitions.js";const q=()=>i.getLogger("esri.symbols.cim.cimAnalyzer");function K(e){const t=e.markerPlacement;return t&&t.angleToLine?1:0}class Q{constructor(e){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[],this._hasTextStringTemplates=!1,e&&(this._resourceManager=e)}analyzeSymbolReference(t,r,i){if(this._cimLayers=i??[],!t)return this._cimLayers;if(this._reset(),this._hasTextStringTemplates=t.hasTextStringTemplates??!1,t.primitiveOverrides){this._primitiveOverrides=t.primitiveOverrides;for(const t of this._primitiveOverrides){const r=t.valueExpressionInfo;if(r)this._setPoMap(t.primitiveName,t.propertyName,r);else if(null!=t.value){let r=t.value;t.propertyName.includes("Color")&&(e(r)&&(r=x(r)),r=P(r)),this._setPoMap(t.primitiveName,t.propertyName,r)}}}return this._analyzeSymbol(t.symbol,r),this._cimLayers}_reset(){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[]}_analyzeSymbol(e,t){switch(e?.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":this._analyzeMultiLayerSymbol(e,t)}}_analyzeMultiLayerSymbol(e,t){const r=e?.symbolLayers;if(!r)return;for(let l=0;l<r.length;l++){const e=r[l];"CIMVectorMarker"===e.type&&(r[l]=S(e))}const i=e.effects;let o=0;const a=z(e)??0;if("CIMPointSymbol"===e.type&&"Map"===e.angleAlignment&&(o=1),oe(r,i))return this._analyzeCompositeOutlineFill(r,i,a);let s={transform:[0,0,0,1],fromColor:[1,1,1,1],toColor:[1,1,1,1],colorMix:[0,0,0,0],toOpacity:[1,1,1,1],opacityMix:[0,0,0,0],shift:[1,1,1,1],hasAnimations:l(e),hasShiftAnimation:!1,hasMotionAnimations:!1};s=n(this._poMap,e,s);const p="CIMPolygonSymbol"===e.type;let m=r.length;for(;m--;){const l=r[m];if(!l||!1===l.enable)continue;let n;i?.length&&(n=[...i]);const c=l.effects;c?.length&&(i?n.push(...c):n=[...c]);let d=null;if(n){d=[];for(const e of n){const t=_.findEffectOverrides(e,this._primitiveOverrides);t&&d.push(t)}}const y=[];switch(_.findApplicableOverrides(l,this._primitiveOverrides,y),l.type){case"CIMSolidFill":this._analyzeSolidFill(l,d,s,E(r));break;case"CIMPictureFill":this._analyzePictureFill(l,d,s);break;case"CIMHatchFill":this._analyzeHatchFill(l,d,s);break;case"CIMGradientFill":this._analyzeGradientFill(l,d);break;case"CIMSolidStroke":this._analyzeSolidStroke(l,d,p,a,s);break;case"CIMPictureStroke":this._analyzePictureStroke(l,d,p,a,s);break;case"CIMGradientStroke":this._analyzeGradientStroke(l,d,p,a);break;case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":{"CIMLineSymbol"!==e.type&&"CIMPolygonSymbol"!==e.type||(o=K(l));const r=[],i=l.primitiveName;i&&r.push(i);const n=p&&I(l.markerPlacement);this._analyzeMarker(l,d,null,r,o,a,t,[],s,!1,n);break}default:q().error("Cannot analyze CIM layer",l.type)}}}_analyzeSolidFill(e,t,r,i){const{primitiveName:o,type:a}=e,s=P(e.color),l=n(this._poMap,e,r);if(!i&&t?.some(e=>"CIMGeometricEffectTaperedPolygon"===e.effect.type)){const r=this._getValueOrOverrideExpression(a,o,"Color",s);return void this._cimLayers.push({type:"outlineFill",colorLocked:!!e.colorLocked,color:r,effects:t,outlineColor:r,outlineColorLocked:!!e.colorLocked,...O,outlineEffects:t})}this._cimLayers.push({type:"fill",spriteRasterizationParam:null,colorLocked:!!e.colorLocked,color:this._getValueOrOverrideExpression(a,o,"Color",s),height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,effects:t,applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!1,animationParams:se(l)})}_analyzePictureFill(e,t,r){const{primitiveName:i,type:o}=e,a=L(e),s=V(e.height,g.CIMPictureFill.height);let l=V(e.scaleX,1);if("width"in e&&"number"==typeof e.width){const t=e.width;let r=1;const i=this._resourceManager.getResource(e.url);null!=i&&(r=i.width/i.height),l/=r*(s/t)}const p={type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(i,o)},m=n(this._poMap,e,r);this._cimLayers.push({type:"fill",spriteRasterizationParam:p,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(o,i,"TintColor",a),height:this._getValueOrOverrideExpression(o,i,"Height",s),scaleX:this._getValueOrOverrideExpression(o,i,"ScaleX",l),angle:this._getValueOrOverrideExpression(o,i,"Rotation",V(e.rotation)),offsetX:this._getValueOrOverrideExpression(o,i,"OffsetX",V(e.offsetX)),offsetY:this._getValueOrOverrideExpression(o,i,"OffsetY",V(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!1,hasUnresolvedReplacementColor:!1,animationParams:se(m)})}_analyzeHatchFill(e,t,r){const{primitiveName:i,type:o}=e,a=n(this._poMap,e,r),s=this._analyzeMaterialOverrides(i,["Rotation","OffsetX","OffsetY"]),l=N(s);let p=[255,255,255,1],m=!1;if(e.lineSymbol?.symbolLayers)for(const n of e.lineSymbol.symbolLayers){if("CIMSolidStroke"!==n.type)continue;const e=n.primitiveName??i;m||!e||n.colorLocked||null==this._poMap[e]?.Color&&null==this._poMap[e]?.StrokeColor||(p=P(n.color),p=this._maybeGetValueOrOverrideExpression(e,"StrokeColor")??this._getValueOrOverrideExpression(o,e,"Color",p),m=!0);const t=this._maybeGetValueOrOverrideExpression(e,"StrokeWidth");if(t){let r=null,i=null;"number"==typeof t?r=t:i=t.valueExpressionInfo;let a=l.find(e=>"strokeWidth"===e.propertyName);a?a.propertyName="width":(a={type:"CIMPrimitiveOverride",primitiveName:e,propertyName:"width",valueExpressionInfo:i,value:r,defaultValue:R(o,"width")},l.push(a))}}const c={type:"sprite-rasterization-param",resource:e,overrides:l};this._cimLayers.push({type:"fill",spriteRasterizationParam:c,colorLocked:!!e.colorLocked,effects:t,color:p,height:this._getValueOrOverrideExpression(o,i,"Separation",V(e.separation,g.CIMHatchFill.separation)),scaleX:1,angle:this._getValueOrOverrideExpression(o,i,"Rotation",V(e.rotation)),offsetX:this._getValueOrOverrideExpression(o,i,"OffsetX",V(e.offsetX)),offsetY:this._getValueOrOverrideExpression(o,i,"OffsetY",V(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!m,animationParams:se(a)})}_analyzeGradientFill(e,t){const{angle:r,gradientMethod:i,gradientSize:o,gradientSizeUnits:a,gradientType:s,interval:l,primitiveName:n,type:p}=e,m=g.CIMGradientFill,c=e.colorRamp;this._cimLayers.push({type:"gradientFill",spriteRasterizationParam:{type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(n,p)},colorLocked:!1,effects:t,color:[255,255,255,1],gradientMethod:this._getValueOrOverrideExpression(p,n,"GradientMethod",i??"Linear"),angle:this._getValueOrOverrideExpression(p,n,"Angle",V(r,m.angle)),gradientType:this._getValueOrOverrideExpression(p,n,"GradientType",s??m.gradientType),interval:this._getValueOrOverrideExpression(p,n,"Interval",V(l,"CIMFixedColorRamp"===c.type?c.colors.length:m.interval)),gradientSize:this._getValueOrOverrideExpression(p,n,"GradientSize",V(o,m.gradientSize)),gradientSizeUnits:"Absolute"===a?b.Absolute:"Relative"===a?b.Relative:m.gradientSizeUnits})}_analyzeCompositeOutlineFill(e,t,r){const i=e.find(e=>"CIMSolidFill"===e.type),o=e.find(e=>"CIMSolidStroke"===e.type);if(null==i||null==o)return;const a=[...t??[],...i.effects??[]].map(e=>_.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>null!=e),s=[...t??[],...o.effects??[]].map(e=>_.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>null!=e),l=V(o.width,g.CIMSolidStroke.width),n=A(o.capStyle,g.CIMSolidStroke.capstyle),p=A(o.joinStyle,g.CIMSolidStroke.joinstyle),m=o.miterLimit;this._cimLayers.push({type:"outlineFill",colorLocked:!!i.colorLocked,color:this._getValueOrOverrideExpression(i.type,i.primitiveName,"Color",P(i.color)),effects:a,outlineColorLocked:!!o.colorLocked,outlineColor:this._getValueOrOverrideExpression(o.type,o.primitiveName,"Color",P(o.color)),outlineWidth:this._getValueOrOverrideExpression(o.type,o.primitiveName,"Width",l),cap:this._getValueOrOverrideExpression(o.type,o.primitiveName,"CapStyle",n),join:this._getValueOrOverrideExpression(o.type,o.primitiveName,"JoinStyle",p),miterLimit:m&&this._getValueOrOverrideExpression(o.type,o.primitiveName,"MiterLimit",m),referenceWidth:r,outlineEffects:s})}_analyzeSolidStroke(e,t,r,i,o){const{primitiveName:a,type:s}=e,l=P(e.color),p=V(e.width,g.CIMSolidStroke.width),m=A(e.capStyle,g.CIMSolidStroke.capstyle),c=A(e.joinStyle,g.CIMSolidStroke.joinstyle),d=e.miterLimit;let y,f,h,u,v=[];if(this._analyzePrimitiveOverrides(a,t,null,null)&&(v=this._getPrimitiveMaterialOverrides(a,s)),t&&Array.isArray(t)&&t.length>0){const e=t[t.length-1].effect;e&&"CIMGeometricEffectDashes"===e.type&&"NoConstraint"===e.lineDashEnding&&(y=e.dashTemplate,f=e.scaleDash,h=e.offsetAlongLine,u=e.primitiveName,(t=[...t]).pop())}null!=u&&v.push(...this._getPrimitiveMaterialOverrides(u,s).filter(e=>"dashTemplate"===e.propertyName));const O=void 0!==y?{type:"sprite-rasterization-param",resource:{type:"dash",dashTemplate:y,primitiveName:u},overrides:v}:null,S=n(this._poMap,e,o);this._cimLayers.push({type:"line",spriteRasterizationParam:O,isOutline:r,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(s,a,"Color",l),width:this._getValueOrOverrideExpression(s,a,"Width",p),cap:this._getValueOrOverrideExpression(s,a,"CapStyle",m),join:this._getValueOrOverrideExpression(s,a,"JoinStyle",c),miterLimit:d&&this._getValueOrOverrideExpression(s,a,"MiterLimit",d),referenceWidth:i,zOrder:$(e.name),dashTemplate:this._maybeGetValueOrOverrideExpression(u,"DashTemplate")??y,offsetAlongLine:this._getValueOrOverrideExpression(s,u,"OffsetAlongLine",h??0),scaleDash:f,sampleAlphaOnly:!0,animationParams:se(S)})}_analyzePictureStroke(e,t,r,i,o){const{primitiveName:a,type:s}=e,l=L(e),p=V(e.width,g.CIMPictureStroke.width),m=A(e.capStyle,g.CIMPictureStroke.capstyle),c=A(e.joinStyle,g.CIMPictureStroke.joinstyle),d=e.miterLimit,y={type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(a,s)},f=n(this._poMap,e,o);this._cimLayers.push({type:"line",spriteRasterizationParam:y,isOutline:r,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(s,a,"TintColor",l),width:this._getValueOrOverrideExpression(s,a,"Width",p),cap:this._getValueOrOverrideExpression(s,a,"CapStyle",m),join:this._getValueOrOverrideExpression(s,a,"JoinStyle",c),miterLimit:d&&this._getValueOrOverrideExpression(s,a,"MiterLimit",d),referenceWidth:i,zOrder:$(e.name),dashTemplate:null,scaleDash:!1,sampleAlphaOnly:!1,animationParams:se(f)})}_analyzeGradientStroke(e,t,r,i){const{gradientMethod:o,gradientSize:a,gradientSizeUnits:s,gradientType:l,interval:n,primitiveName:p,type:m}=e,c=g.CIMGradientStroke,d=V(e.width,c.width),y=A(e.capStyle,c.capstyle),f=A(e.joinStyle,c.joinstyle),h=e.miterLimit,u=e.colorRamp;this._cimLayers.push({type:"gradientStroke",spriteRasterizationParam:{type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(p,m)},colorLocked:!!e.colorLocked,effects:t,color:[255,255,255,1],width:this._getValueOrOverrideExpression(m,p,"Width",d),cap:this._getValueOrOverrideExpression(m,p,"CapStyle",y),join:this._getValueOrOverrideExpression(m,p,"JoinStyle",f),miterLimit:h&&this._getValueOrOverrideExpression(m,p,"MiterLimit",h),referenceWidth:i,isOutline:r,gradientMethod:this._getValueOrOverrideExpression(m,p,"GradientMethod",o??c.gradientMethod),gradientType:this._getValueOrOverrideExpression(m,p,"GradientType",l??c.gradientType),interval:this._getValueOrOverrideExpression(m,p,"Interval",V(n,"CIMFixedColorRamp"===u.type?u.colors.length:c.interval)),gradientSize:this._getValueOrOverrideExpression(m,p,"GradientSize",V(a,c.gradientSize)),gradientSizeUnits:"Absolute"===s?b.Absolute:"Relative"===s?b.Relative:c.gradientSizeUnits})}_analyzeMarker(e,t,r,i,o,a,s,l,d,y=!1,f=!1){y||=!!e.colorLocked;let h=d;if(h=p(e,h),h=m(this._poMap,e,h),h=c(e,h),h=n(this._poMap,e,h),this._analyzeMarkerInsidePolygon(e,t,y,h))return;const u=V(e.size,g.CIMVectorMarker.size),v=V(e.rotation),O=V(e.offsetX),S=V(e.offsetY),{primitiveName:_,type:M}=e,k=this._getValueOrOverrideExpression(M,_,"Size",u),C=this._getValueOrOverrideExpression(M,_,"Rotation",v),b=this._getValueOrOverrideExpression(M,_,"OffsetX",O),x=this._getValueOrOverrideExpression(M,_,"OffsetY",S);switch(e.type){case"CIMPictureMarker":this._analyzePictureMarker(e,t,r,i,o,a,k,C,b,x,l,h,y,f);break;case"CIMVectorMarker":this._analyzeVectorMarker(e,t,r,i,o,a,k,C,b,x,l,h,s,y,f)}}_analyzeMarkerInsidePolygon(e,t,r,i){const{markerPlacement:o,type:s}=e;if(!o||"CIMMarkerPlacementInsidePolygon"!==o.type||i.hasMotionAnimations)return!1;if("CIMVectorMarker"===s||"CIMPictureMarker"===s){const r=e.primitiveName;if(r&&this._analyzePrimitiveOverrides([r],t,null,null))return!1;const i=o.primitiveName;if(i&&this._analyzePrimitiveOverrides([i],t,null,null))return!1;if("CIMVectorMarker"===s){const{markerGraphics:t}=e;if(t)for(const e of t){const{symbol:t}=e;if("CIMPolygonSymbol"===t?.type&&t.symbolLayers){const{symbolLayers:e}=t;for(const t of e)if("CIMSolidStroke"===t.type)return!1}}}else{const{animatedSymbolProperties:t}=e;if(t)return!1}}const l=Math.abs(o.stepX),n=Math.abs(o.stepY);if(0===l||0===n)return!0;let p,m;if("Random"===o.gridType){const e=a(B),t=Math.max(Math.floor(e/l),1);p=n*Math.max(Math.floor(e/n),1);m=t*l/p}else o.shiftOddRows?(p=2*n,m=l/n*.5):(p=n,m=l/n);const c=L(e),d="CIMCharacterMarker"===e.type?null:{type:"sprite-rasterization-param",resource:e,overrides:[]};return this._cimLayers.push({type:"fill",spriteRasterizationParam:d,colorLocked:r,effects:t,color:c,height:p,scaleX:m,angle:o.gridAngle??0,offsetX:V(o.offsetX),offsetY:V(o.offsetY),applyRandomOffset:"Random"===o.gridType,sampleAlphaOnly:"CIMPictureMarker"!==e.type,hasUnresolvedReplacementColor:!0,animationParams:se(i)}),!0}_analyzePictureMarker(e,t,i,o,a,l,n,p,m,c,d,y,f,h){const{animatedSymbolProperties:u,primitiveName:v,type:O}=e;let g=V(e.scaleX,1);const S=L(e);i||(i=this._createMarkerPlacementOverrideExpression(e.markerPlacement));const _=this._createGIFAnimatedSymbolPropertiesOverrideExpression(u),M=e.anchorPoint??{x:0,y:0};if("width"in e&&"number"==typeof e.width){const t=e.width;let r=1;const i=this._resourceManager.getResource(e.url);null!=i&&(r=i.width/i.height);g/=r*(V(e.size)/t)}const k=[...o];let C;e.primitiveName&&k.push(e.primitiveName),u||_?C={type:"animated",url:e.url,urlHash:"H"+s(e.url),playAnimation:e.animatedSymbolProperties?.playAnimation,reverseAnimation:e.animatedSymbolProperties?.reverseAnimation,randomizeStartTime:e.animatedSymbolProperties?.randomizeStartTime,randomizeStartSeed:e.animatedSymbolProperties?.randomizeStartSeed,startTimeOffset:e.animatedSymbolProperties?.startTimeOffset,duration:e.animatedSymbolProperties?.duration,repeatType:e.animatedSymbolProperties?.repeatType,repeatDelay:e.animatedSymbolProperties?.repeatDelay}:(C=r(e),C.markerPlacement=null);const b={type:"sprite-rasterization-param",resource:C,overrides:this._getMaterialOverrides(k,O)};_&&b.overrides.push(..._.overrides);const x=n;this._cimLayers.push({type:"marker",spriteRasterizationParam:b,colorLocked:f,effects:t,scaleSymbolsProportionally:!1,alignment:a,size:n,scaleX:this._getValueOrOverrideExpression(O,v,"ScaleX",g),rotation:p,offsetX:m,offsetY:c,transform:{type:"cim-marker-transform-param",params:d},color:this._getValueOrOverrideExpression(O,v,"TintColor",S),anchorPoint:{x:M.x,y:M.y},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,outlineColor:[0,0,0,0],outlineWidth:0,frameHeight:0,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:l,sizeRatio:1,isOutline:h,markerPlacement:i,animationParams:se(y),baseSize:x})}_analyzeVectorMarker(e,t,r,i,o,a,s,l,p,m,c,h,u,v,O){const g=e.markerGraphics;if(!g)return;const S=e.frame;let _=0;_=S?S.ymax-S.ymin:a;const M=!!e.scaleSymbolsProportionally;if(_){const t={offsetX:p,offsetY:m,rotation:l,size:s,frameHeight:_,rotateClockWise:!!e.rotateClockwise,absoluteAnchorPoint:!1,scaleSymbolsProportionally:M};c=[...c,t]}r||(r=this._createMarkerPlacementOverrideExpression(e.markerPlacement));for(const k of g)if(k){const s=k.symbol;if(!s)continue;const l=k.primitiveName;l&&i.push(l);let p,m=h;if(("CIMPointSymbol"===s.type||"CIMTextSymbol"===s.type)&&S){let t=0,r=0;const i=k.geometry;"x"in i&&"y"in i&&(t+=i.x-.5*(S.xmin+S.xmax),r+=i.y-.5*(S.ymin+S.ymax));const o=e.anchorPoint;let a=!1;o&&("Absolute"===e.anchorPointUnits?(t-=o.x,r-=o.y,a=!0):S&&(t-=(S.xmax-S.xmin)*o.x,r-=(S.ymax-S.ymin)*o.y));const s={offsetX:t,offsetY:r,rotation:0,size:0,frameHeight:0,rotateClockWise:!1,absoluteAnchorPoint:a,scaleSymbolsProportionally:M};p=[...c,s]}const g=k.geometry,[C,b]=d(g,S);switch(0===C&&0===b||(m=y(m,C,b)),"CIMPointSymbol"===s.type&&(m=n(this._poMap,s,m)),s.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":u||re(s)?(m={...m,transform:{type:"AnimatedTransform",relativeTranslation:!1,absoluteScale:!0,translation:f([0,0]),rotation:f(0),scale:f(_),parent:h.transform}},this._analyzeMultiLayerGraphicNonSDF(e,t,r,k,i,o,a,p??c,m,_,v,O)):this._analyzeMultiLayerGraphic(e,t,r,k,i,o,a,p??c,m,_,v,O);break;case"CIMTextSymbol":this._analyzeTextGraphic(t,r,k,i,o,a,p??c,v)}l&&i.pop()}}_analyzeMultiLayerGraphic(e,t,r,i,o,a,s,l,n,p,m,c){const d=i.symbol,y=d.symbolLayers;if(y){if(!te(y)||h(n))return ie(y)?(u(d,e=>{e.colorLocked&&(m=!0)}),void this._analyzeMultiLayerGraphicNonSDF(e,t,r,i,o,a,s,l,n,p,m,c)):void this._analyzeMarkerGraphicSymbolLayers(e,t,r,i,o,a,s,l,n,p,m,c);this._analyzeCompositeMarkerGraphic(e,t,r,i,y,a,s,l,p,m,c)}}_analyzeMarkerGraphicSymbolLayers(e,t,r,i,o,a,s,l,p,m,c,d){const y=i.symbol,f=y.symbolLayers;if(!f)return;const h=H.applyEffects(y.effects,i.geometry);if(!h)return;let u=f.length;for(;u--;){const y=f[u];if(!y||!1===y.enable)continue;const v=y.primitiveName;switch(v&&o.push(v),y.type){case"CIMSolidFill":case"CIMSolidStroke":{const o=H.applyEffects(y.effects,h),f=M(o);if(!f)continue;const u="Relative"!==e.anchorPointUnits,O="CIMSolidStroke"===y.type?y.width:0,{frameSizeRatio:S,anchorX:_,anchorY:b,widthRatio:x,sdfPaddingRatio:z,sdfTextureSize:I}=k(f,e.frame,e.size,e.anchorPoint,u,O,e.scaleSymbolsProportionally),E="CIMSolidFill"===y.type,L={type:"sdf",geometry:o,sdfPaddingRatio:z,asFill:E,sdfTextureSize:I},{path:N}=y,R=E?P(T(y)):null==N?P(w(y)):[0,0,0,0],A=E?[0,0,0,0]:P(w(y));if(!E&&!O)break;const G=i.primitiveName;let F=null;E&&!y.colorLocked&&(F=this._maybeGetValueOrOverrideExpression(G,"FillColor"));let X=null;E||y.colorLocked||(X=this._maybeGetValueOrOverrideExpression(G,"StrokeColor"));const j=F??this._getValueOrOverrideExpression(y.type,v,"Color",R),W=X??this._getValueOrOverrideExpression(y.type,v,"Color",A),Y=this._maybeGetValueOrOverrideExpression(G,"StrokeWidth")??this._getValueOrOverrideExpression(y.type,v,"Width",O),D=N?{type:"sprite-rasterization-param",resource:{type:"path",path:N,asFill:E},overrides:[]}:{type:"sprite-rasterization-param",resource:L,overrides:[]},U=n(this._poMap,y,p),J=V(e.size,g.CIMVectorMarker.size),B=this._getValueOrOverrideExpression(e.type,e.primitiveName,"Size",J);this._cimLayers.push({type:"marker",spriteRasterizationParam:D,colorLocked:!!y.colorLocked||!!c,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:_,y:b},isAbsoluteAnchorPoint:u,size:m,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:"cim-marker-transform-param",params:l},frameHeight:m,widthRatio:x,rotateClockwise:!1,referenceSize:s,sizeRatio:S,color:j,outlineColor:W,outlineWidth:Y,isOutline:d,markerPlacement:r,animationParams:se(U),isStroke:"CIMSolidFill"!==y.type,baseSize:B,...C(o,I,z)});break}case"CIMPictureMarker":case"CIMVectorMarker":if(y.markerPlacement){q().error("Error analyzing CIM, got unexpected marker placement");break}this._analyzeMarker(y,t,r,o,a,s,!1,l,p,c,d)}v&&o.pop()}}_analyzeTextGraphic(e,r,i,o,a,s,l,n){const p=[];_.findApplicableOverrides(i,this._primitiveOverrides,p);const m=i.geometry;if(!("x"in m)||!("y"in m))return;const c=i.symbol,d=G(c),y=F(c.fontStyleName),f=t(c.fontFamilyName);c.font={family:f,decoration:d,...y};const h=V(c.height,g.CIMTextSymbol.height),u=V(c.angle),v=V(c.offsetX),O=V(c.offsetY),{haloSymbol:S}=c,M=V(c.haloSize,0);let k=[0,0,0,0];if(S?.symbolLayers?.length){const e=S.symbolLayers;for(const t of e)if(t.color){k=this._getValueOrOverrideExpression(c?.haloSymbol?.type??"CIMPolygonSymbol",t.primitiveName,"Color",P(t.color));break}}const C=i.primitiveName;let b=[0,0,0,1],x=[0,0,0,0],z=0,I=!1;if(c.symbol?.symbolLayers)for(const t of c.symbol.symbolLayers){const e=t.primitiveName;if("CIMSolidStroke"===t.type)x=this._getValueOrOverrideExpression("CIMSolidStroke",e,"Color",P(t.color)),z=this._getValueOrOverrideExpression("CIMSolidStroke",e,"Width",X(t)??0);else if("CIMSolidFill"===t.type){const r=P(t.color);I=I??!!t.colorLocked,b=this._getValueOrOverrideExpression("CIMSolidFill",e??C,"Color",r)}}let E=null,L=null,N=null,R=null,A=null;C&&(E=this._maybeGetValueOrOverrideExpression(C,"TextSize"),L=this._maybeGetValueOrOverrideExpression(C,"TextAngle"),N=this._maybeGetValueOrOverrideExpression(C,"TextOffsetX"),R=this._maybeGetValueOrOverrideExpression(C,"TextOffsetY"),I||(A=this._maybeGetValueOrOverrideExpression(C,"FillColor")));const T=A??b;let w=null,Y=null,D=0;if("CIMBackgroundCallout"===c.callout?.type){const e=c.callout;if(e.backgroundSymbol){const t=e.backgroundSymbol.symbolLayers;if(t)for(const e of t)"CIMSolidFill"===e.type?w=P(e.color):"CIMSolidStroke"===e.type&&(Y=P(e.color),D=V(e.width,g.CIMSolidStroke.width))}}const U=this._getValueOrOverrideExpression(c.type,i.primitiveName,"TextString",i.textString??"");if(null==U)return;const{fontStyleName:H}=c,J=f+(H?"-"+H.toLowerCase():"-regular"),B=this._getMaterialOverrides(o,c.type);B.push(...this._getPrimitiveMaterialOverrides(i.primitiveName,c.type)),this._collectDictionaryTemplateOverrides(B,i);const q={type:"text-rasterization-param",resource:{type:"text",textString:i.textString??"",font:c.font,symbol:c,primitiveName:i.primitiveName},overrides:B};this._cimLayers.push({type:"text",lineWidth:c.lineWidth,textRasterizationParam:q,colorLocked:!!n||!!I,effects:e,alignment:a,anchorPoint:{x:0,y:0},isAbsoluteAnchorPoint:!1,fontName:J,decoration:d,haloSize:M,haloColor:k,weight:y.weight,style:y.style,size:E??h,angle:L??u,offsetX:N??v,offsetY:R??O,transform:{type:"cim-marker-transform-param",params:l},horizontalAlignment:W(c.horizontalAlignment),verticalAlignment:j(c.verticalAlignment),text:U,color:T,outlineColor:x,outlineSize:z,backgroundColor:w,borderLineColor:Y,borderLineWidth:D,referenceSize:s,sizeRatio:1,markerPlacement:r})}_collectDictionaryTemplateOverrides(e,t){if(t.textString&&this._hasTextStringTemplates){const r=Y(t.symbol);e.push({propertyName:"textString",defaultValue:"",valueExpressionInfo:{type:"dictionary-template",textCase:r,template:t.textString},primitiveName:t.primitiveName})}}_analyzeMultiLayerGraphicNonSDF(e,t,r,i,a,s,l,n,p,m,c,d){const y=Z(e,i),f=e.primitiveName,h=this._analyzeMaterialOverrides(f,["Rotation","OffsetX","OffsetY"]),u=N(h),[O,S,_]=v.getTextureAnchor(y,this._resourceManager,J),M=this._getMaterialOverrides(a,e.type);M.push(...u);const k={type:"sprite-rasterization-param",resource:{...y,avoidSDFRasterization:!0},overrides:M},C=V(e.size,g.CIMVectorMarker.size),b=this._getValueOrOverrideExpression(e.type,f,"Size",C);this._cimLayers.push({type:"marker",spriteRasterizationParam:k,colorLocked:c,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:s,anchorPoint:{x:O,y:S},isAbsoluteAnchorPoint:!1,size:m,rotation:0,offsetX:0,offsetY:0,transform:{type:"cim-marker-transform-param",params:n},color:[255,255,255,1],outlineColor:[0,0,0,0],outlineWidth:0,scaleX:1,frameHeight:m,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:l,sizeRatio:_/o(e.size),isOutline:d,markerPlacement:r,animationParams:se(p),baseSize:b})}_createMarkerPlacementOverrideExpression(e){if(!e)return null;const t=[];return _.findApplicableOverrides(e,this._primitiveOverrides,t),{type:"cim-marker-placement-param",placement:e,overrides:ae(t)}}_createGIFAnimatedSymbolPropertiesOverrideExpression(e){if(!e)return null;const t=[];return _.findApplicableOverrides(e,this._primitiveOverrides,t),{type:"cim-gif-animation-params",animation:e,overrides:ae(t)}}_analyzeCompositeMarkerGraphic(e,t,r,i,o,a,s,l,n,p,m){const c=i.geometry,d=o[0],y=o[1],f=M(c);if(!f)return;const h="Relative"!==e.anchorPointUnits,u=V(d.width,g.CIMSolidStroke.width),{frameSizeRatio:v,anchorX:O,anchorY:S,widthRatio:_,sdfPaddingRatio:C,sdfTextureSize:b}=k(f,e.frame,e.size,e.anchorPoint,h,u,e.scaleSymbolsProportionally),{path:x}=y,z=y.primitiveName,I=d.primitiveName,E=i.primitiveName;let L=null;y.colorLocked||p||(L=this._maybeGetValueOrOverrideExpression(E,"FillColor"));const N=L??this._getValueOrOverrideExpression(y.type,z,"Color",P(y.color));let R=null;d.colorLocked||p||(R=this._maybeGetValueOrOverrideExpression(E,"StrokeColor"));const A=R??this._getValueOrOverrideExpression(d.type,I,"Color",P(d.color)),T=this._maybeGetValueOrOverrideExpression(E,"StrokeWidth")??this._getValueOrOverrideExpression(d.type,I,"Width",u),w={type:"sprite-rasterization-param",resource:x?{type:"path",path:x,asFill:!0}:{type:"sdf",geometry:c,sdfTextureSize:b,sdfPaddingRatio:C,asFill:!0},overrides:[]};this._cimLayers.push({type:"marker",spriteRasterizationParam:w,colorLocked:p,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:O,y:S},isAbsoluteAnchorPoint:h,size:n,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:"cim-marker-transform-param",params:l},frameHeight:n,widthRatio:_,rotateClockwise:!1,referenceSize:s,sizeRatio:v,color:N,outlineColor:A,outlineWidth:T,isOutline:m,markerPlacement:r})}_setPoMap(e,t,r){let i;this._poMap[e]?i=this._poMap[e]:(i={},this._poMap[e]=i),i[t]=r}_maybeGetValueOrOverrideExpression(e,t,r){return this._getValueOrOverrideExpression("",e,t,r,!1)}_getValueOrOverrideExpression(e,t,r,i,o=!0){if(o&&!D(i)&&(i=R(e,r.toLowerCase())),null==t)return i;const a=this._poMap[t];if(null==a)return i;const s=a[r];return"string"==typeof s||"number"==typeof s||Array.isArray(s)?s:s?{valueExpressionInfo:s,defaultValue:i}:i}_analyzePrimitiveOverrides(e,t,r,i){if(null==e)return!1;"string"==typeof e&&(e=[e]);for(const o of this._primitiveOverrides)if(e.includes(o.primitiveName)&&o.valueExpressionInfo)return!0;if(null!=t)for(const o of t)if(o?.overrides.length>0)return!0;if(null!=r)for(const o of r)if(o?.overrides.length>0)return!0;if(null!=i)for(const o of i)if(o?.overrides.length>0)return!0;return!1}_getMaterialOverrides(e,t){if(!e)return[];const r=[];for(const i of e)r.push(...this._getPrimitiveMaterialOverrides(i,t));return r}_getPrimitiveMaterialOverrides(e,t){if(!e)return[];const r=N(this._primitiveOverrides.filter(t=>t.primitiveName===e));return r.forEach(e=>e.defaultValue=R(t,e.propertyName.toLowerCase())),r}_analyzeMaterialOverrides(e,t){return this._primitiveOverrides.filter(r=>r.primitiveName!==e||!t.includes(r.propertyName))}}function Z(e,t){return{type:e.type,enable:!0,name:e.name,colorLocked:e.colorLocked,primitiveName:e.primitiveName,anchorPoint:e.anchorPoint,anchorPointUnits:e.anchorPointUnits,offsetX:0,offsetY:0,rotateClockwise:e.rotateClockwise,rotation:0,size:e.size,billboardMode3D:e.billboardMode3D,depth3D:e.depth3D,frame:e.frame,markerGraphics:[t],scaleSymbolsProportionally:e.scaleSymbolsProportionally,respectFrame:e.respectFrame,clippingPath:e.clippingPath}}function $(e){if(e?.startsWith("Level_")){const t=parseInt(e.slice(6),10);if(!isNaN(t))return t}return 0}function ee(e,t){if(!t||0===t.length)return e;const i=r(e);return _.applyOverrides(i,t),i}const te=e=>e&&2===e.length&&e[0].enable&&e[1].enable&&"CIMSolidStroke"===e[0].type&&"CIMSolidFill"===e[1].type&&null==e[0].path&&null==e[1].path&&!e[0].effects&&!e[1].effects&&!e[0].animations&&!e[1].animations;function re(e){const t=e.symbolLayers;if(!t)return!1;const r=t.find(e=>e.effects?.find(e=>"CIMGeometricEffectDashes"===e.type&&null!=e.dashTemplate)),i=t.find(e=>e.effects?.find(e=>"CIMGeometricEffectAddControlPoints"===e.type));return!!r||!!i}function ie(e){return e.some(e=>"CIMSolidFill"!==e.type&&"CIMSolidStroke"!==e.type&&("CIMVectorMarker"!==e.type&&"CIMPictureMarker"!==e.type||null!=e.markerPlacement))}function oe(e,t){if(t?.some(e=>"CIMGeometricEffectRadial"===e.type)&&t?.some(e=>"CIMGeometricEffectTaperedPolygon"===e.type)&&2===e.length){const t=e.find(e=>"CIMSolidFill"===e.type),r=e.find(e=>"CIMSolidStroke"===e.type),i=r?.effects?.some(e=>"CIMGeometricEffectDashes"===e.type);if(null!=t&&null!=r&&!i)return!0}return!1}function ae(e){return r(e).map(e=>({...e,propertyName:U(e.propertyName)}))}function se(e){return h(e)?{type:"animation-params",params:e}:null}export{Q as CIMAnalyzer,ee as analyzeCIMResource};
2
+ import{isRGB as e}from"../../core/colorUtils.js";import{getFontFamily as t}from"../../core/fontUtils.js";import"../../core/has.js";import{clone as r}from"../../core/lang.js";import i from"../../core/Logger.js";import{pt2px as o,px2pt as a}from"../../core/screenUtils.js";import{numericHash as s}from"../../core/string.js";import{checkForAnimations as l,getAnimationParams as n,handleAbsoluteAnchor as p,handleMarker as m,handleRelativeAnchor as c,getFrameTranslation as d,translate as y,getStaticParam as f,shouldUseAnimatedPath as h}from"./animationUtils.js";import{forEachSymbolLayer as u,CIMSymbolHelper as v}from"./CIMSymbolHelper.js";import{antialiasingOutlineFillSettings as O}from"./constants.js";import{defaultCIMValues as g}from"./defaultCIMValues.js";import{fitVectorMarker as S}from"./fitVectorMarker.js";import{OverrideHelper as _}from"./OverrideHelper.js";import{getExtent as M,getSDFMetrics as k,getSDFDimensions as C}from"./SDFHelper.js";import{CIMSymbolUnits as b}from"./types.js";import{colorToArray as x,normalizeAlpha as P,getSize as z,isCIMMarkerStrokePlacement as I,hasStrokeLayer as E,getTintColor as L,getNumericValue as V,normalizePrimitiveOverrideProps as N,getDefaultCIMValue as R,getEnum as A,getFillColor as T,getStrokeColor as w,fromCIMFontDecoration as G,fromCIMFontStyle as F,getStrokeWidth as X,fromCIMVerticalAlignment as j,fromCIMHorizontalAlignment as W,getTextCasing as Y,isValidCIMValue as D,uncapitalize as U}from"./utils.js";import{EffectHelper as H}from"./effects/EffectHelper.js";import{rasterizedVectorMarkerMinSize as J,randomInsidePolygonTextureSize as B}from"../../views/2d/engine/webgl/definitions.js";const q=()=>i.getLogger("esri.symbols.cim.cimAnalyzer");function K(e){const t=e.markerPlacement;return t&&t.angleToLine?1:0}class Q{constructor(e){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[],this._hasTextStringTemplates=!1,e&&(this._resourceManager=e)}analyzeSymbolReference(t,r,i){if(this._cimLayers=i??[],!t)return this._cimLayers;if(this._reset(),this._hasTextStringTemplates=t.hasTextStringTemplates??!1,t.primitiveOverrides){this._primitiveOverrides=t.primitiveOverrides;for(const t of this._primitiveOverrides){const r=t.valueExpressionInfo;if(r)this._setPoMap(t.primitiveName,t.propertyName,r);else if(null!=t.value){let r=t.value;t.propertyName.includes("Color")&&(e(r)&&(r=x(r)),r=P(r)),this._setPoMap(t.primitiveName,t.propertyName,r)}}}return this._analyzeSymbol(t.symbol,r),this._cimLayers}_reset(){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[]}_analyzeSymbol(e,t){switch(e?.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":this._analyzeMultiLayerSymbol(e,t)}}_analyzeMultiLayerSymbol(e,t){const r=e?.symbolLayers;if(!r)return;for(let l=0;l<r.length;l++){const e=r[l];"CIMVectorMarker"===e.type&&(r[l]=S(e))}const i=e.effects;let o=0;const a=z(e)??0;if("CIMPointSymbol"===e.type&&"Map"===e.angleAlignment&&(o=1),oe(r,i))return this._analyzeCompositeOutlineFill(r,i,a);let s={transform:[0,0,0,1],fromColor:[1,1,1,1],toColor:[1,1,1,1],colorMix:[0,0,0,0],toOpacity:[1,1,1,1],opacityMix:[0,0,0,0],shift:[1,1,1,1],hasAnimations:l(e),hasShiftAnimation:!1,hasMotionAnimations:!1};s=n(this._poMap,e,s);const p="CIMPolygonSymbol"===e.type;let m=r.length;for(;m--;){const l=r[m];if(!l||!1===l.enable)continue;let n;i?.length&&(n=[...i]);const c=l.effects;c?.length&&(i?n.push(...c):n=[...c]);let d=null;if(n){d=[];for(const e of n){const t=_.findEffectOverrides(e,this._primitiveOverrides);t&&d.push(t)}}const y=[];switch(_.findApplicableOverrides(l,this._primitiveOverrides,y),l.type){case"CIMSolidFill":this._analyzeSolidFill(l,d,s,E(r));break;case"CIMPictureFill":this._analyzePictureFill(l,d,s);break;case"CIMHatchFill":this._analyzeHatchFill(l,d,s);break;case"CIMGradientFill":this._analyzeGradientFill(l,d);break;case"CIMSolidStroke":this._analyzeSolidStroke(l,d,p,a,s);break;case"CIMPictureStroke":this._analyzePictureStroke(l,d,p,a,s);break;case"CIMGradientStroke":this._analyzeGradientStroke(l,d,p,a);break;case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":{"CIMLineSymbol"!==e.type&&"CIMPolygonSymbol"!==e.type||(o=K(l));const r=[],i=l.primitiveName;i&&r.push(i);const n=p&&I(l.markerPlacement);this._analyzeMarker(l,d,null,r,o,a,t,[],s,!1,n);break}default:q().error("Cannot analyze CIM layer",l.type)}}}_analyzeSolidFill(e,t,r,i){const{primitiveName:o,type:a}=e,s=P(e.color),l=n(this._poMap,e,r);if(!i&&t?.some(e=>"CIMGeometricEffectTaperedPolygon"===e.effect.type)){const r=this._getValueOrOverrideExpression(a,o,"Color",s);return void this._cimLayers.push({type:"outlineFill",name:e.name,colorLocked:!!e.colorLocked,color:r,effects:t,outlineColor:r,outlineColorLocked:!!e.colorLocked,...O,outlineEffects:t})}this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:null,colorLocked:!!e.colorLocked,color:this._getValueOrOverrideExpression(a,o,"Color",s),height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,effects:t,applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!1,animationParams:se(l)})}_analyzePictureFill(e,t,r){const{primitiveName:i,type:o}=e,a=L(e),s=V(e.height,g.CIMPictureFill.height);let l=V(e.scaleX,1);if("width"in e&&"number"==typeof e.width){const t=e.width;let r=1;const i=this._resourceManager.getResource(e.url);null!=i&&(r=i.width/i.height),l/=r*(s/t)}const p={type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(i,o)},m=n(this._poMap,e,r);this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:p,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(o,i,"TintColor",a),height:this._getValueOrOverrideExpression(o,i,"Height",s),scaleX:this._getValueOrOverrideExpression(o,i,"ScaleX",l),angle:this._getValueOrOverrideExpression(o,i,"Rotation",V(e.rotation)),offsetX:this._getValueOrOverrideExpression(o,i,"OffsetX",V(e.offsetX)),offsetY:this._getValueOrOverrideExpression(o,i,"OffsetY",V(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!1,hasUnresolvedReplacementColor:!1,animationParams:se(m)})}_analyzeHatchFill(e,t,r){const{primitiveName:i,type:o}=e,a=n(this._poMap,e,r),s=this._analyzeMaterialOverrides(i,["Rotation","OffsetX","OffsetY"]),l=N(s);let p=[255,255,255,1],m=!1;if(e.lineSymbol?.symbolLayers)for(const n of e.lineSymbol.symbolLayers){if("CIMSolidStroke"!==n.type)continue;const e=n.primitiveName??i;m||!e||n.colorLocked||null==this._poMap[e]?.Color&&null==this._poMap[e]?.StrokeColor||(p=P(n.color),p=this._maybeGetValueOrOverrideExpression(e,"StrokeColor")??this._getValueOrOverrideExpression(o,e,"Color",p),m=!0);const t=this._maybeGetValueOrOverrideExpression(e,"StrokeWidth");if(t){let r=null,i=null;"number"==typeof t?r=t:i=t.valueExpressionInfo;let a=l.find(e=>"strokeWidth"===e.propertyName);a?a.propertyName="width":(a={type:"CIMPrimitiveOverride",primitiveName:e,propertyName:"width",valueExpressionInfo:i,value:r,defaultValue:R(o,"width")},l.push(a))}}const c={type:"sprite-rasterization-param",resource:e,overrides:l};this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:c,colorLocked:!!e.colorLocked,effects:t,color:p,height:this._getValueOrOverrideExpression(o,i,"Separation",V(e.separation,g.CIMHatchFill.separation)),scaleX:1,angle:this._getValueOrOverrideExpression(o,i,"Rotation",V(e.rotation)),offsetX:this._getValueOrOverrideExpression(o,i,"OffsetX",V(e.offsetX)),offsetY:this._getValueOrOverrideExpression(o,i,"OffsetY",V(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!m,animationParams:se(a)})}_analyzeGradientFill(e,t){const{angle:r,gradientMethod:i,gradientSize:o,gradientSizeUnits:a,gradientType:s,interval:l,primitiveName:n,type:p}=e,m=g.CIMGradientFill,c=e.colorRamp;this._cimLayers.push({type:"gradientFill",name:e.name,spriteRasterizationParam:{type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(n,p)},colorLocked:!1,effects:t,color:[255,255,255,1],gradientMethod:this._getValueOrOverrideExpression(p,n,"GradientMethod",i??"Linear"),angle:this._getValueOrOverrideExpression(p,n,"Angle",V(r,m.angle)),gradientType:this._getValueOrOverrideExpression(p,n,"GradientType",s??m.gradientType),interval:this._getValueOrOverrideExpression(p,n,"Interval",V(l,"CIMFixedColorRamp"===c.type?c.colors.length:m.interval)),gradientSize:this._getValueOrOverrideExpression(p,n,"GradientSize",V(o,m.gradientSize)),gradientSizeUnits:"Absolute"===a?b.Absolute:"Relative"===a?b.Relative:m.gradientSizeUnits})}_analyzeCompositeOutlineFill(e,t,r){const i=e.find(e=>"CIMSolidFill"===e.type),o=e.find(e=>"CIMSolidStroke"===e.type);if(null==i||null==o)return;const a=[...t??[],...i.effects??[]].map(e=>_.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>null!=e),s=[...t??[],...o.effects??[]].map(e=>_.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>null!=e),l=V(o.width,g.CIMSolidStroke.width),n=A(o.capStyle,g.CIMSolidStroke.capstyle),p=A(o.joinStyle,g.CIMSolidStroke.joinstyle),m=o.miterLimit;this._cimLayers.push({type:"outlineFill",name:i.name,colorLocked:!!i.colorLocked,color:this._getValueOrOverrideExpression(i.type,i.primitiveName,"Color",P(i.color)),effects:a,outlineColorLocked:!!o.colorLocked,outlineColor:this._getValueOrOverrideExpression(o.type,o.primitiveName,"Color",P(o.color)),outlineWidth:this._getValueOrOverrideExpression(o.type,o.primitiveName,"Width",l),cap:this._getValueOrOverrideExpression(o.type,o.primitiveName,"CapStyle",n),join:this._getValueOrOverrideExpression(o.type,o.primitiveName,"JoinStyle",p),miterLimit:m&&this._getValueOrOverrideExpression(o.type,o.primitiveName,"MiterLimit",m),referenceWidth:r,outlineEffects:s})}_analyzeSolidStroke(e,t,r,i,o){const{primitiveName:a,type:s}=e,l=P(e.color),p=V(e.width,g.CIMSolidStroke.width),m=A(e.capStyle,g.CIMSolidStroke.capstyle),c=A(e.joinStyle,g.CIMSolidStroke.joinstyle),d=e.miterLimit;let y,f,h,u,v=[];if(this._analyzePrimitiveOverrides(a,t,null,null)&&(v=this._getPrimitiveMaterialOverrides(a,s)),t&&Array.isArray(t)&&t.length>0){const e=t[t.length-1].effect;e&&"CIMGeometricEffectDashes"===e.type&&"NoConstraint"===e.lineDashEnding&&(y=e.dashTemplate,f=e.scaleDash,h=e.offsetAlongLine,u=e.primitiveName,(t=[...t]).pop())}null!=u&&v.push(...this._getPrimitiveMaterialOverrides(u,s).filter(e=>"dashTemplate"===e.propertyName));const O=void 0!==y?{type:"sprite-rasterization-param",resource:{type:"dash",dashTemplate:y,primitiveName:u},overrides:v}:null,S=n(this._poMap,e,o);this._cimLayers.push({type:"line",name:e.name,spriteRasterizationParam:O,isOutline:r,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(s,a,"Color",l),width:this._getValueOrOverrideExpression(s,a,"Width",p),cap:this._getValueOrOverrideExpression(s,a,"CapStyle",m),join:this._getValueOrOverrideExpression(s,a,"JoinStyle",c),miterLimit:d&&this._getValueOrOverrideExpression(s,a,"MiterLimit",d),referenceWidth:i,zOrder:$(e.name),dashTemplate:this._maybeGetValueOrOverrideExpression(u,"DashTemplate")??y,offsetAlongLine:this._getValueOrOverrideExpression(s,u,"OffsetAlongLine",h??0),scaleDash:f,sampleAlphaOnly:!0,animationParams:se(S)})}_analyzePictureStroke(e,t,r,i,o){const{primitiveName:a,type:s}=e,l=L(e),p=V(e.width,g.CIMPictureStroke.width),m=A(e.capStyle,g.CIMPictureStroke.capstyle),c=A(e.joinStyle,g.CIMPictureStroke.joinstyle),d=e.miterLimit,y={type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(a,s)},f=n(this._poMap,e,o);this._cimLayers.push({type:"line",name:e.name,spriteRasterizationParam:y,isOutline:r,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(s,a,"TintColor",l),width:this._getValueOrOverrideExpression(s,a,"Width",p),cap:this._getValueOrOverrideExpression(s,a,"CapStyle",m),join:this._getValueOrOverrideExpression(s,a,"JoinStyle",c),miterLimit:d&&this._getValueOrOverrideExpression(s,a,"MiterLimit",d),referenceWidth:i,zOrder:$(e.name),dashTemplate:null,scaleDash:!1,sampleAlphaOnly:!1,animationParams:se(f)})}_analyzeGradientStroke(e,t,r,i){const{gradientMethod:o,gradientSize:a,gradientSizeUnits:s,gradientType:l,interval:n,primitiveName:p,type:m}=e,c=g.CIMGradientStroke,d=V(e.width,c.width),y=A(e.capStyle,c.capstyle),f=A(e.joinStyle,c.joinstyle),h=e.miterLimit,u=e.colorRamp;this._cimLayers.push({type:"gradientStroke",name:e.name,spriteRasterizationParam:{type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(p,m)},colorLocked:!!e.colorLocked,effects:t,color:[255,255,255,1],width:this._getValueOrOverrideExpression(m,p,"Width",d),cap:this._getValueOrOverrideExpression(m,p,"CapStyle",y),join:this._getValueOrOverrideExpression(m,p,"JoinStyle",f),miterLimit:h&&this._getValueOrOverrideExpression(m,p,"MiterLimit",h),referenceWidth:i,isOutline:r,gradientMethod:this._getValueOrOverrideExpression(m,p,"GradientMethod",o??c.gradientMethod),gradientType:this._getValueOrOverrideExpression(m,p,"GradientType",l??c.gradientType),interval:this._getValueOrOverrideExpression(m,p,"Interval",V(n,"CIMFixedColorRamp"===u.type?u.colors.length:c.interval)),gradientSize:this._getValueOrOverrideExpression(m,p,"GradientSize",V(a,c.gradientSize)),gradientSizeUnits:"Absolute"===s?b.Absolute:"Relative"===s?b.Relative:c.gradientSizeUnits})}_analyzeMarker(e,t,r,i,o,a,s,l,d,y=!1,f=!1){y||=!!e.colorLocked;let h=d;if(h=p(e,h),h=m(this._poMap,e,h),h=c(e,h),h=n(this._poMap,e,h),this._analyzeMarkerInsidePolygon(e,t,y,h))return;const u=V(e.size,g.CIMVectorMarker.size),v=V(e.rotation),O=V(e.offsetX),S=V(e.offsetY),{primitiveName:_,type:M}=e,k=this._getValueOrOverrideExpression(M,_,"Size",u),C=this._getValueOrOverrideExpression(M,_,"Rotation",v),b=this._getValueOrOverrideExpression(M,_,"OffsetX",O),x=this._getValueOrOverrideExpression(M,_,"OffsetY",S);switch(e.type){case"CIMPictureMarker":this._analyzePictureMarker(e,t,r,i,o,a,k,C,b,x,l,h,y,f);break;case"CIMVectorMarker":this._analyzeVectorMarker(e,t,r,i,o,a,k,C,b,x,l,h,s,y,f)}}_analyzeMarkerInsidePolygon(e,t,r,i){const{markerPlacement:o,type:s}=e;if(!o||"CIMMarkerPlacementInsidePolygon"!==o.type||i.hasMotionAnimations)return!1;if("CIMVectorMarker"===s||"CIMPictureMarker"===s){const r=e.primitiveName;if(r&&this._analyzePrimitiveOverrides([r],t,null,null))return!1;const i=o.primitiveName;if(i&&this._analyzePrimitiveOverrides([i],t,null,null))return!1;if("CIMVectorMarker"===s){const{markerGraphics:t}=e;if(t)for(const e of t){const{symbol:t}=e;if("CIMPolygonSymbol"===t?.type&&t.symbolLayers){const{symbolLayers:e}=t;for(const t of e)if("CIMSolidStroke"===t.type)return!1}}}else{const{animatedSymbolProperties:t}=e;if(t)return!1}}const l=Math.abs(o.stepX),n=Math.abs(o.stepY);if(0===l||0===n)return!0;let p,m;if("Random"===o.gridType){const e=a(B),t=Math.max(Math.floor(e/l),1);p=n*Math.max(Math.floor(e/n),1);m=t*l/p}else o.shiftOddRows?(p=2*n,m=l/n*.5):(p=n,m=l/n);const c=L(e),d="CIMCharacterMarker"===e.type?null:{type:"sprite-rasterization-param",resource:e,overrides:[]};return this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:d,colorLocked:r,effects:t,color:c,height:p,scaleX:m,angle:o.gridAngle??0,offsetX:V(o.offsetX),offsetY:V(o.offsetY),applyRandomOffset:"Random"===o.gridType,sampleAlphaOnly:"CIMPictureMarker"!==e.type,hasUnresolvedReplacementColor:!0,animationParams:se(i)}),!0}_analyzePictureMarker(e,t,i,o,a,l,n,p,m,c,d,y,f,h){const{animatedSymbolProperties:u,primitiveName:v,type:O}=e;let g=V(e.scaleX,1);const S=L(e);i||(i=this._createMarkerPlacementOverrideExpression(e.markerPlacement));const _=this._createGIFAnimatedSymbolPropertiesOverrideExpression(u),M=e.anchorPoint??{x:0,y:0};if("width"in e&&"number"==typeof e.width){const t=e.width;let r=1;const i=this._resourceManager.getResource(e.url);null!=i&&(r=i.width/i.height);g/=r*(V(e.size)/t)}const k=[...o];let C;e.primitiveName&&k.push(e.primitiveName),u||_?C={type:"animated",url:e.url,urlHash:"H"+s(e.url),playAnimation:e.animatedSymbolProperties?.playAnimation,reverseAnimation:e.animatedSymbolProperties?.reverseAnimation,randomizeStartTime:e.animatedSymbolProperties?.randomizeStartTime,randomizeStartSeed:e.animatedSymbolProperties?.randomizeStartSeed,startTimeOffset:e.animatedSymbolProperties?.startTimeOffset,duration:e.animatedSymbolProperties?.duration,repeatType:e.animatedSymbolProperties?.repeatType,repeatDelay:e.animatedSymbolProperties?.repeatDelay}:(C=r(e),C.markerPlacement=null);const b={type:"sprite-rasterization-param",resource:C,overrides:this._getMaterialOverrides(k,O)};_&&b.overrides.push(..._.overrides);const x=n;this._cimLayers.push({type:"marker",name:e.name,spriteRasterizationParam:b,colorLocked:f,effects:t,scaleSymbolsProportionally:!1,alignment:a,size:n,scaleX:this._getValueOrOverrideExpression(O,v,"ScaleX",g),rotation:p,offsetX:m,offsetY:c,transform:{type:"cim-marker-transform-param",params:d},color:this._getValueOrOverrideExpression(O,v,"TintColor",S),anchorPoint:{x:M.x,y:M.y},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,outlineColor:[0,0,0,0],outlineWidth:0,frameHeight:0,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:l,sizeRatio:1,isOutline:h,markerPlacement:i,animationParams:se(y),baseSize:x})}_analyzeVectorMarker(e,t,r,i,o,a,s,l,p,m,c,h,u,v,O){const g=e.markerGraphics;if(!g)return;const S=e.frame;let _=0;_=S?S.ymax-S.ymin:a;const M=!!e.scaleSymbolsProportionally;if(_){const t={offsetX:p,offsetY:m,rotation:l,size:s,frameHeight:_,rotateClockWise:!!e.rotateClockwise,absoluteAnchorPoint:!1,scaleSymbolsProportionally:M};c=[...c,t]}r||(r=this._createMarkerPlacementOverrideExpression(e.markerPlacement));for(const k of g)if(k){const s=k.symbol;if(!s)continue;const l=k.primitiveName;l&&i.push(l);let p,m=h;if(("CIMPointSymbol"===s.type||"CIMTextSymbol"===s.type)&&S){let t=0,r=0;const i=k.geometry;"x"in i&&"y"in i&&(t+=i.x-.5*(S.xmin+S.xmax),r+=i.y-.5*(S.ymin+S.ymax));const o=e.anchorPoint;let a=!1;o&&("Absolute"===e.anchorPointUnits?(t-=o.x,r-=o.y,a=!0):S&&(t-=(S.xmax-S.xmin)*o.x,r-=(S.ymax-S.ymin)*o.y));const s={offsetX:t,offsetY:r,rotation:0,size:0,frameHeight:0,rotateClockWise:!1,absoluteAnchorPoint:a,scaleSymbolsProportionally:M};p=[...c,s]}const g=k.geometry,[C,b]=d(g,S);switch(0===C&&0===b||(m=y(m,C,b)),"CIMPointSymbol"===s.type&&(m=n(this._poMap,s,m)),s.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":u||re(s)?(m={...m,transform:{type:"AnimatedTransform",relativeTranslation:!1,absoluteScale:!0,translation:f([0,0]),rotation:f(0),scale:f(_),parent:h.transform}},this._analyzeMultiLayerGraphicNonSDF(e,t,r,k,i,o,a,p??c,m,_,v,O)):this._analyzeMultiLayerGraphic(e,t,r,k,i,o,a,p??c,m,_,v,O);break;case"CIMTextSymbol":this._analyzeTextGraphic(t,r,k,i,o,a,p??c,v)}l&&i.pop()}}_analyzeMultiLayerGraphic(e,t,r,i,o,a,s,l,n,p,m,c){const d=i.symbol,y=d.symbolLayers;if(y){if(!te(y)||h(n))return ie(y)?(u(d,e=>{e.colorLocked&&(m=!0)}),void this._analyzeMultiLayerGraphicNonSDF(e,t,r,i,o,a,s,l,n,p,m,c)):void this._analyzeMarkerGraphicSymbolLayers(e,t,r,i,o,a,s,l,n,p,m,c);this._analyzeCompositeMarkerGraphic(e,t,r,i,y,a,s,l,p,m,c)}}_analyzeMarkerGraphicSymbolLayers(e,t,r,i,o,a,s,l,p,m,c,d){const y=i.symbol,f=y.symbolLayers;if(!f)return;const h=H.applyEffects(y.effects,i.geometry);if(!h)return;let u=f.length;for(;u--;){const y=f[u];if(!y||!1===y.enable)continue;const v=y.primitiveName;switch(v&&o.push(v),y.type){case"CIMSolidFill":case"CIMSolidStroke":{const o=H.applyEffects(y.effects,h),f=M(o);if(!f)continue;const u="Relative"!==e.anchorPointUnits,O="CIMSolidStroke"===y.type?y.width:0,{frameSizeRatio:S,anchorX:_,anchorY:b,widthRatio:x,sdfPaddingRatio:z,sdfTextureSize:I}=k(f,e.frame,e.size,e.anchorPoint,u,O,e.scaleSymbolsProportionally),E="CIMSolidFill"===y.type,L={type:"sdf",geometry:o,sdfPaddingRatio:z,asFill:E,sdfTextureSize:I},{path:N}=y,R=E?P(T(y)):null==N?P(w(y)):[0,0,0,0],A=E?[0,0,0,0]:P(w(y));if(!E&&!O)break;const G=i.primitiveName;let F=null;E&&!y.colorLocked&&(F=this._maybeGetValueOrOverrideExpression(G,"FillColor"));let X=null;E||y.colorLocked||(X=this._maybeGetValueOrOverrideExpression(G,"StrokeColor"));const j=F??this._getValueOrOverrideExpression(y.type,v,"Color",R),W=X??this._getValueOrOverrideExpression(y.type,v,"Color",A),Y=this._maybeGetValueOrOverrideExpression(G,"StrokeWidth")??this._getValueOrOverrideExpression(y.type,v,"Width",O),D=N?{type:"sprite-rasterization-param",resource:{type:"path",path:N,asFill:E},overrides:[]}:{type:"sprite-rasterization-param",resource:L,overrides:[]},U=n(this._poMap,y,p),J=V(e.size,g.CIMVectorMarker.size),B=this._getValueOrOverrideExpression(e.type,e.primitiveName,"Size",J);this._cimLayers.push({type:"marker",name:y.name,groupName:e.name,spriteRasterizationParam:D,colorLocked:!!y.colorLocked||!!c,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:_,y:b},isAbsoluteAnchorPoint:u,size:m,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:"cim-marker-transform-param",params:l},frameHeight:m,widthRatio:x,rotateClockwise:!1,referenceSize:s,sizeRatio:S,color:j,outlineColor:W,outlineWidth:Y,isOutline:d,markerPlacement:r,animationParams:se(U),isStroke:"CIMSolidFill"!==y.type,baseSize:B,...C(o,I,z)});break}case"CIMPictureMarker":case"CIMVectorMarker":if(y.markerPlacement){q().error("Error analyzing CIM, got unexpected marker placement");break}this._analyzeMarker(y,t,r,o,a,s,!1,l,p,c,d)}v&&o.pop()}}_analyzeTextGraphic(e,r,i,o,a,s,l,n){const p=[];_.findApplicableOverrides(i,this._primitiveOverrides,p);const m=i.geometry;if(!("x"in m)||!("y"in m))return;const c=i.symbol,d=G(c),y=F(c.fontStyleName),f=t(c.fontFamilyName);c.font={family:f,decoration:d,...y};const h=V(c.height,g.CIMTextSymbol.height),u=V(c.angle),v=V(c.offsetX),O=V(c.offsetY),{haloSymbol:S}=c,M=V(c.haloSize,0);let k=[0,0,0,0];if(S?.symbolLayers?.length){const e=S.symbolLayers;for(const t of e)if(t.color){k=this._getValueOrOverrideExpression(c?.haloSymbol?.type??"CIMPolygonSymbol",t.primitiveName,"Color",P(t.color));break}}const C=i.primitiveName;let b=[0,0,0,1],x=[0,0,0,0],z=0,I=!1;if(c.symbol?.symbolLayers)for(const t of c.symbol.symbolLayers){const e=t.primitiveName;if("CIMSolidStroke"===t.type)x=this._getValueOrOverrideExpression("CIMSolidStroke",e,"Color",P(t.color)),z=this._getValueOrOverrideExpression("CIMSolidStroke",e,"Width",X(t)??0);else if("CIMSolidFill"===t.type){const r=P(t.color);I=I??!!t.colorLocked,b=this._getValueOrOverrideExpression("CIMSolidFill",e??C,"Color",r)}}let E=null,L=null,N=null,R=null,A=null;C&&(E=this._maybeGetValueOrOverrideExpression(C,"TextSize"),L=this._maybeGetValueOrOverrideExpression(C,"TextAngle"),N=this._maybeGetValueOrOverrideExpression(C,"TextOffsetX"),R=this._maybeGetValueOrOverrideExpression(C,"TextOffsetY"),I||(A=this._maybeGetValueOrOverrideExpression(C,"FillColor")));const T=A??b;let w=null,Y=null,D=0;if("CIMBackgroundCallout"===c.callout?.type){const e=c.callout;if(e.backgroundSymbol){const t=e.backgroundSymbol.symbolLayers;if(t)for(const e of t)"CIMSolidFill"===e.type?w=P(e.color):"CIMSolidStroke"===e.type&&(Y=P(e.color),D=V(e.width,g.CIMSolidStroke.width))}}const U=this._getValueOrOverrideExpression(c.type,i.primitiveName,"TextString",i.textString??"");if(null==U)return;const{fontStyleName:H}=c,J=f+(H?"-"+H.toLowerCase():"-regular"),B=this._getMaterialOverrides(o,c.type);B.push(...this._getPrimitiveMaterialOverrides(i.primitiveName,c.type)),this._collectDictionaryTemplateOverrides(B,i);const q={type:"text-rasterization-param",resource:{type:"text",textString:i.textString??"",font:c.font,symbol:c,primitiveName:i.primitiveName},overrides:B};this._cimLayers.push({type:"text",lineWidth:c.lineWidth,textRasterizationParam:q,colorLocked:!!n||!!I,effects:e,alignment:a,anchorPoint:{x:0,y:0},isAbsoluteAnchorPoint:!1,fontName:J,decoration:d,haloSize:M,haloColor:k,weight:y.weight,style:y.style,size:E??h,angle:L??u,offsetX:N??v,offsetY:R??O,transform:{type:"cim-marker-transform-param",params:l},horizontalAlignment:W(c.horizontalAlignment),verticalAlignment:j(c.verticalAlignment),text:U,color:T,outlineColor:x,outlineSize:z,backgroundColor:w,borderLineColor:Y,borderLineWidth:D,referenceSize:s,sizeRatio:1,markerPlacement:r})}_collectDictionaryTemplateOverrides(e,t){if(t.textString&&this._hasTextStringTemplates){const r=Y(t.symbol);e.push({propertyName:"textString",defaultValue:"",valueExpressionInfo:{type:"dictionary-template",textCase:r,template:t.textString},primitiveName:t.primitiveName})}}_analyzeMultiLayerGraphicNonSDF(e,t,r,i,a,s,l,n,p,m,c,d){const y=Z(e,i),f=e.primitiveName,h=this._analyzeMaterialOverrides(f,["Rotation","OffsetX","OffsetY"]),u=N(h),[O,S,_]=v.getTextureAnchor(y,this._resourceManager,J),M=this._getMaterialOverrides(a,e.type);M.push(...u);const k={type:"sprite-rasterization-param",resource:{...y,avoidSDFRasterization:!0},overrides:M},C=V(e.size,g.CIMVectorMarker.size),b=this._getValueOrOverrideExpression(e.type,f,"Size",C);this._cimLayers.push({type:"marker",name:e.name,spriteRasterizationParam:k,colorLocked:c,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:s,anchorPoint:{x:O,y:S},isAbsoluteAnchorPoint:!1,size:m,rotation:0,offsetX:0,offsetY:0,transform:{type:"cim-marker-transform-param",params:n},color:[255,255,255,1],outlineColor:[0,0,0,0],outlineWidth:0,scaleX:1,frameHeight:m,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:l,sizeRatio:_/o(e.size),isOutline:d,markerPlacement:r,animationParams:se(p),baseSize:b})}_createMarkerPlacementOverrideExpression(e){if(!e)return null;const t=[];return _.findApplicableOverrides(e,this._primitiveOverrides,t),{type:"cim-marker-placement-param",placement:e,overrides:ae(t)}}_createGIFAnimatedSymbolPropertiesOverrideExpression(e){if(!e)return null;const t=[];return _.findApplicableOverrides(e,this._primitiveOverrides,t),{type:"cim-gif-animation-params",animation:e,overrides:ae(t)}}_analyzeCompositeMarkerGraphic(e,t,r,i,o,a,s,l,n,p,m){const c=i.geometry,d=o[0],y=o[1],f=M(c);if(!f)return;const h="Relative"!==e.anchorPointUnits,u=V(d.width,g.CIMSolidStroke.width),{frameSizeRatio:v,anchorX:O,anchorY:S,widthRatio:_,sdfPaddingRatio:C,sdfTextureSize:b}=k(f,e.frame,e.size,e.anchorPoint,h,u,e.scaleSymbolsProportionally),{path:x}=y,z=y.primitiveName,I=d.primitiveName,E=i.primitiveName;let L=null;y.colorLocked||p||(L=this._maybeGetValueOrOverrideExpression(E,"FillColor"));const N=L??this._getValueOrOverrideExpression(y.type,z,"Color",P(y.color));let R=null;d.colorLocked||p||(R=this._maybeGetValueOrOverrideExpression(E,"StrokeColor"));const A=R??this._getValueOrOverrideExpression(d.type,I,"Color",P(d.color)),T=this._maybeGetValueOrOverrideExpression(E,"StrokeWidth")??this._getValueOrOverrideExpression(d.type,I,"Width",u),w={type:"sprite-rasterization-param",resource:x?{type:"path",path:x,asFill:!0}:{type:"sdf",geometry:c,sdfTextureSize:b,sdfPaddingRatio:C,asFill:!0},overrides:[]};this._cimLayers.push({type:"marker",name:e.name,spriteRasterizationParam:w,colorLocked:p,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:O,y:S},isAbsoluteAnchorPoint:h,size:n,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:"cim-marker-transform-param",params:l},frameHeight:n,widthRatio:_,rotateClockwise:!1,referenceSize:s,sizeRatio:v,color:N,outlineColor:A,outlineWidth:T,isOutline:m,markerPlacement:r})}_setPoMap(e,t,r){let i;this._poMap[e]?i=this._poMap[e]:(i={},this._poMap[e]=i),i[t]=r}_maybeGetValueOrOverrideExpression(e,t,r){return this._getValueOrOverrideExpression("",e,t,r,!1)}_getValueOrOverrideExpression(e,t,r,i,o=!0){if(o&&!D(i)&&(i=R(e,r.toLowerCase())),null==t)return i;const a=this._poMap[t];if(null==a)return i;const s=a[r];return"string"==typeof s||"number"==typeof s||Array.isArray(s)?s:s?{valueExpressionInfo:s,defaultValue:i}:i}_analyzePrimitiveOverrides(e,t,r,i){if(null==e)return!1;"string"==typeof e&&(e=[e]);for(const o of this._primitiveOverrides)if(e.includes(o.primitiveName)&&o.valueExpressionInfo)return!0;if(null!=t)for(const o of t)if(o?.overrides.length>0)return!0;if(null!=r)for(const o of r)if(o?.overrides.length>0)return!0;if(null!=i)for(const o of i)if(o?.overrides.length>0)return!0;return!1}_getMaterialOverrides(e,t){if(!e)return[];const r=[];for(const i of e)r.push(...this._getPrimitiveMaterialOverrides(i,t));return r}_getPrimitiveMaterialOverrides(e,t){if(!e)return[];const r=N(this._primitiveOverrides.filter(t=>t.primitiveName===e));return r.forEach(e=>e.defaultValue=R(t,e.propertyName.toLowerCase())),r}_analyzeMaterialOverrides(e,t){return this._primitiveOverrides.filter(r=>r.primitiveName!==e||!t.includes(r.propertyName))}}function Z(e,t){return{type:e.type,enable:!0,name:e.name,colorLocked:e.colorLocked,primitiveName:e.primitiveName,anchorPoint:e.anchorPoint,anchorPointUnits:e.anchorPointUnits,offsetX:0,offsetY:0,rotateClockwise:e.rotateClockwise,rotation:0,size:e.size,billboardMode3D:e.billboardMode3D,depth3D:e.depth3D,frame:e.frame,markerGraphics:[t],scaleSymbolsProportionally:e.scaleSymbolsProportionally,respectFrame:e.respectFrame,clippingPath:e.clippingPath}}function $(e){if(e?.startsWith("Level_")){const t=parseInt(e.slice(6),10);if(!isNaN(t))return t}return 0}function ee(e,t){if(!t||0===t.length)return e;const i=r(e);return _.applyOverrides(i,t),i}const te=e=>e&&2===e.length&&e[0].enable&&e[1].enable&&"CIMSolidStroke"===e[0].type&&"CIMSolidFill"===e[1].type&&null==e[0].path&&null==e[1].path&&!e[0].effects&&!e[1].effects&&!e[0].animations&&!e[1].animations;function re(e){const t=e.symbolLayers;if(!t)return!1;const r=t.find(e=>e.effects?.find(e=>"CIMGeometricEffectDashes"===e.type&&null!=e.dashTemplate)),i=t.find(e=>e.effects?.find(e=>"CIMGeometricEffectAddControlPoints"===e.type));return!!r||!!i}function ie(e){return e.some(e=>"CIMSolidFill"!==e.type&&"CIMSolidStroke"!==e.type&&("CIMVectorMarker"!==e.type&&"CIMPictureMarker"!==e.type||null!=e.markerPlacement))}function oe(e,t){if(t?.some(e=>"CIMGeometricEffectRadial"===e.type)&&t?.some(e=>"CIMGeometricEffectTaperedPolygon"===e.type)&&2===e.length){const t=e.find(e=>"CIMSolidFill"===e.type),r=e.find(e=>"CIMSolidStroke"===e.type),i=r?.effects?.some(e=>"CIMGeometricEffectDashes"===e.type);if(null!=t&&null!=r&&!i)return!0}return!1}function ae(e){return r(e).map(e=>({...e,propertyName:U(e.propertyName)}))}function se(e){return h(e)?{type:"animation-params",params:e}:null}export{Q as CIMAnalyzer,ee as analyzeCIMResource};
@@ -296,6 +296,12 @@ export interface CIMSymbolLayer {
296
296
  * @since 5.0
297
297
  */
298
298
  animations?: CIMSymbolAnimation[];
299
+ /**
300
+ * The internal name of the symbol layer used for symbol level drawing.
301
+ *
302
+ * @since 5.1
303
+ */
304
+ name?: string;
299
305
  }
300
306
 
301
307
  /**