@esri/solutions-components 0.6.3 → 0.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/dist/cjs/buffer-tools_4.cjs.entry.js +1 -1
  2. package/dist/cjs/calcite-combobox_6.cjs.entry.js +74 -52
  3. package/dist/cjs/calcite-input-text_4.cjs.entry.js +9 -9
  4. package/dist/cjs/card-manager_3.cjs.entry.js +36 -29
  5. package/dist/cjs/crowdsource-manager.cjs.entry.js +2 -2
  6. package/dist/cjs/{downloadUtils-6d4e269f.js → downloadUtils-4aadf4b0.js} +4 -3
  7. package/dist/cjs/edit-card_2.cjs.entry.js +11 -6
  8. package/dist/cjs/{index.es-fc923796.js → index.es-17db3b89.js} +2 -2
  9. package/dist/cjs/loader.cjs.js +1 -1
  10. package/dist/cjs/{mapViewUtils-efc49df7.js → mapViewUtils-77a1ff88.js} +48 -6
  11. package/dist/cjs/public-notification.cjs.entry.js +3 -3
  12. package/dist/cjs/{publicNotificationStore-cd1a32c3.js → publicNotificationStore-ec1bdd2d.js} +5 -1
  13. package/dist/cjs/solutions-components.cjs.js +1 -1
  14. package/dist/collection/components/card-manager/card-manager.js +8 -8
  15. package/dist/collection/components/crowdsource-manager/crowdsource-manager.css +2 -2
  16. package/dist/collection/components/crowdsource-manager/crowdsource-manager.js +1 -1
  17. package/dist/collection/components/edit-card/edit-card.css +1 -1
  18. package/dist/collection/components/edit-card/edit-card.js +7 -1
  19. package/dist/collection/components/info-card/info-card.js +4 -5
  20. package/dist/collection/components/layer-table/layer-table.js +34 -27
  21. package/dist/collection/components/map-layer-picker/map-layer-picker.js +110 -54
  22. package/dist/collection/components/map-select-tools/map-select-tools.js +5 -5
  23. package/dist/collection/components/refine-selection/refine-selection.js +3 -3
  24. package/dist/collection/demos/crowdsource-manager.html +31 -16
  25. package/dist/collection/utils/downloadUtils.js +2 -1
  26. package/dist/collection/utils/downloadUtils.ts +1 -1
  27. package/dist/collection/utils/interfaces.ts +6 -5
  28. package/dist/collection/utils/mapViewUtils.js +44 -5
  29. package/dist/collection/utils/mapViewUtils.ts +52 -7
  30. package/dist/collection/utils/publicNotificationStore.js +5 -1
  31. package/dist/collection/utils/publicNotificationStore.ts +5 -1
  32. package/dist/components/card-manager2.js +5 -5
  33. package/dist/components/crowdsource-manager.js +2 -2
  34. package/dist/components/downloadUtils.js +2 -1
  35. package/dist/components/edit-card2.js +7 -1
  36. package/dist/components/info-card2.js +4 -5
  37. package/dist/components/layer-table2.js +33 -26
  38. package/dist/components/map-layer-picker2.js +78 -54
  39. package/dist/components/map-select-tools2.js +5 -5
  40. package/dist/components/mapViewUtils.js +45 -6
  41. package/dist/components/publicNotificationStore.js +5 -1
  42. package/dist/components/refine-selection2.js +3 -3
  43. package/dist/esm/buffer-tools_4.entry.js +1 -1
  44. package/dist/esm/calcite-combobox_6.entry.js +74 -52
  45. package/dist/esm/calcite-input-text_4.entry.js +9 -9
  46. package/dist/esm/card-manager_3.entry.js +36 -29
  47. package/dist/esm/crowdsource-manager.entry.js +2 -2
  48. package/dist/esm/{downloadUtils-1092cb0f.js → downloadUtils-3b5f85d9.js} +4 -3
  49. package/dist/esm/edit-card_2.entry.js +11 -6
  50. package/dist/esm/{index.es-08a48fdd.js → index.es-bb9196f6.js} +2 -2
  51. package/dist/esm/loader.js +1 -1
  52. package/dist/esm/{mapViewUtils-a787c6a8.js → mapViewUtils-55ea1e10.js} +45 -6
  53. package/dist/esm/public-notification.entry.js +3 -3
  54. package/dist/esm/{publicNotificationStore-c36d95bf.js → publicNotificationStore-6ef555f3.js} +5 -1
  55. package/dist/esm/solutions-components.js +1 -1
  56. package/dist/solutions-components/demos/crowdsource-manager.html +31 -16
  57. package/dist/solutions-components/{p-841a5f97.entry.js → p-03179924.entry.js} +1 -1
  58. package/dist/solutions-components/{p-a29ba58a.js → p-477ae127.js} +2 -2
  59. package/dist/solutions-components/p-4af3f843.js +36 -0
  60. package/dist/solutions-components/{p-5b260e5f.js → p-6015e2ee.js} +1 -1
  61. package/dist/solutions-components/{p-ad60a547.js → p-9807924d.js} +3 -3
  62. package/dist/solutions-components/{p-781480c2.entry.js → p-a56f965e.entry.js} +1 -1
  63. package/dist/solutions-components/{p-5a6ca63b.entry.js → p-cdc0bb97.entry.js} +6 -6
  64. package/dist/solutions-components/{p-6305f474.entry.js → p-d3fd28e9.entry.js} +1 -1
  65. package/dist/solutions-components/p-d83da8a0.entry.js +11 -0
  66. package/dist/solutions-components/p-d875f38c.entry.js +6 -0
  67. package/dist/solutions-components/p-ef235c88.entry.js +6 -0
  68. package/dist/solutions-components/solutions-components.esm.js +1 -1
  69. package/dist/solutions-components/utils/downloadUtils.ts +1 -1
  70. package/dist/solutions-components/utils/interfaces.ts +6 -5
  71. package/dist/solutions-components/utils/mapViewUtils.ts +52 -7
  72. package/dist/solutions-components/utils/publicNotificationStore.ts +5 -1
  73. package/dist/types/components/card-manager/card-manager.d.ts +2 -2
  74. package/dist/types/components/edit-card/edit-card.d.ts +6 -2
  75. package/dist/types/components/layer-table/layer-table.d.ts +4 -4
  76. package/dist/types/components/map-layer-picker/map-layer-picker.d.ts +34 -19
  77. package/dist/types/components.d.ts +22 -6
  78. package/dist/types/utils/interfaces.d.ts +4 -3
  79. package/dist/types/utils/mapViewUtils.d.ts +22 -5
  80. package/dist/types/utils/publicNotificationStore.d.ts +2 -0
  81. package/package.json +1 -1
  82. package/dist/solutions-components/p-0641aa9b.js +0 -36
  83. package/dist/solutions-components/p-74a2d025.entry.js +0 -6
  84. package/dist/solutions-components/p-a62c1b3c.entry.js +0 -6
  85. package/dist/solutions-components/p-ccf5c0ff.entry.js +0 -11
