@esri/solutions-components 0.3.2 → 0.3.3

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 (163) hide show
  1. package/dist/assets/t9n/public-notification/resources.json +4 -1
  2. package/dist/assets/t9n/public-notification/resources_en.json +4 -1
  3. package/dist/cjs/buffer-tools_6.cjs.entry.js +8 -7
  4. package/dist/cjs/calcite-combobox_3.cjs.entry.js +38 -25
  5. package/dist/cjs/calcite-input-message_5.cjs.entry.js +272 -21
  6. package/dist/cjs/{csvUtils-18a03353.js → csvUtils-83af7ae1.js} +5 -5
  7. package/dist/cjs/layer-table.cjs.entry.js +3 -3
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/cjs/map-search.cjs.entry.js +46 -7
  10. package/dist/cjs/{mapViewUtils-8ea9adc5.js → mapViewUtils-55ac76cb.js} +40 -25
  11. package/dist/cjs/public-notification.cjs.entry.js +101 -18
  12. package/dist/cjs/{publicNotificationStore-aca88430.js → publicNotificationStore-28a8759d.js} +3 -1
  13. package/dist/cjs/solutions-components.cjs.js +1 -1
  14. package/dist/collection/collection-manifest.json +0 -5
  15. package/dist/collection/components/buffer-tools/buffer-tools.js +7 -6
  16. package/dist/collection/components/layer-table/layer-table.js +1 -1
  17. package/dist/collection/components/map-layer-picker/map-layer-picker.js +47 -29
  18. package/dist/collection/components/map-search/map-search.js +66 -7
  19. package/dist/collection/components/map-select-tools/map-select-tools.js +125 -8
  20. package/dist/collection/components/pdf-download/pdf-download.js +32 -8
  21. package/dist/collection/components/public-notification/public-notification.css +46 -41
  22. package/dist/collection/components/public-notification/public-notification.js +267 -19
  23. package/dist/collection/components/refine-selection/refine-selection.js +18 -1
  24. package/dist/collection/components/refine-selection-tools/refine-selection-tools.js +22 -5
  25. package/dist/{solutions-components/demos/config-pdf-download.html → collection/demos/buffer-tools.html} +13 -21
  26. package/dist/collection/demos/index.html +0 -24
  27. package/dist/collection/demos/map-draw-tools.html +17 -17
  28. package/dist/collection/demos/map-layer-picker.html +2 -0
  29. package/dist/collection/demos/map-search.html +16 -15
  30. package/dist/collection/demos/map-select-tools.html +16 -24
  31. package/dist/collection/demos/new-public-notification.html +46 -35
  32. package/dist/collection/demos/pdf-download.html +8 -1
  33. package/dist/collection/utils/csvUtils.js +4 -4
  34. package/dist/collection/utils/csvUtils.ts +6 -4
  35. package/dist/collection/utils/interfaces.ts +65 -1
  36. package/dist/collection/utils/mapViewUtils.js +36 -22
  37. package/dist/collection/utils/mapViewUtils.ts +50 -27
  38. package/dist/collection/utils/publicNotificationStore.js +3 -1
  39. package/dist/collection/utils/publicNotificationStore.ts +3 -1
  40. package/dist/collection/utils/queryUtils.js +2 -2
  41. package/dist/collection/utils/queryUtils.ts +2 -2
  42. package/dist/components/buffer-tools2.js +1 -1
  43. package/dist/components/csvUtils.js +4 -4
  44. package/dist/components/index.d.ts +0 -5
  45. package/dist/components/index.js +0 -5
  46. package/dist/components/layer-table.js +2 -3
  47. package/dist/components/map-layer-picker2.js +177 -28
  48. package/dist/components/map-search.js +47 -7
  49. package/dist/components/map-select-tools2.js +56 -11
  50. package/dist/components/pdf-download2.js +217 -8
  51. package/dist/components/public-notification.js +154 -55
  52. package/dist/components/publicNotificationStore.js +3 -1
  53. package/dist/components/queryUtils.js +3 -3
  54. package/dist/components/refine-selection-tools2.js +9 -8
  55. package/dist/components/refine-selection2.js +3 -1
  56. package/dist/esm/buffer-tools_6.entry.js +8 -7
  57. package/dist/esm/calcite-combobox_3.entry.js +38 -25
  58. package/dist/esm/calcite-input-message_5.entry.js +271 -20
  59. package/dist/esm/{csvUtils-edc0c2a8.js → csvUtils-eb231cfb.js} +5 -5
  60. package/dist/esm/layer-table.entry.js +3 -3
  61. package/dist/esm/loader.js +1 -1
  62. package/dist/esm/map-search.entry.js +46 -7
  63. package/dist/esm/{mapViewUtils-31d2c2bb.js → mapViewUtils-e5d8a1e1.js} +39 -25
  64. package/dist/esm/public-notification.entry.js +101 -18
  65. package/dist/esm/{publicNotificationStore-3e762eea.js → publicNotificationStore-8e9cb73b.js} +3 -1
  66. package/dist/esm/solutions-components.js +1 -1
  67. package/dist/{collection/demos/config-pdf-download.html → solutions-components/demos/buffer-tools.html} +13 -21
  68. package/dist/solutions-components/demos/index.html +0 -24
  69. package/dist/solutions-components/demos/map-draw-tools.html +17 -17
  70. package/dist/solutions-components/demos/map-layer-picker.html +2 -0
  71. package/dist/solutions-components/demos/map-search.html +16 -15
  72. package/dist/solutions-components/demos/map-select-tools.html +16 -24
  73. package/dist/solutions-components/demos/new-public-notification.html +46 -35
  74. package/dist/solutions-components/demos/pdf-download.html +8 -1
  75. package/dist/solutions-components/p-07593958.entry.js +6 -0
  76. package/dist/solutions-components/p-3fa9b3c8.js +36 -0
  77. package/dist/solutions-components/p-9b5a9117.entry.js +12 -0
  78. package/dist/solutions-components/{p-15cd8a97.js → p-9c1ebc90.js} +1 -1
  79. package/dist/solutions-components/{p-c76f8ff7.entry.js → p-a516c658.entry.js} +1 -1
  80. package/dist/solutions-components/{p-ad42039f.js → p-b668daf8.js} +2 -2
  81. package/dist/solutions-components/p-bfa95147.entry.js +17 -0
  82. package/dist/solutions-components/p-d09a168c.entry.js +6 -0
  83. package/dist/solutions-components/{p-fa6046a8.entry.js → p-fc9609e6.entry.js} +2 -2
  84. package/dist/solutions-components/solutions-components.esm.js +1 -1
  85. package/dist/solutions-components/utils/csvUtils.ts +6 -4
  86. package/dist/solutions-components/utils/interfaces.ts +65 -1
  87. package/dist/solutions-components/utils/mapViewUtils.ts +50 -27
  88. package/dist/solutions-components/utils/publicNotificationStore.ts +3 -1
  89. package/dist/solutions-components/utils/queryUtils.ts +2 -2
  90. package/dist/types/components/buffer-tools/buffer-tools.d.ts +4 -3
  91. package/dist/types/components/map-layer-picker/map-layer-picker.d.ts +22 -11
  92. package/dist/types/components/map-search/map-search.d.ts +18 -1
  93. package/dist/types/components/map-select-tools/map-select-tools.d.ts +31 -1
  94. package/dist/types/components/pdf-download/pdf-download.d.ts +7 -2
  95. package/dist/types/components/public-notification/public-notification.d.ts +98 -4
  96. package/dist/types/components/refine-selection/refine-selection.d.ts +5 -0
  97. package/dist/types/components/refine-selection-tools/refine-selection-tools.d.ts +6 -1
  98. package/dist/types/components.d.ts +154 -180
  99. package/dist/types/preact.d.ts +0 -10
  100. package/dist/types/utils/csvUtils.d.ts +1 -1
  101. package/dist/types/utils/interfaces.d.ts +56 -1
  102. package/dist/types/utils/mapViewUtils.d.ts +19 -9
  103. package/dist/types/utils/publicNotificationStore.d.ts +1 -0
  104. package/package.json +1 -1
  105. package/dist/cjs/check-list.cjs.entry.js +0 -103
  106. package/dist/cjs/config-buffer-tools.cjs.entry.js +0 -125
  107. package/dist/cjs/config-draw-tools.cjs.entry.js +0 -85
  108. package/dist/cjs/config-layer-picker.cjs.entry.js +0 -113
  109. package/dist/cjs/config-pdf-download.cjs.entry.js +0 -117
  110. package/dist/cjs/labelFormats-3236d2e0.js +0 -212
  111. package/dist/collection/components/check-list/check-list.css +0 -3
  112. package/dist/collection/components/check-list/check-list.js +0 -179
  113. package/dist/collection/components/config-buffer-tools/config-buffer-tools.css +0 -34
  114. package/dist/collection/components/config-buffer-tools/config-buffer-tools.js +0 -209
  115. package/dist/collection/components/config-draw-tools/config-draw-tools.css +0 -17
  116. package/dist/collection/components/config-draw-tools/config-draw-tools.js +0 -150
  117. package/dist/collection/components/config-layer-picker/config-layer-picker.css +0 -17
  118. package/dist/collection/components/config-layer-picker/config-layer-picker.js +0 -218
  119. package/dist/collection/components/config-pdf-download/config-pdf-download.css +0 -17
  120. package/dist/collection/components/config-pdf-download/config-pdf-download.js +0 -183
  121. package/dist/collection/demos/check-list.html +0 -65
  122. package/dist/collection/demos/config-buffer-tools.html +0 -92
  123. package/dist/collection/demos/config-draw-tools.html +0 -58
  124. package/dist/collection/demos/config-layer-picker.html +0 -97
  125. package/dist/components/check-list.d.ts +0 -11
  126. package/dist/components/check-list.js +0 -11
  127. package/dist/components/check-list2.js +0 -131
  128. package/dist/components/config-buffer-tools.d.ts +0 -11
  129. package/dist/components/config-buffer-tools.js +0 -187
  130. package/dist/components/config-draw-tools.d.ts +0 -11
  131. package/dist/components/config-draw-tools.js +0 -121
  132. package/dist/components/config-layer-picker.d.ts +0 -11
  133. package/dist/components/config-layer-picker.js +0 -163
  134. package/dist/components/config-pdf-download.d.ts +0 -11
  135. package/dist/components/config-pdf-download.js +0 -154
  136. package/dist/components/labelFormats.js +0 -210
  137. package/dist/components/mapViewUtils.js +0 -129
  138. package/dist/esm/check-list.entry.js +0 -99
  139. package/dist/esm/config-buffer-tools.entry.js +0 -121
  140. package/dist/esm/config-draw-tools.entry.js +0 -81
  141. package/dist/esm/config-layer-picker.entry.js +0 -109
  142. package/dist/esm/config-pdf-download.entry.js +0 -113
  143. package/dist/esm/labelFormats-b37958c3.js +0 -210
  144. package/dist/solutions-components/demos/check-list.html +0 -65
  145. package/dist/solutions-components/demos/config-buffer-tools.html +0 -92
  146. package/dist/solutions-components/demos/config-draw-tools.html +0 -58
  147. package/dist/solutions-components/demos/config-layer-picker.html +0 -97
  148. package/dist/solutions-components/p-16a0e65a.entry.js +0 -6
  149. package/dist/solutions-components/p-35078393.entry.js +0 -17
  150. package/dist/solutions-components/p-3d72bba6.entry.js +0 -6
  151. package/dist/solutions-components/p-3e444242.entry.js +0 -6
  152. package/dist/solutions-components/p-67afea92.entry.js +0 -12
  153. package/dist/solutions-components/p-7dcab29d.js +0 -36
  154. package/dist/solutions-components/p-89f7b02a.entry.js +0 -6
  155. package/dist/solutions-components/p-906b7b96.entry.js +0 -6
  156. package/dist/solutions-components/p-99c98510.entry.js +0 -6
  157. package/dist/solutions-components/p-b1a3605f.entry.js +0 -6
  158. package/dist/solutions-components/p-e99b1247.js +0 -6
  159. package/dist/types/components/check-list/check-list.d.ts +0 -57
  160. package/dist/types/components/config-buffer-tools/config-buffer-tools.d.ts +0 -92
  161. package/dist/types/components/config-draw-tools/config-draw-tools.d.ts +0 -58
  162. package/dist/types/components/config-layer-picker/config-layer-picker.d.ts +0 -83
  163. package/dist/types/components/config-pdf-download/config-pdf-download.d.ts +0 -81
