@esri/solutions-components 0.10.33 → 0.10.34

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. package/dist/cjs/card-manager_3.cjs.entry.js +97 -4
  2. package/dist/cjs/crowdsource-manager.cjs.entry.js +13 -4
  3. package/dist/cjs/instant-apps-time-filter.cjs.entry.js +2 -2
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/solutions-components.cjs.js +1 -1
  6. package/dist/collection/assets/t9n/map-card/resources.json +2 -1
  7. package/dist/collection/assets/t9n/map-card/resources_en.json +2 -1
  8. package/dist/collection/components/crowdsource-manager/crowdsource-manager.js +36 -4
  9. package/dist/collection/components/layer-table/layer-table.js +36 -2
  10. package/dist/collection/components/map-card/map-card.js +168 -2
  11. package/dist/components/crowdsource-manager.js +14 -4
  12. package/dist/components/instant-apps-time-filter.js +2 -2
  13. package/dist/components/layer-table2.js +13 -2
  14. package/dist/components/map-card2.js +157 -60
  15. package/dist/esm/card-manager_3.entry.js +97 -4
  16. package/dist/esm/crowdsource-manager.entry.js +13 -4
  17. package/dist/esm/instant-apps-time-filter.entry.js +2 -2
  18. package/dist/esm/loader.js +1 -1
  19. package/dist/esm/solutions-components.js +1 -1
  20. package/dist/solutions-components/assets/t9n/map-card/resources.json +2 -1
  21. package/dist/solutions-components/assets/t9n/map-card/resources_en.json +2 -1
  22. package/dist/solutions-components/p-3a513c67.entry.js +6 -0
  23. package/dist/solutions-components/p-8d2d66d0.entry.js +6 -0
  24. package/dist/solutions-components/p-cf878a34.entry.js +6 -0
  25. package/dist/solutions-components/solutions-components.esm.js +1 -1
  26. package/dist/types/components/crowdsource-manager/crowdsource-manager.d.ts +8 -0
  27. package/dist/types/components/layer-table/layer-table.d.ts +9 -1
  28. package/dist/types/components/map-card/map-card.d.ts +46 -1
  29. package/dist/types/components.d.ts +48 -0
  30. package/package.json +2 -2
  31. package/dist/solutions-components/p-084719d6.entry.js +0 -6
  32. package/dist/solutions-components/p-3bcdf332.entry.js +0 -6
  33. package/dist/solutions-components/p-710bd9ec.entry.js +0 -6
@@ -5,5 +5,6 @@
5
5
  "zoom": "Zoom",
6
6
  "refresh": "Refresh",
7
7
  "editMultiple": "Edit multiple",
8
- "clearSelection": "Clear selection"
8
+ "clearSelection": "Clear selection",
9
+ "share": "Share"
9
10
  }
@@ -5,5 +5,6 @@
5
5
  "zoom": "Zoom",
6
6
  "refresh": "Refresh",
7
7
  "editMultiple": "Edit multiple",
8
- "clearSelection": "Clear selection"
8
+ "clearSelection": "Clear selection",
9
+ "share": "Share"
9
10
  }
