@vertigis/arcgis-extensions 53.18.2 → 54.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.
Files changed (41) hide show
  1. package/data/Feature.d.ts +7 -3
  2. package/data/Feature.js +1 -1
  3. package/data/FeatureSettings.js +1 -1
  4. package/data/Schema.d.ts +19 -2
  5. package/data/Schema.js +1 -1
  6. package/docs/html/assets/navigation.js +1 -1
  7. package/docs/html/assets/search.js +1 -1
  8. package/docs/html/classes/data_Feature.Feature.html +4 -2
  9. package/docs/html/classes/data_Schema.Schema.html +8 -4
  10. package/docs/html/classes/data__TableExtension.TableSchema.html +8 -4
  11. package/docs/html/classes/mapping_BuildingComponentSublayerExtension.BuildingComponentSublayerSchema.html +8 -4
  12. package/docs/html/classes/mapping_BuildingGroupSublayerExtension.BuildingGroupSublayerSchema.html +8 -4
  13. package/docs/html/classes/mapping_BuildingSceneLayerExtension.BuildingSceneLayerReadOnlySchema.html +8 -4
  14. package/docs/html/classes/mapping_BuildingSublayerExtension.BuildingSublayerSchema.html +8 -4
  15. package/docs/html/classes/mapping_FeatureLayerExtensionBase.FeatureLayerReadOnlySchema.html +11 -5
  16. package/docs/html/classes/mapping_FeatureLayerExtensionBase.FeatureLayerSchema.html +11 -5
  17. package/docs/html/classes/mapping_MapNotesSublayerExtension.MapNotesSublayerExtensionSchema.html +8 -4
  18. package/docs/html/classes/mapping_RouteLayerExtension.RouteLayerExtensionSchema.html +8 -4
  19. package/docs/html/classes/mapping_StreamLayerExtension.StreamLayerSchema.html +8 -4
  20. package/docs/html/classes/mapping_SubtypeGroupLayerExtension.SubtypeGroupLayerExtension.html +4 -4
  21. package/docs/html/classes/mapping_SubtypeGroupLayerExtension.SubtypeGroupLayerSchema.html +21 -9
  22. package/docs/html/classes/mapping_SubtypeSublayerExtension.SubtypeSublayerSchema.html +20 -7
  23. package/docs/html/classes/mapping__LayerExtension.LayerExtensionReadOnlySchema.html +8 -4
  24. package/docs/html/classes/mapping__LayerExtension.LayerExtensionSchema.html +8 -4
  25. package/docs/html/classes/mapping__SublayerExtension.SublayerSchema.html +8 -4
  26. package/docs/html/functions/data_Schema.schemaHasSubtypes.html +4 -0
  27. package/docs/html/modules/data_Schema.html +1 -0
  28. package/docs/html/variables/version.version.html +1 -1
  29. package/mapping/FeatureLayerExtension.d.ts +0 -1
  30. package/mapping/FeatureLayerExtension.js +1 -1
  31. package/mapping/FeatureLayerExtensionBase.d.ts +7 -0
  32. package/mapping/FeatureLayerExtensionBase.js +1 -1
  33. package/mapping/SubtypeGroupLayerExtension.d.ts +33 -4
  34. package/mapping/SubtypeGroupLayerExtension.js +1 -1
  35. package/mapping/SubtypeSublayerExtension.d.ts +27 -4
  36. package/mapping/SubtypeSublayerExtension.js +1 -1
  37. package/package.json +1 -1
  38. package/tasks/search/_utilities.js +1 -1
  39. package/tasks/search/support/_querySearchProviderUtils.js +1 -1
  40. package/version.d.ts +1 -1
  41. package/version.js +1 -1