@@ -4,7 +4,7 @@
4
4
  * http://www.apache.org/licenses/LICENSE-2.0
5
5
  */
6
6
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
7
- import { g as getMapLayerNames } from './mapViewUtils.js';
7
+ import { a as queryExtent } from './queryUtils.js';
8
8
  import { s as state } from './publicNotificationStore.js';
9
9
  import { d as defineCustomElement$6 } from './chip.js';
10
10
  import { d as defineCustomElement$5 } from './combobox.js';
@@ -13,6 +13,141 @@ import { d as defineCustomElement$3 } from './icon.js';
13
13
  import { d as defineCustomElement$2 } from './option.js';
14
14
  import { d as defineCustomElement$1 } from './select.js';
15
15
 
16
+ /** @license
17
+ * Copyright 2022 Esri
18
+ *
19
+ * Licensed under the Apache License, Version 2.0 (the "License");
20
+ * you may not use this file except in compliance with the License.
21
+ * You may obtain a copy of the License at
22
+ *
23
+ * http://www.apache.org/licenses/LICENSE-2.0
24
+ *
25
+ * Unless required by applicable law or agreed to in writing, software
26
+ * distributed under the License is distributed on an "AS IS" BASIS,
27
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
28
+ * See the License for the specific language governing permissions and
29
+ * limitations under the License.
30
+ */
31
+ /**
32
+ * Gets the layer names from the current map
33
+ *
34
+ * @param mapView the map view to fetch the layer names from
35
+ *
36
+ * @returns Promise resolving with an array of layer names
37
+ *
38
+ */
39
+ async function getMapLayerHash(mapView) {
40
+ let layerHash = {};
41
+ await mapView.when(() => {
42
+ layerHash = mapView.map.layers.toArray().reduce((prev, cur) => {
43
+ prev[cur.id] = cur.title;
44
+ return prev;
45
+ }, {});
46
+ });
47
+ return layerHash;
48
+ }
49
+ /**
50
+ * Gets the layer names from the current map
51
+ *
52
+ * @param mapView the map view to fetch the layer names from
53
+ *
54
+ * @returns Promise resolving with an array of layer names
55
+ *
56
+ */
57
+ async function getMapLayerIds(mapView) {
58
+ let layerIds = [];
59
+ await mapView.when(() => {
60
+ layerIds = mapView.map.layers.toArray().map((l) => {
61
+ return l.id;
62
+ });
63
+ });
64
+ return layerIds;
65
+ }
66
+ /**
67
+ * Get a layer view by id
68
+ *
69
+ * @param mapView the map view to fetch the layer from
70
+ * @param id the id if the layer to fetch
71
+ *
72
+ * @returns Promise resolving with the fetched layer view
73
+ *
74
+ */
75
+ async function getMapLayerView(mapView, id) {
76
+ const layer = await getMapLayer(mapView, id);
77
+ return layer ? await mapView.whenLayerView(layer) : undefined;
78
+ }
79
+ /**
80
+ * Get a layer by id
81
+ *
82
+ * @param mapView the map view to fetch the layer from
83
+ * @param id the id if the layer to fetch
84
+ *
85
+ * @returns Promise resolving with the fetched layer
86
+ *
87
+ */
88
+ async function getMapLayer(mapView, id) {
89
+ let layers = [];
90
+ await mapView.when(() => {
91
+ layers = mapView.map.layers.toArray().filter((l) => {
92
+ return l.id === id;
93
+ });
94
+ });
95
+ return layers.length > 0 ? layers[0] : undefined;
96
+ }
97
+ /**
98
+ * Highlight features by OID
99
+ *
100
+ * @param ids the OIDs from the layer to highlight
101
+ * @param layerView the layer view to highlight
102
+ * @param mapView the map view used if updateExtent is true
103
+ * @param updateExtent optional (default false) boolean to indicate if we should zoom to the extent
104
+ *
105
+ * @returns Promise resolving with the highlight handle
106
+ *
107
+ */
108
+ async function highlightFeatures(ids, layerView, mapView, updateExtent = false) {
109
+ if (updateExtent) {
110
+ await goToSelection(ids, layerView, mapView, false);
111
+ }
112
+ return layerView.highlight(ids);
113
+ }
114
+ /**
115
+ * Flash features by OID
116
+ *
117
+ * @param ids the OIDs from the layer to highlight
118
+ * @param layerView the layer view to highlight
119
+ *
120
+ * @returns Promise resolving when the operation is complete
121
+ *
122
+ */
123
+ async function flashSelection(ids, layerView, featureEffect) {
124
+ const filter = {
125
+ objectIds: ids
126
+ };
127
+ layerView.featureEffect = Object.assign(Object.assign({}, featureEffect), { filter });
128
+ setTimeout(() => {
129
+ layerView.featureEffect = undefined;
130
+ }, 1300);
131
+ }
132
+ /**
133
+ * Zoom to features based on OID
134
+ *
135
+ * @param ids the OIDs from the layer to go to
136
+ * @param layerView the layer view that contains the OIDs
137
+ * @param mapView the map view to show the extent change
138
+ * @param flashFeatures optional (default true) boolean to indicate if we should flash the features
139
+ *
140
+ * @returns Promise resolving when the operation is complete
141
+ *
142
+ */
143
+ async function goToSelection(ids, layerView, mapView, flashFeatures = true, featureEffect = undefined) {
144
+ const result = await queryExtent(ids, layerView.layer);
145
+ await mapView.goTo(result.extent);
146
+ if (flashFeatures) {
147
+ await flashSelection(ids, layerView, featureEffect);
148
+ }
149
+ }
150
+
16
151
  const mapLayerPickerCss = ":host{display:block}.map-layer-picker-container{width:100%}.map-layer-picker{position:relative;width:100%;display:inline-block}.padding-bottom-1{padding-bottom:1rem}";
