@esri/solutions-components 0.7.24 → 0.7.25

Sign up to get free protection for your applications and to get access to all the features.
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