@@ -1 +1 @@
1
- import{__decorate as e}from"tslib";import{InvalidOperationError as t}from"../InvalidOperationError.js";import{TaskSettings as r}from"../data/TaskSettings.js";import{supportsAttachmentEditing as i}from"../data/support/attachments.js";import{_isGraphicsLayerJson as s}from"../json/FeatureLayerJson.js";import{layerToJson as o}from"../json/LayerJson.js";import{serializable as a}from"../support/Serializable.js";import{notifyChange as n}from"../support/observableUtils.js";import{ReadOnlyCollection as l}from"../utilities/ReadOnlyCollection.js";import{isCSVLayer as p,isFeatureLayer as y,isGraphicsLayer as c,isStreamLayer as d}from"../utilities/_layers.js";import{checkArg as u}from"../utilities/checkArg.js";import{parse as m}from"../utilities/format/number.js";import{LayerExtension as g,LayerExtensionSchema as h,ERR_SCHEMA_READ_ONLY as _}from"./_LayerExtension.js";import{ArrayWrappedCollection as f}from"./support/ArrayWrappedCollection.js";import{PopupTemplateFeatureSettings as S}from"./support/PopupTemplateFeatureSettings.js";export class FeatureLayerExtensionBase extends g{get hasFeatures(){return!0}get layer(){return super.layer}get renderer(){return this.layer?.renderer}get canChangeDefinitionExpression(){return!0}get canChangeRenderer(){return!0}get canChangeLabels(){return!0}get _layerView(){return this.layer&&this.mapExtension?._allLayerViews.find((e=>e.layer===this.layer))}_getProjectWebmapJSON(){const e=super._getProjectWebmapJSON();if(!e||this.dynamicallyAddedLayer)return e;const{layerDefinition:t,showLabels:r}=o(this.layer),{definitionExpression:i,drawingInfo:s}=t??{};return i&&(e.layerDefinition={...e.layerDefinition,definitionExpression:i}),s&&(e.layerDefinition={...e.layerDefinition,drawingInfo:s}),void 0!==r&&(e.showLabels=r),e}async*_getFeatures(e,t){const r=this.layer.createQuery();r.objectIds=e.map((e=>m(e))),r.where=void 0,r.outFields=t.outFields,r.returnGeometry=t.returnGeometry,yield*(await import("../support/_query.js")).executeQuery(r,this,this.layer,t.cancelToken)}_applyLayerProperties(e,t){return u("properties",e).isNotMissing(),u("properties.layerType",e.layerType).satisfies((e=>!e||"ArcGISFeatureLayer"===e||"ArcGISStreamLayer"===e||"CSV"===e)),u("layer",t).isNotMissing().satisfies((e=>y(e)||d(e)||p(e)||c(e))),u("properties",e).satisfies((e=>!s(e))),super._applyLayerProperties(e,t)}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,layer:{...this._toPropertyDef(e.layer),default:{layerType:"ArcGISFeatureLayer"}}}}_createSchema(){return new C(this)}_isSupportedLayer(e){return y(e)}_createFeatureSettings(){return new b(this)}_createTaskSettings(){return new E(this)}_capabilities(){const e=i(this.layer);return this.layer?.capabilities?.operations?{...this.layer.capabilities.operations,supportsAttachmentEditing:e,supportsStandardizedQueries:this.layer.capabilities?.query?.supportsStandardizedQueriesOnly}:{...super._capabilities(),supportsAttachmentEditing:e}}}let b=class extends S{get zoomScale(){const e="point"===this._layerExtension.schema.geometryType?this._layerExtension.layer.maxScale:void 0;return this._getSetting("zoomScale",e)}set zoomScale(e){this._setSetting("zoomScale",e)}};b=e([a],b);let C=class extends h{_fieldCollection;_typesCollection;constructor(e){super(e),this._fieldCollection=this._createFieldCollection(),this._typesCollection=this._createTypeCollection(),n(this,"_fields")}get types(){return this._typesCollection}get _fields(){return this._fieldCollection}destroy(){this._fieldCollection.destroy(),this._typesCollection.destroy(),super.destroy()}_createFieldCollection(){return new f({parent:this._layerExtension,targetProperty:"layer",arrayProperty:"fields"})}_createTypeCollection(){return new f({parent:this._layerExtension,targetProperty:"layer",arrayProperty:"types"})}_getPropertyBindings(){return{primaryKeyField:"objectIdField",geometryType:"geometryType",spatialReference:"spatialReference",displayField:"displayField",typeIdField:"typeIdField"}}};C=e([a],C);export{C as FeatureLayerSchema};let x=class extends C{_setSetting(e,r){if(this._layerBindings.has(e))throw new t(_);super._setSetting(e,r)}_createFieldCollection(){return new l(super._createFieldCollection(),{destroyBackingCollection:!0})}_createTypeCollection(){return new l(super._createTypeCollection(),{destroyBackingCollection:!0})}};x=e([a],x);export{x as FeatureLayerReadOnlySchema};let E=class extends r{_layerExtension;constructor(e,t){super(t),this._layerExtension=e}get enableEditing(){return this._getSetting("enableEditing",this._layerExtension.layer?.editingEnabled??!0)}set enableEditing(e){this._setSetting("enableEditing",e)}};E=e([a],E);
1
+ import{__decorate as e}from"tslib";import{InvalidOperationError as t}from"../InvalidOperationError.js";import{TaskSettings as r}from"../data/TaskSettings.js";import{supportsAttachmentEditing as i}from"../data/support/attachments.js";import{_isGraphicsLayerJson as s}from"../json/FeatureLayerJson.js";import{layerToJson as a}from"../json/LayerJson.js";import{serializable as o}from"../support/Serializable.js";import{notifyChange as n}from"../support/observableUtils.js";import{ReadOnlyCollection as l}from"../utilities/ReadOnlyCollection.js";import{isCSVLayer as p,isFeatureLayer as y,isGraphicsLayer as u,isStreamLayer as c}from"../utilities/_layers.js";import{checkArg as d}from"../utilities/checkArg.js";import{parse as h}from"../utilities/format/number.js";import{LayerExtension as m,LayerExtensionSchema as _,ERR_SCHEMA_READ_ONLY as g}from"./_LayerExtension.js";import{ArrayWrappedCollection as f}from"./support/ArrayWrappedCollection.js";import{PopupTemplateFeatureSettings as b}from"./support/PopupTemplateFeatureSettings.js";export class FeatureLayerExtensionBase extends m{get hasFeatures(){return!0}get layer(){return super.layer}get renderer(){return this.layer?.renderer}get canChangeDefinitionExpression(){return!0}get canChangeRenderer(){return!0}get canChangeLabels(){return!0}get _layerView(){return this.layer&&this.mapExtension?._allLayerViews.find((e=>e.layer===this.layer))}_getProjectWebmapJSON(){const e=super._getProjectWebmapJSON();if(!e||this.dynamicallyAddedLayer)return e;const{layerDefinition:t,showLabels:r}=a(this.layer),{definitionExpression:i,drawingInfo:s}=t??{};return i&&(e.layerDefinition={...e.layerDefinition,definitionExpression:i}),s&&(e.layerDefinition={...e.layerDefinition,drawingInfo:s}),void 0!==r&&(e.showLabels=r),e}async*_getFeatures(e,t){const r=this.layer.createQuery();r.objectIds=e.map((e=>h(e))),r.where=void 0,r.outFields=t.outFields,r.returnGeometry=t.returnGeometry,yield*(await import("../support/_query.js")).executeQuery(r,this,this.layer,t.cancelToken)}_applyLayerProperties(e,t){return d("properties",e).isNotMissing(),d("properties.layerType",e.layerType).satisfies((e=>!e||"ArcGISFeatureLayer"===e||"ArcGISStreamLayer"===e||"CSV"===e)),d("layer",t).isNotMissing().satisfies((e=>y(e)||c(e)||p(e)||u(e))),d("properties",e).satisfies((e=>!s(e))),super._applyLayerProperties(e,t)}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,layer:{...this._toPropertyDef(e.layer),default:{layerType:"ArcGISFeatureLayer"}}}}_createSchema(){return new C(this)}_isSupportedLayer(e){return y(e)}_createFeatureSettings(){return new S(this)}_createTaskSettings(){return new x(this)}_capabilities(){const e=i(this.layer);return this.layer?.capabilities?.operations?{...this.layer.capabilities.operations,supportsAttachmentEditing:e,supportsStandardizedQueries:this.layer.capabilities?.query?.supportsStandardizedQueriesOnly}:{...super._capabilities(),supportsAttachmentEditing:e}}}let S=class extends b{get _defaultOutFields(){const e=super._defaultOutFields;return this.featureSource?.schema?.subtypeField?e.push(this.featureSource.schema.findFieldByName(this.featureSource.schema.subtypeField).name):this.featureSource?.schema?.typeIdField&&e.push(this.featureSource.schema.findFieldByName(this.featureSource.schema.typeIdField).name),Array.from(new Set(e))}get zoomScale(){const e="point"===this._layerExtension.schema.geometryType?this._layerExtension.layer.maxScale:void 0;return this._getSetting("zoomScale",e)}set zoomScale(e){this._setSetting("zoomScale",e)}};S=e([o],S);let C=class extends _{_fieldCollection;_typesCollection;_subtypesCollection;constructor(e){super(e),this._fieldCollection=this._createFieldCollection(),this._typesCollection=this._createTypeCollection(),this._subtypesCollection=this._createSubtypeCollection(),n(this,"_fields")}get subtypes(){return this._subtypesCollection}get types(){return this._typesCollection}get _fields(){return this._fieldCollection}destroy(){this._fieldCollection.destroy(),this._typesCollection.destroy(),this._subtypesCollection.destroy(),super.destroy()}_createFieldCollection(){return new f({parent:this._layerExtension,targetProperty:"layer",arrayProperty:"fields"})}_createTypeCollection(){return new f({parent:this._layerExtension,targetProperty:"layer",arrayProperty:"types"})}_createSubtypeCollection(){return new f({parent:this._layerExtension,targetProperty:"layer",arrayProperty:"subtypes"})}_getPropertyBindings(){return{primaryKeyField:"objectIdField",geometryType:"geometryType",spatialReference:"spatialReference",displayField:"displayField",typeIdField:"typeIdField",subtypeField:"subtypeField",subtypes:"subtypes"}}};C=e([o],C);export{C as FeatureLayerSchema};let F=class extends C{_setSetting(e,r){if(this._layerBindings.has(e))throw new t(g);super._setSetting(e,r)}_createFieldCollection(){return new l(super._createFieldCollection(),{destroyBackingCollection:!0})}_createTypeCollection(){return new l(super._createTypeCollection(),{destroyBackingCollection:!0})}};F=e([o],F);export{F as FeatureLayerReadOnlySchema};let x=class extends r{_layerExtension;constructor(e,t){super(t),this._layerExtension=e}get enableEditing(){return this._getSetting("enableEditing",this._layerExtension.layer?.editingEnabled??!0)}set enableEditing(e){this._setSetting("enableEditing",e)}};x=e([o],x);
@@ -2,9 +2,11 @@ import type Collection from "@arcgis/core/core/Collection";
2
2
  import type SubtypeGroupLayer from "@arcgis/core/layers/SubtypeGroupLayer.js";
3
3
  import FeatureType from "@arcgis/core/layers/support/FeatureType.js";
4
4
  import type Field from "@arcgis/core/layers/support/Field.js";
5
+ import type Subtype from "@arcgis/core/layers/support/Subtype.js";
5
6
  import type PortalItem from "@arcgis/core/portal/PortalItem";
6
7
  import type { Attachment, AttachmentProperties } from "../data/Attachment.js";
7
8
  import type { Feature } from "../data/Feature.js";
9
+ import type { FeatureSettings } from "../data/FeatureSettings.js";
8
10
  import type { FeatureReadOptions, FeatureSource, FeatureWriteOptions } from "../data/FeatureSource";
9
11
  import type { QuerySourceCapabilities } from "../data/QuerySourceCapabilities";
10
12
  import type { Schema } from "../data/Schema";
@@ -80,6 +82,7 @@ export declare class SubtypeGroupLayerExtension extends LayerExtension<SubtypeGr
80
82
  */
81
83
  protected _isSupportedLayer(layer: SubtypeGroupLayer): boolean;
82
84
  protected _createSchema(): Schema;
85
+ protected _createFeatureSettings(): FeatureSettings;
83
86
  protected _getAttachments(feature: Feature): Promise<Attachment[]>;
84
87
  protected _addAttachment(feature: Feature, attachment: Attachment | AttachmentProperties | File): Promise<Attachment>;
85
88
  protected _deleteAttachments(feature: Feature, attachments: (Attachment | string)[]): Promise<void>;
@@ -96,7 +99,6 @@ export declare class SubtypeGroupLayerExtension extends LayerExtension<SubtypeGr
96
99
  protected _deleteFeatures(ids: string[], options?: FeatureWriteOptions): Promise<void>;
97
100
  private readonly _onSubtypeSublayersChange;
98
101
  private _updateClientSideFields;
99
- private _updateSubtypes;
100
102
  private _addTemplatesToSublayers;
101
103
  private _addDomainsToFields;
102
104
  }
@@ -106,19 +108,46 @@ export declare class SubtypeGroupLayerExtension extends LayerExtension<SubtypeGr
106
108
  */
107
109
  export declare class SubtypeGroupLayerSchema extends LayerExtensionReadOnlySchema {
108
110
  private readonly _fieldCollection;
109
- private readonly _typesCollection;
111
+ private readonly _subtypesCollection;
110
112
  constructor(layerExtension: LayerExtension);
111
113
  destroy(): void;
114
+ /**
115
+ * Get the type ID field.
116
+ *
117
+ * @deprecated Use subtypeField instead. This will be removed in a future
118
+ * Web release since SubtypeGroupLayer only supports subtypeField.
119
+ *
120
+ * {@link https://developers.arcgis.com/javascript/latest/references/core/layers/SubtypeGroupLayer/#subtypeField}.
121
+ */
122
+ get typeIdField(): string;
123
+ set typeIdField(value: string);
124
+ /**
125
+ * Get the collection of types.
126
+ *
127
+ * @deprecated Use subtypes instead. This will be removed in a future Web
128
+ * release since SubtypeGroupLayer only supports subtypes.
129
+ *
130
+ * {@link https://developers.arcgis.com/javascript/latest/references/core/layers/SubtypeGroupLayer/#subtypes}.
131
+ */
112
132
  get types(): Collection<FeatureType>;
133
+ /**
134
+ * Get the subtype field.
135
+ */
136
+ get subtypeField(): string;
137
+ set subtypeField(value: string);
138
+ /**
139
+ * Get the collection of subtypes.
140
+ */
141
+ get subtypes(): Collection<Subtype>;
113
142
  get _fields(): Collection<Field>;
114
143
  /**
115
144
  * Creates the backing collection for fields.
116
145
  */
117
146
  protected _createFieldCollection(): Collection<Field>;
118
147
  /**
119
- * Creates the backing collection for fields.
148
+ * Creates the backing collection for subtypes.
120
149
  */
121
- protected _createTypesCollection(): Collection<FeatureType>;
150
+ protected _createSubtypesCollection(): Collection<Subtype>;
122
151
  protected _getPropertyBindings(): Partial<Record<keyof this, LayerExtensionSchemaPropertyBinding>>;
123
152
  }
