@esri/solutions-components 0.7.18 → 0.7.19

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. package/dist/cjs/calcite-alert_3.cjs.entry.js +93 -6
  2. package/dist/cjs/calcite-combobox_6.cjs.entry.js +1 -1
  3. package/dist/cjs/calcite-shell-panel_14.cjs.entry.js +1 -1
  4. package/dist/cjs/card-manager_3.cjs.entry.js +12 -5
  5. package/dist/cjs/crowdsource-manager.cjs.entry.js +4 -3
  6. package/dist/cjs/{downloadUtils-8f50633d.js → downloadUtils-9a13c6ac.js} +19 -14
  7. package/dist/cjs/{index.es-140aa937.js → index.es-284a020c.js} +2 -2
  8. package/dist/cjs/map-select-tools_3.cjs.entry.js +2 -2
  9. package/dist/cjs/{mapViewUtils-569e9644.js → mapViewUtils-8aa325de.js} +4 -1
  10. package/dist/cjs/public-notification.cjs.entry.js +2 -2
  11. package/dist/cjs/solution-contents_3.cjs.entry.js +4 -4
  12. package/dist/collection/components/crowdsource-manager/crowdsource-manager.css +4 -1
  13. package/dist/collection/components/crowdsource-manager/crowdsource-manager.js +3 -2
  14. package/dist/collection/components/edit-card/edit-card.js +1 -2
  15. package/dist/collection/components/info-card/info-card.js +3 -3
  16. package/dist/collection/components/layer-table/layer-table.css +4 -0
  17. package/dist/collection/components/layer-table/layer-table.js +9 -2
  18. package/dist/collection/components/solution-item-sharing/solution-item-sharing.js +1 -1
  19. package/dist/collection/components/solution-spatial-ref/solution-spatial-ref.js +4 -4
  20. package/dist/collection/utils/downloadUtils.js +17 -12
  21. package/dist/collection/utils/downloadUtils.ts +20 -12
  22. package/dist/collection/utils/interfaces.ts +5 -0
  23. package/dist/collection/utils/popupUtils.js +94 -0
  24. package/dist/collection/utils/popupUtils.ts +104 -0
  25. package/dist/collection/utils/queryUtils.js +4 -1
  26. package/dist/collection/utils/queryUtils.ts +5 -1
  27. package/dist/components/crowdsource-manager.js +4 -3
  28. package/dist/components/downloadUtils.js +17 -12
  29. package/dist/components/edit-card2.js +1 -2
  30. package/dist/components/info-card2.js +91 -3
  31. package/dist/components/layer-table2.js +10 -3
  32. package/dist/components/queryUtils.js +4 -1
  33. package/dist/components/solution-item-sharing2.js +1 -1
  34. package/dist/components/solution-spatial-ref2.js +4 -4
  35. package/dist/esm/calcite-alert_3.entry.js +93 -6
  36. package/dist/esm/calcite-combobox_6.entry.js +1 -1
  37. package/dist/esm/calcite-shell-panel_14.entry.js +1 -1
  38. package/dist/esm/card-manager_3.entry.js +12 -5
  39. package/dist/esm/crowdsource-manager.entry.js +4 -3
  40. package/dist/esm/{downloadUtils-9dee8bc0.js → downloadUtils-a4bbdb1d.js} +19 -14
  41. package/dist/esm/{index.es-54e86c8e.js → index.es-48fdb288.js} +2 -2
  42. package/dist/esm/map-select-tools_3.entry.js +2 -2
  43. package/dist/esm/{mapViewUtils-066602d5.js → mapViewUtils-8fe70944.js} +4 -1
  44. package/dist/esm/public-notification.entry.js +2 -2
  45. package/dist/esm/solution-contents_3.entry.js +4 -4
  46. package/dist/solutions-components/{p-d0c4572d.entry.js → p-1d56804c.entry.js} +18 -2
  47. package/dist/solutions-components/p-24b3ad7d.entry.js +6 -0
  48. package/dist/solutions-components/{p-6656c53e.entry.js → p-2abc02a1.entry.js} +1 -1
  49. package/dist/solutions-components/{p-825c045a.entry.js → p-2ddd9cf8.entry.js} +1 -1
  50. package/dist/solutions-components/{p-e8011829.entry.js → p-48a5ae32.entry.js} +1 -1
  51. package/dist/solutions-components/{p-dfdb8411.js → p-72dbfa77.js} +1 -1
  52. package/dist/solutions-components/{p-683cded6.entry.js → p-b1422b00.entry.js} +1 -1
  53. package/dist/solutions-components/p-b5d1b979.js +36 -0
  54. package/dist/solutions-components/{p-e405f393.entry.js → p-cf24ce53.entry.js} +1 -1
  55. package/dist/solutions-components/{p-1bdd64a0.js → p-d4afcf86.js} +4 -4
  56. package/dist/solutions-components/{p-f486c86d.entry.js → p-fdb1ace8.entry.js} +1 -1
  57. package/dist/solutions-components/solutions-components.css +1 -1
  58. package/dist/solutions-components/solutions-components.esm.js +1 -1
  59. package/dist/solutions-components/utils/downloadUtils.ts +20 -12
  60. package/dist/solutions-components/utils/interfaces.ts +5 -0
  61. package/dist/solutions-components/utils/popupUtils.ts +104 -0
  62. package/dist/solutions-components/utils/queryUtils.ts +5 -1
  63. package/dist/types/components/info-card/info-card.d.ts +5 -0
  64. package/dist/types/utils/downloadUtils.d.ts +3 -3
  65. package/dist/types/utils/interfaces.d.ts +4 -0
  66. package/dist/types/utils/popupUtils.d.ts +46 -0
  67. package/dist/types/utils/queryUtils.d.ts +1 -1
  68. package/package.json +1 -1
  69. package/dist/solutions-components/p-531d91d6.js +0 -36
  70. package/dist/solutions-components/p-8ca5d651.entry.js +0 -6
