@esri/solutions-components 0.6.8 → 0.6.9

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 (775) hide show
  1. package/dist/assets/t9n/info-card/resources.json +1 -1
  2. package/dist/assets/t9n/info-card/resources_en.json +1 -1
  3. package/dist/assets/t9n/map-tools/resources.json +1 -1
  4. package/dist/assets/t9n/map-tools/resources_en.json +1 -1
  5. package/dist/cjs/{ExpandToggle-e6a0d66e.js → ExpandToggle-c5690e14.js} +5 -5
  6. package/dist/cjs/{FloatingArrow-0119ec6e.js → FloatingArrow-675171a6.js} +1 -1
  7. package/dist/cjs/{Heading-521f39ac.js → Heading-3712677d.js} +1 -1
  8. package/dist/cjs/{app-globals-72576a1c.js → app-globals-a62ad1ad.js} +3 -3
  9. package/dist/cjs/{ar-1718ae57.js → ar-1dc23c0a.js} +14 -14
  10. package/dist/cjs/{array-46bb7df1.js → array-2db3fd4a.js} +1 -1
  11. package/dist/cjs/{basemap-gallery_4.cjs.entry.js → basemap-gallery_5.cjs.entry.js} +115 -6
  12. package/dist/cjs/{bg-190a176c.js → bg-4024b354.js} +14 -14
  13. package/dist/cjs/{bs-919e0de8.js → bs-3134d711.js} +14 -14
  14. package/dist/cjs/buffer-tools_4.cjs.entry.js +15 -15
  15. package/dist/cjs/{ca-94918e06.js → ca-8d6647d3.js} +14 -14
  16. package/dist/cjs/calcite-accordion-item.cjs.entry.js +7 -12
  17. package/dist/cjs/calcite-accordion.cjs.entry.js +1 -6
  18. package/dist/cjs/calcite-action-bar.cjs.entry.js +31 -26
  19. package/dist/cjs/calcite-action-group_2.cjs.entry.js +18 -20
  20. package/dist/cjs/calcite-action-pad.cjs.entry.js +20 -16
  21. package/dist/cjs/calcite-action_2.cjs.entry.js +17 -22
  22. package/dist/cjs/calcite-alert.cjs.entry.js +11 -11
  23. package/dist/cjs/calcite-avatar.cjs.entry.js +6 -6
  24. package/dist/cjs/calcite-block-section.cjs.entry.js +9 -9
  25. package/dist/cjs/calcite-block.cjs.entry.js +12 -12
  26. package/dist/cjs/calcite-button.cjs.entry.js +12 -12
  27. package/dist/cjs/calcite-card.cjs.entry.js +9 -9
  28. package/dist/cjs/calcite-checkbox.cjs.entry.js +8 -13
  29. package/dist/cjs/calcite-chip-group.cjs.entry.js +6 -11
  30. package/dist/cjs/calcite-chip.cjs.entry.js +11 -11
  31. package/dist/cjs/calcite-color-picker-hex-input_2.cjs.entry.js +8 -8
  32. package/dist/cjs/calcite-color-picker.cjs.entry.js +12 -12
  33. package/dist/cjs/calcite-combobox-item-group.cjs.entry.js +5 -5
  34. package/dist/cjs/calcite-combobox_6.cjs.entry.js +21 -26
  35. package/dist/cjs/calcite-date-picker-day_3.cjs.entry.js +10 -10
  36. package/dist/cjs/calcite-date-picker.cjs.entry.js +11 -11
  37. package/dist/cjs/calcite-fab.cjs.entry.js +6 -6
  38. package/dist/cjs/calcite-filter_5.cjs.entry.js +16 -16
  39. package/dist/cjs/calcite-flow-item.cjs.entry.js +11 -11
  40. package/dist/cjs/calcite-flow.cjs.entry.js +3 -3
  41. package/dist/cjs/calcite-graph.cjs.entry.js +5 -10
  42. package/dist/cjs/calcite-icon.cjs.entry.js +6 -6
  43. package/dist/cjs/calcite-inline-editable.cjs.entry.js +11 -11
  44. package/dist/cjs/calcite-input-date-picker.cjs.entry.js +17 -17
  45. package/dist/cjs/calcite-input-number_2.cjs.entry.js +13 -13
  46. package/dist/cjs/{calcite-input-time-picker-b99baf7b.js → calcite-input-time-picker-4efcd55d.js} +60 -60
  47. package/dist/cjs/calcite-input-time-picker.cjs.entry.js +14 -14
  48. package/dist/cjs/calcite-input-time-zone.cjs.entry.js +12 -12
  49. package/dist/cjs/calcite-input_2.cjs.entry.js +12 -12
  50. package/dist/cjs/calcite-label.cjs.entry.js +5 -5
  51. package/dist/cjs/calcite-link.cjs.entry.js +5 -5
  52. package/dist/cjs/calcite-list-item-group.cjs.entry.js +3 -3
  53. package/dist/cjs/calcite-loader.cjs.entry.js +1 -1
  54. package/dist/cjs/calcite-menu-item.cjs.entry.js +9 -9
  55. package/dist/cjs/calcite-menu.cjs.entry.js +9 -9
  56. package/dist/cjs/calcite-modal.cjs.entry.js +12 -12
  57. package/dist/cjs/calcite-navigation-logo.cjs.entry.js +2 -2
  58. package/dist/cjs/calcite-navigation-user.cjs.entry.js +2 -2
  59. package/dist/cjs/calcite-navigation.cjs.entry.js +5 -5
  60. package/dist/cjs/calcite-notice.cjs.entry.js +11 -11
  61. package/dist/cjs/calcite-option_2.cjs.entry.js +9 -9
  62. package/dist/cjs/calcite-pagination.cjs.entry.js +9 -9
  63. package/dist/cjs/calcite-panel_2.cjs.entry.js +14 -14
  64. package/dist/cjs/calcite-pick-list-group.cjs.entry.js +7 -7
  65. package/dist/cjs/calcite-pick-list-item.cjs.entry.js +12 -12
  66. package/dist/cjs/calcite-pick-list.cjs.entry.js +10 -10
  67. package/dist/cjs/calcite-radio-button-group.cjs.entry.js +2 -7
  68. package/dist/cjs/calcite-radio-button.cjs.entry.js +9 -9
  69. package/dist/cjs/calcite-rating.cjs.entry.js +12 -12
  70. package/dist/cjs/calcite-scrim.cjs.entry.js +8 -8
  71. package/dist/cjs/calcite-segmented-control_2.cjs.entry.js +8 -8
  72. package/dist/cjs/calcite-shell-center-row.cjs.entry.js +6 -6
  73. package/dist/cjs/calcite-shell-panel_14.cjs.entry.js +29 -32
  74. package/dist/cjs/calcite-sortable-list.cjs.entry.js +7 -7
  75. package/dist/cjs/calcite-split-button.cjs.entry.js +3 -3
  76. package/dist/cjs/calcite-stepper-item.cjs.entry.js +8 -8
  77. package/dist/cjs/calcite-stepper.cjs.entry.js +3 -8
  78. package/dist/cjs/calcite-switch.cjs.entry.js +8 -8
  79. package/dist/cjs/calcite-text-area.cjs.entry.js +15 -15
  80. package/dist/cjs/calcite-tile-select-group.cjs.entry.js +1 -1
  81. package/dist/cjs/calcite-tile-select.cjs.entry.js +4 -4
  82. package/dist/cjs/calcite-tile.cjs.entry.js +7 -7
  83. package/dist/cjs/calcite-time-picker.cjs.entry.js +10 -10
  84. package/dist/cjs/calcite-tip-manager.cjs.entry.js +9 -9
  85. package/dist/cjs/calcite-tip.cjs.entry.js +10 -10
  86. package/dist/cjs/calcite-tooltip.cjs.entry.js +9 -9
  87. package/dist/cjs/calcite-tree_3.cjs.entry.js +8 -8
  88. package/dist/cjs/{card-manager_4.cjs.entry.js → card-manager_3.cjs.entry.js} +47 -93
  89. package/dist/cjs/{conditionalSlot-85b3a6b3.js → conditionalSlot-126d557f.js} +2 -2
  90. package/dist/cjs/crowdsource-manager.cjs.entry.js +23 -11
  91. package/dist/cjs/{cs-fe27e732.js → cs-b24cd994.js} +14 -14
  92. package/dist/cjs/{da-1b7f3440.js → da-9dee3a1f.js} +14 -14
  93. package/dist/cjs/{date-cec32b0e.js → date-0fec6f6b.js} +2 -2
  94. package/dist/cjs/{de-0dc1effa.js → de-1a98b964.js} +14 -14
  95. package/dist/cjs/{de-at-acdc4d01.js → de-at-782e6c7f.js} +14 -14
  96. package/dist/cjs/{de-ch-778a0d99.js → de-ch-d5c95469.js} +14 -14
  97. package/dist/cjs/{dom-c1807fc1.js → dom-456f9f13.js} +3 -3
  98. package/dist/cjs/{downloadUtils-a8c530f7.js → downloadUtils-1f057ec0.js} +249 -262
  99. package/dist/cjs/edit-card_2.cjs.entry.js +6 -5
  100. package/dist/cjs/{el-fdbc9bc1.js → el-af28cafa.js} +14 -14
  101. package/dist/cjs/{en-au-0ff50cdf.js → en-au-109f3119.js} +14 -14
  102. package/dist/cjs/{en-ca-284e9368.js → en-ca-22890a25.js} +14 -14
  103. package/dist/cjs/{en-gb-0fcae8ae.js → en-gb-dc23c9dd.js} +14 -14
  104. package/dist/cjs/{es-cd54acba.js → es-3f353355.js} +14 -14
  105. package/dist/cjs/{es-mx-2078d50f.js → es-mx-ccb57857.js} +14 -14
  106. package/dist/cjs/{et-17f323f6.js → et-119c047b.js} +14 -14
  107. package/dist/cjs/{fi-82f27397.js → fi-13096d81.js} +14 -14
  108. package/dist/cjs/{filter-bda212b4.js → filter-8d8c453e.js} +1 -1
  109. package/dist/cjs/{floating-ui-8d10af88.js → floating-ui-2b0fbba0.js} +2 -2
  110. package/dist/cjs/{focusTrapComponent-a22fc6a8.js → focusTrapComponent-d8412ddc.js} +4 -4
  111. package/dist/cjs/{form-9d8ebf06.js → form-7c6054c3.js} +2 -2
  112. package/dist/cjs/{fr-af7e1192.js → fr-563dfcd5.js} +14 -14
  113. package/dist/cjs/{fr-ch-5e1f2c28.js → fr-ch-f66cfd49.js} +14 -14
  114. package/dist/cjs/{guid-3abe3cc6.js → guid-d1123d5e.js} +1 -1
  115. package/dist/cjs/{he-ea851800.js → he-d8253a1a.js} +14 -14
  116. package/dist/cjs/{hi-5212a21d.js → hi-58c7c3b5.js} +14 -14
  117. package/dist/cjs/{hr-4eecb2ed.js → hr-5aba114a.js} +14 -14
  118. package/dist/cjs/{hu-6b527d8e.js → hu-38c15915.js} +14 -14
  119. package/dist/cjs/{id-d78f12ec.js → id-3a94c080.js} +14 -14
  120. package/dist/cjs/{index.es-4542630e.js → index.es-a1507f1c.js} +3 -3
  121. package/dist/cjs/{interactive-2fe0f43a.js → interactive-48299817.js} +2 -2
  122. package/dist/cjs/{it-15242935.js → it-88834555.js} +14 -14
  123. package/dist/cjs/{it-ch-9dc21944.js → it-ch-970563cd.js} +14 -14
  124. package/dist/cjs/{ja-f702cfc2.js → ja-13d4b1ae.js} +14 -14
  125. package/dist/cjs/{key-b8b55ea3.js → key-8de93212.js} +1 -1
  126. package/dist/cjs/{ko-aa9bde2c.js → ko-10cbdd98.js} +14 -14
  127. package/dist/cjs/{label-6e33e971.js → label-166e2d81.js} +3 -3
  128. package/dist/cjs/layout-manager.cjs.entry.js +93 -0
  129. package/dist/cjs/{loadModules-31cab7ac.js → loadModules-c5490589.js} +1 -1
  130. package/dist/cjs/{loadable-bac9cdd6.js → loadable-6925d840.js} +1 -1
  131. package/dist/cjs/loader.cjs.js +3 -3
  132. package/dist/cjs/{locale-c63a1b57.js → locale-79c3d30e.js} +5 -5
  133. package/dist/cjs/{locale-d15cd743.js → locale-88c21da2.js} +15 -15
  134. package/dist/cjs/{lt-e741ff2f.js → lt-3fc5017a.js} +14 -14
  135. package/dist/cjs/{lv-92d6768e.js → lv-9d9cf999.js} +14 -14
  136. package/dist/cjs/map-select-tools_3.cjs.entry.js +3 -3
  137. package/dist/cjs/{math-5132d9bd.js → math-f28069f3.js} +1 -1
  138. package/dist/cjs/{mk-b209ac0d.js → mk-9f79812b.js} +14 -14
  139. package/dist/cjs/{nb-db13e666.js → nb-673fe3fd.js} +14 -14
  140. package/dist/cjs/{nl-fcd9e0c5.js → nl-4dc0504f.js} +14 -14
  141. package/dist/cjs/{observers-f5fa975b.js → observers-9912f013.js} +1 -1
  142. package/dist/cjs/{openCloseComponent-5d70fcd8.js → openCloseComponent-05cb01ff.js} +9 -4
  143. package/dist/cjs/{pl-87c83322.js → pl-d809a6c3.js} +14 -14
  144. package/dist/cjs/{pt-b0b5f472.js → pt-78eefbc7.js} +14 -14
  145. package/dist/cjs/{pt-br-03333e90.js → pt-br-55f1893a.js} +14 -14
  146. package/dist/cjs/public-notification.cjs.entry.js +3 -3
  147. package/dist/cjs/{resources-60c27547.js → resources-030a27ed.js} +1 -1
  148. package/dist/cjs/{resources-91409a5d.js → resources-10d29626.js} +1 -1
  149. package/dist/cjs/{resources-9f2b33ee.js → resources-24b6eee0.js} +1 -1
  150. package/dist/cjs/{resources-4da89742.js → resources-2b51cf4c.js} +1 -1
  151. package/dist/cjs/{resources-e1258e8a.js → resources-8f4e8ba8.js} +1 -1
  152. package/dist/cjs/{resources-77713c2e.js → resources-993f6faf.js} +1 -1
  153. package/dist/cjs/{resources-2901b608.js → resources-a2e2a544.js} +1 -1
  154. package/dist/cjs/{resources-c913200c.js → resources-acf9a7ea.js} +1 -1
  155. package/dist/cjs/{resources-8233a151.js → resources-caca31c2.js} +1 -1
  156. package/dist/cjs/{ro-c3661b73.js → ro-f0cff196.js} +14 -14
  157. package/dist/cjs/{ru-8dd3fd58.js → ru-5e9b37f9.js} +14 -14
  158. package/dist/cjs/{shared-list-render-c0adb192.js → shared-list-render-9bbcb306.js} +6 -6
  159. package/dist/cjs/{sk-151d9acf.js → sk-322cd349.js} +14 -14
  160. package/dist/cjs/{sl-9b45a152.js → sl-fd948e50.js} +14 -14
  161. package/dist/cjs/solution-configuration.cjs.entry.js +1 -1
  162. package/dist/cjs/solution-contents_3.cjs.entry.js +1 -1
  163. package/dist/cjs/solutions-components.cjs.js +3 -3
  164. package/dist/cjs/{sortableComponent-58679f07.js → sortableComponent-70bf79de.js} +2 -2
  165. package/dist/cjs/{sr-186bf15c.js → sr-f0058b24.js} +14 -14
  166. package/dist/cjs/{sv-a93fee0c.js → sv-8a8378bf.js} +14 -14
  167. package/dist/cjs/{t9n-1d032c30.js → t9n-62d807df.js} +2 -2
  168. package/dist/cjs/{th-41680352.js → th-f219fad6.js} +14 -14
  169. package/dist/cjs/{time-5e450ec8.js → time-24d40c60.js} +2 -2
  170. package/dist/cjs/{tr-0bd886d6.js → tr-03109641.js} +14 -14
  171. package/dist/cjs/{uk-4fade133.js → uk-dde46112.js} +14 -14
  172. package/dist/cjs/{utils-cd14113f.js → utils-09191c93.js} +2 -2
  173. package/dist/cjs/{utils-acfeed9d.js → utils-651e6663.js} +3 -3
  174. package/dist/cjs/{utils-ae9bdd59.js → utils-852fe124.js} +3 -3
  175. package/dist/cjs/{utils-bae432a9.js → utils-a194dc3d.js} +5 -2
  176. package/dist/cjs/{vi-1c9fe343.js → vi-60ed6e30.js} +14 -14
  177. package/dist/cjs/{zh-cn-28fa1fe1.js → zh-cn-a2f6f51d.js} +14 -14
  178. package/dist/cjs/{zh-hk-5abf8eb5.js → zh-hk-e14e2fc0.js} +14 -14
  179. package/dist/cjs/{zh-tw-07500357.js → zh-tw-7ea0d7e4.js} +14 -14
  180. package/dist/collection/collection-manifest.json +1 -0
  181. package/dist/collection/components/crowdsource-manager/crowdsource-manager.js +22 -28
  182. package/dist/collection/components/info-card/info-card.css +14 -0
  183. package/dist/collection/components/info-card/info-card.js +3 -2
  184. package/dist/collection/components/layer-table/layer-table.js +60 -9
  185. package/dist/collection/components/map-card/map-card.js +10 -6
  186. package/dist/collection/components/map-legend/map-legend.css +3 -0
  187. package/dist/collection/components/map-legend/map-legend.js +166 -0
  188. package/dist/collection/components/map-legend/test/map-legend.e2e.js +14 -0
  189. package/dist/collection/components/map-legend/test/map-legend.spec.js +22 -0
  190. package/dist/collection/components/map-tools/map-tools.js +25 -4
  191. package/dist/collection/demos/crowdsource-manager.html +26 -1
  192. package/dist/collection/utils/downloadUtils.js +250 -230
  193. package/dist/collection/utils/downloadUtils.ts +347 -326
  194. package/dist/collection/utils/interfaces.ts +11 -0
  195. package/dist/collection/utils/test/downloadUtils.spec.js +503 -57
  196. package/dist/collection/utils/test/downloadUtils.spec.tsx +587 -61
  197. package/dist/components/ExpandToggle.js +2 -2
  198. package/dist/components/FloatingArrow.js +1 -1
  199. package/dist/components/Heading.js +1 -1
  200. package/dist/components/action-bar.js +23 -15
  201. package/dist/components/action-group.js +9 -10
  202. package/dist/components/action-menu.js +1 -1
  203. package/dist/components/action.js +1 -1
  204. package/dist/components/alert.js +2 -2
  205. package/dist/components/array.js +1 -1
  206. package/dist/components/avatar.js +2 -2
  207. package/dist/components/button.js +1 -1
  208. package/dist/components/calcite-accordion-item.js +2 -7
  209. package/dist/components/calcite-accordion.js +0 -5
  210. package/dist/components/calcite-action-pad.js +10 -5
  211. package/dist/components/calcite-block-section.js +2 -2
  212. package/dist/components/calcite-block.js +2 -2
  213. package/dist/components/calcite-card.js +1 -1
  214. package/dist/components/calcite-chip-group.js +0 -5
  215. package/dist/components/calcite-combobox-item-group.js +1 -1
  216. package/dist/components/calcite-fab.js +1 -1
  217. package/dist/components/calcite-flow-item.js +1 -1
  218. package/dist/components/calcite-flow.js +1 -1
  219. package/dist/components/calcite-inline-editable.js +1 -1
  220. package/dist/components/calcite-input-date-picker.js +1 -1
  221. package/dist/components/calcite-input-time-picker.js +1 -1
  222. package/dist/components/calcite-input-time-zone.js +1 -1
  223. package/dist/components/calcite-list-item-group.js +1 -1
  224. package/dist/components/calcite-menu-item.js +1 -1
  225. package/dist/components/calcite-modal.js +2 -2
  226. package/dist/components/calcite-navigation-logo.js +1 -1
  227. package/dist/components/calcite-navigation-user.js +1 -1
  228. package/dist/components/calcite-navigation.js +2 -2
  229. package/dist/components/calcite-pagination.js +1 -1
  230. package/dist/components/calcite-radio-button-group.js +0 -5
  231. package/dist/components/calcite-radio-button.js +1 -1
  232. package/dist/components/calcite-rating.js +1 -1
  233. package/dist/components/calcite-shell-center-row.js +1 -1
  234. package/dist/components/calcite-sortable-list.js +1 -1
  235. package/dist/components/calcite-split-button.js +1 -1
  236. package/dist/components/calcite-stepper.js +0 -5
  237. package/dist/components/calcite-text-area.js +5 -5
  238. package/dist/components/calcite-tile-select.js +1 -1
  239. package/dist/components/calcite-tip-manager.js +1 -1
  240. package/dist/components/calcite-tip.js +1 -1
  241. package/dist/components/card-manager2.js +5 -5
  242. package/dist/components/checkbox.js +0 -5
  243. package/dist/components/chip.js +2 -2
  244. package/dist/components/color-picker-hex-input.js +2 -2
  245. package/dist/components/color-picker-swatch.js +1 -1
  246. package/dist/components/combobox-item.js +1 -1
  247. package/dist/components/combobox.js +1 -6
  248. package/dist/components/conditionalSlot.js +1 -1
  249. package/dist/components/crowdsource-manager.js +29 -18
  250. package/dist/components/date-picker-month-header.js +1 -1
  251. package/dist/components/date-picker.js +2 -2
  252. package/dist/components/date.js +1 -1
  253. package/dist/components/dom.js +2 -2
  254. package/dist/components/downloadUtils.js +247 -260
  255. package/dist/components/dropdown-group.js +1 -1
  256. package/dist/components/dropdown-item.js +1 -1
  257. package/dist/components/dropdown.js +1 -1
  258. package/dist/components/esri-loader.js +15 -15
  259. package/dist/components/filter.js +1 -1
  260. package/dist/components/filter2.js +1 -1
  261. package/dist/components/floating-ui.js +1 -1
  262. package/dist/components/focusTrapComponent.js +4 -4
  263. package/dist/components/form.js +1 -1
  264. package/dist/components/graph.js +3 -8
  265. package/dist/components/guid.js +1 -1
  266. package/dist/components/handle.js +1 -1
  267. package/dist/components/icon.js +2 -2
  268. package/dist/components/index.js +2 -2
  269. package/dist/components/info-card2.js +9 -8
  270. package/dist/components/input-message.js +1 -1
  271. package/dist/components/input-number.js +1 -1
  272. package/dist/components/input-text.js +1 -1
  273. package/dist/components/input.js +1 -1
  274. package/dist/components/interactive.js +2 -2
  275. package/dist/components/key.js +1 -1
  276. package/dist/components/label.js +2 -2
  277. package/dist/components/label2.js +1 -1
  278. package/dist/components/layer-table2.js +40 -9
  279. package/dist/components/layout-manager.js +129 -1
  280. package/dist/components/list-item2.js +1 -1
  281. package/dist/components/list.js +2 -2
  282. package/dist/components/loadable.js +1 -1
  283. package/dist/components/locale2.js +2 -2
  284. package/dist/components/map-card2.js +46 -37
  285. package/dist/components/map-legend.d.ts +11 -0
  286. package/dist/components/map-legend.js +11 -0
  287. package/dist/components/map-legend2.js +118 -0
  288. package/dist/components/map-tools2.js +47 -22
  289. package/dist/components/math.js +1 -1
  290. package/dist/components/menu.js +1 -1
  291. package/dist/components/notice.js +1 -1
  292. package/dist/components/observers.js +1 -1
  293. package/dist/components/openCloseComponent.js +9 -4
  294. package/dist/components/panel.js +2 -2
  295. package/dist/components/pick-list-item.js +1 -1
  296. package/dist/components/popover.js +3 -8
  297. package/dist/components/resources.js +1 -1
  298. package/dist/components/resources2.js +1 -1
  299. package/dist/components/resources3.js +1 -1
  300. package/dist/components/resources4.js +1 -1
  301. package/dist/components/scrim.js +1 -1
  302. package/dist/components/segmented-control-item.js +1 -1
  303. package/dist/components/select.js +1 -1
  304. package/dist/components/shared-list-render.js +2 -2
  305. package/dist/components/shell-panel.js +9 -6
  306. package/dist/components/shell.js +2 -2
  307. package/dist/components/slider.js +1 -1
  308. package/dist/components/sortableComponent.js +1 -1
  309. package/dist/components/stack.js +2 -2
  310. package/dist/components/t9n.js +1 -1
  311. package/dist/components/tab-title.js +1 -6
  312. package/dist/components/tabs.js +1 -1
  313. package/dist/components/tile.js +1 -1
  314. package/dist/components/time-picker.js +2 -2
  315. package/dist/components/tooltip.js +3 -3
  316. package/dist/components/tree-item.js +2 -2
  317. package/dist/components/tree.js +1 -1
  318. package/dist/components/utils.js +5 -2
  319. package/dist/components/utils2.js +2 -2
  320. package/dist/components/utils3.js +2 -2
  321. package/dist/components/value-list-item.js +1 -1
  322. package/dist/components/value-list.js +2 -2
  323. package/dist/esm/{ExpandToggle-3d10bd1e.js → ExpandToggle-3bfcb842.js} +5 -5
  324. package/dist/esm/{FloatingArrow-29db6da6.js → FloatingArrow-cf140d6b.js} +1 -1
  325. package/dist/esm/{Heading-cb79e5b2.js → Heading-140d10ff.js} +1 -1
  326. package/dist/esm/{app-globals-5cbac6b0.js → app-globals-fffe4e27.js} +3 -3
  327. package/dist/esm/{ar-4b751ba8.js → ar-45abeb31.js} +14 -14
  328. package/dist/esm/{array-751a2b87.js → array-d95985ad.js} +1 -1
  329. package/dist/esm/{basemap-gallery_4.entry.js → basemap-gallery_5.entry.js} +115 -7
  330. package/dist/esm/{bg-5d8bf5ea.js → bg-af759e86.js} +14 -14
  331. package/dist/esm/{bs-ff510e71.js → bs-20d012de.js} +14 -14
  332. package/dist/esm/buffer-tools_4.entry.js +15 -15
  333. package/dist/esm/{ca-b9a5e51a.js → ca-1498df65.js} +14 -14
  334. package/dist/esm/calcite-accordion-item.entry.js +7 -12
  335. package/dist/esm/calcite-accordion.entry.js +1 -6
  336. package/dist/esm/calcite-action-bar.entry.js +31 -26
  337. package/dist/esm/calcite-action-group_2.entry.js +18 -20
  338. package/dist/esm/calcite-action-pad.entry.js +20 -16
  339. package/dist/esm/calcite-action_2.entry.js +17 -22
  340. package/dist/esm/calcite-alert.entry.js +11 -11
  341. package/dist/esm/calcite-avatar.entry.js +6 -6
  342. package/dist/esm/calcite-block-section.entry.js +9 -9
  343. package/dist/esm/calcite-block.entry.js +12 -12
  344. package/dist/esm/calcite-button.entry.js +12 -12
  345. package/dist/esm/calcite-card.entry.js +9 -9
  346. package/dist/esm/calcite-checkbox.entry.js +8 -13
  347. package/dist/esm/calcite-chip-group.entry.js +6 -11
  348. package/dist/esm/calcite-chip.entry.js +11 -11
  349. package/dist/esm/calcite-color-picker-hex-input_2.entry.js +8 -8
  350. package/dist/esm/calcite-color-picker.entry.js +12 -12
  351. package/dist/esm/calcite-combobox-item-group.entry.js +5 -5
  352. package/dist/esm/calcite-combobox_6.entry.js +21 -26
  353. package/dist/esm/calcite-date-picker-day_3.entry.js +10 -10
  354. package/dist/esm/calcite-date-picker.entry.js +11 -11
  355. package/dist/esm/calcite-fab.entry.js +6 -6
  356. package/dist/esm/calcite-filter_5.entry.js +16 -16
  357. package/dist/esm/calcite-flow-item.entry.js +11 -11
  358. package/dist/esm/calcite-flow.entry.js +3 -3
  359. package/dist/esm/calcite-graph.entry.js +5 -10
  360. package/dist/esm/calcite-icon.entry.js +6 -6
  361. package/dist/esm/calcite-inline-editable.entry.js +11 -11
  362. package/dist/esm/calcite-input-date-picker.entry.js +17 -17
  363. package/dist/esm/calcite-input-number_2.entry.js +13 -13
  364. package/dist/esm/{calcite-input-time-picker-13448515.js → calcite-input-time-picker-227e60c3.js} +60 -60
  365. package/dist/esm/calcite-input-time-picker.entry.js +14 -14
  366. package/dist/esm/calcite-input-time-zone.entry.js +12 -12
  367. package/dist/esm/calcite-input_2.entry.js +12 -12
  368. package/dist/esm/calcite-label.entry.js +5 -5
  369. package/dist/esm/calcite-link.entry.js +5 -5
  370. package/dist/esm/calcite-list-item-group.entry.js +3 -3
  371. package/dist/esm/calcite-loader.entry.js +1 -1
  372. package/dist/esm/calcite-menu-item.entry.js +9 -9
  373. package/dist/esm/calcite-menu.entry.js +9 -9
  374. package/dist/esm/calcite-modal.entry.js +12 -12
  375. package/dist/esm/calcite-navigation-logo.entry.js +2 -2
  376. package/dist/esm/calcite-navigation-user.entry.js +2 -2
  377. package/dist/esm/calcite-navigation.entry.js +5 -5
  378. package/dist/esm/calcite-notice.entry.js +11 -11
  379. package/dist/esm/calcite-option_2.entry.js +9 -9
  380. package/dist/esm/calcite-pagination.entry.js +9 -9
  381. package/dist/esm/calcite-panel_2.entry.js +14 -14
  382. package/dist/esm/calcite-pick-list-group.entry.js +7 -7
  383. package/dist/esm/calcite-pick-list-item.entry.js +12 -12
  384. package/dist/esm/calcite-pick-list.entry.js +10 -10
  385. package/dist/esm/calcite-radio-button-group.entry.js +2 -7
  386. package/dist/esm/calcite-radio-button.entry.js +9 -9
  387. package/dist/esm/calcite-rating.entry.js +12 -12
  388. package/dist/esm/calcite-scrim.entry.js +8 -8
  389. package/dist/esm/calcite-segmented-control_2.entry.js +8 -8
  390. package/dist/esm/calcite-shell-center-row.entry.js +6 -6
  391. package/dist/esm/calcite-shell-panel_14.entry.js +29 -32
  392. package/dist/esm/calcite-sortable-list.entry.js +7 -7
  393. package/dist/esm/calcite-split-button.entry.js +3 -3
  394. package/dist/esm/calcite-stepper-item.entry.js +8 -8
  395. package/dist/esm/calcite-stepper.entry.js +3 -8
  396. package/dist/esm/calcite-switch.entry.js +8 -8
  397. package/dist/esm/calcite-text-area.entry.js +15 -15
  398. package/dist/esm/calcite-tile-select-group.entry.js +1 -1
  399. package/dist/esm/calcite-tile-select.entry.js +4 -4
  400. package/dist/esm/calcite-tile.entry.js +7 -7
  401. package/dist/esm/calcite-time-picker.entry.js +10 -10
  402. package/dist/esm/calcite-tip-manager.entry.js +9 -9
  403. package/dist/esm/calcite-tip.entry.js +10 -10
  404. package/dist/esm/calcite-tooltip.entry.js +9 -9
  405. package/dist/esm/calcite-tree_3.entry.js +8 -8
  406. package/dist/esm/{card-manager_4.entry.js → card-manager_3.entry.js} +48 -93
  407. package/dist/esm/{conditionalSlot-27a0fce0.js → conditionalSlot-55a14abd.js} +2 -2
  408. package/dist/esm/crowdsource-manager.entry.js +23 -11
  409. package/dist/esm/{cs-f21a0628.js → cs-3bd67855.js} +14 -14
  410. package/dist/esm/{da-dc48fc4c.js → da-7a76e131.js} +14 -14
  411. package/dist/esm/{date-0ed48e97.js → date-bd5b879c.js} +2 -2
  412. package/dist/esm/{de-59290071.js → de-0808a43e.js} +14 -14
  413. package/dist/esm/{de-at-cd6e6ab7.js → de-at-0b6874cb.js} +14 -14
  414. package/dist/esm/{de-ch-27c44e34.js → de-ch-c9d429dd.js} +14 -14
  415. package/dist/esm/{dom-843e3afd.js → dom-37f2dec9.js} +3 -3
  416. package/dist/esm/{downloadUtils-63661805.js → downloadUtils-64c27514.js} +249 -262
  417. package/dist/esm/edit-card_2.entry.js +6 -5
  418. package/dist/esm/{el-f09fdec6.js → el-66001281.js} +14 -14
  419. package/dist/esm/{en-au-90087aa5.js → en-au-6424fec0.js} +14 -14
  420. package/dist/esm/{en-ca-10751695.js → en-ca-f5f1659d.js} +14 -14
  421. package/dist/esm/{en-gb-0f8547bd.js → en-gb-796beadd.js} +14 -14
  422. package/dist/esm/{es-b0997cf1.js → es-cd139926.js} +14 -14
  423. package/dist/esm/{es-mx-226f5028.js → es-mx-854dc3e4.js} +14 -14
  424. package/dist/esm/{et-dc96c453.js → et-2aa6782d.js} +14 -14
  425. package/dist/esm/{fi-0941704d.js → fi-965727bd.js} +14 -14
  426. package/dist/esm/{filter-1cac3edf.js → filter-60517290.js} +1 -1
  427. package/dist/esm/{floating-ui-d28d0fd6.js → floating-ui-7cde67cf.js} +2 -2
  428. package/dist/esm/{focusTrapComponent-ff3a9f28.js → focusTrapComponent-ec344399.js} +4 -4
  429. package/dist/esm/{form-11c6a015.js → form-04d47b0b.js} +2 -2
  430. package/dist/esm/{fr-8da3458d.js → fr-c1884e89.js} +14 -14
  431. package/dist/esm/{fr-ch-739ceddf.js → fr-ch-1fd8dd3a.js} +14 -14
  432. package/dist/esm/{guid-2bbb8cd1.js → guid-70cda807.js} +1 -1
  433. package/dist/esm/{he-8b662dfa.js → he-0d7b78b4.js} +14 -14
  434. package/dist/esm/{hi-10996f89.js → hi-0376c82d.js} +14 -14
  435. package/dist/esm/{hr-42c2024d.js → hr-28a64903.js} +14 -14
  436. package/dist/esm/{hu-4768b3ff.js → hu-44a02ff7.js} +14 -14
  437. package/dist/esm/{id-24a08170.js → id-034fc4a5.js} +14 -14
  438. package/dist/esm/{index.es-3a3aa8e3.js → index.es-b7bc2db1.js} +3 -3
  439. package/dist/esm/{interactive-eaf4be29.js → interactive-bd6837bc.js} +2 -2
  440. package/dist/esm/{it-ad09649f.js → it-56e52026.js} +14 -14
  441. package/dist/esm/{it-ch-b05fc10d.js → it-ch-a4a0e136.js} +14 -14
  442. package/dist/esm/{ja-ab839b73.js → ja-f2365272.js} +14 -14
  443. package/dist/esm/{key-7a525416.js → key-02fa06ae.js} +1 -1
  444. package/dist/esm/{ko-c778539e.js → ko-e7650b4c.js} +14 -14
  445. package/dist/esm/{label-6a1caf64.js → label-b6dfb4d5.js} +3 -3
  446. package/dist/{components/layout-manager2.js → esm/layout-manager.entry.js} +11 -58
  447. package/dist/esm/{loadModules-2ecd1e44.js → loadModules-f5f910b6.js} +1 -1
  448. package/dist/esm/{loadable-6bca96ad.js → loadable-47170cb6.js} +1 -1
  449. package/dist/esm/loader.js +3 -3
  450. package/dist/esm/{locale-d8561d54.js → locale-146251f7.js} +5 -5
  451. package/dist/esm/{locale-aa3de591.js → locale-efad8f83.js} +15 -15
  452. package/dist/esm/{lt-447d9aa9.js → lt-1577a952.js} +14 -14
  453. package/dist/esm/{lv-4d715e11.js → lv-9ef7e4f6.js} +14 -14
  454. package/dist/esm/map-select-tools_3.entry.js +3 -3
  455. package/dist/esm/{math-5f92f517.js → math-0d6817c3.js} +1 -1
  456. package/dist/esm/{mk-b3d7401a.js → mk-94264e08.js} +14 -14
  457. package/dist/esm/{nb-2b4a8366.js → nb-fa24d5b2.js} +14 -14
  458. package/dist/esm/{nl-c0db1da2.js → nl-33f10900.js} +14 -14
  459. package/dist/esm/{observers-9d66685a.js → observers-95c50046.js} +1 -1
  460. package/dist/esm/{openCloseComponent-2b5c6bed.js → openCloseComponent-10efeff3.js} +9 -4
  461. package/dist/esm/{pl-0d322bb4.js → pl-9ed16565.js} +14 -14
  462. package/dist/esm/{pt-5997598c.js → pt-52731ddf.js} +14 -14
  463. package/dist/esm/{pt-br-6b77e7db.js → pt-br-8de51ff4.js} +14 -14
  464. package/dist/esm/public-notification.entry.js +3 -3
  465. package/dist/esm/{resources-5bce3953.js → resources-0151b0c0.js} +1 -1
  466. package/dist/esm/{resources-94c47e64.js → resources-1e6d76df.js} +1 -1
  467. package/dist/esm/{resources-40d8e06f.js → resources-24255b05.js} +1 -1
  468. package/dist/esm/{resources-dca3d475.js → resources-2e5aa562.js} +1 -1
  469. package/dist/esm/{resources-c253772f.js → resources-2edfa0af.js} +1 -1
  470. package/dist/esm/{resources-a9b2d33c.js → resources-41416583.js} +1 -1
  471. package/dist/esm/{resources-d6a4d343.js → resources-b392187d.js} +1 -1
  472. package/dist/esm/{resources-58d30a0f.js → resources-c676d5de.js} +1 -1
  473. package/dist/esm/{resources-c65f5654.js → resources-efae7280.js} +1 -1
  474. package/dist/esm/{ro-ac3724e0.js → ro-99f009ad.js} +14 -14
  475. package/dist/esm/{ru-4e75151f.js → ru-592ffaf0.js} +14 -14
  476. package/dist/esm/{shared-list-render-abd19c8d.js → shared-list-render-4f0f6af8.js} +6 -6
  477. package/dist/esm/{sk-bbfa22a3.js → sk-44f7bd19.js} +14 -14
  478. package/dist/esm/{sl-867cecfc.js → sl-08cad9bd.js} +14 -14
  479. package/dist/esm/solution-configuration.entry.js +1 -1
  480. package/dist/esm/solution-contents_3.entry.js +1 -1
  481. package/dist/esm/solutions-components.js +3 -3
  482. package/dist/esm/{sortableComponent-db502e97.js → sortableComponent-8a84709a.js} +2 -2
  483. package/dist/esm/{sr-198b5c00.js → sr-84f261fc.js} +14 -14
  484. package/dist/esm/{sv-02d64370.js → sv-d0d7bc1e.js} +14 -14
  485. package/dist/esm/{t9n-76168237.js → t9n-5f748619.js} +2 -2
  486. package/dist/esm/{th-1616e303.js → th-a5149d44.js} +14 -14
  487. package/dist/esm/{time-6721a4c2.js → time-fa1151aa.js} +2 -2
  488. package/dist/esm/{tr-f4619f64.js → tr-feb0cad4.js} +14 -14
  489. package/dist/esm/{uk-df7df34a.js → uk-c9ba62a0.js} +14 -14
  490. package/dist/esm/{utils-f54411df.js → utils-0a5c1a07.js} +3 -3
  491. package/dist/esm/{utils-ccfd94a7.js → utils-667cc396.js} +3 -3
  492. package/dist/esm/{utils-18db6b1d.js → utils-7af1efcc.js} +2 -2
  493. package/dist/esm/{utils-2c91c963.js → utils-7cf107ec.js} +5 -2
  494. package/dist/esm/{vi-176ca9f7.js → vi-788dcb99.js} +14 -14
  495. package/dist/esm/{zh-cn-e13d83d1.js → zh-cn-3ccfb820.js} +14 -14
  496. package/dist/esm/{zh-hk-d97365d8.js → zh-hk-b29b61e8.js} +14 -14
  497. package/dist/esm/{zh-tw-a2b6f0b7.js → zh-tw-2bdbc6eb.js} +14 -14
  498. package/dist/solutions-components/assets/icon/applySelectionToExistingView16.json +1 -0
  499. package/dist/solutions-components/assets/icon/applySelectionToExistingView24.json +1 -0
  500. package/dist/solutions-components/assets/icon/applySelectionToExistingView32.json +1 -0
  501. package/dist/solutions-components/assets/icon/channels16.json +1 -0
  502. package/dist/solutions-components/assets/icon/channels24.json +1 -0
  503. package/dist/solutions-components/assets/icon/channels32.json +1 -0
  504. package/dist/solutions-components/assets/icon/chevronDownLeft16.json +1 -0
  505. package/dist/solutions-components/assets/icon/chevronDownLeft24.json +1 -0
  506. package/dist/solutions-components/assets/icon/chevronDownLeft32.json +1 -0
  507. package/dist/solutions-components/assets/icon/chevronDownRight16.json +1 -0
  508. package/dist/solutions-components/assets/icon/chevronDownRight24.json +1 -0
  509. package/dist/solutions-components/assets/icon/chevronDownRight32.json +1 -0
  510. package/dist/solutions-components/assets/icon/chevronUpLeft16.json +1 -0
  511. package/dist/solutions-components/assets/icon/chevronUpLeft24.json +1 -0
  512. package/dist/solutions-components/assets/icon/chevronUpLeft32.json +1 -0
  513. package/dist/solutions-components/assets/icon/chevronUpRight16.json +1 -0
  514. package/dist/solutions-components/assets/icon/chevronUpRight24.json +1 -0
  515. package/dist/solutions-components/assets/icon/chevronUpRight32.json +1 -0
  516. package/dist/solutions-components/assets/icon/clearSelection16.json +1 -0
  517. package/dist/solutions-components/assets/icon/clearSelection24.json +1 -0
  518. package/dist/solutions-components/assets/icon/clearSelection32.json +1 -0
  519. package/dist/solutions-components/assets/icon/communityLinkChartLayout16.json +1 -0
  520. package/dist/solutions-components/assets/icon/communityLinkChartLayout24.json +1 -0
  521. package/dist/solutions-components/assets/icon/communityLinkChartLayout32.json +1 -0
  522. package/dist/solutions-components/assets/icon/dataCard16.json +1 -0
  523. package/dist/solutions-components/assets/icon/dataCard24.json +1 -0
  524. package/dist/solutions-components/assets/icon/dataCard32.json +1 -0
  525. package/dist/solutions-components/assets/icon/dateTime16.json +1 -0
  526. package/dist/solutions-components/assets/icon/dateTime24.json +1 -0
  527. package/dist/solutions-components/assets/icon/dateTime32.json +1 -0
  528. package/dist/solutions-components/assets/icon/expressionDefinedColor16.json +1 -0
  529. package/dist/solutions-components/assets/icon/expressionDefinedColor24.json +1 -0
  530. package/dist/solutions-components/assets/icon/expressionDefinedColor32.json +1 -0
  531. package/dist/solutions-components/assets/icon/forceDirectedLinkChartLayout16.json +1 -0
  532. package/dist/solutions-components/assets/icon/forceDirectedLinkChartLayout24.json +1 -0
  533. package/dist/solutions-components/assets/icon/forceDirectedLinkChartLayout32.json +1 -0
  534. package/dist/solutions-components/assets/icon/hierarchicalLinkChartLayout16.json +1 -0
  535. package/dist/solutions-components/assets/icon/hierarchicalLinkChartLayout24.json +1 -0
  536. package/dist/solutions-components/assets/icon/hierarchicalLinkChartLayout32.json +1 -0
  537. package/dist/solutions-components/assets/icon/knowledgeStudio16.json +1 -0
  538. package/dist/solutions-components/assets/icon/knowledgeStudio24.json +1 -0
  539. package/dist/solutions-components/assets/icon/knowledgeStudio32.json +1 -0
  540. package/dist/solutions-components/assets/icon/linkChartExpand16.json +1 -0
  541. package/dist/solutions-components/assets/icon/linkChartExpand24.json +1 -0
  542. package/dist/solutions-components/assets/icon/linkChartExpand32.json +1 -0
  543. package/dist/solutions-components/assets/icon/minusSquare16F.json +1 -0
  544. package/dist/solutions-components/assets/icon/minusSquare24F.json +1 -0
  545. package/dist/solutions-components/assets/icon/minusSquare32F.json +1 -0
  546. package/dist/solutions-components/assets/icon/newLinkChart16.json +1 -0
  547. package/dist/solutions-components/assets/icon/newLinkChart24.json +1 -0
  548. package/dist/solutions-components/assets/icon/newLinkChart32.json +1 -0
  549. package/dist/solutions-components/assets/icon/radialTreeLinkChartYayout16.json +1 -0
  550. package/dist/solutions-components/assets/icon/radialTreeLinkChartYayout24.json +1 -0
  551. package/dist/solutions-components/assets/icon/radialTreeLinkChartYayout32.json +1 -0
  552. package/dist/solutions-components/assets/icon/removeLinkchart16.json +1 -0
  553. package/dist/solutions-components/assets/icon/removeLinkchart24.json +1 -0
  554. package/dist/solutions-components/assets/icon/removeLinkchart32.json +1 -0
  555. package/dist/solutions-components/assets/icon/simpleLinkChartLayout16.json +1 -0
  556. package/dist/solutions-components/assets/icon/simpleLinkChartLayout24.json +1 -0
  557. package/dist/solutions-components/assets/icon/simpleLinkChartLayout32.json +1 -0
  558. package/dist/solutions-components/assets/icon/smartTreeLinkChartLayout16.json +1 -0
  559. package/dist/solutions-components/assets/icon/smartTreeLinkChartLayout24.json +1 -0
  560. package/dist/solutions-components/assets/icon/smartTreeLinkChartLayout32.json +1 -0
  561. package/dist/solutions-components/assets/icon/sortAscendingArrow16.json +1 -1
  562. package/dist/solutions-components/assets/icon/sortAscendingArrow24.json +1 -1
  563. package/dist/solutions-components/assets/icon/sortAscendingArrow32.json +1 -1
  564. package/dist/solutions-components/assets/icon/sortDescendingArrow16.json +1 -1
  565. package/dist/solutions-components/assets/icon/sortDescendingArrow24.json +1 -1
  566. package/dist/solutions-components/assets/icon/sortDescendingArrow32.json +1 -1
  567. package/dist/solutions-components/assets/icon/timeZone16.json +1 -0
  568. package/dist/solutions-components/assets/icon/timeZone24.json +1 -0
  569. package/dist/solutions-components/assets/icon/timeZone32.json +1 -0
  570. package/dist/solutions-components/assets/icon/updateProject16.json +1 -0
  571. package/dist/solutions-components/assets/icon/updateProject24.json +1 -0
  572. package/dist/solutions-components/assets/icon/updateProject32.json +1 -0
  573. package/dist/solutions-components/demos/crowdsource-manager.html +26 -1
  574. package/dist/solutions-components/{p-9fb16c72.entry.js → p-0109bef4.entry.js} +10 -10
  575. package/dist/solutions-components/{p-46d5970b.entry.js → p-01c83b8c.entry.js} +1 -1
  576. package/dist/solutions-components/{p-6de98c51.js → p-0266ca81.js} +1 -1
  577. package/dist/solutions-components/{p-8a758303.js → p-05b2bdf9.js} +3 -3
  578. package/dist/solutions-components/p-072155f9.js +12 -0
  579. package/dist/solutions-components/{p-e07b8a72.entry.js → p-082365d6.entry.js} +3 -3
  580. package/dist/solutions-components/{p-ea282908.js → p-0b8463d6.js} +1 -1
  581. package/dist/solutions-components/{p-cad5587c.entry.js → p-0c2e392e.entry.js} +6 -6
  582. package/dist/solutions-components/p-0dce2c3b.entry.js +6 -0
  583. package/dist/solutions-components/{p-c3f8b670.js → p-0ecd7346.js} +1 -1
  584. package/dist/solutions-components/{p-18f1772b.js → p-0ed14b4b.js} +1 -1
  585. package/dist/solutions-components/p-0f77e83c.entry.js +11 -0
  586. package/dist/solutions-components/{p-29d41c7e.js → p-0f85fa4b.js} +1 -1
  587. package/dist/solutions-components/{p-541697d0.js → p-0fa3d1aa.js} +2 -2
  588. package/dist/solutions-components/{p-a6900100.entry.js → p-10e1ebe4.entry.js} +3 -3
  589. package/dist/solutions-components/{p-7c33e500.entry.js → p-12f06497.entry.js} +1 -1
  590. package/dist/solutions-components/{p-f41105c8.js → p-138cf009.js} +1 -1
  591. package/dist/solutions-components/{p-2b96e551.entry.js → p-149b4d3c.entry.js} +3 -3
  592. package/dist/solutions-components/{p-022a9b7a.js → p-167eb73b.js} +1 -1
  593. package/dist/solutions-components/{p-32f9c709.js → p-168a7d63.js} +1 -1
  594. package/dist/solutions-components/{p-2b252afd.entry.js → p-17a29fa6.entry.js} +1 -1
  595. package/dist/solutions-components/p-18538cd9.entry.js +11 -0
  596. package/dist/solutions-components/p-1bcfca9b.entry.js +6 -0
  597. package/dist/solutions-components/{p-19fe7725.js → p-1cebde99.js} +1 -1
  598. package/dist/solutions-components/{p-b948ecd2.entry.js → p-1dbaff04.entry.js} +2 -2
  599. package/dist/solutions-components/{p-2656168f.entry.js → p-1e7a31c1.entry.js} +3 -3
  600. package/dist/solutions-components/{p-d554507d.js → p-1eda2d20.js} +1 -1
  601. package/dist/solutions-components/{p-ef48bd77.entry.js → p-1efcac52.entry.js} +3 -3
  602. package/dist/solutions-components/{p-c6d83122.entry.js → p-1fba74a5.entry.js} +3 -3
  603. package/dist/solutions-components/{p-3cbe5ef3.js → p-2154de6d.js} +1 -1
  604. package/dist/solutions-components/{p-1ea1dcac.js → p-22d06238.js} +1 -1
  605. package/dist/solutions-components/{p-1ede2e18.js → p-2592c0b8.js} +3 -3
  606. package/dist/solutions-components/{p-90bbf223.entry.js → p-261394d7.entry.js} +1 -1
  607. package/dist/solutions-components/{p-754e2df2.js → p-27e0f599.js} +1 -1
  608. package/dist/solutions-components/{p-6a820c4d.js → p-28b5a7cf.js} +1 -1
  609. package/dist/solutions-components/{p-804e4751.entry.js → p-29efbf76.entry.js} +3 -3
  610. package/dist/solutions-components/{p-421d5e7c.js → p-2bf63e2e.js} +1 -1
  611. package/dist/solutions-components/{p-d4c103a8.js → p-2e8a41da.js} +1 -1
  612. package/dist/solutions-components/{p-de59d2f5.js → p-31aaa60f.js} +1 -1
  613. package/dist/solutions-components/{p-a2748b38.entry.js → p-34ef43ce.entry.js} +1 -1
  614. package/dist/solutions-components/{p-97c47bbd.entry.js → p-35cb6eca.entry.js} +3 -3
  615. package/dist/solutions-components/{p-39ff5ee5.js → p-3766be72.js} +2 -2
  616. package/dist/solutions-components/{p-9e727488.js → p-38f906f2.js} +1 -1
  617. package/dist/solutions-components/{p-c5e294e4.js → p-3948a96c.js} +1 -1
  618. package/dist/solutions-components/{p-9bbc05ff.js → p-3a844a72.js} +1 -1
  619. package/dist/solutions-components/{p-825bac0e.js → p-3c15959e.js} +1 -1
  620. package/dist/solutions-components/{p-ffac6f88.entry.js → p-3ce89910.entry.js} +1 -1
  621. package/dist/solutions-components/{p-7920b5a2.entry.js → p-3cfaf52b.entry.js} +2 -2
  622. package/dist/solutions-components/{p-b9749e09.js → p-3d3e6e20.js} +1 -1
  623. package/dist/solutions-components/{p-844ee452.entry.js → p-410068d9.entry.js} +2 -2
  624. package/dist/solutions-components/{p-a775ba2f.entry.js → p-42f9ab43.entry.js} +3 -3
  625. package/dist/solutions-components/{p-2291b598.js → p-43ba7a04.js} +1 -1
  626. package/dist/solutions-components/{p-f28d69ac.entry.js → p-446ab7f8.entry.js} +3 -3
  627. package/dist/solutions-components/{p-4bc7b875.entry.js → p-452850b4.entry.js} +2 -2
  628. package/dist/solutions-components/{p-0fbc27fd.entry.js → p-456f5afe.entry.js} +2 -2
  629. package/dist/solutions-components/{p-b86b4512.entry.js → p-46e0ce0c.entry.js} +2 -2
  630. package/dist/solutions-components/p-470a9ec4.entry.js +6 -0
  631. package/dist/solutions-components/{p-d62784a4.js → p-476e5302.js} +1 -1
  632. package/dist/solutions-components/{p-7b90c18e.entry.js → p-476eb52c.entry.js} +1 -1
  633. package/dist/solutions-components/{p-5961c4e0.js → p-4a75b3dc.js} +1 -1
  634. package/dist/solutions-components/{p-42c7a5fa.entry.js → p-4d76eaf6.entry.js} +2 -2
  635. package/dist/solutions-components/{p-4e4b55b9.entry.js → p-4f9f97b2.entry.js} +3 -3
  636. package/dist/solutions-components/{p-67ce3c0c.entry.js → p-56f1d66b.entry.js} +3 -3
  637. package/dist/solutions-components/{p-5b9b1cbb.entry.js → p-58167087.entry.js} +3 -3
  638. package/dist/solutions-components/{p-ad72a379.entry.js → p-586f0e3d.entry.js} +3 -3
  639. package/dist/solutions-components/{p-6f2edf5b.js → p-588bc0c0.js} +1 -1
  640. package/dist/solutions-components/{p-a040efff.js → p-5958dad9.js} +1 -1
  641. package/dist/solutions-components/{p-4d17943f.js → p-5c9fa0e7.js} +1 -1
  642. package/dist/solutions-components/{p-b4157e6a.js → p-5ceef49b.js} +1 -1
  643. package/dist/solutions-components/{p-c9858d8f.entry.js → p-5d62566c.entry.js} +2 -2
  644. package/dist/solutions-components/{p-5f5c371e.js → p-5e08d4de.js} +1 -1
  645. package/dist/solutions-components/{p-b684bbc7.entry.js → p-5eaaf6ea.entry.js} +1 -1
  646. package/dist/solutions-components/{p-10248e04.js → p-60c15592.js} +1 -1
  647. package/dist/solutions-components/{p-7601988d.entry.js → p-6295e168.entry.js} +2 -2
  648. package/dist/solutions-components/{p-4f0c3fc1.js → p-635bbbd4.js} +1 -1
  649. package/dist/solutions-components/{p-aeebdb15.js → p-636f4631.js} +1 -1
  650. package/dist/solutions-components/{p-fb7e0054.js → p-643a0325.js} +1 -1
  651. package/dist/solutions-components/{p-606ca126.js → p-64e2c099.js} +1 -1
  652. package/dist/solutions-components/{p-ad4d6d02.entry.js → p-651459e2.entry.js} +4 -4
  653. package/dist/solutions-components/{p-b0c4138f.entry.js → p-667e7134.entry.js} +2 -2
  654. package/dist/solutions-components/{p-4b95d05e.entry.js → p-66b5211f.entry.js} +1 -1
  655. package/dist/solutions-components/{p-216801d5.js → p-688f6a0a.js} +1 -1
  656. package/dist/solutions-components/{p-3e139360.js → p-6be3c411.js} +1 -1
  657. package/dist/solutions-components/{p-6a524392.entry.js → p-6ce7b446.entry.js} +2 -2
  658. package/dist/solutions-components/{p-0e7914e6.entry.js → p-6ddc9567.entry.js} +3 -3
  659. package/dist/solutions-components/{p-7b9adfff.js → p-7060caf6.js} +1 -1
  660. package/dist/solutions-components/{p-bd3a3afe.js → p-7262469a.js} +1 -1
  661. package/dist/solutions-components/{p-3f0193e9.js → p-73220ff1.js} +1 -1
  662. package/dist/solutions-components/{p-31ff3452.entry.js → p-78a40191.entry.js} +2 -2
  663. package/dist/solutions-components/{p-82199b7b.entry.js → p-7a027758.entry.js} +1 -1
  664. package/dist/solutions-components/{p-a843af2a.js → p-7b2314ac.js} +1 -1
  665. package/dist/solutions-components/p-7bb12deb.js +11 -0
  666. package/dist/solutions-components/{p-56300653.js → p-7f271c31.js} +5 -5
  667. package/dist/solutions-components/p-7f9642d5.js +21 -0
  668. package/dist/solutions-components/{p-5c097e25.entry.js → p-80cb42e4.entry.js} +3 -3
  669. package/dist/solutions-components/{p-5383607a.js → p-80ea5869.js} +3 -3
  670. package/dist/solutions-components/{p-ab8f5c6b.entry.js → p-81814234.entry.js} +2 -2
  671. package/dist/solutions-components/{p-abda8ca2.entry.js → p-8544d557.entry.js} +2 -2
  672. package/dist/solutions-components/{p-680d193d.entry.js → p-864c190b.entry.js} +3 -3
  673. package/dist/solutions-components/p-869d4521.entry.js +6 -0
  674. package/dist/solutions-components/{p-d3a22725.js → p-872036a8.js} +1 -1
  675. package/dist/solutions-components/{p-22d580b0.entry.js → p-879d6377.entry.js} +3 -3
  676. package/dist/solutions-components/{p-4805ff13.js → p-87d66120.js} +1 -1
  677. package/dist/solutions-components/{p-9cb94ea0.js → p-8927339d.js} +1 -1
  678. package/dist/solutions-components/{p-7aa949a3.entry.js → p-89504313.entry.js} +2 -2
  679. package/dist/solutions-components/{p-cf43278c.entry.js → p-8af52074.entry.js} +3 -3
  680. package/dist/solutions-components/{p-3fc17d72.js → p-8b448a5b.js} +1 -1
  681. package/dist/solutions-components/{p-03fccde6.entry.js → p-8b74f5bb.entry.js} +3 -3
  682. package/dist/solutions-components/p-8b8a6c1f.entry.js +6 -0
  683. package/dist/solutions-components/{p-2ae17fa2.js → p-8c61431d.js} +1 -1
  684. package/dist/solutions-components/{p-634e1240.js → p-8d00a17e.js} +1 -1
  685. package/dist/solutions-components/{p-c07af9c2.entry.js → p-8f68f1d3.entry.js} +2 -2
  686. package/dist/solutions-components/{p-e6bee82f.js → p-8f8d2861.js} +1 -1
  687. package/dist/solutions-components/{p-108fbf59.entry.js → p-90cef98d.entry.js} +1 -1
  688. package/dist/solutions-components/{p-9603c3ff.entry.js → p-9370bb48.entry.js} +2 -2
  689. package/dist/solutions-components/{p-a777b18c.js → p-96239d0d.js} +2 -2
  690. package/dist/solutions-components/p-97a4001d.entry.js +6 -0
  691. package/dist/solutions-components/{p-215d3505.js → p-99402001.js} +1 -1
  692. package/dist/solutions-components/p-99891e57.js +11 -0
  693. package/dist/solutions-components/{p-15ef7894.js → p-9a35ef8e.js} +1 -1
  694. package/dist/solutions-components/{p-35123c90.js → p-9b76bf3d.js} +1 -1
  695. package/dist/solutions-components/{p-6b2f2b85.js → p-a16feeec.js} +4 -4
  696. package/dist/solutions-components/{p-e645edf2.entry.js → p-a1c6db13.entry.js} +1 -1
  697. package/dist/solutions-components/{p-75f26870.js → p-a26dc184.js} +13 -13
  698. package/dist/solutions-components/{p-0cc32f06.js → p-a287be8b.js} +1 -1
  699. package/dist/solutions-components/{p-052ff2c7.js → p-a46f1b45.js} +1 -1
  700. package/dist/solutions-components/{p-1f468797.js → p-ab072027.js} +1 -1
  701. package/dist/solutions-components/{p-31316d61.entry.js → p-ac0abf04.entry.js} +3 -3
  702. package/dist/solutions-components/{p-38ef0684.js → p-ad75b9bb.js} +2 -2
  703. package/dist/solutions-components/{p-a08bd8c1.entry.js → p-ae6a7b3b.entry.js} +1 -1
  704. package/dist/solutions-components/{p-05db4340.js → p-aea37c90.js} +1 -1
  705. package/dist/solutions-components/{p-164be8ef.entry.js → p-b25005cf.entry.js} +1 -1
  706. package/dist/solutions-components/{p-b2e6c578.js → p-b28b6d40.js} +1 -1
  707. package/dist/solutions-components/{p-639cca97.js → p-b28ff52c.js} +1 -1
  708. package/dist/solutions-components/{p-5e59219b.entry.js → p-b2a52acb.entry.js} +1 -1
  709. package/dist/solutions-components/{p-21f00df6.js → p-bde323ec.js} +1 -1
  710. package/dist/solutions-components/{p-a0edbb27.js → p-be146646.js} +1 -1
  711. package/dist/solutions-components/{p-a258f5e7.js → p-c1dcc1e7.js} +1 -1
  712. package/dist/solutions-components/p-c3ab7439.js +11 -0
  713. package/dist/solutions-components/{p-283e3a2d.js → p-c6e55b32.js} +1 -1
  714. package/dist/solutions-components/{p-e10a62f4.entry.js → p-c79c7978.entry.js} +3 -3
  715. package/dist/solutions-components/{p-647a4130.js → p-c9633864.js} +3 -3
  716. package/dist/solutions-components/{p-916f90ec.entry.js → p-c968f9aa.entry.js} +1 -1
  717. package/dist/solutions-components/{p-cf1af08f.entry.js → p-c9df539a.entry.js} +1 -1
  718. package/dist/solutions-components/{p-93074bd4.entry.js → p-ca3d7edd.entry.js} +2 -2
  719. package/dist/solutions-components/{p-2005280f.js → p-cacfa6ae.js} +2 -2
  720. package/dist/solutions-components/{p-27a1ac1f.entry.js → p-cc2393c3.entry.js} +3 -3
  721. package/dist/solutions-components/p-cd673260.js +6 -0
  722. package/dist/solutions-components/{p-761a033a.entry.js → p-cec47579.entry.js} +2 -2
  723. package/dist/solutions-components/{p-32ef065d.entry.js → p-ced11bea.entry.js} +2 -2
  724. package/dist/solutions-components/{p-ee066c67.js → p-cee23126.js} +5 -5
  725. package/dist/solutions-components/p-d2d3e4b5.js +11 -0
  726. package/dist/solutions-components/{p-0ece6df1.entry.js → p-d6f68a4e.entry.js} +2 -2
  727. package/dist/solutions-components/{p-326fa270.js → p-d864b7e3.js} +1 -1
  728. package/dist/solutions-components/{p-5adf37ea.entry.js → p-da6acb22.entry.js} +2 -2
  729. package/dist/solutions-components/{p-de58bd49.js → p-e0c011b8.js} +1 -1
  730. package/dist/solutions-components/{p-58ce5639.js → p-e0fb0920.js} +1 -1
  731. package/dist/solutions-components/{p-b1f84ae5.js → p-e2637fe6.js} +1 -1
  732. package/dist/solutions-components/{p-ef96894d.entry.js → p-e2eb4fd3.entry.js} +4 -4
  733. package/dist/solutions-components/{p-18869c0f.js → p-e3525c00.js} +1 -1
  734. package/dist/solutions-components/{p-1add4e39.entry.js → p-e3d72832.entry.js} +2 -2
  735. package/dist/solutions-components/{p-6431fd69.js → p-e4d2fcc5.js} +3 -3
  736. package/dist/solutions-components/{p-f055a840.js → p-e761b7cd.js} +1 -1
  737. package/dist/solutions-components/{p-4daae757.js → p-ea285144.js} +1 -1
  738. package/dist/solutions-components/p-ebbff02e.js +6 -0
  739. package/dist/solutions-components/{p-07bc4f07.entry.js → p-ec378ea0.entry.js} +3 -3
  740. package/dist/solutions-components/{p-12a4fa84.js → p-ec889511.js} +1 -1
  741. package/dist/solutions-components/{p-e02fcfa9.entry.js → p-f153f1c9.entry.js} +2 -2
  742. package/dist/solutions-components/{p-b49bdc72.entry.js → p-f596eabd.entry.js} +1 -1
  743. package/dist/solutions-components/{p-3aba40e8.js → p-f7b520ae.js} +2 -2
  744. package/dist/solutions-components/{p-4c43820f.entry.js → p-f815b5ef.entry.js} +1 -1
  745. package/dist/solutions-components/{p-955a956a.entry.js → p-fe96e0d9.entry.js} +4 -4
  746. package/dist/solutions-components/{p-b5d67495.entry.js → p-feff224c.entry.js} +2 -2
  747. package/dist/solutions-components/solutions-components.esm.js +1 -1
  748. package/dist/solutions-components/utils/downloadUtils.ts +347 -326
  749. package/dist/solutions-components/utils/interfaces.ts +11 -0
  750. package/dist/solutions-components/utils/test/downloadUtils.spec.tsx +587 -61
  751. package/dist/types/components/crowdsource-manager/crowdsource-manager.d.ts +11 -4
  752. package/dist/types/components/layer-table/layer-table.d.ts +14 -2
  753. package/dist/types/components/map-card/map-card.d.ts +2 -2
  754. package/dist/types/components/map-legend/map-legend.d.ts +64 -0
  755. package/dist/types/components/map-tools/map-tools.d.ts +13 -1
  756. package/dist/types/components.d.ts +40 -11
  757. package/dist/types/preact.d.ts +2 -0
  758. package/dist/types/utils/downloadUtils.d.ts +122 -15
  759. package/dist/types/utils/interfaces.d.ts +9 -0
  760. package/package.json +4 -10
  761. package/dist/solutions-components/p-2d70d3fd.js +0 -12
  762. package/dist/solutions-components/p-361f1fe1.js +0 -11
  763. package/dist/solutions-components/p-3bd99fc9.js +0 -11
  764. package/dist/solutions-components/p-418d0b60.entry.js +0 -6
  765. package/dist/solutions-components/p-525f1188.js +0 -11
  766. package/dist/solutions-components/p-55aefaa8.entry.js +0 -6
  767. package/dist/solutions-components/p-5b5a6ac8.entry.js +0 -6
  768. package/dist/solutions-components/p-91caf655.entry.js +0 -11
  769. package/dist/solutions-components/p-a0a2c53d.js +0 -21
  770. package/dist/solutions-components/p-a6c85bd7.entry.js +0 -6
  771. package/dist/solutions-components/p-b6578a32.js +0 -6
  772. package/dist/solutions-components/p-baccfd70.entry.js +0 -6
  773. package/dist/solutions-components/p-bba3fa4e.entry.js +0 -11
  774. package/dist/solutions-components/p-c1ee0d69.js +0 -11
  775. package/dist/solutions-components/p-d6322e4b.js +0 -6