@@ -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 { b as getMapLayerIds, c as getMapLayerHash } from './mapViewUtils.js';
7
+ import { b as getMapLayerIds, c as getMapTableIds, d as getMapLayerHash, e as getMapTableHash } from './mapViewUtils.js';
8
8
  import { s as state } from './publicNotificationStore.js';
9
9
  import { d as defineCustomElement$c } from './action.js';
10
10
  import { d as defineCustomElement$b } from './button.js';
@@ -28,13 +28,15 @@ const MapLayerPicker = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
28
28
  this.layerSelectionChange = createEvent(this, "layerSelectionChange", 7);
29
29
  this.appearance = "transparent";
30
30
  this.enabledLayerIds = [];
31
+ this.enabledTableIds = [];
31
32
  this.mapView = undefined;
32
33
  this.placeholderIcon = "";
33
- this.selectedLayerIds = [];
34
+ this.selectedIds = [];
34
35
  this.scale = "m";
36
+ this.showTables = true;
35
37
  this.type = "select";
36
- this.layerIds = [];
37
- this.selectedLayerName = "";
38
+ this.ids = [];
39
+ this.selectedName = "";
38
40
  }
39
41
  //--------------------------------------------------------------------------
40
42
  //
@@ -47,7 +49,11 @@ const MapLayerPicker = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
47
49
  */
48
50
  async mapViewWatchHandler() {
49
51
  await this._setLayers();
50
- this._setSelectedLayer(this.layerIds[0]);
52
+ const hasLayers = Object.keys(state.layerNameHash).length > 0;
53
+ const hasTables = Object.keys(state.tableNameHash).length > 0 && this.showTables;
54
+ if (hasLayers || hasTables) {
55
+ this._setSelectedLayer(this.ids[0], hasLayers ? "layer" : "table");
56
+ }
51
57
  }
52
58
  //--------------------------------------------------------------------------
53
59
  //
@@ -59,8 +65,8 @@ const MapLayerPicker = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
59
65
  */
