@arcgis/core 4.28.0-rc.2 → 4.28.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/arcade/ArcadeDate.js +1 -1
- package/arcade/functions/featuresetbase.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{0e354096ad8817971eed.js → 02d235849ba93541d7ad.js} +1 -1
- package/assets/esri/core/workers/chunks/0422c5160491fbcf01dc.js +1 -0
- package/assets/esri/core/workers/chunks/1da721608993783dc9cf.js +1 -0
- package/assets/esri/core/workers/chunks/224e79f6c172da444e0a.js +1 -0
- package/assets/esri/core/workers/chunks/{ca3d5803cdf035d7389d.js → 30776102fbab294bfe7b.js} +1 -1
- package/assets/esri/core/workers/chunks/{61dec8399919b278b636.js → 3ac9001b19a90faf5573.js} +1 -1
- package/assets/esri/core/workers/chunks/{fa6103e3d4e857b0035b.js → 3dcb2a82e1e4b520c9c9.js} +11 -8
- package/assets/esri/core/workers/chunks/41081c921037e543a22f.js +1 -0
- package/assets/esri/core/workers/chunks/4564a7885d045a850887.js +1 -0
- package/assets/esri/core/workers/chunks/4adf3a8c6b49c381a633.js +1 -0
- package/assets/esri/core/workers/chunks/{2721aa6b6941b28b9758.js → 63c8bf00120a4e67f5b0.js} +1 -1
- package/assets/esri/core/workers/chunks/6bc1f6f8a2408fa4bb6a.js +1 -0
- package/assets/esri/core/workers/chunks/74951370a341f02d3714.js +1 -0
- package/assets/esri/core/workers/chunks/78e49a70193e5adea17c.js +1 -0
- package/assets/esri/core/workers/chunks/7b8377b3a9f78f9d3613.js +1 -0
- package/assets/esri/core/workers/chunks/{fd28400141a6751327ae.js → 7cf7f2b991a7cbdad2ce.js} +1 -1
- package/assets/esri/core/workers/chunks/830d99e6c58a52a58973.js +1 -0
- package/assets/esri/core/workers/chunks/{1a723bb4a341f645e5fe.js → 83b8141f0c80e3448012.js} +1 -1
- package/assets/esri/core/workers/chunks/8f7997e8e6ee9e56239f.js +1 -0
- package/assets/esri/core/workers/chunks/934c32c49bb9e21482fd.js +1 -0
- package/assets/esri/core/workers/chunks/{a4341ec0fe89b865d849.js → a160576f21ada91995ac.js} +1 -1
- package/assets/esri/core/workers/chunks/a1e16c33f1843dbdce26.js +1 -0
- package/assets/esri/core/workers/chunks/{d07235ce2765a25b9be4.js → a50ec5b647a160199cb2.js} +1 -1
- package/assets/esri/core/workers/chunks/b6bd31674076e543d8b2.js +1 -0
- package/assets/esri/core/workers/chunks/{77923afde29ae1ff10ca.js → b6e86e179f99b5cf8dff.js} +1 -1
- package/assets/esri/core/workers/chunks/c3ddf5dbc34f118002df.js +1 -0
- package/assets/esri/core/workers/chunks/{562eafa5090827ebb7ec.js → c87e9280681c20d042b5.js} +1 -1
- package/assets/esri/core/workers/chunks/{7b3d5f044c96e2c2af11.js → d191267d91a53db42956.js} +1 -1
- package/assets/esri/core/workers/chunks/ffa330a19a09679212fb.js +1 -0
- package/assets/esri/themes/base/widgets/_BasemapGallery.scss +9 -13
- package/assets/esri/themes/base/widgets/_Features.scss +5 -0
- package/assets/esri/themes/base/widgets/_Legend.scss +1 -1
- package/assets/esri/themes/base/widgets/_Popup.scss +0 -1
- package/assets/esri/themes/base/widgets/_TimeZoneLabel.scss +3 -3
- package/assets/esri/themes/dark/main.css +1 -1
- package/assets/esri/themes/light/main.css +1 -1
- package/assets/esri/themes/light/view.css +1 -1
- package/geometry/support/meshUtils/georeference.js +1 -1
- package/interfaces.d.ts +1506 -314
- package/intl/date.js +1 -1
- package/kernel.js +1 -1
- package/layers/FeatureLayer.js +1 -1
- package/layers/GroupLayer.js +1 -1
- package/layers/OrientedImageryLayer.js +1 -1
- package/layers/SceneLayer.js +1 -1
- package/layers/graphics/controllers/I3SOnDemandController.js +1 -1
- package/layers/graphics/data/QueryEngineResult.js +1 -1
- package/layers/graphics/data/queryValidationUtils.js +1 -1
- package/layers/mixins/ArcGISMapService.js +1 -1
- package/layers/save/groupLayerUtils.js +1 -1
- package/layers/save/utils.js +1 -1
- package/layers/support/ImageElement.js +1 -1
- package/layers/support/LayerContingentValuesCache.js +1 -1
- package/layers/support/Sublayer.js +1 -1
- package/layers/support/Subtype.d.ts +4 -0
- package/layers/support/Subtype.js +1 -1
- package/layers/support/imageryRendererUtils.js +1 -1
- package/networks/Network.js +1 -1
- package/package.json +1 -1
- package/portal/support/jsonContext.js +1 -1
- package/portal/support/layersLoader.js +1 -1
- package/rest/featureService/FeatureService.d.ts +4 -0
- package/rest/featureService/FeatureService.js +1 -1
- package/rest/featureService/utils.d.ts +4 -0
- package/rest/query/operations/query.js +1 -1
- package/smartMapping/support/utils.js +1 -1
- package/statistics/utils.js +1 -1
- package/support/basemapUtils.js +1 -1
- package/support/revision.js +1 -1
- package/versionManagement/VersionManagementService.d.ts +4 -0
- package/versionManagement/VersionManagementService.js +1 -1
- package/views/2d/engine/Container.js +1 -1
- package/views/2d/engine/vectorTiles/VTLPainter3D.js +1 -1
- package/views/2d/engine/webgl/Overlay.js +1 -1
- package/views/2d/input/handlers/KeyPan.js +1 -1
- package/views/2d/interactive/editingTools/manipulations/DragManipulation.js +1 -1
- package/views/2d/layers/FeatureLayerView2D.js +1 -1
- package/views/3d/analysis/Slice/RotateManipulator.js +1 -1
- package/views/3d/analysis/Slice/ShiftManipulator.js +1 -1
- package/views/3d/interactive/editingTools/transformGraphic/ExtentTransformTool.js +1 -1
- package/views/3d/interactive/measurementTools/areaMeasurement3D/AreaMeasurement3DView.js +1 -1
- package/views/3d/interactive/visualElements/LineVisualElement.js +1 -1
- package/views/3d/layers/I3SMeshView3D.js +1 -1
- package/views/3d/layers/MediaLayerView3D.js +1 -1
- package/views/3d/layers/SceneLayerWorker.js +1 -1
- package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/defaultSymbolComplexity.js +1 -1
- package/views/3d/layers/graphics/elevationAlignPointsInFeatures.js +1 -1
- package/views/3d/layers/i3s/I3SClientNodeLoader.js +1 -1
- package/views/3d/support/MemoryController.js +1 -1
- package/views/3d/support/PBFDecoder.js +1 -1
- package/views/3d/support/ResourceController.js +1 -1
- package/views/3d/terrain/OverlayFramebufferObject.js +1 -1
- package/views/3d/webgl-engine/core/FBOCache.js +1 -1
- package/views/3d/webgl-engine/core/FBOPool.js +5 -0
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/InstancedDoublePrecision.glsl.js +9 -6
- package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js +2 -2
- package/views/3d/webgl-engine/effects/highlight/Highlight.js +1 -1
- package/views/3d/webgl-engine/effects/ssao/SSAO.js +1 -1
- package/views/3d/webgl-engine/lib/Camera.js +1 -1
- package/views/3d/webgl-engine/lib/OffscreenRendering.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/Texture.js +1 -1
- package/views/3d/webgl-engine/lib/textureUtils.js +1 -1
- package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
- package/views/3d/webgl-engine/parts/RenderView.js +1 -1
- package/views/3d/webgl-engine/parts/ScreenshotManager.js +1 -1
- package/views/3d/webgl-engine/shaders/sources/edgeRenderer/EdgeUtil.glsl.js +1 -1
- package/views/draw/DrawOperation.js +1 -1
- package/views/draw/support/Reshape.js +1 -1
- package/views/interactive/sketch/constraints.js +1 -1
- package/views/interactive/snapping/FeatureSnappingEngine.js +1 -1
- package/views/interactive/snapping/featureSources/FeatureCollectionSnappingSource.js +1 -1
- package/views/interactive/snapping/featureSources/FeatureServiceSnappingSource.js +1 -1
- package/views/interactive/snapping/featureSources/GraphicsSnappingSource.js +1 -1
- package/views/interactive/snapping/featureSources/featureServiceSource/FeatureServiceSnappingSourceWorker.js +1 -1
- package/views/interactive/snapping/featureSources/featureServiceSource/FeatureServiceSnappingSourceWorkerHandle.js +1 -1
- package/views/interactive/snapping/featureSources/queryEngineUtils.js +1 -1
- package/views/interactive/snapping/featureSources/snappingCandidateElevationAlignment.js +1 -1
- package/webdoc/support/writeUtils.js +1 -1
- package/widgets/BasemapGallery.js +1 -1
- package/widgets/DirectionalPad.js +1 -1
- package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
- package/widgets/Editor/EditorViewModel.js +1 -1
- package/widgets/Editor/UpdateRecordWorkflow.js +1 -1
- package/widgets/Editor/UpdateWorkflow.js +1 -1
- package/widgets/Editor/VisibleElements.js +1 -1
- package/widgets/Editor/workflowUtils.js +1 -1
- package/widgets/Editor.js +1 -1
- package/widgets/FeatureForm/FieldInput.js +1 -1
- package/widgets/FeatureForm/FormExpressionsManager.js +1 -1
- package/widgets/FeatureForm.js +1 -1
- package/widgets/Features.js +1 -1
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.d.ts +4 -0
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer.js +1 -1
- package/widgets/TimeSlider.js +1 -1
- package/widgets/TimeZoneLabel.js +1 -1
- package/widgets/UtilityNetworkTrace/UtilityNetworkTraceViewModel.js +1 -1
- package/widgets/UtilityNetworkTrace.js +1 -1
- package/widgets/support/dateUtils.js +1 -1
- package/assets/esri/core/workers/chunks/00da3c16741a9bc47f3a.js +0 -1
- package/assets/esri/core/workers/chunks/0e4646d14fa0775bf463.js +0 -1
- package/assets/esri/core/workers/chunks/4e0bf30da4281070e453.js +0 -1
- package/assets/esri/core/workers/chunks/51b8913dff24e693bd25.js +0 -1
- package/assets/esri/core/workers/chunks/5e907ec0ee1565b5fbbc.js +0 -1
- package/assets/esri/core/workers/chunks/7388fd97e7b1a2142744.js +0 -1
- package/assets/esri/core/workers/chunks/7648f3341b7dff2825c3.js +0 -1
- package/assets/esri/core/workers/chunks/92d8f75e616afa5c761e.js +0 -1
- package/assets/esri/core/workers/chunks/9c77d69a13ec22cdd760.js +0 -1
- package/assets/esri/core/workers/chunks/a821fa1870b83fed5d31.js +0 -1
- package/assets/esri/core/workers/chunks/a877a4826cd6a46ec99b.js +0 -1
- package/assets/esri/core/workers/chunks/b251d8a856dc8b9406e0.js +0 -1
- package/assets/esri/core/workers/chunks/c416df0668f6c596095f.js +0 -1
- package/assets/esri/core/workers/chunks/d8c696da42f8f8919b83.js +0 -1
- package/assets/esri/core/workers/chunks/f0d342303fc20e266d27.js +0 -1
- package/assets/esri/core/workers/chunks/fac3e57784d7f37053af.js +0 -1
- package/assets/esri/core/workers/chunks/fc95b1a36ed68b851400.js +0 -1
- package/widgets/DirectionalPad/DirectionalPadViewModel.d.ts +0 -4
- package/widgets/DirectionalPad.d.ts +0 -4
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../core/Error.js";import{clone as t}from"../../core/lang.js";import{getDeepValue as n}from"../../core/object.js";import{numberToJSON as r}from"../../core/accessorSupport/extensions/serializableProperty/writer.js";import{isFeatureCollectionLayer as i}from"../../layers/support/layerUtils.js";const o=new Set(["bing-maps","imagery","imagery-tile","map-image","open-street-map","tile","unknown","unsupported","vector-tile","web-tile","wms","wmts"]),l=new Set(["csv","feature","geo-rss","geojson","group","imagery","imagery-tile","kml","map-image","map-notes","media","ogc-feature","oriented-imagery","route","stream","subtype-group","tile","unknown","unsupported","vector-tile","web-tile","wfs","wms","wmts"]);function a(e){o.delete(e),l.delete(e)}function s(e){o.add(e),l.add(e)}function
|
|
5
|
+
import e from"../../core/Error.js";import{clone as t}from"../../core/lang.js";import{getDeepValue as n}from"../../core/object.js";import{numberToJSON as r}from"../../core/accessorSupport/extensions/serializableProperty/writer.js";import{isFeatureCollectionLayer as i}from"../../layers/support/layerUtils.js";const o=new Set(["bing-maps","imagery","imagery-tile","map-image","open-street-map","tile","unknown","unsupported","vector-tile","web-tile","wms","wmts"]),l=new Set(["csv","feature","geo-rss","geojson","group","imagery","imagery-tile","kml","map-image","map-notes","media","ogc-feature","oriented-imagery","route","stream","subtype-group","tile","unknown","unsupported","vector-tile","web-tile","wfs","wms","wmts"]);function a(e){o.delete(e),l.delete(e)}function s(e){o.add(e),l.add(e)}function u(e){return"basemap"===e.layerContainerType?o:"operational-layers"===e.layerContainerType?l:null}function d(e,t){if(t.restrictedWebMapWriting){const n=u(t);return null==n||n.has(e.type)&&!i(e)}return!0}function p(e,t){if(t)if(i(e)){const r=n("featureCollection.layers",t),i=r?.[0]?.layerDefinition;i&&m(e,i)}else"group"!==e.type&&m(e,t)}function m(e,t){"maxScale"in e&&(t.maxScale=r(e.maxScale)??void 0),"minScale"in e&&(t.minScale=r(e.minScale)??void 0)}function c(e,t){if(p(e,t),t&&(t.id=e.id,"blendMode"in e&&(t.blendMode=e.blendMode,"normal"===t.blendMode&&delete t.blendMode),t.opacity=r(e.opacity)??void 0,t.title=e.title||"Layer",t.visibility=e.visible,"legendEnabled"in e&&"wmts"!==e.type))if(i(e)){const n=t.featureCollection;n&&(n.showLegend=e.legendEnabled)}else t.showLegend=e.legendEnabled}function f(n,r,o){if(!n.persistenceEnabled)return null;if(!("write"in n)||!n.write)return o?.messages&&o.messages.push(new e("layer:unsupported",`Layers (${n.title}, ${n.id}) of type '${n.declaredClass}' cannot be persisted`,{layer:n})),null;if(i(n)&&!n.isTable)r=n.resourceInfo;else if(d(n,o)){const e={};return n.write(e,o)?e:null}return null!=r&&c(n,r=t(r)),r}export{s as disableRestrictedWriting,a as enableRestrictedWriting,f as getLayerJSON};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../chunks/tslib.es6.js";import{getAssetUrl as t}from"../assets.js";import{when as s}from"../core/reactiveUtils.js";import{property as a}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as i}from"../core/accessorSupport/decorators/subclass.js";import{getBasemapThumbnailUrl as r,isBasemap3D as o}from"../support/basemapUtils.js";import
|
|
5
|
+
import{_ as e}from"../chunks/tslib.es6.js";import{getAssetUrl as t}from"../assets.js";import{when as s}from"../core/reactiveUtils.js";import{property as a}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as i}from"../core/accessorSupport/decorators/subclass.js";import{getBasemapThumbnailUrl as r,isBasemap3D as o,isBasemapInBeta as l}from"../support/basemapUtils.js";import n from"./Widget.js";import d from"./BasemapGallery/BasemapGalleryViewModel.js";import{css as p}from"./BasemapGallery/css.js";import{loadCalciteComponents as c}from"./support/componentsUtils.js";import{globalCss as m}from"./support/globalCss.js";import{Heading as h}from"./support/Heading.js";import{accessibleHandler as u}from"./support/decorators/accessibleHandler.js";import{messageBundle as g}from"./support/decorators/messageBundle.js";import{tsx as v}from"./support/jsxFactory.js";import{onResize as y}from"./support/widgetUtils.js";const w={small:200,default:280,wide:420};let b=class extends n{constructor(e,t){super(e,t),this.disabled=!1,this.headingLevel=2,this.iconClass=p.widgetIcon,this.icon=null,this.messages=null,this.viewModel=new d,this._focusBasemapItemEnabled=!1,this._container=null,this._width=0,this._onContainerCreated=e=>{this._container=e}}initialize(){this.addHandles([y((()=>this._container),(({contentRect:e})=>{this._width=e.width})),s((()=>this.source),(()=>this.viewModel.load()),{sync:!0,initial:!0,once:!0})])}loadDependencies(){return c({scrim:()=>import("@esri/calcite-components/dist/components/calcite-scrim.js"),chip:()=>import("@esri/calcite-components/dist/components/calcite-chip.js")})}get activeBasemap(){return this.viewModel.activeBasemap}set activeBasemap(e){this.viewModel.activeBasemap=e}get includeCurrentBasemap(){return this.viewModel.includeCurrentBasemap}set includeCurrentBasemap(e){this.viewModel.includeCurrentBasemap=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get source(){return this.viewModel.source}set source(e){this.viewModel.source=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}render(){const e="loading"===this.source.state,t=this.disabled||"disabled"===this.viewModel.state,s=this.viewModel.items,a={[p.sourceLoading]:e,[m.disabled]:t},i=this._width;i<=w.small||i>=w.wide?a[p.layoutGrid]=!0:i<w.default&&(a[p.narrowItems]=!0);const r=e?v("div",{class:p.loader,key:"loader"}):null,o=e?null:s.length>0?v("ul",{"aria-disabled":this.disabled,"aria-label":this.label,bind:this,class:p.itemContainer,key:"item-container",onkeydown:this._handleKeyDown,role:"radiogroup"},s.map(((e,t)=>this._renderBasemapGalleryItem(e,t))).toArray()):v("div",{class:m.empty,key:"empty-message"},v(h,{level:this.headingLevel},this.messages.noBasemaps));return v("div",{afterCreate:this._onContainerCreated,class:this.classes(p.base,m.widget,m.panelHeightOnly,a),key:"container"},0===this._width?null:[r,o])}_getRoundRobinIndex(e,t){return(e+t)%t}_handleKeyDown(e){const{key:t}=e;if(!["ArrowUp","ArrowDown","ArrowRight","ArrowLeft"].includes(t))return;e.preventDefault();const{items:s,activeBasemapIndex:a}=this.viewModel,i="ArrowUp"===t||"ArrowLeft"===t?this._getRoundRobinIndex(Math.max(a-1,-1),s.length):this._getRoundRobinIndex(a+1,s.length),r=s.at(i);"ready"===r?.state&&(this.viewModel.activeBasemap=r.basemap),this._focusBasemapItemEnabled=!0}_focusBasemapItem(e){this._focusBasemapItemEnabled&&0===e.tabIndex&&(e.focus(),this._focusBasemapItemEnabled=!1)}_handleClick(e){const t=e.currentTarget["data-item"];"ready"===t.state&&(this.viewModel.activeBasemap=t.basemap)}_renderBasemapGalleryItem(e,s){const a=r(e.basemap)||t("esri/themes/base/images/basemap-toggle-64.svg"),i=e.basemap.title,l=e.basemap.portalItem?.snippet,n=e.error?.message||l||i,{viewModel:{state:d,activeBasemapIndex:c}}=this,h=this.disabled||"disabled"===d,u=c===s,g=u||-1===c&&0===s?0:-1,y="loading"===d,w={[p.selectedItem]:u,[p.itemError]:"error"===e.state},b=`basemapgallery-item-${e.uid}`;return v("li",{afterUpdate:this._focusBasemapItem,"aria-checked":u.toString(),"aria-disabled":h.toString(),"aria-labelledby":b,bind:this,class:this.classes(p.item,w),"data-item":e,key:e.uid,onclick:this._handleClick,onkeydown:this._handleClick,role:"radio",tabIndex:g,title:n},v("img",{alt:"",class:p.itemThumbnail,src:a}),v("div",{class:p.itemContent,key:"content"},v("div",{class:p.itemTitle,key:"title"},v("span",{id:b},i)),o(e.basemap)?this._renderTags(e.basemap):null),"loading"===e.state||u&&y?v("calcite-scrim",null,v("span",{"aria-hidden":"true",class:m.loaderAnimation,key:"loader",role:"presentation"})):null)}_renderTags(e){return v("div",{class:p.itemTagsContainer,key:"tag"},this._render3DTag(),l(e)?this._renderBetaTag():null)}_render3DTag(){const{messages:e}=this;return v("calcite-chip",{key:"tag-3d",scale:"s",value:e.tag3D},this.messages.tag3D)}_renderBetaTag(){const{messages:e}=this;return v("calcite-chip",{appearance:"outline-fill",key:"tag-beta",scale:"s",value:e.tagBeta},this.messages.tagBeta)}};e([a()],b.prototype,"activeBasemap",null),e([a()],b.prototype,"disabled",void 0),e([a()],b.prototype,"headingLevel",void 0),e([a()],b.prototype,"iconClass",void 0),e([a()],b.prototype,"icon",void 0),e([a()],b.prototype,"label",null),e([a(),g("esri/widgets/BasemapGallery/t9n/BasemapGallery")],b.prototype,"messages",void 0),e([a()],b.prototype,"source",null),e([a()],b.prototype,"view",null),e([a()],b.prototype,"viewModel",void 0),e([a()],b.prototype,"_focusBasemapItemEnabled",void 0),e([a()],b.prototype,"_container",void 0),e([a()],b.prototype,"_width",void 0),e([u()],b.prototype,"_handleClick",null),b=e([i("esri.widgets.BasemapGallery")],b);const _=b;export{_ as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as t}from"../chunks/tslib.es6.js";import{eventKey as e}from"../core/events.js";import{watch as i}from"../core/reactiveUtils.js";import{property as o}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as s}from"../core/accessorSupport/decorators/subclass.js";import n from"./Widget.js";import{canShowNorth as r}from"./Compass/utils.js";import{directionalPadAngles as a,directionalPadArrows as l}from"./DirectionalPad/constants.js";import{css as c}from"./DirectionalPad/css.js";import d from"./DirectionalPad/DirectionalPadViewModel.js";import{findElementCenter as p}from"./DirectionalPad/utils.js";import u from"./DirectionalPad/VisibleElements.js";import{loadCalciteComponents as h}from"./support/componentsUtils.js";import{globalCss as m}from"./support/globalCss.js";import{isActivationKey as v}from"./support/widgetUtils.js";import{messageBundle as b}from"./support/decorators/messageBundle.js";import{tsx as _}from"./support/jsxFactory.js";const g="esri.widgets.DirectionalPad";let w=class extends n{constructor(t,i){super(t,i),this._buttonsContainer=null,this._buttons={},this.iconClass=c.widgetIcon,this.icon=null,this.messages=null,this.visibleElements=new u,this.viewModel=new d,this.visualScale="s",this._rotateIcon=t=>({"--rotation":`rotate(${t}deg)`}),this._afterButtonContainerCreate=t=>{this._buttonsContainer=t,this._buttonsContainer.addEventListener("contextmenu",this._onContextMenu,{capture:!0})},this._afterButtonContainerRemoved=()=>{this._buttonsContainer?.removeEventListener("contextmenu",this._onContextMenu,{capture:!0}),this._buttonsContainer=null},this._afterButtonCreate=(t,e)=>{this._buttons[t]=e},this._afterButtonRemoved=t=>{this._buttons[t]=void 0},this._onContextMenu=t=>t.preventDefault(),this._onButtonPointerDown=t=>{if(null===this._buttonsContainer)return;const e=t.target,i=e?.shadowRoot?.querySelector("button");i?.hasPointerCapture(t.pointerId)&&i.releasePointerCapture(t.pointerId);const o=p(this._buttonsContainer);this.viewModel.beginFollowingPointer(t,o)},this._onKeyDown=(t,i)=>{const o=e(i);v(o)&&this.viewModel.moveOnce(t)},this._onSliderInput=({target:t})=>{"number"==typeof t.value&&(this.viewModel.rotation=t.value)},this._onRotationReset=()=>{this.viewModel.rotation=0}}loadDependencies(){return h({action:()=>import("@esri/calcite-components/dist/components/calcite-action.js"),"action-group":()=>import("@esri/calcite-components/dist/components/calcite-action-group.js"),"action-pad":()=>import("@esri/calcite-components/dist/components/calcite-action-pad.js"),icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js"),slider:()=>import("@esri/calcite-components/dist/components/calcite-slider.js")})}initialize(){this.addHandles(i((()=>this.viewModel.angle),(()=>{const t=this._buttonsContainer?.contains(document.activeElement);t&&(null==this.viewModel.angle?this.container?.focus():this._buttons[this.viewModel.angle]?.setFocus())})))}get disabled(){return this.viewModel.disabled}set disabled(t){this.viewModel.disabled=t}get label(){return this.messages?.widgetLabel??""}set label(t){this._overrideIfSome("label",t)}get view(){return this.viewModel.view}set view(t){this.viewModel.view=t}get speed(){return this.viewModel.speed}set speed(t){this.viewModel.speed=t}get _rotationEnabled(){return!this.view?.ready||this.view.constraints.rotationEnabled}render(){const{label:t,disabled:e,viewModel:i}=this,o=this.classes(c.base,m.widget,e?m.disabled:null);return _("div",{"aria-label":t,class:o,tabIndex:-1},i.supported?this._renderContent():this._renderUnsupportedMessage)}_renderUnsupportedMessage(){return _("section",{class:c.error,key:"unsupported"},_("p",null,this.messages.unsupported))}_renderContent(){return[this.visibleElements.directionalButtons?this._renderDirectionalButtons():void 0,this.visibleElements.rotationSlider?this._renderRotation():void 0]}_renderDirectionalButtons(){return _("calcite-action-pad",{expandDisabled:!0,key:"directional-buttons-container",layout:"grid"},_("calcite-action-group",{afterCreate:this._afterButtonContainerCreate,afterRemoved:this._afterButtonContainerRemoved,class:c.buttonsContainer},a.slice(0,4).map((t=>this._renderButton(t))),this._renderCompass(),a.slice(4).map((t=>this._renderButton(t)))))}_renderButton(t){const{label:e,iconName:i}=l[t];return _("calcite-action",{active:this.viewModel.angle===t,afterCreate:this._afterButtonCreate.bind(this,t),afterRemoved:this._afterButtonRemoved.bind(this,t),alignment:"center",class:c.button,"data-angle":t.toString(),disabled:this.disabled,key:t,onkeydown:this._onKeyDown.bind(void 0,t),onpointerdown:this._onButtonPointerDown,scale:this.visualScale,text:this.messages[e]},_("calcite-icon",{icon:i,scale:this.visualScale}))}_renderCompass(){const t=this.disabled||r(this.view)?"compass-needle":"arrow-up",e=0===this.viewModel.rotation;return _("calcite-action",{alignment:"center",class:c.compassButton,disabled:this.disabled||!this._rotationEnabled||e,key:"compass",onclick:this._onRotationReset,scale:this.visualScale,styles:this._rotateIcon(this.viewModel.rotation),text:this.messages.resetHeading},!e&&_("calcite-icon",{icon:t,scale:this.visualScale}))}_renderRotation(){return _("calcite-action-pad",{expandDisabled:!0,key:"slider-container",layout:"horizontal"},_("calcite-action-group",{class:c.rotationContainer},this.visibleElements.rotationResetButton?this._renderRotationResetButton():null,this._renderRotationSlider()))}_renderRotationResetButton(){return _("calcite-action",{alignment:"center",class:c.rotationReset,disabled:this.disabled||!this._rotationEnabled,onclick:this._onRotationReset,scale:this.visualScale,text:this.messages.resetHeading},_("calcite-icon",{flipRtl:!0,icon:"rotate",scale:this.visualScale}))}_renderRotationSlider(){return _("div",{class:c.rotationSliderContainer},_("calcite-slider",{"aria-label":this.messages.heading,disabled:this.disabled||!this._rotationEnabled,labelHandles:!0,max:360,min:0,required:!0,scale:this.visualScale,value:Math.round(this.viewModel.rotation),onCalciteSliderInput:this._onSliderInput}))}};t([o()],w.prototype,"_buttonsContainer",void 0),t([o()],w.prototype,"_buttons",void 0),t([o()],w.prototype,"disabled",null),t([o()],w.prototype,"iconClass",void 0),t([o()],w.prototype,"icon",void 0),t([o()],w.prototype,"label",null),t([o(),b("esri/widgets/DirectionalPad/t9n/DirectionalPad")],w.prototype,"messages",void 0),t([o({type:u,nonNullable:!0})],w.prototype,"visibleElements",void 0),t([o()],w.prototype,"view",null),t([o()],w.prototype,"viewModel",void 0),t([o()],w.prototype,"visualScale",void 0),t([o()],w.prototype,"speed",null),t([o({readOnly:!0})],w.prototype,"_rotationEnabled",null),w=t([s(g)],w);const f=w;export{f as default};
|
|
5
|
+
import{_ as t}from"../chunks/tslib.es6.js";import{eventKey as e}from"../core/events.js";import{watch as i}from"../core/reactiveUtils.js";import{property as o}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as s}from"../core/accessorSupport/decorators/subclass.js";import n from"./Widget.js";import{canShowNorth as r}from"./Compass/utils.js";import{directionalPadAngles as a,directionalPadArrows as l}from"./DirectionalPad/constants.js";import{css as c}from"./DirectionalPad/css.js";import d from"./DirectionalPad/DirectionalPadViewModel.js";import{findElementCenter as p}from"./DirectionalPad/utils.js";import u from"./DirectionalPad/VisibleElements.js";import{loadCalciteComponents as h}from"./support/componentsUtils.js";import{globalCss as m}from"./support/globalCss.js";import{isActivationKey as v}from"./support/widgetUtils.js";import{messageBundle as b}from"./support/decorators/messageBundle.js";import{tsx as _}from"./support/jsxFactory.js";const g="esri.widgets.DirectionalPad";let w=class extends n{constructor(t,i){super(t,i),this._buttonsContainer=null,this._buttons={},this.iconClass=c.widgetIcon,this.icon=null,this.messages=null,this.visibleElements=new u,this.viewModel=new d,this.visualScale="s",this._rotateIcon=t=>({"--rotation":`rotate(${t}deg)`}),this._afterButtonContainerCreate=t=>{this._buttonsContainer=t,this._buttonsContainer.addEventListener("contextmenu",this._onContextMenu,{capture:!0})},this._afterButtonContainerRemoved=()=>{this._buttonsContainer?.removeEventListener("contextmenu",this._onContextMenu,{capture:!0}),this._buttonsContainer=null},this._afterButtonCreate=(t,e)=>{this._buttons[t]=e},this._afterButtonRemoved=t=>{this._buttons[t]=void 0},this._onContextMenu=t=>t.preventDefault(),this._onButtonPointerDown=t=>{if(null===this._buttonsContainer)return;const e=t.target,i=e?.shadowRoot?.querySelector("button");i?.hasPointerCapture(t.pointerId)&&i.releasePointerCapture(t.pointerId);const o=p(this._buttonsContainer);this.viewModel.beginFollowingPointer(t,o)},this._onKeyDown=(t,i)=>{const o=e(i);v(o)&&this.viewModel.moveOnce(t)},this._onSliderInput=({target:t})=>{"number"==typeof t.value&&(this.viewModel.rotation=t.value)},this._onRotationReset=()=>{this.viewModel.rotation=0}}loadDependencies(){return h({action:()=>import("@esri/calcite-components/dist/components/calcite-action.js"),"action-group":()=>import("@esri/calcite-components/dist/components/calcite-action-group.js"),"action-pad":()=>import("@esri/calcite-components/dist/components/calcite-action-pad.js"),icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js"),slider:()=>import("@esri/calcite-components/dist/components/calcite-slider.js")})}initialize(){this.addHandles(i((()=>this.viewModel.angle),(()=>{const t=this._buttonsContainer?.contains(document.activeElement);t&&(null==this.viewModel.angle?this.container?.focus():this._buttons[this.viewModel.angle]?.setFocus())})))}get disabled(){return this.viewModel.disabled}set disabled(t){this.viewModel.disabled=t}get label(){return this.messages?.widgetLabel??""}set label(t){this._overrideIfSome("label",t)}get view(){return this.viewModel.view}set view(t){this.viewModel.view=t}get speed(){return this.viewModel.speed}set speed(t){this.viewModel.speed=t}get _rotationEnabled(){return!this.view?.ready||this.view.constraints.rotationEnabled}render(){const{label:t,disabled:e,viewModel:i}=this,o=this.classes(c.base,m.widget,e?m.disabled:null);return _("div",{"aria-label":t,class:o,tabIndex:-1},i.supported?this._renderContent():this._renderUnsupportedMessage())}_renderUnsupportedMessage(){return _("section",{class:c.error,key:"unsupported"},_("p",null,this.messages.unsupported))}_renderContent(){return[this.visibleElements.directionalButtons?this._renderDirectionalButtons():void 0,this.visibleElements.rotationSlider?this._renderRotation():void 0]}_renderDirectionalButtons(){return _("calcite-action-pad",{expandDisabled:!0,key:"directional-buttons-container",layout:"grid"},_("calcite-action-group",{afterCreate:this._afterButtonContainerCreate,afterRemoved:this._afterButtonContainerRemoved,class:c.buttonsContainer},a.slice(0,4).map((t=>this._renderButton(t))),this._renderCompass(),a.slice(4).map((t=>this._renderButton(t)))))}_renderButton(t){const{label:e,iconName:i}=l[t];return _("calcite-action",{active:this.viewModel.angle===t,afterCreate:this._afterButtonCreate.bind(this,t),afterRemoved:this._afterButtonRemoved.bind(this,t),alignment:"center",class:c.button,"data-angle":t.toString(),disabled:this.disabled,key:t,onkeydown:this._onKeyDown.bind(void 0,t),onpointerdown:this._onButtonPointerDown,scale:this.visualScale,text:this.messages[e]},_("calcite-icon",{icon:i,scale:this.visualScale}))}_renderCompass(){const t=this.disabled||r(this.view)?"compass-needle":"arrow-up",e=0===this.viewModel.rotation;return _("calcite-action",{alignment:"center",class:c.compassButton,disabled:this.disabled||!this._rotationEnabled||e,key:"compass",onclick:this._onRotationReset,scale:this.visualScale,styles:this._rotateIcon(this.viewModel.rotation),text:this.messages.resetHeading},!e&&_("calcite-icon",{icon:t,scale:this.visualScale}))}_renderRotation(){return _("calcite-action-pad",{expandDisabled:!0,key:"slider-container",layout:"horizontal"},_("calcite-action-group",{class:c.rotationContainer},this.visibleElements.rotationResetButton?this._renderRotationResetButton():null,this._renderRotationSlider()))}_renderRotationResetButton(){return _("calcite-action",{alignment:"center",class:c.rotationReset,disabled:this.disabled||!this._rotationEnabled,onclick:this._onRotationReset,scale:this.visualScale,text:this.messages.resetHeading},_("calcite-icon",{flipRtl:!0,icon:"rotate",scale:this.visualScale}))}_renderRotationSlider(){return _("div",{class:c.rotationSliderContainer},_("calcite-slider",{"aria-label":this.messages.heading,disabled:this.disabled||!this._rotationEnabled,labelHandles:!0,max:360,min:0,required:!0,scale:this.visualScale,value:Math.round(this.viewModel.rotation),onCalciteSliderInput:this._onSliderInput}))}};t([o()],w.prototype,"_buttonsContainer",void 0),t([o()],w.prototype,"_buttons",void 0),t([o()],w.prototype,"disabled",null),t([o()],w.prototype,"iconClass",void 0),t([o()],w.prototype,"icon",void 0),t([o()],w.prototype,"label",null),t([o(),b("esri/widgets/DirectionalPad/t9n/DirectionalPad")],w.prototype,"messages",void 0),t([o({type:u,nonNullable:!0})],w.prototype,"visibleElements",void 0),t([o()],w.prototype,"view",null),t([o()],w.prototype,"viewModel",void 0),t([o()],w.prototype,"visualScale",void 0),t([o()],w.prototype,"speed",null),t([o({readOnly:!0})],w.prototype,"_rotationEnabled",null),w=t([s(g)],w);const f=w;export{f as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../Graphic.js";import{remove as a,isSome as i}from"../../core/arrayUtils.js";import{makeHandle as r,handlesGroup as s}from"../../core/handleUtils.js";import{removeMaybe as n,destroyMaybe as o}from"../../core/maybe.js";import{debounce as l}from"../../core/promiseUtils.js";import{watch as c,whenOnce as d,syncAndInitial as u}from"../../core/reactiveUtils.js";import{generateBracedUUID as h}from"../../core/uuid.js";import{property as p}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/has.js";import{subclass as f}from"../../core/accessorSupport/decorators/subclass.js";import{getEffectiveLayerCapabilities as m,getEffectiveEditingEnabled as g,isTable as w}from"../../layers/support/layerUtils.js";import{getDrawHelpMessage as y}from"../../views/draw/support/helpMessageUtils.js";import v from"../../views/interactive/snapping/FeatureSnappingLayerSource.js";import{CreateFeaturesWorkflowData as _}from"./CreateFeaturesWorkflowData.js";import{isModelUpload as b,handleModelUpload as F}from"./modelUploadUtils.js";import M from"./Workflow.js";import{shouldShowAttachmentsForCreateWorkflow as I,startCreatingNewFeature as A,findLayerInfo as k,updateGraphicSymbolWhenRequired as C,isTerminalUpdateEventType as H,getVisualVariableAttributes as V,startUpdatingFeature as S,createWorkflowSteps as U,avoidFeatureTemplateSelectionWithOnlyOneItem as j,showProgressCursor as D,visualVariableInteractiveUpdate as E,prepareAttachmentsForCreateWorkflow as G}from"./workflowUtils.js";var O;const T=Symbol(),P=Symbol(),W=Symbol(),x=Symbol();let N=O=class extends M{constructor(e){super(e),this.type="create-features",this.createFeatureState="create-new",this.isNested=!1,this._getDrawMeshHelpMessage=void 0,this._featureFormHandle=null,this._visualVariableAttributes={rotation:null,size:null},this._attachmentFileInfos=new Map,this._highlightHandles=new Map,this._preventDefaultActionOnCancel=!1,this._lastActiveGraphics=[],this._isActive=!0,this._updateGraphicDebounced=l(((e,t,a)=>C(e,t,a)))}initialize(){this.isNested&&(this._isActive=!1)}get hasPendingEdits(){if(this.numPendingFeatures)return!0;const{data:e}=this,{upload:t}=e;return!(!t||"pending"!==t.state&&"success"!==t.state)||!!e.creationInfo?.geometryToPlace}get helpMessage(){const{creationInfo:e,viewModel:t}=this.data;if("creating-features"!==this.stepId||!e)return;const a=e.layer.geometryType,i=t.sketchViewModel.createGraphic;if("mesh"===a){this._getDrawMeshHelpMessage||import("../../views/draw/support/helpMessageUtils3d.js").then((e=>{this._getDrawMeshHelpMessage=e.getDrawMeshHelpMessage}));const{view:e}=t;return"3d"===e?.type?this._getDrawMeshHelpMessage?.(i,e):void 0}return y(a,i?.geometry)}get numPendingFeatures(){return this.pendingFeatures.length}get parent(){return this.data.parent}get pendingFeatures(){return this.data.pendingFeatures}get keyboardCancellationEnabled(){return 0===this.numPendingFeatures}get reliesOnOwnerAdminPrivileges(){const{creationInfo:e}=this.data;if(!e)return!1;const{layer:t}=e,a=t.capabilities?.operations.supportsAdd,i=m(t)?.operations.supportsAdd;return g(t)&&!t.editingEnabled||!!i&&!a}get shouldShowAttachments(){return!(!this.data.creationInfo||!this.data.viewModel)&&I(this.data)}get shouldAllowAttachmentEditing(){return this.shouldShowAttachments}get test(){return{addAttachment:(e,t)=>{this._attachmentFileInfos.set(e,t)}}}async enter(){this._isActive=!0;const{featureFormViewModel:e}=this.data.viewModel,t=e.relatedRecordCallbacks;e.relatedRecordCallbacks=null,this.addHandles(r((()=>{e.relatedRecordCallbacks=t})),P),"awaiting-feature-creation-info"!==this.stepId&&this._setUpCreatingFeaturesStep()}exit(){this._isActive=!1,this.removeHandles([P,x])}async updatePendingFeature(e,t){return this._preventDefaultActionOnCancel=!0,this.data.viewModel.sketchViewModel.cancel(),a(this._lastActiveGraphics,e),this._startUpdating(e,t)}async start(){return await super.start(),w(this.data.creationInfo?.layer)?null:{enter:async()=>{},exit:async()=>{}}}static create(e){const{addAttachmentsCallback:t,applyEditsCallback:a,isNested:i,creationInfo:r,parent:s,startAt:n,viewModel:o}=e,l=new O({data:new _({creationInfo:r,parent:s,viewModel:o}),isNested:i,onCommit:async e=>{const{creationInfo:i}=e;if(!i)return;const r=e.pendingFeatures.toArray(),{layer:s}=i,n=s.capabilities?.editing.supportsGlobalId&&"globalIdField"in s,o=l._attachmentFileInfos;if(n){const e=z(r,s,o);return void await a(s,e,{globalIdUsed:!0})}const c=await a(s,{addFeatures:r});if(o.size>0){const e=c?.addFeatureResults??[];await t(s,L(r,e,s,o))}}});return l._set("steps",this._createWorkflowSteps(l,n)),l}_fadeExistingFeatures(e){if("effect"in e){const t=e.effect;return e.effect="saturate(0.6) opacity(0.8)",r((()=>e.effect=t))}const t=e.opacity;return e.opacity=.7,r((()=>e.opacity=t))}_highlight(e){const t=this.data.viewModel.view;"3d"===t?.type&&this._highlightHandles.set(e,t.highlight(e))}_removeHighlight(e){n(this._highlightHandles.get(e)),this._highlightHandles.delete(e)}async _startCreating(e){this.removeHandles(W);const{data:t}=this,{creationInfo:a}=t;if(!a)return;this.createFeatureState="create-new";const i=await A(t.viewModel.sketchViewModel,a,e);this.addHandles(i,W)}async _startUpdating(e,t){const{pendingFeatures:a}=this;a.includes(e)||a.add(e);const{creationInfo:i,viewModel:r}=this.data,{attachmentsViewModel:o,editableItems:l,featureFormViewModel:d,layerInfos:u,sketchViewModel:h,view:p}=r;if(!p||!i)return;const f=i.layer,m=k(u,f),g=m?.formTemplate,y=p.spatialReference;this.data.editableItem=l.find((e=>e.layer===f)),d.set({arcadeEditType:"INSERT",feature:e,formTemplate:g,spatialReference:y,map:p.map}),"add"!==o.mode&&"edit"!==o.mode||r.activeWorkflow?.previous(),o.graphic=e,o.fileInfos.removeAll(),o.mode="view";if((this._attachmentFileInfos.get(e)||[]).forEach((({file:e,form:t})=>o.addFile(e,t))),this._removeHighlight(e),await C(e,t,"2d"===p.type?p.scale:null),this.removeHandles(W),n(this._featureFormHandle),"2d"===p.type){const a=c((()=>p.scale),(a=>this._updateGraphicDebounced(e,t,a)));this.addHandles(a,W)}return this._featureFormHandle=s([d.on("value-change",(async()=>{e.attributes=d.getValues(),await C(e,t,"2d"===p.type?p.scale:null)})),h.on(["update","undo","redo"],(e=>{("undo"===e.type||"redo"===e.type||"update"===e.type&&null!=e.toolEventInfo&&H(e.toolEventInfo.type))&&d.notifyFeatureGeometryChanged()}))]),this.createFeatureState="update-pending",this._visualVariableAttributes=V(e),w(f)?void 0:S({graphic:e,sketchViewModel:h,sourceLayer:f,visualVariables:this._visualVariableAttributes,webStyleCache:t})}static _createWorkflowSteps(e,t="awaiting-feature-creation-info"){const{data:a}=e,i=U(["awaiting-feature-creation-info","creating-features","adding-attachment","editing-attachment"],t,{"awaiting-feature-creation-info":()=>({id:"awaiting-feature-creation-info",async setUp(){const{creationInfo:t,viewModel:i}=a,{view:r}=i;r&&(b(t)?e.addHandles(await F({view:r,data:a,next:()=>e.next(),cancel:()=>i.cancelWorkflow({warnIfNoWorkflow:!1})}),this.id):(a.parent&&t&&(e.addHandles(i.lockFeatureTemplatesViewModel(),this.id),i.featureTemplatesViewModel.layers=[t.layer]),e.addHandles(i.featureTemplatesViewModel.on("select",(({item:t})=>{t&&(a.creationInfo={...a.creationInfo,layer:t.layer,template:t.template},e.next())})),this.id)))},async tearDown(){e.removeHandles([this.id,W])}}),"creating-features":()=>({id:"creating-features",async setUp(){e._isActive&&await e._setUpCreatingFeaturesStep()},async tearDown(t){const{viewModel:i}=a;t.canceled&&(e.removeHandles([x,T,W]),i.attachmentsViewModel.fileInfos.removeAll(),e._attachmentFileInfos.clear())}}),"adding-attachment":()=>({id:"adding-attachment",parent:"creating-features",async setUp(){},async tearDown(){const{attachmentsViewModel:t}=a.viewModel,{graphic:i,fileInfos:r}=t;e._attachmentFileInfos.set(i,r.toArray()),t.mode="view"}}),"editing-attachment":()=>({id:"editing-attachment",parent:"creating-features",async setUp(){},async tearDown(){const{attachmentsViewModel:t}=a.viewModel,{graphic:i,fileInfos:r}=t;e._attachmentFileInfos.set(i,r.toArray()),t.mode="view"}})});return j(a,i)}static _configureSketchViewModel(e,t){const{data:i}=e,{viewModel:n}=i,{view:o}=n,l=n.sketchViewModel;let c=null;const u=[];if(!o)return{beforeCommit:r(),afterCommit:r()};const h=l.updateOnGraphicClick;return l.updateOnGraphicClick=!1,"2d"===o.type&&i.creationInfo&&u.push(e._fadeExistingFeatures(i.creationInfo.layer)),u.push(l.on("create",(async a=>{if("cancel"===a.state){if(e._preventDefaultActionOnCancel)return void(e._preventDefaultActionOnCancel=!1);if(e._lastActiveGraphics.length<1)return e._startCreating(t);const a=e._lastActiveGraphics.pop();return e._startUpdating(a,t)}if("complete"===a.state&&a.graphic)return e._startUpdating(a.graphic,t)})),l.on("update",(async a=>{const{viewModel:r}=i,{attachmentsViewModel:s,featureFormViewModel:n}=r,l=a.graphics[0];if("complete"===a.state){if(l!==c&&(e._lastActiveGraphics.push(l),e._highlight(l)),c=null,e.numPendingFeatures===i.creationInfo?.maxFeatures){const a=e._lastActiveGraphics.pop();return e._startUpdating(a,t)}if("add"!==s.mode&&"edit"!==s.mode||r.activeWorkflow?.previous(),a.aborted&&e._preventDefaultActionOnCancel)return void(e._preventDefaultActionOnCancel=!1);e.addHandles([D(o),o.on("click",(e=>e.preventDefault()))],T),await d((()=>!n.updating)),e.removeHandles(T),e._startCreating(t)}"start"===a.state&&e._removeHighlight(l);const u=e._visualVariableAttributes;await E(o,l,a,u,t);const h=l.attributes,{rotation:p,size:f}=u;if(null!=p){const{field:e}=p;n.setValue(e,h[e])}if(null!=f){const{field:e}=f;n.setValue(e,h[e])}})),l.on("delete",(async t=>{const i=t.graphics[0];e.pendingFeatures.remove(i),a(e._lastActiveGraphics,i),c=i})),o.on("immediate-click",(async a=>{if(b(i.creationInfo))return;const{results:r}=await o.hitTest(a,{include:l.layer}),s=r.find((e=>"graphic"===e.type&&e.graphic.sourceLayer===i.creationInfo?.layer));if(!s)return;const n=s.graphic;if("transform"===l.activeTool||"reshape"===l.activeTool){if(l.updateGraphics.at(0)===n)return;await e.updatePendingFeature(n,t)}})),r((()=>{e._preventDefaultActionOnCancel=!0,l.cancel()})),R(l,i)),{beforeCommit:s(u),afterCommit:r((()=>{l.updateOnGraphicClick=h}))}}async _setUpCreatingFeaturesStep(){if(this.hasHandles(x))return;const{creationInfo:e,viewModel:a}=this.data,{attachmentsViewModel:s,view:o}=a;if(!o)return;const l=new Map,d=[],u=[];this._lastActiveGraphics=[],this._featureFormHandle=n(this._featureFormHandle),this._visualVariableAttributes={rotation:null,size:null},G(s),d.push(c((()=>s.mode),(e=>{switch(e){case"add":this.go("adding-attachment");break;case"edit":this.go("editing-attachment")}})));const h=D(o);d.push(h);const p=w(e?.layer);try{if(b(e)&&u.push(r((()=>a.cancelWorkflow({warnIfNoWorkflow:!1})))),p){const a=e?.initialFeature??new t({attributes:{...e?.template?.prototype.attributes,...e?.attributeOverrides},sourceLayer:e?.layer});await this._startUpdating(a,l)}else{const t=O._configureSketchViewModel(this,l);d.push(t.beforeCommit),u.push(t.afterCommit),e?.initialFeature&&(a.sketchViewModel.layer.add(e.initialFeature),await this._startUpdating(e.initialFeature,l)),await this._startCreating(l)}}finally{h.remove()}const f=r((()=>this.pendingFeatures.drain((e=>a.sketchViewModel.layer.remove(e)))));d.push(this._featureFormHandle),this.addHandles(d.filter(i),this._handleKeys.beforeCommit),this.addHandles([r((()=>s.fileInfos.removeAll())),...d,...u,f].filter(i),x)}};function R(e,t){let a=null;const i=()=>e.snappingOptions.featureSources,n=()=>(a=new v({layer:e.layer}),i().add(a),a),l=()=>{null!=a&&(i().remove(a),a=o(a))};return s([c((()=>{const e=t.creationInfo?.layer,a=i().find((t=>t.layer===e));return{hasFeatureLayerSource:!!a,enabled:a?.enabled??!1}}),(({hasFeatureLayerSource:e,enabled:t})=>{if(!e)return l();a??=n(),a.enabled=t}),u),r(l)])}function L(e,t,a,i){const r=[];return t.forEach(((t,s)=>{if(!t.error){const n=e[s],o=i.get(n)||[];n.attributes[a.objectIdField]=t.objectId,o.forEach((({form:e})=>r.push({feature:n,attachment:e})))}})),r}function z(e,t,a){const i=[],r=t.globalIdField;return e.forEach(((t,s)=>{e[s].attributes[r]??=h(),(a?.get(t)||[]).forEach((({file:e})=>i.push({feature:t,attachment:{globalId:h(),data:e}})))})),i.length?{addFeatures:e,addAttachments:i}:{addFeatures:e}}e([p({constructOnly:!0})],N.prototype,"isNested",void 0),e([p()],N.prototype,"hasPendingEdits",null),e([p()],N.prototype,"_getDrawMeshHelpMessage",void 0),e([p()],N.prototype,"helpMessage",null),e([p()],N.prototype,"parent",null),e([p()],N.prototype,"keyboardCancellationEnabled",null),e([p()],N.prototype,"reliesOnOwnerAdminPrivileges",null),e([p()],N.prototype,"shouldShowAttachments",null),e([p()],N.prototype,"shouldAllowAttachmentEditing",null),N=O=e([f("esri.widgets.Editor.CreateFeaturesWorkflow")],N);const K=N;export{K as default};
|
|
5
|
+
import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../Graphic.js";import{remove as a,isSome as i}from"../../core/arrayUtils.js";import{makeHandle as r,handlesGroup as s}from"../../core/handleUtils.js";import{removeMaybe as n,destroyMaybe as o}from"../../core/maybe.js";import{debounce as l}from"../../core/promiseUtils.js";import{watch as c,whenOnce as d,syncAndInitial as p}from"../../core/reactiveUtils.js";import{generateBracedUUID as u}from"../../core/uuid.js";import{property as h}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/has.js";import{subclass as f}from"../../core/accessorSupport/decorators/subclass.js";import{getEffectiveLayerCapabilities as m,getEffectiveEditingEnabled as g,isTable as w}from"../../layers/support/layerUtils.js";import{getDrawHelpMessage as y}from"../../views/draw/support/helpMessageUtils.js";import v from"../../views/interactive/snapping/FeatureSnappingLayerSource.js";import{CreateFeaturesWorkflowData as _}from"./CreateFeaturesWorkflowData.js";import{isModelUpload as b,handleModelUpload as M}from"./modelUploadUtils.js";import F from"./Workflow.js";import{shouldShowAttachmentsForCreateWorkflow as I,startCreatingNewFeature as A,findLayerInfo as k,updateGraphicSymbolWhenRequired as C,isTerminalUpdateEventType as H,getVisualVariableAttributes as V,startUpdatingFeature as S,createWorkflowSteps as U,avoidFeatureTemplateSelectionWithOnlyOneItem as j,showProgressCursor as D,visualVariableInteractiveUpdate as E,prepareAttachmentsForCreateWorkflow as G}from"./workflowUtils.js";var O;const T=Symbol(),P=Symbol(),W=Symbol(),x=Symbol();let N=O=class extends F{constructor(e){super(e),this.type="create-features",this.createFeatureState="create-new",this.isNested=!1,this._getDrawMeshHelpMessage=void 0,this._featureFormHandle=null,this._visualVariableAttributes={rotation:null,size:null},this._attachmentFileInfos=new Map,this._highlightHandles=new Map,this._preventDefaultActionOnCancel=!1,this._lastActiveGraphics=[],this._isActive=!0,this._updateGraphicDebounced=l(((e,t,a)=>C(e,t,a)))}initialize(){this.isNested&&(this._isActive=!1)}get hasPendingEdits(){if(this.numPendingFeatures>0)return!0;const{data:e}=this,{sketchViewModel:t}=e.viewModel,{activeComponent:a}=t,i=t.createGraphic?.geometry;if(("polyline"===i?.type||"polygon"===i?.type||"multipoint"===i?.type)&&("draw-2d"===a?.type||"draw-3d"===a?.type)&&a.drawOperation.committedVertices.length>0)return!0;const{upload:r}=e;return!(!r||"pending"!==r.state&&"success"!==r.state)||!!e.creationInfo?.geometryToPlace}get helpMessage(){const{creationInfo:e,viewModel:t}=this.data;if("creating-features"!==this.stepId||!e)return;const a=e.layer.geometryType,i=t.sketchViewModel.createGraphic;if("mesh"===a){this._getDrawMeshHelpMessage||import("../../views/draw/support/helpMessageUtils3d.js").then((e=>{this._getDrawMeshHelpMessage=e.getDrawMeshHelpMessage}));const{view:e}=t;return"3d"===e?.type?this._getDrawMeshHelpMessage?.(i,e):void 0}return y(a,i?.geometry)}get numPendingFeatures(){return this.pendingFeatures.length}get parent(){return this.data.parent}get pendingFeatures(){return this.data.pendingFeatures}get keyboardCancellationEnabled(){return 0===this.numPendingFeatures}get reliesOnOwnerAdminPrivileges(){const{creationInfo:e}=this.data;if(!e)return!1;const{layer:t}=e,a=t.capabilities?.operations.supportsAdd,i=m(t)?.operations.supportsAdd;return g(t)&&!t.editingEnabled||!!i&&!a}get shouldShowAttachments(){return!(!this.data.creationInfo||!this.data.viewModel)&&I(this.data)}get shouldAllowAttachmentEditing(){return this.shouldShowAttachments}get test(){return{addAttachment:(e,t)=>{this._attachmentFileInfos.set(e,t)}}}async enter(){this._isActive=!0;const{featureFormViewModel:e}=this.data.viewModel,t=e.relatedRecordCallbacks;e.relatedRecordCallbacks=null,this.addHandles(r((()=>{e.relatedRecordCallbacks=t})),P),"awaiting-feature-creation-info"!==this.stepId&&this._setUpCreatingFeaturesStep()}exit(){this._isActive=!1,this.removeHandles([P,x])}async updatePendingFeature(e,t){return this._preventDefaultActionOnCancel=!0,this.data.viewModel.sketchViewModel.cancel(),a(this._lastActiveGraphics,e),this._startUpdating(e,t)}async start(){return await super.start(),w(this.data.creationInfo?.layer)?null:{enter:async()=>{},exit:async()=>{}}}static create(e){const{addAttachmentsCallback:t,applyEditsCallback:a,isNested:i,creationInfo:r,parent:s,startAt:n,viewModel:o}=e,l=new O({data:new _({creationInfo:r,parent:s,viewModel:o}),isNested:i,onCommit:async e=>{const{creationInfo:i}=e;if(!i)return;const r=e.pendingFeatures.toArray(),{layer:s}=i,n=s.capabilities?.editing.supportsGlobalId&&"globalIdField"in s,o=l._attachmentFileInfos;if(n){const e=z(r,s,o);return void await a(s,e,{globalIdUsed:!0})}const c=await a(s,{addFeatures:r});if(o.size>0){const e=c?.addFeatureResults??[];await t(s,L(r,e,s,o))}}});return l._set("steps",this._createWorkflowSteps(l,n)),l}_fadeExistingFeatures(e){if("effect"in e){const t=e.effect;return e.effect="saturate(0.6) opacity(0.8)",r((()=>e.effect=t))}const t=e.opacity;return e.opacity=.7,r((()=>e.opacity=t))}_highlight(e){const t=this.data.viewModel.view;"3d"===t?.type&&this._highlightHandles.set(e,t.highlight(e))}_removeHighlight(e){n(this._highlightHandles.get(e)),this._highlightHandles.delete(e)}async _startCreating(e){this.removeHandles(W);const{data:t}=this,{creationInfo:a}=t;if(!a)return;this.createFeatureState="create-new";const i=await A(t.viewModel.sketchViewModel,a,e);this.addHandles(i,W)}async _startUpdating(e,t){const{pendingFeatures:a}=this;a.includes(e)||a.add(e);const{creationInfo:i,viewModel:r}=this.data,{attachmentsViewModel:o,editableItems:l,featureFormViewModel:d,layerInfos:p,sketchViewModel:u,view:h}=r;if(!h||!i)return;const f=i.layer,m=k(p,f),g=m?.formTemplate,y=h.spatialReference;this.data.editableItem=l.find((e=>e.layer===f)),d.set({arcadeEditType:"INSERT",feature:e,formTemplate:g,spatialReference:y,map:h.map}),"add"!==o.mode&&"edit"!==o.mode||r.activeWorkflow?.previous(),o.graphic=e,o.fileInfos.removeAll(),o.mode="view";if((this._attachmentFileInfos.get(e)||[]).forEach((({file:e,form:t})=>o.addFile(e,t))),this._removeHighlight(e),await C(e,t,"2d"===h.type?h.scale:null),this.removeHandles(W),n(this._featureFormHandle),"2d"===h.type){const a=c((()=>h.scale),(a=>this._updateGraphicDebounced(e,t,a)));this.addHandles(a,W)}return this._featureFormHandle=s([d.on("value-change",(async()=>{e.attributes=d.getValues(),await C(e,t,"2d"===h.type?h.scale:null)})),u.on(["update","undo","redo"],(e=>{("undo"===e.type||"redo"===e.type||"update"===e.type&&null!=e.toolEventInfo&&H(e.toolEventInfo.type))&&d.notifyFeatureGeometryChanged()}))]),this.createFeatureState="update-pending",this._visualVariableAttributes=V(e),w(f)?void 0:S({graphic:e,sketchViewModel:u,sourceLayer:f,visualVariables:this._visualVariableAttributes,webStyleCache:t})}static _createWorkflowSteps(e,t="awaiting-feature-creation-info"){const{data:a}=e,i=U(["awaiting-feature-creation-info","creating-features","adding-attachment","editing-attachment"],t,{"awaiting-feature-creation-info":()=>({id:"awaiting-feature-creation-info",async setUp(){const{creationInfo:t,viewModel:i}=a,{view:r}=i;r&&(b(t)?e.addHandles(await M({view:r,data:a,next:()=>e.next(),cancel:()=>i.cancelWorkflow({warnIfNoWorkflow:!1})}),this.id):(a.parent&&t&&(e.addHandles(i.lockFeatureTemplatesViewModel(),this.id),i.featureTemplatesViewModel.layers=[t.layer]),e.addHandles(i.featureTemplatesViewModel.on("select",(({item:t})=>{t&&(a.creationInfo={...a.creationInfo,layer:t.layer,template:t.template},e.next())})),this.id)))},async tearDown(){e.removeHandles([this.id,W])}}),"creating-features":()=>({id:"creating-features",async setUp(){e._isActive&&await e._setUpCreatingFeaturesStep()},async tearDown(t){const{viewModel:i}=a;t.canceled&&(e.removeHandles([x,T,W]),i.attachmentsViewModel.fileInfos.removeAll(),e._attachmentFileInfos.clear())}}),"adding-attachment":()=>({id:"adding-attachment",parent:"creating-features",async setUp(){},async tearDown(){const{attachmentsViewModel:t}=a.viewModel,{graphic:i,fileInfos:r}=t;e._attachmentFileInfos.set(i,r.toArray()),t.mode="view"}}),"editing-attachment":()=>({id:"editing-attachment",parent:"creating-features",async setUp(){},async tearDown(){const{attachmentsViewModel:t}=a.viewModel,{graphic:i,fileInfos:r}=t;e._attachmentFileInfos.set(i,r.toArray()),t.mode="view"}})});return j(a,i)}static _configureSketchViewModel(e,t){const{data:i}=e,{viewModel:n}=i,{view:o}=n,l=n.sketchViewModel;let c=null;const p=[];if(!o)return{beforeCommit:r(),afterCommit:r()};const u=l.updateOnGraphicClick;return l.updateOnGraphicClick=!1,"2d"===o.type&&i.creationInfo&&p.push(e._fadeExistingFeatures(i.creationInfo.layer)),p.push(l.on("create",(async a=>{if("cancel"===a.state){if(e._preventDefaultActionOnCancel)return void(e._preventDefaultActionOnCancel=!1);if(e._lastActiveGraphics.length<1)return e._startCreating(t);const a=e._lastActiveGraphics.pop();return e._startUpdating(a,t)}if("complete"===a.state&&a.graphic)return e._startUpdating(a.graphic,t)})),l.on("update",(async a=>{const{viewModel:r}=i,{attachmentsViewModel:s,featureFormViewModel:n}=r,l=a.graphics[0];if("complete"===a.state){if(l!==c&&(e._lastActiveGraphics.push(l),e._highlight(l)),c=null,e.numPendingFeatures===i.creationInfo?.maxFeatures){const a=e._lastActiveGraphics.pop();return e._startUpdating(a,t)}if("add"!==s.mode&&"edit"!==s.mode||r.activeWorkflow?.previous(),a.aborted&&e._preventDefaultActionOnCancel)return void(e._preventDefaultActionOnCancel=!1);e.addHandles([D(o),o.on("click",(e=>e.preventDefault()))],T),await d((()=>!n.updating)),e.removeHandles(T),e._startCreating(t)}"start"===a.state&&e._removeHighlight(l);const p=e._visualVariableAttributes;await E(o,l,a,p,t);const u=l.attributes,{rotation:h,size:f}=p;if(null!=h){const{field:e}=h;n.setValue(e,u[e])}if(null!=f){const{field:e}=f;n.setValue(e,u[e])}})),l.on("delete",(async t=>{const i=t.graphics[0];e.pendingFeatures.remove(i),a(e._lastActiveGraphics,i),c=i})),o.on("immediate-click",(async a=>{if(b(i.creationInfo))return;const{results:r}=await o.hitTest(a,{include:l.layer}),s=r.find((e=>"graphic"===e.type&&e.graphic.sourceLayer===i.creationInfo?.layer));if(!s)return;const n=s.graphic;if("transform"===l.activeTool||"reshape"===l.activeTool){if(l.updateGraphics.at(0)===n)return;await e.updatePendingFeature(n,t)}})),r((()=>{e._preventDefaultActionOnCancel=!0,l.cancel()})),R(l,i)),{beforeCommit:s(p),afterCommit:r((()=>{l.updateOnGraphicClick=u}))}}async _setUpCreatingFeaturesStep(){if(this.hasHandles(x))return;const{creationInfo:e,viewModel:a}=this.data,{attachmentsViewModel:s,view:o}=a;if(!o)return;const l=new Map,d=[],p=[];this._lastActiveGraphics=[],this._featureFormHandle=n(this._featureFormHandle),this._visualVariableAttributes={rotation:null,size:null},G(s),d.push(c((()=>s.mode),(e=>{switch(e){case"add":this.go("adding-attachment");break;case"edit":this.go("editing-attachment")}})));const u=D(o);d.push(u);const h=w(e?.layer);try{if(b(e)&&p.push(r((()=>a.cancelWorkflow({warnIfNoWorkflow:!1})))),h){const a=e?.initialFeature??new t({attributes:{...e?.template?.prototype.attributes,...e?.attributeOverrides},sourceLayer:e?.layer});await this._startUpdating(a,l)}else{const t=O._configureSketchViewModel(this,l);d.push(t.beforeCommit),p.push(t.afterCommit),e?.initialFeature&&(a.sketchViewModel.layer.add(e.initialFeature),await this._startUpdating(e.initialFeature,l)),await this._startCreating(l)}}finally{u.remove()}const f=r((()=>this.pendingFeatures.drain((e=>a.sketchViewModel.layer.remove(e)))));d.push(this._featureFormHandle),this.addHandles(d.filter(i),this._handleKeys.beforeCommit),this.addHandles([r((()=>s.fileInfos.removeAll())),...d,...p,f].filter(i),x)}};function R(e,t){let a=null;const i=()=>e.snappingOptions.featureSources,n=()=>(a=new v({layer:e.layer}),i().add(a),a),l=()=>{null!=a&&(i().remove(a),a=o(a))};return s([c((()=>{const e=t.creationInfo?.layer,a=i().find((t=>t.layer===e));return{hasFeatureLayerSource:!!a,enabled:a?.enabled??!1}}),(({hasFeatureLayerSource:e,enabled:t})=>{if(!e)return l();a??=n(),a.enabled=t}),p),r(l)])}function L(e,t,a,i){const r=[];return t.forEach(((t,s)=>{if(!t.error){const n=e[s],o=i.get(n)||[];n.attributes[a.objectIdField]=t.objectId,o.forEach((({form:e})=>r.push({feature:n,attachment:e})))}})),r}function z(e,t,a){const i=[],r=t.globalIdField;return e.forEach(((t,s)=>{e[s].attributes[r]??=u(),(a?.get(t)||[]).forEach((({file:e})=>i.push({feature:t,attachment:{globalId:u(),data:e}})))})),i.length?{addFeatures:e,addAttachments:i}:{addFeatures:e}}e([h({constructOnly:!0})],N.prototype,"isNested",void 0),e([h()],N.prototype,"hasPendingEdits",null),e([h()],N.prototype,"_getDrawMeshHelpMessage",void 0),e([h()],N.prototype,"helpMessage",null),e([h()],N.prototype,"parent",null),e([h()],N.prototype,"keyboardCancellationEnabled",null),e([h()],N.prototype,"reliesOnOwnerAdminPrivileges",null),e([h()],N.prototype,"shouldShowAttachments",null),e([h()],N.prototype,"shouldAllowAttachmentEditing",null),N=O=e([f("esri.widgets.Editor.CreateFeaturesWorkflow")],N);const K=N;export{K as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../chunks/tslib.es6.js";import{createTask as t}from"../../core/asyncUtils.js";import a from"../../core/Collection.js";import{deprecated as r}from"../../core/deprecate.js";import i from"../../core/Error.js";import s from"../../core/Evented.js";import{makeHandle as o}from"../../core/handleUtils.js";import n from"../../core/Logger.js";import{abortMaybe as l}from"../../core/maybe.js";import{throwIfAborted as d}from"../../core/promiseUtils.js";import{watch as p,on as c,when as u,whenOnce as h,syncAndInitial as w,initial as f}from"../../core/reactiveUtils.js";import{property as m}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as y}from"../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as k}from"../../core/support/UpdatingHandles.js";import v from"../../layers/GraphicsLayer.js";import{isEditableLayer as g}from"../../layers/support/editableLayers.js";import{isTable as W,getOwningPortalUrl as _,getEffectiveLayerCapabilities as b,isFeatureLayer as F}from"../../layers/support/layerUtils.js";import{parseKnownArcGISOnlineDomain as C}from"../../portal/support/urlUtils.js";import E from"../Attachments/AttachmentsViewModel.js";import I from"./CreateFeaturesWorkflow.js";import U from"./CreateWorkflow.js";import{workflowDeprecation as A}from"./deprecationUtils.js";import M from"./UpdateWorkflow.js";import{whenEditorLayerView as T}from"./workflowUtils.js";import{formTemplateHasInvalidFields as V}from"../FeatureForm/featureFormUtils.js";import O from"../FeatureForm/FeatureFormViewModel.js";import j from"../FeatureTemplates/FeatureTemplatesViewModel.js";import L from"../Sketch/SketchViewModel.js";import S from"../Spinner/SpinnerViewModel.js";const P="esri.widgets.Editor.EditorViewModel",D=n.getLogger(P),x=["create","create-features","update"];function G(e,t,a){D.error(new i(e,t,a))}function H(e,t){return e?e.find((e=>e.layer===t)):void 0}let N=class extends s.EventedAccessor{constructor(e){super(e),this._editableItems=new a,this._sketchGraphicsLayer=new v({listMode:"hide",internal:!0}),this._updateEditableItemsTask=null,this._updatingHandles=new k,this._featureTemplatesViewModelLocked=!1,this._syncFeatureTemplatesOnNextUnlock=!1,this.activeWorkflow=null,this._activityQueue=[],this.failures=[],this.hideTemplatesForInactiveLayers=!1,this.attachmentsViewModel=new E({capabilities:{editing:!0}}),this.featureFormViewModel=new O,this.featureTemplatesViewModel=new j({disabledItemFunction:({layer:e})=>this._itemIsSuspended(e)}),this.sketchViewModel=new L({layer:this._sketchGraphicsLayer}),this.spinnerViewModel=new S,this.pageStack=[],this.showDiscardEditsPrompt=()=>Promise.resolve(!0),this._candidateCommitted=!1,this.useDeprecatedCreateWorkflow=!1,this.back=async()=>{this.canGoBack&&(this.activeWorkflow?.hasPreviousStep?await this.activeWorkflow.back(this.showDiscardEditsPrompt):await this._cancelWorkflow({force:!this.hasPendingEdits}))},this.saveWorkflow=async()=>{const{featureFormViewModel:e}=this;if(e.submit(),!e.submittable)return;const t=e.getValues();e.validateContingencyConstraints(t,{includeIncompleteViolations:!0}).length>0||await(this.activeWorkflow?.save())},this.selectFeature=(e,t=!1)=>{const a=this.activeWorkflow;this._candidateCommitted||"update"!==a?.type||(a.data.rootFeature=e,t&&(a.next(),this._candidateCommitted=!0))}}initialize(){this.addHandles([p((()=>{const e=this.view?.map?.editableLayers.filter((({parent:e,visible:t})=>e&&"visible"in e?t&&e.visible:t)),t=this.view?.allLayerViews,a=t?.filter((t=>!!e?.includes(t.layer)&&!t.suspended));return[e,a,this.layerInfos,this.allowedWorkflows,this.hideTemplatesForInactiveLayers]}),(()=>this._updateEditableItems()),w),c((()=>this.activeWorkflow),"cancel",(()=>this.emit("workflow-cancel"))),c((()=>this.activeWorkflow),"commit",(()=>this.emit("workflow-commit"))),c((()=>this.activeWorkflow),"complete",(()=>{this.emit("workflow-commit"),this._set("activeWorkflow",null)})),u((()=>this.view?.map),(e=>e.add(this._sketchGraphicsLayer)),f),p((()=>this.view?.timeZone),(e=>this.featureFormViewModel.timeZone=e)),p((()=>this._editableItems.toArray()),(()=>{const{activeWorkflow:e}=this;if(this.syncFeatureTemplates(),!e)return;const{stepId:t}=e;"create"!==e.type?"update"===e.type&&("awaiting-feature-to-update"===t&&!this.canUpdate||"awaiting-update-feature-candidate"===t&&!e.data.candidates.some((e=>{const t=this._editableItems.find((t=>t.layer===e.layer));return t&&t.supports.includes("update")})))&&this._cancelWorkflow():"awaiting-feature-creation-info"!==t||this.canCreate||this._cancelWorkflow()})),p((()=>this.page),((e,t)=>{const a=[...this.pageStack];if(-1===a.indexOf(e))a.push(e);else for(;a.length&&a.at(-1)!==e;)a.pop();this.pageStack=a}),w),u((()=>"awaiting-update-feature-candidate"===this.state),(()=>this._candidateCommitted=!1)),c((()=>this.featureTemplatesViewModel),"select",(async({item:e,oldItem:t})=>{const{activeWorkflow:a}=this;if(a){if("update"===a.type&&"awaiting-feature-creation-info"===a.activeWorkflow?.stepId)return;try{await this.cancelWorkflow({force:!this.hasPendingEdits})}catch{return void this.featureTemplatesViewModel.select(t,{emit:!1})}}if(!e)return;const r={layer:e.layer,template:e.template};if(e.supportsUpload)return this.featureTemplatesViewModel.select(t,{emit:!1}),this.startCreateFeaturesWorkflow(r);this.useDeprecatedCreateWorkflow?this.startCreateWorkflowAtFeatureCreation(r):this.startCreateFeaturesWorkflowAtFeatureCreation(r)})),c((()=>this.view),"key-down",(e=>{"Escape"===e.key&&this.activeWorkflow?.keyboardCancellationEnabled&&this.back()}))])}destroy(){this._cancelWorkflow({warnIfNoWorkflow:!1}).then((()=>{this.view?.map?.remove(this._sketchGraphicsLayer),this.view=null})),this._updateEditableItemsTask=l(this._updateEditableItemsTask),this._updatingHandles.destroy()}get allowedWorkflows(){return this._get("allowedWorkflows")}set allowedWorkflows(e){e&&0!==e.length||(e=[...x]),this._set("allowedWorkflows",e)}get canCreate(){return this._editableItems.some((e=>e.supports.includes("create")&&!e.suspended))}get canUpdate(){return this._editableItems.some((({attachmentsOnUpdateEnabled:e,layer:t,supports:a,suspended:r})=>{const i=!r&&(a.includes("update")||a.includes("delete")||e),s=t.parent,o=!(s&&"visible"in s)||!!s.visible;return t.visible&&o&&i}))}get editableItems(){return this._editableItems}get labelOptions(){return this.sketchViewModel.labelOptions}set labelOptions(e){this.sketchViewModel.labelOptions=e}set layerInfos(e){e?.some((e=>("allowAttachments"in e&&r(D,"Property: layerInfo.allowAttachments",{replacement:"layerInfo.attachmentsOnCreateEnabled or layerInfo.attachmentsOnUpdateEnabled",version:"4.26"}),!0))),this._set("layerInfos",e)}get snappingOptions(){return this.sketchViewModel.snappingOptions}set snappingOptions(e){this.sketchViewModel.snappingOptions=e}get state(){if(!this.view?.ready)return"disabled";const e=this.attachmentsViewModel.mode;if("add"===e)return"adding-attachment";if("edit"===e)return"editing-attachment";const{activeWorkflow:t}=this;return t?"update"===t.type&&t.activeWorkflow?.stepId?t.activeWorkflow.stepId:t.stepId:"ready"}get syncing(){return this._activityQueue.length>0}get updating(){return this._updatingHandles.updating||!0===this.activeWorkflow?.updating}get tooltipOptions(){return this.sketchViewModel.tooltipOptions}set tooltipOptions(e){this.sketchViewModel.tooltipOptions=e}set view(e){this.sketchViewModel.view=e,this.spinnerViewModel.view=e,this._set("view",e)}get page(){const{activeWorkflow:e,state:t}=this;if("update"===e?.type&&"awaiting-feature-to-update"===e.stepId)return"ready";if("create-features"===e?.type&&0===e.numPendingFeatures){const t=e.data.upload;if(t)return"default"===t.state?"ready":"creating-features-upload-details"}return t??"disabled"}get featureFormDisabled(){const{activeWorkflow:e}=this;return"update"===e?.type&&!1===e.activeEditableItem?.attributeUpdatesEnabled}get canGoBack(){return null!=this.activeWorkflow&&!this.syncing}get shouldShowDeleteButton(){const{activeWorkflow:e}=this;return!!e&&"update"===e.type&&!!e.activeEditableItem?.supports.includes("delete")}get hasPendingEdits(){return this.activeWorkflow?.hasPendingEdits??!1}async startCreateWorkflowAtFeatureTypeSelection(){if(A(D,"startCreateWorkflowAtFeatureTypeSelection","startCreateFeaturesWorkflowAtFeatureTypeSelection"),await h((()=>!this.updating)),!this.canCreate)return void G("editing:unsupported-workflow","Create workflow is unsupported or disabled.");await this._cancelWorkflow();const e=this._createCreateWorkflow();await e.start(),this._set("activeWorkflow",e)}async startCreateFeaturesWorkflowAtFeatureTypeSelection(){return this.startCreateFeaturesWorkflow()}async startCreateWorkflowAtFeatureCreation(e){if(A(D,"startCreateWorkflowAtFeatureCreation","startCreateFeaturesWorkflowAtFeatureCreation"),await h((()=>!this.updating)),!this.canCreate)return void G("editing:unsupported-workflow","Create workflow is unsupported or disabled.");await this._cancelWorkflow();const t=this._createCreateWorkflow("awaiting-feature-to-create");t.data.creationInfo=e,await t.start(),this._set("activeWorkflow",t)}async startCreateFeaturesWorkflowAtFeatureCreation(e){return this.startCreateFeaturesWorkflow(e,"creating-features")}async startCreateFeaturesWorkflow(e,t="awaiting-feature-creation-info"){if(await h((()=>!this.updating)),!this.canCreate)throw new i("editing:unsupported-workflow","Creating features is unsupported or disabled.");await this._cancelWorkflow();const a=this._createCreateFeaturesWorkflow(e,t);await a.start(),this._set("activeWorkflow",a)}async startCreateWorkflowAtFeatureEdit(e){if(A(D,"startCreateWorkflowAtFeatureEdit"),await h((()=>!this.updating)),!this.canCreate)return void G("editing:unsupported-workflow","Create workflow is unsupported or disabled.");await this._cancelWorkflow();const t=this._createCreateWorkflow("editing-new-feature");t.data.edits.feature=e,await t.start(),this._set("activeWorkflow",t)}async startCreateFeaturesWorkflowAtFeatureEdit(e){await h((()=>!this.updating));const{initialFeature:t}=e,a=t.sourceLayer,r=a?this.findEditableItemForLayer(a):void 0;if(!this.canCreate||!r)throw new i("editing:unsupported-workflow","Creating features is unsupported or disabled.");await this._cancelWorkflow();const s=this._createCreateFeaturesWorkflow({initialFeature:t,layer:r.layer,maxFeatures:1},"creating-features");await s.start(),this._set("activeWorkflow",s)}async startUpdateWorkflowAtFeatureSelection(){if(await h((()=>!this.updating)),!this.canUpdate)return void G("editing:unsupported-workflow","Update workflow is unsupported or disabled.");await this._cancelWorkflow();const e=this._createUpdateWorkflow();await e.start(),this._set("activeWorkflow",e)}async startUpdateWorkflowAtMultipleFeatureSelection(e){if(await h((()=>!this.updating)),!this.canUpdate)return void G("editing:unsupported-workflow","Update workflow is unsupported or disabled.");await this._cancelWorkflow();const t=this._createUpdateWorkflow("awaiting-update-feature-candidate");t.data.candidates=e,await t.start(),this._set("activeWorkflow",t)}async startUpdateWorkflowAtFeatureEdit(e){if(await h((()=>!this.updating)),!this.canUpdate)return void G("editing:unsupported-workflow","Update workflow is unsupported or disabled.");await this._cancelWorkflow();const t=this._createUpdateWorkflow("editing-existing-feature");t.data.rootFeature=e,await t.start(),this._set("activeWorkflow",t)}async deleteFeatureFromWorkflow(){const{activeWorkflow:e}=this;e&&"update"===e.type?await e.deleteActiveFeature():G("editing:unsupported-workflow","Deleting requires an active update workflow.")}async cancelWorkflow(e){return this._cancelWorkflow({warnIfNoWorkflow:!0,...e})}findEditableItemForLayer(e){const t="subtype-sublayer"===e.type?e.parent:e;return this._editableItems.find((e=>e.layer===t))}itemHasInvalidFormTemplate(e){return!!e&&(this.findEditableItemForLayer(e.layer)?.hasInvalidFormTemplate??!1)}itemHasUnsupportedFields(e){return!!e&&(this.findEditableItemForLayer(e.layer)?.hasUnsupportedFields??!1)}syncFeatureTemplates(){if(this._featureTemplatesViewModelLocked)return void(this._syncFeatureTemplatesOnNextUnlock=!0);const e=[];for(const{layer:t,supports:a}of this._editableItems)t.loaded&&a.includes("create")&&!W(t)&&e.push(t);this.featureTemplatesViewModel.layers=e}async toggleUpdateWorkflow(){this.canUpdate&&(this.hasPendingEdits&&!await this.showDiscardEditsPrompt()||(this.activeWorkflow&&"awaiting-feature-to-update"===this.state?await this.cancelWorkflow({force:!0}):await this.startUpdateWorkflowAtFeatureSelection()))}lockFeatureTemplatesViewModel(){return this._featureTemplatesViewModelLocked=!0,o((()=>{this._featureTemplatesViewModelLocked=!1,this._syncFeatureTemplatesOnNextUnlock&&(this.syncFeatureTemplates(),this._syncFeatureTemplatesOnNextUnlock=!1)}))}async _updateEditableItems(){l(this._updateEditableItemsTask);const e=t((async e=>{const t=this.view?.allLayerViews,r=this.view?.map,i=r?.editableLayers.toArray()??[],s=r?.allTables.toArray().filter(F)??[];await Promise.allSettled(s.map((e=>e.load())));const o=s.filter((e=>g(e))),n=[...i.reverse(),...o.reverse()].filter((e=>"mesh"!==e.geometryType||"3d"===this.view?.type));if(!t||!i)return;const l=[],p=[];for(const a of n){const r=t.find((e=>e.layer===a)),i=r?l:p,s=!!r?.suspended;if(!s||!this.hideTemplatesForInactiveLayers)if("subtype-group"===a.type){await a.loadAll(),d(e);for(let e=a.sublayers.length-1;e>=0;--e)i.push(this._makeEditableItemForLayer(a.sublayers.at(e),s))}else i.push(this._makeEditableItemForLayer(a,s))}if(e.aborted)return;const c=this._editableItems;this._editableItems=new a(l.concat(p)),c.destroy()}));this._updatingHandles.addPromise(e.promise),this._updateEditableItemsTask=e}async _cancelWorkflow(e){const t=this.activeWorkflow;if(!t)return void(e?.warnIfNoWorkflow&&G("editing:no-active-workflow","There is no active workflow to cancel."));if(!e||!1!==e.force)return this.emit("workflow-cancel"),this._set("activeWorkflow",null),void await t.cancel(e);await t.cancel(e),this._set("activeWorkflow",null)}_createCreateFeaturesWorkflow(e,t){return I.create({viewModel:this,creationInfo:e,startAt:t,applyEditsCallback:(e,t,a)=>this._applyEdits(e,t,a),addAttachmentsCallback:(e,t)=>this._addAttachments(e,t)})}_createCreateWorkflow(e){return U.create(this,e,((e,t,a)=>this._applyEdits(e,t,a)))}_createUpdateWorkflow(e){return M.create({viewModel:this,startAt:e,applyEditsCallback:(e,t,a)=>this._applyEdits(e,t,a),addAttachmentsCallback:(e,t)=>this._addAttachments(e,t)})}_addAttachments(e,t){const a=t.map((t=>this._addAttachment(e,t.feature,t.attachment)))??[];return Promise.all(a)}async _addAttachment(e,t,a){let r=null;if("geojson"===e.type||"scene"===e.type||"oriented-imagery"===e.type)throw new i("editor:attachments-not-supported","Adding attachments is not supported for this layer type");return await this._queueOperation((async()=>(r=await(e.addAttachment?.(t,a).catch((e=>{throw e?.error||e})))??null,r))),r}async _applyEdits(e,t,a){let r=null;const i=e.url?await _(e.url):null,s={returnServiceEditsOption:(!i||!C(i))&&!RegExp("/hosted/","i").test(e.url)?"original-and-current-features":void 0,...a};return await this._queueOperation((async()=>{const{view:a}=this;if(!a)return null;const i=await T(a,e).catch((()=>null));return r=await e.applyEdits(t,s),i&&await h((()=>!i.updating)),r})),r}_queueOperation(e){this._activityQueue.push(e),this.notifyChange("syncing");const t=(e,t)=>{const a=t.indexOf(e);a>-1&&t.splice(a,1)};return e().then((e=>{if(null!=e&&"error"in e&&null!=e.error)throw e.error;if(null!=e&&"addFeatureResults"in e){const{addFeatureResults:t,deleteFeatureResults:a,updateFeatureResults:r}=e,i=t.find((e=>!!e.error))||r.find((e=>!!e.error))||a.find((e=>!!e.error));if(i)throw i.error}return e})).catch((a=>{G("editing:operation-error","An error occurred.",{error:a});const r={error:a,retry:()=>(t(r,this.failures),this._queueOperation(e)),cancel:()=>{t(r,this.failures)}};this._set("failures",[...this.failures,r])})).then((()=>{t(e,this._activityQueue),this.notifyChange("syncing")}))}_makeEditableItemForLayer(e,t=!0){const a=b(e),r=a?.operations,i=H(this.layerInfos,e),s=V(e),o=s||t,{allowedWorkflows:n}=this,l=n.includes("create")||n.includes("create-features"),d=n.includes("update"),p=e=>!i||!1!==i.enabled&&!1!==i[e],c=l&&!!r?.supportsAdd&&p("addEnabled"),u=d&&!!r?.supportsUpdate&&p("updateEnabled"),h=!o&&d&&!!r?.supportsDelete&&p("deleteEnabled"),w=[];c&&w.push("create"),u&&w.push("update"),h&&w.push("delete");const f=u&&!o&&(!i||!1!==i.attributeUpdatesEnabled),m=u&&!o&&!!a?.editing?.supportsGeometryUpdate&&(!i||!1!==i.geometryUpdatesEnabled),y=!(!a?.data?.supportsAttachment||i&&!1===i.allowAttachments);return{layer:e,supports:w,suspended:t,attributeUpdatesEnabled:f,geometryUpdatesEnabled:m,hasAttachments:y,attachmentsOnCreateEnabled:y&&l&&(!i||!1!==i.attachmentsOnCreateEnabled),attachmentsOnUpdateEnabled:!o&&y&&(!i||!1!==i.attachmentsOnUpdateEnabled),hasInvalidFormTemplate:s,hasUnsupportedFields:!1}}_itemIsSuspended(e){return this.findEditableItemForLayer(e)?.suspended??!1}};e([m()],N.prototype,"_editableItems",void 0),e([m({readOnly:!0})],N.prototype,"activeWorkflow",void 0),e([m({readOnly:!0})],N.prototype,"_activityQueue",void 0),e([m({value:[...x]})],N.prototype,"allowedWorkflows",null),e([m({readOnly:!0})],N.prototype,"canCreate",null),e([m({readOnly:!0})],N.prototype,"canUpdate",null),e([m()],N.prototype,"editableItems",null),e([m({readOnly:!0})],N.prototype,"failures",void 0),e([m()],N.prototype,"hideTemplatesForInactiveLayers",void 0),e([m()],N.prototype,"attachmentsViewModel",void 0),e([m()],N.prototype,"featureFormViewModel",void 0),e([m()],N.prototype,"featureTemplatesViewModel",void 0),e([m()],N.prototype,"labelOptions",null),e([m()],N.prototype,"layerInfos",null),e([m()],N.prototype,"sketchViewModel",void 0),e([m()],N.prototype,"snappingOptions",null),e([m()],N.prototype,"spinnerViewModel",void 0),e([m()],N.prototype,"state",null),e([m({readOnly:!0})],N.prototype,"syncing",null),e([m()],N.prototype,"updating",null),e([m()],N.prototype,"tooltipOptions",null),e([m()],N.prototype,"view",null),e([m()],N.prototype,"pageStack",void 0),e([m()],N.prototype,"showDiscardEditsPrompt",void 0),e([m()],N.prototype,"_candidateCommitted",void 0),e([m()],N.prototype,"page",null),e([m()],N.prototype,"featureFormDisabled",null),e([m()],N.prototype,"canGoBack",null),e([m()],N.prototype,"shouldShowDeleteButton",null),e([m()],N.prototype,"hasPendingEdits",null),e([m()],N.prototype,"useDeprecatedCreateWorkflow",void 0),N=e([y(P)],N);const q=N;export{q as default};
|
|
5
|
+
import{_ as t}from"../../chunks/tslib.es6.js";import{createTask as e}from"../../core/asyncUtils.js";import a from"../../core/Collection.js";import{deprecated as r}from"../../core/deprecate.js";import i from"../../core/Error.js";import s from"../../core/Evented.js";import{makeHandle as o}from"../../core/handleUtils.js";import n from"../../core/Logger.js";import{abortMaybe as l}from"../../core/maybe.js";import{throwIfAborted as d}from"../../core/promiseUtils.js";import{watch as p,on as c,when as u,whenOnce as h,syncAndInitial as w,initial as f}from"../../core/reactiveUtils.js";import{property as m}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as y}from"../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as k}from"../../core/support/UpdatingHandles.js";import g from"../../layers/GraphicsLayer.js";import{isEditableLayer as v}from"../../layers/support/editableLayers.js";import{isTable as W,getOwningPortalUrl as _,getEffectiveLayerCapabilities as b,isFeatureLayer as F}from"../../layers/support/layerUtils.js";import{parseKnownArcGISOnlineDomain as C}from"../../portal/support/urlUtils.js";import E from"../Attachments/AttachmentsViewModel.js";import I from"./CreateFeaturesWorkflow.js";import U from"./CreateWorkflow.js";import{workflowDeprecation as A}from"./deprecationUtils.js";import M from"./UpdateWorkflow.js";import{whenEditorLayerView as V}from"./workflowUtils.js";import{formTemplateHasInvalidFields as T}from"../FeatureForm/featureFormUtils.js";import O from"../FeatureForm/FeatureFormViewModel.js";import j from"../FeatureTemplates/FeatureTemplatesViewModel.js";import L from"../Sketch/SketchViewModel.js";import S from"../Spinner/SpinnerViewModel.js";const P="esri.widgets.Editor.EditorViewModel",D=n.getLogger(P),G=["create","create-features","update"];function x(t,e,a){D.error(new i(t,e,a))}function H(t,e){return t?t.find((t=>t.layer===e)):void 0}let q=class extends s.EventedAccessor{constructor(t){super(t),this._editableItems=new a,this._sketchGraphicsLayer=new g({listMode:"hide",internal:!0}),this._updateEditableItemsTask=null,this._updatingHandles=new k,this._featureTemplatesViewModelLocked=!1,this.activeWorkflow=null,this._activityQueue=[],this.failures=[],this.hideTemplatesForInactiveLayers=!1,this.attachmentsViewModel=new E({capabilities:{editing:!0}}),this.featureFormViewModel=new O,this.featureTemplatesViewModel=new j({disabledItemFunction:({layer:t})=>this._itemIsSuspended(t)}),this.sketchViewModel=new L({layer:this._sketchGraphicsLayer}),this.spinnerViewModel=new S,this.pageStack=[],this.showDiscardEditsPrompt=()=>Promise.resolve(!0),this._candidateCommitted=!1,this.useDeprecatedCreateWorkflow=!1,this.back=async()=>{this.canGoBack&&(this.activeWorkflow?.hasPreviousStep?await this.activeWorkflow.back(this.showDiscardEditsPrompt):await this._cancelWorkflow({force:!this.hasPendingEdits}))},this.saveWorkflow=async()=>{const{featureFormViewModel:t}=this;if(t.submit(),!t.submittable)return;const e=t.getValues();t.validateContingencyConstraints(e,{includeIncompleteViolations:!0}).length>0||await(this.activeWorkflow?.save())},this.selectFeature=(t,e=!1)=>{const a=this.activeWorkflow;this._candidateCommitted||"update"!==a?.type||(a.data.rootFeature=t,e&&(a.next(),this._candidateCommitted=!0))}}initialize(){this.addHandles([p((()=>{const t=this.view?.map?.editableLayers.filter((({parent:t,visible:e})=>t&&"visible"in t?e&&t.visible:e)),e=this.view?.allLayerViews,a=e?.filter((e=>!!t?.includes(e.layer)&&!e.suspended));return[t,a,this.layerInfos,this.allowedWorkflows,this.hideTemplatesForInactiveLayers]}),(()=>this._updateEditableItems()),w),c((()=>this.activeWorkflow),"cancel",(()=>this.emit("workflow-cancel"))),c((()=>this.activeWorkflow),"commit",(()=>this.emit("workflow-commit"))),c((()=>this.activeWorkflow),"complete",(()=>{this.emit("workflow-commit"),this._set("activeWorkflow",null)})),u((()=>this.view?.map),(t=>t.add(this._sketchGraphicsLayer)),f),p((()=>this.view?.timeZone),(t=>this.featureFormViewModel.timeZone=t)),p((()=>this._editableItems.toArray()),(()=>{const{activeWorkflow:t}=this;if(this.syncFeatureTemplates(),!t)return;const{stepId:e}=t;"create"!==t.type?"update"===t.type&&("awaiting-feature-to-update"===e&&!this.canUpdate||"awaiting-update-feature-candidate"===e&&!t.data.candidates.some((t=>{const e=this._editableItems.find((e=>e.layer===t.layer));return e&&e.supports.includes("update")})))&&this._cancelWorkflow():"awaiting-feature-creation-info"!==e||this.canCreate||this._cancelWorkflow()})),p((()=>this.page),((t,e)=>{const a=[...this.pageStack];if(-1===a.indexOf(t))a.push(t);else for(;a.length&&a.at(-1)!==t;)a.pop();this.pageStack=a}),w),u((()=>"awaiting-update-feature-candidate"===this.state),(()=>this._candidateCommitted=!1)),c((()=>this.featureTemplatesViewModel),"select",(async({item:t,oldItem:e})=>{const{activeWorkflow:a}=this;if(a){if("update"===a.type&&"awaiting-feature-creation-info"===a.activeWorkflow?.stepId)return;try{await this.cancelWorkflow({force:!this.hasPendingEdits})}catch{return void this.featureTemplatesViewModel.select(e,{emit:!1})}}if(!t)return;const r={layer:t.layer,template:t.template};if(t.supportsUpload)return this.featureTemplatesViewModel.select(e,{emit:!1}),this.startCreateFeaturesWorkflow(r);this.useDeprecatedCreateWorkflow?this.startCreateWorkflowAtFeatureCreation(r):this.startCreateFeaturesWorkflowAtFeatureCreation(r)})),c((()=>this.view),"key-down",(t=>{"Escape"===t.key&&this.activeWorkflow?.keyboardCancellationEnabled&&(t.stopPropagation(),this.back())}))])}destroy(){this._cancelWorkflow({warnIfNoWorkflow:!1}).then((()=>{this.view?.map?.remove(this._sketchGraphicsLayer),this.view=null})),this._updateEditableItemsTask=l(this._updateEditableItemsTask),this._updatingHandles.destroy()}get allowedWorkflows(){return this._get("allowedWorkflows")}set allowedWorkflows(t){t&&0!==t.length||(t=[...G]),this._set("allowedWorkflows",t)}get canCreate(){return this._editableItems.some((t=>t.supports.includes("create")&&!t.suspended))}get canUpdate(){return this._editableItems.some((({attachmentsOnUpdateEnabled:t,layer:e,supports:a,suspended:r})=>{const i=!r&&(a.includes("update")||a.includes("delete")||t),s=e.parent,o=!(s&&"visible"in s)||!!s.visible;return e.visible&&o&&i}))}get editableItems(){return this._editableItems}get labelOptions(){return this.sketchViewModel.labelOptions}set labelOptions(t){this.sketchViewModel.labelOptions=t}set layerInfos(t){t?.some((t=>("allowAttachments"in t&&r(D,"Property: layerInfo.allowAttachments",{replacement:"layerInfo.attachmentsOnCreateEnabled or layerInfo.attachmentsOnUpdateEnabled",version:"4.26"}),!0))),this._set("layerInfos",t)}get snappingOptions(){return this.sketchViewModel.snappingOptions}set snappingOptions(t){this.sketchViewModel.snappingOptions=t}get state(){if(!this.view?.ready)return"disabled";const t=this.attachmentsViewModel.mode;if("add"===t)return"adding-attachment";if("edit"===t)return"editing-attachment";const{activeWorkflow:e}=this;return e?"update"===e.type&&e.activeWorkflow?.stepId?e.activeWorkflow.stepId:e.stepId:"ready"}get syncing(){return this._activityQueue.length>0}get updating(){return this._updatingHandles.updating||!0===this.activeWorkflow?.updating}get tooltipOptions(){return this.sketchViewModel.tooltipOptions}set tooltipOptions(t){this.sketchViewModel.tooltipOptions=t}set view(t){this.sketchViewModel.view=t,this.spinnerViewModel.view=t,this._set("view",t)}get page(){const{activeWorkflow:t,state:e}=this;if("update"===t?.type&&"awaiting-feature-to-update"===t.stepId)return"ready";if("create-features"===t?.type&&0===t.numPendingFeatures){const e=t.data.upload;if(e)return"default"===e.state?"ready":"creating-features-upload-details"}return e??"disabled"}get featureFormDisabled(){const{activeWorkflow:t}=this;return"update"===t?.type&&!1===t.activeEditableItem?.attributeUpdatesEnabled}get canGoBack(){return null!=this.activeWorkflow&&!this.syncing}get shouldShowDeleteButton(){const{activeWorkflow:t}=this;return!!t&&"update"===t.type&&!!t.activeEditableItem?.supports.includes("delete")}get hasPendingEdits(){return this.activeWorkflow?.hasPendingEdits??!1}async startCreateWorkflowAtFeatureTypeSelection(){if(A(D,"startCreateWorkflowAtFeatureTypeSelection","startCreateFeaturesWorkflowAtFeatureTypeSelection"),await h((()=>!this.updating)),!this.canCreate)return void x("editing:unsupported-workflow","Create workflow is unsupported or disabled.");await this._cancelWorkflow();const t=this._createCreateWorkflow();await t.start(),this._set("activeWorkflow",t)}async startCreateFeaturesWorkflowAtFeatureTypeSelection(){return this.startCreateFeaturesWorkflow()}async startCreateWorkflowAtFeatureCreation(t){if(A(D,"startCreateWorkflowAtFeatureCreation","startCreateFeaturesWorkflowAtFeatureCreation"),await h((()=>!this.updating)),!this.canCreate)return void x("editing:unsupported-workflow","Create workflow is unsupported or disabled.");await this._cancelWorkflow();const e=this._createCreateWorkflow("awaiting-feature-to-create");e.data.creationInfo=t,await e.start(),this._set("activeWorkflow",e)}async startCreateFeaturesWorkflowAtFeatureCreation(t){return this.startCreateFeaturesWorkflow(t,"creating-features")}async startCreateFeaturesWorkflow(t,e="awaiting-feature-creation-info"){if(await h((()=>!this.updating)),!this.canCreate)throw new i("editing:unsupported-workflow","Creating features is unsupported or disabled.");await this._cancelWorkflow();const a=this._createCreateFeaturesWorkflow(t,e);await a.start(),this._set("activeWorkflow",a)}async startCreateWorkflowAtFeatureEdit(t){if(A(D,"startCreateWorkflowAtFeatureEdit"),await h((()=>!this.updating)),!this.canCreate)return void x("editing:unsupported-workflow","Create workflow is unsupported or disabled.");await this._cancelWorkflow();const e=this._createCreateWorkflow("editing-new-feature");e.data.edits.feature=t,await e.start(),this._set("activeWorkflow",e)}async startCreateFeaturesWorkflowAtFeatureEdit(t){await h((()=>!this.updating));const{initialFeature:e}=t,a=e.sourceLayer,r=a?this.findEditableItemForLayer(a):void 0;if(!this.canCreate||!r)throw new i("editing:unsupported-workflow","Creating features is unsupported or disabled.");await this._cancelWorkflow();const s=this._createCreateFeaturesWorkflow({initialFeature:e,layer:r.layer,maxFeatures:1},"creating-features");await s.start(),this._set("activeWorkflow",s)}async startUpdateWorkflowAtFeatureSelection(){if(await h((()=>!this.updating)),!this.canUpdate)return void x("editing:unsupported-workflow","Update workflow is unsupported or disabled.");await this._cancelWorkflow();const t=this._createUpdateWorkflow();await t.start(),this._set("activeWorkflow",t)}async startUpdateWorkflowAtMultipleFeatureSelection(t){if(await h((()=>!this.updating)),!this.canUpdate)return void x("editing:unsupported-workflow","Update workflow is unsupported or disabled.");await this._cancelWorkflow();const e=this._createUpdateWorkflow("awaiting-update-feature-candidate");e.data.candidates=t,await e.start(),this._set("activeWorkflow",e)}async startUpdateWorkflowAtFeatureEdit(t){if(await h((()=>!this.updating)),!this.canUpdate)return void x("editing:unsupported-workflow","Update workflow is unsupported or disabled.");await this._cancelWorkflow();const e=this._createUpdateWorkflow("editing-existing-feature");e.data.rootFeature=t,await e.start(),this._set("activeWorkflow",e)}async deleteFeatureFromWorkflow(){const{activeWorkflow:t}=this;t&&"update"===t.type?await t.deleteActiveFeature():x("editing:unsupported-workflow","Deleting requires an active update workflow.")}async cancelWorkflow(t){return this._cancelWorkflow({warnIfNoWorkflow:!0,...t})}findEditableItemForLayer(t){const e="subtype-sublayer"===t.type?t.parent:t;return this._editableItems.find((t=>t.layer===e))}itemHasInvalidFormTemplate(t){return!!t&&(this.findEditableItemForLayer(t.layer)?.hasInvalidFormTemplate??!1)}itemHasUnsupportedFields(t){return!!t&&(this.findEditableItemForLayer(t.layer)?.hasUnsupportedFields??!1)}syncFeatureTemplates(){if(this._featureTemplatesViewModelLocked)return;const t=[];for(const{layer:e,supports:a}of this._editableItems)e.loaded&&a.includes("create")&&!W(e)&&t.push(e);this.featureTemplatesViewModel.layers=t}async toggleUpdateWorkflow(){this.canUpdate&&(this.hasPendingEdits&&!await this.showDiscardEditsPrompt()||(this.activeWorkflow&&"awaiting-feature-to-update"===this.state?await this.cancelWorkflow({force:!0}):await this.startUpdateWorkflowAtFeatureSelection()))}lockFeatureTemplatesViewModel(){return this._featureTemplatesViewModelLocked=!0,o((()=>{this._featureTemplatesViewModelLocked=!1,this.syncFeatureTemplates()}))}async _updateEditableItems(){l(this._updateEditableItemsTask);const t=e((async t=>{const e=this.view?.allLayerViews,r=this.view?.map,i=r?.editableLayers.toArray()??[],s=r?.allTables.toArray().filter(F)??[];await Promise.allSettled(s.map((t=>t.load())));const o=s.filter((t=>v(t))),n=[...i.reverse(),...o.reverse()].filter((t=>"mesh"!==t.geometryType||"3d"===this.view?.type));if(!e||!i)return;const l=[],p=[];for(const a of n){const r=e.find((t=>t.layer===a)),i=r?l:p,s=!!r?.suspended;if(!s||!this.hideTemplatesForInactiveLayers)if("subtype-group"===a.type){await a.loadAll(),d(t);for(let t=a.sublayers.length-1;t>=0;--t)i.push(this._makeEditableItemForLayer(a.sublayers.at(t),s))}else i.push(this._makeEditableItemForLayer(a,s))}if(t.aborted)return;const c=this._editableItems;this._editableItems=new a(l.concat(p)),c.destroy()}));this._updatingHandles.addPromise(t.promise),this._updateEditableItemsTask=t}async _cancelWorkflow(t){const e=this.activeWorkflow;if(!e)return void(t?.warnIfNoWorkflow&&x("editing:no-active-workflow","There is no active workflow to cancel."));if(!t||!1!==t.force)return this.emit("workflow-cancel"),this._set("activeWorkflow",null),void await e.cancel(t);await e.cancel(t),this._set("activeWorkflow",null)}_createCreateFeaturesWorkflow(t,e){return I.create({viewModel:this,creationInfo:t,startAt:e,applyEditsCallback:(t,e,a)=>this._applyEdits(t,e,a),addAttachmentsCallback:(t,e)=>this._addAttachments(t,e)})}_createCreateWorkflow(t){return U.create(this,t,((t,e,a)=>this._applyEdits(t,e,a)))}_createUpdateWorkflow(t){return M.create({viewModel:this,startAt:t,applyEditsCallback:(t,e,a)=>this._applyEdits(t,e,a),addAttachmentsCallback:(t,e)=>this._addAttachments(t,e)})}_addAttachments(t,e){const a=e.map((e=>this._addAttachment(t,e.feature,e.attachment)))??[];return Promise.all(a)}async _addAttachment(t,e,a){let r=null;if("geojson"===t.type||"scene"===t.type||"oriented-imagery"===t.type)throw new i("editor:attachments-not-supported","Adding attachments is not supported for this layer type");return await this._queueOperation((async()=>(r=await(t.addAttachment?.(e,a).catch((t=>{throw t?.error||t})))??null,r))),r}async _applyEdits(t,e,a){let r=null;const i=t.url?await _(t.url):null,s={returnServiceEditsOption:(!i||!C(i))&&!RegExp("/hosted/","i").test(t.url)?"original-and-current-features":void 0,...a};return await this._queueOperation((async()=>{const{view:a}=this;if(!a)return null;const i=await V(a,t).catch((()=>null));return r=await t.applyEdits(e,s),i&&await h((()=>!i.updating)),r})),r}_queueOperation(t){this._activityQueue.push(t),this.notifyChange("syncing");const e=(t,e)=>{const a=e.indexOf(t);a>-1&&e.splice(a,1)};return t().then((t=>{if(null!=t&&"error"in t&&null!=t.error)throw t.error;if(null!=t&&"addFeatureResults"in t){const{addFeatureResults:e,deleteFeatureResults:a,updateFeatureResults:r}=t,i=e.find((t=>!!t.error))||r.find((t=>!!t.error))||a.find((t=>!!t.error));if(i)throw i.error}return t})).catch((a=>{x("editing:operation-error","An error occurred.",{error:a});const r={error:a,retry:()=>(e(r,this.failures),this._queueOperation(t)),cancel:()=>{e(r,this.failures)}};this._set("failures",[...this.failures,r])})).then((()=>{e(t,this._activityQueue),this.notifyChange("syncing")}))}_makeEditableItemForLayer(t,e=!0){const a=b(t),r=a?.operations,i=H(this.layerInfos,t),s=T(t),o=s||e,{allowedWorkflows:n}=this,l=n.includes("create")||n.includes("create-features"),d=n.includes("update"),p=t=>!i||!1!==i.enabled&&!1!==i[t],c=l&&!!r?.supportsAdd&&p("addEnabled"),u=d&&!!r?.supportsUpdate&&p("updateEnabled"),h=!o&&d&&!!r?.supportsDelete&&p("deleteEnabled"),w=[];c&&w.push("create"),u&&w.push("update"),h&&w.push("delete");const f=u&&!o&&(!i||!1!==i.attributeUpdatesEnabled),m=u&&!o&&!!a?.editing?.supportsGeometryUpdate&&(!i||!1!==i.geometryUpdatesEnabled),y=!(!a?.data?.supportsAttachment||i&&!1===i.allowAttachments);return{layer:t,supports:w,suspended:e,attributeUpdatesEnabled:f,geometryUpdatesEnabled:m,hasAttachments:y,attachmentsOnCreateEnabled:y&&l&&(!i||!1!==i.attachmentsOnCreateEnabled),attachmentsOnUpdateEnabled:!o&&y&&(!i||!1!==i.attachmentsOnUpdateEnabled),hasInvalidFormTemplate:s,hasUnsupportedFields:!1}}_itemIsSuspended(t){return this.findEditableItemForLayer(t)?.suspended??!1}};t([m()],q.prototype,"_editableItems",void 0),t([m({readOnly:!0})],q.prototype,"activeWorkflow",void 0),t([m({readOnly:!0})],q.prototype,"_activityQueue",void 0),t([m({value:[...G]})],q.prototype,"allowedWorkflows",null),t([m({readOnly:!0})],q.prototype,"canCreate",null),t([m({readOnly:!0})],q.prototype,"canUpdate",null),t([m()],q.prototype,"editableItems",null),t([m({readOnly:!0})],q.prototype,"failures",void 0),t([m()],q.prototype,"hideTemplatesForInactiveLayers",void 0),t([m()],q.prototype,"attachmentsViewModel",void 0),t([m()],q.prototype,"featureFormViewModel",void 0),t([m()],q.prototype,"featureTemplatesViewModel",void 0),t([m()],q.prototype,"labelOptions",null),t([m()],q.prototype,"layerInfos",null),t([m()],q.prototype,"sketchViewModel",void 0),t([m()],q.prototype,"snappingOptions",null),t([m()],q.prototype,"spinnerViewModel",void 0),t([m()],q.prototype,"state",null),t([m({readOnly:!0})],q.prototype,"syncing",null),t([m()],q.prototype,"updating",null),t([m()],q.prototype,"tooltipOptions",null),t([m()],q.prototype,"view",null),t([m()],q.prototype,"pageStack",void 0),t([m()],q.prototype,"showDiscardEditsPrompt",void 0),t([m()],q.prototype,"_candidateCommitted",void 0),t([m()],q.prototype,"page",null),t([m()],q.prototype,"featureFormDisabled",null),t([m()],q.prototype,"canGoBack",null),t([m()],q.prototype,"shouldShowDeleteButton",null),t([m()],q.prototype,"hasPendingEdits",null),t([m()],q.prototype,"useDeprecatedCreateWorkflow",void 0),q=t([y(P)],q);const B=q;export{B as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../core/Error.js";import{abortHandle as
|
|
5
|
+
import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../core/Error.js";import{abortHandle as r,makeHandle as i}from"../../core/handleUtils.js";import{isAborted as a}from"../../core/promiseUtils.js";import{watch as s}from"../../core/reactiveUtils.js";import{property as o}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as l}from"../../core/accessorSupport/decorators/subclass.js";import{getEffectiveLayerCapabilities as n,getEffectiveEditingEnabled as d}from"../../layers/support/layerUtils.js";import{sceneLayerEditingEnabled as c,i3sPatchingEnabled as p}from"../../support/featureFlags.js";import u from"../../views/draw/support/HighlightHelper.js";import h from"./UpdateRecordWorkflowData.js";import m from"./Workflow.js";import{fetchFullFeature as f}from"./workflowUtils.js";var g;const w={exit:Symbol()},y="esri.widgets.Editor.UpdateRecordWorkflow";let b=g=class extends m{constructor(e){super(e),this._highlightHelper=null,this.fullFeature=null,this.type="update-table-record"}initialize(){const{data:e}=this,{edits:s}=e,{view:o}=e.viewModel,l=s.feature,n=new AbortController;this.addHandles(r(n)),this._updatingHandles.addPromise(f(l,e.viewModel.view.spatialReference,n.signal).then((e=>{a(n)||this._onFullFeatureLoaded(e)}),(e=>this.cancel({force:!0,error:new t("editor:failed-to-fetch-full-feature","Failed to retrieve all information for this feature. The update cannot proceed.",{detail:{error:e}})})))),o&&(this._highlightHelper=new u({view:o}),this.addHandles(i((()=>this._highlightHelper?.removeAll()))))}get editableItem(){return this.data.editableItem}get hasPendingEdits(){return this.data.edits.modified}get parent(){return this.data.parent}get shouldShowAttachments(){return this.editableItem.attachmentsOnUpdateEnabled}get shouldAllowAttachmentEditing(){return this.editableItem.supports.includes("update")}get reliesOnOwnerAdminPrivileges(){const{layer:e}=this.editableItem,t=e.capabilities?.operations.supportsUpdate,r=n(e)?.operations.supportsUpdate;return d(e)&&!e.editingEnabled||!!r&&!t}async deleteAndCommit(){return this.data.edits.stageDelete(),this.commit()}async enter(){this._configureAttachmentsViewModel(),this._configureFeatureFormViewModel()}exit(e){this.removeHandles(w.exit)}async start(){return await super.start(),null}_configureAttachmentsViewModel(){const{data:e,fullFeature:t}=this,{attachmentsCapabilities:r,viewModel:a}=e,{attachmentsViewModel:o}=a;o.set({capabilities:r,graphic:t,filesEnabled:!1,mode:"view"}),this.addHandles([i((()=>o.fileInfos.removeAll())),s((()=>o.mode),(e=>{switch(e){case"add":this.go("adding-attachment");break;case"edit":this.go("editing-attachment")}}))],w.exit)}_configureFeatureFormViewModel(){const{edits:e,formTemplate:t,viewModel:{featureFormViewModel:r,view:i}}=this.data;r.set({arcadeEditType:"UPDATE",feature:this.fullFeature,formTemplate:t,highlightHelper:this._highlightHelper,map:i?.map,spatialReference:i.spatialReference});const{initialFeature:a}=e;a&&r.overrideInitialFeature(a),this.addHandles(r.on("value-change",(()=>{e.updateAttributes(r.getValues()),this.fullFeature.attributes=e.feature.attributes})),w.exit)}_onFullFeatureLoaded(e){this.fullFeature=e;const{edits:t}=this.data;t.updateAttributes(e.attributes),t.trackChanges()}static async create(e){const t=new g({data:await h.create(e),onCommit:this._onCommitFactory(e.applyEdits)});return t._set("steps",this._createWorkflowSteps(t)),t}static _createWorkflowSteps(e){const{attachmentsViewModel:t}=e.data.viewModel;return[{id:"editing-attributes",async setUp(){},async tearDown(){}},{id:"adding-attachment",async setUp(){},async tearDown(){t.mode="view"}},{id:"editing-attachment",async setUp(){},async tearDown(){t.mode="view"}}]}};b._onCommitFactory=e=>async t=>{const{edits:r}=t,{feature:i}=r;if(!i)return;const a=i.sourceLayer,s=i.clone();if(!r.attributesModified||r.stagedForDelete){const e=a.objectIdField;if(s.attributes={[e]:i.getAttribute(e)},c()&&p()&&"scene"===a.type&&null!=a.infoFor3D){const e=a.associatedLayer?.globalIdField;null!=e&&s.setAttribute(e,i.getAttribute(e))}}r.geometryModified&&!r.stagedForDelete||(s.geometry=null);const o=r.stagedForDelete?"deleteFeatures":"updateFeatures";await e(a,{[o]:[s]})},e([o()],b.prototype,"editableItem",null),e([o()],b.prototype,"fullFeature",void 0),e([o()],b.prototype,"hasPendingEdits",null),e([o()],b.prototype,"parent",null),e([o()],b.prototype,"shouldShowAttachments",null),e([o()],b.prototype,"shouldAllowAttachmentEditing",null),e([o()],b.prototype,"reliesOnOwnerAdminPrivileges",null),b=g=e([l(y)],b);export{b as UpdateRecordWorkflow,w as handleKeys};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../Graphic.js";import a from"../../core/Error.js";import{makeHandle as o}from"../../core/handleUtils.js";import r from"../../core/Logger.js";import{abortMaybe as i}from"../../core/maybe.js";import{onAbort as s,createAbortError as n,throwIfAborted as l,debounce as d}from"../../core/promiseUtils.js";import c from"../../core/Queue.js";import{whenOnce as p,watch as u,sync as w}from"../../core/reactiveUtils.js";import{last as h}from"../../core/SetUtils.js";import{property as f}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as m}from"../../core/accessorSupport/decorators/subclass.js";import{isEditableLayer as k}from"../../layers/support/editableLayers.js";import{isSubtypeGroupLayer as g,isTable as v}from"../../layers/support/layerUtils.js";import y from"../../views/draw/support/HighlightHelper.js";import b from"./CreateFeaturesWorkflow.js";import{UpdateFeatureWorkflow as W}from"./UpdateFeatureWorkflow.js";import{UpdateRecordWorkflow as C}from"./UpdateRecordWorkflow.js";import _ from"./UpdateWorkflowData.js";import S from"./Workflow.js";import{createWorkflowSteps as F,fetchCandidates as A}from"./workflowUtils.js";import{isGraphicForRelatableFeatureSupportedLayer as M}from"../Feature/support/featureUtils.js";import{getAllTemplatesForLayer as U}from"../support/templateUtils.js";var j;const I="esri.widgets.Editor.UpdateWorkflow",E=r.getLogger(I);let R=j=class extends S{constructor(e){super(e),this._workflowStack=new c(h),this._sketchStack=new c(h),this.type="update"}get activeEditableItem(){return this.activeWorkflow?.data.editableItem??void 0}get activeWorkflow(){return this._workflowStack.last()}get nestedWorkflowCount(){return this._workflowStack.length}get shouldShowAttachments(){return!!this.activeEditableItem?.attachmentsOnUpdateEnabled}get shouldAllowAttachmentEditing(){return!!this.activeEditableItem?.supports.includes("update")}get hasPendingEdits(){return Array.from(this._workflowStack).some((e=>e.hasPendingEdits))}get helpMessage(){return"awaiting-feature-to-update"===this.stepId?"select":void 0}get reliesOnOwnerAdminPrivileges(){return this.activeWorkflow?.reliesOnOwnerAdminPrivileges??!1}get hasInvalidFormTemplate(){return!!this.activeEditableItem?.hasInvalidFormTemplate}get hasUnsupportedFields(){return!!this.activeEditableItem?.hasUnsupportedFields}async back(e=(()=>Promise.resolve(!0))){const{featureFormViewModel:t}=this.data.viewModel;if(null==t.relationshipId)if(this.activeWorkflow){if(this.activeWorkflow.hasPendingEdits){if(!await e())return}this.activeWorkflow.hasPreviousStep?await this.activeWorkflow.previous({cancelCurrentStep:!0}):await this.cancelActiveWorkflow({force:!0})}else this.hasPreviousStep?await this.previous({cancelCurrentStep:!0}):await this.cancel({force:!0});else t.relationshipId=null}async cancelActiveWorkflow(e){await(this.activeWorkflow?.cancel(e)),await this._popWorkflow()}async commit(){await this._drainWorkflowStack((e=>e.commit())),await super.commit()}static create(e){const{viewModel:t,startAt:a,addAttachmentsCallback:o,applyEditsCallback:r}=e,i=new j({data:new _({addAttachmentsCallback:o,applyEditsCallback:r,viewModel:t}),onCommit:async()=>{}});return i._set("steps",this._createWorkflowSteps(i,a)),i}async save(){this.nestedWorkflowCount>1?(await(this.activeWorkflow?.commit()),await this._popWorkflow()):await this.commit()}async startCreatingRelatedRecord(e){try{const t=await this._createNestedCreateFeaturesWorkflow(e);await this._pushWorkflow(t)}catch(t){throw new a("editor:unable-to-start-creating","Could not begin updating the provided feature or table record.",{error:t})}}async startUpdating(e){try{const t=await this._createNestedUpdateWorkflow(e);await this._pushWorkflow(t)}catch(t){throw new a("editor:unable-to-start-updating","Could not begin updating the provided feature or table record.",{error:t})}}async deleteActiveFeature(){const{activeWorkflow:e}=this;if(!e)throw new a("editor:nothing-to-delete","There is no feature to delete");P(e)?await e.deleteAndCommit():await e.cancel(),1===this.nestedWorkflowCount?await this.reset():await this._popWorkflow()}async cancelAll(){await this._drainWorkflowStack((e=>e.cancel({force:!0})))}async _createNestedCreateFeaturesWorkflow(e){const{relatedLayer:t}=e,{addAttachmentsCallback:o,applyEditsCallback:r,viewModel:i}=this.data;if(!k(t))throw new a("editor:unsupported-layer","Editing is not supported on the provided layer");const s=this._getCreationInfoForNestedCreateFeaturesWorkflow(e),n=s.template||s.initialFeature?"creating-features":"awaiting-feature-creation-info",l="create-features"!==this.activeWorkflow?.type?this.activeWorkflow:void 0;return b.create({addAttachmentsCallback:o,applyEditsCallback:r,creationInfo:s,isNested:!0,parent:l,startAt:n,viewModel:i})}_getCreationInfoForNestedCreateFeaturesWorkflow(e){const{relatedLayer:o}=e;if(!k(o)||g(o))throw new a("editor:unsupported-layer","Editing is not supported on the provided layer");const r={layer:o,maxFeatures:1},i=this._makeRelatedRecordAttributes(e),s=U(o);return s?.length>0?(r.attributeOverrides=i,1===s.length&&(r.template=s[0])):r.initialFeature=new t({sourceLayer:o,attributes:i}),r}async _createNestedUpdateWorkflow(e){const t=v(e.sourceLayer)?C:W,{applyEditsCallback:a,viewModel:o}=this.data,r="create-features"!==this.activeWorkflow?.type?this.activeWorkflow:void 0,i=await t.create({feature:e,parent:r,viewModel:o,applyEdits:a});return await p((()=>!i.updating)),i}async _drainWorkflowStack(e){const t=this._workflowStack,a=[];for(;t.length>0;){const o=t.pop();this._sketchStack.pop();const r=e(o).then((()=>o.destroy()));this._updatingHandles.addPromise(r),a.push(r)}await Promise.all(a)}_makeRelatedRecordAttributes(e){const{parentFeature:t,relatedLayer:a,relationshipId:o}=e;if(!M(t))return;const r=a.relationships?.find((e=>e.id===o));if(!r)return void x("relationship-not-found","Could not begin creating a related record because the relationship specified could not be found on the destination layer.");if("origin"===r.role)return void x("unsupported-role","Creating new related records in the 'origin' table of a relationship is not yet supported");const i=t.sourceLayer;r.relatedTableId!==i.layerId&&x("invalid-argument-combination","The given parent feature does not belong to the relationship designated by the given relationship ID.");const s=i.relationships?.find((e=>e.id===o));if(!s)return void x("relationship-not-found","Could not begin creating a related record because the relationship specified could not be found on the origin layer.");const n=t.getAttribute(s.keyField);return n||x("no-key-on-origin-feature","The given parent feature does not have a value for the relationship's origin primary key field."),{[r.keyField]:n}}async _popWorkflow(){this._workflowStack.pop()?.destroy(),this._sketchStack.pop();const e=await this._reconcileWorkflowStack();if(e.failureCount>0)throw new a("editor:next-workflow-failed","Popped the top workflow, but the next workflow in the stack failed to activate",e)}async _pushWorkflow(e){const t=this._workflowRequiresSketchViewModel(e);this.activeWorkflow?.exit({removeSketchHandles:t});const o=this._sketchStack,r=await(e?.start()),i=o.peek();r?(i?.exit(),o.push(r)):o.push(this._cloneSketchController(i)),this._workflowStack.push(e);const s=await this._reconcileWorkflowStack();if(s.failureCount>0)throw new a("editor:failed-to-start-updating-feature","Failed to enter the provided workflow.",s)}async _reconcileWorkflowStack(){const e=this._workflowStack,t=this._sketchStack;try{const a=e.peek();return await(a?.enter()),await(t.peek()?.enter()),{activeWorkflow:a,failureCount:0}}catch(a){e.pop().destroy(),t.pop();const{activeWorkflow:o,failureCount:r}=await this._reconcileWorkflowStack();return{activeWorkflow:o,failureCount:r+1}}}_cloneSketchController(e){return{enter:e?.enter??(async()=>{}),exit:e?.exit??(async()=>{})}}_workflowRequiresSketchViewModel(e){const{type:t}=e;return"update-feature"===t||"create-features"===t&&!v(e.data.creationInfo?.layer)}static _createWorkflowSteps(e,t="awaiting-feature-to-update"){const{data:r}=e;return F(["awaiting-feature-to-update","awaiting-update-feature-candidate","editing-existing-feature","adding-attachment","editing-attachment"],t,{"awaiting-feature-to-update":()=>({id:"awaiting-feature-to-update",async setUp(){const{spinnerViewModel:t}=r.viewModel,a=r.viewModel.view;let d=null;e.addHandles(o((()=>{d=i(d)})),this.id),r.rootFeature=null,r.candidates=[];const c=a.on("immediate-click",(async o=>{o.stopPropagation(),t.location=o.mapPoint,t.visible=!0,d?.abort();const{editableItems:i}=r.viewModel;d=new AbortController;const c=await new Promise(((e,t)=>{s(d?.signal,(()=>t(n()))),e(A(i,a,o,d?.signal))}));l(d),r.candidates=c.filter((e=>"fulfilled"===e.status)).flatMap((e=>e.value)),t.visible=1===r.candidates.length,0!==r.candidates.length&&(1===r.candidates.length?(r.rootFeature=r.candidates[0],e.go("editing-existing-feature").catch((()=>{})).then((()=>t.visible=!1))):e.next())}));a.focus(),e.addHandles(c,this.id)},async tearDown(){0===r.candidates.length&&(r.viewModel.spinnerViewModel.visible=!1),e.removeHandles(this.id)}}),"awaiting-update-feature-candidate":()=>({id:"awaiting-update-feature-candidate",async setUp(){r.rootFeature=null;const{view:t}=r.viewModel;if(!t)return;const a=new y({view:t});e.addHandles([u((()=>r.rootFeature),((e,t)=>{a.remove(t),a.add(e)}),w),o((()=>a.removeAll()))],this.id)},async tearDown(){e.removeHandles(this.id)}}),"editing-existing-feature":()=>({id:"editing-existing-feature",async setUp(){const{rootFeature:t,viewModel:i}=e.data;if(!t)throw new a("editor:no-feature-specified","Cannot setup the 'updating-existing-feature' step until the root feature is defined");await e.startUpdating(t),i.spinnerViewModel.visible=!1;const s=d((async()=>{await p((()=>!e.updating)),e.previous()})),{featureFormViewModel:n}=r.viewModel,l=n.relatedRecordCallbacks;n.relatedRecordCallbacks={addRelatedRecord:async t=>{await e.startCreatingRelatedRecord(t),n.relationshipId=null},editRelatedRecord:async({relatedFeature:t})=>{await e.startUpdating(t),n.relationshipId=null},showAllRelatedRecords:e=>n.relationshipId=e.relationshipId},e.addHandles([o((()=>n.relatedRecordCallbacks=l)),u((()=>e.nestedWorkflowCount),((e,t)=>{0===e&&0!==t&&s()}),w)],this.id)},async tearDown(){await e.cancelAll(),e.removeHandles(this.id)}}),"adding-attachment":()=>({id:"adding-attachment",parent:"editing-existing-feature",async setUp(){},async tearDown(){r.viewModel.attachmentsViewModel.mode="view"}}),"editing-attachment":()=>({id:"editing-attachment",parent:"editing-existing-feature",async setUp(){},async tearDown(){r.viewModel.attachmentsViewModel.mode="view"}})})}};e([f()],R.prototype,"activeEditableItem",null),e([f()],R.prototype,"activeWorkflow",null),e([f()],R.prototype,"nestedWorkflowCount",null),e([f()],R.prototype,"shouldShowAttachments",null),e([f()],R.prototype,"shouldAllowAttachmentEditing",null),e([f()],R.prototype,"hasPendingEdits",null),e([f()],R.prototype,"helpMessage",null),e([f()],R.prototype,"reliesOnOwnerAdminPrivileges",null),e([f()],R.prototype,"hasInvalidFormTemplate",null),e([f()],R.prototype,"hasUnsupportedFields",null),R=j=e([m(I)],R);const x=(e,t)=>E.warn(`editor:${e}`,t,"The create operation will be allowed to proceed, but the resulting feature may not be related to the given parent feature."),P=e=>!!e&&/update-/.test(e.type),H=R;export{H as default};
|
|
5
|
+
import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../Graphic.js";import a from"../../core/Error.js";import{makeHandle as o}from"../../core/handleUtils.js";import r from"../../core/Logger.js";import{abortMaybe as i}from"../../core/maybe.js";import{onAbort as s,createAbortError as n,throwIfAborted as l,debounce as d}from"../../core/promiseUtils.js";import c from"../../core/Queue.js";import{whenOnce as p,watch as u,sync as w}from"../../core/reactiveUtils.js";import{last as h}from"../../core/SetUtils.js";import{property as f}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as m}from"../../core/accessorSupport/decorators/subclass.js";import{isEditableLayer as k}from"../../layers/support/editableLayers.js";import{isSubtypeGroupLayer as g,isTable as v}from"../../layers/support/layerUtils.js";import y from"../../views/draw/support/HighlightHelper.js";import b from"./CreateFeaturesWorkflow.js";import{UpdateFeatureWorkflow as W}from"./UpdateFeatureWorkflow.js";import{UpdateRecordWorkflow as C}from"./UpdateRecordWorkflow.js";import _ from"./UpdateWorkflowData.js";import S from"./Workflow.js";import{createWorkflowSteps as F,fetchCandidates as M}from"./workflowUtils.js";import{isGraphicForRelatableFeatureSupportedLayer as A}from"../Feature/support/featureUtils.js";import{getAllTemplatesForLayer as U}from"../support/templateUtils.js";var j;const I="esri.widgets.Editor.UpdateWorkflow",E=r.getLogger(I);let R=j=class extends S{constructor(e){super(e),this._workflowStack=new c(h),this._sketchStack=new c(h),this.type="update"}get activeEditableItem(){return this.activeWorkflow?.data.editableItem??void 0}get activeWorkflow(){return this._workflowStack.last()}get nestedWorkflowCount(){return this._workflowStack.length}get shouldShowAttachments(){return!!this.activeEditableItem?.attachmentsOnUpdateEnabled}get shouldAllowAttachmentEditing(){return!!this.activeEditableItem?.supports.includes("update")}get hasPendingEdits(){return Array.from(this._workflowStack).some((e=>e.hasPendingEdits))}get helpMessage(){return this.activeWorkflow?.helpMessage?this.activeWorkflow.helpMessage:"awaiting-feature-to-update"===this.stepId?"select":void 0}get reliesOnOwnerAdminPrivileges(){return this.activeWorkflow?.reliesOnOwnerAdminPrivileges??!1}get hasInvalidFormTemplate(){return!!this.activeEditableItem?.hasInvalidFormTemplate}get hasUnsupportedFields(){return!!this.activeEditableItem?.hasUnsupportedFields}async back(e=(()=>Promise.resolve(!0))){const{featureFormViewModel:t}=this.data.viewModel;if(null==t.relationshipId)if(this.activeWorkflow){if(this.activeWorkflow.hasPendingEdits){if(!await e())return}this.activeWorkflow.hasPreviousStep?await this.activeWorkflow.previous({cancelCurrentStep:!0}):await this.cancelActiveWorkflow({force:!0})}else this.hasPreviousStep?await this.previous({cancelCurrentStep:!0}):await this.cancel({force:!0});else t.relationshipId=null}async cancelActiveWorkflow(e){await(this.activeWorkflow?.cancel(e)),await this._popWorkflow()}async commit(){await this._drainWorkflowStack((e=>e.commit())),await super.commit()}static create(e){const{viewModel:t,startAt:a,addAttachmentsCallback:o,applyEditsCallback:r}=e,i=new j({data:new _({addAttachmentsCallback:o,applyEditsCallback:r,viewModel:t}),onCommit:async()=>{}});return i._set("steps",this._createWorkflowSteps(i,a)),i}async save(){this.nestedWorkflowCount>1?(await(this.activeWorkflow?.commit()),await this._popWorkflow()):await this.commit()}async startCreatingRelatedRecord(e){try{const t=await this._createNestedCreateFeaturesWorkflow(e);await this._pushWorkflow(t)}catch(t){throw new a("editor:unable-to-start-creating","Could not begin updating the provided feature or table record.",{error:t})}}async startUpdating(e){try{const t=await this._createNestedUpdateWorkflow(e);await this._pushWorkflow(t)}catch(t){throw new a("editor:unable-to-start-updating","Could not begin updating the provided feature or table record.",{error:t})}}async deleteActiveFeature(){const{activeWorkflow:e}=this;if(!e)throw new a("editor:nothing-to-delete","There is no feature to delete");P(e)?await e.deleteAndCommit():await e.cancel(),1===this.nestedWorkflowCount?await this.reset():await this._popWorkflow()}async cancelAll(){await this._drainWorkflowStack((e=>e.cancel({force:!0})))}async _createNestedCreateFeaturesWorkflow(e){const{relatedLayer:t}=e,{addAttachmentsCallback:o,applyEditsCallback:r,viewModel:i}=this.data;if(!k(t))throw new a("editor:unsupported-layer","Editing is not supported on the provided layer");const s=this._getCreationInfoForNestedCreateFeaturesWorkflow(e),n=s.template||s.initialFeature?"creating-features":"awaiting-feature-creation-info",l="create-features"!==this.activeWorkflow?.type?this.activeWorkflow:void 0;return b.create({addAttachmentsCallback:o,applyEditsCallback:r,creationInfo:s,isNested:!0,parent:l,startAt:n,viewModel:i})}_getCreationInfoForNestedCreateFeaturesWorkflow(e){const{relatedLayer:o}=e;if(!k(o)||g(o))throw new a("editor:unsupported-layer","Editing is not supported on the provided layer");const r={layer:o,maxFeatures:1},i=this._makeRelatedRecordAttributes(e),s=U(o);return s?.length>0?(r.attributeOverrides=i,1===s.length&&(r.template=s[0])):r.initialFeature=new t({sourceLayer:o,attributes:i}),r}async _createNestedUpdateWorkflow(e){const t=v(e.sourceLayer)?C:W,{applyEditsCallback:a,viewModel:o}=this.data,r="create-features"!==this.activeWorkflow?.type?this.activeWorkflow:void 0,i=await t.create({feature:e,parent:r,viewModel:o,applyEdits:a});return await p((()=>!i.updating)),i}async _drainWorkflowStack(e){const t=this._workflowStack,a=[];for(;t.length>0;){const o=t.pop();this._sketchStack.pop();const r=e(o).then((()=>o.destroy()));this._updatingHandles.addPromise(r),a.push(r)}await Promise.all(a)}_makeRelatedRecordAttributes(e){const{parentFeature:t,relatedLayer:a,relationshipId:o}=e;if(!A(t))return;const r=a.relationships?.find((e=>e.id===o));if(!r)return void x("relationship-not-found","Could not begin creating a related record because the relationship specified could not be found on the destination layer.");if("origin"===r.role)return void x("unsupported-role","Creating new related records in the 'origin' table of a relationship is not yet supported");const i=t.sourceLayer;r.relatedTableId!==i.layerId&&x("invalid-argument-combination","The given parent feature does not belong to the relationship designated by the given relationship ID.");const s=i.relationships?.find((e=>e.id===o));if(!s)return void x("relationship-not-found","Could not begin creating a related record because the relationship specified could not be found on the origin layer.");const n=t.getAttribute(s.keyField);return n||x("no-key-on-origin-feature","The given parent feature does not have a value for the relationship's origin primary key field."),{[r.keyField]:n}}async _popWorkflow(){this._workflowStack.pop()?.destroy(),this._sketchStack.pop();const e=await this._reconcileWorkflowStack();if(e.failureCount>0)throw new a("editor:next-workflow-failed","Popped the top workflow, but the next workflow in the stack failed to activate",e)}async _pushWorkflow(e){const t=this._workflowRequiresSketchViewModel(e);this.activeWorkflow?.exit({removeSketchHandles:t});const o=this._sketchStack,r=await(e?.start()),i=o.peek();r?(i?.exit(),o.push(r)):o.push(this._cloneSketchController(i)),this._workflowStack.push(e);const s=await this._reconcileWorkflowStack();if(s.failureCount>0)throw new a("editor:failed-to-start-updating-feature","Failed to enter the provided workflow.",s)}async _reconcileWorkflowStack(){const e=this._workflowStack,t=this._sketchStack;try{const a=e.peek();return await(a?.enter()),await(t.peek()?.enter()),{activeWorkflow:a,failureCount:0}}catch(a){e.pop().destroy(),t.pop();const{activeWorkflow:o,failureCount:r}=await this._reconcileWorkflowStack();return{activeWorkflow:o,failureCount:r+1}}}_cloneSketchController(e){return{enter:e?.enter??(async()=>{}),exit:e?.exit??(async()=>{})}}_workflowRequiresSketchViewModel(e){const{type:t}=e;return"update-feature"===t||"create-features"===t&&!v(e.data.creationInfo?.layer)}static _createWorkflowSteps(e,t="awaiting-feature-to-update"){const{data:r}=e;return F(["awaiting-feature-to-update","awaiting-update-feature-candidate","editing-existing-feature","adding-attachment","editing-attachment"],t,{"awaiting-feature-to-update":()=>({id:"awaiting-feature-to-update",async setUp(){const{spinnerViewModel:t}=r.viewModel,a=r.viewModel.view;let d=null;e.addHandles(o((()=>{d=i(d)})),this.id),r.rootFeature=null,r.candidates=[];const c=a.on("immediate-click",(async o=>{o.stopPropagation(),t.location=o.mapPoint,t.visible=!0,d?.abort();const{editableItems:i}=r.viewModel;d=new AbortController;const c=await new Promise(((e,t)=>{s(d?.signal,(()=>t(n()))),e(M(i,a,o,d?.signal))}));l(d),r.candidates=c.filter((e=>"fulfilled"===e.status)).flatMap((e=>e.value)),t.visible=1===r.candidates.length,0!==r.candidates.length&&(1===r.candidates.length?(r.rootFeature=r.candidates[0],e.go("editing-existing-feature").catch((()=>{})).then((()=>t.visible=!1))):e.next())}));a.focus(),e.addHandles(c,this.id)},async tearDown(){0===r.candidates.length&&(r.viewModel.spinnerViewModel.visible=!1),e.removeHandles(this.id)}}),"awaiting-update-feature-candidate":()=>({id:"awaiting-update-feature-candidate",async setUp(){r.rootFeature=null;const{view:t}=r.viewModel;if(!t)return;const a=new y({view:t});e.addHandles([u((()=>r.rootFeature),((e,t)=>{a.remove(t),a.add(e)}),w),o((()=>a.removeAll()))],this.id)},async tearDown(){e.removeHandles(this.id)}}),"editing-existing-feature":()=>({id:"editing-existing-feature",async setUp(){const{rootFeature:t,viewModel:i}=e.data;if(!t)throw new a("editor:no-feature-specified","Cannot setup the 'updating-existing-feature' step until the root feature is defined");await e.startUpdating(t),i.spinnerViewModel.visible=!1;const s=d((async()=>{await p((()=>!e.updating)),e.previous()})),{featureFormViewModel:n}=r.viewModel,l=n.relatedRecordCallbacks;n.relatedRecordCallbacks={addRelatedRecord:async t=>{await e.startCreatingRelatedRecord(t),n.relationshipId=null},editRelatedRecord:async({relatedFeature:t})=>{await e.startUpdating(t),n.relationshipId=null},showAllRelatedRecords:e=>n.relationshipId=e.relationshipId},e.addHandles([o((()=>n.relatedRecordCallbacks=l)),u((()=>e.nestedWorkflowCount),((e,t)=>{0===e&&0!==t&&s()}),w)],this.id)},async tearDown(){await e.cancelAll(),e.removeHandles(this.id)}}),"adding-attachment":()=>({id:"adding-attachment",parent:"editing-existing-feature",async setUp(){},async tearDown(){r.viewModel.attachmentsViewModel.mode="view"}}),"editing-attachment":()=>({id:"editing-attachment",parent:"editing-existing-feature",async setUp(){},async tearDown(){r.viewModel.attachmentsViewModel.mode="view"}})})}};e([f()],R.prototype,"activeEditableItem",null),e([f()],R.prototype,"activeWorkflow",null),e([f()],R.prototype,"nestedWorkflowCount",null),e([f()],R.prototype,"shouldShowAttachments",null),e([f()],R.prototype,"shouldAllowAttachmentEditing",null),e([f()],R.prototype,"hasPendingEdits",null),e([f()],R.prototype,"helpMessage",null),e([f()],R.prototype,"reliesOnOwnerAdminPrivileges",null),e([f()],R.prototype,"hasInvalidFormTemplate",null),e([f()],R.prototype,"hasUnsupportedFields",null),R=j=e([m(I)],R);const x=(e,t)=>E.warn(`editor:${e}`,t,"The create operation will be allowed to proceed, but the resulting feature may not be related to the given parent feature."),P=e=>!!e&&/update-/.test(e.type),H=R;export{H as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as o}from"../../chunks/tslib.es6.js";import t from"../../core/Accessor.js";import{property as
|
|
5
|
+
import{_ as o}from"../../chunks/tslib.es6.js";import t from"../../core/Accessor.js";import{property as e}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as s}from"../../core/accessorSupport/decorators/subclass.js";import r from"../support/SketchTooltipControls/VisibleElements.js";import n from"../support/SnappingControls/VisibleElements.js";let p=class extends t{constructor(o){super(o),this.createFeaturesSection=!0,this.editFeaturesSection=!0,this.sketchTooltipControls=!0,this.sketchTooltipControlsElements=new r,this.snappingControls=!0,this.snappingControlsElements=new n,this.undoRedoButtons=!1}};o([e({type:Boolean,nonNullable:!0})],p.prototype,"createFeaturesSection",void 0),o([e({type:Boolean,nonNullable:!0})],p.prototype,"editFeaturesSection",void 0),o([e({type:Boolean,nonNullable:!0})],p.prototype,"sketchTooltipControls",void 0),o([e({type:r,nonNullable:!0})],p.prototype,"sketchTooltipControlsElements",void 0),o([e({type:Boolean,nonNullable:!0})],p.prototype,"snappingControls",void 0),o([e({type:n,nonNullable:!0})],p.prototype,"snappingControlsElements",void 0),o([e({type:Boolean,nonNullable:!0})],p.prototype,"undoRedoButtons",void 0),p=o([s("esri.widgets.Editor.VisibleElements")],p);const l=p;export{l as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../Graphic.js";import{addMany as t}from"../../core/arrayUtils.js";import{createTask as r}from"../../core/asyncUtils.js";import"../../core/has.js";import{handlesGroup as i,makeHandle as a}from"../../core/handleUtils.js";import{clone as n}from"../../core/lang.js";import{whenOrAbort as s,throwIfAborted as l,debounce as o}from"../../core/promiseUtils.js";import{watch as c,whenOnce as u}from"../../core/reactiveUtils.js";import{px2pt as p}from"../../core/screenUtils.js";import{diff as y}from"../../core/accessorSupport/diffUtils.js";import{featureHasFields as d,fixFields as f,getDisplayFieldName as m}from"../../layers/support/fieldUtils.js";import{calculateTolerance as h}from"../../renderers/support/clickToleranceUtils.js";import{meterIn as b}from"../../renderers/support/lengthUtils.js";import{getTransformationType as g,TransformationType as w}from"../../renderers/visualVariables/support/sizeVariableUtils.js";import{getRotationAngle as v,getSize as S}from"../../renderers/visualVariables/support/visualVariableUtils.js";import{sceneLayerEditingEnabled as j,i3sPatchingEnabled as U}from"../../support/featureFlags.js";import{to3D as V}from"../../symbols/support/symbolConversion.js";import{getDisplayedSymbol as I}from"../../symbols/support/symbolUtils.js";import{GraphicState as z}from"../../views/3d/layers/graphics/GraphicState.js";import{createQueryGeometry as F}from"../../views/support/drapedUtils.js";import{hitTestSelectSimilarDistance as L,filterGraphicHits as T}from"../../views/support/hitTestSelectUtils.js";function x(e){const t=e.sourceLayer;if(!t||"feature"!==t.type||!C(t.renderer))return{rotation:null,size:null};let r=null,i=null;const a=t.renderer.getVisualVariablesForType("rotation").filter((t=>(!t.axis||"heading"===t.axis)&&t.field&&!t.valueExpression&&null!=v(t,e)));1===a.length&&(r=k(a[0],t));const n=t.renderer.getVisualVariablesForType("size").filter((t=>t.field&&!t.useSymbolValue&&!t.valueExpression&&g(t)===w.RealWorldSize&&null!=S(t,e)));return 1===n.length&&(i=M(n[0],t)),{rotation:r,size:i}}function k(e,t){const r="heading"===(e.axis||"heading")&&"arithmetic"===e.rotationType?-1:1,i=e.field,a=t.fields&&t.fields.filter((e=>e.name===i)),n=a&&1===a.length?a[0].type:"double",s={initial:0,current:0};return{field:i,fieldType:n,getDefault:()=>Promise.resolve(0),getValue:e=>(s.current=s.initial-r*e,O((s.current+360)%360,n)),initValue:e=>{s.initial=null!=e?e:s.current,s.current=0},isUpdatingInteractively:!1,rotationType:e.rotationType??"geographic"}}function E(e,t){switch(t){case"width":return e[0];case"depth":return e[1];case"height":return e[2];default:return e[2]||e[1]||e[0]}}async function A(e,t,r){if(null==t)return 0;const{symbol:i}=V(t);if(null==i||"web-style"===i.type||"cim"===i.type)return 0;const a=i.symbolLayers.at(0);if(!a)return 0;switch(a.type){case"icon":{const{computeIconLayerResourceSize:e}=await import("../../symbols/support/symbolLayerUtils.js");return a.size||Math.min(ie.icon,(await e(a,ie.icon))[0])||ie.icon}case"text":return a.size||ie.text;case"line":return a.size||ie.line;case"object":{const{computeObjectLayerResourceSize:t}=await import("../../symbols/support/symbolLayerUtils.js");return E(await t(a,e.scale/ie.viewScaleSizeFactor),r)}case"path":return(null!=a.width?a.width:a.height)||e.scale/ie.viewScaleSizeFactor;case"extrude":return a.size||e.scale/ie.viewScaleSizeFactor;default:return 0}}function M(e,t){const r=e.field,i=e.axis,a=t.fields&&t.fields.filter((e=>e.name===r)),n=a&&1===a.length?a[0].type:"double",s={updating:!1,initial:0,current:0},l=b[e.valueUnit]??1;let o;return o="area"===e.valueRepresentation?e=>(e*l/2)**2*Math.PI:"radius"===e.valueRepresentation||"distance"===e.valueRepresentation?e=>e*l/2:e=>e*l,{field:r,fieldType:n,getDefault:async(e,t)=>O(o(await A(t,e,i)),n),getValue:(e,t)=>(s.initial||(s.initial=t.pixelSizeAt(t.center)),s.current=s.initial*e,O(s.current,n)),initValue:e=>{s.initial=null!=e?e:s.current,s.current=0},isUpdatingInteractively:!1,displayUnit:le(e.valueUnit),axis:e.axis}}function O(e,t){switch(t){case"small-integer":case"integer":case"long":return Math.round(e);case"double":case"single":return e;default:return 0}}function C(e){switch(e?.type){case"class-breaks":case"simple":case"unique-value":case"dot-density":case"dictionary":case"pie-chart":return!0;default:return!1}}async function P(e,t,r){const i=await I(e,{useSourceLayer:!0,ignoreGraphicSymbol:!0,webStyleCache:t,scale:r});null!=y(e.symbol,i)&&(e.symbol=i)}function R(e){if(!e)throw new Error("no geometry type");return"multipatch"===e?"mesh":e}async function D(e,t,r,n){(await G(e,t,n)).remove();const s=e.on("create",(async i=>{if("cancel"===i.state){(await G(e,t,n)).remove()}if("complete"===i.state){const a=i.graphic;a.sourceLayer||(a.sourceLayer=t.layer),a.attributes||(a.attributes={...t.template?.prototype.attributes});const s="2d"===e.view?.type?e.view?.scale:null;await P(a,n,s),r(a)}}));return i([s,a((()=>e.cancel()))])}async function G(e,t,r){const i=t.layer,n={...t.template?.prototype.attributes,...t.attributeOverrides};let s=null;const{view:l}=e,u="2d"===l?.type;if(await Z(e,i,n,r,u?l.scale:null),u){const t=o((t=>Z(e,i,n,r,t)));s=c((()=>l.scale),(e=>t(e)))}const{data:p,editing:y}=i.capabilities;return e.layer.elevationInfo=i.elevationInfo,await e.create(R(i.geometryType),{graphicProperties:{attributes:n,sourceLayer:i},hasZ:p.supportsZ,defaultZ:y.zDefault??e.defaultCreateOptions.defaultZ,geometryToPlace:t.geometryToPlace??void 0}),s??a()}async function Z(t,r,i,a,n){const s=new e({sourceLayer:r,attributes:i}),{rotation:l,size:o}=x(s);let c=await I(s,{useSourceLayer:!0,webStyleCache:a,scale:n}),u=!1;for(const e of[o,l]){if(null==e)continue;null==i[e.field]&&(i[e.field]=await e.getDefault(c,t.view),u=!0)}switch(u&&(c=await I(s,{useSourceLayer:!0,webStyleCache:a,scale:n})),c?.type){case"simple-fill":case"polygon-3d":t.polygonSymbol=c;break;case"simple-line":case"line-3d":t.polylineSymbol=c;break;case"simple-marker":case"picture-marker":case"point-3d":case"cim":t.pointSymbol=c;break;case"mesh-3d":t.meshSymbol=c}q(t.tooltipOptions,o,l)}function q(e,t,r){e.visualVariables=null!=t||null!=r?{size:null!=t?{unit:t.displayUnit,axis:t.axis,valueType:t.fieldType}:null,rotation:null!=r?{valueType:r.fieldType,rotationType:r.rotationType??"geographic"}:null}:null}function Q(e,t){return e?e.find((e=>e.layer===t)):void 0}async function B(e,t,r,i){switch(t.type){case"3d":return W(e,t,r,i);case"2d":return _(e,t,r,i)}}async function W(e,r,i,a){if(0===e.length)return[];const{updatable:n,graphicsByLayer:l}=await i.async((async()=>{const{results:t}=await s(L(r,i),a),n=new Map,l=e=>{const t=e.layer,r=n.get(t);if(!r){const e=new Array;return n.set(t,e),e}return r};T(t).forEach((({graphic:e})=>l(e).push(e)));const o=e.filter((({supports:e,layer:t})=>e.includes("update")&&n.has(t)));return 0!==o.length&&i.stopPropagation(),{updatable:o,graphicsByLayer:n}}));return s(Promise.allSettled(n.map((async({layer:e})=>{const r=l.get(e),i=H(e);if(r.every((e=>d(i,e))))return r;const n=[];for(const a of r){n.push(a.getObjectId());const e=Object.keys(a.attributes);t(i,e)}const s=e.createQuery();return s.returnGeometry=!1,s.objectIds=n,s.outFields=f(e.fieldsIndex,i),e.queryFeatures(s,{signal:a}).then((({features:e})=>e))}))),a)}async function _(e,t,r,i){if(0===e.length)return[];let a=null;const n=await r.async((async()=>{const{results:n}=await s(t.hitTest(r),i);if(0===n.length)return[];const l=new Set;a=T(n),a.forEach((({graphic:e})=>e&&l.add(e.layer)));const o=e.items.filter((({layer:e,supports:t,attachmentsOnUpdateEnabled:r})=>l.has(e)&&(t.includes("update")||t.includes("delete")||r)));return o.length>0&&r.stopPropagation(),o}));return s(Promise.allSettled(n.map((async({layer:e})=>{const n=e.createQuery();n.returnGeometry=!1,n.outFields=H(e);const s="renderer"in e?h({renderer:e.renderer,event:r}):0;n.geometry=F(r.mapPoint,s,t),n.outSpatialReference=t.spatialReference;const{features:l}=await e.queryFeatures(n,{signal:i});return a?.forEach((({graphic:t})=>{t.layer!==e||l.some((e=>e.getObjectId()===t.getObjectId()))||l.push(t)})),l}))),i)}function H(e){return f(e.fieldsIndex,[e.objectIdField,m({displayField:"displayField"in e?e.displayField:null,fields:e.fields})])}async function J(e,t,r){const{sourceLayer:i}=e,a=i.createQuery();a.objectIds=[e.getAttribute(i.objectIdField)],a.outFields=["*"],a.outSpatialReference=t,a.returnM=i.capabilities.data.supportsM,a.returnZ=i.capabilities.data.supportsZ,j()&&U()&&"scene"===i.type&&null!=i.infoFor3D&&(a.returnGeometry=!0,a.formatOf3DObjects="3D_glb");const n=await i.queryFeatures(a,{signal:r});l(r);return n.features[0]}async function K(e){const{graphic:t,sketchViewModel:r,sourceLayer:i,visualVariables:a,webStyleCache:n}=e;let s=!1;const{rotation:l,size:o}=a;if([l,o].forEach((async e=>{if(null==e)return;const i=t.getAttribute(e.field);if(null!=i)e.initValue(i);else{const i=await e.getDefault(t.symbol,r.view);e.initValue(i),t.setAttribute(e.field,i),s=!0}})),s){const e="2d"===r.view?.type?r.view.scale:null;await P(t,n,e)}const c={multipleSelectionEnabled:!1};return"point"===i.geometryType&&(c.enableRotation=null!=l,c.enableScaling=null!=o),q(r.tooltipOptions,o,l),r.layer.elevationInfo=i.elevationInfo,r.update(t,c)}function N(e){return null==e||"rotate-start"!==e.type&&"rotate"!==e.type&&"rotate-stop"!==e.type?null:e}function X(e){return null==e||"scale-start"!==e.type&&"scale"!==e.type&&"scale-stop"!==e.type?null:e}async function Y(e,t,r,i,a){if(null==t.geometry||"point"!==t.geometry?.type)return;const n=i.rotation,s=N(r.toolEventInfo);if(null!=n&&null!=s)if("rotate-stop"===s.type)n.isUpdatingInteractively=!1,n.initValue();else{n.isUpdatingInteractively=!0;const{field:r,getValue:i}=n;t.setAttribute(r,i(s.angle,e))}const l=i.size,o=X(r.toolEventInfo);if(null!=l&&null!=o)if("scale-stop"===o.type)l.isUpdatingInteractively=!1,l.initValue();else{l.isUpdatingInteractively=!0;const{field:r,getValue:i}=l;t.setAttribute(r,i(o.xScale,e))}await P(t,a,"2d"===e.type?e.scale:null)}async function $({feature:e,featureClone:t,visualVariableAttributes:r,sketchViewModel:n,view:s,onUpdate:l,webStyleCache:u}){await P(t,u,"2d"===s.type?s.scale:null);let p=null;if("2d"===n?.view?.type){const e=o((e=>P(t,u,e)));p=c((()=>n?.view?.scale),(t=>e(t)))}s.map.add(n.layer);const y=t.sourceLayer,d=pe(s,y);await re(s,t),await K({graphic:t,sketchViewModel:n,sourceLayer:y,visualVariables:r,webStyleCache:u});let f=null;d.then((e=>f=e)).catch((()=>{}));const m=r.size,h=r.rotation,b=c((()=>e.attributes),(async e=>{let r=!1;for(const i in e){const a=e[i];a!==t.getAttribute(i)&&(t.setAttribute(i,a),null==m||m.isUpdatingInteractively||m.field!==i||m.initValue(a),null==h||h.isUpdatingInteractively||h.field!==i||h.initValue(a),(null==f||f.requiredFields.includes(i))&&(r=!0))}r&&await P(t,u,"2d"===s.type?s.scale:null)})),g=n.on("update",(async e=>{const t=e.graphics[0];if("complete"===e.state)return K({graphic:t,sketchViewModel:n,sourceLayer:y,visualVariables:r,webStyleCache:u});await Y(s,t,e,r,u),l(fe(t),e)})),w=n.on(["undo","redo"],(async e=>{l(fe(e.graphics[0]),e)}));return i([w,g,a((()=>n.cancel())),b,p])}function ee(e,t,n){const s=e.view;e.layer.add(n);const o=t.sourceLayer,c=t.layer,p=t.getAttribute(c.objectIdField);let y=null;function d(e){y?.abort(),y=r((async t=>{const r=await pe(s,o);l(t),r.setVisibility?.(p,e)}))}return d(!1),i([te(s,n,(e=>d(!e))),a((async()=>{d(!0);try{const e=await pe(s,o);await u((()=>!e.updating))}finally{e.layer.remove(n)}}))])}function te(e,t,r){if("3d"===e.type){const a=new z({graphic:t});return i([e.trackGraphicState(a),c((()=>a.displaying),r)])}return c((()=>t.visible),r)}async function re(e,t){if("3d"===e.type){const r=new z({graphic:t}),i=e.trackGraphicState(r);await u((()=>r.displaying)),i.remove()}else await u((()=>t.visible))}const ie={icon:p(24),text:p(12),line:p(1),viewScaleSizeFactor:100};function ae(e,t,r){let i=!1;return e.filter((e=>!!i||(i=e===t,i))).map((e=>r[e]()))}function ne(e){if(1!==e.length)return null;const t=e[0];if("items"in t){const e=t;return 1===e.items.length?e.items[0]:null}return t}function se(e,t){if(e.viewModel.syncFeatureTemplates(),"awaiting-feature-creation-info"===t[0].id){const r=ne(e.viewModel.featureTemplatesViewModel.items);null==r||r.supportsUpload||(e.creationInfo=r,t.shift())}return t}function le(e){switch(e){case"unknown":case"decimal-degrees":return null;default:return e}}function oe(e){e.filesEnabled=!0,e.mode="view",e.capabilities={editing:!0,operations:{add:!0,update:!0,delete:!0}}}function ce(e){const{creationInfo:t,viewModel:r}=e;if(!t)return!1;const{layer:i}=t,a=r.editableItems.find((e=>e.layer===i));if(a)return a.attachmentsOnCreateEnabled;const n=i.capabilities?.data,s=r.layerInfos?.find((e=>e.layer===i));return!(!(n&&"supportsAttachment"in n&&n.supportsAttachment)||s&&(!1===s.allowAttachments||!1===s.attachmentsOnUpdateEnabled))}const ue=e=>/-stop/.test(e)||/vertex-/.test(e),pe=(e,t)=>{const r="subtype-sublayer"===t.type?t.parent:t;return e.whenLayerView(r)};function ye(e){return"createInteractiveEditSession"in e}const de=Symbol();function fe(e){const t=e.geometry;if("mesh"===t?.type){const r=e.cloneShallow();return r.attributes=n(e.attributes),r.geometry=t.cloneShallow(),r.geometry.transform=t.transform?.clone()??null,r}return e.clone()}function me(e){const t=e.cursor;return e.cursor="progress",a((()=>e.cursor=t))}export{de as UsesSketchViewModelSymbol,se as avoidFeatureTemplateSelectionWithOnlyOneItem,ye as canCreateInteractiveEditSession,fe as cloneGraphicExceptMesh,ae as createWorkflowSteps,B as fetchCandidates,J as fetchFullFeature,Q as findLayerInfo,x as getVisualVariableAttributes,ue as isTerminalUpdateEventType,oe as prepareAttachmentsForCreateWorkflow,D as setUpFeatureAdd,$ as setUpGeometryUpdate,ce as shouldShowAttachmentsForCreateWorkflow,me as showProgressCursor,ie as sizeDefaults,le as sizeVariableUnitToLengthUnit,G as startCreatingNewFeature,K as startUpdatingFeature,ee as swapForEditingSession,P as updateGraphicSymbolWhenRequired,Y as visualVariableInteractiveUpdate,pe as whenEditorLayerView,re as whenGraphicDisplayed};
|
|
5
|
+
import e from"../../Graphic.js";import{addMany as t}from"../../core/arrayUtils.js";import{createTask as r}from"../../core/asyncUtils.js";import"../../core/has.js";import{handlesGroup as a,makeHandle as i}from"../../core/handleUtils.js";import{clone as n}from"../../core/lang.js";import{whenOrAbort as s,throwIfAborted as l,debounce as o}from"../../core/promiseUtils.js";import{watch as c,whenOnce as u}from"../../core/reactiveUtils.js";import{px2pt as p}from"../../core/screenUtils.js";import{diff as y}from"../../core/accessorSupport/diffUtils.js";import{featureHasFields as d,fixFields as f,getDisplayFieldName as m}from"../../layers/support/fieldUtils.js";import{calculateTolerance as h}from"../../renderers/support/clickToleranceUtils.js";import{meterIn as b}from"../../renderers/support/lengthUtils.js";import{getTransformationType as g,TransformationType as w}from"../../renderers/visualVariables/support/sizeVariableUtils.js";import{getRotationAngle as v,getSize as S}from"../../renderers/visualVariables/support/visualVariableUtils.js";import{sceneLayerEditingEnabled as j,i3sPatchingEnabled as U}from"../../support/featureFlags.js";import{to3D as V}from"../../symbols/support/symbolConversion.js";import{getDisplayedSymbol as I}from"../../symbols/support/symbolUtils.js";import{GraphicState as z}from"../../views/3d/layers/graphics/GraphicState.js";import{createQueryGeometry as F}from"../../views/support/drapedUtils.js";import{hitTestSelectSimilarDistance as L,filterGraphicHits as T}from"../../views/support/hitTestSelectUtils.js";import{getAllTemplatesForLayer as x}from"../support/templateUtils.js";function k(e){const t=e.sourceLayer;if(!t||"feature"!==t.type||!P(t.renderer))return{rotation:null,size:null};let r=null,a=null;const i=t.renderer.getVisualVariablesForType("rotation").filter((t=>(!t.axis||"heading"===t.axis)&&t.field&&!t.valueExpression&&null!=v(t,e)));1===i.length&&(r=E(i[0],t));const n=t.renderer.getVisualVariablesForType("size").filter((t=>t.field&&!t.useSymbolValue&&!t.valueExpression&&g(t)===w.RealWorldSize&&null!=S(t,e)));return 1===n.length&&(a=M(n[0],t)),{rotation:r,size:a}}function E(e,t){const r="heading"===(e.axis||"heading")&&"arithmetic"===e.rotationType?-1:1,a=e.field,i=t.fields&&t.fields.filter((e=>e.name===a)),n=i&&1===i.length?i[0].type:"double",s={initial:0,current:0};return{field:a,fieldType:n,getDefault:()=>Promise.resolve(0),getValue:e=>(s.current=s.initial-r*e,C((s.current+360)%360,n)),initValue:e=>{s.initial=null!=e?e:s.current,s.current=0},isUpdatingInteractively:!1,rotationType:e.rotationType??"geographic"}}function A(e,t){switch(t){case"width":return e[0];case"depth":return e[1];case"height":return e[2];default:return e[2]||e[1]||e[0]}}async function O(e,t,r){if(null==t)return 0;const{symbol:a}=V(t);if(null==a||"web-style"===a.type||"cim"===a.type)return 0;const i=a.symbolLayers.at(0);if(!i)return 0;switch(i.type){case"icon":{const{computeIconLayerResourceSize:e}=await import("../../symbols/support/symbolLayerUtils.js");return i.size||Math.min(ie.icon,(await e(i,ie.icon))[0])||ie.icon}case"text":return i.size||ie.text;case"line":return i.size||ie.line;case"object":{const{computeObjectLayerResourceSize:t}=await import("../../symbols/support/symbolLayerUtils.js");return A(await t(i,e.scale/ie.viewScaleSizeFactor),r)}case"path":return(null!=i.width?i.width:i.height)||e.scale/ie.viewScaleSizeFactor;case"extrude":return i.size||e.scale/ie.viewScaleSizeFactor;default:return 0}}function M(e,t){const r=e.field,a=e.axis,i=t.fields&&t.fields.filter((e=>e.name===r)),n=i&&1===i.length?i[0].type:"double",s={updating:!1,initial:0,current:0},l=b[e.valueUnit]??1;let o;return o="area"===e.valueRepresentation?e=>(e*l/2)**2*Math.PI:"radius"===e.valueRepresentation||"distance"===e.valueRepresentation?e=>e*l/2:e=>e*l,{field:r,fieldType:n,getDefault:async(e,t)=>C(o(await O(t,e,a)),n),getValue:(e,t)=>(s.initial||(s.initial=t.pixelSizeAt(t.center)),s.current=s.initial*e,C(s.current,n)),initValue:e=>{s.initial=null!=e?e:s.current,s.current=0},isUpdatingInteractively:!1,displayUnit:le(e.valueUnit),axis:e.axis}}function C(e,t){switch(t){case"small-integer":case"integer":case"long":return Math.round(e);case"double":case"single":return e;default:return 0}}function P(e){switch(e?.type){case"class-breaks":case"simple":case"unique-value":case"dot-density":case"dictionary":case"pie-chart":return!0;default:return!1}}async function R(e,t,r){const a=await I(e,{useSourceLayer:!0,ignoreGraphicSymbol:!0,webStyleCache:t,scale:r});null!=y(e.symbol,a)&&(e.symbol=a)}function D(e){if(!e)throw new Error("no geometry type");return"multipatch"===e?"mesh":e}async function G(e,t,r,n){(await Z(e,t,n)).remove();const s=e.on("create",(async a=>{if("cancel"===a.state){(await Z(e,t,n)).remove()}if("complete"===a.state){const i=a.graphic;i.sourceLayer||(i.sourceLayer=t.layer),i.attributes||(i.attributes={...t.template?.prototype.attributes});const s="2d"===e.view?.type?e.view?.scale:null;await R(i,n,s),r(i)}}));return a([s,i((()=>e.cancel()))])}async function Z(e,t,r){const a=t.layer,n={...t.template?.prototype.attributes,...t.attributeOverrides};let s=null;const{view:l}=e,u="2d"===l?.type;if(await q(e,a,n,r,u?l.scale:null),u){const t=o((t=>q(e,a,n,r,t)));s=c((()=>l.scale),(e=>t(e)))}const{data:p,editing:y}=a.capabilities;return e.layer.elevationInfo=a.elevationInfo,await e.create(D(a.geometryType),{graphicProperties:{attributes:n,sourceLayer:a},hasZ:p.supportsZ,defaultZ:(u?y.zDefault:null)??e.defaultCreateOptions.defaultZ,geometryToPlace:t.geometryToPlace??void 0}),s??i()}async function q(t,r,a,i,n){const s=new e({sourceLayer:r,attributes:a}),{rotation:l,size:o}=k(s);let c=await I(s,{useSourceLayer:!0,webStyleCache:i,scale:n}),u=!1;for(const e of[o,l]){if(null==e)continue;null==a[e.field]&&(a[e.field]=await e.getDefault(c,t.view),u=!0)}switch(u&&(c=await I(s,{useSourceLayer:!0,webStyleCache:i,scale:n})),c?.type){case"simple-fill":case"polygon-3d":t.polygonSymbol=c;break;case"simple-line":case"line-3d":t.polylineSymbol=c;break;case"simple-marker":case"picture-marker":case"point-3d":case"cim":t.pointSymbol=c;break;case"mesh-3d":t.meshSymbol=c}Q(t.tooltipOptions,o,l)}function Q(e,t,r){e.visualVariables=null!=t||null!=r?{size:null!=t?{unit:t.displayUnit,axis:t.axis,valueType:t.fieldType}:null,rotation:null!=r?{valueType:r.fieldType,rotationType:r.rotationType??"geographic"}:null}:null}function B(e,t){return e?e.find((e=>e.layer===t)):void 0}async function W(e,t,r,a){switch(t.type){case"3d":return _(e,t,r,a);case"2d":return H(e,t,r,a)}}async function _(e,r,a,i){if(0===e.length)return[];const{updatable:n,graphicsByLayer:l}=await a.async((async()=>{const{results:t}=await s(L(r,a),i),n=new Map,l=e=>{const t=e.layer,r=n.get(t);if(!r){const e=new Array;return n.set(t,e),e}return r};T(t).forEach((({graphic:e})=>l(e).push(e)));const o=e.filter((({supports:e,layer:t})=>e.includes("update")&&n.has(t)));return 0!==o.length&&a.stopPropagation(),{updatable:o,graphicsByLayer:n}}));return s(Promise.allSettled(n.map((async({layer:e})=>{const r=l.get(e),a=J(e);if(r.every((e=>d(a,e))))return r;const n=[];for(const i of r){n.push(i.getObjectId());const e=Object.keys(i.attributes);t(a,e)}const s=e.createQuery();return s.returnGeometry=!1,s.objectIds=n,s.outFields=f(e.fieldsIndex,a),e.queryFeatures(s,{signal:i}).then((({features:e})=>e))}))),i)}async function H(e,t,r,a){if(0===e.length)return[];let i=null;const n=await r.async((async()=>{const{results:n}=await s(t.hitTest(r),a);if(0===n.length)return[];const l=new Set;i=T(n),i.forEach((({graphic:e})=>e&&l.add(e.layer)));const o=e.items.filter((({layer:e,supports:t,attachmentsOnUpdateEnabled:r})=>l.has(e)&&(t.includes("update")||t.includes("delete")||r)));return o.length>0&&r.stopPropagation(),o}));return s(Promise.allSettled(n.map((async({layer:e})=>{const n=e.createQuery();n.returnGeometry=!1,n.outFields=J(e);const s="renderer"in e?h({renderer:e.renderer,event:r}):0;n.geometry=F(r.mapPoint,s,t),n.outSpatialReference=t.spatialReference;const{features:l}=await e.queryFeatures(n,{signal:a});return i?.forEach((({graphic:t})=>{t.layer!==e||l.some((e=>e.getObjectId()===t.getObjectId()))||l.push(t)})),l}))),a)}function J(e){return f(e.fieldsIndex,[e.objectIdField,m({displayField:"displayField"in e?e.displayField:null,fields:e.fields})])}async function K(e,t,r){const{sourceLayer:a}=e,i=a.createQuery();i.objectIds=[e.getAttribute(a.objectIdField)],i.outFields=["*"],i.outSpatialReference=t,i.returnM=a.capabilities.data.supportsM,i.returnZ=a.capabilities.data.supportsZ,j()&&U()&&"scene"===a.type&&null!=a.infoFor3D&&(i.returnGeometry=!0,i.formatOf3DObjects="3D_glb");const n=await a.queryFeatures(i,{signal:r});l(r);return n.features[0]}async function N(e){const{graphic:t,sketchViewModel:r,sourceLayer:a,visualVariables:i,webStyleCache:n}=e;let s=!1;const{rotation:l,size:o}=i;if([l,o].forEach((async e=>{if(null==e)return;const a=t.getAttribute(e.field);if(null!=a)e.initValue(a);else{const a=await e.getDefault(t.symbol,r.view);e.initValue(a),t.setAttribute(e.field,a),s=!0}})),s){const e="2d"===r.view?.type?r.view.scale:null;await R(t,n,e)}const c={multipleSelectionEnabled:!1};return"point"===a.geometryType&&(c.enableRotation=null!=l,c.enableScaling=null!=o),Q(r.tooltipOptions,o,l),r.layer.elevationInfo=a.elevationInfo,r.update(t,c)}function X(e){return null==e||"rotate-start"!==e.type&&"rotate"!==e.type&&"rotate-stop"!==e.type?null:e}function Y(e){return null==e||"scale-start"!==e.type&&"scale"!==e.type&&"scale-stop"!==e.type?null:e}async function $(e,t,r,a,i){if(null==t.geometry||"point"!==t.geometry?.type)return;const n=a.rotation,s=X(r.toolEventInfo);if(null!=n&&null!=s)if("rotate-stop"===s.type)n.isUpdatingInteractively=!1,n.initValue();else{n.isUpdatingInteractively=!0;const{field:r,getValue:a}=n;t.setAttribute(r,a(s.angle,e))}const l=a.size,o=Y(r.toolEventInfo);if(null!=l&&null!=o)if("scale-stop"===o.type)l.isUpdatingInteractively=!1,l.initValue();else{l.isUpdatingInteractively=!0;const{field:r,getValue:a}=l;t.setAttribute(r,a(o.xScale,e))}await R(t,i,"2d"===e.type?e.scale:null)}async function ee({feature:e,featureClone:t,visualVariableAttributes:r,sketchViewModel:n,view:s,onUpdate:l,webStyleCache:u}){await R(t,u,"2d"===s.type?s.scale:null);let p=null;if("2d"===n?.view?.type){const e=o((e=>R(t,u,e)));p=c((()=>n?.view?.scale),(t=>e(t)))}s.map.add(n.layer);const y=t.sourceLayer,d=pe(s,y);await ae(s,t),await N({graphic:t,sketchViewModel:n,sourceLayer:y,visualVariables:r,webStyleCache:u});let f=null;d.then((e=>f=e)).catch((()=>{}));const m=r.size,h=r.rotation,b=c((()=>e.attributes),(async e=>{let r=!1;for(const a in e){const i=e[a];i!==t.getAttribute(a)&&(t.setAttribute(a,i),null==m||m.isUpdatingInteractively||m.field!==a||m.initValue(i),null==h||h.isUpdatingInteractively||h.field!==a||h.initValue(i),(null==f||f.requiredFields.includes(a))&&(r=!0))}r&&await R(t,u,"2d"===s.type?s.scale:null)})),g=n.on("update",(async e=>{const t=e.graphics[0];if("complete"===e.state)return N({graphic:t,sketchViewModel:n,sourceLayer:y,visualVariables:r,webStyleCache:u});await $(s,t,e,r,u),l(fe(t),e)})),w=n.on(["undo","redo"],(async e=>{l(fe(e.graphics[0]),e)}));return a([w,g,i((()=>n.cancel())),b,p])}function te(e,t,n){const s=e.view;e.layer.add(n);const o=t.sourceLayer,c=t.layer,p=t.getAttribute(c.objectIdField);let y=null;function d(e){y?.abort(),y=r((async t=>{const r=await pe(s,o);l(t),r.setVisibility?.(p,e)}))}return d(!1),a([re(s,n,(e=>d(!e))),i((async()=>{d(!0);try{const e=await pe(s,o);await u((()=>!e.updating))}finally{e.layer.remove(n)}}))])}function re(e,t,r){if("3d"===e.type){const i=new z({graphic:t});return a([e.trackGraphicState(i),c((()=>i.displaying),r)])}return c((()=>t.visible),r)}async function ae(e,t){if("3d"===e.type){const r=new z({graphic:t}),a=e.trackGraphicState(r);await u((()=>r.displaying)),a.remove()}else await u((()=>t.visible))}const ie={icon:p(24),text:p(12),line:p(1),viewScaleSizeFactor:100};function ne(e,t,r){let a=!1;return e.filter((e=>!!a||(a=e===t,a))).map((e=>r[e]()))}function se(e,t){e.viewModel.syncFeatureTemplates();const r=e.creationInfo;if("awaiting-feature-creation-info"===t[0].id&&r){const e=r.layer,a=x(e);1===a.length&&"scene"!==e.type&&(r.template=a[0],t.shift())}return t}function le(e){switch(e){case"unknown":case"decimal-degrees":return null;default:return e}}function oe(e){e.filesEnabled=!0,e.mode="view",e.capabilities={editing:!0,operations:{add:!0,update:!0,delete:!0}}}function ce(e){const{creationInfo:t,viewModel:r}=e;if(!t)return!1;const{layer:a}=t,i=r.editableItems.find((e=>e.layer===a));if(i)return i.attachmentsOnCreateEnabled;const n=a.capabilities?.data,s=r.layerInfos?.find((e=>e.layer===a));return!(!(n&&"supportsAttachment"in n&&n.supportsAttachment)||s&&(!1===s.allowAttachments||!1===s.attachmentsOnUpdateEnabled))}const ue=e=>/-stop/.test(e)||/vertex-/.test(e),pe=(e,t)=>{const r="subtype-sublayer"===t.type?t.parent:t;return e.whenLayerView(r)};function ye(e){return"createInteractiveEditSession"in e}const de=Symbol();function fe(e){const t=e.geometry;if("mesh"===t?.type){const r=e.cloneShallow();return r.attributes=n(e.attributes),r.geometry=t.cloneShallow(),r.geometry.transform=t.transform?.clone()??null,r}return e.clone()}function me(e){const t=e.cursor;return e.cursor="progress",i((()=>e.cursor=t))}export{de as UsesSketchViewModelSymbol,se as avoidFeatureTemplateSelectionWithOnlyOneItem,ye as canCreateInteractiveEditSession,fe as cloneGraphicExceptMesh,ne as createWorkflowSteps,W as fetchCandidates,K as fetchFullFeature,B as findLayerInfo,k as getVisualVariableAttributes,ue as isTerminalUpdateEventType,oe as prepareAttachmentsForCreateWorkflow,G as setUpFeatureAdd,ee as setUpGeometryUpdate,ce as shouldShowAttachmentsForCreateWorkflow,me as showProgressCursor,ie as sizeDefaults,le as sizeVariableUnitToLengthUnit,Z as startCreatingNewFeature,N as startUpdatingFeature,te as swapForEditingSession,R as updateGraphicSymbolWhenRequired,$ as visualVariableInteractiveUpdate,pe as whenEditorLayerView,ae as whenGraphicDisplayed};
|
package/widgets/Editor.js
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../chunks/tslib.es6.js";import"../intl.js";import t from"../core/Logger.js";import{createResolver as s}from"../core/promiseUtils.js";import{watch as o,initial as r,on as a,when as i}from"../core/reactiveUtils.js";import{property as n}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as l}from"../core/accessorSupport/decorators/subclass.js";import d from"./Attachments.js";import p from"./FeatureForm.js";import m from"./FeatureTemplates.js";import c from"./Spinner.js";import h from"./Widget.js";import{css as u}from"./Editor/css.js";import{workflowDeprecation as g}from"./Editor/deprecationUtils.js";import w from"./Editor/EditorViewModel.js";import{warningIcon as f}from"./Editor/icons.js";import{isModelUpload as v}from"./Editor/modelUploadUtils.js";import _ from"./Editor/VisibleElements.js";import{loadCreateFeaturesPanelContentComponents as y,CreateFeaturesPanelContent as k}from"./Editor/components/CreateFeaturesPanelContent.js";import{loadFeatureListComponents as F,FeatureList as M}from"./Editor/components/FeatureList.js";import{loadFooterActionsComponents as b,FooterActions as C}from"./Editor/components/FooterActions.js";import{loadNoticesComponents as W,Notice as A}from"./Editor/components/Notices.js";import{loadPanelContentComponents as E,PanelContent as T,PanelContentSection as j,PanelContentMessage as P}from"./Editor/components/PanelContent.js";import{PanelToolbar as L,loadPanelToolbarComponents as U}from"./Editor/components/PanelToolbar.js";import{loadPromptComponents as I,Prompt as S}from"./Editor/components/Prompt.js";import{loadUpdateFeaturePanelContentComponents as D,UpdateFeaturePanelContent as x}from"./Editor/components/UpdateFeaturePanelContent.js";import{loadUploadDetailsComponents as O,UploadDetails as B}from"./Editor/components/UploadDetails.js";import{renderItem as V}from"./FeatureTemplates/ItemList.js";import{loadCalciteComponents as G}from"./support/componentsUtils.js";import{globalCss as H}from"./support/globalCss.js";import{incrementHeadingLevel as R,Heading as q}from"./support/Heading.js";import"./support/widgetUtils.js";import{messageBundle as N}from"./support/decorators/messageBundle.js";import{vmEvent as z}from"./support/decorators/vmEvent.js";import{tsx as $}from"./support/jsxFactory.js";import{substitute as J}from"../intl/substitute.js";const K="esri.widgets.Editor",Q=t.getLogger(K);let X=class extends h{constructor(e,t){super(e,t),this._featureForm=new p,this._attachments=new d({visibleElements:{addSubmitButton:!1,cancelAddButton:!1,cancelUpdateButton:!1,deleteButton:!1,errorMessage:!1,progressBar:!1,updateButton:!1}}),this._featureTemplates=new m({enableListScroll:!1,renderItemContentEnd:e=>e.supportsUpload?$("calcite-icon",{class:u.templateItemContentEnd,icon:"upload-to",key:"upload-icon"}):null,renderItemLabel:e=>e.label,renderCustomGroupContent:e=>this._renderCustomTemplateGroupContent(e)}),this._filterText="",this._prompt=null,this._spinner=new c,this.headingLevel=4,this.iconClass=u.widgetIcon,this.messages=null,this.messagesCommon=null,this.messagesTemplates=null,this.supportingWidgetDefaults=null,this.viewModel=new w,this.visibleElements=new _,this._renderSelectIcon=()=>$("calcite-icon",{icon:"cursor",slot:"content-start"}),this.EditorPanel=({heading:e,key:t},...s)=>$("calcite-flow-item",{closable:!1,heading:e,headingLevel:this.headingLevel,key:t,loading:this._loading,onCalciteFlowItemBack:this._onBack},$(L,{editorViewModel:this.viewModel,messagesCommon:this.messagesCommon,visibleElements:this.visibleElements}),...s),this._showDiscardEditsPrompt=()=>{const{messages:e,activeWorkflow:t}=this;if("create-features"===t?.type&&v(t.data.creationInfo))return this._showPrompt("success"===t.data.upload?.state?e.modelUploads.cancelPlacementPrompt:e.modelUploads.cancelUploadPrompt);const s="create"===t?.type;return this._showPrompt({title:e[s?"cancelAddTitle":"cancelEditTitle"],message:e[s?"cancelAddWarningMessage":"cancelEditWarningMessage"],yesLabel:e[s?"discardFeature":"discardEdits"],noLabel:e[s?"continueAdding":"continueEditing"]})},this._showGenericCancelPrompt=()=>{const{messages:e,messagesCommon:t}=this;return this._showPrompt({title:e.cancelRequestTitle,message:e.cancelRequestWarningMessage,yesLabel:t.form.yes,noLabel:t.form.no})},this._onSave=()=>{this.viewModel.saveWorkflow()},this._onDelete=()=>{const{messages:e,messagesCommon:t}=this;this._prompt={title:e.deleteWarningTitle,message:e.deleteWarningMessage,context:"danger",actions:{primary:{label:t.delete,action:()=>{this.deleteFeatureFromWorkflow(),this._clearPrompt()}},secondary:{label:e.keepFeature,action:this._clearPrompt}}}},this._onToggleUpdateWorkflow=()=>this.viewModel.toggleUpdateWorkflow(),this._onBack=e=>(e?.stopPropagation(),this.viewModel.back()),this._onAttachmentAdd=()=>{const{activeWorkflow:e}=this.viewModel;e&&("create-features"===e.type||"update"===e.type&&"create-features"===e.activeWorkflow?.type?(this._attachments.addFile(),e.back()):this._attachments.addAttachment().then((()=>e.back())))},this._onAttachmentUpdate=()=>{const{activeWorkflow:e}=this.viewModel;e&&("create-features"===e.type?(this._attachments.updateFile(),e.back()):this._attachments.updateAttachment().then((()=>e.back())))},this._onAttachmentDelete=()=>{const{messages:e,messagesCommon:t}=this;this._prompt={title:e.deleteAttachmentWarningTitle,message:e.deleteAttachmentWarningMessage,context:"danger",actions:{primary:{label:t.delete,action:this._onAttachmentDeleteConfirm},secondary:{label:e.keepAttachment,action:this._clearPrompt}}}},this._onAttachmentDeleteConfirm=async()=>{const e=this._attachments,{activeWorkflow:t}=this.viewModel;t&&("create-features"===t.type?e.deleteFile():(await e.deleteAttachment(e.viewModel.activeAttachmentInfo),this._clearPrompt()),await t.back(),this._clearPrompt())},this._onAttachmentsError=e=>{this._prompt={title:this.messages.errorWarningTitle,message:e.message,context:"warning",actions:{primary:{label:this.messagesCommon.form.ok,action:this._clearPrompt}}}},this._clearPrompt=()=>{this._prompt=null}}initialize(){this.addHandles([o((()=>R(this.headingLevel)),(e=>{this._featureForm.headingLevel=e,this._featureTemplates.headingLevel=e}),r),a((()=>this.viewModel.activeWorkflow),"cancel-request",(({controller:e})=>{(this.viewModel.hasPendingEdits?this._showDiscardEditsPrompt():this._showGenericCancelPrompt()).then((t=>t?e.allow():e.deny()))})),o((()=>this.viewModel),(e=>{this._featureForm.viewModel=e?.featureFormViewModel??null,this._attachments.viewModel=e?.attachmentsViewModel??null,this._featureTemplates.viewModel=e?.featureTemplatesViewModel??null,this._spinner.viewModel=e?.spinnerViewModel??null,e.showDiscardEditsPrompt=this._showDiscardEditsPrompt}),r),o((()=>this.view),((e,t)=>{const s=`editor-${this.id}-spinner`;t?.ui.remove(this._spinner,s),e?.ui.add(this._spinner,{key:s,position:"manual"})}),r),i((()=>this.supportingWidgetDefaults),(e=>{this._featureForm.set(e.featureForm),this._attachments.set(e.attachments),this._featureTemplates.set(e.featureTemplates),this.viewModel.sketchViewModel.set(e.sketch)}),r),i((()=>this._attachments?.error),(e=>this._onAttachmentsError(e))),i((()=>this.viewModel?.failures),(e=>{const{messages:t}=this,[{error:s,retry:o,cancel:r}]=e;this._prompt={title:t.errorWarningTitle,message:J(t.errorWarningMessageTemplate,{errorMessage:s.message}),context:"warning",actions:{primary:{label:t.retry,action:()=>{o(),this._clearPrompt()}},secondary:{label:t.ignore,action:()=>{r(),this._clearPrompt()}}}}})),o((()=>this.viewModel?.state),(e=>{switch(e){case"awaiting-feature-to-update":case"ready":case"disabled":this._filterText="",this._featureTemplates.filterText=""}})),o((()=>this.viewModel.featureFormDisabled),(e=>this._featureForm.disabled=e))])}destroy(){this._attachments.destroy(),this._featureForm.destroy(),this._featureTemplates.destroy()}loadDependencies(){return Promise.all([G({"flow-item":()=>import("@esri/calcite-components/dist/components/calcite-flow-item.js"),flow:()=>import("@esri/calcite-components/dist/components/calcite-flow.js"),icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js"),list:()=>import("@esri/calcite-components/dist/components/calcite-list.js")}),y(),F(),b(),W(),E(),U(),I(),D(),O()])}get _deleteButtonCommonInfo(){return{appearance:"outline",kind:"danger"}}get _loading(){const{viewModel:e}=this;return e.syncing||e.updating||this._attachments.submitting}get activeWorkflow(){return this.viewModel.activeWorkflow}get allowedWorkflows(){return this.viewModel.allowedWorkflows}set allowedWorkflows(e){this.viewModel.allowedWorkflows=e}get useDeprecatedCreateWorkflow(){return this.viewModel.useDeprecatedCreateWorkflow}set useDeprecatedCreateWorkflow(e){this.viewModel.useDeprecatedCreateWorkflow=e}get hideTemplatesForInactiveLayers(){return this.viewModel.hideTemplatesForInactiveLayers}set hideTemplatesForInactiveLayers(e){this.viewModel.hideTemplatesForInactiveLayers=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get labelOptions(){return this.viewModel.labelOptions}set labelOptions(e){this.viewModel.labelOptions=e}get layerInfos(){return this.viewModel.layerInfos}set layerInfos(e){this.viewModel.layerInfos=e}get snappingOptions(){return this.viewModel.snappingOptions}set snappingOptions(e){this.viewModel.snappingOptions=e}get tooltipOptions(){return this.viewModel.tooltipOptions}set tooltipOptions(e){this.viewModel.tooltipOptions=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}startCreateWorkflowAtFeatureTypeSelection(){return g(Q,"startCreateWorkflowAtFeatureTypeSelection","startCreateFeaturesWorkflowAtFeatureTypeSelection"),this.viewModel.startCreateWorkflowAtFeatureTypeSelection()}startCreateFeaturesWorkflowAtFeatureTypeSelection(){return this.viewModel.startCreateFeaturesWorkflowAtFeatureTypeSelection()}startCreateWorkflowAtFeatureCreation(e){return g(Q,"startCreateWorkflowAtFeatureCreation","startCreateFeaturesWorkflowAtFeatureCreation"),this.viewModel.startCreateWorkflowAtFeatureCreation(e)}startCreateFeaturesWorkflowAtFeatureCreation(e){return this.viewModel.startCreateFeaturesWorkflowAtFeatureCreation(e)}startCreateWorkflowAtFeatureEdit(e){return g(Q,"startCreateWorkflowAtFeatureEdit"),this.viewModel.startCreateWorkflowAtFeatureEdit(e)}startUpdateWorkflowAtFeatureSelection(){return this.viewModel.startUpdateWorkflowAtFeatureSelection()}startUpdateWorkflowAtMultipleFeatureSelection(e){return this.viewModel.startUpdateWorkflowAtMultipleFeatureSelection(e)}startUpdateWorkflowAtFeatureEdit(e){return this.viewModel.startUpdateWorkflowAtFeatureEdit(e)}deleteFeatureFromWorkflow(){return this.viewModel.deleteFeatureFromWorkflow()}cancelWorkflow(e){return this.viewModel.cancelWorkflow(e)}render(){const{viewModel:e}=this,t=this.classes(u.base,H.widget,H.panel);return e?$("div",{class:t,key:"base"},$("calcite-flow",{key:"flow"},e.pageStack.map((e=>this._renderPage(e)))),this._prompt?$(S,{...this._prompt,headingLevel:this.headingLevel}):void 0):$("div",{class:t,key:"empty"})}_renderPage(e){switch(e){case"disabled":break;case"ready":return this._renderReady();case"awaiting-feature-creation-info":return this._renderAwaitingFeatureCreationInfo();case"creating-features-upload-details":return this._renderUploadDetails();case"creating-features":return this._renderCreatingFeatures();case"editing-new-feature":case"editing-existing-feature":case"editing-attributes":return this._renderUpdateFeature();case"awaiting-update-feature-candidate":return this._renderFeatureList();case"adding-attachment":return this._renderAttachmentAdding();case"editing-attachment":return this._renderAttachmentEditing()}return $("div",{key:"empty-page"})}_renderAwaitingFeatureCreationInfo(){const{EditorPanel:e,messages:t}=this;return $(e,{heading:t.selectTemplate,key:"templates-panel"},$(T,{key:"feature-templates"},$(j,null,this._featureTemplates.render())))}_renderUploadDetails(){const{EditorPanel:e,activeWorkflow:t,messages:s}=this;if("create-features"!==t?.type)return null;const o=t.data.upload;return o?$(e,{heading:s.createFeatures,key:"upload-details-panel"},$(B,{helpMessage:this._helpMessage,messages:s,upload:o})):null}_renderCreatingFeatures(){const{EditorPanel:e,activeWorkflow:t,messages:s,messagesCommon:o,headingLevel:r,viewModel:a}=this;if(!t)return null;const i="create-features"===t.type&&t.numPendingFeatures>0||"update"===t.type&&"create-features"===t?.activeWorkflow?.type&&t.activeWorkflow?.numPendingFeatures>0;return $(e,{heading:s.createFeatures,key:"create-features-panel"},i?$(x,{editorViewModel:a,headingLevel:r,messages:s,messagesCommon:o,renderAttachments:()=>this._attachments.render(),renderFeatureForm:()=>this._featureForm.render(),onDelete:this._onDelete,onSave:this._onSave}):$(k,{helpMessage:this._helpMessage}))}_renderUpdateFeature(){const{EditorPanel:e,messages:t,messagesCommon:s,headingLevel:o,viewModel:r}=this;return $(e,{heading:t.editFeature,key:"update-feature-panel"},$(x,{editorViewModel:r,headingLevel:o,messages:t,messagesCommon:s,renderAttachments:()=>this._attachments.render(),renderFeatureForm:()=>this._featureForm.render(),onDelete:this._onDelete,onSave:this._onSave}))}_renderCustomTemplateGroupContent(e){const{messages:t,viewModel:s}=this;let o=null;return e.group.items.some((e=>(s.itemHasUnsupportedFields(e)?o=t.formFieldUnsupportedCreateError:s.itemHasInvalidFormTemplate(e)&&(o=t.formFieldCreateError),o))),o?$(A,{icon:f,message:o}):null}_renderAttachmentAdding(){const{EditorPanel:e,_attachments:t,messages:s,messagesCommon:o}=this;return $(e,{heading:s.addAttachment,key:"attachment-adding-panel"},$(T,{key:"attachments"},t.render()),$(C,{buttons:[{label:t.submitting?o.cancel:o.add,disabled:t.submitting||!t.selectedFile,onClick:this._onAttachmentAdd}]}))}_renderAttachmentEditing(){const{EditorPanel:e,_attachments:t,activeWorkflow:s,messages:o,messagesCommon:r}=this;return s?$(e,{heading:o.editAttachment,key:"attachment-editing-panel"},$(T,{key:"attachments"},t.render()),s.shouldAllowAttachmentEditing?$(C,{buttons:[{label:r.update,disabled:t.submitting||!t.selectedFile,onClick:this._onAttachmentUpdate},{...this._deleteButtonCommonInfo,onClick:this._onAttachmentDelete,disabled:t.submitting,label:r.delete}]}):void 0):null}_renderReady(){const{EditorPanel:e,messages:t,viewModel:s}=this,o=this._helpMessage;return $(e,{heading:t.widgetLabel,key:"landing-panel"},$(T,{key:"landing-content"},s.editableItems.length?[$(j,{key:"edit-actions"},this._renderUpdateActions()),$(j,{key:"create-actions"},this._renderCreateActions())]:$(P,{key:"no-content"},t.noEditableLayers)),o?$("div",{class:u.helpMessage,key:"footer-actions",slot:"footer"},o):void 0)}get _helpMessage(){const{activeWorkflow:e,messages:t,view:s}=this,o=e?.helpMessage;return o?t["3d"===s?.type?"helpMessages3d":"helpMessages2d"]?.[o]:void 0}_renderUpdateActions(){const{messages:e,messagesCommon:t,viewModel:s}=this,o={id:"select",label:t.select};return $("div",{class:u.updateActions,key:"update-actions"},$(q,{level:R(this.headingLevel)},e.editFeatures),$("calcite-list",{class:u.updateActionsList,selectionAppearance:"border",selectionMode:"single"},V({disabled:!s.canUpdate,grouped:!1,item:o,selectedItem:"awaiting-feature-to-update"===s.activeWorkflow?.stepId?o:void 0,renderIcon:this._renderSelectIcon,onItemSelect:this._onToggleUpdateWorkflow})))}_renderCreateActions(){return $("div",{key:"create-actions"},$(q,{level:R(this.headingLevel)},this.messages.createFeatures),$("div",{class:u.featureTemplatesContainer,key:"templates"},this._featureTemplates.render()))}_renderFeatureList(){const{EditorPanel:e,viewModel:t}=this,{activeWorkflow:s}=t;if("update"!==s?.type)return null;const o=s.data.candidates,r=J(this.messages.multipleFeaturesTemplate,{total:o.length});return $(e,{heading:r,key:"feature-list"},$(M,{editableItems:t.editableItems,filterText:this._filterText,id:this.id,messagesTemplates:this.messagesTemplates,workflow:s,onFilterTextChange:e=>this._filterText=e,onSelectFeature:(e,s)=>t.selectFeature(e,s)}))}_showPrompt({title:e,message:t,yesLabel:o,noLabel:r}){const a=s(),{view:i}=this,n=i?.focused;return this._prompt={title:e,message:t,context:"danger",actions:{primary:{label:o,action:()=>a.resolve(!0)},secondary:{label:r,action:()=>a.resolve(!1)}}},a.promise.finally((()=>{this._clearPrompt(),n&&i?.focus()}))}};e([n()],X.prototype,"_featureForm",void 0),e([n()],X.prototype,"_attachments",void 0),e([n()],X.prototype,"_featureTemplates",void 0),e([n()],X.prototype,"_filterText",void 0),e([n()],X.prototype,"_prompt",void 0),e([n()],X.prototype,"_spinner",void 0),e([n()],X.prototype,"_deleteButtonCommonInfo",null),e([n()],X.prototype,"_loading",null),e([n({readOnly:!0})],X.prototype,"activeWorkflow",null),e([n()],X.prototype,"allowedWorkflows",null),e([n()],X.prototype,"useDeprecatedCreateWorkflow",null),e([n()],X.prototype,"headingLevel",void 0),e([n()],X.prototype,"hideTemplatesForInactiveLayers",null),e([n()],X.prototype,"iconClass",void 0),e([n()],X.prototype,"label",null),e([n()],X.prototype,"labelOptions",null),e([n()],X.prototype,"layerInfos",null),e([n(),N("esri/widgets/Editor/t9n/Editor")],X.prototype,"messages",void 0),e([n(),N("esri/t9n/common")],X.prototype,"messagesCommon",void 0),e([n(),N("esri/widgets/FeatureTemplates/t9n/FeatureTemplates")],X.prototype,"messagesTemplates",void 0),e([n()],X.prototype,"snappingOptions",null),e([n()],X.prototype,"tooltipOptions",null),e([n()],X.prototype,"supportingWidgetDefaults",void 0),e([n()],X.prototype,"view",null),e([n(),z(["workflow-cancel","workflow-commit"])],X.prototype,"viewModel",void 0),e([n({type:_,nonNullable:!0})],X.prototype,"visibleElements",void 0),e([n()],X.prototype,"_helpMessage",null),X=e([l(K)],X);const Y=X;export{Y as default};
|
|
5
|
+
import{_ as e}from"../chunks/tslib.es6.js";import"../intl.js";import t from"../core/Logger.js";import{createResolver as s}from"../core/promiseUtils.js";import{watch as o,initial as r,on as i,when as a}from"../core/reactiveUtils.js";import{property as n}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as l}from"../core/accessorSupport/decorators/subclass.js";import d from"./Attachments.js";import p from"./FeatureForm.js";import c from"./FeatureTemplates.js";import m from"./Spinner.js";import h from"./Widget.js";import{css as u}from"./Editor/css.js";import{workflowDeprecation as g}from"./Editor/deprecationUtils.js";import w from"./Editor/EditorViewModel.js";import{warningIcon as f}from"./Editor/icons.js";import{isModelUpload as v}from"./Editor/modelUploadUtils.js";import _ from"./Editor/VisibleElements.js";import{loadCreateFeaturesPanelContentComponents as y,CreateFeaturesPanelContent as k}from"./Editor/components/CreateFeaturesPanelContent.js";import{loadFeatureListComponents as F,FeatureList as M}from"./Editor/components/FeatureList.js";import{loadFooterActionsComponents as b,FooterActions as C}from"./Editor/components/FooterActions.js";import{loadNoticesComponents as W,Notice as A}from"./Editor/components/Notices.js";import{loadPanelContentComponents as E,PanelContent as T,PanelContentSection as j,PanelContentMessage as P}from"./Editor/components/PanelContent.js";import{PanelToolbar as L,loadPanelToolbarComponents as U}from"./Editor/components/PanelToolbar.js";import{loadPromptComponents as I,Prompt as S}from"./Editor/components/Prompt.js";import{loadUpdateFeaturePanelContentComponents as D,UpdateFeaturePanelContent as x}from"./Editor/components/UpdateFeaturePanelContent.js";import{loadUploadDetailsComponents as O,UploadDetails as B}from"./Editor/components/UploadDetails.js";import{renderItem as V}from"./FeatureTemplates/ItemList.js";import{loadCalciteComponents as G}from"./support/componentsUtils.js";import{globalCss as H}from"./support/globalCss.js";import{incrementHeadingLevel as R,Heading as q}from"./support/Heading.js";import"./support/widgetUtils.js";import{messageBundle as N}from"./support/decorators/messageBundle.js";import{vmEvent as z}from"./support/decorators/vmEvent.js";import{tsx as $}from"./support/jsxFactory.js";import{substitute as J}from"../intl/substitute.js";const K="esri.widgets.Editor",Q=t.getLogger(K);let X=class extends h{constructor(e,t){super(e,t),this._featureForm=new p,this._attachments=new d({visibleElements:{addSubmitButton:!1,cancelAddButton:!1,cancelUpdateButton:!1,deleteButton:!1,errorMessage:!1,progressBar:!1,updateButton:!1}}),this._featureTemplates=new c({enableListScroll:!1,renderItemContentEnd:e=>e.supportsUpload?$("calcite-icon",{class:u.templateItemContentEnd,icon:"upload-to",key:"upload-icon"}):null,renderItemLabel:e=>e.label,renderCustomGroupContent:e=>this._renderCustomTemplateGroupContent(e)}),this._filterText="",this._prompt=null,this._spinner=new m,this.headingLevel=4,this.iconClass=u.widgetIcon,this.messages=null,this.messagesCommon=null,this.messagesTemplates=null,this.supportingWidgetDefaults=null,this.viewModel=new w,this.visibleElements=new _,this._renderSelectIcon=()=>$("calcite-icon",{icon:"cursor",slot:"content-start"}),this.EditorPanel=({heading:e,key:t},...s)=>$("calcite-flow-item",{closable:!1,heading:e,headingLevel:this.headingLevel,key:t,loading:this._loading,onCalciteFlowItemBack:this._onBack},$(L,{editorViewModel:this.viewModel,messagesCommon:this.messagesCommon,visibleElements:this.visibleElements}),...s),this._showDiscardEditsPrompt=()=>{const{messages:e,activeWorkflow:t}=this;if("create-features"===t?.type&&v(t.data.creationInfo))return this._showPrompt("success"===t.data.upload?.state?e.modelUploads.cancelPlacementPrompt:e.modelUploads.cancelUploadPrompt);const s="create"===t?.type;return this._showPrompt({title:e[s?"cancelAddTitle":"cancelEditTitle"],message:e[s?"cancelAddWarningMessage":"cancelEditWarningMessage"],yesLabel:e[s?"discardFeature":"discardEdits"],noLabel:e[s?"continueAdding":"continueEditing"]})},this._showGenericCancelPrompt=()=>{const{messages:e,messagesCommon:t}=this;return this._showPrompt({title:e.cancelRequestTitle,message:e.cancelRequestWarningMessage,yesLabel:t.form.yes,noLabel:t.form.no})},this._onSave=()=>{this.viewModel.saveWorkflow()},this._onDelete=()=>{const{messages:e,messagesCommon:t}=this;this._prompt={title:e.deleteWarningTitle,message:e.deleteWarningMessage,context:"danger",actions:{primary:{label:t.delete,action:()=>{this.deleteFeatureFromWorkflow(),this._clearPrompt()}},secondary:{label:e.keepFeature,action:this._clearPrompt}}}},this._onToggleUpdateWorkflow=()=>this.viewModel.toggleUpdateWorkflow(),this._onBack=e=>(e?.stopPropagation(),this.viewModel.back()),this._onAttachmentAdd=()=>{const{activeWorkflow:e}=this.viewModel;e&&("create-features"===e.type||"update"===e.type&&"create-features"===e.activeWorkflow?.type?(this._attachments.addFile(),e.back()):this._attachments.addAttachment().then((()=>e.back())))},this._onAttachmentUpdate=()=>{const{activeWorkflow:e}=this.viewModel;e&&("create-features"===e.type?(this._attachments.updateFile(),e.back()):this._attachments.updateAttachment().then((()=>e.back())))},this._onAttachmentDelete=()=>{const{messages:e,messagesCommon:t}=this;this._prompt={title:e.deleteAttachmentWarningTitle,message:e.deleteAttachmentWarningMessage,context:"danger",actions:{primary:{label:t.delete,action:this._onAttachmentDeleteConfirm},secondary:{label:e.keepAttachment,action:this._clearPrompt}}}},this._onAttachmentDeleteConfirm=async()=>{const e=this._attachments,{activeWorkflow:t}=this.viewModel;t&&("create-features"===t.type?e.deleteFile():(await e.deleteAttachment(e.viewModel.activeAttachmentInfo),this._clearPrompt()),await t.back(),this._clearPrompt())},this._onAttachmentsError=e=>{this._prompt={title:this.messages.errorWarningTitle,message:e.message,context:"warning",actions:{primary:{label:this.messagesCommon.form.ok,action:this._clearPrompt}}}},this._clearPrompt=()=>{this._prompt=null}}initialize(){this.addHandles([o((()=>R(this.headingLevel)),(e=>{this._featureForm.headingLevel=e,this._featureTemplates.headingLevel=e}),r),i((()=>this.viewModel.activeWorkflow),"cancel-request",(({controller:e})=>{(this.viewModel.hasPendingEdits?this._showDiscardEditsPrompt():this._showGenericCancelPrompt()).then((t=>t?e.allow():e.deny()))})),o((()=>this.viewModel),(e=>{this._featureForm.viewModel=e?.featureFormViewModel??null,this._attachments.viewModel=e?.attachmentsViewModel??null,this._featureTemplates.viewModel=e?.featureTemplatesViewModel??null,this._spinner.viewModel=e?.spinnerViewModel??null,e.showDiscardEditsPrompt=this._showDiscardEditsPrompt}),r),o((()=>this.view),((e,t)=>{const s=`editor-${this.id}-spinner`;t?.ui.remove(this._spinner,s),e?.ui.add(this._spinner,{key:s,position:"manual"})}),r),a((()=>this.supportingWidgetDefaults),(e=>{this._featureForm.set(e.featureForm),this._attachments.set(e.attachments),this._featureTemplates.set(e.featureTemplates),this.viewModel.sketchViewModel.set(e.sketch)}),r),a((()=>this._attachments?.error),(e=>this._onAttachmentsError(e))),a((()=>this.viewModel?.failures),(e=>{const{messages:t}=this,[{error:s,retry:o,cancel:r}]=e;this._prompt={title:t.errorWarningTitle,message:J(t.errorWarningMessageTemplate,{errorMessage:s.message}),context:"warning",actions:{primary:{label:t.retry,action:()=>{o(),this._clearPrompt()}},secondary:{label:t.ignore,action:()=>{r(),this._clearPrompt()}}}}})),o((()=>this.viewModel?.state),(e=>{switch(e){case"awaiting-feature-to-update":case"ready":case"disabled":this._filterText="",this._featureTemplates.filterText=""}})),o((()=>this.viewModel.featureFormDisabled),(e=>this._featureForm.disabled=e))])}destroy(){this._attachments.destroy(),this._featureForm.destroy(),this._featureTemplates.destroy()}loadDependencies(){return Promise.all([G({"flow-item":()=>import("@esri/calcite-components/dist/components/calcite-flow-item.js"),flow:()=>import("@esri/calcite-components/dist/components/calcite-flow.js"),icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js"),list:()=>import("@esri/calcite-components/dist/components/calcite-list.js")}),y(),F(),b(),W(),E(),U(),I(),D(),O()])}get _deleteButtonCommonInfo(){return{appearance:"outline",kind:"danger"}}get _loading(){const{viewModel:e}=this;return e.syncing||e.updating||this._attachments.submitting}get activeWorkflow(){return this.viewModel.activeWorkflow}get allowedWorkflows(){return this.viewModel.allowedWorkflows}set allowedWorkflows(e){this.viewModel.allowedWorkflows=e}get useDeprecatedCreateWorkflow(){return this.viewModel.useDeprecatedCreateWorkflow}set useDeprecatedCreateWorkflow(e){this.viewModel.useDeprecatedCreateWorkflow=e}get hideTemplatesForInactiveLayers(){return this.viewModel.hideTemplatesForInactiveLayers}set hideTemplatesForInactiveLayers(e){this.viewModel.hideTemplatesForInactiveLayers=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get labelOptions(){return this.viewModel.labelOptions}set labelOptions(e){this.viewModel.labelOptions=e}get layerInfos(){return this.viewModel.layerInfos}set layerInfos(e){this.viewModel.layerInfos=e}get snappingOptions(){return this.viewModel.snappingOptions}set snappingOptions(e){this.viewModel.snappingOptions=e}get tooltipOptions(){return this.viewModel.tooltipOptions}set tooltipOptions(e){this.viewModel.tooltipOptions=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}startCreateWorkflowAtFeatureTypeSelection(){return g(Q,"startCreateWorkflowAtFeatureTypeSelection","startCreateFeaturesWorkflowAtFeatureTypeSelection"),this.viewModel.startCreateWorkflowAtFeatureTypeSelection()}startCreateFeaturesWorkflowAtFeatureTypeSelection(){return this.viewModel.startCreateFeaturesWorkflowAtFeatureTypeSelection()}startCreateWorkflowAtFeatureCreation(e){return g(Q,"startCreateWorkflowAtFeatureCreation","startCreateFeaturesWorkflowAtFeatureCreation"),this.viewModel.startCreateWorkflowAtFeatureCreation(e)}startCreateFeaturesWorkflowAtFeatureCreation(e){return this.viewModel.startCreateFeaturesWorkflowAtFeatureCreation(e)}startCreateWorkflowAtFeatureEdit(e){return g(Q,"startCreateWorkflowAtFeatureEdit"),this.viewModel.startCreateWorkflowAtFeatureEdit(e)}startUpdateWorkflowAtFeatureSelection(){return this.viewModel.startUpdateWorkflowAtFeatureSelection()}startUpdateWorkflowAtMultipleFeatureSelection(e){return this.viewModel.startUpdateWorkflowAtMultipleFeatureSelection(e)}startUpdateWorkflowAtFeatureEdit(e){return this.viewModel.startUpdateWorkflowAtFeatureEdit(e)}deleteFeatureFromWorkflow(){return this.viewModel.deleteFeatureFromWorkflow()}cancelWorkflow(e){return this.viewModel.cancelWorkflow(e)}render(){const{viewModel:e}=this,t=this.classes(u.base,H.widget,H.panel);return e?$("div",{class:t,key:"base"},$("calcite-flow",{key:"flow"},e.pageStack.map((e=>this._renderPage(e)))),this._prompt?$(S,{...this._prompt,headingLevel:this.headingLevel}):void 0):$("div",{class:t,key:"empty"})}_renderPage(e){switch(e){case"disabled":break;case"ready":return this._renderReady();case"awaiting-feature-creation-info":return this._renderAwaitingFeatureCreationInfo();case"creating-features-upload-details":return this._renderUploadDetails();case"creating-features":return this._renderCreatingFeatures();case"editing-new-feature":case"editing-existing-feature":case"editing-attributes":return this._renderUpdateFeature();case"awaiting-update-feature-candidate":return this._renderFeatureList();case"adding-attachment":return this._renderAttachmentAdding();case"editing-attachment":return this._renderAttachmentEditing()}return $("div",{key:"empty-page"})}_renderAwaitingFeatureCreationInfo(){const{EditorPanel:e,messages:t}=this;return $(e,{heading:t.selectTemplate,key:"templates-panel"},$(T,{key:"feature-templates"},$(j,null,this._featureTemplates.render())))}_renderUploadDetails(){const{EditorPanel:e,activeWorkflow:t,messages:s}=this;if("create-features"!==t?.type)return null;const o=t.data.upload;return o?$(e,{heading:s.createFeatures,key:"upload-details-panel"},$(B,{helpMessage:this._helpMessage,messages:s,upload:o})):null}_renderCreatingFeatures(){const{EditorPanel:e,activeWorkflow:t,messages:s,messagesCommon:o,headingLevel:r,viewModel:i}=this;if(!t)return null;const a="create-features"===t.type&&t.numPendingFeatures>0||"update"===t.type&&"create-features"===t?.activeWorkflow?.type&&t.activeWorkflow?.numPendingFeatures>0;return $(e,{heading:s.createFeatures,key:"create-features-panel"},a?$(x,{editorViewModel:i,headingLevel:r,messages:s,messagesCommon:o,renderAttachments:()=>this._attachments.render(),renderFeatureForm:()=>this._featureForm.render(),onDelete:this._onDelete,onSave:this._onSave}):$(k,{helpMessage:this._helpMessage}))}_renderUpdateFeature(){const{EditorPanel:e,messages:t,messagesCommon:s,headingLevel:o,viewModel:r}=this;return $(e,{heading:t.editFeature,key:"update-feature-panel"},$(x,{editorViewModel:r,headingLevel:o,messages:t,messagesCommon:s,renderAttachments:()=>this._attachments.render(),renderFeatureForm:()=>this._featureForm.render(),onDelete:this._onDelete,onSave:this._onSave}))}_renderCustomTemplateGroupContent(e){const{messages:t,viewModel:s}=this;let o=null;return e.group.items.some((e=>(s.itemHasUnsupportedFields(e)?o=t.formFieldUnsupportedCreateError:s.itemHasInvalidFormTemplate(e)&&(o=t.formFieldCreateError),o))),o?$(A,{icon:f,message:o}):null}_renderAttachmentAdding(){const{EditorPanel:e,_attachments:t,messages:s,messagesCommon:o}=this;return $(e,{heading:s.addAttachment,key:"attachment-adding-panel"},$(T,{key:"attachments"},t.render()),$(C,{buttons:[{label:t.submitting?o.cancel:o.add,disabled:t.submitting||!t.selectedFile,onClick:this._onAttachmentAdd}]}))}_renderAttachmentEditing(){const{EditorPanel:e,_attachments:t,activeWorkflow:s,messages:o,messagesCommon:r}=this;return s?$(e,{heading:o.editAttachment,key:"attachment-editing-panel"},$(T,{key:"attachments"},t.render()),s.shouldAllowAttachmentEditing?$(C,{buttons:[{label:r.update,disabled:t.submitting||!t.selectedFile,onClick:this._onAttachmentUpdate},{...this._deleteButtonCommonInfo,onClick:this._onAttachmentDelete,disabled:t.submitting,label:r.delete}]}):void 0):null}_renderReady(){const{EditorPanel:e,messages:t,viewModel:s,visibleElements:o}=this,r=this._helpMessage;return $(e,{heading:t.widgetLabel,key:"landing-panel"},$(T,{key:"landing-content"},s.editableItems.length?[o.editFeaturesSection?$(j,{key:"edit-actions"},this._renderUpdateActions()):null,o.createFeaturesSection?$(j,{key:"create-actions"},this._renderCreateActions()):null]:$(P,{key:"no-content"},t.noEditableLayers)),r?$("div",{class:u.helpMessage,key:"footer-actions",slot:"footer"},r):void 0)}get _helpMessage(){const{activeWorkflow:e,messages:t,view:s}=this,o=e?.helpMessage;return o?t["3d"===s?.type?"helpMessages3d":"helpMessages2d"]?.[o]:void 0}_renderUpdateActions(){const{messages:e,messagesCommon:t,viewModel:s}=this,o={id:"select",label:t.select};return $("div",{class:u.updateActions,key:"update-actions"},$(q,{level:R(this.headingLevel)},e.editFeatures),$("calcite-list",{class:u.updateActionsList,selectionAppearance:"border",selectionMode:"single"},V({disabled:!s.canUpdate,grouped:!1,item:o,selectedItem:"awaiting-feature-to-update"===s.activeWorkflow?.stepId?o:void 0,renderIcon:this._renderSelectIcon,onItemSelect:this._onToggleUpdateWorkflow})))}_renderCreateActions(){return $("div",{key:"create-actions"},$(q,{level:R(this.headingLevel)},this.messages.createFeatures),$("div",{class:u.featureTemplatesContainer,key:"templates"},this._featureTemplates.render()))}_renderFeatureList(){const{EditorPanel:e,viewModel:t}=this,{activeWorkflow:s}=t;if("update"!==s?.type)return null;const o=s.data.candidates,r=J(this.messages.multipleFeaturesTemplate,{total:o.length});return $(e,{heading:r,key:"feature-list"},$(M,{editableItems:t.editableItems,filterText:this._filterText,id:this.id,messagesTemplates:this.messagesTemplates,workflow:s,onFilterTextChange:e=>this._filterText=e,onSelectFeature:(e,s)=>t.selectFeature(e,s)}))}_showPrompt({title:e,message:t,yesLabel:o,noLabel:r}){const i=s(),{view:a}=this,n=a?.focused;return this._prompt={title:e,message:t,context:"danger",actions:{primary:{label:o,action:()=>i.resolve(!0)},secondary:{label:r,action:()=>i.resolve(!1)}}},i.promise.finally((()=>{this._clearPrompt(),n&&a?.focus()}))}};e([n()],X.prototype,"_featureForm",void 0),e([n()],X.prototype,"_attachments",void 0),e([n()],X.prototype,"_featureTemplates",void 0),e([n()],X.prototype,"_filterText",void 0),e([n()],X.prototype,"_prompt",void 0),e([n()],X.prototype,"_spinner",void 0),e([n()],X.prototype,"_deleteButtonCommonInfo",null),e([n()],X.prototype,"_loading",null),e([n({readOnly:!0})],X.prototype,"activeWorkflow",null),e([n()],X.prototype,"allowedWorkflows",null),e([n()],X.prototype,"useDeprecatedCreateWorkflow",null),e([n()],X.prototype,"headingLevel",void 0),e([n()],X.prototype,"hideTemplatesForInactiveLayers",null),e([n()],X.prototype,"iconClass",void 0),e([n()],X.prototype,"label",null),e([n()],X.prototype,"labelOptions",null),e([n()],X.prototype,"layerInfos",null),e([n(),N("esri/widgets/Editor/t9n/Editor")],X.prototype,"messages",void 0),e([n(),N("esri/t9n/common")],X.prototype,"messagesCommon",void 0),e([n(),N("esri/widgets/FeatureTemplates/t9n/FeatureTemplates")],X.prototype,"messagesTemplates",void 0),e([n()],X.prototype,"snappingOptions",null),e([n()],X.prototype,"tooltipOptions",null),e([n()],X.prototype,"supportingWidgetDefaults",void 0),e([n()],X.prototype,"view",null),e([n(),z(["workflow-cancel","workflow-commit"])],X.prototype,"viewModel",void 0),e([n({type:_,nonNullable:!0})],X.prototype,"visibleElements",void 0),e([n()],X.prototype,"_helpMessage",null),X=e([l(K)],X);const Y=X;export{Y as default};
|