@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 3.23 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
*/
import{_ as e}from"../chunks/tslib.es6.js";import s from"../core/JSONSupport.js";import{clone as t}from"../core/lang.js";import{addMaybe as r,addMany as o}from"../core/SetUtils.js";import{property as i}from"../core/accessorSupport/decorators/property.js";import{cast as n}from"../core/accessorSupport/decorators/cast.js";import{reader as l}from"../core/accessorSupport/decorators/reader.js";import{subclass as p}from"../core/accessorSupport/decorators/subclass.js";import{writer as c}from"../core/accessorSupport/decorators/writer.js";import m from"./ExpressionInfo.js";import a from"./elements/GroupElement.js";import{ensureType as d,fromJSON as f,toJSON as u,isTextElement as h,isGroupElement as y,isFieldElement as j,buildTypeMaps as x}from"./support/formUtils.js";import{collectArcadeFieldNames as E,collectField as w,collectFields as v,extractSubstitutionTemplatesFromString as S}from"../layers/support/fieldUtils.js";var I;const b=x(a);let F=I=class extends s{constructor(e){super(e),this.description=null,this.elements=null,this.expressionInfos=null,this.preserveFieldValuesWhenHidden=!1,this.title=null}castElements(e){return d(e,b)}readElements(e,s){return f(s.formElements,b)}writeElements(e,s){s.formElements=u(e,b)}clone(){return new I({description:this.description,expressionInfos:t(this.expressionInfos),elements:t(this.elements),title:this.title,preserveFieldValuesWhenHidden:this.preserveFieldValuesWhenHidden})}async getFieldsUsed(e,s){const t=new Set,{description:r,elements:o,expressionInfos:i,title:n}=this;if(U(t,e,r),U(t,e,n),!o)return[];const l=k(o,i).map((s=>E(t,e,s)));await Promise.all(l);for(const p of o)g(t,{fieldsIndex:e,relationships:s},p);return Array.from(t).sort()}};function g(e,s,t){const{fieldsIndex:r}=s;if(!r||r.fields.length!==e.size)switch(U(e,r,t.label),U(e,r,t.description),t.type){case"field":w(e,r,t.fieldName);break;case"group":t.elements.forEach((t=>g(e,s,t)));break;case"relationship":if(s.relationships){const o=s.relationships.find((e=>e.id===t.relationshipId));o&&w(e,r,o.keyField)}v(e,r,t.orderByFields?.map((e=>e.field)));break;case"text":U(e,r,t.text)}}function k(e,s){if(!s||0===s.length)return[];const t=H(e),r=[];for(const o of s)t.has(o.name)&&r.push(o.expression);return r}function H(e){const s=new Set;for(const t of e)if(r(s,t.visibilityExpression),!h(t))if(y(t))o(s,H(t.elements));else if(r(s,t.editableExpression),j(t)){const{requiredExpression:e,valueExpression:r}=t;o(s,[e,r])}return s}function U(e,s,t){v(e,s,S(t))}e([i({type:String,json:{write:!0}})],F.prototype,"description",void 0),e([i({json:{write:!0}})],F.prototype,"elements",void 0),e([n("elements")],F.prototype,"castElements",null),e([l("elements",["formElements"])],F.prototype,"readElements",null),e([c("elements")],F.prototype,"writeElements",null),e([i({type:[m],json:{write:!0}})],F.prototype,"expressionInfos",void 0),e([i({type:Boolean,json:{default:!1,write:!0}})],F.prototype,"preserveFieldValuesWhenHidden",void 0),e([i({type:String,json:{write:!0}})],F.prototype,"title",void 0),F=I=e([p("esri.form.FormTemplate")],F);const V=F;export{V as default};