60
66
  async componentWillLoad() {
61
67
  await this._setLayers();
62
- if (this.layerIds.length > 0 || this.selectedLayerIds.length === 1) {
63
- this.layerSelectionChange.emit(this.selectedLayerIds.length === 1 ? [this.selectedLayerIds[0]] : [this.layerIds[0]]);
68
+ if (this.ids.length > 0 || this.selectedIds.length === 1) {
69
+ this.layerSelectionChange.emit(this.selectedIds.length === 1 ? [this.selectedIds[0]] : [this.ids[0]]);
64
70
  }
65
71
  }
66
72
  /**
@@ -74,13 +80,15 @@ const MapLayerPicker = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
74
80
  * StencilJS: Called once just after the component is fully loaded and the first render() occurs.
75
81
  */
76
82
  async componentDidLoad() {
77
- if (this.layerIds.length > 0 || this.selectedLayerIds.length === 1) {
78
- const id = this.selectedLayerIds.length === 1 ? this.selectedLayerIds[0] : this.layerIds[0];
83
+ if (this.ids.length > 0 || this.selectedIds.length === 1) {
84
+ const id = this.selectedIds.length === 1 ? this.selectedIds[0] : this.ids[0];
79
85
  if (this.type === "select") {
80
86
  this._layerElement.value = id;
81
87
  }
82
88
  else if (this.type === "dropdown") {
83
- this.selectedLayerName = state.layerNameHash[id];
89
+ this.selectedName = Object.keys(state.layerNameHash).indexOf(id) > -1 ?
90
+ state.layerNameHash[id] : Object.keys(state.tableNameHash).indexOf(id) > -1 ?
91
+ state.tableNameHash[id] : "";
84
92
  }
85
93
  }
86
94
  }
@@ -97,7 +105,7 @@ const MapLayerPicker = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
97
105
  * @returns Calcite Select component with the ids of the layers from the map
98
106
  */
99
107
  _getSelect() {
100
- return (h("calcite-select", { label: "", onCalciteSelectChange: () => this._layerSelectionChange(), ref: (el) => { this._layerElement = el; }, scale: this.scale }, this._addSelectMapLayersOptions()));
108
+ return (h("calcite-select", { label: "", onCalciteSelectChange: () => this._layerSelectionChange(), ref: (el) => { this._layerElement = el; }, scale: this.scale }, this._getMapLayerOptions()));
101
109
  }
102
110
  /**
103
111
  * Create a list of layer ids from the map
@@ -107,7 +115,7 @@ const MapLayerPicker = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
107
115
  * @returns Calcite ComboBox component with the ids of the layers from the map
108
116
  */
109
117
  _getCombobox() {
110
- return (h("calcite-combobox", { clearDisabled: true, label: "", onCalciteComboboxChange: () => this._layerSelectionChange(), "placeholder-icon": this.placeholderIcon, ref: (el) => { this._layerElement = el; }, scale: this.scale, "selection-mode": "single" }, this._addComboboxMapLayersOptions()));
118
+ return (h("calcite-combobox", { clearDisabled: true, label: "", onCalciteComboboxChange: () => this._layerSelectionChange(), "placeholder-icon": this.placeholderIcon, ref: (el) => { this._layerElement = el; }, scale: this.scale, "selection-mode": "single" }, this._getMapLayerOptions()));
111
119
  }
112
120
  /**
113
121
  * Hydrate a dropdown component with items to display the layer names
@@ -115,54 +123,42 @@ const MapLayerPicker = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
115
123
  * @returns Array of Dropdown items with layer names
116
124
  */
117
125
  _getDropdown() {
118
- return (h("calcite-dropdown", { class: "layer-picker-dropdown" }, h("calcite-action", { slot: "trigger", text: "" }, h("calcite-button", { alignment: "icon-end-space-between", appearance: this.appearance, class: "max-width-350", iconEnd: "chevron-down", iconStart: "layers", kind: "neutral", width: "full" }, h("div", null, this.selectedLayerName))), h("calcite-dropdown-group", { "selection-mode": "single" }, this._getDropdownItems())));
126
+ return (h("calcite-dropdown", { class: "layer-picker-dropdown" }, h("calcite-action", { slot: "trigger", text: "" }, h("calcite-button", { alignment: "icon-end-space-between", appearance: this.appearance, class: "max-width-350", iconEnd: "chevron-down", iconStart: "layers", kind: "neutral", width: "full" }, h("div", null, this.selectedName))), h("calcite-dropdown-group", { "selection-mode": "single" }, this._getMapLayerOptions())));
119
127
  }
120
128
  /**
121
- * Hydrate a dropdown component with items to display the layer names
129
+ * Get the appropriate type of dom nodes for each valid layer or table
122
130
  *
123
- * @returns Array of Dropdown items with layer names
131
+ * @returns Array of dom nodes with the names of the layers and optionally of the tables
124
132
  */
125
- _getDropdownItems() {
126
- return this.layerIds.reduce((prev, cur) => {
127
- if (state.managedLayers.indexOf(state.layerNameHash[cur]) < 0 && (this.enabledLayerIds.length > 0 ? this.enabledLayerIds.indexOf(cur) > -1 : true)) {
128
- prev.push((h("calcite-dropdown-item", { onClick: () => void this._setSelectedLayer(cur) }, state.layerNameHash[cur])));
133
+ _getMapLayerOptions() {
134
+ return this.ids.reduce((prev, cur) => {
135
+ if (this._validLayer(cur)) {
136
+ prev.push(this._getItem(cur, "layer"));
137
+ }
138
+ else if (this._validTable(cur)) {
139
+ prev.push(this._getItem(cur, "table"));
129
140
  }
130
141
  return prev;
131
142
  }, []);
132
143
  }
133
144
  /**
134
- * Store the layer name based on the user selection
135
- */
136
- _setSelectedLayer(id) {
137
- this.selectedLayerName = state.layerNameHash[id];
138
- this.selectedLayerIds = [id];
139
- this.layerSelectionChange.emit(this.selectedLayerIds);
140
- }
141
- /**
142
- * Hydrate a select component with the ids of the layers in the map
145
+ * Get the appropriate type of dom node for the current layer or table id
143
146
  *
144
- * @returns Array of select options for the ids of the layers
147
+ * @returns A dom node with the name of the layer or table
145
148
  */
146
- _addSelectMapLayersOptions() {
147
- return this.layerIds.reduce((prev, cur) => {
148
- if (state.managedLayers.indexOf(state.layerNameHash[cur]) < 0 && (this.enabledLayerIds.length > 0 ? this.enabledLayerIds.indexOf(cur) > -1 : true)) {
149
- prev.push((h("calcite-option", { label: state.layerNameHash[cur], value: cur })));
150
- }
151
- return prev;
152
- }, []);
149
+ _getItem(id, itemType) {
150
+ const name = itemType === "layer" ? state.layerNameHash[id] : state.tableNameHash[id];
151
+ return this.type === "combobox" ? (h("calcite-combobox-item", { textLabel: name, value: id })) :
152
+ this.type === "select" ? (h("calcite-option", { label: name, value: id })) :
153
+ (h("calcite-dropdown-item", { onClick: () => void this._setSelectedLayer(id, itemType) }, name));
153
154
  }
154
155
  /**
155
- * Hydrate a combobox component with the ids of the layers in the map
156
- *
157
- * @returns Array of ComboBox items for the ids of the layers
156
+ * Store the layer name based on the user selection
158
157
  */
159
- _addComboboxMapLayersOptions() {
160
- return this.layerIds.reduce((prev, cur) => {
161
- if (state.managedLayers.indexOf(state.layerNameHash[cur]) < 0 && (this.enabledLayerIds.length > 0 ? this.enabledLayerIds.indexOf(cur) > -1 : true)) {
162
- prev.push((h("calcite-combobox-item", { textLabel: state.layerNameHash[cur], value: cur })));
163
- }
164
- return prev;
165
- }, []);
158
+ _setSelectedLayer(id, type) {
159
+ this.selectedName = type === "layer" ? state.layerNameHash[id] : state.tableNameHash[id];
160
+ this.selectedIds = [id];
161
+ this.layerSelectionChange.emit(this.selectedIds);
166
162
  }
167
163
  /**
168
164
  * Fetch the ids of the layers from the map
@@ -172,8 +168,12 @@ const MapLayerPicker = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
172
168
  async _setLayers() {
173
169
  if (this.mapView) {
174
170
  const mapLayerIds = await getMapLayerIds(this.mapView);
175
- 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; });
176
- await this._initLayerHashState();
171
+ const mapTableIds = this.showTables ? await getMapTableIds(this.mapView) : [];
172
+ this.ids = [
173
+ ...mapLayerIds.filter(n => { var _a; return ((_a = this.enabledLayerIds) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.enabledLayerIds.indexOf(n) > -1 : true; }),
174
+ ...mapTableIds.filter(n => { var _a; return ((_a = this.enabledTableIds) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.enabledTableIds.indexOf(n) > -1 : true; }),
175
+ ];
176
+ await this._initStateHash();
177
177
  }
178
178
  }
179
179
  /**
@@ -181,11 +181,33 @@ const MapLayerPicker = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
181
181
  *
182
182
  * @returns Promise when the operation has completed
183
183
  */
184
- async _initLayerHashState() {
184
+ async _initStateHash() {
185
185
  if (this.mapView) {
186
186
  state.layerNameHash = await getMapLayerHash(this.mapView);
187
+ state.tableNameHash = this.showTables ? await getMapTableHash(this.mapView) : {};
187
188
  }
188
189
  }
190
+ /**
191
+ * Evaluate if the id exists in the current hash and verify if it should be excluded
192
+ *
193
+ * @returns boolean when true the layer will be used in the current layer picker type
194
+ */
195
+ _validLayer(id) {
196
+ const name = state.layerNameHash[id];
197
+ return name && state.managedLayers.indexOf(name) < 0 && (this.enabledLayerIds.length > 0 ?
198
+ this.enabledLayerIds.indexOf(id) > -1 : name);
199
+ }
200
+ /**
201
+ * Evaluate if the id exists in the current hash and verify if it should be excluded
202
+ *
203
+ * @returns boolean when true the table will be used in the current layer picker type
204
+ */
205
+ _validTable(id) {
206
+ const name = state.tableNameHash[id];
207
+ const validName = name && this.showTables;
208
+ return validName ? state.managedTables.indexOf(name) < 0 &&
209
+ (this.enabledTableIds.length > 0 ? this.enabledTableIds.indexOf(id) > -1 : true) : validName;
210
+ }
189
211
  /**
190
212
  * Fetch the ids of the layers from the map
191
213
  *
@@ -194,8 +216,8 @@ const MapLayerPicker = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
194
216
  _layerSelectionChange() {
195
217
  const ids = Array.isArray(this._layerElement.value) ? this._layerElement.value : [this._layerElement.value];
196
218
  if (JSON.stringify(ids) !== JSON.stringify([""])) {
197
- this.selectedLayerIds = ids;
198
- this.layerSelectionChange.emit(this.selectedLayerIds);
219
+ this.selectedIds = ids;
220
+ this.layerSelectionChange.emit(this.selectedIds);
199
221
  }
200
222
  }
201
223
  get el() { return this; }
@@ -206,13 +228,15 @@ const MapLayerPicker = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
206
228
  }, [0, "map-layer-picker", {
207
229
  "appearance": [1],
208
230
  "enabledLayerIds": [16],
231
+ "enabledTableIds": [16],
209
232
  "mapView": [16],
210
233
  "placeholderIcon": [1, "placeholder-icon"],
211
- "selectedLayerIds": [1040],
234
+ "selectedIds": [1040],
212
235
  "scale": [1],
236
+ "showTables": [4, "show-tables"],
213
237
  "type": [1],
214
- "layerIds": [32],
215
- "selectedLayerName": [32]
238
+ "ids": [32],
239
+ "selectedName": [32]
216
240
  }]);
217
241
  function defineCustomElement() {
218
242
  if (typeof customElements === "undefined") {
@@ -5,7 +5,7 @@
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 { g as goToSelection, h as highlightFeatures, a as getMapLayerView } from './mapViewUtils.js';
8
+ import { g as goToSelection, h as highlightFeatures, f as getFeatureLayerView } from './mapViewUtils.js';
9
9
  import { b as queryObjectIds, g as getQueryGeoms, c as queryFeaturesByGeometry } from './queryUtils.js';
10
10
  import { c as EWorkflowType } from './interfaces.js';
11
11
  import { s as state } from './publicNotificationStore.js';
@@ -213,7 +213,7 @@ const MapSelectTools = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
213
213
  */
214
214
  _getUseLayerFeaturesOptions() {
215
215
  const useLayerFeaturesClass = this._useLayerFeaturesEnabled ? "div-visible" : "div-not-visible";
216
- return (h("div", null, h("div", { class: "padding-top-1 display-flex" }, h("calcite-label", { class: "label-margin-0 w-100", layout: "inline-space-between" }, h("div", { class: "tooltip-container" }, this._translations.useLayerFeatures, h("calcite-icon", { class: "padding-start-1-2 icon", icon: "question", id: "use-layer-features-icon", scale: "s" }))), h("calcite-popover", { closable: true, label: "", referenceElement: "use-layer-features-icon" }, h("span", { class: "tooltip-message" }, this._translations.useLayerFeaturesTooltip)), h("calcite-switch", { checked: this._useLayerFeaturesEnabled, onCalciteSwitchChange: () => { this._useLayerFeaturesEnabledChanged(); } })), h("div", { class: useLayerFeaturesClass + " padding-top-1" }, h("map-layer-picker", { enabledLayerIds: this.selectionLayerIds, mapView: this.mapView, onLayerSelectionChange: (evt) => { void this._layerSelectionChange(evt); }, selectedLayerIds: this.layerViews.map(l => l.layer.id) }))));
216
+ return (h("div", null, h("div", { class: "padding-top-1 display-flex" }, h("calcite-label", { class: "label-margin-0 w-100", layout: "inline-space-between" }, h("div", { class: "tooltip-container" }, this._translations.useLayerFeatures, h("calcite-icon", { class: "padding-start-1-2 icon", icon: "question", id: "use-layer-features-icon", scale: "s" }))), h("calcite-popover", { closable: true, label: "", referenceElement: "use-layer-features-icon" }, h("span", { class: "tooltip-message" }, this._translations.useLayerFeaturesTooltip)), h("calcite-switch", { checked: this._useLayerFeaturesEnabled, onCalciteSwitchChange: () => { this._useLayerFeaturesEnabledChanged(); } })), h("div", { class: useLayerFeaturesClass + " padding-top-1" }, h("map-layer-picker", { enabledLayerIds: this.selectionLayerIds, mapView: this.mapView, onLayerSelectionChange: (evt) => { void this._layerSelectionChange(evt); }, selectedIds: this.layerViews.map(l => l.layer.id) }))));
217
217
  }
218
218
  /**
219
219
  * Renders the number of selected features
@@ -242,7 +242,7 @@ const MapSelectTools = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
242
242
  * @protected
243
243
  */
244
244
  _getMapLayerPicker() {
245
- return (h("div", { class: "display-flex padding-sides-1 padding-bottom-1" }, h("calcite-label", { class: "font-bold width-full label-margin-0" }, this._translations.inputLayer, h("map-layer-picker", { enabledLayerIds: this.enabledLayerIds, mapView: this.mapView, onLayerSelectionChange: (evt) => this._inputLayerSelectionChange(evt), selectedLayerIds: this.selectLayerView ? [this.selectLayerView.layer.id] : this.selectionSet ? [this.selectionSet.layerView.layer.id] : [] }))));
245
+ return (h("div", { class: "display-flex padding-sides-1 padding-bottom-1" }, h("calcite-label", { class: "font-bold width-full label-margin-0" }, this._translations.inputLayer, h("map-layer-picker", { enabledLayerIds: this.enabledLayerIds, mapView: this.mapView, onLayerSelectionChange: (evt) => this._inputLayerSelectionChange(evt), selectedIds: this.selectLayerView ? [this.selectLayerView.layer.id] : this.selectionSet ? [this.selectionSet.layerView.layer.id] : [] }))));
246
246
  }
247
247
  //--------------------------------------------------------------------------
248
248
  //
@@ -675,7 +675,7 @@ const MapSelectTools = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
675
675
  async _layerSelectionChange(evt) {
676
676
  if (Array.isArray(evt.detail) && evt.detail.length > 0) {
677
677
  const layerPromises = evt.detail.map(id => {
678
- return getMapLayerView(this.mapView, id);
678
+ return getFeatureLayerView(this.mapView, id);
679
679
  });
680
680
  return Promise.all(layerPromises).then((layerViews) => {
681
681
  this.layerViews = layerViews;
@@ -703,7 +703,7 @@ const MapSelectTools = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
703
703
  var _a;
704
704
  const id = ((_a = evt === null || evt === void 0 ? void 0 : evt.detail) === null || _a === void 0 ? void 0 : _a.length) > 0 ? evt.detail[0] : "";
705
705
  if (!this.selectLayerView || id !== this.selectLayerView.layer.id) {
706
- this.selectLayerView = await getMapLayerView(this.mapView, id);
706
+ this.selectLayerView = await getFeatureLayerView(this.mapView, id);
707
707
  this._updateLabel();
708
708
  this._bufferGeometry ? await this._selectFeatures([this._bufferGeometry]) :
709
709
  await this._highlightWithOIDsOrGeoms();
@@ -41,6 +41,24 @@ async function getMapLayerHash(mapView) {
41
41
  });
42
42
  return layerHash;
43
43
  }
44
+ /**
45
+ * Gets the table names from the current map
46
+ *
47
+ * @param mapView the map view to fetch the table names from
48
+ *
49
+ * @returns Promise resolving with an array of table names
50
+ *
51
+ */
52
+ async function getMapTableHash(mapView) {
53
+ let tableHash = {};
54
+ await mapView.when(() => {
55
+ tableHash = mapView.map.allTables.toArray().reduce((prev, cur) => {
56
+ prev[cur.id] = cur.title;
57
+ return prev;
58
+ }, {});
59
+ });
60
+ return tableHash;
61
+ }
44
62
  /**
45
63
  * Gets the layer names from the current map
46
64
  *
@@ -61,6 +79,25 @@ async function getMapLayerIds(mapView) {
61
79
  });
62
80
  return layerIds;
63
81
  }
82
+ /**
83
+ * Gets the table names from the current map
84
+ *
85
+ * @param mapView the map view to fetch the table names from
86
+ *
87
+ * @returns Promise resolving with an array of table names
88
+ *
89
+ */
90
+ async function getMapTableIds(mapView) {
91
+ // TODO...seems like its the same as the hash...see if I can remove this
92
+ let tableIds = [];
93
+ await mapView.when(() => {
94
+ tableIds = mapView.map.allTables.toArray().reduce((prev, cur) => {
95
+ prev.push(cur.id);
96
+ return prev;
97
+ }, []);
98
+ });
99
+ return tableIds;
100
+ }
64
101
  /**
65
102
  * Get a layer view by id
66
103
  *
@@ -70,8 +107,8 @@ async function getMapLayerIds(mapView) {
70
107
  * @returns Promise resolving with the fetched layer view
71
108
  *
72
109
  */
73
- async function getMapLayerView(mapView, id) {
74
- const layer = await getMapLayer(mapView, id);
110
+ async function getFeatureLayerView(mapView, id) {
111
+ const layer = await getLayer(mapView, id);
75
112
  return layer ? await mapView.whenLayerView(layer) : undefined;
76
113
  }
77
114
  /**
@@ -83,10 +120,13 @@ async function getMapLayerView(mapView, id) {
83
120
  * @returns Promise resolving with the fetched layer
84
121
  *
85
122
  */
86
- async function getMapLayer(mapView, id) {
123
+ async function getLayer(mapView, id) {
87
124
  let layers = [];
88
125
  await mapView.when(() => {
89
- layers = mapView.map.allLayers.toArray().filter((l) => {
126
+ layers = [
127
+ ...mapView.map.allLayers.toArray(),
128
+ ...mapView.map.allTables.toArray()
129
+ ].filter((l) => {
90
130
  return l.id === id;
91
131
  });
92
132
  });
@@ -101,7 +141,6 @@ async function getMapLayer(mapView, id) {
101
141
  * @param updateExtent optional (default false) boolean to indicate if we should zoom to the extent
102
142
  *
103
143
  * @returns Promise resolving with the highlight handle
104
- *
105
144
  */
106
145
  async function highlightFeatures(ids, layerView, mapView, updateExtent = false) {
107
146
  if (updateExtent) {
@@ -201,4 +240,4 @@ async function goToSelection(ids, layerView, mapView, flashFeatures = true, feat
201
240
  }
202
241
  }
203
242
 
204
- export { getMapLayerView as a, getMapLayerIds as b, getMapLayerHash as c, getIdSets as d, highlightAllFeatures as e, goToSelection as g, highlightFeatures as h };
243
+ export { getLayer as a, getMapLayerIds as b, getMapTableIds as c, getMapLayerHash as d, getMapTableHash as e, getFeatureLayerView as f, goToSelection as g, highlightFeatures as h, getIdSets as i, highlightAllFeatures as j };
@@ -23,10 +23,14 @@ import { c as createStore } from './index3.js';
23
23
  const { state, onChange } = createStore({
24
24
  // List of layers added and managed by the component
25
25
  managedLayers: [],
26
+ // List of tables added and managed by the component
27
+ managedTables: [],
26
28
  // Handle[]: https://developers.arcgis.com/javascript/latest/api-reference/esri-core-Handles.html#Handle
27
29
  highlightHandles: [],
28
- // ILayerHash title: id lookup to be used across components
30
+ // IMapItemHash title: id lookup to be used across components
29
31
  layerNameHash: {},
32
+ // IMapItemHash title: id lookup to be used across components
33
+ tableNameHash: {},
30
34
  // remove all handles
31
35
  removeHandles: () => {
32
36
  state.highlightHandles.forEach(h => h === null || h === void 0 ? void 0 : h.remove());
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
7
7
  import { f as ESelectionMode, d as EDrawMode, c as EWorkflowType } from './interfaces.js';
8
- import { a as getMapLayerView, d as getIdSets, e as highlightAllFeatures } from './mapViewUtils.js';
8
+ import { f as getFeatureLayerView, i as getIdSets, j as highlightAllFeatures } from './mapViewUtils.js';
9
9
  import { c as queryFeaturesByGeometry } from './queryUtils.js';
10
10
  import { s as state } from './publicNotificationStore.js';
11
11
  import { g as getLocaleComponentStrings } from './locale.js';
@@ -93,7 +93,7 @@ const RefineSelection = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
93
93
  render() {
94
94
  var _a, _b;
95
95
  const layerPickerClass = this._enabledLayerIds.length > 1 ? "display-block" : "display-none";
96
- return (h(Host, null, h("div", { class: layerPickerClass + " padding-top-sides-1" }, h("div", { class: "display-flex" }, h("calcite-label", { class: "font-bold width-full label-margin-0" }, h("div", { class: "display-flex" }, this._translations.inputLayer, h("calcite-icon", { class: "padding-start-1-2 icon", icon: "question", id: "refine-input-layer", scale: "s" })), h("map-layer-picker", { enabledLayerIds: this._enabledLayerIds, mapView: this.mapView, onLayerSelectionChange: (evt) => { void this._layerSelectionChange(evt); }, ref: (el) => { this._layerPicker = el; }, selectedLayerIds: [this._refineLayer.layer.id] })), h("calcite-popover", { closable: true, label: "", referenceElement: "refine-input-layer" }, h("span", { class: "tooltip-message" }, this._translations.inputLayerTip)))), h("div", { class: "padding-1" }, h("div", { class: "padding-bottom-1" }, h("calcite-segmented-control", { class: "w-100" }, h("calcite-segmented-control-item", { checked: this._addEnabled, class: "w-50 word-wrap-anywhere", onClick: () => this._setSelectionMode(ESelectionMode.ADD), value: ESelectionMode.ADD }, h("span", { class: "font-weight-500" }, this._translations.add)), h("calcite-segmented-control-item", { checked: !this._addEnabled, class: "w-50 word-wrap-anywhere", onClick: () => this._setSelectionMode(ESelectionMode.REMOVE), value: ESelectionMode.REMOVE }, h("span", { class: "font-weight-500" }, this._translations.remove)))), h("div", null, h("map-draw-tools", { active: true, drawMode: EDrawMode.REFINE, mapView: this.mapView, onDrawRedo: () => this._redo(), onDrawUndo: () => this._undo(), onSketchGraphicsChange: (evt) => this._sketchGraphicsChanged(evt), pointSymbol: this.sketchPointSymbol, polygonSymbol: this.sketchPolygonSymbol, polylineSymbol: this.sketchLineSymbol, redoEnabled: ((_a = this._refineSelectionSet) === null || _a === void 0 ? void 0 : _a.redoStack.length) > 0, ref: (el) => { this._drawTools = el; }, undoEnabled: ((_b = this._refineSelectionSet) === null || _b === void 0 ? void 0 : _b.undoStack.length) > 0 })), h("br", null), (h("calcite-list", { class: "list-border" }, this._getRefineSelectionSetList())))));
96
+ return (h(Host, null, h("div", { class: layerPickerClass + " padding-top-sides-1" }, h("div", { class: "display-flex" }, h("calcite-label", { class: "font-bold width-full label-margin-0" }, h("div", { class: "display-flex" }, this._translations.inputLayer, h("calcite-icon", { class: "padding-start-1-2 icon", icon: "question", id: "refine-input-layer", scale: "s" })), h("map-layer-picker", { enabledLayerIds: this._enabledLayerIds, mapView: this.mapView, onLayerSelectionChange: (evt) => { void this._layerSelectionChange(evt); }, ref: (el) => { this._layerPicker = el; }, selectedIds: [this._refineLayer.layer.id] })), h("calcite-popover", { closable: true, label: "", referenceElement: "refine-input-layer" }, h("span", { class: "tooltip-message" }, this._translations.inputLayerTip)))), h("div", { class: "padding-1" }, h("div", { class: "padding-bottom-1" }, h("calcite-segmented-control", { class: "w-100" }, h("calcite-segmented-control-item", { checked: this._addEnabled, class: "w-50 word-wrap-anywhere", onClick: () => this._setSelectionMode(ESelectionMode.ADD), value: ESelectionMode.ADD }, h("span", { class: "font-weight-500" }, this._translations.add)), h("calcite-segmented-control-item", { checked: !this._addEnabled, class: "w-50 word-wrap-anywhere", onClick: () => this._setSelectionMode(ESelectionMode.REMOVE), value: ESelectionMode.REMOVE }, h("span", { class: "font-weight-500" }, this._translations.remove)))), h("div", null, h("map-draw-tools", { active: true, drawMode: EDrawMode.REFINE, mapView: this.mapView, onDrawRedo: () => this._redo(), onDrawUndo: () => this._undo(), onSketchGraphicsChange: (evt) => this._sketchGraphicsChanged(evt), pointSymbol: this.sketchPointSymbol, polygonSymbol: this.sketchPolygonSymbol, polylineSymbol: this.sketchLineSymbol, redoEnabled: ((_a = this._refineSelectionSet) === null || _a === void 0 ? void 0 : _a.redoStack.length) > 0, ref: (el) => { this._drawTools = el; }, undoEnabled: ((_b = this._refineSelectionSet) === null || _b === void 0 ? void 0 : _b.undoStack.length) > 0 })), h("br", null), (h("calcite-list", { class: "list-border" }, this._getRefineSelectionSetList())))));
97
97
  }
98
98
  //--------------------------------------------------------------------------
99
99
  //
@@ -187,7 +187,7 @@ const RefineSelection = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
187
187
  refineInfo[id] = {
188
188
  addIds: [],
189
189
  removeIds: [],
190
- layerView: await getMapLayerView(this.mapView, id)
190
+ layerView: await getFeatureLayerView(this.mapView, id)
191
191
  };
192
192
  if (selectionSet) {
193
193
  selectionSet.refineInfos = Object.assign(Object.assign({}, selectionSet.refineInfos), refineInfo);
@@ -16,7 +16,7 @@ import { s as setUpLoadableComponent, a as setComponentLoaded, c as componentLoa
16
16
  import { n as numberStringFormatter, c as connectLocalized, d as disconnectLocalized } from './locale-ead7fa24.js';
17
17
  import { d as decimalPlaces, c as clamp } from './math-5e1080da.js';
18
18
  import { f as EDrawMode } from './interfaces-bf20e69c.js';
19
- import { s as state } from './publicNotificationStore-c36d95bf.js';
19
+ import { s as state } from './publicNotificationStore-6ef555f3.js';
20
20
  import './_commonjsHelpers-d5f9d613.js';
21
21
  import './resources-ee3b03a3.js';
22
22
  import './browser-f8ca09b7.js';