@esri/solutions-components 0.8.4 → 0.8.6

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 (98) hide show
  1. package/dist/assets/t9n/crowdsource-reporter/resources.json +5 -6
  2. package/dist/assets/t9n/crowdsource-reporter/resources_en.json +5 -6
  3. package/dist/assets/t9n/feature-list/resources.json +1 -1
  4. package/dist/assets/t9n/feature-list/resources_en.json +1 -1
  5. package/dist/assets/t9n/public-notification/resources.json +3 -1
  6. package/dist/assets/t9n/public-notification/resources_en.json +3 -1
  7. package/dist/cjs/buffer-tools_3.cjs.entry.js +2 -2
  8. package/dist/cjs/calcite-alert_4.cjs.entry.js +2 -2
  9. package/dist/cjs/calcite-combobox_5.cjs.entry.js +2 -2
  10. package/dist/cjs/calcite-flow_5.cjs.entry.js +163 -16
  11. package/dist/cjs/card-manager_3.cjs.entry.js +41 -2
  12. package/dist/cjs/crowdsource-manager.cjs.entry.js +2 -1
  13. package/dist/cjs/crowdsource-reporter.cjs.entry.js +120 -38
  14. package/dist/cjs/loader.cjs.js +1 -1
  15. package/dist/cjs/map-select-tools_3.cjs.entry.js +2 -2
  16. package/dist/cjs/public-notification.cjs.entry.js +110 -4
  17. package/dist/cjs/{publicNotificationStore-ef379d11.js → publicNotificationStore-e790601d.js} +2 -2
  18. package/dist/cjs/solutions-components.cjs.js +1 -1
  19. package/dist/collection/collection-manifest.json +1 -1
  20. package/dist/collection/components/create-feature/create-feature.css +9 -0
  21. package/dist/collection/components/create-feature/create-feature.js +134 -6
  22. package/dist/collection/components/crowdsource-manager/crowdsource-manager.js +19 -1
  23. package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.css +5 -0
  24. package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.js +120 -38
  25. package/dist/collection/components/feature-list/feature-list.js +93 -5
  26. package/dist/collection/components/info-card/info-card.css +1 -1
  27. package/dist/collection/components/info-card/info-card.js +1 -1
  28. package/dist/collection/components/layer-list/layer-list.js +6 -6
  29. package/dist/collection/components/map-card/map-card.js +27 -2
  30. package/dist/collection/components/map-draw-tools/map-draw-tools.js +1 -1
  31. package/dist/collection/components/map-layer-picker/map-layer-picker.js +1 -1
  32. package/dist/collection/components/map-select-tools/map-select-tools.js +1 -1
  33. package/dist/collection/components/public-notification/public-notification.js +110 -3
  34. package/dist/collection/demos/crowdsource-reporter.html +1 -1
  35. package/dist/collection/utils/interfaces.ts +7 -0
  36. package/dist/collection/utils/publicNotificationStore.js +2 -2
  37. package/dist/collection/utils/publicNotificationStore.ts +3 -2
  38. package/dist/components/create-feature2.js +111 -7
  39. package/dist/components/crowdsource-manager.js +3 -1
  40. package/dist/components/crowdsource-reporter.js +121 -39
  41. package/dist/components/feature-list2.js +54 -6
  42. package/dist/components/info-card2.js +2 -2
  43. package/dist/components/layer-list2.js +6 -6
  44. package/dist/components/map-card2.js +42 -2
  45. package/dist/components/map-draw-tools2.js +1 -1
  46. package/dist/components/map-layer-picker2.js +1 -1
  47. package/dist/components/map-select-tools2.js +1 -1
  48. package/dist/components/public-notification.js +110 -3
  49. package/dist/components/publicNotificationStore.js +2 -2
  50. package/dist/esm/buffer-tools_3.entry.js +2 -2
  51. package/dist/esm/calcite-alert_4.entry.js +3 -3
  52. package/dist/esm/calcite-combobox_5.entry.js +3 -3
  53. package/dist/esm/calcite-flow_5.entry.js +164 -17
  54. package/dist/esm/card-manager_3.entry.js +43 -4
  55. package/dist/esm/crowdsource-manager.entry.js +3 -2
  56. package/dist/esm/crowdsource-reporter.entry.js +121 -39
  57. package/dist/esm/{downloadUtils-0c13073b.js → downloadUtils-0c1e4d7b.js} +2 -2
  58. package/dist/esm/{index.es-ad250bc6.js → index.es-286e3cfa.js} +2 -2
  59. package/dist/esm/loader.js +1 -1
  60. package/dist/esm/map-select-tools_3.entry.js +4 -4
  61. package/dist/esm/{mapViewUtils-20504620.js → mapViewUtils-253178f1.js} +1 -1
  62. package/dist/esm/public-notification.entry.js +112 -6
  63. package/dist/esm/{publicNotificationStore-3bf4de75.js → publicNotificationStore-223faed2.js} +2 -2
  64. package/dist/esm/solutions-components.js +1 -1
  65. package/dist/solutions-components/demos/crowdsource-reporter.html +1 -1
  66. package/dist/solutions-components/p-15f9624a.entry.js +6 -0
  67. package/dist/solutions-components/{p-955647ea.entry.js → p-1ea5e061.entry.js} +2 -2
  68. package/dist/solutions-components/{p-590a2a26.js → p-212b02e7.js} +1 -1
  69. package/dist/solutions-components/p-238d3b5f.entry.js +6 -0
  70. package/dist/solutions-components/p-273d833b.entry.js +6 -0
  71. package/dist/solutions-components/{p-cc280aa1.js → p-322868ec.js} +1 -1
  72. package/dist/solutions-components/{p-1d3a1794.js → p-331b5d1e.js} +2 -2
  73. package/dist/solutions-components/{p-c897e3eb.js → p-3af79063.js} +1 -1
  74. package/dist/solutions-components/p-45ed16d5.entry.js +6 -0
  75. package/dist/solutions-components/p-80b11ec1.entry.js +17 -0
  76. package/dist/solutions-components/{p-5c7e3941.entry.js → p-813fd8a4.entry.js} +2 -2
  77. package/dist/solutions-components/{p-ff302d95.entry.js → p-d136eab0.entry.js} +2 -2
  78. package/dist/solutions-components/p-e0446d5b.entry.js +6 -0
  79. package/dist/solutions-components/solutions-components.esm.js +1 -1
  80. package/dist/solutions-components/utils/interfaces.ts +7 -0
  81. package/dist/solutions-components/utils/publicNotificationStore.ts +3 -2
  82. package/dist/types/components/create-feature/create-feature.d.ts +43 -1
  83. package/dist/types/components/crowdsource-manager/crowdsource-manager.d.ts +4 -0
  84. package/dist/types/components/crowdsource-reporter/crowdsource-reporter.d.ts +31 -10
  85. package/dist/types/components/feature-list/feature-list.d.ts +31 -0
  86. package/dist/types/components/layer-list/layer-list.d.ts +3 -3
  87. package/dist/types/components/map-card/map-card.d.ts +8 -0
  88. package/dist/types/components/public-notification/public-notification.d.ts +48 -0
  89. package/dist/types/components.d.ts +37 -0
  90. package/dist/types/utils/interfaces.d.ts +6 -0
  91. package/dist/types/utils/publicNotificationStore.d.ts +2 -1
  92. package/package.json +2 -1
  93. package/dist/solutions-components/p-6512dc44.entry.js +0 -6
  94. package/dist/solutions-components/p-65ad1625.entry.js +0 -6
  95. package/dist/solutions-components/p-989bf0bf.entry.js +0 -6
  96. package/dist/solutions-components/p-a0611720.entry.js +0 -6
  97. package/dist/solutions-components/p-efe1694a.entry.js +0 -17
  98. package/dist/solutions-components/p-f3467807.entry.js +0 -6
