@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
@@ -15,9 +15,92 @@
15
15
  */
16
16
 
17
17
  import * as downloadUtils from "../downloadUtils";
18
+ import * as esriLoader from 'esri-loader';
18
19
 
19
20
  describe("downloadUtils", () => {
20
21
 
22
+ describe('removeDuplicateLabels', () => {
23
+
24
+ it('should remove duplicate labels', () => {
25
+ const labels = [
26
+ ['Label 1', 'Value 1'],
27
+ ['Label 2', 'Value 2'],
28
+ ['Label 1', 'Value 1']
29
+ ];
30
+ const result = downloadUtils.removeDuplicateLabels(labels);
31
+ expect(result).toEqual([
32
+ ['Label 1', 'Value 1'],
33
+ ['Label 2', 'Value 2']
34
+ ]);
35
+ });
36
+
37
+ });
38
+
39
+ describe("_cleanupLabel", () => {
40
+
41
+ it("handles <br> variants", () => {
42
+ const labelText = "<div style='text-align: left;'>{NAME}<br />{STREET}<br/>{CITY}, {STATE} {ZIP} <br></div>";
43
+ const expectedCleanedText = "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}";
44
+
45
+ const result: string = downloadUtils._cleanupLabel(labelText);
46
+ expect(result).toEqual(expectedCleanedText);
47
+ });
48
+
49
+ it("handles <p>", () => {
50
+ const labelText = "<p>{NAME}</p><p>{STREET}</p><p>{CITY}, {STATE} {ZIP}</p>";
51
+ const expectedCleanedText = "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}";
52
+
53
+ const result: string = downloadUtils._cleanupLabel(labelText);
54
+ expect(result).toEqual(expectedCleanedText);
55
+ });
56
+
57
+ it("handles popup's use of \xA0", () => {
58
+ const labelText =
59
+ "<div style='text-align: left;'>{NAME}<br />{STREET}<br />{CITY},\xA0{STATE}\xA0{ZIP}\xA0<br /></div>";
60
+ const expectedCleanedText = "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}";
61
+
62
+ const result: string = downloadUtils._cleanupLabel(labelText);
63
+ expect(result).toEqual(expectedCleanedText);
64
+ });
65
+
66
+ it("removes newlines and blank lines, and trims each line", () => {
67
+ const labelText =
68
+ " \n\n {NAME} \n \n\n {STREET}\n{CITY}, {STATE} {ZIP}\n\n \n ";
69
+ const expectedCleanedText = "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}";
70
+
71
+ const result: string = downloadUtils._cleanupLabel(labelText);
72
+ expect(result).toEqual(expectedCleanedText);
73
+ });
74
+
75
+ it("handles tabs", () => {
76
+ const labelText =
77
+ " \t\t {NAME} \n \n\n {STREET}\n{CITY}, {STATE} {ZIP}";
78
+ const expectedCleanedText = "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}";
79
+
80
+ const result: string = downloadUtils._cleanupLabel(labelText);
81
+ expect(result).toEqual(expectedCleanedText);
82
+ });
83
+
84
+ it("removes extra HTML", () => {
85
+ const labelText =
86
+ "\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";
87
+ const expectedCleanedText = "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}";
88
+
89
+ const result: string = downloadUtils._cleanupLabel(labelText);
90
+ expect(result).toEqual(expectedCleanedText);
91
+ });
92
+
93
+ it("handles some special characters", () => {
94
+ const labelText =
95
+ "<div style='text-align: left;'>&lt;{NAME}&gt;<br />{STREET}<br/>{CITY},&nbsp;{STATE}&nbsp;{ZIP}<br></div>";
96
+ const expectedCleanedText = "<{NAME}>|{STREET}|{CITY}, {STATE} {ZIP}";
97
+
98
+ const result: string = downloadUtils._cleanupLabel(labelText);
99
+ expect(result).toEqual(expectedCleanedText);
100
+ });
101
+
102
+ });
103
+
21
104
  describe("_convertPopupFieldsToLabelSpec", () => {
22
105
 
23
106
  it("handles fieldname visibility", () => {
@@ -30,8 +113,10 @@ describe("downloadUtils", () => {
30
113
  const bypassFieldVisiblity = false;
31
114
  const expectedLabelSpec = "{A}|{B}|{D}";
32
115
 
33
- const labelSpec = downloadUtils._convertPopupFieldsToLabelSpec(fieldInfos, bypassFieldVisiblity);
34
- expect(labelSpec).toEqual(expectedLabelSpec);
116
+ const result: downloadUtils.ILabelFormat =
117
+ downloadUtils._convertPopupFieldsToLabelSpec(fieldInfos, bypassFieldVisiblity);
118
+ expect(result.type).toEqual("pattern");
119
+ expect(result.format).toEqual(expectedLabelSpec);
35
120
  });
36
121
 
37
122
  it("handles fieldname ignoring visibility", () => {
@@ -44,8 +129,10 @@ describe("downloadUtils", () => {
44
129
  const bypassFieldVisiblity = true;
45
130
  const expectedLabelSpec = "{A}|{B}|{C}|{D}";
46
131
 
47
- const labelSpec = downloadUtils._convertPopupFieldsToLabelSpec(fieldInfos, bypassFieldVisiblity);
48
- expect(labelSpec).toEqual(expectedLabelSpec);
132
+ const result: downloadUtils.ILabelFormat =
133
+ downloadUtils._convertPopupFieldsToLabelSpec(fieldInfos, bypassFieldVisiblity);
134
+ expect(result.type).toEqual("pattern");
135
+ expect(result.format).toEqual(expectedLabelSpec);
49
136
  });
50
137
 
51
138
  });
@@ -56,48 +143,81 @@ describe("downloadUtils", () => {
56
143
  const popupInfo = "<div style='text-align: left;'>{NAME}<br />{STREET}<br/>{CITY}, {STATE} {ZIP} <br></div>";
57
144
  const expectedLabelSpec = "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}";
58
145
 
59
- const labelSpec = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
60
- expect(labelSpec).toEqual(expectedLabelSpec);
146
+ const result: downloadUtils.ILabelFormat = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
147
+ expect(result.type).toEqual("pattern");
148
+ expect(result.format).toEqual(expectedLabelSpec);
61
149
  });
62
150
 
63
151
  it("handles <p>", () => {
64
152
  const popupInfo = "<p>{NAME}</p><p>{STREET}</p><p>{CITY}, {STATE} {ZIP}</p>";
65
153
  const expectedLabelSpec = "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}";
66
154
 
67
- const labelSpec = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
68
- expect(labelSpec).toEqual(expectedLabelSpec);
155
+ const result: downloadUtils.ILabelFormat = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
156
+ expect(result.type).toEqual("pattern");
157
+ expect(result.format).toEqual(expectedLabelSpec);
69
158
  });
70
159
 
71
160
  it("handles popup's use of \xA0", () => {
72
- const popupInfo = "<div style='text-align: left;'>{NAME}<br />{STREET}<br />{CITY},\xA0{STATE}\xA0{ZIP}\xA0<br /></div>";
161
+ const popupInfo =
162
+ "<div style='text-align: left;'>{NAME}<br />{STREET}<br />{CITY},\xA0{STATE}\xA0{ZIP}\xA0<br /></div>";
73
163
  const expectedLabelSpec = "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}";
74
164
 
75
- const labelSpec = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
76
- expect(labelSpec).toEqual(expectedLabelSpec);
165
+ const result: downloadUtils.ILabelFormat = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
166
+ expect(result.type).toEqual("pattern");
167
+ expect(result.format).toEqual(expectedLabelSpec);
77
168
  });
78
169
 
79
170
  it("removes newlines and blank lines, and trims each line", () => {
80
- const popupInfo = " \n\n {NAME} \n \n\n {STREET}\n{CITY}, {STATE} {ZIP}\n\n \n ";
171
+ const popupInfo =
172
+ " \n\n {NAME} \n \n\n {STREET}\n{CITY}, {STATE} {ZIP}\n\n \n ";
81
173
  const expectedLabelSpec = "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}";
82
174
 
83
- const labelSpec = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
84
- expect(labelSpec).toEqual(expectedLabelSpec);
175
+ const result: downloadUtils.ILabelFormat = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
176
+ expect(result.type).toEqual("pattern");
177
+ expect(result.format).toEqual(expectedLabelSpec);
85
178
  });
86
179
 
87
180
  it("removes extra HTML", () => {
88
- 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";
181
+ const popupInfo =
182
+ "\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";
89
183
  const expectedLabelSpec = "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}";
90
184
 
91
- const labelSpec = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
92
- expect(labelSpec).toEqual(expectedLabelSpec);
185
+ const result: downloadUtils.ILabelFormat = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
186
+ expect(result.type).toEqual("pattern");
187
+ expect(result.format).toEqual(expectedLabelSpec);
93
188
  });
94
189
 
95
190
  it("handles some special characters", () => {
96
- const popupInfo = "<div style='text-align: left;'>&lt;{NAME}&gt;<br />{STREET}<br/>{CITY},&nbsp;{STATE}&nbsp;{ZIP}<br></div>";
191
+ const popupInfo =
192
+ "<div style='text-align: left;'>&lt;{NAME}&gt;<br />{STREET}<br/>{CITY},&nbsp;{STATE}&nbsp;{ZIP}<br></div>";
97
193
  const expectedLabelSpec = "<{NAME}>|{STREET}|{CITY}, {STATE} {ZIP}";
98
194
 
99
- const labelSpec = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
100
- expect(labelSpec).toEqual(expectedLabelSpec);
195
+ const result: downloadUtils.ILabelFormat = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
196
+ expect(result.type).toEqual("pattern");
197
+ expect(result.format).toEqual(expectedLabelSpec);
198
+ });
199
+
200
+ });
201
+
202
+ describe("_convertPopupArcadeToLabelSpec", () => {
203
+
204
+ it("handles <br> variants", async () => {
205
+ const Arcade = {
206
+ createArcadeExecutor: (): Promise<__esri.ArcadeExecutor> => {
207
+ const executor: __esri.ArcadeExecutor = {} as __esri.ArcadeExecutor;
208
+ return Promise.resolve(executor);
209
+ }
210
+ };
211
+ const loadModulesSpy = jest.spyOn(esriLoader, 'loadModules').mockResolvedValue([Arcade]);
212
+
213
+ const expressionInfo: __esri.ElementExpressionInfo = {
214
+ 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}'
215
+ } as any;
216
+
217
+ const result: downloadUtils.ILabelFormat = await downloadUtils._convertPopupArcadeToLabelSpec(expressionInfo);
218
+ expect(result.type).toEqual("executor");
219
+
220
+ loadModulesSpy.mockRestore();
101
221
  });
102
222
 
103
223
  });
@@ -131,294 +251,700 @@ describe("downloadUtils", () => {
131
251
  });
132
252
 
133
253
  describe("_getExpressionsFromLabel", () => {
254
+
134
255
  it("handles a label with ASCII expression names", () => {
135
256
  const labelSpec = "{expression/expr0}\n{OWNERNM1}\n{PSTLADDRESS}\n{PSTLCITY}, {PSTLSTATE} {PSTLZIP5}";
136
257
  const expectedExpressions = ["{expression/expr0}"];
137
258
  const expressions = downloadUtils._getExpressionsFromLabel(labelSpec);
138
259
  expect(expressions).toEqual(expectedExpressions);
139
260
  });
261
+
140
262
  });
141
263
 
142
- describe("_getFieldsFromLabel", () => {
264
+ describe("_getFieldExpressionsFromLabel", () => {
265
+
143
266
  it("handles a label with ASCII field names", () => {
144
267
  const labelSpec = "{expression/expr0}\n{OWNERNM1}\n{PSTLADDRESS}\n{PSTLCITY}, {PSTLSTATE} {PSTLZIP5}";
145
268
  const expectedFields = ["{OWNERNM1}", "{PSTLADDRESS}", "{PSTLCITY}", "{PSTLSTATE}", "{PSTLZIP5}"];
146
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
269
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
147
270
  expect(fields).toEqual(expectedFields);
148
271
  });
149
272
 
150
273
  it("handles a label with Arabic (ar) field name", () => {
151
274
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{بحث}|{time}";
152
275
  const expectedFields = ["{latitude}", "{longitude}", "{بحث}", "{time}"];
153
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
276
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
154
277
  expect(fields).toEqual(expectedFields);
155
278
  });
156
279
 
157
280
  it("handles a label with Bosnian (bs) field name", () => {
158
281
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{računa}|{time}";
159
282
  const expectedFields = ["{latitude}", "{longitude}", "{računa}", "{time}"];
160
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
283
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
161
284
  expect(fields).toEqual(expectedFields);
162
285
  });
163
286
 
164
287
  it("handles a label with Bulgarian (bg) field name", () => {
165
288
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Търсене}|{time}";
166
289
  const expectedFields = ["{latitude}", "{longitude}", "{Търсене}", "{time}"];
167
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
290
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
168
291
  expect(fields).toEqual(expectedFields);
169
292
  });
170
293
 
171
294
  it("handles a label with Catalan (ca) field name", () => {
172
295
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Descripció}|{time}";
173
296
  const expectedFields = ["{latitude}", "{longitude}", "{Descripció}", "{time}"];
174
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
297
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
175
298
  expect(fields).toEqual(expectedFields);
176
299
  });
177
300
 
178
301
  it("handles a label with Simplified Chinese (zh-cn) field name", () => {
179
302
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{帐户个人资料}|{time}";
180
303
  const expectedFields = ["{latitude}", "{longitude}", "{帐户个人资料}", "{time}"];
181
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
304
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
182
305
  expect(fields).toEqual(expectedFields);
183
306
  });
184
307
 
185
308
  it("handles a label with Traditional Chinese (Hong Kong) (zh-hk) field name", () => {
186
309
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{帳號設定檔}|{time}";
187
310
  const expectedFields = ["{latitude}", "{longitude}", "{帳號設定檔}", "{time}"];
188
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
311
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
189
312
  expect(fields).toEqual(expectedFields);
190
313
  });
191
314
 
192
315
  it("handles a label with Traditional Chinese (Taiwan) (zh-tw) field name", () => {
193
316
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{搜尋}|{time}";
194
317
  const expectedFields = ["{latitude}", "{longitude}", "{搜尋}", "{time}"];
195
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
318
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
196
319
  expect(fields).toEqual(expectedFields);
197
320
  });
198
321
 
199
322
  it("handles a label with Croatian (hr) field name", () => {
200
323
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Pretraživanje}|{time}";
201
324
  const expectedFields = ["{latitude}", "{longitude}", "{Pretraživanje}", "{time}"];
202
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
325
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
203
326
  expect(fields).toEqual(expectedFields);
204
327
  });
205
328
 
206
329
  it("handles a label with Czech (cs) field name", () => {
207
330
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Přihlásit}|{time}";
208
331
  const expectedFields = ["{latitude}", "{longitude}", "{Přihlásit}", "{time}"];
209
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
332
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
210
333
  expect(fields).toEqual(expectedFields);
211
334
  });
212
335
 
213
336
  it("handles a label with Danish (da) field name", () => {
214
337
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Vælg}|{time}";
215
338
  const expectedFields = ["{latitude}", "{longitude}", "{Vælg}", "{time}"];
216
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
339
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
217
340
  expect(fields).toEqual(expectedFields);
218
341
  });
219
342
 
220
343
  it("handles a label with Dutch (nl) field name", () => {
221
344
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{geïmplementeerd}|{time}";
222
345
  const expectedFields = ["{latitude}", "{longitude}", "{geïmplementeerd}", "{time}"];
223
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
346
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
224
347
  expect(fields).toEqual(expectedFields);
225
348
  });
226
349
 
227
350
  it("handles a label with Estonian (et) field name", () => {
228
351
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Valdkonnapõhised}|{time}";
229
352
  const expectedFields = ["{latitude}", "{longitude}", "{Valdkonnapõhised}", "{time}"];
230
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
353
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
231
354
  expect(fields).toEqual(expectedFields);
232
355
  });
233
356
 
234
357
  it("handles a label with Finnish (fi) field name", () => {
235
358
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Näytä}|{time}";
236
359
  const expectedFields = ["{latitude}", "{longitude}", "{Näytä}", "{time}"];
237
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
360
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
238
361
  expect(fields).toEqual(expectedFields);
239
362
  });
