@vertigis/arcgis-extensions 43.5.7 → 44.0.0
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 +30 -0
- package/declarations/arcgis-js-api-extensions/index.d.ts +4 -0
- package/docs/html/assets/navigation.js +1 -1
- package/docs/html/assets/search.js +1 -1
- package/docs/html/classes/mapping_WFSLayerExtension.WFSLayerExtension.html +428 -0
- package/docs/html/classes/mapping_WMSLayerExtension.WMSLayerExtension.html +10 -11
- package/docs/html/classes/mapping_WMSSublayerExtension.WMSSublayerExtension.html +15 -4
- package/docs/html/classes/mapping__LayerExtension.LayerExtension.html +1 -1
- package/docs/html/classes/tasks_identify_ClientSideIdentifyProvider.ClientSideIdentifyProvider.html +1 -1
- package/docs/html/classes/tasks_identify_IdentifyProviderBase.IdentifyProviderBase.html +1 -1
- package/docs/html/classes/tasks_identify_WFSLayerClientSideIdentifyProvider.WFSLayerClientSideIdentifyProvider.html +64 -0
- package/docs/html/classes/tasks_identify_WFSLayerQueryIdentifyProvider.WFSLayerQueryIdentifyProvider.html +51 -0
- package/docs/html/classes/tasks_query_QueryProviderBase.QueryProviderBase.html +1 -1
- package/docs/html/classes/tasks_query_WFSLayerQueryProvider.WFSLayerQueryProvider.html +31 -0
- package/docs/html/functions/json_LayerJson.getLayerJsonType.html +1 -1
- package/docs/html/functions/utilities__layers.isWFSLayer.html +3 -0
- package/docs/html/functions/utilities_extensions.isWFSLayerExtension.html +3 -0
- package/docs/html/hierarchy.html +1 -1
- package/docs/html/interfaces/json_CSVLayerJson.CSVLayerJson.html +6 -3
- package/docs/html/interfaces/json_OperationalLayerJson.OperationalLayerJsonBase.html +1 -1
- package/docs/html/interfaces/json_WFSLayerJson.WFSInfoJson.html +23 -0
- package/docs/html/interfaces/json_WFSLayerJson.WFSLayerJson.html +78 -0
- package/docs/html/interfaces/mapping_WFSLayerExtension.WFSLayerExtensionProperties.html +42 -0
- package/docs/html/interfaces/mapping_WMSLayerExtension.WMSLayerExtensionProperties.html +1 -1
- package/docs/html/interfaces/mapping__LayerExtension.LayerExtensionProperties.html +1 -1
- package/docs/html/interfaces/support_InitializableBase.Initializable.html +1 -1
- package/docs/html/modules/json_WFSLayerJson.html +3 -0
- package/docs/html/modules/{mapping_support_WfsFeatureType.html → mapping_WFSLayerExtension.html} +2 -2
- package/docs/html/modules/support_esri.html +3 -0
- package/docs/html/modules/{mapping_support_WfsCapabilities.html → tasks_identify_WFSLayerClientSideIdentifyProvider.html} +1 -3
- package/docs/html/modules/tasks_identify_WFSLayerQueryIdentifyProvider.html +2 -0
- package/docs/html/modules/tasks_identify_defaultProviders.html +3 -1
- package/docs/html/modules/tasks_query_WFSLayerQueryProvider.html +2 -0
- package/docs/html/modules/tasks_query_defaultProviders.html +2 -1
- package/docs/html/modules/utilities__layers.html +1 -0
- package/docs/html/modules/utilities_extensions.html +1 -0
- package/docs/html/types/json_LayerJson.LayerJsonType.html +1 -1
- package/docs/html/types/json_OperationalLayerJson.OperationalLayerJson.html +1 -1
- package/docs/html/types/support_esri.WFSCapabilities.html +1 -0
- package/docs/html/types/support_esri.WFSFeatureType.html +1 -0
- package/docs/html/types/support_esri.WFSLayerInfo.html +1 -0
- package/docs/html/types/tasks_query_ClientSideQueryProvider.ClientSideQueryableLayerExtension.html +1 -1
- package/docs/html/variables/version.version.html +1 -1
- package/json/CSVLayerJson.d.ts +5 -0
- package/json/LayerJson.d.ts +2 -2
- package/json/LayerJson.js +1 -1
- package/json/OperationalLayerJson.d.ts +2 -1
- package/json/WFSLayerJson.d.ts +100 -0
- package/json/WFSLayerJson.js +1 -0
- package/json/WebMapJson.js +1 -1
- package/mapping/WFSLayerExtension.d.ts +61 -0
- package/mapping/WFSLayerExtension.js +1 -0
- package/mapping/WMSLayerExtension.d.ts +7 -9
- package/mapping/WMSLayerExtension.js +1 -1
- package/mapping/WMSSublayerExtension.d.ts +20 -1
- package/mapping/WMSSublayerExtension.js +1 -1
- package/mapping/_LayerExtension.js +1 -1
- package/mapping/support/DefaultLayerExtensionFactory.js +1 -1
- package/package.json +1 -1
- package/support/esri.d.ts +3 -0
- package/tasks/identify/IdentifyService.js +1 -1
- package/tasks/identify/WFSLayerClientSideIdentifyProvider.d.ts +14 -0
- package/tasks/identify/WFSLayerClientSideIdentifyProvider.js +1 -0
- package/tasks/identify/WFSLayerQueryIdentifyProvider.d.ts +23 -0
- package/tasks/identify/WFSLayerQueryIdentifyProvider.js +1 -0
- package/tasks/identify/WMSSublayerIdentifyProvider.d.ts +1 -6
- package/tasks/identify/WMSSublayerIdentifyProvider.js +1 -1
- package/tasks/identify/defaultProviders.d.ts +2 -0
- package/tasks/identify/defaultProviders.js +1 -1
- package/tasks/query/ClientSideQueryProvider.d.ts +2 -1
- package/tasks/query/QueryService.js +1 -1
- package/tasks/query/WFSLayerQueryProvider.d.ts +22 -0
- package/tasks/query/WFSLayerQueryProvider.js +1 -0
- package/tasks/query/defaultProviders.d.ts +1 -0
- package/tasks/query/defaultProviders.js +1 -1
- package/utilities/_gml.js +1 -1
- package/utilities/_layers.d.ts +7 -0
- package/utilities/_layers.js +1 -1
- package/utilities/extensions.d.ts +7 -0
- package/utilities/extensions.js +1 -1
- package/utilities/log.js +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/docs/html/classes/mapping_support_WfsCapabilities.WfsCapabilities.html +0 -40
- package/docs/html/classes/mapping_support_WfsFeatureType.WfsFeatureType.html +0 -15
- package/docs/html/enums/mapping_support_WfsCapabilities.WfsVersions.html +0 -8
- package/docs/html/interfaces/mapping_support_WfsCapabilities.WfsCapabilitiesProperties.html +0 -5
- package/docs/html/interfaces/mapping_support_WfsFeatureType.WfsFeatureTypeProperties.html +0 -15
- package/mapping/support/WfsCapabilities.d.ts +0 -132
- package/mapping/support/WfsCapabilities.js +0 -1
- package/mapping/support/WfsFeatureType.d.ts +0 -67
- package/mapping/support/WfsFeatureType.js +0 -1
|
@@ -3,11 +3,11 @@ import type WMSLayer from "@arcgis/core/layers/WMSLayer";
|
|
|
3
3
|
import type PortalItem from "@arcgis/core/portal/PortalItem";
|
|
4
4
|
import type { WMSLayerJson } from "../json/WMSLayerJson.js";
|
|
5
5
|
import type { PropertyDefs } from "../support/Serializable.js";
|
|
6
|
+
import type { WFSCapabilities } from "../support/esri.js";
|
|
6
7
|
import type { WMSSublayerExtensionCollection, WMSSublayerExtensionProperties } from "./WMSSublayerExtension.js";
|
|
7
8
|
import { WMSSublayerExtension } from "./WMSSublayerExtension.js";
|
|
8
9
|
import type { LayerExtensionProperties, LayerProperties } from "./_LayerExtension.js";
|
|
9
10
|
import { LayerExtension } from "./_LayerExtension.js";
|
|
10
|
-
import { WfsCapabilities } from "./support/WfsCapabilities.js";
|
|
11
11
|
import { SublayerExtensionCollectionBase } from "./support/_SublayerExtensionCollection.js";
|
|
12
12
|
/**
|
|
13
13
|
* Properties that can be passed into the constructor for
|
|
@@ -33,22 +33,20 @@ export interface WMSLayerExtensionProperties extends LayerExtensionProperties {
|
|
|
33
33
|
export declare class WMSLayerExtension extends LayerExtension<WMSLayerExtensionProperties> {
|
|
34
34
|
get layer(): WMSLayer;
|
|
35
35
|
get sublayerExtensions(): WMSSublayerExtensionCollection;
|
|
36
|
-
/**
|
|
37
|
-
* The url of a compatible WFS service to use for identify operations.
|
|
38
|
-
*/
|
|
39
|
-
_wfsUrl: string;
|
|
40
36
|
/**
|
|
41
37
|
* The capabilities of a compatible WFS service to use for identify
|
|
42
|
-
* operations.
|
|
38
|
+
* operations. Call initializeWfs() to populate this.
|
|
43
39
|
*/
|
|
44
|
-
wfsCapabilities:
|
|
40
|
+
get wfsCapabilities(): WFSCapabilities | undefined;
|
|
45
41
|
get supportsSublayers(): boolean;
|
|
46
42
|
/**
|
|
47
43
|
* The URL to a corresponding WFS to use for identifying and querying.
|
|
48
44
|
*/
|
|
49
|
-
|
|
50
|
-
set wfsUrl(value: string);
|
|
45
|
+
wfsUrl: string;
|
|
51
46
|
private _deferredSublayerProperties;
|
|
47
|
+
private _wfsCapabilities;
|
|
48
|
+
private _initializeWfsPromise;
|
|
49
|
+
initializeWfs(): Promise<void>;
|
|
52
50
|
_createSublayerExtension(properties?: WMSSublayerExtensionProperties): WMSSublayerExtension;
|
|
53
51
|
protected _onInitialize(): Promise<void>;
|
|
54
52
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__decorate as e}from"tslib";import{InvalidOperationError as r}from"../InvalidOperationError.js";import{applyJsonToLayer as t,layerToJson as
|
|
1
|
+
import{__decorate as e}from"tslib";import{InvalidOperationError as r}from"../InvalidOperationError.js";import{applyJsonToLayer as t,layerToJson as i}from"../json/LayerJson.js";import{serializable as s}from"../support/Serializable.js";import{isWMSLayer as a}from"../utilities/_layers.js";import{checkArg as o}from"../utilities/checkArg.js";import{WMSSublayerExtension as l}from"./WMSSublayerExtension.js";import{LayerExtension as n}from"./_LayerExtension.js";import{SublayerExtensionCollectionBase as y}from"./support/_SublayerExtensionCollection.js";const p="SublayerExtension collection for WMSLayerExtension is readonly";let u=class extends n{get layer(){return super.layer}get sublayerExtensions(){return super.sublayerExtensions}get wfsCapabilities(){return this._wfsCapabilities}get supportsSublayers(){return!0}wfsUrl;_deferredSublayerProperties;_wfsCapabilities;_initializeWfsPromise;async initializeWfs(){return void 0===this._initializeWfsPromise&&(this._initializeWfsPromise=(async()=>{if(this.wfsUrl)try{this._wfsCapabilities||(this._wfsCapabilities=await(await import("@arcgis/core/layers/ogc/wfsUtils.js")).getCapabilities(this.wfsUrl))}catch(e){throw this._initializeWfsPromise=void 0,e}})()),this._initializeWfsPromise}_createSublayerExtension(e){return new l(e)}_getProjectWebmapJSON(){const e=super._getProjectWebmapJSON();if(!e||this.dynamicallyAddedLayer)return e;const{visibleLayers:r}=i(this.layer);return e.visibleLayers=r,e}async _onInitialize(){await super._onInitialize(),this._deferredSublayerProperties&&(await this.assignPropertiesAsync({layer:{layerType:"WMS",layers:this._deferredSublayerProperties}}),this._deferredSublayerProperties=void 0)}_isSupportedLayer(e){return a(e)}_createSublayerExtensionCollection(){return new f(this)}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,wfsUrl:"initial",layer:{...this._toPropertyDef(e.layer),default:{layerType:"WMS"},deserialize:r=>{const t=this._toPropertyDef(e.layer).deserialize(r);if(r&&!a(r)&&r.layers&&!this.layer?.sublayers){this._deferredSublayerProperties=this._deferredSublayerProperties||[];for(const e of r.layers){const r=this._deferredSublayerProperties.findIndex((r=>r.name===e.name));r>=0?this._deferredSublayerProperties[r]={...this._deferredSublayerProperties[r],...e}:this._deferredSublayerProperties.push({...e})}}return t}}}}async _applyPortalItemProperties(e){if("WMS"!==e.type)throw new Error(`Cannot create WMS layer from Portal item that has type: ${e.type}`);const r={layerType:"WMS",...await e.fetchData()};return t(r,this.layer)}};u=e([s],u);export{u as WMSLayerExtension};class f extends y{constructor(e){super(e,"layer.sublayers"),this._layerExtension=e}add(e,t){if(o("sublayerX",e).isNotMissing(),e.sublayer&&this._parent.layer.sublayers&&!this._parent.layer.sublayers.includes(e.sublayer))throw new r(p);return super.add(e,t)}removeAt(e){throw new r(p)}reorder(e,t){throw new r(p)}reverse(){throw new r(p)}sort(e){throw new r(p)}splice(e,t,...i){throw new r(p)}_createSublayerExtension(e){return this._parent._createSublayerExtension(e)}}
|
|
@@ -2,7 +2,7 @@ import type Extent from "@arcgis/core/geometry/Extent";
|
|
|
2
2
|
import type WMSSublayer from "@arcgis/core/layers/support/WMSSublayer";
|
|
3
3
|
import type { WMSSublayerJson } from "../json/WMSSublayerJson.js";
|
|
4
4
|
import type { InitializableCollection } from "../support/InitializableCollectionProxy.js";
|
|
5
|
-
import type { SublayerLike } from "../support/esri.js";
|
|
5
|
+
import type { SublayerLike, WFSFeatureType, WFSLayerInfo } from "../support/esri.js";
|
|
6
6
|
import type { WMSLayerExtension } from "./WMSLayerExtension.js";
|
|
7
7
|
import type { SublayerExtensionProperties, SublayerProperties } from "./_SublayerExtension.js";
|
|
8
8
|
import { SublayerExtension, SubSublayerExtensionCollection } from "./_SublayerExtension.js";
|
|
@@ -57,6 +57,19 @@ export interface WMSSublayerExtensionCollection extends InitializableCollection<
|
|
|
57
57
|
* Extends the capabilities of an Esri WMSSublayer object.
|
|
58
58
|
*/
|
|
59
59
|
export declare class WMSSublayerExtension extends SublayerExtension<WMSSublayerExtensionProperties> {
|
|
60
|
+
/**
|
|
61
|
+
* Information about a corresponding WFS layer that can be used for
|
|
62
|
+
* querying/identifying this sublayer.
|
|
63
|
+
*
|
|
64
|
+
* If not set explicitly, it can be initialized from the parent layer
|
|
65
|
+
* extension's `wfsUrl` by calling `initializeWfs()`.
|
|
66
|
+
*/
|
|
67
|
+
wfsLayerInfo?: WFSLayerInfo;
|
|
68
|
+
/**
|
|
69
|
+
* The WFS feature associated with this sublayer if there is an associated
|
|
70
|
+
* `wfsLayerInfo`.
|
|
71
|
+
*/
|
|
72
|
+
get wfsFeatureType(): WFSFeatureType | undefined;
|
|
60
73
|
get sublayer(): WMSSublayer;
|
|
61
74
|
get sublayerExtensions(): WMSSublayerExtensionCollection;
|
|
62
75
|
get layerExtension(): WMSLayerExtension;
|
|
@@ -64,6 +77,12 @@ export declare class WMSSublayerExtension extends SublayerExtension<WMSSublayerE
|
|
|
64
77
|
get effectiveFullExtent(): Extent;
|
|
65
78
|
get hasFeatures(): boolean;
|
|
66
79
|
get canChangeOpacity(): boolean;
|
|
80
|
+
private _initializeWfsPromise;
|
|
81
|
+
/**
|
|
82
|
+
* Initializes the WFS info associated with this sublayer if the parent
|
|
83
|
+
* layer extension has an associated WFS URL.
|
|
84
|
+
*/
|
|
85
|
+
initializeWfs(): Promise<void>;
|
|
67
86
|
_createSublayerExtension(properties?: WMSSublayerExtensionProperties): SublayerExtension;
|
|
68
87
|
/**
|
|
69
88
|
* @inheritDoc
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e;import{__decorate as r}from"tslib";import{InvalidOperationError as t}from"../InvalidOperationError.js";import{applyJsonToSublayer as s,jsonToSublayer as
|
|
1
|
+
var e;import{__decorate as r}from"tslib";import{InvalidOperationError as t}from"../InvalidOperationError.js";import{applyJsonToSublayer as s,jsonToSublayer as i,sublayerToJson as n}from"../json/SublayerJson.js";import{serializable as a}from"../support/Serializable.js";import{isWMSSublayer as o}from"../utilities/_layers.js";import{checkArg as l}from"../utilities/checkArg.js";import{caseInsensitiveEquals as u}from"../utilities/string.js";import{SublayerExtension as y,SubSublayerExtensionCollection as f}from"./_SublayerExtension.js";const p="SublayerExtension collection for WMSLayerExtension is readonly";let h=e=class extends y{wfsLayerInfo;get wfsFeatureType(){return this.wfsLayerInfo?.wfsCapabilities.featureTypes.find((e=>e.namespaceUri===this.wfsLayerInfo.namespaceUri&&e.name===this.wfsLayerInfo.name))}get sublayer(){return super.sublayer}get sublayerExtensions(){return super.sublayerExtensions}get layerExtension(){return super.layerExtension}get supportsSublayers(){return!0}get effectiveFullExtent(){return this.sublayer?this.sublayer.fullExtent:this.parentSublayerExtension?this.parentSublayerExtension.effectiveFullExtent:this.layerExtension?this.layerExtension.effectiveFullExtent:void 0}get hasFeatures(){return!0}get canChangeOpacity(){return!1}_initializeWfsPromise;async initializeWfs(){return void 0===this._initializeWfsPromise&&(this._initializeWfsPromise=(async()=>{if(!this.wfsLayerInfo&&this.layerExtension?.wfsUrl)try{await this.layerExtension.initializeWfs();const e=this.layerExtension.wfsCapabilities,r=this.sublayer.name.split(":"),s=r[2===r.length?1:0],i=e.featureTypes.find((e=>u(s,e.name)));if(!i)throw new t(`Could not find a matching WFS feature type for layer "${this.sublayer?.name??""}".`);this.wfsLayerInfo=await(await import("@arcgis/core/layers/ogc/wfsUtils.js")).getWFSLayerInfo(e,i.name)}catch(e){throw this._initializeWfsPromise=void 0,e}})()),this._initializeWfsPromise}_createSublayerExtension(r){return new e(r)}_isSupportedSublayer(e){return o(e)}_createSublayer(e){return i({...e},"WMS")}async _applySublayerProperties(e,r){return s(e,r)}_serializeSublayer(e){return n(e)}_createSublayerExtensionCollection(){return new m(this)}};h=e=r([a],h);export{h as WMSSublayerExtension};class m extends f{add(e,r){if(l("sublayerX",e).isNotMissing(),e.sublayer&&this._parent.sublayer.sublayers&&!this._parent.sublayer.sublayers.includes(e.sublayer))throw new t(p);return super.add(e,r)}removeAt(e){throw new t(p)}reorder(e,r){throw new t(p)}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__decorate as e}from"tslib";import t from"@arcgis/core/core/Collection";import{ArgumentError as i}from"../ArgumentError.js";import{InvalidOperationError as s}from"../InvalidOperationError.js";import{ItemType as r}from"../ItemType.js";import{FeatureSourceBase as a}from"../data/FeatureSourceBase.js";import{FieldExtension as n}from"../data/FieldExtension.js";import{Schema as o}from"../data/Schema.js";import{layerToJson as l,getLayerJsonType as y,jsonToLayer as h,applyJsonToLayer as p}from"../json/LayerJson.js";import{DefaultArcGISRequestHelper as d}from"../support/ArcGISRequestHelper.js";import{ReadOnlyInitializableCollection as u}from"../support/ReadOnlyInitializableCollection.js";import{serializable as c}from"../support/Serializable.js";import{getLayerUrl as f,isLayer as _,layersAreEquivalent as g}from"../utilities/_layers.js";import{checkArg as m}from"../utilities/checkArg.js";import{compare as b}from"../utilities/collection.js";import{load as S}from"../utilities/esri.js";import{isGroupLayerExtension as L}from"../utilities/extensions.js";import{hasMmapLayer as E}from"../utilities/layers.js";import{getLogger as x}from"../utilities/log.js";import{deepClone as w,objectKeys as v}from"../utilities/object.js";import{toPortalItem as M}from"../utilities/portal.js";import{onCollectionPropertyChange as P,watchEach as I}from"../utilities/watch.js";import{_assignSublayerExtensions as C}from"./_SublayerExtension.js";import{ExtensionBaseLayerListSettings as A,fromLayerListMode as z}from"./support/LayerListSettings.js";import{SublayerExtensionCollectionBase as j}from"./support/_SublayerExtensionCollection.js";const T="Invalid type of layer for this type of layer extension.",V="This type of layer does not have features.",F="This type of layer cannot have sublayers.",$=Object.freeze({supportsAdd:!1,supportsUpdate:!1,supportsDelete:!1,supportsEditing:!1,supportsQuery:!1,supportsAttachmentEditing:!1,supportsStandardizedQueries:!1});export class LayerExtension extends a{get layer(){return this._layer}get mapExtension(){return this._mapExtension}get basemapExtension(){return this._basemapExtension}get groundExtension(){return this._groundExtension}get parentLayerExtension(){return this._parentLayerExtension}get hasFeatures(){return!1}get capabilities(){return this._capabilities()}get renderer(){}get visibilityMode(){return this._visibilityMode}set visibilityMode(e){this._visibilityMode=e,"exclusive"===e&&this._ensureAtMostOneChildSublayerVisible()}get sublayerExtensions(){return this._sublayerExtensions}get requestHelper(){return this._requestHelper||(this._requestHelper=new d),this._requestHelper}set requestHelper(e){this._requestHelper=e}get title(){return this.layer?.title??this._deferredLayerProperties?.title??("string"==typeof this._deferredLayerProperties?.$ref?this._deferredLayerProperties?.$ref:this._deferredLayerProperties?.$ref?.title??this._deferredLayerProperties?.$ref?.id)??"Layer"}get supportsSublayers(){return!1}get effectiveMinScale(){return this.layer&&this.layer.minScale||0}get effectiveMaxScale(){return this.layer&&this.layer.maxScale||0}get isEffectivelyVisible(){const e=!!this.layer&&this.layer.visible;return this.parentLayerExtension?this.parentLayerExtension.isEffectivelyVisible&&e:e}get effectiveFullExtent(){return this.layer?this.layer.fullExtent:void 0}get canChangeScale(){return!0}get canChangeOpacity(){return!0}get canChangeLabels(){return!1}get canChangeRenderer(){return!1}get canChangeDefinitionExpression(){return!1}get initialVisibility(){return this._initialVisibility??this.layer?.visible??!1}get _layerId(){return this.layer?.id??this._deferredLayerProperties?.$ref?.id}get _layerSupportsHideChildren(){return this.supportsSublayers}get _sublayers(){if(this.supportsSublayers)return this.layer?this.layer.sublayers:void 0}static factory;get dynamicallyAddedLayer(){return this._dynamicallyAddedLayer}set dynamicallyAddedLayer(e){this._dynamicallyAddedLayer=e}tpkSource;layerListSettings;allSublayerExtensions;get sublayersAreReadOnly(){return!0}_itemType=r.LAYER_EXTENSION;_watchHandles=[];_mapExtension;_basemapExtension;_groundExtension;_parentLayerExtension;_sublayerExtensions;_layer;_dynamicallyAddedLayer=!1;_deferredLayerProperties;_requestHelper;_initialVisibility;_visibilityMode="independent";_portalItem;constructor(e){super(e);const t={...this.getDefaults(),...e};m("properties.layer",t.layer).isNotMissing();const{layer:i}=t;let s;if(i?.hasOwnProperty("listMode")&&(s=z(i.listMode)),this.layerListSettings=this._createLayerListSettings({...s,...t.layerListSettings}),_(i))m("properties.layer",i).satisfies((e=>this._isSupportedLayer(e)),T),this._setLayer(i);else if(i){if(i.$portalItem){const e=i.$portalItem;this._portalItem=M(e)}this._deferredLayerProperties=i}this._sublayerExtensions=this._createSublayerExtensionCollection(),this.allSublayerExtensions=new D(this),this.watch("parentLayerExtension.isEffectivelyVisible",(()=>this.notifyChange("isEffectivelyVisible"))),this.watch("layer.sublayers",(()=>this.notifyChange("_sublayers")))}static create(e){if(!LayerExtension.factory)throw new s("Cannot create layer extension: no layer extension factory has been registered.");return LayerExtension.factory.create(e)}static async fromPortalItem(e,t){m("portalItemLike",e).isNotMissing();const s=t??{};m("layerExtensionProperties.layer",s.layer).satisfies((e=>!_(e)));const r={...s.layer};m("layerExtensionProperties.layer.$ref",r.$ref).satisfies((e=>null==e));const a=new d,n=M(e);let o;await S(n);const l=n.typeKeywords??"";if("Map Service"===n.type)o=l.includes("Tiled")||l.includes("Hosted Service")?"ArcGISTiledMapServiceLayer":"ArcGISMapServiceLayer";else if("Feature Service"===n.type)o="ArcGISFeatureLayer";else if("Image Service"===n.type){const e=await LayerExtension._getLayerData(n.url,a);e.cacheType?"Map"===e.cacheType?o="ArcGISTiledImageServiceLayer":("Elevation"===e.cacheType||l.includes("Elevation 3D Layer"))&&(o="ArcGISTiledElevationServiceLayer"):o=e.singleFusedMapCache||e.tileInfo||l.includes("Hosted Service")?"ArcGISTiledImageServiceLayer":"ArcGISImageServiceLayer"}else if("CSV"===n.type)o="CSV";else if("KML"===n.type)o="KML";else if("Scene Service"===n.type)l.includes("3DObject")||l.includes("Point")?o="ArcGISSceneServiceLayer":l.includes("IntegratedMesh")?o="IntegratedMeshLayer":l.includes("PointCloud")?o="PointCloudLayer":l.includes("Building")&&(o="BuildingSceneLayer");else if("Stream Service"===n.type)o="ArcGISStreamLayer";else if("Vector Tile Service"===n.type)o="VectorTileLayer";else if("Feature Collection"===n.type){o="ArcGISFeatureLayer";const e=await n.fetchData();r.featureCollection=e}else if("WMTS"===n.type){o="WebTiledLayer";const e=await n.fetchData();Object.assign(r,e)}else if("WMS"===n.type){o="WMS";const e=await n.fetchData();Object.assign(r,e)}if(!o)throw new i("portalItem","Could not determine correct type of LayerExtension to create from portal item");if(r.layerType&&r.layerType!==o)throw new i("layerExtensionProperties.layer.layerType","Layer type defined in layer properties does not match layer type from portal item");return r.layerType=o,r.$portalItem=n,s.layer=r,LayerExtension.create(s)}static async _getLayerData(e,t){const i=await t.request(e,{query:{f:"json"}});if(!i?.data)throw new Error(`Response to request for url ${e} was invalid.`);return i.data}getFeatures(e,t){if(!this.hasFeatures)throw new s(V);return super.getFeatures(e,t)}getFullExtent(){return this.effectiveFullExtent}async addFeatures(e,t){if(m("features",e).isNotMissing(),!this.hasFeatures)throw new s(V);await super.addFeatures(e,t)}async updateFeatures(e,t){if(m("features",e).isNotMissing(),!this.hasFeatures)throw new s(V);await super.updateFeatures(e,t)}async deleteFeatures(e,t){if(m("features",e).isNotMissing(),!this.hasFeatures)throw new s(V);await super.deleteFeatures(e,t)}async _createBackingLayer(){this._portalItem||this.layer||this._deferredLayerProperties?.$ref?!this.layer&&this._portalItem&&this._setLayer(await this._createLayer(this.getDefaults().layer)):(this._setLayer(await this._createLayer(this._deferredLayerProperties)),m("properties.layer",this._layer).satisfies((e=>this._isSupportedLayer(e)),T),this._deferredLayerProperties=void 0)}_setMapExtension(e){const t=this.mapExtension;this._mapExtension=e,t&&this.featureSettings.formatSettings.parent===t.formatSettings&&(this.featureSettings.formatSettings.parent=void 0),e&&(this.featureSettings.formatSettings.parent||(this.featureSettings.formatSettings.parent=e.formatSettings)),this._resolveLayer(),this.notifyChange("mapExtension")}_setBasemapExtension(e){this._basemapExtension=e,this._resolveLayer(),e&&(this.taskSettings.parent=e.taskSettings),this.notifyChange("basemapExtension")}_setGroundExtension(e){this._groundExtension=e,this._resolveLayer(),e&&(this.taskSettings.parent=e.taskSettings),this.notifyChange("groundExtension")}_setParentLayerExtension(e){const t=this._parentLayerExtension;this._parentLayerExtension=e,t&&(this.featureSettings.formatSettings.parent===t.featureSettings.formatSettings&&(this.featureSettings.formatSettings.parent=this.mapExtension?this.mapExtension.formatSettings:void 0),this.taskSettings.parent===t.taskSettings&&(this.taskSettings.parent=void 0)),e&&((!this.featureSettings.formatSettings.parent||this.mapExtension&&this.featureSettings.formatSettings.parent===this.mapExtension.formatSettings)&&(this.featureSettings.formatSettings.parent=e.featureSettings.formatSettings),this.taskSettings.parent||(this.taskSettings.parent=e.taskSettings)),this._resolveLayer(),this.notifyChange("parentLayerExtension")}_resolveLayer(e){if(this.layer||!this._deferredLayerProperties)return;const t=e=>g(e,this._deferredLayerProperties);let i;e?i=e.find(t):this.basemapExtension?.basemap?(i=this.basemapExtension.basemap.baseLayers.find(t),i=i||this.basemapExtension.basemap.referenceLayers.find(t)):this.groundExtension?.ground?i=this.groundExtension.ground.layers.find(t):this.parentLayerExtension?.layer?i=this.parentLayerExtension.layer.layers.find(t):this.mapExtension&&(i=this.mapExtension.map.layers.find(t)),i&&this._isSupportedLayer(i)&&(this._setLayer(i),this._deferredLayerProperties.$portalItem&&B().warn("LayerExtension defined with both $ref and $portalItem. Ignoring $portalItem."))}async _switchLayer(e){if(e===this.layer)return;m("newLayer",e).isNotMissing().satisfies((e=>this._isSupportedLayer(e)),T),this.isInitialized&&await S(e);const t=new Map;if(this._sublayers)for(const e of this._sublayers.toArray())t.set(e.id,this.sublayerExtensions.forSublayer(e));e.visible=this.layer.visible,e.opacity=this.layer.opacity,e.listMode=this.layer.listMode,e.hasOwnProperty("labelsVisible")&&this.layer.hasOwnProperty("labelsVisible")&&(e.labelsVisible=this.layer.labelsVisible);const i=this.schema.fieldExtensions.toArray();this._setLayer(e),i.forEach((e=>{const t=this.schema.fields.find((t=>n.matchesRef(e,{$ref:t.name})));t&&e._switchField(t)}));const s=[];if(this._sublayers){const e=this._sublayers.filter((e=>t.has(e.id))).toArray();s.push(...e.map((async e=>{const i=t.get(e.id);await i._switchSublayer(e),this._sublayerExtensions._register(i)})))}this.isInitialized&&s.push(this._initializeChildren()),await Promise.all(s)}_getProjectWebmapJSON(){if(!this.layer)return;let e=l(this.layer);if(!this.dynamicallyAddedLayer){const{id:t,title:i,layerType:s,visibility:r,opacity:a}=e;e={id:t,title:i,layerType:s,visibility:r,opacity:a}}return e}_onSublayerAddedPostInitialize=async e=>{try{await e.initialize()}catch(t){B().error({message:`Error occurred while initializing sublayer extension for sublayer '${e.title??e.sublayer.id??e.id}'.`,error:t})}};async _onDestroy(){this._watchHandles.forEach((e=>e?.remove())),await Promise.all(this.sublayerExtensions.toArray().map((e=>e.destroy()))),await super._onDestroy()}_getSerializableProperties(){return{...super._getSerializableProperties(),iconUrl:{serializeModes:["initial","project"],serialize:e=>"project"!==e||this.dynamicallyAddedLayer?this.iconUrl:this.getDefault("iconUrl")},visibilityMode:{serializeModes:["initial","project"],serialize:e=>"project"!==e||this.dynamicallyAddedLayer?this.visibilityMode:this.getDefault("visibilityMode"),default:"independent"},tpkSource:{serializeModes:["initial"]},layerListSettings:{serializeModes:["initial","project"],serialize:e=>"project"!==e||this.dynamicallyAddedLayer?this.layerListSettings:this.getDefault("layerListSettings")},sublayerExtensions:{serializeModes:["initial","project"],serialize:e=>this.sublayerExtensions.map((e=>e.toItemUri())).toArray(),deserialize:e=>{C(this.sublayerExtensions,e,(e=>this._createSublayerExtension(e)))}},layer:{serializeModes:["initial","project"],serialize:e=>{if(this.layer){if((this._mapExtension||this._parentLayerExtension||this._basemapExtension||this._groundExtension)&&(this._layer.id||this._layer.title)){const e=y(this._layer),t=this._getSerializableRefLayerProperties(),i=f(this._layer),s=i?{url:i}:{};return{$ref:{id:this._layer.id,title:this._layer.title,subtype:this._getSerializableLayerType(),...s},layerType:e,...t}}return l(this.layer)}return this._deferredLayerProperties?w(this._deferredLayerProperties):void 0},isDefault:()=>{throw new Error("Missing implementation for _getSerializableProperties() > layer > default. Subclasses of LayerExtension must implement this.")},deserialize:e=>{if(_(e)){if(e!==this.layer)throw new Error("Property 'layer' is read-only.")}else if(e){if(this._layer)return this._applyLayerProperties(e,this.layer);this._deferredLayerProperties&&(this._deferredLayerProperties={...this._deferredLayerProperties,...e})}}},dynamicallyAddedLayer:{serializeModes:["project"],default:!1},requestHelper:{serialize:!1}}}_getSerializableLayerType(){}_getSerializableRefLayerProperties(){return{}}_createSublayerExtension(e){if(!this.supportsSublayers)throw new s(F);throw new Error("Missing implementation for _createSublayerExtension(). Subclasses of LayerExtension that support sublayers must implement this.")}async _onInitialize(){if(await super._onInitialize(),await this._createBackingLayer(),this._portalItem&&(await S(this._portalItem),await this._applyPortalItemProperties(this._portalItem),this.layer.title=this._portalItem.title,this.layer.portalItem=this._portalItem,this.iconUrl||(this.iconUrl=this._portalItem.thumbnailUrl),await this._applyLayerProperties(this._deferredLayerProperties,this.layer),this._deferredLayerProperties=void 0),this._resolveLayer(),!this.layer){const e=this._deferredLayerProperties.$ref;throw this._mapExtension||this._parentLayerExtension||this._basemapExtension||this._groundExtension?new s(`No layer found matching reference "${"string"==typeof e?e:JSON.stringify(e)}".`):new s("Cannot resolve layer reference: missing parent.")}this._deferredLayerProperties&&(await this._applyLayerProperties(this._deferredLayerProperties,this.layer),this._deferredLayerProperties=void 0),await this._initializeLayer(),await S(this.layer),this.supportsSublayers&&!this.layer.sublayers&&this.layer._set("sublayers",new t),this._initialVisibility=this.layer.visible,this._sublayerExtensions.onParentInitialized()}async _postInitialize(){await super._postInitialize(),this.layerListSettings.onLayerExtensionInitialized(),this.supportsSublayers&&this._watchHandles.push(P(this,"layer.sublayers",(async e=>{const t=(e.added??[]).map((e=>this.sublayerExtensions.forSublayer(e)));await Promise.all(t.map(this._onSublayerAddedPostInitialize))})))}_applyPortalItemProperties(e){throw new s("Cannot use this type of layer extension with a PortalItem.")}async _initializeLayer(){}_createLayerListSettings(e){return new H(e,this)}_createSublayerExtensionCollection(){return new O(this)}_capabilities(){return $}*_initializableChildCollections(){yield*super._initializableChildCollections(),yield this.sublayerExtensions}async _createLayer(e){return h(e)}_applyLayerProperties(e,t){m("layerJson",e).isNotMissing();const i=e.layerType||e.type;return m("layerJson.layerType",i).satisfies((e=>!e||e===this.getDefault("layer")?.layerType)),m("layer",t).isNotMissing().satisfies((e=>this._isSupportedLayer(e))),p(e,t)}_setLayer(e){if(this._layer=e,e.watch("visible",this._onVisibleChanged),this.layer.watch("minScale",(()=>this.notifyChange("effectiveMinScale"))),this.layer.watch("maxScale",(()=>this.notifyChange("effectiveMaxScale"))),this.layer.watch("title",(()=>this.notifyChange("title"))),this.supportsSublayers)if(this._sublayers)this._setupSublayersHandles();else{const t=e.watch("sublayers",(()=>{this._setupSublayersHandles(),t.remove()}),!0)}this.notifyChange("layer"),this.notifyChange("title"),this.notifyChange("effectiveMinScale"),this.notifyChange("effectiveMaxScale"),this.notifyChange("isEffectivelyVisible")}_setupSublayersHandles(){this._sublayers.on("change",this._onSublayersChange),I(this._sublayers,"visible",this._onSublayersSublayerVisibleChanged)}_onVisibleChanged=e=>{if("inherited"===this.visibilityMode&&this.supportsSublayers&&this._sublayers)for(const t of this._sublayers.toArray())t.visible=e;this.notifyChange("isEffectivelyVisible")};_onSublayersSublayerVisibleChanged=(e,t,i,s)=>{e&&"exclusive"===this.visibilityMode&&this._ensureAChildSublayerVisible(s)};_onSublayersChange=e=>{e.added?.length&&"exclusive"===this.visibilityMode&&this._ensureAChildSublayerVisible(e.added[e.added.length-1])};_ensureAChildSublayerVisible(e){for(const t of this._sublayers.toArray())t!==e&&(t.visible=!1)}_ensureAtMostOneChildSublayerVisible(){this.layer&&this._sublayers&&this._ensureAChildSublayerVisible(this._sublayers.find((e=>e.visible)))}}class O extends j{constructor(e){super(e,"_sublayers"),this._layerExtension=e}add(e,t){if(m("sublayerX",e).isNotMissing(),!this._layerExtension.supportsSublayers)throw new s(F);const i=e.sublayer?e.sublayer.layer:void 0;return i&&i!==this._layerExtension.layer&&i.sublayers.remove(e.sublayer),super.add(e,t)}}class D extends u{get _collection(){return this._layerExtension.sublayerExtensions.flatten((e=>e.sublayerExtensions))}_layerExtension;constructor(e){super(),this._layerExtension=e}findById(e){return m("id",e).isNotMissing(),this.find((t=>t.id===e))}findBySublayerId(e){return m("id",e).isNotMissing(),this.find((t=>t._sublayerId===e))}forSublayer(e){return m("sublayer",e).isNotMissing(),this.findBySublayerId(e.id)}emit(e,i){if("change"===e){const s=new t;s.addMany(i.added);const r=s.flatten((e=>e.sublayerExtensions)).toArray(),a=new t;a.addMany(i.removed);const n=a.flatten((e=>e.sublayerExtensions)).toArray(),o=new t;o.addMany(i.moved);const l=o.flatten((e=>e.sublayerExtensions)).toArray();return super.emit(e,{added:r,removed:n,moved:l,target:this})}return super.emit(e,i)}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.sublayer}}let H=class extends A{get _esriLayer(){return this._extension.layer}get _listModePath(){return"layer.listMode"}get _supportsChildren(){return this._extension.supportsSublayers}};H=e([c],H);export{H as LayerExtensionLayerListSettings};function N(e){return"object"==typeof e?e:{property:e}}let R=class extends o{_layerExtension;_layerBindings=new Map;constructor(e){if(super(),this._layerExtension=e,this._bindSettingsToLayerProperties(),e.layer)this._onLayerResolved(e.layer);else{const t=e.watch("layer",(()=>{this._onLayerResolved(e.layer),t.remove()}),!0)}}_getPropertyBindings(){return{}}_getSetting(e,t){if(this._layerBindings.has(e)){const t=N(this._layerBindings.get(e));if(t.hasOwnProperty("value"))return t.value;if(this._layerExtension.layer)return this._layerExtension.layer[t.property]}return super._getSetting(e,t)}_setSetting(e,t){if(this._layerBindings.has(e)){const i=N(this._layerBindings.get(e));if(i.readonly||i.hasOwnProperty("value"))throw new s(ERR_SCHEMA_READ_ONLY);if(this._layerExtension.layer)return void(this._layerExtension.layer[i.property]=t)}super._setSetting(e,t)}_bindSettingsToLayerProperties(){const e=this._getPropertyBindings();for(const t of v(e)){const i=N(e[t]);this._layerBindings.set(t,i),i.hasOwnProperty("value")||this._layerExtension.watch(`layer.${String(i.property)}`,(()=>this.notifyChange(t)),!i.hasOwnProperty("sync")||i.sync)}}_onLayerResolved(e){for(const t of this._layerBindings.keys())this.isModified(t)&&(e[t]=this[t],this.reset(t))}};R=e([c],R);export{R as LayerExtensionSchema};export function _assignLayerExtensions(e,t){return b(e,t,{onNew:(t,i)=>{e.add(t instanceof LayerExtension?t:LayerExtension.create(t),k(t)?void 0:i)},onMatch:(t,i,s,r)=>{i instanceof LayerExtension||t.assignProperties(i),s===r||k(i)||e.reorder(t,r)},onMissing:t=>{(E([t])||L(t)&&0===t.layerExtensions.toArray().length)&&e.remove(t)},equals:(e,t)=>t instanceof LayerExtension?t===e:!!g(e.layer,t.layer)||e.id===t.id})}function B(){return x("geocortex.api.mapping.LayerExtension")}function k(e){return e instanceof LayerExtension?!!e._deferredLayerProperties?.$ref:!_(e.layer)&&!!e.layer?.$ref}let q=class extends R{_setSetting(e,t){if(this._layerBindings.has(e))throw new s(ERR_SCHEMA_READ_ONLY);super._setSetting(e,t)}};q=e([c],q);export{q as LayerExtensionReadOnlySchema};export const ERR_SCHEMA_READ_ONLY="This schema property is read-only.";
|
|
1
|
+
import{__decorate as e}from"tslib";import t from"@arcgis/core/core/Collection";import{ArgumentError as i}from"../ArgumentError.js";import{InvalidOperationError as s}from"../InvalidOperationError.js";import{ItemType as r}from"../ItemType.js";import{FeatureSourceBase as a}from"../data/FeatureSourceBase.js";import{FieldExtension as n}from"../data/FieldExtension.js";import{Schema as o}from"../data/Schema.js";import{layerToJson as l,getLayerJsonType as y,jsonToLayer as h,applyJsonToLayer as p}from"../json/LayerJson.js";import{DefaultArcGISRequestHelper as d}from"../support/ArcGISRequestHelper.js";import{ReadOnlyInitializableCollection as u}from"../support/ReadOnlyInitializableCollection.js";import{serializable as c}from"../support/Serializable.js";import{getLayerUrl as f,isLayer as _,layersAreEquivalent as g}from"../utilities/_layers.js";import{checkArg as b}from"../utilities/checkArg.js";import{compare as m}from"../utilities/collection.js";import{load as S}from"../utilities/esri.js";import{isGroupLayerExtension as L}from"../utilities/extensions.js";import{hasMmapLayer as E}from"../utilities/layers.js";import{getLogger as x}from"../utilities/log.js";import{deepClone as w,objectKeys as v}from"../utilities/object.js";import{toPortalItem as M}from"../utilities/portal.js";import{onCollectionPropertyChange as P,watchEach as I}from"../utilities/watch.js";import{_assignSublayerExtensions as C}from"./_SublayerExtension.js";import{ExtensionBaseLayerListSettings as A,fromLayerListMode as z}from"./support/LayerListSettings.js";import{SublayerExtensionCollectionBase as j}from"./support/_SublayerExtensionCollection.js";const T="Invalid type of layer for this type of layer extension.",V="This type of layer does not have features.",F="This type of layer cannot have sublayers.",O=Object.freeze({supportsAdd:!1,supportsUpdate:!1,supportsDelete:!1,supportsEditing:!1,supportsQuery:!1,supportsAttachmentEditing:!1,supportsStandardizedQueries:!1});export class LayerExtension extends a{get layer(){return this._layer}get mapExtension(){return this._mapExtension}get basemapExtension(){return this._basemapExtension}get groundExtension(){return this._groundExtension}get parentLayerExtension(){return this._parentLayerExtension}get hasFeatures(){return!1}get capabilities(){return this._capabilities()}get renderer(){}get visibilityMode(){return this._visibilityMode}set visibilityMode(e){this._visibilityMode=e,"exclusive"===e&&this._ensureAtMostOneChildSublayerVisible()}get sublayerExtensions(){return this._sublayerExtensions}get requestHelper(){return this._requestHelper||(this._requestHelper=new d),this._requestHelper}set requestHelper(e){this._requestHelper=e}get title(){return this.layer?.title??this._deferredLayerProperties?.title??("string"==typeof this._deferredLayerProperties?.$ref?this._deferredLayerProperties?.$ref:this._deferredLayerProperties?.$ref?.title??this._deferredLayerProperties?.$ref?.id)??"Layer"}get supportsSublayers(){return!1}get effectiveMinScale(){return this.layer&&this.layer.minScale||0}get effectiveMaxScale(){return this.layer&&this.layer.maxScale||0}get isEffectivelyVisible(){const e=!!this.layer&&this.layer.visible;return this.parentLayerExtension?this.parentLayerExtension.isEffectivelyVisible&&e:e}get effectiveFullExtent(){return this.layer?this.layer.fullExtent:void 0}get canChangeScale(){return!0}get canChangeOpacity(){return!0}get canChangeLabels(){return!1}get canChangeRenderer(){return!1}get canChangeDefinitionExpression(){return!1}get initialVisibility(){return this._initialVisibility??this.layer?.visible??!1}get _layerId(){return this.layer?.id??this._deferredLayerProperties?.$ref?.id}get _layerSupportsHideChildren(){return this.supportsSublayers}get _sublayers(){if(this.supportsSublayers)return this.layer?this.layer.sublayers:void 0}static factory;get dynamicallyAddedLayer(){return this._dynamicallyAddedLayer}set dynamicallyAddedLayer(e){this._dynamicallyAddedLayer=e}tpkSource;layerListSettings;allSublayerExtensions;get sublayersAreReadOnly(){return!0}_itemType=r.LAYER_EXTENSION;_watchHandles=[];_mapExtension;_basemapExtension;_groundExtension;_parentLayerExtension;_sublayerExtensions;_layer;_dynamicallyAddedLayer=!1;_deferredLayerProperties;_requestHelper;_initialVisibility;_visibilityMode="independent";_portalItem;constructor(e){super(e);const t={...this.getDefaults(),...e};b("properties.layer",t.layer).isNotMissing();const{layer:i}=t;let s;if(i?.hasOwnProperty("listMode")&&(s=z(i.listMode)),this.layerListSettings=this._createLayerListSettings({...s,...t.layerListSettings}),_(i))b("properties.layer",i).satisfies((e=>this._isSupportedLayer(e)),T),this._setLayer(i);else if(i){if(i.$portalItem){const e=i.$portalItem;this._portalItem=M(e)}this._deferredLayerProperties=i}this._sublayerExtensions=this._createSublayerExtensionCollection(),this.allSublayerExtensions=new D(this),this.watch("parentLayerExtension.isEffectivelyVisible",(()=>this.notifyChange("isEffectivelyVisible"))),this.watch("layer.sublayers",(()=>this.notifyChange("_sublayers")))}static create(e){if(!LayerExtension.factory)throw new s("Cannot create layer extension: no layer extension factory has been registered.");return LayerExtension.factory.create(e)}static async fromPortalItem(e,t){b("portalItemLike",e).isNotMissing();const s=t??{};b("layerExtensionProperties.layer",s.layer).satisfies((e=>!_(e)));const r={...s.layer};b("layerExtensionProperties.layer.$ref",r.$ref).satisfies((e=>null==e));const a=new d,n=M(e);let o;await S(n);const l=n.typeKeywords??"";if("Map Service"===n.type)o=l.includes("Tiled")||l.includes("Hosted Service")?"ArcGISTiledMapServiceLayer":"ArcGISMapServiceLayer";else if("Feature Service"===n.type)o="ArcGISFeatureLayer";else if("Image Service"===n.type){const e=await LayerExtension._getLayerData(n.url,a);e.cacheType?"Map"===e.cacheType?o="ArcGISTiledImageServiceLayer":("Elevation"===e.cacheType||l.includes("Elevation 3D Layer"))&&(o="ArcGISTiledElevationServiceLayer"):o=e.singleFusedMapCache||e.tileInfo||l.includes("Hosted Service")?"ArcGISTiledImageServiceLayer":"ArcGISImageServiceLayer"}else if("CSV"===n.type)o="CSV";else if("KML"===n.type)o="KML";else if("Scene Service"===n.type)l.includes("3DObject")||l.includes("Point")?o="ArcGISSceneServiceLayer":l.includes("IntegratedMesh")?o="IntegratedMeshLayer":l.includes("PointCloud")?o="PointCloudLayer":l.includes("Building")&&(o="BuildingSceneLayer");else if("Stream Service"===n.type)o="ArcGISStreamLayer";else if("Vector Tile Service"===n.type)o="VectorTileLayer";else if("Feature Collection"===n.type){o="ArcGISFeatureLayer";const e=await n.fetchData();r.featureCollection=e}else if("WFS"===n.type){o="WFS";const e=await n.fetchData();Object.assign(r,e)}else if("WMTS"===n.type){o="WebTiledLayer";const e=await n.fetchData();Object.assign(r,e)}else if("WMS"===n.type){o="WMS";const e=await n.fetchData();Object.assign(r,e)}if(!o)throw new i("portalItem","Could not determine correct type of LayerExtension to create from portal item");if(r.layerType&&r.layerType!==o)throw new i("layerExtensionProperties.layer.layerType","Layer type defined in layer properties does not match layer type from portal item");return r.layerType=o,r.$portalItem=n,s.layer=r,LayerExtension.create(s)}static async _getLayerData(e,t){const i=await t.request(e,{query:{f:"json"}});if(!i?.data)throw new Error(`Response to request for url ${e} was invalid.`);return i.data}getFeatures(e,t){if(!this.hasFeatures)throw new s(V);return super.getFeatures(e,t)}getFullExtent(){return this.effectiveFullExtent}async addFeatures(e,t){if(b("features",e).isNotMissing(),!this.hasFeatures)throw new s(V);await super.addFeatures(e,t)}async updateFeatures(e,t){if(b("features",e).isNotMissing(),!this.hasFeatures)throw new s(V);await super.updateFeatures(e,t)}async deleteFeatures(e,t){if(b("features",e).isNotMissing(),!this.hasFeatures)throw new s(V);await super.deleteFeatures(e,t)}async _createBackingLayer(){this._portalItem||this.layer||this._deferredLayerProperties?.$ref?!this.layer&&this._portalItem&&this._setLayer(await this._createLayer(this.getDefaults().layer)):(this._setLayer(await this._createLayer(this._deferredLayerProperties)),b("properties.layer",this._layer).satisfies((e=>this._isSupportedLayer(e)),T),this._deferredLayerProperties=void 0)}_setMapExtension(e){const t=this.mapExtension;this._mapExtension=e,t&&this.featureSettings.formatSettings.parent===t.formatSettings&&(this.featureSettings.formatSettings.parent=void 0),e&&(this.featureSettings.formatSettings.parent||(this.featureSettings.formatSettings.parent=e.formatSettings)),this._resolveLayer(),this.notifyChange("mapExtension")}_setBasemapExtension(e){this._basemapExtension=e,this._resolveLayer(),e&&(this.taskSettings.parent=e.taskSettings),this.notifyChange("basemapExtension")}_setGroundExtension(e){this._groundExtension=e,this._resolveLayer(),e&&(this.taskSettings.parent=e.taskSettings),this.notifyChange("groundExtension")}_setParentLayerExtension(e){const t=this._parentLayerExtension;this._parentLayerExtension=e,t&&(this.featureSettings.formatSettings.parent===t.featureSettings.formatSettings&&(this.featureSettings.formatSettings.parent=this.mapExtension?this.mapExtension.formatSettings:void 0),this.taskSettings.parent===t.taskSettings&&(this.taskSettings.parent=void 0)),e&&((!this.featureSettings.formatSettings.parent||this.mapExtension&&this.featureSettings.formatSettings.parent===this.mapExtension.formatSettings)&&(this.featureSettings.formatSettings.parent=e.featureSettings.formatSettings),this.taskSettings.parent||(this.taskSettings.parent=e.taskSettings)),this._resolveLayer(),this.notifyChange("parentLayerExtension")}_resolveLayer(e){if(this.layer||!this._deferredLayerProperties)return;const t=e=>g(e,this._deferredLayerProperties);let i;e?i=e.find(t):this.basemapExtension?.basemap?(i=this.basemapExtension.basemap.baseLayers.find(t),i=i||this.basemapExtension.basemap.referenceLayers.find(t)):this.groundExtension?.ground?i=this.groundExtension.ground.layers.find(t):this.parentLayerExtension?.layer?i=this.parentLayerExtension.layer.layers.find(t):this.mapExtension&&(i=this.mapExtension.map.layers.find(t)),i&&this._isSupportedLayer(i)&&(this._setLayer(i),this._deferredLayerProperties.$portalItem&&B().warn("LayerExtension defined with both $ref and $portalItem. Ignoring $portalItem."))}async _switchLayer(e){if(e===this.layer)return;b("newLayer",e).isNotMissing().satisfies((e=>this._isSupportedLayer(e)),T),this.isInitialized&&await S(e);const t=new Map;if(this._sublayers)for(const e of this._sublayers.toArray())t.set(e.id,this.sublayerExtensions.forSublayer(e));e.visible=this.layer.visible,e.opacity=this.layer.opacity,e.listMode=this.layer.listMode,e.hasOwnProperty("labelsVisible")&&this.layer.hasOwnProperty("labelsVisible")&&(e.labelsVisible=this.layer.labelsVisible);const i=this.schema.fieldExtensions.toArray();this._setLayer(e),i.forEach((e=>{const t=this.schema.fields.find((t=>n.matchesRef(e,{$ref:t.name})));t&&e._switchField(t)}));const s=[];if(this._sublayers){const e=this._sublayers.filter((e=>t.has(e.id))).toArray();s.push(...e.map((async e=>{const i=t.get(e.id);await i._switchSublayer(e),this._sublayerExtensions._register(i)})))}this.isInitialized&&s.push(this._initializeChildren()),await Promise.all(s)}_getProjectWebmapJSON(){if(!this.layer)return;let e=l(this.layer);if(!this.dynamicallyAddedLayer){const{id:t,title:i,layerType:s,visibility:r,opacity:a}=e;e={id:t,title:i,layerType:s,visibility:r,opacity:a}}return e}_onSublayerAddedPostInitialize=async e=>{try{await e.initialize()}catch(t){B().error({message:`Error occurred while initializing sublayer extension for sublayer '${e.title??e.sublayer.id??e.id}'.`,error:t})}};async _onDestroy(){this._watchHandles.forEach((e=>e?.remove())),await Promise.all(this.sublayerExtensions.toArray().map((e=>e.destroy()))),await super._onDestroy()}_getSerializableProperties(){return{...super._getSerializableProperties(),iconUrl:{serializeModes:["initial","project"],serialize:e=>"project"!==e||this.dynamicallyAddedLayer?this.iconUrl:this.getDefault("iconUrl")},visibilityMode:{serializeModes:["initial","project"],serialize:e=>"project"!==e||this.dynamicallyAddedLayer?this.visibilityMode:this.getDefault("visibilityMode"),default:"independent"},tpkSource:{serializeModes:["initial"]},layerListSettings:{serializeModes:["initial","project"],serialize:e=>"project"!==e||this.dynamicallyAddedLayer?this.layerListSettings:this.getDefault("layerListSettings")},sublayerExtensions:{serializeModes:["initial","project"],serialize:e=>this.sublayerExtensions.map((e=>e.toItemUri())).toArray(),deserialize:e=>{C(this.sublayerExtensions,e,(e=>this._createSublayerExtension(e)))}},layer:{serializeModes:["initial","project"],serialize:e=>{if(this.layer){if((this._mapExtension||this._parentLayerExtension||this._basemapExtension||this._groundExtension)&&(this._layer.id||this._layer.title)){const e=y(this._layer),t=this._getSerializableRefLayerProperties(),i=f(this._layer),s=i?{url:i}:{};return{$ref:{id:this._layer.id,title:this._layer.title,subtype:this._getSerializableLayerType(),...s},layerType:e,...t}}return l(this.layer)}return this._deferredLayerProperties?w(this._deferredLayerProperties):void 0},isDefault:()=>{throw new Error("Missing implementation for _getSerializableProperties() > layer > default. Subclasses of LayerExtension must implement this.")},deserialize:e=>{if(_(e)){if(e!==this.layer)throw new Error("Property 'layer' is read-only.")}else if(e){if(this._layer)return this._applyLayerProperties(e,this.layer);this._deferredLayerProperties&&(this._deferredLayerProperties={...this._deferredLayerProperties,...e})}}},dynamicallyAddedLayer:{serializeModes:["project"],default:!1},requestHelper:{serialize:!1}}}_getSerializableLayerType(){}_getSerializableRefLayerProperties(){return{}}_createSublayerExtension(e){if(!this.supportsSublayers)throw new s(F);throw new Error("Missing implementation for _createSublayerExtension(). Subclasses of LayerExtension that support sublayers must implement this.")}async _onInitialize(){if(await super._onInitialize(),await this._createBackingLayer(),this._portalItem&&(await S(this._portalItem),await this._applyPortalItemProperties(this._portalItem),this.layer.title=this._portalItem.title,this.layer.portalItem=this._portalItem,this.iconUrl||(this.iconUrl=this._portalItem.thumbnailUrl),await this._applyLayerProperties(this._deferredLayerProperties,this.layer),this._deferredLayerProperties=void 0),this._resolveLayer(),!this.layer){const e=this._deferredLayerProperties.$ref;throw this._mapExtension||this._parentLayerExtension||this._basemapExtension||this._groundExtension?new s(`No layer found matching reference "${"string"==typeof e?e:JSON.stringify(e)}".`):new s("Cannot resolve layer reference: missing parent.")}this._deferredLayerProperties&&(await this._applyLayerProperties(this._deferredLayerProperties,this.layer),this._deferredLayerProperties=void 0),await this._initializeLayer(),await S(this.layer),this.supportsSublayers&&!this.layer.sublayers&&this.layer._set("sublayers",new t),this._initialVisibility=this.layer.visible,this._sublayerExtensions.onParentInitialized()}async _postInitialize(){await super._postInitialize(),this.layerListSettings.onLayerExtensionInitialized(),this.supportsSublayers&&this._watchHandles.push(P(this,"layer.sublayers",(async e=>{const t=(e.added??[]).map((e=>this.sublayerExtensions.forSublayer(e)));await Promise.all(t.map(this._onSublayerAddedPostInitialize))})))}_applyPortalItemProperties(e){throw new s("Cannot use this type of layer extension with a PortalItem.")}async _initializeLayer(){}_createLayerListSettings(e){return new H(e,this)}_createSublayerExtensionCollection(){return new $(this)}_capabilities(){return O}*_initializableChildCollections(){yield*super._initializableChildCollections(),yield this.sublayerExtensions}async _createLayer(e){return h(e)}_applyLayerProperties(e,t){b("layerJson",e).isNotMissing();const i=e.layerType||e.type;return b("layerJson.layerType",i).satisfies((e=>!e||e===this.getDefault("layer")?.layerType)),b("layer",t).isNotMissing().satisfies((e=>this._isSupportedLayer(e))),p(e,t)}_setLayer(e){if(this._layer=e,e.watch("visible",this._onVisibleChanged),this.layer.watch("minScale",(()=>this.notifyChange("effectiveMinScale"))),this.layer.watch("maxScale",(()=>this.notifyChange("effectiveMaxScale"))),this.layer.watch("title",(()=>this.notifyChange("title"))),this.supportsSublayers)if(this._sublayers)this._setupSublayersHandles();else{const t=e.watch("sublayers",(()=>{this._setupSublayersHandles(),t.remove()}),!0)}this.notifyChange("layer"),this.notifyChange("title"),this.notifyChange("effectiveMinScale"),this.notifyChange("effectiveMaxScale"),this.notifyChange("isEffectivelyVisible")}_setupSublayersHandles(){this._sublayers.on("change",this._onSublayersChange),I(this._sublayers,"visible",this._onSublayersSublayerVisibleChanged)}_onVisibleChanged=e=>{if("inherited"===this.visibilityMode&&this.supportsSublayers&&this._sublayers)for(const t of this._sublayers.toArray())t.visible=e;this.notifyChange("isEffectivelyVisible")};_onSublayersSublayerVisibleChanged=(e,t,i,s)=>{e&&"exclusive"===this.visibilityMode&&this._ensureAChildSublayerVisible(s)};_onSublayersChange=e=>{e.added?.length&&"exclusive"===this.visibilityMode&&this._ensureAChildSublayerVisible(e.added[e.added.length-1])};_ensureAChildSublayerVisible(e){for(const t of this._sublayers.toArray())t!==e&&(t.visible=!1)}_ensureAtMostOneChildSublayerVisible(){this.layer&&this._sublayers&&this._ensureAChildSublayerVisible(this._sublayers.find((e=>e.visible)))}}class $ extends j{constructor(e){super(e,"_sublayers"),this._layerExtension=e}add(e,t){if(b("sublayerX",e).isNotMissing(),!this._layerExtension.supportsSublayers)throw new s(F);const i=e.sublayer?e.sublayer.layer:void 0;return i&&i!==this._layerExtension.layer&&i.sublayers.remove(e.sublayer),super.add(e,t)}}class D extends u{get _collection(){return this._layerExtension.sublayerExtensions.flatten((e=>e.sublayerExtensions))}_layerExtension;constructor(e){super(),this._layerExtension=e}findById(e){return b("id",e).isNotMissing(),this.find((t=>t.id===e))}findBySublayerId(e){return b("id",e).isNotMissing(),this.find((t=>t._sublayerId===e))}forSublayer(e){return b("sublayer",e).isNotMissing(),this.findBySublayerId(e.id)}emit(e,i){if("change"===e){const s=new t;s.addMany(i.added);const r=s.flatten((e=>e.sublayerExtensions)).toArray(),a=new t;a.addMany(i.removed);const n=a.flatten((e=>e.sublayerExtensions)).toArray(),o=new t;o.addMany(i.moved);const l=o.flatten((e=>e.sublayerExtensions)).toArray();return super.emit(e,{added:r,removed:n,moved:l,target:this})}return super.emit(e,i)}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.sublayer}}let H=class extends A{get _esriLayer(){return this._extension.layer}get _listModePath(){return"layer.listMode"}get _supportsChildren(){return this._extension.supportsSublayers}};H=e([c],H);export{H as LayerExtensionLayerListSettings};function N(e){return"object"==typeof e?e:{property:e}}let R=class extends o{_layerExtension;_layerBindings=new Map;constructor(e){if(super(),this._layerExtension=e,this._bindSettingsToLayerProperties(),e.layer)this._onLayerResolved(e.layer);else{const t=e.watch("layer",(()=>{this._onLayerResolved(e.layer),t.remove()}),!0)}}_getPropertyBindings(){return{}}_getSetting(e,t){if(this._layerBindings.has(e)){const t=N(this._layerBindings.get(e));if(t.hasOwnProperty("value"))return t.value;if(this._layerExtension.layer)return this._layerExtension.layer[t.property]}return super._getSetting(e,t)}_setSetting(e,t){if(this._layerBindings.has(e)){const i=N(this._layerBindings.get(e));if(i.readonly||i.hasOwnProperty("value"))throw new s(ERR_SCHEMA_READ_ONLY);if(this._layerExtension.layer)return void(this._layerExtension.layer[i.property]=t)}super._setSetting(e,t)}_bindSettingsToLayerProperties(){const e=this._getPropertyBindings();for(const t of v(e)){const i=N(e[t]);this._layerBindings.set(t,i),i.hasOwnProperty("value")||this._layerExtension.watch(`layer.${String(i.property)}`,(()=>this.notifyChange(t)),!i.hasOwnProperty("sync")||i.sync)}}_onLayerResolved(e){for(const t of this._layerBindings.keys())this.isModified(t)&&(e[t]=this[t],this.reset(t))}};R=e([c],R);export{R as LayerExtensionSchema};export function _assignLayerExtensions(e,t){return m(e,t,{onNew:(t,i)=>{e.add(t instanceof LayerExtension?t:LayerExtension.create(t),k(t)?void 0:i)},onMatch:(t,i,s,r)=>{i instanceof LayerExtension||t.assignProperties(i),s===r||k(i)||e.reorder(t,r)},onMissing:t=>{(E([t])||L(t)&&0===t.layerExtensions.toArray().length)&&e.remove(t)},equals:(e,t)=>t instanceof LayerExtension?t===e:!!g(e.layer,t.layer)||e.id===t.id})}function B(){return x("geocortex.api.mapping.LayerExtension")}function k(e){return e instanceof LayerExtension?!!e._deferredLayerProperties?.$ref:!_(e.layer)&&!!e.layer?.$ref}let q=class extends R{_setSetting(e,t){if(this._layerBindings.has(e))throw new s(ERR_SCHEMA_READ_ONLY);super._setSetting(e,t)}};q=e([c],q);export{q as LayerExtensionReadOnlySchema};export const ERR_SCHEMA_READ_ONLY="This schema property is read-only.";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"@arcgis/core/core/Collection";import{ArgumentError as r}from"../../ArgumentError.js";import{_isFeatureCollection as n,_isGraphicsLayerJson as t,_isMapNotesLayerJson as a,_isRouteLayerJson as o}from"../../json/FeatureLayerJson.js";import{isBuildingSceneLayer as i,isCSVLayer as s,isElevationLayer as y,isFeatureLayer as
|
|
1
|
+
import e from"@arcgis/core/core/Collection";import{ArgumentError as r}from"../../ArgumentError.js";import{_isFeatureCollection as n,_isGraphicsLayerJson as t,_isMapNotesLayerJson as a,_isRouteLayerJson as o}from"../../json/FeatureLayerJson.js";import{isBuildingSceneLayer as i,isCSVLayer as s,isElevationLayer as y,isFeatureLayer as m,isGeoJSONLayer as l,isGeoRssLayer as c,isGraphicsLayer as p,isGroupLayer as w,isImageryLayer as u,isImageryTileLayer as L,isIntegratedMeshLayer as f,isKMLLayer as S,isLayer as j,isMapImageLayer as E,isMapNotesLayer as x,isOpenStreetMapLayer as G,isPointCloudLayer as I,isRouteLayer as A,isSceneLayer as M,isStreamLayer as g,isSubtypeGroupLayer as T,isTileLayer as d,isVectorTileLayer as v,isWebTileLayer as F,isWFSLayer as C,isWMSLayer as W,isWMTSLayer as b}from"../../utilities/_layers.js";import{checkArg as h}from"../../utilities/checkArg.js";import{BuildingSceneLayerExtension as N}from"../BuildingSceneLayerExtension.js";import{CSVLayerExtension as O}from"../CSVLayerExtension.js";import{ElevationLayerExtension as V}from"../ElevationLayerExtension.js";import{FeatureCollectionLayerExtension as J}from"../FeatureCollectionLayerExtension.js";import{FeatureLayerExtension as R}from"../FeatureLayerExtension.js";import{GeoJSONLayerExtension as B}from"../GeoJSONLayerExtension.js";import{GeoRSSLayerExtension as D}from"../GeoRSSLayerExtension.js";import{GraphicsLayerExtension as K}from"../GraphicsLayerExtension.js";import{GroupLayerExtension as P}from"../GroupLayerExtension.js";import{ImageryLayerExtension as U}from"../ImageryLayerExtension.js";import{ImageryTileLayerExtension as k}from"../ImageryTileLayerExtension.js";import{IntegratedMeshLayerExtension as $}from"../IntegratedMeshLayerExtension.js";import{KMLLayerExtension as _}from"../KMLLayerExtension.js";import{MapImageLayerExtension as q}from"../MapImageLayerExtension.js";import{MapNotesLayerExtension as z}from"../MapNotesLayerExtension.js";import{OpenStreetMapLayerExtension as H}from"../OpenStreetMapLayerExtension.js";import{PointCloudLayerExtension as Q}from"../PointCloudLayerExtension.js";import{RouteLayerExtension as X}from"../RouteLayerExtension.js";import{SceneLayerExtension as Y}from"../SceneLayerExtension.js";import{StreamLayerExtension as Z}from"../StreamLayerExtension.js";import{SubtypeGroupLayerExtension as ee}from"../SubtypeGroupLayerExtension.js";import{TileLayerExtension as re}from"../TileLayerExtension.js";import{UnsupportedLayerExtension as ne}from"../UnsupportedLayerExtension.js";import{VectorTileLayerExtension as te}from"../VectorTileLayerExtension.js";import{WFSLayerExtension as ae}from"../WFSLayerExtension.js";import{WMSLayerExtension as oe}from"../WMSLayerExtension.js";import{WMTSLayerExtension as ie}from"../WMTSLayerExtension.js";import{WebTileLayerExtension as se}from"../WebTileLayerExtension.js";export class DefaultLayerExtensionFactory{static instance=new DefaultLayerExtensionFactory;constructor(){}create(ye){if(h("properties",ye).isNotMissing(),h("properties.layer",ye.layer).isNotMissing(),j(ye.layer)){if(i(ye.layer))return new N(ye);if(s(ye.layer))return new O(ye);if(y(ye.layer))return new V(ye);if(g(ye.layer))return new Z(ye);if(m(ye.layer)){const{layer:r}=ye;return e.isCollection(r.source)?new J(ye):new R(ye)}return l(ye.layer)?new B(ye):c(ye.layer)?new D(ye):x(ye.layer)?new z(ye):A(ye.layer)?new X(ye):p(ye.layer)?new K(ye):w(ye.layer)?new P(ye):u(ye.layer)?new U(ye):f(ye.layer)?new $(ye):S(ye.layer)?new _(ye):E(ye.layer)?new q(ye):G(ye.layer)?new H(ye):I(ye.layer)?new Q(ye):M(ye.layer)?new Y(ye):T(ye.layer)?new ee(ye):d(ye.layer)?new re(ye):L(ye.layer)?new k(ye):v(ye.layer)?new te(ye):F(ye.layer)?new se(ye):C(ye.layer)?new ae(ye):W(ye.layer)?new oe(ye):b(ye.layer)?new ie(ye):new ne(ye)}if(ye.layer.layerType)switch(ye.layer.layerType){case"BuildingSceneLayer":return new N(ye);case"CSV":return new O(ye);case"ArcGISTiledElevationServiceLayer":return new V(ye);case"ArcGISFeatureLayer":return a(ye.layer)?new z(ye):o(ye.layer)?new X(ye):t(ye.layer)?new K(ye):n(ye.layer)?new J(ye):new R(ye);case"ArcGISAnnotationLayer":return ye.layer.layerType="ArcGISFeatureLayer",ye.layer.$layerSubType="ArcGISAnnotationLayer",new R(ye);case"GeoRSS":return new D(ye);case"GeoJSON":return new B(ye);case"GroupLayer":return new P(ye);case"ArcGISImageServiceLayer":case"ArcGISImageServiceVectorLayer":return new U(ye);case"IntegratedMeshLayer":return new $(ye);case"KML":return new _(ye);case"ArcGISMapServiceLayer":return new q(ye);case"OpenStreetMap":return new H(ye);case"PointCloudLayer":return new Q(ye);case"ArcGISSceneServiceLayer":return new Y(ye);case"SubtypeGroupLayer":return new ee(ye);case"ArcGISStreamLayer":return new Z(ye);case"ArcGISTiledImageServiceLayer":return new k(ye);case"ArcGISTiledMapServiceLayer":return new re(ye);case"VectorTileLayer":return new te(ye);case"WebTiledLayer":return void 0!==ye.layer.wmtsInfo?new ie(ye):new se(ye);case"WFS":return new ae(ye);case"WMS":return new oe(ye)}else if(ye.layer.type&&"OpenStreetMap"===ye.layer.type)return new H(ye);throw new r("properties.layer","Unable to determine correct type of layer extension to create.")}}
|
package/package.json
CHANGED
package/support/esri.d.ts
CHANGED
|
@@ -50,6 +50,9 @@ export type LayerViewDestroyEvent = __esri.ViewLayerviewDestroyEvent;
|
|
|
50
50
|
export type SceneViewHitTestResult = __esri.SceneViewHitTestResult;
|
|
51
51
|
export type SlideVisibleLayers = __esri.SlideVisibleLayers;
|
|
52
52
|
export type RasterInfo = __esri.RasterInfo;
|
|
53
|
+
export type WFSCapabilities = __esri.WFSCapabilities;
|
|
54
|
+
export type WFSLayerInfo = __esri.WFSLayerInfo;
|
|
55
|
+
export type WFSFeatureType = __esri.WFSFeatureType;
|
|
53
56
|
export type BuildingComponentSublayerCapabilities = __esri.BuildingComponentSublayerCapabilities;
|
|
54
57
|
export type BuildingComponentSublayerCapabilitiesData = __esri.BuildingComponentSublayerCapabilitiesData;
|
|
55
58
|
export type RelationshipQueryProperties = __esri.RelationshipQueryProperties;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__decorate as e}from"tslib";import i from"@arcgis/core/core/Collection";import{isLayerExtension as r,isMapExtension as t,isSublayerExtension as o}from"../../ItemType.js";import{MapExtension as s}from"../../mapping/MapExtension.js";import{InitializableBase as n}from"../../support/InitializableBase.js";import{serializable as d}from"../../support/Serializable.js";import{isCancellation as a}from"../../support/utilities.js";import{groupBy as y}from"../../utilities/array.js";import{AsyncQueue as p,empty as f,from as l}from"../../utilities/asyncIterable.js";import{checkArg as u}from"../../utilities/checkArg.js";import{createCrossTypeUnion as c}from"../../utilities/geometry.js";import{isMap as v}from"../../utilities/mapping.js";import{parallelEach as m}from"../../utilities/promise.js";import{IdentifyError as w}from"./IdentifyError.js";import{IdentifyOptions as
|
|
1
|
+
import{__decorate as e}from"tslib";import i from"@arcgis/core/core/Collection";import{isLayerExtension as r,isMapExtension as t,isSublayerExtension as o}from"../../ItemType.js";import{MapExtension as s}from"../../mapping/MapExtension.js";import{InitializableBase as n}from"../../support/InitializableBase.js";import{serializable as d}from"../../support/Serializable.js";import{isCancellation as a}from"../../support/utilities.js";import{groupBy as y}from"../../utilities/array.js";import{AsyncQueue as p,empty as f,from as l}from"../../utilities/asyncIterable.js";import{checkArg as u}from"../../utilities/checkArg.js";import{createCrossTypeUnion as c}from"../../utilities/geometry.js";import{isMap as v}from"../../utilities/mapping.js";import{parallelEach as m}from"../../utilities/promise.js";import{IdentifyError as w}from"./IdentifyError.js";import{IdentifyOptions as S}from"./IdentifyOptions.js";let h=class extends n{providers=new i;isSupported(e,i,r){return!!this.providers.find((t=>t.isSupported(e,i,r)))}identify(e,r,o){u("sources",e).isNotMissing(),u("geometry",r).isNotMissing();const n={...S.DEFAULTS,...o},{outSpatialReference:d,onSourceComplete:h}=n;if(void 0!==o?.maxResults&&o.maxResults<=0)return f();let I,P,g;Array.isArray(r)?(u("geometry",r).isNotEmpty(),I=r):I=[r];let L=[];i.isCollection(e)?L=e.toArray():t(e)?g=e:v(e)?g=new s({map:e}):L=[...e];let b=0;const j=new p,C=new Map,z=(e,i)=>{if(!i||0===e.length)return;b++;const r=new Map;for(const i of e)r.set(i,{source:i,count:0,time:-1});(async()=>{try{if(j.isDone)return;const t=Date.now();await m(e,(e=>e.initialize())),P=P??await c(I);for await(const o of l(P.map((r=>i.identify(e,r,n))),"eager")){const e=r.get(o.source);if(e&&(e.count++,e.time<0&&(e.time=Date.now()-t)),j.isDone)return;d&&(o.schema.spatialReference=d),j.add(o)}for(const i of e){const e=r.get(i);e&&e.time<0&&(e.time=Date.now()-t)}}catch(i){for(const t of e){const e=r.get(t);e&&(e.failureReason=i)}if(a(i))return void j.reject(i);C.set(e,i)}finally{for(const i of e){const e=r.get(i);e&&h?.(e)}}0==--b&&(C.size?j.reject(new w(C)):j.done())})()};return(async()=>{await this.initialize();try{g&&(await g.initialize(),L=g.getAllFeatureSources(isIdentifiable))}catch(e){j.reject(new Error("Map failed to initialize.",{cause:e}))}y(L,(e=>this.providers.find((i=>i.isSupported(e,r,n))))).forEach(z),0===b&&j.done()})(),j}count(e,r,o){u("sources",e).isNotMissing(),u("geometry",r).isNotMissing();const n={...o,returnGeometry:!1};let d,y=[];i.isCollection(e)?y=e.toArray():t(e)?d=e:v(e)?d=new s({map:e}):y=[...e];let f=0;const l=new p,c=new Map,m=e=>{const i=this.providers.find((i=>i.isSupported(e,r,o)));i&&(f++,(async()=>{if(!l.isDone){try{if(await e.initialize(),l.isDone)return;l.add(await i.count(e,r,n))}catch(i){if(a(i))return void l.reject(i);c.set(e,i)}0==--f&&(c.size?l.reject(new w(c)):l.done())}})())};return(async()=>{await this.initialize();try{d&&(await d.initialize(),y=d.getAllFeatureSources(isIdentifiable))}catch(e){l.reject(new Error("Map failed to initialize.",{cause:e}))}y.forEach(m),0===f&&l.done()})(),l}async _onInitialize(){await super._onInitialize();const{ArcGISSublayerQueryIdentifyProvider:e,BuildingComponentSublayerClientSideIdentifyProvider:i,BuildingComponentSublayerHitTestIdentifyProvider:r,CSVLayer3DHitTestIdentifyProvider:t,CSVLayerClientSideQueryIdentifyProvider:o,FeatureLayer3DHitTestIdentifyProvider:s,FeatureLayerClientSideIdentifyProvider:n,FeatureLayerQueryIdentifyProvider:d,GeoJSONLayer3DHitTestIdentifyProvider:a,GeoJSONLayerClientSideQueryIdentifyProvider:y,GeoRSSLayerIdentifyProvider:p,GraphicsLayerQueryIdentifyProvider:f,ImageryLayerIdentifyProvider:l,KMLLayerQueryIdentifyProvider:u,MapNotesSublayerQueryIdentifyProvider:c,PointCloudLayerHitTestIdentifyProvider:v,RouteLayerQueryIdentifyProvider:m,SceneLayerClientSideIdentifyProvider:w,SceneLayerHitTestIdentifyProvider:S,SceneLayerQueryIdentifyProvider:h,StreamLayerClientSideQueryIdentifyProvider:I,SubtypeSublayerClientSideIdentifyProvider:P,SubtypeSublayerQueryIdentifyProvider:g,WFSLayerClientSideIdentifyProvider:L,WFSLayerQueryIdentifyProvider:b,WMSSublayerIdentifyProvider:j}=await import("./defaultProviders.js");this.providers.add(new e),this.providers.add(new t),this.providers.add(new o),this.providers.add(new s),this.providers.add(new n),this.providers.add(new d),this.providers.add(new a),this.providers.add(new y),this.providers.add(new p),this.providers.add(new l),this.providers.add(new u),this.providers.add(new L),this.providers.add(new b),this.providers.add(new j),this.providers.add(new v),this.providers.add(new S),this.providers.add(new h),this.providers.add(new w),this.providers.add(new I),this.providers.add(new f),this.providers.add(new r),this.providers.add(new i),this.providers.add(new P),this.providers.add(new g),this.providers.add(new m),this.providers.add(new c)}};h=e([d],h);export{h as IdentifyService};export function isIdentifiable(e){return!!e.taskSettings.enableIdentify&&(r(e)?e.layer?.visible:!o(e)||e.sublayer?.visible)}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type Geometry from "@arcgis/core/geometry/Geometry";
|
|
2
|
+
import type { FeatureSource } from "../../data/FeatureSource.js";
|
|
3
|
+
import { ClientSideIdentifyProvider } from "./ClientSideIdentifyProvider.js";
|
|
4
|
+
import type { IdentifyOptions } from "./IdentifyOptions.js";
|
|
5
|
+
/**
|
|
6
|
+
* A query identify provider for WFSLayer that works with the graphics rendered
|
|
7
|
+
* on the map.
|
|
8
|
+
*/
|
|
9
|
+
export declare class WFSLayerClientSideIdentifyProvider extends ClientSideIdentifyProvider {
|
|
10
|
+
/**
|
|
11
|
+
* @inheritDoc
|
|
12
|
+
*/
|
|
13
|
+
isSupported(source: FeatureSource, geometry: Geometry, options?: IdentifyOptions): boolean;
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{isWFSLayer as e}from"../../utilities/_layers.js";import{isPoint as i}from"../../utilities/esri.js";import{ClientSideIdentifyProvider as t}from"./ClientSideIdentifyProvider.js";export class WFSLayerClientSideIdentifyProvider extends t{isSupported(t,r,s){return e(t.layer)&&t.enableClientSideData&&r&&!!t._layerView?.view?.extent?.intersects(i(r)?r:r.extent)}}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type Geometry from "@arcgis/core/geometry/Geometry";
|
|
2
|
+
import type { Feature } from "../../data/Feature.js";
|
|
3
|
+
import type { FeatureSource } from "../../data/FeatureSource.js";
|
|
4
|
+
import type { CountResult } from "../CountResult.js";
|
|
5
|
+
import type { IdentifyOptions } from "./IdentifyOptions.js";
|
|
6
|
+
import { IdentifyProviderBase } from "./IdentifyProviderBase.js";
|
|
7
|
+
/**
|
|
8
|
+
* An identify provider for WFS layers that uses the query endpoint.
|
|
9
|
+
*/
|
|
10
|
+
export declare class WFSLayerQueryIdentifyProvider extends IdentifyProviderBase {
|
|
11
|
+
/**
|
|
12
|
+
* @inheritDoc
|
|
13
|
+
*/
|
|
14
|
+
isSupported(source: FeatureSource, geometry: Geometry, options?: IdentifyOptions): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* @inheritDoc
|
|
17
|
+
*/
|
|
18
|
+
protected _identify(source: FeatureSource, geometry: Geometry, options: IdentifyOptions): AsyncIterable<Feature>;
|
|
19
|
+
/**
|
|
20
|
+
* @inheritDoc
|
|
21
|
+
*/
|
|
22
|
+
protected _count(source: FeatureSource, geometry: Geometry, options: IdentifyOptions): Promise<CountResult>;
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{executeQuery as e,executeCount as t}from"../../support/_query.js";import{isWFSLayerExtension as r}from"../../utilities/extensions.js";import{IdentifyProviderBase as o}from"./IdentifyProviderBase.js";export class WFSLayerQueryIdentifyProvider extends o{isSupported(e,t,o){return r(e)}_identify(t,r,o){const s=t,u=s.layer.createQuery(),i=r;return u.geometry=i,u.outFields=o.outFields??t.featureSettings.outFields,u.returnGeometry=o.returnGeometry,u.outSpatialReference=o.outSpatialReference,u.maxAllowableOffset=o.maxAllowableOffset,s.layer.capabilities.query.supportsPagination&&(u.num=o.maxResults),e(u,s,s.layer,o.cancelToken)}_count(e,r,o){const s=e,u=s.layer.createQuery();return u.geometry=r,u.num=o.maxResults,u.returnGeometry=o.returnGeometry,u.outFields=o.outFields??e.featureSettings.outFields,t(u,s,s.layer,o.cancelToken)}}
|
|
@@ -25,20 +25,15 @@ export declare class WMSSublayerIdentifyProvider extends IdentifyProviderBase {
|
|
|
25
25
|
* @inheritDoc
|
|
26
26
|
*/
|
|
27
27
|
_count(source: FeatureSource, geometry: Geometry, options?: IdentifyOptions): Promise<CountResult>;
|
|
28
|
-
private _resolveWfsFeatureType;
|
|
29
|
-
private _spliceName;
|
|
30
28
|
private _createGetFeatureSpatialQuery;
|
|
31
29
|
private _createGetFeatureElement;
|
|
32
30
|
private _createQueryElement;
|
|
33
|
-
private _createFilterElement;
|
|
34
|
-
private _createSpatialOperatorElement;
|
|
35
31
|
private _createGeometryFieldElement;
|
|
36
32
|
private _createGeometryElement;
|
|
37
33
|
private projectGeometry;
|
|
38
34
|
private _createElement;
|
|
39
35
|
private _getWfsNameSpace;
|
|
40
36
|
private _getGmlNameSpace;
|
|
41
|
-
private
|
|
42
|
-
private _matchOutputFormat;
|
|
37
|
+
private _getCompatibleSR;
|
|
43
38
|
private _getSrsName;
|
|
44
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"@arcgis/core/geometry/SpatialReference";import{
|
|
1
|
+
import e from"@arcgis/core/geometry/SpatialReference";import{InvalidOperationError as t}from"../../InvalidOperationError.js";import{wfsFeatureCollectionToFeatures as r}from"../../mapping/support/ogc.js";import{DefaultRequestHelper as s}from"../../utilities/RequestHelper.js";import{OgcNamespace as i,inferGmlVersion as a}from"../../utilities/_ogc.js";import{checkArg as n}from"../../utilities/checkArg.js";import{isWMSSublayerExtension as o}from"../../utilities/extensions.js";import{esriToGml as l,project as c,esriWktToWkid as m}from"../../utilities/geometry.js";import{IdentifyProviderBase as u}from"./IdentifyProviderBase.js";const p="2.0.0";export class WMSSublayerIdentifyProvider extends u{requestHelper=new s;isSupported(e,t,r){return o(e)&&void 0!==e.layerExtension?.wfsUrl}_identify(e,t,s){const i=(async()=>{const r=e;await r.initialize(),await r.initializeWfs();const i=await this._createGetFeatureSpatialQuery(r,t,s),a={method:"post",body:(new XMLSerializer).serializeToString(i),headers:{"Content-Type":"text/xml; charset=utf-8"}};return this.requestHelper.request(r.layerExtension.wfsUrl,a)})();return async function*(){const t=await i,s=await t.text(),a=(new DOMParser).parseFromString(s,"text/xml");if(!t||!a||a.childNodes.length<1)throw new Error("Response to WFS GetFeature request was invalid.");yield*await r(a.childNodes[0],e)}()}async _count(e,t,s={}){const i=(async()=>{const r=e;await r.initialize(),await r.initializeWfs();const i=await this._createGetFeatureSpatialQuery(r,t,s),a={method:"post",body:(new XMLSerializer).serializeToString(i),headers:{"Content-Type":"text/xml; charset=utf-8"}};return this.requestHelper.request(r.layerExtension.wfsUrl,a)})(),a=await i,n=await a.text(),o=(new DOMParser).parseFromString(n,"text/xml");if(!a||!o||o.childNodes.length<1)throw new Error("Response to WFS GetFeature request was invalid.");const l=await r(o.childNodes[0],e);return{source:e,count:l.length}}async _createGetFeatureSpatialQuery(e,t,r){n("sublayerX",e).isNotMissing(),n("geometry",t).isNotMissing().satisfies((e=>["extent","point","polygon","polyline"].includes(e.type)));const{wfsLayerInfo:s}=e,i=s.wfsCapabilities.featureTypes.find((e=>e.namespaceUri===s.namespaceUri&&e.name===s.name)),a=this._createGetFeatureElement(r),o=await this._createQueryElement(i,t);a.appendChild(o);let l=s.fields.map((e=>e.name)).filter((e=>"__esri_wfs_id__"!==e));const c=r.outFields??e.featureSettings.outFields;c&&c.length>0&&(c.includes("*")||(l=c));const{geometryField:m}=e.wfsLayerInfo;l.includes(m)||(l=l.concat(m));for(const e of l){const t=this._createElement("wfs","PropertyName");t.textContent=e,o.appendChild(t)}const u=this._createElement("fes","Filter");o.appendChild(u);const p=this._createElement("fes","Intersects");u.appendChild(p);const f=this._createGeometryFieldElement(e);p.appendChild(f);const d=await this._createGeometryElement(e,t);return p.appendChild(d),a}_createGetFeatureElement(e){const t=this._createElement("wfs","GetFeature");t.setAttribute("service","WFS"),t.setAttribute("version",p),t.setAttribute("xmlns:xs",i.XS),t.setAttribute("xmlns:ogc",i.OGC),t.setAttribute("xmlns:wfs",this._getWfsNameSpace(p)),t.setAttribute("xmlns:gml",this._getGmlNameSpace(p)),t.setAttribute("outputFormat","application/gml+xml; version=3.2");let r=1e3;return e?.maxResults&&(r=e.maxResults),t.setAttribute("count",r.toString()),t.setAttribute("xmlns:fes",i.FES_2_0),t}async _createQueryElement(e,t){const r=this._createElement("wfs","Query"),s=await this._getCompatibleSR(e,t),i=this._getSrsName(s);return r.setAttribute("typeNames",e.name),r.setAttribute("srsName",i),r}_createGeometryFieldElement(e){const{geometryField:r}=e.wfsLayerInfo;if(!r)throw new t("The WFS feature type does not have a geometry field");const s=this._createElement("fes","ValueReference");return s.textContent=r,s}async _createGeometryElement(e,t){n("geometry",t).isNotMissing(),n("geometry.spatialReference",t.spatialReference).isNotMissing();const r={gmlVersion:a(p)},s=await this._getCompatibleSR(e.wfsFeatureType,t);if(r.srsName=this._getSrsName(s),s.equals(t.spatialReference))return l(t,r);{const s=await this.projectGeometry(t,e.wfsFeatureType.defaultSpatialReference);return l(s,r)}}async projectGeometry(t,r){const s=await c([t],new e({wkid:r}));if(s&&s.length>0)return s[0];throw new Error("Unable to create a geometry element.")}_createElement(e,t){n("name",t).isNotMissing();const r=document.implementation.createDocument(void 0,"temp",void 0);return e?r.createElement(`${e}:${t}`):r.createElement(t)}_getWfsNameSpace(e){switch(e){case"1.0.0":case"1.1.0":return i.WFS;default:return i.WFS_2_0}}_getGmlNameSpace(e){switch(e){case"1.0.0":case"1.1.0":return i.GML;default:return i.GML_3_2}}async _getCompatibleSR(t,r){n("wfsFeatureType",t).isNotMissing(),n("geometry",r).isNotMissing();const s=r.spatialReference.wkid?r.spatialReference:new e({wkid:await m(r.spatialReference.wkt)});return t.supportedSpatialReferences.map((t=>new e({wkid:t}))).find((e=>e.equals(s)))??new e({wkid:t.defaultSpatialReference})}_getSrsName(e){return`EPSG:${e.wkid}`}}
|
|
@@ -21,4 +21,6 @@ export { SceneLayerQueryIdentifyProvider } from "./SceneLayerQueryIdentifyProvid
|
|
|
21
21
|
export { StreamLayerClientSideQueryIdentifyProvider } from "./StreamLayerClientSideQueryIdentifyProvider.js";
|
|
22
22
|
export { SubtypeSublayerClientSideIdentifyProvider } from "./SubtypeSublayerClientSideIdentifyProvider.js";
|
|
23
23
|
export { SubtypeSublayerQueryIdentifyProvider } from "./SubtypeSublayerQueryIdentifyProvider.js";
|
|
24
|
+
export { WFSLayerClientSideIdentifyProvider } from "./WFSLayerClientSideIdentifyProvider.js";
|
|
25
|
+
export { WFSLayerQueryIdentifyProvider } from "./WFSLayerQueryIdentifyProvider.js";
|
|
24
26
|
export { WMSSublayerIdentifyProvider } from "./WMSSublayerIdentifyProvider.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{ArcGISSublayerQueryIdentifyProvider}from"./ArcGISSublayerQueryIdentifyProvider.js";export{BuildingComponentSublayerClientSideIdentifyProvider}from"./BuildingComponentSublayerClientSideIdentifyProvider.js";export{BuildingComponentSublayerHitTestIdentifyProvider}from"./BuildingComponentSublayerHitTestIdentifyProvider.js";export{CSVLayer3DHitTestIdentifyProvider}from"./CSVLayer3DHitTestIdentifyProvider.js";export{CSVLayerClientSideQueryIdentifyProvider}from"./CSVLayerClientSideQueryIdentifyProvider.js";export{FeatureLayer3DHitTestIdentifyProvider}from"./FeatureLayer3DHitTestIdentifyProvider.js";export{FeatureLayerClientSideIdentifyProvider}from"./FeatureLayerClientSideIdentifyProvider.js";export{FeatureLayerQueryIdentifyProvider}from"./FeatureLayerQueryIdentifyProvider.js";export{GeoJSONLayer3DHitTestIdentifyProvider}from"./GeoJSONLayer3DHitTestIdentifyProvider.js";export{GeoJSONLayerClientSideQueryIdentifyProvider}from"./GeoJSONLayerClientSideQueryIdentifyProvider.js";export{GeoRSSLayerIdentifyProvider}from"./GeoRSSLayerIdentifyProvider.js";export{GraphicsLayerQueryIdentifyProvider}from"./GraphicsLayerQueryIdentifyProvider.js";export{ImageryLayerIdentifyProvider}from"./ImageryLayerIdentifyProvider.js";export{KMLLayerQueryIdentifyProvider}from"./KMLLayerQueryIdentifyProvider.js";export{MapNotesSublayerQueryIdentifyProvider}from"./MapNotesSublayerQueryIdentifyProvider.js";export{PointCloudLayerHitTestIdentifyProvider}from"./PointCloudLayerHitTestIdentifyProvider.js";export{RouteLayerQueryIdentifyProvider}from"./RouteLayerQueryIdentifyProvider.js";export{SceneLayerClientSideIdentifyProvider}from"./SceneLayerClientSideIdentifyProvider.js";export{SceneLayerHitTestIdentifyProvider}from"./SceneLayerHitTestIdentifyProvider.js";export{SceneLayerQueryIdentifyProvider}from"./SceneLayerQueryIdentifyProvider.js";export{StreamLayerClientSideQueryIdentifyProvider}from"./StreamLayerClientSideQueryIdentifyProvider.js";export{SubtypeSublayerClientSideIdentifyProvider}from"./SubtypeSublayerClientSideIdentifyProvider.js";export{SubtypeSublayerQueryIdentifyProvider}from"./SubtypeSublayerQueryIdentifyProvider.js";export{WMSSublayerIdentifyProvider}from"./WMSSublayerIdentifyProvider.js";
|
|
1
|
+
export{ArcGISSublayerQueryIdentifyProvider}from"./ArcGISSublayerQueryIdentifyProvider.js";export{BuildingComponentSublayerClientSideIdentifyProvider}from"./BuildingComponentSublayerClientSideIdentifyProvider.js";export{BuildingComponentSublayerHitTestIdentifyProvider}from"./BuildingComponentSublayerHitTestIdentifyProvider.js";export{CSVLayer3DHitTestIdentifyProvider}from"./CSVLayer3DHitTestIdentifyProvider.js";export{CSVLayerClientSideQueryIdentifyProvider}from"./CSVLayerClientSideQueryIdentifyProvider.js";export{FeatureLayer3DHitTestIdentifyProvider}from"./FeatureLayer3DHitTestIdentifyProvider.js";export{FeatureLayerClientSideIdentifyProvider}from"./FeatureLayerClientSideIdentifyProvider.js";export{FeatureLayerQueryIdentifyProvider}from"./FeatureLayerQueryIdentifyProvider.js";export{GeoJSONLayer3DHitTestIdentifyProvider}from"./GeoJSONLayer3DHitTestIdentifyProvider.js";export{GeoJSONLayerClientSideQueryIdentifyProvider}from"./GeoJSONLayerClientSideQueryIdentifyProvider.js";export{GeoRSSLayerIdentifyProvider}from"./GeoRSSLayerIdentifyProvider.js";export{GraphicsLayerQueryIdentifyProvider}from"./GraphicsLayerQueryIdentifyProvider.js";export{ImageryLayerIdentifyProvider}from"./ImageryLayerIdentifyProvider.js";export{KMLLayerQueryIdentifyProvider}from"./KMLLayerQueryIdentifyProvider.js";export{MapNotesSublayerQueryIdentifyProvider}from"./MapNotesSublayerQueryIdentifyProvider.js";export{PointCloudLayerHitTestIdentifyProvider}from"./PointCloudLayerHitTestIdentifyProvider.js";export{RouteLayerQueryIdentifyProvider}from"./RouteLayerQueryIdentifyProvider.js";export{SceneLayerClientSideIdentifyProvider}from"./SceneLayerClientSideIdentifyProvider.js";export{SceneLayerHitTestIdentifyProvider}from"./SceneLayerHitTestIdentifyProvider.js";export{SceneLayerQueryIdentifyProvider}from"./SceneLayerQueryIdentifyProvider.js";export{StreamLayerClientSideQueryIdentifyProvider}from"./StreamLayerClientSideQueryIdentifyProvider.js";export{SubtypeSublayerClientSideIdentifyProvider}from"./SubtypeSublayerClientSideIdentifyProvider.js";export{SubtypeSublayerQueryIdentifyProvider}from"./SubtypeSublayerQueryIdentifyProvider.js";export{WFSLayerClientSideIdentifyProvider}from"./WFSLayerClientSideIdentifyProvider.js";export{WFSLayerQueryIdentifyProvider}from"./WFSLayerQueryIdentifyProvider.js";export{WMSSublayerIdentifyProvider}from"./WMSSublayerIdentifyProvider.js";
|
|
@@ -7,13 +7,14 @@ import type { SceneLayerExtension } from "../../mapping/SceneLayerExtension.js";
|
|
|
7
7
|
import type { StreamLayerExtension } from "../../mapping/StreamLayerExtension.js";
|
|
8
8
|
import type { SubtypeGroupLayerExtension } from "../../mapping/SubtypeGroupLayerExtension.js";
|
|
9
9
|
import type { SubtypeSublayerExtension } from "../../mapping/SubtypeSublayerExtension.js";
|
|
10
|
+
import type { WFSLayerExtension } from "../../mapping/WFSLayerExtension.js";
|
|
10
11
|
import type { CountResult } from "../CountResult.js";
|
|
11
12
|
import type { QueryOptions } from "./QueryOptions.js";
|
|
12
13
|
import { QueryProviderBase } from "./QueryProviderBase.js";
|
|
13
14
|
/**
|
|
14
15
|
* The types of LayerExtensions that support client-side queries.
|
|
15
16
|
*/
|
|
16
|
-
export type ClientSideQueryableLayerExtension = CSVLayerExtension | FeatureLayerExtension | SceneLayerExtension | StreamLayerExtension | SubtypeGroupLayerExtension;
|
|
17
|
+
export type ClientSideQueryableLayerExtension = CSVLayerExtension | FeatureLayerExtension | SceneLayerExtension | StreamLayerExtension | SubtypeGroupLayerExtension | WFSLayerExtension;
|
|
17
18
|
/**
|
|
18
19
|
* The types of SublayerExtensions that support client-side queries.
|
|
19
20
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__decorate as e}from"tslib";import r from"@arcgis/core/core/Collection";import{InvalidOperationError as i}from"../../InvalidOperationError.js";import{InitializableBase as t}from"../../support/InitializableBase.js";import{serializable as o}from"../../support/Serializable.js";import{isCancellation as s}from"../../support/utilities.js";import{AsyncQueue as d}from"../../utilities/asyncIterable.js";import{checkArg as a}from"../../utilities/checkArg.js";import{QueryError as n}from"./QueryError.js";import{QueryOptions as u}from"./QueryOptions.js";let p=class extends t{providers=new r;isSupported(e){return!!this.providers.find((r=>r.isSupported(e)))}query(e,r,t){a("source",e).isNotMissing(),a("where",r).isNotMissing().isNotEmpty();const o=new d;return(async()=>{await this.initialize();const d=this.providers.find((r=>r.isSupported(e)));if(d)try{await e.initialize();const i={...u.DEFAULTS,...u.fromFeatureSource(e),...t},s=d.query(e,r,i);for await(const e of s)i.outSpatialReference&&(e.schema.spatialReference=i.outSpatialReference),o.add(e);o.done()}catch(r){s(r)?o.reject(r):o.reject(new n(e,r))}else o.reject(new i("Unable to query: no provider registered for this type of feature source."))})(),o}async count(e,r,t){a("source",e).isNotMissing(),a("where",r).isNotMissing(),await this.initialize();const o=this.providers.find((r=>r.isSupported(e)));if(!o)throw new i("Unable to query: no provider registered for this type of feature source.");try{await e.initialize();const i={returnGeometry:!1,outFields:void 0};return await o.count(e,r,{...u.fromFeatureSource(e),...t,...i})}catch(r){throw s(r)?r:new n(e,r)}}async _onInitialize(){await super._onInitialize();const{ArcGISServiceTableQueryProvider:e,ArcGISSublayerQueryProvider:r,BuildingComponentSublayerClientSideQueryProvider:i,CSVLayerClientSideQueryProvider:t,FeatureLayerQueryProvider:o,GeoJSONLayerClientSideQueryProvider:s,GeoRSSLayerQueryProvider:d,ImageryLayerQueryProvider:a,KMLLayerQueryProvider:n,MapNotesSublayerQueryProvider:u,RouteLayerQueryProvider:p,SceneLayerClientSideQueryProvider:y,SceneLayerQueryProvider:c,StreamLayerClientSideQueryProvider:v,SubtypeSublayerQueryProvider:l}=await import("./defaultProviders.js");this.providers.add(new e),this.providers.add(new r),this.providers.add(new t),this.providers.add(new o),this.providers.add(new s),this.providers.add(new d),this.providers.add(new a),this.providers.add(new n),this.providers.add(new i),this.providers.add(new y),this.providers.add(new c),this.providers.add(new v),this.providers.add(new l),this.providers.add(new p),this.providers.add(new u)}};p=e([o],p);export{p as QueryService};
|
|
1
|
+
import{__decorate as e}from"tslib";import r from"@arcgis/core/core/Collection";import{InvalidOperationError as i}from"../../InvalidOperationError.js";import{InitializableBase as t}from"../../support/InitializableBase.js";import{serializable as o}from"../../support/Serializable.js";import{isCancellation as s}from"../../support/utilities.js";import{AsyncQueue as d}from"../../utilities/asyncIterable.js";import{checkArg as a}from"../../utilities/checkArg.js";import{QueryError as n}from"./QueryError.js";import{QueryOptions as u}from"./QueryOptions.js";let p=class extends t{providers=new r;isSupported(e){return!!this.providers.find((r=>r.isSupported(e)))}query(e,r,t){a("source",e).isNotMissing(),a("where",r).isNotMissing().isNotEmpty();const o=new d;return(async()=>{await this.initialize();const d=this.providers.find((r=>r.isSupported(e)));if(d)try{await e.initialize();const i={...u.DEFAULTS,...u.fromFeatureSource(e),...t},s=d.query(e,r,i);for await(const e of s)i.outSpatialReference&&(e.schema.spatialReference=i.outSpatialReference),o.add(e);o.done()}catch(r){s(r)?o.reject(r):o.reject(new n(e,r))}else o.reject(new i("Unable to query: no provider registered for this type of feature source."))})(),o}async count(e,r,t){a("source",e).isNotMissing(),a("where",r).isNotMissing(),await this.initialize();const o=this.providers.find((r=>r.isSupported(e)));if(!o)throw new i("Unable to query: no provider registered for this type of feature source.");try{await e.initialize();const i={returnGeometry:!1,outFields:void 0};return await o.count(e,r,{...u.fromFeatureSource(e),...t,...i})}catch(r){throw s(r)?r:new n(e,r)}}async _onInitialize(){await super._onInitialize();const{ArcGISServiceTableQueryProvider:e,ArcGISSublayerQueryProvider:r,BuildingComponentSublayerClientSideQueryProvider:i,CSVLayerClientSideQueryProvider:t,FeatureLayerQueryProvider:o,GeoJSONLayerClientSideQueryProvider:s,GeoRSSLayerQueryProvider:d,ImageryLayerQueryProvider:a,KMLLayerQueryProvider:n,MapNotesSublayerQueryProvider:u,RouteLayerQueryProvider:p,SceneLayerClientSideQueryProvider:y,SceneLayerQueryProvider:c,StreamLayerClientSideQueryProvider:v,SubtypeSublayerQueryProvider:l,WFSLayerQueryProvider:w}=await import("./defaultProviders.js");this.providers.add(new e),this.providers.add(new r),this.providers.add(new t),this.providers.add(new o),this.providers.add(new s),this.providers.add(new d),this.providers.add(new a),this.providers.add(new n),this.providers.add(new i),this.providers.add(new y),this.providers.add(new c),this.providers.add(new v),this.providers.add(new l),this.providers.add(new p),this.providers.add(new u),this.providers.add(new w)}};p=e([o],p);export{p as QueryService};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Feature } from "../../data/Feature.js";
|
|
2
|
+
import type { FeatureSource } from "../../data/FeatureSource.js";
|
|
3
|
+
import type { CountResult } from "../CountResult.js";
|
|
4
|
+
import type { QueryOptions } from "./QueryOptions.js";
|
|
5
|
+
import { QueryProviderBase } from "./QueryProviderBase.js";
|
|
6
|
+
/**
|
|
7
|
+
* A query provider for WFS layers.
|
|
8
|
+
*/
|
|
9
|
+
export declare class WFSLayerQueryProvider extends QueryProviderBase {
|
|
10
|
+
/**
|
|
11
|
+
* @inheritDoc
|
|
12
|
+
*/
|
|
13
|
+
isSupported(source: FeatureSource): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* @inheritDoc
|
|
16
|
+
*/
|
|
17
|
+
protected _query(source: FeatureSource, where: string, options: QueryOptions): AsyncIterable<Feature>;
|
|
18
|
+
/**
|
|
19
|
+
* @inheritDoc
|
|
20
|
+
*/
|
|
21
|
+
protected _count(source: FeatureSource, where: string, options: QueryOptions): Promise<CountResult>;
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{executeQuery as e,executeCount as t}from"../../support/_query.js";import{isWFSLayerExtension as r}from"../../utilities/extensions.js";import{QueryProviderBase as s}from"./QueryProviderBase.js";export class WFSLayerQueryProvider extends s{isSupported(e){return r(e)&&e.capabilities.supportsQuery}_query(t,r,s){const{layer:o}=t,i=o.createQuery();i.where=r,i.outFields=s.outFields,i.returnGeometry=s.returnGeometry,i.outSpatialReference=s.outSpatialReference,i.maxAllowableOffset=s.maxAllowableOffset;const a=s.spatialFilter;return a&&(i.spatialRelationship="intersects",i.geometry=a),o.capabilities.query.supportsPagination&&(i.num=s.maxResults),e(i,t,o,s.cancelToken)}_count(e,r,s){const{layer:o}=e,i=o.createQuery();i.where=r,i.outFields=s.outFields,i.returnGeometry=s.returnGeometry;const a=s.spatialFilter;return a&&(i.spatialRelationship="intersects",i.geometry=a),i.num=s.maxResults,t(i,e,o,s.cancelToken)}}
|
|
@@ -13,3 +13,4 @@ export { SceneLayerClientSideQueryProvider } from "./SceneLayerClientSideQueryPr
|
|
|
13
13
|
export { SceneLayerQueryProvider } from "./SceneLayerQueryProvider.js";
|
|
14
14
|
export { StreamLayerClientSideQueryProvider } from "./StreamLayerClientSideQueryProvider.js";
|
|
15
15
|
export { SubtypeSublayerQueryProvider } from "./SubtypeSublayerQueryProvider.js";
|
|
16
|
+
export { WFSLayerQueryProvider } from "./WFSLayerQueryProvider.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{ArcGISServiceTableQueryProvider}from"./ArcGISServiceTableQueryProvider.js";export{ArcGISSublayerQueryProvider}from"./ArcGISSublayerQueryProvider.js";export{BuildingComponentSublayerClientSideQueryProvider}from"./BuildingComponentSublayerClientSideQueryProvider.js";export{CSVLayerClientSideQueryProvider}from"./CSVLayerClientSideQueryProvider.js";export{FeatureLayerQueryProvider}from"./FeatureLayerQueryProvider.js";export{GeoJSONLayerClientSideQueryProvider}from"./GeoJSONLayerClientSideQueryProvider.js";export{GeoRSSLayerQueryProvider}from"./GeoRSSLayerQueryProvider.js";export{ImageryLayerQueryProvider}from"./ImageryLayerQueryProvider.js";export{KMLLayerQueryProvider}from"./KMLLayerQueryProvider.js";export{MapNotesSublayerQueryProvider}from"./MapNotesSublayerQueryProvider.js";export{RouteLayerQueryProvider}from"./RouteLayerQueryProvider.js";export{SceneLayerClientSideQueryProvider}from"./SceneLayerClientSideQueryProvider.js";export{SceneLayerQueryProvider}from"./SceneLayerQueryProvider.js";export{StreamLayerClientSideQueryProvider}from"./StreamLayerClientSideQueryProvider.js";export{SubtypeSublayerQueryProvider}from"./SubtypeSublayerQueryProvider.js";
|
|
1
|
+
export{ArcGISServiceTableQueryProvider}from"./ArcGISServiceTableQueryProvider.js";export{ArcGISSublayerQueryProvider}from"./ArcGISSublayerQueryProvider.js";export{BuildingComponentSublayerClientSideQueryProvider}from"./BuildingComponentSublayerClientSideQueryProvider.js";export{CSVLayerClientSideQueryProvider}from"./CSVLayerClientSideQueryProvider.js";export{FeatureLayerQueryProvider}from"./FeatureLayerQueryProvider.js";export{GeoJSONLayerClientSideQueryProvider}from"./GeoJSONLayerClientSideQueryProvider.js";export{GeoRSSLayerQueryProvider}from"./GeoRSSLayerQueryProvider.js";export{ImageryLayerQueryProvider}from"./ImageryLayerQueryProvider.js";export{KMLLayerQueryProvider}from"./KMLLayerQueryProvider.js";export{MapNotesSublayerQueryProvider}from"./MapNotesSublayerQueryProvider.js";export{RouteLayerQueryProvider}from"./RouteLayerQueryProvider.js";export{SceneLayerClientSideQueryProvider}from"./SceneLayerClientSideQueryProvider.js";export{SceneLayerQueryProvider}from"./SceneLayerQueryProvider.js";export{StreamLayerClientSideQueryProvider}from"./StreamLayerClientSideQueryProvider.js";export{SubtypeSublayerQueryProvider}from"./SubtypeSublayerQueryProvider.js";export{WFSLayerQueryProvider}from"./WFSLayerQueryProvider.js";
|
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
|
|
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}from"./_ogc.js";import{checkArg as m}from"./checkArg.js";import{isExtent as l,isPolygon as g}from"./esri.js";const f="Unable to convert the GML geometry into an Esri geometry.";export function gmlToEsri(s){switch(m("geometry",s).isNotMissing(),s.localName){case"Point":return function(e){const n=d(e),o=p(e);if(o&&o.length>1)return new t({x:o[0],y:o[1],spatialReference:n});throw new i(f)}(s);case"MultiPoint":return function(e){const t=new Array,o=d(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(f)}(s);case"LineString":case"Curve":case"MultiLineString":case"MultiCurve":return function(e){let n;const t=d(e);"LineString"===e.localName?n=function(e){const n=N(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=N(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(N(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(N(e))}return n}(e));if(n&&n.length>0)return new r({paths:n,spatialReference:t});throw new i(f)}(s);case"Polygon":case"MultiPolygon":case"MultiSurface":return function(e){let n;const t=d(e);"Polygon"===e.localName?n=u(e):"MultiPolygon"===e.localName?n=function(e){m("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=u(e);n.push(...t)}}return n}(e):"MultiSurface"===e.localName&&(n=function(e){m("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=u(e);n.push(...t)}}return n}(e));if(n&&n.length>0)return new o({rings:n,spatialReference:t});throw new i(f)}(s);case"Envelope":return function(n){const t=d(n),o=function(e){if(m("geometry",e).isNotMissing(),"Envelope"!==e.localName)throw new i(f);const n=function(e){const n=e.getElementsByTagNameNS(e.namespaceURI,"coordinates");if(0===n.length)return;const t=n[1],o=t.getAttribute("cs")??",",r=t.getAttribute("ts")??" ",{data:s}=t.childNodes[0];return s.split(o).map((e=>M(e,r)))}(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[M(e),M(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[M(e),M(n)]}throw new i(f)}(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(f)}(s);default:throw new i("Unrecognized geometry type.")}}export function esriToGml(e,n){switch(m("geometry",e).isNotMissing(),m("geometry type",e.type).isNotMissing(),m("gmlVersion",n.gmlVersion).isNotMissing(),e.type){case"point":return function(e,n){const t=a(n.gmlVersion),o=E(t,"Point","gml"),r=h(e,n),s=n.hasOwnProperty("srsDimension")?n.srsDimension:void 0;let i,c;w(o,r,s),"2.0"===n.gmlVersion||"3.0"===n.gmlVersion?(i=E(t,"coordinates","gml"),c=S(", ",e)):(i=E(t,"pos","gml"),c=S(" ",e));o.appendChild(i);const m=T(c);return i.appendChild(m),o}(e,n);case"polyline":return function(e,n){const t=a(n.gmlVersion),o=E(t,"LineString","gml"),r=h(e,n),s=n.hasOwnProperty("srsDimension")?n.srsDimension:void 0;let i,c;w(o,r,s),"2.0"===n.gmlVersion||"3.0"===n.gmlVersion?(i=E(t,"coordinates","gml"),c=R(", ",e)):(i=E(t,"posList","gml"),c=R(" ",e));o.appendChild(i);const m=T(c);return i.appendChild(m),o}(e,n);case"polygon":case"extent":return function(e,n){const t=a(n.gmlVersion),o=E(t,"Polygon","gml"),r=h(e,n),s=n.hasOwnProperty("srsDimension")?n.srsDimension:void 0;w(o,r,s);const i="2.0"===n.gmlVersion?E(t,"outerBoundaryIs","gml"):E(t,"exterior","gml");o.appendChild(i);const c=E(t,"LinearRing","gml");let m,l;i.appendChild(c),"2.0"===n.gmlVersion||"3.0"===n.gmlVersion?(m=E(t,"coordinates","gml"),l=A(", ",e)):(m=E(t,"posList","gml"),l=A(" ",e));c.appendChild(m);const g=T(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(m("geometry",e).isNotMissing(),"Point"!==e.localName)throw new i(f);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 M(n[0].childNodes[0].data)}if(t.length>0&&t[0].childNodes[0].nodeType===Node.TEXT_NODE){return M(t[0].childNodes[0].data)}throw new i(f)}function u(e){m("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(N(e))}return n}function N(e){if(m("geometry",e).isNotMissing(),"LineString"!==e.localName&&"LinearRing"!==e.localName&&"LineStringSegment"!==e.localName)throw new i(f);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 y(n[0].childNodes[0].data)}if(t.length>0&&t[0].childNodes[0].nodeType===Node.TEXT_NODE){return y(t[0].childNodes[0].data)}throw new i(f)}function y(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(f);t.push([n[e],n[e+1]])}if(t.length>0)return t;throw new i(f)}function d(e){return m("geometry",e).isNotMissing(),e.hasAttribute("srsName")?c(e.getAttribute("srsName")):s.WebMercator}function h(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(102100===e.spatialReference.wkid||900913===e.spatialReference.wkid||102113===e.spatialReference.wkid)return"EPSG:3857"}throw new i("Unable to convert Esri WKT spatial reference to an OGC spatial reference")}function w(e,n,t){if(null!=n&&(e.setAttribute("srsName",n),null!=t)){const n=t<1?2:t;e.setAttribute("srsDimension",n.toString())}}function E(e,n,t){m("namespace",e).isNotMissing(),m("name",n).isNotMissing();return document.implementation.createDocument(void 0,"temp",void 0).createElementNS(e,t?`${t}:${n}`:n)}function T(e){return document.implementation.createDocument(void 0,"temp",void 0).createTextNode(e)}function S(e,n){const t=n;return" "===e?`${t.x} ${t.y}`:`${t.x}, ${t.y}`}function R(e,n){return n.paths[0].map((n=>n.join(e))).join(" ")}function A(e,n){let t;if(g(n))t=n.rings[0];else if(l(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 M(e,n=" "){const t=e.replace(/,/g,"").split(n).map(Number);if(2===t.length)return[t[0],t[1]];throw new i(f)}
|