@vertigis/arcgis-extensions 44.3.0 → 45.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/data/Feature.js +1 -1
- package/data/FeatureSettings.js +1 -1
- package/data/FieldExtension.d.ts +0 -1
- package/data/FieldExtension.js +1 -1
- package/data/Schema.js +1 -1
- package/data/_TableExtension.js +1 -1
- package/docs/html/assets/navigation.js +1 -1
- package/docs/html/assets/search.js +1 -1
- package/docs/html/classes/data_FeatureList.FeatureList.html +4 -3
- package/docs/html/classes/data_FeatureSourceBase.RelationshipCollection.html +4 -3
- package/docs/html/classes/mapping_ArcGISSublayerExtension.ArcGISSublayerRelationshipCollection.html +4 -3
- package/docs/html/classes/mapping_GroupLayerExtension.GroupLayerExtensionCollection.html +4 -3
- package/docs/html/classes/mapping_SubtypeGroupLayerExtension.SubtypeGroupLayerRelationshipCollection.html +4 -3
- package/docs/html/classes/mapping_SubtypeSublayerExtension.SubtypeSublayerRelationshipCollection.html +4 -3
- package/docs/html/classes/mapping__SublayerExtension.SubSublayerExtensionCollection.html +4 -3
- package/docs/html/classes/mapping_support_ArrayWrappedCollection.ArrayWrappedCollection.html +4 -3
- package/docs/html/classes/mapping_support__LayerExtensionCollection.LayerExtensionCollectionBase.html +4 -3
- package/docs/html/classes/mapping_support__SublayerExtensionCollection.SublayerExtensionCollectionBase.html +4 -3
- package/docs/html/classes/support_InitializableCollectionProxy.InitializableCollectionProxy.html +4 -3
- package/docs/html/classes/support_ReadOnlyInitializableCollection.ReadOnlyInitializableCollection.html +4 -3
- package/docs/html/classes/support__ArcGISRelationshipCollection.ArcGISRelationshipCollection.html +4 -3
- package/docs/html/classes/utilities_CollectionProxy.CollectionProxy.html +4 -3
- package/docs/html/classes/utilities_CopyOnWriteCollection.CopyOnWriteCollection.html +4 -3
- package/docs/html/classes/utilities_MapTransformCollection.MapTransformCollection.html +4 -3
- package/docs/html/classes/utilities_ReadOnlyCollection.ReadOnlyCollection.html +4 -3
- package/docs/html/functions/utilities_field.getArcadeExpressionFromField.html +6 -0
- package/docs/html/functions/utilities_field.getRelationshipFromField.html +7 -0
- package/docs/html/functions/utilities_field.isArcadeExpressionField.html +5 -0
- package/docs/html/functions/utilities_field.isRelationshipField.html +5 -0
- package/docs/html/modules/utilities_field.html +5 -1
- package/docs/html/variables/version.version.html +1 -1
- package/mapping/ArcGISSublayerExtension.js +1 -1
- package/mapping/BuildingComponentSublayerExtension.js +1 -1
- package/mapping/CSVLayerExtension.js +1 -1
- package/mapping/FeatureLayerExtensionBase.js +1 -1
- package/mapping/GeoJSONLayerExtension.js +1 -1
- package/mapping/GeoRSSLayerExtension.js +1 -1
- package/mapping/ImageryLayerExtension.js +1 -1
- package/mapping/KMLLayerExtension.js +1 -1
- package/mapping/MapExtension.js +1 -1
- package/mapping/PointCloudLayerExtension.js +1 -1
- package/mapping/SceneLayerExtension.js +1 -1
- package/mapping/StreamLayerExtension.js +1 -1
- package/mapping/SubtypeGroupLayerExtension.js +1 -1
- package/mapping/SubtypeSublayerExtension.js +1 -1
- package/mapping/WFSLayerExtension.js +1 -1
- package/package.json +1 -1
- package/tasks/geocoding/ArcGISGeocoder.js +1 -1
- package/utilities/CaseInsensitiveObservableMap.js +1 -1
- package/utilities/CollectionProxy.d.ts +5 -0
- package/utilities/CollectionProxy.js +1 -1
- package/utilities/field.d.ts +35 -0
- package/utilities/field.js +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
package/data/Feature.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__decorate as e}from"tslib";import t from"@arcgis/core/Graphic";import s from"@arcgis/core/core/Collection";import{fromJSON as i}from"@arcgis/core/geometry/support/jsonUtils";import{EntityBase as r}from"../Entity.js";import{Hyperlink as a}from"../Hyperlink.js";import{InvalidOperationError as n}from"../InvalidOperationError.js";import{ItemType as o}from"../ItemType.js";import{serializable as h}from"../support/Serializable.js";import{CaseInsensitiveObservableMap as l}from"../utilities/CaseInsensitiveObservableMap.js";import{MapTransformCollection as p}from"../utilities/MapTransformCollection.js";import{ObservableMap as u}from"../utilities/ObservableMap.js";import{ReadOnlyMap as c}from"../utilities/ReadOnlyMap.js";import{flatten as m,groupBy as f}from"../utilities/array.js";import{checkArg as d}from"../utilities/checkArg.js";import{compare as g}from"../utilities/collection.js";import{parse as y,esriFormatToGeocortexFormat as _}from"../utilities/date.js";import{isCodedValueDomain as b,isGeometry as x}from"../utilities/esri.js";import{fieldWithArcadeXRegex as w,fieldWithRelationshipRegex as F}from"../utilities/field.js";import{some as v,map as I,concat as A,forEach as z,find as E}from"../utilities/iterable.js";import{getLogger as S}from"../utilities/log.js";import{parse as j,NumberFormat as k}from"../utilities/number.js";import{map as T}from"../utilities/promise.js";import{caseInsensitiveEquals as R}from"../utilities/string.js";import{format as C}from"../utilities/string.js";import{onCollectionPropertyChange as O}from"../utilities/watch.js";import{FeatureSettings as M}from"./FeatureSettings.js";import{Schema as N}from"./Schema.js";const V=S("geocortex.api.data.Feature");export const SCORE_FIELD="_score";export const SCORE_FIELD_ORIGINAL="_score_original";let P=class extends r{attributes;get geometry(){return this._geometry}set geometry(e){this.notifyChange("geometryType"),this._geometry=x(e)||!e?e:i(e),this.schema.spatialReference=this._geometry?.spatialReference}settings;schema;attachments;expressionFieldValues;_itemType=o.FEATURE;get geometryType(){return this.geometry?this.geometry.type:void 0}get source(){return this._source}set source(e){this._source&&this.settings.parent===this._source.featureSettings&&(this.settings.parent=void 0),this._source&&this.schema.parent===this._source.schema&&(this.schema.parent=void 0),this._source=e,this.settings.parent||(this.settings.parent=e?e.featureSettings:void 0),this.schema.parent||(this.schema.parent=e?e.schema:void 0),this.notifyChange("attachmentsInitialized"),this.notifyChange("relatedFeaturesInitialized")}get primaryKey(){const e=this.attributes.get(this.schema.primaryKeyField);return null!=e?`${e}`:void 0}get hasGlobalId(){return!!this.schema.fields.find((e=>"global-id"===e.type))}get globalId(){const e=this.schema.fields.find((e=>"global-id"===e.type));return e?this.attributes.get(e.name):void 0}set globalId(e){const t=this.schema.fields.find((e=>"global-id"===e.type));if(!t)throw new n("Cannot set global ID on feature -- no global ID field.");this.attributes.set(t.name,e)}get presentableAttributes(){return this._presentableAttributes=this._presentableAttributes||new L(this),this._presentableAttributes}get title(){return this.format(this._title||"")}get description(){return this.format(this._description)}get hyperlinks(){return this._hyperlinks||(this._hyperlinks=new B(this))}get relatedFeatures(){return this._relatedFeatures}get type(){if(this.schema.typeIdField&&this.attributes.has(this.schema.typeIdField)){const e=this.attributes.get(this.schema.typeIdField);return this.schema.types.find((t=>t.id===e))}}get attachmentsInitialized(){return!this.source||this._attachmentsInitialized}get relatedFeaturesInitialized(){return!this.source||this.source.relationships.every((e=>this._initializedRelationships.has(e)))}get expressionsInitialized(){return!this.settings.popupTemplate?.expressionInfos?.length||this._expressionsInitialized}get _hydrationStatus(){return this._featureHydrationStatus?this._featureHydrationStatus:this.source?.capabilities?.supportsQuery&&1===this.attributes.size&&void 0!==this.primaryKey?"dehydrated":"hydrated"}set _hydrationStatus(e){this._featureHydrationStatus=e}get _key(){return`${this.source?.id}//${this.primaryKey??this.globalId??this.id}`}get _title(){let e;return this.settings.popupTemplate&&(e="function"==typeof this.settings.popupTemplate.title?this.settings.popupTemplate.title():this.settings.popupTemplate.title),e||this.schema.displayField&&this.presentableAttributes.get(this.schema.displayField)||""}get _description(){if(this.settings.popupTemplate?.content){if("string"==typeof this.settings.popupTemplate.content)return this.settings.popupTemplate.content;if(Array.isArray(this.settings.popupTemplate.content)){const e=this.settings.popupTemplate.content.find((e=>"text"===e.type));if(e)return e.text}}return""}_geometry;_source;_presentableAttributes;_hyperlinks;_featureHydrationStatus;_relatedFeatures;_expressionFieldValues=new u;_expressionValuesUpdatePending=!1;_attachmentsInitialized=!1;_expressionsInitialized=!1;_initializedRelationships=new WeakSet;constructor(e){super(e),this.settings=new M,this.settings._setFeature(this),this.schema=new N,this.schema._featureSettings=this.settings,this.attachments=new s,this.attributes=new l,this._relatedFeatures=new u,this.expressionFieldValues=new G(this._expressionFieldValues,this),O(this,"source.relationships",(()=>{this.notifyChange("relatedFeaturesInitialized")}),!0),this.settings.watch("popupTemplate",((e,t)=>{e!==t&&(this._expressionsInitialized=!1,this.notifyChange("expressionsInitialized"))}),!0)}format(e,...t){let s="string"==typeof e?{format:e}:e;d("options",s).isNotMissing();const{format:i}=s;d("format",i).isNotMissing();let r=s.format.replace(K,J);return r=r.replace($,((e,t,i,r,a)=>q(this,t||i,r,{...s,format:a?`{0:${a}}`:"{0}"}))),r=r.replace(Z,"{{"),s={...s},s.format=r,C(s,...t)}clearExpressionInfos(){this._expressionFieldValues.clear()}toGraphic(){return toGraphic(this)}async fetchExpressionInfos(e=!1){const{expressionInfos:t}=this.settings.popupTemplate??{};if(!t)return;const{runAsyncArcadeExpression:s}=await import("../utilities/arcade.js");if(await Promise.all(t.map((async e=>{try{const t=this.source?.layer??this.source?.sublayer;let i=this.source?.mapExtension;if(!i){const e=this.source?.layerExtension;i=e?.mapExtension}this._expressionFieldValues.set(e.name,await s(e.expression,{layer:t,map:i?.map,feature:this,spatialReference:this.schema.spatialReference}))}catch(t){t instanceof Error&&V.error({message:"Error evaluating expression '{0}': {1}.",error:t},e.name,t.message),this._expressionFieldValues.set(e.name,Q)}}))),e)return this.attributes.on("change",(async e=>{this._expressionValuesUpdatePending||(this._expressionValuesUpdatePending=!0,setTimeout((async()=>{this._expressionValuesUpdatePending=!1,await this.fetchExpressionInfos()}),0))}));this._expressionsInitialized=!0,this.notifyChange("expressionsInitialized")}async fetchRelatedFeatures(e,t){if(!this.source)return;let s=[];if(e){const t=new Set(Array.isArray(e)?e:[e]);for(const e of t){const t="string"==typeof e?this.source.relationships.find((t=>t.id===e)):e;if(!t||!this.source.relationships.includes(t))throw new n("Relationship not found in feature source.");s.push(t)}}else s=this.source.relationships.toArray();const i=await T(s,(async e=>[e,await(async()=>{const s=await e.getRelatedFeatures(this,t);return this._initializedRelationships.add(e),s})()]));for(const e of i)this._relatedFeatures.set(e[0],e[1]);this.notifyChange("relatedFeaturesInitialized")}async fetchAttachments(){if(this.source){const e=await this.source.getAttachments(this);g(this.attachments,e,{equals:(e,t)=>e.id===t.id,onMissing:(e,t)=>this.attachments.remove(e),onNew:(e,t)=>{this.attachments.add(e)},onMatch:(e,t,s,i)=>{this.attachments.splice(s,1,t)}}),this._attachmentsInitialized=!0,this.notifyChange("attachmentsInitialized")}}async addAttachment(e){return this.source?.addAttachment(this,e)}async deleteAttachments(e){return this.source?.deleteAttachments(this,e)}_getSerializableProperties(){return{...super._getSerializableProperties(),attributes:{serializeModes:["project"],serialize:e=>{const t={};if("project"===e&&this.primaryKey&&(this.source?.capabilities).supportsQuery)t[this.schema.primaryKeyField]=this.primaryKey;else for(const[e,s]of this.attributes.entries())t[e]=s;return t},deserialize:e=>{if(this.attributes.clear(),e instanceof Map)e.forEach(((e,t)=>{this.attributes.set(t,e)}));else for(const[t,s]of Object.entries(e))this.attributes.set(t,s)}},geometry:{serializeModes:["project"],serialize:e=>"project"===e&&(this.source?.capabilities).supportsQuery?this.getDefault("geometry"):this.geometry?.toJSON(),deserialize:e=>{this.geometry=e}},settings:{serializeModes:["project"],serialize:e=>"project"===e&&(this.source?.capabilities).supportsQuery?this.getDefault("settings"):this.settings.toJSON(e)},schema:{serializeModes:["project"],serialize:e=>"project"===e&&(this.source?.capabilities).supportsQuery?this.getDefault("schema"):this.schema.toJSON(e)},source:["project"]}}_watchProperty(e,t,s,i){if("title"===e||"description"===e){const r=super._watchProperty(e,t,s,i),a="title"===e?"settings.popupTemplate.title":"settings.popupTemplate.content",n=this.watch(a,(()=>{this.notifyChange(e)})),o=this.presentableAttributes.on("change",(()=>{this.notifyChange(e)}));return{remove(){r.remove(),n.remove(),o.remove()}}}return super._watchProperty(e,t,s,i)}async _onInitialize(){const e=this._findRelationshipIds(this._title,this._description),t=this.source?this.source.relationships.map((e=>e.id)).toArray():[],s=[];for(const i of e)t.includes(i)?s.push(this.fetchRelatedFeatures(i)):V.error("Could not find relationship '{0}' referenced in feature title or description.",i);await Promise.all(s)}_findRelationshipIds(...e){const t=[];for(const s of e){let e;const i=s.replace(K,J);for(;e=H.exec(i),null!==e;){const s=e[0];t.includes(s)||t.push(e[1])}}return t}};P=e([h],P);export{P as Feature};export function toFeature(e,t){const s=new P(t);if(e.attributes)for(const t of Object.keys(e.attributes))s.attributes.set(t,e.attributes[t]);return s.geometry=e.geometry,e.popupTemplate&&(s.settings.popupTemplate=e.popupTemplate),s}export function toGraphic(e){const s=new t;s.attributes={};for(const t of e.attributes.keys())s.attributes[t]=e.attributes.get(t);return e.source?.layer&&(s.layer=e.source?.layer),s.geometry=e.geometry,e.settings.popupTemplate&&(s.popupTemplate=e.settings.popupTemplate),s}const D="Presentable attributes are read-only.",U="Feature hyperlinks are read-only. Modify the feature's hyperlink templates instead.";class G extends c{_feature;_pending=new Set;constructor(e,t){super(e),this._feature=t}get(e){return super.has(e)||this._calcExpressionValue(e),super.get(e)}async _calcExpressionValue(e){if(!this._pending.has(e)){this._pending.add(e);try{const{spatialReference:t}=this._feature.schema,s=this._feature.settings.popupTemplate?.expressionInfos?.find((t=>t.name===e));if(!s)return;const{isArcadeScriptAsync:i,runAsyncArcadeExpression:r,arcadeScriptUsesGeometry:a,runArcadeExpression:n}=await import("../utilities/arcade.js");try{if(i(s.expression,t)){const i=this._feature.source?.layer??this._feature.source?.sublayer;let a=this._feature.source?.mapExtension;if(!a){const e=this._feature.source?.layerExtension;a=e?.mapExtension}this._originalMap.set(e,await r(s.expression,{feature:this._feature,layer:i,map:a?.map,spatialReference:t}))}else{if(a(s.expression,t)){const{enableGeometrySupport:e}=await import("@arcgis/core/arcade/arcade");await e()}this._originalMap.set(e,n(s.expression,{feature:this._feature,spatialReference:t}))}}catch(t){t instanceof Error&&V.error({message:"Error evaluating expression '{0}': {1}.",error:t},e,t.message),this._originalMap.set(e,Q)}}finally{this._pending.delete(e)}}}}class L extends c{[Symbol.toStringTag];get size(){return this._feature.attributes.size+this._feature.schema.fields._expressionFieldsLength}_feature;_numObservers;_onAllObserversRemoved;constructor(e){super(new l),this._feature=e}clear(){throw new n(D)}delete(e){throw new n(D)}forEach(e,t){d("callback",e).isNotMissing();for(const s of this.keys())e.call(t,this.get(s),s,this)}get(e){const t=this._getFieldExtensionFormat(e);return this._formatAttribute(e,t)}has(e){return v(this.keys(),(t=>R(t,e)))}set(...e){throw new n(D)}*entries(){yield*I(this.keys(),(e=>[e,this.get(e)]))}*keys(){const e=this._feature.schema.fields.expressionFields.map((e=>e.name)),t=[];this._feature.source?.relationships&&this._feature.source.relationships.filter((e=>"one-to-one"===e.cardinality||"many-to-one"===e.cardinality)).forEach((e=>t.push(...e.relatedSource.schema.fields.map((t=>`relationships/${e.id}/${t.name}`)).toArray()))),yield*A(this._feature.attributes.keys(),e.toArray(),t)}*values(){yield*I(this.keys(),(e=>this.get(e)))}[Symbol.iterator](){return this.entries()}toJSON(){return Array.from(this.entries())}on(e,t){if(d("callback",t).isNotMissing(),!this._numObservers){const e=new Map,t=new Set,s=()=>{t.forEach((e=>e.remove())),t.clear()},i=()=>{const t={added:Array.from(this.entries()).filter((t=>t[1]!==e.get(t[0]))),removed:Array.from(e.entries()).filter((e=>!this.has(e[0])||e[1]!==this.get(e[0]))),target:this};(t.added.length||t.removed.length)&&(this.emit("change",t),r())},r=()=>{e.clear(),s(),z(this.keys(),(s=>{const r=this._getFieldExtension(s);let a="{0}";if(r){const e=r.watch("format",(()=>{i()}));t.add(e),r.format&&(a=r.format)}e.set(s,this._formatAttribute(s,a))}))};r();const a=this._feature.attributes.on("change",(()=>{i()})),n=this._feature.schema.fieldExtensions.on("change",(()=>{i()})),o=this._feature.settings.formatSettings.watch(["numberFormat","dateFormat","locale"],(()=>{i()})),h=this._feature.expressionFieldValues.on("change",(()=>{i()})),l=this._feature.schema.fields.on("change",(e=>{(e.added?.some((e=>null!==e.name.match(w)))||e.removed?.some((e=>null!==e.name.match(w))))&&i()})),p=this._feature.settings.watch("popupTemplate",(()=>{i()}));this._onAllObserversRemoved=()=>{h.remove(),a.remove(),n.remove(),l.remove(),o.remove(),p.remove(),e.clear(),s()}}const s=super.on("change",t);return this._numObservers++,{remove:()=>{s.remove(),this._numObservers--,this._numObservers||this._onAllObserversRemoved()}}}watch(e,t){if("size"===e){const e=this._feature.attributes.watch("size",((e,s)=>{t(e+this._feature.schema.fields._expressionFieldsLength,s+this._feature.schema.fields._expressionFieldsLength,"size",this)})),s=this._feature.schema.fields.watch("_expressionFieldsLength",((e,s)=>{t(e+this._feature.attributes.size,s+this._feature.attributes.size,"size",this)}));return{remove:()=>{e.remove(),s.remove()}}}return super.watch(e,t)}_getFieldExtension(e){const t=this._feature.schema.findFieldByName(e);if(t)return this._feature.schema.fieldExtensions.forField(t)}_getFieldExtensionFormat(e){const t=this._getFieldExtension(e);return t?t.format:"{0}"}_formatAttribute(e,t){const s=e.match(w),i=e.match(F);if(s)return q(this._feature,"expression",s[1],{format:t});if(i){const[,e,s]=i;return q(this._feature,e,s,{format:t})}return q(this._feature,void 0,e,{format:t})}}const $=/\{(?:relationships[\\/]([\w-]*)[\\/])?(?:(expression)[\\/])?([_a-zA-ZÀ-ÖØ-öø-ÿ][._a-zA-ZÀ-ÖØ-öø-ÿ0-9]*)(?::([^}]*))?\}/gi,H=/\{relationships\/([\w-]*)[\\/]([^}]*)\}/gi,K=/{{/g,J="\0MAGIC\0",Z=new RegExp(J,"g"),Q="#INVALID";class B extends p{_feature;_hyperlinks;constructor(e){super(e.settings.hyperlinkTemplates,(e=>this._getHyperlink(e))),this._feature=e}_getHyperlink(e){return this._hyperlinks=this._hyperlinks||new WeakMap,this._hyperlinks.has(e)||this._hyperlinks.set(e,new W(this._feature,e)),this._hyperlinks.get(e)}}let W=class extends a{get url(){return this._template.url?this._feature.format(this._template.url):this._template.url}set url(e){throw new n(U)}get text(){return this._template.text?this._feature.format(this._template.text):this._template.text}set text(e){throw new n(U)}get iconUrl(){return this._template.iconUrl?this._feature.format(this._template.iconUrl):this._template.iconUrl}set iconUrl(e){throw new n(U)}get target(){return this._template.target?this._feature.format(this._template.target):this._template.target}set target(e){throw new n(U)}get tooltip(){return this._template.tooltip?this._feature.format(this._template.tooltip):this._template.tooltip}set tooltip(e){throw new n(U)}_feature;_template;constructor(e,t){super(t.toJSON()),this._feature=e,this._template=t}_watchProperty(e,t,s,i){const r=super._watchProperty(e,t,s,i),a=this._template.watch(e,(()=>{this.notifyChange(e)})),n=this._feature.presentableAttributes.on("change",(()=>{this.notifyChange(e)})),o=this._feature.relatedFeatures.on("change",(()=>{this.notifyChange(e)}));return{remove:()=>{r.remove(),a.remove(),n.remove(),o.remove()}}}_getSerializableProperties(){return{}}};function q(e,t,s,i={format:"{0}"}){if(!R(t,"expression")){if(t){const r=E(e.relatedFeatures.keys(),(e=>R(e.id,t)));if(!r)return V.debug("Could not resolve related field '{0}/{1}",t,s),Q;const a=Array.from(e.relatedFeatures.get(r));return"many-to-one"===r.cardinality||"one-to-one"===r.cardinality?a.length<1?(V.debug("Could not resolve related field '{0}/{1}",t,s),Q):X(a[0],s,i):a.map((e=>X(e,s,i))).filter((e=>""!==e)).join(",")}return X(e,s,i)}if(!e.settings.popupTemplate?.expressionInfos?.find((e=>R(e.name,s))))return V.debug("Could not find expression '{0}'.",s),Q;try{const t=e.expressionFieldValues.get(s)??i.defaultExpressionValue??"",r=e.schema.findFieldByName(`expression/${s}`);let a=i;if(r){const t=e.schema.fieldExtensions.forField(r);t&&(a=te(e,s,ee(t.formatSettings),a))}return Y(e,t,a)}catch(e){if(e instanceof Error)return V.error({message:"Error evaluating expression '{0}': {1}.",error:e},s,e.message),Q;throw e}}function X(e,t,s){let i=e.attributes.get(t);if(null==i)return"";const r=e.schema.findFieldByName(t),a=e.type?.domains?.[r?.name??t],n=e=>e.codedValues?.find((e=>e.code.toString()===i.toString()))?.name??i;let o={format:"{0}"};if(R(t,e.schema.typeIdField)){const t=a&&"inherited"!==a.type?a:r?.domain;i="coded-value"===t?.type?n(t):e.type?.name??i}else if(a&&b(a))i=n(a);else if(r?.domain&&b(r.domain))i=n(r.domain);else if(r){switch(r.type){case"integer":case"small-integer":case"single":case"double":i=j(i);break;case"date":i=y({timeZone:e.schema.timeZone},i);break;default:i=`${i.toString()}`}const t=e.schema.fieldExtensions.forField(r);t&&(o=ee(t.formatSettings))}return Y(e,i,te(e,t,o,s))}function Y(e,t,s){let i=s;if("number"==typeof t||t instanceof Date){i={...ee(e.settings.formatSettings),...s}}return"{0}"===i.format&&"string"==typeof t?t:C(i,t)}function ee(e){return{format:"{0}",dateFormat:e.dateFormat,numberFormat:e.numberFormat,currency:e.currency,fractionalDigits:e.fractionalDigits,locale:e.locale,timeZone:e.timeZone}}function te(e,t,s,i){const{popupTemplate:r}=e.settings,a=r?.fieldInfos?r.fieldInfos.find((e=>R(e.fieldName,t))):void 0,n=a?a.format:void 0;let o;return n&&(o={format:"{0}",numberFormat:n.digitSeparator?k.NUMBER:k.FIXED_POINT,dateFormat:_(n.dateFormat),fractionalDigits:n.places}),{...o,...s,...i}}W=e([h],W);export async function resolveRelatedFeatures(e){const t=f(e,(e=>e.source));await Promise.all(m([...t.keys()].map((e=>e.relationships.toArray()))).map((e=>(async e=>{[...(await e.getAllRelatedFeatures(t.get(e.source))).entries()].forEach((([t,s])=>{t.relatedFeatures.set(e,s)}))})(e))))}
|
|
1
|
+
import{__decorate as e}from"tslib";import t from"@arcgis/core/Graphic";import s from"@arcgis/core/core/Collection";import{fromJSON as i}from"@arcgis/core/geometry/support/jsonUtils";import{EntityBase as r}from"../Entity.js";import{Hyperlink as a}from"../Hyperlink.js";import{InvalidOperationError as n}from"../InvalidOperationError.js";import{ItemType as o}from"../ItemType.js";import{serializable as l}from"../support/Serializable.js";import{CaseInsensitiveObservableMap as h}from"../utilities/CaseInsensitiveObservableMap.js";import{MapTransformCollection as u}from"../utilities/MapTransformCollection.js";import{ObservableMap as p}from"../utilities/ObservableMap.js";import{ReadOnlyMap as c}from"../utilities/ReadOnlyMap.js";import{flatten as m,groupBy as f}from"../utilities/array.js";import{checkArg as d}from"../utilities/checkArg.js";import{compare as g}from"../utilities/collection.js";import{parse as y,esriFormatToGeocortexFormat as _}from"../utilities/date.js";import{isCodedValueDomain as b,isGeometry as x}from"../utilities/esri.js";import{getArcadeExpressionFromField as F,getRelationshipFromField as w,isArcadeExpressionField as v}from"../utilities/field.js";import{map as I,find as S}from"../utilities/iterable.js";import{getLogger as z}from"../utilities/log.js";import{parse as A,NumberFormat as E}from"../utilities/number.js";import{map as j}from"../utilities/promise.js";import{caseInsensitiveEquals as k}from"../utilities/string.js";import{format as T}from"../utilities/string.js";import{onCollectionPropertyChange as R}from"../utilities/watch.js";import{FeatureSettings as C}from"./FeatureSettings.js";import{Schema as O}from"./Schema.js";const M=z("geocortex.api.data.Feature");export const SCORE_FIELD="_score";export const SCORE_FIELD_ORIGINAL="_score_original";let N=class extends r{attributes;get geometry(){return this._geometry}set geometry(e){this.notifyChange("geometryType"),this._geometry=x(e)||!e?e:i(e),this.schema.spatialReference=this._geometry?.spatialReference}settings;schema;attachments;expressionFieldValues;_itemType=o.FEATURE;get geometryType(){return this.geometry?this.geometry.type:void 0}get source(){return this._source}set source(e){this._source&&this.settings.parent===this._source.featureSettings&&(this.settings.parent=void 0),this._source&&this.schema.parent===this._source.schema&&(this.schema.parent=void 0),this._source=e,this.settings.parent||(this.settings.parent=e?e.featureSettings:void 0),this.schema.parent||(this.schema.parent=e?e.schema:void 0),this.notifyChange("attachmentsInitialized"),this.notifyChange("relatedFeaturesInitialized")}get primaryKey(){const e=this.attributes.get(this.schema.primaryKeyField);return null!=e?`${e}`:void 0}get hasGlobalId(){return!!this.schema.fields.find((e=>"global-id"===e.type))}get globalId(){const e=this.schema.fields.find((e=>"global-id"===e.type));return e?this.attributes.get(e.name):void 0}set globalId(e){const t=this.schema.fields.find((e=>"global-id"===e.type));if(!t)throw new n("Cannot set global ID on feature -- no global ID field.");this.attributes.set(t.name,e)}get presentableAttributes(){return this._presentableAttributes=this._presentableAttributes||new U(this),this._presentableAttributes}get title(){return this.format(this._title||"")}get description(){return this.format(this._description)}get hyperlinks(){return this._hyperlinks||(this._hyperlinks=new J(this))}get relatedFeatures(){return this._relatedFeatures}get type(){if(this.schema.typeIdField&&this.attributes.has(this.schema.typeIdField)){const e=this.attributes.get(this.schema.typeIdField);return this.schema.types.find((t=>t.id===e))}}get attachmentsInitialized(){return!this.source||this._attachmentsInitialized}get relatedFeaturesInitialized(){return!this.source||this.source.relationships.every((e=>this._initializedRelationships.has(e)))}get expressionsInitialized(){return!this.settings.popupTemplate?.expressionInfos?.length||this._expressionsInitialized}get _hydrationStatus(){return this._featureHydrationStatus?this._featureHydrationStatus:this.source?.capabilities?.supportsQuery&&1===this.attributes.size&&void 0!==this.primaryKey?"dehydrated":"hydrated"}set _hydrationStatus(e){this._featureHydrationStatus=e}get _key(){return`${this.source?.id}//${this.primaryKey??this.globalId??this.id}`}get _title(){let e;return this.settings.popupTemplate&&(e="function"==typeof this.settings.popupTemplate.title?this.settings.popupTemplate.title():this.settings.popupTemplate.title),e||this.schema.displayField&&this.presentableAttributes.get(this.schema.displayField)||""}get _description(){if(this.settings.popupTemplate?.content){if("string"==typeof this.settings.popupTemplate.content)return this.settings.popupTemplate.content;if(Array.isArray(this.settings.popupTemplate.content)){const e=this.settings.popupTemplate.content.find((e=>"text"===e.type));if(e)return e.text}}return""}_geometry;_source;_presentableAttributes;_hyperlinks;_featureHydrationStatus;_relatedFeatures;_expressionFieldValues=new p;_expressionValuesUpdatePending=!1;_attachmentsInitialized=!1;_expressionsInitialized=!1;_initializedRelationships=new WeakSet;constructor(e){super(e),this.settings=new C,this.settings._setFeature(this),this.schema=new O,this.schema._featureSettings=this.settings,this.attachments=new s,this.attributes=new h,this._relatedFeatures=new p,this.expressionFieldValues=new D(this._expressionFieldValues,this),R(this,"source.relationships",(()=>{this.notifyChange("relatedFeaturesInitialized")}),!0),this.settings.watch("popupTemplate",((e,t)=>{e!==t&&(this._expressionsInitialized=!1,this.notifyChange("expressionsInitialized"))}),!0)}format(e,...t){let s="string"==typeof e?{format:e}:e;d("options",s).isNotMissing();const{format:i}=s;d("format",i).isNotMissing();let r=s.format.replace(Z,$);return r=r.replace(G,((e,t,i,r,a)=>B(this,t||i,r,{...s,format:a?`{0:${a}}`:"{0}"}))),r=r.replace(H,"{{"),s={...s},s.format=r,T(s,...t)}clearExpressionInfos(){this._expressionFieldValues.clear()}toGraphic(){return toGraphic(this)}async fetchExpressionInfos(e=!1){const{expressionInfos:t}=this.settings.popupTemplate??{};if(!t)return;const{runAsyncArcadeExpression:s}=await import("../utilities/arcade.js");if(await Promise.all(t.map((async e=>{try{const t=this.source?.layer??this.source?.sublayer;let i=this.source?.mapExtension;if(!i){const e=this.source?.layerExtension;i=e?.mapExtension}this._expressionFieldValues.set(e.name,await s(e.expression,{layer:t,map:i?.map,feature:this,spatialReference:this.schema.spatialReference}))}catch(t){t instanceof Error&&M.error({message:"Error evaluating expression '{0}': {1}.",error:t},e.name,t.message),this._expressionFieldValues.set(e.name,K)}}))),e)return this.attributes.on("change",(async e=>{this._expressionValuesUpdatePending||(this._expressionValuesUpdatePending=!0,setTimeout((async()=>{this._expressionValuesUpdatePending=!1,await this.fetchExpressionInfos()}),0))}));this._expressionsInitialized=!0,this.notifyChange("expressionsInitialized")}async fetchRelatedFeatures(e,t){if(!this.source)return;let s=[];if(e){const t=new Set(Array.isArray(e)?e:[e]);for(const e of t){const t="string"==typeof e?this.source.relationships.find((t=>t.id===e)):e;if(!t||!this.source.relationships.includes(t))throw new n("Relationship not found in feature source.");s.push(t)}}else s=this.source.relationships.toArray();const i=await j(s,(async e=>[e,await(async()=>{const s=await e.getRelatedFeatures(this,t);return this._initializedRelationships.add(e),s})()]));for(const e of i)this._relatedFeatures.set(e[0],e[1]);this.notifyChange("relatedFeaturesInitialized")}async fetchAttachments(){if(this.source){const e=await this.source.getAttachments(this);g(this.attachments,e,{equals:(e,t)=>e.id===t.id,onMissing:(e,t)=>this.attachments.remove(e),onNew:(e,t)=>{this.attachments.add(e)},onMatch:(e,t,s,i)=>{this.attachments.splice(s,1,t)}}),this._attachmentsInitialized=!0,this.notifyChange("attachmentsInitialized")}}async addAttachment(e){return this.source?.addAttachment(this,e)}async deleteAttachments(e){return this.source?.deleteAttachments(this,e)}_getSerializableProperties(){return{...super._getSerializableProperties(),attributes:{serializeModes:["project"],serialize:e=>{const t={};if("project"===e&&this.primaryKey&&(this.source?.capabilities).supportsQuery)t[this.schema.primaryKeyField]=this.primaryKey;else for(const[e,s]of this.attributes.entries())t[e]=s;return t},deserialize:e=>{if(this.attributes.clear(),e instanceof Map)e.forEach(((e,t)=>{this.attributes.set(t,e)}));else for(const[t,s]of Object.entries(e))this.attributes.set(t,s)}},geometry:{serializeModes:["project"],serialize:e=>"project"===e&&(this.source?.capabilities).supportsQuery?this.getDefault("geometry"):this.geometry?.toJSON(),deserialize:e=>{this.geometry=e}},settings:{serializeModes:["project"],serialize:e=>"project"===e&&(this.source?.capabilities).supportsQuery?this.getDefault("settings"):this.settings.toJSON(e)},schema:{serializeModes:["project"],serialize:e=>"project"===e&&(this.source?.capabilities).supportsQuery?this.getDefault("schema"):this.schema.toJSON(e)},source:["project"]}}_watchProperty(e,t,s,i){if("title"===e||"description"===e){const r=super._watchProperty(e,t,s,i),a="title"===e?"settings.popupTemplate.title":"settings.popupTemplate.content",n=this.watch(a,(()=>{this.notifyChange(e)})),o=this.presentableAttributes.on("change",(()=>{this.notifyChange(e)}));return{remove(){r.remove(),n.remove(),o.remove()}}}return super._watchProperty(e,t,s,i)}async _onInitialize(){const e=this._findRelationshipIds(this._title,this._description),t=this.source?this.source.relationships.map((e=>e.id)).toArray():[],s=[];for(const i of e)t.includes(i)?s.push(this.fetchRelatedFeatures(i)):M.error("Could not find relationship '{0}' referenced in feature title or description.",i);await Promise.all(s)}_findRelationshipIds(...e){const t=[];for(const s of e){let e;const i=s.replace(Z,$);for(;e=L.exec(i),null!==e;){const s=e[0];t.includes(s)||t.push(e[1])}}return t}};N=e([l],N);export{N as Feature};export function toFeature(e,t){const s=new N(t);if(e.attributes)for(const t of Object.keys(e.attributes))s.attributes.set(t,e.attributes[t]);return s.geometry=e.geometry,e.popupTemplate&&(s.settings.popupTemplate=e.popupTemplate),s}export function toGraphic(e){const s=new t;s.attributes={};for(const t of e.attributes.keys())s.attributes[t]=e.attributes.get(t);return e.source?.layer&&(s.layer=e.source?.layer),s.geometry=e.geometry,e.settings.popupTemplate&&(s.popupTemplate=e.settings.popupTemplate),s}const V="Presentable attributes are read-only.",P="Feature hyperlinks are read-only. Modify the feature's hyperlink templates instead.";class D extends c{_feature;_pending=new Set;constructor(e,t){super(e),this._feature=t}get(e){return super.has(e)||this._calcExpressionValue(e),super.get(e)}async _calcExpressionValue(e){if(!this._pending.has(e)){this._pending.add(e);try{const{spatialReference:t}=this._feature.schema,s=this._feature.settings.popupTemplate?.expressionInfos?.find((t=>t.name===e));if(!s)return;const{isArcadeScriptAsync:i,runAsyncArcadeExpression:r,arcadeScriptUsesGeometry:a,runArcadeExpression:n}=await import("../utilities/arcade.js");try{if(i(s.expression,t)){const i=this._feature.source?.layer??this._feature.source?.sublayer;let a=this._feature.source?.mapExtension;if(!a){const e=this._feature.source?.layerExtension;a=e?.mapExtension}this._originalMap.set(e,await r(s.expression,{feature:this._feature,layer:i,map:a?.map,spatialReference:t}))}else{if(a(s.expression,t)){const{enableGeometrySupport:e}=await import("@arcgis/core/arcade/arcade");await e()}this._originalMap.set(e,n(s.expression,{feature:this._feature,spatialReference:t}))}}catch(t){t instanceof Error&&M.error({message:"Error evaluating expression '{0}': {1}.",error:t},e,t.message),this._originalMap.set(e,K)}}finally{this._pending.delete(e)}}}}class U extends c{[Symbol.toStringTag];get size(){return this._feature.attributes.size+this._feature.schema.fields._expressionFieldsLength}_feature;_numObservers;_onAllObserversRemoved;constructor(e){super(new h),this._feature=e}clear(){throw new n(V)}delete(e){throw new n(V)}forEach(e,t){d("callback",e).isNotMissing();for(const s of this.keys())e.call(t,this.get(s),s,this)}get(e){const t=this._getFieldExtensionFormat(e);return this._formatAttribute(e,t)}has(e){for(const t of this.keys())if(k(t,e))return!0;return!1}set(...e){throw new n(V)}*entries(){yield*I(this.keys(),(e=>[e,this.get(e)]))}*keys(){yield*this._feature.attributes.keys();for(const e of this._feature.schema.fields.expressionFields)yield e.name;if(null!=this._feature.source?.relationships)for(const e of this._feature.source.relationships)if("one-to-one"===e.cardinality||"many-to-one"===e.cardinality)for(const t of e.relatedSource.schema.fields)yield`relationships/${e.id}/${t.name}`}*values(){yield*I(this.keys(),(e=>this.get(e)))}[Symbol.iterator](){return this.entries()}toJSON(){return Array.from(this.entries())}on(e,t){if(d("callback",t).isNotMissing(),!this._numObservers){const e=new Map,t=new Set,s=()=>{for(const e of t)e.remove();t.clear()},i=()=>{const t=[],s=[];for(const[s,i]of this.entries())i!==e.get(s)&&t.push([s,i]);for(const[t,i]of e.entries())this.has(t)&&i===this.get(t)||s.push([t,i]);if(t.length||s.length){const e={added:t,removed:s,target:this};this.emit("change",e),r()}},r=()=>{e.clear(),s();for(const s of this.keys()){const r=this._getFieldExtension(s);let a="{0}";if(r){const e=r.watch("format",i);t.add(e),r.format&&(a=r.format)}e.set(s,this._formatAttribute(s,a))}};r();const a=this._feature.attributes.on("change",i),n=this._feature.schema.fieldExtensions.on("change",i),o=this._feature.settings.formatSettings.watch(["numberFormat","dateFormat","locale"],i),l=this._feature.expressionFieldValues.on("change",i),h=this._feature.schema.fields.on("change",(e=>{(e.added?.some((e=>v(e.name)))||e.removed?.some((e=>v(e.name))))&&i()})),u=this._feature.settings.watch("popupTemplate",i);this._onAllObserversRemoved=()=>{l.remove(),a.remove(),n.remove(),h.remove(),o.remove(),u.remove(),e.clear(),s()}}const s=super.on("change",t);return this._numObservers++,{remove:()=>{s.remove(),this._numObservers--,this._numObservers||this._onAllObserversRemoved()}}}watch(e,t){if("size"===e){const e=this._feature.attributes.watch("size",((e,s)=>{t(e+this._feature.schema.fields._expressionFieldsLength,s+this._feature.schema.fields._expressionFieldsLength,"size",this)})),s=this._feature.schema.fields.watch("_expressionFieldsLength",((e,s)=>{t(e+this._feature.attributes.size,s+this._feature.attributes.size,"size",this)}));return{remove:()=>{e.remove(),s.remove()}}}return super.watch(e,t)}_getFieldExtension(e){const t=this._feature.schema.findFieldByName(e);if(t)return this._feature.schema.fieldExtensions.forField(t)}_getFieldExtensionFormat(e){const t=this._getFieldExtension(e);return t?t.format:"{0}"}_formatAttribute(e,t){const s=F(e);if(null!=s)return B(this._feature,"expression",s,{format:t});const[i,r]=w(e);return null!=i?B(this._feature,i,r,{format:t}):B(this._feature,void 0,e,{format:t})}}const G=/\{(?:relationships[\\/]([\w-]*)[\\/])?(?:(expression)[\\/])?([_a-zA-ZÀ-ÖØ-öø-ÿ][._a-zA-ZÀ-ÖØ-öø-ÿ0-9]*)(?::([^}]*))?\}/gi,L=/\{relationships\/([\w-]*)[\\/]([^}]*)\}/gi,Z=/{{/g,$="\0MAGIC\0",H=new RegExp($,"g"),K="#INVALID";class J extends u{_feature;_hyperlinks;constructor(e){super(e.settings.hyperlinkTemplates,(e=>this._getHyperlink(e))),this._feature=e}_getHyperlink(e){return this._hyperlinks=this._hyperlinks||new WeakMap,this._hyperlinks.has(e)||this._hyperlinks.set(e,new Q(this._feature,e)),this._hyperlinks.get(e)}}let Q=class extends a{get url(){return this._template.url?this._feature.format(this._template.url):this._template.url}set url(e){throw new n(P)}get text(){return this._template.text?this._feature.format(this._template.text):this._template.text}set text(e){throw new n(P)}get iconUrl(){return this._template.iconUrl?this._feature.format(this._template.iconUrl):this._template.iconUrl}set iconUrl(e){throw new n(P)}get target(){return this._template.target?this._feature.format(this._template.target):this._template.target}set target(e){throw new n(P)}get tooltip(){return this._template.tooltip?this._feature.format(this._template.tooltip):this._template.tooltip}set tooltip(e){throw new n(P)}_feature;_template;constructor(e,t){super(t.toJSON()),this._feature=e,this._template=t}_watchProperty(e,t,s,i){const r=super._watchProperty(e,t,s,i),a=this._template.watch(e,(()=>{this.notifyChange(e)})),n=this._feature.presentableAttributes.on("change",(()=>{this.notifyChange(e)})),o=this._feature.relatedFeatures.on("change",(()=>{this.notifyChange(e)}));return{remove:()=>{r.remove(),a.remove(),n.remove(),o.remove()}}}_getSerializableProperties(){return{}}};function B(e,t,s,i={format:"{0}"}){if(!k(t,"expression")){if(t){const r=S(e.relatedFeatures.keys(),(e=>k(e.id,t)));if(!r)return M.debug("Could not resolve related field '{0}/{1}",t,s),K;const a=Array.from(e.relatedFeatures.get(r));return"many-to-one"===r.cardinality||"one-to-one"===r.cardinality?a.length<1?(M.debug("Could not resolve related field '{0}/{1}",t,s),K):W(a[0],s,i):a.map((e=>W(e,s,i))).filter((e=>""!==e)).join(",")}return W(e,s,i)}if(!e.settings.popupTemplate?.expressionInfos?.find((e=>k(e.name,s))))return M.debug("Could not find expression '{0}'.",s),K;try{const t=e.expressionFieldValues.get(s)??i.defaultExpressionValue??"",r=e.schema.findFieldByName(`expression/${s}`),a=null==r?void 0:e.schema.fieldExtensions.forField(r);return q(e,t,s,a?.formatSettings,i)}catch(e){if(e instanceof Error)return M.error({message:"Error evaluating expression '{0}': {1}.",error:e},s,e.message),K;throw e}}function W(e,t,s){let i=e.attributes.get(t);if(null==i)return"";const r=e.schema.findFieldByName(t),a=e.type?.domains?.[r?.name??t],n=e=>e.codedValues?.find((e=>e.code.toString()===i.toString()))?.name??i;let o;if(k(t,e.schema.typeIdField)){const t=a&&"inherited"!==a.type?a:r?.domain;i="coded-value"===t?.type?n(t):e.type?.name??i}else if(a&&b(a))i=n(a);else if(r?.domain&&b(r.domain))i=n(r.domain);else if(r){switch(r.type){case"integer":case"small-integer":case"single":case"double":i=A(i);break;case"date":i=y({timeZone:e.schema.timeZone},i);break;default:i=`${i.toString()}`}const t=e.schema.fieldExtensions.forField(r);t&&(o=t.formatSettings)}return q(e,i,t,o,s)}function q(e,t,s,i,r){if("string"==typeof t&&(null==r.format||"{0}"===r.format))return t;const a={...r};if("number"==typeof t||t instanceof Date){null==a.locale&&(a.locale=i?.locale??e.settings.formatSettings.locale);const r=e.settings.popupTemplate?.fieldInfos?.find((e=>k(e.fieldName,s)))?.format;"number"==typeof t?function(e,t,s,i){null==e.currency&&(e.currency=t?.currency??i.settings.formatSettings.currency);null==e.numberFormat&&(e.numberFormat=t?.numberFormat,null==e.numberFormat&&(e.numberFormat=null==s?i.settings.formatSettings.numberFormat:s.digitSeparator?E.NUMBER:E.FIXED_POINT));null==e.fractionalDigits&&(e.fractionalDigits=t?.fractionalDigits,null==e.fractionalDigits&&(e.fractionalDigits=null==s?i.settings.formatSettings.fractionalDigits:s.places))}(a,i,r,e):function(e,t,s,i){null==e.dateFormat&&(e.dateFormat=t?.dateFormat,null==e.dateFormat&&(e.dateFormat=null==s?i.settings.formatSettings.dateFormat:_(s.dateFormat)));null==e.timeZone&&(e.timeZone=t?.timeZone??i.settings.formatSettings.timeZone)}(a,i,r,e)}return T(a,t)}Q=e([l],Q);export async function resolveRelatedFeatures(e){const t=f(e,(e=>e.source));await Promise.all(m([...t.keys()].map((e=>e.relationships.toArray()))).map((e=>(async e=>{[...(await e.getAllRelatedFeatures(t.get(e.source))).entries()].forEach((([t,s])=>{t.relatedFeatures.set(e,s)}))})(e))))}
|
package/data/FeatureSettings.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__decorate as t}from"tslib";import e from"@arcgis/core/PopupTemplate";import{Hyperlink as i}from"../Hyperlink.js";import{isPopupContentExtension as n}from"../ItemType.js";import{ArrayWrappedCollection as o}from"../mapping/support/ArrayWrappedCollection.js";import{FormatSettings as s}from"../support/FormatSettings.js";import{InitializableCollectionProxy as r}from"../support/InitializableCollectionProxy.js";import{filterJSONProperties as p,isDefault as a,serializable as u,shouldExcludeDefaults as l}from"../support/Serializable.js";import{Settings as h}from"../support/Settings.js";import{compare as f}from"../utilities/array.js";import{checkArg as d}from"../utilities/checkArg.js";import{getAllFieldInfos as m,getAllReferencedFieldNames as c,isPopupTemplate as _}from"../utilities/esri.js";import{
|
|
1
|
+
import{__decorate as t}from"tslib";import e from"@arcgis/core/PopupTemplate";import{Hyperlink as i}from"../Hyperlink.js";import{isPopupContentExtension as n}from"../ItemType.js";import{ArrayWrappedCollection as o}from"../mapping/support/ArrayWrappedCollection.js";import{FormatSettings as s}from"../support/FormatSettings.js";import{InitializableCollectionProxy as r}from"../support/InitializableCollectionProxy.js";import{filterJSONProperties as p,isDefault as a,serializable as u,shouldExcludeDefaults as l}from"../support/Serializable.js";import{Settings as h}from"../support/Settings.js";import{compare as f}from"../utilities/array.js";import{checkArg as d}from"../utilities/checkArg.js";import{getAllFieldInfos as m,getAllReferencedFieldNames as c,isPopupTemplate as _}from"../utilities/esri.js";import{isArcadeExpressionField as g,isRelationshipField as S}from"../utilities/field.js";import{objectKeys as C}from"../utilities/object.js";import{isQueryBasedRelationship as y}from"../utilities/relationships.js";import{caseInsensitiveEquals as x}from"../utilities/string.js";import{onCollectionPropertyChange as T}from"../utilities/watch.js";import{PopupContentExtension as z,_popupContentExtensionMap as E}from"./PopupContentExtension.js";let v=class extends h{popupContentExtensions;_isDefaultPopupTemplate=!1;_popupContentCollection;get _popupContent(){return this._popupContentCollection}get hyperlinkTemplates(){return this._getCollectionSetting("hyperlinkTemplates")}get popupTemplate(){return this._getSetting("popupTemplate")}set popupTemplate(t){let i;i=t instanceof Object&&!_(t)?e.fromJSON(t):t;const n=this?._feature?.schema?.createPopupTemplate()??this?._featureSource?.schema?.createPopupTemplate();i&&n&&(i.content=i.content??n.content,i.fieldInfos=i.fieldInfos??n.fieldInfos),this._setSetting("popupTemplate",i),this._isDefaultPopupTemplate=!1}get showRelatedRecordsWhenUnconfigured(){return this._getSetting("showRelatedRecordsWhenUnconfigured",!0)}set showRelatedRecordsWhenUnconfigured(t){this._setSetting("showRelatedRecordsWhenUnconfigured",t)}get formatSettings(){return this._getNestedSettings("formatSettings",(()=>new s))}get returnGeometry(){return this._getSetting("returnGeometry",!0)}set returnGeometry(t){this._setSetting("returnGeometry",t)}get outFields(){return this._getSetting("outFields",this._defaultOutFields)}set outFields(t){this._setSetting("outFields",t)}get outSpatialReference(){return this._getSetting("outSpatialReference")}set outSpatialReference(t){this._setSetting("outSpatialReference",t)}get maxAllowableOffset(){return this._getSetting("maxAllowableOffset")}set maxAllowableOffset(t){this._setSetting("maxAllowableOffset",t)}get zoomScale(){return this._getSetting("zoomScale")}set zoomScale(t){this._setSetting("zoomScale",t)}get zoomFactor(){const t=this._feature?this._feature.schema:this._featureSource?.schema,e=t&&"point"===t.geometryType?void 0:1.5;return this._getSetting("zoomFactor",e)}set zoomFactor(t){this._setSetting("zoomFactor",t)}get featureSource(){return this._featureSource}get feature(){return this._feature}_featureSource;_feature;constructor(t){super(t),this._popupContentCollection=this._createPopupContentCollection(),this.popupContentExtensions=new A(this)}get _defaultOutFields(){const t=m(this.popupTemplate),e=this.featureSource?.schema?.primaryKeyField;if(t&&e){const i=new Set;i.add(e);const n=this.featureSource.schema.fields.toArray().map((t=>t.name)),o=new Set([...c(this.popupTemplate),...this.hyperlinkTemplates.toArray().flatMap((t=>t.getReferencedFields()))]),s=t.filter((t=>t.visible||t.isEditable&&this.featureSource.capabilities.supportsEditing)).map((t=>t.fieldName)).concat(...o).filter((t=>n.some((e=>x(e,t)))));return this._featureSource.relationships.forEach((t=>{y(t)&&s.push(t.keyField)})),s.filter((t=>!(g(t)||S(t)))).forEach((t=>i.add(t))),Array.from(i.values())}return["*"]}_setFeatureSource(t){this._featureSource=t,this.notifyChange("featureSource")}_setFeature(t){this._feature=t,this.notifyChange("feature")}toJSON(t="all"){const e=p(this._getSerializableProperties(),this,t)||{},i=e.popupContentExtensions?.filter((t=>{const e=this.parent;return!e?.popupContentExtensions?.some((e=>e.id===t.id))}));if(e)for(const t of C(e))this.isModified(t)||delete e[t];if(i?.length&&(e.popupContentExtensions=i),!l(t)||!a(e))return e}_createPopupContentCollection(){return new o({parent:this,targetProperty:"popupTemplate",arrayProperty:"content"})}_getSerializableProperties(){return{hyperlinkTemplates:{serializeModes:["initial"],deserialize:t=>{t.forEach((t=>{this.hyperlinkTemplates.find((e=>this._hyperlinksAreEquivalent(e,t)))||this.hyperlinkTemplates.add(t instanceof i?t:new i(t))})),this.hyperlinkTemplates.toArray().forEach((e=>{const i=this.hyperlinkTemplates.indexOf(e),n=t.findIndex((t=>this._hyperlinksAreEquivalent(t,e)));n<0?this.hyperlinkTemplates.removeAt(i):n!==i&&this.hyperlinkTemplates.reorder(e,n)}))}},popupTemplate:{serialize:!1},showRelatedRecordsWhenUnconfigured:{serializeModes:["initial"],default:!0},formatSettings:"initial",outFields:{serializeModes:["initial"],serialize:()=>this.isModified("outFields")?this.outFields:void 0},returnGeometry:{serializeModes:["initial"],default:!0},outSpatialReference:"initial",maxAllowableOffset:"initial",zoomScale:"initial",zoomFactor:{serializeModes:["initial"],isDefault:t=>{const e=this._feature?this._feature.schema:this._featureSource?.schema;return t===(e&&"point"===e.geometryType?void 0:1.5)}},popupContentExtensions:{serializeModes:["initial"],serialize:t=>this.popupContentExtensions.map((e=>e.toJSON(t))).filter((t=>!(t&&2===Object.keys(t).length&&t.id&&t.content))).toArray(),deserialize:t=>{t&&f(this.popupContentExtensions,t,{onNew:(t,e)=>{this.popupContentExtensions.add(n(t)?t:new z(t),e)},onMatch:(t,e,i,o)=>{n(e)||t.assignProperties(e),i!==o&&this.popupContentExtensions.reorder(t,o)},onMissing:t=>{this.popupContentExtensions.remove(t)},equals:(t,e)=>n(e)?e===t||e.id===t.id:!(!e?.content||!z.matchesRef(this.popupContentExtensions.toArray(),this.popupContentExtensions.indexOf(t),e.content))||t.id===e.id})}}}}_hyperlinksAreEquivalent(t,e){if(t===e)return!0;const i=t=>t||"";return i(t.text)===i(e.text)&&i(t.url)===i(e.url)&&i(t.iconUrl)===i(e.iconUrl)&&i(t.target)===i(e.target)&&i(t.tooltip)===i(e.tooltip)}};v=t([u],v);export{v as FeatureSettings};class A extends r{get _collection(){return this._featureSettings._popupContent.map((t=>this._forContent(t))).concat(Array.from(this._uninitializedPopupContentExtensions))}get _popupTemplateIsInherited(){return this._featureSettings.parent&&this._featureSettings.popupTemplate===this._featureSettings.parent.popupTemplate}_featureSettings;_uninitializedPopupContentExtensions=new Set;constructor(t){super(),this._featureSettings=t,T(this._featureSettings,"_popupContent",(t=>{const e={added:(t.added||[]).map((t=>this._forContent(t))),moved:(t.moved||[]).map((t=>this._forContent(t))),removed:(t.removed||[]).map((t=>this._forContent(t))),target:this};this.emit("change",e)})),t.watch("_popupContent.length",(()=>this.notifyChange("length")))}forContent(t){if(d("content",t).isNotMissing(),this._featureSettings._popupContent.includes(t))return this._forContent(t)}add(t,i){if(d("contentX",t).isNotMissing(),this._popupTemplateIsInherited&&(this._featureSettings.popupTemplate=new e({content:this._featureSettings._popupContent.toArray()})),t.featureSettings&&t.featureSettings.popupContentExtensions.remove(t),t._setFeatureSettings(this._featureSettings),t.content){const e=E.get(t.content);if(E.set(t.content,t),e&&e!==t&&this._onRemoved(e),this._featureSettings._popupContent.includes(t.content))if(void 0===i){const i={added:[t],moved:[],removed:e?[e]:[],target:this};this.emit("change",i)}else this._featureSettings._popupContent.reorder(t.content,i);else this._featureSettings._popupContent.add(t.content,i)}else{this._uninitializedPopupContentExtensions.add(t);const e={added:[t],moved:[],removed:[],target:this};this.emit("change",e)}return this._onAdded(t),this}removeAt(t){const i=this.getItemAt(t);if(void 0!==i){if(this._popupTemplateIsInherited&&(this._featureSettings.popupTemplate=new e({content:this._featureSettings._popupContent.toArray()})),this._uninitializedPopupContentExtensions.has(i)){this._uninitializedPopupContentExtensions.delete(i);const t={added:[],moved:[],removed:[i],target:this};this.emit("change",t)}else this._featureSettings._popupContent.remove(i.content);return this._onRemoved(i),i}}reorder(t,i){if(t&&this._featureSettings._popupContent.includes(t.content))return this._popupTemplateIsInherited&&(this._featureSettings.popupTemplate=new e({content:this._featureSettings._popupContent.toArray()})),this._featureSettings._popupContent.reorder(t.content,i),t}sort(t){return this._popupTemplateIsInherited&&(this._featureSettings.popupTemplate=new e({content:this._featureSettings._popupContent.toArray()})),this._featureSettings._popupContent.sort(((e,i)=>t(this._forContent(e),this._forContent(i)))),this}_itemIsInitialized(t){return super._itemIsInitialized(t)&&!!t.content}_onAdded(t){}_onRemoved(t){t.featureSettings===this._featureSettings&&t._setFeatureSettings(void 0)}_forContent(t){if(this._uninitializedPopupContentExtensions.size)for(const t of this._uninitializedPopupContentExtensions)t._resolveContent(),t.content&&(E.set(t.content,t),this._uninitializedPopupContentExtensions.delete(t));if(!E.has(t)){const e=new z({content:t});E.set(t,e),e._setFeatureSettings(this._featureSettings),this._onAdded(e)}return E.get(t)}}
|
package/data/FieldExtension.d.ts
CHANGED
|
@@ -101,5 +101,4 @@ export declare class FieldExtension extends EntityBase<FieldExtensionProperties>
|
|
|
101
101
|
protected _getSerializableProperties(): PropertyDefs<FieldExtensionProperties>;
|
|
102
102
|
protected _onInitialize(): Promise<void>;
|
|
103
103
|
private _setField;
|
|
104
|
-
private get _isArcadeExpressionField();
|
|
105
104
|
}
|
package/data/FieldExtension.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e;import{__decorate as i}from"tslib";import t from"@arcgis/core/layers/support/Field";import{EntityBase as s}from"../Entity.js";import{InvalidOperationError as r}from"../InvalidOperationError.js";import{isFieldExtension as o,ItemType as f}from"../ItemType.js";import{FormatSettings as a}from"../support/FormatSettings.js";import{serializable as n}from"../support/Serializable.js";import{esriFormatToGeocortexFormat as d}from"../utilities/date.js";import{isField as l}from"../utilities/esri.js";import{
|
|
1
|
+
var e;import{__decorate as i}from"tslib";import t from"@arcgis/core/layers/support/Field";import{EntityBase as s}from"../Entity.js";import{InvalidOperationError as r}from"../InvalidOperationError.js";import{isFieldExtension as o,ItemType as f}from"../ItemType.js";import{FormatSettings as a}from"../support/FormatSettings.js";import{serializable as n}from"../support/Serializable.js";import{esriFormatToGeocortexFormat as d}from"../utilities/date.js";import{isField as l}from"../utilities/esri.js";import{isArcadeExpressionField as h}from"../utilities/field.js";import{NumberFormat as m}from"../utilities/number.js";import{deepClone as _}from"../utilities/object.js";import{caseInsensitiveEquals as p}from"../utilities/string.js";export const _fieldExtensionMap=new WeakMap;let c=e=class extends s{get field(){return this._field}get schema(){return this._schema}get fieldInfo(){if(this._fieldInfo)return this._fieldInfo;if(!this.field?.name)return;const e=this._schema?._featureSettings?.popupTemplate,i=e?.fieldInfos||[];return this._fieldInfo=i.find((e=>p(e.fieldName,this.field.name))),this._fieldInfo}format="{0}";formatSettings=new g(this);searchable=!0;_itemType=f.FIELD_EXTENSION;_field;_fieldInfo;_schema;_deferredFieldProperties;_originalRef;constructor(e){super(e);const{field:i}=e??{};l(i)?this._setField(i):"string"==typeof i?this._deferredFieldProperties={$ref:i}:i?i.$ref?this._deferredFieldProperties=i:this._setField(t.fromJSON(i)):this._setField(new t),this.watch("_schema.featureSource",(()=>this.notifyChange("fieldInfo"))),this.watch("_schema._featureSettings",(e=>{this.formatSettings.parent=e?e.formatSettings:void 0}),!0)}static matchesRef(e,i){return o(e)?p(e.field?.name??e._deferredFieldProperties?.$ref,i.$ref??i.name):p(e.name,i.$ref??i.name)}_switchField(e){e&&this._field!==e&&(this._field=e,_fieldExtensionMap.set(e,this))}_setSchema(e){this._schema=e,this._resolveField(),this.notifyChange("schema"),this.notifyChange("fieldInfo")}_resolveField(){if(this._field||!this._deferredFieldProperties||!this._schema)return;const i=this._schema.fields.find((i=>e.matchesRef(i,this._deferredFieldProperties)));i&&(this._setField(i),this.assignProperties({field:this._deferredFieldProperties}),this._originalRef=this._deferredFieldProperties.$ref,delete this._deferredFieldProperties,_fieldExtensionMap.set(i,this))}_getSerializableProperties(){return{...super._getSerializableProperties(),field:{serializeModes:["initial"],serialize:()=>this.field?this._originalRef?{$ref:this._originalRef}:this._schema?.fields.includes(this._field)&&this.field.name?{$ref:this.field.name}:this.field.toJSON():this._deferredFieldProperties?_(this._deferredFieldProperties):void 0,deserialize:e=>{if(l(e)&&e!==this.field)throw new Error("Property 'field' is read-only.")}},searchable:{serializeModes:["initial"],isDefault:e=>e!==h(this._field?.name)},format:{serializeModes:["initial"],default:"{0}"},formatSettings:"initial"}}async _onInitialize(){if(this._resolveField(),!this._field){const e=this._deferredFieldProperties.$ref;throw this._schema?new r(`Field not found with name: ${e}. Field does not exist.`):new r(`Field not found with name: ${e}. Field does not have a parent schema.`)}}_setField(e){this._field=e,h(this._field?.name)&&(this.searchable=!1),this.notifyChange("field"),this.notifyChange("fieldInfo")}};c=e=i([n],c);export{c as FieldExtension};let g=class extends a{fieldExtension;constructor(e,i){super(i),this.fieldExtension=e,e.watch("fieldInfo.format.places",(()=>this.notifyChange("fractionalDigits"))),e.watch("fieldInfo.format.digitSeparator",(()=>this.notifyChange("numberFormat"))),e.watch("fieldInfo.format.dateFormat",(()=>this.notifyChange("dateFormat")))}get fractionalDigits(){const e=this.fieldExtension.fieldInfo?.format?.places;return!this.isModified("fractionalDigits")&&this.useFieldInfo&&e?e:this._getSetting("fractionalDigits")}set fractionalDigits(e){this._setSetting("fractionalDigits",e)}get numberFormat(){const e=this.fieldExtension.fieldInfo?.format?.digitSeparator;return!this.isModified("numberFormat")&&this.useFieldInfo&&e?e?m.NUMBER:m.FIXED_POINT:this._getSetting("numberFormat")}set numberFormat(e){this._setSetting("numberFormat",e)}get dateFormat(){const e=this.fieldExtension.fieldInfo?.format?.dateFormat;return!this.isModified("dateFormat")&&this.useFieldInfo&&e?d(e):this._getSetting("dateFormat")}set dateFormat(e){this._setSetting("dateFormat",e)}};g=i([n],g);
|
package/data/Schema.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e;import{__decorate as t}from"tslib";import i from"@arcgis/core/PopupTemplate";import s from"@arcgis/core/core/Collection";import o from"@arcgis/core/layers/support/FeatureType";import l from"@arcgis/core/layers/support/Field";import n from"@arcgis/core/popup/FieldInfo";import{InvalidOperationError as r}from"../InvalidOperationError.js";import{isFieldExtension as d}from"../ItemType.js";import{jsonToGeometryType as a}from"../json/GeometryJson.js";import{InitializableCollectionProxy as h}from"../support/InitializableCollectionProxy.js";import{filterJSONProperties as p,isDefault as m,serializable as f,shouldExcludeDefaults as c}from"../support/Serializable.js";import{Settings as u}from"../support/Settings.js";import{CollectionProxy as _}from"../utilities/CollectionProxy.js";import{checkArg as g}from"../utilities/checkArg.js";import{compare as y}from"../utilities/collection.js";import{isValidTimeZone as F,ERR_TIME_ZONE_INVALID as x}from"../utilities/date.js";import{isFeatureType as b,isField as v}from"../utilities/esri.js";import{fieldWithArcadeXRegex as S,fieldWithRelationshipRegex as z}from"../utilities/field.js";import{objectKeys as I}from"../utilities/object.js";import{caseInsensitiveEquals as T}from"../utilities/string.js";import{onCollectionPropertyChange as w}from"../utilities/watch.js";import{_fieldExtensionMap as E,FieldExtension as j}from"./FieldExtension.js";const N=new Map;N.set("objectid","oid"),N.set("oid","oid"),N.set("fid","oid"),N.set("shape","geometry"),N.set("shape__length","double"),N.set("shape_length","double"),N.set("shape__area","double"),N.set("shape_area","double"),N.set("area","double"),N.set("perimeter","double"),N.set("length","double"),N.set("fnode_","double"),N.set("tnode_","double"),N.set("lpoly_","double"),N.set("rpoly_","double"),N.set("cover_","integer"),N.set("cover_id","integer"),N.set("idtic","integer"),N.set("xtic","double"),N.set("ytic","double"),N.set("xmin","double"),N.set("ymin","double"),N.set("xmax","double"),N.set("ymax","double"),N.set("arc_","double"),N.set("subclass_","integer"),N.set("subclass_id","integer"),N.set("routelink","integer"),N.set("arclink","integer"),N.set("f_meas","double"),N.set("t_meas","double"),N.set("f_pos","double"),N.set("t_pos","double"),N.set("f_meas","double"),N.set("globalid","global-id"),N.set("guid","guid");export{S as fieldWithArcadeXRegex,z as fieldWithRelationshipRegex};const M=new WeakMap;let k=e=class extends u{fieldExtensions;fields;get spatialReference(){return this._getSetting("spatialReference")}set spatialReference(e){this._setSetting("spatialReference",e)}get primaryKeyField(){const e=this._getSetting("primaryKeyField");if(!e){const e=this.fields.filter((e=>"oid"===e.type));if(1===e.length)return e.getItemAt(0).name}return e}set primaryKeyField(e){this._setSetting("primaryKeyField",e)}get displayField(){return this._getSetting("displayField",this.primaryKeyField)}set displayField(e){!this._featureSettings?.popupTemplate||this._featureSettings.popupTemplate.title&&this._featureSettings.popupTemplate.title!==`{${this.displayField}}`||(this._featureSettings.popupTemplate.title=`{${e}}`),this._setSetting("displayField",e)}get geometryType(){return this._getSetting("geometryType")}set geometryType(e){this._setSetting("geometryType",e)}get hasGeometry(){return void 0!==this.geometryType&&null!==this.geometryType}get timeZone(){return this._getSetting("timeZone","UTC")}set timeZone(e){g("timeZone",e).satisfies((e=>F(e)),x(e)),this._setSetting("timeZone",e)}get typeIdField(){return this._getSetting("typeIdField")}set typeIdField(e){this._setSetting("typeIdField",e)}get types(){return this._getCollectionSetting("types")}get _fields(){return this._getCollectionSetting("_fields")}_featureSettings;_alwaysSerializeFieldExtensions;constructor(e){super(e),this.fieldExtensions=new C(this),this.fields=new A(this)}static createFieldInfoFromField(e){let t=!0;const i=e.name.toLowerCase();return("oid"===e.type||"geometry"===e.type||N.has(i)&&N.get(i)===e.type)&&(t=!1),new n({visible:t,fieldName:e.name,format:void 0,label:e.alias,stringFieldOption:void 0,tooltip:void 0,isEditable:e.editable})}findFieldByName(e){return this.fields.find((t=>T(t.name,e)))}toJSON(e="all"){const t=p(this._getSerializableProperties(),this,e)||{};let i=t.fieldExtensions;this.parent&&(i=i?.filter((e=>{const t=this.parent;return!t?.fieldExtensions?.some((t=>t.id===e.id))})));const{fields:s}=t;if(t)for(const e of I(t))this.isModified(e)||delete t[e];if(s&&(t.fields=s),i?.length&&(t.fieldExtensions=i),!c(e)||!m(t))return t}createPopupTemplate(){const e=this.createAllFieldInfos();return new i({fieldInfos:e,content:[{type:"fields"},{type:"attachments"}]})}createAllFieldInfos(){return this.fields.toArray().filter((e=>!!e.name)).map((t=>e.createFieldInfoFromField(t)))}_getSerializableProperties(){return{geometryType:{serialize:!1,deserialize:e=>{this.geometryType=e?a(e):void 0}},spatialReference:{serialize:!1},primaryKeyField:{serialize:!1},displayField:{serialize:!1},typeIdField:{serialize:!1},fields:{serializeModes:["initial"],serialize:()=>this.isModified("_fields")?this.fields.toArray().map((e=>e.toJSON())):void 0,deserialize:e=>{if(!e)return;const t=e.map((e=>v(e)?e:l.fromJSON(e)));y(this.fields,t,{onNew:(e,t)=>{this.fields.add(e,t)},onMatch:(e,t,i,s)=>{e!==t&&(e.alias=t.alias,e.editable=t.editable,e.length=t.length,e.nullable=t.nullable,e.type=t.type),i!==s&&this.fields.reorder(e,s)},onMissing:e=>{this.fields.remove(e)},equals:(e,t)=>T(e.name,t.name)})}},fieldExtensions:{serializeModes:["initial"],serialize:e=>this.fieldExtensions.toArray().map((t=>t.toJSON(e))).filter((e=>this._alwaysSerializeFieldExtensions||!(e&&2===Object.keys(e).length&&e.id&&e.field))),deserialize:e=>{e&&y(this.fieldExtensions,e,{onNew:(e,t)=>{this.fieldExtensions.add(d(e)?e:new j(e),t)},onMatch:(e,t,i,s)=>{d(t)||e.assignProperties(t),i!==s&&this.fieldExtensions.reorder(e,s)},onMissing:e=>{this._alwaysSerializeFieldExtensions&&this.fieldExtensions.remove(e)},equals:(e,t)=>d(t)?t===e:!(!t?.field||!j.matchesRef(e,t.field))||e.id===t.id})}},types:{serialize:!1,deserialize:e=>{if(!e)return;const t=e.map((e=>b(e)||!e?e:o.fromJSON(e)));y(this.types,t,{onNew:(e,t)=>{this.types.add(e,t)},onMatch:(e,t,i,s)=>{e!==t&&(e.name=t.name,e.templates=t.templates?[...t.templates]:[],e.domains=t.domains),i!==s&&this.types.reorder(e,s)},onMissing:e=>{this.types.remove(e)},equals:(e,t)=>e.id===t.id})}},timeZone:{serialize:!1,deserialize:e=>{e&&(this.timeZone=e)}}}}};k=e=t([f],k);export{k as Schema};class A extends _{_schema;_fieldLookup;get _createFieldLookup(){return this._collection.reduce(((e,t)=>(e.add(t),e)),new WeakSet)}get _expressionFieldsLength(){return this.expressionFields.length}get expressionFields(){if(!this._popupTemplate?.fieldInfos||!this._popupTemplate?.expressionInfos)return new s;const e=new s;for(const t of this._popupTemplate.fieldInfos){const i=t.fieldName.match(S);if(i){const s=this._popupTemplate.expressionInfos.find((e=>T(e.name,i[1])));if(s){if(!M.has(t)){const e=new l({name:t.fieldName,alias:t.label||s.title||t.fieldName,type:"number"===s.returnType?"double":"string",editable:!1});M.set(t,e)}e.add(M.get(t))}}}return e}get _collection(){return this._schema._fields.concat(this.expressionFields)}get _popupTemplate(){return this._schema._featureSettings?this._schema._featureSettings.popupTemplate:void 0}constructor(e){super(),this._schema=e,w(this._schema,"_fields",(e=>{this.emit("change",e),this._fieldLookup=void 0})),e.watch("_fields.length",(()=>this.notifyChange("length")))}includes(e){return this._fieldLookup=this._fieldLookup??this._createFieldLookup,this._fieldLookup.has(e)}clone(){return new A(this._schema)}add(e,t){g("field",e).isNotMissing(),this._fieldLookup=void 0;const i=e.name?e.name.match(S):void 0;if(i){if(!this._popupTemplate)throw new r("Cannot create a field that references an arcade expression without a feature source and popup template.");const t=this._popupTemplate.expressionInfos.find((e=>T(e.name,i[1])));if(!t)throw new r("Cannot create a field that references a non-existent arcade expression.");this._popupTemplate.fieldInfos||(this._popupTemplate.fieldInfos=[]);let s=this._popupTemplate.fieldInfos.find((t=>T(t.fieldName,e.name)));s||(s=new n({fieldName:e.name,label:t.title}),this._popupTemplate.fieldInfos.push(s));const o=M.get(s);M.set(s,e);const l={added:[e],moved:[],removed:o?[o]:[],target:this};this.emit("change",l),this.notifyChange("length"),this.notifyChange("_expressionFieldsLength")}else this._schema._fields.add(e,t);return this}removeAt(e){g("index",e).isNotMissing();const t=this.getItemAt(e);if(!t)return;this._fieldLookup=void 0;if(t.name?t.name.match(S):void 0){const e=this._popupTemplate.fieldInfos.findIndex((e=>T(e.fieldName,t.name)));this._popupTemplate.fieldInfos.splice(e,1);const i={added:[],moved:[],removed:[t],target:this};this.emit("change",i),this.notifyChange("length"),this.notifyChange("_expressionFieldsLength")}else this._schema._fields.remove(t);return t}reorder(e,t){if(e&&this._schema._fields.includes(e))return this._schema._fields.reorder(e,t),e}sort(e){return this._schema._fields.sort(e),this}}class C extends h{get _collection(){return this._schema.fields.map((e=>this._forField(e))).concat(Array.from(this._uninitializedFieldExtensions))}_schema;_uninitializedFieldExtensions=new Set;constructor(e){super(),this._schema=e,w(this._schema,"fields",(e=>{const t={added:(e.added||[]).map((e=>this._forField(e))),moved:(e.moved||[]).map((e=>this._forField(e))),removed:(e.removed||[]).map((e=>this._forField(e))),target:this};this.emit("change",t)})),e.watch("fields.length",(()=>this.notifyChange("length")))}forField(e){if(g("field",e).isNotMissing(),this._schema.fields.includes(e))return this._forField(e)}add(e,t){if(g("fieldX",e).isNotMissing(),e.schema&&e.schema.fieldExtensions.remove(e),e._setSchema(this._schema),e.field){const i=E.get(e.field);if(E.set(e.field,e),i&&i!==e&&this._onRemoved(i),this._schema.fields.includes(e.field))if(void 0===t){const t={added:[e],moved:[],removed:i?[i]:[],target:this};this.emit("change",t)}else this._schema.fields.reorder(e.field,t);else this._schema.fields.add(e.field,t)}else{this._uninitializedFieldExtensions.add(e);const t={added:[e],moved:[],removed:[],target:this};this.emit("change",t)}return this._onAdded(e),this}removeAt(e){const t=this.getItemAt(e);if(void 0!==t){if(this._uninitializedFieldExtensions.has(t)){this._uninitializedFieldExtensions.delete(t);const e={added:[],moved:[],removed:[t],target:this};this.emit("change",e)}else this._schema.fields.remove(t.field);return this._onRemoved(t),t}}reorder(e,t){if(e&&this._schema.fields.includes(e.field))return this._schema.fields.reorder(e.field,t),e}sort(e){return this._schema.fields.sort(((t,i)=>e(this._forField(t),this._forField(i)))),this}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.field}_onAdded(e){}_onRemoved(e){e.schema===this._schema&&e._setSchema(void 0)}_forField(e){if(this._uninitializedFieldExtensions.size)for(const e of this._uninitializedFieldExtensions)e._resolveField(),e.field&&(E.set(e.field,e),this._uninitializedFieldExtensions.delete(e));if(!E.has(e)){const t=new j({field:e});E.set(e,t),t._setSchema(this._schema),this._onAdded(t)}return E.get(e)}}
|
|
1
|
+
var e;import{__decorate as i}from"tslib";import t from"@arcgis/core/PopupTemplate";import s from"@arcgis/core/core/Collection";import o from"@arcgis/core/layers/support/FeatureType";import l from"@arcgis/core/layers/support/Field";import n from"@arcgis/core/popup/FieldInfo";import{InvalidOperationError as r}from"../InvalidOperationError.js";import{isFieldExtension as d}from"../ItemType.js";import{jsonToGeometryType as a}from"../json/GeometryJson.js";import{InitializableCollectionProxy as h}from"../support/InitializableCollectionProxy.js";import{filterJSONProperties as p,isDefault as m,serializable as f,shouldExcludeDefaults as c}from"../support/Serializable.js";import{Settings as _}from"../support/Settings.js";import{CaseInsensitiveObservableMap as u}from"../utilities/CaseInsensitiveObservableMap.js";import{CollectionProxy as g}from"../utilities/CollectionProxy.js";import{checkArg as y}from"../utilities/checkArg.js";import{compare as F}from"../utilities/collection.js";import{isValidTimeZone as x,ERR_TIME_ZONE_INVALID as b}from"../utilities/date.js";import{isFeatureType as v,isField as T}from"../utilities/esri.js";import{fieldWithArcadeXRegex as S,fieldWithRelationshipRegex as I,getArcadeExpressionFromField as z}from"../utilities/field.js";import{objectKeys as w}from"../utilities/object.js";import{caseInsensitiveEquals as N}from"../utilities/string.js";import{onCollectionPropertyChange as E}from"../utilities/watch.js";import{_fieldExtensionMap as C,FieldExtension as j}from"./FieldExtension.js";const k=new Map;k.set("objectid","oid"),k.set("oid","oid"),k.set("fid","oid"),k.set("shape","geometry"),k.set("shape__length","double"),k.set("shape_length","double"),k.set("shape__area","double"),k.set("shape_area","double"),k.set("area","double"),k.set("perimeter","double"),k.set("length","double"),k.set("fnode_","double"),k.set("tnode_","double"),k.set("lpoly_","double"),k.set("rpoly_","double"),k.set("cover_","integer"),k.set("cover_id","integer"),k.set("idtic","integer"),k.set("xtic","double"),k.set("ytic","double"),k.set("xmin","double"),k.set("ymin","double"),k.set("xmax","double"),k.set("ymax","double"),k.set("arc_","double"),k.set("subclass_","integer"),k.set("subclass_id","integer"),k.set("routelink","integer"),k.set("arclink","integer"),k.set("f_meas","double"),k.set("t_meas","double"),k.set("f_pos","double"),k.set("t_pos","double"),k.set("f_meas","double"),k.set("globalid","global-id"),k.set("guid","guid");export{S as fieldWithArcadeXRegex,I as fieldWithRelationshipRegex};const M=new WeakMap;let A=e=class extends _{fieldExtensions;fields;get spatialReference(){return this._getSetting("spatialReference")}set spatialReference(e){this._setSetting("spatialReference",e)}get primaryKeyField(){const e=this._getSetting("primaryKeyField");if(!e){const e=this.fields.filter((e=>"oid"===e.type));if(1===e.length)return e.getItemAt(0).name}return e}set primaryKeyField(e){this._setSetting("primaryKeyField",e)}get displayField(){return this._getSetting("displayField",this.primaryKeyField)}set displayField(e){!this._featureSettings?.popupTemplate||this._featureSettings.popupTemplate.title&&this._featureSettings.popupTemplate.title!==`{${this.displayField}}`||(this._featureSettings.popupTemplate.title=`{${e}}`),this._setSetting("displayField",e)}get geometryType(){return this._getSetting("geometryType")}set geometryType(e){this._setSetting("geometryType",e)}get hasGeometry(){return void 0!==this.geometryType&&null!==this.geometryType}get timeZone(){return this._getSetting("timeZone","UTC")}set timeZone(e){y("timeZone",e).satisfies((e=>x(e)),b(e)),this._setSetting("timeZone",e)}get typeIdField(){return this._getSetting("typeIdField")}set typeIdField(e){this._setSetting("typeIdField",e)}get types(){return this._getCollectionSetting("types")}get _fields(){return this._getCollectionSetting("_fields")}_featureSettings;_alwaysSerializeFieldExtensions;constructor(e){super(e),this.fieldExtensions=new O(this),this.fields=new L(this)}static createFieldInfoFromField(e){let i=!0;const t=e.name.toLowerCase();return("oid"===e.type||"geometry"===e.type||k.has(t)&&k.get(t)===e.type)&&(i=!1),new n({visible:i,fieldName:e.name,format:void 0,label:e.alias,stringFieldOption:void 0,tooltip:void 0,isEditable:e.editable})}findFieldByName(e){return this.fields.findFieldByName(e)}toJSON(e="all"){const i=p(this._getSerializableProperties(),this,e)||{};let t=i.fieldExtensions;this.parent&&(t=t?.filter((e=>{const i=this.parent;return!i?.fieldExtensions?.some((i=>i.id===e.id))})));const{fields:s}=i;if(i)for(const e of w(i))this.isModified(e)||delete i[e];if(s&&(i.fields=s),t?.length&&(i.fieldExtensions=t),!c(e)||!m(i))return i}createPopupTemplate(){const e=this.createAllFieldInfos();return new t({fieldInfos:e,content:[{type:"fields"},{type:"attachments"}]})}createAllFieldInfos(){return this.fields.toArray().filter((e=>!!e.name)).map((i=>e.createFieldInfoFromField(i)))}_getSerializableProperties(){return{geometryType:{serialize:!1,deserialize:e=>{this.geometryType=e?a(e):void 0}},spatialReference:{serialize:!1},primaryKeyField:{serialize:!1},displayField:{serialize:!1},typeIdField:{serialize:!1},fields:{serializeModes:["initial"],serialize:()=>this.isModified("_fields")?this.fields.toArray().map((e=>e.toJSON())):void 0,deserialize:e=>{if(!e)return;const i=e.map((e=>T(e)?e:l.fromJSON(e)));F(this.fields,i,{onNew:(e,i)=>{this.fields.add(e,i)},onMatch:(e,i,t,s)=>{e!==i&&(e.alias=i.alias,e.editable=i.editable,e.length=i.length,e.nullable=i.nullable,e.type=i.type),t!==s&&this.fields.reorder(e,s)},onMissing:e=>{this.fields.remove(e)},equals:(e,i)=>N(e.name,i.name)})}},fieldExtensions:{serializeModes:["initial"],serialize:e=>this.fieldExtensions.toArray().map((i=>i.toJSON(e))).filter((e=>this._alwaysSerializeFieldExtensions||!(e&&2===Object.keys(e).length&&e.id&&e.field))),deserialize:e=>{e&&F(this.fieldExtensions,e,{onNew:(e,i)=>{this.fieldExtensions.add(d(e)?e:new j(e),i)},onMatch:(e,i,t,s)=>{d(i)||e.assignProperties(i),t!==s&&this.fieldExtensions.reorder(e,s)},onMissing:e=>{this._alwaysSerializeFieldExtensions&&this.fieldExtensions.remove(e)},equals:(e,i)=>d(i)?i===e:!(!i?.field||!j.matchesRef(e,i.field))||e.id===i.id})}},types:{serialize:!1,deserialize:e=>{if(!e)return;const i=e.map((e=>v(e)||!e?e:o.fromJSON(e)));F(this.types,i,{onNew:(e,i)=>{this.types.add(e,i)},onMatch:(e,i,t,s)=>{e!==i&&(e.name=i.name,e.templates=i.templates?[...i.templates]:[],e.domains=i.domains),t!==s&&this.types.reorder(e,s)},onMissing:e=>{this.types.remove(e)},equals:(e,i)=>e.id===i.id})}},timeZone:{serialize:!1,deserialize:e=>{e&&(this.timeZone=e)}}}}};A=e=i([f],A);export{A as Schema};class L extends g{_schema;_schemaFieldsHandle;_fieldNameToField;_backingCollection;_expressionFields;get _expressionFieldsLength(){return this.expressionFields.length}get expressionFields(){return null==this._expressionFields&&this._generateExpressionFields(),this._expressionFields}get _collection(){return null==this._backingCollection&&this._generateCollection(),this._backingCollection}get _popupTemplate(){return this._schema._featureSettings?this._schema._featureSettings.popupTemplate:void 0}constructor(e){super(),this._schema=e,E(this._schema,"_fields",(e=>{this.emit("change",e)})),e.watch("_fields.length",(()=>{this.notifyChange("length")})),e.watch(["_featureSettings.popupTemplate.fieldInfos","_featureSettings.popupTemplate.expressionInfos"],(()=>{this._resetLookups()}),!0),null!=e._fields&&(this._schemaFieldsHandle=e._fields.on("after-changes",(()=>{this._resetLookups()}))),e.watch("_fields",(e=>{this._schemaFieldsHandle?.remove(),this._schemaFieldsHandle=e?.on("after-changes",(()=>{this._resetLookups()})),this._resetLookups()}),!0)}clone(){return new L(this._schema)}add(e,i){y("field",e).isNotMissing(),this._backingCollection=void 0,this._fieldNameToField=void 0;const t=z(e.name);if(t){if(!this._popupTemplate)throw new r("Cannot create a field that references an arcade expression without a feature source and popup template.");const i=this._popupTemplate.expressionInfos.find((e=>N(e.name,t)));if(!i)throw new r("Cannot create a field that references a non-existent arcade expression.");this._popupTemplate.fieldInfos||(this._popupTemplate.fieldInfos=[]);let s=this._popupTemplate.fieldInfos.find((i=>N(i.fieldName,e.name)));s||(s=new n({fieldName:e.name,label:i.title}),this._popupTemplate.fieldInfos.push(s));const o=M.get(s);M.set(s,e),null!=this._expressionFields&&(this._expressionFields.remove(o),this._expressionFields.includes(e)||this._expressionFields.add(e));const l={added:[e],moved:[],removed:o?[o]:[],target:this};this.emit("change",l),this.notifyChange("length"),this.notifyChange("_expressionFieldsLength")}else this._schema._fields.add(e,i);return this}removeAt(e){y("index",e).isNotMissing();const i=this.getItemAt(e);if(!i)return;this._backingCollection=void 0,this._fieldNameToField=void 0;if(z(i.name)){const e=this._popupTemplate.fieldInfos.findIndex((e=>N(e.fieldName,i.name)));this._popupTemplate.fieldInfos.splice(e,1),this._expressionFields?.remove(i);const t={added:[],moved:[],removed:[i],target:this};this.emit("change",t),this.notifyChange("length"),this.notifyChange("_expressionFieldsLength")}else this._schema._fields.remove(i);return i}reorder(e,i){if(e&&this._schema._fields.includes(e))return this._backingCollection=void 0,this._schema._fields.reorder(e,i),e}sort(e){return this._backingCollection=void 0,this._schema._fields.sort(e),this}findFieldByName(e){return null==this._fieldNameToField&&this._generateNameLookup(),this._fieldNameToField.get(e)}_generateExpressionFields(){if(this._expressionFields=new s,this._popupTemplate?.fieldInfos&&this._popupTemplate?.expressionInfos)for(const e of this._popupTemplate.fieldInfos){const i=z(e.fieldName);if(null==i)continue;const t=this._popupTemplate.expressionInfos.find((e=>N(e.name,i)));if(null==t)continue;if(M.has(e)){this._expressionFields.add(M.get(e));continue}const s=new l({name:e.fieldName,alias:e.label||t.title||e.fieldName,type:"number"===t.returnType?"double":"string",editable:!1});M.set(e,s),this._expressionFields.add(M.get(e))}}_generateCollection(){this._backingCollection=this._schema._fields.concat(this.expressionFields)}_generateNameLookup(){const e=new u;for(const i of this._collection)e.set(i.name,i);this._fieldNameToField=e}_resetLookups(){this._backingCollection=void 0,this._expressionFields=void 0,this._fieldNameToField=void 0}}class O extends h{get _collection(){return this._schema.fields.map((e=>this._forField(e))).concat(Array.from(this._uninitializedFieldExtensions))}_schema;_uninitializedFieldExtensions=new Set;constructor(e){super(),this._schema=e,E(this._schema,"fields",(e=>{const i={added:(e.added||[]).map((e=>this._forField(e))),moved:(e.moved||[]).map((e=>this._forField(e))),removed:(e.removed||[]).map((e=>this._forField(e))),target:this};this.emit("change",i)})),e.watch("fields.length",(()=>this.notifyChange("length")))}forField(e){if(y("field",e).isNotMissing(),this._schema.fields.includes(e))return this._forField(e)}add(e,i){if(y("fieldX",e).isNotMissing(),e.schema&&e.schema.fieldExtensions.remove(e),e._setSchema(this._schema),e.field){const t=C.get(e.field);if(C.set(e.field,e),t&&t!==e&&this._onRemoved(t),this._schema.fields.includes(e.field))if(void 0===i){const i={added:[e],moved:[],removed:t?[t]:[],target:this};this.emit("change",i)}else this._schema.fields.reorder(e.field,i);else this._schema.fields.add(e.field,i)}else{this._uninitializedFieldExtensions.add(e);const i={added:[e],moved:[],removed:[],target:this};this.emit("change",i)}return this._onAdded(e),this}removeAt(e){const i=this.getItemAt(e);if(void 0!==i){if(this._uninitializedFieldExtensions.has(i)){this._uninitializedFieldExtensions.delete(i);const e={added:[],moved:[],removed:[i],target:this};this.emit("change",e)}else this._schema.fields.remove(i.field);return this._onRemoved(i),i}}reorder(e,i){if(e&&this._schema.fields.includes(e.field))return this._schema.fields.reorder(e.field,i),e}sort(e){return this._schema.fields.sort(((i,t)=>e(this._forField(i),this._forField(t)))),this}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.field}_onAdded(e){}_onRemoved(e){e.schema===this._schema&&e._setSchema(void 0)}_forField(e){if(this._uninitializedFieldExtensions.size)for(const e of this._uninitializedFieldExtensions)e._resolveField(),e.field&&(C.set(e.field,e),this._uninitializedFieldExtensions.delete(e));if(!C.has(e)){const i=new j({field:e});C.set(e,i),i._setSchema(this._schema),this._onAdded(i)}return C.get(e)}}
|
package/data/_TableExtension.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__decorate as e}from"tslib";import t from"@arcgis/core/core/Collection";import{InvalidOperationError as i}from"../InvalidOperationError.js";import{ItemType as
|
|
1
|
+
import{__decorate as e}from"tslib";import t from"@arcgis/core/core/Collection";import{InvalidOperationError as i}from"../InvalidOperationError.js";import{ItemType as s}from"../ItemType.js";import{applyJsonToTable as r,jsonToTable as a,tableToJson as l}from"../json/TableJson.js";import{serializable as o}from"../support/Serializable.js";import{CollectionProxy as n}from"../utilities/CollectionProxy.js";import{isFeatureLayer as h,isLayer as b}from"../utilities/_layers.js";import{checkArg as d}from"../utilities/checkArg.js";import{deepClone as f}from"../utilities/object.js";import{FeatureSettings as p}from"./FeatureSettings.js";import{FeatureSourceBase as _}from"./FeatureSourceBase.js";import{FieldExtension as c}from"./FieldExtension.js";import{Schema as g}from"./Schema.js";const m="Invalid type of table for this type of table extension.",u="Spatial settings are not supported for tables.",T=Object.freeze({supportsAdd:!1,supportsUpdate:!1,supportsDelete:!1,supportsEditing:!1,supportsQuery:!1,supportsAttachmentEditing:!1,supportsStandardizedQueries:!1});export class TableExtension extends _{static factory;get mapExtension(){return this._mapExtension}get table(){return this._table}get capabilities(){return T}get title(){return this.table?.title??this._deferredTableProperties?.title??("string"==typeof this._deferredTableProperties?.$ref?this._deferredTableProperties?.$ref:this._deferredTableProperties?.$ref?.title??this._deferredTableProperties?.$ref?.id)??"Table"}get canChangeDefinitionExpression(){return!1}get _tableId(){return this.table?.id??this._deferredTableProperties?.$ref?.id}_itemType=s.TABLE_EXTENSION;_table;_mapExtension;_deferredTableProperties;_originalRef;constructor(e){super(e);const{table:t}={...this.getDefaults(),...e};if(b(t))d("properties.table",t).satisfies((e=>h(e)),m),this._setTable(t);else{if(!t)throw new Error("Missing 'table' property.");this._deferredTableProperties=t}}static create(e){if(!TableExtension.factory)throw new i("Cannot create table extension: no table extension factory has been registered.");return TableExtension.factory.create(e)}static _matchesRef(e,t){if(!e||!t)return!1;const i=e.table?.id??e._deferredTableProperties.id,s=e.table?.title??e._deferredTableProperties.title,r=t.$ref;return"string"==typeof r?i===r||s===r:!!r&&(i===r.id||s===r.title)}async _createBackingTable(){this.table||this._deferredTableProperties?.$ref||(this._setTable(await a(this._deferredTableProperties)),await this.table.load(),d("properties.table",this.table).satisfies((e=>this._isSupportedTable(e)),m),this._deferredTableProperties=void 0)}async _switchTable(e){if(e===this.table)return;d("newTable",e).isNotMissing().satisfies((e=>this._isSupportedTable(e)),m),this.isInitialized&&await e.load(),e.visible=this.table.visible,e.opacity=this.table.opacity,e.listMode=this.table.listMode,e.hasOwnProperty("labelsVisible")&&this.table.hasOwnProperty("labelsVisible")&&(e.labelsVisible=this.table.labelsVisible);const t=this.schema.fieldExtensions.toArray();this._setTable(e),t.forEach((e=>{const t=this.schema.fields.find((t=>c.matchesRef(e,{$ref:t.name})));t&&e._switchField(t)})),this.isInitialized&&await this._initializeChildren()}_setMapExtension(e){if(this.mapExtension===e)return;const t=this.mapExtension;this._mapExtension=e,t&&this.featureSettings.formatSettings.parent===t.formatSettings&&(this.featureSettings.formatSettings.parent=void 0),e&&(this.featureSettings.formatSettings.parent||(this.featureSettings.formatSettings.parent=e.formatSettings)),this._resolveTable(),this.notifyChange("mapExtension")}_resolveTable(){if(this._table||!this._deferredTableProperties||!this.mapExtension)return;let e;e="string"==typeof this._deferredTableProperties.$ref?{id:this._deferredTableProperties.$ref,title:this._deferredTableProperties.$ref}:this._deferredTableProperties.$ref;let t=this._mapExtension.map?.tables.find((t=>t.id===e.id));if(t||(t=this._mapExtension.map?.tables.find((t=>t.title===e.title))),t&&this._isSupportedTable(t)){this._setTable(t);const e={table:this._deferredTableProperties};this.assignProperties(e),this._originalRef=this._deferredTableProperties.$ref,this._deferredTableProperties=void 0}}_getSerializableProperties(){return{...super._getSerializableProperties(),table:{serializeModes:["initial","project"],serialize:()=>this.table?this._mapExtension&&(this.table.id||this.table.title)?this._originalRef?{$ref:this._originalRef}:{$ref:{id:this.table.id,title:this.table.title}}:l(this.table):this._deferredTableProperties?f(this._deferredTableProperties):void 0,deserialize:e=>{if(b(e)){if(e!==this.table)throw new Error("Property 'table' is read-only.")}else{if(this.table)return r(e,this.table);this._deferredTableProperties&&(this._deferredTableProperties={...this._deferredTableProperties,...e})}}}}}async _onInitialize(){if(await super._onInitialize(),await this._createBackingTable(),this._resolveTable(),!this.table){const e=this._deferredTableProperties.$ref;throw this._mapExtension?new i(`No table found matching reference "${"string"==typeof e?e:JSON.stringify(e)}".`):new i("Cannot resolve table reference: missing parent map extension.")}await this.table.load()}_createSchema(){return new y(this)}_createFeatureSettings(){return new x}_setTable(e){this._table=e,this.notifyChange("table"),this.notifyChange("title"),this.notifyChange("capabilities")}}let y=class extends g{_tableExtension;_tableBindings=new Map;_fieldCollection;constructor(e){if(super(),this._tableExtension=e,this._bindSettingToTableProperty("primaryKeyField","objectIdField"),this._fieldCollection=this._createFieldCollection(),e.table)this._onTableResolved(e.table);else{const t=e.watch("table",(()=>{this._onTableResolved(e.table),t.remove()}),!0)}this.notifyChange("_fields")}get _fields(){return this._fieldCollection}get geometryType(){}set geometryType(e){throw new i("Tables do not support a geometry type.")}get spatialReference(){}set spatialReference(e){throw new i("Tables do not support a spatial reference.")}_getSetting(e,t){return this._tableBindings.has(e)&&this._tableExtension.table?this._tableExtension.table[this._tableBindings.get(e)]:super._getSetting(e,t)}_setSetting(e,t){this._tableBindings.has(e)&&this._tableExtension.table?this._tableExtension.table[this._tableBindings.get(e)]=t:super._setSetting(e,t)}_bindSettingToTableProperty(e,t){const i=t??e;this._tableBindings.set(e,i),this._tableExtension.watch(`table.${i}`,(()=>this.notifyChange(e)),!0)}_onTableResolved(e){for(const[t,i]of this._tableBindings.entries())this.isModified(t)&&(e[i]=this[t],this.reset(t))}_createFieldCollection(){return new w(this._tableExtension)}};y=e([o],y);export{y as TableSchema};class w extends n{_tableResolved=!1;constructor(e){super();const i=e.table;if(i?.fields)this._onTableResolved(e.table);else{this._collection=new t;const i=e.watch(["table","table.loaded"],(()=>{const t=e.table;t?.fields&&(this._onTableResolved(e.table),i.remove())}),!0)}}_onTableResolved(e){if(!this._tableResolved){this._tableResolved=!0;const i=e;this.length&&(i.fields.length=0,i.fields.push(...this.toArray())),i.fields||(i.fields=[]),this._collection=function(e){const i=new t;return Object.defineProperty(i,"_items",{get:()=>e}),Object.defineProperty(i,"length",{get:()=>e.length,set:t=>e.length=t}),i}(i.fields)}}}let x=class extends p{get returnGeometry(){}set returnGeometry(e){throw new i(u)}get outSpatialReference(){}set outSpatialReference(e){throw new i(u)}get maxAllowableOffset(){}set maxAllowableOffset(e){throw new i(u)}get zoomScale(){}set zoomScale(e){throw new i(u)}get zoomFactor(){}set zoomFactor(e){throw new i(u)}};x=e([o],x);export{x as TableFeatureSettings};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.navigationData = "data:application/octet-stream;base64,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"
|
|
1
|
+
window.navigationData = "data:application/octet-stream;base64,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"
|