124
153
  /**
@@ -1 +1 @@
1
- import{__decorate as e}from"tslib";import t from"@arcgis/core/layers/support/FeatureTemplate.js";import r from"@arcgis/core/layers/support/FeatureType.js";import s from"@arcgis/core/rest/support/AttachmentQuery";import{toAttachment as i}from"../data/Attachment.js";import{addAttachment as a,deleteAttachments as l,supportsAttachmentEditing as n}from"../data/support/attachments.js";import{applyJsonToLayer as o,layerToJson as y}from"../json/LayerJson.js";import{serializable as p}from"../support/Serializable.js";import{ArcGISRelationshipCollection as u}from"../support/_ArcGISRelationshipCollection.js";import{applyEdits as d}from"../support/_featureEdit.js";import{notifyChange as c,watch as h}from"../support/observableUtils.js";import{ReadOnlyCollection as m}from"../utilities/ReadOnlyCollection.js";import{isFeatureLayer as b,isSubtypeGroupLayer as _}from"../utilities/_layers.js";import{getGdbVersion as f}from"../utilities/_version.js";import{parse as g}from"../utilities/format/number.js";import{caseInsensitiveEquals as S}from"../utilities/string.js";import{onCollectionPropertyChange as C}from"../utilities/watch.js";import{LayerExtension as F,LayerExtensionReadOnlySchema as w}from"./_LayerExtension.js";import{SublayerExtension as j}from"./_SublayerExtension.js";import{ArrayWrappedCollection as x}from"./support/ArrayWrappedCollection.js";import{addOutFields as E}from"./support/layers.js";let I=class extends F{attachmentTypes;get enableClientSideData(){return this._enableClientSideData}set enableClientSideData(e){this._enableClientSideData=e,this._updateClientSideFields()}get layer(){return super.layer}get sublayerExtensions(){return super.sublayerExtensions}get supportsSublayers(){return!0}get sublayersAreReadOnly(){return!1}get hasFeatures(){return!0}get canChangeDefinitionExpression(){return!0}get _layerView(){return this.layer&&this.mapExtension?._allLayerViews.find((e=>e.layer===this.layer))}_subtypes;_enableClientSideData;constructor(e){super(e),C(this,"layer.sublayers",this._onSubtypeSublayersChange)}_getProjectWebmapJSON(){const e=super._getProjectWebmapJSON();if(!e||this.dynamicallyAddedLayer)return e;const t=y(this.layer);return t.layers&&(e.layers=t.layers.map((e=>{const{layerDefinition:t,visibility:r,subtypeCode:s,layerType:i}=e,a={layerType:i,visibility:r,subtypeCode:s};return t?.drawingInfo&&(a.layerDefinition={drawingInfo:t.drawingInfo}),a}))),e}_createRelationships(){return new SubtypeGroupLayerRelationshipCollection(this)}async _onInitialize(){await super._onInitialize(),this._updateSubtypes(),this._addDomainsToFields(),await this.relationships.initialize()}async _postInitialize(){await super._postInitialize();this._handles.add(h(this,"layer",(()=>{this._addTemplatesToSublayers(),this._updateClientSideFields()}),{sync:!0,initial:!0}))}_capabilities(){const e=n(this.layer);return this.layer?.capabilities?.operations?{...this.layer.capabilities.operations,supportsAttachmentEditing:e,supportsStandardizedQueries:this.layer.capabilities?.query?.supportsStandardizedQueriesOnly}:{...super._capabilities(),supportsAttachmentEditing:e}}_createSublayerExtension(e){return j.factory.create(e,"SubtypeSublayer")}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,layer:{...this._toPropertyDef(e.layer),default:{layerType:"SubtypeGroupLayer"}},enableClientSideData:{serializeModes:["initial"],default:!1},attachmentTypes:["initial"]}}_isSupportedLayer(e){return _(e)}_createSchema(){return new T(this)}async _getAttachments(e){if(!this.layer?.capabilities?.data?.supportsAttachment)return[];const t=+e.primaryKey,r=this.layer?.gdbVersion??f(this.layer?.customParameters),a=new s({objectIds:[t]}),l=await this.layer.queryAttachments(a);return l?.[t]?.length?l[t].map((e=>i(e,{gdbVersion:r}))):[]}async _addAttachment(e,t){return a(e,this.layer,t,{attachmentTypes:this.attachmentTypes})}async _deleteAttachments(e,t){return l(e,this.layer,t)}async _applyPortalItemProperties(e){if("Feature Service"!==e.type)throw new Error(`Cannot create SubtypeGroupLayer from Portal item that has type: ${e.type}`);let{url:t}=e;t.match(".*MapServer/\\d{1,}/?$")||t.match(".*FeatureServer/\\d{1,}/?$")||(t=`${t}/0`),this.layer.url=t||this.layer.url;const r=await e.fetchData();r&&await o(r,this.layer)}async*_getFeatures(e,t){this.layer||(yield*super._getFeatures(e,t));const r=this.layer.createQuery();r.objectIds=e.map((e=>g(e))),r.where=void 0,r.outFields=t.outFields,r.returnGeometry=t.returnGeometry,yield*(await import("../support/_query.js")).executeQuery(r,this,this.layer,t.cancelToken)}async _addFeatures(e,t){await d({adds:e},this.layer,t)}async _updateFeatures(e,t){await d({updates:e},this.layer,t)}async _deleteFeatures(e,t){await d({deletes:e},this.layer,t)}_onSubtypeSublayersChange=e=>{e.removed?.length&&(this.sublayerExtensions.removeMany(this.sublayerExtensions.filter((e=>!e.sublayer))),this._updateSubtypes())};_updateClientSideFields(){this.layer&&this._enableClientSideData&&(E(this.layer,this.featureSettings.outFields),this.allSublayerExtensions.forEach((e=>E(this.layer,e.featureSettings.outFields))))}_updateSubtypes(){if(!this.layer.subtypes)return;const e=[];for(const t of this.layer.sublayers){const s=this.layer.subtypes.find((e=>e.code===t.subtypeCode));s&&e.push(new r({id:s.code,name:s.name,domains:s.domains??{},templates:t.templates}))}this._subtypes=e}_addTemplatesToSublayers(){const e=this.layer.sourceJSON?.templates?.map((e=>t.fromJSON(e)));for(let r=0;r<this.sublayerExtensions.length;r++){const s=this.sublayerExtensions.getItemAt(r);if(null==s.sublayer)continue;const i=this.layer.sourceJSON?.types.filter((e=>e.name===s.title))[0]?.templates;(null==s.sublayer.templates||0===s.sublayer.templates.length||A(s))&&i?s._defaultTemplates=i.map((e=>t.fromJSON(e))):1!==e.length||1===this.sublayerExtensions.length||s.sublayer.templates||(s._defaultTemplates=e.map((e=>{const r=t.fromJSON(e.toJSON());r.name=s.title;const i=r.prototype?.attributes;return"number"==typeof i?.[this.layer.subtypeField]&&(i[this.layer.subtypeField]=s.sublayer.subtypeCode),r}))),A(s)&&(s.sublayer.templates[0].name=s.sublayer.title)}}_addDomainsToFields(){if(this._subtypes)for(const e of this._subtypes)for(const[t,r]of Object.entries(e.domains)){const e=this.layer.fields.find((e=>S(e.name,t)));e&&!e.domain&&(e.domain=r)}}};I=e([p],I);export{I as SubtypeGroupLayerExtension};let T=class extends w{_fieldCollection;_typesCollection;constructor(e){super(e),this._fieldCollection=this._createFieldCollection(),this._typesCollection=this._createTypesCollection(),c(this,"_fields")}destroy(){this._fieldCollection.destroy(),this._typesCollection.destroy(),super.destroy()}get types(){return this._typesCollection}get _fields(){return this._fieldCollection}_createFieldCollection(){return new m(new x({parent:this._layerExtension,targetProperty:"layer",arrayProperty:"fields"}),{destroyBackingCollection:!0})}_createTypesCollection(){return new m(new x({parent:this._layerExtension,arrayProperty:"_subtypes"}),{destroyBackingCollection:!0})}_getPropertyBindings(){return{primaryKeyField:"objectIdField",geometryType:"geometryType",spatialReference:"spatialReference",displayField:"displayField",typeIdField:"subtypeField"}}};T=e([p],T);export{T as SubtypeGroupLayerSchema};export class SubtypeGroupLayerRelationshipCollection extends u{get _sourceUrl(){const e=this._source.layer;if(e)return`${e.url}/${e.layerId}`}get _sourceLayerId(){const e=this._source.layer;return e?.layerId}_findRelatedSource(e){if(!this._source.mapExtension||!this._source.layer||!this._sourceUrl)return;const t=this._sourceUrl.slice(0,this._sourceUrl.length-`${this._sourceLayerId}`.length-1),r=this._source.mapExtension.allLayerExtensions.initializedItems.find((r=>(b(r.layer)||_(r.layer))&&r.layer.url===t&&r.layer.layerId===e));return r||this._source.mapExtension.tableExtensions.initializedItems.find((r=>b(r.table)&&r.table.url===t&&r.table.layerId===e))}}function A(e){return 1===e.sublayer?.templates?.length&&"New Feature"===e.sublayer.templates[0].name}
1
+ import{__decorate as e}from"tslib";import t from"@arcgis/core/layers/support/FeatureTemplate.js";import r from"@arcgis/core/layers/support/FeatureType.js";import s from"@arcgis/core/rest/support/AttachmentQuery";import{InvalidOperationError as i}from"../InvalidOperationError.js";import{toAttachment as a}from"../data/Attachment.js";import{addAttachment as l,deleteAttachments as n,supportsAttachmentEditing as o}from"../data/support/attachments.js";import{applyJsonToLayer as u,layerToJson as y}from"../json/LayerJson.js";import{serializable as p}from"../support/Serializable.js";import{ArcGISRelationshipCollection as d}from"../support/_ArcGISRelationshipCollection.js";import{applyEdits as c}from"../support/_featureEdit.js";import{notifyChange as m,watch as h}from"../support/observableUtils.js";import{ReadOnlyCollection as b}from"../utilities/ReadOnlyCollection.js";import{isFeatureLayer as f,isSubtypeGroupLayer as _}from"../utilities/_layers.js";import{getGdbVersion as g}from"../utilities/_version.js";import{parse as S}from"../utilities/format/number.js";import{getLogger as F}from"../utilities/log.js";import{caseInsensitiveEquals as w}from"../utilities/string.js";import{onCollectionPropertyChange as C}from"../utilities/watch.js";import{LayerExtension as x,LayerExtensionReadOnlySchema as E}from"./_LayerExtension.js";import{SublayerExtension as j}from"./_SublayerExtension.js";import{ArrayWrappedCollection as I}from"./support/ArrayWrappedCollection.js";import{PopupTemplateFeatureSettings as T}from"./support/PopupTemplateFeatureSettings.js";import{addOutFields as A}from"./support/layers.js";const L=F("SubtypeGroupLayerExtension");let O=class extends x{attachmentTypes;get enableClientSideData(){return this._enableClientSideData}set enableClientSideData(e){this._enableClientSideData=e,this._updateClientSideFields()}get layer(){return super.layer}get sublayerExtensions(){return super.sublayerExtensions}get supportsSublayers(){return!0}get sublayersAreReadOnly(){return!1}get hasFeatures(){return!0}get canChangeDefinitionExpression(){return!0}get _layerView(){return this.layer&&this.mapExtension?._allLayerViews.find((e=>e.layer===this.layer))}_enableClientSideData;constructor(e){super(e),C(this,"layer.sublayers",this._onSubtypeSublayersChange)}_getProjectWebmapJSON(){const e=super._getProjectWebmapJSON();if(!e||this.dynamicallyAddedLayer)return e;const t=y(this.layer);return t.layers&&(e.layers=t.layers.map((e=>{const{layerDefinition:t,visibility:r,subtypeCode:s,layerType:i}=e,a={layerType:i,visibility:r,subtypeCode:s};return t?.drawingInfo&&(a.layerDefinition={drawingInfo:t.drawingInfo}),a}))),e}_createRelationships(){return new SubtypeGroupLayerRelationshipCollection(this)}async _onInitialize(){await super._onInitialize(),this._addDomainsToFields(),await this.relationships.initialize()}async _postInitialize(){await super._postInitialize();this._handles.add(h(this,"layer",(()=>{this._addTemplatesToSublayers(),this._updateClientSideFields()}),{sync:!0,initial:!0}))}_capabilities(){const e=o(this.layer);return this.layer?.capabilities?.operations?{...this.layer.capabilities.operations,supportsAttachmentEditing:e,supportsStandardizedQueries:this.layer.capabilities?.query?.supportsStandardizedQueriesOnly}:{...super._capabilities(),supportsAttachmentEditing:e}}_createSublayerExtension(e){return j.factory.create(e,"SubtypeSublayer")}_getSerializableProperties(){const e=super._getSerializableProperties();return{...e,layer:{...this._toPropertyDef(e.layer),default:{layerType:"SubtypeGroupLayer"}},enableClientSideData:{serializeModes:["initial"],default:!1},attachmentTypes:["initial"]}}_isSupportedLayer(e){return _(e)}_createSchema(){return new v(this)}_createFeatureSettings(){return new P(this)}async _getAttachments(e){if(!this.layer?.capabilities?.data?.supportsAttachment)return[];const t=+e.primaryKey,r=this.layer?.gdbVersion??g(this.layer?.customParameters),i=new s({objectIds:[t]}),l=await this.layer.queryAttachments(i);return l?.[t]?.length?l[t].map((e=>a(e,{gdbVersion:r}))):[]}async _addAttachment(e,t){return l(e,this.layer,t,{attachmentTypes:this.attachmentTypes})}async _deleteAttachments(e,t){return n(e,this.layer,t)}async _applyPortalItemProperties(e){if("Feature Service"!==e.type)throw new Error(`Cannot create SubtypeGroupLayer from Portal item that has type: ${e.type}`);let{url:t}=e;t.match(".*MapServer/\\d{1,}/?$")||t.match(".*FeatureServer/\\d{1,}/?$")||(t=`${t}/0`),this.layer.url=t||this.layer.url;const r=await e.fetchData();r&&await u(r,this.layer)}async*_getFeatures(e,t){this.layer||(yield*super._getFeatures(e,t));const r=this.layer.createQuery();r.objectIds=e.map((e=>S(e))),r.where=void 0,r.outFields=t.outFields,r.returnGeometry=t.returnGeometry,yield*(await import("../support/_query.js")).executeQuery(r,this,this.layer,t.cancelToken)}async _addFeatures(e,t){await c({adds:e},this.layer,t)}async _updateFeatures(e,t){await c({updates:e},this.layer,t)}async _deleteFeatures(e,t){await c({deletes:e},this.layer,t)}_onSubtypeSublayersChange=e=>{e.removed?.length&&this.sublayerExtensions.removeMany(this.sublayerExtensions.filter((e=>!e.sublayer)))};_updateClientSideFields(){this.layer&&this._enableClientSideData&&(A(this.layer,this.featureSettings.outFields),this.allSublayerExtensions.forEach((e=>A(this.layer,e.featureSettings.outFields))))}_addTemplatesToSublayers(){const e=this.layer.sourceJSON?.templates?.map((e=>t.fromJSON(e)));for(let r=0;r<this.sublayerExtensions.length;r++){const s=this.sublayerExtensions.getItemAt(r);if(null==s.sublayer)continue;const i=this.layer.sourceJSON?.types.filter((e=>e.name===s.title))[0]?.templates;(null==s.sublayer.templates||0===s.sublayer.templates.length||z(s))&&i?s._defaultTemplates=i.map((e=>t.fromJSON(e))):1!==e.length||1===this.sublayerExtensions.length||s.sublayer.templates||(s._defaultTemplates=e.map((e=>{const r=t.fromJSON(e.toJSON());r.name=s.title;const i=r.prototype?.attributes;return"number"==typeof i?.[this.layer.subtypeField]&&(i[this.layer.subtypeField]=s.sublayer.subtypeCode),r}))),z(s)&&(s.sublayer.templates[0].name=s.sublayer.title)}}_addDomainsToFields(){if(this.layer.subtypes)for(const e of this.layer.subtypes)for(const[t,r]of Object.entries(e.domains??{})){const e=this.layer.fields.find((e=>w(e.name,t)));e&&!e.domain&&(e.domain=r)}}};O=e([p],O);export{O as SubtypeGroupLayerExtension};let P=class extends T{get _defaultOutFields(){const e=super._defaultOutFields;return this.featureSource?.schema?.subtypeField&&e.push(this.featureSource.schema.findFieldByName(this.featureSource.schema.subtypeField).name),Array.from(new Set(e))}};P=e([p],P);const D="This schema property is read-only.";let v=class extends E{_fieldCollection;_subtypesCollection;constructor(e){super(e),this._fieldCollection=this._createFieldCollection(),this._subtypesCollection=this._createSubtypesCollection(),m(this,"_fields")}destroy(){this._fieldCollection.destroy(),this._subtypesCollection.destroy(),super.destroy()}get typeIdField(){return L.warn("typeIdField is deprecated in SubtypeGroupLayerExtensions and will return undefined in a future version. Use subtypeField instead."),super.typeIdField}set typeIdField(e){throw new i(D)}get types(){return L.warn("types is deprecated in SubtypeGroupLayerExtensions and will return undefined in a future version. Use subtypes instead."),this._subtypesCollection.map((e=>new r({id:e.code,name:e.name,domains:e.domains??{}})))}get subtypeField(){return this._layerExtension.layer?.subtypeField}set subtypeField(e){throw new i(D)}get subtypes(){return this._subtypesCollection}get _fields(){return this._fieldCollection}_createFieldCollection(){return new b(new I({parent:this._layerExtension,targetProperty:"layer",arrayProperty:"fields"}),{destroyBackingCollection:!0})}_createSubtypesCollection(){return new b(new I({parent:this._layerExtension,targetProperty:"layer",arrayProperty:"subtypes"}),{destroyBackingCollection:!0})}_getPropertyBindings(){return{primaryKeyField:"objectIdField",geometryType:"geometryType",spatialReference:"spatialReference",displayField:"displayField",typeIdField:"subtypeField",subtypeField:"subtypeField",subtypes:"subtypes"}}};v=e([p],v);export{v as SubtypeGroupLayerSchema};export class SubtypeGroupLayerRelationshipCollection extends d{get _sourceUrl(){const e=this._source.layer;if(e)return`${e.url}/${e.layerId}`}get _sourceLayerId(){const e=this._source.layer;return e?.layerId}_findRelatedSource(e){if(!this._source.mapExtension||!this._source.layer||!this._sourceUrl)return;const t=this._sourceUrl.slice(0,this._sourceUrl.length-`${this._sourceLayerId}`.length-1),r=this._source.mapExtension.allLayerExtensions.initializedItems.find((r=>(f(r.layer)||_(r.layer))&&r.layer.url===t&&r.layer.layerId===e));return r||this._source.mapExtension.tableExtensions.initializedItems.find((r=>f(r.table)&&r.table.url===t&&r.table.layerId===e))}}function z(e){return 1===e.sublayer?.templates?.length&&"New Feature"===e.sublayer.templates[0].name}
@@ -1,7 +1,8 @@
1
- import Collection from "@arcgis/core/core/Collection";
1
+ import type Collection from "@arcgis/core/core/Collection";
2
2
  import type FeatureTemplate from "@arcgis/core/layers/support/FeatureTemplate.js";
3
- import type FeatureType from "@arcgis/core/layers/support/FeatureType.js";
3
+ import FeatureType from "@arcgis/core/layers/support/FeatureType.js";
4
4
  import type Field from "@arcgis/core/layers/support/Field";
5
+ import type Subtype from "@arcgis/core/layers/support/Subtype.js";
5
6
  import type SubtypeSublayer from "@arcgis/core/layers/support/SubtypeSublayer.js";
6
7
  import type { RendererUnion } from "@arcgis/core/renderers/types.js";
7
8
  import type { Attachment, AttachmentProperties } from "../data/Attachment.js";
@@ -127,17 +128,35 @@ export declare class SubtypeSublayerSchema extends SublayerSchema {
127
128
  */
