@vertigis/arcgis-extensions 43.4.2 → 43.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -60,6 +60,10 @@ export interface BasemapExtensionProperties extends EntityBaseProperties {
60
60
  * See {@link data/FeatureSource!FeatureSource.taskSettings}.
61
61
  */
62
62
  taskSettings?: TaskSettingsProperties;
63
+ /**
64
+ * See {@link mapping/BasemapExtension!BasemapExtension.isSeries}.
65
+ */
66
+ isSeries?: boolean;
63
67
  }
64
68
  /**
65
69
  * Properties that can be specified for the
@@ -111,6 +115,11 @@ export declare class BasemapExtension<T extends BasemapExtensionProperties = Bas
111
115
  * the basemap picker.
112
116
  */
113
117
  onClick?: Action;
118
+ /**
119
+ * If true, the layers in this basemap will be presented one at a time,
120
+ * rather that all at once.
121
+ */
122
+ isSeries?: boolean;
114
123
  /**
115
124
  * @inheritDoc
116
125
  */
@@ -1 +1 @@
1
- var e;import{__decorate as s}from"tslib";import a from"@arcgis/core/Basemap";import t from"@arcgis/core/core/Collection";import{ArgumentError as i}from"../ArgumentError.js";import{EntityBase as r}from"../Entity.js";import{InvalidOperationError as n}from"../InvalidOperationError.js";import{ItemType as o}from"../ItemType.js";import{TaskSettings as p}from"../data/TaskSettings.js";import{applyJsonToBasemap as m,jsonToBasemap as h}from"../json/BasemapJson.js";import{serializable as c}from"../support/Serializable.js";import{basemapsAreEquivalent as l,createStandardBasemap as d}from"../utilities/basemaps.js";import{checkArg as y}from"../utilities/checkArg.js";import{load as _}from"../utilities/esri.js";import{find as f}from"../utilities/iterable.js";import{layersAreEquivalent as b}from"../utilities/layers.js";import{getLogger as E}from"../utilities/log.js";import{isBasemap as x}from"../utilities/mapping.js";import{onCollectionPropertyChange as u}from"../utilities/watch.js";import{_assignLayerExtensions as L}from"./_LayerExtension.js";import{LayerExtensionCollectionBase as g}from"./support/_LayerExtensionCollection.js";const B=E("BasemapExtension");export const defaultBasemapExtensionFactory={create:e=>new w(e)};let w=class extends r{static{e=this}get basemap(){return this._basemap}get mapExtension(){return this._mapExtension}get baseLayerExtensions(){return this._baseLayerExtensions}get referenceLayerExtensions(){return this._referenceLayerExtensions}get iconUrl(){return this._basemap?this._basemap.thumbnailUrl:this._iconUrl}set iconUrl(e){this._basemap?this._basemap.thumbnailUrl=e:this._iconUrl=e}static factory=defaultBasemapExtensionFactory;included=!0;description;onClick;taskSettings;_itemType=o.BASEMAP_EXTENSION;_watchHandles=[];_iconUrl;_mapExtension;_basemap;_baseLayerExtensions;_referenceLayerExtensions;_deferredBasemapProperties;_createBackingBasemapPromise;constructor(e){super(e);const s=e||{};this._baseLayerExtensions=new z(this),this._referenceLayerExtensions=new P(this),this.taskSettings=this._createTaskSettings(),this.taskSettings.enableSearch=!1,this.taskSettings.enableQuery=!1,this.taskSettings.enableIdentify=!1;let{basemap:t}=s;!t&&s.baseMap&&(t=s.baseMap,E("geocortex.api.mapping.BasemapExtension").warn("BasemapExtension.properties 'baseMap' should be 'basemap'")),x(t)?this._setBasemap(t):t?this._deferredBasemapProperties=t:this._setBasemap(new a)}static create(s){if(!e.factory)throw new n("Cannot create BasemapExtension: no BasemapExtension factory has been registered.");return e.factory.create(s)}_setMapExtension(e){this._mapExtension=e,this.notifyChange("mapExtension"),this._baseLayerExtensions.onMapExtensionChanged(),this._referenceLayerExtensions.onMapExtensionChanged()}async _switchBasemap(e){if(e===this.basemap)return;y("newBasemap",e).isNotMissing().satisfies((e=>!this.basemap||l(this.basemap,e)),"Basemaps must have compatible layers."),this._deferredBasemapProperties=void 0;const s=new Map,a=new Map;if(this.basemap&&(this.basemap.baseLayers.forEach((e=>{s.set(e,this.baseLayerExtensions.forLayer(e))})),this.basemap.referenceLayers.forEach((e=>{a.set(e,this.referenceLayerExtensions.forLayer(e))}))),await _(this.basemap),this.basemap){const s=this.basemap.toJSON();await m(s,e)}this._setBasemap(e);const t=[];for(const e of this.basemap.baseLayers.toArray()){const a=f(s.entries(),(([s])=>b(s,e)));a&&t.push((async()=>{const s=a[1];await s._switchLayer(e),this._baseLayerExtensions._register(s)})())}for(const e of this.basemap.referenceLayers.toArray()){const s=f(a.entries(),(([s])=>b(s,e)));s&&t.push((async()=>{const a=s[1];await a._switchLayer(e),this._referenceLayerExtensions._register(a)})())}this.isInitialized&&t.push(this._initializeChildren()),await Promise.all(t)}async _createBackingBasemap(){if(this._deferredBasemapProperties)return this._createBackingBasemapPromise=this._createBackingBasemapPromise??(async()=>{if("string"==typeof this._deferredBasemapProperties)this._setBasemap(await d(this._deferredBasemapProperties));else{const e=await h(this._deferredBasemapProperties);this._setBasemap(e)}})(),this._createBackingBasemapPromise}_createTaskSettings(){return new p}_getSerializableProperties(){return{...super._getSerializableProperties(),description:"initial",included:{serializeModes:["initial"],default:!0},iconUrl:{serializeModes:["initial"]},onClick:"initial",basemap:{serializeModes:["initial","project"],serialize:()=>this._serializeBasemap(),isDefault:e=>JSON.stringify(e)===JSON.stringify(new a),deserialize:e=>{if(x(e)){if(e!==this.basemap)throw new i("properties.basemap","Property 'basemap' is read-only.")}else if("string"==typeof e){if((!this._basemap||e!==this._basemap.id)&&this._deferredBasemapProperties!==e)throw new i("properties.basemap","Property 'basemap' is read-only.")}else if(this._basemap)return m(e,this.basemap)}},baseLayerExtensions:{serializeModes:["initial","project"],deserialize:e=>{L(this.baseLayerExtensions,e)}},referenceLayerExtensions:{serializeModes:["initial","project"],deserialize:e=>{L(this.referenceLayerExtensions,e)}},taskSettings:{serialize:!1}}}async _onInitialize(){await this._createBackingBasemap(),await _(this.basemap),this.basemap.baseLayers||(this.basemap.baseLayers=new t),this.basemap.referenceLayers||(this.basemap.referenceLayers=new t),this._baseLayerExtensions.onParentInitialized(),this._referenceLayerExtensions.onParentInitialized(),this.mapExtension&&this.basemap&&(this.mapExtension.map.basemap=this.basemap)}async _postInitialize(){await super._postInitialize(),this._deferredBasemapProperties=void 0,this._watchHandles.push(u(this,"basemap.baseLayers",(async e=>{const s=(e.added??[]).map((e=>this.baseLayerExtensions.forLayer(e)));await Promise.all(s.map((e=>e.initialize())))})),u(this,"basemap.referenceLayers",(async e=>{const s=(e.added??[]).map((e=>this.referenceLayerExtensions.forLayer(e)));await Promise.all(s.map((e=>e.initialize())))})))}_onBaseLayerAddedPostInitialize=async e=>this._onLayerAddedPostInitialize(e);_onReferenceLayerAddedPostInitialize=async e=>this._onLayerAddedPostInitialize(e);async _onDestroy(){this._watchHandles.forEach((e=>e?.remove())),await super._onDestroy()}*_initializableChildCollections(){yield*super._initializableChildCollections(),yield this.baseLayerExtensions,yield this.referenceLayerExtensions}_onLayerAddedPostInitialize=async e=>{try{await e.initialize()}catch(s){B.error({message:`Error occurred while initializing layer extension for layer '${e.title??e.layer.id??e.id}'.`,error:s})}};_setBasemap(e){this._basemap=e,this._iconUrl&&(this.basemap.thumbnailUrl=this._iconUrl,this._iconUrl=void 0),this.watch("basemap.thumbnailUrl",(()=>this.notifyChange("iconUrl")),!0),this.notifyChange("basemap")}_serializeBasemap(){if(this._deferredBasemapProperties)return this._deferredBasemapProperties;const e=this.basemap?.toJSON();if(!e)return;e.baseMapLayers?.forEach((e=>{delete e.layers}));const s=this.baseLayerExtensions.filter((e=>e&&!e.layer));if(s.length>0){const a=s.toArray().map((e=>{const{layer:s}=e.toJSON();return s}));e.baseMapLayers.concat(a)}const a=this.referenceLayerExtensions.filter((e=>e&&!e.layer));if(a.length>0){const s=a.toArray().map((e=>{const{layer:s}=e.toJSON();return s.isReference=!0,s}));e.baseMapLayers.concat(s)}return e}};w=e=s([c],w);export{w as BasemapExtension};class z extends g{get _mapExtension(){return this._parent.mapExtension}constructor(e){super(e,"basemap.baseLayers")}add(e,s){return y("layerX",e).isNotMissing(),e.basemapExtension&&e.basemapExtension!==this._parent&&e.basemapExtension.baseLayerExtensions.remove(e),e._setBasemapExtension(this._parent),super.add(e,s)}_onAdded(e){super._onAdded(e),e._setBasemapExtension(this._parent)}_onRemoved(e){super._onRemoved(e),e._setBasemapExtension(void 0)}}class P extends g{get _mapExtension(){return this._parent.mapExtension}constructor(e){super(e,"basemap.referenceLayers")}add(e,s){return y("layerX",e).isNotMissing(),e.basemapExtension&&e.basemapExtension!==this._parent&&e.basemapExtension.referenceLayerExtensions.remove(e),e._setBasemapExtension(this._parent),super.add(e,s)}_onAdded(e){super._onAdded(e),e._setBasemapExtension(this._parent)}_onRemoved(e){super._onRemoved(e),e._setBasemapExtension(void 0)}}
1
+ var e;import{__decorate as s}from"tslib";import a from"@arcgis/core/Basemap";import i from"@arcgis/core/core/Collection";import{ArgumentError as t}from"../ArgumentError.js";import{EntityBase as r}from"../Entity.js";import{InvalidOperationError as n}from"../InvalidOperationError.js";import{ItemType as o}from"../ItemType.js";import{TaskSettings as p}from"../data/TaskSettings.js";import{applyJsonToBasemap as m,jsonToBasemap as h}from"../json/BasemapJson.js";import{serializable as c}from"../support/Serializable.js";import{basemapsAreEquivalent as l,createStandardBasemap as d}from"../utilities/basemaps.js";import{checkArg as y}from"../utilities/checkArg.js";import{load as _}from"../utilities/esri.js";import{find as f}from"../utilities/iterable.js";import{layersAreEquivalent as b}from"../utilities/layers.js";import{getLogger as E}from"../utilities/log.js";import{isBasemap as x}from"../utilities/mapping.js";import{onCollectionPropertyChange as u}from"../utilities/watch.js";import{_assignLayerExtensions as L}from"./_LayerExtension.js";import{LayerExtensionCollectionBase as g}from"./support/_LayerExtensionCollection.js";const B=E("BasemapExtension");export const defaultBasemapExtensionFactory={create:e=>new w(e)};let w=class extends r{static{e=this}get basemap(){return this._basemap}get mapExtension(){return this._mapExtension}get baseLayerExtensions(){return this._baseLayerExtensions}get referenceLayerExtensions(){return this._referenceLayerExtensions}get iconUrl(){return this._basemap?this._basemap.thumbnailUrl:this._iconUrl}set iconUrl(e){this._basemap?this._basemap.thumbnailUrl=e:this._iconUrl=e}static factory=defaultBasemapExtensionFactory;included=!0;description;onClick;isSeries;taskSettings;_itemType=o.BASEMAP_EXTENSION;_watchHandles=[];_iconUrl;_mapExtension;_basemap;_baseLayerExtensions;_referenceLayerExtensions;_deferredBasemapProperties;_createBackingBasemapPromise;constructor(e){super(e);const s=e||{};this._baseLayerExtensions=new z(this),this._referenceLayerExtensions=new P(this),this.taskSettings=this._createTaskSettings(),this.taskSettings.enableSearch=!1,this.taskSettings.enableQuery=!1,this.taskSettings.enableIdentify=!1;let{basemap:i}=s;!i&&s.baseMap&&(i=s.baseMap,E("geocortex.api.mapping.BasemapExtension").warn("BasemapExtension.properties 'baseMap' should be 'basemap'")),x(i)?this._setBasemap(i):i?this._deferredBasemapProperties=i:this._setBasemap(new a)}static create(s){if(!e.factory)throw new n("Cannot create BasemapExtension: no BasemapExtension factory has been registered.");return e.factory.create(s)}_setMapExtension(e){this._mapExtension=e,this.notifyChange("mapExtension"),this._baseLayerExtensions.onMapExtensionChanged(),this._referenceLayerExtensions.onMapExtensionChanged()}async _switchBasemap(e){if(e===this.basemap)return;y("newBasemap",e).isNotMissing().satisfies((e=>!this.basemap||l(this.basemap,e)),"Basemaps must have compatible layers."),this._deferredBasemapProperties=void 0;const s=new Map,a=new Map;if(this.basemap&&(this.basemap.baseLayers.forEach((e=>{s.set(e,this.baseLayerExtensions.forLayer(e))})),this.basemap.referenceLayers.forEach((e=>{a.set(e,this.referenceLayerExtensions.forLayer(e))}))),await _(this.basemap),this.basemap){const s=this.basemap.toJSON();await m(s,e)}this._setBasemap(e);const i=[];for(const e of this.basemap.baseLayers.toArray()){const a=f(s.entries(),(([s])=>b(s,e)));a&&i.push((async()=>{const s=a[1];await s._switchLayer(e),this._baseLayerExtensions._register(s)})())}for(const e of this.basemap.referenceLayers.toArray()){const s=f(a.entries(),(([s])=>b(s,e)));s&&i.push((async()=>{const a=s[1];await a._switchLayer(e),this._referenceLayerExtensions._register(a)})())}this.isInitialized&&i.push(this._initializeChildren()),await Promise.all(i)}async _createBackingBasemap(){if(this._deferredBasemapProperties)return this._createBackingBasemapPromise=this._createBackingBasemapPromise??(async()=>{if("string"==typeof this._deferredBasemapProperties)this._setBasemap(await d(this._deferredBasemapProperties));else{const e=await h(this._deferredBasemapProperties);this._setBasemap(e)}})(),this._createBackingBasemapPromise}_createTaskSettings(){return new p}_getSerializableProperties(){return{...super._getSerializableProperties(),description:"initial",included:{serializeModes:["initial"],default:!0},iconUrl:{serializeModes:["initial"]},onClick:"initial",isSeries:"initial",basemap:{serializeModes:["initial","project"],serialize:()=>this._serializeBasemap(),isDefault:e=>JSON.stringify(e)===JSON.stringify(new a),deserialize:e=>{if(x(e)){if(e!==this.basemap)throw new t("properties.basemap","Property 'basemap' is read-only.")}else if("string"==typeof e){if((!this._basemap||e!==this._basemap.id)&&this._deferredBasemapProperties!==e)throw new t("properties.basemap","Property 'basemap' is read-only.")}else if(this._basemap)return m(e,this.basemap)}},baseLayerExtensions:{serializeModes:["initial","project"],deserialize:e=>{L(this.baseLayerExtensions,e)}},referenceLayerExtensions:{serializeModes:["initial","project"],deserialize:e=>{L(this.referenceLayerExtensions,e)}},taskSettings:{serialize:!1}}}async _onInitialize(){await this._createBackingBasemap(),await _(this.basemap),this.basemap.baseLayers||(this.basemap.baseLayers=new i),this.basemap.referenceLayers||(this.basemap.referenceLayers=new i),this._baseLayerExtensions.onParentInitialized(),this._referenceLayerExtensions.onParentInitialized(),this.mapExtension&&this.basemap&&(this.mapExtension.map.basemap=this.basemap)}async _postInitialize(){await super._postInitialize(),this._deferredBasemapProperties=void 0,this._watchHandles.push(u(this,"basemap.baseLayers",(async e=>{const s=(e.added??[]).map((e=>this.baseLayerExtensions.forLayer(e)));await Promise.all(s.map((e=>e.initialize())))})),u(this,"basemap.referenceLayers",(async e=>{const s=(e.added??[]).map((e=>this.referenceLayerExtensions.forLayer(e)));await Promise.all(s.map((e=>e.initialize())))})))}_onBaseLayerAddedPostInitialize=async e=>this._onLayerAddedPostInitialize(e);_onReferenceLayerAddedPostInitialize=async e=>this._onLayerAddedPostInitialize(e);async _onDestroy(){this._watchHandles.forEach((e=>e?.remove())),await super._onDestroy()}*_initializableChildCollections(){yield*super._initializableChildCollections(),yield this.baseLayerExtensions,yield this.referenceLayerExtensions}_onLayerAddedPostInitialize=async e=>{try{await e.initialize()}catch(s){B.error({message:`Error occurred while initializing layer extension for layer '${e.title??e.layer.id??e.id}'.`,error:s})}};_setBasemap(e){this._basemap=e,this._iconUrl&&(this.basemap.thumbnailUrl=this._iconUrl,this._iconUrl=void 0),this.watch("basemap.thumbnailUrl",(()=>this.notifyChange("iconUrl")),!0),this.notifyChange("basemap")}_serializeBasemap(){if(this._deferredBasemapProperties)return this._deferredBasemapProperties;const e=this.basemap?.toJSON();if(!e)return;e.baseMapLayers?.forEach((e=>{delete e.layers}));const s=this.baseLayerExtensions.filter((e=>e&&!e.layer));if(s.length>0){const a=s.toArray().map((e=>{const{layer:s}=e.toJSON();return s}));e.baseMapLayers.concat(a)}const a=this.referenceLayerExtensions.filter((e=>e&&!e.layer));if(a.length>0){const s=a.toArray().map((e=>{const{layer:s}=e.toJSON();return s.isReference=!0,s}));e.baseMapLayers.concat(s)}return e}};w=e=s([c],w);export{w as BasemapExtension};class z extends g{get _mapExtension(){return this._parent.mapExtension}constructor(e){super(e,"basemap.baseLayers")}add(e,s){return y("layerX",e).isNotMissing(),e.basemapExtension&&e.basemapExtension!==this._parent&&e.basemapExtension.baseLayerExtensions.remove(e),e._setBasemapExtension(this._parent),super.add(e,s)}_onAdded(e){super._onAdded(e),e._setBasemapExtension(this._parent)}_onRemoved(e){super._onRemoved(e),e._setBasemapExtension(void 0)}}class P extends g{get _mapExtension(){return this._parent.mapExtension}constructor(e){super(e,"basemap.referenceLayers")}add(e,s){return y("layerX",e).isNotMissing(),e.basemapExtension&&e.basemapExtension!==this._parent&&e.basemapExtension.referenceLayerExtensions.remove(e),e._setBasemapExtension(this._parent),super.add(e,s)}_onAdded(e){super._onAdded(e),e._setBasemapExtension(this._parent)}_onRemoved(e){super._onRemoved(e),e._setBasemapExtension(void 0)}}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vertigis/arcgis-extensions",
3
3
  "license": "SEE LICENSE IN LICENSE",