@@ -125,14 +125,15 @@ export async function consolidateLabels(
125
125
  exportInfos: IExportInfos,
126
126
  formatUsingLayerPopup = true,
127
127
  includeHeaderNames = false,
128
- isCSVExport = false
128
+ isCSVExport = false,
129
+ fields = []
129
130
  ): Promise<string[][]> {
130
131
  const labelRequests = [];
131
132
 
132
133
  Object.keys(exportInfos).forEach(k => {
133
134
  const labelInfo: IExportInfo = exportInfos[k];
134
135
  labelRequests.push(
135
- _prepareLabels(webmap, labelInfo.layerView?.layer || labelInfo.layer, labelInfo.ids, formatUsingLayerPopup, includeHeaderNames)
136
+ _prepareLabels(webmap, labelInfo.layerView?.layer || labelInfo.layer, labelInfo.ids, formatUsingLayerPopup, includeHeaderNames, fields)
136
137
  );
137
138
  if (isCSVExport) {
138
139
  // add the layer id as a temp value separator that we can use to split values for CSV export
@@ -160,9 +161,10 @@ export async function downloadCSV(
160
161
  exportInfos: IExportInfos,
161
162
  formatUsingLayerPopup: boolean,
162
163
  removeDuplicates = false,
163
- addColumnTitle = false
164
+ addColumnTitle = false,
165
+ fields = []
164
166
  ): Promise<void> {
165
- let labels = await consolidateLabels(webmap, exportInfos, formatUsingLayerPopup, addColumnTitle, true);
167
+ let labels = await consolidateLabels(webmap, exportInfos, formatUsingLayerPopup, addColumnTitle, true, fields);
166
168
  labels = removeDuplicates ? removeDuplicateLabels(labels) : labels;
167
169
 
168
170
  const layerIds = Object.keys(exportInfos);
@@ -838,7 +840,8 @@ export async function _prepareLabels(
838
840
  layer: __esri.FeatureLayer,
839
841
  ids: number[],
840
842
  formatUsingLayerPopup = true,
841
- includeHeaderNames = false
843
+ includeHeaderNames = false,
844
+ fields = []
842
845
  ): Promise<string[][]> {
843
846
  // Get the label formatting, if any
844
847
  const labelFormatProps: ILabelFormatProps = await _getLabelFormat(webmap, layer, formatUsingLayerPopup);
@@ -909,7 +912,8 @@ export async function _prepareLabels(
909
912
 
910
913
  } else {
911
914
  // Get the features to export
912
- featureSet = await queryFeaturesByID(ids, featureLayer, [], false);
915
+ const outFields = fields.length > 0 ? fields : undefined;
916
+ featureSet = await queryFeaturesByID(ids, featureLayer, [], false, undefined, outFields);
913
917
  }
914
918
 
915
919
  // Get field data types. Do we have any domain-based fields?
@@ -920,18 +924,22 @@ export async function _prepareLabels(
920
924
  if (featureLayer.fields) {
921
925
  featureLayer.fields.forEach(
922
926
  field => {
923
- const lowercaseFieldname = field.name.toLowerCase();
924
- attributeOrigNames[lowercaseFieldname] = field.name;
925
- attributeDomains[lowercaseFieldname] = field.domain;
926
- attributeTypes[lowercaseFieldname] = field.type;
927
+ if (fields.indexOf(field.name.toLowerCase()) > -1) {
928
+ const lowercaseFieldname = field.name.toLowerCase();
929
+ attributeOrigNames[lowercaseFieldname] = field.name;
930
+ attributeDomains[lowercaseFieldname] = field.domain;
931
+ attributeTypes[lowercaseFieldname] = field.type;
932
+ }
927
933
  }
928
934
  );
929
935
  } else {
930
936
  // Feature layer is missing fields, so get info from first feature
931
937
  Object.keys(featureSet[0]).forEach(
932
938
  fieldName => {
933
- const lowercaseFieldname = fieldName.toLowerCase();
934
- attributeOrigNames[lowercaseFieldname] = fieldName;
939
+ if (fields.indexOf(fieldName.toLowerCase()) > -1) {
940
+ const lowercaseFieldname = fieldName.toLowerCase();
941
+ attributeOrigNames[lowercaseFieldname] = fieldName;
942
+ }
935
943
  }
936
944
  )
937
945
  }
@@ -539,3 +539,8 @@ export interface ILayerAndTableIds {
539
539
  layerIds: string[];
540
540
  tableIds: string[];
541
541
  }
542
+
543
+ export interface IPopupUtils {
544
+ arcade: typeof import("esri/arcade");
545
+ getPopupTitle(graphic: __esri.Graphic): Promise<string>;
546
+ }
@@ -0,0 +1,104 @@
1
+ /** @license
2
+ * Copyright 2022 Esri
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { loadModules } from "./loadModules";
18
+
19
+ export class PopupUtils {
20
+
21
+ /**
22
+ * esri/arcade: https://developers.arcgis.com/javascript/latest/api-reference/esri-arcade.html
23
+ */
24
+ arcade: typeof import("esri/arcade");
25
+
26
+ /**
27
+ * Get the popup title that honors arcade expressions
28
+ *
29
+ * @returns Promise resolving with the popup title
30
+ *
31
+ * @protected
32
+ */
33
+ public async getPopupTitle(
34
+ graphic: __esri.Graphic
35
+ ): Promise<string> {
36
+ if (!this.arcade) {
37
+ await this._initModules()
38
+ }
39
+ let attributes = {};
40
+ for (const [key, value] of Object.entries(graphic.attributes)) {
41
+ attributes = {
42
+ ...attributes,
43
+ [`{${key.toUpperCase()}}`]: value
44
+ };
45
+ }
46
+ const layer = graphic.layer as __esri.FeatureLayer;
47
+ const popupTitle = this._removeTags(layer?.popupTemplate?.title as string);
48
+ if (popupTitle.includes("{expression/expr") && layer?.popupTemplate?.expressionInfos != null) {
49
+ for (let i = 0; i < layer.popupTemplate?.expressionInfos.length; i++) {
50
+ const info = layer.popupTemplate.expressionInfos[i];
51
+ const profile = {
52
+ variables: [
53
+ {
54
+ name: "$feature",
55
+ type: "feature"
56
+ }
57
+ ]
58
+ } as __esri.Profile;
59
+ try {
60
+ const arcadeExecutor = await this.arcade.createArcadeExecutor(info.expression, profile);
61
+ const arcadeTitle = arcadeExecutor.execute({ $feature: graphic });
62
+ if (arcadeTitle != null || arcadeTitle !== "") {
63
+ attributes[`{expression/${info.name}}`.toUpperCase()] = arcadeTitle;
64
+ }
65
+ } catch {
66
+ continue;
67
+ }
68
+ }
69
+ }
70
+
71
+ return popupTitle?.replace(/{.*?}/g, (placeholder: string) => {
72
+ return attributes[placeholder.toUpperCase()] != null ? (attributes[placeholder.toUpperCase()] as string) : "";
73
+ });
74
+ }
75
+
76
+ /**
77
+ * Remove any tags from the title
78
+ *
79
+ * @returns title string without tags
80
+ *
81
+ * @protected
82
+ */
83
+ protected _removeTags(str: string): string {
84
+ if (str == null || str === "") {
85
+ return "";
86
+ }
87
+ return str.toString().replace(/(<([^>]+)>)/gi, "");
88
+ }
89
+
90
+ /**
91
+ * Load esri javascript api modules
92
+ *
93
+ * @returns Promise resolving when function is done
94
+ *
95
+ * @protected
96
+ */
97
+ protected async _initModules(): Promise<void> {
98
+ const [arcade] = await loadModules([
99
+ "esri/arcade"
100
+ ]);
101
+ this.arcade = arcade;
102
+ }
103
+
104
+ }
@@ -126,7 +126,8 @@ export async function queryFeaturesByID(
126
126
  layer: __esri.FeatureLayer,
127
127
  graphics: __esri.Graphic[],
128
128
  returnGeometry: boolean,
129
- outSpatialReference?: __esri.SpatialReference
129
+ outSpatialReference?: __esri.SpatialReference,
130
+ fields?: string[]
130
131
  ): Promise<__esri.Graphic[]> {
131
132
  const num = layer.capabilities?.query.maxRecordCount;
132
133
  const start = 0;
@@ -141,6 +142,9 @@ export async function queryFeaturesByID(
141
142
  if (outSpatialReference) {
142
143
  q.outSpatialReference = outSpatialReference;
143
144
  }
145
+ if (fields) {
146
+ q.outFields = fields;
147
+ }
144
148
 
145
149
  const result = await layer.queryFeatures(q);
146
150
 
@@ -16,6 +16,7 @@
16
16
  /// <reference types="arcgis-js-api" />
17
17
  import { EventEmitter } from "../../stencil-public-runtime";
18
18
  import InfoCard_T9n from "../../assets/t9n/info-card/resources.json";
19
+ import { IPopupUtils } from "../../utils/interfaces";
19
20
  export declare class InfoCard {
20
21
  el: HTMLInfoCardElement;
21
22
  /**
@@ -79,6 +80,10 @@ export declare class InfoCard {
79
80
  * used for widget instance
80
81
  */
81
82
  protected _features: __esri.Features;
83
+ /**
84
+ * IPopupUtils: When false alerts will be shown to indicate that the layer must have editing enabled for edit actions
85
+ */
86
+ protected _popupUtils: IPopupUtils;
82
87
  /**
83
88
  * esri/core/reactiveUtils: https://developers.arcgis.com/javascript/latest/api-reference/esri-core-reactiveUtils.html
84
89
  */
@@ -77,7 +77,7 @@ import { IQueryRelatedOptions, IQueryRelatedResponse, IRelatedRecordGroup } from
77
77
  * @param includeHeaderNames Add the label format at the front of the list of generated labels
78
78
  * @returns selectionSetNames that will be used for export filenames
79
79
  */
80
- export declare function consolidateLabels(webmap: __esri.Map, exportInfos: IExportInfos, formatUsingLayerPopup?: boolean, includeHeaderNames?: boolean, isCSVExport?: boolean): Promise<string[][]>;
80
+ export declare function consolidateLabels(webmap: __esri.Map, exportInfos: IExportInfos, formatUsingLayerPopup?: boolean, includeHeaderNames?: boolean, isCSVExport?: boolean, fields?: any[]): Promise<string[][]>;
81
81
  /**
82
82
  * Downloads csv of mailing labels for the provided list of ids
83
83
  *
@@ -89,7 +89,7 @@ export declare function consolidateLabels(webmap: __esri.Map, exportInfos: IExpo
89
89
  * @param addColumnTitle Indicates if column headings should be included in output
90
90
  * @returns Promise resolving when function is done
91
91
  */
92
- export declare function downloadCSV(webmap: __esri.Map, exportInfos: IExportInfos, formatUsingLayerPopup: boolean, removeDuplicates?: boolean, addColumnTitle?: boolean): Promise<void>;
92
+ export declare function downloadCSV(webmap: __esri.Map, exportInfos: IExportInfos, formatUsingLayerPopup: boolean, removeDuplicates?: boolean, addColumnTitle?: boolean, fields?: any[]): Promise<void>;
93
93
  /**
94
94
  * Downloads csv of mailing labels for the provided list of ids
95
95
  *
@@ -230,7 +230,7 @@ export declare function _prepareAttributeValue(attributeValue: any, attributeTyp
230
230
  * @param includeHeaderNames Add the label format at the front of the list of generated labels
231
231
  * @returns Promise resolving when function is done
232
232
  */
233
- export declare function _prepareLabels(webmap: __esri.Map, layer: __esri.FeatureLayer, ids: number[], formatUsingLayerPopup?: boolean, includeHeaderNames?: boolean): Promise<string[][]>;
233
+ export declare function _prepareLabels(webmap: __esri.Map, layer: __esri.FeatureLayer, ids: number[], formatUsingLayerPopup?: boolean, includeHeaderNames?: boolean, fields?: any[]): Promise<string[][]>;
234
234
  /**
235
235
  * Creates labels from all attributes in items.
236
236
  *
@@ -470,3 +470,7 @@ export interface ILayerAndTableIds {
470
470
  layerIds: string[];
471
471
  tableIds: string[];
472
472
  }
473
+ export interface IPopupUtils {
474
+ arcade: typeof import("esri/arcade");
475
+ getPopupTitle(graphic: __esri.Graphic): Promise<string>;
476
+ }
@@ -0,0 +1,46 @@
1
+ /** @license
2
+ * Copyright 2022 Esri
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ /// <reference types="arcgis-js-api" />
17
+ export declare class PopupUtils {
18
+ /**
19
+ * esri/arcade: https://developers.arcgis.com/javascript/latest/api-reference/esri-arcade.html
20
+ */
21
+ arcade: typeof import("esri/arcade");
22
+ /**
23
+ * Get the popup title that honors arcade expressions
24
+ *
25
+ * @returns Promise resolving with the popup title
26
+ *
27
+ * @protected
28
+ */
29
+ getPopupTitle(graphic: __esri.Graphic): Promise<string>;
30
+ /**
31
+ * Remove any tags from the title
32
+ *
33
+ * @returns title string without tags
34
+ *
35
+ * @protected
36
+ */
37
+ protected _removeTags(str: string): string;
38
+ /**
39
+ * Load esri javascript api modules
40
+ *
41
+ * @returns Promise resolving when function is done
42
+ *
43
+ * @protected
44
+ */
45
+ protected _initModules(): Promise<void>;
46
+ }
@@ -59,7 +59,7 @@ export declare function queryObjectIds(geometries: __esri.Geometry[], layer: __e
59
59
  *
60
60
  * @returns Promise with the featureSet from the layer that match the provided ids
61
61
  */
62
- export declare function queryFeaturesByID(ids: number[], layer: __esri.FeatureLayer, graphics: __esri.Graphic[], returnGeometry: boolean, outSpatialReference?: __esri.SpatialReference): Promise<__esri.Graphic[]>;
62
+ export declare function queryFeaturesByID(ids: number[], layer: __esri.FeatureLayer, graphics: __esri.Graphic[], returnGeometry: boolean, outSpatialReference?: __esri.SpatialReference, fields?: string[]): Promise<__esri.Graphic[]>;
63
63
  /**
64
64
  * Query the layer for features that have the provided globalId
65
65
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esri/solutions-components",
3
- "version": "0.7.18",
3
+ "version": "0.7.19",
4
4
  "description": "Web Components for Esri's Solutions Applications",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.js",
@@ -1,36 +0,0 @@
1
- /*!
2
- * Copyright 2022 Esri
3
- * Licensed under the Apache License, Version 2.0
4
- * http://www.apache.org/licenses/LICENSE-2.0
5
- */
6
- import{c as n}from"./p-4af32c75.js";
7
- /** @license
8
- * Copyright 2022 Esri
9
- *
10
- * Licensed under the Apache License, Version 2.0 (the "License");
11
- * you may not use this file except in compliance with the License.
12
- * You may obtain a copy of the License at
13
- *
14
- * http://www.apache.org/licenses/LICENSE-2.0
15
- *
16
- * Unless required by applicable law or agreed to in writing, software
17
- * distributed under the License is distributed on an "AS IS" BASIS,
18
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
- * See the License for the specific language governing permissions and
20
- * limitations under the License.
21
- */async function t(n){const t=n.createQuery();return t.where=n.definitionExpression||"1=1",await n.queryObjectIds(t)}async function a(n,t){let a=[];const s=n?n.map((n=>async function(n,t){const a=t.createQuery();return a.spatialRelationship="intersects",a.geometry=n,t.queryObjectIds(a)}
22
- /** @license
23
- * Copyright 2022 Esri
24
- *
25
- * Licensed under the Apache License, Version 2.0 (the "License");
26
- * you may not use this file except in compliance with the License.
27
- * You may obtain a copy of the License at
28
- *
29
- * http://www.apache.org/licenses/LICENSE-2.0
30
- *
31
- * Unless required by applicable law or agreed to in writing, software
32
- * distributed under the License is distributed on an "AS IS" BASIS,
33
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
34
- * See the License for the specific language governing permissions and
35
- * limitations under the License.
36
- */(n,t))):[Promise.resolve()];return(await Promise.all(s)).forEach((n=>{a=[...a,...n||[]]})),a}async function s(n,t,a,c,o){var i;const e=null===(i=t.capabilities)||void 0===i?void 0:i.query.maxRecordCount,r=t.createQuery();r.start=0,r.returnGeometry=c,r.objectIds=n.slice(0,e),e&&(r.num=e),o&&(r.outSpatialReference=o);const u=await t.queryFeatures(r);a=a.concat(u.features);const f=n.slice(e,n.length);return f.length>0?s(f,t,a,c,o):Promise.resolve(a)}async function c(n,t){const a=t.globalIdField;if(!a)return[];const s=t.createQuery();return s.returnGeometry=!1,s.outFields=[t.objectIdField],s.where=n.map((n=>`${a} = '${n}'`)).join(" or "),(await t.queryFeatures(s)).features}async function o(n,t,a,s){const c=t.capabilities.query.maxRecordCount,i=t.createQuery();i.start=n,i.num=c,i.geometry=a;const e=await t.queryFeatures(i);return s[t.id]=s[t.id].concat(e.features),e.exceededTransferLimit?o(n+=c,t,a,s):Promise.resolve(s)}async function i(n,t,a){const s=n.createQuery();return s.where=t||"1=1",s.orderByFields=a,await n.queryObjectIds(s)}function e(n,t){return[...r(n,"polygon",t),...r(n,"polyline",t),...r(n,"point",t)]}function r(n,t,a){const s=(null==n?void 0:n.filter((n=>n.type===t)))||[];return s.length<=1?s:[a.union(s)]}async function u(n,t){let a;return await n.when((()=>{a=n.map.allLayers.toArray().reduce(((n,t)=>("feature"===t.type&&(n[t.id]={name:t.title,supportsUpdate:void 0}),n)),{})})),w(t,a,n)}async function f(n,t){let a;return await n.when((()=>{a=n.map.allTables.toArray().reduce(((n,t)=>(n[t.id]={name:t.title,supportsUpdate:void 0},n)),{})})),w(t,a,n)}async function w(n,t,a){if(n){const n={},s=Object.keys(t);for(let c=0;c<s.length;c++){const o=s[c],i=await l(a,o);await i.load(),await i.when(),n[o]={name:t[o].name,supportsUpdate:i.editingEnabled&&i.capabilities.operations.supportsUpdate}}return n}return t}async function y(n,t){const a=await l(n,t);return a?await n.whenLayerView(a):void 0}async function l(n,t){let a=[];return await n.when((()=>{a=[...n.map.allLayers.toArray(),...n.map.allTables.toArray()].filter((n=>n.id===t))})),a.length>0?a[0]:void 0}async function d(n){const t=n.map.allLayers.toArray();let a;return await n.when((()=>{a=t.map((t=>n.whenLayerView(t)))})),await Promise.allSettled(a),t}async function p(n,t,a,s=!1){return s&&await v(n,t,a,!1),t.highlight(n)}async function m(n){const t=j(n);return Object.keys(t).reduce(((n,a)=>{const s=t[a];return n.push(s.layerView.highlight(s.ids)),n}),[])}function j(t){return t.reduce(((t,a)=>{const s=a.layerView,c=null==s?void 0:s.layer.id;return c&&Object.keys(t).indexOf(c)>-1?t[c].ids=[...new Set([...a.selectedIds,...t[c].ids])]:c&&(t[c]={layerView:s,ids:a.selectedIds}),a.workflowType===n.REFINE&&Object.keys(a.refineInfos).forEach((n=>{const s=a.refineInfos[n];Object.keys(t).indexOf(n)>-1&&(t[n].ids=[...new Set([...s.addIds,...t[n].ids])],t[n].ids=t[n].ids.filter((n=>s.removeIds.indexOf(n)<0)))})),t}),{})}async function v(n,t,a,s=!0,c){const o=await async function(n,t){const a=t.createQuery();return a.objectIds=n,t.queryExtent(a)}(n,t.layer);await a.goTo(o.extent),s&&await async function(n,t,a){const s={objectIds:n};t.featureEffect=Object.assign(Object.assign({},a),{filter:s}),setTimeout((()=>{t.featureEffect=void 0}),1300)}(n,t,c)}export{l as a,i as b,t as c,c as d,a as e,e as f,v as g,p as h,y as i,o as j,j as k,m as l,d as m,u as n,f as o,s as q}
@@ -1,6 +0,0 @@
1
- /*!
2
- * Copyright 2022 Esri
3
- * Licensed under the Apache License, Version 2.0
4
- * http://www.apache.org/licenses/LICENSE-2.0
5
- */
6
- import{r as t,h as i,H as e,g as s}from"./p-78780f63.js";import{g as h}from"./p-6b943f52.js";import{E as l}from"./p-4af32c75.js";import"./p-d918ec36.js";import"./p-e1a4994d.js";const o=class{constructor(i){t(this,i),this._shouldSetMapView=!1,this.classicGrid=!1,this.defaultCenter="",this.defaultGlobalId="",this.defaultLayer="",this.defaultLevel="",this.defaultOid="",this.defaultWebmap="",this.enableAutoRefresh=!1,this.enableColumnReorder=!0,this.enableCSV=!0,this.enableFloorFilter=!0,this.enableFullscreen=!0,this.enableInlineEdit=!1,this.enableLegend=!0,this.enableSearch=!0,this.enableShare=!1,this.enableHome=!0,this.enableZoom=!0,this.enableBasemap=!0,this.basemapConfig=void 0,this.showNewestFirst=!0,this.hideMap=!1,this.mapInfos=[],this.onlyShowUpdatableLayers=!0,this.searchConfiguration=void 0,this.shareIncludeEmbed=void 0,this.shareIncludeSocial=void 0,this.theme="light",this.zoomAndScrollToSelected=!1,this._expandPopup=!1,this._hideFooter=!1,this._hideTable=!1,this._isMobile=void 0,this._translations=void 0,this._layoutMode=l.GRID,this._mapInfo=void 0,this._mapView=void 0,this._panelOpen=!0,this._numSelected=0,this._tableOnly=!1}defaultCenterWatchHandler(){this._defaultCenter=this.defaultCenter?this.defaultCenter.split(";").map((t=>parseFloat(t))):void 0}defaultGlobalIdWatchHandler(){this._defaultGlobalId=this.defaultGlobalId?this.defaultGlobalId.indexOf(",")>-1?this.defaultGlobalId.split(","):[this.defaultGlobalId]:void 0}defaultOidWatchHandler(){this._defaultOid=this.defaultOid?this.defaultOid.indexOf(",")>-1?this.defaultOid.split(",").map((t=>parseInt(t,10))):[parseInt(this.defaultOid,10)]:void 0}defaultLevelWatchHandler(){this._defaultLevel=this.defaultLevel?parseInt(this.defaultLevel,10):void 0}enableZoomWatchHandler(){this._initMapZoom()}async _isMobileWatchHandler(){this.showHideMapPopupAndTable(!!this._isMobile&&this._numSelected>0)}async featureSelectionChange(t){var i;this._numSelected=null===(i=t.detail)||void 0===i?void 0:i.length}async popupClosed(){this._isMobile&&this.showHideMapPopupAndTable(!1)}async idsFound(t){const i=t.detail;this._tableOnly=i.tableIds.length>0&&0===i.layerIds.length,this._tableOnly&&(this._expandPopup=!0)}async layoutChanged(t){this._layoutMode=t.detail}async mapChanged(t){this._mapChange=t.detail,await this._mapChange.mapView.when((async()=>{await this._setMapView()}))}async beforeMapChanged(){this._expandPopup&&(this._shouldSetMapView=!0,this._expandPopup=!1)}async componentWillLoad(){await this._getTranslations(),this._resizeObserver=new ResizeObserver((()=>this._onResize()))}render(){return i(e,null,i("calcite-shell",{class:"position-relative"},i("calcite-panel",{class:"width-full height-full"},this._getBody(this._layoutMode,this._panelOpen,this.hideMap,this._hideTable)),this._getFooter()))}async componentDidRender(){this._shouldSetMapView&&(this._shouldSetMapView=!1,await this._setMapView())}async componentDidLoad(){this._resizeObserver.observe(this.el)}_getFooter(){return this._isMobile&&this._numSelected>0&&!this._hideFooter?i("div",{class:"width-100",slot:"footer"},i("div",{class:"display-flex padding-1-2"},i("calcite-button",{appearance:"solid",id:"solutions-show",onClick:()=>this.showHideMapPopupAndTable(!0),width:"full"},this._translations.view.replace("{{n}}",this._numSelected.toString())),i("calcite-button",{appearance:"outline",class:"padding-inline-start-1",id:"solutions-delete",kind:"danger",onClick:()=>this._layerTable.deleteFeatures(),width:"full"},this._translations.delete.replace("{{n}}",this._numSelected.toString())))):void 0}_getDividerIcon(t,i){let e="";switch(t){case l.HORIZONTAL:e=this.classicGrid?i?"chevrons-down":"chevrons-up":i?"chevrons-up":"chevrons-down";break;case l.VERTICAL:e=this.classicGrid?i?"chevrons-right":"chevrons-left":i?"chevrons-left":"chevrons-right";break;case l.GRID:e=this.classicGrid?i?"chevrons-up":"chevrons-down":i?"chevrons-left":"chevrons-right"}return e}_getMapSizeClass(t,i){let e="";switch(t){case l.HORIZONTAL:e=(this._isMobile&&this._hideTable?"height-full":i?"height-1-2":"height-0")+" width-full position-relative";break;case l.GRID:e=this.classicGrid?(i?"position-relative":"position-absolute-53")+" height-full width-full display-flex":"height-full position-relative "+(i?"width-1-3":"width-0");break;case l.VERTICAL:e="height-full position-relative "+(i?"width-1-2":"width-0")}return e}_getTableSizeClass(t,i){let e="";switch(t){case l.HORIZONTAL:e=(i?"height-1-2":"height-full")+" width-full display-flex flex-column";break;case l.GRID:e=this.classicGrid?(i?"height-full":"height-53")+" position-relative width-full display-flex":(i?"width-2-3":"width-full")+" height-full display-flex";break;case l.VERTICAL:e=(i?"width-1-2":"width-full")+" height-full display-flex"}return e}_getBody(t,e,s,h){const o=this.classicGrid&&t===l.GRID&&e?"display-grid":t===l.HORIZONTAL?"":"display-flex";return i("calcite-panel",{class:"width-full height-full"},this.classicGrid?i("div",{class:`width-full height-full overflow-hidden ${o}`},this._getTable(t,e,h),this._getMapAndCard(t,e,s)):i("div",{class:`width-full height-full overflow-hidden ${o}`},this._getMapAndCard(t,e,s),this._getTable(t,e,h)))}_getMapAndCard(t,e,s){const h=this._getMapSizeClass(t,e);return this.classicGrid?i("div",{class:`${h} overflow-hidden`},this._getCardNode(),this._getMapNode(t,s)):i("div",{class:`${h} overflow-hidden`},this._getMapNode(t,s),this._getPopupExpandNode())}_getMapNode(t,e){var s;return i("div",{class:`${this.classicGrid&&t===l.GRID?"width-full":this._layoutMode!==l.HORIZONTAL||e?this._layoutMode===l.HORIZONTAL&&this._isMobile&&this.hideMap?"height-0":"adjusted-height-50":""} overflow-hidden ${this.classicGrid&&t===l.GRID?"display-flex height-full width-1-2":t===l.HORIZONTAL&&!e||t===l.GRID&&!e?"":"visibility-hidden"}`},i("map-card",{basemapConfig:this.basemapConfig,class:"width-full",defaultWebmapId:this.defaultWebmap,enableBasemap:this.enableBasemap,enableFloorFilter:this.enableFloorFilter,enableFullscreen:this.enableFullscreen,enableHome:this.enableHome,enableLegend:this.enableLegend,enableMapToolsExpand:!0,enableSearch:this.enableSearch,hidden:this._expandPopup,homeZoomIndex:3,homeZoomPosition:"top-left",homeZoomToolsSize:"s",mapInfos:null===(s=this.mapInfos)||void 0===s?void 0:s.filter((t=>!1!==t.visible)),mapWidgetsIndex:0,mapWidgetsPosition:"top-right",mapWidgetsSize:"m",stackTools:!0,theme:this.theme,toolOrder:["legend","search","fullscreen","basemap","floorfilter"]}))}_getPopupExpandNode(){var t;const e=this._expandPopup?"chevrons-down":"chevrons-up",s="expand-popup",h=this._expandPopup?this._translations.collapsePopup:this._translations.expandPopup,l="dark"===this.theme?"calcite-mode-dark":"calcite-mode-light",o=this._expandPopup?1===(null===(t=this.mapInfos)||void 0===t?void 0:t.length)||this._isMobile?"position-absolute-0":"position-absolute-50":"height-full",a=this._isMobile?"display-none height-0":"";return i("div",{class:`${this._isMobile?"calcite-mode-light":"calcite-mode-dark"} ${o}`},i("calcite-panel",null,this._isMobile?void 0:i("div",{class:`display-flex align-items-center ${a}`,slot:"header-content"},i("calcite-icon",{icon:"information",scale:"s"}),i("div",{class:"padding-inline-start-75"},this._translations.information)),i("calcite-action",{class:a,disabled:this._tableOnly,icon:e,id:s,onClick:()=>this._togglePopup(),slot:"header-actions-end",text:""}),this._tableOnly?void 0:i("calcite-tooltip",{class:l,label:"",placement:"bottom","reference-element":s},i("span",null,h)),this._getCardNode()))}_togglePopup(){this._expandPopup=!this._expandPopup}_getCardNode(){return i("div",{class:"width-50 height-full "+("dark"===this.theme?"calcite-mode-dark":"calcite-mode-light")},i("card-manager",{class:(this._expandPopup||this._isMobile?"height-full":"height-50")+" width-full",isMobile:this._isMobile,mapView:null==this?void 0:this._mapView,zoomAndScrollToSelected:this.zoomAndScrollToSelected}))}_getTable(t,e,s){const h=s?"visibility-hidden":"",o=this._getTableSizeClass(t,e),a=this._getDividerIcon(t,e),d=e?this._translations.close:this._translations.open,n="toggle-layout",r=this.defaultWebmap&&this.defaultLayer;return i("calcite-shell",{class:`${o} ${h} border-bottom`},this._isMobile?void 0:i("calcite-action-bar",{class:"border-sides",expandDisabled:!0,layout:t===l.HORIZONTAL||this.classicGrid?"horizontal":"vertical",slot:this.classicGrid&&t!==l.VERTICAL?"footer":this.classicGrid&&t===l.VERTICAL?"panel-end":t===l.HORIZONTAL?"header":"panel-start"},i("calcite-action",{class:"toggle-node",icon:a,id:n,onClick:()=>this._toggleLayout(),text:""}),i("calcite-tooltip",{label:d,placement:"bottom","reference-element":n},i("span",null,d))),i("div",{class:"width-full height-full position-relative"},i("layer-table",{defaultGlobalId:r?this._defaultGlobalId:void 0,defaultLayerId:r?this.defaultLayer:"",defaultOid:r&&!this.defaultGlobalId?this._defaultOid:void 0,enableAutoRefresh:this.enableAutoRefresh,enableCSV:this.enableCSV,enableColumnReorder:this.enableColumnReorder,enableInlineEdit:this.enableInlineEdit,enableShare:this.enableShare,isMobile:this._isMobile,mapInfo:this._mapInfo,mapView:null==this?void 0:this._mapView,onlyShowUpdatableLayers:this.onlyShowUpdatableLayers,ref:t=>this._layerTable=t,shareIncludeEmbed:this.shareIncludeEmbed,shareIncludeSocial:this.shareIncludeSocial,showNewestFirst:this.showNewestFirst,zoomAndScrollToSelected:this.zoomAndScrollToSelected})))}_onResize(){this._isMobile=this.el.offsetWidth<1024,this._layoutMode=this._isMobile?l.HORIZONTAL:l.GRID,this._panelOpen=!0}_toggleLayout(){this._panelOpen=!this._panelOpen}showHideMapPopupAndTable(t){this.hideMap=t,this._expandPopup=!1,this._hideTable=t,this._hideFooter=t}_getMapInfo(t){let i;return this.mapInfos.some((e=>{if(e.id===t)return i=e,!0})),Object.assign({},i)}async _setMapView(){this._mapInfo=this._getMapInfo(this._mapChange.id),this._mapView=this._mapChange.mapView,this._initMapZoom(),this._mapView.popupEnabled=!1,this._defaultCenter&&this._defaultLevel&&(await this._mapView.goTo({center:this._defaultCenter,zoom:this._defaultLevel}),this._defaultCenter=void 0,this._defaultLevel=void 0)}_initMapZoom(){this.enableZoom?this.enableZoom&&this._mapView.ui.add({component:"zoom",position:"top-left",index:0}):this._mapView.ui.remove("zoom")}async _getTranslations(){const t=await h(this.el);this._translations=t[0]}get el(){return s(this)}static get watchers(){return{defaultCenter:["defaultCenterWatchHandler"],defaultGlobalId:["defaultGlobalIdWatchHandler"],defaultOid:["defaultOidWatchHandler"],defaultLevel:["defaultLevelWatchHandler"],enableZoom:["enableZoomWatchHandler"],_isMobile:["_isMobileWatchHandler"]}}};o.style=":host{display:block;--calcite-label-margin-bottom:0px;--solutions-theme-foreground-color:var(--calcite-color-foreground-1)}.padding-1-2{padding:0.5rem}.display-flex{display:flex}.width-full{width:100%}.width-1-2{position:relative;width:50%}.width-1-3{position:relative;width:33.33%}.width-2-3{position:relative;width:66.66%}.width-0{width:0}.height-full{height:100%}.height-1-2{position:relative;height:50%}.height-0{height:0}.toggle-node{width:51px;height:51px}.overflow-hidden{overflow:hidden}.flex-column{flex-direction:column}.border{border:1px solid var(--calcite-color-border-3)}.border-bottom{border-bottom:1px solid var(--calcite-color-border-3)}.border-sides{border-left:1px solid var(--calcite-color-border-3);border-right:1px solid var(--calcite-color-border-3)}.position-relative{position:relative}.height-50{height:50%}.adjusted-height-50{height:calc(50% - 25px)}.adjusted-height-100{height:calc(100% - 50px)}.adjusted-height-100-50{height:calc(100% - 50px)}.display-none{display:none}.height-53{height:53px}.position-absolute-53{position:absolute;top:53px}.display-grid{display:grid}.height-50-px{height:50px}.padding-inline-start-75{padding-inline-start:0.75rem}.align-items-center{align-items:center}.esri-floor-filter__close-levels-button{width:40px !important;height:40px !important}.esri-floor-filter__level-button{width:40px !important;height:40px !important}.esri-floor-filter__browse-button{width:40px !important;height:40px !important}.position-absolute-50{position:absolute;top:50px;bottom:0px;left:0px;right:0px}.position-absolute-0{position:absolute;top:0px;bottom:0px;left:0px;right:0px}.visibility-hidden{visibility:hidden;height:0px}";export{o as crowdsource_manager}