128
129
  protected readonly _sublayerExtension: SubtypeSublayerExtension;
129
130
  private readonly _fieldCollection;
130
- private readonly _readonlyTypesCollection;
131
- private readonly _typesCollection;
131
+ private readonly _subtypesCollection;
132
+ private readonly _readonlySubtypesCollection;
132
133
  get primaryKeyField(): string;
133
134
  set primaryKeyField(value: string);
134
135
  get geometryType(): GeometryType;
135
136
  set geometryType(value: GeometryType);
136
137
  get displayField(): string;
137
138
  set displayField(value: string);
139
+ /**
140
+ * Get the type ID field.
141
+ *
142
+ * @deprecated Use subtypeField instead. This will be removed in a future
143
+ * Web release since SubtypeSublayer only supports subtypes.
144
+ *
145
+ * {@link https://developers.arcgis.com/javascript/latest/references/core/layers/support/SubtypeSublayer/#subtypeField}.
146
+ */
138
147
  get typeIdField(): string;
139
148
  set typeIdField(value: string);
149
+ /**
150
+ * Get the collection of types.
151
+ *
152
+ * @deprecated Use subtypes instead. This will be removed in a future Web
153
+ * release since SubtypeSublayer only supports subtypes..
154
+ */
140
155
  get types(): Collection<FeatureType>;