4
- "version": "43.4.2",
4
+ "version": "43.5.1",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://dev.azure.com/vertigis/Studio/_git/arcgis-extensions-ts"
@@ -1 +1 @@
1
- import{executeQuery as e,executeCount as t,constrainQueryTimeExtentToView as r}from"../../support/_query.js";import{AsyncQueue as s}from"../../utilities/asyncIterable.js";import{isSubtypeSublayerExtension as i}from"../../utilities/extensions.js";import{removeZValues as o}from"../../utilities/geometry.js";import{isSubtypeSublayer as u}from"../../utilities/layers.js";import{caseInsensitiveEquals as n}from"../../utilities/string.js";import{IdentifyOptions as l}from"./IdentifyOptions.js";import{IdentifyProviderBase as a}from"./IdentifyProviderBase.js";export class SubtypeSublayerQueryIdentifyProvider extends a{isSupported(e,t,r){return i(e)&&u(e.sublayer)&&!!e.sublayer.layer}_identify(t,r,s){const i=t,{layer:o}=i.sublayer,u=this._createIdentifyQuery(o,r,s,s.outFields??t.featureSettings.outFields);return u.where=`${o.subtypeField}=${i.sublayer.subtypeCode}`,u.returnZ=o.hasZ,e(u,i,o,s.cancelToken)}_identifyMany(t,i,o){if(1===t.length){const e={...l.DEFAULTS,...l.fromFeatureSource(t[0]),...o};return this._identify(t[0],i,e)}const u=new s,a=t.length;let y=0;const f=t.reduce(((e,t)=>{const r=t,s={...l.DEFAULTS,...l.fromFeatureSource(r),...o},i=s.outFields??r.featureSettings.outFields;if(e.has(r.sublayer.layer)){const t=e.get(r.sublayer.layer);let o=!1;for(const{sources:e,identifyOptions:l,outFields:y}of t)if(a=s,(u=l).returnGeometry===a.returnGeometry&&(u.outSpatialReference===a.outSpatialReference||u.outSpatialReference?.equals(a.outSpatialReference))&&u.maxAllowableOffset===a.maxAllowableOffset&&u.maxResults===a.maxResults&&i.length===y.length&&i.every((e=>y.some((t=>n(e,t)))))){e.push(r),o=!0;break}o||t.push({sources:[r],identifyOptions:s,outFields:i})}else e.set(r.sublayer.layer,[{sources:[r],identifyOptions:s,outFields:i}]);var u,a;return e}),new Map);for(const[t,s]of f)for(const{sources:o,identifyOptions:l,outFields:f}of s)(async()=>{if(u.isDone)return;const s=new Map,c=[];for(const e of o)s.set(e.sublayer.subtypeCode,e),c.push(e.sublayer.subtypeCode);const d=this._createIdentifyQuery(t,i,l,f);let p=!1;d.outFields.some((e=>"*"===e||n(e,t.subtypeField)))||(p=!0,d.outFields=[...d.outFields,t.subtypeField]),d.where=`${t.subtypeField} IN (${c.join(",")})`,r(d,o[0]);try{for await(const r of e(d,(e=>{if(null!=e.attributes){const r=e.attributes;let i=r[t.subtypeField];if(void 0===i){i=r[Object.keys(r).find((e=>n(e,t.subtypeField)))]}return s.get(i)}}),t,l.cancelToken)){if(u.isDone)return;p&&r.attributes.delete(t.subtypeField),u.add(r)}}catch(e){u.reject(e)}finally{y+=o.length,y===a&&u.done()}})();return u}_count(e,r,s){const i=e,{layer:o}=i.sublayer,u=this._createBasicQuery(o,r,s,s.outFields??e.featureSettings.outFields);return u.num=s.maxResults,u.where=`${o.subtypeField}=${i.sublayer.subtypeCode}`,t(u,i,o,s.cancelToken)}_createIdentifyQuery(e,t,r,s){const i=this._createBasicQuery(e,t,r,s);return i.outSpatialReference=r.outSpatialReference,i.maxAllowableOffset=r.maxAllowableOffset,e.capabilities.query.supportsPagination&&(i.num=r.maxResults),i}_createBasicQuery(e,t,r,s){const i=e.createQuery();return i.geometry=t,i.geometry&&(e.hasZ||e.capabilities?.data?.supportsZ)&&(i.geometry=o(t.clone())),i.outFields=s,i.returnGeometry=r.returnGeometry,i}}
1
+ import{executeQuery as e,executeCount as t,constrainQueryTimeExtentToView as r}from"../../support/_query.js";import{AsyncQueue as s}from"../../utilities/asyncIterable.js";import{isSubtypeSublayerExtension as i}from"../../utilities/extensions.js";import{removeZValues as o}from"../../utilities/geometry.js";import{isSubtypeSublayer as u}from"../../utilities/layers.js";import{caseInsensitiveEquals as n}from"../../utilities/string.js";import{IdentifyOptions as l}from"./IdentifyOptions.js";import{IdentifyProviderBase as a}from"./IdentifyProviderBase.js";export class SubtypeSublayerQueryIdentifyProvider extends a{isSupported(e,t,r){return i(e)&&u(e.sublayer)&&!!e.sublayer.layer}_identify(t,r,s){const i=t,{layer:o}=i.sublayer,u=this._createIdentifyQuery(o,r,s,s.outFields??t.featureSettings.outFields);return u.where=`${o.subtypeField}=${i.sublayer.subtypeCode}`,u.returnZ=o.hasZ,e(u,i,o,s.cancelToken)}_identifyMany(t,i,o){if(1===t.length){const e={...l.DEFAULTS,...l.fromFeatureSource(t[0]),...o};return this._identify(t[0],i,e)}const u=new s,a=t.length;let y=0;const f=t.reduce(((e,t)=>{const r=t,s={...l.DEFAULTS,...l.fromFeatureSource(r),...o},i=s.outFields??r.featureSettings.outFields;if(e.has(r.sublayer.layer)){const t=e.get(r.sublayer.layer);let o=!1;for(const{sources:e,identifyOptions:l,outFields:y}of t)if(a=s,(u=l).returnGeometry===a.returnGeometry&&(u.outSpatialReference===a.outSpatialReference||u.outSpatialReference?.equals(a.outSpatialReference))&&u.maxAllowableOffset===a.maxAllowableOffset&&u.maxResults===a.maxResults&&i.length===y.length&&i.every((e=>y.some((t=>n(e,t)))))){e.push(r),o=!0;break}o||t.push({sources:[r],identifyOptions:s,outFields:i})}else e.set(r.sublayer.layer,[{sources:[r],identifyOptions:s,outFields:i}]);var u,a;return e}),new Map);for(const[t,s]of f)for(const{sources:o,identifyOptions:l,outFields:f}of s)(async()=>{if(u.isDone)return;const s=new Map,c=[];for(const e of o)s.set(e.sublayer.subtypeCode,e),c.push(e.sublayer.subtypeCode);const d=this._createIdentifyQuery(t,i,l,f);let p=!1;d.outFields.some((e=>"*"===e||n(e,t.subtypeField)))||(p=!0,d.outFields=[...d.outFields,t.subtypeField]),d.where=`${t.subtypeField} IN (${c.join(",")})`,r(d,o[0]);try{for await(const r of e(d,(e=>{if(null!=e.attributes){const r=e.attributes;let i=r[t.subtypeField];if(void 0===i){i=r[Object.keys(r).find((e=>n(e,t.subtypeField)))]}return s.get(i)}}),t,l.cancelToken)){if(u.isDone)return;p&&r.attributes.delete(t.subtypeField),u.add(r)}}catch(e){u.reject(e)}finally{y+=o.length,y===a&&u.done()}})();return u}_count(e,r,s){const i=e,{layer:o}=i.sublayer,u=this._createBasicQuery(o,r,s,s.outFields??e.featureSettings.outFields);return u.num=s.maxResults,u.where=`${o.subtypeField}=${i.sublayer.subtypeCode}`,t(u,i,o,s.cancelToken)}_createIdentifyQuery(e,t,r,s){const i=this._createBasicQuery(e,t,r,s);return i.outSpatialReference=r.outSpatialReference,i.maxAllowableOffset=r.maxAllowableOffset,e.capabilities.query.supportsPagination&&(i.num=r.maxResults),i}_createBasicQuery(e,t,r,s){const i=e.createQuery();return i.geometry=t,(e.hasZ||e.capabilities?.data?.supportsZ)&&(i.geometry&&(i.geometry=o(t.clone())),i.returnZ=!0),i.outFields=s,i.returnGeometry=r.returnGeometry,i}}
@@ -1 +1 @@
1
- import e from"@arcgis/core/geometry/Extent";import t from"@arcgis/core/geometry/Polygon";import{buffer as r,difference as o,geodesicBuffer as n,union as i}from"@arcgis/core/geometry/geometryEngineAsync";import s from"@arcgis/core/rest/support/BufferParameters";import{ArgumentError as a}from"../ArgumentError.js";import{config as c}from"../config.js";import{groupBy as m}from"./array.js";import{checkArg as p}from"./checkArg.js";import{isExtent as f,isGeometry as g,isMesh as u,isMultipoint as l,isPoint as y,isPolygon as h,isPolyline as x}from"./esri.js";export{g as isGeometry,y as isPoint,l as isMultipoint,x as isPolyline,h as isPolygon,f as isExtent,u as isMesh};const M="https://tasks.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer";export class CoordinateSystemBounds{limit;get min(){return-this.limit}get max(){return this.limit}get range(){return 2*this.limit}constructor(e){this.limit=e}}export const WEB_MERCATOR_BOUNDS=new CoordinateSystemBounds(20037508.342788905);export const GEOGRAPHIC_BOUNDS=new CoordinateSystemBounds(180);export function getBounds(e){return e.isWebMercator?WEB_MERCATOR_BOUNDS:e.isGeographic?GEOGRAPHIC_BOUNDS:void 0}export function getScreenExtent(r){if(!r||0===r.length)return;let o,n,i,s;const{spatialReference:a}=r[0];let c;a.isWebMercator?c=WEB_MERCATOR_BOUNDS:a.isGeographic&&(c=GEOGRAPHIC_BOUNDS);const m=(e,t)=>{(!n||e>n)&&(n=e),(!o||e<o)&&(o=e),(!s||t>s)&&(s=t),(!i||t<i)&&(i=t)},p=e=>c&&Math.sign(e.extent.xmax)!==Math.sign(e.extent.xmin),f=e=>{const t=p(e)?d([e.points],c)[0]:e.points;for(const e of t)m(e[0],e[1])},g=e=>{const t=p(e)?d(e.rings,c):e.rings;for(const e of t)for(const t of e)m(t[0],t[1])},u=e=>{const t=p(e)?d(e.paths,c):e.paths;for(const e of t)for(const t of e)m(t[0],t[1])};for(const e of r.filter((e=>e.spatialReference.equals(a))))switch(e.type){case"point":m(e.x,e.y);break;case"multipoint":f(e);break;case"extent":g(t.fromExtent(e));break;case"polyline":u(e);break;case"polygon":g(e);break;default:throw new Error(`Cannot determine a valid screen extent for geometry type ${e.type}`)}return new e({xmin:o>n?n:o,xmax:n<o?o:n,ymin:i,ymax:s,spatialReference:a})}function d(e,t){if(!t)return e;const r=[...e];let o=-1/0,n=1/0;for(let e of r){let r=-1/0,i=1/0;for(const o of e){for(;o[0]<t.min;)o[0]+=t.range;for(;o[0]>t.max;)o[0]-=t.range;i=Math.min(i,o[0]),r=Math.max(r,o[0])}let s=Math.min(n,i),a=Math.max(o,r);if(a-s>t.limit){r=-1/0,i=1/0;const c=[...e];for(const e of c)e[0]<0?e[0]+=t.range:e[0]-=t.range,i=Math.min(i,e[0]),r=Math.max(r,e[0]);const m=Math.min(n,i),p=Math.max(o,r);p-m<a-s&&(e=c,s=m,a=p)}n=Math.min(s,i),o=Math.max(a,r)}return r}export function denormalizeExtent(e,r){if(!r)return e;const o=t.fromExtent(e);return o.rings=d(o.rings,r),o.extent}export function esriToWKT(e){return p("geometry",e).isNotMissing(),import("./_wkt.js").then((({esriToWKT:t})=>t(e)))}export function wktToEsri(e,t){return p("geometry",e).isNotMissing(),import("./_wkt.js").then((({wktToEsri:r})=>r(e,t)))}export function esriToGeoJSON(e){return p("geometry",e).isNotMissing(),import("./_geoJson.js").then((({esriToGeoJSON:t})=>t(e)))}export function geoJSONToEsri(e){return p("geometry",e).isNotMissing(),p("geometry.type",e.type).isNotMissing(),import("./_geoJson.js").then((({geoJSONToEsri:t})=>t(e)))}export function gmlToEsri(e){return p("geometry",e).isNotMissing(),import("./_gml.js").then((({gmlToEsri:t})=>t(e)))}export function esriToGml(e,t){return p("geometry",e).isNotMissing(),p("geometry type",e.type).isNotMissing(),p("gmlVersion",t.gmlVersion).isNotMissing(),import("./_gml.js").then((({esriToGml:r})=>r(e,t)))}export function esriWkidToWkt(e){return p("wkid",e).isNotMissing(),import("./_wkt.js").then((({esriWkidToWkt:t})=>t(e)))}export function esriWktToWkid(e){return p("wkt",e).isNotMissing(),import("./_wkt.js").then((({esriWktToWkid:t})=>t(e)))}export async function createCrossTypeUnion(e){const t=[],r=m(e,(e=>e.type));for(const e of k){const n=r.get(e);let s;if(n?.length){s=n.length>1?await i(n):n[0];for(const e of t)s=await o(s,e);s&&t.push(s)}}return t}const k=["mesh","extent","polygon","polyline","multipoint","point"];export async function project(e,t,r){return p("geometries",e).isNotMissing().satisfies(E,"All geometries must have the same type and spatial reference."),p("outSpatialReference",t).isNotMissing(),(await import("./_project.js")).project(e,t,r)}export async function buffer(e,t,o,i=!1){const m=Array.isArray(e),p=Array.isArray(t);if(m!==p)throw new a("Geometries and distances must be the same type.");const f=Array.isArray(e)?e[0].spatialReference:e.spatialReference;if(f.isWebMercator||f.isWGS84)return n(e,t,o,i);if(f.isGeographic){const r=new s({geometries:m?e:[e],distances:p?t:[t],unit:o,unionResults:i}),{buffer:n}=await import("@arcgis/core/rest/geometryService");return n(c.geometryServiceUrl??M,r)}return r(e,t,o,i)}export function removeZValues(e){const t=e;switch(t.type){case"point":t.z=void 0;break;case"polyline":case"polygon":{const e=function(e,t=!1){const r=t?3:2;return e.map((e=>e.map((e=>e.slice(0,r)))))}(t.paths||t.rings,t.hasM);e.forEach(((e,r)=>e.forEach(((e,o)=>t.setPoint(r,o,e)))));break}case"extent":t.zmax=void 0,t.zmin=void 0}return t}function E(e){const t=[...e];if(!(t.length>0))return!0;const r=t[0].type,o=t[0].spatialReference;return t.every((e=>e.type===r&&e.spatialReference.equals(o)))}
1
+ import t from"@arcgis/core/geometry/Extent";import e from"@arcgis/core/geometry/Multipoint";import o from"@arcgis/core/geometry/Point";import r from"@arcgis/core/geometry/Polygon";import n from"@arcgis/core/geometry/Polyline";import{buffer as s,difference as i,geodesicBuffer as a,union as c}from"@arcgis/core/geometry/geometryEngineAsync";import p from"@arcgis/core/rest/support/BufferParameters";import{ArgumentError as m}from"../ArgumentError.js";import{config as h}from"../config.js";import{groupBy as f}from"./array.js";import{checkArg as u}from"./checkArg.js";import{isExtent as y,isGeometry as g,isMesh as l,isMultipoint as M,isPoint as x,isPolygon as d,isPolyline as b}from"./esri.js";const P=e.prototype.clone;Object.defineProperty(e.prototype,"clone",{value:function(){const t=P.bind(this)();return t.hasZ=this.hasZ,t.hasM=this.hasM,t}});const j=o.prototype.clone;Object.defineProperty(o.prototype,"clone",{value:function(){const t=j.bind(this)();return t.hasZ=this.hasZ,t.hasM=this.hasM,t}});const v=n.prototype.clone;Object.defineProperty(n.prototype,"clone",{value:function(){const t=v.bind(this)();return t.hasZ=this.hasZ,t.hasM=this.hasM,t}});const O=r.prototype.clone;Object.defineProperty(r.prototype,"clone",{value:function(){const t=O.bind(this)();return t.hasZ=this.hasZ,t.hasM=this.hasM,t}});const k=n.prototype.insertPoint;Object.defineProperty(n.prototype,"insertPoint",{value:function(t,e,o){const{hasM:r,hasZ:n}=this,s=k.bind(this)(t,e,o);return s.hasZ=n,s.hasM=r,s}});const E=r.prototype.insertPoint;Object.defineProperty(r.prototype,"insertPoint",{value:function(t,e,o){const{hasM:r,hasZ:n}=this,s=E.bind(this)(t,e,o);return s.hasZ=n,s.hasM=r,s}});const N=n.prototype.setPoint;Object.defineProperty(n.prototype,"setPoint",{value:function(t,e,o){const{hasM:r,hasZ:n}=this,s=N.bind(this)(t,e,o);return s.hasZ=n,s.hasM=r,s}});const w=r.prototype.setPoint;Object.defineProperty(r.prototype,"setPoint",{value:function(t,e,o){const{hasM:r,hasZ:n}=this,s=w.bind(this)(t,e,o);return s.hasZ=n,s.hasM=r,s}});const T=n.prototype.removePoint;Object.defineProperty(n.prototype,"removePoint",{value:function(t,e){const{hasM:o,hasZ:r}=this,n=T.bind(this)(t,e);return this.hasZ=r,this.hasM=o,n}});const Z=r.prototype.removePoint;Object.defineProperty(r.prototype,"removePoint",{value:function(t,e){const{hasM:o,hasZ:r}=this,n=Z.bind(this)(t,e);return this.hasZ=r,this.hasM=o,n}});export{g as isGeometry,x as isPoint,M as isMultipoint,b as isPolyline,d as isPolygon,y as isExtent,l as isMesh};const S="https://tasks.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer";export class CoordinateSystemBounds{limit;get min(){return-this.limit}get max(){return this.limit}get range(){return 2*this.limit}constructor(t){this.limit=t}}export const WEB_MERCATOR_BOUNDS=new CoordinateSystemBounds(20037508.342788905);export const GEOGRAPHIC_BOUNDS=new CoordinateSystemBounds(180);export function getBounds(t){return t.isWebMercator?WEB_MERCATOR_BOUNDS:t.isGeographic?GEOGRAPHIC_BOUNDS:void 0}export function getScreenExtent(e){if(!e||0===e.length)return;let o,n,s,i;const{spatialReference:a}=e[0];let c;a.isWebMercator?c=WEB_MERCATOR_BOUNDS:a.isGeographic&&(c=GEOGRAPHIC_BOUNDS);const p=(t,e)=>{(!n||t>n)&&(n=t),(!o||t<o)&&(o=t),(!i||e>i)&&(i=e),(!s||e<s)&&(s=e)},m=t=>c&&Math.sign(t.extent.xmax)!==Math.sign(t.extent.xmin),h=t=>{const e=m(t)?G([t.points],c)[0]:t.points;for(const t of e)p(t[0],t[1])},f=t=>{const e=m(t)?G(t.rings,c):t.rings;for(const t of e)for(const e of t)p(e[0],e[1])},u=t=>{const e=m(t)?G(t.paths,c):t.paths;for(const t of e)for(const e of t)p(e[0],e[1])};for(const t of e.filter((t=>t.spatialReference.equals(a))))switch(t.type){case"point":p(t.x,t.y);break;case"multipoint":h(t);break;case"extent":f(r.fromExtent(t));break;case"polyline":u(t);break;case"polygon":f(t);break;default:throw new Error(`Cannot determine a valid screen extent for geometry type ${t.type}`)}return new t({xmin:o>n?n:o,xmax:n<o?o:n,ymin:s,ymax:i,spatialReference:a})}function G(t,e){if(!e)return t;const o=[...t];let r=-1/0,n=1/0;for(let t of o){let o=-1/0,s=1/0;for(const r of t){for(;r[0]<e.min;)r[0]+=e.range;for(;r[0]>e.max;)r[0]-=e.range;s=Math.min(s,r[0]),o=Math.max(o,r[0])}let i=Math.min(n,s),a=Math.max(r,o);if(a-i>e.limit){o=-1/0,s=1/0;const c=[...t];for(const t of c)t[0]<0?t[0]+=e.range:t[0]-=e.range,s=Math.min(s,t[0]),o=Math.max(o,t[0]);const p=Math.min(n,s),m=Math.max(r,o);m-p<a-i&&(t=c,i=p,a=m)}n=Math.min(i,s),r=Math.max(a,o)}return o}export function denormalizeExtent(t,e){if(!e)return t;const o=r.fromExtent(t);return o.rings=G(o.rings,e),o.extent}export function esriToWKT(t){return u("geometry",t).isNotMissing(),import("./_wkt.js").then((({esriToWKT:e})=>e(t)))}export function wktToEsri(t,e){return u("geometry",t).isNotMissing(),import("./_wkt.js").then((({wktToEsri:o})=>o(t,e)))}export function esriToGeoJSON(t){return u("geometry",t).isNotMissing(),import("./_geoJson.js").then((({esriToGeoJSON:e})=>e(t)))}export function geoJSONToEsri(t){return u("geometry",t).isNotMissing(),u("geometry.type",t.type).isNotMissing(),import("./_geoJson.js").then((({geoJSONToEsri:e})=>e(t)))}export function gmlToEsri(t){return u("geometry",t).isNotMissing(),import("./_gml.js").then((({gmlToEsri:e})=>e(t)))}export function esriToGml(t,e){return u("geometry",t).isNotMissing(),u("geometry type",t.type).isNotMissing(),u("gmlVersion",e.gmlVersion).isNotMissing(),import("./_gml.js").then((({esriToGml:o})=>o(t,e)))}export function esriWkidToWkt(t){return u("wkid",t).isNotMissing(),import("./_wkt.js").then((({esriWkidToWkt:e})=>e(t)))}export function esriWktToWkid(t){return u("wkt",t).isNotMissing(),import("./_wkt.js").then((({esriWktToWkid:e})=>e(t)))}export async function createCrossTypeUnion(t){const e=[],o=f(t,(t=>t.type));for(const t of R){const r=o.get(t);let n;if(r?.length){n=r.length>1?await c(r):r[0];for(const t of e)n=await i(n,t);n&&e.push(n)}}return e}const R=["mesh","extent","polygon","polyline","multipoint","point"];export async function project(t,e,o){return u("geometries",t).isNotMissing().satisfies(_,"All geometries must have the same type and spatial reference."),u("outSpatialReference",e).isNotMissing(),(await import("./_project.js")).project(t,e,o)}export async function buffer(t,e,o,r=!1){const n=Array.isArray(t),i=Array.isArray(e);if(n!==i)throw new m("Geometries and distances must be the same type.");const c=Array.isArray(t)?t[0].spatialReference:t.spatialReference;if(c.isWebMercator||c.isWGS84)return a(t,e,o,r);if(c.isGeographic){const s=new p({geometries:n?t:[t],distances:i?e:[e],unit:o,unionResults:r}),{buffer:a}=await import("@arcgis/core/rest/geometryService");return a(h.geometryServiceUrl??S,s)}return s(t,e,o,r)}export function removeZValues(t){const e=t;switch(e.type){case"point":e.z=void 0;break;case"polyline":case"polygon":{const t=function(t,e=!1){const o=e?3:2;return t.map((t=>t.map((t=>t.slice(0,o)))))}(e.paths||e.rings,e.hasM);t.forEach(((t,o)=>t.forEach(((t,r)=>e.setPoint(o,r,t)))));break}case"extent":e.zmax=void 0,e.zmin=void 0}return e}function _(t){const e=[...t];if(!(e.length>0))return!0;const o=e[0].type,r=e[0].spatialReference;return e.every((t=>t.type===o&&t.spatialReference.equals(r)))}
package/version.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * The current version of the Geocortex ArcGIS Extensions API.
3
3
  */
4
- export declare const version = "43.4.2";
4
+ export declare const version = "43.5.1";
package/version.js CHANGED
@@ -1 +1 @@
1
- export const version="43.4.2";
1
+ export const version="43.5.1";