240
363
 
241
364
  it("handles a label with French (fr) field name", () => {
242
365
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{accès}|{time}";
243
366
  const expectedFields = ["{latitude}", "{longitude}", "{accès}", "{time}"];
244
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
367
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
245
368
  expect(fields).toEqual(expectedFields);
246
369
  });
247
370
 
248
371
  it("handles a label with German (de) field name", () => {
249
372
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Öffentliche}|{time}";
250
373
  const expectedFields = ["{latitude}", "{longitude}", "{Öffentliche}", "{time}"];
251
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
374
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
252
375
  expect(fields).toEqual(expectedFields);
253
376
  });
254
377
 
255
378
  it("handles a label with Greek (el) field name", () => {
256
379
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Αναζήτηση}|{time}";
257
380
  const expectedFields = ["{latitude}", "{longitude}", "{Αναζήτηση}", "{time}"];
258
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
381
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
259
382
  expect(fields).toEqual(expectedFields);
260
383
  });
261
384
 
262
385
  it("handles a label with Hebrew (he) field name", () => {
263
386
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{עוֹמֶק}|{time}";
264
387
  const expectedFields = ["{latitude}", "{longitude}", "{עוֹמֶק}", "{time}"];
265
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
388
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
266
389
  expect(fields).toEqual(expectedFields);
267
390
  });