@@ -19,7 +19,66 @@
19
19
  * limitations under the License.
20
20
  */
21
21
  import * as downloadUtils from "../downloadUtils";
22
+ import * as esriLoader from "esri-loader";
22
23
  describe("downloadUtils", () => {
24
+ describe('removeDuplicateLabels', () => {
25
+ it('should remove duplicate labels', () => {
26
+ const labels = [
27
+ ['Label 1', 'Value 1'],
28
+ ['Label 2', 'Value 2'],
29
+ ['Label 1', 'Value 1']
30
+ ];
31
+ const result = downloadUtils.removeDuplicateLabels(labels);
32
+ expect(result).toEqual([
33
+ ['Label 1', 'Value 1'],
34
+ ['Label 2', 'Value 2']
35
+ ]);
36
+ });
37
+ });
38
+ describe("_cleanupLabel", () => {
39
+ it("handles <br> variants", () => {
40
+ const labelText = "<div style='text-align: left;'>{NAME}<br />{STREET}<br/>{CITY}, {STATE} {ZIP} <br></div>";
41
+ const expectedCleanedText = "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}";
42
+ const result = downloadUtils._cleanupLabel(labelText);
43
+ expect(result).toEqual(expectedCleanedText);
44
+ });
45
+ it("handles <p>", () => {
46
+ const labelText = "<p>{NAME}</p><p>{STREET}</p><p>{CITY}, {STATE} {ZIP}</p>";
47
+ const expectedCleanedText = "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}";
48
+ const result = downloadUtils._cleanupLabel(labelText);
49
+ expect(result).toEqual(expectedCleanedText);
50
+ });
51
+ it("handles popup's use of \xA0", () => {
52
+ const labelText = "<div style='text-align: left;'>{NAME}<br />{STREET}<br />{CITY},\xA0{STATE}\xA0{ZIP}\xA0<br /></div>";
53
+ const expectedCleanedText = "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}";
54
+ const result = downloadUtils._cleanupLabel(labelText);
55
+ expect(result).toEqual(expectedCleanedText);
56
+ });
57
+ it("removes newlines and blank lines, and trims each line", () => {
58
+ const labelText = " \n\n {NAME} \n \n\n {STREET}\n{CITY}, {STATE} {ZIP}\n\n \n ";
59
+ const expectedCleanedText = "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}";
60
+ const result = downloadUtils._cleanupLabel(labelText);
61
+ expect(result).toEqual(expectedCleanedText);
62
+ });
63
+ it("handles tabs", () => {
64
+ const labelText = " \t\t {NAME} \n \n\n {STREET}\n{CITY}, {STATE} {ZIP}";
65
+ const expectedCleanedText = "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}";
66
+ const result = downloadUtils._cleanupLabel(labelText);
67
+ expect(result).toEqual(expectedCleanedText);
68
+ });
69
+ it("removes extra HTML", () => {
70
+ const labelText = "\n<div style='text-align: left;'><span style='font-weight:bold'>{NAME}</span><br />{STREET}<br />{CITY},\xA0{STATE}\xA0{ZIP}\xA0<br /></div>\n";
71
+ const expectedCleanedText = "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}";
72
+ const result = downloadUtils._cleanupLabel(labelText);
73
+ expect(result).toEqual(expectedCleanedText);
74
+ });
75
+ it("handles some special characters", () => {
76
+ const labelText = "<div style='text-align: left;'>&lt;{NAME}&gt;<br />{STREET}<br/>{CITY},&nbsp;{STATE}&nbsp;{ZIP}<br></div>";
77
+ const expectedCleanedText = "<{NAME}>|{STREET}|{CITY}, {STATE} {ZIP}";
78
+ const result = downloadUtils._cleanupLabel(labelText);
79
+ expect(result).toEqual(expectedCleanedText);
80
+ });
81
+ });
23
82
  describe("_convertPopupFieldsToLabelSpec", () => {
24
83
  it("handles fieldname visibility", () => {
25
84
  const fieldInfos = [
@@ -30,8 +89,9 @@ describe("downloadUtils", () => {
30
89
  ];
31
90
  const bypassFieldVisiblity = false;
32
91
  const expectedLabelSpec = "{A}|{B}|{D}";
33
- const labelSpec = downloadUtils._convertPopupFieldsToLabelSpec(fieldInfos, bypassFieldVisiblity);
34
- expect(labelSpec).toEqual(expectedLabelSpec);
92
+ const result = downloadUtils._convertPopupFieldsToLabelSpec(fieldInfos, bypassFieldVisiblity);
93
+ expect(result.type).toEqual("pattern");
94
+ expect(result.format).toEqual(expectedLabelSpec);
35
95
  });
36
96
  it("handles fieldname ignoring visibility", () => {
37
97
  const fieldInfos = [
@@ -42,46 +102,70 @@ describe("downloadUtils", () => {
42
102
  ];
43
103
  const bypassFieldVisiblity = true;
44
104
  const expectedLabelSpec = "{A}|{B}|{C}|{D}";
45
- const labelSpec = downloadUtils._convertPopupFieldsToLabelSpec(fieldInfos, bypassFieldVisiblity);
46
- expect(labelSpec).toEqual(expectedLabelSpec);
105
+ const result = downloadUtils._convertPopupFieldsToLabelSpec(fieldInfos, bypassFieldVisiblity);
106
+ expect(result.type).toEqual("pattern");
107
+ expect(result.format).toEqual(expectedLabelSpec);
47
108
  });
48
109
  });
49
110
  describe("_convertPopupTextToLabelSpec", () => {
50
111
  it("handles <br> variants", () => {
51
112
  const popupInfo = "<div style='text-align: left;'>{NAME}<br />{STREET}<br/>{CITY}, {STATE} {ZIP} <br></div>";
52
113
  const expectedLabelSpec = "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}";
53
- const labelSpec = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
54
- expect(labelSpec).toEqual(expectedLabelSpec);
114
+ const result = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
115
+ expect(result.type).toEqual("pattern");
116
+ expect(result.format).toEqual(expectedLabelSpec);
55
117
  });
56
118
  it("handles <p>", () => {
57
119
  const popupInfo = "<p>{NAME}</p><p>{STREET}</p><p>{CITY}, {STATE} {ZIP}</p>";
58
120
  const expectedLabelSpec = "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}";
59
- const labelSpec = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
60
- expect(labelSpec).toEqual(expectedLabelSpec);
121
+ const result = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
122
+ expect(result.type).toEqual("pattern");
123
+ expect(result.format).toEqual(expectedLabelSpec);
61
124
  });
62
125
  it("handles popup's use of \xA0", () => {
63
126
  const popupInfo = "<div style='text-align: left;'>{NAME}<br />{STREET}<br />{CITY},\xA0{STATE}\xA0{ZIP}\xA0<br /></div>";
64
127
  const expectedLabelSpec = "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}";
65
- const labelSpec = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
66
- expect(labelSpec).toEqual(expectedLabelSpec);
128
+ const result = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
129
+ expect(result.type).toEqual("pattern");
130
+ expect(result.format).toEqual(expectedLabelSpec);
67
131
  });
68
132
  it("removes newlines and blank lines, and trims each line", () => {
69
133
  const popupInfo = " \n\n {NAME} \n \n\n {STREET}\n{CITY}, {STATE} {ZIP}\n\n \n ";
70
134
  const expectedLabelSpec = "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}";
71
- const labelSpec = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
72
- expect(labelSpec).toEqual(expectedLabelSpec);
135
+ const result = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
136
+ expect(result.type).toEqual("pattern");
137
+ expect(result.format).toEqual(expectedLabelSpec);
73
138
  });
74
139
  it("removes extra HTML", () => {
75
140
  const popupInfo = "\n<div style='text-align: left;'><span style='font-weight:bold'>{NAME}</span><br />{STREET}<br />{CITY},\xA0{STATE}\xA0{ZIP}\xA0<br /></div>\n";
76
141
  const expectedLabelSpec = "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}";
77
- const labelSpec = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
78
- expect(labelSpec).toEqual(expectedLabelSpec);
142
+ const result = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
143
+ expect(result.type).toEqual("pattern");
144
+ expect(result.format).toEqual(expectedLabelSpec);
79
145
  });
80
146
  it("handles some special characters", () => {
81
147
  const popupInfo = "<div style='text-align: left;'>&lt;{NAME}&gt;<br />{STREET}<br/>{CITY},&nbsp;{STATE}&nbsp;{ZIP}<br></div>";
82
148
  const expectedLabelSpec = "<{NAME}>|{STREET}|{CITY}, {STATE} {ZIP}";
83
- const labelSpec = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
84
- expect(labelSpec).toEqual(expectedLabelSpec);
149
+ const result = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
150
+ expect(result.type).toEqual("pattern");
151
+ expect(result.format).toEqual(expectedLabelSpec);
152
+ });
153
+ });
154
+ describe("_convertPopupArcadeToLabelSpec", () => {
155
+ it("handles <br> variants", async () => {
156
+ const Arcade = {
157
+ createArcadeExecutor: () => {
158
+ const executor = {};
159
+ return Promise.resolve(executor);
160
+ }
161
+ };
162
+ const loadModulesSpy = jest.spyOn(esriLoader, 'loadModules').mockResolvedValue([Arcade]);
163
+ const expressionInfo = {
164
+ expression: 'var feat = $feature\nvar label = `\n\t${feat["name"]} ${feat["age"]} years <br>\n\tstarted: ${feat["start"]}\n`\n\nreturn { \n type : \'text\', \n text : label\n}'
165
+ };
166
+ const result = await downloadUtils._convertPopupArcadeToLabelSpec(expressionInfo);
167
+ expect(result.type).toEqual("executor");
168
+ loadModulesSpy.mockRestore();
85
169
  });
86
170
  });
87
171
  describe("_createFilename", () => {
@@ -112,246 +196,608 @@ describe("downloadUtils", () => {
112
196
  expect(expressions).toEqual(expectedExpressions);
113
197
  });
114
198
  });
115
- describe("_getFieldsFromLabel", () => {
199
+ describe("_getFieldExpressionsFromLabel", () => {
116
200
  it("handles a label with ASCII field names", () => {
117
201
  const labelSpec = "{expression/expr0}\n{OWNERNM1}\n{PSTLADDRESS}\n{PSTLCITY}, {PSTLSTATE} {PSTLZIP5}";
118
202
  const expectedFields = ["{OWNERNM1}", "{PSTLADDRESS}", "{PSTLCITY}", "{PSTLSTATE}", "{PSTLZIP5}"];
119
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
203
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
120
204
  expect(fields).toEqual(expectedFields);
121
205
  });
122
206
  it("handles a label with Arabic (ar) field name", () => {
123
207
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{بحث}|{time}";
124
208
  const expectedFields = ["{latitude}", "{longitude}", "{بحث}", "{time}"];
125
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
209
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
126
210
  expect(fields).toEqual(expectedFields);
127
211
  });
128
212
  it("handles a label with Bosnian (bs) field name", () => {
129
213
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{računa}|{time}";
130
214
  const expectedFields = ["{latitude}", "{longitude}", "{računa}", "{time}"];
131
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
215
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
132
216
  expect(fields).toEqual(expectedFields);
133
217
  });
134
218
  it("handles a label with Bulgarian (bg) field name", () => {
135
219
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Търсене}|{time}";
136
220
  const expectedFields = ["{latitude}", "{longitude}", "{Търсене}", "{time}"];
137
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
221
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
138
222
  expect(fields).toEqual(expectedFields);
139
223
  });
140
224
  it("handles a label with Catalan (ca) field name", () => {
141
225
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Descripció}|{time}";
142
226
  const expectedFields = ["{latitude}", "{longitude}", "{Descripció}", "{time}"];
143
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
227
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
144
228
  expect(fields).toEqual(expectedFields);
145
229
  });
146
230
  it("handles a label with Simplified Chinese (zh-cn) field name", () => {
147
231
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{帐户个人资料}|{time}";
148
232
  const expectedFields = ["{latitude}", "{longitude}", "{帐户个人资料}", "{time}"];
149
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
233
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
150
234
  expect(fields).toEqual(expectedFields);
151
235
  });
152
236
  it("handles a label with Traditional Chinese (Hong Kong) (zh-hk) field name", () => {
153
237
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{帳號設定檔}|{time}";
154
238
  const expectedFields = ["{latitude}", "{longitude}", "{帳號設定檔}", "{time}"];
155
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
239
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
156
240
  expect(fields).toEqual(expectedFields);
157
241
  });
158
242
  it("handles a label with Traditional Chinese (Taiwan) (zh-tw) field name", () => {
159
243
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{搜尋}|{time}";
160
244
  const expectedFields = ["{latitude}", "{longitude}", "{搜尋}", "{time}"];
161
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
245
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
162
246
  expect(fields).toEqual(expectedFields);
163
247
  });
164
248
  it("handles a label with Croatian (hr) field name", () => {
165
249
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Pretraživanje}|{time}";
166
250
  const expectedFields = ["{latitude}", "{longitude}", "{Pretraživanje}", "{time}"];
167
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
251
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
168
252
  expect(fields).toEqual(expectedFields);
169
253
  });
170
254
  it("handles a label with Czech (cs) field name", () => {
171
255
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Přihlásit}|{time}";
172
256
  const expectedFields = ["{latitude}", "{longitude}", "{Přihlásit}", "{time}"];
173
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
257
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
174
258
  expect(fields).toEqual(expectedFields);
175
259
  });
176
260
  it("handles a label with Danish (da) field name", () => {
177
261
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Vælg}|{time}";
178
262
  const expectedFields = ["{latitude}", "{longitude}", "{Vælg}", "{time}"];
179
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
263
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
180
264
  expect(fields).toEqual(expectedFields);
181
265
  });
182
266
  it("handles a label with Dutch (nl) field name", () => {
183
267
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{geïmplementeerd}|{time}";
184
268
  const expectedFields = ["{latitude}", "{longitude}", "{geïmplementeerd}", "{time}"];
185
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
269
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
186
270
  expect(fields).toEqual(expectedFields);
187
271
  });
188
272
  it("handles a label with Estonian (et) field name", () => {
189
273
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Valdkonnapõhised}|{time}";
190
274
  const expectedFields = ["{latitude}", "{longitude}", "{Valdkonnapõhised}", "{time}"];
191
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
275
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
192
276
  expect(fields).toEqual(expectedFields);
193
277
  });
194
278
  it("handles a label with Finnish (fi) field name", () => {
195
279
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Näytä}|{time}";
196
280
  const expectedFields = ["{latitude}", "{longitude}", "{Näytä}", "{time}"];
197
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
281
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
198
282
  expect(fields).toEqual(expectedFields);
199
283
  });
200
284
  it("handles a label with French (fr) field name", () => {
201
285
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{accès}|{time}";
202
286
  const expectedFields = ["{latitude}", "{longitude}", "{accès}", "{time}"];
203
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
287
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
204
288
  expect(fields).toEqual(expectedFields);
205
289
  });
206
290
  it("handles a label with German (de) field name", () => {
207
291
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Öffentliche}|{time}";
208
292
  const expectedFields = ["{latitude}", "{longitude}", "{Öffentliche}", "{time}"];
209
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
293
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
210
294
  expect(fields).toEqual(expectedFields);
211
295
  });
212
296
  it("handles a label with Greek (el) field name", () => {
213
297
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Αναζήτηση}|{time}";
214
298
  const expectedFields = ["{latitude}", "{longitude}", "{Αναζήτηση}", "{time}"];
215
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
299
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
216
300
  expect(fields).toEqual(expectedFields);
217
301
  });
218
302
  it("handles a label with Hebrew (he) field name", () => {
219
303
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{עוֹמֶק}|{time}";
220
304
  const expectedFields = ["{latitude}", "{longitude}", "{עוֹמֶק}", "{time}"];
221
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
305
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
222
306
  expect(fields).toEqual(expectedFields);
223
307
  });
224
308
  it("handles a label with Hungarian (hu) field name", () => {
225
309
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Nyelvváltás}|{time}";
226
310
  const expectedFields = ["{latitude}", "{longitude}", "{Nyelvváltás}", "{time}"];
227
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
311
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
228
312
  expect(fields).toEqual(expectedFields);
229
313
  });
