@esri/solutions-components 0.6.8 → 0.6.10
Sign up to get free protection for your applications and to get access to all the features.
- 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
|