268
391
 
269
392
  it("handles a label with Hungarian (hu) field name", () => {
270
393
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Nyelvváltás}|{time}";
271
394
  const expectedFields = ["{latitude}", "{longitude}", "{Nyelvváltás}", "{time}"];
272
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
395
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
273
396
  expect(fields).toEqual(expectedFields);
274
397
  });
275
398
 
276
399
  it("handles a label with Indonesian (id) field name", () => {
277
400
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Bahasa}|{time}";
278
401
  const expectedFields = ["{latitude}", "{longitude}", "{Bahasa}", "{time}"];
279
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
402
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
280
403
  expect(fields).toEqual(expectedFields);
281
404
  });
282
405
 
283
406
  it("handles a label with Italian (it) field name", () => {
284
407
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Elettricità}|{time}";
285
408
  const expectedFields = ["{latitude}", "{longitude}", "{Elettricità}", "{time}"];
286
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
409
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
287
410
  expect(fields).toEqual(expectedFields);
288
411
  });
289
412
 
290
413
  it("handles a label with Japanese (ja) field name", () => {
291
414
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{深さ}|{time}";
292
415
  const expectedFields = ["{latitude}", "{longitude}", "{深さ}", "{time}"];
293
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
416
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
294
417
  expect(fields).toEqual(expectedFields);
295
418
  });