230
314
  it("handles a label with Indonesian (id) field name", () => {
231
315
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Bahasa}|{time}";
232
316
  const expectedFields = ["{latitude}", "{longitude}", "{Bahasa}", "{time}"];
233
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
317
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
234
318
  expect(fields).toEqual(expectedFields);
235
319
  });
236
320
  it("handles a label with Italian (it) field name", () => {
237
321
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Elettricità}|{time}";
238
322
  const expectedFields = ["{latitude}", "{longitude}", "{Elettricità}", "{time}"];
239
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
323
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
240
324
  expect(fields).toEqual(expectedFields);
241
325
  });
242
326
  it("handles a label with Japanese (ja) field name", () => {
243
327
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{深さ}|{time}";
244
328
  const expectedFields = ["{latitude}", "{longitude}", "{深さ}", "{time}"];
245
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
329
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
246
330
  expect(fields).toEqual(expectedFields);
247
331
  });
248
332
  it("handles a label with Korean (ko) field name", () => {
249
333
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{계정 프로필}|{time}";
250
334
  const expectedFields = ["{latitude}", "{longitude}", "{계정 프로필}", "{time}"];
251
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
335
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
252
336
  expect(fields).toEqual(expectedFields);
253
337
  });
254
338
  it("handles a label with Latvian (lv) field name", () => {
255
339
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Meklēt}|{time}";
256
340
  const expectedFields = ["{latitude}", "{longitude}", "{Meklēt}", "{time}"];
257
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
341
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
258
342
  expect(fields).toEqual(expectedFields);
259
343
  });