@@ -29,6 +29,7 @@ export class CrowdsourceManager {
29
29
  this.basemapConfig = undefined;
30
30
  this.coverPageEnabled = undefined;
31
31
  this.customInfoText = undefined;
32
+ this.defaultAppLayout = undefined;
32
33
  this.defaultCenter = "";
33
34
  this.defaultGlobalId = "";
34
35
  this.defaultLayer = "";
@@ -89,6 +90,10 @@ export class CrowdsourceManager {
89
90
  // Properties (protected)
90
91
  //
91
92
  //--------------------------------------------------------------------------
93
+ /**
94
+ * boolean: When true the default appLayout has been applied and should no longer override
95
+ */
96
+ _defaultAppLayoutHonored = false;
92
97
  /**
93
98
  * boolean: When true the map view will be set after render due to popup obstructing the view
94
99
  * MapView.when is not fired when mapView is not currently visible
@@ -238,7 +243,7 @@ export class CrowdsourceManager {
238
243
  render() {
239
244
  // only avoid border when we have a header color that is not white
240
245
  const borderClass = this.popupHeaderColor && this.popupHeaderColor !== "#FFFFFF" ? "border-width-0" : "";
241
- return (h(Host, { key: '797519a81cbac4330519ad114ca127efb4284b84' }, h("calcite-shell", { key: '253b4a3610a1b448e7db95dbdba9bfe931911d85', class: "position-relative" }, h("calcite-panel", { key: 'ed07e564d0ec7749121201f0e5fc64885d7794f9', class: `width-full height-full ${borderClass}`, loading: this._isLoading }, this._getBody(this._layoutMode, this._panelOpen, this._hideTable)), this._getFooter()), this._filterModal()));
246
+ return (h(Host, { key: 'ddb8bb35d74ab89ffd62d7bd0468b5a757fa5ba1' }, h("calcite-shell", { key: '74d941a3b1d4149a57c88cea263a2fd7e2b4f840', class: "position-relative" }, h("calcite-panel", { key: '3ff44942eab43c6f3a1cd92c918c0e2bae3d500a', class: `width-full height-full ${borderClass}`, loading: this._isLoading }, this._getBody(this._layoutMode, this._panelOpen, this._hideTable)), this._getFooter()), this._filterModal()));
242
247
  }
243
248
  /**
244
249
  * Called after each render
@@ -257,7 +262,11 @@ export class CrowdsourceManager {
257
262
  */
258
263
  async componentDidLoad() {
259
264
  this._resizeObserver.observe(this.el);
260
- if (this.hideMapOnLoad && !this.appLayout) {
265
+ if (!this._defaultAppLayoutHonored && this.defaultAppLayout) {
266
+ this._defaultAppLayoutHonored = true;
267
+ this.appLayout = this.defaultAppLayout;
268
+ }
269
+ else if (this.hideMapOnLoad && !this.appLayout) {
261
270
  this.appLayout = 'tableView';
262
271
  }
263
272
  else if (!this.appLayout) {
@@ -433,7 +442,7 @@ export class CrowdsourceManager {
433
442
  const isTableLayout = this.appLayout === 'tableView';
434
443
  const mapContainerClass = (isMapLayout || isTableLayout) ? "position-absolute-0" : this._layoutMode === ELayoutMode.HORIZONTAL && (!this._isPortraitMobile || panelOpen) ? "" : "adjusted-height-50";
435
444
  const hasMapAndLayer = this.defaultWebmap && this.defaultLayer;
436
- return (h("div", { class: `${mapContainerClass} overflow-hidden`, id: "card-mapView" }, h("map-card", { appProxies: this.appProxies, basemapConfig: this.basemapConfig, class: "width-full", defaultLayerId: hasMapAndLayer ? this.defaultLayer : "", defaultWebmapId: this.defaultWebmap, enableBasemap: this.enableBasemap, enableFloorFilter: this.enableFloorFilter, enableFullscreen: this.enableFullscreen, enableHome: this.enableHome, enableLegend: this.enableLegend, enableSearch: this.enableSearch, enableSingleExpand: true, hidden: !this._isPortraitMobile && isTableLayout, homeZoomIndex: 3, homeZoomPosition: "top-left", homeZoomToolsSize: "s", isMapLayout: isMapLayout, isMobile: this._isMobile, mapInfo: this._mapInfo, mapInfos: this.mapInfos?.filter(mapInfo => mapInfo.visible !== false), mapWidgetsIndex: 0, mapWidgetsPosition: "top-right", mapWidgetsSize: "m", onToggleFilter: this._toggleFilter.bind(this), onlyShowUpdatableLayers: this.onlyShowUpdatableLayers, ref: (el) => this._mapCard = el, selectedFeaturesIds: this._layerTable?.selectedIds, selectedLayer: this._layer, stackTools: true, theme: this.theme, toolOrder: ["legend", "search", "fullscreen", "basemap", "floorfilter"], zoomToScale: this.zoomToScale })));
445
+ return (h("div", { class: `${mapContainerClass} overflow-hidden`, id: "card-mapView" }, h("map-card", { appLayout: this.appLayout, appProxies: this.appProxies, basemapConfig: this.basemapConfig, class: "width-full", defaultLayerId: hasMapAndLayer ? this.defaultLayer : "", defaultWebmapId: this.defaultWebmap, enableBasemap: this.enableBasemap, enableFloorFilter: this.enableFloorFilter, enableFullscreen: this.enableFullscreen, enableHome: this.enableHome, enableLegend: this.enableLegend, enableSearch: this.enableSearch, enableShare: this.enableShare, enableSingleExpand: true, hidden: !this._isPortraitMobile && isTableLayout, homeZoomIndex: 3, homeZoomPosition: "top-left", homeZoomToolsSize: "s", isMapLayout: isMapLayout, isMobile: this._isMobile, mapInfo: this._mapInfo, mapInfos: this.mapInfos?.filter(mapInfo => mapInfo.visible !== false), mapWidgetsIndex: 0, mapWidgetsPosition: "top-right", mapWidgetsSize: "m", onToggleFilter: this._toggleFilter.bind(this), onlyShowUpdatableLayers: this.onlyShowUpdatableLayers, ref: (el) => this._mapCard = el, selectedFeaturesIds: this._layerTable?.selectedIds, selectedLayer: this._layer, shareIncludeEmbed: this.shareIncludeEmbed, shareIncludeSocial: this.shareIncludeSocial, stackTools: true, theme: this.theme, toolOrder: ["legend", "search", "fullscreen", "basemap", "floorfilter"], zoomToScale: this.zoomToScale })));
437
446
  }
438
447
  /**
439
448
  * Get the expand node for the popup information
@@ -495,7 +504,7 @@ export class CrowdsourceManager {
495
504
  this.defaultGlobalId?.indexOf(",") > -1 ? this.defaultGlobalId.split(",") : [this.defaultGlobalId];
496
505
  const defaultOid = !this.defaultOid ? undefined :
497
506
  this.defaultOid?.indexOf(",") > -1 ? this.defaultOid.split(",").map(o => parseInt(o, 10)) : [parseInt(this.defaultOid, 10)];
498
- return (h("calcite-shell", { class: `${tableSizeClass} border-bottom` }, !this._isMobile ? (h("calcite-action-bar", { class: "border-sides", expandDisabled: true, layout: toggleLayout, slot: toggleSlot }, this.getActions(layoutMode, panelOpen))) : undefined, h("div", { class: `width-full height-full position-relative z-index-0 ${tableClass}` }, h("layer-table", { createFilterModal: false, defaultGlobalId: hasMapAndLayer ? globalId : undefined, defaultLayerId: hasMapAndLayer ? this.defaultLayer : "", defaultOid: hasMapAndLayer && !globalId ? defaultOid : undefined, enableAutoRefresh: this.enableAutoRefresh, enableCSV: this.enableCSV, enableColumnReorder: this.enableColumnReorder, enableInlineEdit: this?._mapInfo?.enableInlineEdit, enableShare: this.enableShare, isMobile: this._isPortraitMobile, mapHidden: isTableLayout, mapInfo: this._mapInfo, mapView: this?._mapView, onToggleFilter: this._toggleFilter.bind(this), onlyShowUpdatableLayers: this.onlyShowUpdatableLayers, ref: (el) => this._layerTable = el, shareIncludeEmbed: this.shareIncludeEmbed, shareIncludeSocial: this.shareIncludeSocial, showNewestFirst: this.showNewestFirst, zoomAndScrollToSelected: this.zoomAndScrollToSelected, zoomToScale: this.zoomToScale })), h("div", { class: mapClass, id: "full-map-view" })));
507
+ return (h("calcite-shell", { class: `${tableSizeClass} border-bottom` }, !this._isMobile ? (h("calcite-action-bar", { class: "border-sides", expandDisabled: true, layout: toggleLayout, slot: toggleSlot }, this.getActions(layoutMode, panelOpen))) : undefined, h("div", { class: `width-full height-full position-relative z-index-0 ${tableClass}` }, h("layer-table", { appLayout: this.appLayout, createFilterModal: false, defaultGlobalId: hasMapAndLayer ? globalId : undefined, defaultLayerId: hasMapAndLayer ? this.defaultLayer : "", defaultOid: hasMapAndLayer && !globalId ? defaultOid : undefined, enableAutoRefresh: this.enableAutoRefresh, enableCSV: this.enableCSV, enableColumnReorder: this.enableColumnReorder, enableInlineEdit: this?._mapInfo?.enableInlineEdit, enableShare: this.enableShare, isMobile: this._isPortraitMobile, mapHidden: isTableLayout, mapInfo: this._mapInfo, mapView: this?._mapView, onToggleFilter: this._toggleFilter.bind(this), onlyShowUpdatableLayers: this.onlyShowUpdatableLayers, ref: (el) => this._layerTable = el, shareIncludeEmbed: this.shareIncludeEmbed, shareIncludeSocial: this.shareIncludeSocial, showNewestFirst: this.showNewestFirst, zoomAndScrollToSelected: this.zoomAndScrollToSelected, zoomToScale: this.zoomToScale })), h("div", { class: mapClass, id: "full-map-view" })));
499
508
  }
500
509
  /**
501
510
  * Returns the Actions for table's node
@@ -828,6 +837,29 @@ export class CrowdsourceManager {
828
837
  "attribute": "custom-info-text",
829
838
  "reflect": false
830
839
  },
840
+ "defaultAppLayout": {
841
+ "type": "string",
842
+ "mutable": false,
843
+ "complexType": {
844
+ "original": "AppLayout",
845
+ "resolved": "\"mapView\" | \"splitView\" | \"tableView\"",
846
+ "references": {
847
+ "AppLayout": {
848
+ "location": "import",
849
+ "path": "../../utils/interfaces",
850
+ "id": "src/utils/interfaces.ts::AppLayout"
851
+ }
852
+ }
853
+ },
854
+ "required": false,
855
+ "optional": false,
856
+ "docs": {
857
+ "tags": [],
858
+ "text": "string: default layout the application should use"
859
+ },
860
+ "attribute": "default-app-layout",
861
+ "reflect": false
862
+ },
831
863
  "defaultCenter": {
832
864
  "type": "string",
833
865
  "mutable": false,
@@ -27,6 +27,7 @@ import * as downloadUtils from "../../utils/downloadUtils";
27
27
  import "@esri/instant-apps-components/dist/components/instant-apps-social-share";
28
28
  export class LayerTable {
29
29
  constructor() {
30
+ this.appLayout = undefined;
30
31
  this.defaultGlobalId = undefined;
31
32
  this.defaultLayerId = undefined;
32
33
  this.defaultOid = undefined;
@@ -235,6 +236,12 @@ export class LayerTable {
235
236
  // Watch handlers
236
237
  //
237
238
  //--------------------------------------------------------------------------
239
+ /**
240
+ * Update the url params when the appLayout changes
241
+ */
242
+ appLayoutWatchHandler() {
243
+ this._updateShareUrl();
244
+ }
238
245
  /**
239
246
  * Handle url defaults when defaultOid is set
240
247
  */
@@ -521,8 +528,8 @@ export class LayerTable {
521
528
  const tableHeightClass = this.isMobile ? "height-full" : "height-full-adjusted";
522
529
  const showSearch = this._canShowFullTextSearch();
523
530
  this._validateActiveActions();
524
- return (h(Host, { key: '46394d7e108068600980efd766fbf5d91243f3c9' }, h("calcite-shell", { key: 'd831121a56070552139386033b02ddc2531c29e9' }, this._getTableControlRow("header"), h("div", { key: '591e0b0bba19f1dbe99049a470b5d3c04253a2c2', class: `width-full ${tableHeightClass}` }, h("calcite-panel", { key: 'd70244a3c989a5bea8bbbaf33c4ebe9c04fc4515', class: "height-full width-full" }, showSearch &&
525
- h("div", { key: 'fd14c6dab7898e27bd61bbc03878c898d26f042a', class: "search-container" }, h("calcite-input", { key: '9675cc22233456446be8a6b9fc24842fbb3f88e2', class: "search", clearable: true, icon: "search", onCalciteInputChange: (evt) => void this._searchTextChanged(evt), placeholder: this._searchPlaceHolder, title: this._searchPlaceHolder, type: "search" })), h("calcite-loader", { key: '74447458a0ac4cee6934e7101a5fee2c180d1330', class: loadingClass, label: this._translations.fetchingData, scale: "l" }), h("div", { key: '6c2a5ff4a69690fde002005eb9c55047c25ad63d', class: tableNodeClass, ref: this.onTableNodeCreate }))), !this.isMobile ? (h("div", { class: "bottom-left text-color height-19" }, this._translations.recordsSelected
531
+ return (h(Host, { key: 'aa79d91e6c569393334a38f937a493de227a0e5b' }, h("calcite-shell", { key: '4b7460fc764c5a6027ad5aa8da826bd188e5490e' }, this._getTableControlRow("header"), h("div", { key: '66ea361c6c2c3a5d05c4403a5d3dd1dea5a9e70b', class: `width-full ${tableHeightClass}` }, h("calcite-panel", { key: 'b213a696294c94504f394b54082f0183b46691ce', class: "height-full width-full" }, showSearch &&
532
+ h("div", { key: '866dd2a69bc9e504b459ca8639d13f5babfa65fa', class: "search-container" }, h("calcite-input", { key: '26f80276d08106981ef8c769fd4334528a37d881', class: "search", clearable: true, icon: "search", onCalciteInputChange: (evt) => void this._searchTextChanged(evt), placeholder: this._searchPlaceHolder, title: this._searchPlaceHolder, type: "search" })), h("calcite-loader", { key: 'a3d2e215cee3e370ef5645b6422c95eef32beedf', class: loadingClass, label: this._translations.fetchingData, scale: "l" }), h("div", { key: 'e48c86ee1ebcc23121eab08903e55cc41270c4c8', class: tableNodeClass, ref: this.onTableNodeCreate }))), !this.isMobile ? (h("div", { class: "bottom-left text-color height-19" }, this._translations.recordsSelected
526
533
  .replace("{{total}}", total)
527
534
  .replace("{{selected}}", selected))) : undefined), this.createFilterModal && this._filterModal()));
528
535
  }
@@ -1131,6 +1138,7 @@ export class LayerTable {
1131
1138
  else {
1132
1139
  urlObj.searchParams.delete("oid");
1133
1140
  }
1141
+ urlObj.searchParams.set("applayout", this.appLayout);
1134
1142
  this._shareNode.shareUrl = urlObj.href;
1135
1143
  }
1136
1144
  /**
@@ -1887,6 +1895,29 @@ export class LayerTable {
1887
1895
  }
1888
1896
  static get properties() {
1889
1897
  return {
1898
+ "appLayout": {
1899
+ "type": "string",
1900
+ "mutable": false,
1901
+ "complexType": {
1902
+ "original": "AppLayout",
1903
+ "resolved": "\"mapView\" | \"splitView\" | \"tableView\"",
1904
+ "references": {
1905
+ "AppLayout": {
1906
+ "location": "import",
1907
+ "path": "../../utils/interfaces",
1908
+ "id": "src/utils/interfaces.ts::AppLayout"
1909
+ }
1910
+ }
1911
+ },
1912
+ "required": false,
1913
+ "optional": false,
1914
+ "docs": {
1915
+ "tags": [],
1916
+ "text": "AppLayout: the current app layout"
1917
+ },
1918
+ "attribute": "app-layout",
1919
+ "reflect": false
1920
+ },
1890
1921
  "defaultGlobalId": {
1891
1922
  "type": "unknown",
1892
1923
  "mutable": false,
@@ -2360,6 +2391,9 @@ export class LayerTable {
2360
2391
  static get elementRef() { return "el"; }
2361
2392
  static get watchers() {
2362
2393
  return [{
2394
+ "propName": "appLayout",
2395
+ "methodName": "appLayoutWatchHandler"
2396
+ }, {
2363
2397
  "propName": "defaultOid",
2364
2398
  "methodName": "defaultOidWatchHandler"
2365
2399
  }, {
@@ -23,6 +23,7 @@ import { loadModules } from "../../utils/loadModules";
23
23
  import { joinAppProxies } from "templates-common-library-esm/functionality/proxy";
24
24
  import { getLocaleComponentStrings } from "../../utils/locale";
25
25
  import { getFeatureLayerView, goToSelection } from "../../utils/mapViewUtils";
26
+ import "@esri/instant-apps-components/dist/components/instant-apps-social-share";
26
27
  // TODO navigation and accessability isn't right for the map list
27
28
  // tab does not go into the list when it's open
28
29
  // focus is not set when it opens
@@ -31,6 +32,7 @@ import { getFeatureLayerView, goToSelection } from "../../utils/mapViewUtils";
31
32
  // TODO map list should close if the user clicks something else...hope this will be easy when I figure out how to set focus when it opens
32
33
  export class MapCard {
33
34
  constructor() {
35
+ this.appLayout = undefined;
34
36
  this.appProxies = undefined;
35
37
  this.defaultWebmapId = "";
36
38
  this.defaultLayerId = undefined;
@@ -38,6 +40,7 @@ export class MapCard {
38
40
  this.enableLegend = undefined;
39
41
  this.enableFloorFilter = undefined;
40
42
  this.enableFullscreen = undefined;
43
+ this.enableShare = false;
41
44
  this.enableSingleExpand = true;
42
45
  this.enableSearch = undefined;
43
46
  this.enableBasemap = undefined;
@@ -55,6 +58,8 @@ export class MapCard {
55
58
  this.theme = undefined;
56
59
  this.toolOrder = undefined;
57
60
  this.isMapLayout = undefined;
61
+ this.shareIncludeEmbed = undefined;
62
+ this.shareIncludeSocial = undefined;
58
63
  this.selectedFeaturesIds = undefined;
59
64
  this.selectedLayer = undefined;
60
65
  this.zoomToScale = undefined;
@@ -143,6 +148,10 @@ export class MapCard {
143
148
  * ResizeObserver: The observer that watches for toolbar size changes
144
149
  */
145
150
  _resizeObserver;
151
+ /**
152
+ * HTMLInstantAppsSocialShareElement: Element to support app sharing to social media
153
+ */
154
+ _shareNode;
146
155
  /**
147
156
  * HTMLCalciteDropdownElement: Dropdown the will support show/hide of table columns
148
157
  */
@@ -172,12 +181,36 @@ export class MapCard {
172
181
  // Watch handlers
173
182
  //
174
183
  //--------------------------------------------------------------------------
184
+ /**
185
+ * Update the url params when the appLayout changes
186
+ */
187
+ appLayoutWatchHandler() {
188
+ this._updateShareUrl();
189
+ }
175
190
  /**
176
191
  * Add/remove home widget
177
192
  */
178
193
  enableHomeWatchHandler() {
179
194
  this._initHome();
180
195
  }
196
+ /**
197
+ * Update the toolbar when the share button is enabled/disabled
198
+ */
199
+ enableShareWatchHandler() {
200
+ // this should be caught by component did render and is when I test locally
201
+ // however have had reported case where it is not somehow on devext so adding explicit check here
202
+ if (this._toolbar) {
203
+ this._updateToolbar();
204
+ }
205
+ }
206
+ /**
207
+ * watch for changes in map view and get the first layer
208
+ */
209
+ async mapViewWatchHandler() {
210
+ if (this.mapView) {
211
+ this._updateShareUrl();
212
+ }
213
+ }
181
214
  /**
182
215
  * watch for changes in layer view and verify if it has editing enabled
183
216
  */
@@ -190,6 +223,7 @@ export class MapCard {
190
223
  * watch for features ids changes
191
224
  */
192
225
  async selectedFeaturesIdsWatchHandler() {
226
+ this._updateShareUrl();
193
227
  this._validateEnabledActions();
194
228
  }
195
229
  /**
@@ -218,12 +252,14 @@ export class MapCard {
218
252
  */
219
253
  async resetFilter() {
220
254
  this._filterActive = false;
255
+ this._updateShareUrl();
221
256
  }
222
257
  /**
223
258
  * updates the filter
224
259
  */
225
260
  async updateFilterState() {
226
261
  this._filterActive = this._definitionExpression !== this.selectedLayer.definitionExpression;
262
+ this._updateShareUrl();
227
263
  }
228
264
  /**
229
265
  * updates the layer in map layer picker
@@ -299,7 +335,7 @@ export class MapCard {
299
335
  const mapHeightClass = this.mapInfos?.length > 1 || this.isMapLayout ? "map-height" : "height-full";
300
336
  const progressClass = this.isMapLayout ? "" : "display-none";
301
337
  this._validateActiveActions();
302
- return (h(Host, { key: '94d7399ed75c0e90487d6153a0d28ab6f722ae93' }, h("div", { key: 'e194d8800dd7a865e101d779d032d164f3e5562d', class: `${mapContainerClass} width-full`, ref: (el) => this._toolbar = el }, this._getActionBar(), !this.isMobile && this.isMapLayout && this._getDropdown("more-table-options")), h("calcite-progress", { key: '0abdbf4e8ba5861866aba7791dfdb91a7a5f4daa', class: progressClass, value: 0 }), h("div", { key: '83aa012aeef6ae64e49007d542fd949e7d4602f4', class: `${mapHeightClass} ${mapClass}`, ref: (el) => (this._mapDiv = el) }), h("map-tools", { key: '229cc18b36885cad12d44c13e1fe37a97403b9d8', 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 })));
338
+ return (h(Host, { key: '790599924cf104116f6961380103aef7c55e6d76' }, h("div", { key: '5467a5d4e3998807fdf243ada3088dba8e69941f', class: `${mapContainerClass} width-full`, ref: (el) => this._toolbar = el }, this._getActionBar(), !this.isMobile && this.isMapLayout && this._getDropdown("more-table-options"), this.enableShare && !this.isMobile && this.isMapLayout ? this._getShare("share") : undefined), h("calcite-progress", { key: '5c82042e0206be05e12d29ba588b26344b1017b8', class: progressClass, value: 0 }), h("div", { key: '0831bc4593f5a7680a8599a9868990734cb013b9', class: `${mapHeightClass} ${mapClass}`, ref: (el) => (this._mapDiv = el) }), h("map-tools", { key: '5bbf14428cc845d8b889e72d707672250f820686', 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 })));
303
339
  }
304
340
  /**
305
341
  * Called each time after the component is loaded
@@ -318,6 +354,7 @@ export class MapCard {
318
354
  this._resizeObserver.observe(this._toolbar);
319
355
  this._observerSet = true;
320
356
  }
357
+ this._updateShareUrl();
321
358
  }
322
359
  //--------------------------------------------------------------------------
323
360
  //
@@ -396,6 +433,7 @@ export class MapCard {
396
433
  mapView: this.mapView
397
434
  });
398
435
  }
436
+ this._updateShareUrl();
399
437
  }
400
438
  /**
401
439
  * Add/Remove tools from the action bar and dropdown based on available size
@@ -414,7 +452,7 @@ export class MapCard {
414
452
  prev += cur.width;
415
453
  return prev;
416
454
  }, 0);
417
- const skipControls = ["solutions-more", "solutions-map-layer-picker-container", "map-picker"];
455
+ const skipControls = ["solutions-more", "solutions-map-layer-picker-container", "map-picker", "solutions-action-share"];
418
456
  if (controlsWidth > toolbarWidth) {
419
457
  if (this._toolbarSizeInfos.length > 0) {
420
458
  const controlsThatFit = [...this._toolbarSizeInfos].reverse().reduce((prev, cur) => {
@@ -540,6 +578,50 @@ export class MapCard {
540
578
  return (h("calcite-dropdown-group", { class: item.disabled ? "disabled" : "", selectionMode: "none" }, h("calcite-dropdown-item", { disabled: item.loading, iconStart: item.icon, id: "solutions-subset-list", onClick: item.func }, item.loading ? (h("div", { class: "display-flex" }, h("calcite-loader", { inline: true, label: item.label, scale: "m" }), item.label)) : item.label)));
541
579
  })))) : undefined;
542
580
  }
581
+ /**
582
+ * Get an action and tooltip for share
583
+ *
584
+ * @param icon string the name of the icon to display, will also be used in its id
585
+ *
586
+ * @returns VNode The node representing the DOM element that will contain the action
587
+ */
588
+ _getShare(icon) {
589
+ return (h("div", { class: "share-action", id: this._getId(icon) }, h("instant-apps-social-share", { autoUpdateShareUrl: false, class: "instant-app-share", embed: this.shareIncludeEmbed, popoverButtonIconScale: "s", ref: el => {
590
+ this._shareNode = el;
591
+ this._updateShareUrl();
592
+ }, scale: "m", shareButtonColor: "neutral", shareButtonType: "action", socialMedia: this.shareIncludeSocial, view: this.mapView }), this._getToolTip("bottom", icon, this._translations.share)));
593
+ }
594
+ /**
595
+ * Called each time the values that are used for custom url params change
596
+ */
597
+ _updateShareUrl() {
598
+ const url = this._shareNode?.shareUrl;
599
+ if (!url) {
600
+ return;
601
+ }
602
+ const urlObj = new URL(url);
603
+ //set the additional search params
604
+ if (this._loadedId) {
605
+ urlObj.searchParams.set("webmap", this._loadedId);
606
+ }
607
+ else {
608
+ urlObj.searchParams.delete("webmap");
609
+ }
610
+ if (this.selectedLayer?.id) {
611
+ urlObj.searchParams.set("layer", this.selectedLayer.id);
612
+ }
613
+ else {
614
+ urlObj.searchParams.delete("layer");
615
+ }
616
+ if (this.selectedFeaturesIds?.length > 0) {
617
+ urlObj.searchParams.set("oid", this.selectedFeaturesIds.join(","));
618
+ }
619
+ else {
620
+ urlObj.searchParams.delete("oid");
621
+ }
622
+ urlObj.searchParams.set("applayout", this.appLayout);
623
+ this._shareNode.shareUrl = urlObj.href;
624
+ }
543
625
  /**
544
626
  * Open show/hide dropdown
545
627
  * @protected
@@ -827,6 +909,29 @@ export class MapCard {
827
909
  }
828
910
  static get properties() {
829
911
  return {
912
+ "appLayout": {
913
+ "type": "string",
914
+ "mutable": false,
915
+ "complexType": {
916
+ "original": "AppLayout",
917
+ "resolved": "\"mapView\" | \"splitView\" | \"tableView\"",
918
+ "references": {
919
+ "AppLayout": {
920
+ "location": "import",
921
+ "path": "../../utils/interfaces",
922
+ "id": "src/utils/interfaces.ts::AppLayout"
923
+ }
924
+ }
925
+ },
926
+ "required": false,
927
+ "optional": false,
928
+ "docs": {
929
+ "tags": [],
930
+ "text": "AppLayout: the current app layout"
931
+ },
932
+ "attribute": "app-layout",
933
+ "reflect": false
934
+ },
830
935
  "appProxies": {
831
936
  "type": "any",
832
937
  "mutable": false,
@@ -947,6 +1052,24 @@ export class MapCard {
947
1052
  "attribute": "enable-fullscreen",
948
1053
  "reflect": false
949
1054
  },
1055
+ "enableShare": {
1056
+ "type": "boolean",
1057
+ "mutable": false,
1058
+ "complexType": {
1059
+ "original": "boolean",
1060
+ "resolved": "boolean",
1061
+ "references": {}
1062
+ },
1063
+ "required": false,
1064
+ "optional": false,
1065
+ "docs": {
1066
+ "tags": [],
1067
+ "text": "boolean: when true the share widget will be available"
1068
+ },
1069
+ "attribute": "enable-share",
1070
+ "reflect": false,
1071
+ "defaultValue": "false"
1072
+ },
950
1073
  "enableSingleExpand": {
951
1074
  "type": "boolean",
952
1075
  "mutable": false,
@@ -1270,6 +1393,40 @@ export class MapCard {
1270
1393
  "attribute": "is-map-layout",
1271
1394
  "reflect": false
1272
1395
  },
1396
+ "shareIncludeEmbed": {
1397
+ "type": "boolean",
1398
+ "mutable": false,
1399
+ "complexType": {
1400
+ "original": "boolean",
1401
+ "resolved": "boolean",
1402
+ "references": {}
1403
+ },
1404
+ "required": false,
1405
+ "optional": false,
1406
+ "docs": {
1407
+ "tags": [],
1408
+ "text": "boolean: When true the share options will include embed option"
1409
+ },
1410
+ "attribute": "share-include-embed",
1411
+ "reflect": false
1412
+ },
1413
+ "shareIncludeSocial": {
1414
+ "type": "boolean",
1415
+ "mutable": false,
1416
+ "complexType": {
1417
+ "original": "boolean",
1418
+ "resolved": "boolean",
1419
+ "references": {}
1420
+ },
1421
+ "required": false,
1422
+ "optional": false,
1423
+ "docs": {
1424
+ "tags": [],
1425
+ "text": "boolean: When true the share options will include social media sharing"
1426
+ },
1427
+ "attribute": "share-include-social",
1428
+ "reflect": false
1429
+ },
1273
1430
  "selectedFeaturesIds": {
1274
1431
  "type": "unknown",
1275
1432
  "mutable": false,
@@ -1516,8 +1673,17 @@ export class MapCard {
1516
1673
  static get elementRef() { return "el"; }
1517
1674
  static get watchers() {
1518
1675
  return [{
1676
+ "propName": "appLayout",
1677
+ "methodName": "appLayoutWatchHandler"
1678
+ }, {
1519
1679
  "propName": "enableHome",
1520
1680
  "methodName": "enableHomeWatchHandler"
1681
+ }, {
1682
+ "propName": "enableShare",
1683
+ "methodName": "enableShareWatchHandler"
1684
+ }, {
1685
+ "propName": "mapView",
1686
+ "methodName": "mapViewWatchHandler"
1521
1687
  }, {
1522
1688
  "propName": "selectedLayer",
1523
1689
  "methodName": "selectedLayerWatchHandler"
@@ -81,6 +81,7 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
81
81
  this.basemapConfig = undefined;
82
82
  this.coverPageEnabled = undefined;
83
83
  this.customInfoText = undefined;
84
+ this.defaultAppLayout = undefined;
84
85
  this.defaultCenter = "";
85
86
  this.defaultGlobalId = "";
86
87
  this.defaultLayer = "";
@@ -136,6 +137,10 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
136
137
  // Properties (protected)
137
138
  //
138
139
  //--------------------------------------------------------------------------
140
+ /**
141
+ * boolean: When true the default appLayout has been applied and should no longer override
142
+ */
143
+ _defaultAppLayoutHonored = false;
139
144
  /**
140
145
  * boolean: When true the map view will be set after render due to popup obstructing the view
141
146
  * MapView.when is not fired when mapView is not currently visible
@@ -285,7 +290,7 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
285
290
  render() {
286
291
  // only avoid border when we have a header color that is not white
287
292
  const borderClass = this.popupHeaderColor && this.popupHeaderColor !== "#FFFFFF" ? "border-width-0" : "";
288
- return (h(Host, { key: '797519a81cbac4330519ad114ca127efb4284b84' }, h("calcite-shell", { key: '253b4a3610a1b448e7db95dbdba9bfe931911d85', class: "position-relative" }, h("calcite-panel", { key: 'ed07e564d0ec7749121201f0e5fc64885d7794f9', class: `width-full height-full ${borderClass}`, loading: this._isLoading }, this._getBody(this._layoutMode, this._panelOpen, this._hideTable)), this._getFooter()), this._filterModal()));
293
+ return (h(Host, { key: 'ddb8bb35d74ab89ffd62d7bd0468b5a757fa5ba1' }, h("calcite-shell", { key: '74d941a3b1d4149a57c88cea263a2fd7e2b4f840', class: "position-relative" }, h("calcite-panel", { key: '3ff44942eab43c6f3a1cd92c918c0e2bae3d500a', class: `width-full height-full ${borderClass}`, loading: this._isLoading }, this._getBody(this._layoutMode, this._panelOpen, this._hideTable)), this._getFooter()), this._filterModal()));
289
294
  }
290
295
  /**
291
296
  * Called after each render
@@ -304,7 +309,11 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
304
309
  */
305
310
  async componentDidLoad() {
306
311
  this._resizeObserver.observe(this.el);
307
- if (this.hideMapOnLoad && !this.appLayout) {
312
+ if (!this._defaultAppLayoutHonored && this.defaultAppLayout) {
313
+ this._defaultAppLayoutHonored = true;
314
+ this.appLayout = this.defaultAppLayout;
315
+ }
316
+ else if (this.hideMapOnLoad && !this.appLayout) {
308
317
  this.appLayout = 'tableView';
309
318
  }
310
319
  else if (!this.appLayout) {
@@ -480,7 +489,7 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
480
489
  const isTableLayout = this.appLayout === 'tableView';
481
490
  const mapContainerClass = (isMapLayout || isTableLayout) ? "position-absolute-0" : this._layoutMode === ELayoutMode.HORIZONTAL && (!this._isPortraitMobile || panelOpen) ? "" : "adjusted-height-50";
482
491
  const hasMapAndLayer = this.defaultWebmap && this.defaultLayer;
483
- return (h("div", { class: `${mapContainerClass} overflow-hidden`, id: "card-mapView" }, h("map-card", { appProxies: this.appProxies, basemapConfig: this.basemapConfig, class: "width-full", defaultLayerId: hasMapAndLayer ? this.defaultLayer : "", defaultWebmapId: this.defaultWebmap, enableBasemap: this.enableBasemap, enableFloorFilter: this.enableFloorFilter, enableFullscreen: this.enableFullscreen, enableHome: this.enableHome, enableLegend: this.enableLegend, enableSearch: this.enableSearch, enableSingleExpand: true, hidden: !this._isPortraitMobile && isTableLayout, homeZoomIndex: 3, homeZoomPosition: "top-left", homeZoomToolsSize: "s", isMapLayout: isMapLayout, isMobile: this._isMobile, mapInfo: this._mapInfo, mapInfos: this.mapInfos?.filter(mapInfo => mapInfo.visible !== false), mapWidgetsIndex: 0, mapWidgetsPosition: "top-right", mapWidgetsSize: "m", onToggleFilter: this._toggleFilter.bind(this), onlyShowUpdatableLayers: this.onlyShowUpdatableLayers, ref: (el) => this._mapCard = el, selectedFeaturesIds: this._layerTable?.selectedIds, selectedLayer: this._layer, stackTools: true, theme: this.theme, toolOrder: ["legend", "search", "fullscreen", "basemap", "floorfilter"], zoomToScale: this.zoomToScale })));
492
+ return (h("div", { class: `${mapContainerClass} overflow-hidden`, id: "card-mapView" }, h("map-card", { appLayout: this.appLayout, appProxies: this.appProxies, basemapConfig: this.basemapConfig, class: "width-full", defaultLayerId: hasMapAndLayer ? this.defaultLayer : "", defaultWebmapId: this.defaultWebmap, enableBasemap: this.enableBasemap, enableFloorFilter: this.enableFloorFilter, enableFullscreen: this.enableFullscreen, enableHome: this.enableHome, enableLegend: this.enableLegend, enableSearch: this.enableSearch, enableShare: this.enableShare, enableSingleExpand: true, hidden: !this._isPortraitMobile && isTableLayout, homeZoomIndex: 3, homeZoomPosition: "top-left", homeZoomToolsSize: "s", isMapLayout: isMapLayout, isMobile: this._isMobile, mapInfo: this._mapInfo, mapInfos: this.mapInfos?.filter(mapInfo => mapInfo.visible !== false), mapWidgetsIndex: 0, mapWidgetsPosition: "top-right", mapWidgetsSize: "m", onToggleFilter: this._toggleFilter.bind(this), onlyShowUpdatableLayers: this.onlyShowUpdatableLayers, ref: (el) => this._mapCard = el, selectedFeaturesIds: this._layerTable?.selectedIds, selectedLayer: this._layer, shareIncludeEmbed: this.shareIncludeEmbed, shareIncludeSocial: this.shareIncludeSocial, stackTools: true, theme: this.theme, toolOrder: ["legend", "search", "fullscreen", "basemap", "floorfilter"], zoomToScale: this.zoomToScale })));
484
493
  }
485
494
  /**
486
495
  * Get the expand node for the popup information
@@ -542,7 +551,7 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
542
551
  this.defaultGlobalId?.indexOf(",") > -1 ? this.defaultGlobalId.split(",") : [this.defaultGlobalId];
543
552
  const defaultOid = !this.defaultOid ? undefined :
544
553
  this.defaultOid?.indexOf(",") > -1 ? this.defaultOid.split(",").map(o => parseInt(o, 10)) : [parseInt(this.defaultOid, 10)];
545
- return (h("calcite-shell", { class: `${tableSizeClass} border-bottom` }, !this._isMobile ? (h("calcite-action-bar", { class: "border-sides", expandDisabled: true, layout: toggleLayout, slot: toggleSlot }, this.getActions(layoutMode, panelOpen))) : undefined, h("div", { class: `width-full height-full position-relative z-index-0 ${tableClass}` }, h("layer-table", { createFilterModal: false, defaultGlobalId: hasMapAndLayer ? globalId : undefined, defaultLayerId: hasMapAndLayer ? this.defaultLayer : "", defaultOid: hasMapAndLayer && !globalId ? defaultOid : undefined, enableAutoRefresh: this.enableAutoRefresh, enableCSV: this.enableCSV, enableColumnReorder: this.enableColumnReorder, enableInlineEdit: this?._mapInfo?.enableInlineEdit, enableShare: this.enableShare, isMobile: this._isPortraitMobile, mapHidden: isTableLayout, mapInfo: this._mapInfo, mapView: this?._mapView, onToggleFilter: this._toggleFilter.bind(this), onlyShowUpdatableLayers: this.onlyShowUpdatableLayers, ref: (el) => this._layerTable = el, shareIncludeEmbed: this.shareIncludeEmbed, shareIncludeSocial: this.shareIncludeSocial, showNewestFirst: this.showNewestFirst, zoomAndScrollToSelected: this.zoomAndScrollToSelected, zoomToScale: this.zoomToScale })), h("div", { class: mapClass, id: "full-map-view" })));
554
+ return (h("calcite-shell", { class: `${tableSizeClass} border-bottom` }, !this._isMobile ? (h("calcite-action-bar", { class: "border-sides", expandDisabled: true, layout: toggleLayout, slot: toggleSlot }, this.getActions(layoutMode, panelOpen))) : undefined, h("div", { class: `width-full height-full position-relative z-index-0 ${tableClass}` }, h("layer-table", { appLayout: this.appLayout, createFilterModal: false, defaultGlobalId: hasMapAndLayer ? globalId : undefined, defaultLayerId: hasMapAndLayer ? this.defaultLayer : "", defaultOid: hasMapAndLayer && !globalId ? defaultOid : undefined, enableAutoRefresh: this.enableAutoRefresh, enableCSV: this.enableCSV, enableColumnReorder: this.enableColumnReorder, enableInlineEdit: this?._mapInfo?.enableInlineEdit, enableShare: this.enableShare, isMobile: this._isPortraitMobile, mapHidden: isTableLayout, mapInfo: this._mapInfo, mapView: this?._mapView, onToggleFilter: this._toggleFilter.bind(this), onlyShowUpdatableLayers: this.onlyShowUpdatableLayers, ref: (el) => this._layerTable = el, shareIncludeEmbed: this.shareIncludeEmbed, shareIncludeSocial: this.shareIncludeSocial, showNewestFirst: this.showNewestFirst, zoomAndScrollToSelected: this.zoomAndScrollToSelected, zoomToScale: this.zoomToScale })), h("div", { class: mapClass, id: "full-map-view" })));
546
555
  }
547
556
  /**
548
557
  * Returns the Actions for table's node
@@ -778,6 +787,7 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
778
787
  "basemapConfig": [16],
779
788
  "coverPageEnabled": [4, "cover-page-enabled"],
780
789
  "customInfoText": [1, "custom-info-text"],
790
+ "defaultAppLayout": [1, "default-app-layout"],
781
791
  "defaultCenter": [1, "default-center"],
782
792
  "defaultGlobalId": [1, "default-global-id"],
783
793
  "defaultLayer": [1, "default-layer"],
@@ -29,7 +29,7 @@ const { state, onChange } = createStore({
29
29
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
30
30
  See https://js.arcgis.com/4.31/esri/copyright.txt for details.
31
31
  */
32
- let e$a;function has(a){return "function"==typeof e$a[a]?e$a[a]=e$a[a](globalThis):e$a[a]}e$a=globalThis.dojoConfig?.has||globalThis.esriConfig?.has?{...globalThis.dojoConfig?.has,...globalThis.esriConfig?.has}:{},has.add=(a,d,o,i)=>{(i||void 0===e$a[a])&&(e$a[a]=d),o&&has(a);},has.cache=e$a,has.add("big-integer-warning-enabled",!0),has.add("esri-deprecation-warnings",!0),has.add("esri-tests-disable-screenshots",!1),has.add("esri-tests-use-full-window",!1),has.add("esri-tests-post-to-influx",!0),has.add("esri-cim-animations-enable-status","enabled"),has.add("esri-cim-animations-spotlight",!1),has.add("esri-cim-animations-freeze-time",!1),(()=>{has.add("host-webworker",void 0!==globalThis.WorkerGlobalScope&&self instanceof globalThis.WorkerGlobalScope);const e="undefined"!=typeof window&&"undefined"!=typeof location&&"undefined"!=typeof document&&window.location===location&&window.document===document;if(has.add("host-browser",e),has.add("host-node","object"==typeof globalThis.process&&globalThis.process.versions?.node&&globalThis.process.versions.v8),has.add("dom",e),has("host-browser")){const e=navigator,a=e.userAgent,d=e.appVersion,o=parseFloat(d);if(has.add("wp",parseFloat(a.split("Windows Phone")[1])||void 0),has.add("msapp",parseFloat(a.split("MSAppHost/")[1])||void 0),has.add("khtml",d.includes("Konqueror")?o:void 0),has.add("edge",parseFloat(a.split("Edge/")[1])||void 0),has.add("opr",parseFloat(a.split("OPR/")[1])||void 0),has.add("webkit",!has("wp")&&!has("edge")&&parseFloat(a.split("WebKit/")[1])||void 0),has.add("chrome",!has("edge")&&!has("opr")&&parseFloat(a.split("Chrome/")[1])||void 0),has.add("android",!has("wp")&&parseFloat(a.split("Android ")[1])||void 0),has.add("safari",!d.includes("Safari")||has("wp")||has("chrome")||has("android")||has("edge")||has("opr")?void 0:parseFloat(d.split("Version/")[1])),has.add("mac",d.includes("Macintosh")),!has("wp")&&/(iPhone|iPod|iPad)/.test(a)){const e=RegExp.$1.replace(/P/,"p"),d=/OS ([\d_]+)/.test(a)?RegExp.$1:"1",o=parseFloat(d.replace(/_/,".").replaceAll("_",""));has.add(e,o),has.add("ios",o);}has("webkit")||(!a.includes("Gecko")||has("wp")||has("khtml")||has("edge")||has.add("mozilla",o),has("mozilla")&&has.add("ff",parseFloat(a.split("Firefox/")[1]||a.split("Minefield/")[1])||void 0));}})(),(()=>{if(globalThis.navigator){const e=navigator.userAgent,a=/Android|webOS|iPhone|iPad|iPod|BlackBerry|Opera Mini|IEMobile/i.test(e),d=/iPhone/i.test(e);a&&has.add("esri-mobile",a),d&&has.add("esri-iPhone",d),has.add("esri-geolocation",!!navigator.geolocation);}has.add("esri-wasm","WebAssembly"in globalThis),has.add("esri-performance-mode-frames-between-render",20),has.add("esri-force-performance-mode",!1),has.add("esri-shared-array-buffer",(()=>{const e="SharedArrayBuffer"in globalThis,a=!1===globalThis.crossOriginIsolated;return e&&!a})),has.add("wasm-simd",(()=>{const e=[0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11];return WebAssembly.validate(new Uint8Array(e))})),has.add("esri-atomics","Atomics"in globalThis),has.add("esri-workers","Worker"in globalThis),has.add("web-feat:cache","caches"in globalThis),has.add("esri-workers-arraybuffer-transfer",!has("safari")||Number(has("safari"))>=12),has.add("workers-pool-size",8),has.add("featurelayer-simplify-thresholds",[.5,.5,.5,.5]),has.add("featurelayer-simplify-payload-size-factors",[1,1,4]),has.add("featurelayer-fast-triangulation-enabled",!0),has.add("featurelayer-animation-enabled",!0),has.add("featurelayer-snapshot-enabled",!0),has.add("featurelayer-snapshot-point-min-threshold",8e4),has.add("featurelayer-snapshot-point-max-threshold",4e5),has.add("featurelayer-snapshot-point-coverage",.1),has.add("featurelayer-query-max-depth",4),has.add("featurelayer-query-pausing-enabled",!1),has.add("featurelayer-advanced-symbols",!1),has.add("featurelayer-pbf",!0),has.add("featurelayer-pbf-statistics",!1),has.add("feature-layers-workers",!0),has.add("feature-polyline-generalization-factor",1),has.add("mapview-transitions-duration",200),has.add("mapview-essential-goto-duration",200),has.add("mapview-srswitch-adjust-rotation-scale-threshold",24e6),has.add("mapserver-pbf-version-support",10.81),has.add("mapservice-popup-identify-max-tolerance",20),has("host-webworker")||has("host-browser")&&(has.add("esri-csp-restrictions",(()=>{try{new Function;}catch{return !0}return !1})),has.add("esri-image-decode",(()=>{if("decode"in new Image){const e=new Image;return e.src='data:image/svg+xml;charset=UTF-8,<svg version="1.1" xmlns="http://www.w3.org/2000/svg"></svg>',void e.decode().then((()=>{has.add("esri-image-decode",!0,!0,!0);})).catch((()=>{has.add("esri-image-decode",!1,!0,!0);}))}return !1})),has.add("esri-url-encodes-apostrophe",(()=>{const e=window.document.createElement("a");return e.href="?'",e.href.includes("?%27")})));})();
32
+ let e$a;function has(a){return "function"==typeof e$a[a]?e$a[a]=e$a[a](globalThis):e$a[a]}e$a=globalThis.dojoConfig?.has||globalThis.esriConfig?.has?{...globalThis.dojoConfig?.has,...globalThis.esriConfig?.has}:{},has.add=(a,d,o,i)=>{(i||void 0===e$a[a])&&(e$a[a]=d),o&&has(a);},has.cache=e$a,has.add("big-integer-warning-enabled",!0),has.add("esri-deprecation-warnings",!0),has.add("esri-tests-disable-screenshots",!1),has.add("esri-tests-use-full-window",!1),has.add("esri-tests-post-to-influx",!0),has.add("esri-cim-animations-enable-status","enabled"),has.add("esri-cim-animations-spotlight",!1),has.add("esri-cim-animations-freeze-time",!1),has.add("enable-feature:multiple-highlights",!1),(()=>{has.add("host-webworker",void 0!==globalThis.WorkerGlobalScope&&self instanceof globalThis.WorkerGlobalScope);const e="undefined"!=typeof window&&"undefined"!=typeof location&&"undefined"!=typeof document&&window.location===location&&window.document===document;if(has.add("host-browser",e),has.add("host-node","object"==typeof globalThis.process&&globalThis.process.versions?.node&&globalThis.process.versions.v8),has.add("dom",e),has("host-browser")){const e=navigator,a=e.userAgent,d=e.appVersion,o=parseFloat(d);if(has.add("wp",parseFloat(a.split("Windows Phone")[1])||void 0),has.add("msapp",parseFloat(a.split("MSAppHost/")[1])||void 0),has.add("khtml",d.includes("Konqueror")?o:void 0),has.add("edge",parseFloat(a.split("Edge/")[1])||void 0),has.add("opr",parseFloat(a.split("OPR/")[1])||void 0),has.add("webkit",!has("wp")&&!has("edge")&&parseFloat(a.split("WebKit/")[1])||void 0),has.add("chrome",!has("edge")&&!has("opr")&&parseFloat(a.split("Chrome/")[1])||void 0),has.add("android",!has("wp")&&parseFloat(a.split("Android ")[1])||void 0),has.add("safari",!d.includes("Safari")||has("wp")||has("chrome")||has("android")||has("edge")||has("opr")?void 0:parseFloat(d.split("Version/")[1])),has.add("mac",d.includes("Macintosh")),!has("wp")&&/(iPhone|iPod|iPad)/.test(a)){const e=RegExp.$1.replace(/P/,"p"),d=/OS ([\d_]+)/.test(a)?RegExp.$1:"1",o=parseFloat(d.replace(/_/,".").replaceAll("_",""));has.add(e,o),has.add("ios",o);}has("webkit")||(!a.includes("Gecko")||has("wp")||has("khtml")||has("edge")||has.add("mozilla",o),has("mozilla")&&has.add("ff",parseFloat(a.split("Firefox/")[1]||a.split("Minefield/")[1])||void 0));}})(),(()=>{if(globalThis.navigator){const e=navigator.userAgent,a=/Android|webOS|iPhone|iPad|iPod|BlackBerry|Opera Mini|IEMobile/i.test(e),d=/iPhone/i.test(e);a&&has.add("esri-mobile",a),d&&has.add("esri-iPhone",d),has.add("esri-geolocation",!!navigator.geolocation);}has.add("esri-wasm","WebAssembly"in globalThis),has.add("esri-performance-mode-frames-between-render",20),has.add("esri-force-performance-mode",!1),has.add("esri-shared-array-buffer",(()=>{const e="SharedArrayBuffer"in globalThis,a=!1===globalThis.crossOriginIsolated;return e&&!a})),has.add("wasm-simd",(()=>{const e=[0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11];return WebAssembly.validate(new Uint8Array(e))})),has.add("esri-atomics","Atomics"in globalThis),has.add("esri-workers","Worker"in globalThis),has.add("web-feat:cache","caches"in globalThis),has.add("esri-workers-arraybuffer-transfer",!has("safari")||Number(has("safari"))>=12),has.add("workers-pool-size",8),has.add("featurelayer-simplify-thresholds",[.5,.5,.5,.5]),has.add("featurelayer-simplify-payload-size-factors",[1,1,4]),has.add("featurelayer-fast-triangulation-enabled",!0),has.add("featurelayer-animation-enabled",!0),has.add("featurelayer-snapshot-enabled",!0),has.add("featurelayer-snapshot-point-min-threshold",8e4),has.add("featurelayer-snapshot-point-max-threshold",4e5),has.add("featurelayer-snapshot-point-coverage",.1),has.add("featurelayer-query-max-depth",4),has.add("featurelayer-query-pausing-enabled",!1),has.add("featurelayer-advanced-symbols",!1),has.add("featurelayer-pbf",!0),has.add("featurelayer-pbf-statistics",!1),has.add("feature-layers-workers",!0),has.add("feature-polyline-generalization-factor",1),has.add("mapview-transitions-duration",200),has.add("mapview-essential-goto-duration",200),has.add("mapview-srswitch-adjust-rotation-scale-threshold",24e6),has.add("mapserver-pbf-version-support",10.81),has.add("mapservice-popup-identify-max-tolerance",20),has("host-webworker")||has("host-browser")&&(has.add("esri-csp-restrictions",(()=>{try{new Function;}catch{return !0}return !1})),has.add("esri-image-decode",(()=>{if("decode"in new Image){const e=new Image;return e.src='data:image/svg+xml;charset=UTF-8,<svg version="1.1" xmlns="http://www.w3.org/2000/svg"></svg>',void e.decode().then((()=>{has.add("esri-image-decode",!0,!0,!0);})).catch((()=>{has.add("esri-image-decode",!1,!0,!0);}))}return !1})),has.add("esri-url-encodes-apostrophe",(()=>{const e=window.document.createElement("a");return e.href="?'",e.href.includes("?%27")})));})();
33
33
 
34
34
  /*
35
35
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
@@ -53,7 +53,7 @@ function n$7(r,n,t=!1){return f$4(r,n,t)}function t$4(r,n){if(null!=n)return n[r
53
53
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
54
54
  See https://js.arcgis.com/4.31/esri/copyright.txt for details.
55
55
  */
56
- const c$6="20241007";
56
+ const c$6="20241016";
57
57
 
58
58
  /*
59
59
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.