@vertigis/arcgis-extensions 48.4.0 → 48.4.1
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.
- package/AppConfig.schema.json +29 -21
- package/data/FeatureSettings.js +1 -1
- package/data/_TableExtension.d.ts +1 -1
- package/docs/html/assets/navigation.js +1 -1
- package/docs/html/assets/search.js +1 -1
- package/docs/html/classes/data__TableExtension.TableSchema.html +2 -2
- package/docs/html/classes/utilities_ObservableSet.ObservableSet.html +1 -1
- package/docs/html/classes/utilities_ObservableWeakSet.ObservableWeakSet.html +1 -1
- package/docs/html/classes/utilities_log.ConsoleLogger.html +7 -7
- package/docs/html/classes/utilities_log.LoggerBase.html +7 -7
- package/docs/html/functions/utilities__gml.esriToGml.html +2 -2
- package/docs/html/functions/utilities__layers.getEquivalencyTypeForLayers.html +1 -0
- package/docs/html/functions/utilities__layers.getLayerUrl.html +2 -2
- package/docs/html/functions/utilities_geometry.buffer.html +5 -5
- package/docs/html/functions/utilities_geometry.esriToGml.html +2 -2
- package/docs/html/functions/utilities_iterable.find.html +2 -2
- package/docs/html/functions/utilities_iterable.first.html +2 -2
- package/docs/html/functions/utilities_mapping.getMapSpatialReference.html +2 -2
- package/docs/html/functions/utilities_object.deepSearchAndTransform.html +6 -4
- package/docs/html/functions/utilities_object.deepSearchAndTransformAsync.html +6 -4
- package/docs/html/functions/utilities_object.getPropertyDescriptor.html +2 -2
- package/docs/html/functions/utilities_object.isEmpty.html +1 -1
- package/docs/html/functions/utilities_object.map.html +1 -1
- package/docs/html/functions/utilities_object.toJSON.html +1 -1
- package/docs/html/functions/utilities_portal.getPortalItemHtmlUrl.html +2 -2
- package/docs/html/functions/utilities_portal.toPortalItem.html +4 -1
- package/docs/html/functions/utilities_set.find.html +2 -2
- package/docs/html/hierarchy.html +1 -1
- package/docs/html/interfaces/data_FieldExtension.FieldProperties.html +4 -2
- package/docs/html/interfaces/json_AnnotationLayerJson.AnnotationLayerJson.html +2 -2
- package/docs/html/interfaces/json_BasemapLayerJson.BasemapLayerJsonBase.html +2 -2
- package/docs/html/interfaces/json_BingLayerJson.BingLayerJson.html +2 -2
- package/docs/html/interfaces/json_BuildingSceneLayerJson.BuildingSceneLayerJson.html +2 -2
- package/docs/html/interfaces/json_CSVLayerJson.CSVLayerJson.html +2 -2
- package/docs/html/interfaces/json_FeatureLayerJson.FeatureLayerJson.html +5 -3
- package/docs/html/interfaces/json_FeatureSetJson.FeatureSetJson.html +4 -2
- package/docs/html/interfaces/json_FieldJson.FieldJson.html +4 -2
- package/docs/html/interfaces/json_GeoJSONLayerJson.GeoJSONLayerJson.html +2 -2
- package/docs/html/interfaces/json_GeoRSSLayerJson.GeoRSSLayerJson.html +2 -2
- package/docs/html/interfaces/json_GroupLayerJson.GroupLayerJson.html +2 -2
- package/docs/html/interfaces/json_ImageServiceLayerJson.ImageServiceLayerJson.html +2 -2
- package/docs/html/interfaces/json_ImageServiceVectorLayerJson.ImageServiceVectorLayerJson.html +2 -2
- package/docs/html/interfaces/json_IntegratedMeshLayerJson.IntegratedMeshLayerJson.html +2 -2
- package/docs/html/interfaces/json_ItemJson.ItemJson.html +5 -2
- package/docs/html/interfaces/json_KMLLayerJson.KMLLayerJson.html +2 -2
- package/docs/html/interfaces/json_LayerDefinitionJson.LayerDefinitionJson.html +2 -2
- package/docs/html/interfaces/json_LayerJson.LayerJsonBase.html +2 -2
- package/docs/html/interfaces/json_MapServiceLayerJson.MapServiceLayerJson.html +2 -2
- package/docs/html/interfaces/json_OpenStreetMapLayerJson.OpenStreetMapLayerJson.html +2 -2
- package/docs/html/interfaces/json_OperationalLayerJson.OperationalLayerJsonBase.html +2 -2
- package/docs/html/interfaces/json_PointCloudLayerJson.PointCloudLayerJson.html +2 -2
- package/docs/html/interfaces/json_RasterDataElevationLayerJson.RasterDataElevationLayerJson.html +2 -2
- package/docs/html/interfaces/json_SceneLayerJson.SceneLayerJson.html +2 -2
- package/docs/html/interfaces/json_StreamLayerJson.StreamLayerJson.html +6 -4
- package/docs/html/interfaces/json_SubtypeGroupLayerJson.SubtypeGroupLayerJson.html +10 -5
- package/docs/html/interfaces/json_SubtypeGroupLayerJson.SubtypeSubtypeGroupLayerJson.html +10 -5
- package/docs/html/interfaces/json_SubtypeSublayerJson.SubtypeSublayerJson.html +9 -6
- package/docs/html/interfaces/json_SymbolJson.TextSymbolJson.html +2 -2
- package/docs/html/interfaces/json_TiledElevationServiceLayerJson.TiledElevationServiceLayerJson.html +2 -2
- package/docs/html/interfaces/json_TiledImageServiceLayerJson.TiledImageServiceLayerJson.html +2 -2
- package/docs/html/interfaces/json_TiledMapServiceLayerJson.TiledMapServiceLayerJson.html +2 -2
- package/docs/html/interfaces/json_VectorTileLayerJson.VectorTileLayerJson.html +2 -2
- package/docs/html/interfaces/json_WFSLayerJson.WFSLayerJson.html +2 -2
- package/docs/html/interfaces/json_WMSLayerJson.WMSLayerJson.html +2 -2
- package/docs/html/interfaces/json_WebTileLayerJson.TileInfoJson.html +2 -2
- package/docs/html/interfaces/json_WebTileLayerJson.WebTileLayerJson.html +2 -2
- package/docs/html/interfaces/mapping_BuildingSceneLayerExtension.BuildingSceneLayerProperties.html +2 -2
- package/docs/html/interfaces/mapping_FeatureLayerExtension.FeatureLayerProperties.html +6 -4
- package/docs/html/interfaces/mapping_FeatureLayerExtensionBase.FeatureLayerBaseProperties.html +6 -4
- package/docs/html/interfaces/mapping_MapImageLayerExtension.MapImageLayerExtensionProperties.html +3 -3
- package/docs/html/interfaces/mapping_PointCloudLayerExtension.PointCloudLayerProperties.html +2 -2
- package/docs/html/interfaces/utilities_format_FormatSettings.FormatSettings.html +1 -1
- package/docs/html/interfaces/utilities_log.LogMessageOptions.html +30 -0
- package/docs/html/interfaces/utilities_log.LogMessageResourceOptions.html +33 -0
- package/docs/html/interfaces/utilities_log.Logger.html +8 -8
- package/docs/html/modules/utilities_log.html +3 -1
- package/docs/html/types/utilities_log.LogOptions.html +2 -0
- package/docs/html/variables/version.version.html +1 -1
- package/json/AnnotationLayerJson.d.ts +7 -7
- package/json/BasemapJson.d.ts +4 -4
- package/json/BasemapJson.js +1 -1
- package/json/BasemapLayerJson.d.ts +1 -1
- package/json/BingLayerJson.d.ts +1 -1
- package/json/BuildingSceneLayerJson.d.ts +18 -18
- package/json/BuildingSceneSublayerJson.d.ts +8 -8
- package/json/CSVLayerJson.d.ts +12 -12
- package/json/DefinitionEditorJson.d.ts +9 -9
- package/json/DrawingInfoJson.d.ts +29 -29
- package/json/EnvironmentJson.d.ts +19 -19
- package/json/FeatureCollectionJson.d.ts +1 -1
- package/json/FeatureJson.d.ts +4 -4
- package/json/FeatureJson.js +1 -1
- package/json/FeatureLayerJson.d.ts +20 -16
- package/json/FeatureLayerJson.js +1 -1
- package/json/FeatureSetJson.d.ts +5 -0
- package/json/FieldJson.d.ts +11 -7
- package/json/FormInfoJson.d.ts +48 -48
- package/json/GeoJSONLayerJson.d.ts +6 -6
- package/json/GeoRSSLayerJson.d.ts +4 -4
- package/json/GeometryJson.d.ts +12 -12
- package/json/GroundJson.d.ts +4 -4
- package/json/GroupLayerJson.d.ts +3 -3
- package/json/ImageServiceLayerJson.d.ts +20 -20
- package/json/ImageServiceVectorLayerJson.d.ts +6 -6
- package/json/IntegratedMeshLayerJson.d.ts +2 -2
- package/json/ItemJson.d.ts +51 -46
- package/json/KMLLayerJson.d.ts +3 -3
- package/json/LayerDefinitionJson.d.ts +102 -102
- package/json/LayerJson.d.ts +21 -21
- package/json/LayerJson.js +1 -1
- package/json/MapServiceLayerJson.d.ts +6 -6
- package/json/MosaicRuleJson.d.ts +14 -14
- package/json/OpenStreetMapLayerJson.d.ts +1 -1
- package/json/OperationalLayerJson.d.ts +2 -2
- package/json/PointCloudLayerJson.d.ts +4 -4
- package/json/PopupInfoJson.d.ts +47 -47
- package/json/RasterDataElevationLayerJson.d.ts +1 -1
- package/json/RendererJson.d.ts +113 -113
- package/json/SceneLayerJson.d.ts +7 -7
- package/json/SpatialReferenceJson.d.ts +5 -5
- package/json/SublayerJson.d.ts +17 -17
- package/json/SublayerJson.js +1 -1
- package/json/SubtypeGroupLayerJson.d.ts +14 -5
- package/json/SubtypeSublayerJson.d.ts +13 -8
- package/json/SymbolJson.d.ts +122 -122
- package/json/TableJson.d.ts +10 -10
- package/json/TableJson.js +1 -1
- package/json/TemplateJson.d.ts +4 -4
- package/json/TiledElevationServiceLayerJson.d.ts +3 -3
- package/json/TiledImageServiceLayerJson.d.ts +3 -3
- package/json/TiledMapServiceLayerJson.d.ts +12 -12
- package/json/TypeJson.d.ts +4 -4
- package/json/VectorTileLayerJson.d.ts +4 -4
- package/json/ViewpointJson.d.ts +6 -6
- package/json/WFSLayerJson.d.ts +16 -16
- package/json/WMSLayerJson.d.ts +16 -16
- package/json/WMSSublayerJson.d.ts +5 -5
- package/json/WebMapJson.d.ts +134 -133
- package/json/WebMapJson.js +1 -1
- package/json/WebSceneJson.d.ts +6 -6
- package/json/WebTileLayerJson.d.ts +26 -26
- package/mapping/ImageryLayerExtension.js +1 -1
- package/mapping/MapExtension.js +1 -1
- package/package.json +1 -1
- package/utilities/ObservableSet.d.ts +1 -1
- package/utilities/ObservableSet.js +1 -1
- package/utilities/ObservableWeakSet.d.ts +1 -1
- package/utilities/ObservableWeakSet.js +1 -1
- package/utilities/_gml.d.ts +1 -1
- package/utilities/_gml.js +1 -1
- package/utilities/_layers.d.ts +5 -3
- package/utilities/_layers.js +1 -1
- package/utilities/_wkt.js +1 -1
- package/utilities/array.js +1 -1
- package/utilities/asyncIterable.js +1 -1
- package/utilities/checkArg.js +1 -1
- package/utilities/esri.js +1 -1
- package/utilities/format/date.d.ts +8 -8
- package/utilities/format/date.js +1 -1
- package/utilities/format/number.d.ts +9 -9
- package/utilities/format/number.js +1 -1
- package/utilities/format/string.d.ts +12 -12
- package/utilities/format/string.js +1 -1
- package/utilities/geometry.d.ts +4 -3
- package/utilities/geometry.js +1 -1
- package/utilities/iterable.d.ts +2 -2
- package/utilities/log.d.ts +26 -7
- package/utilities/log.js +1 -1
- package/utilities/mapping.d.ts +1 -1
- package/utilities/mapping.js +1 -1
- package/utilities/object.d.ts +10 -6
- package/utilities/object.js +1 -1
- package/utilities/portal.d.ts +4 -1
- package/utilities/portal.js +1 -1
- package/utilities/query.js +1 -1
- package/utilities/set.d.ts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/docs/html/interfaces/utilities_log.LogOptions.html +0 -33
package/json/WebMapJson.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{applyJsonToLayers as a}from"./LayerJson.js";export async function applyJsonToWebMap(o,p,t){const r=(await import("../portal/WebMap.js")).WebMap.applyToEsriApiMap,{operationalLayers:e,...n}=o;await r(n,p,t),await a(e,p.layers)}export function webMapToJson(a){return a.toJSON()}
|
|
1
|
+
import{applyJsonToLayers as a}from"./LayerJson.js";export async function applyJsonToWebMap(o,p,t){const r=(await import("../portal/WebMap.js")).WebMap.applyToEsriApiMap,{operationalLayers:e,...n}=o;await r(n,p,t),await a(e??[],p.layers)}export function webMapToJson(a){return a.toJSON()}
|
package/json/WebSceneJson.d.ts
CHANGED
|
@@ -26,26 +26,26 @@ export interface WebSceneJson extends WebMapJsonBase {
|
|
|
26
26
|
/**
|
|
27
27
|
* Enable / disable clipping.
|
|
28
28
|
*/
|
|
29
|
-
clip?: boolean;
|
|
29
|
+
clip?: boolean | null;
|
|
30
30
|
/**
|
|
31
31
|
* Envelope of clip area.
|
|
32
32
|
*/
|
|
33
33
|
geometry: ExtentJson;
|
|
34
|
-
};
|
|
34
|
+
} | null;
|
|
35
35
|
/**
|
|
36
36
|
* Ground defines the main surface of the web scene, based on elevation
|
|
37
37
|
* layers.
|
|
38
38
|
*/
|
|
39
|
-
ground?: GroundJson;
|
|
39
|
+
ground?: GroundJson | null;
|
|
40
40
|
/**
|
|
41
41
|
* An object that defines the characteristics of the vertical coordinate
|
|
42
42
|
* system used by the web scene.
|
|
43
43
|
*/
|
|
44
|
-
heightModelInfo?: HeightModelInfoJson;
|
|
44
|
+
heightModelInfo?: HeightModelInfoJson | null;
|
|
45
45
|
/**
|
|
46
46
|
* Must be one of the following values: "global" | "local".
|
|
47
47
|
*/
|
|
48
|
-
viewingMode?: "global" | "local";
|
|
48
|
+
viewingMode?: "global" | "local" | null;
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
51
|
* Updates an ArcGIS JS API WebScene from the given web scene JSON.
|
|
@@ -78,5 +78,5 @@ export interface HeightModelInfoJson {
|
|
|
78
78
|
/**
|
|
79
79
|
* The datum realization of the vertical coordinate system.
|
|
80
80
|
*/
|
|
81
|
-
vertCRS?: string;
|
|
81
|
+
vertCRS?: string | null;
|
|
82
82
|
}
|
|
@@ -19,16 +19,16 @@ export interface WebTileLayerJson extends OperationalLayerJsonBase, BasemapLayer
|
|
|
19
19
|
* attribution on the web map. Input required by the user when the layer is
|
|
20
20
|
* added to the web map.
|
|
21
21
|
*/
|
|
22
|
-
copyright?: string;
|
|
22
|
+
copyright?: string | null;
|
|
23
23
|
/**
|
|
24
24
|
* An extent object representing the full extent envelope for the layer.
|
|
25
25
|
*/
|
|
26
|
-
fullExtent?: ExtentJson;
|
|
26
|
+
fullExtent?: ExtentJson | null;
|
|
27
27
|
/**
|
|
28
28
|
* Optional string containing the item ID of the service if it's registered
|
|
29
29
|
* on ArcGIS Online or your organization's portal.
|
|
30
30
|
*/
|
|
31
|
-
itemId?: string;
|
|
31
|
+
itemId?: string | null;
|
|
32
32
|
/**
|
|
33
33
|
* The type of layer.
|
|
34
34
|
*/
|
|
@@ -38,23 +38,23 @@ export interface WebTileLayerJson extends OperationalLayerJsonBase, BasemapLayer
|
|
|
38
38
|
* detects if the Web Tile Layer has sub-domains by parsing the templateURL
|
|
39
39
|
* value for `{subDomain}`.
|
|
40
40
|
*/
|
|
41
|
-
subDomains?: string[];
|
|
41
|
+
subDomains?: string[] | null;
|
|
42
42
|
/**
|
|
43
43
|
* URL to the Web Tile Layer. Input required by the user when the layer is
|
|
44
44
|
* added to the web scene. The template URL contains a parameterized URL.
|
|
45
45
|
* The URL can contain the following template parameters: `{level}`,
|
|
46
46
|
* `{col}`, `{row}`, and `{subDomain}`.
|
|
47
47
|
*/
|
|
48
|
-
templateUrl?: string;
|
|
48
|
+
templateUrl?: string | null;
|
|
49
49
|
/**
|
|
50
50
|
* An extent object representing the full extent envelope for the layer.
|
|
51
51
|
*/
|
|
52
|
-
tileInfo?: TileInfoJson;
|
|
52
|
+
tileInfo?: TileInfoJson | null;
|
|
53
53
|
/**
|
|
54
54
|
* An object representing information about this layer if it is a WMTS
|
|
55
55
|
* layer.
|
|
56
56
|
*/
|
|
57
|
-
wmtsInfo?: WMTSInfoJson;
|
|
57
|
+
wmtsInfo?: WMTSInfoJson | null;
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
60
60
|
* Tile information, returned from the WMTS OGC Web Service. The tileInfo will
|
|
@@ -71,19 +71,19 @@ export interface TileInfoJson {
|
|
|
71
71
|
/**
|
|
72
72
|
* Requested tile's column.
|
|
73
73
|
*/
|
|
74
|
-
cols?: number;
|
|
74
|
+
cols?: number | null;
|
|
75
75
|
/**
|
|
76
76
|
* Compression quality of the tile.
|
|
77
77
|
*/
|
|
78
|
-
compressionQuality?: number;
|
|
78
|
+
compressionQuality?: number | null;
|
|
79
79
|
/**
|
|
80
80
|
* The dpi of the tiling scheme.
|
|
81
81
|
*/
|
|
82
|
-
dpi?: number;
|
|
82
|
+
dpi?: number | null;
|
|
83
83
|
/**
|
|
84
84
|
* Image format of the cached tiles.
|
|
85
85
|
*/
|
|
86
|
-
format?: string;
|
|
86
|
+
format?: string | null;
|
|
87
87
|
/**
|
|
88
88
|
* An array of levels of detail that define the tiling scheme. See
|
|
89
89
|
* {@link https://developers.arcgis.com/web-map-specification/objects/lod/}
|
|
@@ -93,33 +93,33 @@ export interface TileInfoJson {
|
|
|
93
93
|
/**
|
|
94
94
|
* ID for each level.
|
|
95
95
|
*/
|
|
96
|
-
level?: number;
|
|
96
|
+
level?: number | null;
|
|
97
97
|
/**
|
|
98
|
-
* String to be used when constructing URL to access a tile from
|
|
99
|
-
* LOD.
|
|
98
|
+
* String to be used when constructing URL to access a tile from
|
|
99
|
+
* this LOD.
|
|
100
100
|
*/
|
|
101
|
-
levelValue?: string;
|
|
101
|
+
levelValue?: string | null;
|
|
102
102
|
/**
|
|
103
103
|
* Resolution in map units of each pixel in a tile for each level.
|
|
104
104
|
*/
|
|
105
|
-
resolution?: number;
|
|
105
|
+
resolution?: number | null;
|
|
106
106
|
/**
|
|
107
107
|
* Scale for each level.
|
|
108
108
|
*/
|
|
109
|
-
scale?: number;
|
|
110
|
-
}[];
|
|
109
|
+
scale?: number | null;
|
|
110
|
+
}[] | null;
|
|
111
111
|
/**
|
|
112
112
|
* The tiling scheme origin.
|
|
113
113
|
*/
|
|
114
|
-
origin?: PointJson;
|
|
114
|
+
origin?: PointJson | null;
|
|
115
115
|
/**
|
|
116
116
|
* Requested tile's row.
|
|
117
117
|
*/
|
|
118
|
-
rows?: number;
|
|
118
|
+
rows?: number | null;
|
|
119
119
|
/**
|
|
120
120
|
* The spatial reference of the tiling schema.
|
|
121
121
|
*/
|
|
122
|
-
spatialReference?: SpatialReferenceJson;
|
|
122
|
+
spatialReference?: SpatialReferenceJson | null;
|
|
123
123
|
}
|
|
124
124
|
/**
|
|
125
125
|
* Object containing layerIdentifier, tileMatrixSet, and URL for WMTSLayer layer
|
|
@@ -133,25 +133,25 @@ export interface WMTSInfoJson {
|
|
|
133
133
|
* customLayerParameters property takes precedence if customParameters is
|
|
134
134
|
* also present.
|
|
135
135
|
*/
|
|
136
|
-
customLayerParameters?: Record<string, unknown
|
|
136
|
+
customLayerParameters?: Record<string, unknown> | null;
|
|
137
137
|
/**
|
|
138
138
|
* A sequence of parameters used to append custom parameters to all WMTS
|
|
139
139
|
* requests. These parameters are applied to GetCapabilities and GetTile. If
|
|
140
140
|
* used with the customLayerParameters property, customParameters will not
|
|
141
141
|
* take precedence.
|
|
142
142
|
*/
|
|
143
|
-
customParameters?: Record<string, unknown
|
|
143
|
+
customParameters?: Record<string, unknown> | null;
|
|
144
144
|
/**
|
|
145
145
|
* Identifier for the specific layer used in the WMTS service. Required
|
|
146
146
|
* input by the user.
|
|
147
147
|
*/
|
|
148
|
-
layerIdentifier?: string;
|
|
148
|
+
layerIdentifier?: string | null;
|
|
149
149
|
/**
|
|
150
150
|
* Tiling schema, set by the WMTS service.
|
|
151
151
|
*/
|
|
152
|
-
tileMatrixSet?: string;
|
|
152
|
+
tileMatrixSet?: string | null;
|
|
153
153
|
/**
|
|
154
154
|
* URL to the WMTS web service. Required input by the user.
|
|
155
155
|
*/
|
|
156
|
-
url?: string;
|
|
156
|
+
url?: string | null;
|
|
157
157
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__decorate as e}from"tslib";import t from"@arcgis/core/core/Collection";import{layerToJson as r}from"../json/LayerJson.js";import{serializable as i}from"../support/Serializable.js";import{ReadOnlyCollection as a}from"../utilities/ReadOnlyCollection.js";import{isImageryLayer as s}from"../utilities/_layers.js";import{getAllFieldInfos as l}from"../utilities/esri.js";import{LayerExtension as n,LayerExtensionSchema as o}from"./_LayerExtension.js";import{ArrayWrappedCollection as p}from"./support/ArrayWrappedCollection.js";import{PopupTemplateFeatureSettings as u}from"./support/PopupTemplateFeatureSettings.js";let y=class extends n{get hasFeatures(){return!0}get capabilities(){return this._layerCapabilities?this._layerCapabilities:this._capabilities()}get layer(){return super.layer}includeCatalogItems=!0;get hasRasterAttributeTable(){return this._hasRasterAttributeTable}get canChangeDefinitionExpression(){return!0}_layerCapabilities;_hasRasterAttributeTable;_getProjectWebmapJSON(){const e=super._getProjectWebmapJSON();if(!e||this.dynamicallyAddedLayer)return e;const{layerDefinition:t}=r(this.layer),{definitionExpression:i,drawingInfo:a}=t??{};return i&&(e.layerDefinition={...e.layerDefinition,definitionExpression:i}),a&&(e.layerDefinition={...e.layerDefinition,drawingInfo:a}),e}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,layer:{...this._toPropertyDef(e.layer),default:{layerType:"ArcGISImageServiceLayer"}},includeCatalogItems:{serializeModes:["initial"],default:!0}}}async _onInitialize(){await super._onInitialize();const e=await this.requestHelper.request(this.layer.url,{query:{f:"json"}});if(!e?.data)throw new Error(`Response to request for url ${this.layer.url} was invalid`);const{data:t}=e;if(t.capabilities){const e=t.capabilities.split(",").map((e=>e.trim()));this._layerCapabilities={supportsAdd:e.includes("Create"),supportsUpdate:e.includes("Update"),supportsDelete:e.includes("Delete"),supportsEditing:e.includes("Editing"),supportsQuery:e.includes("Catalog"),supportsStandardizedQueries:t.useStandardizedQueries,supportsAttachmentEditing:!1}}this._hasRasterAttributeTable=t.hasRasterAttributeTable}async _applyPortalItemProperties(e){if("Image Service"!==e.type)throw new Error(`Cannot create Imagery Layer from Portal item that has type: ${e.type}`);if(e.typeKeywords.includes("Elevation 3D Layer"))throw new Error("Cannot create Imagery Layer from Portal item that references an Elevation layer");e.url&&(this.layer.url=e.url)}_isSupportedLayer(e){return s(e)}_createSchema(){return new c(this)}_createFeatureSettings(){return new d(this)}};y=e([i],y);export{y as ImageryLayerExtension};let d=class extends u{get _defaultOutFields(){const e=l(this.popupTemplate),t=this.featureSource?.schema?.primaryKeyField;if(e&&t){const{layer:e}=this._layerExtension;return super._defaultOutFields.filter((t=>!t.startsWith(`${e?._rasterAttributeTableFieldPrefix}`)))}return["*"]}};d=e([i],d);let c=class extends o{_fieldsCollection;constructor(e){super(e),this._fieldsCollection=new a(new p({parent:e,targetProperty:"layer",arrayProperty:"fields"})),this.notifyChange("_fields")}get _fields(){return new a(this._fieldsCollection?.concat(this._rasterFields)??new t)}get _rasterFields(){const{layer:e}=this._layerExtension;return"loaded"!==this._layerExtension.layer?.loadStatus?new t:new t(e?.rasterFields?.filter((t=>t.name.startsWith(e?._rasterAttributeTableFieldPrefix))))}_getPropertyBindings(){return{primaryKeyField:{property:"objectIdField",readonly:!0},spatialReference:{property:"spatialReference",readonly:!0},geometryType:{value:"polygon"}}}};c=e([i],c);
|
|
1
|
+
import{__decorate as e}from"tslib";import t from"@arcgis/core/core/Collection";import{layerToJson as r}from"../json/LayerJson.js";import{serializable as i}from"../support/Serializable.js";import{ReadOnlyCollection as a}from"../utilities/ReadOnlyCollection.js";import{isImageryLayer as s}from"../utilities/_layers.js";import{getAllFieldInfos as l}from"../utilities/esri.js";import{LayerExtension as n,LayerExtensionSchema as o}from"./_LayerExtension.js";import{ArrayWrappedCollection as p}from"./support/ArrayWrappedCollection.js";import{PopupTemplateFeatureSettings as u}from"./support/PopupTemplateFeatureSettings.js";let y=class extends n{get hasFeatures(){return!0}get capabilities(){return this._layerCapabilities?this._layerCapabilities:this._capabilities()}get layer(){return super.layer}includeCatalogItems=!0;get hasRasterAttributeTable(){return this._hasRasterAttributeTable}get canChangeDefinitionExpression(){return!0}_layerCapabilities;_hasRasterAttributeTable;_getProjectWebmapJSON(){const e=super._getProjectWebmapJSON();if(!e||this.dynamicallyAddedLayer)return e;const{layerDefinition:t}=r(this.layer),{definitionExpression:i,drawingInfo:a}=t??{};return i&&(e.layerDefinition={...e.layerDefinition,definitionExpression:i}),a&&(e.layerDefinition={...e.layerDefinition,drawingInfo:a}),e}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,layer:{...this._toPropertyDef(e.layer),default:{layerType:"ArcGISImageServiceLayer"}},includeCatalogItems:{serializeModes:["initial"],default:!0}}}async _onInitialize(){await super._onInitialize();const e=await this.requestHelper.request(this.layer.url,{query:{f:"json"}});if(!e?.data)throw new Error(`Response to request for url ${this.layer.url} was invalid`);const{data:t}=e;if(t.capabilities){const e=t.capabilities.split(",").map((e=>e.trim()));this._layerCapabilities={supportsAdd:e.includes("Create"),supportsUpdate:e.includes("Update"),supportsDelete:e.includes("Delete"),supportsEditing:e.includes("Editing"),supportsQuery:e.includes("Catalog"),supportsStandardizedQueries:t.useStandardizedQueries,supportsAttachmentEditing:!1}}this._hasRasterAttributeTable=t.hasRasterAttributeTable}async _applyPortalItemProperties(e){if("Image Service"!==e.type)throw new Error(`Cannot create Imagery Layer from Portal item that has type: ${e.type}`);if(e.typeKeywords.includes("Elevation 3D Layer"))throw new Error("Cannot create Imagery Layer from Portal item that references an Elevation layer");e.url&&(this.layer.url=e.url)}_isSupportedLayer(e){return s(e)}_createSchema(){return new c(this)}_createFeatureSettings(){return new d(this)}};y=e([i],y);export{y as ImageryLayerExtension};let d=class extends u{get _defaultOutFields(){if(null==this.popupTemplate)return["*"];const e=l(this.popupTemplate),t=this.featureSource?.schema?.primaryKeyField;if(e&&t){const{layer:e}=this._layerExtension;return super._defaultOutFields.filter((t=>!t.startsWith(`${e?._rasterAttributeTableFieldPrefix}`)))}return["*"]}};d=e([i],d);let c=class extends o{_fieldsCollection;constructor(e){super(e),this._fieldsCollection=new a(new p({parent:e,targetProperty:"layer",arrayProperty:"fields"})),this.notifyChange("_fields")}get _fields(){return new a(this._fieldsCollection?.concat(this._rasterFields)??new t)}get _rasterFields(){const{layer:e}=this._layerExtension;return"loaded"!==this._layerExtension.layer?.loadStatus?new t:new t(e?.rasterFields?.filter((t=>t.name.startsWith(e?._rasterAttributeTableFieldPrefix))))}_getPropertyBindings(){return{primaryKeyField:{property:"objectIdField",readonly:!0},spatialReference:{property:"spatialReference",readonly:!0},geometryType:{value:"polygon"}}}};c=e([i],c);
|
package/mapping/MapExtension.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__decorate as e}from"tslib";import t from"@arcgis/core/core/Collection";import{ArgumentError as i}from"../ArgumentError.js";import{EntityBase as s}from"../Entity.js";import{InvalidOperationError as a}from"../InvalidOperationError.js";import{isBasemapExtension as n,isBookmark as o,isGroundExtension as r,isLayerPreset as p,isMenu as h,isTableExtension as m,ItemType as l}from"../ItemType.js";import{TableExtension as d}from"../data/TableExtension.js";import{layerToParentJsonCache as c}from"../json/LayerJson.js";import{applyJsonToWebMap as b}from"../json/WebMapJson.js";import{applyJsonToWebScene as _}from"../json/WebSceneJson.js";import{LayerPreset as u}from"../layer-preset/LayerPreset.js";import{Menu as w}from"../menus/Menu.js";import{DefaultArcGISRequestHelper as E}from"../support/ArcGISRequestHelper.js";import{FormatSettings as f}from"../support/FormatSettings.js";import{InitializableCollectionProxy as x}from"../support/InitializableCollectionProxy.js";import{ReadOnlyInitializableCollection as y}from"../support/ReadOnlyInitializableCollection.js";import{serializable as M}from"../support/Serializable.js";import{WellKnownBasemap as g}from"../support/esri.js";import{ReadOnlyCollection as I}from"../utilities/ReadOnlyCollection.js";import{basemapsAreEquivalent as v,createStandardBasemap as S,getStandardBasemapId as z,isStandardBasemap as O}from"../utilities/basemaps.js";import{checkArg as A}from"../utilities/checkArg.js";import{compare as P}from"../utilities/collection.js";import{load as T}from"../utilities/esri.js";import{isGroupLayerExtension as C}from"../utilities/extensions.js";import{filter as V}from"../utilities/iterable.js";import{isWMTSLayer as k,layersAreEquivalent as j}from"../utilities/layers.js";import{getLogger as B}from"../utilities/log.js";import{getMapSpatialReference as L,isMap as N,isWebMap as R,isWebScene as W}from"../utilities/mapping.js";import{toPortalItem as H}from"../utilities/portal.js";import{parallelEach as J}from"../utilities/promise.js";import{onCollectionPropertyChange as F,onEach as q}from"../utilities/watch.js";import{BasemapExtension as G}from"./BasemapExtension.js";import{Bookmark as D}from"./Bookmark.js";import{GroundExtension as U}from"./GroundExtension.js";import{MapConstraints as $}from"./MapConstraints.js";import{UnsupportedLayerExtension as X}from"./UnsupportedLayerExtension.js";import{_assignLayerExtensions as Y}from"./_LayerExtension.js";import{LayerExtensionCollectionImpl as K}from"./_LayerExtensionCollectionImpl.js";const Q=B("MapExtension");let Z=class extends s{get webMap(){return this._webMap}get webScene(){return this._webScene}get map(){return this._currentMap}get viewMode(){return this.map?W(this.map)?"scene":"map":this.initialViewMode}get initialViewMode(){return this.webMap&&this.webScene?this._initialViewMode||"map":W(this.map)||this.webScene&&!this.webMap?"scene":"map"}set initialViewMode(e){this._initialViewMode=e}get requestHelper(){return this._requestHelper||(this._requestHelper=new E),this._requestHelper}set requestHelper(e){this._requestHelper=e}get basemapExtension(){return this._basemapExtension}set basemapExtension(e){const t=this._basemapExtension;if(t!==e)if(t&&t._setMapExtension(void 0),e){if(e._setMapExtension(this),this.isInitialized&&!e.basemap){if(e.isInitialized)throw e._setMapExtension(void 0),new a("Cannot set MapExtension.basemapExtension without a valid Esri Basemap object");e.initialize()}this._ensureIsBasemapOption(e),this.map&&e.basemap&&e.basemap!==this.map.basemap?this.map.basemap=e.basemap:this._basemapExtension=e}else this.map.basemap=void 0,this._basemapExtension=void 0}get groundExtension(){return this._groundExtension||(this.groundExtension=U.create({ground:this.map?.ground})),this._groundExtension}set groundExtension(e){if(!e)throw new a("Cannot set map.ground to undefined");const t=this._groundExtension;t!==e&&(t&&t._setMapExtension(void 0),e._setMapExtension(this),e._resolveGround(),e.ground?(this._groundExtensions.set(e.ground,e),this.map&&e.ground!==this.map.ground?this.map.ground=e.ground:this._groundExtension=e):this._groundExtension=e)}get basemapOptions(){return this._basemapOptions}get bookmarks(){return this._bookmarks}get initialBasemapExtension(){return this._initialBasemapExtension}get initialLayerPreset(){return this._initialLayerPreset}set initialLayerPreset(e){if(!e)return void(this._initialLayerPreset=void 0);const t=p(e)?e:new u(e);this._initialLayerPreset=t}get _spatialReference(){return L(this.map)}get webMapItemTitle(){if(this._webMapItem)return this._webMapItem.title}get webSceneItemTitle(){if(this._webSceneItem)return this._webSceneItem.title}get title(){return this._title?this._title:this._webMapItem&&"map"===this.viewMode?this.webMapItemTitle:this._webSceneItem&&"scene"===this.viewMode?this.webSceneItemTitle:void 0}set title(e){this._title=e}formatSettings;constraints;onClick;onHover;onHoverEnd;onInitialized;onViewpointChanged;get contextMenu(){return this._contextMenu}set contextMenu(e){this._contextMenu=e,e&&this.isInitialized&&!e.isInitialized&&(async()=>{try{await e.initialize()}catch(e){e instanceof Error&&Q.error({message:"An error occurred while initializing context menu.",error:e})}})()}isSwitchingMap=!1;_layerViews=new t;get _allLayerViews(){const e=i=>{const s=[i];return t.isCollection(i.sublayerViews)?s.push(...i.sublayerViews.toArray().flatMap(e)):t.isCollection(i.layerViews)&&s.push(...i.layerViews.toArray().flatMap(e)),s};return this._layerViews.toArray().flatMap(e)}get layerExtensions(){return this._layerExtensions}tableExtensions;allLayerExtensions;_itemType=l.MAP_EXTENSION;_map;_scene;_deserializedMapPromise;_deserializedViewMode;_deserializedViewModePromise;_deferredProperties;_currentMap;_requestHelper;_basemapExtension;_groundExtension;_basemapOptions;_groundExtensions;_bookmarks;_layerExtensions;_webMap;_webMapItem;_webScene;_webSceneItem;_title;_initialViewMode;_initialLayerPreset;_initialBasemapExtension;_skipBasemapOptions=!1;_createScenePromise;_createMapPromise;_contextMenu;constructor(e){super(e);let s={...e};this._basemapOptions=new ee(this),this._groundExtensions=new WeakMap,this._layerExtensions=this._createLayerExtensionCollection(),this.tableExtensions=this._createTableExtensionCollection(),this.formatSettings=this._createFormatSettings(),this._bookmarks=new t,this.constraints=new $,this.watch(["_map","_scene"],(e=>{e&&(q(e.layers,"layerview-create",(e=>{this._layerViews.add(e.layerView)})),q(e.layers,"layerview-destroy",(e=>{this._layerViews.remove(e.layerView)})))}));const{webMap:a,webScene:n,initialViewMode:o,map:r,basemapOptions:p}=s;if(this._webMap=a,this._webScene=n,this._webMapItem=se(a),this._webSceneItem=se(n),this.initialViewMode=o,W(r)&&n)throw new i("Cannot specify webScene property if map is initialized to a WebScene instance.");if(N(r)&&a)throw new i("Cannot specify webMap property if map is initialized to a 2D Map instance.");if(W(r)||R(r)||N(r))this.assignProperties({basemapOptions:p}),this._skipBasemapOptions=!!p;else{const{layerExtensions:e,tableExtensions:t,groundExtension:i,basemapOptions:a,basemapExtension:n,...o}=s;this._deferredProperties={layerExtensions:e,tableExtensions:t,groundExtension:i,basemapOptions:a,basemapExtension:n},s=o,a&&(this._skipBasemapOptions=!0)}this._initMapFromProperties(s),this.watch("map.basemap",(()=>this._onBasemapChange()),!0),this.watch("map.ground",(()=>this._onGroundChange()),!0),this.allLayerExtensions=new ie(this),this.map?.basemap&&this._onBasemapChange()}getLayerExtensionsForView(e=this.viewMode){return(("map"===e?this._map:this._scene)?.layers.toArray()??[]).map((e=>this._layerExtensions._forLayer(e))).filter((e=>e instanceof X||!e.dynamicallyAddedLayer))}getAllFeatureSources(e=()=>!0){const t=[],i=a=>{a.hasFeatures&&t.push(a);for(const t of a.sublayerExtensions.initializedItems.filter(e).toArray())s(t);if(C(a))for(const t of a.layerExtensions.initializedItems.filter(e).toArray())i(t)},s=i=>{t.push(i);for(const t of i.sublayerExtensions.initializedItems.filter(e).toArray())s(t)};for(const t of this.layerExtensions.initializedItems.filter(e).toArray())i(t);for(const i of this.tableExtensions.initializedItems.filter(e).toArray())t.push(i);if(this.basemapExtension){for(const t of this.basemapExtension.baseLayerExtensions.initializedItems.filter(e).toArray())i(t);for(const t of this.basemapExtension.referenceLayerExtensions.initializedItems.filter(e).toArray())i(t)}return t}isSupportedViewMode(e){return e===this.viewMode||!(!this.webMap&&!this.webScene)&&("scene"===e?!!this.webScene:!!this.webMap)}async switchViewMode(e){if(A("viewMode",e).isNotMissing().satisfies((e=>this.isSupportedViewMode(e)),"Unsupported view mode."),this.viewMode===e)return;let t;"scene"===e?(await this._createScene(),t=this._scene):(await this._createMap(),t=this._map),t.basemap=this.map?.basemap,await this.switchMap(t),this.notifyChange("viewMode"),this.notifyChange("title")}async switchMap(e){if(A("newMap",e).isNotMissing(),e===this.map)return;if(!this.map)return void this._setMap(e);this.isSwitchingMap=!0,this.isInitialized&&await oe(e);const t=new Map(this.map.layers.map((e=>[e,this.layerExtensions.forLayer(e)]))),i=new Map(this.map.tables.map((e=>[e,this.tableExtensions.forTable(e)]))),{basemapExtension:s}=this;this._setMap(e),this._updateBookmarks();const a=[];for(const e of this.map.layers.toArray()){const i=[...V(t.entries(),(([t])=>j(t,e)))];if(1===i.length){const[t]=i;a.push((async()=>{const i=t[1];await i._switchLayer(e),this._layerExtensions._register(i)})())}else{const t=this._layerExtensions._forLayer(e);t&&t.layer!==e&&a.push(t._switchLayer(e))}}for(const e of this.map.tables.toArray()){const t=[...V(i.entries(),(([t])=>j(t,e)))];if(1===t.length){const[i]=t;a.push((async()=>{const t=i[1];await t._switchTable(e),this.tableExtensions.add(t)})())}else{const t=this.tableExtensions.forTable(e);t&&t.table!==e&&a.push(t._switchTable(e))}}this.map.basemap&&s&&v(this.map.basemap,s.basemap)&&a.push((async()=>{await s._switchBasemap(this.map.basemap),this.basemapExtension=s})()),await Promise.all(a),this.isInitialized&&await this._initializeChildren(),this.isSwitchingMap=!1}async setWebMap(e){if(!e&&this.webMap&&!this.webScene)throw new a("Cannot unset both webMap and webScene.");this._webMap=e,this._map=void 0,this._createMapPromise=void 0,this._webMapItem=se(e),await T(this._webMapItem),"map"===this.viewMode&&(e?(this._basemapOptions.isExplicitlyModified||this._basemapOptions.removeAllInternal(),await this._createMap(),await this.switchMap(this._map),await this._createStandardBasemapOptions(),this._basemapOptions.reorderInternal(this.basemapExtension,0),this._initialBasemapExtension=this.basemapExtension):await this.switchViewMode("scene")),this.notifyChange("webMap"),this.notifyChange("initialViewMode"),this.notifyChange("title")}async setWebScene(e){if(!e&&this.webScene&&!this.webMap)throw new a("Cannot unset both webMap and webScene.");this._webScene=e,this._scene=void 0,this._createScenePromise=void 0,this._webSceneItem=se(e),await T(this._webSceneItem),"scene"===this.viewMode&&(e?(this._basemapOptions.isExplicitlyModified||this._basemapOptions.removeAllInternal(),await this._createScene(),await this.switchMap(this._scene),await this._createStandardBasemapOptions(),this._basemapOptions.reorderInternal(this.basemapExtension,0),this._initialBasemapExtension=this.basemapExtension):await this.switchViewMode("map")),this.notifyChange("webScene"),this.notifyChange("initialViewMode"),this.notifyChange("title")}getDefaults(){const e=super.getDefaults();return e.initialViewMode="map",e}async _createScene(){if(!this._scene&&this.webScene)return this._createScenePromise=this._createScenePromise??(async()=>{const e=(await import("@arcgis/core/WebScene")).default;ae(this.webScene)?(this._webSceneItem.type="Web Scene",this._scene=new e({portalItem:this._webSceneItem})):this._scene=e.fromJSON(this.webScene)})()}async _createMap(){if(!this._map&&this.webMap)return this._createMapPromise=this._createMapPromise??(async()=>{const e=(await import("@arcgis/core/WebMap")).default;ae(this.webMap)?(this._webMapItem.type="Web Map",this._map=new e({portalItem:this._webMapItem})):this._map=e.fromJSON(this.webMap)})()}_getSerializableProperties(){return{...super._getSerializableProperties(),layerExtensions:{serializeModes:["initial","project"],deserialize:e=>{if(this.map&&e){const t="map"===this.viewMode,i=(t?this._scene:this._map)?.layers.toArray()??[],s=e.filter((e=>!i.includes(e.layer)&&!i.some((t=>e.layer&&j(t,e.layer)))));Y(this.layerExtensions,s)}},serialize:e=>{if(this._deferredProperties?.layerExtensions)return this._deferredProperties.layerExtensions;{const t="map"===this.viewMode,i=(t?this._map:this._scene)?.layers.toArray();let s=(t?this._scene:this._map)?.layers.toArray()??[];return s=s.filter((e=>!i.find((t=>j(t,e))))),this.layerExtensions.concat(s.map((e=>this._layerExtensions._forLayer(e)))).filter((t=>!(t instanceof X||"initial"===e)||!t.dynamicallyAddedLayer)).toArray()}}},tableExtensions:{serializeModes:["initial","project"],deserialize:e=>{this.map?P(this.tableExtensions,e,{onNew:(e,t)=>{this.tableExtensions.add(m(e)?e:d.create(e),t)},onMatch:(e,t,i,s)=>{m(t)||e.assignProperties(t),i!==s&&this.tableExtensions.reorder(e,s)},equals:(e,t)=>m(t)?t===e:!!d._matchesRef(e,t.table)||e.id===t.id}):this._deferredProperties={...this._deferredProperties,tableExtensions:e}},serialize:()=>this._deferredProperties?.tableExtensions?this._deferredProperties?.tableExtensions:this.tableExtensions.toArray()},basemapExtension:{serializeModes:["project"],deserialize:e=>{if(this.map)if(e)if(n(e))this.basemapExtension=e;else{if(this.basemapExtension)return this.basemapExtension.assignPropertiesAsync(e);this.basemapExtension=G.create(e)}else this.basemapExtension=void 0;else this._deferredProperties={...this._deferredProperties,basemapExtension:e}},serialize:()=>this._deferredProperties?.basemapExtension?this._deferredProperties?.basemapExtension:this.basemapExtension},basemapOptions:{serializeModes:["initial"],deserialize:e=>{this._skipBasemapOptions?this._skipBasemapOptions=!1:(P(this.basemapOptions,e,{onNew:(e,t)=>{this.basemapOptions.add(n(e)?e:G.create(e),t)},onMatch:(e,t,i,s)=>{n(t)||e.assignProperties(t),i!==s&&this.basemapOptions.reorder(e,s)},onMissing:e=>{this.basemapOptions.remove(e)},equals:(e,t)=>{if(n(t))return t===e;if(e.id&&t.id)return e.id===t.id;{const i=e.toJSON();return v(i.basemap,t.basemap||t.baseMap)}}}),this.basemapExtension&&this._ensureIsBasemapOption(this.basemapExtension),this.isInitialized&&J(this.basemapOptions.toArray(),(e=>e._createBackingBasemap())))},serialize:()=>this._deferredProperties?.basemapOptions?this._deferredProperties?.basemapOptions:this.basemapOptions.toArray()},groundExtension:{serializeModes:["initial"],deserialize:e=>{if(this.map){if(!r(e))return this.groundExtension.assignPropertiesAsync(e);this.groundExtension=e}else this._deferredProperties={...this._deferredProperties,groundExtension:e}},serialize:()=>this._deferredProperties?.groundExtension?this._deferredProperties?.groundExtension:this.groundExtension},bookmarks:{serialize:()=>this.bookmarks.map((e=>e.toJSON())).toArray(),deserialize:e=>{this.bookmarks.addMany(e.map((e=>o(e)?e:new D(e))))}},webMap:{serializeModes:["initial"],deserialize:!1},webScene:{serializeModes:["initial"],deserialize:!1},initialLayerPreset:"initial",initialViewMode:{serializeModes:["initial","project"],serialize:e=>"project"===e?this.viewMode:"scene"!==this.initialViewMode||!this.webScene&&this.webMap?"map":"scene",deserialize:e=>{this.viewMode!==e&&(this._deserializedViewMode=e),this._initialViewMode=e},isDefault:(e,t)=>"project"!==t&&"map"===e},formatSettings:"initial",constraints:"initial",title:"initial",onClick:"initial",onHover:"initial",onHoverEnd:"initial",onInitialized:"initial",onViewpointChanged:"initial",contextMenu:{serializeModes:["initial"],deserialize:e=>{e?h(e)?this.contextMenu=e:this.contextMenu?this.contextMenu.assignProperties(e):this.contextMenu=w.create(e):this.contextMenu=void 0}},map:{serializeModes:["project"],serialize:()=>{c.lookup=new WeakMap;const e=this.layerExtensions.toArray().filter((e=>e.layer)).map((e=>e._getProjectWebmapJSON())),t=this.tableExtensions.toArray().filter((e=>e.table)).map((e=>({id:e.table.id,title:e.table.title})));return c.lookup=void 0,e.length>0||t.length>0?{operationalLayers:e,tables:t}:{}},deserialize:e=>{if(!this.map)throw new i("Cannot specify JSON object for the 'map' property. It must be an ArcGIS API Map instance. To specify JSON, use 'webMap' or 'webScene' instead.");if(N(e)||R(e)||W(e)){if(e!==this.map)throw new i("properties.map","Property 'map' is read-only.")}else this._deserializedMapPromise=(async()=>{this._deserializedViewMode&&this.webMap&&this.webScene&&(this._deserializedViewModePromise=this.switchViewMode(this._deserializedViewMode),await this._deserializedViewModePromise,this._deserializedViewMode=void 0,this._deserializedViewModePromise=void 0),await this._applyMapProperties(e,this.map),this._deserializedMapPromise=void 0})()}},requestHelper:{serialize:!1}}}async _applyMapProperties(e,t,i){await J(this.basemapOptions.toArray(),(e=>e._createBackingBasemap()));let s=e;const a=this.basemapOptions.find((e=>v(e.basemap,s.baseMap)));a&&(t.basemap=a.basemap,s={...s,baseMap:{...s.baseMap,title:t.basemap.title}}),W(t)?await _(s,t,i):await b(s,t,i)}_createFormatSettings(){return new f}_createLayerExtensionCollection(){return new K(this)}_createTableExtensionCollection(){return new te(this)}async _onInitialize(){await super._onInitialize();const{basemapOptions:e,basemapExtension:t,webMap:i,webScene:s,...a}=this._deferredProperties??{};if(this.map||("scene"===this.initialViewMode?(await this._createScene(),this._setMap(this._scene)):(await this._createMap(),this._setMap(this._map))),this._webMapItem||this._webSceneItem?(await Promise.all([oe(this.map),T(this._webMapItem),T(this._webSceneItem)]),ne(this._webMapItem,"webMap","Web Map"),ne(this._webSceneItem,"webScene","Web Scene")):await oe(this.map),t&&(!n(t)&&t.basemap?this.basemapExtension=G.create(t):await this.assignPropertiesAsync({basemapExtension:t}),await this.basemapExtension._createBackingBasemap()),e){const t=e.find((e=>n(e)&&v(this.map.basemap,e.toJSON().basemap)));if(t){const e=t.toJSON().basemap?.id??t.basemap?.id,i=t.toJSON().basemap?.title;await t._switchBasemap(this.map.basemap),this.basemapExtension=t,e&&(this.map.basemap.id=e),i&&(this.map.basemap.title=i)}await this.assignPropertiesAsync({basemapOptions:e})}await this.assignPropertiesAsync(a),this._deferredProperties=void 0,this._initialBasemapExtension=this.basemapExtension,this._updateBookmarks();for(const e of this.layerExtensions.toArray())await e._createBackingLayer();await Promise.all(this.tableExtensions.map((e=>e._createBackingTable())).toArray())}async _postInitialize(){await super._postInitialize(),await this._createStandardBasemapOptions(),await J(this.basemapOptions.toArray(),(e=>e._createBackingBasemap())),this.initialLayerPreset&&await this.initialLayerPreset.applyTo(this)}*_initializableChildCollections(){yield*super._initializableChildCollections();const e=new t(this.layerExtensions.filter((e=>!!e.layer)));e.remove=e=>this.layerExtensions.remove(e);const i=new t(this.tableExtensions.filter((e=>!!e.table)));if(i.remove=e=>this.tableExtensions.remove(e),yield e,yield i,this.basemapExtension){const e=new t;e.add(this.basemapExtension),yield e}const s=new t;s.add(this.groundExtension),yield s}_initMapFromProperties(e){const t=e.map;N(t)||R(t)||W(t)?this._setMap(t):"scene"===this.initialViewMode?e.webScene&&!ae(e.webScene)&&(this._deferredProperties={webScene:e.webScene,...this._deferredProperties}):e.webMap&&!ae(e.webMap)&&(this._deferredProperties={webMap:e.webMap,...this._deferredProperties})}_setMap(e){W(e)?this._scene=e:this._map=e,this._currentMap=e,this.basemapExtension?.basemap&&!e.basemap&&(e.basemap=this.basemapExtension.basemap),this.groundExtension?.ground&&!e.ground&&(e.ground=this.groundExtension.ground),this.notifyChange("map")}_onBasemapChange(){if(this._basemapExtension){if(this.basemapExtension.basemap==this.map.basemap)return;this._basemapExtension._setMapExtension(void 0)}if(this.map.basemap){let e=this.basemapOptions.find((e=>this.map.basemap===e.basemap));if(!e){const t=this.basemapOptions.find((e=>v(e.basemap,this.map.basemap)));t?(e=t,e._switchBasemap(this.map.basemap)):(e=G.create({basemap:this.map.basemap}),this._basemapOptions.addInternal(e,0))}e.mapExtension!==this&&e._setMapExtension(this),this._basemapExtension=e}else this._basemapExtension=void 0;this.notifyChange("basemapExtension")}_onGroundChange(){if(this._groundExtension){if(this.map.ground&&this.groundExtension.ground===this.map.ground)return void(this._groundExtensions.has(this.map.ground)||this._groundExtensions.set(this.map.ground,this.groundExtension));this.groundExtension._setMapExtension(void 0)}this.map.ground&&!this._groundExtensions.has(this.map.ground)&&this._groundExtensions.set(this.map.ground,U.create({ground:this.map.ground}));const e=this._groundExtensions.get(this.map.ground);e&&e.mapExtension!==this&&e._setMapExtension(this),this._groundExtension=e,this.notifyChange("groundExtension")}async _createStandardBasemapOptions(){const e=this._spatialReference;!this._basemapOptions.isExplicitlyModified&&e?.isWebMercator&&await J([g.SATELLITE,g.HYBRID_VECTOR,g.STREETS_VECTOR,g.TOPO_VECTOR,g.STREETS_NAVIGATION_VECTOR,g.STREETS_NIGHT_VECTOR,g.TERRAIN_VECTOR,g.DARK_GRAY_VECTOR,g.GRAY_VECTOR,g.OCEANS_VECTOR,g.OPEN_STREET_MAP_VECTOR],(async e=>{const t=await S(e);v(this.map.basemap,t)?this._basemapOptions.addInternal(this.basemapExtension):this._basemapOptions.addInternal(G.create({basemap:t}),void 0,!1)}))}_ensureIsBasemapOption(e){const t=this.basemapOptions.findIndex((t=>t.basemap===e.basemap));t>=0?this._basemapOptions.getItemAt(t)!==e&&(this._basemapOptions.removeAtInternal(t),this._basemapOptions.addInternal(e,t)):this._basemapOptions.addInternal(e,0)}_updateBookmarks(){this.bookmarks.removeMany(this.bookmarks.filter((e=>"map"===e.source))),R(this.map)&&this.map.bookmarks?.length>0?this.map.bookmarks.forEach((e=>{this.bookmarks.add(new D({source:"map",title:e.name,viewpoint:e.viewpoint}))})):W(this.map)&&this.map.presentation?.slides?.length>0&&this.map.presentation.slides.forEach((e=>{const t={source:"map",title:e.title.text,viewpoint:e.viewpoint},i=new D(t);this.bookmarks.add(i)}))}};Z=e([M],Z);export{Z as MapExtension};class ee extends x{isExplicitlyModified=!1;_mapExtension;constructor(e){super(new t),this._mapExtension=e}add(e,t){return super.add(e,t),this.isExplicitlyModified=!0,1===this.length&&this._mapExtension.map&&!this._mapExtension.basemapExtension&&(this._mapExtension.basemapExtension=e),this}addMany(e,t){return super.addMany(e,t),this.isExplicitlyModified=!0,this}addInternal(e,t,i=!0){const s=e=>{const t="-vector";return e?.endsWith(t)?e.substring(0,e.length-7):e};let a;if(e.basemap){const t=s(e.basemap.id);if(a=this.findIndex((e=>s(e.basemap?.id)===t)),O(e.basemap)&&a>=0){if(!i)return;super.removeAt(a)}}super.add(e,t??(a>=0?a:void 0))}removeAt(e){const t=super.removeAt(e);return t&&(this.isExplicitlyModified=!0,t===this._mapExtension.basemapExtension&&(e<this.length?this._mapExtension.basemapExtension=this.getItemAt(e):this.length?this._mapExtension.basemapExtension=this.getItemAt(e-1):this._mapExtension.basemapExtension=void 0)),t}removeAll(){return this._mapExtension.basemapExtension=void 0,super.removeAll()}removeAtInternal(e){return super.removeAt(e)}removeAllInternal(){for(;this.length;)this.removeAtInternal(this.length-1)}reorder(e,t){return super.reorder(e,t),this.isExplicitlyModified=!0,e}reorderInternal(e,t){return super.reorder(e,t)}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.basemap}}class te extends x{get _collection(){return this._tables.map((e=>this._forTable(e))).concat(Array.from(this._uninitializedTableExtensions))}get _tables(){return this._mapExtension.map?.tables??new I(new t)}_mapExtension;_tableExtensionMap=new WeakMap;_uninitializedTableExtensions=new Set;constructor(e){super(),this._mapExtension=e,F(this._mapExtension,"map.tables",(e=>{const t={added:(e.added||[]).map((e=>this._forTable(e))),moved:(e.moved||[]).map((e=>this._forTable(e))),removed:(e.removed||[]).map((e=>this._forTable(e))),target:this};this.emit("change",t)})),this._mapExtension.watch("map.tables.length",(()=>this.notifyChange("length")))}toJSON(){const e=[];return this.forEach((t=>{e.push(`item://${encodeURIComponent(l.TABLE_EXTENSION)}/${encodeURIComponent(t.id)}`)})),e}clone(){const e=new te(this._mapExtension);return e._tableExtensionMap=this._tableExtensionMap,e}findById(e){return A("id",e).isNotMissing(),this.find((t=>t.id===e))}findByTableId(e){return A("id",e).isNotMissing(),this.find((t=>t._tableId===e))}forTable(e){if(A("table",e).isNotMissing(),this._tables.includes(e))return this._forTable(e)}add(e,t){if(A("tableX",e).isNotMissing(),e.mapExtension&&e.mapExtension.tableExtensions.remove(e),e._setMapExtension(this._mapExtension),e.table){const i=this._tableExtensionMap.get(e.table);if(this._tableExtensionMap.set(e.table,e),i&&i!==e&&this._onRemoved(i),this._tables.includes(e.table))if(void 0===t){const t={added:[e],moved:[],removed:i?[i]:[],target:this};this.emit("change",t)}else this._tables.reorder(e.table,t);else this._tables.add(e.table,t)}else{this._uninitializedTableExtensions.add(e);const t={added:[e],moved:[],removed:[],target:this};this.emit("change",t)}return this._onAdded(e),this}removeAt(e){const t=this.getItemAt(e);if(void 0!==t){if(this._uninitializedTableExtensions.has(t)){this._uninitializedTableExtensions.delete(t);const e={added:[],moved:[],removed:[t],target:this};this.emit("change",e)}else this._tables.remove(t.table);return this._onRemoved(t),t}}reorder(e,t){if(e&&this._tables.includes(e.table))return this._tables.reorder(e.table,t),e}sort(e){return this._tables.sort(((t,i)=>e(this._forTable(t),this._forTable(i)))),this}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.table}_onAdded(e){}_onRemoved(e){e._setMapExtension(void 0)}_forTable(e){for(const e of this._uninitializedTableExtensions)e._resolveTable(),e.table&&(this._tableExtensionMap.set(e.table,e),this._uninitializedTableExtensions.delete(e));if(!this._tableExtensionMap.has(e)){const t=d.create({table:e});this._tableExtensionMap.set(e,t),t._setMapExtension(this._mapExtension),this._onAdded(t)}return this._tableExtensionMap.get(e)}}class ie extends y{get _collection(){let e=this._mapExtension.layerExtensions.flatten((e=>C(e)?e.layerExtensions:[]));return this._mapExtension.basemapExtension&&(e=e.concat(this._mapExtension.basemapExtension.baseLayerExtensions.toArray()).concat(this._mapExtension.basemapExtension.referenceLayerExtensions.toArray())),e=e.concat(this._mapExtension.groundExtension.layerExtensions.toArray()),e}_mapExtension;constructor(e){super(),this._mapExtension=e}findById(e){return A("id",e).isNotMissing(),this.find((t=>t.id===e))}findByLayerId(e){return A("id",e).isNotMissing(),this.find((t=>t._layerId===e))}forLayer(e){return A("layer",e).isNotMissing(),this.findByLayerId(e.id)}emit(e,i){if("change"===e){const s=new t;s.addMany(i.added);const a=s.flatten((e=>C(e)?e.layerExtensions:[])).toArray(),n=new t;n.addMany(i.removed);const o=n.flatten((e=>C(e)?e.layerExtensions:[])).toArray(),r=new t;r.addMany(i.moved);const p=r.flatten((e=>C(e)?e.layerExtensions:[])).toArray();super.emit(e,{added:a,removed:o,moved:p,target:this})}return super.emit(e,i)}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.layer}}function se(e){if("object"!=typeof e||!e?.baseMap)return H(e)}function ae(e){return"object"!=typeof e||e&&!e.baseMap}function ne(e,t,i){if(e?.type&&e.type!==i)throw new Error(`Invalid portal item type "${e.type}" for property ${t}.`)}async function oe(e){await T(e),e.basemap&&(await T(e.basemap),e.basemap.baseLayers.filter((e=>k(e))).map((e=>{const t=e;return t.activeLayer.imageFormat=t.activeLayer.imageFormat??(t.activeLayer.imageFormats?.length>0?t.activeLayer.imageFormats[0]:""),t.activeLayer.styleId=t.activeLayer.styleId??"",t})),e.basemap.id=z(e.basemap)??e.basemap.id)}
|
|
1
|
+
import{__decorate as e}from"tslib";import t from"@arcgis/core/core/Collection";import{ArgumentError as i}from"../ArgumentError.js";import{EntityBase as s}from"../Entity.js";import{InvalidOperationError as a}from"../InvalidOperationError.js";import{isBasemapExtension as n,isBookmark as o,isGroundExtension as r,isLayerPreset as p,isMenu as h,isTableExtension as m,ItemType as l}from"../ItemType.js";import{TableExtension as d}from"../data/TableExtension.js";import{layerToParentJsonCache as c}from"../json/LayerJson.js";import{applyJsonToWebMap as b}from"../json/WebMapJson.js";import{applyJsonToWebScene as _}from"../json/WebSceneJson.js";import{LayerPreset as u}from"../layer-preset/LayerPreset.js";import{Menu as w}from"../menus/Menu.js";import{DefaultArcGISRequestHelper as E}from"../support/ArcGISRequestHelper.js";import{FormatSettings as f}from"../support/FormatSettings.js";import{InitializableCollectionProxy as x}from"../support/InitializableCollectionProxy.js";import{ReadOnlyInitializableCollection as y}from"../support/ReadOnlyInitializableCollection.js";import{serializable as M}from"../support/Serializable.js";import{WellKnownBasemap as g}from"../support/esri.js";import{ReadOnlyCollection as I}from"../utilities/ReadOnlyCollection.js";import{basemapsAreEquivalent as v,createStandardBasemap as S,getStandardBasemapId as z,isStandardBasemap as O}from"../utilities/basemaps.js";import{checkArg as A}from"../utilities/checkArg.js";import{compare as P}from"../utilities/collection.js";import{load as T}from"../utilities/esri.js";import{isGroupLayerExtension as C}from"../utilities/extensions.js";import{filter as V}from"../utilities/iterable.js";import{isWMTSLayer as k,layersAreEquivalent as j}from"../utilities/layers.js";import{getLogger as B}from"../utilities/log.js";import{getMapSpatialReference as L,isMap as N,isWebMap as R,isWebScene as W}from"../utilities/mapping.js";import{toPortalItem as H}from"../utilities/portal.js";import{parallelEach as J}from"../utilities/promise.js";import{onCollectionPropertyChange as F,onEach as q}from"../utilities/watch.js";import{BasemapExtension as G}from"./BasemapExtension.js";import{Bookmark as D}from"./Bookmark.js";import{GroundExtension as U}from"./GroundExtension.js";import{MapConstraints as $}from"./MapConstraints.js";import{UnsupportedLayerExtension as X}from"./UnsupportedLayerExtension.js";import{_assignLayerExtensions as Y}from"./_LayerExtension.js";import{LayerExtensionCollectionImpl as K}from"./_LayerExtensionCollectionImpl.js";const Q=B("MapExtension");let Z=class extends s{get webMap(){return this._webMap}get webScene(){return this._webScene}get map(){return this._currentMap}get viewMode(){return this.map?W(this.map)?"scene":"map":this.initialViewMode}get initialViewMode(){return this.webMap&&this.webScene?this._initialViewMode||"map":W(this.map)||this.webScene&&!this.webMap?"scene":"map"}set initialViewMode(e){this._initialViewMode=e}get requestHelper(){return this._requestHelper||(this._requestHelper=new E),this._requestHelper}set requestHelper(e){this._requestHelper=e}get basemapExtension(){return this._basemapExtension}set basemapExtension(e){const t=this._basemapExtension;if(t!==e)if(t&&t._setMapExtension(void 0),e){if(e._setMapExtension(this),this.isInitialized&&!e.basemap){if(e.isInitialized)throw e._setMapExtension(void 0),new a("Cannot set MapExtension.basemapExtension without a valid Esri Basemap object");e.initialize()}this._ensureIsBasemapOption(e),this.map&&e.basemap&&e.basemap!==this.map.basemap?this.map.basemap=e.basemap:this._basemapExtension=e}else this.map.basemap=void 0,this._basemapExtension=void 0}get groundExtension(){return this._groundExtension||(this.groundExtension=U.create({ground:this.map?.ground})),this._groundExtension}set groundExtension(e){if(!e)throw new a("Cannot set map.ground to undefined");const t=this._groundExtension;t!==e&&(t&&t._setMapExtension(void 0),e._setMapExtension(this),e._resolveGround(),e.ground?(this._groundExtensions.set(e.ground,e),this.map&&e.ground!==this.map.ground?this.map.ground=e.ground:this._groundExtension=e):this._groundExtension=e)}get basemapOptions(){return this._basemapOptions}get bookmarks(){return this._bookmarks}get initialBasemapExtension(){return this._initialBasemapExtension}get initialLayerPreset(){return this._initialLayerPreset}set initialLayerPreset(e){if(!e)return void(this._initialLayerPreset=void 0);const t=p(e)?e:new u(e);this._initialLayerPreset=t}get _spatialReference(){return L(this.map)}get webMapItemTitle(){if(this._webMapItem)return this._webMapItem.title}get webSceneItemTitle(){if(this._webSceneItem)return this._webSceneItem.title}get title(){return this._title?this._title:this._webMapItem&&"map"===this.viewMode?this.webMapItemTitle:this._webSceneItem&&"scene"===this.viewMode?this.webSceneItemTitle:void 0}set title(e){this._title=e}formatSettings;constraints;onClick;onHover;onHoverEnd;onInitialized;onViewpointChanged;get contextMenu(){return this._contextMenu}set contextMenu(e){this._contextMenu=e,e&&this.isInitialized&&!e.isInitialized&&(async()=>{try{await e.initialize()}catch(e){e instanceof Error&&Q.error({message:"An error occurred while initializing context menu.",error:e})}})()}isSwitchingMap=!1;_layerViews=new t;get _allLayerViews(){const e=i=>{const s=[i];return t.isCollection(i.sublayerViews)?s.push(...i.sublayerViews.toArray().flatMap(e)):t.isCollection(i.layerViews)&&s.push(...i.layerViews.toArray().flatMap(e)),s};return this._layerViews.toArray().flatMap(e)}get layerExtensions(){return this._layerExtensions}tableExtensions;allLayerExtensions;_itemType=l.MAP_EXTENSION;_map;_scene;_deserializedMapPromise;_deserializedViewMode;_deserializedViewModePromise;_deferredProperties;_currentMap;_requestHelper;_basemapExtension;_groundExtension;_basemapOptions;_groundExtensions;_bookmarks;_layerExtensions;_webMap;_webMapItem;_webScene;_webSceneItem;_title;_initialViewMode;_initialLayerPreset;_initialBasemapExtension;_skipBasemapOptions=!1;_createScenePromise;_createMapPromise;_contextMenu;constructor(e){super(e);let s={...e};this._basemapOptions=new ee(this),this._groundExtensions=new WeakMap,this._layerExtensions=this._createLayerExtensionCollection(),this.tableExtensions=this._createTableExtensionCollection(),this.formatSettings=this._createFormatSettings(),this._bookmarks=new t,this.constraints=new $,this.watch(["_map","_scene"],(e=>{e&&(q(e.layers,"layerview-create",(e=>{this._layerViews.add(e.layerView)})),q(e.layers,"layerview-destroy",(e=>{this._layerViews.remove(e.layerView)})))}));const{webMap:a,webScene:n,initialViewMode:o,map:r,basemapOptions:p}=s;if(this._webMap=a,this._webScene=n,this._webMapItem=se(a),this._webSceneItem=se(n),this.initialViewMode=o,W(r)&&n)throw new i("Cannot specify webScene property if map is initialized to a WebScene instance.");if(N(r)&&a)throw new i("Cannot specify webMap property if map is initialized to a 2D Map instance.");if(W(r)||R(r)||N(r))this.assignProperties({basemapOptions:p}),this._skipBasemapOptions=!!p;else{const{layerExtensions:e,tableExtensions:t,groundExtension:i,basemapOptions:a,basemapExtension:n,...o}=s;this._deferredProperties={layerExtensions:e,tableExtensions:t,groundExtension:i,basemapOptions:a,basemapExtension:n},s=o,a&&(this._skipBasemapOptions=!0)}this._initMapFromProperties(s),this.watch("map.basemap",(()=>this._onBasemapChange()),!0),this.watch("map.ground",(()=>this._onGroundChange()),!0),this.allLayerExtensions=new ie(this),this.map?.basemap&&this._onBasemapChange()}getLayerExtensionsForView(e=this.viewMode){return(("map"===e?this._map:this._scene)?.layers.toArray()??[]).map((e=>this._layerExtensions._forLayer(e))).filter((e=>e instanceof X||!e.dynamicallyAddedLayer))}getAllFeatureSources(e=()=>!0){const t=[],i=a=>{a.hasFeatures&&t.push(a);for(const t of a.sublayerExtensions.initializedItems.filter(e).toArray())s(t);if(C(a))for(const t of a.layerExtensions.initializedItems.filter(e).toArray())i(t)},s=i=>{t.push(i);for(const t of i.sublayerExtensions.initializedItems.filter(e).toArray())s(t)};for(const t of this.layerExtensions.initializedItems.filter(e).toArray())i(t);for(const i of this.tableExtensions.initializedItems.filter(e).toArray())t.push(i);if(this.basemapExtension){for(const t of this.basemapExtension.baseLayerExtensions.initializedItems.filter(e).toArray())i(t);for(const t of this.basemapExtension.referenceLayerExtensions.initializedItems.filter(e).toArray())i(t)}return t}isSupportedViewMode(e){return e===this.viewMode||!(!this.webMap&&!this.webScene)&&("scene"===e?!!this.webScene:!!this.webMap)}async switchViewMode(e){if(A("viewMode",e).isNotMissing().satisfies((e=>this.isSupportedViewMode(e)),"Unsupported view mode."),this.viewMode===e)return;let t;"scene"===e?(await this._createScene(),t=this._scene):(await this._createMap(),t=this._map),t.basemap=this.map?.basemap,await this.switchMap(t),this.notifyChange("viewMode"),this.notifyChange("title")}async switchMap(e){if(A("newMap",e).isNotMissing(),e===this.map)return;if(!this.map)return void this._setMap(e);this.isSwitchingMap=!0,this.isInitialized&&await oe(e);const t=new Map(this.map.layers.map((e=>[e,this.layerExtensions.forLayer(e)]))),i=new Map(this.map.tables.map((e=>[e,this.tableExtensions.forTable(e)]))),{basemapExtension:s}=this;this._setMap(e),this._updateBookmarks();const a=[];for(const e of this.map.layers.toArray()){const i=[...V(t.entries(),(([t])=>j(t,e)))];if(1===i.length){const[t]=i;a.push((async()=>{const i=t[1];await i._switchLayer(e),this._layerExtensions._register(i)})())}else{const t=this._layerExtensions._forLayer(e);t&&t.layer!==e&&a.push(t._switchLayer(e))}}for(const e of this.map.tables.toArray()){const t=[...V(i.entries(),(([t])=>j(t,e)))];if(1===t.length){const[i]=t;a.push((async()=>{const t=i[1];await t._switchTable(e),this.tableExtensions.add(t)})())}else{const t=this.tableExtensions.forTable(e);t&&t.table!==e&&a.push(t._switchTable(e))}}this.map.basemap&&s&&v(this.map.basemap,s.basemap)&&a.push((async()=>{await s._switchBasemap(this.map.basemap),this.basemapExtension=s})()),await Promise.all(a),this.isInitialized&&await this._initializeChildren(),this.isSwitchingMap=!1}async setWebMap(e){if(!e&&this.webMap&&!this.webScene)throw new a("Cannot unset both webMap and webScene.");this._webMap=e,this._map=void 0,this._createMapPromise=void 0,this._webMapItem=se(e),await T(this._webMapItem),"map"===this.viewMode&&(e?(this._basemapOptions.isExplicitlyModified||this._basemapOptions.removeAllInternal(),await this._createMap(),await this.switchMap(this._map),await this._createStandardBasemapOptions(),this._basemapOptions.reorderInternal(this.basemapExtension,0),this._initialBasemapExtension=this.basemapExtension):await this.switchViewMode("scene")),this.notifyChange("webMap"),this.notifyChange("initialViewMode"),this.notifyChange("title")}async setWebScene(e){if(!e&&this.webScene&&!this.webMap)throw new a("Cannot unset both webMap and webScene.");this._webScene=e,this._scene=void 0,this._createScenePromise=void 0,this._webSceneItem=se(e),await T(this._webSceneItem),"scene"===this.viewMode&&(e?(this._basemapOptions.isExplicitlyModified||this._basemapOptions.removeAllInternal(),await this._createScene(),await this.switchMap(this._scene),await this._createStandardBasemapOptions(),this._basemapOptions.reorderInternal(this.basemapExtension,0),this._initialBasemapExtension=this.basemapExtension):await this.switchViewMode("map")),this.notifyChange("webScene"),this.notifyChange("initialViewMode"),this.notifyChange("title")}getDefaults(){const e=super.getDefaults();return e.initialViewMode="map",e}async _createScene(){if(!this._scene&&this.webScene)return this._createScenePromise=this._createScenePromise??(async()=>{const e=(await import("@arcgis/core/WebScene")).default;ae(this.webScene)?(this._webSceneItem.type="Web Scene",this._scene=new e({portalItem:this._webSceneItem})):this._scene=e.fromJSON(this.webScene)})()}async _createMap(){if(!this._map&&this.webMap)return this._createMapPromise=this._createMapPromise??(async()=>{const e=(await import("@arcgis/core/WebMap")).default;ae(this.webMap)?(this._webMapItem.type="Web Map",this._map=new e({portalItem:this._webMapItem})):this._map=e.fromJSON(this.webMap)})()}_getSerializableProperties(){return{...super._getSerializableProperties(),layerExtensions:{serializeModes:["initial","project"],deserialize:e=>{if(this.map&&e){const t="map"===this.viewMode,i=(t?this._scene:this._map)?.layers.toArray()??[],s=e.filter((e=>!i.includes(e.layer)&&!i.some((t=>e.layer&&j(t,e.layer)))));Y(this.layerExtensions,s)}},serialize:e=>{if(this._deferredProperties?.layerExtensions)return this._deferredProperties.layerExtensions;{const t="map"===this.viewMode,i=(t?this._map:this._scene)?.layers.toArray();let s=(t?this._scene:this._map)?.layers.toArray()??[];return s=s.filter((e=>!i.find((t=>j(t,e))))),this.layerExtensions.concat(s.map((e=>this._layerExtensions._forLayer(e)))).filter((t=>!(t instanceof X||"initial"===e)||!t.dynamicallyAddedLayer)).toArray()}}},tableExtensions:{serializeModes:["initial","project"],deserialize:e=>{this.map?P(this.tableExtensions,e,{onNew:(e,t)=>{this.tableExtensions.add(m(e)?e:d.create(e),t)},onMatch:(e,t,i,s)=>{m(t)||e.assignProperties(t),i!==s&&this.tableExtensions.reorder(e,s)},equals:(e,t)=>m(t)?t===e:!!d._matchesRef(e,t.table)||e.id===t.id}):this._deferredProperties={...this._deferredProperties,tableExtensions:e}},serialize:()=>this._deferredProperties?.tableExtensions?this._deferredProperties?.tableExtensions:this.tableExtensions.toArray()},basemapExtension:{serializeModes:["project"],deserialize:e=>{if(this.map)if(e)if(n(e))this.basemapExtension=e;else{if(this.basemapExtension)return this.basemapExtension.assignPropertiesAsync(e);this.basemapExtension=G.create(e)}else this.basemapExtension=void 0;else this._deferredProperties={...this._deferredProperties,basemapExtension:e}},serialize:()=>this._deferredProperties?.basemapExtension?this._deferredProperties?.basemapExtension:this.basemapExtension},basemapOptions:{serializeModes:["initial"],deserialize:e=>{this._skipBasemapOptions?this._skipBasemapOptions=!1:(P(this.basemapOptions,e,{onNew:(e,t)=>{this.basemapOptions.add(n(e)?e:G.create(e),t)},onMatch:(e,t,i,s)=>{n(t)||e.assignProperties(t),i!==s&&this.basemapOptions.reorder(e,s)},onMissing:e=>{this.basemapOptions.remove(e)},equals:(e,t)=>{if(n(t))return t===e;if(e.id&&t.id)return e.id===t.id;{const i=e.toJSON();return v(i.basemap,t.basemap||t.baseMap)}}}),this.basemapExtension&&this._ensureIsBasemapOption(this.basemapExtension),this.isInitialized&&J(this.basemapOptions.toArray(),(e=>e._createBackingBasemap())))},serialize:()=>this._deferredProperties?.basemapOptions?this._deferredProperties?.basemapOptions:this.basemapOptions.toArray()},groundExtension:{serializeModes:["initial"],deserialize:e=>{if(this.map){if(!r(e))return this.groundExtension.assignPropertiesAsync(e);this.groundExtension=e}else this._deferredProperties={...this._deferredProperties,groundExtension:e}},serialize:()=>this._deferredProperties?.groundExtension?this._deferredProperties?.groundExtension:this.groundExtension},bookmarks:{serialize:()=>this.bookmarks.map((e=>e.toJSON())).toArray(),deserialize:e=>{this.bookmarks.addMany(e.map((e=>o(e)?e:new D(e))))}},webMap:{serializeModes:["initial"],deserialize:!1},webScene:{serializeModes:["initial"],deserialize:!1},initialLayerPreset:"initial",initialViewMode:{serializeModes:["initial","project"],serialize:e=>"project"===e?this.viewMode:"scene"!==this.initialViewMode||!this.webScene&&this.webMap?"map":"scene",deserialize:e=>{this.viewMode!==e&&(this._deserializedViewMode=e),this._initialViewMode=e},isDefault:(e,t)=>"project"!==t&&"map"===e},formatSettings:"initial",constraints:"initial",title:"initial",onClick:"initial",onHover:"initial",onHoverEnd:"initial",onInitialized:"initial",onViewpointChanged:"initial",contextMenu:{serializeModes:["initial"],deserialize:e=>{e?h(e)?this.contextMenu=e:this.contextMenu?this.contextMenu.assignProperties(e):this.contextMenu=w.create(e):this.contextMenu=void 0}},map:{serializeModes:["project"],serialize:()=>{c.lookup=new WeakMap;const e=this.layerExtensions.toArray().filter((e=>e.layer)).map((e=>e._getProjectWebmapJSON())),t=this.tableExtensions.toArray().filter((e=>e.table)).map((e=>({id:e.table.id,title:e.table.title})));return c.lookup=void 0,e.length>0||t.length>0?{operationalLayers:e,tables:t}:{}},deserialize:e=>{if(!this.map)throw new i("Cannot specify JSON object for the 'map' property. It must be an ArcGIS API Map instance. To specify JSON, use 'webMap' or 'webScene' instead.");if(N(e)||R(e)||W(e)){if(e!==this.map)throw new i("properties.map","Property 'map' is read-only.")}else this._deserializedMapPromise=(async()=>{this._deserializedViewMode&&this.webMap&&this.webScene&&(this._deserializedViewModePromise=this.switchViewMode(this._deserializedViewMode),await this._deserializedViewModePromise,this._deserializedViewMode=void 0,this._deserializedViewModePromise=void 0),await this._applyMapProperties(e,this.map),this._deserializedMapPromise=void 0})()}},requestHelper:{serialize:!1}}}async _applyMapProperties(e,t,i){await J(this.basemapOptions.toArray(),(e=>e._createBackingBasemap()));let s=e;const a=this.basemapOptions.find((e=>v(e.basemap,s.baseMap)));a&&(t.basemap=a.basemap,s={...s,baseMap:{...s.baseMap,title:t.basemap.title}}),W(t)?await _(s,t,i):await b(s,t,i)}_createFormatSettings(){return new f}_createLayerExtensionCollection(){return new K(this)}_createTableExtensionCollection(){return new te(this)}async _onInitialize(){await super._onInitialize();const{basemapOptions:e,basemapExtension:t,webMap:i,webScene:s,...a}=this._deferredProperties??{};if(this.map||("scene"===this.initialViewMode?(await this._createScene(),this._setMap(this._scene)):(await this._createMap(),this._setMap(this._map))),this._webMapItem||this._webSceneItem?(await Promise.all([oe(this.map),T(this._webMapItem),T(this._webSceneItem)]),ne(this._webMapItem,"webMap","Web Map"),ne(this._webSceneItem,"webScene","Web Scene")):await oe(this.map),t&&(!n(t)&&t.basemap?this.basemapExtension=G.create(t):await this.assignPropertiesAsync({basemapExtension:t}),await this.basemapExtension._createBackingBasemap()),e){const t=e.find((e=>n(e)&&v(this.map.basemap,e.toJSON().basemap)));if(t){const e=t.toJSON().basemap?.id??t.basemap?.id,i=t.toJSON().basemap?.title;await t._switchBasemap(this.map.basemap),this.basemapExtension=t,e&&(this.map.basemap.id=e),i&&(this.map.basemap.title=i)}await this.assignPropertiesAsync({basemapOptions:e})}await this.assignPropertiesAsync(a),this._deferredProperties=void 0,this._initialBasemapExtension=this.basemapExtension,this._updateBookmarks();for(const e of this.layerExtensions.toArray())await e._createBackingLayer();await Promise.all(this.tableExtensions.map((e=>e._createBackingTable())).toArray())}async _postInitialize(){await super._postInitialize(),await this._createStandardBasemapOptions(),await J(this.basemapOptions.toArray(),(e=>e._createBackingBasemap())),this.initialLayerPreset&&await this.initialLayerPreset.applyTo(this)}*_initializableChildCollections(){yield*super._initializableChildCollections();const e=new t(this.layerExtensions.filter((e=>!!e.layer)));e.remove=e=>this.layerExtensions.remove(e);const i=new t(this.tableExtensions.filter((e=>!!e.table)));if(i.remove=e=>this.tableExtensions.remove(e),yield e,yield i,this.basemapExtension){const e=new t;e.add(this.basemapExtension),yield e}const s=new t;s.add(this.groundExtension),yield s}_initMapFromProperties(e){const t=e.map;N(t)||R(t)||W(t)?this._setMap(t):"scene"===this.initialViewMode?e.webScene&&!ae(e.webScene)&&(this._deferredProperties={webScene:e.webScene,...this._deferredProperties}):e.webMap&&!ae(e.webMap)&&(this._deferredProperties={webMap:e.webMap,...this._deferredProperties})}_setMap(e){W(e)?this._scene=e:this._map=e,this._currentMap=e,this.basemapExtension?.basemap&&!e.basemap&&(e.basemap=this.basemapExtension.basemap),this.groundExtension?.ground&&!e.ground&&(e.ground=this.groundExtension.ground),this.notifyChange("map")}_onBasemapChange(){if(this._basemapExtension){if(this.basemapExtension.basemap==this.map.basemap)return;this._basemapExtension._setMapExtension(void 0)}if(this.map.basemap){let e=this.basemapOptions.find((e=>this.map.basemap===e.basemap));if(!e){const t=this.basemapOptions.find((e=>v(e.basemap,this.map.basemap)));t?(e=t,e._switchBasemap(this.map.basemap)):(e=G.create({basemap:this.map.basemap}),this._basemapOptions.addInternal(e,0))}e.mapExtension!==this&&e._setMapExtension(this),this._basemapExtension=e}else this._basemapExtension=void 0;this.notifyChange("basemapExtension")}_onGroundChange(){if(this._groundExtension){if(this.map.ground&&this.groundExtension.ground===this.map.ground)return void(this._groundExtensions.has(this.map.ground)||this._groundExtensions.set(this.map.ground,this.groundExtension));this.groundExtension._setMapExtension(void 0)}this.map.ground&&!this._groundExtensions.has(this.map.ground)&&this._groundExtensions.set(this.map.ground,U.create({ground:this.map.ground}));const e=this._groundExtensions.get(this.map.ground);e&&e.mapExtension!==this&&e._setMapExtension(this),this._groundExtension=e,this.notifyChange("groundExtension")}async _createStandardBasemapOptions(){const e=this._spatialReference;!this._basemapOptions.isExplicitlyModified&&e?.isWebMercator&&await J([g.SATELLITE,g.HYBRID_VECTOR,g.STREETS_VECTOR,g.TOPO_VECTOR,g.STREETS_NAVIGATION_VECTOR,g.STREETS_NIGHT_VECTOR,g.TERRAIN_VECTOR,g.DARK_GRAY_VECTOR,g.GRAY_VECTOR,g.OCEANS_VECTOR,g.OPEN_STREET_MAP_VECTOR],(async e=>{const t=await S(e);v(this.map.basemap,t)?this._basemapOptions.addInternal(this.basemapExtension):this._basemapOptions.addInternal(G.create({basemap:t}),void 0,!1)}))}_ensureIsBasemapOption(e){const t=this.basemapOptions.findIndex((t=>t.basemap===e.basemap));t>=0?this._basemapOptions.getItemAt(t)!==e&&(this._basemapOptions.removeAtInternal(t),this._basemapOptions.addInternal(e,t)):this._basemapOptions.addInternal(e,0)}_updateBookmarks(){this.bookmarks.removeMany(this.bookmarks.filter((e=>"map"===e.source))),R(this.map)&&this.map.bookmarks?.length>0?this.map.bookmarks.forEach((e=>{this.bookmarks.add(new D({source:"map",title:e.name,viewpoint:e.viewpoint}))})):W(this.map)&&this.map.presentation?.slides?.length>0&&this.map.presentation.slides.forEach((e=>{const t={source:"map",title:e.title.text,viewpoint:e.viewpoint},i=new D(t);this.bookmarks.add(i)}))}};Z=e([M],Z);export{Z as MapExtension};class ee extends x{isExplicitlyModified=!1;_mapExtension;constructor(e){super(new t),this._mapExtension=e}add(e,t){return super.add(e,t),this.isExplicitlyModified=!0,1===this.length&&this._mapExtension.map&&!this._mapExtension.basemapExtension&&(this._mapExtension.basemapExtension=e),this}addMany(e,t){return super.addMany(e,t),this.isExplicitlyModified=!0,this}addInternal(e,t,i=!0){const s=e=>{const t="-vector";return e?.endsWith(t)?e.substring(0,e.length-7):e};let a;if(e.basemap){const t=s(e.basemap.id);if(a=this.findIndex((e=>s(e.basemap?.id)===t)),O(e.basemap)&&a>=0){if(!i)return;super.removeAt(a)}}super.add(e,t??(a>=0?a:void 0))}removeAt(e){const t=super.removeAt(e);return t&&(this.isExplicitlyModified=!0,t===this._mapExtension.basemapExtension&&(e<this.length?this._mapExtension.basemapExtension=this.getItemAt(e):this.length?this._mapExtension.basemapExtension=this.getItemAt(e-1):this._mapExtension.basemapExtension=void 0)),t}removeAll(){return this._mapExtension.basemapExtension=void 0,super.removeAll()}removeAtInternal(e){return super.removeAt(e)}removeAllInternal(){for(;this.length;)this.removeAtInternal(this.length-1)}reorder(e,t){return super.reorder(e,t),this.isExplicitlyModified=!0,e}reorderInternal(e,t){return super.reorder(e,t)}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.basemap}}class te extends x{get _collection(){return this._tables.map((e=>this._forTable(e))).concat(Array.from(this._uninitializedTableExtensions))}get _tables(){return this._mapExtension.map?.tables??new I(new t)}_mapExtension;_tableExtensionMap=new WeakMap;_uninitializedTableExtensions=new Set;constructor(e){super(),this._mapExtension=e,F(this._mapExtension,"map.tables",(e=>{const t={added:(e.added||[]).map((e=>this._forTable(e))),moved:(e.moved||[]).map((e=>this._forTable(e))),removed:(e.removed||[]).map((e=>this._forTable(e))),target:this};this.emit("change",t)})),this._mapExtension.watch("map.tables.length",(()=>this.notifyChange("length")))}toJSON(){const e=[];return this.forEach((t=>{e.push(`item://${encodeURIComponent(l.TABLE_EXTENSION)}/${encodeURIComponent(t.id)}`)})),e}clone(){const e=new te(this._mapExtension);return e._tableExtensionMap=this._tableExtensionMap,e}findById(e){return A("id",e).isNotMissing(),this.find((t=>t.id===e))}findByTableId(e){return A("id",e).isNotMissing(),this.find((t=>t._tableId===e))}forTable(e){if(A("table",e).isNotMissing(),this._tables.includes(e))return this._forTable(e)}add(e,t){if(A("tableX",e).isNotMissing(),e.mapExtension&&e.mapExtension.tableExtensions.remove(e),e._setMapExtension(this._mapExtension),e.table){const i=this._tableExtensionMap.get(e.table);if(this._tableExtensionMap.set(e.table,e),i&&i!==e&&this._onRemoved(i),this._tables.includes(e.table))if(void 0===t){const t={added:[e],moved:[],removed:i?[i]:[],target:this};this.emit("change",t)}else this._tables.reorder(e.table,t);else this._tables.add(e.table,t)}else{this._uninitializedTableExtensions.add(e);const t={added:[e],moved:[],removed:[],target:this};this.emit("change",t)}return this._onAdded(e),this}removeAt(e){const t=this.getItemAt(e);if(void 0!==t){if(this._uninitializedTableExtensions.has(t)){this._uninitializedTableExtensions.delete(t);const e={added:[],moved:[],removed:[t],target:this};this.emit("change",e)}else this._tables.remove(t.table);return this._onRemoved(t),t}}reorder(e,t){if(e&&this._tables.includes(e.table))return this._tables.reorder(e.table,t),e}sort(e){return this._tables.sort(((t,i)=>e(this._forTable(t),this._forTable(i)))),this}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.table}_onAdded(e){}_onRemoved(e){e._setMapExtension(void 0)}_forTable(e){for(const e of this._uninitializedTableExtensions)e._resolveTable(),e.table&&(this._tableExtensionMap.set(e.table,e),this._uninitializedTableExtensions.delete(e));if(!this._tableExtensionMap.has(e)){const t=d.create({table:e});this._tableExtensionMap.set(e,t),t._setMapExtension(this._mapExtension),this._onAdded(t)}return this._tableExtensionMap.get(e)}}class ie extends y{get _collection(){let e=this._mapExtension.layerExtensions.flatten((e=>C(e)?e.layerExtensions:[]));return this._mapExtension.basemapExtension&&(e=e.concat(this._mapExtension.basemapExtension.baseLayerExtensions.toArray()).concat(this._mapExtension.basemapExtension.referenceLayerExtensions.toArray())),e=e.concat(this._mapExtension.groundExtension.layerExtensions.toArray()),e}_mapExtension;constructor(e){super(),this._mapExtension=e}findById(e){return A("id",e).isNotMissing(),this.find((t=>t.id===e))}findByLayerId(e){return A("id",e).isNotMissing(),this.find((t=>t._layerId===e))}forLayer(e){return A("layer",e).isNotMissing(),this.findByLayerId(e.id)}emit(e,i){if("change"===e){const s=new t;s.addMany(i.added);const a=s.flatten((e=>C(e)?e.layerExtensions:[])).toArray(),n=new t;n.addMany(i.removed);const o=n.flatten((e=>C(e)?e.layerExtensions:[])).toArray(),r=new t;r.addMany(i.moved);const p=r.flatten((e=>C(e)?e.layerExtensions:[])).toArray();super.emit(e,{added:a,removed:o,moved:p,target:this})}return super.emit(e,i)}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.layer}}function se(e){if(!(null==e||"object"==typeof e&&e?.baseMap))return H(e)}function ae(e){return"object"!=typeof e||e&&!e.baseMap}function ne(e,t,i){if(e?.type&&e.type!==i)throw new Error(`Invalid portal item type "${e.type}" for property ${t}.`)}async function oe(e){await T(e),e.basemap&&(await T(e.basemap),e.basemap.baseLayers.filter((e=>k(e))).map((e=>{const t=e;return t.activeLayer.imageFormat=t.activeLayer.imageFormat??(t.activeLayer.imageFormats?.length>0?t.activeLayer.imageFormats[0]:""),t.activeLayer.styleId=t.activeLayer.styleId??"",t})),e.basemap.id=z(e.basemap)??e.basemap.id)}
|
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@ export declare class ObservableSet<T> extends Observable implements Set<T> {
|
|
|
8
8
|
/**
|
|
9
9
|
* Used by Object.toString().
|
|
10
10
|
*/
|
|
11
|
-
readonly [Symbol.toStringTag]
|
|
11
|
+
readonly [Symbol.toStringTag] = "ObservableSet";
|
|
12
12
|
/**
|
|
13
13
|
* The number of elements in the set.
|
|
14
14
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Observable as e}from"../support/Observable.js";import{toJSON as t}from"./object.js";export class ObservableSet extends e{[Symbol.toStringTag];get size(){return this._originalSet.size}_originalSet;constructor(){super(),this._originalSet=new Set}add(e){return this.has(e)||(this.notifyChange("size"),this._originalSet.add(e),this.emit("change",{added:[e],removed:[],moved:[],target:this})),this}addMany(e){const t=[];for(const i of e)this.has(i)||(t.push(i),this._originalSet.add(i));return t.length&&(this.notifyChange("size"),this.emit("change",{added:t,removed:[],moved:[],target:this})),this}clear(){if(!this.size)return;this.notifyChange("size");const e=Array.from(this.values());this._originalSet.clear(),this.emit("change",{added:[],removed:e,moved:[],target:this})}delete(e){return!!this.has(e)&&(this.notifyChange("size"),this._originalSet.delete(e),this.emit("change",{added:[],removed:[e],moved:[],target:this}),!0)}deleteMany(e){const t=[];for(const i of e)this.has(i)&&(t.push(i),this._originalSet.delete(i));return t.length&&(this.notifyChange("size"),this.emit("change",{added:[],removed:t,moved:[],target:this})),!!t.length}forEach(e,t){this._originalSet.forEach(e,t)}has(e){return this._originalSet.has(e)}entries(){return this._originalSet.entries()}keys(){return this._originalSet.keys()}values(){return this._originalSet.values()}[Symbol.iterator](){return this._originalSet[Symbol.iterator]()}toJSON(){return t([...this.values()])}on(e,t){return super.on(e,t)}}
|
|
1
|
+
import{Observable as e}from"../support/Observable.js";import{toJSON as t}from"./object.js";export class ObservableSet extends e{[Symbol.toStringTag]="ObservableSet";get size(){return this._originalSet.size}_originalSet;constructor(){super(),this._originalSet=new Set}add(e){return this.has(e)||(this.notifyChange("size"),this._originalSet.add(e),this.emit("change",{added:[e],removed:[],moved:[],target:this})),this}addMany(e){const t=[];for(const i of e)this.has(i)||(t.push(i),this._originalSet.add(i));return t.length&&(this.notifyChange("size"),this.emit("change",{added:t,removed:[],moved:[],target:this})),this}clear(){if(!this.size)return;this.notifyChange("size");const e=Array.from(this.values());this._originalSet.clear(),this.emit("change",{added:[],removed:e,moved:[],target:this})}delete(e){return!!this.has(e)&&(this.notifyChange("size"),this._originalSet.delete(e),this.emit("change",{added:[],removed:[e],moved:[],target:this}),!0)}deleteMany(e){const t=[];for(const i of e)this.has(i)&&(t.push(i),this._originalSet.delete(i));return t.length&&(this.notifyChange("size"),this.emit("change",{added:[],removed:t,moved:[],target:this})),!!t.length}forEach(e,t){this._originalSet.forEach(e,t)}has(e){return this._originalSet.has(e)}entries(){return this._originalSet.entries()}keys(){return this._originalSet.keys()}values(){return this._originalSet.values()}[Symbol.iterator](){return this._originalSet[Symbol.iterator]()}toJSON(){return t([...this.values()])}on(e,t){return super.on(e,t)}}
|
|
@@ -7,7 +7,7 @@ export declare class ObservableWeakSet<T extends object> extends Observable impl
|
|
|
7
7
|
/**
|
|
8
8
|
* Used by Object.toString().
|
|
9
9
|
*/
|
|
10
|
-
readonly [Symbol.toStringTag]
|
|
10
|
+
readonly [Symbol.toStringTag] = "ObservableWeakSet";
|
|
11
11
|
/**
|
|
12
12
|
* The underlying set that this class is wrapping.
|
|
13
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Observable as e}from"../support/Observable.js";export class ObservableWeakSet extends e{[Symbol.toStringTag];_originalSet;constructor(){super(),this._originalSet=new WeakSet}add(e){return this.has(e)||(this._originalSet.add(e),this.emit("change",{added:[e],removed:[],moved:[],target:this})),this}addMany(e){const t=[];for(const s of e)this.has(s)||(t.push(s),this._originalSet.add(s));return t.length&&this.emit("change",{added:t,removed:[],moved:[],target:this}),this}delete(e){return!!this.has(e)&&(this._originalSet.delete(e),this.emit("change",{added:[],removed:[e],moved:[],target:this}),!0)}deleteMany(e){const t=[];for(const s of e)this.has(s)&&(t.push(s),this._originalSet.delete(s));return t.length&&this.emit("change",{added:[],removed:t,moved:[],target:this}),!!t.length}has(e){return this._originalSet.has(e)}on(e,t){return super.on("change",t)}}
|
|
1
|
+
import{Observable as e}from"../support/Observable.js";export class ObservableWeakSet extends e{[Symbol.toStringTag]="ObservableWeakSet";_originalSet;constructor(){super(),this._originalSet=new WeakSet}add(e){return this.has(e)||(this._originalSet.add(e),this.emit("change",{added:[e],removed:[],moved:[],target:this})),this}addMany(e){const t=[];for(const s of e)this.has(s)||(t.push(s),this._originalSet.add(s));return t.length&&this.emit("change",{added:t,removed:[],moved:[],target:this}),this}delete(e){return!!this.has(e)&&(this._originalSet.delete(e),this.emit("change",{added:[],removed:[e],moved:[],target:this}),!0)}deleteMany(e){const t=[];for(const s of e)this.has(s)&&(t.push(s),this._originalSet.delete(s));return t.length&&this.emit("change",{added:[],removed:t,moved:[],target:this}),!!t.length}has(e){return this._originalSet.has(e)}on(e,t){return super.on("change",t)}}
|
package/utilities/_gml.d.ts
CHANGED
|
@@ -29,4 +29,4 @@ export interface GmlOptions {
|
|
|
29
29
|
* @param geometry The geometry to be converted.
|
|
30
30
|
* @param options Options to be used during the conversion.
|
|
31
31
|
*/
|
|
32
|
-
export declare function esriToGml(geometry: Geometry, options
|
|
32
|
+
export declare function esriToGml(geometry: Geometry, options: GmlOptions): Element;
|
package/utilities/_gml.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"@arcgis/core/geometry/Extent";import n from"@arcgis/core/geometry/Multipoint";import t from"@arcgis/core/geometry/Point";import o from"@arcgis/core/geometry/Polygon";import r from"@arcgis/core/geometry/Polyline";import s from"@arcgis/core/geometry/SpatialReference";import{ArgumentError as i}from"../ArgumentError.js";import{getGmlNS as a,ogcSrsToEsriSr as c,webMercatorAliases as m}from"./_ogc.js";import{checkArg as l}from"./checkArg.js";import{isExtent as g,isPolygon as f}from"./esri.js";const
|
|
1
|
+
import e from"@arcgis/core/geometry/Extent";import n from"@arcgis/core/geometry/Multipoint";import t from"@arcgis/core/geometry/Point";import o from"@arcgis/core/geometry/Polygon";import r from"@arcgis/core/geometry/Polyline";import s from"@arcgis/core/geometry/SpatialReference";import{ArgumentError as i}from"../ArgumentError.js";import{getGmlNS as a,ogcSrsToEsriSr as c,webMercatorAliases as m}from"./_ogc.js";import{checkArg as l}from"./checkArg.js";import{isExtent as g,isPolygon as f}from"./esri.js";const u="Unable to convert the GML geometry into an Esri geometry.";export function gmlToEsri(s){switch(l("geometry",s).isNotMissing(),s.localName){case"Point":return function(e){const n=h(e),o=p(e);if(o&&o.length>1)return new t({x:o[0],y:o[1],spatialReference:n});throw new i(u)}(s);case"MultiPoint":return function(e){const t=new Array,o=h(e);if(e.childElementCount>0){const n=Array.from(e.getElementsByTagNameNS(e.namespaceURI,"pointMember")),o=Array.from(e.getElementsByTagNameNS(e.namespaceURI,"pointMembers")),r=n.concat(...o);for(const e of r){const n=Array.from(e.getElementsByTagNameNS(e.namespaceURI,"Point"));for(const e of n)t.push(p(e))}}if(t&&t.length>0)return new n({points:t,spatialReference:o});throw new i(u)}(s);case"LineString":case"Curve":case"MultiLineString":case"MultiCurve":return function(e){let n;const t=h(e);"LineString"===e.localName?n=function(e){const n=y(e);return[n]}(e):"Curve"===e.localName&&e.childElementCount>0?n=function(e){const n=new Array,t=e.getElementsByTagNameNS(e.namespaceURI,"segments");if(t.length>0){const o=Array.from(t[0].getElementsByTagNameNS(e.namespaceURI,"LineStringSegment"));for(const e of o){const t=y(e);n.push(t)}}return n}(e):"MultiLineString"===e.localName&&e.childElementCount>0?n=function(e){const n=new Array,t=Array.from(e.getElementsByTagNameNS(e.namespaceURI,"lineStringMember"));for(const e of t){const t=Array.from(e.getElementsByTagNameNS(e.namespaceURI,"LineString"));for(const e of t)n.push(y(e))}return n}(e):"MultiCurve"===e.localName&&e.childElementCount>0&&(n=function(e){const n=new Array,t=Array.from(e.getElementsByTagNameNS(e.namespaceURI,"curveMember")),o=Array.from(e.getElementsByTagNameNS(e.namespaceURI,"curveMembers")),r=t.concat(...o);for(const e of r){const t=Array.from(e.getElementsByTagNameNS(e.namespaceURI,"LineString"));for(const e of t)n.push(y(e))}return n}(e));if(n&&n.length>0)return new r({paths:n,spatialReference:t});throw new i(u)}(s);case"Polygon":case"MultiPolygon":case"MultiSurface":return function(e){let n;const t=h(e);"Polygon"===e.localName?n=N(e):"MultiPolygon"===e.localName?n=function(e){l("geometry",e).isNotMissing();const n=new Array,t=Array.from(e.getElementsByTagNameNS(e.namespaceURI,"polygonMember"));for(const e of t){const t=Array.from(e.getElementsByTagNameNS(e.namespaceURI,"Polygon"));for(const e of t){const t=N(e);n.push(...t)}}return n}(e):"MultiSurface"===e.localName&&(n=function(e){l("geometry",e).isNotMissing();const n=new Array,t=Array.from(e.getElementsByTagNameNS(e.namespaceURI,"surfaceMember"));for(const e of t){const t=Array.from(e.getElementsByTagNameNS(e.namespaceURI,"Polygon"));for(const e of t){const t=N(e);n.push(...t)}}return n}(e));if(n&&n.length>0)return new o({rings:n,spatialReference:t});throw new i(u)}(s);case"Box":case"Envelope":return function(n){const t=h(n),o=function(e){if(l("geometry",e).isNotMissing(),"Envelope"!==e.localName&&"Box"!==e.localName)throw new i(u);const n=function(e){const n=e.getElementsByTagNameNS(e.namespaceURI,"coordinates");if(0===n.length)return;const t=n[0],o=t.getAttribute("cs")??",",r=t.getAttribute("ts")??" ",{data:s}=t.childNodes[0];return s.split(r).map((e=>B(e,o)))}(e);if(n)return n;const t=e.getElementsByTagNameNS(e.namespaceURI,"pos");if(2===t.length&&t[0].childNodes[0]?.nodeType===Node.TEXT_NODE){const e=t[0].childNodes[0].data,n=t[0].childNodes[0].data;return[B(e),B(n)]}const o=e.getElementsByTagNameNS(e.namespaceURI,"lowerCorner"),r=e.getElementsByTagNameNS(e.namespaceURI,"upperCorner");if(o.length>0&&o[0].childNodes[0]?.nodeType===Node.TEXT_NODE&&r.length>0&&r[0].childNodes[0]?.nodeType===Node.TEXT_NODE){const e=o[0].childNodes[0].data,n=r[0].childNodes[0].data;return[B(e),B(n)]}throw new i(u)}(n);if(2===o.length){const[n,r]=o;return new e({spatialReference:t,xmin:n[0],xmax:r[0],ymin:n[1],ymax:r[1]})}throw new i(u)}(s);default:throw new i("Unrecognized geometry type.")}}export function esriToGml(e,n){switch(l("geometry",e).isNotMissing(),l("geometry type",e.type).isNotMissing(),l("gmlVersion",n.gmlVersion).isNotMissing(),e.type){case"point":return function(e,n){const t=a(n.gmlVersion),o=T(t,"Point","gml"),r=w(e,n),s=n.hasOwnProperty("srsDimension")?n.srsDimension:void 0;let i,c;E(o,r,s),"2.0"===n.gmlVersion||"3.0"===n.gmlVersion?(i=T(t,"coordinates","gml"),c=R(", ",e)):(i=T(t,"pos","gml"),c=R(" ",e));o.appendChild(i);const m=S(c);return i.appendChild(m),o}(e,n);case"polyline":return function(e,n){const t=a(n.gmlVersion),o=T(t,"LineString","gml"),r=w(e,n),s=n.hasOwnProperty("srsDimension")?n.srsDimension:void 0;let i,c;E(o,r,s),"2.0"===n.gmlVersion||"3.0"===n.gmlVersion?(i=T(t,"coordinates","gml"),c=A(", ",e)):(i=T(t,"posList","gml"),c=A(" ",e));o.appendChild(i);const m=S(c);return i.appendChild(m),o}(e,n);case"polygon":case"extent":return function(e,n){const t=a(n.gmlVersion),o=T(t,"Polygon","gml"),r=w(e,n),s=n.hasOwnProperty("srsDimension")?n.srsDimension:void 0;E(o,r,s);const i="2.0"===n.gmlVersion?T(t,"outerBoundaryIs","gml"):T(t,"exterior","gml");o.appendChild(i);const c=T(t,"LinearRing","gml");let m,l;i.appendChild(c),"2.0"===n.gmlVersion||"3.0"===n.gmlVersion?(m=T(t,"coordinates","gml"),l=M(", ",e)):(m=T(t,"posList","gml"),l=M(" ",e));c.appendChild(m);const g=S(l);return m.appendChild(g),o}(e,n);default:throw new i(`Unrecognized geometry type: ${e.type}. Must be one of point, polyline or polygon.`)}}function p(e){if(l("geometry",e).isNotMissing(),"Point"!==e.localName)throw new i(u);const n=e.getElementsByTagNameNS(e.namespaceURI,"coordinates"),t=e.getElementsByTagNameNS(e.namespaceURI,"pos");if(n.length>0&&n[0].childNodes[0]?.nodeType===Node.TEXT_NODE){return B(n[0].childNodes[0].data)}if(t.length>0&&t[0].childNodes[0]?.nodeType===Node.TEXT_NODE){return B(t[0].childNodes[0].data)}throw new i(u)}function N(e){l("geometry",e).isNotMissing();const n=new Array,t=Array.from(e.getElementsByTagNameNS(e.namespaceURI,"outerBoundaryIs")),o=Array.from(e.getElementsByTagNameNS(e.namespaceURI,"innerBoundaryIs")),r=Array.from(e.getElementsByTagNameNS(e.namespaceURI,"exterior")),s=Array.from(e.getElementsByTagNameNS(e.namespaceURI,"interior")),i=t.concat(...o).concat(...r).concat(...s);for(const e of i){const t=Array.from(e.getElementsByTagNameNS(e.namespaceURI,"LinearRing"));for(const e of t)n.push(y(e))}return n}function y(e){if(l("geometry",e).isNotMissing(),"LineString"!==e.localName&&"LinearRing"!==e.localName&&"LineStringSegment"!==e.localName)throw new i(u);const n=e.getElementsByTagNameNS(e.namespaceURI,"coordinates"),t=e.getElementsByTagNameNS(e.namespaceURI,"posList");if(n.length>0&&n[0].childNodes[0]?.nodeType===Node.TEXT_NODE){return d(n[0].childNodes[0].data)}if(t.length>0&&t[0].childNodes[0]?.nodeType===Node.TEXT_NODE){return d(t[0].childNodes[0].data)}throw new i(u)}function d(e){const n=e.replace(/,/g," ").split(" ").filter((e=>!!e)).map(Number),t=new Array;for(let e=0;e<n.length;e+=2){if(void 0===n[e+1])throw new i(u);t.push([n[e],n[e+1]])}if(t.length>0)return t;throw new i(u)}function h(e){return l("geometry",e).isNotMissing(),e.hasAttribute("srsName")?c(e.getAttribute("srsName")):s.WebMercator}function w(e,n){if(n.hasOwnProperty("srsName"))return n.srsName;if(void 0!==e.spatialReference.wkid&&null!==e.spatialReference.wkid){if(e.spatialReference.wkid<32767)return`EPSG:${e.spatialReference.wkid}`;if(m.includes(e.spatialReference.wkid))return"EPSG:3857"}throw new i("Unable to convert Esri WKT spatial reference to an OGC spatial reference")}function E(e,n,t){if(null!=n&&(e.setAttribute("srsName",n),null!=t)){const n=t<1?2:t;e.setAttribute("srsDimension",n.toString())}}function T(e,n,t){l("namespace",e).isNotMissing(),l("name",n).isNotMissing();return document.implementation.createDocument(null,"temp",void 0).createElementNS(e,t?`${t}:${n}`:n)}function S(e){return document.implementation.createDocument(null,"temp",void 0).createTextNode(e)}function R(e,n){const t=n;return" "===e?`${t.x} ${t.y}`:`${t.x}, ${t.y}`}function A(e,n){return n.paths[0].map((n=>n.join(e))).join(" ")}function M(e,n){let t;if(f(n))t=n.rings[0];else if(g(n)){const{xmin:e,xmax:o,ymin:r,ymax:s}=n;t=[[e,s],[o,s],[o,r],[e,r],[e,s]]}return t.map((n=>n.join(e))).join(" ")}function B(e,n=" "){const t=e.replace(/,/g,n).split(n).filter((e=>e)).map(Number);if(2===t.length)return[t[0],t[1]];throw new i(u)}
|
package/utilities/_layers.d.ts
CHANGED
|
@@ -48,7 +48,7 @@ import type { MapNotesSublayer, SublayerLike } from "../support/esri.js";
|
|
|
48
48
|
*
|
|
49
49
|
* @param layer The layer input.
|
|
50
50
|
*/
|
|
51
|
-
export declare function getLayerUrl(layer: Layer | LayerJson | LayerProperties): string;
|
|
51
|
+
export declare function getLayerUrl(layer: Layer | LayerJson | LayerProperties): string | undefined;
|
|
52
52
|
/**
|
|
53
53
|
* Determines whether two layer objects represent the equivalent layer.
|
|
54
54
|
*
|
|
@@ -58,7 +58,7 @@ export declare function getLayerUrl(layer: Layer | LayerJson | LayerProperties):
|
|
|
58
58
|
* @param layer1Input The first layer to compare.
|
|
59
59
|
* @param layer2Input The second layer to compare against.
|
|
60
60
|
*/
|
|
61
|
-
export declare function layersAreEquivalent(layer1Input: Layer | LayerJson | LayerProperties, layer2Input: Layer | LayerJson | LayerProperties): boolean;
|
|
61
|
+
export declare function layersAreEquivalent(layer1Input: Layer | LayerJson | LayerProperties | undefined, layer2Input: Layer | LayerJson | LayerProperties | undefined): boolean;
|
|
62
62
|
/**
|
|
63
63
|
* Gets an equivalency type for two layer objects.
|
|
64
64
|
*
|
|
@@ -67,12 +67,14 @@ export declare function layersAreEquivalent(layer1Input: Layer | LayerJson | Lay
|
|
|
67
67
|
*
|
|
68
68
|
* Matching layers are considered a loose match by: layer url, layer title.
|
|
69
69
|
*
|
|
70
|
+
* If either layer is undefined, "none" is returned.
|
|
71
|
+
*
|
|
70
72
|
* @param layer1Input The first layer to compare.
|
|
71
73
|
* @param layer2Input The second layer to compare against.
|
|
72
74
|
* @returns The type of equivalency for the two layers. "none" = not a match.
|
|
73
75
|
* "solid" = a strong match. "loose" = a fuzzy match.
|
|
74
76
|
*/
|
|
75
|
-
export declare function getEquivalencyTypeForLayers(layer1Input: Layer | LayerJson | LayerProperties, layer2Input: Layer | LayerJson | LayerProperties): "none" | "solid" | "loose";
|
|
77
|
+
export declare function getEquivalencyTypeForLayers(layer1Input: Layer | LayerJson | LayerProperties | undefined, layer2Input: Layer | LayerJson | LayerProperties | undefined): "none" | "solid" | "loose";
|
|
76
78
|
/**
|
|
77
79
|
* Determines whether two basemap objects represent equivalent basemaps. Two
|
|
78
80
|
* basemaps are considered equivalent if they have the same layers.
|
package/utilities/_layers.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getLayerJsonType as e}from"../json/LayerJson.js";import{WellKnownBasemap as r}from"../support/esri.js";import{isBasemap as s}from"./mapping.js";function a(e){if(e?.$ref){const r=e;return"string"==typeof r.$ref?{title:r.$ref,id:r.$ref,...e}:{...e,...r.$ref}}return e}export function getLayerUrl(r){if(!r)return;if(r.$ref?.url)return r.$ref?.url;let s;switch(isLayer(r)?e(r):r.layerType){case"ArcGISFeatureLayer":case"SubtypeGroupLayer":isRouteLayer(r)||(s=isLayer(r)&&r.url?`${r.url}/${r.layerId}`:r.url);break;case"ArcGISSceneServiceLayer":case"BuildingSceneLayer":case"PointCloudLayer":s=isLayer(r)&&r.url?`${r.url}/layers/${r.layerId}`:r.url;break;case"VectorTileLayer":s=r.styleUrl??r.url;break;case"WebTiledLayer":s=r.wmtsInfo||isWMTSLayer(r)?r.wmtsInfo?.url??r.url:r.templateUrl??r.urlTemplate;break;default:s=r.url}return s??void 0}export function layersAreEquivalent(e,r){return"none"!==getEquivalencyTypeForLayers(e,r)}export function getEquivalencyTypeForLayers(r,s){if(r===s)return"solid";if(!r||!s)return"none";const t=isLayer(r)?r:a(r),i=isLayer(s)?s:a(s),n=isLayer(t)?e(t):t.layerType;if(n!==(isLayer(i)?e(i):i.layerType))return"none";if("OpenStreetMap"===(o=n)||"BingMapsAerial"===o||"BingMapsRoad"===o||"BingMapsHybrid"===o)return"solid";var o;if(t.id===i.id)return"solid";const l=t.title&&t.title===i.title;if("GroupLayer"===n&&l)return"solid";const c=getLayerUrl(r),y=getLayerUrl(s);return c&&y&&function(e,r){if(!e||!r)return e==r;return e.toLowerCase().replace("www.arcgis.com","cdn.arcgis.com")===r.toLowerCase().replace("www.arcgis.com","cdn.arcgis.com")}(c,y)?l?"solid":"loose":l?"loose":"none"}export function basemapsAreEquivalent(e,r){if(e===r)return!0;if(!e||!r)return!1;const a=s(e)?e.toJSON():e,t=a.baseMapLayers?.filter((e=>!e.isReference))??[],i=a.baseMapLayers?.filter((e=>e.isReference))??[],n=s(r)?r.toJSON():r,o=n.baseMapLayers?.filter((e=>!e.isReference))??[],l=n.baseMapLayers?.filter((e=>e.isReference))??[];return t.length===o.length&&t.every(((e,r)=>layersAreEquivalent(e,o[r])))&&i.length===l.length&&i.every(((e,r)=>layersAreEquivalent(e,l[r])))}export const standardBasemaps={[r.DARK_GRAY]:{baseMapLayers:[{id:"dark-gray-base-layer",title:"World Dark Gray Base",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Base/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{isReference:!0,id:"dark-gray-reference-layer",title:"World Dark Gray Reference",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Reference/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[r.DARK_GRAY_VECTOR]:{baseMapLayers:[{id:"dark-gray-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Dark Gray Base",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/5e9b3685f4c24d8781073dd928ebda50/resources/styles/root.json"},{id:"dark-gray-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Dark Gray Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/747cb7a5329c478cbe6981076cc879c5/resources/styles/root.json",isReference:!0}]},[r.GRAY]:{baseMapLayers:[{id:"gray-base-layer",title:"World Light Gray Base",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{isReference:!0,id:"gray-reference-layer",title:"World Light Gray Reference",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Reference/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[r.GRAY_VECTOR]:{baseMapLayers:[{id:"gray-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Light Gray Base",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/291da5eab3a0412593b66d384379f89f/resources/styles/root.json"},{id:"gray-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Light Gray Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/1768e8369a214dfab4e2167d5c5f2454/resources/styles/root.json",isReference:!0}]},[r.HYBRID]:{baseMapLayers:[{id:"hybrid-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",title:"World Imagery"},{id:"hybrid-reference-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Boundaries_and_Places/MapServer",title:"World Boundaries and Places",isReference:!0}]},[r.HYBRID_VECTOR]:{baseMapLayers:[{id:"hybrid-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",title:"World Imagery"},{id:"hybrid-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Hybrid Reference Layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/30d6b8271e1849cd9c3042060001f425/resources/styles/root.json",isReference:!0}]},[r.OCEANS]:{baseMapLayers:[{id:"oceans-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer",title:"World Ocean Base"},{id:"oceans-reference-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Ocean Reference",url:"https://services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Reference/MapServer",isReference:!0}]},[r.OCEANS_VECTOR]:{baseMapLayers:[{id:"oceans-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer",title:"World Ocean Base"},{id:"oceans-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"World Ocean Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/89860a5baf424f3ea0c655115faababe/resources/styles/root.json",isReference:!0}]},[r.OPEN_STREET_MAP]:{baseMapLayers:[{id:"osm-base-layer",layerType:"OpenStreetMap",showLegend:!1,title:"OpenStreetMap"}]},[r.OPEN_STREET_MAP_VECTOR]:{baseMapLayers:[{id:"osm-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"OpenStreetMap",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/3e1a00aeae81496587988075fe529f71/resources/styles/root.json"}]},[r.SATELLITE]:{baseMapLayers:[{id:"satellite-base-layer",title:"World Imagery",url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[r.STREETS]:{baseMapLayers:[{id:"streets-base-layer",title:"World Street Map",url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[r.STREETS_NAVIGATION_VECTOR]:{baseMapLayers:[{id:"streets-navigation-vector-base-layer",title:"World Navigation Map",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/63c47b7177f946b49902c24129b87252/resources/styles/root.json"}]},[r.STREETS_NIGHT_VECTOR]:{baseMapLayers:[{id:"streets-night-vector-base-layer",title:"World Street Map (Night)",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/86f556a2d1fd468181855a35e344567f/resources/styles/root.json"}]},[r.STREETS_RELIEF_VECTOR]:{baseMapLayers:[{id:"world-hillshade-layer",title:"World Hillshade",url:"https://services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{id:"streets-relief-vector-base-layer",title:"World Streets Relief",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/b266e6d17fc345b498345613930fbd76/resources/styles/root.json"}]},[r.STREETS_VECTOR]:{baseMapLayers:[{id:"streets-vector-base-layer",title:"World Street Map",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/de26a3cf4cc9451298ea173c4b324736/resources/styles/root.json"}]},[r.TERRAIN]:{baseMapLayers:[{id:"terrain-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapServer",title:"World Terrain Base"},{id:"terrain-reference-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Reference_Overlay/MapServer",title:"World Terrain Reference",isReference:!0}]},[r.TERRAIN_VECTOR]:{baseMapLayers:[{id:"world-hillshade",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",title:"World Hillshade"},{id:"terrain-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"World Terrain Base",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/33064a20de0c48d2bb61efa8faca93a8/resources/styles/root.json"},{id:"terrain-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"World Terrain Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/14fbc125ccc9488888b014db09f35f67/resources/styles/root.json",isReference:!0}]},[r.TOPO]:{baseMapLayers:[{id:"topo-base-layer",title:"World Topo Map",url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[r.TOPO_VECTOR]:{baseMapLayers:[{id:"world-hillshade-layer",title:"World Hillshade",url:"https://services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{id:"topo-vector-base-layer",title:"World Topographic Map",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/7dc6cea0b1764a1f9af2e679f642f0f5/resources/styles/root.json"}]}};const t=/^esri[./]layers[./](tools[./])?\w+Layer$/,i=/^esri[./]layers[./](support[./])?(buildingSublayers[./])?\w*Sublayer$/;export function isLayer(e){const r=e?.declaredClass;return"string"==typeof r&&t.test(r)}export function isSublayer(e){const r=e?.declaredClass;return"string"==typeof r&&i.test(r)}export function isBingMapsLayer(e){return"bing-maps"===e?.type}export function isCSVLayer(e){return"csv"===e?.type}export function isGeoJSONLayer(e){return"geojson"===e?.type}export function isSubtypeGroupLayer(e){return"subtype-group"===e?.type}export function isStreamLayer(e){return"stream"===e?.type}export function isFeatureLayerBase(e){return isCSVLayer(e)||isFeatureLayer(e)||isStreamLayer(e)||isGeoJSONLayer(e)}export function isFeatureLayer(e){return"feature"===e?.type}export function isGeoRssLayer(e){return"geo-rss"===e?.type}export function isGraphicsLayer(e){return"graphics"===e?.type}export function isMapNotesLayer(e){return"map-notes"===e?.type}export function isImageryLayer(e){return"imagery"===e?.type}export function isKMLLayer(e){return"kml"===e?.type}export function isMapImageLayer(e){return"map-image"===e?.type}export function isOpenStreetMapLayer(e){return"open-street-map"===e?.type}export function isWebTileLayer(e){return"web-tile"===e?.type||"open-street-map"===e?.type}export function isVectorTileLayer(e){return"vector-tile"===e?.type}export function isElevationLayer(e){return"elevation"===e?.type}export function isSceneLayer(e){return"scene"===e?.type}export function isPointCloudLayer(e){return"point-cloud"===e?.type}export function isIntegratedMeshLayer(e){return"integrated-mesh"===e?.type}export function isGroupLayer(e){return"group"===e?.type}export function isWFSLayer(e){return"wfs"===e?.type}export function isWMSLayer(e){return"wms"===e?.type}export function isWMTSLayer(e){return"wmts"===e?.type}export function isBuildingSceneLayer(e){return"building-scene"===e?.type}export function isTileLayer(e){return"tile"===e?.type}export function isImageryTileLayer(e){return"imagery-tile"===e?.type}export function isTiledImageServiceLayer(e){return isTileLayer(e)&&n(e)}export function isTiledMapServiceLayer(e){return isTileLayer(e)&&!n(e)}function n(e){const r=e.url??e.portalItem?.url;return r&&/\/ImageServer(\/|\/?$)/i.test(r)}export function isMapImageSublayer(e){return"esri.layers.support.Sublayer"===e?.declaredClass}export function isKMLSublayer(e){return"esri.layers.support.KMLSublayer"===e?.declaredClass}export function isWMTSSublayer(e){return"esri.layers.support.WMTSSublayer"===e?.declaredClass}export function isWMSSublayer(e){return"esri.layers.support.WMSSublayer"===e?.declaredClass}export function isMapNotesSublayer(e){return"esri.layers.MapNotesLayer.MapNotesSublayer"===e?.declaredClass}export function isRouteLayer(e){return"route"===e?.type}export function isBuildingComponentSublayer(e){const r=e;return"building-component"===r?.type}export function isBuildingGroupSublayer(e){const r=e;return"building-group"===r?.type}export function isLayerWithLegendEnabledProperty(e){return!(isBuildingSceneLayer(e)||isCSVLayer(e)||isElevationLayer(e)||isGraphicsLayer(e)||isGroupLayer(e)||isIntegratedMeshLayer(e)||isKMLLayer(e)||isOpenStreetMapLayer(e)||isPointCloudLayer(e)||isWebTileLayer(e)||isWMTSLayer(e)||isVectorTileLayer(e))}export function hasMmapLayer(e){return e.some((e=>{const r=e._deferredLayerProperties;return!("string"==typeof r?.$ref||!r?.$ref?.path)||!!e.layerExtensions&&hasMmapLayer(e.layerExtensions.toArray())}))}export function isTimeAwareLayer(e){return isLayer(e)&&e.hasOwnProperty("timeExtent")}export function isSubtypeSublayer(e){return"esri.layers.support.SubtypeSublayer"===e?.declaredClass}
|
|
1
|
+
import{getLayerJsonType as e}from"../json/LayerJson.js";import{WellKnownBasemap as r}from"../support/esri.js";import{isBasemap as s}from"./mapping.js";function a(e){if(e?.$ref){const r=e;return"string"==typeof r.$ref?{title:r.$ref,id:r.$ref,...e}:{...e,...r.$ref}}return e}export function getLayerUrl(r){if(!r)return;if(r.$ref?.url)return r.$ref?.url;let s;switch(isLayer(r)?e(r):r.layerType){case"ArcGISFeatureLayer":case"SubtypeGroupLayer":isRouteLayer(r)||(s=isLayer(r)&&r.url?`${r.url}/${r.layerId}`:r.url);break;case"ArcGISSceneServiceLayer":case"BuildingSceneLayer":case"PointCloudLayer":s=isLayer(r)&&r.url?`${r.url}/layers/${r.layerId}`:r.url;break;case"VectorTileLayer":s=r.styleUrl??r.url;break;case"WebTiledLayer":s=r.wmtsInfo||isWMTSLayer(r)?r.wmtsInfo?.url??r.url:r.templateUrl??r.urlTemplate;break;default:s=r.url}return s??void 0}export function layersAreEquivalent(e,r){return"none"!==getEquivalencyTypeForLayers(e,r)}export function getEquivalencyTypeForLayers(r,s){if(!r||!s)return"none";if(r===s)return"solid";const t=isLayer(r)?r:a(r),i=isLayer(s)?s:a(s),n=isLayer(t)?e(t):t.layerType;if(n!==(isLayer(i)?e(i):i.layerType))return"none";if(null!=n&&("OpenStreetMap"===(o=n)||"BingMapsAerial"===o||"BingMapsRoad"===o||"BingMapsHybrid"===o))return"solid";var o;if(t.id===i.id)return"solid";const l=t.title&&t.title===i.title;if("GroupLayer"===n&&l)return"solid";const c=getLayerUrl(r),y=getLayerUrl(s);return c&&y&&function(e,r){if(!e||!r)return e==r;return e.toLowerCase().replace("www.arcgis.com","cdn.arcgis.com")===r.toLowerCase().replace("www.arcgis.com","cdn.arcgis.com")}(c,y)?l?"solid":"loose":l?"loose":"none"}export function basemapsAreEquivalent(e,r){if(e===r)return!0;if(!e||!r)return!1;const a=s(e)?e.toJSON():e,t=a.baseMapLayers?.filter((e=>!e.isReference))??[],i=a.baseMapLayers?.filter((e=>e.isReference))??[],n=s(r)?r.toJSON():r,o=n.baseMapLayers?.filter((e=>!e.isReference))??[],l=n.baseMapLayers?.filter((e=>e.isReference))??[];return t.length===o.length&&t.every(((e,r)=>layersAreEquivalent(e,o[r])))&&i.length===l.length&&i.every(((e,r)=>layersAreEquivalent(e,l[r])))}export const standardBasemaps={[r.DARK_GRAY]:{baseMapLayers:[{id:"dark-gray-base-layer",title:"World Dark Gray Base",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Base/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{isReference:!0,id:"dark-gray-reference-layer",title:"World Dark Gray Reference",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Reference/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[r.DARK_GRAY_VECTOR]:{baseMapLayers:[{id:"dark-gray-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Dark Gray Base",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/5e9b3685f4c24d8781073dd928ebda50/resources/styles/root.json"},{id:"dark-gray-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Dark Gray Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/747cb7a5329c478cbe6981076cc879c5/resources/styles/root.json",isReference:!0}]},[r.GRAY]:{baseMapLayers:[{id:"gray-base-layer",title:"World Light Gray Base",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{isReference:!0,id:"gray-reference-layer",title:"World Light Gray Reference",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Reference/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[r.GRAY_VECTOR]:{baseMapLayers:[{id:"gray-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Light Gray Base",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/291da5eab3a0412593b66d384379f89f/resources/styles/root.json"},{id:"gray-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Light Gray Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/1768e8369a214dfab4e2167d5c5f2454/resources/styles/root.json",isReference:!0}]},[r.HYBRID]:{baseMapLayers:[{id:"hybrid-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",title:"World Imagery"},{id:"hybrid-reference-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Boundaries_and_Places/MapServer",title:"World Boundaries and Places",isReference:!0}]},[r.HYBRID_VECTOR]:{baseMapLayers:[{id:"hybrid-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",title:"World Imagery"},{id:"hybrid-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Hybrid Reference Layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/30d6b8271e1849cd9c3042060001f425/resources/styles/root.json",isReference:!0}]},[r.OCEANS]:{baseMapLayers:[{id:"oceans-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer",title:"World Ocean Base"},{id:"oceans-reference-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Ocean Reference",url:"https://services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Reference/MapServer",isReference:!0}]},[r.OCEANS_VECTOR]:{baseMapLayers:[{id:"oceans-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer",title:"World Ocean Base"},{id:"oceans-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"World Ocean Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/89860a5baf424f3ea0c655115faababe/resources/styles/root.json",isReference:!0}]},[r.OPEN_STREET_MAP]:{baseMapLayers:[{id:"osm-base-layer",layerType:"OpenStreetMap",showLegend:!1,title:"OpenStreetMap"}]},[r.OPEN_STREET_MAP_VECTOR]:{baseMapLayers:[{id:"osm-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"OpenStreetMap",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/3e1a00aeae81496587988075fe529f71/resources/styles/root.json"}]},[r.SATELLITE]:{baseMapLayers:[{id:"satellite-base-layer",title:"World Imagery",url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[r.STREETS]:{baseMapLayers:[{id:"streets-base-layer",title:"World Street Map",url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[r.STREETS_NAVIGATION_VECTOR]:{baseMapLayers:[{id:"streets-navigation-vector-base-layer",title:"World Navigation Map",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/63c47b7177f946b49902c24129b87252/resources/styles/root.json"}]},[r.STREETS_NIGHT_VECTOR]:{baseMapLayers:[{id:"streets-night-vector-base-layer",title:"World Street Map (Night)",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/86f556a2d1fd468181855a35e344567f/resources/styles/root.json"}]},[r.STREETS_RELIEF_VECTOR]:{baseMapLayers:[{id:"world-hillshade-layer",title:"World Hillshade",url:"https://services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{id:"streets-relief-vector-base-layer",title:"World Streets Relief",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/b266e6d17fc345b498345613930fbd76/resources/styles/root.json"}]},[r.STREETS_VECTOR]:{baseMapLayers:[{id:"streets-vector-base-layer",title:"World Street Map",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/de26a3cf4cc9451298ea173c4b324736/resources/styles/root.json"}]},[r.TERRAIN]:{baseMapLayers:[{id:"terrain-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapServer",title:"World Terrain Base"},{id:"terrain-reference-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Reference_Overlay/MapServer",title:"World Terrain Reference",isReference:!0}]},[r.TERRAIN_VECTOR]:{baseMapLayers:[{id:"world-hillshade",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",title:"World Hillshade"},{id:"terrain-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"World Terrain Base",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/33064a20de0c48d2bb61efa8faca93a8/resources/styles/root.json"},{id:"terrain-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"World Terrain Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/14fbc125ccc9488888b014db09f35f67/resources/styles/root.json",isReference:!0}]},[r.TOPO]:{baseMapLayers:[{id:"topo-base-layer",title:"World Topo Map",url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[r.TOPO_VECTOR]:{baseMapLayers:[{id:"world-hillshade-layer",title:"World Hillshade",url:"https://services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{id:"topo-vector-base-layer",title:"World Topographic Map",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/7dc6cea0b1764a1f9af2e679f642f0f5/resources/styles/root.json"}]}};const t=/^esri[./]layers[./](tools[./])?\w+Layer$/,i=/^esri[./]layers[./](support[./])?(buildingSublayers[./])?\w*Sublayer$/;export function isLayer(e){const r=e?.declaredClass;return"string"==typeof r&&t.test(r)}export function isSublayer(e){const r=e?.declaredClass;return"string"==typeof r&&i.test(r)}export function isBingMapsLayer(e){return"bing-maps"===e?.type}export function isCSVLayer(e){return"csv"===e?.type}export function isGeoJSONLayer(e){return"geojson"===e?.type}export function isSubtypeGroupLayer(e){return"subtype-group"===e?.type}export function isStreamLayer(e){return"stream"===e?.type}export function isFeatureLayerBase(e){return isCSVLayer(e)||isFeatureLayer(e)||isStreamLayer(e)||isGeoJSONLayer(e)}export function isFeatureLayer(e){return"feature"===e?.type}export function isGeoRssLayer(e){return"geo-rss"===e?.type}export function isGraphicsLayer(e){return"graphics"===e?.type}export function isMapNotesLayer(e){return"map-notes"===e?.type}export function isImageryLayer(e){return"imagery"===e?.type}export function isKMLLayer(e){return"kml"===e?.type}export function isMapImageLayer(e){return"map-image"===e?.type}export function isOpenStreetMapLayer(e){return"open-street-map"===e?.type}export function isWebTileLayer(e){return"web-tile"===e?.type||"open-street-map"===e?.type}export function isVectorTileLayer(e){return"vector-tile"===e?.type}export function isElevationLayer(e){return"elevation"===e?.type}export function isSceneLayer(e){return"scene"===e?.type}export function isPointCloudLayer(e){return"point-cloud"===e?.type}export function isIntegratedMeshLayer(e){return"integrated-mesh"===e?.type}export function isGroupLayer(e){return"group"===e?.type}export function isWFSLayer(e){return"wfs"===e?.type}export function isWMSLayer(e){return"wms"===e?.type}export function isWMTSLayer(e){return"wmts"===e?.type}export function isBuildingSceneLayer(e){return"building-scene"===e?.type}export function isTileLayer(e){return"tile"===e?.type}export function isImageryTileLayer(e){return"imagery-tile"===e?.type}export function isTiledImageServiceLayer(e){return isTileLayer(e)&&n(e)}export function isTiledMapServiceLayer(e){return isTileLayer(e)&&!n(e)}function n(e){const r=e.url??e.portalItem?.url;return null!=r&&/\/ImageServer(\/|\/?$)/i.test(r)}export function isMapImageSublayer(e){return"esri.layers.support.Sublayer"===e?.declaredClass}export function isKMLSublayer(e){return"esri.layers.support.KMLSublayer"===e?.declaredClass}export function isWMTSSublayer(e){return"esri.layers.support.WMTSSublayer"===e?.declaredClass}export function isWMSSublayer(e){return"esri.layers.support.WMSSublayer"===e?.declaredClass}export function isMapNotesSublayer(e){return"esri.layers.MapNotesLayer.MapNotesSublayer"===e?.declaredClass}export function isRouteLayer(e){return"route"===e?.type}export function isBuildingComponentSublayer(e){const r=e;return"building-component"===r?.type}export function isBuildingGroupSublayer(e){const r=e;return"building-group"===r?.type}export function isLayerWithLegendEnabledProperty(e){return!(isBuildingSceneLayer(e)||isCSVLayer(e)||isElevationLayer(e)||isGraphicsLayer(e)||isGroupLayer(e)||isIntegratedMeshLayer(e)||isKMLLayer(e)||isOpenStreetMapLayer(e)||isPointCloudLayer(e)||isWebTileLayer(e)||isWMTSLayer(e)||isVectorTileLayer(e))}export function hasMmapLayer(e){return e.some((e=>{const r=e._deferredLayerProperties;return!("string"==typeof r?.$ref||!r?.$ref?.path)||!!e.layerExtensions&&hasMmapLayer(e.layerExtensions.toArray())}))}export function isTimeAwareLayer(e){return isLayer(e)&&e.hasOwnProperty("timeExtent")}export function isSubtypeSublayer(e){return"esri.layers.support.SubtypeSublayer"===e?.declaredClass}
|
package/utilities/_wkt.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"@arcgis/core/geometry/Multipoint.js";import t from"@arcgis/core/geometry/Point.js";import r from"@arcgis/core/geometry/Polygon.js";import i from"@arcgis/core/geometry/Polyline.js";import n from"@arcgis/core/geometry/SpatialReference";import{ArgumentError as o}from"../ArgumentError.js";import{checkArg as s}from"./checkArg.js";import{isExtent as a,isMultipoint as c,isPoint as m,isPolygon as f,isPolyline as p}from"./esri.js";import{parse as u}from"./number.js";const h=/^(POINT|MULTIPOINT|LINESTRING|MULTILINESTRING|POLYGON)\s(?:(ZM|Z|M)\s)?(\(.+\))$/,l=/^\(?([-\d.]+)\s([-\d.]+)(?:\s([-\d.]+))?(?:\s([-\d.]+))?\)?$/,d=/^\(([-\d.\s(),]+)\)$/,T=/^(PROJCS|GEOGCS|VERTCS|GEOGTRAN|VERTTRAN)\s?\[\s?"([^"]+)",.*/,w={4326:{name:"GCS_WGS_1984",wkt:'GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]'},102100:{name:"WGS_1984_Web_Mercator_Auxiliary_Sphere",wkt:'PROJCS["WGS_1984_Web_Mercator_Auxiliary_Sphere",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Mercator_Auxiliary_Sphere"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",0.0],PARAMETER["Auxiliary_Sphere_Type",0.0],UNIT["Meter",1.0]]'}},G={PROJCS:"projected",GEOGCS:"geographic",VERTCS:"vertical",GEOGTRAN:"transformations",VERTTRAN:"vertical-transformations"},R={};export function wktToEsri(a,c){s("geometry",a).isNotMissing();const m=a.match(h);if(m){const o=m[2]?.includes("Z"),s=m[2]?.includes("M");switch(m[1]){case"POINT":{const e=N(m[3],m[2]);return new t({x:e[0],y:e[1],z:o?e[2]:void 0,m:!o&&s?e[2]:s?e[3]:void 0,hasZ:o,hasM:s,spatialReference:c
|
|
1
|
+
import e from"@arcgis/core/geometry/Multipoint.js";import t from"@arcgis/core/geometry/Point.js";import r from"@arcgis/core/geometry/Polygon.js";import i from"@arcgis/core/geometry/Polyline.js";import n from"@arcgis/core/geometry/SpatialReference";import{ArgumentError as o}from"../ArgumentError.js";import{checkArg as s}from"./checkArg.js";import{isExtent as a,isMultipoint as c,isPoint as m,isPolygon as f,isPolyline as p}from"./esri.js";import{parse as u}from"./number.js";const h=/^(POINT|MULTIPOINT|LINESTRING|MULTILINESTRING|POLYGON)\s(?:(ZM|Z|M)\s)?(\(.+\))$/,l=/^\(?([-\d.]+)\s([-\d.]+)(?:\s([-\d.]+))?(?:\s([-\d.]+))?\)?$/,d=/^\(([-\d.\s(),]+)\)$/,T=/^(PROJCS|GEOGCS|VERTCS|GEOGTRAN|VERTTRAN)\s?\[\s?"([^"]+)",.*/,w={4326:{name:"GCS_WGS_1984",wkt:'GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]'},102100:{name:"WGS_1984_Web_Mercator_Auxiliary_Sphere",wkt:'PROJCS["WGS_1984_Web_Mercator_Auxiliary_Sphere",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Mercator_Auxiliary_Sphere"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",0.0],PARAMETER["Auxiliary_Sphere_Type",0.0],UNIT["Meter",1.0]]'}},G={PROJCS:"projected",GEOGCS:"geographic",VERTCS:"vertical",GEOGTRAN:"transformations",VERTTRAN:"vertical-transformations"},R={};export function wktToEsri(a,c){s("geometry",a).isNotMissing();const m=a.match(h);if(m){const o=m[2]?.includes("Z"),s=m[2]?.includes("M");switch(m[1]){case"POINT":{const e=N(m[3],m[2]);return new t({x:e[0],y:e[1],z:o?e[2]:void 0,m:!o&&s?e[2]:s?e[3]:void 0,hasZ:o,hasM:s,spatialReference:c??n.WGS84})}case"MULTIPOINT":{const t=E(m[3],m[2]);return new e({points:t,hasZ:o,hasM:s,spatialReference:c??n.WGS84})}case"LINESTRING":{const e=E(m[3],m[2]);return new i({paths:[e],hasZ:o,hasM:s,spatialReference:c??n.WGS84})}case"MULTILINESTRING":{const e=S(m[3],m[2]);return new i({paths:e,hasZ:o,hasM:s,spatialReference:c??n.WGS84})}case"POLYGON":{const e=S(m[3],m[2]);return new r({rings:e,hasZ:o,hasM:s,spatialReference:c??n.WGS84})}}}throw new o("Cannot determine what type of esri geometry to create")}export function esriToWKT(e){s("geometry",e).isNotMissing();const t=`${e.hasZ?"Z":""}${e.hasM?"M":""}${e.hasM||e.hasZ?" ":""}`;if(m(e)){const{x:r,y:i,z:n,m:o}=e,s=[r,i];return e.hasZ&&s.push(n),e.hasM&&s.push(o),`POINT ${t}(${y(s)})`}if(c(e))return`MULTIPOINT ${t}(${O(e.points)})`;if(p(e))return e.paths.length>1?`MULTILINESTRING ${t}(${I(e.paths)})`:`LINESTRING ${t}(${O(e.paths[0])})`;if(f(e))return`POLYGON ${t}(${I(e.rings)})`;if(a(e)){const r=[e.xmin,e.ymax];return`POLYGON ${t}(${I([[r,[e.xmax,e.ymax],[e.xmax,e.ymin],[e.xmin,e.ymin],r]])})`}throw new o("Cannot determine what type of WKT geometry to create")}export async function esriWkidToWkt(e){s("wkid",e).isNotMissing();let t=w[`${e}`];if(!t)for(const r of Object.values(G)){if(t=(await _(r))[e],t){const r=t.wkt.match(T);if(r){w[e]={name:r[2],wkt:t.wkt};break}}}if(!t)throw new Error(`Failed to find Wkt for id ${e}`);return t.wkt}export async function esriWktToWkid(e){s("wkt",e).isNotMissing();const t=e.match(T);if(t){let e=Object.keys(w).find((e=>w[e].name===t[2]));if(!e){const r=G[t[1]];if(r){const i=await _(r);e=Object.keys(i).find((e=>i[e].name===t[2])),e&&(w[e]={name:t[2],wkt:i[e].wkt})}}if(e)return parseInt(e)}throw new Error(`Failed to find Wkid for ${e}`)}function S(e,t){const r=e.match(d);if(r)return M(r[1]).map((e=>E(e,t)));throw new o(`Detected invalid WKT 2D point array: ${e}`)}function E(e,t){const r=e.match(d);if(r)return M(r[1]).map((e=>N(e,t)));throw new o(`Detected invalid WKT point array: ${e}`)}function M(e){let t=e.trim().replace(/\s*,\s*/g,","),r=0;for(let e=0;e<t.length;e++)switch(t.charAt(e)){case"(":r++;break;case")":r--;break;case",":0===r&&(t=`${t.substr(0,e)}&${t.substr(e+1)}`)}return t.split("&")}function N(e,t){const r=t??"",i=e.match(l);if(i){const e=[g(i[1]),g(i[2])];return(r.includes("Z")||!r.includes("Z")&&r.includes("M"))&&i[3]&&e.push(g(i[3])),r.includes("M")&&i[4]&&e.push(g(i[4])),e}throw new o(`Detected invalid WKT point: ${e}`)}function g(e){return u({locale:"inv"},e)}function I(e){return e.map((e=>`(${O(e)})`)).join(", ")}function O(e){return e.map(y).join(", ")}function y(e){return e.join(" ")}async function _(e){if(void 0===R[e])switch(e){case G.GEOGCS:R[e]=(await import("esri-proj-codes/geographic.json")).default;break;case G.PROJCS:R[e]=(await import("esri-proj-codes/projected.json")).default;break;case G.GEOGTRAN:R[e]=(await import("esri-proj-codes/transformations.json")).default;break;case G.VERTCS:R[e]=(await import("esri-proj-codes/vertical.json")).default;break;case G.VERTTRAN:R[e]=(await import("esri-proj-codes/vertical-transformations.json")).default}const t=R[e];if(!t)throw new Error(`Invalid esri-proj-codes module: ${e}`);return t}
|