260
344
  it("handles a label with Lithuanian (lt) field name", () => {
261
345
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{sričių}|{time}";
262
346
  const expectedFields = ["{latitude}", "{longitude}", "{sričių}", "{time}"];
263
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
347
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
264
348
  expect(fields).toEqual(expectedFields);
265
349
  });
266
350
  it("handles a label with Norwegian (nb) field name", () => {
267
351
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{språk}|{time}";
268
352
  const expectedFields = ["{latitude}", "{longitude}", "{språk}", "{time}"];
269
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
353
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
270
354
  expect(fields).toEqual(expectedFields);
271
355
  });
272
356
  it("handles a label with Polish (pl) field name", () => {
273
357
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Przełącz}|{time}";
274
358
  const expectedFields = ["{latitude}", "{longitude}", "{Przełącz}", "{time}"];
275
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
359
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
276
360
  expect(fields).toEqual(expectedFields);
277
361
  });
278
362
  it("handles a label with Portuguese (Brazil) (pt-br) field name", () => {
279
363
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Configurações}|{time}";
280
364
  const expectedFields = ["{latitude}", "{longitude}", "{Configurações}", "{time}"];
281
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
365
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
282
366
  expect(fields).toEqual(expectedFields);
283
367
  });
284
368
  it("handles a label with Portuguese (Portugal) (pt-pt) field name", () => {
285
369
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{sessão}|{time}";
286
370
  const expectedFields = ["{latitude}", "{longitude}", "{sessão}", "{time}"];
287
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
371
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
288
372
  expect(fields).toEqual(expectedFields);
289
373
  });