156
+ get subtypeField(): string;
157
+ set subtypeField(value: string);
158
+ get subtype(): Subtype | undefined;
159
+ get subtypes(): Collection<Subtype>;
141
160
  constructor(layerExtension: SubtypeSublayerExtension);
142
161
  destroy(): void;
143
162
  get _fields(): Collection<Field>;
@@ -145,6 +164,10 @@ export declare class SubtypeSublayerSchema extends SublayerSchema {
145
164
  * Creates the backing collection for fields.
146
165
  */
147
166
  protected _createFieldCollection(): Collection<Field>;
167
+ /**
168
+ * Creates the backing collection for subtypes.
169
+ */
170
+ protected _createSubtypeCollection(): Collection<Subtype>;
148
171
  protected _getPropertyBindings(): Partial<Record<keyof this, LayerExtensionSchemaPropertyBinding>>;
149
172
  }
150
173
  /**
@@ -1 +1 @@
1
- var e;import{__decorate as t}from"tslib";import r from"@arcgis/core/core/Collection";import s from"@arcgis/core/rest/support/AttachmentQuery";import{InvalidOperationError as i}from"../InvalidOperationError.js";import{toAttachment as a}from"../data/Attachment.js";import{addAttachment as n,deleteAttachments as l}from"../data/support/attachments.js";import{applyJsonToSublayer as o,jsonToSublayer as y,sublayerToJson as u}from"../json/SublayerJson.js";import{serializable as p}from"../support/Serializable.js";import{ArcGISRelationshipCollection as c}from"../support/_ArcGISRelationshipCollection.js";import{applyEdits as d}from"../support/_featureEdit.js";import{notifyChange as h,onWatch as m,watch as b}from"../support/observableUtils.js";import{ReadOnlyCollection as _}from"../utilities/ReadOnlyCollection.js";import{getGdbVersion as g}from"../utilities/_version.js";import{parse as f}from"../utilities/format/number.js";import{isFeatureLayer as x,isSubtypeGroupLayer as E,isSubtypeSublayer as S}from"../utilities/layers.js";import{caseInsensitiveEquals as F}from"../utilities/string.js";import{SublayerExtension as w,SublayerSchema as C}from"./_SublayerExtension.js";import{ArrayWrappedCollection as j}from"./support/ArrayWrappedCollection.js";import{ExtensionBaseLayerListSettings as T}from"./support/LayerListSettings.js";import{PopupTemplateFeatureSettings as I}from"./support/PopupTemplateFeatureSettings.js";let z=class extends w{_defaultTemplates;get supportsSublayers(){return!1}get layerExtension(){return super.layerExtension}get renderer(){return this.sublayer?.renderer}get hasFeatures(){return!0}get sublayer(){return super.sublayer}get sublayerExtensions(){return super.sublayerExtensions}get attachmentTypes(){return this.layerExtension?.attachmentTypes}get canChangeLabels(){return!0}get canChangeRenderer(){return!0}get canChangeOpacity(){return!1}get defaultTemplates(){return this._defaultTemplates}async _addAttachment(e,t){return n(e,this.sublayer.layer,t,{attachmentTypes:this.layerExtension?.attachmentTypes})}async _deleteAttachments(e,t){return l(e,this.sublayer.layer,t)}_isSupportedSublayer(e){return S(e)}_createLayerListSettings(e){return new P(e,this)}_createFeatureSettings(){return new R(this)}_createSublayer(e){return y(e,"SubtypeGroupLayer")}_createSchema(){return new A(this)}_createRelationships(){return new SubtypeSublayerRelationshipCollection(this)}async _applySublayerProperties(e,t){return o(e,t)}_capabilities(){return this.layerExtension?.capabilities}async _onInitialize(){const e=(await import("@arcgis/core/layers/support/SubtypeSublayer.js")).default;"layer"in e.prototype||Object.defineProperty(e.prototype,"layer",{get:function(){return this.parent},set:function(e){this.parent=e}}),await super._onInitialize(),await this.relationships.initialize(),this._handles.add(m(this,"attachmentTypes",(()=>b(this,"layerExtension.attachmentTypes",(()=>h(this,"attachmentTypes")),{sync:!0})))),this._addDomainsToFields()}async _postInitialize(){await super._postInitialize(),this.layerListSettings.onLayerExtensionInitialized()}_getFeatures(e,t){if(!this.sublayer?.layer)return super._getFeatures(e,t);const r=this.sublayer?.layer.createQuery();r.objectIds=e.map((e=>f(e))),r.where=void 0,r.outFields=t.outFields,r.returnGeometry=t.returnGeometry;const s=this;return{async*[Symbol.asyncIterator](){yield*(await import("../support/_query.js")).executeQuery(r,s,s.sublayer.layer,t.cancelToken)}}}async _getAttachments(e){if(!this.sublayer?.layer?.capabilities?.data?.supportsAttachment)return[];const t=+e.primaryKey,r=this.sublayer?.layer?.gdbVersion??g(this.sublayer?.layer?.customParameters),i=new s({objectIds:[t]}),n=await this.sublayer.layer.queryAttachments(i);return n?.[t]?.length?n[t].map((e=>a(e,{gdbVersion:r}))):[]}async _addFeatures(e,t){await d({adds:e},this.sublayer.layer,t)}async _updateFeatures(e,t){await d({updates:e},this.sublayer.layer,t)}async _deleteFeatures(e,t){await d({deletes:e},this.sublayer.layer,t)}_serializeSublayer(e){return u(e)}_addDomainsToFields(){const e=this.sublayer.parent.subtypes.find((e=>e.code===this.sublayer.subtypeCode));if(e?.domains)for(const[t,r]of Object.entries(e.domains)){const e=this.sublayer.fields.find((e=>F(e.name,t)));e&&!e.domain&&(e.domain=r)}}};z=t([p],z);export{z as SubtypeSublayerExtension};const L="This schema property is read-only.";let A=class extends C{static{e=this}static _subtypesWatchHandlesKey="subtype-sublayer-schema-subtypes-watch-handles";_fieldCollection;_readonlyTypesCollection;_typesCollection;get primaryKeyField(){return this._sublayerExtension.sublayer?.layer?.objectIdField}set primaryKeyField(e){throw new i(L)}get geometryType(){return this._sublayerExtension.sublayer?.layer?.geometryType}set geometryType(e){throw new i(L)}get displayField(){return this._sublayerExtension.sublayer?.layer?.displayField}set displayField(e){throw new i(L)}get typeIdField(){return this._sublayerExtension.sublayer?.layer?.subtypeField}set typeIdField(e){throw new i(L)}get types(){return this._readonlyTypesCollection}constructor(t){super(t),this._fieldCollection=this._createFieldCollection(),this._typesCollection=new r,this._readonlyTypesCollection=new _(this._typesCollection);const s=()=>this._sublayerExtension.sublayer?.subtypeCode,i=()=>{const e=this._sublayerExtension.layerExtension?._subtypes?.find((e=>e.id===s()));return!!e&&(this._typesCollection.add(e),!0)};this._sublayerExtension.layerExtension?._subtypes?.some((e=>e.id===s()))?i():this._handles.add(b(this._sublayerExtension,"layerExtension._subtypes",(()=>{i()&&this._handles.remove(e._subtypesWatchHandlesKey)}),{sync:!0}),e._subtypesWatchHandlesKey),h(this,"_fields")}destroy(){this._fieldCollection.destroy(),this._readonlyTypesCollection.destroy(),super.destroy()}get _fields(){return this._fieldCollection}_createFieldCollection(){return new _(new j({parent:this._sublayerExtension,targetProperty:"sublayer",arrayProperty:"fields"}),{destroyBackingCollection:!0})}_getPropertyBindings(){return{primaryKeyField:"parent.objectIdField",geometryType:"parent.geometryType",spatialReference:"parent.spatialReference",displayField:"parent.displayField",typeIdField:"parent.typeIdField"}}};A=e=t([p],A);export{A as SubtypeSublayerSchema};let R=class extends I{get zoomScale(){const e="point"===this._layerExtension.schema.geometryType?this._layerExtension.sublayer.maxScale:void 0;return this._getSetting("zoomScale",e)}set zoomScale(e){this._setSetting("zoomScale",e)}};R=t([p],R);let P=class extends T{get _layerSupportsHideChildren(){return!1}get _esriLayer(){return this._extension.sublayer}get _listModePath(){return"sublayer.listMode"}get _supportsChildren(){return!1}};P=t([p],P);export class SubtypeSublayerRelationshipCollection extends c{get _sourceUrl(){const e=this._source.sublayer?.layer;if(e)return`${e.url}/${e.layerId}`}get _sourceLayerId(){const e=this._source.sublayer?.layer;return e?.layerId}_findRelatedSource(e){if(!this._source.layerExtension?.mapExtension||!this._source.sublayer||!this._sourceUrl)return;const t=this._sourceUrl.slice(0,this._sourceUrl.length-`${this._sourceLayerId}`.length-1),r=this._source.layerExtension.mapExtension.allLayerExtensions.initializedItems.find((r=>(x(r.layer)||E(r.layer))&&r.layer.url===t&&r.layer.layerId===e));return r||this._source.layerExtension.mapExtension.tableExtensions.initializedItems.find((r=>x(r.table)&&r.table.url===t&&r.table.layerId===e))}}
1
+ import{__decorate as e}from"tslib";import t from"@arcgis/core/layers/support/FeatureType.js";import r from"@arcgis/core/rest/support/AttachmentQuery";import{InvalidOperationError as s}from"../InvalidOperationError.js";import{toAttachment as i}from"../data/Attachment.js";import{addAttachment as a,deleteAttachments as n}from"../data/support/attachments.js";import{applyJsonToSublayer as l,jsonToSublayer as o,sublayerToJson as u}from"../json/SublayerJson.js";import{serializable as y}from"../support/Serializable.js";import{ArcGISRelationshipCollection as p}from"../support/_ArcGISRelationshipCollection.js";import{applyEdits as d}from"../support/_featureEdit.js";import{notifyChange as c,onWatch as h,watch as b}from"../support/observableUtils.js";import{ReadOnlyCollection as m}from"../utilities/ReadOnlyCollection.js";import{getGdbVersion as _}from"../utilities/_version.js";import{parse as f}from"../utilities/format/number.js";import{isFeatureLayer as g,isSubtypeGroupLayer as S,isSubtypeSublayer as x}from"../utilities/layers.js";import{getLogger as F}from"../utilities/log.js";import{caseInsensitiveEquals as w}from"../utilities/string.js";import{SublayerExtension as E,SublayerSchema as C}from"./_SublayerExtension.js";import{ArrayWrappedCollection as j}from"./support/ArrayWrappedCollection.js";import{ExtensionBaseLayerListSettings as I}from"./support/LayerListSettings.js";import{PopupTemplateFeatureSettings as T}from"./support/PopupTemplateFeatureSettings.js";const z=F("SubtypeSublayerExtension");let L=class extends E{_defaultTemplates;get supportsSublayers(){return!1}get layerExtension(){return super.layerExtension}get renderer(){return this.sublayer?.renderer}get hasFeatures(){return!0}get sublayer(){return super.sublayer}get sublayerExtensions(){return super.sublayerExtensions}get attachmentTypes(){return this.layerExtension?.attachmentTypes}get canChangeLabels(){return!0}get canChangeRenderer(){return!0}get canChangeOpacity(){return!1}get defaultTemplates(){return this._defaultTemplates}async _addAttachment(e,t){return a(e,this.sublayer.layer,t,{attachmentTypes:this.layerExtension?.attachmentTypes})}async _deleteAttachments(e,t){return n(e,this.sublayer.layer,t)}_isSupportedSublayer(e){return x(e)}_createLayerListSettings(e){return new v(e,this)}_createFeatureSettings(){return new R(this)}_createSublayer(e){return o(e,"SubtypeGroupLayer")}_createSchema(){return new P(this)}_createRelationships(){return new SubtypeSublayerRelationshipCollection(this)}async _applySublayerProperties(e,t){return l(e,t)}_capabilities(){return this.layerExtension?.capabilities}async _onInitialize(){const e=(await import("@arcgis/core/layers/support/SubtypeSublayer.js")).default;"layer"in e.prototype||Object.defineProperty(e.prototype,"layer",{get:function(){return this.parent},set:function(e){this.parent=e}}),await super._onInitialize(),await this.relationships.initialize(),this._handles.add(h(this,"attachmentTypes",(()=>b(this,"layerExtension.attachmentTypes",(()=>c(this,"attachmentTypes")),{sync:!0})))),this._addDomainsToFields()}async _postInitialize(){await super._postInitialize(),this.layerListSettings.onLayerExtensionInitialized()}_getFeatures(e,t){if(!this.sublayer?.layer)return super._getFeatures(e,t);const r=this.sublayer?.layer.createQuery();r.objectIds=e.map((e=>f(e))),r.where=void 0,r.outFields=t.outFields,r.returnGeometry=t.returnGeometry;const s=this;return{async*[Symbol.asyncIterator](){yield*(await import("../support/_query.js")).executeQuery(r,s,s.sublayer.layer,t.cancelToken)}}}async _getAttachments(e){if(!this.sublayer?.layer?.capabilities?.data?.supportsAttachment)return[];const t=+e.primaryKey,s=this.sublayer?.layer?.gdbVersion??_(this.sublayer?.layer?.customParameters),a=new r({objectIds:[t]}),n=await this.sublayer.layer.queryAttachments(a);return n?.[t]?.length?n[t].map((e=>i(e,{gdbVersion:s}))):[]}async _addFeatures(e,t){await d({adds:e},this.sublayer.layer,t)}async _updateFeatures(e,t){await d({updates:e},this.sublayer.layer,t)}async _deleteFeatures(e,t){await d({deletes:e},this.sublayer.layer,t)}_serializeSublayer(e){return u(e)}_addDomainsToFields(){const e=this.sublayer.parent.subtypes.find((e=>e.code===this.sublayer.subtypeCode));if(e?.domains)for(const[t,r]of Object.entries(e.domains)){const e=this.sublayer.fields.find((e=>w(e.name,t)));e&&!e.domain&&(e.domain=r)}}};L=e([y],L);export{L as SubtypeSublayerExtension};const A="This schema property is read-only.";let P=class extends C{static _subtypesWatchHandlesKey="subtype-sublayer-schema-subtypes-watch-handles";_fieldCollection;_subtypesCollection;_readonlySubtypesCollection;get primaryKeyField(){return this._sublayerExtension.sublayer?.layer?.objectIdField}set primaryKeyField(e){throw new s(A)}get geometryType(){return this._sublayerExtension.sublayer?.layer?.geometryType}set geometryType(e){throw new s(A)}get displayField(){return this._sublayerExtension.sublayer?.layer?.displayField}set displayField(e){throw new s(A)}get typeIdField(){return z.warn("typeIdField is deprecated in SubtypeSublayerExtensions and will return undefined in a future version. Use subtypeField instead."),this._sublayerExtension.sublayer?.layer?.subtypeField}set typeIdField(e){throw new s(A)}get types(){return z.warn("types is deprecated in SubtypeSublayerExtensions and will return undefined in a future version. Use subtypes instead."),this._readonlySubtypesCollection.map((e=>new t({id:e.code,name:e.name,domains:e.domains??{}})))}get subtypeField(){return this._sublayerExtension.sublayer?.layer?.subtypeField}set subtypeField(e){throw new s(A)}get subtype(){return this.subtypes.find((e=>e.code===this._sublayerExtension.sublayer.subtypeCode))}get subtypes(){return this._readonlySubtypesCollection}constructor(e){super(e),this._fieldCollection=this._createFieldCollection(),this._subtypesCollection=this._createSubtypeCollection(),this._readonlySubtypesCollection=new m(this._subtypesCollection),c(this,"_fields")}destroy(){this._fieldCollection.destroy(),this._readonlySubtypesCollection.destroy(),super.destroy()}get _fields(){return this._fieldCollection}_createFieldCollection(){return new m(new j({parent:this._sublayerExtension,targetProperty:"sublayer",arrayProperty:"fields"}),{destroyBackingCollection:!0})}_createSubtypeCollection(){return new j({parent:this._sublayerExtension,targetProperty:"sublayer.layer",arrayProperty:"subtypes"})}_getPropertyBindings(){return{primaryKeyField:"parent.objectIdField",geometryType:"parent.geometryType",spatialReference:"parent.spatialReference",displayField:"parent.displayField",typeIdField:"parent.typeIdField",subtypeField:"parent.subtypeField",subtypes:"subtypes"}}};P=e([y],P);export{P as SubtypeSublayerSchema};let R=class extends T{get _defaultOutFields(){const e=super._defaultOutFields;return this.featureSource?.schema?.subtypeField&&e.push(this.featureSource.schema.findFieldByName(this.featureSource.schema.subtypeField).name),Array.from(new Set(e))}get zoomScale(){const e="point"===this._layerExtension.schema.geometryType?this._layerExtension.sublayer.maxScale:void 0;return this._getSetting("zoomScale",e)}set zoomScale(e){this._setSetting("zoomScale",e)}};R=e([y],R);let v=class extends I{get _layerSupportsHideChildren(){return!1}get _esriLayer(){return this._extension.sublayer}get _listModePath(){return"sublayer.listMode"}get _supportsChildren(){return!1}};v=e([y],v);export class SubtypeSublayerRelationshipCollection extends p{get _sourceUrl(){const e=this._source.sublayer?.layer;if(e)return`${e.url}/${e.layerId}`}get _sourceLayerId(){const e=this._source.sublayer?.layer;return e?.layerId}_findRelatedSource(e){if(!this._source.layerExtension?.mapExtension||!this._source.sublayer||!this._sourceUrl)return;const t=this._sourceUrl.slice(0,this._sourceUrl.length-`${this._sourceLayerId}`.length-1),r=this._source.layerExtension.mapExtension.allLayerExtensions.initializedItems.find((r=>(g(r.layer)||S(r.layer))&&r.layer.url===t&&r.layer.layerId===e));return r||this._source.layerExtension.mapExtension.tableExtensions.initializedItems.find((r=>g(r.table)&&r.table.url===t&&r.table.layerId===e))}}
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": "53.18.2",
4
+ "version": "54.0.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://dev.azure.com/vertigis/Studio/_git/arcgis-extensions-ts"
@@ -1 +1 @@
1
- import{isCodedValueDomain as t}from"../../utilities/esri.js";import{NumberFormat as e,DateFormat as r,TimeFormat as i}from"../../utilities/format/formats.js";import{format as s}from"../../utilities/format/number.js";import{caseInsensitiveEquals as a}from"../../utilities/string.js";const o="\t";export function getSearchableValue(n,m){const u=Array.from(n.attributes.keys()).find((t=>a(t,m.name))),f=n.attributes.get(u);if(null==f)return"";if(t(n.type?.domains?.[u])||t(m.domain))return n.presentableAttributes.get(u);switch(m.type){case"integer":case"small-integer":case"big-integer":case"double":case"single":case"oid":return[n.presentableAttributes.get(u),n.format(`{${u}:#.####################}`),n.format(`{${u}:#,#.####################}`),s(e.ROUND_TRIP,f)].join(o);case"date":case"timestamp-offset":return[n.presentableAttributes.get(u),n.format(`{${u}:${r.FULL}}`),n.format(`{${u}:${r.DATE_SHORT}}`)].join(o);case"date-only":return[n.presentableAttributes.get(u),n.format(`{${u}:${r.DATE_LONG}}`),n.format(`{${u}:${r.DATE_SHORT}}`)].join(o);case"time-only":return[n.presentableAttributes.get(u),n.format(`${u}:${i.TIME_SHORT}`),n.format(`${u}:${i.TIME_LONG}`)].join(o);default:return n.presentableAttributes.get(u)}}
1
+ import{isCodedValueDomain as t}from"../../utilities/esri.js";import{NumberFormat as e,DateFormat as r,TimeFormat as s}from"../../utilities/format/formats.js";import{format as i}from"../../utilities/format/number.js";import{caseInsensitiveEquals as a}from"../../utilities/string.js";const n="\t";export function getSearchableValue(o,m){const u=Array.from(o.attributes.keys()).find((t=>a(t,m.name))),f=o.attributes.get(u);if(null==f)return"";if(o.schema.subtypeField){if(t(o.subtype?.domains?.[u])||t(m.domain))return o.presentableAttributes.get(u)}else if(t(o.type?.domains?.[u]))return o.presentableAttributes.get(u);switch(m.type){case"integer":case"small-integer":case"big-integer":case"double":case"single":case"oid":return[o.presentableAttributes.get(u),o.format(`{${u}:#.####################}`),o.format(`{${u}:#,#.####################}`),i(e.ROUND_TRIP,f)].join(n);case"date":case"timestamp-offset":return[o.presentableAttributes.get(u),o.format(`{${u}:${r.FULL}}`),o.format(`{${u}:${r.DATE_SHORT}}`)].join(n);case"date-only":return[o.presentableAttributes.get(u),o.format(`{${u}:${r.DATE_LONG}}`),o.format(`{${u}:${r.DATE_SHORT}}`)].join(n);case"time-only":return[o.presentableAttributes.get(u),o.format(`${u}:${s.TIME_SHORT}`),o.format(`${u}:${s.TIME_LONG}`)].join(n);default:return o.presentableAttributes.get(u)}}
@@ -1 +1 @@
1
- import*as e from"@arcgis/core/geometry/operators/differenceOperator";import{isCodedValueDomain as t}from"../../../utilities/esri.js";import{NumberFormat as n}from"../../../utilities/format/formats.js";import{NumberFormatter as o,format as r}from"../../../utilities/format/number.js";import{getBounds as i,getScreenExtent as s}from"../../../utilities/geometry.js";import{average as c,standardDeviation as a}from"../../../utilities/math.js";import{expandExtentToScale as l,getNextScale as u,getScaleRange as m}from"../../../utilities/scaleRanges.js";import{caseInsensitiveEquals as p}from"../../../utilities/string.js";export const separatorRegex=/(\s|(?<=\w)-|-(?![\d,.]))+/;export async function initializeElasticlunrIndex(e){const t=(await import("elasticlunr")).default;t.tokenizer.setSeperator(e),t.Pipeline.getRegisteredFunction("gcx.trimmer")||t.Pipeline.registerFunction(f,"gcx.trimmer");const n=t();return n.pipeline.reset(),n.pipeline.add(f),n.pipeline.add(t.Pipeline.getRegisteredFunction("stopWordFilter")),n.saveDocument(!1),{index:n,tokenizer:t.tokenizer}}export function getSearchableFields(e){const{outFields:t}=e.featureSettings,n=!t.includes("*");return e.schema.fieldExtensions.initializedItems.filter((e=>e.searchable&&(!n||t.includes(e.field.name)))).map((e=>e.field)).toArray()}export function getWhereClause(e,r,i,s){const c=[],a=new o({locale:s.locale,defaultParseFormat:[n.CURRENCY,n.FIXED_POINT,n.PERCENT,n.NUMBER,n.ROUND_TRIP]});for(const o of i){let i=[];o.domain&&t(o.domain)&&(i=i.concat(o.domain.codedValues));for(const t of e.schema.types.toArray()){const{domains:e}=t;e?.[o.name]?.codedValues&&(i=i.concat(e[o.name].codedValues))}for(const t of r)if(e.schema.types.length>0&&p(o.name,e.schema.typeIdField)){const n=e.schema.types.findIndex((e=>p(e.name,t.toLowerCase())));if(n>-1){const t=e.schema.types.getItemAt(n).id;"string"==typeof t?c.push(`${e.schema.typeIdField} = '${x(t)}'`):c.push(`${e.schema.typeIdField} = ${t}`)}}else if(i.length>0){const e=i.findIndex((e=>e.name.toLowerCase().includes(t.toLowerCase())));e>-1&&("string"==typeof i[e].code?c.push(`${o.name} = '${x(i[e].code)}'`):c.push(`${o.name} = ${i[e].code}`))}else switch(o.type){case"string":c.push(`lower(${o.name}) like '%${x(t.toLowerCase())}%'`);break;case"integer":case"small-integer":case"big-integer":case"single":case"double":{const e=g(t),r=a.parse({format:[n.DEFAULT,n.FIXED_POINT,n.NUMBER]},e);if(isNaN(r))continue;const i=d(r);r<0?c.push(`(${o.name} > ${i.lower} and ${o.name} <= ${i.upper})`):c.push(`(${o.name} >= ${i.lower} and ${o.name} < ${i.upper})`);break}}}return c.join(" or ")}export function normalizeScores(e){const t=e.map((e=>e.score)),n=c(t),o=a(t);for(const t of e)o?(t.score=(t.score-n)/o,t.score=Math.max(-2,t.score),t.score=Math.min(2,t.score),t.score=t.score/4+.5,t.score*=100):t.score=100}export async function expandSearchArea(t,n,o,r){if(!n||!t||!o||t.contains(n))return{};const c=u(o,r),a=m("continent"),p=!c||null!=a&&c>=a?n:l(t,o,c);return{geometry:function(e){const t=e.filter((e=>!!e?.spatialReference));if(!t.length)return!0;const{spatialReference:n}=t[0],{isWebMercator:o,isWGS84:r}=n;if(!o&&!r)return!0;const c=s(t),a=i(n);if(null==a||null==c)return!0;const{xmax:l,xmin:u}=c,{max:m,min:p}=a;return l<=m&&u>=p}([p])?e.execute(p,t):p,scale:c}}function f(e){if(null==e)throw new Error("token should not be undefined");return e.replace(/^[^a-zA-Z0-9\u007F-\uFFFF-]+/,"").replace(/[^a-zA-Z0-9\u007F-\uFFFF-]+$/,"")}function d(e){let t,o=0;const i=r(n.ROUND_TRIP,e),s=h(i);i.includes(".")&&(o=i.length-i.indexOf(".")-1);let c=e;return 0===s&&o>0?t=Math.pow(10,-(o-1)):null!=s&&o>s?(c=Number(e.toFixed(o-s)),t=Math.pow(10,-o)):t=1,t/=2,{lower:(c-t).toFixed(o+1),upper:(c+t).toFixed(o+1)}}function g(e){let t=h(e);const n=r(-123456780.9),o=function(){const e=r(1234567890);return r(-123456780.9).split("").filter((t=>!e.includes(t))).join("")}();if(null!=t&&t>0){const i=new RegExp(`[${n}]`,"g"),s=e.match(i);if(null!=s){const e=s.length;let n=0;for(;t>0&&n<=e;){const i=e-n-1;o.includes(s[i])||(s[i]=r(0).toString(),t--),n++}return s.join("")}}return e}function h(e){const t=r(1234567890),n=new RegExp(`[${t}]`,"g"),o=e.match(n);return o?o.length-14:void 0}function x(e){return e.replace(/([%'])/g,"$1$1")}
1
+ import*as e from"@arcgis/core/geometry/operators/differenceOperator";import{schemaHasSubtypes as t}from"../../../data/Schema.js";import{isCodedValueDomain as n}from"../../../utilities/esri.js";import{NumberFormat as o}from"../../../utilities/format/formats.js";import{NumberFormatter as r,format as i}from"../../../utilities/format/number.js";import{getBounds as s,getScreenExtent as a}from"../../../utilities/geometry.js";import{average as c,standardDeviation as l}from"../../../utilities/math.js";import{expandExtentToScale as u,getNextScale as m,getScaleRange as f}from"../../../utilities/scaleRanges.js";import{caseInsensitiveEquals as p}from"../../../utilities/string.js";export const separatorRegex=/(\s|(?<=\w)-|-(?![\d,.]))+/;export async function initializeElasticlunrIndex(e){const t=(await import("elasticlunr")).default;t.tokenizer.setSeperator(e),t.Pipeline.getRegisteredFunction("gcx.trimmer")||t.Pipeline.registerFunction(d,"gcx.trimmer");const n=t();return n.pipeline.reset(),n.pipeline.add(d),n.pipeline.add(t.Pipeline.getRegisteredFunction("stopWordFilter")),n.saveDocument(!1),{index:n,tokenizer:t.tokenizer}}export function getSearchableFields(e){const{outFields:t}=e.featureSettings,n=!t.includes("*");return e.schema.fieldExtensions.initializedItems.filter((e=>e.searchable&&(!n||t.includes(e.field.name)))).map((e=>e.field)).toArray()}export function getWhereClause(e,i,s,a){const c=[],l=new r({locale:a.locale,defaultParseFormat:[o.CURRENCY,o.FIXED_POINT,o.PERCENT,o.NUMBER,o.ROUND_TRIP]}),u=t(e.schema),m=u?e.schema.subtypeField:e.schema.typeIdField,f=u?e.schema.subtypes.toArray():e.schema.types.toArray();for(const r of s){let s=[];r.domain&&n(r.domain)&&(s=s.concat(r.domain.codedValues));for(const e of f){const{domains:t}=e;t?.[r.name]?.codedValues&&(s=s.concat(t[r.name].codedValues))}for(const n of i)if(f.length>0&&p(r.name,m)){const o=f.findIndex((e=>p(e.name,n.toLowerCase())));if(o>-1){const n=t(e.schema)?f[o].code:f[o].id;"string"==typeof n?c.push(`${m} = '${F(n)}'`):c.push(`${m} = ${n}`)}}else if(s.length>0){const e=s.findIndex((e=>e.name.toLowerCase().includes(n.toLowerCase())));e>-1&&("string"==typeof s[e].code?c.push(`${r.name} = '${F(s[e].code)}'`):c.push(`${r.name} = ${s[e].code}`))}else switch(r.type){case"string":c.push(`lower(${r.name}) like '%${F(n.toLowerCase())}%'`);break;case"integer":case"small-integer":case"big-integer":case"single":case"double":{const e=h(n),t=l.parse({format:[o.DEFAULT,o.FIXED_POINT,o.NUMBER]},e);if(isNaN(t))continue;const i=g(t);t<0?c.push(`(${r.name} > ${i.lower} and ${r.name} <= ${i.upper})`):c.push(`(${r.name} >= ${i.lower} and ${r.name} < ${i.upper})`);break}}}return c.join(" or ")}export function normalizeScores(e){const t=e.map((e=>e.score)),n=c(t),o=l(t);for(const t of e)o?(t.score=(t.score-n)/o,t.score=Math.max(-2,t.score),t.score=Math.min(2,t.score),t.score=t.score/4+.5,t.score*=100):t.score=100}export async function expandSearchArea(t,n,o,r){if(!n||!t||!o||t.contains(n))return{};const i=m(o,r),c=f("continent"),l=!i||null!=c&&i>=c?n:u(t,o,i);return{geometry:function(e){const t=e.filter((e=>!!e?.spatialReference));if(!t.length)return!0;const{spatialReference:n}=t[0],{isWebMercator:o,isWGS84:r}=n;if(!o&&!r)return!0;const i=a(t),c=s(n);if(null==c||null==i)return!0;const{xmax:l,xmin:u}=i,{max:m,min:f}=c;return l<=m&&u>=f}([l])?e.execute(l,t):l,scale:i}}function d(e){if(null==e)throw new Error("token should not be undefined");return e.replace(/^[^a-zA-Z0-9\u007F-\uFFFF-]+/,"").replace(/[^a-zA-Z0-9\u007F-\uFFFF-]+$/,"")}function g(e){let t,n=0;const r=i(o.ROUND_TRIP,e),s=x(r);r.includes(".")&&(n=r.length-r.indexOf(".")-1);let a=e;return 0===s&&n>0?t=Math.pow(10,-(n-1)):null!=s&&n>s?(a=Number(e.toFixed(n-s)),t=Math.pow(10,-n)):t=1,t/=2,{lower:(a-t).toFixed(n+1),upper:(a+t).toFixed(n+1)}}function h(e){let t=x(e);const n=i(-123456780.9),o=function(){const e=i(1234567890);return i(-123456780.9).split("").filter((t=>!e.includes(t))).join("")}();if(null!=t&&t>0){const r=new RegExp(`[${n}]`,"g"),s=e.match(r);if(null!=s){const e=s.length;let n=0;for(;t>0&&n<=e;){const r=e-n-1;o.includes(s[r])||(s[r]=i(0).toString(),t--),n++}return s.join("")}}return e}function x(e){const t=i(1234567890),n=new RegExp(`[${t}]`,"g"),o=e.match(n);return o?o.length-14:void 0}function F(e){return e.replace(/([%'])/g,"$1$1")}
package/version.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * The current version of the Geocortex ArcGIS Extensions API.
3
3
  */
4
- export declare const version = "53.18.2";
4
+ export declare const version = "54.0.0";
package/version.js CHANGED
@@ -1 +1 @@
1
- export const version="53.18.2";
1
+ export const version="54.0.0";