@esri/solutions-components 0.7.24 → 0.7.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/dist/cjs/{info-card_4.cjs.entry.js → basemap-gallery_7.cjs.entry.js} +410 -324
  2. package/dist/cjs/buffer-tools_3.cjs.entry.js +3 -4
  3. package/dist/cjs/{calcite-alert_3.cjs.entry.js → calcite-alert_4.cjs.entry.js} +296 -3
  4. package/dist/cjs/calcite-combobox_6.cjs.entry.js +1 -2
  5. package/dist/cjs/calcite-flow_4.cjs.entry.js +3 -4
  6. package/dist/cjs/calcite-shell-panel_14.cjs.entry.js +1 -2
  7. package/dist/cjs/{card-manager_2.cjs.entry.js → card-manager_3.cjs.entry.js} +182 -5
  8. package/dist/cjs/crowdsource-manager.cjs.entry.js +1 -2
  9. package/dist/cjs/crowdsource-reporter.cjs.entry.js +32 -90
  10. package/dist/cjs/{downloadUtils-401356b5.js → downloadUtils-83c6d3c3.js} +6 -6
  11. package/dist/cjs/{index.es-a9a4ff08.js → index.es-bd1a93b2.js} +2 -2
  12. package/dist/cjs/layout-manager.cjs.entry.js +1 -2
  13. package/dist/cjs/loader.cjs.js +1 -1
  14. package/dist/cjs/{locale-1ff119f5.js → locale-a476e15d.js} +24 -3
  15. package/dist/cjs/map-select-tools_3.cjs.entry.js +4 -5
  16. package/dist/cjs/{popupUtils-8d5b6e94.js → popupUtils-a73902a6.js} +2 -2
  17. package/dist/cjs/public-notification.cjs.entry.js +3 -4
  18. package/dist/cjs/solution-configuration.cjs.entry.js +1 -2
  19. package/dist/cjs/solution-contents_3.cjs.entry.js +1 -2
  20. package/dist/cjs/solutions-components.cjs.js +1 -1
  21. package/dist/cjs/spatial-ref.cjs.entry.js +1 -2
  22. package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.css +5 -27
  23. package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.js +69 -95
  24. package/dist/collection/demos/crowdsource-reporter.html +96 -45
  25. package/dist/components/crowdsource-reporter.js +95 -209
  26. package/dist/esm/{info-card_4.entry.js → basemap-gallery_7.entry.js} +406 -323
  27. package/dist/esm/buffer-tools_3.entry.js +1 -2
  28. package/dist/esm/{calcite-alert_3.entry.js → calcite-alert_4.entry.js} +295 -3
  29. package/dist/esm/calcite-combobox_6.entry.js +1 -2
  30. package/dist/esm/calcite-flow_4.entry.js +3 -4
  31. package/dist/esm/calcite-shell-panel_14.entry.js +1 -2
  32. package/dist/esm/{card-manager_2.entry.js → card-manager_3.entry.js} +181 -5
  33. package/dist/esm/crowdsource-manager.entry.js +1 -2
  34. package/dist/esm/crowdsource-reporter.entry.js +32 -90
  35. package/dist/esm/{downloadUtils-067dc2ff.js → downloadUtils-a301c193.js} +2 -2
  36. package/dist/esm/{index.es-92e46d8b.js → index.es-37a9907e.js} +2 -2
  37. package/dist/esm/layout-manager.entry.js +1 -2
  38. package/dist/esm/loader.js +1 -1
  39. package/dist/esm/{locale-13e3c96c.js → locale-731e75a8.js} +22 -2
  40. package/dist/esm/map-select-tools_3.entry.js +2 -3
  41. package/dist/esm/{popupUtils-b71f30fc.js → popupUtils-a593bd78.js} +1 -1
  42. package/dist/esm/public-notification.entry.js +2 -3
  43. package/dist/esm/solution-configuration.entry.js +1 -2
  44. package/dist/esm/solution-contents_3.entry.js +1 -2
  45. package/dist/esm/solutions-components.js +1 -1
  46. package/dist/esm/spatial-ref.entry.js +1 -2
  47. package/dist/solutions-components/demos/crowdsource-reporter.html +96 -45
  48. package/dist/solutions-components/{p-36cbf14f.js → p-0587972d.js} +1 -1
  49. package/dist/solutions-components/p-0b4f4b0e.entry.js +6 -0
  50. package/dist/solutions-components/{p-f54f3719.entry.js → p-0b619197.entry.js} +1 -1
  51. package/dist/solutions-components/{p-d50f34c4.entry.js → p-2656c6e4.entry.js} +1 -1
  52. package/dist/solutions-components/p-284cc5cd.entry.js +6 -0
  53. package/dist/solutions-components/{p-01032eec.entry.js → p-29f661f5.entry.js} +2 -2
  54. package/dist/solutions-components/p-5af99fd8.entry.js +6 -0
  55. package/dist/solutions-components/{p-d9061e5d.entry.js → p-7116f96d.entry.js} +1 -1
  56. package/dist/solutions-components/p-7c13406e.entry.js +6 -0
  57. package/dist/solutions-components/{p-685257d1.entry.js → p-7dbccc10.entry.js} +1 -1
  58. package/dist/solutions-components/p-8308f64c.entry.js +6 -0
  59. package/dist/solutions-components/{p-ca4023f4.entry.js → p-891682da.entry.js} +1 -1
  60. package/dist/solutions-components/{p-14ff1465.js → p-a603e673.js} +2 -2
  61. package/dist/solutions-components/p-b37ec1f3.entry.js +6 -0
  62. package/dist/solutions-components/{p-fec77450.js → p-db868283.js} +1 -1
  63. package/dist/solutions-components/{p-fb1c6811.entry.js → p-dded59a7.entry.js} +1 -1
  64. package/dist/solutions-components/p-e88a64be.entry.js +6 -0
  65. package/dist/solutions-components/p-e902ba19.js +36 -0
  66. package/dist/solutions-components/p-fe295e9d.entry.js +6 -0
  67. package/dist/solutions-components/solutions-components.esm.js +1 -1
  68. package/dist/types/components/crowdsource-reporter/crowdsource-reporter.d.ts +14 -28
  69. package/dist/types/components.d.ts +16 -0
  70. package/package.json +1 -1
  71. package/dist/cjs/basemap-gallery_5.cjs.entry.js +0 -573
  72. package/dist/cjs/loadModules-46d14e81.js +0 -30
  73. package/dist/esm/basemap-gallery_5.entry.js +0 -565
  74. package/dist/esm/loadModules-cea493da.js +0 -28
  75. package/dist/solutions-components/p-3606c4b8.entry.js +0 -6
  76. package/dist/solutions-components/p-48ff9cea.js +0 -21
  77. package/dist/solutions-components/p-5e832d65.entry.js +0 -6
  78. package/dist/solutions-components/p-8fc072ca.entry.js +0 -6
  79. package/dist/solutions-components/p-a2d3df14.entry.js +0 -6
  80. package/dist/solutions-components/p-ab006ace.js +0 -21
  81. package/dist/solutions-components/p-ba56035f.entry.js +0 -6
  82. package/dist/solutions-components/p-c0ed2b83.entry.js +0 -6
  83. package/dist/solutions-components/p-cc88bb42.entry.js +0 -6
  84. package/dist/solutions-components/p-db69f4ba.entry.js +0 -6
  85. package/dist/solutions-components/p-e3061220.entry.js +0 -6