290
374
  it("handles a label with Romanian (ro) field name", () => {
291
375
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Copiați}|{time}";
292
376
  const expectedFields = ["{latitude}", "{longitude}", "{Copiați}", "{time}"];
293
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
377
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
294
378
  expect(fields).toEqual(expectedFields);
295
379
  });
296
380
  it("handles a label with Russian (ru) field name", () => {
297
381
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Вход}|{time}";
298
382
  const expectedFields = ["{latitude}", "{longitude}", "{Вход}", "{time}"];
299
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
383
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
300
384
  expect(fields).toEqual(expectedFields);
301
385
  });
302
386
  it("handles a label with Serbian (sr) field name", () => {
303
387
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{pregledač}|{time}";
304
388
  const expectedFields = ["{latitude}", "{longitude}", "{pregledač}", "{time}"];
305
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
389
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
306
390
  expect(fields).toEqual(expectedFields);
307
391
  });
308
392
  it("handles a label with Slovak (sk) field name", () => {
309
393
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Prihlásiť}|{time}";
310
394
  const expectedFields = ["{latitude}", "{longitude}", "{Prihlásiť}", "{time}"];
311
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
395
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
312
396
  expect(fields).toEqual(expectedFields);
313
397
  });
314
398
  it("handles a label with Slovenian (sl) field name", () => {
315
399
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{računa}|{time}";
316
400
  const expectedFields = ["{latitude}", "{longitude}", "{računa}", "{time}"];
317
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
401
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
318
402
  expect(fields).toEqual(expectedFields);
319
403
  });