@@ -4,6 +4,7 @@
4
4
  * http://www.apache.org/licenses/LICENSE-2.0
5
5
  */
6
6
  import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
7
+ import { l as loadModules } from './loadModules.js';
7
8
  import { P as PopupUtils } from './popupUtils.js';
8
9
  import { g as getLayerOrTable, e as getFeatureLayerView, h as highlightFeatures } from './mapViewUtils.js';
9
10
  import { g as getLocaleComponentStrings } from './locale.js';
@@ -36,6 +37,7 @@ const FeatureList = /*@__PURE__*/ proxyCustomElement(class FeatureList extends H
36
37
  this.noFeaturesFoundMsg = undefined;
37
38
  this.pageSize = 100;
38
39
  this.highlightOnMap = false;
40
+ this.highlightOnHover = false;
39
41
  this._featureItems = [];
40
42
  this._featuresCount = 0;
41
43
  this._isLoading = false;
@@ -55,6 +57,16 @@ const FeatureList = /*@__PURE__*/ proxyCustomElement(class FeatureList extends H
55
57
  }
56
58
  //--------------------------------------------------------------------------
57
59
  //
60
+ // Methods (public)
61
+ /**
62
+ * Refresh the feature list which will fetch the latest features and update the features list
63
+ * @returns Promise that resolves when the operation is complete
64
+ */
65
+ async refresh() {
66
+ await this.initializeFeatureItems();
67
+ }
68
+ //--------------------------------------------------------------------------
69
+ //
58
70
  // Functions (lifecycle)
59
71
  //
60
72
  //--------------------------------------------------------------------------
@@ -63,6 +75,7 @@ const FeatureList = /*@__PURE__*/ proxyCustomElement(class FeatureList extends H
63
75
  * @returns Promise when complete
64
76
  */
65
77
  async componentWillLoad() {
78
+ await this.initModules();
66
79
  await this._getTranslations();
67
80
  this._isLoading = true;
68
81
  this._popupUtils = new PopupUtils();
@@ -89,6 +102,17 @@ const FeatureList = /*@__PURE__*/ proxyCustomElement(class FeatureList extends H
89
102
  // Functions (protected)
90
103
  //
91
104
  //--------------------------------------------------------------------------
105
+ /**
106
+ * Load esri javascript api modules
107
+ * @returns Promise resolving when function is done
108
+ * @protected
109
+ */
110
+ async initModules() {
111
+ const [Color] = await loadModules([
112
+ "esri/Color"
113
+ ]);
114
+ this.Color = Color;
115
+ }
92
116
  /**
93
117
  * Initialize the features list using the selected layer
94
118
  * @protected
@@ -124,10 +148,7 @@ const FeatureList = /*@__PURE__*/ proxyCustomElement(class FeatureList extends H
124
148
  */
125
149
  async featureClicked(event, selectedFeature) {
126
150
  //clear previous highlight and remove the highlightHandle
127
- if (this.highlightOnMap && this._highlightHandle) {
128
- this._highlightHandle.remove();
129
- this._highlightHandle = null;
130
- }
151
+ this.clearHighlights();
131
152
  //highlight on map only if it is selected item
132
153
  if (this.highlightOnMap) {
133
154
  const selectedFeatureObjectId = Number(event.target.value);
@@ -136,6 +157,31 @@ const FeatureList = /*@__PURE__*/ proxyCustomElement(class FeatureList extends H
136
157
  }
137
158
  this.featureSelect.emit(selectedFeature);
138
159
  }
160
+ /**
161
+ * On feature hover in feature list highlight the feature on the map
162
+ * @param selectedFeature mouseovered feature graphic
163
+ * @protected
164
+ */
165
+ async onFeatureHover(selectedFeature) {
166
+ //clear previous highlight and remove the highlightHandle
167
+ this.clearHighlights();
168
+ if (this.highlightOnHover) {
169
+ const oId = selectedFeature.getObjectId();
170
+ const selectedLayerView = await getFeatureLayerView(this.mapView, this.selectedLayerId);
171
+ selectedLayerView.highlightOptions = { color: new this.Color("#FFFF00") };
172
+ this._highlightHandle = selectedLayerView.highlight([oId]);
173
+ }
174
+ }
175
+ /**
176
+ * Clears the highlight
177
+ * @protected
178
+ */
179
+ clearHighlights() {
180
+ //if a feature is already highlighted, then remove the highlight
181
+ if (this._highlightHandle) {
182
+ this._highlightHandle.remove();
183
+ }
184
+ }
139
185
  /**
140
186
  * Query the selected feature layer, in descending order of object id's
141
187
  * @param page 0th page number in the pagination item
@@ -186,7 +232,7 @@ const FeatureList = /*@__PURE__*/ proxyCustomElement(class FeatureList extends H
186
232
  const oId = selectedFeature.attributes[this._selectedLayer.objectIdField].toString();
187
233
  //use object id if popupTitle is null or undefined
188
234
  popupTitle = popupTitle !== null && popupTitle !== void 0 ? popupTitle : oId;
189
- return (h("calcite-list-item", { onCalciteListItemSelect: (e) => { void this.featureClicked(e, selectedFeature); }, value: oId }, h("div", { class: "popup-title", slot: "content-start" }, popupTitle), h("calcite-icon", { icon: "chevron-right", scale: "s", slot: "content-end" })));
235
+ return (h("calcite-list-item", { onCalciteListItemSelect: (e) => { void this.featureClicked(e, selectedFeature); }, onMouseLeave: () => { void this.clearHighlights(); }, onMouseOver: () => { void this.onFeatureHover(selectedFeature); }, value: oId }, h("div", { class: "popup-title", slot: "content-start" }, popupTitle), h("calcite-icon", { icon: "chevron-right", scale: "s", slot: "content-end" })));
190
236
  }
191
237
  /**
192
238
  * Fetches the component's translations
@@ -208,10 +254,12 @@ const FeatureList = /*@__PURE__*/ proxyCustomElement(class FeatureList extends H
208
254
  "noFeaturesFoundMsg": [1, "no-features-found-msg"],
209
255
  "pageSize": [2, "page-size"],
210
256
  "highlightOnMap": [4, "highlight-on-map"],
257
+ "highlightOnHover": [4, "highlight-on-hover"],
211
258
  "_featureItems": [32],
212
259
  "_featuresCount": [32],
213
260
  "_isLoading": [32],
214
- "_translations": [32]
261
+ "_translations": [32],
262
+ "refresh": [64]
215
263
  }, undefined, {
216
264
  "selectedLayerId": ["selectedLayerWatchHandler"]
217
265
  }]);
@@ -24,7 +24,7 @@ import { d as defineCustomElement$3 } from './tooltip.js';
24
24
  import { d as defineCustomElement$2 } from './delete-button2.js';
25
25
  import { d as defineCustomElement$1 } from './edit-card2.js';
26
26
 
27
- 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}.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}.border-width-0{border-width:0px}";
27
+ 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}.feature-node .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}.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}.border-width-0{border-width:0px}";
28
28
 