@@ -4,8 +4,7 @@
4
4
  * http://www.apache.org/licenses/LICENSE-2.0
5
5
  */
6
6
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-7183ce4a.js';
7
- import { l as loadModules } from './loadModules-cea493da.js';
8
- import { g as getLocaleComponentStrings } from './locale-13e3c96c.js';
7
+ import { l as loadModules, g as getLocaleComponentStrings } from './locale-731e75a8.js';
9
8
  import { x as setRequestedIcon } from './dom-8f926f33.js';
10
9
  import { f as EDrawMode } from './interfaces-586e863c.js';
11
10
  import { s as state } from './publicNotificationStore-9362d7ae.js';
@@ -11,9 +11,9 @@ import { c as connectLocalized, d as disconnectLocalized, n as numberStringForma
11
11
  import { o as onToggleOpenCloseComponent } from './openCloseComponent-982c6b9e.js';
12
12
  import { c as connectMessages, s as setUpMessages, d as disconnectMessages, u as updateMessages } from './t9n-f16911e7.js';
13
13
  import { K as KindIcons } from './resources-6e00e0d1.js';
14
- import { g as getLocaleComponentStrings } from './locale-13e3c96c.js';
15
- import { l as loadModules } from './loadModules-cea493da.js';
14
+ import { g as getLocaleComponentStrings, l as loadModules } from './locale-731e75a8.js';
16
15
  import { d as getAllLayers } from './mapViewUtils-6daedef8.js';
16
+ import { P as PopupUtils } from './popupUtils-a593bd78.js';
17
17
  import './guid-36c6c6a5.js';
18
18
  import './resources-cdc36705.js';
19
19
  import './key-af303047.js';
@@ -650,4 +650,296 @@ const EditCard = class {
650
650
  };
651
651
  EditCard.style = editCardCss;
652
652
 
653
- export { Alert as calcite_alert, DeleteButton as delete_button, EditCard as edit_card };
653
+ const infoCardCss = ":host{display:block;--calcite-label-margin-bottom:0}.padding-1-2{padding:0.5rem}.display-none{display:none !important}.display-flex{display:flex}.position-absolute{position:absolute;top:0;right:0;bottom:0;left:0;overflow:auto}.esri-features__footer{display:none !important}.button-container{justify-content:space-between;align-items:center}.top-border{border-top:1px solid var(--calcite-color-border-1)}.min-width-100{min-width:100px}.width-100{width:100%}.esri-features__container{padding:0.5rem !important;background-color:var(--calcite-color-foreground-1) !important;height:100% !important}.overflow-hidden{overflow:hidden}.height-40{height:40px}.padding-top-46{padding-top:46px}.end-border{border-inline-end:1px solid var(--calcite-color-border-1)}.font-bold{font-weight:bold}.visibility-hidden{visibility:hidden;height:0px}.padding-inline-start-1{padding-inline-start:1rem}";
654
+
655
+ const InfoCard = class {
656
+ constructor(hostRef) {
657
+ registerInstance(this, hostRef);
658
+ this.popupClosed = createEvent(this, "popupClosed", 7);
659
+ this.selectionChanged = createEvent(this, "selectionChanged", 7);
660
+ this.graphics = undefined;
661
+ this.isLoading = false;
662
+ this.isMobile = undefined;
663
+ this.mapView = undefined;
664
+ this.zoomAndScrollToSelected = undefined;
665
+ this.allowEditing = true;
666
+ this._alertOpen = false;
667
+ this._count = "";
668
+ this._editRecordOpen = false;
669
+ this._mobileTitle = "";
670
+ this._showListView = false;
671
+ this._translations = undefined;
672
+ }
673
+ //--------------------------------------------------------------------------
674
+ //
675
+ // Watch handlers
676
+ //
677
+ //--------------------------------------------------------------------------
678
+ /**
679
+ * Watch for changes to the graphic and update the feature widget
680
+ */
681
+ async graphicsWatchHandler() {
682
+ await this.setGraphics();
683
+ }
684
+ /**
685
+ * Watch for changes to the isMobile prop then init the Features widget
686
+ * We need to know if the title should be displayed by the widget (non mobile)
687
+ * or by us (mobile)
688
+ */
689
+ async isMobileWatchHandler() {
690
+ await this._initFeaturesWidget();
691
+ }
692
+ /**
693
+ * Watch for changes to the mapView and re-init the Feature widget
694
+ */
695
+ async mapViewWatchHandler() {
696
+ return await this._initFeaturesWidget();
697
+ }
698
+ //--------------------------------------------------------------------------
699
+ //
700
+ // Methods (public)
701
+ //
702
+ //--------------------------------------------------------------------------
703
+ /**
704
+ * Get the current selected feature from the Features widget
705
+ *
706
+ * @returns Promise resolving with the current feature
707
+ */
708
+ async getSelectedFeature() {
709
+ return this._features.selectedFeature;
710
+ }
711
+ /**
712
+ * Respond to and close the edit record display
713
+ *
714
+ * @returns a promise when the operation has completed
715
+ */
716
+ async closeEdit() {
717
+ this._editRecordOpen = false;
718
+ }
719
+ /**
720
+ * Reset key properties when the layer selection changes
721
+ */
722
+ async layerSelectionChange() {
723
+ var _a;
724
+ this._showListView = false;
725
+ if ((_a = this._features) === null || _a === void 0 ? void 0 : _a.viewModel) {
726
+ this._features.viewModel.featureMenuOpen = false;
727
+ this._features.close();
728
+ }
729
+ }
730
+ /**
731
+ * Refresh the info-card graphics
732
+ */
733
+ async refreshGraphics(evt) {
734
+ this.graphics = [...evt.detail];
735
+ }
736
+ //--------------------------------------------------------------------------
737
+ //
738
+ // Functions (lifecycle)
739
+ //
740
+ //--------------------------------------------------------------------------
741
+ /**
742
+ * StencilJS: Called once just after the component is first connected to the DOM.
743
+ *
744
+ * @returns Promise when complete
745
+ */
746
+ async componentWillLoad() {
747
+ await this._initModules();
748
+ await this._getTranslations();
749
+ this._popupUtils = new PopupUtils();
750
+ }
751
+ /**
752
+ * StencilJS: Called once just after the component is fully loaded and the first render() occurs.
753
+ * @returns Promise when complete
754
+ */
755
+ async componentDidLoad() {
756
+ var _a;
757
+ if (((_a = this.graphics) === null || _a === void 0 ? void 0 : _a.length) > 0) {
758
+ await this.setGraphics();
759
+ }
760
+ }
761
+ /**
762
+ * Renders the component.
763
+ */
764
+ render() {
765
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
766
+ const loadingClass = this.isLoading ? "" : "display-none";
767
+ const featureNodeClass = this.isLoading || this._editRecordOpen ? "visibility-hidden" : "position-absolute";
768
+ const editClass = !this.isLoading && this._editRecordOpen ? "position-absolute" : "display-none";
769
+ const editButtonClass = (!this.isLoading && this._editRecordOpen) || this._showListView ? "display-none" : "";
770
+ const nextBackDisabled = ((_b = (_a = this._features) === null || _a === void 0 ? void 0 : _a.features) === null || _b === void 0 ? void 0 : _b.length) < 2;
771
+ const nextBackClass = this.isMobile ? "display-none" : "";
772
+ const shellClass = this.isMobile && !this._editRecordOpen ? "padding-top-46" : "";
773
+ const id = (_d = (_c = this._features) === null || _c === void 0 ? void 0 : _c.selectedFeature) === null || _d === void 0 ? void 0 : _d.getObjectId();
774
+ const ids = parseInt(id === null || id === void 0 ? void 0 : id.toString(), 10) > -1 ? [id] : [];
775
+ const deleteEnabled = ((_e = this._layer) === null || _e === void 0 ? void 0 : _e.editingEnabled) && ((_h = (_g = (_f = this._layer) === null || _f === void 0 ? void 0 : _f.capabilities) === null || _g === void 0 ? void 0 : _g.operations) === null || _h === void 0 ? void 0 : _h.supportsDelete);
776
+ return (h(Host, null, this.isMobile && !this._editRecordOpen ? (h("calcite-panel", null, h("calcite-action", { class: "end-border", icon: "chevron-left", iconFlipRtl: true, onClick: () => this._closePopup(), scale: "s", slot: "header-actions-start", text: "" }), h("span", { class: "font-bold", slot: "header-content" }, this._mobileTitle))) : undefined, h("calcite-shell", { class: shellClass }, h("calcite-loader", { class: loadingClass, label: this._translations.fetchingData }), h("div", { class: "esri-widget " + featureNodeClass, id: "features-node" }), h("div", { class: `${editButtonClass} width-100`, slot: "footer" }, this.allowEditing &&
777
+ h("div", { class: "display-flex top-border padding-1-2" }, h("calcite-button", { appearance: "solid", id: "solutions-edit", onClick: () => this._openEditRecord(), width: "full" }, this._translations.edit), this.isMobile && deleteEnabled ? (h("delete-button", { class: "padding-inline-start-1 width-100", id: "solutions-delete", ids: ids, layer: this._layer, onEditsComplete: () => this._closePopup() })) : undefined, h("calcite-tooltip", { label: "", placement: "bottom", "reference-element": "solutions-edit" }, h("span", null, this._translations.edit)), this.isMobile ? (h("calcite-tooltip", { label: "", placement: "bottom", "reference-element": "solutions-delete" }, h("span", null, this._translations.delete))) : undefined), !nextBackDisabled && h("div", { class: `display-flex padding-1-2 button-container top-border ${nextBackClass}` }, h("div", { class: "min-width-100" }, h("calcite-button", { appearance: "outline", disabled: nextBackDisabled, id: "solutions-back", onClick: () => this._back(), width: "full" }, this._translations.back), h("calcite-tooltip", { label: "", placement: "top", "reference-element": "solutions-back" }, h("span", null, this._translations.back))), h("div", null, h("calcite-action", { icon: "list", onClick: () => this._toggleListView(), scale: "s", text: this._count, textEnabled: true })), h("div", { class: "min-width-100" }, h("calcite-button", { appearance: "outline", disabled: nextBackDisabled, id: "solutions-next", onClick: () => this._next(), width: "full" }, this._translations.next), h("calcite-tooltip", { label: "", placement: "top", "reference-element": "solutions-next" }, h("span", null, this._translations.next))))), h("edit-card", { class: editClass, graphicIndex: (_j = this._features) === null || _j === void 0 ? void 0 : _j.selectedFeatureIndex, graphics: this.graphics, mapView: this.mapView, open: this._editRecordOpen }), h("calcite-alert", { icon: "layer-broken", kind: "warning", label: "", onCalciteAlertClose: () => this._alertClosed(), open: this._alertOpen, placement: "top" }, h("div", { slot: "title" }, this._translations.editDisabled), h("div", { slot: "message" }, this._translations.enableEditing)))));
778
+ }
779
+ //--------------------------------------------------------------------------
780
+ //
781
+ // Functions (protected)
782
+ //
783
+ //--------------------------------------------------------------------------
784
+ /**
785
+ * Load esri javascript api modules
786
+ *
787
+ * @returns Promise resolving when function is done
788
+ *
789
+ * @protected
790
+ */
791
+ async _initModules() {
792
+ const [Features, reactiveUtils] = await loadModules([
793
+ "esri/widgets/Features",
794
+ "esri/core/reactiveUtils"
795
+ ]);
796
+ this.Features = Features;
797
+ this.reactiveUtils = reactiveUtils;
798
+ }
799
+ /**
800
+ * Initializes the features widget if not created and updates the feature widget and other required states
801
+ *
802
+ * @protected
803
+ */
804
+ async setGraphics() {
805
+ var _a;
806
+ if (!this._features) {
807
+ await this._initFeaturesWidget();
808
+ }
809
+ if (this.graphics.length > 0) {
810
+ this._layer = (_a = this.graphics[0]) === null || _a === void 0 ? void 0 : _a.layer;
811
+ this._editEnabled = this._layer.editingEnabled && this._layer.capabilities.operations.supportsUpdate;
812
+ this._mobileTitle = await this._popupUtils.getPopupTitle(this.graphics[0]);
813
+ this._features.open({
814
+ features: this.graphics
815
+ });
816
+ }
817
+ else {
818
+ this._features.clear();
819
+ this._features.close();
820
+ }
821
+ this._count = this._getCount();
822
+ }
823
+ /**
824
+ * Init the Feature widget so we can display the popup content
825
+ *
826
+ * @returns a promise when the operation has completed
827
+ *
828
+ * @protected
829
+ */
830
+ async _initFeaturesWidget() {
831
+ var _a;
832
+ return this.isMobile !== undefined ? await ((_a = this.mapView) === null || _a === void 0 ? void 0 : _a.when(() => {
833
+ if (!this._features) {
834
+ this._features = new this.Features({
835
+ view: this.mapView,
836
+ container: "features-node",
837
+ visibleElements: {
838
+ actionBar: false,
839
+ closeButton: false,
840
+ heading: !this.isMobile
841
+ }
842
+ });
843
+ this.reactiveUtils.watch(() => this._features.viewModel.featureMenuOpen, (isOpen) => {
844
+ if (!isOpen) {
845
+ this._showListView = isOpen;
846
+ }
847
+ });
848
+ if (this.zoomAndScrollToSelected) {
849
+ this.reactiveUtils.watch(() => this._features.selectedFeatureIndex, (i) => {
850
+ if (i > -1) {
851
+ this.selectionChanged.emit([this._features.selectedFeature]);
852
+ }
853
+ });
854
+ }
855
+ }
856
+ else {
857
+ this._features.view = this.mapView;
858
+ this._features.visibleElements.actionBar = false;
859
+ this._features.visibleElements.closeButton = false;
860
+ this._features.visibleElements.heading = !this.isMobile;
861
+ }
862
+ })) : Promise.resolve();
863
+ }
864
+ /**
865
+ * Close the popup and emit the selected features
866
+ */
867
+ _closePopup() {
868
+ this.popupClosed.emit();
869
+ }
870
+ /**
871
+ * Set the alertOpen member to false when the alert is closed
872
+ */
873
+ _alertClosed() {
874
+ this._alertOpen = false;
875
+ }
876
+ /**
877
+ * Open the edit record
878
+ */
879
+ _openEditRecord() {
880
+ if (this._editEnabled) {
881
+ this._editRecordOpen = true;
882
+ }
883
+ else {
884
+ this._alertOpen = true;
885
+ }
886
+ }
887
+ /**
888
+ * Go to the previous feature in the features widget
889
+ */
890
+ _back() {
891
+ this._features.previous();
892
+ this._count = this._getCount();
893
+ }
894
+ /**
895
+ * Go to the next feature in the features widget
896
+ */
897
+ _next() {
898
+ this._features.next();
899
+ this._count = this._getCount();
900
+ }
901
+ /**
902
+ * Get the current index of total string
903
+ *
904
+ * @returns the index of total string
905
+ */
906
+ _getCount() {
907
+ var _a, _b, _c;
908
+ const index = (((_a = this._features) === null || _a === void 0 ? void 0 : _a.viewModel.selectedFeatureIndex) + 1).toString();
909
+ const total = (_c = (_b = this._features) === null || _b === void 0 ? void 0 : _b.features) === null || _c === void 0 ? void 0 : _c.length.toString();
910
+ return this._translations.indexOfTotal
911
+ .replace("{{index}}", index)
912
+ .replace("{{total}}", total);
913
+ }
914
+ /**
915
+ * Toggle the visibility of the features list view
916
+ */
917
+ _toggleListView() {
918
+ this._showListView = !this._showListView;
919
+ const i = this._features.selectedFeatureIndex;
920
+ this._features.open({
921
+ features: this.graphics,
922
+ featureMenuOpen: this._showListView
923
+ });
924
+ this._features.selectedFeatureIndex = i;
925
+ }
926
+ /**
927
+ * Fetches the component's translations
928
+ *
929
+ * @returns Promise when complete
930
+ * @protected
931
+ */
932
+ async _getTranslations() {
933
+ const messages = await getLocaleComponentStrings(this.el);
934
+ this._translations = messages[0];
935
+ }
936
+ get el() { return getElement(this); }
937
+ static get watchers() { return {
938
+ "graphics": ["graphicsWatchHandler"],
939
+ "isMobile": ["isMobileWatchHandler"],
940
+ "mapView": ["mapViewWatchHandler"]
941
+ }; }
942
+ };
943
+ InfoCard.style = infoCardCss;
944
+
945
+ export { Alert as calcite_alert, DeleteButton as delete_button, EditCard as edit_card, InfoCard as info_card };
@@ -21,12 +21,11 @@ import { g as getIconScale } from './component-98bae46b.js';
21
21
  import { d as debounce } from './debounce-229b1a22.js';
22
22
  import { c as connectConditionalSlotComponent, d as disconnectConditionalSlotComponent } from './conditionalSlot-1149b5cb.js';
23
23
  import { i as isActivationKey } from './key-af303047.js';
24
- import { g as getLocaleComponentStrings } from './locale-13e3c96c.js';
24
+ import { g as getLocaleComponentStrings } from './locale-731e75a8.js';
25
25
  import { c as getMapLayerHash, o as getMapTableHash } from './mapViewUtils-6daedef8.js';
26
26
  import { s as state } from './publicNotificationStore-9362d7ae.js';
27
27
  import './resources-cdc36705.js';
28
28
  import './browser-b4c16201.js';
29
- import './loadModules-cea493da.js';
30
29
  import './esri-loader-eda07632.js';
31
30
  import './_commonjsHelpers-d5f9d613.js';
32
31
  import './interfaces-586e863c.js';
@@ -11,17 +11,16 @@ import { c as connectInteractive, u as updateHostInteraction, d as disconnectInt
11
11
  import { c as connectLocalized, d as disconnectLocalized } from './locale-6107ef11.js';
12
12
  import { c as connectMessages, s as setUpMessages, d as disconnectMessages, u as updateMessages } from './t9n-f16911e7.js';
13
13
  import { S as SLOTS$1 } from './resources-649a0f91.js';
14
- import { P as PopupUtils } from './popupUtils-b71f30fc.js';
14
+ import { P as PopupUtils } from './popupUtils-a593bd78.js';
15
15
  import { g as getLayerOrTable, b as getFeatureLayerView, h as highlightFeatures, c as getMapLayerHash, d as getAllLayers } from './mapViewUtils-6daedef8.js';
16
- import { g as getLocaleComponentStrings, f as formatNumber } from './locale-13e3c96c.js';
16
+ import { g as getLocaleComponentStrings, f as formatNumber } from './locale-731e75a8.js';
17
17
  import './guid-36c6c6a5.js';
18
18
  import './resources-cdc36705.js';
19
19
  import './browser-b4c16201.js';
20
20
  import './key-af303047.js';
21
- import './loadModules-cea493da.js';
21
+ import './interfaces-586e863c.js';
22
22
  import './esri-loader-eda07632.js';
23
23
  import './_commonjsHelpers-d5f9d613.js';
24
- import './interfaces-586e863c.js';
25
24
 
26
25
  /*!
27
26
  * All material copyright ESRI, All Rights Reserved, unless otherwise specified.
@@ -19,7 +19,7 @@ import { q as getItemIndex, m as mutationObserverCallback, d as deselectRemovedI
19
19
  import { d as dragActive, a as disconnectSortableComponent, c as connectSortableComponent } from './sortableComponent-65956286.js';
20
20
  import { C as CSS$5, S as SLOTS$3 } from './resources-13098091.js';
21
21
  import { I as ICON_TYPES$1 } from './resources-6772a50d.js';
22
- import { g as getLocaleComponentStrings } from './locale-13e3c96c.js';
22
+ import { g as getLocaleComponentStrings } from './locale-731e75a8.js';
23
23
  import { s as state } from './solution-store-19f7825b.js';
24
24
  import { d as EUpdateType } from './interfaces-586e863c.js';
25
25
  import { E as EFileType } from './solution-resource-7b8d302d.js';
@@ -29,7 +29,6 @@ import './browser-b4c16201.js';
29
29
  import './array-51c31356.js';
30
30
  import './resources-a0420cda.js';
31
31
  import './debounce-229b1a22.js';
32
- import './loadModules-cea493da.js';
33
32
  import './esri-loader-eda07632.js';
34
33
  import './_commonjsHelpers-d5f9d613.js';
35
34
  import './index-857df22e.js';
@@ -4,13 +4,12 @@
4
4
  * http://www.apache.org/licenses/LICENSE-2.0
5
5
  */
6
6
  import { r as registerInstance, h, H as Host, g as getElement, c as createEvent } from './index-7183ce4a.js';
7
- import { g as getLocaleComponentStrings } from './locale-13e3c96c.js';
7
+ import { g as getLocaleComponentStrings, l as loadModules } from './locale-731e75a8.js';
8
8
  import { q as queryFeaturesByID, g as getLayerOrTable, a as goToSelection, e as queryAllIds, f as queryFeatureIds, i as queryFeaturesByGlobalID } from './mapViewUtils-6daedef8.js';
9
- import { l as loadModules } from './loadModules-cea493da.js';
10
- import { d as downloadCSV } from './downloadUtils-067dc2ff.js';
11
- import './interfaces-586e863c.js';
9
+ import { d as downloadCSV } from './downloadUtils-a301c193.js';
12
10
  import './esri-loader-eda07632.js';
13
11
  import './_commonjsHelpers-d5f9d613.js';
12
+ import './interfaces-586e863c.js';
14
13
  import './solution-resource-7b8d302d.js';
15
14
  import './index-a1e91462.js';
16
15
  import './restHelpersGet-af032ab2.js';
@@ -1461,4 +1460,181 @@ const LayerTable = class {
1461
1460
  };
1462
1461
  LayerTable.style = layerTableCss;
1463
1462
 
1464
- export { CardManager as card_manager, LayerTable as layer_table };
1463
+ const mapCardCss = ":host{display:block;--calcite-label-margin-bottom:0;--calcite-block-padding:0}.map-height{height:calc(100% - 51px)}.height-full{height:100%}.box-shadow{box-shadow:none !important}.visibility-hidden{visibility:hidden}.display-none{display:none}";
1464
+
1465
+ const MapCard = class {
1466
+ constructor(hostRef) {
1467
+ registerInstance(this, hostRef);
1468
+ this.mapChanged = createEvent(this, "mapChanged", 7);
1469
+ this.beforeMapChanged = createEvent(this, "beforeMapChanged", 7);
1470
+ /**
1471
+ * boolean: When true the default map provided via url params has been loaded and should no longer override other maps
1472
+ */
1473
+ this._defaultWebmapHonored = false;
1474
+ /**
1475
+ * string: the id of map currently displayed
1476
+ */
1477
+ this._loadedId = "";
1478
+ this.defaultWebmapId = "";
1479
+ this.enableHome = undefined;
1480
+ this.enableLegend = undefined;
1481
+ this.enableFloorFilter = undefined;
1482
+ this.enableFullscreen = undefined;
1483
+ this.enableSingleExpand = true;
1484
+ this.enableSearch = undefined;
1485
+ this.enableBasemap = undefined;
1486
+ this.basemapConfig = undefined;
1487
+ this.hidden = undefined;
1488
+ this.homeZoomIndex = 3;
1489
+ this.homeZoomPosition = "top-left";
1490
+ this.homeZoomToolsSize = "m";
1491
+ this.mapInfos = [];
1492
+ this.mapWidgetsIndex = 0;
1493
+ this.mapWidgetsPosition = "top-right";
1494
+ this.mapWidgetsSize = "m";
1495
+ this.mapView = undefined;
1496
+ this.stackTools = true;
1497
+ this.theme = undefined;
1498
+ this.toolOrder = undefined;
1499
+ this._searchConfiguration = undefined;
1500
+ this._webMapInfo = undefined;
1501
+ }
1502
+ //--------------------------------------------------------------------------
1503
+ //
1504
+ // Watch handlers
1505
+ //
1506
+ //--------------------------------------------------------------------------
1507
+ /**
1508
+ * Add/remove home widget
1509
+ */
1510
+ enableHomeWatchHandler() {
1511
+ this._initHome();
1512
+ }
1513
+ /**
1514
+ * Listen for changes to map info and load the appropriate map
1515
+ */
1516
+ async mapInfoChange(evt) {
1517
+ await this._loadMap(evt.detail);
1518
+ }
1519
+ //--------------------------------------------------------------------------
1520
+ //
1521
+ // Functions (lifecycle)
1522
+ //
1523
+ //--------------------------------------------------------------------------
1524
+ /**
1525
+ * StencilJS: Called once just after the component is first connected to the DOM.
1526
+ */
1527
+ async componentWillLoad() {
1528
+ await this._initModules();
1529
+ }
1530
+ /**
1531
+ * Renders the component.
1532
+ */
1533
+ render() {
1534
+ var _a, _b;
1535
+ const mapClass = this.hidden ? "visibility-hidden" : "";
1536
+ const themeClass = this.theme === "dark" ? "calcite-mode-dark" : "calcite-mode-light";
1537
+ const mapPickerClass = ((_a = this.mapInfos) === null || _a === void 0 ? void 0 : _a.length) > 1 ? "" : "display-none";
1538
+ const mapHeightClass = ((_b = this.mapInfos) === null || _b === void 0 ? void 0 : _b.length) > 1 ? "map-height" : "height-full";
1539
+ return (h(Host, null, h("map-picker", { class: mapPickerClass, mapInfos: this.mapInfos, ref: (el) => this._mapPicker = el }), h("div", { class: `${mapHeightClass} ${mapClass}`, ref: (el) => (this._mapDiv = el) }), h("map-tools", { basemapConfig: this.basemapConfig, class: `box-shadow ${themeClass}`, enableBasemap: this.enableBasemap, enableFloorFilter: this.enableFloorFilter, enableFullscreen: this.enableFullscreen, enableHome: this.enableHome, enableLegend: this.enableLegend, enableSearch: this.enableSearch, enableSingleExpand: this.enableSingleExpand, homeZoomToolsSize: this.homeZoomToolsSize, mapView: this.mapView, mapWidgetsSize: this.mapWidgetsSize, position: this.mapWidgetsPosition, ref: (el) => this._mapTools = el, searchConfiguration: this._searchConfiguration, stackTools: this.stackTools, toolOrder: this.toolOrder })));
1540
+ }
1541
+ //--------------------------------------------------------------------------
1542
+ //
1543
+ // Functions (protected)
1544
+ //
1545
+ //--------------------------------------------------------------------------
1546
+ /**
1547
+ * Load esri javascript api modules
1548
+ *
1549
+ * @returns Promise resolving when function is done
1550
+ *
1551
+ * @protected
1552
+ */
1553
+ async _initModules() {
1554
+ const [WebMap, MapView, Home] = await loadModules([
1555
+ "esri/WebMap",
1556
+ "esri/views/MapView",
1557
+ "esri/widgets/Home"
1558
+ ]);
1559
+ this.WebMap = WebMap;
1560
+ this.MapView = MapView;
1561
+ this.Home = Home;
1562
+ }
1563
+ /**
1564
+ * Load the webmap for the provided webMapInfo
1565
+ *
1566
+ * @param webMapInfo the webmap id and name to load
1567
+ */
1568
+ async _loadMap(webMapInfo) {
1569
+ var _a;
1570
+ // on the first render use the default webmap id if provided otherwise use the first child of the provided mapInfos
1571
+ const loadDefaultMap = !this._defaultWebmapHonored && this.defaultWebmapId;
1572
+ const defaultMap = (_a = this.mapInfos) === null || _a === void 0 ? void 0 : _a.filter(i => i.id === this.defaultWebmapId);
1573
+ const mapConfigChanged = JSON.stringify(webMapInfo) !== JSON.stringify(this._webMapInfo);
1574
+ this._webMapInfo = loadDefaultMap && defaultMap ? defaultMap[0] :
1575
+ !(webMapInfo === null || webMapInfo === void 0 ? void 0 : webMapInfo.id) && this.mapInfos.length > 0 ? this.mapInfos[0] : webMapInfo;
1576
+ const id = this._webMapInfo.id;
1577
+ const isDefaultMap = loadDefaultMap && (webMapInfo === null || webMapInfo === void 0 ? void 0 : webMapInfo.id) === this.defaultWebmapId;
1578
+ if ((this._loadedId !== id && !loadDefaultMap) || isDefaultMap) {
1579
+ const webMap = new this.WebMap({
1580
+ portalItem: { id }
1581
+ });
1582
+ this.mapView = new this.MapView({
1583
+ container: this._mapDiv,
1584
+ map: webMap,
1585
+ resizeAlign: "center"
1586
+ });
1587
+ this._loadedId = id;
1588
+ this._searchConfiguration = this._webMapInfo.searchConfiguration;
1589
+ this.beforeMapChanged.emit();
1590
+ await this.mapView.when(() => {
1591
+ this._initHome();
1592
+ this.mapView.ui.add(this._mapTools, { position: this.mapWidgetsPosition, index: this.mapWidgetsIndex });
1593
+ this._defaultWebmapHonored = isDefaultMap ? true : this._defaultWebmapHonored;
1594
+ this.mapChanged.emit({
1595
+ id: id,
1596
+ mapView: this.mapView
1597
+ });
1598
+ });
1599
+ }
1600
+ else if (loadDefaultMap) {
1601
+ this._defaultWebmapHonored = true;
1602
+ this._mapPicker.setMapByID(id);
1603
+ }
1604
+ else if (mapConfigChanged) {
1605
+ // Map is the same so no need to reload but we need to update for any changes from the config
1606
+ this._searchConfiguration = this._webMapInfo.searchConfiguration;
1607
+ this.beforeMapChanged.emit();
1608
+ this.mapChanged.emit({
1609
+ id: id,
1610
+ mapView: this.mapView
1611
+ });
1612
+ }
1613
+ }
1614
+ /**
1615
+ * Add/remove the home widget base on enableHome prop
1616
+ *
1617
+ * @protected
1618
+ */
1619
+ _initHome() {
1620
+ if (this.enableHome) {
1621
+ this._homeWidget = new this.Home({
1622
+ view: this.mapView
1623
+ });
1624
+ this.mapView.ui.add(this._homeWidget, { position: this.homeZoomPosition, index: this.homeZoomIndex });
1625
+ const size = this.homeZoomToolsSize === "s" ? "32px" : this.homeZoomToolsSize === "m" ? "40px" : "48px";
1626
+ this._homeWidget.domNode.style.height = size;
1627
+ this._homeWidget.domNode.style.width = size;
1628
+ }
1629
+ else if (this._homeWidget) {
1630
+ this.mapView.ui.remove(this._homeWidget);
1631
+ }
1632
+ }
1633
+ get el() { return getElement(this); }
1634
+ static get watchers() { return {
1635
+ "enableHome": ["enableHomeWatchHandler"]
1636
+ }; }
1637
+ };
1638
+ MapCard.style = mapCardCss;
1639
+
1640
+ export { CardManager as card_manager, LayerTable as layer_table, MapCard as map_card };
@@ -4,10 +4,9 @@
4
4
  * http://www.apache.org/licenses/LICENSE-2.0
5
5
  */
6
6
  import { r as registerInstance, h, H as Host, g as getElement } from './index-7183ce4a.js';
7
- import { g as getLocaleComponentStrings } from './locale-13e3c96c.js';
7
+ import { g as getLocaleComponentStrings } from './locale-731e75a8.js';
8
8
  import { E as ELayoutMode } from './interfaces-586e863c.js';
9
9
  import { g as getLayerOrTable } from './mapViewUtils-6daedef8.js';
10
- import './loadModules-cea493da.js';
11
10
  import './esri-loader-eda07632.js';
12
11
  import './_commonjsHelpers-d5f9d613.js';
13
12