320
404
  it("handles a label with Spanish (es) field name", () => {
321
405
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{través}|{time}";
322
406
  const expectedFields = ["{latitude}", "{longitude}", "{través}", "{time}"];
323
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
407
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
324
408
  expect(fields).toEqual(expectedFields);
325
409
  });
326
410
  it("handles a label with Swedish (sv) field name", () => {
327
411
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{språk}|{time}";
328
412
  const expectedFields = ["{latitude}", "{longitude}", "{språk}", "{time}"];
329
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
413
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
330
414
  expect(fields).toEqual(expectedFields);
331
415
  });
332
416
  it("handles a label with Thai (th) field name", () => {
333
417
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{โปรไฟล์บัญ}|{time}";
334
418
  const expectedFields = ["{latitude}", "{longitude}", "{โปรไฟล์บัญ}", "{time}"];
335
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
419
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
336
420
  expect(fields).toEqual(expectedFields);
337
421
  });
338
422
  it("handles a label with Turkish (tr) field name", () => {
339
423
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Değiştir}|{time}";
340
424
  const expectedFields = ["{latitude}", "{longitude}", "{Değiştir}", "{time}"];
341
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
425
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
342
426
  expect(fields).toEqual(expectedFields);
343
427
  });
344
428
  it("handles a label with Ukrainian (uk) field name", () => {
345
429
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Пошук}|{time}";
346
430
  const expectedFields = ["{latitude}", "{longitude}", "{Пошук}", "{time}"];
347
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
431
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
348
432
  expect(fields).toEqual(expectedFields);
349
433
  });
