@esri/solutions-components 0.6.8 → 0.6.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/t9n/info-card/resources.json +1 -1
- package/dist/assets/t9n/info-card/resources_en.json +1 -1
- package/dist/assets/t9n/map-tools/resources.json +1 -1
- package/dist/assets/t9n/map-tools/resources_en.json +1 -1
- 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} +115 -6
- 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} +47 -93
- package/dist/cjs/{conditionalSlot-85b3a6b3.js → conditionalSlot-126d557f.js} +2 -2
- package/dist/cjs/crowdsource-manager.cjs.entry.js +23 -11
- 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-1f057ec0.js} +249 -262
- package/dist/cjs/edit-card_2.cjs.entry.js +6 -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-a1507f1c.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/crowdsource-manager/crowdsource-manager.js +22 -28
- package/dist/collection/components/info-card/info-card.css +14 -0
- package/dist/collection/components/info-card/info-card.js +3 -2
- package/dist/collection/components/layer-table/layer-table.js +60 -9
- package/dist/collection/components/map-card/map-card.js +10 -6
- 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-tools/map-tools.js +25 -4
- package/dist/collection/demos/crowdsource-manager.html +26 -1
- package/dist/collection/utils/downloadUtils.js +250 -230
- package/dist/collection/utils/downloadUtils.ts +347 -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 +5 -5
- 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 +29 -18
- 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 +247 -260
- 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 +9 -8
- 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 +40 -9
- 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 +46 -37
- 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-tools2.js +47 -22
- 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} +115 -7
- 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} +48 -93
- package/dist/esm/{conditionalSlot-27a0fce0.js → conditionalSlot-55a14abd.js} +2 -2
- package/dist/esm/crowdsource-manager.entry.js +23 -11
- 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-64c27514.js} +249 -262
- package/dist/esm/edit-card_2.entry.js +6 -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-b7bc2db1.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-0dce2c3b.entry.js +6 -0
- 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-7c33e500.entry.js → p-12f06497.entry.js} +1 -1
- 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-1ea1dcac.js → p-22d06238.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-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-7b90c18e.entry.js → p-476eb52c.entry.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-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-8b8a6c1f.entry.js +6 -0
- 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-a777b18c.js → p-96239d0d.js} +2 -2
- package/dist/solutions-components/p-97a4001d.entry.js +6 -0
- 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-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-75f26870.js → p-a26dc184.js} +13 -13
- 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-5e59219b.entry.js → p-b2a52acb.entry.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-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-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-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 +347 -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 +11 -4
- package/dist/types/components/layer-table/layer-table.d.ts +14 -2
- package/dist/types/components/map-card/map-card.d.ts +2 -2
- package/dist/types/components/map-legend/map-legend.d.ts +64 -0
- package/dist/types/components/map-tools/map-tools.d.ts +13 -1
- package/dist/types/components.d.ts +40 -11
- package/dist/types/preact.d.ts +2 -0
- package/dist/types/utils/downloadUtils.d.ts +122 -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-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,29 @@ import { IExportInfo, IExportInfos } from "../utils/interfaces";
|
|
|
24
24
|
|
|
25
25
|
export { ILabel } from "./pdfUtils";
|
|
26
26
|
|
|
27
|
-
interface
|
|
28
|
-
[expressionName: string]: __esri.ArcadeExecutor;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
interface IArcadeExecutorPromises {
|
|
32
|
-
[expressionName: string]: Promise<__esri.ArcadeExecutor>;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
interface IAttributeDomains {
|
|
27
|
+
export interface IAttributeDomains {
|
|
36
28
|
[attributeName: string]: __esri.CodedValueDomain | __esri.RangeDomain | __esri.InheritedDomain | null;
|
|
37
29
|
}
|
|
38
30
|
|
|
39
|
-
interface IAttributeFormats {
|
|
31
|
+
export interface IAttributeFormats {
|
|
40
32
|
[attributeName: string]: __esri.FieldInfoFormat;
|
|
41
33
|
}
|
|
42
34
|
|
|
43
|
-
interface IAttributeTypes {
|
|
35
|
+
export interface IAttributeTypes {
|
|
44
36
|
[attributeName: string]: string;
|
|
45
37
|
}
|
|
46
38
|
|
|
47
|
-
interface
|
|
39
|
+
export interface ILabelFormat {
|
|
40
|
+
type: "pattern" | "executor" | "unsupported";
|
|
41
|
+
format: string | __esri.ArcadeExecutor | undefined;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface ILayerRelationshipQuery {
|
|
48
45
|
layer: __esri.FeatureLayer;
|
|
49
46
|
relatedQuery: IRelatedFeaturesQuery;
|
|
50
47
|
}
|
|
51
48
|
|
|
52
|
-
interface ILayerRelationshipQueryHash {
|
|
49
|
+
export interface ILayerRelationshipQueryHash {
|
|
53
50
|
[relationshipId: string]: ILayerRelationshipQuery;
|
|
54
51
|
}
|
|
55
52
|
|
|
@@ -66,8 +63,39 @@ interface IRelatedFeaturesQuery {
|
|
|
66
63
|
const lineSeparatorChar = "|";
|
|
67
64
|
|
|
68
65
|
//#endregion
|
|
66
|
+
// ------------------------------------------------------------------------------------------------------------------ //
|
|
69
67
|
//#region Public functions
|
|
70
68
|
|
|
69
|
+
/**
|
|
70
|
+
* Create and consolidate labels from all layers
|
|
71
|
+
*
|
|
72
|
+
* @param exportInfos Key details about what to export (ids, layer, and selectionSetNames)
|
|
73
|
+
* @param formatUsingLayerPopup When true, the layer's popup is used to choose attributes for each column; when false,
|
|
74
|
+
* all attributes are exported
|
|
75
|
+
* @param includeHeaderNames Add the label format at the front of the list of generated labels
|
|
76
|
+
* @returns selectionSetNames that will be used for export filenames
|
|
77
|
+
*/
|
|
78
|
+
export async function consolidateLabels(
|
|
79
|
+
exportInfos: IExportInfos,
|
|
80
|
+
formatUsingLayerPopup = true,
|
|
81
|
+
includeHeaderNames = false,
|
|
82
|
+
isCSVExport = false
|
|
83
|
+
): Promise<string[][]> {
|
|
84
|
+
const labelRequests = [];
|
|
85
|
+
|
|
86
|
+
Object.keys(exportInfos).forEach(k => {
|
|
87
|
+
const labelInfo: IExportInfo = exportInfos[k];
|
|
88
|
+
labelRequests.push(_prepareLabels(labelInfo.layerView?.layer || labelInfo.layer, labelInfo.ids, formatUsingLayerPopup, includeHeaderNames));
|
|
89
|
+
if (isCSVExport) {
|
|
90
|
+
// add the layer id as a temp value separator that we can use to split values for CSV export
|
|
91
|
+
labelRequests.push(Promise.resolve([[k]]));
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
const labels = await Promise.all(labelRequests);
|
|
96
|
+
return labels.reduce((prev, cur) => prev.concat(cur), []);
|
|
97
|
+
}
|
|
98
|
+
|
|
71
99
|
/**
|
|
72
100
|
* Downloads csv of mailing labels for the provided list of ids
|
|
73
101
|
*
|
|
@@ -140,59 +168,51 @@ export async function downloadPDF(
|
|
|
140
168
|
return Promise.resolve();
|
|
141
169
|
}
|
|
142
170
|
|
|
143
|
-
//#endregion
|
|
144
|
-
//#region Private functions
|
|
145
|
-
|
|
146
171
|
/**
|
|
147
|
-
*
|
|
172
|
+
* Remove any duplicate labels
|
|
148
173
|
*
|
|
149
|
-
* @param
|
|
150
|
-
* @
|
|
151
|
-
* @return Label spec with lines separated by `lineSeparatorChar`
|
|
174
|
+
* @param labels Labels to evaluate for duplicates
|
|
175
|
+
* @returns labels with duplicates removed
|
|
152
176
|
*/
|
|
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
|
-
}
|
|
177
|
+
export function removeDuplicateLabels(
|
|
178
|
+
labels: string[][]
|
|
179
|
+
): string[][] {
|
|
180
|
+
const labelsAsStrings: string[] = labels.map(label => JSON.stringify(label));
|
|
181
|
+
const uniqueLabels = new Set(labelsAsStrings);
|
|
182
|
+
return Array.from(uniqueLabels,
|
|
183
|
+
labelString => JSON.parse(labelString)
|
|
166
184
|
);
|
|
185
|
+
}
|
|
167
186
|
|
|
168
|
-
|
|
169
|
-
|
|
187
|
+
//#endregion
|
|
188
|
+
// ------------------------------------------------------------------------------------------------------------------ //
|
|
189
|
+
//#region Private functions
|
|
170
190
|
|
|
171
191
|
/**
|
|
172
192
|
* 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.
|
|
193
|
+
* lines on <br>s, and removes HTML tags.
|
|
174
194
|
*
|
|
175
|
-
* @param
|
|
195
|
+
* @param labelText Layer's popup text, e.g.,
|
|
176
196
|
* "<div style='text-align: left;'>{NAME}<br />{STREET}<br />{CITY}, {STATE} {ZIP} <br /></div>"
|
|
177
|
-
* @return
|
|
197
|
+
* @return Cleaned-up popup text with lines separated by `lineSeparatorChar`
|
|
178
198
|
*/
|
|
179
|
-
export function
|
|
180
|
-
|
|
199
|
+
export function _cleanupLabel(
|
|
200
|
+
labelText: string,
|
|
181
201
|
): string {
|
|
182
202
|
// Replace <br> variants with the line separator character
|
|
183
|
-
|
|
203
|
+
labelText = labelText.replace(/<br\s*\/?>/gi, lineSeparatorChar);
|
|
184
204
|
|
|
185
205
|
// Replace <p> variants with the line separator character, except in the first position
|
|
186
|
-
|
|
206
|
+
labelText = labelText.replace(/<p[^>]*>/gi, lineSeparatorChar).trim().replace(/^\|/, "");
|
|
187
207
|
|
|
188
208
|
// Remove </p>
|
|
189
|
-
|
|
209
|
+
labelText = labelText.replace(/<\/p>/gi, "");
|
|
190
210
|
|
|
191
211
|
// Replace \n with the line separator character
|
|
192
|
-
|
|
212
|
+
labelText = labelText.replace(/\n/gi, "|");
|
|
193
213
|
|
|
194
214
|
// Remove remaining HTML tags, replace 0xA0 that popup uses for spaces, and replace some char representations
|
|
195
|
-
|
|
215
|
+
labelText = labelText
|
|
196
216
|
.replace(/<[\s.]*[^<>]*\/?>/gi, "")
|
|
197
217
|
.replace(/\xA0/gi, " ")
|
|
198
218
|
.replace(/</gi, "<")
|
|
@@ -200,47 +220,75 @@ export function _convertPopupTextToLabelSpec(
|
|
|
200
220
|
.replace(/ /gi, " ");
|
|
201
221
|
|
|
202
222
|
// Trim each line
|
|
203
|
-
|
|
223
|
+
labelText = labelText.replace(/\s*\|\s*/g, "|");
|
|
204
224
|
|
|
205
225
|
// Remove empty lines
|
|
206
|
-
while (
|
|
207
|
-
|
|
226
|
+
while (labelText.match(/\|\|/)) {
|
|
227
|
+
labelText = labelText.replace(/\|\|/, "|");
|
|
208
228
|
}
|
|
209
229
|
|
|
210
230
|
// Remove leading and trailing line feeds
|
|
211
|
-
|
|
212
|
-
|
|
231
|
+
labelText = labelText.replace(/^\|/, "");
|
|
232
|
+
labelText = labelText.replace(/\|$/, "");
|
|
213
233
|
|
|
214
|
-
return
|
|
234
|
+
return labelText;
|
|
215
235
|
};
|
|
216
236
|
|
|
217
237
|
/**
|
|
218
|
-
*
|
|
219
|
-
* referenced expression name.
|
|
238
|
+
* Converts a set of fieldInfos into template lines.
|
|
220
239
|
*
|
|
221
|
-
* @param
|
|
222
|
-
* @param
|
|
223
|
-
* @return
|
|
240
|
+
* @param fieldInfos Layer's fieldInfos structure
|
|
241
|
+
* @param bypassFieldVisiblity Indicates if the configured fieldInfo visibility property should be ignored
|
|
242
|
+
* @return "pattern" label spec with lines separated by `lineSeparatorChar`
|
|
224
243
|
*/
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
):
|
|
229
|
-
const
|
|
244
|
+
export function _convertPopupFieldsToLabelSpec(
|
|
245
|
+
fieldInfos: __esri.FieldInfo[],
|
|
246
|
+
bypassFieldVisiblity = false
|
|
247
|
+
): ILabelFormat {
|
|
248
|
+
const labelSpec: string[] = [];
|
|
230
249
|
|
|
231
|
-
//
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
250
|
+
// Every visible attribute is used
|
|
251
|
+
fieldInfos.forEach(
|
|
252
|
+
fieldInfo => {
|
|
253
|
+
if (fieldInfo.visible || bypassFieldVisiblity) {
|
|
254
|
+
labelSpec.push(`{${fieldInfo.fieldName}}`);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
);
|
|
235
258
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
259
|
+
return {
|
|
260
|
+
type: "pattern",
|
|
261
|
+
format: labelSpec.join(lineSeparatorChar)
|
|
262
|
+
} as ILabelFormat;
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Converts the text of a custom popup into a multiline label specification; conversion splits text into
|
|
267
|
+
* lines on <br>s, and removes HTML tags. It does not handle Arcade and related records.
|
|
268
|
+
*
|
|
269
|
+
* @param labelText Layer's labelText structure containing description, fieldInfos, and expressionInfos, e.g.,
|
|
270
|
+
* "<div style='text-align: left;'>{NAME}<br />{STREET}<br />{CITY}, {STATE} {ZIP} <br /></div>"
|
|
271
|
+
* @return "pattern" label spec with lines separated by `lineSeparatorChar`
|
|
272
|
+
*/
|
|
273
|
+
export function _convertPopupTextToLabelSpec(
|
|
274
|
+
popupInfo: string,
|
|
275
|
+
): ILabelFormat {
|
|
276
|
+
return {
|
|
277
|
+
type: "pattern",
|
|
278
|
+
format: _cleanupLabel(popupInfo)
|
|
279
|
+
} as ILabelFormat;
|
|
280
|
+
};
|
|
242
281
|
|
|
243
|
-
|
|
282
|
+
/**
|
|
283
|
+
* Converts an Arcade expression of a custom popup into a multiline label specification.
|
|
284
|
+
*
|
|
285
|
+
* @param expressionInfo Structure containing expression and info about it
|
|
286
|
+
* @return Promise resolving to an "executor" label spec
|
|
287
|
+
*/
|
|
288
|
+
export async function _convertPopupArcadeToLabelSpec(
|
|
289
|
+
expressionInfo: __esri.ElementExpressionInfo
|
|
290
|
+
): Promise<ILabelFormat> {
|
|
291
|
+
// Generate an Arcade executor
|
|
244
292
|
const [arcade] = await loadModules(["esri/arcade"]);
|
|
245
293
|
const labelingProfile: __esri.Profile = {
|
|
246
294
|
variables: [
|
|
@@ -262,36 +310,12 @@ async function _createArcadeExecutors(
|
|
|
262
310
|
}
|
|
263
311
|
]
|
|
264
312
|
};
|
|
313
|
+
const executor = await arcade.createArcadeExecutor(expressionInfo.expression, labelingProfile);
|
|
265
314
|
|
|
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
|
-
);
|
|
315
|
+
return Promise.resolve({
|
|
316
|
+
type: "executor",
|
|
317
|
+
format: executor
|
|
318
|
+
} as ILabelFormat);
|
|
295
319
|
}
|
|
296
320
|
|
|
297
321
|
/**
|
|
@@ -349,12 +373,12 @@ export function _createRelationshipQueries(
|
|
|
349
373
|
|
|
350
374
|
/**
|
|
351
375
|
* Extracts Arcade expression references from the lines of a label format.
|
|
352
|
-
*
|
|
376
|
+
*
|
|
353
377
|
* @param labelFormat Label to examine
|
|
354
378
|
* @return Array of Arcade expression references, e.g., ["{expression/expr1}", "{expression/expr2}"]
|
|
355
379
|
*/
|
|
356
380
|
export function _getExpressionsFromLabel(
|
|
357
|
-
labelFormat: string
|
|
381
|
+
labelFormat: string
|
|
358
382
|
): string[] {
|
|
359
383
|
const arcadeExpressionRegExp = /\{expression\/\w+\}/g;
|
|
360
384
|
return labelFormat.match(arcadeExpressionRegExp) ?? [];
|
|
@@ -362,11 +386,11 @@ export function _getExpressionsFromLabel(
|
|
|
362
386
|
|
|
363
387
|
/**
|
|
364
388
|
* Extracts field name expressions from the lines of a label format.
|
|
365
|
-
*
|
|
389
|
+
*
|
|
366
390
|
* @param labelFormat Label to examine
|
|
367
391
|
* @returns Array of field name expressions, e.g., ["{NAME}", "{STREET}", "{CITY}", "{STATE}", "{ZIP}"]
|
|
368
392
|
*/
|
|
369
|
-
export function
|
|
393
|
+
export function _getFieldExpressionsFromLabel(
|
|
370
394
|
labelFormat: string
|
|
371
395
|
): string[] {
|
|
372
396
|
// Get all fields
|
|
@@ -390,6 +414,99 @@ export function _getFieldsFromLabel(
|
|
|
390
414
|
return fieldExpressions.filter(fieldExpression => arcadeExpressions.indexOf(fieldExpression) < 0);
|
|
391
415
|
}
|
|
392
416
|
|
|
417
|
+
/**
|
|
418
|
+
* Extracts field names from field name expressions.
|
|
419
|
+
*
|
|
420
|
+
* @param fieldExpressions Array of field name expressions, e.g., ["{NAME}", "{STREET}", "{CITY}", "{STATE}", "{ZIP}"]
|
|
421
|
+
* @returns Array of field names, e.g., ["NAME", "STREET", "CITY", "STATE", "ZIP"]
|
|
422
|
+
*/
|
|
423
|
+
export function _getFieldNamesFromFieldExpressions(
|
|
424
|
+
fieldExpressions: string[]
|
|
425
|
+
): string[] {
|
|
426
|
+
return fieldExpressions.map(
|
|
427
|
+
expr => expr.substring(1, expr.length - 1)
|
|
428
|
+
)
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
/**
|
|
432
|
+
* Extracts the label format from the layer.
|
|
433
|
+
*
|
|
434
|
+
* @param layer Layer with label format
|
|
435
|
+
* @param formatUsingLayerPopup When true, the layer's popup is used to choose attributes for each column; when false,
|
|
436
|
+
* all attributes are exported
|
|
437
|
+
* @param attributeFormats Empty object to hold the formats for each attribute in a feature; the object is filled
|
|
438
|
+
* with formats by this function
|
|
439
|
+
* @returns A Promise resolving to the format of a single label, e.g., for ILabelFormat type "pattern":
|
|
440
|
+
* "{NAME}|{STREET}|{CITY}, {STATE} {ZIP}"
|
|
441
|
+
*/
|
|
442
|
+
export async function _getLabelFormat(
|
|
443
|
+
layer: __esri.FeatureLayer,
|
|
444
|
+
formatUsingLayerPopup: boolean,
|
|
445
|
+
attributeFormats: IAttributeFormats
|
|
446
|
+
): Promise<ILabelFormat> {
|
|
447
|
+
let labelFormat: ILabelFormat = {
|
|
448
|
+
type: "unsupported",
|
|
449
|
+
format: undefined
|
|
450
|
+
};
|
|
451
|
+
|
|
452
|
+
if (layer.popupEnabled) {
|
|
453
|
+
layer.popupTemplate.fieldInfos.forEach(
|
|
454
|
+
// Extract any format info that we have
|
|
455
|
+
fieldInfo => {
|
|
456
|
+
if (fieldInfo.format) {
|
|
457
|
+
attributeFormats[fieldInfo.fieldName] = fieldInfo.format;
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
);
|
|
461
|
+
|
|
462
|
+
// What is the nature of the label content?
|
|
463
|
+
// Fields list
|
|
464
|
+
if (formatUsingLayerPopup && layer.popupTemplate?.content[0]?.type === "fields") {
|
|
465
|
+
labelFormat = _convertPopupFieldsToLabelSpec(layer.popupTemplate.fieldInfos);
|
|
466
|
+
|
|
467
|
+
// If popup is configured with "no attribute information", then no fields will visible
|
|
468
|
+
if ((labelFormat.format as string).length === 0) {
|
|
469
|
+
// Can we use the popup title?
|
|
470
|
+
labelFormat = layer.popupTemplate.title && typeof layer.popupTemplate.title === "string" ?
|
|
471
|
+
{ type: "pattern", format: layer.popupTemplate.title } as ILabelFormat
|
|
472
|
+
:
|
|
473
|
+
// Otherwise revert to using attributes
|
|
474
|
+
_convertPopupFieldsToLabelSpec(layer.popupTemplate.fieldInfos, true);
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
// Example text: '<p>{name} {age} years </p><p>started: {start}</p>'
|
|
478
|
+
} else if (formatUsingLayerPopup && layer.popupTemplate?.content[0]?.type === "text") {
|
|
479
|
+
labelFormat = _convertPopupTextToLabelSpec(layer.popupTemplate.content[0].text);
|
|
480
|
+
|
|
481
|
+
// 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}',
|
|
482
|
+
} else if (formatUsingLayerPopup && layer.popupTemplate?.content[0]?.type === "expression") {
|
|
483
|
+
labelFormat = await _convertPopupArcadeToLabelSpec(layer.popupTemplate.content[0].expressionInfo);
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
return Promise.resolve(labelFormat);
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
/**
|
|
491
|
+
* Extract selectionSetNames from the provided exportInfos
|
|
492
|
+
*
|
|
493
|
+
* @param exportInfos Key details about what to export (ids, layer, and selectionSetNames)
|
|
494
|
+
* @returns selectionSetNames that will be used for export filenames
|
|
495
|
+
*/
|
|
496
|
+
export function _getSelectionSetNames(
|
|
497
|
+
exportInfos: IExportInfos,
|
|
498
|
+
id = /.+/
|
|
499
|
+
): string[] {
|
|
500
|
+
let selectionSetNames: string[] = [];
|
|
501
|
+
Object.keys(exportInfos).forEach(k => {
|
|
502
|
+
const exportInfo: IExportInfo = exportInfos[k];
|
|
503
|
+
if (id.test(k)) {
|
|
504
|
+
selectionSetNames = selectionSetNames.concat(exportInfo.selectionSetNames);
|
|
505
|
+
}
|
|
506
|
+
});
|
|
507
|
+
return selectionSetNames;
|
|
508
|
+
}
|
|
509
|
+
|
|
393
510
|
/**
|
|
394
511
|
* Prepares an attribute's value by applying domain and type information.
|
|
395
512
|
*
|
|
@@ -398,19 +515,23 @@ export function _getFieldsFromLabel(
|
|
|
398
515
|
* @param attributeDomain Domain info for attribute, if any
|
|
399
516
|
* @param attributeFormat Format info for attribute, if any
|
|
400
517
|
* @param intl esri/intl
|
|
401
|
-
* @return Attribute value modified appropriate to domain and type
|
|
518
|
+
* @return Attribute value modified appropriate to domain and type and converted to a string
|
|
402
519
|
*/
|
|
403
|
-
function _prepareAttributeValue(
|
|
520
|
+
export function _prepareAttributeValue(
|
|
404
521
|
attributeValue: any,
|
|
405
522
|
attributeType: string,
|
|
406
523
|
attributeDomain: __esri.CodedValueDomain | __esri.RangeDomain | __esri.InheritedDomain | null,
|
|
407
524
|
attributeFormat: __esri.FieldInfoFormat,
|
|
408
525
|
intl: any
|
|
409
|
-
):
|
|
526
|
+
): string {
|
|
527
|
+
if (attributeValue === null || typeof attributeValue === "undefined") {
|
|
528
|
+
return "";
|
|
529
|
+
}
|
|
530
|
+
|
|
410
531
|
if (attributeDomain && (attributeDomain as __esri.CodedValueDomain).type === "coded-value") {
|
|
411
532
|
// "coded-value" domain field
|
|
412
533
|
const value = (attributeDomain as __esri.CodedValueDomain).getName(attributeValue);
|
|
413
|
-
return value;
|
|
534
|
+
return value.toString();
|
|
414
535
|
} else {
|
|
415
536
|
// Non-domain field or unsupported domain type
|
|
416
537
|
let value = attributeValue;
|
|
@@ -418,7 +539,7 @@ function _prepareAttributeValue(
|
|
|
418
539
|
switch (attributeType) {
|
|
419
540
|
case "date":
|
|
420
541
|
if (attributeFormat?.dateFormat) {
|
|
421
|
-
const dateFormatIntlOptions = intl.convertDateFormatToIntlOptions(attributeFormat.dateFormat);
|
|
542
|
+
const dateFormatIntlOptions = intl.convertDateFormatToIntlOptions(attributeFormat.dateFormat as any);
|
|
422
543
|
value = intl.formatDate(value, dateFormatIntlOptions);
|
|
423
544
|
} else {
|
|
424
545
|
value = intl.formatDate(value);
|
|
@@ -455,14 +576,12 @@ function _prepareAttributeValue(
|
|
|
455
576
|
* @param includeHeaderNames Add the label format at the front of the list of generated labels
|
|
456
577
|
* @returns Promise resolving when function is done
|
|
457
578
|
*/
|
|
458
|
-
async function _prepareLabels(
|
|
579
|
+
export async function _prepareLabels(
|
|
459
580
|
layer: __esri.FeatureLayer,
|
|
460
581
|
ids: number[],
|
|
461
582
|
formatUsingLayerPopup = true,
|
|
462
583
|
includeHeaderNames = false
|
|
463
584
|
): Promise<string[][]> {
|
|
464
|
-
const [intl] = await loadModules(["esri/intl"]);
|
|
465
|
-
|
|
466
585
|
// Get the features to export
|
|
467
586
|
const featureSet = await queryFeaturesByID(ids, layer, [], false);
|
|
468
587
|
|
|
@@ -478,176 +597,60 @@ async function _prepareLabels(
|
|
|
478
597
|
const attributeFormats: IAttributeFormats = {};
|
|
479
598
|
|
|
480
599
|
// 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
|
-
}
|
|
600
|
+
const labelFormat: ILabelFormat = await _getLabelFormat(layer, formatUsingLayerPopup, attributeFormats);
|
|
522
601
|
|
|
523
602
|
// 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 {
|
|
603
|
+
const labels = labelFormat.type === "unsupported" ?
|
|
622
604
|
// Export all attributes
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
}
|
|
632
|
-
);
|
|
633
|
-
}
|
|
634
|
-
);
|
|
635
|
-
}
|
|
605
|
+
await _prepareLabelsFromAll(featureSet, attributeTypes, attributeDomains, includeHeaderNames)
|
|
606
|
+
: labelFormat.type == "pattern" ?
|
|
607
|
+
// Export attributes in format
|
|
608
|
+
await _prepareLabelsFromPattern(featureSet, attributeTypes, attributeDomains,
|
|
609
|
+
attributeFormats, labelFormat.format as string, includeHeaderNames)
|
|
610
|
+
:
|
|
611
|
+
// Export attributes in expression
|
|
612
|
+
await _prepareLabelsUsingExecutor(featureSet, labelFormat.format as __esri.ArcadeExecutor);
|
|
636
613
|
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
let headerNames = [];
|
|
614
|
+
return Promise.resolve(labels);
|
|
615
|
+
}
|
|
640
616
|
|
|
641
|
-
|
|
642
|
-
|
|
617
|
+
/**
|
|
618
|
+
* Creates labels from all attributes in items.
|
|
619
|
+
*
|
|
620
|
+
* @param featureSet Features to convert to labels
|
|
621
|
+
* @param attributeTypes Type for each attribute in a feature
|
|
622
|
+
* @param attributeDomains Domains for each attribute in a feature
|
|
623
|
+
* @param includeHeaderNames Add the label format at the front of the list of generated labels
|
|
624
|
+
* @returns Promise resolving with list of labels, each of which is a list of label lines
|
|
625
|
+
*/
|
|
626
|
+
export async function _prepareLabelsFromAll(
|
|
627
|
+
featureSet: __esri.Graphic[],
|
|
628
|
+
attributeTypes: IAttributeTypes,
|
|
629
|
+
attributeDomains: IAttributeDomains,
|
|
630
|
+
includeHeaderNames = false
|
|
631
|
+
): Promise<string[][]> {
|
|
632
|
+
const [intl] = await loadModules(["esri/intl"]);
|
|
643
633
|
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
634
|
+
// Export all attributes
|
|
635
|
+
const labels = featureSet.map(
|
|
636
|
+
feature => {
|
|
637
|
+
return Object.keys(feature.attributes).map(
|
|
638
|
+
(attributeName: string) => {
|
|
639
|
+
return _prepareAttributeValue(feature.attributes[attributeName],
|
|
640
|
+
attributeTypes[attributeName], attributeDomains[attributeName],
|
|
641
|
+
null, intl);
|
|
642
|
+
}
|
|
643
|
+
);
|
|
649
644
|
}
|
|
645
|
+
);
|
|
650
646
|
|
|
647
|
+
// Add header names
|
|
648
|
+
if (includeHeaderNames) {
|
|
649
|
+
const headerNames = [];
|
|
650
|
+
const featuresAttrs = featureSet[0].attributes;
|
|
651
|
+
Object.keys(featuresAttrs).forEach(k => {
|
|
652
|
+
headerNames.push(k);
|
|
653
|
+
});
|
|
651
654
|
labels.unshift(headerNames);
|
|
652
655
|
}
|
|
653
656
|
|
|
@@ -655,69 +658,87 @@ async function _prepareLabels(
|
|
|
655
658
|
}
|
|
656
659
|
|
|
657
660
|
/**
|
|
658
|
-
*
|
|
661
|
+
* Creates labels from attributes in a layer popup.
|
|
659
662
|
*
|
|
660
|
-
* @param
|
|
661
|
-
* @
|
|
663
|
+
* @param featureSet Features to convert to labels
|
|
664
|
+
* @param attributeTypes Type for each attribute in a feature
|
|
665
|
+
* @param attributeDomains Domains for each attribute in a feature
|
|
666
|
+
* @param attributeFormats Formats for each attribute in a feature
|
|
667
|
+
* @param labelFormat Format for label
|
|
668
|
+
* @param includeHeaderNames Add the label format at the front of the list of generated labels
|
|
669
|
+
* @returns Promise resolving with list of labels, each of which is a list of label lines
|
|
662
670
|
*/
|
|
663
|
-
export function
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
671
|
+
export async function _prepareLabelsFromPattern(
|
|
672
|
+
featureSet: __esri.Graphic[],
|
|
673
|
+
attributeTypes: IAttributeTypes,
|
|
674
|
+
attributeDomains: IAttributeDomains,
|
|
675
|
+
attributeFormats: IAttributeFormats,
|
|
676
|
+
labelFormat: string,
|
|
677
|
+
includeHeaderNames = false
|
|
678
|
+
): Promise<string[][]> {
|
|
679
|
+
const [intl] = await loadModules(["esri/intl"]);
|
|
672
680
|
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
681
|
+
// Find the label fields that we need to replace with values
|
|
682
|
+
const attributeExpressionMatches = _getFieldExpressionsFromLabel(labelFormat);
|
|
683
|
+
const attributeNames = _getFieldNamesFromFieldExpressions(attributeExpressionMatches);
|
|
684
|
+
|
|
685
|
+
// Convert feature attributes into an array of labels
|
|
686
|
+
const labels = await Promise.all(featureSet.map(
|
|
687
|
+
async feature => {
|
|
688
|
+
let labelPrep = labelFormat;
|
|
689
|
+
|
|
690
|
+
// Replace non-Arcade fields in this feature
|
|
691
|
+
attributeNames.forEach(
|
|
692
|
+
(attributeName: string, i: number) => {
|
|
693
|
+
const value = _prepareAttributeValue(feature.attributes[attributeName],
|
|
694
|
+
attributeTypes[attributeName], attributeDomains[attributeName],
|
|
695
|
+
attributeFormats[attributeName], intl);
|
|
696
|
+
labelPrep = labelPrep.replace(attributeExpressionMatches[i], value);
|
|
697
|
+
|
|
698
|
+
},
|
|
699
|
+
)
|
|
700
|
+
|
|
701
|
+
// Split label into lines
|
|
702
|
+
let label = labelPrep.split(lineSeparatorChar);
|
|
703
|
+
|
|
704
|
+
// Trim lines
|
|
705
|
+
label = label.map(line => _cleanupLabel(line));
|
|
706
|
+
|
|
707
|
+
return label;
|
|
688
708
|
}
|
|
689
|
-
|
|
690
|
-
|
|
709
|
+
));
|
|
710
|
+
|
|
711
|
+
// Add header names
|
|
712
|
+
if (includeHeaderNames) {
|
|
713
|
+
labels.unshift(attributeNames);
|
|
714
|
+
}
|
|
715
|
+
|
|
716
|
+
return Promise.resolve(labels);
|
|
691
717
|
}
|
|
692
718
|
|
|
693
719
|
/**
|
|
694
|
-
*
|
|
720
|
+
* Creates labels from attributes in an Arcade label.
|
|
695
721
|
*
|
|
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
|
|
722
|
+
* @param featureSet Features to convert to labels
|
|
723
|
+
* @param labelFormat Arcade executor for label
|
|
724
|
+
* @returns Promise resolving with list of labels, each of which is a list of label lines
|
|
701
725
|
*/
|
|
702
|
-
export async function
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
includeHeaderNames = false,
|
|
706
|
-
isCSVExport = false
|
|
726
|
+
export async function _prepareLabelsUsingExecutor(
|
|
727
|
+
featureSet: __esri.Graphic[],
|
|
728
|
+
labelFormat: __esri.ArcadeExecutor
|
|
707
729
|
): 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]]));
|
|
730
|
+
// Convert feature attributes into an array of labels
|
|
731
|
+
const execResults = await Promise.all(featureSet.map(
|
|
732
|
+
async feature => {
|
|
733
|
+
return labelFormat.executeAsync({"$feature": feature});
|
|
716
734
|
}
|
|
717
|
-
|
|
735
|
+
));
|
|
718
736
|
|
|
719
|
-
const labels =
|
|
720
|
-
|
|
737
|
+
const labels = execResults.map(
|
|
738
|
+
result => _cleanupLabel(result.text).split(lineSeparatorChar)
|
|
739
|
+
)
|
|
740
|
+
|
|
741
|
+
return Promise.resolve(labels);
|
|
721
742
|
}
|
|
722
743
|
|
|
723
744
|
//#endregion
|