296
419
 
297
420
  it("handles a label with Korean (ko) field name", () => {
298
421
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{계정 프로필}|{time}";
299
422
  const expectedFields = ["{latitude}", "{longitude}", "{계정 프로필}", "{time}"];
300
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
423
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
301
424
  expect(fields).toEqual(expectedFields);
302
425
  });
303
426
 
304
427
  it("handles a label with Latvian (lv) field name", () => {
305
428
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Meklēt}|{time}";
306
429
  const expectedFields = ["{latitude}", "{longitude}", "{Meklēt}", "{time}"];
307
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
430
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
308
431
  expect(fields).toEqual(expectedFields);
309
432
  });
310
433
 
311
434
  it("handles a label with Lithuanian (lt) field name", () => {
312
435
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{sričių}|{time}";
313
436
  const expectedFields = ["{latitude}", "{longitude}", "{sričių}", "{time}"];
314
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
437
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
315
438
  expect(fields).toEqual(expectedFields);
316
439
  });
317
440
 
318
441
  it("handles a label with Norwegian (nb) field name", () => {
319
442
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{språk}|{time}";
320
443
  const expectedFields = ["{latitude}", "{longitude}", "{språk}", "{time}"];
321
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
444
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
322
445
  expect(fields).toEqual(expectedFields);
323
446
  });