29
29
  const InfoCard = /*@__PURE__*/ proxyCustomElement(class InfoCard extends HTMLElement {
30
30
  constructor() {
@@ -148,7 +148,7 @@ const InfoCard = /*@__PURE__*/ proxyCustomElement(class InfoCard extends HTMLEle
148
148
  const id = (_d = (_c = this._features) === null || _c === void 0 ? void 0 : _c.selectedFeature) === null || _d === void 0 ? void 0 : _d.getObjectId();
149
149
  const ids = parseInt(id === null || id === void 0 ? void 0 : id.toString(), 10) > -1 ? [id] : [];
150
150
  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);
151
- return (h(Host, null, h("calcite-shell", null, this._getHeader(), 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 &&
151
+ return (h(Host, null, h("calcite-shell", null, this._getHeader(), h("calcite-loader", { class: loadingClass, label: this._translations.fetchingData }), h("div", { class: "esri-widget feature-node " + featureNodeClass, id: "features-node" }), h("div", { class: `${editButtonClass} width-100`, slot: "footer" }, this.allowEditing &&
152
152
  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)))));
153
153
  }
154
154
  //--------------------------------------------------------------------------
@@ -82,7 +82,7 @@ const LayerList = /*@__PURE__*/ proxyCustomElement(class LayerList extends HTMLE
82
82
  render() {
83
83
  return (h(Fragment, null, this._isLoading && h("calcite-loader", { label: "", scale: "m" }), !this._isLoading && this.mapView && this._noLayersToDisplay &&
84
84
  h("calcite-notice", { class: "error-msg", icon: "layers-reference", kind: "danger", open: true }, h("div", { slot: "title" }, this._translations.error), h("div", { slot: "message" }, this.noLayerErrorMsg ? this.noLayerErrorMsg : this._noLayerToDisplayErrorMsg)), !this._isLoading && this.mapView &&
85
- h("calcite-list", { "selection-appearance": "border", "selection-mode": this.showNextIcon ? "none" : "single-persist" }, this.renderLayerList())));
85
+ h("calcite-list", { "selection-appearance": "border", "selection-mode": "none" }, this.renderLayerList())));
86
86
  }
87
87
  //--------------------------------------------------------------------------
88
88
  //
@@ -130,7 +130,7 @@ const LayerList = /*@__PURE__*/ proxyCustomElement(class LayerList extends HTMLE
130
130
  }
131
131
  });
132
132
  await Promise.all(def).then(() => {
133
- const editableLayerIds = this.getEditableIds(this._layerItemsHash);
133
+ const editableLayerIds = this.getLayersToBeShownInList(this._layerItemsHash);
134
134
  this._mapLayerIds = editableLayerIds.reverse();
135
135
  this.handleNoLayersToDisplay();
136
136
  }, () => {
@@ -146,17 +146,17 @@ const LayerList = /*@__PURE__*/ proxyCustomElement(class LayerList extends HTMLE
146
146
  this.layersListLoaded.emit(this._mapLayerIds);
147
147
  }
148
148
  /**
149
- * Returns the ids of all OR configured layers that support edits with the update capability
149
+ * Returns the ids of all OR configured layers that needs to be shown in the list
150
150
  * @param hash each layer item details
151
151
  * @returns array of layer ids
152
152
  */
153
- getEditableIds(hash) {
153
+ getLayersToBeShownInList(hash) {
154
154
  var _a;
155
155
  const configuredLayers = ((_a = this.layers) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.layers : [];
156
156
  return Object.keys(hash).reduce((prev, cur) => {
157
- let showLayer = hash[cur].supportsAdd;
157
+ let showLayer = true;
158
158
  if ((configuredLayers === null || configuredLayers === void 0 ? void 0 : configuredLayers.length) > 0) {
159
- showLayer = configuredLayers.indexOf(cur) > -1 ? hash[cur].supportsAdd : false;
159
+ showLayer = configuredLayers.indexOf(cur) > -1;
160
160
  }
161
161
  if (showLayer) {
162
162
  prev.push(cur);
@@ -30,6 +30,38 @@ import { d as defineCustomElement$3 } from './map-picker2.js';
30
30
  import { d as defineCustomElement$2 } from './map-search2.js';
31
31
  import { d as defineCustomElement$1 } from './map-tools2.js';
32
32
 
33
+ function joinAppProxies(map, config, appProxies) {
34
+ if (appProxies) {
35
+ appProxies.forEach((proxy) => {
36
+ map.allLayers.forEach((layer) => {
37
+ if (layer && layer.url === proxy.sourceUrl) {
38
+ // directly change the layer url to the proxy url
39
+ layer.url = proxy.proxyUrl;
40
+ // Replace the layer's portalItem's url with the proxy url too, otherwise anonymous viewers get a sign-in prompt.
41
+ if (layer.portalItem) {
42
+ layer.portalItem.when(() => {
43
+ // layer.portalItem exists, see above. Not sure why typescript thinks it could be undefined here.
44
+ layer.portalItem.url = proxy.proxyUrl;
45
+ });
46
+ }
47
+ // also add a request interceptor in case we missed any requests to the original url, or the jsapi team adds new requests in the future.
48
+ config.request?.interceptors?.push({
49
+ // this interceptor only applies to requests made to this proxy's sourceUrl (the layer's original url).
50
+ urls: proxy.sourceUrl,
51
+ before: (params) => {
52
+ // change requests from the original url to the proxy url
53
+ if (params.url && params.url === proxy.sourceUrl) {
54
+ params.url = proxy.proxyUrl;
55
+ }
56
+ },
57
+ });
58
+ }
59
+ });
60
+ });
61
+ }
62
+ return map;
63
+ }
64
+
33
65
  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-1{visibility:hidden;height:1px;}.display-none{display:none}";
34
66
 
35
67
  const MapCard = /*@__PURE__*/ proxyCustomElement(class MapCard extends HTMLElement {
@@ -46,6 +78,7 @@ const MapCard = /*@__PURE__*/ proxyCustomElement(class MapCard extends HTMLEleme
46
78
  * string: the id of map currently displayed
47
79
  */
48
80
  this._loadedId = "";
81
+ this.appProxies = undefined;
49
82
  this.defaultWebmapId = "";
50
83
  this.enableHome = undefined;
51
84
  this.enableLegend = undefined;
@@ -122,14 +155,16 @@ const MapCard = /*@__PURE__*/ proxyCustomElement(class MapCard extends HTMLEleme
122
155
  * @protected
123
156
  */
124
157
  async _initModules() {
125
- const [WebMap, MapView, Home] = await loadModules([
158
+ const [WebMap, MapView, Home, esriConfig] = await loadModules([
126
159
  "esri/WebMap",
127
160
  "esri/views/MapView",
128
- "esri/widgets/Home"
161
+ "esri/widgets/Home",
162
+ "esri/config"
129
163
  ]);
130
164
  this.WebMap = WebMap;
131
165
  this.MapView = MapView;
132
166
  this.Home = Home;
167
+ this.esriConfig = esriConfig;
133
168
  }
134
169
  /**
135
170
  * Load the webmap for the provided webMapInfo
@@ -150,6 +185,10 @@ const MapCard = /*@__PURE__*/ proxyCustomElement(class MapCard extends HTMLEleme
150
185
  const webMap = new this.WebMap({
151
186
  portalItem: { id }
152
187
  });
188
+ if (this.appProxies) {
189
+ await webMap.load();
190
+ await joinAppProxies(webMap, this.esriConfig, this.appProxies);
191
+ }
153
192
  this.mapView = new this.MapView({
154
193
  container: this._mapDiv,
155
194
  map: webMap,
@@ -207,6 +246,7 @@ const MapCard = /*@__PURE__*/ proxyCustomElement(class MapCard extends HTMLEleme
207
246
  }; }
208
247
  static get style() { return mapCardCss; }
209
248
  }, [0, "map-card", {
249
+ "appProxies": [8, "app-proxies"],
210
250
  "defaultWebmapId": [1, "default-webmap-id"],
211
251
  "enableHome": [4, "enable-home"],
212
252
  "enableLegend": [4, "enable-legend"],
@@ -167,7 +167,7 @@ const MapDrawTools = /*@__PURE__*/ proxyCustomElement(class MapDrawTools extends
167
167
  }
168
168
  else {
169
169
  this._sketchGraphicsLayer = new this.GraphicsLayer({ title, listMode: "hide" });
170
- state.managedLayers.push(title);
170
+ state.managedLayers[title] = "sketch";
171
171
  this.mapView.map.layers.add(this._sketchGraphicsLayer);
172
172
  }
173
173
  if (this.graphics && this.graphics.length > 0) {
@@ -305,7 +305,7 @@ const MapLayerPicker = /*@__PURE__*/ proxyCustomElement(class MapLayerPicker ext
305
305
  _validLayer(id) {
306
306
  var _a;
307
307
  const name = (_a = this._layerNameHash[id]) === null || _a === void 0 ? void 0 : _a.name;
308
- return name && state.managedLayers.indexOf(name) < 0 && (this.enabledLayerIds.length > 0 ?
308
+ return name && Object.keys(state.managedLayers).indexOf(name) < 0 && (this.enabledLayerIds.length > 0 ?
309
309
  this.enabledLayerIds.indexOf(id) > -1 : true);
310
310
  }
311
311
  /**
@@ -443,7 +443,7 @@ const MapSelectTools = /*@__PURE__*/ proxyCustomElement(class MapSelectTools ext
443
443
  }
444
444
  else {
445
445
  this._bufferGraphicsLayer = new this.GraphicsLayer({ title, listMode: "hide" });
446
- state.managedLayers.push(title);
446
+ state.managedLayers[title] = "buffer";
447
447
  const sketchIndex = this.mapView.map.layers.findIndex((l) => l.title === this._translations.sketchLayer);
448
448
  if (sketchIndex > -1) {
449
449
  this.mapView.map.layers.add(this._bufferGraphicsLayer, sketchIndex);
@@ -92,6 +92,7 @@ const PublicNotification$1 = /*@__PURE__*/ proxyCustomElement(class PublicNotifi
92
92
  this.sketchLineSymbol = undefined;
93
93
  this.sketchPointSymbol = undefined;
94
94
  this.sketchPolygonSymbol = undefined;
95
+ this._exportGraphics = false;
95
96
  this._addMap = false;
96
97
  this._addResults = true;
97
98
  this._addTitle = false;
@@ -170,6 +171,7 @@ const PublicNotification$1 = /*@__PURE__*/ proxyCustomElement(class PublicNotifi
170
171
  if (pageType === EPageType.EXPORT) {
171
172
  this._fetchingData = true;
172
173
  this._numDuplicates = await this._getNumDuplicates();
174
+ this._updateExportGraphics();
173
175
  this._fetchingData = false;
174
176
  }
175
177
  this._clearHighlight();
@@ -177,6 +179,9 @@ const PublicNotification$1 = /*@__PURE__*/ proxyCustomElement(class PublicNotifi
177
179
  // clear any draw shapes or buffers
178
180
  await this._clearSelection();
179
181
  }
182
+ if (oldPageType === EPageType.EXPORT) {
183
+ this._removeExportGraphics();
184
+ }
180
185
  if (pageType !== EPageType.SELECT) {
181
186
  return this._highlightFeatures();
182
187
  }
@@ -240,12 +245,14 @@ const PublicNotification$1 = /*@__PURE__*/ proxyCustomElement(class PublicNotifi
240
245
  * @protected
241
246
  */
242
247
  async _initModules() {
243
- const [geometryEngine, jsonUtils] = await loadModules([
248
+ const [geometryEngine, jsonUtils, graphic] = await loadModules([
244
249
  "esri/geometry/geometryEngine",
245
- "esri/symbols/support/jsonUtils"
250
+ "esri/symbols/support/jsonUtils",
251
+ "esri/Graphic"
246
252
  ]);
247
253
  this._geometryEngine = geometryEngine;
248
254
  this._jsonUtils = jsonUtils;
255
+ this.Graphic = graphic;
249
256
  }
250
257
  /**
251
258
  * Load the search configuration
@@ -573,9 +580,107 @@ const PublicNotification$1 = /*@__PURE__*/ proxyCustomElement(class PublicNotifi
573
580
  _getExportOptions() {
574
581
  const displayClass = this._exportType === EExportType.PDF ? "display-block" : "display-none";
575
582
  const titleOptionsClass = this._addTitle ? "display-block" : "display-none";
583
+ const graphicsOptionsClass = this._addMap ? "display-flex" : "display-none";
576
584
  const title = this._titleValue ? this._titleValue : this.defaultExportTitle ? this.defaultExportTitle : "";
577
585
  const formatOptionsClass = this._addResults ? "" : "display-none";
578
- return (h("div", { class: displayClass }, this._getLabel(this._translations.pdfOptions, true), h("div", { class: "padding-top-sides-1" }, h("calcite-label", { class: "label-margin-0", layout: "inline" }, h("calcite-checkbox", { checked: this._addResults, onCalciteCheckboxChange: () => this._addResults = !this._addResults }), this._translations.addResults)), h("div", { class: `padding-top-sides-1 ${formatOptionsClass}` }, h("calcite-label", { class: "label-margin-0" }, this._translations.selectPDFLabelOption)), h("div", { class: `padding-sides-1 ${formatOptionsClass}` }, h("pdf-download", { defaultNumLabelsPerPage: parseInt(this.defaultNumLabelsPerPage.toString(), 10), disabled: !this._downloadActive, ref: (el) => { this._downloadTools = el; } })), h("div", { class: "padding-top-sides-1" }, h("calcite-label", { class: "label-margin-0", layout: "inline" }, h("calcite-checkbox", { checked: this._addTitle, onCalciteCheckboxChange: () => this._addTitle = !this._addTitle }), this._translations.title)), h("div", { class: titleOptionsClass }, this._getLabel(this._translations.title, true, ""), h("calcite-input-text", { class: "padding-sides-1", onCalciteInputTextInput: () => this._changeTitle(), placeholder: this._translations.titlePlaceholder, ref: (el) => { this._titleElement = el; }, value: title })), h("div", { class: "padding-top-sides-1" }, h("calcite-label", { class: "label-margin-0", layout: "inline" }, h("calcite-checkbox", { checked: this._addMap, onCalciteCheckboxChange: () => this._addMap = !this._addMap }), this._translations.includeMap))));
586
+ return (h("div", { class: displayClass }, this._getLabel(this._translations.pdfOptions, true), h("div", { class: "padding-top-sides-1" }, h("calcite-label", { class: "label-margin-0", layout: "inline" }, h("calcite-checkbox", { checked: this._addResults, onCalciteCheckboxChange: () => this._addResults = !this._addResults }), this._translations.addResults)), h("div", { class: `padding-top-sides-1 ${formatOptionsClass}` }, h("calcite-label", { class: "label-margin-0" }, this._translations.selectPDFLabelOption)), h("div", { class: `padding-sides-1 ${formatOptionsClass}` }, h("pdf-download", { defaultNumLabelsPerPage: parseInt(this.defaultNumLabelsPerPage.toString(), 10), disabled: !this._downloadActive, ref: (el) => { this._downloadTools = el; } })), h("div", { class: "padding-top-sides-1" }, h("calcite-label", { class: "label-margin-0", layout: "inline" }, h("calcite-checkbox", { checked: this._addTitle, onCalciteCheckboxChange: () => this._addTitle = !this._addTitle }), this._translations.title)), h("div", { class: titleOptionsClass }, this._getLabel(this._translations.title, true, ""), h("calcite-input-text", { class: "padding-sides-1", onCalciteInputTextInput: () => this._changeTitle(), placeholder: this._translations.titlePlaceholder, ref: (el) => { this._titleElement = el; }, value: title })), h("div", { class: "padding-top-sides-1" }, h("calcite-label", { class: "label-margin-0", layout: "inline" }, h("calcite-checkbox", { checked: this._addMap, onCalciteCheckboxChange: () => this._handleAddMapChange() }), this._translations.includeMap)), h("div", { class: `padding-top-sides-1 ${graphicsOptionsClass}` }, h("calcite-label", { class: "label-margin-0", layout: "inline" }, h("calcite-checkbox", { checked: this._exportGraphics, onCalciteCheckboxChange: () => this._handleExportGraphicsChange() }), this._translations.listGraphics), h("calcite-icon", { class: "padding-start-1-2 icon", icon: "question", id: "list-graphics-icon", scale: "s" }), h("calcite-popover", { closable: true, label: "", referenceElement: "list-graphics-icon" }, h("span", { class: "tooltip-message" }, this._translations.listGraphicsTip)))));
587
+ }
588
+ /**
589
+ * Toggle the _addMap state variable and update the graphics on the map
590
+ *
591
+ * @protected
592
+ */
593
+ _handleAddMapChange() {
594
+ this._addMap = !this._addMap;
595
+ this._updateExportGraphics();
596
+ }
597
+ /**
598
+ * Toggle the _exportGraphics state variable and update the graphics on the map
599
+ *
600
+ * @protected
601
+ */
602
+ _handleExportGraphicsChange() {
603
+ this._exportGraphics = !this._exportGraphics;
604
+ this._updateExportGraphics();
605
+ }
606
+ /**
607
+ * Get the "sketch" or "buffer" graphics layer
608
+ *
609
+ * @param type The type of managed layer to fetch "sketch" | "buffer"
610
+ *
611
+ * @protected
612
+ */
613
+ _getManagedLayer(type) {
614
+ let layer;
615
+ Object.keys(state.managedLayers).some((k) => {
616
+ const i = this.mapView.map.layers.findIndex((l) => l.title === k);
617
+ if (state.managedLayers[k] === type) {
618
+ layer = this.mapView.map.layers.getItemAt(i);
619
+ return true;
620
+ }
621
+ });
622
+ return layer;
623
+ }
624
+ /**
625
+ * Update the export graphics by adding or removeing them
626
+ *
627
+ * @param clear When true the graphics layers will be cleared prior to adding any new graphics, defaults to false
628
+ *
629
+ * @protected
630
+ */
631
+ _updateExportGraphics(clear = false) {
632
+ if (clear || !this._exportGraphics || !this._addMap) {
633
+ this._removeExportGraphics();
634
+ }
635
+ if (this._exportGraphics && this._addMap) {
636
+ this._addExportGraphics();
637
+ }
638
+ }
639
+ /**
640
+ * Remove all buffer and sketch graphics
641
+ *
642
+ * @protected
643
+ */
644
+ _removeExportGraphics() {
645
+ const sketchLayer = this._getManagedLayer("sketch");
646
+ const bufferLayer = this._getManagedLayer("buffer");
647
+ if (sketchLayer) {
648
+ sketchLayer.graphics.removeAll();
649
+ }
650
+ if (bufferLayer) {
651
+ bufferLayer.graphics.removeAll();
652
+ }
653
+ }
654
+ /**
655
+ * Add all buffer and sketch graphics that are flagged for download
656
+ *
657
+ * @protected
658
+ */
659
+ _addExportGraphics() {
660
+ const sketchLayer = this._getManagedLayer("sketch");
661
+ const bufferLayer = this._getManagedLayer("buffer");
662
+ this._selectionSets.forEach(ss => {
663
+ if (ss.download) {
664
+ if (sketchLayer) {
665
+ sketchLayer.graphics.add(ss.sketchGraphic);
666
+ }
667
+ if (bufferLayer) {
668
+ const symbol = {
669
+ type: "simple-fill",
670
+ color: this.bufferColor,
671
+ outline: {
672
+ color: this.bufferOutlineColor,
673
+ width: 1
674
+ }
675
+ };
676
+ const bufferGraphic = new this.Graphic({
677
+ geometry: ss.buffer,
678
+ symbol
679
+ });
680
+ bufferLayer.graphics.add(bufferGraphic);
681
+ }
682
+ }
683
+ });
579
684
  }
580
685
  /**
581
686
  * Render the refine page
@@ -669,6 +774,7 @@ const PublicNotification$1 = /*@__PURE__*/ proxyCustomElement(class PublicNotifi
669
774
  isActive = ss.download ? true : isActive;
670
775
  return ss;
671
776
  });
777
+ this._updateExportGraphics(true);
672
778
  this._downloadActive = isActive;
673
779
  this._fetchingData = true;
674
780
  this._numDuplicates = await this._getNumDuplicates();
@@ -939,6 +1045,7 @@ const PublicNotification$1 = /*@__PURE__*/ proxyCustomElement(class PublicNotifi
939
1045
  "sketchLineSymbol": [8, "sketch-line-symbol"],
940
1046
  "sketchPointSymbol": [8, "sketch-point-symbol"],
941
1047
  "sketchPolygonSymbol": [8, "sketch-polygon-symbol"],
1048
+ "_exportGraphics": [32],
942
1049
  "_addMap": [32],
943
1050
  "_addResults": [32],
944
1051
  "_addTitle": [32],
@@ -21,8 +21,8 @@ import { c as createStore } from './index4.js';
21
21
  * limitations under the License.
22
22
  */
23
23
  const { state, onChange } = createStore({
24
- // List of layers added and managed by the component
25
- managedLayers: [],
24
+ // Key Value pair whose Key is the layer name and the Value is the type of layer ("buffer" | "sketch")
25
+ managedLayers: {},
26
26
  // List of tables added and managed by the component
27
27
  managedTables: [],
28
28
  // Handle[]: https://developers.arcgis.com/javascript/latest/api-reference/esri-core-Handles.html#Handle
@@ -7,7 +7,7 @@ import { r as registerInstance, c as createEvent, h, H as Host, g as getElement
7
7
  import { l as loadModules, g as getLocaleComponentStrings } from './locale-bcbea4ef.js';
8
8
  import { x as setRequestedIcon } from './dom-38c6f027.js';
9
9
  import { f as EDrawMode } from './interfaces-586e863c.js';
10
- import { s as state } from './publicNotificationStore-3bf4de75.js';
10
+ import { s as state } from './publicNotificationStore-223faed2.js';
11
11
  import './esri-loader-1b324844.js';
12
12
  import './_commonjsHelpers-0f74c230.js';
13
13
  import './guid-b75a5f7b.js';
@@ -464,7 +464,7 @@ const MapDrawTools = class {
464
464
  }
465
465
  else {
466
466
  this._sketchGraphicsLayer = new this.GraphicsLayer({ title, listMode: "hide" });
467
- state.managedLayers.push(title);
467
+ state.managedLayers[title] = "sketch";
468
468
  this.mapView.map.layers.add(this._sketchGraphicsLayer);
469
469
  }
470
470
  if (this.graphics && this.graphics.length > 0) {
@@ -12,7 +12,7 @@ import { o as onToggleOpenCloseComponent } from './openCloseComponent-9f90f493.j
12
12
  import { c as connectMessages, s as setUpMessages, d as disconnectMessages, u as updateMessages } from './t9n-436fb2b1.js';
13
13
  import { K as KindIcons } from './resources-88a48c5c.js';
14
14
  import { g as getLocaleComponentStrings, l as loadModules } from './locale-bcbea4ef.js';
15
- import { a as getAllLayers } from './mapViewUtils-20504620.js';
15
+ import { a as getAllLayers } from './mapViewUtils-253178f1.js';
16
16
  import { P as PopupUtils } from './popupUtils-af124b47.js';
17
17
  import './guid-b75a5f7b.js';
18
18
  import './resources-8834f920.js';
@@ -664,7 +664,7 @@ const EditCard = class {
664
664
  };
665
665
  EditCard.style = editCardCss;
666
666
 
667
- 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}.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}.border-width-0{border-width:0px}";
667
+ 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}.feature-node .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}.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}.border-width-0{border-width:0px}";
668
668
 
669
669
  const InfoCard = class {
670
670
  constructor(hostRef) {
@@ -787,7 +787,7 @@ const InfoCard = class {
787
787
  const id = (_d = (_c = this._features) === null || _c === void 0 ? void 0 : _c.selectedFeature) === null || _d === void 0 ? void 0 : _d.getObjectId();
788
788
  const ids = parseInt(id === null || id === void 0 ? void 0 : id.toString(), 10) > -1 ? [id] : [];
789
789
  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);
790
- return (h(Host, null, h("calcite-shell", null, this._getHeader(), 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 &&
790
+ return (h(Host, null, h("calcite-shell", null, this._getHeader(), h("calcite-loader", { class: loadingClass, label: this._translations.fetchingData }), h("div", { class: "esri-widget feature-node " + featureNodeClass, id: "features-node" }), h("div", { class: `${editButtonClass} width-100`, slot: "footer" }, this.allowEditing &&
791
791
  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)))));
792
792
  }
793
793
  //--------------------------------------------------------------------------
@@ -22,8 +22,8 @@ import { V as Validation } from './Validation-ea480265.js';
22
22
  import { d as debounce } from './debounce-229b1a22.js';
23
23
  import { i as isActivationKey } from './key-c83d835f.js';
24
24
  import { g as getLocaleComponentStrings } from './locale-bcbea4ef.js';
25
- import { d as getMapLayerHash, o as getMapTableHash } from './mapViewUtils-20504620.js';
26
- import { s as state } from './publicNotificationStore-3bf4de75.js';
25
+ import { c as getMapLayerHash, o as getMapTableHash } from './mapViewUtils-253178f1.js';
26
+ import { s as state } from './publicNotificationStore-223faed2.js';
27
27
  import './resources-8834f920.js';
28
28
  import './browser-d60104bd.js';
29
29
  import './esri-loader-1b324844.js';
@@ -2065,7 +2065,7 @@ const MapLayerPicker = class {
2065
2065
  _validLayer(id) {
2066
2066
  var _a;
2067
2067
  const name = (_a = this._layerNameHash[id]) === null || _a === void 0 ? void 0 : _a.name;
2068
- return name && state.managedLayers.indexOf(name) < 0 && (this.enabledLayerIds.length > 0 ?
2068
+ return name && Object.keys(state.managedLayers).indexOf(name) < 0 && (this.enabledLayerIds.length > 0 ?
2069
2069
  this.enabledLayerIds.indexOf(id) > -1 : true);
2070
2070
  }
2071
2071
  /**