350
434
  it("handles a label with Vietnamese (vi) field name", () => {
351
435
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Chuyển}|{time}";
352
436
  const expectedFields = ["{latitude}", "{longitude}", "{Chuyển}", "{time}"];
353
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
437
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
354
438
  expect(fields).toEqual(expectedFields);
355
439
  });
356
440
  });
441
+ describe('_getFieldNamesFromFieldExpressions', () => {
442
+ it("extracts field names from field name expressions", () => {
443
+ const expressions = ["{NAME}", "{STREET}", "{CITY}", "{STATE}", "{ZIP}"];
444
+ const names = ["NAME", "STREET", "CITY", "STATE", "ZIP"];
445
+ expect(downloadUtils._getFieldNamesFromFieldExpressions(expressions)).toEqual(names);
446
+ });
447
+ });
448
+ describe('_getLabelFormat', () => {
449
+ it('should prepare labels from visible popup fields', async () => {
450
+ const popupTemplate = {
451
+ title: '{name}',
452
+ content: [{
453
+ type: 'fields'
454
+ }],
455
+ fieldInfos: [{
456
+ fieldName: 'name',
457
+ visible: true
458
+ }, {
459
+ fieldName: 'age',
460
+ format: {
461
+ places: 0,
462
+ digitSeparator: true
463
+ },
464
+ visible: true
465
+ }, {
466
+ fieldName: 'start',
467
+ format: {
468
+ dateFormat: 'short-date'
469
+ },
470
+ visible: true
471
+ }]
472
+ };
473
+ const layer = {
474
+ popupEnabled: true,
475
+ popupTemplate
476
+ };
477
+ const formatUsingLayerPopup = true;
478
+ const attributeFormats = {};
479
+ const result = await downloadUtils._getLabelFormat(layer, formatUsingLayerPopup, attributeFormats);
480
+ expect(result.type).toEqual('pattern');
481
+ expect(result.format).toEqual('{name}|{age}|{start}');
482
+ });
483
+ it('should prepare labels from a partial set of visible popup fields', async () => {
484
+ const popupTemplate = {
485
+ title: '{name}',
486
+ content: [{
487
+ type: 'fields'
488
+ }],
489
+ fieldInfos: [{
490
+ fieldName: 'name',
491
+ visible: false
492
+ }, {
493
+ fieldName: 'age',
494
+ format: {
495
+ places: 0,
496
+ digitSeparator: true
497
+ },
498
+ visible: false
499
+ }, {
500
+ fieldName: 'start',
501
+ format: {
502
+ dateFormat: 'short-date'
503
+ },
504
+ visible: true
505
+ }]
506
+ };
507
+ const layer = {
508
+ popupEnabled: true,
509
+ popupTemplate
510
+ };
511
+ const formatUsingLayerPopup = true;
512
+ const attributeFormats = {};
513
+ const result = await downloadUtils._getLabelFormat(layer, formatUsingLayerPopup, attributeFormats);
514
+ expect(result.type).toEqual('pattern');
515
+ expect(result.format).toEqual('{start}');
516
+ });
517
+ it('should prepare labels from invisible popup fields, but title is present', async () => {
518
+ const popupTemplate = {
519
+ title: '{name}',
520
+ content: [{
521
+ type: 'fields'
522
+ }],
523
+ fieldInfos: [{
524
+ fieldName: 'name',
525
+ visible: false
526
+ }, {
527
+ fieldName: 'age',
528
+ format: {
529
+ places: 0,
530
+ digitSeparator: true
531
+ },
532
+ visible: false
533
+ }, {
534
+ fieldName: 'start',
535
+ format: {
536
+ dateFormat: 'short-date'
537
+ },
538
+ visible: false
539
+ }]
540
+ };
541
+ const layer = {
542
+ popupEnabled: true,
543
+ popupTemplate
544
+ };
545
+ const formatUsingLayerPopup = true;
546
+ const attributeFormats = {};
547
+ const result = await downloadUtils._getLabelFormat(layer, formatUsingLayerPopup, attributeFormats);
548
+ expect(result.type).toEqual('pattern');
549
+ expect(result.format).toEqual('{name}');
550
+ });
551
+ it('should prepare labels from invisible popup fields with no title present', async () => {
552
+ const popupTemplate = {
553
+ title: '',
554
+ content: [{
555
+ type: 'fields'
556
+ }],
557
+ fieldInfos: [{
558
+ fieldName: 'name',
559
+ visible: false
560
+ }, {
561
+ fieldName: 'age',
562
+ format: {
563
+ places: 0,
564
+ digitSeparator: true
565
+ },
566
+ visible: false
567
+ }, {
568
+ fieldName: 'start',
569
+ format: {
570
+ dateFormat: 'short-date'
571
+ },
572
+ visible: false
573
+ }]
574
+ };
575
+ const layer = {
576
+ popupEnabled: true,
577
+ popupTemplate
578
+ };
579
+ const formatUsingLayerPopup = true;
580
+ const attributeFormats = {};
581
+ const result = await downloadUtils._getLabelFormat(layer, formatUsingLayerPopup, attributeFormats);
582
+ expect(result.type).toEqual('pattern');
583
+ expect(result.format).toEqual('{name}|{age}|{start}');
584
+ });
585
+ it('should prepare labels from popup text', async () => {
586
+ const popupTemplate = {
587
+ title: '{name}',
588
+ content: [{
589
+ type: 'text',
590
+ text: '<p>{name} {age} years &nbsp;</p><p>started: {start}</p>'
591
+ }],
592
+ fieldInfos: [{
593
+ fieldName: 'name',
594
+ visible: true
595
+ }, {
596
+ fieldName: 'age',
597
+ format: {
598
+ places: 0,
599
+ digitSeparator: true
600
+ },
601
+ visible: true
602
+ }, {
603
+ fieldName: 'start',
604
+ format: {
605
+ dateFormat: 'short-date'
606
+ },
607
+ visible: true
608
+ }]
609
+ };
610
+ const layer = {
611
+ popupEnabled: true,
612
+ popupTemplate
613
+ };
614
+ const formatUsingLayerPopup = true;
615
+ const attributeFormats = {};
616
+ const result = await downloadUtils._getLabelFormat(layer, formatUsingLayerPopup, attributeFormats);
617
+ expect(result.type).toEqual('pattern');
618
+ expect(result.format).toEqual('{name} {age} years|started: {start}');
619
+ });
620
+ it('should prepare labels from popup Arcade', async () => {
621
+ const Arcade = {
622
+ createArcadeExecutor: () => {
623
+ const executor = {};
624
+ return Promise.resolve(executor);
625
+ }
626
+ };
627
+ const loadModulesSpy = jest.spyOn(esriLoader, 'loadModules').mockResolvedValue([Arcade]);
628
+ const popupTemplate = {
629
+ title: '{name}',
630
+ content: [{
631
+ type: 'expression',
632
+ expressionInfo: {
633
+ title: 'New expression',
634
+ expression: 'var feat = $feature\nvar label = `\n\t${feat["name"]} ${feat["age"]} years <br>\n\tstarted: ${feat["start"]}\n`\n\nreturn { \n type : \'text\', \n text : label\n}',
635
+ returnType: 'dictionary'
636
+ }
637
+ }],
638
+ fieldInfos: [{
639
+ fieldName: 'name',
640
+ visible: true
641
+ }, {
642
+ fieldName: 'age',
643
+ format: {
644
+ places: 0,
645
+ digitSeparator: true
646
+ },
647
+ visible: true
648
+ }, {
649
+ fieldName: 'start',
650
+ format: {
651
+ dateFormat: 'short-date'
652
+ },
653
+ visible: true
654
+ }]
655
+ };
656
+ const layer = {
657
+ popupEnabled: true,
658
+ popupTemplate
659
+ };
660
+ const formatUsingLayerPopup = true;
661
+ const attributeFormats = {};
662
+ const result = await downloadUtils._getLabelFormat(layer, formatUsingLayerPopup, attributeFormats);
663
+ expect(result.type).toEqual('executor');
664
+ loadModulesSpy.mockRestore();
665
+ });
666
+ it('should prepare labels without popup; formatUsingLayerPopup is true', async () => {
667
+ const layer = {
668
+ popupEnabled: false,
669
+ fields: [
670
+ {
671
+ name: 'name',
672
+ type: 'string'
673
+ },
674
+ {
675
+ name: 'age',
676
+ type: 'integer'
677
+ }
678
+ ]
679
+ };
680
+ const formatUsingLayerPopup = true;
681
+ const attributeFormats = {};
682
+ const result = await downloadUtils._getLabelFormat(layer, formatUsingLayerPopup, attributeFormats);
683
+ expect(result.type).toEqual('unsupported');
684
+ expect(result.format).toBeUndefined();
685
+ });
686
+ it('should prepare labels without popup; formatUsingLayerPopup is false', async () => {
687
+ const layer = {
688
+ popupEnabled: false,
689
+ fields: [
690
+ {
691
+ name: 'name',
692
+ type: 'string'
693
+ },
694
+ {
695
+ name: 'age',
696
+ type: 'integer'
697
+ }
698
+ ]
699
+ };
700
+ const formatUsingLayerPopup = false;
701
+ const attributeFormats = {};
702
+ const result = await downloadUtils._getLabelFormat(layer, formatUsingLayerPopup, attributeFormats);
703
+ expect(result.type).toEqual('unsupported');
704
+ expect(result.format).toBeUndefined();
705
+ });
706
+ });
707
+ describe('_getSelectionSetNames', () => {
708
+ it('should return selection set names for matching IDs', () => {
709
+ const exportInfos = {
710
+ 'layer1': {
711
+ selectionSetNames: ['Selection Set 1', 'Selection Set 2']
712
+ },
713
+ 'layer2': {
714
+ selectionSetNames: ['Selection Set 3']
715
+ }
716
+ };
717
+ const result = downloadUtils._getSelectionSetNames(exportInfos, /^layer/);
718
+ expect(result).toEqual(['Selection Set 1', 'Selection Set 2', 'Selection Set 3']);
719
+ });
720
+ it('should return an empty array if no matching IDs are found', () => {
721
+ const exportInfos = {
722
+ 'layer1': {
723
+ selectionSetNames: ['Selection Set 1', 'Selection Set 2']
724
+ },
725
+ 'layer2': {
726
+ selectionSetNames: ['Selection Set 3']
727
+ }
728
+ };
729
+ const result = downloadUtils._getSelectionSetNames(exportInfos, /^foo/);
730
+ expect(result).toEqual([]);
731
+ });
732
+ });
733
+ describe('_prepareAttributeValue', () => {
734
+ it('should format date attributes using the specified date format', () => {
735
+ const attributeValue = new Date('2022-01-01T00:00:00.000Z');
736
+ const attributeType = 'date';
737
+ const attributeDomain = null;
738
+ const attributeFormat = {
739
+ dateFormat: 'short-date'
740
+ };
741
+ const intl = {
742
+ formatDate: jest.fn().mockReturnValue('01/01/2022'),
743
+ convertDateFormatToIntlOptions: jest.fn().mockReturnValue({})
744
+ };
745
+ const result = downloadUtils._prepareAttributeValue(attributeValue, attributeType, attributeDomain, attributeFormat, intl);
746
+ expect(result).toEqual('01/01/2022');
747
+ expect(intl.formatDate).toHaveBeenCalledWith(attributeValue, {});
748
+ expect(intl.convertDateFormatToIntlOptions).toHaveBeenCalledWith('short-date');
749
+ });
750
+ it('should format number attributes using the specified number format', () => {
751
+ const attributeValue = 1234.5678;
752
+ const attributeType = 'double';
753
+ const attributeDomain = null;
754
+ const attributeFormat = {
755
+ places: 2,
756
+ digitSeparator: true
757
+ };
758
+ const intl = {
759
+ formatNumber: jest.fn().mockReturnValue('1,234.57'),
760
+ convertNumberFormatToIntlOptions: jest.fn().mockReturnValue({})
761
+ };
762
+ const result = downloadUtils._prepareAttributeValue(attributeValue, attributeType, attributeDomain, attributeFormat, intl);
763
+ expect(result).toEqual('1,234.57');
764
+ expect(intl.formatNumber).toHaveBeenCalledWith(attributeValue, {});
765
+ expect(intl.convertNumberFormatToIntlOptions).toHaveBeenCalledWith(attributeFormat);
766
+ });
767
+ it('should return the attribute value if no format is specified', () => {
768
+ const attributeValue = 'Value';
769
+ const attributeType = 'string';
770
+ const attributeDomain = null;
771
+ const attributeFormat = null;
772
+ const intl = {};
773
+ const result = downloadUtils._prepareAttributeValue(attributeValue, attributeType, attributeDomain, attributeFormat, intl);
774
+ expect(result).toEqual('Value');
775
+ });
776
+ it('should return the domain name for coded-value domain fields', () => {
777
+ const attributeValue = '1';
778
+ const attributeType = 'string';
779
+ const attributeDomain = {
780
+ type: 'coded-value',
781
+ name: 'Domain',
782
+ codedValues: [
783
+ {
784
+ name: 'Value 1',
785
+ code: '1'
786
+ },
787
+ {
788
+ name: 'Value 2',
789
+ code: '2'
790
+ }
791
+ ],
792
+ getName: function (code) {
793
+ var _a;
794
+ return (_a = this.codedValues.find((codedValue) => codedValue.code === code)) === null || _a === void 0 ? void 0 : _a.name;
795
+ }
796
+ };
797
+ const attributeFormat = null;
798
+ const intl = {};
799
+ const result = downloadUtils._prepareAttributeValue(attributeValue, attributeType, attributeDomain, attributeFormat, intl);
800
+ expect(result).toEqual('Value 1');
801
+ });
802
+ });
357
803
  });