324
447
 
325
448
  it("handles a label with Polish (pl) field name", () => {
326
449
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Przełącz}|{time}";
327
450
  const expectedFields = ["{latitude}", "{longitude}", "{Przełącz}", "{time}"];
328
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
451
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
329
452
  expect(fields).toEqual(expectedFields);
330
453
  });
331
454
 
332
455
  it("handles a label with Portuguese (Brazil) (pt-br) field name", () => {
333
456
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Configurações}|{time}";
334
457
  const expectedFields = ["{latitude}", "{longitude}", "{Configurações}", "{time}"];
335
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
458
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
336
459
  expect(fields).toEqual(expectedFields);
337
460
  });
338
461
 
339
462
  it("handles a label with Portuguese (Portugal) (pt-pt) field name", () => {
340
463
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{sessão}|{time}";
341
464
  const expectedFields = ["{latitude}", "{longitude}", "{sessão}", "{time}"];
342
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
465
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
343
466
  expect(fields).toEqual(expectedFields);
344
467
  });
345
468
 
346
469
  it("handles a label with Romanian (ro) field name", () => {
347
470
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Copiați}|{time}";
348
471
  const expectedFields = ["{latitude}", "{longitude}", "{Copiați}", "{time}"];
349
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
472
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
350
473
  expect(fields).toEqual(expectedFields);
351
474
  });
352
475
 
353
476
  it("handles a label with Russian (ru) field name", () => {
354
477
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Вход}|{time}";
355
478
  const expectedFields = ["{latitude}", "{longitude}", "{Вход}", "{time}"];
356
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
479
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
357
480
  expect(fields).toEqual(expectedFields);
358
481
  });
359
482
 
360
483
  it("handles a label with Serbian (sr) field name", () => {
361
484
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{pregledač}|{time}";
362
485
  const expectedFields = ["{latitude}", "{longitude}", "{pregledač}", "{time}"];
363
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
486
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
364
487
  expect(fields).toEqual(expectedFields);
365
488
  });
366
489
 
367
490
  it("handles a label with Slovak (sk) field name", () => {
368
491
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Prihlásiť}|{time}";
369
492
  const expectedFields = ["{latitude}", "{longitude}", "{Prihlásiť}", "{time}"];
370
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
493
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
371
494
  expect(fields).toEqual(expectedFields);
372
495
  });
373
496
 
374
497
  it("handles a label with Slovenian (sl) field name", () => {
375
498
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{računa}|{time}";
376
499
  const expectedFields = ["{latitude}", "{longitude}", "{računa}", "{time}"];
377
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
500
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
378
501
  expect(fields).toEqual(expectedFields);
379
502
  });
380
503
 
381
504
  it("handles a label with Spanish (es) field name", () => {
382
505
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{través}|{time}";
383
506
  const expectedFields = ["{latitude}", "{longitude}", "{través}", "{time}"];
384
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
507
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
385
508
  expect(fields).toEqual(expectedFields);
386
509
  });
387
510
 
388
511
  it("handles a label with Swedish (sv) field name", () => {
389
512
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{språk}|{time}";
390
513
  const expectedFields = ["{latitude}", "{longitude}", "{språk}", "{time}"];
391
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
514
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
392
515
  expect(fields).toEqual(expectedFields);
393
516
  });
394
517
 
395
518
  it("handles a label with Thai (th) field name", () => {
396
519
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{โปรไฟล์บัญ}|{time}";
397
520
  const expectedFields = ["{latitude}", "{longitude}", "{โปรไฟล์บัญ}", "{time}"];
398
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
521
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
399
522
  expect(fields).toEqual(expectedFields);
400
523
  });
401
524
 
402
525
  it("handles a label with Turkish (tr) field name", () => {
403
526
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Değiştir}|{time}";
404
527
  const expectedFields = ["{latitude}", "{longitude}", "{Değiştir}", "{time}"];
405
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
528
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
406
529
  expect(fields).toEqual(expectedFields);
407
530
  });
408
531
 
409
532
  it("handles a label with Ukrainian (uk) field name", () => {
410
533
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Пошук}|{time}";
411
534
  const expectedFields = ["{latitude}", "{longitude}", "{Пошук}", "{time}"];
412
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
535
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
413
536
  expect(fields).toEqual(expectedFields);
414
537
  });
415
538
 
