@vertigis/arcgis-extensions 37.7.0 → 38.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 +24 -11
- package/data/Feature.js +1 -1
- package/data/FeatureList.d.ts +1 -1
- package/data/FeatureList.js +1 -1
- package/data/FeatureSettings.js +1 -1
- package/data/FeatureSourceBase.d.ts +1 -1
- package/data/FeatureSourceBase.js +1 -1
- package/data/PopupContentExtension.js +1 -1
- package/data/Schema.js +1 -1
- package/declarations/arcgis-js-api-extensions/index.d.ts +12 -10
- package/docs/html/assets/search.js +1 -1
- package/docs/html/classes/data_FeatureList.FeatureList.html +8 -8
- package/docs/html/classes/data_FeatureSourceBase.RelationshipCollection.html +8 -8
- package/docs/html/classes/data_FeatureStream.FeatureStream.html +1 -1
- package/docs/html/classes/mapping_ArcGISSublayerExtension.ArcGISSublayerRelationshipCollection.html +8 -8
- package/docs/html/classes/mapping_GroupLayerExtension.GroupLayerExtensionCollection.html +8 -8
- package/docs/html/classes/mapping_SubtypeGroupLayerExtension.SubtypeGroupLayerRelationshipCollection.html +8 -8
- package/docs/html/classes/mapping_SubtypeSublayerExtension.SubtypeSublayerRelationshipCollection.html +8 -8
- package/docs/html/classes/mapping__SublayerExtension.SubSublayerExtensionCollection.html +8 -8
- package/docs/html/classes/mapping_support_ArrayWrappedCollection.ArrayWrappedCollection.html +8 -8
- package/docs/html/classes/mapping_support__LayerExtensionCollection.LayerExtensionCollectionBase.html +8 -8
- package/docs/html/classes/mapping_support__SublayerExtensionCollection.SublayerExtensionCollectionBase.html +8 -8
- package/docs/html/classes/support_InitializableCollectionProxy.InitializableCollectionProxy.html +8 -8
- package/docs/html/classes/support_ReadOnlyInitializableCollection.ReadOnlyInitializableCollection.html +8 -8
- package/docs/html/classes/support__ArcGISRelationshipCollection.ArcGISRelationshipCollection.html +8 -8
- package/docs/html/classes/utilities_CollectionProxy.CollectionProxy.html +8 -8
- package/docs/html/classes/utilities_CopyOnWriteCollection.CopyOnWriteCollection.html +8 -8
- package/docs/html/classes/utilities_MapTransformCollection.MapTransformCollection.html +8 -8
- package/docs/html/classes/utilities_ReadOnlyCollection.ReadOnlyCollection.html +8 -8
- package/docs/html/classes/utilities_asyncIterable.AsyncQueue.html +1 -1
- package/docs/html/functions/portal_ElevationInfo.ElevationInfo.fromEsriApiElevationInfo.html +2 -2
- package/docs/html/functions/portal_Lighting.Lighting.fromEsriApiLighting.html +2 -2
- package/docs/html/functions/utilities_esri.getAllFieldInfos.html +1 -0
- package/docs/html/functions/utilities_esri.getAllReferencedFieldNames.html +1 -0
- package/docs/html/functions/utilities_esri.isAttachmentsContent.html +1 -0
- package/docs/html/functions/utilities_esri.isCodedValueDomain.html +1 -0
- package/docs/html/functions/utilities_esri.isColor.html +1 -0
- package/docs/html/functions/utilities_esri.isCustomContent.html +1 -0
- package/docs/html/functions/utilities_esri.isEsriObject.html +1 -0
- package/docs/html/functions/utilities_esri.isExpressionContent.html +1 -0
- package/docs/html/functions/utilities_esri.isFeatureSet.html +1 -0
- package/docs/html/functions/utilities_esri.isFeatureType.html +1 -0
- package/docs/html/functions/utilities_esri.isField.html +1 -0
- package/docs/html/functions/utilities_esri.isFieldsContent.html +1 -0
- package/docs/html/functions/utilities_esri.isGraphic.html +1 -0
- package/docs/html/functions/utilities_esri.isImageMediaInfo.html +1 -0
- package/docs/html/functions/utilities_esri.isMediaContent.html +1 -0
- package/docs/html/functions/utilities_esri.isPopupContent.html +1 -0
- package/docs/html/functions/utilities_esri.isPopupTemplate.html +1 -0
- package/docs/html/functions/utilities_esri.isPortalItem.html +1 -0
- package/docs/html/functions/utilities_esri.isRelationshipContent.html +626 -0
- package/docs/html/functions/utilities_esri.isSpatialReference.html +1 -0
- package/docs/html/functions/utilities_esri.isTextContent.html +1 -0
- package/docs/html/functions/utilities_esri.isViewpoint.html +1 -0
- package/docs/html/functions/utilities_esri.load.html +1 -0
- package/docs/html/functions/utilities_esri.ready.html +1 -0
- package/docs/html/interfaces/data_PopupContentExtension.ContentProperties.html +33 -3
- package/docs/html/interfaces/data_support_attachments.AttachmentEnabledLayer.html +1 -13
- package/docs/html/interfaces/portal_PopupInfo.PopupElement.html +30 -3
- package/docs/html/interfaces/portal_SubtypeGroupLayer.SubtypeGroupLayer-1.html +1 -1
- package/docs/html/interfaces/portal_SubtypeGroupLayer.SubtypeSubtypeGroupLayer.html +1 -1
- package/docs/html/interfaces/portal_WMSLayer.WMSLayer-1.html +1 -1
- package/docs/html/modules/utilities_esri.html +2 -0
- package/docs/html/types/portal_PopupInfo.PopupElementType.html +1 -1
- package/docs/html/types/portal__LayerBase.LayerType.html +1 -1
- package/docs/html/types/support_esri.FeatureLayerElevationInfo.html +1 -1
- package/docs/html/variables/version.version.html +1 -1
- package/mapping/BasemapExtension.js +1 -1
- package/mapping/BuildingGroupSublayerExtension.js +1 -1
- package/mapping/BuildingSceneLayerExtension.js +1 -1
- package/mapping/GroundExtension.js +1 -1
- package/mapping/GroupLayerExtension.d.ts +1 -1
- package/mapping/GroupLayerExtension.js +1 -1
- package/mapping/ImageryLayerExtension.js +1 -1
- package/mapping/KMLLayerExtension.js +1 -1
- package/mapping/KMLSublayerExtension.js +1 -1
- package/mapping/MapExtension.js +1 -1
- package/mapping/SubtypeGroupLayerExtension.js +1 -1
- package/mapping/SubtypeSublayerExtension.js +1 -1
- package/mapping/WMSLayerExtension.js +1 -1
- package/mapping/WMSSublayerExtension.js +1 -1
- package/mapping/WMTSLayerExtension.js +1 -1
- package/mapping/_LayerExtension.js +1 -1
- package/mapping/_SublayerExtension.d.ts +1 -1
- package/mapping/_SublayerExtension.js +1 -1
- package/mapping/support/ArrayWrappedCollection.d.ts +1 -1
- package/mapping/support/ArrayWrappedCollection.js +1 -1
- package/mapping/support/DefaultLayerExtensionFactory.js +1 -1
- package/mapping/support/_LayerExtensionCollection.d.ts +2 -2
- package/mapping/support/_LayerExtensionCollection.js +1 -1
- package/mapping/support/_SublayerExtensionCollection.d.ts +2 -2
- package/mapping/support/_SublayerExtensionCollection.js +1 -1
- package/menus/Menu.js +1 -1
- package/package.json +3 -3
- package/portal/LayerBase.js +1 -1
- package/portal/PopupInfo.d.ts +22 -4
- package/portal/PopupInfo.js +1 -1
- package/portal/SubtypeGroupLayer.d.ts +2 -2
- package/portal/SubtypeGroupLayer.js +1 -1
- package/portal/SubtypeSublayer.js +1 -1
- package/portal/WMSLayer.d.ts +1 -1
- package/portal/WMSLayer.js +1 -1
- package/portal/_LayerBase.d.ts +1 -1
- package/support/esri.d.ts +1 -1
- package/tasks/identify/CSVLayerClientSideQueryIdentifyProvider.js +1 -1
- package/tasks/identify/ImageryLayerIdentifyProvider.js +1 -1
- package/utilities/CollectionProxy.d.ts +4 -4
- package/utilities/CollectionProxy.js +1 -1
- package/utilities/CopyOnWriteCollection.d.ts +2 -2
- package/utilities/CopyOnWriteCollection.js +1 -1
- package/utilities/ReadOnlyCollection.d.ts +3 -4
- package/utilities/esri.d.ts +7 -0
- package/utilities/esri.js +1 -1
- package/utilities/extensions.js +1 -1
- package/utilities/geometry.js +1 -1
- package/utilities/symbol.js +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__decorate}from"tslib";import{InvalidOperationError}from"../InvalidOperationError.js";import{isSublayerExtension,ItemType}from"../ItemType.js";import{FeatureSourceBase}from"../data/FeatureSourceBase.js";import{Schema}from"../data/Schema.js";import{serializable}from"../support/Serializable.js";import{isBuildingComponentSublayer,isBuildingGroupSublayer,isKMLSublayer,isMapImageSublayer,isSubtypeSublayer,isTileLayer,isWMSSublayer,isWMTSSublayer}from"../utilities/_layers.js";import{checkArg}from"../utilities/checkArg.js";import{compare}from"../utilities/collection.js";import{load}from"../utilities/esri.js";import{getLogger}from"../utilities/log.js";import{parse}from"../utilities/number.js";import{deepClone}from"../utilities/object.js";import{onCollectionPropertyChange,watchCollectionPropertyEach}from"../utilities/watch.js";import{fromLayerListMode,LayerListSettings}from"./support/LayerListSettings.js";import{SublayerExtensionCollectionBase}from"./support/_SublayerExtensionCollection.js";const log=getLogger("SublayerExtension"),ERR_INVALID_SUBLAYER_TYPE="Invalid type of sublayer for this type of sublayer extension.",ERR_FEATURES_NOT_SUPPORTED="This type of layer does not have features.",ERR_SUBLAYERX_NOT_SUPPORTED="This type of sublayer extension cannot have child sublayer extensions.",DEFAULT_CAPABILITIES=Object.freeze({supportsAdd:!1,supportsUpdate:!1,supportsDelete:!1,supportsEditing:!1,supportsQuery:!1,supportsAttachmentEditing:!1});export function getSublayerType(e){if(isMapImageSublayer(e))return isTileLayer(e?.layer)?"ArcGISTiledSublayer":"ArcGISMapServiceSublayer";if(isKMLSublayer(e))return"KMLSublayer";if(isWMTSSublayer(e))return"WMTSSublayer";if(isWMSSublayer(e))return"WMSSublayer";if(isBuildingComponentSublayer(e))return"BuildingComponentSublayer";if(isBuildingGroupSublayer(e))return"BuildingGroupSublayer";if(isSubtypeSublayer(e))return"SubtypeSublayer";throw new Error(`Unknown sublayer type for ESRI sublayer: ${e}`)}export class SublayerExtension extends FeatureSourceBase{constructor(e){super(e),this._itemType=ItemType.SUBLAYER_EXTENSION,this._watchHandles=[],this._onSublayerAddedPostInitialize=async e=>{try{await e.initialize()}catch(t){log.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 s;i?.hasOwnProperty("listMode")&&(s=fromLayerListMode(i.listMode)),this.layerListSettings=this._createLayerListSettings({...s,...t.layerListSettings}),isSublayer(i)?(checkArg("properties.sublayer",i).satisfies((e=>this._isSupportedSublayer(e)),ERR_INVALID_SUBLAYER_TYPE),this._setSublayer(i)):i&&(this._deferredSublayerProperties=i),this.watch("parentSublayerExtension.isEffectivelyVisible",(()=>this.notifyChange("isEffectivelyVisible")))}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){checkArg("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 _layerSupportsHideChildren(){return!1}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}static create(e){if(!SublayerExtension.factory)throw new InvalidOperationError("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=parse(s);s={id:isNaN(e)?s:e,title:s}}else"number"==typeof s&&(s={id:s});return"both"===i?e.id===s.id&&e.title===s.title:"by-id"===i?e.id===s.id:"by-title"===i&&e.title===s.title}getFeatures(e,t){if(!this.hasFeatures)throw new InvalidOperationError(ERR_FEATURES_NOT_SUPPORTED);return super.getFeatures(e,t)}getFullExtent(){return this.effectiveFullExtent}async addFeatures(e,t){if(checkArg("features",e).isNotMissing(),!this.hasFeatures)throw new InvalidOperationError(ERR_FEATURES_NOT_SUPPORTED);await super.addFeatures(e,t)}async updateFeatures(e,t){if(checkArg("features",e).isNotMissing(),!this.hasFeatures)throw new InvalidOperationError(ERR_FEATURES_NOT_SUPPORTED);await super.updateFeatures(e,t)}async deleteFeatures(e,t){if(checkArg("features",e).isNotMissing(),!this.hasFeatures)throw new InvalidOperationError(ERR_FEATURES_NOT_SUPPORTED);await super.deleteFeatures(e,t)}_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._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;checkArg("newSublayer",e).isNotMissing().satisfies((e=>e.id===this.sublayer.id),"Sublayer ID must match existing sublayer.").satisfies((e=>this._isSupportedSublayer(e)),ERR_INVALID_SUBLAYER_TYPE),this.isInitialized&&await load(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.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._watchHandles.push(onCollectionPropertyChange(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(),iconUrl:"initial",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 deepClone(this._deferredSublayerProperties)},deserialize:e=>{if(isSublayer(e)){if(e!==this.sublayer)throw new Error("Property 'sublayer' is read-only.")}else this._sublayer?this._applySublayerProperties(e,this._sublayer):this._deferredSublayerProperties&&(this._deferredSublayerProperties={...this._deferredSublayerProperties,...e})}},requestHelper:{serialize:!1}}}_createSublayerExtension(e){throw new InvalidOperationError(ERR_SUBLAYERX_NOT_SUPPORTED)}_createSchema(){return new SublayerSchema(this)}_createLayerListSettings(e){return new LayerListSettings(e)}_capabilities(){return DEFAULT_CAPABILITIES}async _onInitialize(){if(await super._onInitialize(),this._sublayer||this._deferredSublayerProperties&&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 InvalidOperationError("Cannot resolve sublayer reference: missing parent layer extension.");throw new InvalidOperationError(`No sublayer found matching reference "${e}".`)}this._initialVisibility=this.sublayer.visible,this._sublayerExtensions.onParentInitialized()}*_initializableChildCollections(){yield*super._initializableChildCollections(),yield this.sublayerExtensions}_createSublayerRef(){return{$ref:{id: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(onCollectionPropertyChange(e,"sublayers",this._onSublayersChange,!0),watchCollectionPropertyEach(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 SublayerSchema=class extends Schema{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 InvalidOperationError("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)}}};SublayerSchema=__decorate([serializable],SublayerSchema);export{SublayerSchema};export class SubSublayerExtensionCollection extends SublayerExtensionCollectionBase{constructor(e){super(e,"sublayer.sublayers")}get _layerExtension(){return this._parent.layerExtension}add(e,t){if(checkArg("sublayerX",e).isNotMissing(),!this._parent.supportsSublayers)throw new InvalidOperationError(ERR_SUBLAYERX_NOT_SUPPORTED);e.sublayer&&this._parent.sublayer&&!this._parent.sublayer.sublayers&&(this._parent.sublayer.sublayers=[]),e.parentSublayerExtension&&e.parentSublayerExtension.sublayerExtensions.remove(e),super.add(e,t)}_onAdded(e){super._onAdded(e),e._setParentSublayerExtension(this._parent)}_onRemoved(e){super._onRemoved(e),e._setParentSublayerExtension(void 0)}}export function _assignSublayerExtensions(e,t,i){compare(e,t,{onNew:(t,s)=>{e.add(isSublayerExtension(t)?t:i(t),isSublayerRef(t)?void 0:s)},onMatch:(t,i,s,r)=>{isSublayerExtension(i)||t.assignProperties(i),s===r||isSublayerRef(i)||e.reorder(t,r)},equals:(e,t)=>isSublayerExtension(t)?t===e:!!SublayerExtension._matchesRef(e.sublayer,t.sublayer,"both")||e.id===t.id})}function isSublayer(e){return e&&"function"==typeof e.get}function isSublayerRef(e){return isSublayerExtension(e)?!!e._deferredSublayerProperties?.$ref:!isSublayer(e.sublayer)&&!!e.sublayer?.$ref}
|
|
1
|
+
import{__decorate}from"tslib";import{InvalidOperationError}from"../InvalidOperationError.js";import{isSublayerExtension,ItemType}from"../ItemType.js";import{FeatureSourceBase}from"../data/FeatureSourceBase.js";import{Schema}from"../data/Schema.js";import{serializable}from"../support/Serializable.js";import{isBuildingComponentSublayer,isBuildingGroupSublayer,isKMLSublayer,isMapImageSublayer,isSubtypeSublayer,isTileLayer,isWMSSublayer,isWMTSSublayer}from"../utilities/_layers.js";import{checkArg}from"../utilities/checkArg.js";import{compare}from"../utilities/collection.js";import{load}from"../utilities/esri.js";import{getLogger}from"../utilities/log.js";import{parse}from"../utilities/number.js";import{deepClone}from"../utilities/object.js";import{onCollectionPropertyChange,watchCollectionPropertyEach}from"../utilities/watch.js";import{fromLayerListMode,LayerListSettings}from"./support/LayerListSettings.js";import{SublayerExtensionCollectionBase}from"./support/_SublayerExtensionCollection.js";const log=getLogger("SublayerExtension"),ERR_INVALID_SUBLAYER_TYPE="Invalid type of sublayer for this type of sublayer extension.",ERR_FEATURES_NOT_SUPPORTED="This type of layer does not have features.",ERR_SUBLAYERX_NOT_SUPPORTED="This type of sublayer extension cannot have child sublayer extensions.",DEFAULT_CAPABILITIES=Object.freeze({supportsAdd:!1,supportsUpdate:!1,supportsDelete:!1,supportsEditing:!1,supportsQuery:!1,supportsAttachmentEditing:!1});export function getSublayerType(e){if(isMapImageSublayer(e))return isTileLayer(e?.layer)?"ArcGISTiledSublayer":"ArcGISMapServiceSublayer";if(isKMLSublayer(e))return"KMLSublayer";if(isWMTSSublayer(e))return"WMTSSublayer";if(isWMSSublayer(e))return"WMSSublayer";if(isBuildingComponentSublayer(e))return"BuildingComponentSublayer";if(isBuildingGroupSublayer(e))return"BuildingGroupSublayer";if(isSubtypeSublayer(e))return"SubtypeSublayer";throw new Error(`Unknown sublayer type for ESRI sublayer: ${e}`)}export class SublayerExtension extends FeatureSourceBase{constructor(e){super(e),this._itemType=ItemType.SUBLAYER_EXTENSION,this._watchHandles=[],this._onSublayerAddedPostInitialize=async e=>{try{await e.initialize()}catch(t){log.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 s;i?.hasOwnProperty("listMode")&&(s=fromLayerListMode(i.listMode)),this.layerListSettings=this._createLayerListSettings({...s,...t.layerListSettings}),isSublayer(i)?(checkArg("properties.sublayer",i).satisfies((e=>this._isSupportedSublayer(e)),ERR_INVALID_SUBLAYER_TYPE),this._setSublayer(i)):i&&(this._deferredSublayerProperties=i),this.watch("parentSublayerExtension.isEffectivelyVisible",(()=>this.notifyChange("isEffectivelyVisible")))}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){checkArg("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 _layerSupportsHideChildren(){return!1}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}static create(e){if(!SublayerExtension.factory)throw new InvalidOperationError("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=parse(s);s={id:isNaN(e)?s:e,title:s}}else"number"==typeof s&&(s={id:s});const r=isSubtypeSublayer(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,t){if(!this.hasFeatures)throw new InvalidOperationError(ERR_FEATURES_NOT_SUPPORTED);return super.getFeatures(e,t)}getFullExtent(){return this.effectiveFullExtent}async addFeatures(e,t){if(checkArg("features",e).isNotMissing(),!this.hasFeatures)throw new InvalidOperationError(ERR_FEATURES_NOT_SUPPORTED);await super.addFeatures(e,t)}async updateFeatures(e,t){if(checkArg("features",e).isNotMissing(),!this.hasFeatures)throw new InvalidOperationError(ERR_FEATURES_NOT_SUPPORTED);await super.updateFeatures(e,t)}async deleteFeatures(e,t){if(checkArg("features",e).isNotMissing(),!this.hasFeatures)throw new InvalidOperationError(ERR_FEATURES_NOT_SUPPORTED);await super.deleteFeatures(e,t)}_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._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;checkArg("newSublayer",e).isNotMissing().satisfies((e=>e.id===this.sublayer.id),"Sublayer ID must match existing sublayer.").satisfies((e=>this._isSupportedSublayer(e)),ERR_INVALID_SUBLAYER_TYPE),this.isInitialized&&await load(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.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._watchHandles.push(onCollectionPropertyChange(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(),iconUrl:"initial",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 deepClone(this._deferredSublayerProperties)},deserialize:e=>{if(isSublayer(e)){if(e!==this.sublayer)throw new Error("Property 'sublayer' is read-only.")}else this._sublayer?this._applySublayerProperties(e,this._sublayer):this._deferredSublayerProperties&&(this._deferredSublayerProperties={...this._deferredSublayerProperties,...e})}},requestHelper:{serialize:!1}}}_createSublayerExtension(e){throw new InvalidOperationError(ERR_SUBLAYERX_NOT_SUPPORTED)}_createSchema(){return new SublayerSchema(this)}_createLayerListSettings(e){return new LayerListSettings(e)}_capabilities(){return DEFAULT_CAPABILITIES}async _onInitialize(){if(await super._onInitialize(),this._sublayer||this._deferredSublayerProperties&&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 InvalidOperationError("Cannot resolve sublayer reference: missing parent layer extension.");throw new InvalidOperationError(`No sublayer found matching reference "${e}".`)}this._initialVisibility=this.sublayer.visible,this._sublayerExtensions.onParentInitialized()}*_initializableChildCollections(){yield*super._initializableChildCollections(),yield this.sublayerExtensions}_createSublayerRef(){return{$ref:{id:isSubtypeSublayer(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(onCollectionPropertyChange(e,"sublayers",this._onSublayersChange,!0),watchCollectionPropertyEach(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 SublayerSchema=class extends Schema{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 InvalidOperationError("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)}}};SublayerSchema=__decorate([serializable],SublayerSchema);export{SublayerSchema};export class SubSublayerExtensionCollection extends SublayerExtensionCollectionBase{constructor(e){super(e,"sublayer.sublayers")}get _layerExtension(){return this._parent.layerExtension}add(e,t){if(checkArg("sublayerX",e).isNotMissing(),!this._parent.supportsSublayers)throw new InvalidOperationError(ERR_SUBLAYERX_NOT_SUPPORTED);return e.sublayer&&this._parent.sublayer&&!this._parent.sublayer.sublayers&&(this._parent.sublayer.sublayers=[]),e.parentSublayerExtension&&e.parentSublayerExtension.sublayerExtensions.remove(e),super.add(e,t)}_onAdded(e){super._onAdded(e),e._setParentSublayerExtension(this._parent)}_onRemoved(e){super._onRemoved(e),e._setParentSublayerExtension(void 0)}}export function _assignSublayerExtensions(e,t,i){compare(e,t,{onNew:(t,s)=>{e.add(isSublayerExtension(t)?t:i(t),isSublayerRef(t)?void 0:s)},onMatch:(t,i,s,r)=>{isSublayerExtension(i)||t.assignProperties(i),s===r||isSublayerRef(i)||e.reorder(t,r)},equals:(e,t)=>isSublayerExtension(t)?t===e:!!SublayerExtension._matchesRef(e.sublayer,t.sublayer,"both")||e.id===t.id})}function isSublayer(e){return e&&"function"==typeof e.get}function isSublayerRef(e){return isSublayerExtension(e)?!!e._deferredSublayerProperties?.$ref:!isSublayer(e.sublayer)&&!!e.sublayer?.$ref}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import Collection from"@arcgis/core/core/Collection";import{CollectionProxy}from"../../utilities/CollectionProxy.js";export class ArrayWrappedCollection extends CollectionProxy{constructor(t,r){if(super(),r)this._parent=t,this._targetProperty=t.hasOwnProperty("sublayer")?"sublayer":"layer",this._arrayProperty=r;else{const{parent:r,targetProperty:e,arrayProperty:o}=t;this._parent=r,this._targetProperty=e,this._arrayProperty=o}if(this._target)this._onTargetResolved(this._target);else{this._collection=new Collection;const t=this._parent.watch(this._targetProperty,(()=>{const r=this._target;r&&(this.length&&r.set({[this._arrayProperty]:this.toArray()}),this._onTargetResolved(r),t.remove())}),!0)}}get _target(){return this._targetProperty?this._parent.get(this._targetProperty):this._parent}add(t,r){const e=this._target;e&&!e.get(this._arrayProperty)&&(e.set({[this._arrayProperty]:[]}),this._collection=wrapArrayWithCollection(e.get(this._arrayProperty))),super.add(t,r)}_onTargetResolved(t){this._collection=wrapArrayWithCollection(t.get(this._arrayProperty)??[]),this._parent.watch(this._targetProperty?`${this._targetProperty}.${this._arrayProperty}`:this._arrayProperty,(()=>{this._target&&(this._collection=wrapArrayWithCollection(this._target.get(this._arrayProperty)??[]))}),!0)}}function wrapArrayWithCollection(t){const r=Array.isArray(t)?t:[],e=new Collection;return Object.defineProperty(e,"_items",{get:()=>r}),Object.defineProperty(e,"length",{get:()=>r.length,set:t=>r.length=t}),e}
|
|
1
|
+
import Collection from"@arcgis/core/core/Collection";import{CollectionProxy}from"../../utilities/CollectionProxy.js";export class ArrayWrappedCollection extends CollectionProxy{constructor(t,r){if(super(),r)this._parent=t,this._targetProperty=t.hasOwnProperty("sublayer")?"sublayer":"layer",this._arrayProperty=r;else{const{parent:r,targetProperty:e,arrayProperty:o}=t;this._parent=r,this._targetProperty=e,this._arrayProperty=o}if(this._target)this._onTargetResolved(this._target);else{this._collection=new Collection;const t=this._parent.watch(this._targetProperty,(()=>{const r=this._target;r&&(this.length&&r.set({[this._arrayProperty]:this.toArray()}),this._onTargetResolved(r),t.remove())}),!0)}}get _target(){return this._targetProperty?this._parent.get(this._targetProperty):this._parent}add(t,r){const e=this._target;return e&&!e.get(this._arrayProperty)&&(e.set({[this._arrayProperty]:[]}),this._collection=wrapArrayWithCollection(e.get(this._arrayProperty))),super.add(t,r)}_onTargetResolved(t){this._collection=wrapArrayWithCollection(t.get(this._arrayProperty)??[]),this._parent.watch(this._targetProperty?`${this._targetProperty}.${this._arrayProperty}`:this._arrayProperty,(()=>{this._target&&(this._collection=wrapArrayWithCollection(this._target.get(this._arrayProperty)??[]))}),!0)}}function wrapArrayWithCollection(t){const r=Array.isArray(t)?t:[],e=new Collection;return Object.defineProperty(e,"_items",{get:()=>r}),Object.defineProperty(e,"length",{get:()=>r.length,set:t=>r.length=t}),e}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ArgumentError}from"../../ArgumentError.js";import{FeatureLayer as PortalFeatureLayer}from"../../portal/FeatureLayer.js";import{WebTileLayer as PortalWebTileLayer}from"../../portal/WebTileLayer.js";import{isBuildingSceneLayer,isCSVLayer,isElevationLayer,isFeatureLayer,isGeoRssLayer,isGraphicsLayer,isGroupLayer,isImageryLayer,isImageryTileLayer,isIntegratedMeshLayer,isKMLLayer,isLayer,isMapImageLayer,isOpenStreetMapLayer,isPointCloudLayer,isSceneLayer,isStreamLayer,isSubtypeGroupLayer,isTileLayer,isVectorTileLayer,isWebTileLayer,isWMSLayer,isWMTSLayer}from"../../utilities/_layers.js";import{checkArg}from"../../utilities/checkArg.js";import{Collection}from"../../utilities/collection.js";import{BuildingSceneLayerExtension}from"../BuildingSceneLayerExtension.js";import{CSVLayerExtension}from"../CSVLayerExtension.js";import{ElevationLayerExtension}from"../ElevationLayerExtension.js";import{FeatureCollectionLayerExtension}from"../FeatureCollectionLayerExtension.js";import{FeatureLayerExtension}from"../FeatureLayerExtension.js";import{GeoRSSLayerExtension}from"../GeoRSSLayerExtension.js";import{GraphicsLayerExtension}from"../GraphicsLayerExtension.js";import{GroupLayerExtension}from"../GroupLayerExtension.js";import{ImageryLayerExtension}from"../ImageryLayerExtension.js";import{ImageryTileLayerExtension}from"../ImageryTileLayerExtension.js";import{IntegratedMeshLayerExtension}from"../IntegratedMeshLayerExtension.js";import{KMLLayerExtension}from"../KMLLayerExtension.js";import{MapImageLayerExtension}from"../MapImageLayerExtension.js";import{OpenStreetMapLayerExtension}from"../OpenStreetMapLayerExtension.js";import{PointCloudLayerExtension}from"../PointCloudLayerExtension.js";import{SceneLayerExtension}from"../SceneLayerExtension.js";import{StreamLayerExtension}from"../StreamLayerExtension.js";import{SubtypeGroupLayerExtension}from"../SubtypeGroupLayerExtension.js";import{TileLayerExtension}from"../TileLayerExtension.js";import{UnsupportedLayerExtension}from"../UnsupportedLayerExtension.js";import{VectorTileLayerExtension}from"../VectorTileLayerExtension.js";import{WMSLayerExtension}from"../WMSLayerExtension.js";import{WMTSLayerExtension}from"../WMTSLayerExtension.js";import{WebTileLayerExtension}from"../WebTileLayerExtension.js";export class DefaultLayerExtensionFactory{constructor(){}create(e){if(checkArg("properties",e).isNotMissing(),checkArg("properties.layer",e.layer).isNotMissing(),isLayer(e.layer)){if(isBuildingSceneLayer(e.layer))return new BuildingSceneLayerExtension(e);if(isCSVLayer(e.layer))return new CSVLayerExtension(e);if(isElevationLayer(e.layer))return new ElevationLayerExtension(e);if(isStreamLayer(e.layer))return new StreamLayerExtension(e);if(isFeatureLayer(e.layer)){const{layer:r}=e;return Collection.isCollection(r.source)?new FeatureCollectionLayerExtension(e):new FeatureLayerExtension(e)}return isGeoRssLayer(e.layer)?new GeoRSSLayerExtension(e):isGraphicsLayer(e.layer)?new GraphicsLayerExtension(e):isGroupLayer(e.layer)?new GroupLayerExtension(e):isImageryLayer(e.layer)?new ImageryLayerExtension(e):isIntegratedMeshLayer(e.layer)?new IntegratedMeshLayerExtension(e):isKMLLayer(e.layer)?new KMLLayerExtension(e):isMapImageLayer(e.layer)?new MapImageLayerExtension(e):isOpenStreetMapLayer(e.layer)?new OpenStreetMapLayerExtension(e):isPointCloudLayer(e.layer)?new PointCloudLayerExtension(e):isSceneLayer(e.layer)?new SceneLayerExtension(e):isSubtypeGroupLayer(e.layer)?new SubtypeGroupLayerExtension(e):isTileLayer(e.layer)?new TileLayerExtension(e):isImageryTileLayer(e.layer)?new ImageryTileLayerExtension(e):isVectorTileLayer(e.layer)?new VectorTileLayerExtension(e):isWebTileLayer(e.layer)?new WebTileLayerExtension(e):isWMSLayer(e.layer)?new WMSLayerExtension(e):isWMTSLayer(e.layer)?new WMTSLayerExtension(e):new UnsupportedLayerExtension(e)}if(e.layer.layerType)switch(e.layer.layerType){case"BuildingSceneLayer":return new BuildingSceneLayerExtension(e);case"CSV":return new CSVLayerExtension(e);case"ArcGISTiledElevationServiceLayer":return new ElevationLayerExtension(e);case"ArcGISFeatureLayer":return PortalFeatureLayer.isGraphicsLayerJson(e.layer)||PortalFeatureLayer.isMapNotesLayer(e.layer)?new GraphicsLayerExtension(e):PortalFeatureLayer.isFeatureCollection(e.layer)?new FeatureCollectionLayerExtension(e):new FeatureLayerExtension(e);case"ArcGISAnnotationLayer":return e.layer.layerType="ArcGISFeatureLayer",e.layer.$layerSubType="ArcGISAnnotationLayer",new FeatureLayerExtension(e);case"GeoRSS":return new GeoRSSLayerExtension(e);case"GroupLayer":return new GroupLayerExtension(e);case"ArcGISImageServiceLayer":case"ArcGISImageServiceVectorLayer":return new ImageryLayerExtension(e);case"IntegratedMeshLayer":return new IntegratedMeshLayerExtension(e);case"KML":return new KMLLayerExtension(e);case"ArcGISMapServiceLayer":return new MapImageLayerExtension(e);case"OpenStreetMap":return new OpenStreetMapLayerExtension(e);case"PointCloudLayer":return new PointCloudLayerExtension(e);case"ArcGISSceneServiceLayer":return new SceneLayerExtension(e);case"
|
|
1
|
+
import{ArgumentError}from"../../ArgumentError.js";import{FeatureLayer as PortalFeatureLayer}from"../../portal/FeatureLayer.js";import{WebTileLayer as PortalWebTileLayer}from"../../portal/WebTileLayer.js";import{isBuildingSceneLayer,isCSVLayer,isElevationLayer,isFeatureLayer,isGeoRssLayer,isGraphicsLayer,isGroupLayer,isImageryLayer,isImageryTileLayer,isIntegratedMeshLayer,isKMLLayer,isLayer,isMapImageLayer,isOpenStreetMapLayer,isPointCloudLayer,isSceneLayer,isStreamLayer,isSubtypeGroupLayer,isTileLayer,isVectorTileLayer,isWebTileLayer,isWMSLayer,isWMTSLayer}from"../../utilities/_layers.js";import{checkArg}from"../../utilities/checkArg.js";import{Collection}from"../../utilities/collection.js";import{BuildingSceneLayerExtension}from"../BuildingSceneLayerExtension.js";import{CSVLayerExtension}from"../CSVLayerExtension.js";import{ElevationLayerExtension}from"../ElevationLayerExtension.js";import{FeatureCollectionLayerExtension}from"../FeatureCollectionLayerExtension.js";import{FeatureLayerExtension}from"../FeatureLayerExtension.js";import{GeoRSSLayerExtension}from"../GeoRSSLayerExtension.js";import{GraphicsLayerExtension}from"../GraphicsLayerExtension.js";import{GroupLayerExtension}from"../GroupLayerExtension.js";import{ImageryLayerExtension}from"../ImageryLayerExtension.js";import{ImageryTileLayerExtension}from"../ImageryTileLayerExtension.js";import{IntegratedMeshLayerExtension}from"../IntegratedMeshLayerExtension.js";import{KMLLayerExtension}from"../KMLLayerExtension.js";import{MapImageLayerExtension}from"../MapImageLayerExtension.js";import{OpenStreetMapLayerExtension}from"../OpenStreetMapLayerExtension.js";import{PointCloudLayerExtension}from"../PointCloudLayerExtension.js";import{SceneLayerExtension}from"../SceneLayerExtension.js";import{StreamLayerExtension}from"../StreamLayerExtension.js";import{SubtypeGroupLayerExtension}from"../SubtypeGroupLayerExtension.js";import{TileLayerExtension}from"../TileLayerExtension.js";import{UnsupportedLayerExtension}from"../UnsupportedLayerExtension.js";import{VectorTileLayerExtension}from"../VectorTileLayerExtension.js";import{WMSLayerExtension}from"../WMSLayerExtension.js";import{WMTSLayerExtension}from"../WMTSLayerExtension.js";import{WebTileLayerExtension}from"../WebTileLayerExtension.js";export class DefaultLayerExtensionFactory{constructor(){}create(e){if(checkArg("properties",e).isNotMissing(),checkArg("properties.layer",e.layer).isNotMissing(),isLayer(e.layer)){if(isBuildingSceneLayer(e.layer))return new BuildingSceneLayerExtension(e);if(isCSVLayer(e.layer))return new CSVLayerExtension(e);if(isElevationLayer(e.layer))return new ElevationLayerExtension(e);if(isStreamLayer(e.layer))return new StreamLayerExtension(e);if(isFeatureLayer(e.layer)){const{layer:r}=e;return Collection.isCollection(r.source)?new FeatureCollectionLayerExtension(e):new FeatureLayerExtension(e)}return isGeoRssLayer(e.layer)?new GeoRSSLayerExtension(e):isGraphicsLayer(e.layer)?new GraphicsLayerExtension(e):isGroupLayer(e.layer)?new GroupLayerExtension(e):isImageryLayer(e.layer)?new ImageryLayerExtension(e):isIntegratedMeshLayer(e.layer)?new IntegratedMeshLayerExtension(e):isKMLLayer(e.layer)?new KMLLayerExtension(e):isMapImageLayer(e.layer)?new MapImageLayerExtension(e):isOpenStreetMapLayer(e.layer)?new OpenStreetMapLayerExtension(e):isPointCloudLayer(e.layer)?new PointCloudLayerExtension(e):isSceneLayer(e.layer)?new SceneLayerExtension(e):isSubtypeGroupLayer(e.layer)?new SubtypeGroupLayerExtension(e):isTileLayer(e.layer)?new TileLayerExtension(e):isImageryTileLayer(e.layer)?new ImageryTileLayerExtension(e):isVectorTileLayer(e.layer)?new VectorTileLayerExtension(e):isWebTileLayer(e.layer)?new WebTileLayerExtension(e):isWMSLayer(e.layer)?new WMSLayerExtension(e):isWMTSLayer(e.layer)?new WMTSLayerExtension(e):new UnsupportedLayerExtension(e)}if(e.layer.layerType)switch(e.layer.layerType){case"BuildingSceneLayer":return new BuildingSceneLayerExtension(e);case"CSV":return new CSVLayerExtension(e);case"ArcGISTiledElevationServiceLayer":return new ElevationLayerExtension(e);case"ArcGISFeatureLayer":return PortalFeatureLayer.isGraphicsLayerJson(e.layer)||PortalFeatureLayer.isMapNotesLayer(e.layer)?new GraphicsLayerExtension(e):PortalFeatureLayer.isFeatureCollection(e.layer)?new FeatureCollectionLayerExtension(e):new FeatureLayerExtension(e);case"ArcGISAnnotationLayer":return e.layer.layerType="ArcGISFeatureLayer",e.layer.$layerSubType="ArcGISAnnotationLayer",new FeatureLayerExtension(e);case"GeoRSS":return new GeoRSSLayerExtension(e);case"GroupLayer":return new GroupLayerExtension(e);case"ArcGISImageServiceLayer":case"ArcGISImageServiceVectorLayer":return new ImageryLayerExtension(e);case"IntegratedMeshLayer":return new IntegratedMeshLayerExtension(e);case"KML":return new KMLLayerExtension(e);case"ArcGISMapServiceLayer":return new MapImageLayerExtension(e);case"OpenStreetMap":return new OpenStreetMapLayerExtension(e);case"PointCloudLayer":return new PointCloudLayerExtension(e);case"ArcGISSceneServiceLayer":return new SceneLayerExtension(e);case"SubtypeGroupLayer":return new SubtypeGroupLayerExtension(e);case"ArcGISStreamLayer":return new StreamLayerExtension(e);case"ArcGISTiledImageServiceLayer":return new ImageryTileLayerExtension(e);case"ArcGISTiledMapServiceLayer":return new TileLayerExtension(e);case"VectorTileLayer":return new VectorTileLayerExtension(e);case"WebTiledLayer":return PortalWebTileLayer.isTileLayerWMTS(e.layer)?new WMTSLayerExtension(e):new WebTileLayerExtension(e);case"WMS":return new WMSLayerExtension(e)}else if(e.layer.type&&"OpenStreetMap"===e.layer.type)return new OpenStreetMapLayerExtension(e);throw new ArgumentError("properties.layer","Unable to determine correct type of layer extension to create.")}}DefaultLayerExtensionFactory.instance=new DefaultLayerExtensionFactory;
|
|
@@ -97,7 +97,7 @@ export declare abstract class LayerExtensionCollectionBase extends Initializable
|
|
|
97
97
|
/**
|
|
98
98
|
* @inheritDoc
|
|
99
99
|
*/
|
|
100
|
-
add(layerX: LayerExtension, index?: number):
|
|
100
|
+
add(layerX: LayerExtension, index?: number): this;
|
|
101
101
|
/**
|
|
102
102
|
* @inheritDoc
|
|
103
103
|
*/
|
|
@@ -109,7 +109,7 @@ export declare abstract class LayerExtensionCollectionBase extends Initializable
|
|
|
109
109
|
/**
|
|
110
110
|
* @inheritDoc
|
|
111
111
|
*/
|
|
112
|
-
sort(compareFunction?: (a: LayerExtension, b: LayerExtension) => number):
|
|
112
|
+
sort(compareFunction?: (a: LayerExtension, b: LayerExtension) => number): this;
|
|
113
113
|
/**
|
|
114
114
|
* Invoked by the parent object when it is initialized.
|
|
115
115
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{InvalidOperationError}from"../../InvalidOperationError.js";import{InitializableCollectionProxy}from"../../support/InitializableCollectionProxy.js";import{checkArg}from"../../utilities/checkArg.js";import{Collection}from"../../utilities/collection.js";import{layersAreEquivalent}from"../../utilities/layers.js";import{getLogger}from"../../utilities/log.js";import{onCollectionPropertyChange}from"../../utilities/watch.js";import{LayerExtension}from"../_LayerExtension.js";export class LayerExtensionCollectionBase extends InitializableCollectionProxy{constructor(e,i){super(),this._layerExtensionMap=new WeakMap,this._uninitializedLayerExtensions=new Collection,this._parent=e,this._layersProperty=i,onCollectionPropertyChange(this._parent,this._layersProperty,(e=>{try{const i={added:(e.added||[]).map((e=>this._forLayer(e))),moved:(e.moved||[]).map((e=>this._forLayer(e))),removed:(e.removed||[]).map((e=>this._forLayer(e)))};this.emit("change",i)}catch(e){e instanceof Error&&getCollectionLogger().error(e.message)}})),this._parent.watch(`${this._layersProperty}.length`,(()=>this.notifyChange("length")))}get _collection(){return this._layers.map((e=>this._forLayer(e))).concat(this._uninitializedLayerExtensions)}get _layers(){let e=this._parent.get(this._layersProperty);return e||(this._tempLayers||(this._tempLayers=new Collection),e=this._tempLayers),e}emit(e,i){const t=super.emit(e,i);return"change"===e&&this._mapExtension&&this._mapExtension.allLayerExtensions.emit(e,i),t}clone(){const e=super.clone();return e._layerExtensionMap=this._layerExtensionMap,e}findById(e){return checkArg("id",e).isNotMissing(),this.find((i=>i.id===e))}findByLayerId(e){return checkArg("id",e).isNotMissing(),this.find((i=>i.layer.id===e))}forLayer(e){if(checkArg("layer",e).isNotMissing(),this._layers.includes(e))return this._forLayer(e)}add(e,i){if(checkArg("layerX",e).isNotMissing(),this._register(e),e.layer)this._layers.includes(e.layer)?void 0!==i&&this._layers.reorder(e.layer,i):this._layers.add(e.layer,i);else if(!e.isInitialized){const t=e.watch("layer",(()=>{e.layer&&(this._forLayer(e.layer),this._layers.includes(e.layer)||this._layers.add(e.layer,i)),t.remove()}),!0)}}removeAt(e){const i=this.getItemAt(e);if(void 0!==i){if(this._uninitializedLayerExtensions.includes(i)){this._uninitializedLayerExtensions.remove(i);const e={added:[],moved:[],removed:[i],target:this};this.emit("change",e)}else this._layers.remove(i.layer);return this._onRemoved(i),i}}reorder(e,i){if(this._uninitializedLayerExtensions.includes(e)){if(this._uninitializedLayerExtensions.some((e=>e.isInitialized)))throw new InvalidOperationError("Unable to reorder a mix of initialized / uninitialized layers.");this._uninitializedLayerExtensions.reorder(e,i)}if(e&&e.layer&&this._layers.includes(e.layer))return this._layers.reorder(e.layer,i),e}sort(e){this._layers.sort(((i,t)=>e(this._forLayer(i),this._forLayer(t))))}onParentInitialized(){this._tempLayers?.length&&(this.addMany(this._tempLayers.map((e=>this._forLayer(e)))),this._tempLayers=void 0)}onMapExtensionChanged(){for(const e of this.toArray())e._setMapExtension(this._mapExtension)}_forLayer(e){for(const e of this._uninitializedLayerExtensions.toArray())e._resolveLayer(this._layers),e.layer&&(this._layerExtensionMap.set(e.layer,e),this._uninitializedLayerExtensions.remove(e),this.emit("change",{added:[],moved:[],removed:[e],target:this}));if(!this._layerExtensionMap.has(e)){const i=this._uninitializedLayerExtensions.find((i=>layersAreEquivalent(e,i)));if(i)return i;const t=LayerExtension.create({layer:e});this._register(t)}return this._layerExtensionMap.get(e)}_register(e){if(checkArg("layerX",e).isNotMissing(),e._setMapExtension(this._mapExtension),e.layer||e._resolveLayer(this._layers),e.layer){const i=this._layerExtensionMap.get(e.layer);if(e===i)return;if(this._layerExtensionMap.set(e.layer,e),i&&(this._onRemoved(i),this._layers.includes(e.layer))){const t={added:[e],moved:[],removed:[i],target:this};this.emit("change",t)}}else{this._uninitializedLayerExtensions.add(e);const i={added:[e],moved:[],removed:[],target:this};this.emit("change",i)}this._onAdded(e)}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.layer}_onAdded(e){}_onRemoved(e){e._setMapExtension(void 0)}}function getCollectionLogger(){return getLogger("geocortex.api.support.LayerExtensionCollection")}
|
|
1
|
+
import{InvalidOperationError}from"../../InvalidOperationError.js";import{InitializableCollectionProxy}from"../../support/InitializableCollectionProxy.js";import{checkArg}from"../../utilities/checkArg.js";import{Collection}from"../../utilities/collection.js";import{layersAreEquivalent}from"../../utilities/layers.js";import{getLogger}from"../../utilities/log.js";import{onCollectionPropertyChange}from"../../utilities/watch.js";import{LayerExtension}from"../_LayerExtension.js";export class LayerExtensionCollectionBase extends InitializableCollectionProxy{constructor(e,i){super(),this._layerExtensionMap=new WeakMap,this._uninitializedLayerExtensions=new Collection,this._parent=e,this._layersProperty=i,onCollectionPropertyChange(this._parent,this._layersProperty,(e=>{try{const i={added:(e.added||[]).map((e=>this._forLayer(e))),moved:(e.moved||[]).map((e=>this._forLayer(e))),removed:(e.removed||[]).map((e=>this._forLayer(e)))};this.emit("change",i)}catch(e){e instanceof Error&&getCollectionLogger().error(e.message)}})),this._parent.watch(`${this._layersProperty}.length`,(()=>this.notifyChange("length")))}get _collection(){return this._layers.map((e=>this._forLayer(e))).concat(this._uninitializedLayerExtensions)}get _layers(){let e=this._parent.get(this._layersProperty);return e||(this._tempLayers||(this._tempLayers=new Collection),e=this._tempLayers),e}emit(e,i){const t=super.emit(e,i);return"change"===e&&this._mapExtension&&this._mapExtension.allLayerExtensions.emit(e,i),t}clone(){const e=super.clone();return e._layerExtensionMap=this._layerExtensionMap,e}findById(e){return checkArg("id",e).isNotMissing(),this.find((i=>i.id===e))}findByLayerId(e){return checkArg("id",e).isNotMissing(),this.find((i=>i.layer.id===e))}forLayer(e){if(checkArg("layer",e).isNotMissing(),this._layers.includes(e))return this._forLayer(e)}add(e,i){if(checkArg("layerX",e).isNotMissing(),this._register(e),e.layer)this._layers.includes(e.layer)?void 0!==i&&this._layers.reorder(e.layer,i):this._layers.add(e.layer,i);else if(!e.isInitialized){const t=e.watch("layer",(()=>{e.layer&&(this._forLayer(e.layer),this._layers.includes(e.layer)||this._layers.add(e.layer,i)),t.remove()}),!0)}return this}removeAt(e){const i=this.getItemAt(e);if(void 0!==i){if(this._uninitializedLayerExtensions.includes(i)){this._uninitializedLayerExtensions.remove(i);const e={added:[],moved:[],removed:[i],target:this};this.emit("change",e)}else this._layers.remove(i.layer);return this._onRemoved(i),i}}reorder(e,i){if(this._uninitializedLayerExtensions.includes(e)){if(this._uninitializedLayerExtensions.some((e=>e.isInitialized)))throw new InvalidOperationError("Unable to reorder a mix of initialized / uninitialized layers.");this._uninitializedLayerExtensions.reorder(e,i)}if(e&&e.layer&&this._layers.includes(e.layer))return this._layers.reorder(e.layer,i),e}sort(e){return this._layers.sort(((i,t)=>e(this._forLayer(i),this._forLayer(t)))),this}onParentInitialized(){this._tempLayers?.length&&(this.addMany(this._tempLayers.map((e=>this._forLayer(e)))),this._tempLayers=void 0)}onMapExtensionChanged(){for(const e of this.toArray())e._setMapExtension(this._mapExtension)}_forLayer(e){for(const e of this._uninitializedLayerExtensions.toArray())e._resolveLayer(this._layers),e.layer&&(this._layerExtensionMap.set(e.layer,e),this._uninitializedLayerExtensions.remove(e),this.emit("change",{added:[],moved:[],removed:[e],target:this}));if(!this._layerExtensionMap.has(e)){const i=this._uninitializedLayerExtensions.find((i=>layersAreEquivalent(e,i)));if(i)return i;const t=LayerExtension.create({layer:e});this._register(t)}return this._layerExtensionMap.get(e)}_register(e){if(checkArg("layerX",e).isNotMissing(),e._setMapExtension(this._mapExtension),e.layer||e._resolveLayer(this._layers),e.layer){const i=this._layerExtensionMap.get(e.layer);if(e===i)return;if(this._layerExtensionMap.set(e.layer,e),i&&(this._onRemoved(i),this._layers.includes(e.layer))){const t={added:[e],moved:[],removed:[i],target:this};this.emit("change",t)}}else{this._uninitializedLayerExtensions.add(e);const i={added:[e],moved:[],removed:[],target:this};this.emit("change",i)}this._onAdded(e)}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.layer}_onAdded(e){}_onRemoved(e){e._setMapExtension(void 0)}}function getCollectionLogger(){return getLogger("geocortex.api.support.LayerExtensionCollection")}
|
|
@@ -92,7 +92,7 @@ export declare abstract class SublayerExtensionCollectionBase extends Initializa
|
|
|
92
92
|
/**
|
|
93
93
|
* @inheritDoc
|
|
94
94
|
*/
|
|
95
|
-
add(sublayerX: SublayerExtension, index?: number):
|
|
95
|
+
add(sublayerX: SublayerExtension, index?: number): this;
|
|
96
96
|
/**
|
|
97
97
|
* @inheritDoc
|
|
98
98
|
*/
|
|
@@ -104,7 +104,7 @@ export declare abstract class SublayerExtensionCollectionBase extends Initializa
|
|
|
104
104
|
/**
|
|
105
105
|
* @inheritDoc
|
|
106
106
|
*/
|
|
107
|
-
sort(compareFunction?: (a: SublayerExtension, b: SublayerExtension) => number):
|
|
107
|
+
sort(compareFunction?: (a: SublayerExtension, b: SublayerExtension) => number): this;
|
|
108
108
|
/**
|
|
109
109
|
* @inheritDoc
|
|
110
110
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{InitializableCollectionProxy}from"../../support/InitializableCollectionProxy.js";import{checkArg}from"../../utilities/checkArg.js";import{Collection}from"../../utilities/collection.js";import{onCollectionPropertyChange}from"../../utilities/watch.js";import{SublayerExtension}from"../_SublayerExtension.js";export class SublayerExtensionCollectionBase extends InitializableCollectionProxy{constructor(e,t){super(),this._sublayerExtensionMap=new WeakMap,this._uninitializedSublayerExtensions=new Set,this._parent=e,this._sublayersProperty=t,onCollectionPropertyChange(this._parent,this._sublayersProperty,(e=>{const t={added:(e.added||[]).map((e=>this._forSublayer(e))),moved:(e.moved||[]).map((e=>this._forSublayer(e))),removed:(e.removed||[]).map((e=>this._forSublayer(e)))};this.emit("change",t)})),this._parent.watch(`${this._sublayersProperty}.length`,(()=>this.notifyChange("length")))}get _collection(){return this._sublayers.map((e=>this._forSublayer(e))).concat(Array.from(this._uninitializedSublayerExtensions))}get _sublayers(){let e=this._parent.get(this._sublayersProperty);return e||(this._tempSublayers||(this._tempSublayers=new Collection),e=this._tempSublayers),e}clone(){const e=super.clone();return e._sublayerExtensionMap=this._sublayerExtensionMap,e}findById(e){return checkArg("id",e).isNotMissing(),this.find((t=>t.id===e))}findBySublayerId(e){return checkArg("id",e).isNotMissing(),this.find((t=>t.sublayer.id===e))}forSublayer(e){if(checkArg("sublayer",e).isNotMissing(),!(this._sublayers.indexOf(e)<0))return this._forSublayer(e)}add(e,t){checkArg("sublayerX",e).isNotMissing(),this._register(e),e.sublayer&&(this._sublayers.includes(e.sublayer)?void 0!==t&&this.reorder(e,t):this._sublayers.add(e.sublayer,t))}removeAt(e){const t=this.getItemAt(e);if(void 0!==t){if(this._uninitializedSublayerExtensions.has(t)){this._uninitializedSublayerExtensions.delete(t);const e={added:[],moved:[],removed:[t],target:this};this.emit("change",e)}else this._sublayers.removeAt(e);return this._onRemoved(t),t}}reorder(e,t){if(!e)return;const s=this._sublayers.indexOf(e.sublayer);return s<0?void 0:(s!==t&&this._sublayers.reorder(e.sublayer,t),e)}sort(e){this._sublayers.sort(((t,s)=>e(this._forSublayer(t),this._forSublayer(s))))}emit(e,t){const s=super.emit(e,t);return"change"===e&&this._layerExtension&&this._layerExtension.allSublayerExtensions.emit(e,t),s}onParentInitialized(){this._tempSublayers?.length&&(this.addMany(this._tempSublayers.map((e=>this._forSublayer(e)))),this._tempSublayers=void 0)}onLayerExtensionChanged(){for(const e of this.toArray())e._setLayerExtension(this._layerExtension)}_register(e){if(checkArg("sublayerX",e).isNotMissing(),e._setLayerExtension(this._layerExtension),e.sublayer||e._resolveSublayer(),e.sublayer){const t=this._sublayerExtensionMap.get(e.sublayer);if(e===t)return;if(this._sublayerExtensionMap.set(e.sublayer,e),t&&(this._onRemoved(t),this._sublayers.includes(e.sublayer))){const s={added:[e],moved:[],removed:[t],target:this};this.emit("change",s)}}else{this._uninitializedSublayerExtensions.add(e);const t={added:[e],moved:[],removed:[],target:this};this.emit("change",t)}this._onAdded(e)}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.sublayer}_onAdded(e){}_onRemoved(e){e._setLayerExtension(void 0)}_forSublayer(e){for(const e of this._uninitializedSublayerExtensions)e._resolveSublayer(),e.sublayer&&(this._sublayerExtensionMap.set(e.sublayer,e),this._uninitializedSublayerExtensions.delete(e));if(!this._sublayerExtensionMap.has(e)){const t=SublayerExtension.create({sublayer:e});this._register(t)}return this._sublayerExtensionMap.get(e)}}
|
|
1
|
+
import{InitializableCollectionProxy}from"../../support/InitializableCollectionProxy.js";import{checkArg}from"../../utilities/checkArg.js";import{Collection}from"../../utilities/collection.js";import{onCollectionPropertyChange}from"../../utilities/watch.js";import{SublayerExtension}from"../_SublayerExtension.js";export class SublayerExtensionCollectionBase extends InitializableCollectionProxy{constructor(e,t){super(),this._sublayerExtensionMap=new WeakMap,this._uninitializedSublayerExtensions=new Set,this._parent=e,this._sublayersProperty=t,onCollectionPropertyChange(this._parent,this._sublayersProperty,(e=>{const t={added:(e.added||[]).map((e=>this._forSublayer(e))),moved:(e.moved||[]).map((e=>this._forSublayer(e))),removed:(e.removed||[]).map((e=>this._forSublayer(e)))};this.emit("change",t)})),this._parent.watch(`${this._sublayersProperty}.length`,(()=>this.notifyChange("length")))}get _collection(){return this._sublayers.map((e=>this._forSublayer(e))).concat(Array.from(this._uninitializedSublayerExtensions))}get _sublayers(){let e=this._parent.get(this._sublayersProperty);return e||(this._tempSublayers||(this._tempSublayers=new Collection),e=this._tempSublayers),e}clone(){const e=super.clone();return e._sublayerExtensionMap=this._sublayerExtensionMap,e}findById(e){return checkArg("id",e).isNotMissing(),this.find((t=>t.id===e))}findBySublayerId(e){return checkArg("id",e).isNotMissing(),this.find((t=>t.sublayer.id===e))}forSublayer(e){if(checkArg("sublayer",e).isNotMissing(),!(this._sublayers.indexOf(e)<0))return this._forSublayer(e)}add(e,t){return checkArg("sublayerX",e).isNotMissing(),this._register(e),e.sublayer&&(this._sublayers.includes(e.sublayer)?void 0!==t&&this.reorder(e,t):this._sublayers.add(e.sublayer,t)),this}removeAt(e){const t=this.getItemAt(e);if(void 0!==t){if(this._uninitializedSublayerExtensions.has(t)){this._uninitializedSublayerExtensions.delete(t);const e={added:[],moved:[],removed:[t],target:this};this.emit("change",e)}else this._sublayers.removeAt(e);return this._onRemoved(t),t}}reorder(e,t){if(!e)return;const s=this._sublayers.indexOf(e.sublayer);return s<0?void 0:(s!==t&&this._sublayers.reorder(e.sublayer,t),e)}sort(e){return this._sublayers.sort(((t,s)=>e(this._forSublayer(t),this._forSublayer(s)))),this}emit(e,t){const s=super.emit(e,t);return"change"===e&&this._layerExtension&&this._layerExtension.allSublayerExtensions.emit(e,t),s}onParentInitialized(){this._tempSublayers?.length&&(this.addMany(this._tempSublayers.map((e=>this._forSublayer(e)))),this._tempSublayers=void 0)}onLayerExtensionChanged(){for(const e of this.toArray())e._setLayerExtension(this._layerExtension)}_register(e){if(checkArg("sublayerX",e).isNotMissing(),e._setLayerExtension(this._layerExtension),e.sublayer||e._resolveSublayer(),e.sublayer){const t=this._sublayerExtensionMap.get(e.sublayer);if(e===t)return;if(this._sublayerExtensionMap.set(e.sublayer,e),t&&(this._onRemoved(t),this._sublayers.includes(e.sublayer))){const s={added:[e],moved:[],removed:[t],target:this};this.emit("change",s)}}else{this._uninitializedSublayerExtensions.add(e);const t={added:[e],moved:[],removed:[],target:this};this.emit("change",t)}this._onAdded(e)}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.sublayer}_onAdded(e){}_onRemoved(e){e._setLayerExtension(void 0)}_forSublayer(e){for(const e of this._uninitializedSublayerExtensions)e._resolveSublayer(),e.sublayer&&(this._sublayerExtensionMap.set(e.sublayer,e),this._uninitializedSublayerExtensions.delete(e));if(!this._sublayerExtensionMap.has(e)){const t=SublayerExtension.create({sublayer:e});this._register(t)}return this._sublayerExtensionMap.get(e)}}
|
package/menus/Menu.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var Menu_1;import{__decorate}from"tslib";import{EntityBase}from"../Entity.js";import{InvalidOperationError}from"../InvalidOperationError.js";import{isMenuItem,ItemType}from"../ItemType.js";import{serializable}from"../support/Serializable.js";import{CollectionProxy}from"../utilities/CollectionProxy.js";import{checkArg}from"../utilities/checkArg.js";import{Collection,compare}from"../utilities/collection.js";import{getLogger}from"../utilities/log.js";import{MenuItem}from"./MenuItem.js";const log=getLogger("geocortex.api.menus.Menu");let Menu=Menu_1=class extends EntityBase{constructor(e){super(e),this._itemType=ItemType.MENU,this._items=new MenuItemCollection(this)}get parentItem(){return this._parentItem}get title(){return this._title}set title(e){this._title=e}get items(){return this._items}static create(e){if(!Menu_1.factory)throw new InvalidOperationError("Cannot create menu: no menu factory has been registered.");return Menu_1.factory.create(e)}*_initializableChildCollections(){yield*super._initializableChildCollections(),yield this.items}_getSerializableProperties(){return{...super._getSerializableProperties(),items:{serializeModes:["initial"],default:[],deserialize:e=>{const t=new Map;for(const i of e)isMenuItem(i)?t.set(i.toJSON(),i):t.set(i,void 0);compare(this.items,t.keys(),{onNew:e=>{this.items.add(t.get(e)||MenuItem.create(e))},onMissing:e=>{this.items.remove(e)},onMatch:(e,i,r,n)=>{r!==n&&this.items.reorder(e,n),t.get(i)!==e&&e.assignProperties(i)},equals:(e,t)=>e.id===t.id})}},title:"initial"}}};Menu.factory={create:e=>new Menu_1(e)},Menu=Menu_1=__decorate([serializable],Menu);export{Menu};class MenuItemCollection extends CollectionProxy{constructor(e){super(new Collection),this._menu=e}add(e,t){if(checkArg("menuItem",e).isNotMissing(),this._createsCircularReference(this._allSubmenus(e)))throw new InvalidOperationError("Adding menu item would create circular menu dependency.");e.menu&&(e.menu!==this._menu&&log.debug("A MenuItem can only have one parent. The MenuItem has been removed from its original Menu."),e.menu.items.remove(e)),e._menu=this._menu,super.add(e,t)}removeAt(e){const t=super.removeAt(e);return t&&delete t._menu,t}_createsCircularReference(e,t,i){const r=t??this._menu,n=i??(this._menu.parentItem?.root?this._menu.parentItem.root:this._menu);if(e.includes(r))return!0;if(r===n)return!1;const o=r.parentItem.menu;return this._createsCircularReference(e,o,n)}_allSubmenus(e){const t=new Collection;if(e.submenu){t.add(e.submenu);for(const i of e.submenu.items.toArray())t.addMany(this._allSubmenus(i))}return t}}
|
|
1
|
+
var Menu_1;import{__decorate}from"tslib";import{EntityBase}from"../Entity.js";import{InvalidOperationError}from"../InvalidOperationError.js";import{isMenuItem,ItemType}from"../ItemType.js";import{serializable}from"../support/Serializable.js";import{CollectionProxy}from"../utilities/CollectionProxy.js";import{checkArg}from"../utilities/checkArg.js";import{Collection,compare}from"../utilities/collection.js";import{getLogger}from"../utilities/log.js";import{MenuItem}from"./MenuItem.js";const log=getLogger("geocortex.api.menus.Menu");let Menu=Menu_1=class extends EntityBase{constructor(e){super(e),this._itemType=ItemType.MENU,this._items=new MenuItemCollection(this)}get parentItem(){return this._parentItem}get title(){return this._title}set title(e){this._title=e}get items(){return this._items}static create(e){if(!Menu_1.factory)throw new InvalidOperationError("Cannot create menu: no menu factory has been registered.");return Menu_1.factory.create(e)}*_initializableChildCollections(){yield*super._initializableChildCollections(),yield this.items}_getSerializableProperties(){return{...super._getSerializableProperties(),items:{serializeModes:["initial"],default:[],deserialize:e=>{const t=new Map;for(const i of e)isMenuItem(i)?t.set(i.toJSON(),i):t.set(i,void 0);compare(this.items,t.keys(),{onNew:e=>{this.items.add(t.get(e)||MenuItem.create(e))},onMissing:e=>{this.items.remove(e)},onMatch:(e,i,r,n)=>{r!==n&&this.items.reorder(e,n),t.get(i)!==e&&e.assignProperties(i)},equals:(e,t)=>e.id===t.id})}},title:"initial"}}};Menu.factory={create:e=>new Menu_1(e)},Menu=Menu_1=__decorate([serializable],Menu);export{Menu};class MenuItemCollection extends CollectionProxy{constructor(e){super(new Collection),this._menu=e}add(e,t){if(checkArg("menuItem",e).isNotMissing(),this._createsCircularReference(this._allSubmenus(e)))throw new InvalidOperationError("Adding menu item would create circular menu dependency.");return e.menu&&(e.menu!==this._menu&&log.debug("A MenuItem can only have one parent. The MenuItem has been removed from its original Menu."),e.menu.items.remove(e)),e._menu=this._menu,super.add(e,t)}removeAt(e){const t=super.removeAt(e);return t&&delete t._menu,t}_createsCircularReference(e,t,i){const r=t??this._menu,n=i??(this._menu.parentItem?.root?this._menu.parentItem.root:this._menu);if(e.includes(r))return!0;if(r===n)return!1;const o=r.parentItem.menu;return this._createsCircularReference(e,o,n)}_allSubmenus(e){const t=new Collection;if(e.submenu){t.add(e.submenu);for(const i of e.submenu.items.toArray())t.addMany(this._allSubmenus(i))}return t}}
|
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": "
|
|
4
|
+
"version": "38.0.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://geocortex.visualstudio.com/Geocortex/_git/geocortex-api-ts"
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"@arcgis/core": "If you upgrade this, you must also change the peer dependency."
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
|
-
"@arcgis/core": "4.
|
|
64
|
+
"@arcgis/core": "4.25.5",
|
|
65
65
|
"@prettier/plugin-xml": "2.2.0",
|
|
66
66
|
"@types/chai": "4.3.4",
|
|
67
67
|
"@types/chai-as-promised": "7.1.5",
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
"whatwg-fetch": "3.6.2"
|
|
112
112
|
},
|
|
113
113
|
"peerDependencies": {
|
|
114
|
-
"@arcgis/core": "~4.
|
|
114
|
+
"@arcgis/core": "~4.25.5",
|
|
115
115
|
"tslib": "^2.3.1"
|
|
116
116
|
},
|
|
117
117
|
"type": "module",
|
package/portal/LayerBase.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{isBuildingSceneLayer,isCSVLayer,isElevationLayer,isFeatureLayer,isGeoRssLayer,isGraphicsLayer,isGroupLayer,isImageryLayer,isImageryTileLayer,isIntegratedMeshLayer,isKMLLayer,isMapImageLayer,isOpenStreetMapLayer,isPointCloudLayer,isSceneLayer,isStreamLayer,isSubtypeGroupLayer,isTiledImageServiceLayer,isTiledMapServiceLayer,isTileLayer,isVectorTileLayer,isWebTileLayer,isWMSLayer,isWMTSLayer,layersAreEquivalent}from"../utilities/_layers.js";import{checkArg}from"../utilities/checkArg.js";import{compareAsync}from"../utilities/collection.js";import{BuildingSceneLayer}from"./BuildingSceneLayer.js";import{CSVLayer}from"./CSVLayer.js";import{ElevationLayer}from"./ElevationLayer.js";import{FeatureLayer}from"./FeatureLayer.js";import{GeoRSSLayer}from"./GeoRSSLayer.js";import{GroupLayer}from"./GroupLayer.js";import{ImageServiceLayer}from"./ImageServiceLayer.js";import{IntegratedMeshLayer}from"./IntegratedMeshLayer.js";import{KMLLayer}from"./KMLLayer.js";import{MapServiceLayer}from"./MapServiceLayer.js";import{OpenStreetMapLayer}from"./OpenStreetMapLayer.js";import{PointCloudLayer}from"./PointCloudLayer.js";import{SceneLayer}from"./SceneLayer.js";import{StreamLayer}from"./StreamLayer.js";import{SubtypeGroupLayer}from"./SubtypeGroupLayer.js";import{TiledImageServiceLayer}from"./TiledImageServiceLayer.js";import{TiledMapServiceLayer}from"./TiledMapServiceLayer.js";import{VectorTileLayer}from"./VectorTileLayer.js";import{WMSLayer}from"./WMSLayer.js";import{WebTileLayer}from"./WebTileLayer.js";import{LayerBase}from"./_LayerBase.js";export{LayerBase}from"./_LayerBase.js";const layerClassHandlers=new Map;function getFromEsriApiLayerFunction(e){return isCSVLayer(e)?CSVLayer.fromEsriApiCSVLayer:isStreamLayer(e)?StreamLayer.fromEsriApiStreamLayer:isFeatureLayer(e)?FeatureLayer.fromEsriApiFeatureLayer:isGeoRssLayer(e)?GeoRSSLayer.fromEsriApiLayer:isGraphicsLayer(e)?FeatureLayer.fromEsriApiGraphicsLayer:isImageryLayer(e)?ImageServiceLayer.fromEsriApiImageryLayer:isImageryTileLayer(e)?TiledImageServiceLayer.fromEsriApiTileLayer:isKMLLayer(e)?KMLLayer.fromEsriApiKMLLayer:isMapImageLayer(e)?MapServiceLayer.fromEsriApiMapImageLayer:isOpenStreetMapLayer(e)?OpenStreetMapLayer.fromEsriApiOpenStreetMapLayer:isWebTileLayer(e)?WebTileLayer.fromEsriApiLayer:isVectorTileLayer(e)?VectorTileLayer.fromEsriApiVectorTileLayer:isTiledImageServiceLayer(e)?TiledImageServiceLayer.fromEsriApiTileLayer:isTiledMapServiceLayer(e)?TiledMapServiceLayer.fromEsriApiTileLayer:isElevationLayer(e)?ElevationLayer.fromEsriApiElevationLayer:isSceneLayer(e)?SceneLayer.fromEsriApiSceneLayer:isPointCloudLayer(e)?PointCloudLayer.fromEsriApiPointCloudLayer:isIntegratedMeshLayer(e)?IntegratedMeshLayer.fromEsriApiIntegratedMeshLayer:isGroupLayer(e)?GroupLayer.fromEsriApiGroupLayer:isWMSLayer(e)?WMSLayer.fromEsriApiLayer:isWMTSLayer(e)?WebTileLayer.fromEsriApiLayer:isBuildingSceneLayer(e)?BuildingSceneLayer.fromEsriApiBuildingSceneLayer:isSubtypeGroupLayer(e)?SubtypeGroupLayer.fromEsriApiSubtypeGroupLayer:unsupportedFromEsriApiLayerFunction}function getCreateFunction(e){const r=layerClassHandlers.get(e);return r?r.createFunction:unsupportedCreateFunction}function getApplyFunction(e){const r=layerClassHandlers.get(e);return r?r.applyFunction:unsupportedApplyFunction}async function unsupportedCreateFunction(e){return new((await import("@arcgis/core/layers/UnsupportedLayer")).default)}async function unsupportedApplyFunction(e,r){console.warn(`Layer type: '${e.layerType||e.type}' is unsupported.`)}function unsupportedFromEsriApiLayerFunction(e){console.warn(`Layer type: '${e?e.declaredClass:""}' is unsupported.`)}LayerBase.toEsriApiLayer=async(e,r)=>{checkArg("layerJson",e).isNotMissing();const a=e.layerType||e.type;checkArg("layerJson",e).satisfies((()=>!!a),"Layer JSON must have a valid 'layerType' property.");return getCreateFunction(a)(e,r)},LayerBase.applyToEsriApiLayer=async(e,r,a)=>{checkArg("layerJson",e).isNotMissing(),checkArg("layer",r).isNotMissing();const i=e.layerType||e.type;let y=LayerBase.getLayerType(r);"ArcGISTiledImageServiceLayer"===i&&(y=i),checkArg("layerJson",e).satisfies((()=>!i||i===y),"The layer's type must match the 'layerType' property in the layer JSON.");return getApplyFunction(y)(e,r,a)},LayerBase.applyToEsriApiLayers=async(e,r,a)=>compareAsync(e,r,{onNew:async(r,i)=>{e.add(await LayerBase.toEsriApiLayer(r,a),i)},onMatch:async(r,i,y,s)=>{y!==s&&e.reorder(r,s),await LayerBase.applyToEsriApiLayer(i,r,a)},onMissing:r=>{e.remove(r)},equals:(e,r)=>layersAreEquivalent(e,r)}),LayerBase.getLayerType=e=>isCSVLayer(e)?"CSV":isStreamLayer(e)?"ArcGISStreamLayer":isFeatureLayer(e)||isGraphicsLayer(e)?"ArcGISFeatureLayer":isGeoRssLayer(e)?"GeoRSS":isImageryLayer(e)?"ArcGISImageServiceLayer":isImageryTileLayer(e)?"ArcGISTiledImageServiceLayer":isKMLLayer(e)?"KML":isMapImageLayer(e)?"ArcGISMapServiceLayer":isOpenStreetMapLayer(e)?"OpenStreetMap":isWebTileLayer(e)?"WebTiledLayer":isVectorTileLayer(e)?"VectorTileLayer":isTiledImageServiceLayer(e)?"ArcGISTiledImageServiceLayer":isTileLayer(e)?"ArcGISTiledMapServiceLayer":isElevationLayer(e)?"ArcGISTiledElevationServiceLayer":isSceneLayer(e)?"ArcGISSceneServiceLayer":isPointCloudLayer(e)?"PointCloudLayer":isIntegratedMeshLayer(e)?"IntegratedMeshLayer":isGroupLayer(e)?"GroupLayer":isWMSLayer(e)?"WMS":isWMTSLayer(e)?"WebTiledLayer":isBuildingSceneLayer(e)?"BuildingSceneLayer":isSubtypeGroupLayer(e)?"
|
|
1
|
+
import{isBuildingSceneLayer,isCSVLayer,isElevationLayer,isFeatureLayer,isGeoRssLayer,isGraphicsLayer,isGroupLayer,isImageryLayer,isImageryTileLayer,isIntegratedMeshLayer,isKMLLayer,isMapImageLayer,isOpenStreetMapLayer,isPointCloudLayer,isSceneLayer,isStreamLayer,isSubtypeGroupLayer,isTiledImageServiceLayer,isTiledMapServiceLayer,isTileLayer,isVectorTileLayer,isWebTileLayer,isWMSLayer,isWMTSLayer,layersAreEquivalent}from"../utilities/_layers.js";import{checkArg}from"../utilities/checkArg.js";import{compareAsync}from"../utilities/collection.js";import{BuildingSceneLayer}from"./BuildingSceneLayer.js";import{CSVLayer}from"./CSVLayer.js";import{ElevationLayer}from"./ElevationLayer.js";import{FeatureLayer}from"./FeatureLayer.js";import{GeoRSSLayer}from"./GeoRSSLayer.js";import{GroupLayer}from"./GroupLayer.js";import{ImageServiceLayer}from"./ImageServiceLayer.js";import{IntegratedMeshLayer}from"./IntegratedMeshLayer.js";import{KMLLayer}from"./KMLLayer.js";import{MapServiceLayer}from"./MapServiceLayer.js";import{OpenStreetMapLayer}from"./OpenStreetMapLayer.js";import{PointCloudLayer}from"./PointCloudLayer.js";import{SceneLayer}from"./SceneLayer.js";import{StreamLayer}from"./StreamLayer.js";import{SubtypeGroupLayer}from"./SubtypeGroupLayer.js";import{TiledImageServiceLayer}from"./TiledImageServiceLayer.js";import{TiledMapServiceLayer}from"./TiledMapServiceLayer.js";import{VectorTileLayer}from"./VectorTileLayer.js";import{WMSLayer}from"./WMSLayer.js";import{WebTileLayer}from"./WebTileLayer.js";import{LayerBase}from"./_LayerBase.js";export{LayerBase}from"./_LayerBase.js";const layerClassHandlers=new Map;function getFromEsriApiLayerFunction(e){return isCSVLayer(e)?CSVLayer.fromEsriApiCSVLayer:isStreamLayer(e)?StreamLayer.fromEsriApiStreamLayer:isFeatureLayer(e)?FeatureLayer.fromEsriApiFeatureLayer:isGeoRssLayer(e)?GeoRSSLayer.fromEsriApiLayer:isGraphicsLayer(e)?FeatureLayer.fromEsriApiGraphicsLayer:isImageryLayer(e)?ImageServiceLayer.fromEsriApiImageryLayer:isImageryTileLayer(e)?TiledImageServiceLayer.fromEsriApiTileLayer:isKMLLayer(e)?KMLLayer.fromEsriApiKMLLayer:isMapImageLayer(e)?MapServiceLayer.fromEsriApiMapImageLayer:isOpenStreetMapLayer(e)?OpenStreetMapLayer.fromEsriApiOpenStreetMapLayer:isWebTileLayer(e)?WebTileLayer.fromEsriApiLayer:isVectorTileLayer(e)?VectorTileLayer.fromEsriApiVectorTileLayer:isTiledImageServiceLayer(e)?TiledImageServiceLayer.fromEsriApiTileLayer:isTiledMapServiceLayer(e)?TiledMapServiceLayer.fromEsriApiTileLayer:isElevationLayer(e)?ElevationLayer.fromEsriApiElevationLayer:isSceneLayer(e)?SceneLayer.fromEsriApiSceneLayer:isPointCloudLayer(e)?PointCloudLayer.fromEsriApiPointCloudLayer:isIntegratedMeshLayer(e)?IntegratedMeshLayer.fromEsriApiIntegratedMeshLayer:isGroupLayer(e)?GroupLayer.fromEsriApiGroupLayer:isWMSLayer(e)?WMSLayer.fromEsriApiLayer:isWMTSLayer(e)?WebTileLayer.fromEsriApiLayer:isBuildingSceneLayer(e)?BuildingSceneLayer.fromEsriApiBuildingSceneLayer:isSubtypeGroupLayer(e)?SubtypeGroupLayer.fromEsriApiSubtypeGroupLayer:unsupportedFromEsriApiLayerFunction}function getCreateFunction(e){const r=layerClassHandlers.get(e);return r?r.createFunction:unsupportedCreateFunction}function getApplyFunction(e){const r=layerClassHandlers.get(e);return r?r.applyFunction:unsupportedApplyFunction}async function unsupportedCreateFunction(e){return new((await import("@arcgis/core/layers/UnsupportedLayer")).default)}async function unsupportedApplyFunction(e,r){console.warn(`Layer type: '${e.layerType||e.type}' is unsupported.`)}function unsupportedFromEsriApiLayerFunction(e){console.warn(`Layer type: '${e?e.declaredClass:""}' is unsupported.`)}LayerBase.toEsriApiLayer=async(e,r)=>{checkArg("layerJson",e).isNotMissing();const a=e.layerType||e.type;checkArg("layerJson",e).satisfies((()=>!!a),"Layer JSON must have a valid 'layerType' property.");return getCreateFunction(a)(e,r)},LayerBase.applyToEsriApiLayer=async(e,r,a)=>{checkArg("layerJson",e).isNotMissing(),checkArg("layer",r).isNotMissing();const i=e.layerType||e.type;let y=LayerBase.getLayerType(r);"ArcGISTiledImageServiceLayer"===i&&(y=i),checkArg("layerJson",e).satisfies((()=>!i||i===y),"The layer's type must match the 'layerType' property in the layer JSON.");return getApplyFunction(y)(e,r,a)},LayerBase.applyToEsriApiLayers=async(e,r,a)=>compareAsync(e,r,{onNew:async(r,i)=>{e.add(await LayerBase.toEsriApiLayer(r,a),i)},onMatch:async(r,i,y,s)=>{y!==s&&e.reorder(r,s),await LayerBase.applyToEsriApiLayer(i,r,a)},onMissing:r=>{e.remove(r)},equals:(e,r)=>layersAreEquivalent(e,r)}),LayerBase.getLayerType=e=>isCSVLayer(e)?"CSV":isStreamLayer(e)?"ArcGISStreamLayer":isFeatureLayer(e)||isGraphicsLayer(e)?"ArcGISFeatureLayer":isGeoRssLayer(e)?"GeoRSS":isImageryLayer(e)?"ArcGISImageServiceLayer":isImageryTileLayer(e)?"ArcGISTiledImageServiceLayer":isKMLLayer(e)?"KML":isMapImageLayer(e)?"ArcGISMapServiceLayer":isOpenStreetMapLayer(e)?"OpenStreetMap":isWebTileLayer(e)?"WebTiledLayer":isVectorTileLayer(e)?"VectorTileLayer":isTiledImageServiceLayer(e)?"ArcGISTiledImageServiceLayer":isTileLayer(e)?"ArcGISTiledMapServiceLayer":isElevationLayer(e)?"ArcGISTiledElevationServiceLayer":isSceneLayer(e)?"ArcGISSceneServiceLayer":isPointCloudLayer(e)?"PointCloudLayer":isIntegratedMeshLayer(e)?"IntegratedMeshLayer":isGroupLayer(e)?"GroupLayer":isWMSLayer(e)?"WMS":isWMTSLayer(e)?"WebTiledLayer":isBuildingSceneLayer(e)?"BuildingSceneLayer":isSubtypeGroupLayer(e)?"SubtypeGroupLayer":void 0,LayerBase.fromEsriApiLayer=e=>getFromEsriApiLayerFunction(e)(e),LayerBase.registerDefaultClassHandlers=()=>{layerClassHandlers.clear(),layerClassHandlers.set("ArcGISFeatureLayer",{createFunction:FeatureLayer.toEsriApiLayer,applyFunction:FeatureLayer.applyToEsriApiLayer}),layerClassHandlers.set("ArcGISImageServiceLayer",{createFunction:ImageServiceLayer.toEsriApiLayer,applyFunction:ImageServiceLayer.applyToEsriApiLayer}),layerClassHandlers.set("ArcGISImageServiceVectorLayer",{createFunction:ImageServiceLayer.toEsriApiLayer,applyFunction:ImageServiceLayer.applyToEsriApiLayer}),layerClassHandlers.set("ArcGISMapServiceLayer",{createFunction:MapServiceLayer.toEsriApiLayer,applyFunction:MapServiceLayer.applyToEsriApiLayer}),layerClassHandlers.set("ArcGISStreamLayer",{createFunction:StreamLayer.toEsriApiLayer,applyFunction:StreamLayer.applyToEsriApiLayer}),layerClassHandlers.set("ArcGISTiledElevationServiceLayer",{createFunction:ElevationLayer.toEsriApiLayer,applyFunction:ElevationLayer.applyToEsriApiLayer}),layerClassHandlers.set("ArcGISTiledImageServiceLayer",{createFunction:TiledImageServiceLayer.toEsriApiLayer,applyFunction:TiledImageServiceLayer.applyToEsriApiLayer}),layerClassHandlers.set("ArcGISTiledMapServiceLayer",{createFunction:TiledMapServiceLayer.toEsriApiLayer,applyFunction:TiledMapServiceLayer.applyToEsriApiLayer}),layerClassHandlers.set("OpenStreetMap",{createFunction:OpenStreetMapLayer.toEsriApiLayer,applyFunction:OpenStreetMapLayer.applyToEsriApiLayer}),layerClassHandlers.set("VectorTileLayer",{createFunction:VectorTileLayer.toEsriApiLayer,applyFunction:VectorTileLayer.applyToEsriApiLayer}),layerClassHandlers.set("CSV",{createFunction:CSVLayer.toEsriApiLayer,applyFunction:CSVLayer.applyToEsriApiLayer}),layerClassHandlers.set("GeoRSS",{createFunction:GeoRSSLayer.toEsriApiLayer,applyFunction:GeoRSSLayer.applyToEsriApiLayer}),layerClassHandlers.set("WMS",{createFunction:WMSLayer.toEsriApiLayer,applyFunction:WMSLayer.applyToEsriApiLayer}),layerClassHandlers.set("KML",{createFunction:KMLLayer.toEsriApiKMLLayer,applyFunction:KMLLayer.applyToEsriApiKMLLayer}),layerClassHandlers.set("WebTiledLayer",{createFunction:WebTileLayer.toEsriApiLayer,applyFunction:WebTileLayer.applyToEsriApiLayer}),layerClassHandlers.set("IntegratedMeshLayer",{createFunction:IntegratedMeshLayer.toEsriApiLayer,applyFunction:IntegratedMeshLayer.applyToEsriApiLayer}),layerClassHandlers.set("GroupLayer",{createFunction:GroupLayer.toEsriApiLayer,applyFunction:GroupLayer.applyToEsriApiLayer}),layerClassHandlers.set("ArcGISSceneServiceLayer",{createFunction:SceneLayer.toEsriApiLayer,applyFunction:SceneLayer.applyToEsriApiLayer}),layerClassHandlers.set("PointCloudLayer",{createFunction:PointCloudLayer.toEsriApiLayer,applyFunction:PointCloudLayer.applyToEsriApiLayer}),layerClassHandlers.set("BuildingSceneLayer",{createFunction:BuildingSceneLayer.toEsriApiLayer,applyFunction:BuildingSceneLayer.applyToEsriApiLayer}),layerClassHandlers.set("SubtypeGroupLayer",{createFunction:SubtypeGroupLayer.toEsriApiLayer,applyFunction:SubtypeGroupLayer.applyToEsriApiLayer})},LayerBase.registerLayerClassHandler=(e,r,a)=>{layerClassHandlers.set(e,{createFunction:r,applyFunction:a})},LayerBase.registerDefaultClassHandlers();
|
package/portal/PopupInfo.d.ts
CHANGED
|
@@ -101,9 +101,15 @@ export interface PopupElement {
|
|
|
101
101
|
*/
|
|
102
102
|
description?: string;
|
|
103
103
|
/**
|
|
104
|
-
* This property applies to elements of type
|
|
105
|
-
*
|
|
106
|
-
|
|
104
|
+
* This property applies to elements of type relationship. An integer that
|
|
105
|
+
* indicates the maximum number of records to display.
|
|
106
|
+
*/
|
|
107
|
+
displayCount?: number;
|
|
108
|
+
/**
|
|
109
|
+
* This property applies to elements of type attachments and relationship. A
|
|
110
|
+
* string value indicating how to display the attachment. Possible values
|
|
111
|
+
* are, 'preview', and 'list' for attachments types, and 'list' for
|
|
112
|
+
* relationship types. If list is specified, attachments show as links.
|
|
107
113
|
*/
|
|
108
114
|
displayType?: string;
|
|
109
115
|
/**
|
|
@@ -126,6 +132,18 @@ export interface PopupElement {
|
|
|
126
132
|
* whatever is specified in the popupInfo.mediaInfo property.
|
|
127
133
|
*/
|
|
128
134
|
mediaInfos?: MediaInfo[];
|
|
135
|
+
/**
|
|
136
|
+
* This property applies to elements of type relationship. Array of
|
|
137
|
+
* orderByFields objects indicating the field display order for the related
|
|
138
|
+
* records and whether they should be sorted in ascending 'asc' or
|
|
139
|
+
* descending 'desc' order.
|
|
140
|
+
*/
|
|
141
|
+
orderByFields?: OrderByFields[];
|
|
142
|
+
/**
|
|
143
|
+
* This property applies to elements of type relationship. The id of the
|
|
144
|
+
* relationship as defined in the feature layer definition.
|
|
145
|
+
*/
|
|
146
|
+
relationshipId?: number;
|
|
129
147
|
/**
|
|
130
148
|
* This property applies to elements of type text. This is string value
|
|
131
149
|
* indicating the text to be displayed within the popupElement. If no text
|
|
@@ -146,7 +164,7 @@ export interface PopupElement {
|
|
|
146
164
|
/**
|
|
147
165
|
* The type of the PopupElement.
|
|
148
166
|
*/
|
|
149
|
-
export declare type PopupElementType = "attachments" | "fields" | "media" | "text" | "expression";
|
|
167
|
+
export declare type PopupElementType = "attachments" | "fields" | "media" | "text" | "expression" | "relationship";
|
|
150
168
|
/**
|
|
151
169
|
* The sort in the popupInfo for the parent feature. This impacts the sorting
|
|
152
170
|
* order for the returned child records.
|
package/portal/PopupInfo.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import EsriPopupTemplate from"@arcgis/core/PopupTemplate";import EsriExpressionInfo from"@arcgis/core/popup/ElementExpressionInfo";import EsriFieldInfo from"@arcgis/core/popup/FieldInfo";import{TextContent}from"@arcgis/core/popup/content";import AttachmentsContent from"@arcgis/core/popup/content/AttachmentsContent";import BarChartMediaInfo from"@arcgis/core/popup/content/BarChartMediaInfo";import ColumnChartMediaInfo from"@arcgis/core/popup/content/ColumnChartMediaInfo";import ExpressionContent from"@arcgis/core/popup/content/ExpressionContent";import FieldsContent from"@arcgis/core/popup/content/FieldsContent";import ImageMediaInfo from"@arcgis/core/popup/content/ImageMediaInfo";import LineChartMediaInfo from"@arcgis/core/popup/content/LineChartMediaInfo";import MediaContent from"@arcgis/core/popup/content/MediaContent";import PieChartMediaInfo from"@arcgis/core/popup/content/PieChartMediaInfo";import{checkArg}from"../utilities/checkArg.js";import{isAttachmentsContent,isExpressionContent,isFieldsContent,isMediaContent,isTextContent}from"../utilities/esri.js";import{deepClone}from"../utilities/object.js";export var PopupInfo;!function(t){t.toEsriApiPopupTemplate=function(t){checkArg("json",t).isNotMissing();const e=deepClone(t),o=EsriPopupTemplate.fromJSON(e);return o.content||(o.content=[]),o},t.fromEsriApiPopupTemplate=function(t){return checkArg("popupTemplate",t).isNotMissing(),t.toJSON()}}(PopupInfo||(PopupInfo={}));export var PopupContent;function toEsriApiMediaInfo(t){switch(t.type){case"image":return ImageMediaInfo.fromJSON(t);case"barchart":return BarChartMediaInfo.fromJSON(t);case"columnchart":return ColumnChartMediaInfo.fromJSON(t);case"linechart":return LineChartMediaInfo.fromJSON(t);case"piechart":return PieChartMediaInfo.fromJSON(t);default:throw new Error(`Unknown MediaInfo type: ${JSON.stringify(t)}`)}}!function(t){t.toEsriApiPopupContent=function(t){checkArg("json",t).isNotMissing();const e=deepClone(t);switch(t.type){case"attachments":return AttachmentsContent.fromJSON(e);case"expression":return ExpressionContent.fromJSON(e);case"fields":return FieldsContent.fromJSON(e);case"media":return MediaContent.fromJSON(e);case"text":return TextContent.fromJSON(e);default:throw new Error(`Unknown PopupContent type: ${JSON.stringify(e)}`)}},t.fromEsriApiPopupContent=function(t){return checkArg("PopupElement",t).isNotMissing(),t.toJSON()},t.applyToEsriApiPopupContent=function(t,e){checkArg("elementJson",t).isNotMissing(),checkArg("content",e).isNotMissing(),isTextContent(e)&&"text"===t.type?t.hasOwnProperty("text")&&(e.text=t.text):isExpressionContent(e)&&"expression"===t.type?t.hasOwnProperty("expressionInfo")&&(e.expressionInfo=EsriExpressionInfo.fromJSON(t.expressionInfo)):(t.hasOwnProperty("title")&&(e.title=t.title),t.hasOwnProperty("description")&&(e.description=t.title)),isAttachmentsContent(e)&&"attachments"===t.type?t.hasOwnProperty("displayType")&&(e.displayType=t.displayType):isFieldsContent(e)&&"fields"===t.type?t.hasOwnProperty("fieldInfos")&&(e.fieldInfos=t.fieldInfos.map((t=>EsriFieldInfo.fromJSON(t)))):isMediaContent(e)&&"media"===t.type
|
|
1
|
+
import EsriPopupTemplate from"@arcgis/core/PopupTemplate";import EsriExpressionInfo from"@arcgis/core/popup/ElementExpressionInfo";import EsriFieldInfo from"@arcgis/core/popup/FieldInfo";import{TextContent}from"@arcgis/core/popup/content";import AttachmentsContent from"@arcgis/core/popup/content/AttachmentsContent";import BarChartMediaInfo from"@arcgis/core/popup/content/BarChartMediaInfo";import ColumnChartMediaInfo from"@arcgis/core/popup/content/ColumnChartMediaInfo";import ExpressionContent from"@arcgis/core/popup/content/ExpressionContent";import FieldsContent from"@arcgis/core/popup/content/FieldsContent";import ImageMediaInfo from"@arcgis/core/popup/content/ImageMediaInfo";import LineChartMediaInfo from"@arcgis/core/popup/content/LineChartMediaInfo";import MediaContent from"@arcgis/core/popup/content/MediaContent";import PieChartMediaInfo from"@arcgis/core/popup/content/PieChartMediaInfo";import RelationshipContent from"@arcgis/core/popup/content/RelationshipContent.js";import{checkArg}from"../utilities/checkArg.js";import{isAttachmentsContent,isExpressionContent,isFieldsContent,isMediaContent,isRelationshipContent,isTextContent}from"../utilities/esri.js";import{deepClone}from"../utilities/object.js";export var PopupInfo;!function(t){t.toEsriApiPopupTemplate=function(t){checkArg("json",t).isNotMissing();const e=deepClone(t),o=EsriPopupTemplate.fromJSON(e);return o.content||(o.content=[]),o},t.fromEsriApiPopupTemplate=function(t){return checkArg("popupTemplate",t).isNotMissing(),t.toJSON()}}(PopupInfo||(PopupInfo={}));export var PopupContent;function toEsriApiMediaInfo(t){switch(t.type){case"image":return ImageMediaInfo.fromJSON(t);case"barchart":return BarChartMediaInfo.fromJSON(t);case"columnchart":return ColumnChartMediaInfo.fromJSON(t);case"linechart":return LineChartMediaInfo.fromJSON(t);case"piechart":return PieChartMediaInfo.fromJSON(t);default:throw new Error(`Unknown MediaInfo type: ${JSON.stringify(t)}`)}}!function(t){t.toEsriApiPopupContent=function(t){checkArg("json",t).isNotMissing();const e=deepClone(t);switch(t.type){case"attachments":return AttachmentsContent.fromJSON(e);case"expression":return ExpressionContent.fromJSON(e);case"fields":return FieldsContent.fromJSON(e);case"media":return MediaContent.fromJSON(e);case"text":return TextContent.fromJSON(e);case"relationship":return RelationshipContent.fromJSON(e);default:throw new Error(`Unknown PopupContent type: ${JSON.stringify(e)}`)}},t.fromEsriApiPopupContent=function(t){return checkArg("PopupElement",t).isNotMissing(),t.toJSON()},t.applyToEsriApiPopupContent=function(t,e){checkArg("elementJson",t).isNotMissing(),checkArg("content",e).isNotMissing(),isTextContent(e)&&"text"===t.type?t.hasOwnProperty("text")&&(e.text=t.text):isExpressionContent(e)&&"expression"===t.type?t.hasOwnProperty("expressionInfo")&&(e.expressionInfo=EsriExpressionInfo.fromJSON(t.expressionInfo)):(t.hasOwnProperty("title")&&(e.title=t.title),t.hasOwnProperty("description")&&(e.description=t.title)),isAttachmentsContent(e)&&"attachments"===t.type?t.hasOwnProperty("displayType")&&(e.displayType=t.displayType):isFieldsContent(e)&&"fields"===t.type?t.hasOwnProperty("fieldInfos")&&(e.fieldInfos=t.fieldInfos.map((t=>EsriFieldInfo.fromJSON(t)))):isMediaContent(e)&&"media"===t.type?t.hasOwnProperty("mediaInfos")&&(e.mediaInfos=t.mediaInfos.map((t=>toEsriApiMediaInfo(t)))):isRelationshipContent(e)&&"relationship"===t.type&&(t.hasOwnProperty("displayCount")&&(e.displayCount=t.displayCount),t.hasOwnProperty("relationshipId")&&(e.relationshipId=t.relationshipId))}}(PopupContent||(PopupContent={}));
|
|
@@ -56,7 +56,7 @@ export interface SubtypeGroupLayer extends OperationalLayerBase {
|
|
|
56
56
|
* String indicating the layer type. Value of this property must be
|
|
57
57
|
* SubtypeGroupLayer.
|
|
58
58
|
*/
|
|
59
|
-
layerType: "
|
|
59
|
+
layerType: "SubtypeGroupLayer";
|
|
60
60
|
/**
|
|
61
61
|
* The URL to the layer. If the layer is not from a web service but rather a
|
|
62
62
|
* feature collection, then the url property is omitted.
|
|
@@ -80,7 +80,7 @@ export interface SubtypeSubtypeGroupLayer extends Omit<SubtypeGroupLayer, "layer
|
|
|
80
80
|
/**
|
|
81
81
|
* String indicating the layer type.
|
|
82
82
|
*/
|
|
83
|
-
layerType: "
|
|
83
|
+
layerType: "SubtypeGroupLayer";
|
|
84
84
|
}
|
|
85
85
|
/**
|
|
86
86
|
* Group layer visibility mode which indicates how visibility of children is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{whenOnce}from"@arcgis/core/core/reactiveUtils.js";import{isSubtypeGroupLayer}from"../utilities/_layers.js";import{checkArg}from"../utilities/checkArg.js";import{LayerDefinition}from"./LayerDefinition.js";import{SubtypeSublayer}from"./SubtypeSublayer.js";import{ERR_LAYER_TYPE_MISMATCH,applyLayerBaseToEsriApiLayer,applyOperationalLayerToEsriApiLayer,fromEsriApiLayerToLayerBase,fromEsriApiLayerToOperationalLayer}from"./_layerHelper.js";export var SubtypeGroupLayer;!function(r){async function e(r,e){checkArg("layerJson",r).isNotMissing();const a=r.layerType||r.type;if(checkArg("layerJson.layerType",a).satisfies((r=>!r||"
|
|
1
|
+
import{whenOnce}from"@arcgis/core/core/reactiveUtils.js";import{isSubtypeGroupLayer}from"../utilities/_layers.js";import{checkArg}from"../utilities/checkArg.js";import{LayerDefinition}from"./LayerDefinition.js";import{SubtypeSublayer}from"./SubtypeSublayer.js";import{ERR_LAYER_TYPE_MISMATCH,applyLayerBaseToEsriApiLayer,applyOperationalLayerToEsriApiLayer,fromEsriApiLayerToLayerBase,fromEsriApiLayerToOperationalLayer}from"./_layerHelper.js";export var SubtypeGroupLayer;!function(r){async function e(r,e){checkArg("layerJson",r).isNotMissing();const a=r.layerType||r.type;if(checkArg("layerJson.layerType",a).satisfies((r=>!r||"SubtypeGroupLayer"===r),ERR_LAYER_TYPE_MISMATCH),checkArg("layer",e).isNotMissing().satisfies(isSubtypeGroupLayer,ERR_LAYER_TYPE_MISMATCH),applyLayerBaseToEsriApiLayer(r,e),applyOperationalLayerToEsriApiLayer(r,e),r.hasOwnProperty("url")&&(e.url=r.url),r.hasOwnProperty("customParameters")&&(e.customParameters={...r.customParameters},r.customParameters.hasOwnProperty("gdbVersion")&&(e.gdbVersion=r.customParameters.gdbVersion)),r.hasOwnProperty("layerDefinition")&&await LayerDefinition.applyToEsriApiLayer(r.layerDefinition,e),r.hasOwnProperty("layers")){const a=async()=>{await Promise.all(e.sublayers.map((e=>{const a=r.layers.find((r=>+r.subtypeCode===e.subtypeCode));if(a)return SubtypeSublayer.applyToEsriApiLayer(a,e)})))};e.loaded?await a():(async()=>{await whenOnce((()=>e.loaded)),await a()})()}}r.toEsriApiLayer=async function(r){checkArg("layerJson",r).isNotMissing();const a=r.layerType||r.type;checkArg("layerJson.layerType",a).satisfies((r=>!r||"SubtypeGroupLayer"===r),ERR_LAYER_TYPE_MISMATCH);const i=new((await import("@arcgis/core/layers/SubtypeGroupLayer")).default);return await e(r,i),i},r.applyToEsriApiLayer=e,r.fromEsriApiSubtypeGroupLayer=function(r){checkArg("subtypeGroupLayer",r).isNotMissing();const e={...fromEsriApiLayerToLayerBase(r),...fromEsriApiLayerToOperationalLayer(r),layerType:"SubtypeGroupLayer",url:r.url,customParameters:{...r.customParameters,gdbVersion:r.gdbVersion},layerDefinition:LayerDefinition.fromEsriApiLayer(r),layers:[]};return r.sublayers.forEach((r=>{e.layers.push(SubtypeSublayer.fromEsriApiSubtypeSublayer(r))})),e}}(SubtypeGroupLayer||(SubtypeGroupLayer={}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import EsriSubtypeSublayer from"@arcgis/core/layers/support/SubtypeSublayer";import{isSubtypeSublayer}from"../utilities/_layers.js";import{checkArg}from"../utilities/checkArg.js";import{LayerDefinition}from"./LayerDefinition.js";import{PopupInfo}from"./PopupInfo.js";import{ERR_LAYER_TYPE_MISMATCH,applyLayerBaseToEsriApiLayer,fromEsriApiLayerToLayerBase}from"./_layerHelper.js";Object.defineProperty(EsriSubtypeSublayer.prototype,"layer",{get:function(){return this.parent},set:function(e){this.parent=e}})
|
|
1
|
+
import EsriSubtypeSublayer from"@arcgis/core/layers/support/SubtypeSublayer";import{isSubtypeSublayer}from"../utilities/_layers.js";import{checkArg}from"../utilities/checkArg.js";import{LayerDefinition}from"./LayerDefinition.js";import{PopupInfo}from"./PopupInfo.js";import{ERR_LAYER_TYPE_MISMATCH,applyLayerBaseToEsriApiLayer,fromEsriApiLayerToLayerBase}from"./_layerHelper.js";Object.defineProperty(EsriSubtypeSublayer.prototype,"layer",{get:function(){return this.parent},set:function(e){this.parent=e}});export var SubtypeSublayer;!function(e){async function r(e,r){checkArg("sublayerJson",e).isNotMissing(),checkArg("sublayerJson.layerType",e.layerType).satisfies((e=>!e||"ArcGISFeatureLayer"===e),ERR_LAYER_TYPE_MISMATCH),checkArg("sublayer",r).isNotMissing().satisfies((e=>isSubtypeSublayer(e)),ERR_LAYER_TYPE_MISMATCH),applyLayerBaseToEsriApiLayer(e,r),e.hasOwnProperty("popupInfo")&&(r.popupTemplate=PopupInfo.toEsriApiPopupTemplate(e.popupInfo)),e.hasOwnProperty("disablePopup")&&(r.popupEnabled=!e.disablePopup),e.hasOwnProperty("showLabels")&&(r.labelsVisible=e.showLabels),e.hasOwnProperty("subtypeCode")&&(r.subtypeCode=+e.subtypeCode),e.hasOwnProperty("layerDefinition")&&await LayerDefinition.applyToEsriApiLayer(e.layerDefinition,r)}e.esriSubtypeSublayerDefaults={labelsVisible:!0,legendEnabled:!0,popupEnabled:!0,visible:!0,minScale:0,maxScale:0},e.toEsriApiLayer=async function(e){checkArg("sublayerJson",e).isNotMissing(),checkArg("sublayerJson.layerType",e.layerType).satisfies((e=>!e||"ArcGISFeatureLayer"===e),ERR_LAYER_TYPE_MISMATCH);const p=new((await import("@arcgis/core/layers/support/SubtypeSublayer")).default);return await r(e,p),p},e.applyToEsriApiLayer=r,e.fromEsriApiSubtypeSublayer=function(r){checkArg("sublayer",r).isNotMissing().satisfies((e=>isSubtypeSublayer(e)),ERR_LAYER_TYPE_MISMATCH);const p={...fromEsriApiLayerToLayerBase(r,e.esriSubtypeSublayerDefaults),layerType:"ArcGISFeatureLayer"};return r.popupEnabled!==e.esriSubtypeSublayerDefaults.popupEnabled&&(p.disablePopup=!r.popupEnabled),r.popupTemplate&&(p.popupInfo=PopupInfo.fromEsriApiPopupTemplate(r.popupTemplate)),r.labelsVisible!==e.esriSubtypeSublayerDefaults.labelsVisible&&(p.showLabels=r.labelsVisible),r.hasOwnProperty("subtypeCode")&&(p.subtypeCode=r.subtypeCode),p.layerDefinition=LayerDefinition.fromEsriApiLayer(r),p}}(SubtypeSublayer||(SubtypeSublayer={}));
|
package/portal/WMSLayer.d.ts
CHANGED
package/portal/WMSLayer.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{whenOnce}from"@arcgis/core/core/reactiveUtils.js";import EsriExtent from"@arcgis/core/geometry/Extent";import EsriSpatialReference from"@arcgis/core/geometry/SpatialReference";import{geographicToWebMercator,webMercatorToGeographic}from"@arcgis/core/geometry/support/webMercatorUtils";import Portal from"@arcgis/core/portal/Portal";import PortalItem from"@arcgis/core/portal/PortalItem";import{isWMSLayer}from"../utilities/_layers.js";import{checkArg}from"../utilities/checkArg.js";import{parallelEach}from"../utilities/promise.js";import{SpatialReference}from"./SpatialReference.js";import{WMSSublayer}from"./WMSSublayer.js";import{applyLayerBaseToEsriApiLayer,applyBasemapLayerToEsriApiLayer,applyOperationalLayerToEsriApiLayer,fromEsriApiLayerToLayerBase,fromEsriApiLayerToOperationalLayer}from"./_layerHelper.js";export var WMSLayer;!function(e){async function r(e,r,a){if(checkArg("layerJson",e).isNotMissing(),checkArg("layer",r).isNotMissing().satisfies(isWMSLayer),checkArg("layerJson.layerType",e.layerType).satisfies((e=>!e||"WMS"===e)),applyLayerBaseToEsriApiLayer(e,r),applyBasemapLayerToEsriApiLayer(e,r),applyOperationalLayerToEsriApiLayer(e,r),e.hasOwnProperty("copyright")&&(r.copyright=e.copyright),e.hasOwnProperty("customLayerParameters")&&(r.customLayerParameters={...e.customLayerParameters}),e.hasOwnProperty("customParameters")&&(r.customParameters={...e.customParameters}),e.hasOwnProperty("featureInfoFormat")&&(r.featureInfoFormat=e.featureInfoFormat),e.hasOwnProperty("featureInfoUrl")&&(r.featureInfoUrl=e.featureInfoUrl),r.imageFormat=e.hasOwnProperty("format")?e.format:"image/png",e.hasOwnProperty("itemId")&&(r.portalItem?r.portalItem.id=e.itemId:r.portalItem=new PortalItem({id:e.itemId,portal:a||Portal.getDefault()})),e.hasOwnProperty("layers")){const a=async()=>{await parallelEach(e.layers,(async e=>{const a=r.sublayers.find((r=>r.name===e.name));a&&await WMSSublayer.applyToEsriApiWMSSublayer(e,a)})),r.sublayers.removeMany(r.sublayers.filter((r=>!e.layers.some((e=>e.name===r.name)))))};r.sublayers?await a():(async()=>{await whenOnce((()=>r.sublayers)),await a()})()}if(e.hasOwnProperty("visibleLayers")){const a=()=>r.sublayers.forEach((r=>{r.visible=e.visibleLayers.includes(r.name)}));r.sublayers?a():(async()=>{await whenOnce((()=>r.sublayers)),a()})()}if(e.hasOwnProperty("mapUrl")&&(r.mapUrl=e.mapUrl),e.hasOwnProperty("maxHeight")&&(r.imageMaxHeight=e.maxHeight),e.hasOwnProperty("maxWidth")&&(r.imageMaxWidth=e.maxWidth),e.hasOwnProperty("spatialReferences")&&e.spatialReferences.length&&(r.spatialReferences=e.spatialReferences.slice(),r.spatialReference||(r.spatialReference=SpatialReference.toEsriApiSpatialReference({wkid:e.spatialReferences[0]}))),e.hasOwnProperty("extent")){const a=new EsriExtent({xmin:e.extent[0][0],ymin:e.extent[0][1],xmax:e.extent[1][0],ymax:e.extent[1][1],spatialReference:EsriSpatialReference.WGS84});(r.spatialReference.isWGS84||r.spatialReference.isWebMercator)&&(r.fullExtent=r.spatialReference.isWGS84?a:geographicToWebMercator(a))}e.hasOwnProperty("url")&&(r.url=e.url),e.hasOwnProperty("version")&&(r.version=e.version)}e.toEsriApiLayer=async function(e){checkArg("layerJson",e).isNotMissing(),checkArg("layerJson.layerType",e.layerType).satisfies((e=>!e||"WMS"===e));const a=new((await import("@arcgis/core/layers/WMSLayer")).default);return await r(e,a),a},e.applyToEsriApiLayer=r,e.fromEsriApiLayer=function(e){checkArg("layer",e).isNotMissing();const r={...fromEsriApiLayerToLayerBase(e),...fromEsriApiLayerToOperationalLayer(e),layerType:"WMS",visibleLayers:[]};if(e.copyright&&(r.copyright=e.copyright),e.customLayerParameters&&(r.customLayerParameters={...e.customLayerParameters}),e.customParameters&&(r.customParameters={...e.customParameters}),e.fullExtent&&(e.spatialReference.isWGS84||e.spatialReference.isWebMercator)){const a=e.spatialReference.isWGS84?e.fullExtent:webMercatorToGeographic(e.fullExtent,!1);r.extent=[[],[]],r.extent[0][0]=a.xmin,r.extent[0][1]=a.ymin,r.extent[1][0]=a.xmax,r.extent[1][1]=a.ymax}return e.featureInfoFormat&&(r.featureInfoFormat=e.featureInfoFormat),e.featureInfoUrl&&(r.featureInfoUrl=e.featureInfoUrl),e.imageFormat&&(r.format=e.imageFormat),e.portalItem&&(r.itemId=e.portalItem.id),e.sublayers&&(r.layers=[],e.sublayers.forEach((e=>{const a=WMSSublayer.fromEsriApiWMSSublayer(e);r.layers.
|
|
1
|
+
import{whenOnce}from"@arcgis/core/core/reactiveUtils.js";import EsriExtent from"@arcgis/core/geometry/Extent";import EsriSpatialReference from"@arcgis/core/geometry/SpatialReference";import{geographicToWebMercator,webMercatorToGeographic}from"@arcgis/core/geometry/support/webMercatorUtils";import Portal from"@arcgis/core/portal/Portal";import PortalItem from"@arcgis/core/portal/PortalItem";import{isWMSLayer}from"../utilities/_layers.js";import{checkArg}from"../utilities/checkArg.js";import{parallelEach}from"../utilities/promise.js";import{SpatialReference}from"./SpatialReference.js";import{WMSSublayer}from"./WMSSublayer.js";import{applyLayerBaseToEsriApiLayer,applyBasemapLayerToEsriApiLayer,applyOperationalLayerToEsriApiLayer,fromEsriApiLayerToLayerBase,fromEsriApiLayerToOperationalLayer}from"./_layerHelper.js";export var WMSLayer;!function(e){async function r(e,r,a){if(checkArg("layerJson",e).isNotMissing(),checkArg("layer",r).isNotMissing().satisfies(isWMSLayer),checkArg("layerJson.layerType",e.layerType).satisfies((e=>!e||"WMS"===e)),applyLayerBaseToEsriApiLayer(e,r),applyBasemapLayerToEsriApiLayer(e,r),applyOperationalLayerToEsriApiLayer(e,r),e.hasOwnProperty("copyright")&&(r.copyright=e.copyright),e.hasOwnProperty("customLayerParameters")&&(r.customLayerParameters={...e.customLayerParameters}),e.hasOwnProperty("customParameters")&&(r.customParameters={...e.customParameters}),e.hasOwnProperty("featureInfoFormat")&&(r.featureInfoFormat=e.featureInfoFormat),e.hasOwnProperty("featureInfoUrl")&&(r.featureInfoUrl=e.featureInfoUrl),r.imageFormat=e.hasOwnProperty("format")?e.format:"image/png",e.hasOwnProperty("itemId")&&(r.portalItem?r.portalItem.id=e.itemId:r.portalItem=new PortalItem({id:e.itemId,portal:a||Portal.getDefault()})),e.hasOwnProperty("layers")){const a=async()=>{await parallelEach(e.layers,(async e=>{const a=r.sublayers.find((r=>r.name===e.name));a&&await WMSSublayer.applyToEsriApiWMSSublayer(e,a)})),r.sublayers.removeMany(r.sublayers.filter((r=>!e.layers.some((e=>e.name===r.name)))))};r.sublayers?await a():(async()=>{await whenOnce((()=>r.sublayers)),await a()})()}if(e.hasOwnProperty("visibleLayers")){const a=()=>r.sublayers.forEach((r=>{r.visible=e.visibleLayers.includes(r.name)}));r.sublayers?a():(async()=>{await whenOnce((()=>r.sublayers)),a()})()}if(e.hasOwnProperty("mapUrl")&&(r.mapUrl=e.mapUrl),e.hasOwnProperty("maxHeight")&&(r.imageMaxHeight=e.maxHeight),e.hasOwnProperty("maxWidth")&&(r.imageMaxWidth=e.maxWidth),e.hasOwnProperty("spatialReferences")&&e.spatialReferences.length&&(r.spatialReferences=e.spatialReferences.slice(),r.spatialReference||(r.spatialReference=SpatialReference.toEsriApiSpatialReference({wkid:e.spatialReferences[0]}))),e.hasOwnProperty("extent")){const a=new EsriExtent({xmin:e.extent[0][0],ymin:e.extent[0][1],xmax:e.extent[1][0],ymax:e.extent[1][1],spatialReference:EsriSpatialReference.WGS84});(r.spatialReference.isWGS84||r.spatialReference.isWebMercator)&&(r.fullExtent=r.spatialReference.isWGS84?a:geographicToWebMercator(a))}e.hasOwnProperty("url")&&(r.url=e.url),e.hasOwnProperty("version")&&(r.version=e.version)}e.toEsriApiLayer=async function(e){checkArg("layerJson",e).isNotMissing(),checkArg("layerJson.layerType",e.layerType).satisfies((e=>!e||"WMS"===e));const a=new((await import("@arcgis/core/layers/WMSLayer")).default);return await r(e,a),a},e.applyToEsriApiLayer=r,e.fromEsriApiLayer=function(e){checkArg("layer",e).isNotMissing();const r={...fromEsriApiLayerToLayerBase(e),...fromEsriApiLayerToOperationalLayer(e),layerType:"WMS",visibleLayers:[]};if(e.copyright&&(r.copyright=e.copyright),e.customLayerParameters&&(r.customLayerParameters={...e.customLayerParameters}),e.customParameters&&(r.customParameters={...e.customParameters}),e.fullExtent&&(e.spatialReference.isWGS84||e.spatialReference.isWebMercator)){const a=e.spatialReference.isWGS84?e.fullExtent:webMercatorToGeographic(e.fullExtent,!1);r.extent=[[],[]],r.extent[0][0]=a.xmin,r.extent[0][1]=a.ymin,r.extent[1][0]=a.xmax,r.extent[1][1]=a.ymax}return e.featureInfoFormat&&(r.featureInfoFormat=e.featureInfoFormat),e.featureInfoUrl&&(r.featureInfoUrl=e.featureInfoUrl),e.imageFormat&&(r.format=e.imageFormat),e.portalItem&&(r.itemId=e.portalItem.id),e.sublayers&&(r.layers=[],e.sublayers.forEach((e=>{const a=WMSSublayer.fromEsriApiWMSSublayer(e);r.layers.push(a),e.visible&&r.visibleLayers.push(e.name)}))),e.imageMaxHeight&&(r.maxHeight=e.imageMaxHeight),e.imageMaxWidth&&(r.maxWidth=e.imageMaxWidth),e.mapUrl&&(r.mapUrl=e.mapUrl),e.spatialReferences&&(r.spatialReferences=e.spatialReferences.slice()),e.url&&(r.url=e.url),e.version&&(r.version=e.version),r}}(WMSLayer||(WMSLayer={}));
|
package/portal/_LayerBase.d.ts
CHANGED
|
@@ -73,7 +73,7 @@ export interface LayerBase {
|
|
|
73
73
|
* possible values isn't officially documented by esri, however it's used in
|
|
74
74
|
* ArcGIS online web maps.
|
|
75
75
|
*/
|
|
76
|
-
export declare type LayerType = "ArcGISAnnotationLayer" | "ArcGISFeatureLayer" | "ArcGISMapServiceLayer" | "ArcGISTiledMapServiceLayer" | "ArcGISTiledElevationServiceLayer" | "ArcGISImageServiceLayer" | "ArcGISImageServiceVectorLayer" | "ArcGISTiledImageServiceLayer" | "VectorTileLayer" | "ArcGISSceneServiceLayer" | "ArcGISStreamLayer" | "BingMapsAerial" | "BingMapsHybrid" | "BingMapsRoad" | "OpenStreetMap" | "WebTiledLayer" | "KML" | "WMS" | "CSV" | "GeoRSS" | "IntegratedMeshLayer" | "GroupLayer" | "PointCloudLayer" | "BuildingSceneLayer" | "
|
|
76
|
+
export declare type LayerType = "ArcGISAnnotationLayer" | "ArcGISFeatureLayer" | "ArcGISMapServiceLayer" | "ArcGISTiledMapServiceLayer" | "ArcGISTiledElevationServiceLayer" | "ArcGISImageServiceLayer" | "ArcGISImageServiceVectorLayer" | "ArcGISTiledImageServiceLayer" | "VectorTileLayer" | "ArcGISSceneServiceLayer" | "ArcGISStreamLayer" | "BingMapsAerial" | "BingMapsHybrid" | "BingMapsRoad" | "OpenStreetMap" | "WebTiledLayer" | "KML" | "WMS" | "CSV" | "GeoRSS" | "IntegratedMeshLayer" | "GroupLayer" | "PointCloudLayer" | "BuildingSceneLayer" | "SubtypeGroupLayer";
|
|
77
77
|
export declare namespace LayerBase {
|
|
78
78
|
/**
|
|
79
79
|
* Creates an Esri Layer object from the given Portal layer JSON.
|
package/support/esri.d.ts
CHANGED
|
@@ -33,7 +33,7 @@ export declare type VectorTileLayerProperties = __esri.VectorTileLayerProperties
|
|
|
33
33
|
export declare type PopupTemplateProperties = __esri.PopupTemplateProperties;
|
|
34
34
|
export declare type CSVLayerCapabilities = __esri.CSVLayerCapabilities;
|
|
35
35
|
export declare type FieldProperties = __esri.FieldProperties;
|
|
36
|
-
export declare type FeatureLayerElevationInfo = __esri.
|
|
36
|
+
export declare type FeatureLayerElevationInfo = __esri.FeatureLayerBaseElevationInfo;
|
|
37
37
|
export declare type FeatureLayerApplyEdits = __esri.FeatureLayerApplyEditsEdits;
|
|
38
38
|
export declare type FeatureLayerCapabilities = __esri.FeatureLayerCapabilities;
|
|
39
39
|
export declare type FeatureEditResult = __esri.FeatureEditResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{toFeature}from"../../data/Feature.js";import{executeQuery,executeCount}from"../../support/_query.js";import{isCSVLayerExtension,isFeatureCollectionLayerExtension}from"../../utilities/extensions.js";import{removeZValues}from"../../utilities/geometry.js";import{IdentifyProviderBase}from"./IdentifyProviderBase.js";import{hitTestForClusterFeatures}from"./_utilities.js";async function _getFeaturesInCluster(e,t,r,a){const
|
|
1
|
+
import{toFeature}from"../../data/Feature.js";import{cancelifyWithAbortSignal}from"../../support/Cancellable.js";import{executeQuery,executeCount}from"../../support/_query.js";import{isCSVLayerExtension,isFeatureCollectionLayerExtension}from"../../utilities/extensions.js";import{removeZValues}from"../../utilities/geometry.js";import{IdentifyProviderBase}from"./IdentifyProviderBase.js";import{hitTestForClusterFeatures}from"./_utilities.js";async function _getFeaturesInCluster(e,t,r,a){const i=await hitTestForClusterFeatures(e,t);if(0===i.length)return[];a.aggregateIds=i.map((e=>e.getObjectId()));return(await cancelifyWithAbortSignal((t=>e._layerView.queryFeatures(a,{signal:t})),r.cancelToken))?.features}export class CSVLayerClientSideQueryIdentifyProvider extends IdentifyProviderBase{isSupported(e,t,r){return(isCSVLayerExtension(e)||isFeatureCollectionLayerExtension(e))&&!!e.layer}_identify(e,t,r,a){return async function*(){const i=e,o=i.layer.createQuery();if(o.outFields=e.featureSettings.outFields,o.returnGeometry=r.returnGeometry,o.outSpatialReference=r.outSpatialReference,o.maxAllowableOffset=r.maxAllowableOffset,o.num=r.maxResults,o.returnZ="scene"===i.mapExtension?.viewMode,"cluster"===i?.layer?.featureReduction?.type&&"point"===a){const a=await _getFeaturesInCluster(i,t,r,o);if(a?.length>0)return void(yield*a.map((t=>toFeature(t,{source:e}))))}let n=t;n&&!i.layer.capabilities?.data?.supportsZ&&(n=removeZValues(n.clone())),o.geometry=n,yield*executeQuery(o,i,i.layer,r.cancelToken)}()}async _count(e,t,r,a){const i=e,o=i.layer.createQuery();if(o.num=r.maxResults,o.returnGeometry=r.returnGeometry,o.outFields=e.featureSettings.outFields,"cluster"===i?.layer?.featureReduction?.type&&"point"===a){const e=await _getFeaturesInCluster(i,t,r,o);if(e?.length>0)return{source:i,count:e.length}}if(!o.aggregateIds){let e=t;e&&!i.layer.capabilities?.data?.supportsZ&&(e=removeZValues(e.clone())),o.geometry=e}return executeCount(o,i,i.layer,r.cancelToken)}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import Point from"@arcgis/core/geometry/Point";import Polygon from"@arcgis/core/geometry/Polygon";import{project}from"@arcgis/core/rest/geometryService";import{identify as imageIdentify}from"@arcgis/core/rest/imageService";import ImageIdentifyParameters from"@arcgis/core/rest/support/ImageIdentifyParameters";import ProjectParams from"@arcgis/core/rest/support/ProjectParameters";import{Feature,toFeature}from"../../data/Feature.js";import{cancelifyWithAbortSignal}from"../../support/Cancellable.js";import{constrainQueryTimeExtentToView}from"../../support/_query.js";import{toArray}from"../../utilities/asyncIterable.js";import{isImageryLayerExtension}from"../../utilities/extensions.js";import{isPoint,isPolygon,isPolyline}from"../../utilities/geometry.js";import{getLogger}from"../../utilities/log.js";import{isNumeric}from"../../utilities/number.js";import{IdentifyProviderBase}from"./IdentifyProviderBase.js";const log=getLogger("ImageryLayerIdentifyProvider");export class ImageryLayerIdentifyProvider extends IdentifyProviderBase{isSupported(e,t,r){return isImageryLayerExtension(e)}async*_identify(e,t,r){const i=e;let a=t;if(t&&!isPoint(t)&&!isPolygon(t))if(isPolyline(t)){log.debug("An identify on an Imagery Layer (ArcGISImageServiceLayer) was performed using polyline geometry, which is not supported. The center vertex of in the input geometry was used instead.");const e=t.paths[0][Math.floor(t.paths[0].length/2)];a=new Point({spatialReference:t.spatialReference,x:e[0],y:e[1]})}else a=Polygon.fromExtent(t.extent);const o=await this._executeIdentifyTask(i,a,r);yield*this._getResultFeatures(o,i,r)}async _count(e,t,r){const i=e;r.returnGeometry=!1;const a=await this._executeIdentifyTask(i,t,r);return{source:e,count:(await toArray(this._getResultFeatures(a,i,r))).length}}async _executeIdentifyTask(e,t,r){const{layer:i}=e,a=new ImageIdentifyParameters({geometry:t,mosaicRule:i.mosaicRule,renderingRule:i.renderingRule,returnCatalogItems:e.includeCatalogItems,returnGeometry:e.includeCatalogItems&&r.returnGeometry});constrainQueryTimeExtentToView(a,e);return cancelifyWithAbortSignal((async e=>imageIdentify(i.url,a,{signal:e})),r.cancelToken)}_getPixelData(e,t,r,i){const{layer:a}=i;let o=r.properties?.Values[e]??r.value,s=r.value;const n=a.
|
|
1
|
+
import Point from"@arcgis/core/geometry/Point";import Polygon from"@arcgis/core/geometry/Polygon";import{project}from"@arcgis/core/rest/geometryService";import{identify as imageIdentify}from"@arcgis/core/rest/imageService";import ImageIdentifyParameters from"@arcgis/core/rest/support/ImageIdentifyParameters";import ProjectParams from"@arcgis/core/rest/support/ProjectParameters";import{Feature,toFeature}from"../../data/Feature.js";import{cancelifyWithAbortSignal}from"../../support/Cancellable.js";import{constrainQueryTimeExtentToView}from"../../support/_query.js";import{toArray}from"../../utilities/asyncIterable.js";import{isImageryLayerExtension}from"../../utilities/extensions.js";import{isPoint,isPolygon,isPolyline}from"../../utilities/geometry.js";import{getLogger}from"../../utilities/log.js";import{isNumeric}from"../../utilities/number.js";import{IdentifyProviderBase}from"./IdentifyProviderBase.js";const log=getLogger("ImageryLayerIdentifyProvider");export class ImageryLayerIdentifyProvider extends IdentifyProviderBase{isSupported(e,t,r){return isImageryLayerExtension(e)}async*_identify(e,t,r){const i=e;let a=t;if(t&&!isPoint(t)&&!isPolygon(t))if(isPolyline(t)){log.debug("An identify on an Imagery Layer (ArcGISImageServiceLayer) was performed using polyline geometry, which is not supported. The center vertex of in the input geometry was used instead.");const e=t.paths[0][Math.floor(t.paths[0].length/2)];a=new Point({spatialReference:t.spatialReference,x:e[0],y:e[1]})}else a=Polygon.fromExtent(t.extent);const o=await this._executeIdentifyTask(i,a,r);yield*this._getResultFeatures(o,i,r)}async _count(e,t,r){const i=e;r.returnGeometry=!1;const a=await this._executeIdentifyTask(i,t,r);return{source:e,count:(await toArray(this._getResultFeatures(a,i,r))).length}}async _executeIdentifyTask(e,t,r){const{layer:i}=e,a=new ImageIdentifyParameters({geometry:t,mosaicRule:i.mosaicRule,renderingRule:i.renderingRule,returnCatalogItems:e.includeCatalogItems,returnGeometry:e.includeCatalogItems&&r.returnGeometry});constrainQueryTimeExtentToView(a,e);return cancelifyWithAbortSignal((async e=>imageIdentify(i.url,a,{signal:e})),r.cancelToken)}_getPixelData(e,t,r,i){const{layer:a}=i;let o=r.properties?.Values[e]??r.value,s=r.value;const n=a._rasterAttributeTableFieldPrefix;isNumeric(o)&&(o=parseFloat(o)),isNumeric(s)&&(s=parseFloat(s)),t.attributes.set(`${n}ServicePixelValue`,s),t.attributes.set(`${n}ServicePixelValue.Raw`,s),t.attributes.set(`${n}ItemPixelValue`,o);const l=a.serviceRasterInfo?.attributeTable??a.rasterInfo?.attributeTable;if(l){const{features:e,fields:r}=l,i=e.find((e=>e.getAttribute("Value")===o));r.forEach((e=>{"Value"!==e.name&&"oid"!==e.type&&t.attributes.set(`${n}${e.name}`,i?.getAttribute(e.name))}))}}async*_getResultFeatures(e,t,r){if("NoData"===e.value)return;const i=r.outSpatialReference&&r.outSpatialReference.wkid!==t.layer.spatialReference.wkid;if(t.includeCatalogItems&&e.catalogItems){let a=Promise.resolve([]);i&&r.returnGeometry&&(a=this._projectGeometries(t.layer.url,e.catalogItems.features.map((e=>e.geometry)),r.outSpatialReference,r.cancelToken));const o=[],{outFields:s}=t.featureSettings;e.catalogItems.features.forEach(((r,i)=>{const a=toFeature(r,{source:t});if(s&&!s.includes("*"))for(const e of a.attributes.keys())s.includes(e)||a.attributes.delete(e);a.attributes.set("visible",1===e.catalogItemVisibilities[i]),this._getPixelData(i,a,e,t),o.push(a)}));const n=await a;n.length>0&&n.forEach(((e,t)=>o[t].geometry=e)),yield*o}if(!t.includeCatalogItems||!e.catalogItems){const a=new Feature({source:t});a.geometry=i?(await this._projectGeometries(t.layer.url,[e.location],r.outSpatialReference,r.cancelToken))[0]:e.location,this._getPixelData(0,a,e,t),yield a}}_projectGeometries(e,t,r,i){const a=new ProjectParams({geometries:t,outSpatialReference:r});return cancelifyWithAbortSignal((async t=>project(e,a,{signal:t})),i)}}
|
|
@@ -60,7 +60,7 @@ export declare abstract class CollectionProxy<T> extends Observable {
|
|
|
60
60
|
* @param index Zero-based index of where in the collection to add the item.
|
|
61
61
|
* If not specified, the items will be added at the end.
|
|
62
62
|
*/
|
|
63
|
-
add(item: T, index?: number):
|
|
63
|
+
add(item: T, index?: number): this;
|
|
64
64
|
/**
|
|
65
65
|
* Adds multiple items to the collection.
|
|
66
66
|
*
|
|
@@ -68,7 +68,7 @@ export declare abstract class CollectionProxy<T> extends Observable {
|
|
|
68
68
|
* @param index Zero-based index of where in the collection to add the
|
|
69
69
|
* items. If not specified, the items will be added at the end.
|
|
70
70
|
*/
|
|
71
|
-
addMany(items: ArrayLike<T> | Collection<T>, index?: number):
|
|
71
|
+
addMany(items: ArrayLike<T> | Collection<T>, index?: number): this;
|
|
72
72
|
/**
|
|
73
73
|
* Creates a deep clone of the Collection. To create a shallow clone of the
|
|
74
74
|
* collection, use slice().
|
|
@@ -252,7 +252,7 @@ export declare abstract class CollectionProxy<T> extends Observable {
|
|
|
252
252
|
/**
|
|
253
253
|
* Reverses the collection in place.
|
|
254
254
|
*/
|
|
255
|
-
reverse():
|
|
255
|
+
reverse(): this;
|
|
256
256
|
/**
|
|
257
257
|
* Removes the first item from the collection (at index 0), and returns it.
|
|
258
258
|
* The remaining items of the collection are then shifted down one index
|
|
@@ -282,7 +282,7 @@ export declare abstract class CollectionProxy<T> extends Observable {
|
|
|
282
282
|
* @param compareFunction The function that defines a comparison of two
|
|
283
283
|
* items in the collection.
|
|
284
284
|
*/
|
|
285
|
-
sort(compareFunction?: ItemCompareCallback<T>):
|
|
285
|
+
sort(compareFunction?: ItemCompareCallback<T>): this;
|
|
286
286
|
/**
|
|
287
287
|
* Removes existing items and/or adds new items to the collection.
|
|
288
288
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Observable}from"../support/Observable.js";import{onCollectionPropertyChange}from"./watch.js";export class CollectionProxy extends Observable{constructor(t){super(),this._destroyed=!1,this._initialized=!0,this._collectionField=t,onCollectionPropertyChange(this,"_collectionField",(t=>{this.emit("change",t)})),this.watch("_collectionField.length",(()=>this.notifyChange("length")))}get length(){return this._collection.length}get declaredClass(){return"esri.core.Collection"}get destroyed(){return this._destroyed}set destroyed(t){this._destroyed=t}get initialized(){return this._initialized}set initialized(t){this._initialized=t}get _collection(){if(void 0===this._collectionField)throw new Error("CollectionProxy requires a backing collection.");return this._collectionField}set _collection(t){this._collectionField=t}add(t,e){this._collection.add(t,e)}addMany(t,e){if(!t)return;let i=e;if(arguments.length>1)for(let e=0;e<t.length;e++)"function"==typeof t.getItemAt?this.add(t.getItemAt(e),i++):this.add(t[e],i++);else for(let e=0;e<t.length;e++)"function"==typeof t.getItemAt?this.add(t.getItemAt(e)):this.add(t[e])}clone(){const t=Object.create(Object.getPrototypeOf(this));return t._collection=this._collection,t}concat(t){return this._collection.concat(t)}destroy(){}every(t){return this._collection.every(t)}filter(t){return this._collection.filter(t)}find(t){return this._collection.find(t)}findIndex(t){return this._collection.findIndex(t)}flatten(t){return this._collection.flatten(t)}forEach(t){return this._collection.forEach(t)}getItemAt(t){return this._collection.getItemAt(t)}includes(t){return this._collection.includes(t)}indexOf(t,e){return this._collection.indexOf(t,e)}join(t){return this._collection.join(t)}lastIndexOf(t,e){return this._collection.lastIndexOf(t,e)}map(t){return this._collection.map(t)}pop(){return this.removeAt(this.length-1)}push(t){return this.add(t,this.length),this.length}reduce(t,e){return this._collection.reduce(t,e)}reduceRight(t,e){return this._collection.reduceRight(t,e)}remove(t){this.removeAt(this.indexOf(t))}removeAll(){for(;this.length;)this.pop()}removeAt(t){return this._collection.removeAt(t)}removeMany(t){if(!t)return;const e=[];for(let i=0;i<t.length;i++){const r="function"==typeof t.getItemAt?t.getItemAt(i):t[i],o=this.indexOf(r);o>=0&&e.push(this.removeAt(o))}return e}reorder(t,e){return this._collection.reorder(t,e)}reverse(){return this._collection.reverse(),this}shift(){return this.removeAt(0)}slice(t,e){return this._collection.slice(t,e)}some(t){return this._collection.some(t)}sort(t){this._collection.sort(t)}splice(t,e,...i){const r=[];for(let i=e;i>0;i--)r.push(this.removeAt(t));let o=t;return i.forEach((t=>{this.add(t,o),o++})),r}toArray(){return this._collection.toArray()}unshift(t){return this.add(t,0),this.length}_get(t){throw Error()}_set(t,e){throw Error()}}
|
|
1
|
+
import{Observable}from"../support/Observable.js";import{onCollectionPropertyChange}from"./watch.js";export class CollectionProxy extends Observable{constructor(t){super(),this._destroyed=!1,this._initialized=!0,this._collectionField=t,onCollectionPropertyChange(this,"_collectionField",(t=>{this.emit("change",t)})),this.watch("_collectionField.length",(()=>this.notifyChange("length")))}get length(){return this._collection.length}get declaredClass(){return"esri.core.Collection"}get destroyed(){return this._destroyed}set destroyed(t){this._destroyed=t}get initialized(){return this._initialized}set initialized(t){this._initialized=t}get _collection(){if(void 0===this._collectionField)throw new Error("CollectionProxy requires a backing collection.");return this._collectionField}set _collection(t){this._collectionField=t}add(t,e){return this._collection.add(t,e),this}addMany(t,e){if(!t)return this;let i=e;if(arguments.length>1)for(let e=0;e<t.length;e++)"function"==typeof t.getItemAt?this.add(t.getItemAt(e),i++):this.add(t[e],i++);else for(let e=0;e<t.length;e++)"function"==typeof t.getItemAt?this.add(t.getItemAt(e)):this.add(t[e]);return this}clone(){const t=Object.create(Object.getPrototypeOf(this));return t._collection=this._collection,t}concat(t){return this._collection.concat(t)}destroy(){}every(t){return this._collection.every(t)}filter(t){return this._collection.filter(t)}find(t){return this._collection.find(t)}findIndex(t){return this._collection.findIndex(t)}flatten(t){return this._collection.flatten(t)}forEach(t){return this._collection.forEach(t)}getItemAt(t){return this._collection.getItemAt(t)}includes(t){return this._collection.includes(t)}indexOf(t,e){return this._collection.indexOf(t,e)}join(t){return this._collection.join(t)}lastIndexOf(t,e){return this._collection.lastIndexOf(t,e)}map(t){return this._collection.map(t)}pop(){return this.removeAt(this.length-1)}push(t){return this.add(t,this.length),this.length}reduce(t,e){return this._collection.reduce(t,e)}reduceRight(t,e){return this._collection.reduceRight(t,e)}remove(t){this.removeAt(this.indexOf(t))}removeAll(){for(;this.length;)this.pop()}removeAt(t){return this._collection.removeAt(t)}removeMany(t){if(!t)return;const e=[];for(let i=0;i<t.length;i++){const r="function"==typeof t.getItemAt?t.getItemAt(i):t[i],o=this.indexOf(r);o>=0&&e.push(this.removeAt(o))}return e}reorder(t,e){return this._collection.reorder(t,e)}reverse(){return this._collection.reverse(),this}shift(){return this.removeAt(0)}slice(t,e){return this._collection.slice(t,e)}some(t){return this._collection.some(t)}sort(t){return this._collection.sort(t),this}splice(t,e,...i){const r=[];for(let i=e;i>0;i--)r.push(this.removeAt(t));let o=t;return i.forEach((t=>{this.add(t,o),o++})),r}toArray(){return this._collection.toArray()}unshift(t){return this.add(t,0),this.length}_get(t){throw Error()}_set(t,e){throw Error()}}
|