@esri/solutions-components 0.6.8 → 0.6.10
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.
- package/dist/assets/t9n/crowdsource-manager/resources.json +2 -1
- package/dist/assets/t9n/crowdsource-manager/resources_en.json +2 -1
- package/dist/assets/t9n/info-card/resources.json +5 -2
- package/dist/assets/t9n/info-card/resources_en.json +5 -2
- package/dist/assets/t9n/layer-table/resources.json +2 -1
- package/dist/assets/t9n/layer-table/resources_en.json +2 -1
- package/dist/assets/t9n/map-tools/resources.json +1 -4
- package/dist/assets/t9n/map-tools/resources_en.json +1 -4
- package/dist/cjs/{ExpandToggle-e6a0d66e.js → ExpandToggle-c5690e14.js} +5 -5
- package/dist/cjs/{FloatingArrow-0119ec6e.js → FloatingArrow-675171a6.js} +1 -1
- package/dist/cjs/{Heading-521f39ac.js → Heading-3712677d.js} +1 -1
- package/dist/cjs/{app-globals-72576a1c.js → app-globals-a62ad1ad.js} +3 -3
- package/dist/cjs/{ar-1718ae57.js → ar-1dc23c0a.js} +14 -14
- package/dist/cjs/{array-46bb7df1.js → array-2db3fd4a.js} +1 -1
- package/dist/cjs/{basemap-gallery_4.cjs.entry.js → basemap-gallery_5.cjs.entry.js} +120 -66
- package/dist/cjs/{bg-190a176c.js → bg-4024b354.js} +14 -14
- package/dist/cjs/{bs-919e0de8.js → bs-3134d711.js} +14 -14
- package/dist/cjs/buffer-tools_4.cjs.entry.js +15 -15
- package/dist/cjs/{ca-94918e06.js → ca-8d6647d3.js} +14 -14
- package/dist/cjs/calcite-accordion-item.cjs.entry.js +7 -12
- package/dist/cjs/calcite-accordion.cjs.entry.js +1 -6
- package/dist/cjs/calcite-action-bar.cjs.entry.js +31 -26
- package/dist/cjs/calcite-action-group_2.cjs.entry.js +18 -20
- package/dist/cjs/calcite-action-pad.cjs.entry.js +20 -16
- package/dist/cjs/calcite-action_2.cjs.entry.js +17 -22
- package/dist/cjs/calcite-alert.cjs.entry.js +11 -11
- package/dist/cjs/calcite-avatar.cjs.entry.js +6 -6
- package/dist/cjs/calcite-block-section.cjs.entry.js +9 -9
- package/dist/cjs/calcite-block.cjs.entry.js +12 -12
- package/dist/cjs/calcite-button.cjs.entry.js +12 -12
- package/dist/cjs/calcite-card.cjs.entry.js +9 -9
- package/dist/cjs/calcite-checkbox.cjs.entry.js +8 -13
- package/dist/cjs/calcite-chip-group.cjs.entry.js +6 -11
- package/dist/cjs/calcite-chip.cjs.entry.js +11 -11
- package/dist/cjs/calcite-color-picker-hex-input_2.cjs.entry.js +8 -8
- package/dist/cjs/calcite-color-picker.cjs.entry.js +12 -12
- package/dist/cjs/calcite-combobox-item-group.cjs.entry.js +5 -5
- package/dist/cjs/calcite-combobox_6.cjs.entry.js +21 -26
- package/dist/cjs/calcite-date-picker-day_3.cjs.entry.js +10 -10
- package/dist/cjs/calcite-date-picker.cjs.entry.js +11 -11
- package/dist/cjs/calcite-fab.cjs.entry.js +6 -6
- package/dist/cjs/calcite-filter_5.cjs.entry.js +16 -16
- package/dist/cjs/calcite-flow-item.cjs.entry.js +11 -11
- package/dist/cjs/calcite-flow.cjs.entry.js +3 -3
- package/dist/cjs/calcite-graph.cjs.entry.js +5 -10
- package/dist/cjs/calcite-icon.cjs.entry.js +6 -6
- package/dist/cjs/calcite-inline-editable.cjs.entry.js +11 -11
- package/dist/cjs/calcite-input-date-picker.cjs.entry.js +17 -17
- package/dist/cjs/calcite-input-number_2.cjs.entry.js +13 -13
- package/dist/cjs/{calcite-input-time-picker-b99baf7b.js → calcite-input-time-picker-4efcd55d.js} +60 -60
- package/dist/cjs/calcite-input-time-picker.cjs.entry.js +14 -14
- package/dist/cjs/calcite-input-time-zone.cjs.entry.js +12 -12
- package/dist/cjs/calcite-input_2.cjs.entry.js +12 -12
- package/dist/cjs/calcite-label.cjs.entry.js +5 -5
- package/dist/cjs/calcite-link.cjs.entry.js +5 -5
- package/dist/cjs/calcite-list-item-group.cjs.entry.js +3 -3
- package/dist/cjs/calcite-loader.cjs.entry.js +1 -1
- package/dist/cjs/calcite-menu-item.cjs.entry.js +9 -9
- package/dist/cjs/calcite-menu.cjs.entry.js +9 -9
- package/dist/cjs/calcite-modal.cjs.entry.js +12 -12
- package/dist/cjs/calcite-navigation-logo.cjs.entry.js +2 -2
- package/dist/cjs/calcite-navigation-user.cjs.entry.js +2 -2
- package/dist/cjs/calcite-navigation.cjs.entry.js +5 -5
- package/dist/cjs/calcite-notice.cjs.entry.js +11 -11
- package/dist/cjs/calcite-option_2.cjs.entry.js +9 -9
- package/dist/cjs/calcite-pagination.cjs.entry.js +9 -9
- package/dist/cjs/calcite-panel_2.cjs.entry.js +14 -14
- package/dist/cjs/calcite-pick-list-group.cjs.entry.js +7 -7
- package/dist/cjs/calcite-pick-list-item.cjs.entry.js +12 -12
- package/dist/cjs/calcite-pick-list.cjs.entry.js +10 -10
- package/dist/cjs/calcite-radio-button-group.cjs.entry.js +2 -7
- package/dist/cjs/calcite-radio-button.cjs.entry.js +9 -9
- package/dist/cjs/calcite-rating.cjs.entry.js +12 -12
- package/dist/cjs/calcite-scrim.cjs.entry.js +8 -8
- package/dist/cjs/calcite-segmented-control_2.cjs.entry.js +8 -8
- package/dist/cjs/calcite-shell-center-row.cjs.entry.js +6 -6
- package/dist/cjs/calcite-shell-panel_14.cjs.entry.js +29 -32
- package/dist/cjs/calcite-sortable-list.cjs.entry.js +7 -7
- package/dist/cjs/calcite-split-button.cjs.entry.js +3 -3
- package/dist/cjs/calcite-stepper-item.cjs.entry.js +8 -8
- package/dist/cjs/calcite-stepper.cjs.entry.js +3 -8
- package/dist/cjs/calcite-switch.cjs.entry.js +8 -8
- package/dist/cjs/calcite-text-area.cjs.entry.js +15 -15
- package/dist/cjs/calcite-tile-select-group.cjs.entry.js +1 -1
- package/dist/cjs/calcite-tile-select.cjs.entry.js +4 -4
- package/dist/cjs/calcite-tile.cjs.entry.js +7 -7
- package/dist/cjs/calcite-time-picker.cjs.entry.js +10 -10
- package/dist/cjs/calcite-tip-manager.cjs.entry.js +9 -9
- package/dist/cjs/calcite-tip.cjs.entry.js +10 -10
- package/dist/cjs/calcite-tooltip.cjs.entry.js +9 -9
- package/dist/cjs/calcite-tree_3.cjs.entry.js +8 -8
- package/dist/cjs/{card-manager_4.cjs.entry.js → card-manager_3.cjs.entry.js} +65 -101
- package/dist/cjs/{conditionalSlot-85b3a6b3.js → conditionalSlot-126d557f.js} +2 -2
- package/dist/cjs/crowdsource-manager.cjs.entry.js +50 -16
- package/dist/cjs/{cs-fe27e732.js → cs-b24cd994.js} +14 -14
- package/dist/cjs/{da-1b7f3440.js → da-9dee3a1f.js} +14 -14
- package/dist/cjs/{date-cec32b0e.js → date-0fec6f6b.js} +2 -2
- package/dist/cjs/{de-0dc1effa.js → de-1a98b964.js} +14 -14
- package/dist/cjs/{de-at-acdc4d01.js → de-at-782e6c7f.js} +14 -14
- package/dist/cjs/{de-ch-778a0d99.js → de-ch-d5c95469.js} +14 -14
- package/dist/cjs/{dom-c1807fc1.js → dom-456f9f13.js} +3 -3
- package/dist/cjs/{downloadUtils-a8c530f7.js → downloadUtils-471a6a2d.js} +258 -265
- package/dist/cjs/edit-card_2.cjs.entry.js +38 -5
- package/dist/cjs/{el-fdbc9bc1.js → el-af28cafa.js} +14 -14
- package/dist/cjs/{en-au-0ff50cdf.js → en-au-109f3119.js} +14 -14
- package/dist/cjs/{en-ca-284e9368.js → en-ca-22890a25.js} +14 -14
- package/dist/cjs/{en-gb-0fcae8ae.js → en-gb-dc23c9dd.js} +14 -14
- package/dist/cjs/{es-cd54acba.js → es-3f353355.js} +14 -14
- package/dist/cjs/{es-mx-2078d50f.js → es-mx-ccb57857.js} +14 -14
- package/dist/cjs/{et-17f323f6.js → et-119c047b.js} +14 -14
- package/dist/cjs/{fi-82f27397.js → fi-13096d81.js} +14 -14
- package/dist/cjs/{filter-bda212b4.js → filter-8d8c453e.js} +1 -1
- package/dist/cjs/{floating-ui-8d10af88.js → floating-ui-2b0fbba0.js} +2 -2
- package/dist/cjs/{focusTrapComponent-a22fc6a8.js → focusTrapComponent-d8412ddc.js} +4 -4
- package/dist/cjs/{form-9d8ebf06.js → form-7c6054c3.js} +2 -2
- package/dist/cjs/{fr-af7e1192.js → fr-563dfcd5.js} +14 -14
- package/dist/cjs/{fr-ch-5e1f2c28.js → fr-ch-f66cfd49.js} +14 -14
- package/dist/cjs/{guid-3abe3cc6.js → guid-d1123d5e.js} +1 -1
- package/dist/cjs/{he-ea851800.js → he-d8253a1a.js} +14 -14
- package/dist/cjs/{hi-5212a21d.js → hi-58c7c3b5.js} +14 -14
- package/dist/cjs/{hr-4eecb2ed.js → hr-5aba114a.js} +14 -14
- package/dist/cjs/{hu-6b527d8e.js → hu-38c15915.js} +14 -14
- package/dist/cjs/{id-d78f12ec.js → id-3a94c080.js} +14 -14
- package/dist/cjs/{index.es-4542630e.js → index.es-33154f03.js} +3 -3
- package/dist/cjs/{interactive-2fe0f43a.js → interactive-48299817.js} +2 -2
- package/dist/cjs/{it-15242935.js → it-88834555.js} +14 -14
- package/dist/cjs/{it-ch-9dc21944.js → it-ch-970563cd.js} +14 -14
- package/dist/cjs/{ja-f702cfc2.js → ja-13d4b1ae.js} +14 -14
- package/dist/cjs/{key-b8b55ea3.js → key-8de93212.js} +1 -1
- package/dist/cjs/{ko-aa9bde2c.js → ko-10cbdd98.js} +14 -14
- package/dist/cjs/{label-6e33e971.js → label-166e2d81.js} +3 -3
- package/dist/cjs/layout-manager.cjs.entry.js +93 -0
- package/dist/cjs/{loadModules-31cab7ac.js → loadModules-c5490589.js} +1 -1
- package/dist/cjs/{loadable-bac9cdd6.js → loadable-6925d840.js} +1 -1
- package/dist/cjs/loader.cjs.js +3 -3
- package/dist/cjs/{locale-c63a1b57.js → locale-79c3d30e.js} +5 -5
- package/dist/cjs/{locale-d15cd743.js → locale-88c21da2.js} +15 -15
- package/dist/cjs/{lt-e741ff2f.js → lt-3fc5017a.js} +14 -14
- package/dist/cjs/{lv-92d6768e.js → lv-9d9cf999.js} +14 -14
- package/dist/cjs/map-select-tools_3.cjs.entry.js +3 -3
- package/dist/cjs/{math-5132d9bd.js → math-f28069f3.js} +1 -1
- package/dist/cjs/{mk-b209ac0d.js → mk-9f79812b.js} +14 -14
- package/dist/cjs/{nb-db13e666.js → nb-673fe3fd.js} +14 -14
- package/dist/cjs/{nl-fcd9e0c5.js → nl-4dc0504f.js} +14 -14
- package/dist/cjs/{observers-f5fa975b.js → observers-9912f013.js} +1 -1
- package/dist/cjs/{openCloseComponent-5d70fcd8.js → openCloseComponent-05cb01ff.js} +9 -4
- package/dist/cjs/{pl-87c83322.js → pl-d809a6c3.js} +14 -14
- package/dist/cjs/{pt-b0b5f472.js → pt-78eefbc7.js} +14 -14
- package/dist/cjs/{pt-br-03333e90.js → pt-br-55f1893a.js} +14 -14
- package/dist/cjs/public-notification.cjs.entry.js +3 -3
- package/dist/cjs/{resources-60c27547.js → resources-030a27ed.js} +1 -1
- package/dist/cjs/{resources-91409a5d.js → resources-10d29626.js} +1 -1
- package/dist/cjs/{resources-9f2b33ee.js → resources-24b6eee0.js} +1 -1
- package/dist/cjs/{resources-4da89742.js → resources-2b51cf4c.js} +1 -1
- package/dist/cjs/{resources-e1258e8a.js → resources-8f4e8ba8.js} +1 -1
- package/dist/cjs/{resources-77713c2e.js → resources-993f6faf.js} +1 -1
- package/dist/cjs/{resources-2901b608.js → resources-a2e2a544.js} +1 -1
- package/dist/cjs/{resources-c913200c.js → resources-acf9a7ea.js} +1 -1
- package/dist/cjs/{resources-8233a151.js → resources-caca31c2.js} +1 -1
- package/dist/cjs/{ro-c3661b73.js → ro-f0cff196.js} +14 -14
- package/dist/cjs/{ru-8dd3fd58.js → ru-5e9b37f9.js} +14 -14
- package/dist/cjs/{shared-list-render-c0adb192.js → shared-list-render-9bbcb306.js} +6 -6
- package/dist/cjs/{sk-151d9acf.js → sk-322cd349.js} +14 -14
- package/dist/cjs/{sl-9b45a152.js → sl-fd948e50.js} +14 -14
- package/dist/cjs/solution-configuration.cjs.entry.js +1 -1
- package/dist/cjs/solution-contents_3.cjs.entry.js +1 -1
- package/dist/cjs/solutions-components.cjs.js +3 -3
- package/dist/cjs/{sortableComponent-58679f07.js → sortableComponent-70bf79de.js} +2 -2
- package/dist/cjs/{sr-186bf15c.js → sr-f0058b24.js} +14 -14
- package/dist/cjs/{sv-a93fee0c.js → sv-8a8378bf.js} +14 -14
- package/dist/cjs/{t9n-1d032c30.js → t9n-62d807df.js} +2 -2
- package/dist/cjs/{th-41680352.js → th-f219fad6.js} +14 -14
- package/dist/cjs/{time-5e450ec8.js → time-24d40c60.js} +2 -2
- package/dist/cjs/{tr-0bd886d6.js → tr-03109641.js} +14 -14
- package/dist/cjs/{uk-4fade133.js → uk-dde46112.js} +14 -14
- package/dist/cjs/{utils-cd14113f.js → utils-09191c93.js} +2 -2
- package/dist/cjs/{utils-acfeed9d.js → utils-651e6663.js} +3 -3
- package/dist/cjs/{utils-ae9bdd59.js → utils-852fe124.js} +3 -3
- package/dist/cjs/{utils-bae432a9.js → utils-a194dc3d.js} +5 -2
- package/dist/cjs/{vi-1c9fe343.js → vi-60ed6e30.js} +14 -14
- package/dist/cjs/{zh-cn-28fa1fe1.js → zh-cn-a2f6f51d.js} +14 -14
- package/dist/cjs/{zh-hk-5abf8eb5.js → zh-hk-e14e2fc0.js} +14 -14
- package/dist/cjs/{zh-tw-07500357.js → zh-tw-7ea0d7e4.js} +14 -14
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/card-manager/card-manager.js +1 -1
- package/dist/collection/components/crowdsource-manager/crowdsource-manager.css +23 -2
- package/dist/collection/components/crowdsource-manager/crowdsource-manager.js +49 -32
- package/dist/collection/components/info-card/info-card.css +27 -0
- package/dist/collection/components/info-card/info-card.js +36 -2
- package/dist/collection/components/layer-table/layer-table.css +20 -0
- package/dist/collection/components/layer-table/layer-table.js +65 -10
- package/dist/collection/components/map-card/map-card.css +0 -7
- package/dist/collection/components/map-card/map-card.js +20 -10
- package/dist/collection/components/map-legend/map-legend.css +3 -0
- package/dist/collection/components/map-legend/map-legend.js +166 -0
- package/dist/collection/components/map-legend/test/map-legend.e2e.js +14 -0
- package/dist/collection/components/map-legend/test/map-legend.spec.js +22 -0
- package/dist/collection/components/map-picker/map-picker.css +5 -1
- package/dist/collection/components/map-picker/map-picker.js +2 -2
- package/dist/collection/components/map-tools/map-tools.css +14 -0
- package/dist/collection/components/map-tools/map-tools.js +26 -62
- package/dist/collection/demos/crowdsource-manager.html +26 -1
- package/dist/collection/utils/downloadUtils.js +258 -232
- package/dist/collection/utils/downloadUtils.ts +358 -326
- package/dist/collection/utils/interfaces.ts +11 -0
- package/dist/collection/utils/test/downloadUtils.spec.js +503 -57
- package/dist/collection/utils/test/downloadUtils.spec.tsx +587 -61
- package/dist/components/ExpandToggle.js +2 -2
- package/dist/components/FloatingArrow.js +1 -1
- package/dist/components/Heading.js +1 -1
- package/dist/components/action-bar.js +23 -15
- package/dist/components/action-group.js +9 -10
- package/dist/components/action-menu.js +1 -1
- package/dist/components/action.js +1 -1
- package/dist/components/alert.js +2 -2
- package/dist/components/array.js +1 -1
- package/dist/components/avatar.js +2 -2
- package/dist/components/button.js +1 -1
- package/dist/components/calcite-accordion-item.js +2 -7
- package/dist/components/calcite-accordion.js +0 -5
- package/dist/components/calcite-action-pad.js +10 -5
- package/dist/components/calcite-block-section.js +2 -2
- package/dist/components/calcite-block.js +2 -2
- package/dist/components/calcite-card.js +1 -1
- package/dist/components/calcite-chip-group.js +0 -5
- package/dist/components/calcite-combobox-item-group.js +1 -1
- package/dist/components/calcite-fab.js +1 -1
- package/dist/components/calcite-flow-item.js +1 -1
- package/dist/components/calcite-flow.js +1 -1
- package/dist/components/calcite-inline-editable.js +1 -1
- package/dist/components/calcite-input-date-picker.js +1 -1
- package/dist/components/calcite-input-time-picker.js +1 -1
- package/dist/components/calcite-input-time-zone.js +1 -1
- package/dist/components/calcite-list-item-group.js +1 -1
- package/dist/components/calcite-menu-item.js +1 -1
- package/dist/components/calcite-modal.js +2 -2
- package/dist/components/calcite-navigation-logo.js +1 -1
- package/dist/components/calcite-navigation-user.js +1 -1
- package/dist/components/calcite-navigation.js +2 -2
- package/dist/components/calcite-pagination.js +1 -1
- package/dist/components/calcite-radio-button-group.js +0 -5
- package/dist/components/calcite-radio-button.js +1 -1
- package/dist/components/calcite-rating.js +1 -1
- package/dist/components/calcite-shell-center-row.js +1 -1
- package/dist/components/calcite-sortable-list.js +1 -1
- package/dist/components/calcite-split-button.js +1 -1
- package/dist/components/calcite-stepper.js +0 -5
- package/dist/components/calcite-text-area.js +5 -5
- package/dist/components/calcite-tile-select.js +1 -1
- package/dist/components/calcite-tip-manager.js +1 -1
- package/dist/components/calcite-tip.js +1 -1
- package/dist/components/card-manager2.js +1 -1
- package/dist/components/checkbox.js +0 -5
- package/dist/components/chip.js +2 -2
- package/dist/components/color-picker-hex-input.js +2 -2
- package/dist/components/color-picker-swatch.js +1 -1
- package/dist/components/combobox-item.js +1 -1
- package/dist/components/combobox.js +1 -6
- package/dist/components/conditionalSlot.js +1 -1
- package/dist/components/crowdsource-manager.js +57 -23
- package/dist/components/date-picker-month-header.js +1 -1
- package/dist/components/date-picker.js +2 -2
- package/dist/components/date.js +1 -1
- package/dist/components/dom.js +2 -2
- package/dist/components/downloadUtils.js +256 -263
- package/dist/components/dropdown-group.js +1 -1
- package/dist/components/dropdown-item.js +1 -1
- package/dist/components/dropdown.js +1 -1
- package/dist/components/esri-loader.js +15 -15
- package/dist/components/filter.js +1 -1
- package/dist/components/filter2.js +1 -1
- package/dist/components/floating-ui.js +1 -1
- package/dist/components/focusTrapComponent.js +4 -4
- package/dist/components/form.js +1 -1
- package/dist/components/graph.js +3 -8
- package/dist/components/guid.js +1 -1
- package/dist/components/handle.js +1 -1
- package/dist/components/icon.js +2 -2
- package/dist/components/index.js +2 -2
- package/dist/components/info-card2.js +37 -3
- package/dist/components/input-message.js +1 -1
- package/dist/components/input-number.js +1 -1
- package/dist/components/input-text.js +1 -1
- package/dist/components/input.js +1 -1
- package/dist/components/interactive.js +2 -2
- package/dist/components/key.js +1 -1
- package/dist/components/label.js +2 -2
- package/dist/components/label2.js +1 -1
- package/dist/components/layer-table2.js +46 -11
- package/dist/components/layout-manager.js +129 -1
- package/dist/components/list-item2.js +1 -1
- package/dist/components/list.js +2 -2
- package/dist/components/loadable.js +1 -1
- package/dist/components/locale2.js +2 -2
- package/dist/components/map-card2.js +57 -42
- package/dist/components/map-legend.d.ts +11 -0
- package/dist/components/map-legend.js +11 -0
- package/dist/components/map-legend2.js +118 -0
- package/dist/components/map-picker2.js +3 -3
- package/dist/components/map-tools2.js +49 -79
- package/dist/components/math.js +1 -1
- package/dist/components/menu.js +1 -1
- package/dist/components/notice.js +1 -1
- package/dist/components/observers.js +1 -1
- package/dist/components/openCloseComponent.js +9 -4
- package/dist/components/panel.js +2 -2
- package/dist/components/pick-list-item.js +1 -1
- package/dist/components/popover.js +3 -8
- package/dist/components/resources.js +1 -1
- package/dist/components/resources2.js +1 -1
- package/dist/components/resources3.js +1 -1
- package/dist/components/resources4.js +1 -1
- package/dist/components/scrim.js +1 -1
- package/dist/components/segmented-control-item.js +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/shared-list-render.js +2 -2
- package/dist/components/shell-panel.js +9 -6
- package/dist/components/shell.js +2 -2
- package/dist/components/slider.js +1 -1
- package/dist/components/sortableComponent.js +1 -1
- package/dist/components/stack.js +2 -2
- package/dist/components/t9n.js +1 -1
- package/dist/components/tab-title.js +1 -6
- package/dist/components/tabs.js +1 -1
- package/dist/components/tile.js +1 -1
- package/dist/components/time-picker.js +2 -2
- package/dist/components/tooltip.js +3 -3
- package/dist/components/tree-item.js +2 -2
- package/dist/components/tree.js +1 -1
- package/dist/components/utils.js +5 -2
- package/dist/components/utils2.js +2 -2
- package/dist/components/utils3.js +2 -2
- package/dist/components/value-list-item.js +1 -1
- package/dist/components/value-list.js +2 -2
- package/dist/esm/{ExpandToggle-3d10bd1e.js → ExpandToggle-3bfcb842.js} +5 -5
- package/dist/esm/{FloatingArrow-29db6da6.js → FloatingArrow-cf140d6b.js} +1 -1
- package/dist/esm/{Heading-cb79e5b2.js → Heading-140d10ff.js} +1 -1
- package/dist/esm/{app-globals-5cbac6b0.js → app-globals-fffe4e27.js} +3 -3
- package/dist/esm/{ar-4b751ba8.js → ar-45abeb31.js} +14 -14
- package/dist/esm/{array-751a2b87.js → array-d95985ad.js} +1 -1
- package/dist/esm/{basemap-gallery_4.entry.js → basemap-gallery_5.entry.js} +120 -67
- package/dist/esm/{bg-5d8bf5ea.js → bg-af759e86.js} +14 -14
- package/dist/esm/{bs-ff510e71.js → bs-20d012de.js} +14 -14
- package/dist/esm/buffer-tools_4.entry.js +15 -15
- package/dist/esm/{ca-b9a5e51a.js → ca-1498df65.js} +14 -14
- package/dist/esm/calcite-accordion-item.entry.js +7 -12
- package/dist/esm/calcite-accordion.entry.js +1 -6
- package/dist/esm/calcite-action-bar.entry.js +31 -26
- package/dist/esm/calcite-action-group_2.entry.js +18 -20
- package/dist/esm/calcite-action-pad.entry.js +20 -16
- package/dist/esm/calcite-action_2.entry.js +17 -22
- package/dist/esm/calcite-alert.entry.js +11 -11
- package/dist/esm/calcite-avatar.entry.js +6 -6
- package/dist/esm/calcite-block-section.entry.js +9 -9
- package/dist/esm/calcite-block.entry.js +12 -12
- package/dist/esm/calcite-button.entry.js +12 -12
- package/dist/esm/calcite-card.entry.js +9 -9
- package/dist/esm/calcite-checkbox.entry.js +8 -13
- package/dist/esm/calcite-chip-group.entry.js +6 -11
- package/dist/esm/calcite-chip.entry.js +11 -11
- package/dist/esm/calcite-color-picker-hex-input_2.entry.js +8 -8
- package/dist/esm/calcite-color-picker.entry.js +12 -12
- package/dist/esm/calcite-combobox-item-group.entry.js +5 -5
- package/dist/esm/calcite-combobox_6.entry.js +21 -26
- package/dist/esm/calcite-date-picker-day_3.entry.js +10 -10
- package/dist/esm/calcite-date-picker.entry.js +11 -11
- package/dist/esm/calcite-fab.entry.js +6 -6
- package/dist/esm/calcite-filter_5.entry.js +16 -16
- package/dist/esm/calcite-flow-item.entry.js +11 -11
- package/dist/esm/calcite-flow.entry.js +3 -3
- package/dist/esm/calcite-graph.entry.js +5 -10
- package/dist/esm/calcite-icon.entry.js +6 -6
- package/dist/esm/calcite-inline-editable.entry.js +11 -11
- package/dist/esm/calcite-input-date-picker.entry.js +17 -17
- package/dist/esm/calcite-input-number_2.entry.js +13 -13
- package/dist/esm/{calcite-input-time-picker-13448515.js → calcite-input-time-picker-227e60c3.js} +60 -60
- package/dist/esm/calcite-input-time-picker.entry.js +14 -14
- package/dist/esm/calcite-input-time-zone.entry.js +12 -12
- package/dist/esm/calcite-input_2.entry.js +12 -12
- package/dist/esm/calcite-label.entry.js +5 -5
- package/dist/esm/calcite-link.entry.js +5 -5
- package/dist/esm/calcite-list-item-group.entry.js +3 -3
- package/dist/esm/calcite-loader.entry.js +1 -1
- package/dist/esm/calcite-menu-item.entry.js +9 -9
- package/dist/esm/calcite-menu.entry.js +9 -9
- package/dist/esm/calcite-modal.entry.js +12 -12
- package/dist/esm/calcite-navigation-logo.entry.js +2 -2
- package/dist/esm/calcite-navigation-user.entry.js +2 -2
- package/dist/esm/calcite-navigation.entry.js +5 -5
- package/dist/esm/calcite-notice.entry.js +11 -11
- package/dist/esm/calcite-option_2.entry.js +9 -9
- package/dist/esm/calcite-pagination.entry.js +9 -9
- package/dist/esm/calcite-panel_2.entry.js +14 -14
- package/dist/esm/calcite-pick-list-group.entry.js +7 -7
- package/dist/esm/calcite-pick-list-item.entry.js +12 -12
- package/dist/esm/calcite-pick-list.entry.js +10 -10
- package/dist/esm/calcite-radio-button-group.entry.js +2 -7
- package/dist/esm/calcite-radio-button.entry.js +9 -9
- package/dist/esm/calcite-rating.entry.js +12 -12
- package/dist/esm/calcite-scrim.entry.js +8 -8
- package/dist/esm/calcite-segmented-control_2.entry.js +8 -8
- package/dist/esm/calcite-shell-center-row.entry.js +6 -6
- package/dist/esm/calcite-shell-panel_14.entry.js +29 -32
- package/dist/esm/calcite-sortable-list.entry.js +7 -7
- package/dist/esm/calcite-split-button.entry.js +3 -3
- package/dist/esm/calcite-stepper-item.entry.js +8 -8
- package/dist/esm/calcite-stepper.entry.js +3 -8
- package/dist/esm/calcite-switch.entry.js +8 -8
- package/dist/esm/calcite-text-area.entry.js +15 -15
- package/dist/esm/calcite-tile-select-group.entry.js +1 -1
- package/dist/esm/calcite-tile-select.entry.js +4 -4
- package/dist/esm/calcite-tile.entry.js +7 -7
- package/dist/esm/calcite-time-picker.entry.js +10 -10
- package/dist/esm/calcite-tip-manager.entry.js +9 -9
- package/dist/esm/calcite-tip.entry.js +10 -10
- package/dist/esm/calcite-tooltip.entry.js +9 -9
- package/dist/esm/calcite-tree_3.entry.js +8 -8
- package/dist/esm/{card-manager_4.entry.js → card-manager_3.entry.js} +66 -101
- package/dist/esm/{conditionalSlot-27a0fce0.js → conditionalSlot-55a14abd.js} +2 -2
- package/dist/esm/crowdsource-manager.entry.js +50 -16
- package/dist/esm/{cs-f21a0628.js → cs-3bd67855.js} +14 -14
- package/dist/esm/{da-dc48fc4c.js → da-7a76e131.js} +14 -14
- package/dist/esm/{date-0ed48e97.js → date-bd5b879c.js} +2 -2
- package/dist/esm/{de-59290071.js → de-0808a43e.js} +14 -14
- package/dist/esm/{de-at-cd6e6ab7.js → de-at-0b6874cb.js} +14 -14
- package/dist/esm/{de-ch-27c44e34.js → de-ch-c9d429dd.js} +14 -14
- package/dist/esm/{dom-843e3afd.js → dom-37f2dec9.js} +3 -3
- package/dist/esm/{downloadUtils-63661805.js → downloadUtils-8d4c13bb.js} +258 -265
- package/dist/esm/edit-card_2.entry.js +38 -5
- package/dist/esm/{el-f09fdec6.js → el-66001281.js} +14 -14
- package/dist/esm/{en-au-90087aa5.js → en-au-6424fec0.js} +14 -14
- package/dist/esm/{en-ca-10751695.js → en-ca-f5f1659d.js} +14 -14
- package/dist/esm/{en-gb-0f8547bd.js → en-gb-796beadd.js} +14 -14
- package/dist/esm/{es-b0997cf1.js → es-cd139926.js} +14 -14
- package/dist/esm/{es-mx-226f5028.js → es-mx-854dc3e4.js} +14 -14
- package/dist/esm/{et-dc96c453.js → et-2aa6782d.js} +14 -14
- package/dist/esm/{fi-0941704d.js → fi-965727bd.js} +14 -14
- package/dist/esm/{filter-1cac3edf.js → filter-60517290.js} +1 -1
- package/dist/esm/{floating-ui-d28d0fd6.js → floating-ui-7cde67cf.js} +2 -2
- package/dist/esm/{focusTrapComponent-ff3a9f28.js → focusTrapComponent-ec344399.js} +4 -4
- package/dist/esm/{form-11c6a015.js → form-04d47b0b.js} +2 -2
- package/dist/esm/{fr-8da3458d.js → fr-c1884e89.js} +14 -14
- package/dist/esm/{fr-ch-739ceddf.js → fr-ch-1fd8dd3a.js} +14 -14
- package/dist/esm/{guid-2bbb8cd1.js → guid-70cda807.js} +1 -1
- package/dist/esm/{he-8b662dfa.js → he-0d7b78b4.js} +14 -14
- package/dist/esm/{hi-10996f89.js → hi-0376c82d.js} +14 -14
- package/dist/esm/{hr-42c2024d.js → hr-28a64903.js} +14 -14
- package/dist/esm/{hu-4768b3ff.js → hu-44a02ff7.js} +14 -14
- package/dist/esm/{id-24a08170.js → id-034fc4a5.js} +14 -14
- package/dist/esm/{index.es-3a3aa8e3.js → index.es-065c3035.js} +3 -3
- package/dist/esm/{interactive-eaf4be29.js → interactive-bd6837bc.js} +2 -2
- package/dist/esm/{it-ad09649f.js → it-56e52026.js} +14 -14
- package/dist/esm/{it-ch-b05fc10d.js → it-ch-a4a0e136.js} +14 -14
- package/dist/esm/{ja-ab839b73.js → ja-f2365272.js} +14 -14
- package/dist/esm/{key-7a525416.js → key-02fa06ae.js} +1 -1
- package/dist/esm/{ko-c778539e.js → ko-e7650b4c.js} +14 -14
- package/dist/esm/{label-6a1caf64.js → label-b6dfb4d5.js} +3 -3
- package/dist/{components/layout-manager2.js → esm/layout-manager.entry.js} +11 -58
- package/dist/esm/{loadModules-2ecd1e44.js → loadModules-f5f910b6.js} +1 -1
- package/dist/esm/{loadable-6bca96ad.js → loadable-47170cb6.js} +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/{locale-d8561d54.js → locale-146251f7.js} +5 -5
- package/dist/esm/{locale-aa3de591.js → locale-efad8f83.js} +15 -15
- package/dist/esm/{lt-447d9aa9.js → lt-1577a952.js} +14 -14
- package/dist/esm/{lv-4d715e11.js → lv-9ef7e4f6.js} +14 -14
- package/dist/esm/map-select-tools_3.entry.js +3 -3
- package/dist/esm/{math-5f92f517.js → math-0d6817c3.js} +1 -1
- package/dist/esm/{mk-b3d7401a.js → mk-94264e08.js} +14 -14
- package/dist/esm/{nb-2b4a8366.js → nb-fa24d5b2.js} +14 -14
- package/dist/esm/{nl-c0db1da2.js → nl-33f10900.js} +14 -14
- package/dist/esm/{observers-9d66685a.js → observers-95c50046.js} +1 -1
- package/dist/esm/{openCloseComponent-2b5c6bed.js → openCloseComponent-10efeff3.js} +9 -4
- package/dist/esm/{pl-0d322bb4.js → pl-9ed16565.js} +14 -14
- package/dist/esm/{pt-5997598c.js → pt-52731ddf.js} +14 -14
- package/dist/esm/{pt-br-6b77e7db.js → pt-br-8de51ff4.js} +14 -14
- package/dist/esm/public-notification.entry.js +3 -3
- package/dist/esm/{resources-5bce3953.js → resources-0151b0c0.js} +1 -1
- package/dist/esm/{resources-94c47e64.js → resources-1e6d76df.js} +1 -1
- package/dist/esm/{resources-40d8e06f.js → resources-24255b05.js} +1 -1
- package/dist/esm/{resources-dca3d475.js → resources-2e5aa562.js} +1 -1
- package/dist/esm/{resources-c253772f.js → resources-2edfa0af.js} +1 -1
- package/dist/esm/{resources-a9b2d33c.js → resources-41416583.js} +1 -1
- package/dist/esm/{resources-d6a4d343.js → resources-b392187d.js} +1 -1
- package/dist/esm/{resources-58d30a0f.js → resources-c676d5de.js} +1 -1
- package/dist/esm/{resources-c65f5654.js → resources-efae7280.js} +1 -1
- package/dist/esm/{ro-ac3724e0.js → ro-99f009ad.js} +14 -14
- package/dist/esm/{ru-4e75151f.js → ru-592ffaf0.js} +14 -14
- package/dist/esm/{shared-list-render-abd19c8d.js → shared-list-render-4f0f6af8.js} +6 -6
- package/dist/esm/{sk-bbfa22a3.js → sk-44f7bd19.js} +14 -14
- package/dist/esm/{sl-867cecfc.js → sl-08cad9bd.js} +14 -14
- package/dist/esm/solution-configuration.entry.js +1 -1
- package/dist/esm/solution-contents_3.entry.js +1 -1
- package/dist/esm/solutions-components.js +3 -3
- package/dist/esm/{sortableComponent-db502e97.js → sortableComponent-8a84709a.js} +2 -2
- package/dist/esm/{sr-198b5c00.js → sr-84f261fc.js} +14 -14
- package/dist/esm/{sv-02d64370.js → sv-d0d7bc1e.js} +14 -14
- package/dist/esm/{t9n-76168237.js → t9n-5f748619.js} +2 -2
- package/dist/esm/{th-1616e303.js → th-a5149d44.js} +14 -14
- package/dist/esm/{time-6721a4c2.js → time-fa1151aa.js} +2 -2
- package/dist/esm/{tr-f4619f64.js → tr-feb0cad4.js} +14 -14
- package/dist/esm/{uk-df7df34a.js → uk-c9ba62a0.js} +14 -14
- package/dist/esm/{utils-f54411df.js → utils-0a5c1a07.js} +3 -3
- package/dist/esm/{utils-ccfd94a7.js → utils-667cc396.js} +3 -3
- package/dist/esm/{utils-18db6b1d.js → utils-7af1efcc.js} +2 -2
- package/dist/esm/{utils-2c91c963.js → utils-7cf107ec.js} +5 -2
- package/dist/esm/{vi-176ca9f7.js → vi-788dcb99.js} +14 -14
- package/dist/esm/{zh-cn-e13d83d1.js → zh-cn-3ccfb820.js} +14 -14
- package/dist/esm/{zh-hk-d97365d8.js → zh-hk-b29b61e8.js} +14 -14
- package/dist/esm/{zh-tw-a2b6f0b7.js → zh-tw-2bdbc6eb.js} +14 -14
- package/dist/solutions-components/assets/icon/applySelectionToExistingView16.json +1 -0
- package/dist/solutions-components/assets/icon/applySelectionToExistingView24.json +1 -0
- package/dist/solutions-components/assets/icon/applySelectionToExistingView32.json +1 -0
- package/dist/solutions-components/assets/icon/channels16.json +1 -0
- package/dist/solutions-components/assets/icon/channels24.json +1 -0
- package/dist/solutions-components/assets/icon/channels32.json +1 -0
- package/dist/solutions-components/assets/icon/chevronDownLeft16.json +1 -0
- package/dist/solutions-components/assets/icon/chevronDownLeft24.json +1 -0
- package/dist/solutions-components/assets/icon/chevronDownLeft32.json +1 -0
- package/dist/solutions-components/assets/icon/chevronDownRight16.json +1 -0
- package/dist/solutions-components/assets/icon/chevronDownRight24.json +1 -0
- package/dist/solutions-components/assets/icon/chevronDownRight32.json +1 -0
- package/dist/solutions-components/assets/icon/chevronUpLeft16.json +1 -0
- package/dist/solutions-components/assets/icon/chevronUpLeft24.json +1 -0
- package/dist/solutions-components/assets/icon/chevronUpLeft32.json +1 -0
- package/dist/solutions-components/assets/icon/chevronUpRight16.json +1 -0
- package/dist/solutions-components/assets/icon/chevronUpRight24.json +1 -0
- package/dist/solutions-components/assets/icon/chevronUpRight32.json +1 -0
- package/dist/solutions-components/assets/icon/clearSelection16.json +1 -0
- package/dist/solutions-components/assets/icon/clearSelection24.json +1 -0
- package/dist/solutions-components/assets/icon/clearSelection32.json +1 -0
- package/dist/solutions-components/assets/icon/communityLinkChartLayout16.json +1 -0
- package/dist/solutions-components/assets/icon/communityLinkChartLayout24.json +1 -0
- package/dist/solutions-components/assets/icon/communityLinkChartLayout32.json +1 -0
- package/dist/solutions-components/assets/icon/dataCard16.json +1 -0
- package/dist/solutions-components/assets/icon/dataCard24.json +1 -0
- package/dist/solutions-components/assets/icon/dataCard32.json +1 -0
- package/dist/solutions-components/assets/icon/dateTime16.json +1 -0
- package/dist/solutions-components/assets/icon/dateTime24.json +1 -0
- package/dist/solutions-components/assets/icon/dateTime32.json +1 -0
- package/dist/solutions-components/assets/icon/expressionDefinedColor16.json +1 -0
- package/dist/solutions-components/assets/icon/expressionDefinedColor24.json +1 -0
- package/dist/solutions-components/assets/icon/expressionDefinedColor32.json +1 -0
- package/dist/solutions-components/assets/icon/forceDirectedLinkChartLayout16.json +1 -0
- package/dist/solutions-components/assets/icon/forceDirectedLinkChartLayout24.json +1 -0
- package/dist/solutions-components/assets/icon/forceDirectedLinkChartLayout32.json +1 -0
- package/dist/solutions-components/assets/icon/hierarchicalLinkChartLayout16.json +1 -0
- package/dist/solutions-components/assets/icon/hierarchicalLinkChartLayout24.json +1 -0
- package/dist/solutions-components/assets/icon/hierarchicalLinkChartLayout32.json +1 -0
- package/dist/solutions-components/assets/icon/knowledgeStudio16.json +1 -0
- package/dist/solutions-components/assets/icon/knowledgeStudio24.json +1 -0
- package/dist/solutions-components/assets/icon/knowledgeStudio32.json +1 -0
- package/dist/solutions-components/assets/icon/linkChartExpand16.json +1 -0
- package/dist/solutions-components/assets/icon/linkChartExpand24.json +1 -0
- package/dist/solutions-components/assets/icon/linkChartExpand32.json +1 -0
- package/dist/solutions-components/assets/icon/minusSquare16F.json +1 -0
- package/dist/solutions-components/assets/icon/minusSquare24F.json +1 -0
- package/dist/solutions-components/assets/icon/minusSquare32F.json +1 -0
- package/dist/solutions-components/assets/icon/newLinkChart16.json +1 -0
- package/dist/solutions-components/assets/icon/newLinkChart24.json +1 -0
- package/dist/solutions-components/assets/icon/newLinkChart32.json +1 -0
- package/dist/solutions-components/assets/icon/radialTreeLinkChartYayout16.json +1 -0
- package/dist/solutions-components/assets/icon/radialTreeLinkChartYayout24.json +1 -0
- package/dist/solutions-components/assets/icon/radialTreeLinkChartYayout32.json +1 -0
- package/dist/solutions-components/assets/icon/removeLinkchart16.json +1 -0
- package/dist/solutions-components/assets/icon/removeLinkchart24.json +1 -0
- package/dist/solutions-components/assets/icon/removeLinkchart32.json +1 -0
- package/dist/solutions-components/assets/icon/simpleLinkChartLayout16.json +1 -0
- package/dist/solutions-components/assets/icon/simpleLinkChartLayout24.json +1 -0
- package/dist/solutions-components/assets/icon/simpleLinkChartLayout32.json +1 -0
- package/dist/solutions-components/assets/icon/smartTreeLinkChartLayout16.json +1 -0
- package/dist/solutions-components/assets/icon/smartTreeLinkChartLayout24.json +1 -0
- package/dist/solutions-components/assets/icon/smartTreeLinkChartLayout32.json +1 -0
- package/dist/solutions-components/assets/icon/sortAscendingArrow16.json +1 -1
- package/dist/solutions-components/assets/icon/sortAscendingArrow24.json +1 -1
- package/dist/solutions-components/assets/icon/sortAscendingArrow32.json +1 -1
- package/dist/solutions-components/assets/icon/sortDescendingArrow16.json +1 -1
- package/dist/solutions-components/assets/icon/sortDescendingArrow24.json +1 -1
- package/dist/solutions-components/assets/icon/sortDescendingArrow32.json +1 -1
- package/dist/solutions-components/assets/icon/timeZone16.json +1 -0
- package/dist/solutions-components/assets/icon/timeZone24.json +1 -0
- package/dist/solutions-components/assets/icon/timeZone32.json +1 -0
- package/dist/solutions-components/assets/icon/updateProject16.json +1 -0
- package/dist/solutions-components/assets/icon/updateProject24.json +1 -0
- package/dist/solutions-components/assets/icon/updateProject32.json +1 -0
- package/dist/solutions-components/demos/crowdsource-manager.html +26 -1
- package/dist/solutions-components/{p-9fb16c72.entry.js → p-0109bef4.entry.js} +10 -10
- package/dist/solutions-components/{p-46d5970b.entry.js → p-01c83b8c.entry.js} +1 -1
- package/dist/solutions-components/{p-6de98c51.js → p-0266ca81.js} +1 -1
- package/dist/solutions-components/{p-8a758303.js → p-05b2bdf9.js} +3 -3
- package/dist/solutions-components/p-072155f9.js +12 -0
- package/dist/solutions-components/{p-e07b8a72.entry.js → p-082365d6.entry.js} +3 -3
- package/dist/solutions-components/{p-ea282908.js → p-0b8463d6.js} +1 -1
- package/dist/solutions-components/{p-cad5587c.entry.js → p-0c2e392e.entry.js} +6 -6
- package/dist/solutions-components/{p-7c33e500.entry.js → p-0dd8368d.entry.js} +1 -1
- package/dist/solutions-components/{p-c3f8b670.js → p-0ecd7346.js} +1 -1
- package/dist/solutions-components/{p-18f1772b.js → p-0ed14b4b.js} +1 -1
- package/dist/solutions-components/p-0f77e83c.entry.js +11 -0
- package/dist/solutions-components/{p-29d41c7e.js → p-0f85fa4b.js} +1 -1
- package/dist/solutions-components/{p-541697d0.js → p-0fa3d1aa.js} +2 -2
- package/dist/solutions-components/{p-a6900100.entry.js → p-10e1ebe4.entry.js} +3 -3
- package/dist/solutions-components/{p-f41105c8.js → p-138cf009.js} +1 -1
- package/dist/solutions-components/{p-2b96e551.entry.js → p-149b4d3c.entry.js} +3 -3
- package/dist/solutions-components/{p-022a9b7a.js → p-167eb73b.js} +1 -1
- package/dist/solutions-components/{p-32f9c709.js → p-168a7d63.js} +1 -1
- package/dist/solutions-components/{p-2b252afd.entry.js → p-17a29fa6.entry.js} +1 -1
- package/dist/solutions-components/p-18538cd9.entry.js +11 -0
- package/dist/solutions-components/p-1bcfca9b.entry.js +6 -0
- package/dist/solutions-components/{p-19fe7725.js → p-1cebde99.js} +1 -1
- package/dist/solutions-components/{p-b948ecd2.entry.js → p-1dbaff04.entry.js} +2 -2
- package/dist/solutions-components/{p-2656168f.entry.js → p-1e7a31c1.entry.js} +3 -3
- package/dist/solutions-components/{p-d554507d.js → p-1eda2d20.js} +1 -1
- package/dist/solutions-components/{p-ef48bd77.entry.js → p-1efcac52.entry.js} +3 -3
- package/dist/solutions-components/{p-c6d83122.entry.js → p-1fba74a5.entry.js} +3 -3
- package/dist/solutions-components/{p-3cbe5ef3.js → p-2154de6d.js} +1 -1
- package/dist/solutions-components/{p-1ede2e18.js → p-2592c0b8.js} +3 -3
- package/dist/solutions-components/{p-90bbf223.entry.js → p-261394d7.entry.js} +1 -1
- package/dist/solutions-components/{p-754e2df2.js → p-27e0f599.js} +1 -1
- package/dist/solutions-components/{p-6a820c4d.js → p-28b5a7cf.js} +1 -1
- package/dist/solutions-components/{p-804e4751.entry.js → p-29efbf76.entry.js} +3 -3
- package/dist/solutions-components/{p-421d5e7c.js → p-2bf63e2e.js} +1 -1
- package/dist/solutions-components/{p-d4c103a8.js → p-2e8a41da.js} +1 -1
- package/dist/solutions-components/{p-de59d2f5.js → p-31aaa60f.js} +1 -1
- package/dist/solutions-components/{p-a2748b38.entry.js → p-34ef43ce.entry.js} +1 -1
- package/dist/solutions-components/{p-97c47bbd.entry.js → p-35cb6eca.entry.js} +3 -3
- package/dist/solutions-components/{p-39ff5ee5.js → p-3766be72.js} +2 -2
- package/dist/solutions-components/{p-9e727488.js → p-38f906f2.js} +1 -1
- package/dist/solutions-components/{p-c5e294e4.js → p-3948a96c.js} +1 -1
- package/dist/solutions-components/{p-9bbc05ff.js → p-3a844a72.js} +1 -1
- package/dist/solutions-components/{p-825bac0e.js → p-3c15959e.js} +1 -1
- package/dist/solutions-components/{p-ffac6f88.entry.js → p-3ce89910.entry.js} +1 -1
- package/dist/solutions-components/{p-7920b5a2.entry.js → p-3cfaf52b.entry.js} +2 -2
- package/dist/solutions-components/{p-b9749e09.js → p-3d3e6e20.js} +1 -1
- package/dist/solutions-components/{p-844ee452.entry.js → p-410068d9.entry.js} +2 -2
- package/dist/solutions-components/{p-a775ba2f.entry.js → p-42f9ab43.entry.js} +3 -3
- package/dist/solutions-components/{p-2291b598.js → p-43ba7a04.js} +1 -1
- package/dist/solutions-components/{p-f28d69ac.entry.js → p-446ab7f8.entry.js} +3 -3
- package/dist/solutions-components/{p-4bc7b875.entry.js → p-452850b4.entry.js} +2 -2
- package/dist/solutions-components/{p-0fbc27fd.entry.js → p-456f5afe.entry.js} +2 -2
- package/dist/solutions-components/p-46352a57.entry.js +6 -0
- package/dist/solutions-components/{p-b86b4512.entry.js → p-46e0ce0c.entry.js} +2 -2
- package/dist/solutions-components/p-470a9ec4.entry.js +6 -0
- package/dist/solutions-components/{p-d62784a4.js → p-476e5302.js} +1 -1
- package/dist/solutions-components/{p-5961c4e0.js → p-4a75b3dc.js} +1 -1
- package/dist/solutions-components/{p-42c7a5fa.entry.js → p-4d76eaf6.entry.js} +2 -2
- package/dist/solutions-components/{p-4e4b55b9.entry.js → p-4f9f97b2.entry.js} +3 -3
- package/dist/solutions-components/{p-67ce3c0c.entry.js → p-56f1d66b.entry.js} +3 -3
- package/dist/solutions-components/{p-5b9b1cbb.entry.js → p-58167087.entry.js} +3 -3
- package/dist/solutions-components/{p-ad72a379.entry.js → p-586f0e3d.entry.js} +3 -3
- package/dist/solutions-components/{p-6f2edf5b.js → p-588bc0c0.js} +1 -1
- package/dist/solutions-components/{p-a040efff.js → p-5958dad9.js} +1 -1
- package/dist/solutions-components/{p-4d17943f.js → p-5c9fa0e7.js} +1 -1
- package/dist/solutions-components/{p-b4157e6a.js → p-5ceef49b.js} +1 -1
- package/dist/solutions-components/{p-c9858d8f.entry.js → p-5d62566c.entry.js} +2 -2
- package/dist/solutions-components/{p-5f5c371e.js → p-5e08d4de.js} +1 -1
- package/dist/solutions-components/{p-b684bbc7.entry.js → p-5eaaf6ea.entry.js} +1 -1
- package/dist/solutions-components/{p-10248e04.js → p-60c15592.js} +1 -1
- package/dist/solutions-components/{p-7601988d.entry.js → p-6295e168.entry.js} +2 -2
- package/dist/solutions-components/{p-4f0c3fc1.js → p-635bbbd4.js} +1 -1
- package/dist/solutions-components/{p-aeebdb15.js → p-636f4631.js} +1 -1
- package/dist/solutions-components/{p-fb7e0054.js → p-643a0325.js} +1 -1
- package/dist/solutions-components/{p-606ca126.js → p-64e2c099.js} +1 -1
- package/dist/solutions-components/{p-ad4d6d02.entry.js → p-651459e2.entry.js} +4 -4
- package/dist/solutions-components/{p-b0c4138f.entry.js → p-667e7134.entry.js} +2 -2
- package/dist/solutions-components/{p-4b95d05e.entry.js → p-66b5211f.entry.js} +1 -1
- package/dist/solutions-components/{p-216801d5.js → p-688f6a0a.js} +1 -1
- package/dist/solutions-components/{p-3e139360.js → p-6be3c411.js} +1 -1
- package/dist/solutions-components/{p-6a524392.entry.js → p-6ce7b446.entry.js} +2 -2
- package/dist/solutions-components/{p-0e7914e6.entry.js → p-6ddc9567.entry.js} +3 -3
- package/dist/solutions-components/{p-1ea1dcac.js → p-6eb4ba8f.js} +1 -1
- package/dist/solutions-components/{p-7b9adfff.js → p-7060caf6.js} +1 -1
- package/dist/solutions-components/{p-bd3a3afe.js → p-7262469a.js} +1 -1
- package/dist/solutions-components/{p-3f0193e9.js → p-73220ff1.js} +1 -1
- package/dist/solutions-components/{p-31ff3452.entry.js → p-78a40191.entry.js} +2 -2
- package/dist/solutions-components/{p-82199b7b.entry.js → p-7a027758.entry.js} +1 -1
- package/dist/solutions-components/{p-a843af2a.js → p-7b2314ac.js} +1 -1
- package/dist/solutions-components/p-7bb12deb.js +11 -0
- package/dist/solutions-components/{p-56300653.js → p-7f271c31.js} +5 -5
- package/dist/solutions-components/p-7f9642d5.js +21 -0
- package/dist/solutions-components/{p-5c097e25.entry.js → p-80cb42e4.entry.js} +3 -3
- package/dist/solutions-components/{p-5383607a.js → p-80ea5869.js} +3 -3
- package/dist/solutions-components/{p-ab8f5c6b.entry.js → p-81814234.entry.js} +2 -2
- package/dist/solutions-components/{p-abda8ca2.entry.js → p-8544d557.entry.js} +2 -2
- package/dist/solutions-components/{p-680d193d.entry.js → p-864c190b.entry.js} +3 -3
- package/dist/solutions-components/p-869d4521.entry.js +6 -0
- package/dist/solutions-components/{p-d3a22725.js → p-872036a8.js} +1 -1
- package/dist/solutions-components/{p-22d580b0.entry.js → p-879d6377.entry.js} +3 -3
- package/dist/solutions-components/{p-4805ff13.js → p-87d66120.js} +1 -1
- package/dist/solutions-components/{p-9cb94ea0.js → p-8927339d.js} +1 -1
- package/dist/solutions-components/{p-7aa949a3.entry.js → p-89504313.entry.js} +2 -2
- package/dist/solutions-components/{p-cf43278c.entry.js → p-8af52074.entry.js} +3 -3
- package/dist/solutions-components/{p-3fc17d72.js → p-8b448a5b.js} +1 -1
- package/dist/solutions-components/{p-03fccde6.entry.js → p-8b74f5bb.entry.js} +3 -3
- package/dist/solutions-components/{p-2ae17fa2.js → p-8c61431d.js} +1 -1
- package/dist/solutions-components/{p-634e1240.js → p-8d00a17e.js} +1 -1
- package/dist/solutions-components/{p-c07af9c2.entry.js → p-8f68f1d3.entry.js} +2 -2
- package/dist/solutions-components/{p-e6bee82f.js → p-8f8d2861.js} +1 -1
- package/dist/solutions-components/{p-108fbf59.entry.js → p-90cef98d.entry.js} +1 -1
- package/dist/solutions-components/{p-9603c3ff.entry.js → p-9370bb48.entry.js} +2 -2
- package/dist/solutions-components/{p-75f26870.js → p-95c11620.js} +13 -13
- package/dist/solutions-components/{p-a777b18c.js → p-96239d0d.js} +2 -2
- package/dist/solutions-components/{p-215d3505.js → p-99402001.js} +1 -1
- package/dist/solutions-components/p-99891e57.js +11 -0
- package/dist/solutions-components/{p-15ef7894.js → p-9a35ef8e.js} +1 -1
- package/dist/solutions-components/{p-35123c90.js → p-9b76bf3d.js} +1 -1
- package/dist/solutions-components/p-9eba78eb.entry.js +6 -0
- package/dist/solutions-components/{p-6b2f2b85.js → p-a16feeec.js} +4 -4
- package/dist/solutions-components/{p-e645edf2.entry.js → p-a1c6db13.entry.js} +1 -1
- package/dist/solutions-components/{p-0cc32f06.js → p-a287be8b.js} +1 -1
- package/dist/solutions-components/{p-052ff2c7.js → p-a46f1b45.js} +1 -1
- package/dist/solutions-components/{p-1f468797.js → p-ab072027.js} +1 -1
- package/dist/solutions-components/{p-31316d61.entry.js → p-ac0abf04.entry.js} +3 -3
- package/dist/solutions-components/{p-38ef0684.js → p-ad75b9bb.js} +2 -2
- package/dist/solutions-components/{p-a08bd8c1.entry.js → p-ae6a7b3b.entry.js} +1 -1
- package/dist/solutions-components/{p-05db4340.js → p-aea37c90.js} +1 -1
- package/dist/solutions-components/{p-164be8ef.entry.js → p-b25005cf.entry.js} +1 -1
- package/dist/solutions-components/{p-b2e6c578.js → p-b28b6d40.js} +1 -1
- package/dist/solutions-components/{p-639cca97.js → p-b28ff52c.js} +1 -1
- package/dist/solutions-components/{p-21f00df6.js → p-bde323ec.js} +1 -1
- package/dist/solutions-components/{p-a0edbb27.js → p-be146646.js} +1 -1
- package/dist/solutions-components/{p-a258f5e7.js → p-c1dcc1e7.js} +1 -1
- package/dist/solutions-components/{p-5e59219b.entry.js → p-c26cd409.entry.js} +1 -1
- package/dist/solutions-components/p-c3ab7439.js +11 -0
- package/dist/solutions-components/{p-283e3a2d.js → p-c6e55b32.js} +1 -1
- package/dist/solutions-components/{p-e10a62f4.entry.js → p-c79c7978.entry.js} +3 -3
- package/dist/solutions-components/{p-647a4130.js → p-c9633864.js} +3 -3
- package/dist/solutions-components/{p-916f90ec.entry.js → p-c968f9aa.entry.js} +1 -1
- package/dist/solutions-components/{p-cf1af08f.entry.js → p-c9df539a.entry.js} +1 -1
- package/dist/solutions-components/{p-93074bd4.entry.js → p-ca3d7edd.entry.js} +2 -2
- package/dist/solutions-components/{p-2005280f.js → p-cacfa6ae.js} +2 -2
- package/dist/solutions-components/{p-27a1ac1f.entry.js → p-cc2393c3.entry.js} +3 -3
- package/dist/solutions-components/p-cd673260.js +6 -0
- package/dist/solutions-components/{p-761a033a.entry.js → p-cec47579.entry.js} +2 -2
- package/dist/solutions-components/{p-32ef065d.entry.js → p-ced11bea.entry.js} +2 -2
- package/dist/solutions-components/{p-ee066c67.js → p-cee23126.js} +5 -5
- package/dist/solutions-components/p-d2d3e4b5.js +11 -0
- package/dist/solutions-components/p-d4cb29ed.entry.js +6 -0
- package/dist/solutions-components/{p-0ece6df1.entry.js → p-d6f68a4e.entry.js} +2 -2
- package/dist/solutions-components/{p-326fa270.js → p-d864b7e3.js} +1 -1
- package/dist/solutions-components/{p-5adf37ea.entry.js → p-da6acb22.entry.js} +2 -2
- package/dist/solutions-components/{p-de58bd49.js → p-e0c011b8.js} +1 -1
- package/dist/solutions-components/{p-58ce5639.js → p-e0fb0920.js} +1 -1
- package/dist/solutions-components/{p-b1f84ae5.js → p-e2637fe6.js} +1 -1
- package/dist/solutions-components/{p-ef96894d.entry.js → p-e2eb4fd3.entry.js} +4 -4
- package/dist/solutions-components/{p-18869c0f.js → p-e3525c00.js} +1 -1
- package/dist/solutions-components/{p-1add4e39.entry.js → p-e3d72832.entry.js} +2 -2
- package/dist/solutions-components/{p-6431fd69.js → p-e4d2fcc5.js} +3 -3
- package/dist/solutions-components/{p-f055a840.js → p-e761b7cd.js} +1 -1
- package/dist/solutions-components/{p-4daae757.js → p-ea285144.js} +1 -1
- package/dist/solutions-components/p-ebbff02e.js +6 -0
- package/dist/solutions-components/{p-07bc4f07.entry.js → p-ec378ea0.entry.js} +3 -3
- package/dist/solutions-components/{p-12a4fa84.js → p-ec889511.js} +1 -1
- package/dist/solutions-components/{p-e02fcfa9.entry.js → p-f153f1c9.entry.js} +2 -2
- package/dist/solutions-components/{p-b49bdc72.entry.js → p-f596eabd.entry.js} +1 -1
- package/dist/solutions-components/{p-3aba40e8.js → p-f7b520ae.js} +2 -2
- package/dist/solutions-components/{p-4c43820f.entry.js → p-f815b5ef.entry.js} +1 -1
- package/dist/solutions-components/p-fb7ca639.entry.js +6 -0
- package/dist/solutions-components/{p-955a956a.entry.js → p-fe96e0d9.entry.js} +4 -4
- package/dist/solutions-components/{p-b5d67495.entry.js → p-feff224c.entry.js} +2 -2
- package/dist/solutions-components/solutions-components.esm.js +1 -1
- package/dist/solutions-components/utils/downloadUtils.ts +358 -326
- package/dist/solutions-components/utils/interfaces.ts +11 -0
- package/dist/solutions-components/utils/test/downloadUtils.spec.tsx +587 -61
- package/dist/types/components/crowdsource-manager/crowdsource-manager.d.ts +28 -4
- package/dist/types/components/info-card/info-card.d.ts +23 -0
- package/dist/types/components/layer-table/layer-table.d.ts +14 -2
- package/dist/types/components/map-card/map-card.d.ts +6 -2
- package/dist/types/components/map-legend/map-legend.d.ts +64 -0
- package/dist/types/components/map-tools/map-tools.d.ts +11 -41
- package/dist/types/components.d.ts +40 -11
- package/dist/types/preact.d.ts +2 -0
- package/dist/types/utils/downloadUtils.d.ts +126 -15
- package/dist/types/utils/interfaces.d.ts +9 -0
- package/package.json +4 -10
- package/dist/solutions-components/p-2d70d3fd.js +0 -12
- package/dist/solutions-components/p-361f1fe1.js +0 -11
- package/dist/solutions-components/p-3bd99fc9.js +0 -11
- package/dist/solutions-components/p-418d0b60.entry.js +0 -6
- package/dist/solutions-components/p-525f1188.js +0 -11
- package/dist/solutions-components/p-55aefaa8.entry.js +0 -6
- package/dist/solutions-components/p-5b5a6ac8.entry.js +0 -6
- package/dist/solutions-components/p-7b90c18e.entry.js +0 -6
- package/dist/solutions-components/p-91caf655.entry.js +0 -11
- package/dist/solutions-components/p-a0a2c53d.js +0 -21
- package/dist/solutions-components/p-a6c85bd7.entry.js +0 -6
- package/dist/solutions-components/p-b6578a32.js +0 -6
- package/dist/solutions-components/p-baccfd70.entry.js +0 -6
- package/dist/solutions-components/p-bba3fa4e.entry.js +0 -11
- package/dist/solutions-components/p-c1ee0d69.js +0 -11
- package/dist/solutions-components/p-d6322e4b.js +0 -6
|
@@ -24,32 +24,33 @@ import { IExportInfo, IExportInfos } from "../utils/interfaces";
|
|
|
24
24
|
|
|
25
25
|
export { ILabel } from "./pdfUtils";
|
|
26
26
|
|
|
27
|
-
interface
|
|
28
|
-
[
|
|
27
|
+
export interface IAttributeOrigNames {
|
|
28
|
+
[lowercaseName: string]: string;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
interface
|
|
32
|
-
[expressionName: string]: Promise<__esri.ArcadeExecutor>;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
interface IAttributeDomains {
|
|
31
|
+
export interface IAttributeDomains {
|
|
36
32
|
[attributeName: string]: __esri.CodedValueDomain | __esri.RangeDomain | __esri.InheritedDomain | null;
|
|
37
33
|
}
|
|
38
34
|
|
|
39
|
-
interface IAttributeFormats {
|
|
35
|
+
export interface IAttributeFormats {
|
|
40
36
|
[attributeName: string]: __esri.FieldInfoFormat;
|
|
41
37
|
}
|
|
42
38
|
|
|
43
|
-
interface IAttributeTypes {
|
|
39
|
+
export interface IAttributeTypes {
|
|
44
40
|
[attributeName: string]: string;
|
|
45
41
|
}
|
|
46
42
|
|
|
47
|
-
interface
|
|
43
|
+
export interface ILabelFormat {
|
|
44
|
+
type: "pattern" | "executor" | "unsupported";
|
|
45
|
+
format: string | __esri.ArcadeExecutor | undefined;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface ILayerRelationshipQuery {
|
|
48
49
|
layer: __esri.FeatureLayer;
|
|
49
50
|
relatedQuery: IRelatedFeaturesQuery;
|
|
50
51
|
}
|
|
51
52
|
|
|
52
|
-
interface ILayerRelationshipQueryHash {
|
|
53
|
+
export interface ILayerRelationshipQueryHash {
|
|
53
54
|
[relationshipId: string]: ILayerRelationshipQuery;
|
|
54
55
|
}
|
|
55
56
|
|
|
@@ -66,8 +67,39 @@ interface IRelatedFeaturesQuery {
|
|
|
66
67
|
const lineSeparatorChar = "|";
|
|
67
68
|
|
|
68
69
|
//#endregion
|
|
70
|
+
// ------------------------------------------------------------------------------------------------------------------ //
|
|
69
71
|
//#region Public functions
|
|
70
72
|
|
|
73
|
+
/**
|
|
74
|
+
* Create and consolidate labels from all layers
|
|
75
|
+
*
|
|
76
|
+
* @param exportInfos Key details about what to export (ids, layer, and selectionSetNames)
|
|
77
|
+
* @param formatUsingLayerPopup When true, the layer's popup is used to choose attributes for each column; when false,
|
|
78
|
+
* all attributes are exported
|
|
79
|
+
* @param includeHeaderNames Add the label format at the front of the list of generated labels
|
|
80
|
+
* @returns selectionSetNames that will be used for export filenames
|
|
81
|
+
*/
|
|
82
|
+
export async function consolidateLabels(
|
|
83
|
+
exportInfos: IExportInfos,
|
|
84
|
+
formatUsingLayerPopup = true,
|
|
85
|
+
includeHeaderNames = false,
|
|
86
|
+
isCSVExport = false
|
|
87
|
+
): Promise<string[][]> {
|
|
88
|
+
const labelRequests = [];
|
|
89
|
+
|
|
90
|
+
Object.keys(exportInfos).forEach(k => {
|
|
91
|
+
const labelInfo: IExportInfo = exportInfos[k];
|
|
92
|
+
labelRequests.push(_prepareLabels(labelInfo.layerView?.layer || labelInfo.layer, labelInfo.ids, formatUsingLayerPopup, includeHeaderNames));
|
|
93
|
+
if (isCSVExport) {
|
|
94
|
+
// add the layer id as a temp value separator that we can use to split values for CSV export
|
|
95
|
+
labelRequests.push(Promise.resolve([[k]]));
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
const labels = await Promise.all(labelRequests);
|
|
100
|
+
return labels.reduce((prev, cur) => prev.concat(cur), []);
|
|
101
|
+
}
|
|
102
|
+
|
|
71
103
|
/**
|
|
72
104
|
* Downloads csv of mailing labels for the provided list of ids
|
|
73
105
|
*
|
|
@@ -140,59 +172,51 @@ export async function downloadPDF(
|
|
|
140
172
|
return Promise.resolve();
|
|
141
173
|
}
|
|
142
174
|
|
|
143
|
-
//#endregion
|
|
144
|
-
//#region Private functions
|
|
145
|
-
|
|
146
175
|
/**
|
|
147
|
-
*
|
|
176
|
+
* Remove any duplicate labels
|
|
148
177
|
*
|
|
149
|
-
* @param
|
|
150
|
-
* @
|
|
151
|
-
* @return Label spec with lines separated by `lineSeparatorChar`
|
|
178
|
+
* @param labels Labels to evaluate for duplicates
|
|
179
|
+
* @returns labels with duplicates removed
|
|
152
180
|
*/
|
|
153
|
-
export function
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
fieldInfos.forEach(
|
|
161
|
-
fieldInfo => {
|
|
162
|
-
if (fieldInfo.visible || bypassFieldVisiblity) {
|
|
163
|
-
labelSpec.push(`{${fieldInfo.fieldName}}`);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
181
|
+
export function removeDuplicateLabels(
|
|
182
|
+
labels: string[][]
|
|
183
|
+
): string[][] {
|
|
184
|
+
const labelsAsStrings: string[] = labels.map(label => JSON.stringify(label));
|
|
185
|
+
const uniqueLabels = new Set(labelsAsStrings);
|
|
186
|
+
return Array.from(uniqueLabels,
|
|
187
|
+
labelString => JSON.parse(labelString)
|
|
166
188
|
);
|
|
189
|
+
}
|
|
167
190
|
|
|
168
|
-
|
|
169
|
-
|
|
191
|
+
//#endregion
|
|
192
|
+
// ------------------------------------------------------------------------------------------------------------------ //
|
|
193
|
+
//#region Private functions
|
|
170
194
|
|
|
171
195
|
/**
|
|
172
196
|
* Converts the text of a custom popup into a multiline label specification; conversion splits text into
|
|
173
|
-
* lines on <br>s, and removes HTML tags.
|
|
197
|
+
* lines on <br>s, and removes HTML tags.
|
|
174
198
|
*
|
|
175
|
-
* @param
|
|
199
|
+
* @param labelText Layer's popup text, e.g.,
|
|
176
200
|
* "<div style='text-align: left;'>{NAME}<br />{STREET}<br />{CITY}, {STATE} {ZIP} <br /></div>"
|
|
177
|
-
* @return
|
|
201
|
+
* @return Cleaned-up popup text with lines separated by `lineSeparatorChar`
|
|
178
202
|
*/
|
|
179
|
-
export function
|
|
180
|
-
|
|
203
|
+
export function _cleanupLabel(
|
|
204
|
+
labelText: string,
|
|
181
205
|
): string {
|
|
182
206
|
// Replace <br> variants with the line separator character
|
|
183
|
-
|
|
207
|
+
labelText = labelText.replace(/<br\s*\/?>/gi, lineSeparatorChar);
|
|
184
208
|
|
|
185
209
|
// Replace <p> variants with the line separator character, except in the first position
|
|
186
|
-
|
|
210
|
+
labelText = labelText.replace(/<p[^>]*>/gi, lineSeparatorChar).trim().replace(/^\|/, "");
|
|
187
211
|
|
|
188
212
|
// Remove </p>
|
|
189
|
-
|
|
213
|
+
labelText = labelText.replace(/<\/p>/gi, "");
|
|
190
214
|
|
|
191
215
|
// Replace \n with the line separator character
|
|
192
|
-
|
|
216
|
+
labelText = labelText.replace(/\n/gi, "|");
|
|
193
217
|
|
|
194
218
|
// Remove remaining HTML tags, replace 0xA0 that popup uses for spaces, and replace some char representations
|
|
195
|
-
|
|
219
|
+
labelText = labelText
|
|
196
220
|
.replace(/<[\s.]*[^<>]*\/?>/gi, "")
|
|
197
221
|
.replace(/\xA0/gi, " ")
|
|
198
222
|
.replace(/</gi, "<")
|
|
@@ -200,47 +224,75 @@ export function _convertPopupTextToLabelSpec(
|
|
|
200
224
|
.replace(/ /gi, " ");
|
|
201
225
|
|
|
202
226
|
// Trim each line
|
|
203
|
-
|
|
227
|
+
labelText = labelText.replace(/\s*\|\s*/g, "|");
|
|
204
228
|
|
|
205
229
|
// Remove empty lines
|
|
206
|
-
while (
|
|
207
|
-
|
|
230
|
+
while (labelText.match(/\|\|/)) {
|
|
231
|
+
labelText = labelText.replace(/\|\|/, "|");
|
|
208
232
|
}
|
|
209
233
|
|
|
210
234
|
// Remove leading and trailing line feeds
|
|
211
|
-
|
|
212
|
-
|
|
235
|
+
labelText = labelText.replace(/^\|/, "");
|
|
236
|
+
labelText = labelText.replace(/\|$/, "");
|
|
213
237
|
|
|
214
|
-
return
|
|
238
|
+
return labelText;
|
|
215
239
|
};
|
|
216
240
|
|
|
217
241
|
/**
|
|
218
|
-
*
|
|
219
|
-
* referenced expression name.
|
|
242
|
+
* Converts a set of fieldInfos into template lines.
|
|
220
243
|
*
|
|
221
|
-
* @param
|
|
222
|
-
* @param
|
|
223
|
-
* @return
|
|
244
|
+
* @param fieldInfos Layer's fieldInfos structure
|
|
245
|
+
* @param bypassFieldVisiblity Indicates if the configured fieldInfo visibility property should be ignored
|
|
246
|
+
* @return "pattern" label spec with lines separated by `lineSeparatorChar`
|
|
224
247
|
*/
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
):
|
|
229
|
-
const
|
|
248
|
+
export function _convertPopupFieldsToLabelSpec(
|
|
249
|
+
fieldInfos: __esri.FieldInfo[],
|
|
250
|
+
bypassFieldVisiblity = false
|
|
251
|
+
): ILabelFormat {
|
|
252
|
+
const labelSpec: string[] = [];
|
|
230
253
|
|
|
231
|
-
//
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
254
|
+
// Every visible attribute is used
|
|
255
|
+
fieldInfos.forEach(
|
|
256
|
+
fieldInfo => {
|
|
257
|
+
if (fieldInfo.visible || bypassFieldVisiblity) {
|
|
258
|
+
labelSpec.push(`{${fieldInfo.fieldName}}`);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
);
|
|
235
262
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
263
|
+
return {
|
|
264
|
+
type: "pattern",
|
|
265
|
+
format: labelSpec.join(lineSeparatorChar)
|
|
266
|
+
} as ILabelFormat;
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Converts the text of a custom popup into a multiline label specification; conversion splits text into
|
|
271
|
+
* lines on <br>s, and removes HTML tags. It does not handle Arcade and related records.
|
|
272
|
+
*
|
|
273
|
+
* @param labelText Layer's labelText structure containing description, fieldInfos, and expressionInfos, e.g.,
|
|
274
|
+
* "<div style='text-align: left;'>{NAME}<br />{STREET}<br />{CITY}, {STATE} {ZIP} <br /></div>"
|
|
275
|
+
* @return "pattern" label spec with lines separated by `lineSeparatorChar`
|
|
276
|
+
*/
|
|
277
|
+
export function _convertPopupTextToLabelSpec(
|
|
278
|
+
popupInfo: string,
|
|
279
|
+
): ILabelFormat {
|
|
280
|
+
return {
|
|
281
|
+
type: "pattern",
|
|
282
|
+
format: _cleanupLabel(popupInfo)
|
|
283
|
+
} as ILabelFormat;
|
|
284
|
+
};
|
|
242
285
|
|
|
243
|
-
|
|
286
|
+
/**
|
|
287
|
+
* Converts an Arcade expression of a custom popup into a multiline label specification.
|
|
288
|
+
*
|
|
289
|
+
* @param expressionInfo Structure containing expression and info about it
|
|
290
|
+
* @return Promise resolving to an "executor" label spec
|
|
291
|
+
*/
|
|
292
|
+
export async function _convertPopupArcadeToLabelSpec(
|
|
293
|
+
expressionInfo: __esri.ElementExpressionInfo
|
|
294
|
+
): Promise<ILabelFormat> {
|
|
295
|
+
// Generate an Arcade executor
|
|
244
296
|
const [arcade] = await loadModules(["esri/arcade"]);
|
|
245
297
|
const labelingProfile: __esri.Profile = {
|
|
246
298
|
variables: [
|
|
@@ -262,36 +314,12 @@ async function _createArcadeExecutors(
|
|
|
262
314
|
}
|
|
263
315
|
]
|
|
264
316
|
};
|
|
317
|
+
const executor = await arcade.createArcadeExecutor(expressionInfo.expression, labelingProfile);
|
|
265
318
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
(layer.popupTemplate.expressionInfos || []).forEach(
|
|
272
|
-
expressionInfo => {
|
|
273
|
-
if (expressionInfo.name === expressionName) {
|
|
274
|
-
createArcadeExecutorPromises[expressionName] =
|
|
275
|
-
arcade.createArcadeExecutor(expressionInfo.expression, labelingProfile);
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
);
|
|
279
|
-
}
|
|
280
|
-
);
|
|
281
|
-
|
|
282
|
-
const promises = Object.values(createArcadeExecutorPromises);
|
|
283
|
-
return Promise.all(promises)
|
|
284
|
-
.then(
|
|
285
|
-
executors => {
|
|
286
|
-
const expressionNames = Object.keys(createArcadeExecutorPromises);
|
|
287
|
-
|
|
288
|
-
for (let i = 0; i < expressionNames.length; ++i) {
|
|
289
|
-
arcadeExecutors[expressionNames[i]] = executors[i].valueOf() as __esri.ArcadeExecutor;
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
return arcadeExecutors;
|
|
293
|
-
}
|
|
294
|
-
);
|
|
319
|
+
return Promise.resolve({
|
|
320
|
+
type: "executor",
|
|
321
|
+
format: executor
|
|
322
|
+
} as ILabelFormat);
|
|
295
323
|
}
|
|
296
324
|
|
|
297
325
|
/**
|
|
@@ -349,12 +377,12 @@ export function _createRelationshipQueries(
|
|
|
349
377
|
|
|
350
378
|
/**
|
|
351
379
|
* Extracts Arcade expression references from the lines of a label format.
|
|
352
|
-
*
|
|
380
|
+
*
|
|
353
381
|
* @param labelFormat Label to examine
|
|
354
382
|
* @return Array of Arcade expression references, e.g., ["{expression/expr1}", "{expression/expr2}"]
|
|
355
383
|
*/
|
|
356
384
|
export function _getExpressionsFromLabel(
|
|
357
|
-
labelFormat: string
|
|
385
|
+
labelFormat: string
|
|
358
386
|
): string[] {
|
|
359
387
|
const arcadeExpressionRegExp = /\{expression\/\w+\}/g;
|
|
360
388
|
return labelFormat.match(arcadeExpressionRegExp) ?? [];
|
|
@@ -362,11 +390,11 @@ export function _getExpressionsFromLabel(
|
|
|
362
390
|
|
|
363
391
|
/**
|
|
364
392
|
* Extracts field name expressions from the lines of a label format.
|
|
365
|
-
*
|
|
393
|
+
*
|
|
366
394
|
* @param labelFormat Label to examine
|
|
367
395
|
* @returns Array of field name expressions, e.g., ["{NAME}", "{STREET}", "{CITY}", "{STATE}", "{ZIP}"]
|
|
368
396
|
*/
|
|
369
|
-
export function
|
|
397
|
+
export function _getFieldExpressionsFromLabel(
|
|
370
398
|
labelFormat: string
|
|
371
399
|
): string[] {
|
|
372
400
|
// Get all fields
|
|
@@ -390,6 +418,99 @@ export function _getFieldsFromLabel(
|
|
|
390
418
|
return fieldExpressions.filter(fieldExpression => arcadeExpressions.indexOf(fieldExpression) < 0);
|
|
391
419
|
}
|
|
392
420
|
|
|
421
|
+
/**
|
|
422
|
+
* Extracts field names from field name expressions.
|
|
423
|
+
*
|
|
424
|
+
* @param fieldExpressions Array of field name expressions, e.g., ["{NAME}", "{STREET}", "{CITY}", "{STATE}", "{ZIP}"]
|
|
425
|
+
* @returns Array of field names, e.g., ["NAME", "STREET", "CITY", "STATE", "ZIP"]
|
|
426
|
+
*/
|
|
427
|
+
export function _getFieldNamesFromFieldExpressions(
|
|
428
|
+
fieldExpressions: string[]
|
|
429
|
+
): string[] {
|
|
430
|
+
return fieldExpressions.map(
|
|
431
|
+
expr => expr.substring(1, expr.length - 1)
|
|
432
|
+
)
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
/**
|
|
436
|
+
* Extracts the label format from the layer.
|
|
437
|
+
*
|
|
438
|
+
* @param layer Layer with label format
|
|
439
|
+
* @param formatUsingLayerPopup When true, the layer's popup is used to choose attributes for each column; when false,
|
|
440
|
+
* all attributes are exported
|
|
441
|
+
* @param attributeFormats Empty object to hold the formats for each attribute in a feature; the object is filled
|
|
442
|
+
* with formats by this function
|
|
443
|
+
* @returns A Promise resolving to the format of a single label with fields coerced to lowercase, e.g.,
|
|
444
|
+
* for ILabelFormat type "pattern": "{name}|{street}|{city}, {state} {zip}"
|
|
445
|
+
*/
|
|
446
|
+
export async function _getLabelFormat(
|
|
447
|
+
layer: __esri.FeatureLayer,
|
|
448
|
+
formatUsingLayerPopup: boolean,
|
|
449
|
+
attributeFormats: IAttributeFormats
|
|
450
|
+
): Promise<ILabelFormat> {
|
|
451
|
+
let labelFormat: ILabelFormat = {
|
|
452
|
+
type: "unsupported",
|
|
453
|
+
format: undefined
|
|
454
|
+
};
|
|
455
|
+
|
|
456
|
+
if (layer.popupEnabled) {
|
|
457
|
+
layer.popupTemplate.fieldInfos.forEach(
|
|
458
|
+
// Extract any format info that we have
|
|
459
|
+
fieldInfo => {
|
|
460
|
+
if (fieldInfo.format) {
|
|
461
|
+
attributeFormats[fieldInfo.fieldName.toLowerCase()] = fieldInfo.format;
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
);
|
|
465
|
+
|
|
466
|
+
// What is the nature of the label content?
|
|
467
|
+
// Fields list
|
|
468
|
+
if (formatUsingLayerPopup && layer.popupTemplate?.content[0]?.type === "fields") {
|
|
469
|
+
labelFormat = _convertPopupFieldsToLabelSpec(layer.popupTemplate.fieldInfos);
|
|
470
|
+
|
|
471
|
+
// If popup is configured with "no attribute information", then no fields will visible
|
|
472
|
+
if ((labelFormat.format as string).length === 0) {
|
|
473
|
+
// Can we use the popup title?
|
|
474
|
+
labelFormat = layer.popupTemplate.title && typeof layer.popupTemplate.title === "string" ?
|
|
475
|
+
{ type: "pattern", format: layer.popupTemplate.title } as ILabelFormat
|
|
476
|
+
:
|
|
477
|
+
// Otherwise revert to using attributes
|
|
478
|
+
_convertPopupFieldsToLabelSpec(layer.popupTemplate.fieldInfos, true);
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
// Example text: '<p>{name} {age} years </p><p>started: {start}</p>'
|
|
482
|
+
} else if (formatUsingLayerPopup && layer.popupTemplate?.content[0]?.type === "text") {
|
|
483
|
+
labelFormat = _convertPopupTextToLabelSpec(layer.popupTemplate.content[0].text);
|
|
484
|
+
|
|
485
|
+
// Example 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}',
|
|
486
|
+
} else if (formatUsingLayerPopup && layer.popupTemplate?.content[0]?.type === "expression") {
|
|
487
|
+
labelFormat = await _convertPopupArcadeToLabelSpec(layer.popupTemplate.content[0].expressionInfo);
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
return Promise.resolve(labelFormat);
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
/**
|
|
495
|
+
* Extract selectionSetNames from the provided exportInfos
|
|
496
|
+
*
|
|
497
|
+
* @param exportInfos Key details about what to export (ids, layer, and selectionSetNames)
|
|
498
|
+
* @returns selectionSetNames that will be used for export filenames
|
|
499
|
+
*/
|
|
500
|
+
export function _getSelectionSetNames(
|
|
501
|
+
exportInfos: IExportInfos,
|
|
502
|
+
id = /.+/
|
|
503
|
+
): string[] {
|
|
504
|
+
let selectionSetNames: string[] = [];
|
|
505
|
+
Object.keys(exportInfos).forEach(k => {
|
|
506
|
+
const exportInfo: IExportInfo = exportInfos[k];
|
|
507
|
+
if (id.test(k)) {
|
|
508
|
+
selectionSetNames = selectionSetNames.concat(exportInfo.selectionSetNames);
|
|
509
|
+
}
|
|
510
|
+
});
|
|
511
|
+
return selectionSetNames;
|
|
512
|
+
}
|
|
513
|
+
|
|
393
514
|
/**
|
|
394
515
|
* Prepares an attribute's value by applying domain and type information.
|
|
395
516
|
*
|
|
@@ -398,19 +519,23 @@ export function _getFieldsFromLabel(
|
|
|
398
519
|
* @param attributeDomain Domain info for attribute, if any
|
|
399
520
|
* @param attributeFormat Format info for attribute, if any
|
|
400
521
|
* @param intl esri/intl
|
|
401
|
-
* @return Attribute value modified appropriate to domain and type
|
|
522
|
+
* @return Attribute value modified appropriate to domain and type and converted to a string
|
|
402
523
|
*/
|
|
403
|
-
function _prepareAttributeValue(
|
|
524
|
+
export function _prepareAttributeValue(
|
|
404
525
|
attributeValue: any,
|
|
405
526
|
attributeType: string,
|
|
406
527
|
attributeDomain: __esri.CodedValueDomain | __esri.RangeDomain | __esri.InheritedDomain | null,
|
|
407
528
|
attributeFormat: __esri.FieldInfoFormat,
|
|
408
529
|
intl: any
|
|
409
|
-
):
|
|
530
|
+
): string {
|
|
531
|
+
if (attributeValue === null || typeof attributeValue === "undefined") {
|
|
532
|
+
return "";
|
|
533
|
+
}
|
|
534
|
+
|
|
410
535
|
if (attributeDomain && (attributeDomain as __esri.CodedValueDomain).type === "coded-value") {
|
|
411
536
|
// "coded-value" domain field
|
|
412
537
|
const value = (attributeDomain as __esri.CodedValueDomain).getName(attributeValue);
|
|
413
|
-
return value;
|
|
538
|
+
return value.toString();
|
|
414
539
|
} else {
|
|
415
540
|
// Non-domain field or unsupported domain type
|
|
416
541
|
let value = attributeValue;
|
|
@@ -418,7 +543,7 @@ function _prepareAttributeValue(
|
|
|
418
543
|
switch (attributeType) {
|
|
419
544
|
case "date":
|
|
420
545
|
if (attributeFormat?.dateFormat) {
|
|
421
|
-
const dateFormatIntlOptions = intl.convertDateFormatToIntlOptions(attributeFormat.dateFormat);
|
|
546
|
+
const dateFormatIntlOptions = intl.convertDateFormatToIntlOptions(attributeFormat.dateFormat as any);
|
|
422
547
|
value = intl.formatDate(value, dateFormatIntlOptions);
|
|
423
548
|
} else {
|
|
424
549
|
value = intl.formatDate(value);
|
|
@@ -455,199 +580,85 @@ function _prepareAttributeValue(
|
|
|
455
580
|
* @param includeHeaderNames Add the label format at the front of the list of generated labels
|
|
456
581
|
* @returns Promise resolving when function is done
|
|
457
582
|
*/
|
|
458
|
-
async function _prepareLabels(
|
|
583
|
+
export async function _prepareLabels(
|
|
459
584
|
layer: __esri.FeatureLayer,
|
|
460
585
|
ids: number[],
|
|
461
586
|
formatUsingLayerPopup = true,
|
|
462
587
|
includeHeaderNames = false
|
|
463
588
|
): Promise<string[][]> {
|
|
464
|
-
const [intl] = await loadModules(["esri/intl"]);
|
|
465
|
-
|
|
466
589
|
// Get the features to export
|
|
467
590
|
const featureSet = await queryFeaturesByID(ids, layer, [], false);
|
|
468
591
|
|
|
469
592
|
// Get field data types. Do we have any domain-based fields?
|
|
593
|
+
const attributeOrigNames: IAttributeOrigNames = {};
|
|
470
594
|
const attributeTypes: IAttributeTypes = {};
|
|
471
595
|
const attributeDomains: IAttributeDomains = {};
|
|
472
596
|
layer.fields.forEach(
|
|
473
597
|
field => {
|
|
474
|
-
|
|
475
|
-
|
|
598
|
+
const lowercaseFieldname = field.name.toLowerCase();
|
|
599
|
+
attributeOrigNames[lowercaseFieldname] = field.name;
|
|
600
|
+
attributeDomains[lowercaseFieldname] = field.domain;
|
|
601
|
+
attributeTypes[lowercaseFieldname] = field.type;
|
|
476
602
|
}
|
|
477
603
|
);
|
|
478
604
|
const attributeFormats: IAttributeFormats = {};
|
|
479
605
|
|
|
480
606
|
// Get the label formatting, if any
|
|
481
|
-
|
|
482
|
-
let relationshipQueries: ILayerRelationshipQueryHash = {};
|
|
483
|
-
let arcadeExecutors: IArcadeExecutors = {};
|
|
484
|
-
if (layer.popupEnabled) {
|
|
485
|
-
layer.popupTemplate.fieldInfos.forEach(
|
|
486
|
-
// Extract any format info that we have
|
|
487
|
-
fieldInfo => {
|
|
488
|
-
if (fieldInfo.format) {
|
|
489
|
-
attributeFormats[fieldInfo.fieldName] = fieldInfo.format;
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
);
|
|
493
|
-
|
|
494
|
-
// What data fields are used in the labels?
|
|
495
|
-
// Example labelFormat: ['{NAME}', '{STREET}', '{CITY}, {STATE} {ZIP}']
|
|
496
|
-
if (formatUsingLayerPopup && layer.popupTemplate?.content[0]?.type === "fields") {
|
|
497
|
-
labelFormat = _convertPopupFieldsToLabelSpec(layer.popupTemplate.fieldInfos);
|
|
498
|
-
|
|
499
|
-
// If popup is configured with "no attribute information", then no fields will visible
|
|
500
|
-
if (labelFormat.length === 0) {
|
|
501
|
-
// Can we use the popup title?
|
|
502
|
-
// eslint-disable-next-line unicorn/prefer-ternary
|
|
503
|
-
if (typeof layer.popupTemplate.title === "string") {
|
|
504
|
-
labelFormat = layer.popupTemplate.title;
|
|
505
|
-
|
|
506
|
-
// Otherwise revert to using attributes
|
|
507
|
-
} else {
|
|
508
|
-
labelFormat = _convertPopupFieldsToLabelSpec(layer.popupTemplate.fieldInfos, true);
|
|
509
|
-
}
|
|
510
|
-
}
|
|
511
|
-
|
|
512
|
-
} else if (formatUsingLayerPopup && layer.popupTemplate?.content[0]?.type === "text") {
|
|
513
|
-
labelFormat = _convertPopupTextToLabelSpec(layer.popupTemplate.content[0].text);
|
|
514
|
-
|
|
515
|
-
// Do we need any relationship queries?
|
|
516
|
-
relationshipQueries = _createRelationshipQueries(layer);
|
|
517
|
-
|
|
518
|
-
// Do we need any Arcade executors?
|
|
519
|
-
arcadeExecutors = await _createArcadeExecutors(labelFormat, layer);
|
|
520
|
-
}
|
|
521
|
-
}
|
|
607
|
+
const labelFormat: ILabelFormat = await _getLabelFormat(layer, formatUsingLayerPopup, attributeFormats);
|
|
522
608
|
|
|
523
609
|
// Apply the label format
|
|
524
|
-
|
|
525
|
-
// eslint-disable-next-line unicorn/prefer-ternary
|
|
526
|
-
if (labelFormat) {
|
|
527
|
-
// Find the label fields that we need to replace with values
|
|
528
|
-
const arcadeExpressionMatches = _getExpressionsFromLabel(labelFormat);
|
|
529
|
-
const attributeMatches = _getFieldsFromLabel(labelFormat);
|
|
530
|
-
|
|
531
|
-
// Convert feature attributes into an array of labels
|
|
532
|
-
const relationshipKeys = Object.keys(relationshipQueries);
|
|
533
|
-
labels = await Promise.all(featureSet.map(
|
|
534
|
-
async feature => {
|
|
535
|
-
let labelPrep = labelFormat;
|
|
536
|
-
|
|
537
|
-
// Replace Arcade expressions in this feature
|
|
538
|
-
arcadeExpressionMatches.forEach(
|
|
539
|
-
(match: string) => {
|
|
540
|
-
const expressionName = match.substring(match.indexOf("/") + 1, match.length - 1);
|
|
541
|
-
const value = arcadeExecutors[expressionName].execute({"$feature": feature});
|
|
542
|
-
labelPrep = labelPrep.replace(match, value);
|
|
543
|
-
}
|
|
544
|
-
)
|
|
545
|
-
|
|
546
|
-
// Replace relationship expressions in this feature
|
|
547
|
-
const relatedFeatureQueries = [] as Promise<__esri.FeatureSet>[];
|
|
548
|
-
const relationshipIds = [] as string[];
|
|
549
|
-
relationshipKeys.forEach(
|
|
550
|
-
(relationshipId) => {
|
|
551
|
-
const relationship = relationshipQueries[relationshipId];
|
|
552
|
-
const objectId = feature.attributes[relationship.layer.objectIdField];
|
|
553
|
-
const relatedQuery = {
|
|
554
|
-
...relationship.relatedQuery,
|
|
555
|
-
objectIds: [objectId]
|
|
556
|
-
};
|
|
557
|
-
relatedFeatureQueries.push(relationship.layer.queryRelatedFeatures(relatedQuery as any));
|
|
558
|
-
relationshipIds.push(relationshipId);
|
|
559
|
-
}
|
|
560
|
-
);
|
|
561
|
-
|
|
562
|
-
// Wait for all of the queries for related records for this label
|
|
563
|
-
const relatedFeatureQueryResults = await Promise.all(relatedFeatureQueries);
|
|
564
|
-
relatedFeatureQueryResults.forEach(
|
|
565
|
-
(relatedFeatureQueryResult, i) => {
|
|
566
|
-
// We have an object with FeatureSets grouped by source layer or table objectIds
|
|
567
|
-
const relationshipId = relationshipIds[i];
|
|
568
|
-
|
|
569
|
-
// Run through the source layer or table objectIds
|
|
570
|
-
Object.keys(relatedFeatureQueryResult).forEach(
|
|
571
|
-
relatedFeatureSetId => {
|
|
572
|
-
// We have a feature set
|
|
573
|
-
const relatedFeatures = relatedFeatureQueryResult[relatedFeatureSetId].features;
|
|
574
|
-
|
|
575
|
-
// Get the values from each feature and replace them in the label
|
|
576
|
-
relatedFeatures.forEach(
|
|
577
|
-
feature => {
|
|
578
|
-
// Merge the base and related feature attributes and create the label
|
|
579
|
-
// Prefix related feature's attributes with "relationships/<id>/" to match popup
|
|
580
|
-
const rePrefix = "\{relationships/" + relationshipId + "/";
|
|
581
|
-
const reSuffix = "\}";
|
|
582
|
-
|
|
583
|
-
const attributes = feature.attributes;
|
|
584
|
-
Object.keys(attributes).forEach(
|
|
585
|
-
attributeName => {
|
|
586
|
-
// Replace the value using the attribute name as a relationship
|
|
587
|
-
const attributeRelationshipRegExp = new RegExp(rePrefix + attributeName + reSuffix, "g");
|
|
588
|
-
labelPrep = labelPrep.replaceAll(attributeRelationshipRegExp, attributes[attributeName]);
|
|
589
|
-
}
|
|
590
|
-
);
|
|
591
|
-
}
|
|
592
|
-
);
|
|
593
|
-
}
|
|
594
|
-
);
|
|
595
|
-
}
|
|
596
|
-
);
|
|
597
|
-
|
|
598
|
-
// Replace non-Arcade fields in this feature
|
|
599
|
-
attributeMatches.forEach(
|
|
600
|
-
(match: string) => {
|
|
601
|
-
const attributeName = match.substring(1, match.length - 1);
|
|
602
|
-
|
|
603
|
-
const value = _prepareAttributeValue(feature.attributes[attributeName],
|
|
604
|
-
attributeTypes[attributeName], attributeDomains[attributeName],
|
|
605
|
-
attributeFormats[attributeName], intl);
|
|
606
|
-
labelPrep = labelPrep.replace(match, value);
|
|
607
|
-
|
|
608
|
-
}
|
|
609
|
-
)
|
|
610
|
-
|
|
611
|
-
// Split label into lines
|
|
612
|
-
let label = labelPrep.split(lineSeparatorChar);
|
|
613
|
-
|
|
614
|
-
// Trim lines
|
|
615
|
-
label = label.map(line => line.trim());
|
|
616
|
-
|
|
617
|
-
return label;
|
|
618
|
-
}
|
|
619
|
-
));
|
|
620
|
-
|
|
621
|
-
} else {
|
|
610
|
+
const labels = labelFormat.type === "unsupported" ?
|
|
622
611
|
// Export all attributes
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
}
|
|
632
|
-
);
|
|
633
|
-
}
|
|
634
|
-
);
|
|
635
|
-
}
|
|
612
|
+
await _prepareLabelsFromAll(featureSet, attributeTypes, attributeDomains, includeHeaderNames)
|
|
613
|
+
: labelFormat.type == "pattern" ?
|
|
614
|
+
// Export attributes in format
|
|
615
|
+
await _prepareLabelsFromPattern(featureSet, attributeOrigNames, attributeTypes, attributeDomains,
|
|
616
|
+
attributeFormats, labelFormat.format as string, includeHeaderNames)
|
|
617
|
+
:
|
|
618
|
+
// Export attributes in expression
|
|
619
|
+
await _prepareLabelsUsingExecutor(featureSet, labelFormat.format as __esri.ArcadeExecutor);
|
|
636
620
|
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
let headerNames = [];
|
|
621
|
+
return Promise.resolve(labels);
|
|
622
|
+
}
|
|
640
623
|
|
|
641
|
-
|
|
642
|
-
|
|
624
|
+
/**
|
|
625
|
+
* Creates labels from all attributes in items.
|
|
626
|
+
*
|
|
627
|
+
* @param featureSet Features to convert to labels
|
|
628
|
+
* @param attributeTypes Type for each attribute in a feature
|
|
629
|
+
* @param attributeDomains Domains for each attribute in a feature
|
|
630
|
+
* @param includeHeaderNames Add the label format at the front of the list of generated labels
|
|
631
|
+
* @returns Promise resolving with list of labels, each of which is a list of label lines
|
|
632
|
+
*/
|
|
633
|
+
export async function _prepareLabelsFromAll(
|
|
634
|
+
featureSet: __esri.Graphic[],
|
|
635
|
+
attributeTypes: IAttributeTypes,
|
|
636
|
+
attributeDomains: IAttributeDomains,
|
|
637
|
+
includeHeaderNames = false
|
|
638
|
+
): Promise<string[][]> {
|
|
639
|
+
const [intl] = await loadModules(["esri/intl"]);
|
|
643
640
|
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
641
|
+
// Export all attributes
|
|
642
|
+
const labels = featureSet.map(
|
|
643
|
+
feature => {
|
|
644
|
+
return Object.keys(feature.attributes).map(
|
|
645
|
+
(attributeName: string) => {
|
|
646
|
+
const lowercaseFieldname = attributeName.toLowerCase();
|
|
647
|
+
return _prepareAttributeValue(feature.attributes[attributeName],
|
|
648
|
+
attributeTypes[lowercaseFieldname], attributeDomains[lowercaseFieldname],
|
|
649
|
+
null, intl);
|
|
650
|
+
}
|
|
651
|
+
);
|
|
649
652
|
}
|
|
653
|
+
);
|
|
650
654
|
|
|
655
|
+
// Add header names
|
|
656
|
+
if (includeHeaderNames) {
|
|
657
|
+
const headerNames = [];
|
|
658
|
+
const featuresAttrs = featureSet[0].attributes;
|
|
659
|
+
Object.keys(featuresAttrs).forEach(k => {
|
|
660
|
+
headerNames.push(k);
|
|
661
|
+
});
|
|
651
662
|
labels.unshift(headerNames);
|
|
652
663
|
}
|
|
653
664
|
|
|
@@ -655,69 +666,90 @@ async function _prepareLabels(
|
|
|
655
666
|
}
|
|
656
667
|
|
|
657
668
|
/**
|
|
658
|
-
*
|
|
669
|
+
* Creates labels from attributes in a layer popup.
|
|
659
670
|
*
|
|
660
|
-
* @param
|
|
661
|
-
* @
|
|
671
|
+
* @param featureSet Features to convert to labels
|
|
672
|
+
* @param attributeOrigNames Mapping from lowercase field names to original field names
|
|
673
|
+
* @param attributeTypes Type for each attribute in a feature
|
|
674
|
+
* @param attributeDomains Domains for each attribute in a feature
|
|
675
|
+
* @param attributeFormats Formats for each attribute in a feature
|
|
676
|
+
* @param labelFormat Format for label
|
|
677
|
+
* @param includeHeaderNames Add the label format at the front of the list of generated labels
|
|
678
|
+
* @returns Promise resolving with list of labels, each of which is a list of label lines
|
|
662
679
|
*/
|
|
663
|
-
export function
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
680
|
+
export async function _prepareLabelsFromPattern(
|
|
681
|
+
featureSet: __esri.Graphic[],
|
|
682
|
+
attributeOrigNames: IAttributeOrigNames,
|
|
683
|
+
attributeTypes: IAttributeTypes,
|
|
684
|
+
attributeDomains: IAttributeDomains,
|
|
685
|
+
attributeFormats: IAttributeFormats,
|
|
686
|
+
labelFormat: string,
|
|
687
|
+
includeHeaderNames = false
|
|
688
|
+
): Promise<string[][]> {
|
|
689
|
+
const [intl] = await loadModules(["esri/intl"]);
|
|
672
690
|
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
691
|
+
// Find the label fields that we need to replace with values
|
|
692
|
+
const attributeExpressionMatches = _getFieldExpressionsFromLabel(labelFormat);
|
|
693
|
+
const attributeNames = _getFieldNamesFromFieldExpressions(attributeExpressionMatches);
|
|
694
|
+
|
|
695
|
+
// Convert feature attributes into an array of labels
|
|
696
|
+
const labels = await Promise.all(featureSet.map(
|
|
697
|
+
async feature => {
|
|
698
|
+
let labelPrep = labelFormat;
|
|
699
|
+
|
|
700
|
+
// Replace non-Arcade fields in this feature
|
|
701
|
+
attributeNames.forEach(
|
|
702
|
+
(attributeName: string, i: number) => {
|
|
703
|
+
const lowercaseFieldname = attributeName.toLowerCase();
|
|
704
|
+
const value = _prepareAttributeValue(feature.attributes[attributeOrigNames[lowercaseFieldname]],
|
|
705
|
+
attributeTypes[lowercaseFieldname], attributeDomains[lowercaseFieldname],
|
|
706
|
+
attributeFormats[lowercaseFieldname], intl);
|
|
707
|
+
labelPrep = labelPrep.replace(attributeExpressionMatches[i], value);
|
|
708
|
+
|
|
709
|
+
},
|
|
710
|
+
)
|
|
711
|
+
|
|
712
|
+
// Split label into lines
|
|
713
|
+
let label = labelPrep.split(lineSeparatorChar);
|
|
714
|
+
|
|
715
|
+
// Trim lines
|
|
716
|
+
label = label.map(line => _cleanupLabel(line));
|
|
717
|
+
|
|
718
|
+
return label;
|
|
688
719
|
}
|
|
689
|
-
|
|
690
|
-
|
|
720
|
+
));
|
|
721
|
+
|
|
722
|
+
// Add header names
|
|
723
|
+
if (includeHeaderNames) {
|
|
724
|
+
labels.unshift(attributeNames);
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
return Promise.resolve(labels);
|
|
691
728
|
}
|
|
692
729
|
|
|
693
730
|
/**
|
|
694
|
-
*
|
|
731
|
+
* Creates labels from attributes in an Arcade label.
|
|
695
732
|
*
|
|
696
|
-
* @param
|
|
697
|
-
* @param
|
|
698
|
-
*
|
|
699
|
-
* @param includeHeaderNames Add the label format at the front of the list of generated labels
|
|
700
|
-
* @returns selectionSetNames that will be used for export filenames
|
|
733
|
+
* @param featureSet Features to convert to labels
|
|
734
|
+
* @param labelFormat Arcade executor for label
|
|
735
|
+
* @returns Promise resolving with list of labels, each of which is a list of label lines
|
|
701
736
|
*/
|
|
702
|
-
export async function
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
includeHeaderNames = false,
|
|
706
|
-
isCSVExport = false
|
|
737
|
+
export async function _prepareLabelsUsingExecutor(
|
|
738
|
+
featureSet: __esri.Graphic[],
|
|
739
|
+
labelFormat: __esri.ArcadeExecutor
|
|
707
740
|
): Promise<string[][]> {
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
labelRequests.push(_prepareLabels(labelInfo.layerView?.layer || labelInfo.layer, labelInfo.ids, formatUsingLayerPopup, includeHeaderNames));
|
|
713
|
-
if (isCSVExport) {
|
|
714
|
-
// add the layer id as a temp value separator that we can use to split values for CSV export
|
|
715
|
-
labelRequests.push(Promise.resolve([[k]]));
|
|
741
|
+
// Convert feature attributes into an array of labels
|
|
742
|
+
const execResults = await Promise.all(featureSet.map(
|
|
743
|
+
async feature => {
|
|
744
|
+
return labelFormat.executeAsync({"$feature": feature});
|
|
716
745
|
}
|
|
717
|
-
|
|
746
|
+
));
|
|
718
747
|
|
|
719
|
-
const labels =
|
|
720
|
-
|
|
748
|
+
const labels = execResults.map(
|
|
749
|
+
result => _cleanupLabel(result.text).split(lineSeparatorChar)
|
|
750
|
+
)
|
|
751
|
+
|
|
752
|
+
return Promise.resolve(labels);
|
|
721
753
|
}
|
|
722
754
|
|
|
723
755
|
//#endregion
|