416
539
  it("handles a label with Vietnamese (vi) field name", () => {
417
540
  const labelSpec = "{latitude}|{expression/expr0}\n{longitude}|{Chuyển}|{time}";
418
541
  const expectedFields = ["{latitude}", "{longitude}", "{Chuyển}", "{time}"];
419
- const fields = downloadUtils._getFieldsFromLabel(labelSpec);
542
+ const fields = downloadUtils._getFieldExpressionsFromLabel(labelSpec);
420
543
  expect(fields).toEqual(expectedFields);
421
544
  });
545
+
546
+ });
547
+
548
+ describe('_getFieldNamesFromFieldExpressions', () => {
549
+
550
+ it("extracts field names from field name expressions", () => {
551
+ const expressions = ["{NAME}", "{STREET}", "{CITY}", "{STATE}", "{ZIP}"];
552
+ const names = ["NAME", "STREET", "CITY", "STATE", "ZIP"];
553
+ expect(downloadUtils._getFieldNamesFromFieldExpressions(expressions)).toEqual(names);
554
+ });
555
+
556
+ });
557
+
558
+ describe('_getLabelFormat', () => {
559
+
560
+ it('should prepare labels from visible popup fields', async () => {
561
+ const popupTemplate = {
562
+ title: '{name}',
563
+ content: [{
564
+ type: 'fields'
565
+ }],
566
+ fieldInfos: [{
567
+ fieldName: 'name',
568
+ visible: true
569
+ }, {
570
+ fieldName: 'age',
571
+ format: {
572
+ places: 0,
573
+ digitSeparator: true
574
+ },
575
+ visible: true
576
+ }, {
577
+ fieldName: 'start',
578
+ format: {
579
+ dateFormat: 'short-date'
580
+ },
581
+ visible: true
582
+ }]
583
+ };
584
+ const layer = {
585
+ popupEnabled: true,
586
+ popupTemplate
587
+ };
588
+ const formatUsingLayerPopup = true;
589
+
590
+ const attributeFormats: downloadUtils.IAttributeFormats = {};
591
+ const result: downloadUtils.ILabelFormat =
592
+ await downloadUtils._getLabelFormat(layer as any, formatUsingLayerPopup, attributeFormats);
593
+ expect(result.type).toEqual('pattern');
594
+ expect(result.format).toEqual('{name}|{age}|{start}');
595
+ });
596
+
597
+ it('should prepare labels from a partial set of visible popup fields', async () => {
598
+ const popupTemplate = {
599
+ title: '{name}',
600
+ content: [{
601
+ type: 'fields'
602
+ }],
603
+ fieldInfos: [{
604
+ fieldName: 'name',
605
+ visible: false
606
+ }, {
607
+ fieldName: 'age',
608
+ format: {
609
+ places: 0,
610
+ digitSeparator: true
611
+ },
612
+ visible: false
613
+ }, {
614
+ fieldName: 'start',
615
+ format: {
616
+ dateFormat: 'short-date'
617
+ },
618
+ visible: true
619
+ }]
620
+ };
621
+ const layer = {
622
+ popupEnabled: true,
623
+ popupTemplate
624
+ };
625
+ const formatUsingLayerPopup = true;
626
+
627
+ const attributeFormats: downloadUtils.IAttributeFormats = {};
628
+ const result: downloadUtils.ILabelFormat =
629
+ await downloadUtils._getLabelFormat(layer as any, formatUsingLayerPopup, attributeFormats);
630
+ expect(result.type).toEqual('pattern');
631
+ expect(result.format).toEqual('{start}');
632
+ });
633
+
634
+ it('should prepare labels from invisible popup fields, but title is present', async () => {
635
+ const popupTemplate = {
636
+ title: '{name}',
637
+ content: [{
638
+ type: 'fields'
639
+ }],
640
+ fieldInfos: [{
641
+ fieldName: 'name',
642
+ visible: false
643
+ }, {
644
+ fieldName: 'age',
645
+ format: {
646
+ places: 0,
647
+ digitSeparator: true
648
+ },
649
+ visible: false
650
+ }, {
651
+ fieldName: 'start',
652
+ format: {
653
+ dateFormat: 'short-date'
654
+ },
655
+ visible: false
656
+ }]
657
+ };
658
+ const layer = {
659
+ popupEnabled: true,
660
+ popupTemplate
661
+ };
662
+ const formatUsingLayerPopup = true;
663
+
664
+ const attributeFormats: downloadUtils.IAttributeFormats = {};
665
+ const result: downloadUtils.ILabelFormat =
666
+ await downloadUtils._getLabelFormat(layer as any, formatUsingLayerPopup, attributeFormats);
667
+ expect(result.type).toEqual('pattern');
668
+ expect(result.format).toEqual('{name}');
669
+ });
670
+
671
+ it('should prepare labels from invisible popup fields with no title present', async () => {
672
+ const popupTemplate = {
673
+ title: '',
674
+ content: [{
675
+ type: 'fields'
676
+ }],
677
+ fieldInfos: [{
678
+ fieldName: 'name',
679
+ visible: false
680
+ }, {
681
+ fieldName: 'age',
682
+ format: {
683
+ places: 0,
684
+ digitSeparator: true
685
+ },
686
+ visible: false
687
+ }, {
688
+ fieldName: 'start',
689
+ format: {
690
+ dateFormat: 'short-date'
691
+ },
692
+ visible: false
693
+ }]
694
+ };
695
+ const layer = {
696
+ popupEnabled: true,
697
+ popupTemplate
698
+ };
699
+ const formatUsingLayerPopup = true;
700
+
701
+ const attributeFormats: downloadUtils.IAttributeFormats = {};
702
+ const result: downloadUtils.ILabelFormat =
703
+ await downloadUtils._getLabelFormat(layer as any, formatUsingLayerPopup, attributeFormats);
704
+ expect(result.type).toEqual('pattern');
705
+ expect(result.format).toEqual('{name}|{age}|{start}');
706
+ });
707
+
708
+ it('should prepare labels from popup text', async () => {
709
+ const popupTemplate = {
710
+ title: '{name}',
711
+ content: [{
712
+ type: 'text',
713
+ text: '<p>{name} {age} years &nbsp;</p><p>started: {start}</p>'
714
+ }],
715
+ fieldInfos: [{
716
+ fieldName: 'name',
717
+ visible: true
718
+ }, {
719
+ fieldName: 'age',
720
+ format: {
721
+ places: 0,
722
+ digitSeparator: true
723
+ },
724
+ visible: true
725
+ }, {
726
+ fieldName: 'start',
727
+ format: {
728
+ dateFormat: 'short-date'
729
+ },
730
+ visible: true
731
+ }]
732
+ };
733
+ const layer = {
734
+ popupEnabled: true,
735
+ popupTemplate
736
+ };
737
+ const formatUsingLayerPopup = true;
738
+
739
+ const attributeFormats: downloadUtils.IAttributeFormats = {};
740
+ const result: downloadUtils.ILabelFormat =
741
+ await downloadUtils._getLabelFormat(layer as any, formatUsingLayerPopup, attributeFormats);
742
+ expect(result.type).toEqual('pattern');
743
+ expect(result.format).toEqual('{name} {age} years|started: {start}');
744
+ });
745
+
746
+ it('should prepare labels from popup Arcade', async () => {
747
+ const Arcade = {
748
+ createArcadeExecutor: (): Promise<__esri.ArcadeExecutor> => {
749
+ const executor: __esri.ArcadeExecutor = {} as __esri.ArcadeExecutor;
750
+ return Promise.resolve(executor);
751
+ }
752
+ };
753
+ const loadModulesSpy = jest.spyOn(esriLoader, 'loadModules').mockResolvedValue([Arcade]);
754
+
755
+ const popupTemplate = {
756
+ title: '{name}',
757
+ content: [{
758
+ type: 'expression',
759
+ expressionInfo: {
760
+ title: 'New expression',
761
+ 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}',
762
+ returnType: 'dictionary'
763
+ }
764
+ }],
765
+ fieldInfos: [{
766
+ fieldName: 'name',
767
+ visible: true
768
+ }, {
769
+ fieldName: 'age',
770
+ format: {
771
+ places: 0,
772
+ digitSeparator: true
773
+ },
774
+ visible: true
775
+ }, {
776
+ fieldName: 'start',
777
+ format: {
778
+ dateFormat: 'short-date'
779
+ },
780
+ visible: true
781
+ }]
782
+ };
783
+ const layer = {
784
+ popupEnabled: true,
785
+ popupTemplate
786
+ };
787
+ const formatUsingLayerPopup = true;
788
+
789
+ const attributeFormats: downloadUtils.IAttributeFormats = {};
790
+ const result: downloadUtils.ILabelFormat =
791
+ await downloadUtils._getLabelFormat(layer as any, formatUsingLayerPopup, attributeFormats);
792
+ expect(result.type).toEqual('executor');
793
+
794
+ loadModulesSpy.mockRestore();
795
+ });
796
+
797
+ it('should prepare labels without popup; formatUsingLayerPopup is true', async () => {
798
+ const layer = {
799
+ popupEnabled: false,
800
+ fields: [
801
+ {
802
+ name: 'name',
803
+ type: 'string'
804
+ },
805
+ {
806
+ name: 'age',
807
+ type: 'integer'
808
+ }
809
+ ]
810
+ } as __esri.FeatureLayer;
811
+ const formatUsingLayerPopup = true;
812
+
813
+ const attributeFormats: downloadUtils.IAttributeFormats = {};
814
+ const result: downloadUtils.ILabelFormat =
815
+ await downloadUtils._getLabelFormat(layer as any, formatUsingLayerPopup, attributeFormats);
816
+ expect(result.type).toEqual('unsupported');
817
+ expect(result.format).toBeUndefined();
818
+ });
819
+
820
+ it('should prepare labels without popup; formatUsingLayerPopup is false', async () => {
821
+ const layer = {
822
+ popupEnabled: false,
823
+ fields: [
824
+ {
825
+ name: 'name',
826
+ type: 'string'
827
+ },
828
+ {
829
+ name: 'age',
830
+ type: 'integer'
831
+ }
832
+ ]
833
+ } as __esri.FeatureLayer;
834
+ const formatUsingLayerPopup = false;
835
+
836
+ const attributeFormats: downloadUtils.IAttributeFormats = {};
837
+ const result: downloadUtils.ILabelFormat =
838
+ await downloadUtils._getLabelFormat(layer as any, formatUsingLayerPopup, attributeFormats);
839
+ expect(result.type).toEqual('unsupported');
840
+ expect(result.format).toBeUndefined();
841
+ });
842
+
843
+ });
844
+
845
+ describe('_getSelectionSetNames', () => {
846
+
847
+ it('should return selection set names for matching IDs', () => {
848
+ const exportInfos = {
849
+ 'layer1': {
850
+ selectionSetNames: ['Selection Set 1', 'Selection Set 2']
851
+ },
852
+ 'layer2': {
853
+ selectionSetNames: ['Selection Set 3']
854
+ }
855
+ };
856
+ const result = downloadUtils._getSelectionSetNames(exportInfos as any, /^layer/);
857
+ expect(result).toEqual(['Selection Set 1', 'Selection Set 2', 'Selection Set 3']);
858
+ });
859
+
860
+ it('should return an empty array if no matching IDs are found', () => {
861
+ const exportInfos = {
862
+ 'layer1': {
863
+ selectionSetNames: ['Selection Set 1', 'Selection Set 2']
864
+ },
865
+ 'layer2': {
866
+ selectionSetNames: ['Selection Set 3']
867
+ }
868
+ };
869
+ const result = downloadUtils._getSelectionSetNames(exportInfos as any, /^foo/);
870
+ expect(result).toEqual([]);
871
+ });
872
+
873
+ });
874
+
875
+ describe('_prepareAttributeValue', () => {
876
+
877
+ it('should format date attributes using the specified date format', () => {
878
+ const attributeValue = new Date('2022-01-01T00:00:00.000Z');
879
+ const attributeType = 'date';
880
+ const attributeDomain = null;
881
+ const attributeFormat = {
882
+ dateFormat: 'short-date'
883
+ };
884
+ const intl = {
885
+ formatDate: jest.fn().mockReturnValue('01/01/2022'),
886
+ convertDateFormatToIntlOptions: jest.fn().mockReturnValue({})
887
+ };
888
+ const result = downloadUtils._prepareAttributeValue(attributeValue, attributeType, attributeDomain, attributeFormat as any, intl);
889
+ expect(result).toEqual('01/01/2022');
890
+ expect(intl.formatDate).toHaveBeenCalledWith(attributeValue, {});
891
+ expect(intl.convertDateFormatToIntlOptions).toHaveBeenCalledWith('short-date');
892
+ });
893
+
894
+ it('should format number attributes using the specified number format', () => {
895
+ const attributeValue = 1234.5678;
896
+ const attributeType = 'double';
897
+ const attributeDomain = null;
898
+ const attributeFormat = {
899
+ places: 2,
900
+ digitSeparator: true
901
+ };
902
+ const intl = {
903
+ formatNumber: jest.fn().mockReturnValue('1,234.57'),
904
+ convertNumberFormatToIntlOptions: jest.fn().mockReturnValue({})
905
+ };
906
+ const result = downloadUtils._prepareAttributeValue(attributeValue, attributeType, attributeDomain, attributeFormat as any, intl);
907
+ expect(result).toEqual('1,234.57');
908
+ expect(intl.formatNumber).toHaveBeenCalledWith(attributeValue, {});
909
+ expect(intl.convertNumberFormatToIntlOptions).toHaveBeenCalledWith(attributeFormat);
910
+ });
911
+
912
+ it('should return the attribute value if no format is specified', () => {
913
+ const attributeValue = 'Value';
914
+ const attributeType = 'string';
915
+ const attributeDomain = null;
916
+ const attributeFormat = null;
917
+ const intl = {};
918
+ const result = downloadUtils._prepareAttributeValue(attributeValue, attributeType, attributeDomain, attributeFormat, intl);
919
+ expect(result).toEqual('Value');
920
+ });
921
+
922
+ it('should return the domain name for coded-value domain fields', () => {
923
+ const attributeValue = '1';
924
+ const attributeType = 'string';
925
+ const attributeDomain = {
926
+ type: 'coded-value',
927
+ name: 'Domain',
928
+ codedValues: [
929
+ {
930
+ name: 'Value 1',
931
+ code: '1'
932
+ },
933
+ {
934
+ name: 'Value 2',
935
+ code: '2'
936
+ }
937
+ ],
938
+ getName: function (code: string) {
939
+ return this.codedValues.find((codedValue: any) => codedValue.code === code)?.name;
940
+ }
941
+ } as __esri.CodedValueDomain;
942
+ const attributeFormat = null;
943
+ const intl = {};
944
+ const result = downloadUtils._prepareAttributeValue(attributeValue, attributeType, attributeDomain as any, attributeFormat, intl);
945
+ expect(result).toEqual('Value 1');
946
+ });
947
+
422
948
  });
423
949
 
424
950
  });