17
152
 
18
153
  const MapLayerPicker = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
@@ -20,10 +155,11 @@ const MapLayerPicker = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
20
155
  super();
21
156
  this.__registerHost();
22
157
  this.layerSelectionChange = createEvent(this, "layerSelectionChange", 7);
23
- this.layerNames = [];
158
+ this.enabledLayerIds = [];
24
159
  this.mapView = undefined;
25
- this.selectedLayers = [];
160
+ this.selectedLayerIds = [];
26
161
  this.selectionMode = "single";
162
+ this.layerIds = [];
27
163
  }
28
164
  //--------------------------------------------------------------------------
29
165
  //
@@ -38,7 +174,7 @@ const MapLayerPicker = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
38
174
  if (newValue !== oldValue) {
39
175
  await this._setLayers();
40
176
  if (this.selectionMode === "single") {
41
- this.layerSelectionChange.emit([this.layerNames[0]]);
177
+ this.layerSelectionChange.emit([this.layerIds[0]]);
42
178
  }
43
179
  }
44
180
  }
@@ -52,8 +188,8 @@ const MapLayerPicker = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
52
188
  */
53
189
  async componentWillLoad() {
54
190
  await this._setLayers();
55
- if (this.selectionMode === "single" && (this.layerNames.length > 0 || this.selectedLayers.length === 1)) {
56
- this.layerSelectionChange.emit(this.selectedLayers.length === 1 ? [this.selectedLayers[0]] : [this.layerNames[0]]);
191
+ if (this.selectionMode === "single" && (this.layerIds.length > 0 || this.selectedLayerIds.length === 1)) {
192
+ this.layerSelectionChange.emit(this.selectedLayerIds.length === 1 ? [this.selectedLayerIds[0]] : [this.layerIds[0]]);
57
193
  }
58
194
  }
59
195
  /**
@@ -72,62 +208,74 @@ const MapLayerPicker = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
72
208
  *
73
209
  * Used for selecting a single layer.
74
210
  *
75
- * @returns Calcite Select component with the names of the layers from the map
211
+ * @returns Calcite Select component with the ids of the layers from the map
76
212
  */
77
213
  _getSelect() {
78
214
  return (h("calcite-select", { label: "", onCalciteSelectChange: (evt) => this._layerSelectionChange(evt), ref: (el) => { this._layerElement = el; } }, this._addMapLayersOptions()));
79
215
  }
80
216
  /**
81
- * Create a list of layers from the map
217
+ * Create a list of layer ids from the map
82
218
  *
83
219
  * Used for selecting multiple layers
84
220
  *
85
- * @returns Calcite ComboBox component with the names of the layers from the map
221
+ * @returns Calcite ComboBox component with the ids of the layers from the map
86
222
  */
87
223
  _getCombobox() {
88
224
  return (h("calcite-combobox", { label: "", onCalciteComboboxChange: (evt) => this._layerSelectionChange(evt), "selection-mode": this.selectionMode }, this._addMapLayersOptions()));
89
225
  }
90
226
  /**
91
- * Hydrate a select or combobox component with the names of the layers in the map
227
+ * Hydrate a select or combobox component with the ids of the layers in the map
92
228
  *
93
- * @returns Array of ComboBox items or Select options for the names of the layers
229
+ * @returns Array of ComboBox items or Select options for the ids of the layers
94
230
  */
95
231
  _addMapLayersOptions() {
96
- return this.layerNames.reduce((prev, cur) => {
97
- if (state.managedLayers.indexOf(cur) < 0) {
98
- prev.push(this.selectionMode === "multi" && this.selectedLayers.indexOf(cur) > -1 ?
99
- (h("calcite-combobox-item", { selected: true, textLabel: cur, value: cur })) :
232
+ return this.layerIds.reduce((prev, cur) => {
233
+ if (state.managedLayers.indexOf(state.layerNameHash[cur]) < 0 && (this.enabledLayerIds.length > 0 ? this.enabledLayerIds.indexOf(cur) > -1 : true)) {
234
+ prev.push(this.selectionMode === "multi" && this.selectedLayerIds.indexOf(cur) > -1 ?
235
+ (h("calcite-combobox-item", { selected: true, textLabel: state.layerNameHash[cur], value: cur })) :
100
236
  this.selectionMode === "multi" ?
101
- (h("calcite-combobox-item", { textLabel: cur, value: cur })) :
102
- this.selectedLayers.indexOf(cur) > -1 ?
103
- (h("calcite-option", { label: cur, selected: true, value: cur })) :
104
- (h("calcite-option", { label: cur, value: cur })));
237
+ (h("calcite-combobox-item", { textLabel: state.layerNameHash[cur], value: cur })) :
238
+ this.selectedLayerIds.indexOf(cur) > -1 ?
239
+ (h("calcite-option", { label: state.layerNameHash[cur], selected: true, value: cur })) :
240
+ (h("calcite-option", { label: state.layerNameHash[cur], value: cur })));
105
241
  }
106
242
  return prev;
107
243
  }, []);
108
244
  }
109
245
  /**
110
- * Fetch the names of the layers from the map
246
+ * Fetch the ids of the layers from the map
111
247
  *
112
248
  * @returns Promise when the operation has completed
113
249
  */
114
250
  async _setLayers() {
115
251
  if (this.mapView) {
116
- this.layerNames = await getMapLayerNames(this.mapView);
252
+ const mapLayerIds = await getMapLayerIds(this.mapView);
253
+ this.layerIds = mapLayerIds.filter(n => { var _a; return ((_a = this.enabledLayerIds) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.enabledLayerIds.indexOf(n) > -1 : true; });
254
+ await this._initLayerHashState();
255
+ }
256
+ }
257
+ /**
258
+ * Create a layer id:title hash for layer name display
259
+ *
260
+ * @returns Promise when the operation has completed
261
+ */
262
+ async _initLayerHashState() {
263
+ if (this.mapView) {
264
+ state.layerNameHash = await getMapLayerHash(this.mapView);
117
265
  }
118
266
  }
119
267
  /**
120
- * Fetch the names of the layers from the map
268
+ * Fetch the ids of the layers from the map
121
269
  *
122
270
  * @returns Promise when the operation has completed
123
271
  */
124
272
  _layerSelectionChange(evt) {
125
273
  var _a;
126
- this.selectedLayers = this.selectionMode === "single" ?
274
+ this.selectedLayerIds = this.selectionMode === "single" ?
127
275
  [this._layerElement.value] : ((_a = evt.detail) === null || _a === void 0 ? void 0 : _a.selectedItems.map((item) => {
128
276
  return item.value;
129
277
  })) || [];
130
- this.layerSelectionChange.emit(this.selectedLayers);
278
+ this.layerSelectionChange.emit(this.selectedLayerIds);
131
279
  }
132
280
  get el() { return this; }
133
281
  static get watchers() { return {
@@ -135,10 +283,11 @@ const MapLayerPicker = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
135
283
  }; }
136
284
  static get style() { return mapLayerPickerCss; }
137
285
  }, [0, "map-layer-picker", {
138
- "layerNames": [1040],
286
+ "enabledLayerIds": [16],
139
287
  "mapView": [16],
140
- "selectedLayers": [1040],
141
- "selectionMode": [1537, "selection-mode"]
288
+ "selectedLayerIds": [1040],
289
+ "selectionMode": [1537, "selection-mode"],
290
+ "layerIds": [32]
142
291
  }]);
143
292
  function defineCustomElement() {
144
293
  if (typeof customElements === "undefined") {
@@ -185,4 +334,4 @@ function defineCustomElement() {
185
334
  }
186
335
  defineCustomElement();
187
336
 
188
- export { MapLayerPicker as M, defineCustomElement as d };
337
+ export { MapLayerPicker as M, getMapLayerView as a, defineCustomElement as d, goToSelection as g, highlightFeatures as h };
@@ -15,6 +15,7 @@ const MapSearch$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
15
15
  this.__registerHost();
16
16
  this.searchChange = createEvent(this, "searchChange", 7);
17
17
  this.mapView = undefined;
18
+ this.searchConfiguration = undefined;
18
19
  this._searchTerm = undefined;
19
20
  this._translations = undefined;
20
21
  }
@@ -75,10 +76,12 @@ const MapSearch$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
75
76
  * @protected
76
77
  */
77
78
  async _initModules() {
78
- const [Search] = await loadModules([
79
- "esri/widgets/Search"
79
+ const [Search, FeatureLayer] = await loadModules([
80
+ "esri/widgets/Search",
81
+ "esri/layers/FeatureLayer"
80
82
  ]);
81
83
  this.Search = Search;
84
+ this.FeatureLayer = FeatureLayer;
82
85
  }
83
86
  /**
84
87
  * Initialize the search widget
@@ -95,11 +98,8 @@ const MapSearch$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
95
98
  */
96
99
  _initSearchWidget() {
97
100
  if (this.mapView && this._searchElement) {
98
- const searchOptions = {
99
- view: this.mapView,
100
- container: this._searchElement,
101
- searchTerm: this._searchTerm
102
- };
101
+ const searchConfiguration = this._getSearchConfig(this.searchConfiguration, this.mapView);
102
+ const searchOptions = Object.assign({ view: this.mapView, container: this._searchElement, searchTerm: this._searchTerm }, searchConfiguration);
103
103
  this._searchWidget = new this.Search(searchOptions);
104
104
  this._searchWidget.on("search-clear", () => {
105
105
  this._searchResult = undefined;
@@ -117,6 +117,45 @@ const MapSearch$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
117
117
  });
118
118
  }
119
119
  }
120
+ /**
121
+ * Initialize the search widget based on user defined configuration
122
+ *
123
+ * @param searchConfiguration search configuration defined by the user
124
+ * @param view the current map view
125
+ *
126
+ * @protected
127
+ */
128
+ _getSearchConfig(searchConfiguration, view) {
129
+ var _a;
130
+ const sources = searchConfiguration === null || searchConfiguration === void 0 ? void 0 : searchConfiguration.sources;
131
+ if (sources) {
132
+ sources.forEach(source => {
133
+ var _a, _b, _c;
134
+ const isLayerSource = source.hasOwnProperty("layer");
135
+ if (isLayerSource) {
136
+ const layerSource = source;
137
+ const layerFromMap = ((_a = layerSource.layer) === null || _a === void 0 ? void 0 : _a.id)
138
+ ? view.map.findLayerById(layerSource.layer.id)
139
+ : null;
140
+ if (layerFromMap) {
141
+ layerSource.layer = layerFromMap;
142
+ }
143
+ else if ((_b = layerSource === null || layerSource === void 0 ? void 0 : layerSource.layer) === null || _b === void 0 ? void 0 : _b.url) {
144
+ layerSource.layer = new this.FeatureLayer((_c = layerSource === null || layerSource === void 0 ? void 0 : layerSource.layer) === null || _c === void 0 ? void 0 : _c.url);
145
+ }
146
+ }
147
+ });
148
+ }
149
+ (_a = searchConfiguration === null || searchConfiguration === void 0 ? void 0 : searchConfiguration.sources) === null || _a === void 0 ? void 0 : _a.forEach(source => {
150
+ const isLocatorSource = source.hasOwnProperty("locator");
151
+ if (isLocatorSource) {
152
+ const locatorSource = source;
153
+ locatorSource.url = locatorSource.url;
154
+ delete locatorSource.url;
155
+ }
156
+ });
157
+ return searchConfiguration;
158
+ }
120
159
  /**
121
160
  * Fetches the component's translations
122
161
  *
@@ -130,6 +169,7 @@ const MapSearch$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
130
169
  static get style() { return mapSearchCss; }
131
170
  }, [0, "map-search", {
132
171
  "mapView": [16],
172
+ "searchConfiguration": [16],
133
173
  "_searchTerm": [32],
134
174
  "_translations": [32],
135
175
  "clear": [64]
@@ -5,8 +5,8 @@
5
5
  */
6
6
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
7
7
  import { l as loadModules } from './loadModules.js';
8
- import { a as goToSelection, h as highlightFeatures } from './mapViewUtils.js';
9
- import { a as queryObjectIds, b as getQueryGeoms } from './queryUtils.js';
8
+ import { g as goToSelection, h as highlightFeatures, d as defineCustomElement$2 } from './map-layer-picker2.js';
9
+ import { b as queryObjectIds, c as getQueryGeoms } from './queryUtils.js';
10
10
  import { c as EWorkflowType, e as ESelectionMode, f as ERefineMode, b as ESketchType } from './interfaces3.js';
11
11
  import { s as state } from './publicNotificationStore.js';
12
12
  import { g as getLocaleComponentStrings } from './locale.js';
@@ -28,7 +28,6 @@ import { d as defineCustomElement$6 } from './radio-group-item.js';
28
28
  import { d as defineCustomElement$5 } from './select.js';
29
29
  import { d as defineCustomElement$4 } from './slider.js';
30
30
  import { d as defineCustomElement$3 } from './map-draw-tools2.js';
31
- import { d as defineCustomElement$2 } from './map-layer-picker2.js';
32
31
  import { d as defineCustomElement$1 } from './refine-selection-tools2.js';
33
32
 
34
33
  const mapSelectToolsCss = ":host{display:block}.div-visible{display:inherit}.div-visible-search{display:flex;height:44px;align-items:center;padding-bottom:0}.div-not-visible{display:none}.padding-bottom-1{padding-bottom:1rem}.search-widget{width:100% !important;border:1px solid var(--calcite-ui-border-input)}.w-100{width:100%}.w-50{width:50%}.search-distance-container{padding-top:\"1rem\" !important}.end-border{-webkit-border-end:1px solid var(--calcite-ui-border-2);border-inline-end:1px solid var(--calcite-ui-border-2)}.search-distance{display:flex;padding-top:1rem}";
@@ -48,9 +47,13 @@ const MapSelectTools = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
48
47
  * string: A label to help uniquely identify the selection set
49
48
  */
50
49
  this._selectionLabel = "";
50
+ this.enabledLayerIds = [];
51
+ this.defaultBufferDistance = undefined;
52
+ this.defaultBufferUnit = undefined;
51
53
  this.geometries = undefined;
52
54
  this.isUpdate = false;
53
55
  this.mapView = undefined;
56
+ this.searchConfiguration = undefined;
54
57
  this.selectionSet = undefined;
55
58
  this.selectLayerView = undefined;
56
59
  this.showBufferTools = true;
@@ -176,7 +179,7 @@ const MapSelectTools = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
176
179
  const useSelectClass = this._layerSelectChecked && !searchEnabled ? " div-visible" : " div-not-visible";
177
180
  const useDrawClass = !this._layerSelectChecked && !searchEnabled ? " div-visible" : " div-not-visible";
178
181
  const showLayerChoiceClass = searchEnabled ? "div-not-visible" : "div-visible";
179
- return (h(Host, null, h("div", { class: "padding-bottom-1" }, h("calcite-radio-group", { class: "w-100", onCalciteRadioGroupChange: (evt) => this._workflowChange(evt) }, h("calcite-radio-group-item", { checked: searchEnabled, class: "w-50 end-border", value: EWorkflowType.SEARCH }, this._translations.search), h("calcite-radio-group-item", { checked: drawEnabled, class: "w-50", value: EWorkflowType.SKETCH }, this._translations.sketch))), h("div", { class: showSearchClass }, h("div", { class: "search-widget", ref: (el) => { this._searchElement = el; } })), h("div", { class: showLayerChoiceClass }, h("calcite-label", { layout: "inline" }, h("calcite-checkbox", { onCalciteCheckboxChange: () => this._layerSelectChanged(), ref: (el) => this._selectFromLayerElement = el }), "Use layer features")), h("div", { class: useDrawClass }, h("map-draw-tools", { active: true, border: true, mapView: this.mapView, ref: (el) => { this._drawTools = el; } })), h("div", { class: useSelectClass }, h("refine-selection-tools", { active: true, border: true, layerViews: this._refineSelectLayers, mapView: this.mapView, mode: ESelectionMode.ADD, ref: (el) => { this._refineTools = el; }, refineMode: ERefineMode.SUBSET })), h("calcite-label", { class: showBufferToolsClass }, this._translations.searchDistance, h("buffer-tools", { distance: (_a = this.selectionSet) === null || _a === void 0 ? void 0 : _a.distance, geometries: this.geometries, onBufferComplete: (evt) => this._bufferComplete(evt), ref: (el) => this._bufferTools = el, unit: (_b = this.selectionSet) === null || _b === void 0 ? void 0 : _b.unit })), h("slot", null)));
182
+ return (h(Host, null, h("div", { class: "padding-bottom-1" }, h("calcite-radio-group", { class: "w-100", onCalciteRadioGroupChange: (evt) => this._workflowChange(evt) }, h("calcite-radio-group-item", { checked: searchEnabled, class: "w-50 end-border", value: EWorkflowType.SEARCH }, this._translations.search), h("calcite-radio-group-item", { checked: drawEnabled, class: "w-50", value: EWorkflowType.SKETCH }, this._translations.sketch))), h("div", { class: showSearchClass }, h("div", { class: "search-widget", ref: (el) => { this._searchElement = el; } })), h("div", { class: showLayerChoiceClass }, h("calcite-label", { layout: "inline" }, h("calcite-checkbox", { onCalciteCheckboxChange: () => this._layerSelectChanged(), ref: (el) => this._selectFromLayerElement = el }), "Use layer features")), h("div", { class: useDrawClass }, h("map-draw-tools", { active: true, border: true, mapView: this.mapView, ref: (el) => { this._drawTools = el; } })), h("div", { class: useSelectClass }, h("refine-selection-tools", { active: true, border: true, enabledLayerIds: this.enabledLayerIds, layerViews: this._refineSelectLayers, mapView: this.mapView, mode: ESelectionMode.ADD, ref: (el) => { this._refineTools = el; }, refineMode: ERefineMode.SUBSET })), h("calcite-label", { class: showBufferToolsClass }, this._translations.searchDistance, h("buffer-tools", { distance: ((_a = this.selectionSet) === null || _a === void 0 ? void 0 : _a.distance) || this.defaultBufferDistance, geometries: this.geometries, onBufferComplete: (evt) => this._bufferComplete(evt), ref: (el) => this._bufferTools = el, unit: ((_b = this.selectionSet) === null || _b === void 0 ? void 0 : _b.unit) || this.defaultBufferUnit })), h("slot", null)));
180
183
  }
181
184
  //--------------------------------------------------------------------------
182
185
  //
@@ -191,16 +194,18 @@ const MapSelectTools = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
191
194
  * @protected
192
195
  */
193
196
  async _initModules() {
194
- const [GraphicsLayer, Graphic, Search, geometryEngine] = await loadModules([
197
+ const [GraphicsLayer, Graphic, Search, geometryEngine, FeatureLayer] = await loadModules([
195
198
  "esri/layers/GraphicsLayer",
196
199
  "esri/Graphic",
197
200
  "esri/widgets/Search",
198
- "esri/geometry/geometryEngine"
201
+ "esri/geometry/geometryEngine",
202
+ "esri/layers/FeatureLayer"
199
203
  ]);
200
204
  this.GraphicsLayer = GraphicsLayer;
201
205
  this.Graphic = Graphic;
202
206
  this.Search = Search;
203
207
  this._geometryEngine = geometryEngine;
208
+ this.FeatureLayer = FeatureLayer;
204
209
  }
205
210
  /**
206
211
  * Initialize the graphics layer, selection set, and search widget
@@ -244,11 +249,8 @@ const MapSelectTools = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
244
249
  */
245
250
  _initSearchWidget() {
246
251
  if (this.mapView && this._searchElement) {
247
- const searchOptions = {
248
- view: this.mapView,
249
- container: this._searchElement,
250
- searchTerm: this._searchTerm
251
- };
252
+ const searchConfiguration = this._getSearchConfig(this.searchConfiguration, this.mapView);
253
+ const searchOptions = Object.assign({ view: this.mapView, container: this._searchElement, searchTerm: this._searchTerm }, searchConfiguration);
252
254
  this._searchWidget = new this.Search(searchOptions);
253
255
  this._searchWidget.on("search-clear", () => {
254
256
  void this._clearResults(false);
@@ -263,6 +265,45 @@ const MapSelectTools = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
263
265
  });
264
266
  }
265
267
  }
268
+ /**
269
+ * Initialize the search widget based on user defined configuration
270
+ *
271
+ * @param searchConfiguration search configuration defined by the user
272
+ * @param view the current map view
273
+ *
274
+ * @protected
275
+ */
276
+ _getSearchConfig(searchConfiguration, view) {
277
+ var _a;
278
+ const sources = searchConfiguration === null || searchConfiguration === void 0 ? void 0 : searchConfiguration.sources;
279
+ if (sources) {
280
+ sources.forEach(source => {
281
+ var _a, _b, _c;
282
+ const isLayerSource = source.hasOwnProperty("layer");
283
+ if (isLayerSource) {
284
+ const layerSource = source;
285
+ const layerFromMap = ((_a = layerSource.layer) === null || _a === void 0 ? void 0 : _a.id)
286
+ ? view.map.findLayerById(layerSource.layer.id)
287
+ : null;
288
+ if (layerFromMap) {
289
+ layerSource.layer = layerFromMap;
290
+ }
291
+ else if ((_b = layerSource === null || layerSource === void 0 ? void 0 : layerSource.layer) === null || _b === void 0 ? void 0 : _b.url) {
292
+ layerSource.layer = new this.FeatureLayer((_c = layerSource === null || layerSource === void 0 ? void 0 : layerSource.layer) === null || _c === void 0 ? void 0 : _c.url);
293
+ }
294
+ }
295
+ });
296
+ }
297
+ (_a = searchConfiguration === null || searchConfiguration === void 0 ? void 0 : searchConfiguration.sources) === null || _a === void 0 ? void 0 : _a.forEach(source => {
298
+ const isLocatorSource = source.hasOwnProperty("locator");
299
+ if (isLocatorSource) {
300
+ const locatorSource = source;
301
+ locatorSource.url = locatorSource.url;
302
+ delete locatorSource.url;
303
+ }
304
+ });
305
+ return searchConfiguration;
306
+ }
266
307
  /**
267
308
  * Initialize the graphics layer used to store any buffer grapghics
268
309
  *
@@ -445,9 +486,13 @@ const MapSelectTools = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
445
486
  }; }
446
487
  static get style() { return mapSelectToolsCss; }
447
488
  }, [4, "map-select-tools", {
489
+ "enabledLayerIds": [16],
490
+ "defaultBufferDistance": [2, "default-buffer-distance"],
491
+ "defaultBufferUnit": [1, "default-buffer-unit"],
448
492
  "geometries": [16],
449
493
  "isUpdate": [4, "is-update"],
450
494
  "mapView": [16],
495
+ "searchConfiguration": [16],
451
496
  "selectionSet": [16],
452
497
  "selectLayerView": [16],
453
498
  "showBufferTools": [4, "show-buffer-tools"],