@vertigis/arcgis-extensions 41.4.2 → 41.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,7 +16,7 @@
16
16
  <li><a href="../modules/version.html">version</a></li>
17
17
  <li><a href="version.version.html">version</a></li></ul>
18
18
  <h1>Variable version<code class="tsd-tag ts-flagConst">Const</code> </h1></div>
19
- <div class="tsd-signature"><span class="tsd-kind-variable">version</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">&quot;41.4.2&quot;</span><span class="tsd-signature-symbol"> = &quot;41.4.2&quot;</span></div>
19
+ <div class="tsd-signature"><span class="tsd-kind-variable">version</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">&quot;41.4.4&quot;</span><span class="tsd-signature-symbol"> = &quot;41.4.4&quot;</span></div>
20
20
  <div class="tsd-comment tsd-typography"><p>The current version of the Geocortex ArcGIS Extensions API.</p>
21
21
  </div></div>
22
22
  <div class="col-sidebar">
@@ -1 +1 @@
1
- import t from"@arcgis/core/Graphic";import{checkArg as i}from"../utilities/checkArg.js";const r="graphic-visible",e="graphic-popup-template";export function jsonToGraphic(s){i("featureJson",s).isNotMissing();const o={...s};let p=!0;o.attributes?.hasOwnProperty(r)&&(p=o.attributes[r]),o.attributes?.hasOwnProperty(e)&&(o.popupInfo=o.attributes[e]);const a=t.fromJSON(o);return a.visible=p,delete a.attributes[r],delete a.attributes[e],a}export function graphicToJson(t){i("graphic",t).isNotMissing();const e=t.toJSON();return e.attributes[r]=t.visible,e}
1
+ import t from"@arcgis/core/Graphic";import{checkArg as e}from"../utilities/checkArg.js";const i="graphic-visible",r="graphic-popup-template";export function jsonToGraphic(o){e("featureJson",o).isNotMissing();const s={...o};let p=!0;s.attributes?.hasOwnProperty(i)&&(p=s.attributes[i]),s.attributes?.hasOwnProperty(r)&&(s.popupInfo=s.attributes[r]);const a=t.fromJSON(s);return a.visible=p,delete a.attributes[i],delete a.attributes[r],a}export function graphicToJson(t){e("graphic",t).isNotMissing();const r=t.toJSON();return r.attributes[i]=t.visible,delete r.popupTemplate,delete r.aggregateGeometries,r}
package/json/LayerJson.js CHANGED
@@ -1 +1 @@
1
- import{isBuildingSceneLayer as e,isCSVLayer as r,isElevationLayer as t,isFeatureLayer as i,isGeoJSONLayer as a,isGeoRssLayer as o,isGraphicsLayer as n,isGroupLayer as y,isImageryLayer as s,isImageryTileLayer as p,isIntegratedMeshLayer as l,isKMLLayer as c,isMapImageLayer as u,isMapNotesLayer as S,isOpenStreetMapLayer as m,isPointCloudLayer as f,isRouteLayer as L,isSceneLayer as d,isStreamLayer as G,isSubtypeGroupLayer as T,isTiledImageServiceLayer as g,isTileLayer as I,isVectorTileLayer as A,isWebTileLayer as M,isWMSLayer as b,isWMTSLayer as v}from"../utilities/_layers.js";import{groupBy as J}from"../utilities/array.js";import{isBasemap as O,isGround as j,isWebMap as w,isWebScene as N}from"../utilities/mapping.js";import{geometryTypeToJson as P}from"./GeometryJson.js";export async function jsonToLayer(e){return(await import("../portal/LayerBase.js")).LayerBase.toEsriApiLayer(e)}export async function applyJsonToLayer(e,r){e&&Object.keys(e).some((e=>"$ref"!==e&&"layerType"!==e))&&await(await import("../portal/LayerBase.js")).LayerBase.applyToEsriApiLayer(e,r)}export function layerToJson(e){if(n(e))return function(e){const r={id:e.id,title:e.title,layerType:"ArcGISFeatureLayer",visibility:e.visible,opacity:e.opacity,listMode:e.listMode,featureCollection:{layers:[]}},t=J(e.graphics.toArray(),(e=>P(e.geometry.type))),i="graphic-id";for(const[a,o]of t.entries())r.featureCollection.layers.push({layerDefinition:{geometryType:a,name:h(a)},featureSet:{features:o.map((r=>({geometry:r.geometry.toJSON(),attributes:{...r.attributes,[i]:e.graphics.indexOf(r)},symbol:r.symbol?.toJSON(),popupInfo:r.popupTemplate?.toJSON()}))),geometryType:a}});return r}(e);const r=e=>e?"GroupLayer"===e.layerType?[e,...e.layers?.flatMap(r)??[]]:[e]:[],{parent:t}=e;if(y(t)){const i=layerToJson(t);return r(i)?.find((r=>r.id===e.id))}if(w(t)||N(t)){const i=t.toJSON();return i.operationalLayers?.flatMap(r)?.find((r=>r.id===e.id))}if(j(t)){const r=t.toJSON();return r.layers?.find((r=>r.id===e.id))}if(O(t)){const r=t.toJSON();return r.baseMapLayers?.find((r=>r.id===e.id))}return e.write({},{layerContainerType:"operational-layers",origin:"web-scene"})}function h(e){switch(e){case"esriGeometryPoint":return"Points";case"esriGeometryMultipoint":return"Multipoints";case"esriGeometryPolyline":return"Polylines";case"esriGeometryEnvelope":case"esriGeometryPolygon":return"Polygons";default:return"Unknown Geometry"}}export function getLayerJsonType(J){return r(J)?"CSV":G(J)?"ArcGISStreamLayer":i(J)||n(J)||S(J)||L(J)?"ArcGISFeatureLayer":a(J)?"GeoJSON":o(J)?"GeoRSS":s(J)?"ArcGISImageServiceLayer":p(J)?"ArcGISTiledImageServiceLayer":c(J)?"KML":u(J)?"ArcGISMapServiceLayer":m(J)?"OpenStreetMap":M(J)?"WebTiledLayer":A(J)?"VectorTileLayer":g(J)?"ArcGISTiledImageServiceLayer":I(J)?"ArcGISTiledMapServiceLayer":t(J)?"ArcGISTiledElevationServiceLayer":d(J)?"ArcGISSceneServiceLayer":f(J)?"PointCloudLayer":l(J)?"IntegratedMeshLayer":y(J)?"GroupLayer":b(J)?"WMS":v(J)?"WebTiledLayer":e(J)?"BuildingSceneLayer":T(J)?"SubtypeGroupLayer":void 0}
1
+ import e from"@arcgis/core/core/Collection.js";import{isBuildingSceneLayer as r,isCSVLayer as t,isElevationLayer as i,isFeatureLayer as o,isGeoJSONLayer as a,isGeoRssLayer as n,isGraphicsLayer as y,isGroupLayer as l,isImageryLayer as s,isImageryTileLayer as p,isIntegratedMeshLayer as c,isKMLLayer as f,isMapImageLayer as u,isMapNotesLayer as m,isOpenStreetMapLayer as d,isPointCloudLayer as S,isRouteLayer as L,isSceneLayer as g,isStreamLayer as T,isSubtypeGroupLayer as G,isTiledImageServiceLayer as I,isTileLayer as b,isVectorTileLayer as v,isWebTileLayer as J,isWMSLayer as A,isWMTSLayer as M}from"../utilities/_layers.js";import{groupBy as j}from"../utilities/array.js";import{isBasemap as w,isGround as O,isMap as D,isWebMap as h,isWebScene as C}from"../utilities/mapping.js";import{graphicToJson as N}from"./FeatureJson.js";import{geometryTypeToJson as x}from"./GeometryJson.js";export async function jsonToLayer(e){return(await import("../portal/LayerBase.js")).LayerBase.toEsriApiLayer(e)}export async function applyJsonToLayer(e,r){e&&Object.keys(e).some((e=>"$ref"!==e&&"layerType"!==e))&&await(await import("../portal/LayerBase.js")).LayerBase.applyToEsriApiLayer(e,r)}export function layerToJson(r){const t=e=>e?"GroupLayer"===e.layerType?[e,...e.layers?.flatMap(t)??[]]:[e]:[],{parent:i}=r;let a;try{if(l(i)){const e=layerToJson(i);a=t(e)?.find((e=>e.id===r.id))}else if(h(i)||C(i)){const e=i.toJSON();a=e.operationalLayers?.flatMap(t)?.find((e=>e.id===r.id))}else if(O(i)){const e=i.toJSON();a=e.layers?.find((e=>e.id===r.id))}else if(w(i)){const e=i.toJSON();a=e.baseMapLayers?.find((e=>e.id===r.id))}}catch{}if(!a){if(y(r))return function(e){const r={id:e.id,title:e.title,layerType:"ArcGISFeatureLayer",visibility:e.visible,opacity:e.opacity,listMode:e.listMode,featureCollection:{layers:[]}},t=j(e.graphics.toArray(),(e=>x(e.geometry.type))),i="graphic-id";for(const[o,a]of t.entries())r.featureCollection.layers.push({layerDefinition:{geometryType:o,name:E(o)},featureSet:{features:a.map((r=>({geometry:r.geometry.toJSON(),attributes:{...r.attributes,[i]:e.graphics.indexOf(r)},symbol:r.symbol?.toJSON(),popupInfo:r.popupTemplate?.toJSON()}))),geometryType:o}});return r}(r);if(o(r)&&e.isCollection(r.source))return function(e){const r=e.write({},{layerContainerType:"operational-layers",origin:"web-map"}),t={featureSet:{features:e.source.map(N).toArray(),geometryType:x(e.geometryType)}};return t.layerDefinition=r.layerDefinition??{},delete r.layerDefinition,t.layerDefinition.geometryType=x(e.geometryType),t.layerDefinition.objectIdField=e.objectIdField,t.layerDefinition.hasZ=!0,t.layerDefinition.elevationInfo=e.elevationInfo?.write(),t.popupInfo=r.popupInfo,delete r.popupInfo,t.layerDefinition.fields=e.fields.map((e=>e.toJSON())),t.layerDefinition.extent=e.fullExtent?.toJSON(),r.featureCollection={layers:[t],showLegend:e.legendEnabled},r}(r);a=r.write({},{layerContainerType:"operational-layers",origin:C(P(r))?"web-scene":"web-map"})}return a}function P(e){let{parent:r}=e;for(;r?.parent;)r=r.parent;return D(r)?r:void 0}function E(e){switch(e){case"esriGeometryPoint":return"Points";case"esriGeometryMultipoint":return"Multipoints";case"esriGeometryPolyline":return"Polylines";case"esriGeometryEnvelope":case"esriGeometryPolygon":return"Polygons";default:return"Unknown Geometry"}}export function getLayerJsonType(e){return t(e)?"CSV":T(e)?"ArcGISStreamLayer":o(e)||y(e)||m(e)||L(e)?"ArcGISFeatureLayer":a(e)?"GeoJSON":n(e)?"GeoRSS":s(e)?"ArcGISImageServiceLayer":p(e)?"ArcGISTiledImageServiceLayer":f(e)?"KML":u(e)?"ArcGISMapServiceLayer":d(e)?"OpenStreetMap":J(e)?"WebTiledLayer":v(e)?"VectorTileLayer":I(e)?"ArcGISTiledImageServiceLayer":b(e)?"ArcGISTiledMapServiceLayer":i(e)?"ArcGISTiledElevationServiceLayer":g(e)?"ArcGISSceneServiceLayer":S(e)?"PointCloudLayer":c(e)?"IntegratedMeshLayer":l(e)?"GroupLayer":A(e)?"WMS":M(e)?"WebTiledLayer":r(e)?"BuildingSceneLayer":G(e)?"SubtypeGroupLayer":void 0}
@@ -1 +1 @@
1
- import{__decorate as e}from"tslib";import{InvalidOperationError as t}from"../InvalidOperationError.js";import{isSublayerExtension as i,ItemType as s}from"../ItemType.js";import{FeatureSourceBase as r}from"../data/FeatureSourceBase.js";import{Schema as a}from"../data/Schema.js";import{serializable as n}from"../support/Serializable.js";import{isBuildingComponentSublayer as l,isBuildingGroupSublayer as o,isKMLSublayer as u,isMapImageSublayer as y,isMapNotesSublayer as h,isSubtypeSublayer as b,isTileLayer as f,isWMSSublayer as p,isWMTSSublayer as S}from"../utilities/_layers.js";import{checkArg as c}from"../utilities/checkArg.js";import{compare as d}from"../utilities/collection.js";import{load as g}from"../utilities/esri.js";import{getLogger as _}from"../utilities/log.js";import{parse as x}from"../utilities/number.js";import{deepClone as E}from"../utilities/object.js";import{onCollectionPropertyChange as m,watchCollectionPropertyEach as v}from"../utilities/watch.js";import{fromLayerListMode as w,LayerListSettings as M}from"./support/LayerListSettings.js";import{SublayerExtensionCollectionBase as C}from"./support/_SublayerExtensionCollection.js";const P=_("SublayerExtension"),V="Invalid type of sublayer for this type of sublayer extension.",z="This type of layer does not have features.",$="This type of sublayer extension cannot have child sublayer extensions.",A=Object.freeze({supportsAdd:!1,supportsUpdate:!1,supportsDelete:!1,supportsEditing:!1,supportsQuery:!1,supportsAttachmentEditing:!1,supportsStandardizedQueries:!1});export function getSublayerType(e){if(y(e))return f(e?.layer)?"ArcGISTiledSublayer":"ArcGISMapServiceSublayer";if(u(e))return"KMLSublayer";if(S(e))return"WMTSSublayer";if(p(e))return"WMSSublayer";if(l(e))return"BuildingComponentSublayer";if(o(e))return"BuildingGroupSublayer";if(b(e))return"SubtypeSublayer";if(h(e))return"MapNotesSublayer";throw new Error(`Unknown sublayer type for ESRI sublayer: ${e}`)}export class SublayerExtension extends r{get sublayer(){return this._sublayer}get layerExtension(){return this._layerExtension}get parentSublayerExtension(){return this._parentSublayerExtension}get hasFeatures(){return!1}get sublayerExtensions(){return this._sublayerExtensions}get renderer(){}get visibilityMode(){return this.canToggleVisibility?this._visibilityMode:"inherited"}set visibilityMode(e){c("visibilityMode",e).satisfies((e=>this.canToggleVisibility||"inherited"===e),'Sublayers of this type only support a visibility mode of "inherited".'),this._visibilityMode=e,"exclusive"===e&&this._ensureAtMostOneChildSublayerVisible()}get capabilities(){return this._capabilities()}get effectiveMinScale(){const e=this.sublayer?this.sublayer.minScale:0;if(this.parentSublayerExtension){const t=this.parentSublayerExtension.effectiveMinScale||1/0;if(t<(e||1/0))return t}if(this.layerExtension){const t=this.layerExtension.effectiveMinScale||1/0;if(t<(e||1/0))return t}return e}get effectiveMaxScale(){const e=this.sublayer?this.sublayer.maxScale:0;return this.parentSublayerExtension&&this.parentSublayerExtension.effectiveMaxScale>e?this.parentSublayerExtension.effectiveMaxScale:this.layerExtension&&this.layerExtension.effectiveMaxScale>e?this.layerExtension.effectiveMaxScale:e}get isEffectivelyVisible(){const e=!!this.sublayer&&this.sublayer.visible;return this.parentSublayerExtension?this.parentSublayerExtension.isEffectivelyVisible&&e:this.layerExtension?this.layerExtension.isEffectivelyVisible&&e:e}get title(){return this.sublayer?.title??("string"==typeof this._deferredSublayerProperties?.$ref||"number"==typeof this._deferredSublayerProperties?.$ref?this._deferredSublayerProperties?.$ref.toString():this._deferredSublayerProperties?.$ref?.title??this._deferredSublayerProperties?.$ref?.id.toString())??"Sublayer"}get supportsSublayers(){return!1}get canToggleVisibility(){return!0}get canChangeOpacity(){return!0}get canChangeScale(){return!0}get canChangeRenderer(){return!1}get canChangeLabels(){return!1}get canChangeDefinitionExpression(){return!1}get _layerSupportsHideChildren(){return!1}get _sublayerId(){return this.sublayer?.id??("number"==typeof this._deferredSublayerProperties?.$ref?this._deferredSublayerProperties?.$ref:this._deferredSublayerProperties?.$ref?.id)}get _sublayers(){if(this.supportsSublayers)return this.sublayer?.sublayers}get effectiveFullExtent(){return this._effectiveFullExtent?this._effectiveFullExtent:this.parentSublayerExtension?this.parentSublayerExtension.effectiveFullExtent:this.layerExtension?this.layerExtension.effectiveFullExtent:void 0}get initialVisibility(){return this._initialVisibility??this.sublayer?.visible??!1}constructor(e){super(e),this._itemType=s.SUBLAYER_EXTENSION,this._watchHandles=[],this._onSublayerAddedPostInitialize=async e=>{try{await e.initialize()}catch(t){P.error({message:`Error occurred while initializing sublayer extension for sublayer '${e.title??e.sublayer.id??e.id}'.`,error:t})}},this._onSetSublayerVisible=e=>{if("inherited"===this.visibilityMode&&this.supportsSublayers&&this.sublayerExtensions)for(const t of this.sublayerExtensions.toArray())t.sublayer&&t.canToggleVisibility&&(t.sublayer.visible=e);this.notifyChange("isEffectivelyVisible")},this._onSetSublayersSublayerVisible=(e,t,i,s)=>{e&&"exclusive"===this.visibilityMode&&this._ensureAChildSublayerVisible(s)},this._onSublayersChange=e=>{e.added?.length&&"exclusive"===this.visibilityMode&&this._ensureAChildSublayerVisible(e.added[e.added.length-1])};const t=e||{};this._visibilityMode=this.canToggleVisibility?"independent":"inherited",this._sublayerExtensions=this._createSublayerExtensionCollection();const i=t.sublayer;let r;i?.hasOwnProperty("listMode")&&(r=w(i.listMode)),this.layerListSettings=this._createLayerListSettings({...r,...t.layerListSettings}),j(i)?(c("properties.sublayer",i).satisfies((e=>this._isSupportedSublayer(e)),V),this._setSublayer(i)):i&&(this._deferredSublayerProperties=i),this.watch("parentSublayerExtension.isEffectivelyVisible",(()=>this.notifyChange("isEffectivelyVisible")))}static create(e){if(!SublayerExtension.factory)throw new t("Cannot create sublayer extension: no sublayer extension factory has been registered.");return SublayerExtension.factory.create(e)}static _matchesRef(e,t,i){if(!e||!t)return!1;let s=t.$ref;if("string"==typeof s){const e=x(s);s={id:isNaN(e)?s:e,title:s}}else"number"==typeof s&&(s={id:s});const r=b(e)?e.subtypeCode:e.id;return"both"===i?r===s.id&&e.title===s.title:"by-id"===i?r===s.id:"by-title"===i&&e.title===s.title}getFeatures(e,i){if(!this.hasFeatures)throw new t(z);return super.getFeatures(e,i)}getFullExtent(){return this.effectiveFullExtent}async addFeatures(e,i){if(c("features",e).isNotMissing(),!this.hasFeatures)throw new t(z);await super.addFeatures(e,i)}async updateFeatures(e,i){if(c("features",e).isNotMissing(),!this.hasFeatures)throw new t(z);await super.updateFeatures(e,i)}async deleteFeatures(e,i){if(c("features",e).isNotMissing(),!this.hasFeatures)throw new t(z);await super.deleteFeatures(e,i)}_resolveSublayer(){if(this._sublayer||!this._deferredSublayerProperties||!this.layerExtension||!this.layerExtension.layer||!this.layerExtension.layer.sublayers)return;const e=e=>t=>SublayerExtension._matchesRef(t,this._deferredSublayerProperties,e),t=this.layerExtension.layer.sublayers.flatten((e=>e.sublayers));let i=t.find(e("both"));if(i||(i=t.find(e("by-title"))),i||(i=t.find(e("by-id"))),i&&this._isSupportedSublayer(i)){this._setSublayer(i);const e={sublayer:this._deferredSublayerProperties};this.assignProperties(e),this._originalRef=this._deferredSublayerProperties.$ref,this._deferredSublayerProperties=void 0}}_setLayerExtension(e){const t=this.layerExtension;this._layerExtension=e,this.layerExtension&&(this.layerExtension.watch("effectiveMinScale",(()=>this.notifyChange("effectiveMinScale"))),this.layerExtension.watch("effectiveMaxScale",(()=>this.notifyChange("effectiveMaxScale"))),this.layerExtension.watch("isEffectivelyVisible",(()=>this.notifyChange("isEffectivelyVisible")))),this._parentSublayerExtension||(t&&(this.featureSettings.formatSettings.parent===t.featureSettings.formatSettings&&(this.featureSettings.formatSettings.parent=void 0),this.taskSettings.parent===t.taskSettings&&(this.taskSettings.parent=void 0)),e&&(this.featureSettings.formatSettings.parent||(this.featureSettings.formatSettings.parent=e.featureSettings.formatSettings),this.taskSettings.parent||(this.taskSettings.parent=e.taskSettings))),this._resolveSublayer(),this.notifyChange("layerExtension"),this.supportsSublayers&&this._sublayerExtensions.onLayerExtensionChanged()}_setParentSublayerExtension(e){const t=this._parentSublayerExtension;this._parentSublayerExtension=e,this.parentSublayerExtension&&(this.parentSublayerExtension.watch("effectiveMinScale",(()=>this.notifyChange("effectiveMinScale"))),this.parentSublayerExtension.watch("effectiveMaxScale",(()=>this.notifyChange("effectiveMaxScale")))),t&&(this.featureSettings.formatSettings.parent===t.featureSettings.formatSettings&&(this.featureSettings.formatSettings.parent=this.layerExtension?this.layerExtension.featureSettings.formatSettings:void 0),this.taskSettings.parent===t.taskSettings&&(this.taskSettings.parent=this.layerExtension?this.layerExtension.taskSettings:void 0)),e&&((!this.featureSettings.formatSettings.parent||this.layerExtension&&this.featureSettings.formatSettings.parent===this.layerExtension.featureSettings.formatSettings)&&(this.featureSettings.formatSettings.parent=e.featureSettings.formatSettings),(!this.taskSettings.parent||this.layerExtension&&this.taskSettings.parent===this.layerExtension.taskSettings)&&(this.taskSettings.parent=e.taskSettings)),this._resolveSublayer(),this.notifyChange("parentSublayerExtension")}async _switchSublayer(e){if(e===this.sublayer)return;c("newSublayer",e).isNotMissing().satisfies((e=>e.id===this.sublayer.id),"Sublayer ID must match existing sublayer.").satisfies((e=>this._isSupportedSublayer(e)),V),this.isInitialized&&await g(e);const t=new Map;if(this.sublayer?.sublayers)for(const e of this.sublayer.sublayers.toArray())t.set(e.id,this.sublayerExtensions.forSublayer(e));this.canToggleVisibility&&(e.visible=this.sublayer.visible),this.canChangeOpacity&&(e.opacity=this.sublayer.opacity),this._setSublayer(e);const i=[];if(this.supportsSublayers&&this.sublayer.sublayers){const e=this.sublayer.sublayers.filter((e=>t.has(e.id))).toArray();i.push(...e.map((async e=>{const i=t.get(e.id);await i._switchSublayer(e),this._sublayerExtensions._register(i)})))}this.isInitialized&&i.push(this._initializeChildren()),await Promise.all(i)}async _postInitialize(){await super._postInitialize(),this.supportsSublayers&&this._watchHandles.push(m(this,"sublayer.sublayers",(async e=>{const t=(e.added??[]).map((e=>this.sublayerExtensions.forSublayer(e)));await Promise.all(t.map(this._onSublayerAddedPostInitialize))})))}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(),visibilityMode:{serializeModes:["initial"],default:this.canToggleVisibility?"independent":"inherited"},layerListSettings:"initial",sublayerExtensions:{serializeModes:["initial","project"],serialize:()=>this.sublayerExtensions.map((e=>e.toItemUri())).toArray(),deserialize:e=>{_assignSublayerExtensions(this.sublayerExtensions,e,(e=>this._createSublayerExtension(e)))}},sublayer:{serializeModes:["initial","project"],serialize:()=>{if(this.sublayer){if(!this._layerExtension)return this._serializeSublayer(this._sublayer);{const e=getSublayerType(this._sublayer);if(this._originalRef)return{$ref:this._originalRef,$sublayerType:e};if(this._sublayer.title||this._sublayer.id)return{...this._createSublayerRef(),$sublayerType:e}}}else if(this._deferredSublayerProperties)return E(this._deferredSublayerProperties)},deserialize:e=>{if(j(e)){if(e!==this.sublayer)throw new Error("Property 'sublayer' is read-only.")}else{if(this._sublayer)return this._applySublayerProperties(e,this._sublayer);this._deferredSublayerProperties&&(this._deferredSublayerProperties={...this._deferredSublayerProperties,...e})}}},requestHelper:{serialize:!1}}}_createSublayerExtension(e){throw new t($)}_createSchema(){return new F(this)}_createLayerListSettings(e){return new M(e)}_capabilities(){return A}async _onInitialize(){if(await super._onInitialize(),this._sublayer||this._deferredSublayerProperties?.$ref||(this._setSublayer(await this._createSublayer(this._deferredSublayerProperties)),this._deferredSublayerProperties=void 0),this._resolveSublayer(),!this._sublayer){const e=this._deferredSublayerProperties?.$ref;if(!this._layerExtension)throw new t("Cannot resolve sublayer reference: missing parent layer extension.");throw new t(`No sublayer found matching reference "${e}".`)}this._initialVisibility=this.sublayer.visible,this.supportsSublayers&&this._sublayerExtensions.onParentInitialized()}*_initializableChildCollections(){yield*super._initializableChildCollections(),yield this.sublayerExtensions}_createSublayerRef(){return{$ref:{id:b(this._sublayer)?this._sublayer.subtypeCode:this._sublayer.id,title:this._sublayer.title}}}_createSublayerExtensionCollection(){return new SubSublayerExtensionCollection(this)}_watchSublayerProperties(){this._watchHandles.push(this.sublayer.watch("minScale",(()=>this.notifyChange("effectiveMinScale")),!0),this.sublayer.watch("maxScale",(()=>this.notifyChange("effectiveMaxScale")),!0))}_setSublayer(e){this._sublayer=e,this._watchHandles.push(e.watch("visible",this._onSetSublayerVisible,!0)),this.supportsSublayers&&this._watchHandles.push(m(e,"sublayers",this._onSublayersChange,!0),v(e,"sublayers","visible",this._onSetSublayersSublayerVisible,!0)),this._onSetSublayerVisible(this.sublayer.visible),"exclusive"===this.visibilityMode&&this._ensureAtMostOneChildSublayerVisible(),this._watchSublayerProperties(),this.notifyChange("sublayer"),this.notifyChange("title"),this.notifyChange("effectiveMinScale"),this.notifyChange("effectiveMaxScale"),this.notifyChange("isEffectivelyVisible")}_ensureAChildSublayerVisible(e){for(const t of this._sublayers.toArray())t!==e&&(t.visible=!1)}_ensureAtMostOneChildSublayerVisible(){this.sublayer&&this._sublayers&&this._ensureAChildSublayerVisible(this._sublayers.find((e=>e.visible)))}}let F=class extends a{constructor(e){super(),this._sublayerBindings=new Map,this._sublayerExtension=e,this._bindSettingsToSublayerProperties()}get spatialReference(){if(this._sublayerExtension.layerExtension)return this._sublayerExtension.layerExtension.schema.spatialReference}set spatialReference(e){throw new t("Cannot set sublayer schema spatial reference.")}_getPropertyBindings(){return{}}_bindSettingsToSublayerProperties(){const e=this._getPropertyBindings();for(const t of Object.keys(e)){let i=e[t];"string"==typeof i&&(i={property:i}),this._sublayerBindings.set(t,i),i.hasOwnProperty("value")||this._sublayerExtension.watch(`sublayer.${i.property}`,(()=>this.notifyChange(t)),!i.hasOwnProperty("sync")||i.sync)}}};F=e([n],F);export{F as SublayerSchema};export class SubSublayerExtensionCollection extends C{get _layerExtension(){return this._parent.layerExtension}constructor(e,t){super(e,t??"sublayer.sublayers")}add(e,i){if(c("sublayerX",e).isNotMissing(),!this._parent.supportsSublayers)throw new t($);return e.sublayer&&this._parent.sublayer&&!this._parent.sublayer.sublayers&&(this._parent.sublayer.sublayers=[]),e.parentSublayerExtension&&e.parentSublayerExtension.sublayerExtensions.remove(e),super.add(e,i)}_onAdded(e){super._onAdded(e),e._setParentSublayerExtension(this._parent)}_onRemoved(e){super._onRemoved(e),e._setParentSublayerExtension(void 0)}}export function _assignSublayerExtensions(e,t,s){d(e,t,{onNew:(t,r)=>{try{e.add(i(t)?t:s(t),T(t)?void 0:r)}catch(e){P.warn({message:`Error occurred while adding sublayer extension for sublayer '${t.title??t.sublayer?.id??t.id}'.`,error:e})}},onMatch:(t,s,r,a)=>{try{i(s)||t.assignProperties(s),r===a||T(s)||e.reorder(t,a)}catch(e){P.warn({message:`Error occurred while assigning sublayer extension properties for sublayer '${t.title??t.sublayer?.id??t.id}'.`,error:e})}},equals:(e,t)=>i(t)?t===e:!!SublayerExtension._matchesRef(e.sublayer,t.sublayer,"both")||e.id===t.id})}function j(e){return e&&"function"==typeof e.get}function T(e){return i(e)?!!e._deferredSublayerProperties?.$ref:!j(e.sublayer)&&!!e.sublayer?.$ref}
1
+ import{__decorate as e}from"tslib";import{InvalidOperationError as t}from"../InvalidOperationError.js";import{isSublayerExtension as i,ItemType as s}from"../ItemType.js";import{FeatureSourceBase as r}from"../data/FeatureSourceBase.js";import{Schema as a}from"../data/Schema.js";import{serializable as n}from"../support/Serializable.js";import{isBuildingComponentSublayer as l,isBuildingGroupSublayer as o,isKMLSublayer as u,isMapImageSublayer as y,isMapNotesSublayer as h,isSubtypeSublayer as b,isTileLayer as f,isWMSSublayer as p,isWMTSSublayer as S}from"../utilities/_layers.js";import{checkArg as c}from"../utilities/checkArg.js";import{compare as d}from"../utilities/collection.js";import{load as g}from"../utilities/esri.js";import{getLogger as _}from"../utilities/log.js";import{parse as x}from"../utilities/number.js";import{deepClone as E}from"../utilities/object.js";import{onCollectionPropertyChange as m,watchCollectionPropertyEach as v}from"../utilities/watch.js";import{fromLayerListMode as w,LayerListSettings as M}from"./support/LayerListSettings.js";import{SublayerExtensionCollectionBase as C}from"./support/_SublayerExtensionCollection.js";const P=_("SublayerExtension"),V="Invalid type of sublayer for this type of sublayer extension.",z="This type of layer does not have features.",$="This type of sublayer extension cannot have child sublayer extensions.",A=Object.freeze({supportsAdd:!1,supportsUpdate:!1,supportsDelete:!1,supportsEditing:!1,supportsQuery:!1,supportsAttachmentEditing:!1,supportsStandardizedQueries:!1});export function getSublayerType(e){if(y(e))return f(e?.layer)?"ArcGISTiledSublayer":"ArcGISMapServiceSublayer";if(u(e))return"KMLSublayer";if(S(e))return"WMTSSublayer";if(p(e))return"WMSSublayer";if(l(e))return"BuildingComponentSublayer";if(o(e))return"BuildingGroupSublayer";if(b(e))return"SubtypeSublayer";if(h(e))return"MapNotesSublayer";throw new Error(`Unknown sublayer type for ESRI sublayer: ${e}`)}export class SublayerExtension extends r{get sublayer(){return this._sublayer}get layerExtension(){return this._layerExtension}get parentSublayerExtension(){return this._parentSublayerExtension}get hasFeatures(){return!1}get sublayerExtensions(){return this._sublayerExtensions}get renderer(){}get visibilityMode(){return this.canToggleVisibility?this._visibilityMode:"inherited"}set visibilityMode(e){c("visibilityMode",e).satisfies((e=>this.canToggleVisibility||"inherited"===e),'Sublayers of this type only support a visibility mode of "inherited".'),this._visibilityMode=e,"exclusive"===e&&this._ensureAtMostOneChildSublayerVisible()}get capabilities(){return this._capabilities()}get effectiveMinScale(){const e=this.sublayer?this.sublayer.minScale:0;if(this.parentSublayerExtension){const t=this.parentSublayerExtension.effectiveMinScale||1/0;if(t<(e||1/0))return t}if(this.layerExtension){const t=this.layerExtension.effectiveMinScale||1/0;if(t<(e||1/0))return t}return e}get effectiveMaxScale(){const e=this.sublayer?this.sublayer.maxScale:0;return this.parentSublayerExtension&&this.parentSublayerExtension.effectiveMaxScale>e?this.parentSublayerExtension.effectiveMaxScale:this.layerExtension&&this.layerExtension.effectiveMaxScale>e?this.layerExtension.effectiveMaxScale:e}get isEffectivelyVisible(){const e=!!this.sublayer&&this.sublayer.visible;return this.parentSublayerExtension?this.parentSublayerExtension.isEffectivelyVisible&&e:this.layerExtension?this.layerExtension.isEffectivelyVisible&&e:e}get title(){return this.sublayer?.title??("string"==typeof this._deferredSublayerProperties?.$ref||"number"==typeof this._deferredSublayerProperties?.$ref?this._deferredSublayerProperties?.$ref.toString():this._deferredSublayerProperties?.$ref?.title??this._deferredSublayerProperties?.$ref?.id.toString())??"Sublayer"}get supportsSublayers(){return!1}get canToggleVisibility(){return!0}get canChangeOpacity(){return!0}get canChangeScale(){return!0}get canChangeRenderer(){return!1}get canChangeLabels(){return!1}get canChangeDefinitionExpression(){return!1}get _layerSupportsHideChildren(){return!1}get _sublayerId(){return this.sublayer?.id??("number"==typeof this._deferredSublayerProperties?.$ref?this._deferredSublayerProperties?.$ref:this._deferredSublayerProperties?.$ref?.id)}get _sublayers(){if(this.supportsSublayers)return this.sublayer?.sublayers}get effectiveFullExtent(){return this._effectiveFullExtent?this._effectiveFullExtent:this.parentSublayerExtension?this.parentSublayerExtension.effectiveFullExtent:this.layerExtension?this.layerExtension.effectiveFullExtent:void 0}get initialVisibility(){return this._initialVisibility??this.sublayer?.visible??!1}constructor(e){super(e),this._itemType=s.SUBLAYER_EXTENSION,this._watchHandles=[],this._onSublayerAddedPostInitialize=async e=>{try{await e.initialize()}catch(t){P.error({message:`Error occurred while initializing sublayer extension for sublayer '${e.title??e.sublayer.id??e.id}'.`,error:t})}},this._onSetSublayerVisible=e=>{if("inherited"===this.visibilityMode&&this.supportsSublayers&&this.sublayerExtensions)for(const t of this.sublayerExtensions.toArray())t.sublayer&&t.canToggleVisibility&&(t.sublayer.visible=e);this.notifyChange("isEffectivelyVisible")},this._onSetSublayersSublayerVisible=(e,t,i,s)=>{e&&"exclusive"===this.visibilityMode&&this._ensureAChildSublayerVisible(s)},this._onSublayersChange=e=>{e.added?.length&&"exclusive"===this.visibilityMode&&this._ensureAChildSublayerVisible(e.added[e.added.length-1])};const t=e||{};this._visibilityMode=this.canToggleVisibility?"independent":"inherited",this._sublayerExtensions=this._createSublayerExtensionCollection();const i=t.sublayer;let r;i?.hasOwnProperty("listMode")&&(r=w(i.listMode)),this.layerListSettings=this._createLayerListSettings({...r,...t.layerListSettings}),j(i)?(c("properties.sublayer",i).satisfies((e=>this._isSupportedSublayer(e)),V),this._setSublayer(i)):i&&(this._deferredSublayerProperties=i),this.watch("parentSublayerExtension.isEffectivelyVisible",(()=>this.notifyChange("isEffectivelyVisible")))}static create(e){if(!SublayerExtension.factory)throw new t("Cannot create sublayer extension: no sublayer extension factory has been registered.");return SublayerExtension.factory.create(e)}static _matchesRef(e,t,i){if(!e||!t)return!1;let s=t.$ref;if("string"==typeof s){const e=x(s);s={id:isNaN(e)?s:e,title:s}}else"number"==typeof s&&(s={id:s});const r=b(e)?e.subtypeCode:e.id;return"both"===i?r===s.id&&e.title===s.title:"by-id"===i?r===s.id:"by-title"===i&&e.title===s.title}getFeatures(e,i){if(!this.hasFeatures)throw new t(z);return super.getFeatures(e,i)}getFullExtent(){return this.effectiveFullExtent}async addFeatures(e,i){if(c("features",e).isNotMissing(),!this.hasFeatures)throw new t(z);await super.addFeatures(e,i)}async updateFeatures(e,i){if(c("features",e).isNotMissing(),!this.hasFeatures)throw new t(z);await super.updateFeatures(e,i)}async deleteFeatures(e,i){if(c("features",e).isNotMissing(),!this.hasFeatures)throw new t(z);await super.deleteFeatures(e,i)}_resolveSublayer(){if(this._sublayer||!this._deferredSublayerProperties||!this.layerExtension||!this.layerExtension.layer||!this.layerExtension.layer.sublayers)return;const e=e=>t=>SublayerExtension._matchesRef(t,this._deferredSublayerProperties,e),t=this.layerExtension.layer.sublayers.flatten((e=>e.sublayers));let i=t.find(e("both"));if(i||(i=t.find(e("by-title"))),i||(i=t.find(e("by-id"))),i&&this._isSupportedSublayer(i)){this._setSublayer(i);const e={sublayer:{title:this.title,...this._deferredSublayerProperties}};this.assignProperties(e),this._originalRef=this._deferredSublayerProperties.$ref,this._deferredSublayerProperties=void 0}}_setLayerExtension(e){const t=this.layerExtension;this._layerExtension=e,this.layerExtension&&(this.layerExtension.watch("effectiveMinScale",(()=>this.notifyChange("effectiveMinScale"))),this.layerExtension.watch("effectiveMaxScale",(()=>this.notifyChange("effectiveMaxScale"))),this.layerExtension.watch("isEffectivelyVisible",(()=>this.notifyChange("isEffectivelyVisible")))),this._parentSublayerExtension||(t&&(this.featureSettings.formatSettings.parent===t.featureSettings.formatSettings&&(this.featureSettings.formatSettings.parent=void 0),this.taskSettings.parent===t.taskSettings&&(this.taskSettings.parent=void 0)),e&&(this.featureSettings.formatSettings.parent||(this.featureSettings.formatSettings.parent=e.featureSettings.formatSettings),this.taskSettings.parent||(this.taskSettings.parent=e.taskSettings))),this._resolveSublayer(),this.notifyChange("layerExtension"),this.supportsSublayers&&this._sublayerExtensions.onLayerExtensionChanged()}_setParentSublayerExtension(e){const t=this._parentSublayerExtension;this._parentSublayerExtension=e,this.parentSublayerExtension&&(this.parentSublayerExtension.watch("effectiveMinScale",(()=>this.notifyChange("effectiveMinScale"))),this.parentSublayerExtension.watch("effectiveMaxScale",(()=>this.notifyChange("effectiveMaxScale")))),t&&(this.featureSettings.formatSettings.parent===t.featureSettings.formatSettings&&(this.featureSettings.formatSettings.parent=this.layerExtension?this.layerExtension.featureSettings.formatSettings:void 0),this.taskSettings.parent===t.taskSettings&&(this.taskSettings.parent=this.layerExtension?this.layerExtension.taskSettings:void 0)),e&&((!this.featureSettings.formatSettings.parent||this.layerExtension&&this.featureSettings.formatSettings.parent===this.layerExtension.featureSettings.formatSettings)&&(this.featureSettings.formatSettings.parent=e.featureSettings.formatSettings),(!this.taskSettings.parent||this.layerExtension&&this.taskSettings.parent===this.layerExtension.taskSettings)&&(this.taskSettings.parent=e.taskSettings)),this._resolveSublayer(),this.notifyChange("parentSublayerExtension")}async _switchSublayer(e){if(e===this.sublayer)return;c("newSublayer",e).isNotMissing().satisfies((e=>e.id===this.sublayer.id),"Sublayer ID must match existing sublayer.").satisfies((e=>this._isSupportedSublayer(e)),V),this.isInitialized&&await g(e);const t=new Map;if(this.sublayer?.sublayers)for(const e of this.sublayer.sublayers.toArray())t.set(e.id,this.sublayerExtensions.forSublayer(e));this.canToggleVisibility&&(e.visible=this.sublayer.visible),this.canChangeOpacity&&(e.opacity=this.sublayer.opacity),this._setSublayer(e);const i=[];if(this.supportsSublayers&&this.sublayer.sublayers){const e=this.sublayer.sublayers.filter((e=>t.has(e.id))).toArray();i.push(...e.map((async e=>{const i=t.get(e.id);await i._switchSublayer(e),this._sublayerExtensions._register(i)})))}this.isInitialized&&i.push(this._initializeChildren()),await Promise.all(i)}async _postInitialize(){await super._postInitialize(),this.supportsSublayers&&this._watchHandles.push(m(this,"sublayer.sublayers",(async e=>{const t=(e.added??[]).map((e=>this.sublayerExtensions.forSublayer(e)));await Promise.all(t.map(this._onSublayerAddedPostInitialize))})))}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(),visibilityMode:{serializeModes:["initial"],default:this.canToggleVisibility?"independent":"inherited"},layerListSettings:"initial",sublayerExtensions:{serializeModes:["initial","project"],serialize:()=>this.sublayerExtensions.map((e=>e.toItemUri())).toArray(),deserialize:e=>{_assignSublayerExtensions(this.sublayerExtensions,e,(e=>this._createSublayerExtension(e)))}},sublayer:{serializeModes:["initial","project"],serialize:()=>{if(this.sublayer){if(!this._layerExtension)return this._serializeSublayer(this._sublayer);{const e=getSublayerType(this._sublayer);if(this._originalRef)return{$ref:this._originalRef,$sublayerType:e};if(this._sublayer.title||this._sublayer.id)return{...this._createSublayerRef(),$sublayerType:e}}}else if(this._deferredSublayerProperties)return E(this._deferredSublayerProperties)},deserialize:e=>{if(j(e)){if(e!==this.sublayer)throw new Error("Property 'sublayer' is read-only.")}else{if(this._sublayer)return this._applySublayerProperties(e,this._sublayer);this._deferredSublayerProperties&&(this._deferredSublayerProperties={...this._deferredSublayerProperties,...e})}}},requestHelper:{serialize:!1}}}_createSublayerExtension(e){throw new t($)}_createSchema(){return new F(this)}_createLayerListSettings(e){return new M(e)}_capabilities(){return A}async _onInitialize(){if(await super._onInitialize(),this._sublayer||this._deferredSublayerProperties?.$ref||(this._setSublayer(await this._createSublayer(this._deferredSublayerProperties)),this._deferredSublayerProperties=void 0),this._resolveSublayer(),!this._sublayer){const e=this._deferredSublayerProperties?.$ref;if(!this._layerExtension)throw new t("Cannot resolve sublayer reference: missing parent layer extension.");throw new t(`No sublayer found matching reference "${e}".`)}this._initialVisibility=this.sublayer.visible,this.supportsSublayers&&this._sublayerExtensions.onParentInitialized()}*_initializableChildCollections(){yield*super._initializableChildCollections(),yield this.sublayerExtensions}_createSublayerRef(){return{$ref:{id:b(this._sublayer)?this._sublayer.subtypeCode:this._sublayer.id,title:this._sublayer.title}}}_createSublayerExtensionCollection(){return new SubSublayerExtensionCollection(this)}_watchSublayerProperties(){this._watchHandles.push(this.sublayer.watch("minScale",(()=>this.notifyChange("effectiveMinScale")),!0),this.sublayer.watch("maxScale",(()=>this.notifyChange("effectiveMaxScale")),!0))}_setSublayer(e){this._sublayer=e,this._watchHandles.push(e.watch("visible",this._onSetSublayerVisible,!0)),this.supportsSublayers&&this._watchHandles.push(m(e,"sublayers",this._onSublayersChange,!0),v(e,"sublayers","visible",this._onSetSublayersSublayerVisible,!0)),this._onSetSublayerVisible(this.sublayer.visible),"exclusive"===this.visibilityMode&&this._ensureAtMostOneChildSublayerVisible(),this._watchSublayerProperties(),this.notifyChange("sublayer"),this.notifyChange("title"),this.notifyChange("effectiveMinScale"),this.notifyChange("effectiveMaxScale"),this.notifyChange("isEffectivelyVisible")}_ensureAChildSublayerVisible(e){for(const t of this._sublayers.toArray())t!==e&&(t.visible=!1)}_ensureAtMostOneChildSublayerVisible(){this.sublayer&&this._sublayers&&this._ensureAChildSublayerVisible(this._sublayers.find((e=>e.visible)))}}let F=class extends a{constructor(e){super(),this._sublayerBindings=new Map,this._sublayerExtension=e,this._bindSettingsToSublayerProperties()}get spatialReference(){if(this._sublayerExtension.layerExtension)return this._sublayerExtension.layerExtension.schema.spatialReference}set spatialReference(e){throw new t("Cannot set sublayer schema spatial reference.")}_getPropertyBindings(){return{}}_bindSettingsToSublayerProperties(){const e=this._getPropertyBindings();for(const t of Object.keys(e)){let i=e[t];"string"==typeof i&&(i={property:i}),this._sublayerBindings.set(t,i),i.hasOwnProperty("value")||this._sublayerExtension.watch(`sublayer.${i.property}`,(()=>this.notifyChange(t)),!i.hasOwnProperty("sync")||i.sync)}}};F=e([n],F);export{F as SublayerSchema};export class SubSublayerExtensionCollection extends C{get _layerExtension(){return this._parent.layerExtension}constructor(e,t){super(e,t??"sublayer.sublayers")}add(e,i){if(c("sublayerX",e).isNotMissing(),!this._parent.supportsSublayers)throw new t($);return e.sublayer&&this._parent.sublayer&&!this._parent.sublayer.sublayers&&(this._parent.sublayer.sublayers=[]),e.parentSublayerExtension&&e.parentSublayerExtension.sublayerExtensions.remove(e),super.add(e,i)}_onAdded(e){super._onAdded(e),e._setParentSublayerExtension(this._parent)}_onRemoved(e){super._onRemoved(e),e._setParentSublayerExtension(void 0)}}export function _assignSublayerExtensions(e,t,s){d(e,t,{onNew:(t,r)=>{try{e.add(i(t)?t:s(t),T(t)?void 0:r)}catch(e){P.warn({message:`Error occurred while adding sublayer extension for sublayer '${t.title??t.sublayer?.id??t.id}'.`,error:e})}},onMatch:(t,s,r,a)=>{try{i(s)||t.assignProperties(s),r===a||T(s)||e.reorder(t,a)}catch(e){P.warn({message:`Error occurred while assigning sublayer extension properties for sublayer '${t.title??t.sublayer?.id??t.id}'.`,error:e})}},equals:(e,t)=>i(t)?t===e:!!SublayerExtension._matchesRef(e.sublayer,t.sublayer,"both")||e.id===t.id})}function j(e){return e&&"function"==typeof e.get}function T(e){return i(e)?!!e._deferredSublayerProperties?.$ref:!j(e.sublayer)&&!!e.sublayer?.$ref}
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": "41.4.2",
4
+ "version": "41.4.4",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://dev.azure.com/vertigis/Studio/_git/arcgis-extensions-ts"
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 = "41.4.2";
4
+ export declare const version = "41.4.4";
package/version.js CHANGED
@@ -1 +1 @@
1
- export const version="41.4.2";
1
+ export const version="41.4.4";