@arcgis/core 4.28.0-next.20230819 → 4.28.0-next.20230821
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/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/003744a45b07865f1be9.js +1 -0
- package/assets/esri/core/workers/chunks/034accc7cab6c88a3b31.js +1 -0
- package/assets/esri/core/workers/chunks/{a67e5b22adc91e850b4e.js → 05ab09713d599687afa3.js} +1 -1
- package/assets/esri/core/workers/chunks/{3724f23b6f5ac8ec2568.js → 12b8fe0374fa9ab4ca09.js} +1 -1
- package/assets/esri/core/workers/chunks/16d1a72014074e87ecb9.js +1 -0
- package/assets/esri/core/workers/chunks/{e4b6565c16430b28ad93.js → 19857e5420cdf23c5f2e.js} +1 -1
- package/assets/esri/core/workers/chunks/{1a804dea42c0fb5e5c07.js → 1bab408eaffd2c18976d.js} +1 -1
- package/assets/esri/core/workers/chunks/201365f53509e3f78e17.js +1 -0
- package/assets/esri/core/workers/chunks/{2031451b82ff70fb201a.js → 2f48f4a9a0a056ac5e1c.js} +1 -1
- package/assets/esri/core/workers/chunks/318b51fdee09c1fd750f.js +1 -0
- package/assets/esri/core/workers/chunks/{5b799dc155adeb728c74.js → 3361e3e8385f8de8820c.js} +1 -1
- package/assets/esri/core/workers/chunks/3ce1870c28ab6ac3648e.js +1 -0
- package/assets/esri/core/workers/chunks/41929e4531787389804b.js +1 -0
- package/assets/esri/core/workers/chunks/{55ac725127c5ea9fb942.js → 4e39252f40bc57be9d12.js} +1 -1
- package/assets/esri/core/workers/chunks/{8ed83426ef88a3eccecd.js → 4e496b03ce24b1206f86.js} +1 -1
- package/assets/esri/core/workers/chunks/54513578f735d274a20e.js +1 -0
- package/assets/esri/core/workers/chunks/{d46f8ef92e79d12384c9.js → 587437526ea77f764986.js} +1 -1
- package/assets/esri/core/workers/chunks/{ab720e2f0a35138564b2.js → 5ffabd1a90c5b08109aa.js} +1 -1
- package/assets/esri/core/workers/chunks/6108d72faf48a592c8ba.js +1 -0
- package/assets/esri/core/workers/chunks/6479439afae01f9bb5e6.js +1 -0
- package/assets/esri/core/workers/chunks/69306dfc89e877539223.js +1 -0
- package/assets/esri/core/workers/chunks/{ed499c328ae3a704791c.js → 6db4a6f9d25691830829.js} +1 -1
- package/assets/esri/core/workers/chunks/{61393fd3376ea599a447.js → 76e27cece1559ae815df.js} +1 -1
- package/assets/esri/core/workers/chunks/81526909c0fa11639038.js +1 -0
- package/assets/esri/core/workers/chunks/873111ddf4813cdd4903.js +1 -0
- package/assets/esri/core/workers/chunks/8d4f1170394a8be15da9.js +1 -0
- package/assets/esri/core/workers/chunks/8d8bdfda09c24e363f78.js +1 -0
- package/assets/esri/core/workers/chunks/9b54b5bdb6367c36f6e9.js +1 -0
- package/assets/esri/core/workers/chunks/{88f0b5c0fe751bf35af2.js → b2752e038c5fa3c21e49.js} +1 -1
- package/assets/esri/core/workers/chunks/{dd3b7cfc6f78552249a4.js → b78dc6cbe14e5817b4d9.js} +1 -1
- package/assets/esri/core/workers/chunks/{e31d0c7363cbceeb5ac9.js → c35b850fbfcb28133235.js} +1 -1
- package/assets/esri/core/workers/chunks/c83e1be4ee64320cf2fe.js +1 -0
- package/assets/esri/core/workers/chunks/c88869d2a647c22dc3e6.js +1 -0
- package/assets/esri/core/workers/chunks/cb0a5bc6deaa98026bb5.js +1 -0
- package/assets/esri/core/workers/chunks/{767467738aeabec14abd.js → d0c4367a197b193e95d4.js} +1 -1
- package/assets/esri/core/workers/chunks/{f113141e254505116b82.js → d1cc2c050423595e54e0.js} +1 -1
- package/assets/esri/core/workers/chunks/{7f34945036495ad7c3f8.js → d2a8bf2d090b94cb294b.js} +1 -1
- package/assets/esri/core/workers/chunks/{08af7f7f1950a59a8e47.js → d6c96a20e9640b433719.js} +4 -4
- package/assets/esri/core/workers/chunks/da5453e67d00ff546640.js +1 -0
- package/assets/esri/core/workers/chunks/daa79c14150c12d8bc3d.js +1 -0
- package/assets/esri/core/workers/chunks/ef03b78659c72de93076.js +1 -0
- package/assets/esri/core/workers/chunks/{c3cace5b25b5170228ba.js → f2fe89b6ac6bf6817e71.js} +1 -1
- package/assets/esri/core/workers/chunks/f3554627664a419e00fa.js +1 -0
- package/assets/esri/themes/base/widgets/_Editor.scss +65 -4
- package/assets/esri/themes/base/widgets/_UtilityNetworkAssociations.scss +97 -39
- 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/assets/esri/widgets/Editor/t9n/Editor.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_en.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/assets/img/line-caps/butt.png +0 -0
- package/assets/esri/widgets/UtilityNetworkAssociations/assets/img/line-caps/round.png +0 -0
- package/assets/esri/widgets/UtilityNetworkAssociations/assets/img/line-caps/square.png +0 -0
- package/assets/esri/widgets/UtilityNetworkAssociations/assets/img/line-patterns/dash-dot.png +0 -0
- package/assets/esri/widgets/UtilityNetworkAssociations/assets/img/line-patterns/dash.png +0 -0
- package/assets/esri/widgets/UtilityNetworkAssociations/assets/img/line-patterns/dot.png +0 -0
- package/assets/esri/widgets/UtilityNetworkAssociations/assets/img/line-patterns/long-dash-dot-dot.png +0 -0
- package/assets/esri/widgets/UtilityNetworkAssociations/assets/img/line-patterns/long-dash-dot.png +0 -0
- package/assets/esri/widgets/UtilityNetworkAssociations/assets/img/line-patterns/long-dash.png +0 -0
- package/assets/esri/widgets/UtilityNetworkAssociations/assets/img/line-patterns/short-dash-dot-dot.png +0 -0
- package/assets/esri/widgets/UtilityNetworkAssociations/assets/img/line-patterns/short-dash-dot.png +0 -0
- package/assets/esri/widgets/UtilityNetworkAssociations/assets/img/line-patterns/short-dash.png +0 -0
- package/assets/esri/widgets/UtilityNetworkAssociations/assets/img/line-patterns/short-dot.png +0 -0
- package/assets/esri/widgets/UtilityNetworkAssociations/assets/img/line-patterns/solid.png +0 -0
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations.json +1 -1
- package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_en.json +1 -1
- package/chunks/HighlightBlur.glsl.js +3 -3
- package/chunks/HighlightDownsample.glsl.js +24 -6
- package/chunks/SSAO.glsl.js +2 -2
- package/core/timeUtils.js +1 -1
- package/intl/date.js +1 -1
- package/layers/FeatureLayer.js +1 -1
- package/layers/ImageryLayer.js +1 -1
- package/layers/ImageryTileLayer.js +1 -1
- package/layers/StreamLayer.js +1 -1
- package/layers/SubtypeGroupLayer.js +1 -1
- package/layers/VoxelWasmPerSceneView.js +1 -1
- package/layers/graphics/sources/support/uploads.js +1 -1
- package/layers/save/featureLayerUtils.js +1 -1
- package/layers/save/imageryUtils.js +1 -1
- package/layers/save/streamLayerUtils.js +1 -1
- package/package.json +1 -1
- package/popup/support/FieldInfoFormat.js +1 -1
- package/support/revision.js +1 -1
- package/views/3d/environment/EnvironmentRenderer.js +1 -1
- package/views/3d/externalRenderers/ExternalRendererStore.js +1 -1
- package/views/3d/layers/i3s/PointRenderer.js +1 -1
- package/views/3d/support/LaserLineRenderer.js +1 -1
- package/views/3d/terrain/OverlayRenderer.js +1 -1
- package/views/3d/terrain/TerrainRenderer.js +1 -1
- package/views/3d/terrain/TerrainSurface.js +1 -1
- package/views/3d/webgl-engine/core/renderPasses/RenderPassManager.js +1 -1
- package/views/3d/webgl-engine/effects/RenderPlugin.js +1 -1
- package/views/3d/webgl-engine/effects/RenderPluginManager.js +1 -1
- package/views/3d/webgl-engine/effects/highlight/Highlight.js +1 -1
- package/views/3d/webgl-engine/effects/highlight/ShadowHighlight.js +1 -1
- package/views/3d/webgl-engine/effects/smaa/SMAA.js +1 -1
- package/views/3d/webgl-engine/effects/ssao/SSAO.js +1 -1
- package/views/3d/webgl-engine/lib/GLMaterialRepository.js +1 -1
- package/views/3d/webgl-engine/lib/GLMaterials.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/lodRendering/LodRenderer.js +1 -1
- package/views/3d/webgl-engine/materials/CheckerBoardMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/ColorMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/DefaultMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/HeatmapDensityMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/ImageMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/LineCalloutMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/MeasurementArrowMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/NativeLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/PathMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/PatternMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/ShadedColorMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/SlicePlaneMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/WaterMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/renderers/MergedRenderer.js +1 -1
- package/views/3d/webgl-engine/shaders/HighlightDownsample.glsl.js +1 -1
- package/views/draw/DrawGraphicTool.js +1 -1
- package/views/draw/DrawOperation.js +1 -1
- package/views/interactive/sketch/constraints.js +1 -1
- package/views/interactive/sketch/normalizedPoint.js +1 -1
- package/views/interactive/snapping/SnappingManager.js +1 -1
- package/views/interactive/snapping/candidates/IntersectionSnappingCandidate.js +1 -1
- package/views/interactive/tooltip/TooltipEditableField.js +1 -1
- package/views/interactive/tooltip/TooltipEditableFieldAngle.js +1 -1
- package/views/interactive/tooltip/constraintUtils.js +5 -0
- package/views/support/angularMeasurementUtils.js +1 -1
- package/widgets/Editor/EditorViewModel.js +1 -1
- package/widgets/Editor/Upload.js +1 -1
- package/widgets/Editor/components/CreateFeaturesPanelContent.js +1 -1
- package/widgets/Editor/components/UploadDetails.js +1 -1
- package/widgets/Editor/modelUploadUtils.js +1 -1
- package/widgets/Editor.js +1 -1
- package/widgets/ElevationProfile/support/chartUtils.js +1 -1
- package/widgets/ElevationProfile.js +1 -1
- package/widgets/Feature/FeatureViewModel.js +1 -1
- package/widgets/Feature/support/featureUtils.js +1 -1
- package/widgets/UtilityNetworkAssociations/UtilityNetworkAssociationsLineSymbolPicker.js +5 -0
- package/widgets/UtilityNetworkAssociations/UtilityNetworkAssociationsViewModel.js +1 -1
- package/widgets/UtilityNetworkAssociations/VisibleElements.js +5 -0
- package/widgets/UtilityNetworkAssociations/VisibleElementsSettingsPane.js +5 -0
- package/widgets/UtilityNetworkAssociations.js +1 -1
- package/assets/esri/core/workers/chunks/11abbbf97093b55e2417.js +0 -1
- package/assets/esri/core/workers/chunks/1b2a081f2c3b97ba7e00.js +0 -1
- package/assets/esri/core/workers/chunks/235f333177ed7ea21e01.js +0 -1
- package/assets/esri/core/workers/chunks/3725dd14c2da0f47198f.js +0 -1
- package/assets/esri/core/workers/chunks/42595c4870c673ed451c.js +0 -1
- package/assets/esri/core/workers/chunks/481cdd2a4bc40c6fef66.js +0 -1
- package/assets/esri/core/workers/chunks/54893132e70c515ea7e3.js +0 -1
- package/assets/esri/core/workers/chunks/6509a4198972b323d9b6.js +0 -1
- package/assets/esri/core/workers/chunks/68598d2806d4aa3d8acc.js +0 -1
- package/assets/esri/core/workers/chunks/718d2e8ea61f3b7b70c5.js +0 -1
- package/assets/esri/core/workers/chunks/7bce4b5eec630ef57f1e.js +0 -1
- package/assets/esri/core/workers/chunks/8706dc9f852df9b2095d.js +0 -1
- package/assets/esri/core/workers/chunks/8ef26aac0fe7feb8c324.js +0 -1
- package/assets/esri/core/workers/chunks/91e61da22f258d9e86c5.js +0 -1
- package/assets/esri/core/workers/chunks/9f039bf79b34d8fd75ae.js +0 -1
- package/assets/esri/core/workers/chunks/a20fd9e7db37b3c3b041.js +0 -1
- package/assets/esri/core/workers/chunks/aa83dce42d64034a0a13.js +0 -1
- package/assets/esri/core/workers/chunks/cdcf0a5e05283d37b3ac.js +0 -1
- package/assets/esri/core/workers/chunks/d4f9106bf2ea5d66d96a.js +0 -1
- package/assets/esri/core/workers/chunks/e6bfbc4347fa13db4df2.js +0 -1
- package/assets/esri/core/workers/chunks/f1d5487f2d828fb142ba.js +0 -1
- package/assets/esri/core/workers/chunks/f97f165d05439e668e05.js +0 -1
- package/assets/esri/core/workers/chunks/fe973d8155c22d73a4f9.js +0 -1
|
@@ -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{
|
|
5
|
+
import{_ as t}from"../../../chunks/tslib.es6.js";import{toUnit as e}from"../../../core/quantityUtils.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 i}from"../../../core/accessorSupport/decorators/subclass.js";import{TOOLTIP_KEYS as n}from"../keybindings.js";import{BASE as s}from"./css.js";import l from"../../../widgets/Widget.js";import{loadCalciteComponents as u}from"../../../widgets/support/componentsUtils.js";import"../../../widgets/support/widgetUtils.js";import{tsx as a}from"../../../widgets/support/jsxFactory.js";const r=`${s}-editable-field`,c={base:r,locked:`${r}--locked`,title:`${r}__title`,titleContent:`${r}__title__content`,value:`${r}__value`,valueContent:`${r}__value__content`,input:`${r}__input`};let p=class extends l{constructor(){super(...arguments),this.suffix="",this._input=null,this._afterInputCreate=t=>{this._input=t},this._selectText=()=>{requestAnimationFrame((()=>{this._input?.selectText()}))},this._onKeyDown=t=>{t.key===n.discard&&this._discard()},this._onInputKeyDown=t=>{t.key===n.commit&&this._commit()},this._onInput=t=>{this.valueInfo.inputValue=t.target.value},this._onLockClick=()=>{this.valueInfo.locked?this._unlock():this._lock()}}loadDependencies(){return u({button:()=>import("@esri/calcite-components/dist/components/calcite-button.js"),icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js"),input:()=>import("@esri/calcite-components/dist/components/calcite-input.js")})}render(){const{mode:t,valueInfo:e}=this,o="input"===t,{locked:i}=e;return a("div",{class:this.classes({[c.base]:!0,[c.locked]:i})},a("div",{key:"title",class:c.title},a("div",{key:"title-content",class:c.titleContent},this.title,i&&!o?a("calcite-icon",{key:"icon",icon:"lock",scale:"s"}):null)),a("div",{key:"value",class:c.value},o?this._renderInput():a("span",{key:"formatted-value"},this._feedbackValue)))}get _initialValue(){const{actual:t}=this.valueInfo;return null!=t?this.toInputUnits(t).value:null}get _feedbackValue(){const{actual:t,committed:e}=this.valueInfo;return null!=e?this.format(e):null!=t?this.format(t):""}get _displayValue(){const{valueInfo:t,_initialValue:e}=this,{inputValue:o,committed:i}=t;return o??this._toString(i?.value??e)}get _lockEnabled(){return this.valueInfo.dirty&&!this._unlockEnabled}get _unlockEnabled(){return this.valueInfo.locked}toInputUnits(t){return e(t,this.inputUnit)}_renderInput(){const{locked:t}=this.valueInfo,e=this._displayValue;return a("div",{key:"input-container",class:c.valueContent,onkeydown:this._onKeyDown},a("calcite-input",{class:c.input,numberButtonType:"none",scale:"s",suffixText:this.suffix,type:"text",value:e,afterCreate:this._afterInputCreate,onCalciteInputInput:this._onInput,onkeydown:this._onInputKeyDown,onfocus:this._selectText}),a("calcite-button",{appearance:"transparent",disabled:t?!this._unlockEnabled:!this._lockEnabled,iconStart:t?"lock":"unlock",kind:"neutral",scale:"s",onclick:this._onLockClick}))}_commit(){const{_input:t,valueInfo:e}=this;t&&(e.locked&&""===e.inputValue?this._unlock():this._lock(),this.onCommit(t))}_discard(){const{_input:t,valueInfo:e}=this;t&&(e.inputValue=null,this.onDiscard(t))}_lock(){const{valueInfo:t}=this,e=this._parse(t.inputValue);null!=e&&(t.committed=this.createQuantity(e),t.inputValue=null)}_unlock(){const{valueInfo:t}=this;t.committed=null,t.inputValue=null}_parse(t){if(null==t)return null;const e=parseFloat(t);return isNaN(e)||!isFinite(e)?null:e}_toString(t){return null!=t?t.toFixed(3):"0"}};t([o()],p.prototype,"format",void 0),t([o()],p.prototype,"inputUnit",void 0),t([o()],p.prototype,"mode",void 0),t([o()],p.prototype,"onCommit",void 0),t([o()],p.prototype,"onDiscard",void 0),t([o()],p.prototype,"suffix",void 0),t([o()],p.prototype,"title",void 0),t([o()],p.prototype,"valueInfo",void 0),t([o()],p.prototype,"_initialValue",null),t([o()],p.prototype,"_feedbackValue",null),t([o()],p.prototype,"_input",void 0),t([o()],p.prototype,"_displayValue",null),t([o()],p.prototype,"_lockEnabled",null),t([o()],p.prototype,"_unlockEnabled",null),p=t([i("esri.views.interactive.tooltip.TooltipEditableField")],p);export{p as TooltipEditableField};
|
|
@@ -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
|
|
5
|
+
import{_ as t}from"../../../chunks/tslib.es6.js";import{createAngle as o,toUnit as r,convertRotationType as e}from"../../../core/quantityUtils.js";import{property as s}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{TooltipEditableField as p}from"./TooltipEditableField.js";let a=class extends p{constructor(t){super(t)}createQuantity(t){return o(t,this.inputUnit,this.rotationType)}toInputUnits(t){const{inputUnit:s,rotationType:i}=this,p=r(t,s),a=e(p.value,p.rotationType,i);return o(a,s,i)}};t([s()],a.prototype,"rotationType",void 0),a=t([i("esri.views.interactive.tooltip.TooltipEditableFieldAngle")],a);export{a as TooltipEditableFieldAngle};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/*
|
|
2
|
+
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
|
+
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
|
+
*/
|
|
5
|
+
import{valueInUnit as t}from"../../../core/quantityUtils.js";import{lengthUnitFromSpatialReference as r}from"../../../core/unitUtils.js";import{d as o}from"../../../chunks/vec2.js";import{q as e}from"../../../chunks/vec3.js";import{c as s}from"../../../chunks/vec3f64.js";import{projectVectorToVector as n}from"../../../geometry/projection/projectVectorToVector.js";import{Axis as i}from"../../../geometry/support/Axis.js";import{createGlobal as c,axisAt as m}from"../../../geometry/support/coordinateSystem.js";import{VerticalCylinderConstraint as f,VerticalHalfPlaneConstraint as u}from"../sketch/constraints.js";import{fromPoint as p}from"../sketch/normalizedPoint.js";import{pointFromDistanceAlongAzimuth as a}from"../../support/angularMeasurementUtils.js";import{computeEuclideanMeasurementSR as j}from"../../support/measurementUtils.js";function l(s,u,a,l){if(!u)return;const{spatialReference:y}=s;if(!r(y))return;const d=j(y),k=r(d);if(!k)return;const v=p(s,a,l),U=g;if(!n(v,y,U,d))return;const w=t(u,k);if("3d"===a?.type&&"local"===a.viewingMode)U[0]+=w;else{const t=c(d),r=m(t,U,i.X,h);e(U,U,r,w)}if(!n(U,d,U,y))return;const q=o(v,U);return new f(v,q)}function y(t,r,o,e){if(!r)return;const s=p(t,o,e),n=a(t,1,r.value);if(!n)return;const i=p(n,o,e);return new u(s,i)}function d(t){let r;for(const o of t)o&&(r=r?.intersect(o)??o);return r}const g=s(),h=s();export{l as getDistanceConstraint,y as getOrientationConstraint,d as intersectAll};
|
|
@@ -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{createAngle as e}from"../../core/quantityUtils.js";import{s as o,G as r}from"../../chunks/vec3.js";import{c as t}from"../../chunks/vec3f64.js";import{
|
|
5
|
+
import{createAngle as e}from"../../core/quantityUtils.js";import{s as o,G as r}from"../../chunks/vec3.js";import{c as t}from"../../chunks/vec3f64.js";import c from"../../geometry/SpatialReference.js";import{projectVectorToPoint as i}from"../../geometry/projection/projectVectorToPoint.js";import{projectVectorToVector as s}from"../../geometry/projection/projectVectorToVector.js";import{projectVectorToWGS84ComparableLonLat as n}from"../../geometry/projection/projectVectorToWGS84ComparableLonLat.js";import{inverseGeodeticSolver as m,directGeodeticSolver as p,InverseGeodeticSolverResult as a}from"../../geometry/support/geodesicUtils.js";function f(t,c){if(o(u,t.x,t.y,t.z??0),o(g,c.x,c.y,c.z??0),!n(u,t.spatialReference,u)||!n(g,c.spatialReference,g)||r(u,g))return;const{azimuth:i}=m(l,u,g);return null!=i?e(i,"degrees","geographic"):void 0}function j({x:e,y:r,z:t,spatialReference:n},m,a){const f=u,j=g;if(o(f,e,r,t??0),s(f,n,f,c.WGS84))return p(j,f,a,m),i(j,c.WGS84,n)}const u=t(),g=t(),l=new a;export{f as orientationBetweenPoints,j as pointFromDistanceAlongAzimuth};
|
|
@@ -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{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 o from"../../core/Logger.js";import{abortMaybe as n}from"../../core/maybe.js";import{throwIfAborted as l}from"../../core/promiseUtils.js";import{watch as d,on as p,when as c,whenOnce as u,syncAndInitial as h,initial as w}from"../../core/reactiveUtils.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{UpdatingHandles as y}from"../../core/support/UpdatingHandles.js";import k from"../../layers/GraphicsLayer.js";import{isEditableLayer as g}from"../../layers/support/editableLayers.js";import{isTable as v,getOwningPortalUrl as W,getEffectiveLayerCapabilities as b,isFeatureLayer as _}from"../../layers/support/layerUtils.js";import{parseKnownArcGISOnlineDomain as F}from"../../portal/support/urlUtils.js";import C from"../Attachments/AttachmentsViewModel.js";import E from"./CreateFeaturesWorkflow.js";import I from"./CreateWorkflow.js";import{workflowDeprecation as U}from"./deprecationUtils.js";import A from"./UpdateWorkflow.js";import{whenEditorLayerView as O}from"./workflowUtils.js";import{formTemplateHasInvalidFields as V}from"../FeatureForm/featureFormUtils.js";import j from"../FeatureForm/FeatureFormViewModel.js";import M from"../FeatureTemplates/FeatureTemplatesViewModel.js";import T from"../Sketch/SketchViewModel.js";import S from"../Spinner/SpinnerViewModel.js";import{UNSUPPORTED_DATE_FIELD_TYPES as L}from"../support/dateUtils.js";const P="esri.widgets.Editor.EditorViewModel",D=o.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 k({listMode:"hide",internal:!0}),this._updateEditableItemsTask=null,this._updatingHandles=new y,this.activeWorkflow=null,this._activityQueue=[],this.failures=[],this.attachmentsViewModel=new C({capabilities:{editing:!0}}),this.featureFormViewModel=new j,this.featureTemplatesViewModel=new M,this.sketchViewModel=new T({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([d((()=>{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._updateEditableItems()),h),p((()=>this.activeWorkflow),"cancel",(()=>this.emit("workflow-cancel"))),p((()=>this.activeWorkflow),"commit",(()=>this.emit("workflow-commit"))),p((()=>this.activeWorkflow),"complete",(()=>{this.emit("workflow-commit"),this._set("activeWorkflow",null)})),c((()=>this.view?.map),(t=>t.add(this._sketchGraphicsLayer)),w),d((()=>this._editableItems.toArray()),(()=>{const{activeWorkflow:t}=this;if(this.refreshCreationTemplates(),!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()})),d((()=>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}),h),c((()=>"awaiting-update-feature-candidate"===this.state),(()=>this._candidateCommitted=!1)),p((()=>this.featureTemplatesViewModel),"select",(async({item:t,oldItem:e})=>{const{activeWorkflow:a}=this;if(a)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)})),p((()=>this.view),"key-down",(t=>{"Escape"===t.key&&this.activeWorkflow?.keyboardCancellationEnabled&&this.back()}))])}destroy(){this._cancelWorkflow().then((()=>{this.view?.map&&this.view.map.remove(this._sketchGraphicsLayer),this.view=null})),this._updateEditableItemsTask=n(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")))}get canUpdate(){return this._editableItems.some((({attachmentsOnUpdateEnabled:t,layer:e,supports:a})=>{const r=a.includes("update")||a.includes("delete")||t,i=e.parent,s=!(i&&"visible"in i)||!!i.visible;return e.visible&&s&&r}))}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||0===this._editableItems.length)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?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;return"update"===t?.type&&"awaiting-feature-to-update"===t.stepId||"create-features"===t?.type&&"awaiting-feature-creation-info"===t.stepId&&"default"===t.data.upload?.state?"ready":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(U(D,"startCreateWorkflowAtFeatureTypeSelection","startCreateFeaturesWorkflowAtFeatureTypeSelection"),await u((()=>!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(U(D,"startCreateWorkflowAtFeatureCreation","startCreateFeaturesWorkflowAtFeatureCreation"),await u((()=>!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 u((()=>!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(U(D,"startCreateWorkflowAtFeatureEdit"),await u((()=>!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 u((()=>!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 u((()=>!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 u((()=>!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 u((()=>!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({warn:!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)}refreshCreationTemplates(){const t=[];for(const{layer:e,supports:a}of this._editableItems)e.loaded&&a.includes("create")&&!v(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()))}async _updateEditableItems(){n(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(_)??[];await Promise.all(s.map((t=>t.load())));const o=s.filter((t=>g(t))),n=[...i.reverse(),...o.reverse()].filter((t=>"mesh"!==t.geometryType||"3d"===this.view?.type));if(!e||!i)return;const d=[],p=[];for(const a of n){const r=e.find((t=>t.layer===a)),i=r?d:p;if("subtype-group"===a.type){await a.loadAll(),l(t);for(let t=a.sublayers.length-1;t>=0;--t)i.push(this._makeEditableItemForLayer(a.sublayers.at(t),!!r?.suspended))}else i.push(this._makeEditableItemForLayer(a,!!r?.suspended))}if(t.aborted)return;const c=this._editableItems;this._editableItems=new a(d.concat(p)),c.destroy()}));this._updatingHandles.addPromise(t.promise),this._updateEditableItemsTask=t}async _cancelWorkflow(t){const e=this.activeWorkflow;if(!e)return void(t&&t.warn&&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 E.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 I.create(this,t,((t,e,a)=>this._applyEdits(t,e,a)))}_createUpdateWorkflow(t){return A.create(this,t,((t,e)=>this._applyEdits(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 W(t.url):null,s={returnServiceEditsOption:(!i||!F(i))&&!RegExp("/hosted/","i").test(t.url)?"original-and-current-features":void 0,...a};return await this._queueOperation((async()=>{const a=await O(this.view,t).catch((()=>null));return r=await t.applyEdits(e,s),a&&await u((()=>!a.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("error"in t&&t.error)throw t.error;if("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=V(t),o=t.fields.some((({type:t})=>L.has(t))),n=s||o,{allowedWorkflows:l}=this,d=l.includes("create")||l.includes("create-features"),p=l.includes("update"),c=t=>!i||!1!==i.enabled&&!1!==i[t],u=d&&!!r?.supportsAdd&&c("addEnabled"),h=p&&!!r?.supportsUpdate&&c("updateEnabled"),w=!n&&p&&!!r?.supportsDelete&&c("deleteEnabled"),f=[];e||(u&&f.push("create"),h&&f.push("update"),w&&f.push("delete"));const m=h&&!n&&(!i||!1!==i.attributeUpdatesEnabled),y=h&&!n&&!!a?.editing?.supportsGeometryUpdate&&(!i||!1!==i.geometryUpdatesEnabled),k=!(!a?.data?.supportsAttachment||i&&!1===i.allowAttachments);return{layer:t,supports:f,attributeUpdatesEnabled:m,geometryUpdatesEnabled:y,hasAttachments:k,attachmentsOnCreateEnabled:k&&d&&(!i||!1!==i.attachmentsOnCreateEnabled),attachmentsOnUpdateEnabled:!n&&k&&(!i||!1!==i.attachmentsOnUpdateEnabled),hasInvalidFormTemplate:s,hasUnsupportedFields:o}}};t([f()],q.prototype,"_editableItems",void 0),t([f({readOnly:!0})],q.prototype,"activeWorkflow",void 0),t([f({readOnly:!0})],q.prototype,"_activityQueue",void 0),t([f({value:[...G]})],q.prototype,"allowedWorkflows",null),t([f({readOnly:!0})],q.prototype,"canCreate",null),t([f({readOnly:!0})],q.prototype,"canUpdate",null),t([f()],q.prototype,"editableItems",null),t([f({readOnly:!0})],q.prototype,"failures",void 0),t([f()],q.prototype,"attachmentsViewModel",void 0),t([f()],q.prototype,"featureFormViewModel",void 0),t([f()],q.prototype,"featureTemplatesViewModel",void 0),t([f()],q.prototype,"labelOptions",null),t([f()],q.prototype,"layerInfos",null),t([f()],q.prototype,"sketchViewModel",void 0),t([f()],q.prototype,"snappingOptions",null),t([f()],q.prototype,"spinnerViewModel",void 0),t([f()],q.prototype,"state",null),t([f({readOnly:!0})],q.prototype,"syncing",null),t([f()],q.prototype,"updating",null),t([f()],q.prototype,"tooltipOptions",null),t([f()],q.prototype,"view",null),t([f()],q.prototype,"pageStack",void 0),t([f()],q.prototype,"showDiscardEditsPrompt",void 0),t([f()],q.prototype,"_candidateCommitted",void 0),t([f()],q.prototype,"page",null),t([f()],q.prototype,"featureFormDisabled",null),t([f()],q.prototype,"canGoBack",null),t([f()],q.prototype,"shouldShowDeleteButton",null),t([f()],q.prototype,"hasPendingEdits",null),t([f()],q.prototype,"useDeprecatedCreateWorkflow",void 0),q=t([m(P)],q);const B=q;export{B 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 o from"../../core/Logger.js";import{abortMaybe as n}from"../../core/maybe.js";import{throwIfAborted as l}from"../../core/promiseUtils.js";import{watch as d,on as p,when as c,whenOnce as u,syncAndInitial as h,initial as w}from"../../core/reactiveUtils.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{UpdatingHandles as y}from"../../core/support/UpdatingHandles.js";import k from"../../layers/GraphicsLayer.js";import{isEditableLayer as g}from"../../layers/support/editableLayers.js";import{isTable as v,getOwningPortalUrl as W,getEffectiveLayerCapabilities as b,isFeatureLayer as _}from"../../layers/support/layerUtils.js";import{parseKnownArcGISOnlineDomain as F}from"../../portal/support/urlUtils.js";import C from"../Attachments/AttachmentsViewModel.js";import E from"./CreateFeaturesWorkflow.js";import I from"./CreateWorkflow.js";import{workflowDeprecation as U}from"./deprecationUtils.js";import A from"./UpdateWorkflow.js";import{whenEditorLayerView as O}from"./workflowUtils.js";import{formTemplateHasInvalidFields as V}from"../FeatureForm/featureFormUtils.js";import j from"../FeatureForm/FeatureFormViewModel.js";import M from"../FeatureTemplates/FeatureTemplatesViewModel.js";import T from"../Sketch/SketchViewModel.js";import S from"../Spinner/SpinnerViewModel.js";import{UNSUPPORTED_DATE_FIELD_TYPES as L}from"../support/dateUtils.js";const P="esri.widgets.Editor.EditorViewModel",D=o.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 k({listMode:"hide",internal:!0}),this._updateEditableItemsTask=null,this._updatingHandles=new y,this.activeWorkflow=null,this._activityQueue=[],this.failures=[],this.attachmentsViewModel=new C({capabilities:{editing:!0}}),this.featureFormViewModel=new j,this.featureTemplatesViewModel=new M,this.sketchViewModel=new T({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([d((()=>{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._updateEditableItems()),h),p((()=>this.activeWorkflow),"cancel",(()=>this.emit("workflow-cancel"))),p((()=>this.activeWorkflow),"commit",(()=>this.emit("workflow-commit"))),p((()=>this.activeWorkflow),"complete",(()=>{this.emit("workflow-commit"),this._set("activeWorkflow",null)})),c((()=>this.view?.map),(t=>t.add(this._sketchGraphicsLayer)),w),d((()=>this._editableItems.toArray()),(()=>{const{activeWorkflow:t}=this;if(this.refreshCreationTemplates(),!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()})),d((()=>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}),h),c((()=>"awaiting-update-feature-candidate"===this.state),(()=>this._candidateCommitted=!1)),p((()=>this.featureTemplatesViewModel),"select",(async({item:t,oldItem:e})=>{const{activeWorkflow:a}=this;if(a)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)})),p((()=>this.view),"key-down",(t=>{"Escape"===t.key&&this.activeWorkflow?.keyboardCancellationEnabled&&this.back()}))])}destroy(){this._cancelWorkflow().then((()=>{this.view?.map&&this.view.map.remove(this._sketchGraphicsLayer),this.view=null})),this._updateEditableItemsTask=n(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")))}get canUpdate(){return this._editableItems.some((({attachmentsOnUpdateEnabled:t,layer:e,supports:a})=>{const r=a.includes("update")||a.includes("delete")||t,i=e.parent,s=!(i&&"visible"in i)||!!i.visible;return e.visible&&s&&r}))}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||0===this._editableItems.length)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?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(U(D,"startCreateWorkflowAtFeatureTypeSelection","startCreateFeaturesWorkflowAtFeatureTypeSelection"),await u((()=>!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(U(D,"startCreateWorkflowAtFeatureCreation","startCreateFeaturesWorkflowAtFeatureCreation"),await u((()=>!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 u((()=>!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(U(D,"startCreateWorkflowAtFeatureEdit"),await u((()=>!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 u((()=>!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 u((()=>!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 u((()=>!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 u((()=>!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({warn:!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)}refreshCreationTemplates(){const t=[];for(const{layer:e,supports:a}of this._editableItems)e.loaded&&a.includes("create")&&!v(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()))}async _updateEditableItems(){n(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(_)??[];await Promise.all(s.map((t=>t.load())));const o=s.filter((t=>g(t))),n=[...i.reverse(),...o.reverse()].filter((t=>"mesh"!==t.geometryType||"3d"===this.view?.type));if(!e||!i)return;const d=[],p=[];for(const a of n){const r=e.find((t=>t.layer===a)),i=r?d:p;if("subtype-group"===a.type){await a.loadAll(),l(t);for(let t=a.sublayers.length-1;t>=0;--t)i.push(this._makeEditableItemForLayer(a.sublayers.at(t),!!r?.suspended))}else i.push(this._makeEditableItemForLayer(a,!!r?.suspended))}if(t.aborted)return;const c=this._editableItems;this._editableItems=new a(d.concat(p)),c.destroy()}));this._updatingHandles.addPromise(t.promise),this._updateEditableItemsTask=t}async _cancelWorkflow(t){const e=this.activeWorkflow;if(!e)return void(t&&t.warn&&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 E.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 I.create(this,t,((t,e,a)=>this._applyEdits(t,e,a)))}_createUpdateWorkflow(t){return A.create(this,t,((t,e)=>this._applyEdits(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 W(t.url):null,s={returnServiceEditsOption:(!i||!F(i))&&!RegExp("/hosted/","i").test(t.url)?"original-and-current-features":void 0,...a};return await this._queueOperation((async()=>{const a=await O(this.view,t).catch((()=>null));return r=await t.applyEdits(e,s),a&&await u((()=>!a.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("error"in t&&t.error)throw t.error;if("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=V(t),o=t.fields.some((({type:t})=>L.has(t))),n=s||o,{allowedWorkflows:l}=this,d=l.includes("create")||l.includes("create-features"),p=l.includes("update"),c=t=>!i||!1!==i.enabled&&!1!==i[t],u=d&&!!r?.supportsAdd&&c("addEnabled"),h=p&&!!r?.supportsUpdate&&c("updateEnabled"),w=!n&&p&&!!r?.supportsDelete&&c("deleteEnabled"),f=[];e||(u&&f.push("create"),h&&f.push("update"),w&&f.push("delete"));const m=h&&!n&&(!i||!1!==i.attributeUpdatesEnabled),y=h&&!n&&!!a?.editing?.supportsGeometryUpdate&&(!i||!1!==i.geometryUpdatesEnabled),k=!(!a?.data?.supportsAttachment||i&&!1===i.allowAttachments);return{layer:t,supports:f,attributeUpdatesEnabled:m,geometryUpdatesEnabled:y,hasAttachments:k,attachmentsOnCreateEnabled:k&&d&&(!i||!1!==i.attachmentsOnCreateEnabled),attachmentsOnUpdateEnabled:!n&&k&&(!i||!1!==i.attachmentsOnUpdateEnabled),hasInvalidFormTemplate:s,hasUnsupportedFields:o}}};t([f()],q.prototype,"_editableItems",void 0),t([f({readOnly:!0})],q.prototype,"activeWorkflow",void 0),t([f({readOnly:!0})],q.prototype,"_activityQueue",void 0),t([f({value:[...G]})],q.prototype,"allowedWorkflows",null),t([f({readOnly:!0})],q.prototype,"canCreate",null),t([f({readOnly:!0})],q.prototype,"canUpdate",null),t([f()],q.prototype,"editableItems",null),t([f({readOnly:!0})],q.prototype,"failures",void 0),t([f()],q.prototype,"attachmentsViewModel",void 0),t([f()],q.prototype,"featureFormViewModel",void 0),t([f()],q.prototype,"featureTemplatesViewModel",void 0),t([f()],q.prototype,"labelOptions",null),t([f()],q.prototype,"layerInfos",null),t([f()],q.prototype,"sketchViewModel",void 0),t([f()],q.prototype,"snappingOptions",null),t([f()],q.prototype,"spinnerViewModel",void 0),t([f()],q.prototype,"state",null),t([f({readOnly:!0})],q.prototype,"syncing",null),t([f()],q.prototype,"updating",null),t([f()],q.prototype,"tooltipOptions",null),t([f()],q.prototype,"view",null),t([f()],q.prototype,"pageStack",void 0),t([f()],q.prototype,"showDiscardEditsPrompt",void 0),t([f()],q.prototype,"_candidateCommitted",void 0),t([f()],q.prototype,"page",null),t([f()],q.prototype,"featureFormDisabled",null),t([f()],q.prototype,"canGoBack",null),t([f()],q.prototype,"shouldShowDeleteButton",null),t([f()],q.prototype,"hasPendingEdits",null),t([f()],q.prototype,"useDeprecatedCreateWorkflow",void 0),q=t([m(P)],q);const B=q;export{B as default};
|
package/widgets/Editor/Upload.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 r from"../../core/Accessor.js";import{createTask as
|
|
5
|
+
import{_ as e}from"../../chunks/tslib.es6.js";import r from"../../core/Accessor.js";import{createTask as t}from"../../core/asyncUtils.js";import o from"../../core/Error.js";import{on as s}from"../../core/events.js";import{throwIfAborted as i,throwIfNotAbortError as l,createResolver as n}from"../../core/promiseUtils.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 c}from"../../core/accessorSupport/decorators/subclass.js";import p from"../../geometry/Point.js";import{getFilePickerAcceptType as u,getSupportedExtensions as f}from"../../layers/support/infoFor3D.js";let m=class extends r{constructor(){super({}),this.files=[],this._uploadTask=null}destroy(){this.cancel(),this.files=[],this._uploadTask=null}get state(){const e=this._uploadTask;return e&&0!==this.files.length?e.finished?e.error?"error":"success":"pending":"default"}get result(){return this._uploadTask?.value??null}get error(){return this._uploadTask?.error??null}uploadTo(e){this.cancel(),this.files=[],this._uploadTask=t((async r=>{const t=await h(e);if(i(r),this.files=t,0===t.length)return null;const{default:s}=await import("../../geometry/Mesh.js");i(r);const l=new p({x:0,y:0,z:0,spatialReference:e.spatialReference}),n=await s.createFromFiles(l,t,{layer:e,signal:r});if(i(r),!n)throw new o("editor:upload","could not upload or convert model");return n.load()}))}cancel(){this._uploadTask?.abort()}};e([a()],m.prototype,"files",void 0),e([a()],m.prototype,"state",null),e([a()],m.prototype,"result",null),e([a()],m.prototype,"error",null),e([a()],m.prototype,"_uploadTask",void 0),m=e([c("esri.widgets.Editor.Upload")],m);let d=null;async function h(e){return"showOpenFilePicker"in window&&!d?y(e):w(e)}async function y(e){try{const r=u(e.infoFor3D),t=await window.showOpenFilePicker({multiple:!0,excludeAcceptAllOption:!0,types:[{...r,accept:{...r.accept,"application/zip":[".zip"]}}]});return Promise.all(t.map((e=>e.getFile())))}catch(r){return l(r),[]}}async function w(e){const{resolve:r,promise:t}=n(),o=document.createElement("input");o.type="file",o.multiple=!0,o.accept=[...f(e.infoFor3D),".zip"].join(",");const i=s(o,"change",(()=>r(o.files?Array.from(o.files):[])));return d?d(o):o.click(),t.finally((()=>i.remove()))}function j(e){d=r=>{Promise.resolve().then((()=>e)).then((e=>{if(!d)return;const t=new DataTransfer;e.forEach((e=>t.items.add(e))),r.files=t.files,r.dispatchEvent(new Event("change"))}))}}function g(){d=null}export{m as Upload,g as clearPromptForFilesStub,j as stubFilePickerToSelect};
|
|
@@ -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{loadPanelContentComponents as
|
|
5
|
+
import{loadPanelContentComponents as t,PanelContentMessage as e,PanelContent as o}from"./PanelContent.js";import"../../support/widgetUtils.js";import{tsx as n}from"../../support/jsxFactory.js";const r=()=>t();function s({helpMessage:t}){return n(o,{key:"creating-features-panel-content"},n(e,{key:"content-message"},t))}export{s as CreateFeaturesPanelContent,r as loadCreateFeaturesPanelContentComponents};
|
|
@@ -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{loadPanelContentComponents as e,PanelContentMessage as
|
|
5
|
+
import{loadPanelContentComponents as e,PanelContentMessage as i,PanelContent as s}from"./PanelContent.js";import{loadCalciteComponents as t}from"../../support/componentsUtils.js";import{classes as c}from"../../support/widgetUtils.js";import{tsx as o}from"../../support/jsxFactory.js";const n="esri-editor__upload-details",l={base:n,status:`${n}__status`,titleWrapper:`${n}__title-wrapper`,title:`${n}__title`,description:`${n}__description`,loader:`${n}__loader`,iconSuccess:`${n}__icon ${n}__icon--success`,iconError:`${n}__icon ${n}__icon--error`,fileList:`${n}__file-list`,file:`${n}__file`,fileIcon:`${n}__file-icon`,fileName:`${n}__file-name`},a=()=>Promise.all([t({icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js"),loader:()=>import("@esri/calcite-components/dist/components/calcite-loader.js")}),e()]);function r(e){return o(s,{key:e.key??"upload-details"},o(i,null,p(e)))}function p(e){const i=d(e);return i?o("div",{class:l.base},o("div",{class:l.status},i.iconContent,o("div",{key:"text",class:l.titleWrapper},o("div",{key:"title",class:l.title},i.status),o("div",{key:"description",class:l.description},i.description))),u(e.upload)):null}function d({helpMessage:e,messages:i,upload:s}){switch(s.state){case"pending":return{status:i.uploadPending,description:i.uploadPendingDescription,iconContent:o("calcite-loader",{"aria-hidden":!0,class:l.loader,label:"",scale:"s",type:"indeterminate"})};case"success":return{status:i.uploadSuccess,description:e||i.helpMessages3d.mesh,iconContent:o("calcite-icon",{class:c(l.iconSuccess),icon:"check",scale:"l"})};case"error":return{status:i.uploadError,description:i.uploadErrorDescription,iconContent:o("calcite-icon",{class:c(l.iconError),icon:"exclamation-mark-circle",scale:"l"})};default:return null}}function u(e){return o("div",{class:l.fileList},e.files.map((e=>o("div",{class:l.file},o("calcite-icon",{class:l.fileIcon,icon:f(e),scale:"s"}),o("span",{class:l.fileName},e.name)))))}function f(e){const i=e.name.split(".").pop()?.toLowerCase();return(i?$[i]:null)??m}const m="file",_="file-shape",g="file-image",$={glb:_,gltf:_,jpeg:g,jpg:g,png:g,svg:g,zip:"file-zip"};export{l as CSS,r as UploadDetails,a as loadUploadDetailsComponents};
|
|
@@ -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{makeHandle as e,handlesGroup as
|
|
5
|
+
import{makeHandle as e,handlesGroup as r}from"../../core/handleUtils.js";import{throwIfAborted as o}from"../../core/promiseUtils.js";import{watch as t}from"../../core/reactiveUtils.js";import{showProgressCursor as a}from"./workflowUtils.js";async function n({view:n,data:c,signal:l,next:i,cancel:u}){const{creationInfo:m}=c;if(!m)return e();if(!s(m))return e();const{layer:p}=m,f=null!=m.geometryToPlace;if(m.geometryToPlace=null,f)return u(),e();const{Upload:d}=await import("./Upload.js");o(l);const y=new d;c.upload=y;let w=null;const U=()=>w?.remove(),g=r([t((()=>y.state),(e=>{switch(e){case"default":case"error":U();break;case"pending":U(),w=a(n);break;case"success":m.maxFeatures=1,m.geometryToPlace=y.result,U(),i()}})),e((()=>{y.cancel(),U()}))]);return y.uploadTo(p),g}function s(e){const r=e?.layer;return"scene"===r?.type}export{n as handleModelUpload,s as isModelUpload};
|
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 i,when as a}from"../core/reactiveUtils.js";import{property as n}from"../core/accessorSupport/decorators/property.js";import{cast as l}from"../core/accessorSupport/decorators/cast.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as d}from"../core/accessorSupport/decorators/subclass.js";import m from"./Attachments.js";import p from"./FeatureForm.js";import c from"./FeatureTemplates.js";import h from"./Spinner.js";import u from"./Widget.js";import{CSS as g}from"./Editor/css.js";import{workflowDeprecation as f}from"./Editor/deprecationUtils.js";import w from"./Editor/EditorViewModel.js";import{WARNING_ICON as v}from"./Editor/icons.js";import{isModelUpload as _}from"./Editor/modelUploadUtils.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 H}from"./support/componentsUtils.js";import{incrementHeadingLevel as G,Heading as R}from"./support/Heading.js";import"./support/widgetUtils.js";import{messageBundle as q}from"./support/decorators/messageBundle.js";import{vmEvent as z}from"./support/decorators/vmEvent.js";import{tsx as N}from"./support/jsxFactory.js";import{substitute as $}from"../intl/substitute.js";const J={undoRedoButtons:!1,snappingControls:!0,snappingControlsElements:{header:!1,enabledToggle:!0,selfEnabledToggle:!0,featureEnabledToggle:!0,layerList:!0},sketchTooltipControls:!0},K="esri.widgets.Editor",Q=t.getLogger(K);let X=class extends u{constructor(e,t){super(e,t),this._featureForm=new p,this._attachments=new m({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?N("calcite-icon",{key:"upload-icon",class:g.templateItemContentEnd,icon:"upload-to"}):null,renderItemLabel:e=>e.label,renderCustomGroupContent:e=>this._renderCustomTemplateGroupContent(e)}),this._filterText="",this._prompt=null,this._spinner=new h,this.headingLevel=4,this.iconClass=g.widgetIcon,this.messages=null,this.messagesCommon=null,this.messagesTemplates=null,this.supportingWidgetDefaults=null,this.viewModel=new w,this.visibleElements={...J},this._renderSelectIcon=()=>N("calcite-icon",{icon:"cursor",slot:"content-start"}),this.EditorPanel=({heading:e,key:t},...s)=>N("calcite-flow-item",{closable:!1,heading:e,headingLevel:this.headingLevel,key:t,loading:this._loading,onCalciteFlowItemBack:this._onBack},N(L,{editorViewModel:this.viewModel,messagesCommon:this.messagesCommon,visibleElements:this.visibleElements}),...s),this._showDiscardEditsPrompt=()=>{const{messages:e,activeWorkflow:t}=this;if("create-features"===t?.type&&_(t.data.creationInfo))return this._showPrompt({title:e.cancelUploadTitle,message:e.cancelUploadWarningMessage,yesLabel:e.discardUpload,noLabel:e.continueUpload});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?(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((()=>G(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:$(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([H({"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",type:"primary"}}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 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}castVisibleElements(e){return{...J,...e,snappingControlsElements:{...J.snappingControlsElements,...e?.snappingControlsElements}}}startCreateWorkflowAtFeatureTypeSelection(){return f(Q,"startCreateWorkflowAtFeatureTypeSelection","startCreateFeaturesWorkflowAtFeatureTypeSelection"),this.viewModel.startCreateWorkflowAtFeatureTypeSelection()}startCreateFeaturesWorkflowAtFeatureTypeSelection(){return this.viewModel.startCreateFeaturesWorkflowAtFeatureTypeSelection()}startCreateWorkflowAtFeatureCreation(e){return f(Q,"startCreateWorkflowAtFeatureCreation","startCreateFeaturesWorkflowAtFeatureCreation"),this.viewModel.startCreateWorkflowAtFeatureCreation(e)}startCreateFeaturesWorkflowAtFeatureCreation(e){return this.viewModel.startCreateFeaturesWorkflowAtFeatureCreation(e)}startCreateWorkflowAtFeatureEdit(e){return f(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;return e?N("div",{key:"base",class:g.base},N("calcite-flow",{key:"flow"},e.pageStack.map((e=>this._renderPage(e)))),this._prompt?N(S,{...this._prompt,headingLevel:this.headingLevel}):void 0):N("div",{key:"empty",class:g.base})}_renderPage(e){switch(e){case"disabled":break;case"ready":return this._renderReady();case"awaiting-feature-creation-info":return this._renderAwaitingFeatureCreationInfo();case"creating-features":return this._renderCreatingFeatures();case"editing-new-feature":case"editing-existing-feature":return this._renderUpdateFeature();case"awaiting-update-feature-candidate":return this._renderFeatureList();case"adding-attachment":return this._renderAttachmentAdding();case"editing-attachment":return this._renderAttachmentEditing()}return N("div",{key:"empty-page"})}_renderAwaitingFeatureCreationInfo(){const{EditorPanel:e,activeWorkflow:t,messages:s}=this;if("create-features"!==t?.type)return null;const o=t.data.upload;return o&&"default"!==o.state?N(e,{heading:s.createFeatures,key:"upload-details-panel"},N(B,{messages:s,upload:o})):N(e,{heading:s.selectTemplate,key:"templates-panel"},N(T,{key:"feature-templates"},N(j,null,this._featureTemplates.render())))}_renderCreatingFeatures(){const{EditorPanel:e,activeWorkflow:t,messages:s,messagesCommon:o,headingLevel:r,viewModel:i}=this;if("create-features"!==t?.type)return null;const a=t.numPendingFeatures>0;return N(e,{key:"create-features-panel",heading:s.createFeatures},a?N(x,{editorViewModel:i,headingLevel:r,messages:s,messagesCommon:o,onDelete:this._onDelete,onSave:this._onSave,renderAttachments:()=>this._attachments.render(),renderFeatureForm:()=>this._featureForm.render()}):N(k,{editorViewModel:i,helpMessage:this._helpMessage}))}_renderUpdateFeature(){const{EditorPanel:e,messages:t,messagesCommon:s,headingLevel:o,viewModel:r}=this;return N(e,{key:"update-feature-panel",heading:t.editFeature},N(x,{editorViewModel:r,headingLevel:o,messages:t,messagesCommon:s,onDelete:this._onDelete,onSave:this._onSave,renderAttachments:()=>this._attachments.render(),renderFeatureForm:()=>this._featureForm.render()}))}_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?N(A,{message:o,icon:v}):null}_renderAttachmentAdding(){const{EditorPanel:e,_attachments:t,messages:s,messagesCommon:o}=this;return N(e,{key:"attachment-adding-panel",heading:s.addAttachment},N(T,{key:"attachments"},t.render()),N(C,{buttons:[{label:t.submitting?o.cancel:o.add,disabled:t.submitting||!t.selectedFile,type:"primary",clickHandler:this._onAttachmentAdd}]}))}_renderAttachmentEditing(){const{EditorPanel:e,_attachments:t,activeWorkflow:s,messages:o,messagesCommon:r}=this;return s?N(e,{key:"attachment-editing-panel",heading:o.editAttachment},N(T,{key:"attachments"},t.render()),s.shouldAllowAttachmentEditing?N(C,{buttons:[{label:r.update,disabled:t.submitting||!t.selectedFile,type:"primary",clickHandler:this._onAttachmentUpdate},{...this._deleteButtonCommonInfo,clickHandler:this._onAttachmentDelete,disabled:t.submitting,label:r.delete}]}):void 0):null}_renderReady(){const{EditorPanel:e,messages:t,viewModel:s}=this,{canUpdate:o}=s,r=this._featureTemplates.viewModel.numberOfFeatureTemplates,i=!o&&0===r,a=this._helpMessage;return N(e,{key:"landing-panel",heading:t.widgetLabel},N(T,{key:"landing-content"},o?N(j,{key:"edit-actions"},this._renderUpdateActions()):void 0,r>0?N(j,{key:"create-actions"},this._renderCreateActions()):void 0,i?N(P,{key:"no-content"},t.noEditableLayers):void 0),a?N("div",{key:"footer-actions",slot:"footer",class:g.helpMessage},a):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}=this,s={id:"select",label:t.select};return N("div",{key:"update-actions"},N(R,{level:G(this.headingLevel)},e.editFeatures),N("calcite-list",{selectionMode:"single",selectionAppearance:"border"},V({grouped:!1,item:s,selectedItem:"awaiting-feature-to-update"===this.viewModel.activeWorkflow?.stepId?s:void 0,renderIcon:this._renderSelectIcon,onItemSelect:this._onToggleUpdateWorkflow})))}_renderCreateActions(){return N("div",{key:"create-actions"},N(R,{level:G(this.headingLevel)},this.messages.createFeatures),N("div",{key:"templates",class:g.featureTemplatesContainer},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=$(this.messages.multipleFeaturesTemplate,{total:o.length});return N(e,{heading:r,key:"feature-list"},N(M,{editableItems:t.editableItems,filterText:this._filterText,id:this.id,messagesTemplates:this.messagesTemplates,onFilterTextChange:e=>this._filterText=e,onSelectFeature:(e,s)=>t.selectFeature(e,s),workflow: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,"iconClass",void 0),e([n()],X.prototype,"label",null),e([n()],X.prototype,"labelOptions",null),e([n()],X.prototype,"layerInfos",null),e([n(),q("esri/widgets/Editor/t9n/Editor")],X.prototype,"messages",void 0),e([n(),q("esri/t9n/common")],X.prototype,"messagesCommon",void 0),e([n(),q("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()],X.prototype,"visibleElements",void 0),e([l("visibleElements")],X.prototype,"castVisibleElements",null),e([n()],X.prototype,"_helpMessage",null),X=e([d(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{cast as l}from"../core/accessorSupport/decorators/cast.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as d}from"../core/accessorSupport/decorators/subclass.js";import p from"./Attachments.js";import m from"./FeatureForm.js";import c from"./FeatureTemplates.js";import h from"./Spinner.js";import u from"./Widget.js";import{CSS as g}from"./Editor/css.js";import{workflowDeprecation as f}from"./Editor/deprecationUtils.js";import w from"./Editor/EditorViewModel.js";import{WARNING_ICON as v}from"./Editor/icons.js";import{isModelUpload as _}from"./Editor/modelUploadUtils.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 E}from"./Editor/components/Notices.js";import{loadPanelContentComponents as A,PanelContent as T,PanelContentSection as j,PanelContentMessage as P}from"./Editor/components/PanelContent.js";import{PanelToolbar as U,loadPanelToolbarComponents as L}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 H}from"./support/componentsUtils.js";import{incrementHeadingLevel as G,Heading as R}from"./support/Heading.js";import"./support/widgetUtils.js";import{messageBundle as q}from"./support/decorators/messageBundle.js";import{vmEvent as z}from"./support/decorators/vmEvent.js";import{tsx as N}from"./support/jsxFactory.js";import{substitute as $}from"../intl/substitute.js";const J={undoRedoButtons:!1,snappingControls:!0,snappingControlsElements:{header:!1,enabledToggle:!0,selfEnabledToggle:!0,featureEnabledToggle:!0,layerList:!0},sketchTooltipControls:!0},K="esri.widgets.Editor",Q=t.getLogger(K);let X=class extends u{constructor(e,t){super(e,t),this._featureForm=new m,this._attachments=new p({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?N("calcite-icon",{key:"upload-icon",class:g.templateItemContentEnd,icon:"upload-to"}):null,renderItemLabel:e=>e.label,renderCustomGroupContent:e=>this._renderCustomTemplateGroupContent(e)}),this._filterText="",this._prompt=null,this._spinner=new h,this.headingLevel=4,this.iconClass=g.widgetIcon,this.messages=null,this.messagesCommon=null,this.messagesTemplates=null,this.supportingWidgetDefaults=null,this.viewModel=new w,this.visibleElements={...J},this._renderSelectIcon=()=>N("calcite-icon",{icon:"cursor",slot:"content-start"}),this.EditorPanel=({heading:e,key:t},...s)=>N("calcite-flow-item",{closable:!1,heading:e,headingLevel:this.headingLevel,key:t,loading:this._loading,onCalciteFlowItemBack:this._onBack},N(U,{editorViewModel:this.viewModel,messagesCommon:this.messagesCommon,visibleElements:this.visibleElements}),...s),this._showDiscardEditsPrompt=()=>{const{messages:e,activeWorkflow:t}=this;if("create-features"===t?.type&&_(t.data.creationInfo))return this._showPrompt({title:e.cancelUploadTitle,message:e.cancelUploadWarningMessage,yesLabel:e.discardUpload,noLabel:e.continueUpload});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?(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((()=>G(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:$(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([H({"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(),A(),L(),I(),D(),O()])}get _deleteButtonCommonInfo(){return{appearance:"outline",kind:"danger",type:"primary"}}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 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}castVisibleElements(e){return{...J,...e,snappingControlsElements:{...J.snappingControlsElements,...e?.snappingControlsElements}}}startCreateWorkflowAtFeatureTypeSelection(){return f(Q,"startCreateWorkflowAtFeatureTypeSelection","startCreateFeaturesWorkflowAtFeatureTypeSelection"),this.viewModel.startCreateWorkflowAtFeatureTypeSelection()}startCreateFeaturesWorkflowAtFeatureTypeSelection(){return this.viewModel.startCreateFeaturesWorkflowAtFeatureTypeSelection()}startCreateWorkflowAtFeatureCreation(e){return f(Q,"startCreateWorkflowAtFeatureCreation","startCreateFeaturesWorkflowAtFeatureCreation"),this.viewModel.startCreateWorkflowAtFeatureCreation(e)}startCreateFeaturesWorkflowAtFeatureCreation(e){return this.viewModel.startCreateFeaturesWorkflowAtFeatureCreation(e)}startCreateWorkflowAtFeatureEdit(e){return f(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;return e?N("div",{key:"base",class:g.base},N("calcite-flow",{key:"flow"},e.pageStack.map((e=>this._renderPage(e)))),this._prompt?N(S,{...this._prompt,headingLevel:this.headingLevel}):void 0):N("div",{key:"empty",class:g.base})}_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":return this._renderUpdateFeature();case"awaiting-update-feature-candidate":return this._renderFeatureList();case"adding-attachment":return this._renderAttachmentAdding();case"editing-attachment":return this._renderAttachmentEditing()}return N("div",{key:"empty-page"})}_renderAwaitingFeatureCreationInfo(){const{EditorPanel:e,activeWorkflow:t,messages:s}=this;return"create-features"!==t?.type?null:N(e,{heading:s.selectTemplate,key:"templates-panel"},N(T,{key:"feature-templates"},N(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?N(e,{heading:s.createFeatures,key:"upload-details-panel"},N(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("create-features"!==t?.type)return null;const a=t.numPendingFeatures>0;return N(e,{key:"create-features-panel",heading:s.createFeatures},a?N(x,{editorViewModel:i,headingLevel:r,messages:s,messagesCommon:o,onDelete:this._onDelete,onSave:this._onSave,renderAttachments:()=>this._attachments.render(),renderFeatureForm:()=>this._featureForm.render()}):N(k,{helpMessage:this._helpMessage}))}_renderUpdateFeature(){const{EditorPanel:e,messages:t,messagesCommon:s,headingLevel:o,viewModel:r}=this;return N(e,{key:"update-feature-panel",heading:t.editFeature},N(x,{editorViewModel:r,headingLevel:o,messages:t,messagesCommon:s,onDelete:this._onDelete,onSave:this._onSave,renderAttachments:()=>this._attachments.render(),renderFeatureForm:()=>this._featureForm.render()}))}_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?N(E,{message:o,icon:v}):null}_renderAttachmentAdding(){const{EditorPanel:e,_attachments:t,messages:s,messagesCommon:o}=this;return N(e,{key:"attachment-adding-panel",heading:s.addAttachment},N(T,{key:"attachments"},t.render()),N(C,{buttons:[{label:t.submitting?o.cancel:o.add,disabled:t.submitting||!t.selectedFile,type:"primary",clickHandler:this._onAttachmentAdd}]}))}_renderAttachmentEditing(){const{EditorPanel:e,_attachments:t,activeWorkflow:s,messages:o,messagesCommon:r}=this;return s?N(e,{key:"attachment-editing-panel",heading:o.editAttachment},N(T,{key:"attachments"},t.render()),s.shouldAllowAttachmentEditing?N(C,{buttons:[{label:r.update,disabled:t.submitting||!t.selectedFile,type:"primary",clickHandler:this._onAttachmentUpdate},{...this._deleteButtonCommonInfo,clickHandler:this._onAttachmentDelete,disabled:t.submitting,label:r.delete}]}):void 0):null}_renderReady(){const{EditorPanel:e,messages:t,viewModel:s}=this,{canUpdate:o}=s,r=this._featureTemplates.viewModel.numberOfFeatureTemplates,i=!o&&0===r,a=this._helpMessage;return N(e,{key:"landing-panel",heading:t.widgetLabel},N(T,{key:"landing-content"},o?N(j,{key:"edit-actions"},this._renderUpdateActions()):void 0,r>0?N(j,{key:"create-actions"},this._renderCreateActions()):void 0,i?N(P,{key:"no-content"},t.noEditableLayers):void 0),a?N("div",{key:"footer-actions",slot:"footer",class:g.helpMessage},a):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}=this,s={id:"select",label:t.select};return N("div",{key:"update-actions"},N(R,{level:G(this.headingLevel)},e.editFeatures),N("calcite-list",{selectionMode:"single",selectionAppearance:"border"},V({grouped:!1,item:s,selectedItem:"awaiting-feature-to-update"===this.viewModel.activeWorkflow?.stepId?s:void 0,renderIcon:this._renderSelectIcon,onItemSelect:this._onToggleUpdateWorkflow})))}_renderCreateActions(){return N("div",{key:"create-actions"},N(R,{level:G(this.headingLevel)},this.messages.createFeatures),N("div",{key:"templates",class:g.featureTemplatesContainer},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=$(this.messages.multipleFeaturesTemplate,{total:o.length});return N(e,{heading:r,key:"feature-list"},N(M,{editableItems:t.editableItems,filterText:this._filterText,id:this.id,messagesTemplates:this.messagesTemplates,onFilterTextChange:e=>this._filterText=e,onSelectFeature:(e,s)=>t.selectFeature(e,s),workflow: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,"iconClass",void 0),e([n()],X.prototype,"label",null),e([n()],X.prototype,"labelOptions",null),e([n()],X.prototype,"layerInfos",null),e([n(),q("esri/widgets/Editor/t9n/Editor")],X.prototype,"messages",void 0),e([n(),q("esri/t9n/common")],X.prototype,"messagesCommon",void 0),e([n(),q("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()],X.prototype,"visibleElements",void 0),e([l("visibleElements")],X.prototype,"castVisibleElements",null),e([n()],X.prototype,"_helpMessage",null),X=e([d(K)],X);const Y=X;export{Y 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{r as t,d as e}from"../../../chunks/Responsive.js";import"../../../intl.js";import{binaryFindClosest as i}from"../../../core/arrayUtils.js";import{handlesGroup as n,makeHandle as o}from"../../../core/handleUtils.js";import{throwIfAborted as s}from"../../../core/promiseUtils.js";import{signal as a}from"../../../core/signal.js";import{formatDecimal as l,unitName as r}from"../../../core/unitFormatUtils.js";import{convertUnit as d}from"../../../core/unitUtils.js";import{g as c}from"../../../chunks/common.js";import{TaskPriority as p}from"../../../views/support/Scheduler.js";import{getConfig as u,NOT_AVAILABLE as m}from"./constants.js";import{getTranslatedLineTitle as f}from"./intlUtils.js";import{niceScale as x}from"./niceScale.js";import{c as g,N as h}from"../../../chunks/chartUtilsAm5.js";import{isRTL as A}from"../../support/widgetUtils.js";import{isDarkTheme as v}from"../../../support/themeUtils.js";import{X as b,V as T,A as y,a as L,b as S,L as M}from"../../../chunks/LineSeries.js";import{aq as F,a6 as k,a4 as P,C as X}from"../../../chunks/Theme.js";import{T as Y}from"../../../chunks/Tooltip.js";import{substitute as z}from"../../../intl/substitute.js";import{formatNumber as C}from"../../../intl/number.js";const j="#f8f8f8",w="#a9a9a9",U="#323232",H="line",B="fill",I=15,R=12,D=.001,O=.1,E=.02,W={fontFamily:"Avenir Next",paddingBottom:R/2,paddingLeft:0,paddingRight:0,paddingTop:0,axisGridStroke:"#f4f4f4",axisLabelsFontSize:9,axisLabelsFontWeight:"400",axisLabelsColor:w,axisTooltipFontSize:12,axisTooltipBackgroundColor:U,axisTooltipLabelColor:j,axisTooltipPaddingTop:Math.round(R/4),axisTooltipPaddingBottom:Math.round(R/4),axisTooltipPaddingHorizontal:Math.round(I/4),xAxisMinGridDistance:50,xAxisLabelsSpacing:Math.round(R/2),xAxisMinLabelPosition:.05,xAxisMaxLabelPosition:.9,yAxisMinGridDistance:30,yAxisLabelSpacing:Math.round(I/4),yAxisMinLabelPosition:0,yAxisMaxLabelPosition:.8,seriesTooltipFontSize:12,seriesTooltipBackgroundColor:j,seriesTooltipLabelColor:U,seriesFillLighten:.9,seriesTooltipSpacing:R/2,seriesTooltipPaddingVertical:Math.round(I/4),seriesTooltipPaddingHorizontal:Math.round(I/4)},G={...W,axisGridStroke:U,axisLabelsColor:w,axisTooltipBackgroundColor:U,axisTooltipLabelColor:j,seriesTooltipBackgroundColor:U,seriesTooltipLabelColor:j,seriesFillLighten:-.75},V={minX:void 0,maxX:void 0,minY:void 0,maxY:void 0};async function $(i){const o=await g(i.container);s(i.abortOptions);const l=v(),r=l?G:W;o.setThemes(l?[t.new(o),e.new(o)]:[t.new(o)]);const d=A(i.container),c=o.container.children.push(b.new(o,{panX:!0,panY:!0,paddingTop:r.paddingTop,paddingBottom:r.paddingBottom,paddingLeft:d?r.paddingRight:r.paddingLeft,paddingRight:d?r.paddingLeft:r.paddingRight,maxTooltipDistance:0}));c.zoomOutButton.set("forceHidden",!0);const u=c.xAxes.push(T.new(o,{renderer:y.new(o,{})})),m=c.yAxes.push(T.new(o,{renderer:L.new(o,{})})),f=a(null),x=a("loading"),h={params:i,chart:c,xAxis:u,yAxis:m,seriesInfos:new Map,messages:null,theme:r,pointerIsOver:!1,get state(){return x.value},get data(){return f.value},set data(t){f.value=t}};q(h),_(h),Z(h);const S=n([i.scheduler?.registerTask(p.ELEVATION_PROFILE,st(h)),dt(h,i.onRangeChange),pt(h,i.onCursorPositionChange),Lt(o.events.once("frameended",(()=>{x.value="ready"}))),Lt(o)]);return{destroy:()=>{S.remove(),x.value="destroyed"},update:t=>{t.data===h.data&&t.messages===h.messages||N(h)||J(h,t)},zoomOut:()=>K(h)}}function N(t){return"destroyed"===t.state}function Z({chart:t,xAxis:e,yAxis:i}){const n=S.new(t.root,{behavior:"none",xAxis:e,yAxis:i});n.lineY.set("visible",!1),t.set("cursor",n)}function q(t){const{chart:e,xAxis:i,theme:n}=t;i.setAll({extraMax:0,extraMin:0,maxDeviation:0,numberFormatter:At(t,"distance"),strictMinMax:!0,strictMinMaxSelection:!0}),i.axisHeader.set("forceHidden",!0);const o=i.get("renderer");o.setAll({inside:!1,minGridDistance:n.xAxisMinGridDistance}),o.labels.template.setAll({centerX:F,centerY:F,fill:k(n.axisLabelsColor),fontFamily:n.fontFamily,fontSize:n.axisLabelsFontSize,fontWeight:n.axisLabelsFontWeight,maxPosition:n.xAxisMaxLabelPosition,minPosition:n.xAxisMinLabelPosition,paddingLeft:0,paddingRight:0,paddingTop:n.xAxisLabelsSpacing});const s=i.set("tooltip",Y.new(e.root,{paddingBottom:0,paddingLeft:0,paddingRight:0,paddingTop:0}));s.get("background")?.setAll({fill:k(n.axisTooltipBackgroundColor),stroke:void 0}),s.label.setAll({fill:k(n.axisTooltipLabelColor),fontFamily:n.fontFamily,fontSize:n.axisTooltipFontSize,paddingBottom:n.axisTooltipPaddingBottom,paddingLeft:n.axisTooltipPaddingHorizontal,paddingRight:n.axisTooltipPaddingHorizontal,paddingTop:n.axisTooltipPaddingTop}),o.grid.template.setAll({strokeOpacity:1,stroke:k(n.axisGridStroke)})}function _(t){const{yAxis:e,theme:i}=t;e.setAll({baseValue:u().noDataValue,extraMax:0,extraMin:0,maxDeviation:0,numberFormatter:At(t,"elevation"),strictMinMax:!0,strictMinMaxSelection:!0,tooltip:void 0}),e.axisHeader.set("visible",!1);const n=A(t.params.container),o=e.get("renderer");o.setAll({minGridDistance:i.yAxisMinGridDistance,opposite:n,inside:!0}),o.labels.template.setAll({centerX:F,centerY:P,fill:k(i.axisLabelsColor),fontFamily:i.fontFamily,fontSize:i.axisLabelsFontSize,fontWeight:i.axisLabelsFontWeight,maxPosition:i.yAxisMaxLabelPosition,minPosition:i.yAxisMinLabelPosition,paddingBottom:0,paddingLeft:n?0:i.yAxisLabelSpacing,paddingRight:n?i.yAxisLabelSpacing:0,paddingTop:0,textAlign:"start"}),o.grid.template.setAll({strokeOpacity:1,stroke:k(i.axisGridStroke)})}function J(t,e){if(N(t))return;const i=t.data??void 0,n=e.data??void 0;t.chart.get("cursor")?.set("forceHidden",!n?.refined);const o=i!==n,s=i?.effectiveUnits!==n?.effectiveUnits,a=i?.uniformScaling!==n?.uniformScaling;t.data=n,t.messages=e.messages,(o||s)&&(Q(t),nt(t)),a&&K(t),mt(t)}function K(t){N(t)||(t.xAxis.zoom(0,1),t.yAxis.zoom(0,1))}function Q(t){const{chart:e,data:i,xAxis:n,yAxis:o}=t,{minX:s,maxX:a,minY:l,maxY:r}=tt({data:i,pixelWidth:n.width(),pixelHeight:o.height()}),d=i?.uniformScaling;e.setAll({panX:!0,panY:d,pinchZoomX:d,pinchZoomY:d,wheelX:"panX",wheelY:d?"zoomXY":"zoomX"}),n.setAll({max:a,min:s,panX:!0,panY:!1,zoomX:!0,zoomY:d}),o.setAll({max:r,min:l,panX:!1,panY:d,zoomX:d,zoomY:d})}function tt({data:t,pixelWidth:e,pixelHeight:i}){if(null==t)return V;const n=t.statistics,o=0,s=n?.maxDistance;let a=n?.minElevation,l=n?.maxElevation;if(null==s||null==a||null==l)return V;const r=Math.max(s-o,D);let c=Math.max(l-a,D);const p=t.effectiveUnits;if(t.dynamicElevationRange){const t=d(r,p.distance,p.elevation);c=Math.max(c,t/u().maxChartRatio)}return a-=E*c,l=a+c+O*c,[a,l]=x(a,l,10),c=l-a,t.uniformScaling?et({data:t,bounds:{minX:o,maxX:s,minY:a,maxY:l},pixelWidth:e,pixelHeight:i,centered:!0}):{minX:o,maxX:o+r,minY:a,maxY:a+c}}function et({data:t,bounds:e,pixelWidth:i,pixelHeight:n,centered:o}){if(null==t)return e;let{minX:s,maxX:a,minY:l,maxY:r}=e;if(null==s||null==a||null==l||null==r)return V;const c=a-s,p=r-l,u=t.effectiveUnits,m=d(p,u.elevation,u.distance)/n/(c/i);return m>=1?[s,a]=it([s,a],m,o):[l,r]=it([l,r],1/m,o),{minX:s,maxX:a,minY:l,maxY:r}}function it([t,e],i,n){const o=(e-t)*i;if(n){const i=(t+e)/2-o/2;return[i,i+o]}return[t,t+o]}function nt(t){const{chart:e,data:i,seriesInfos:n,xAxis:o,yAxis:s}=t;if(null==i||0===i.lines.length)return void e.series.clear();const a=new Map,l=new Set(e.series.values),r=i.lines.length;for(let d=0;d<r;d++){const o=i.lines[d];let s=n.get(o.id);s?(s.fill&&l.delete(s.fill),l.delete(s.line)):(s=at(t,o),s.fill&&e.series.push(s.fill),e.series.push(s.line)),a.set(s.id,s);const c=r-d-1;s.fill?.set("layer",c),s.line.set("layer",r+c),ot(t,s,o)}t.seriesInfos=a;for(const d of l)e.series.removeValue(d);o.set("layer",r+1),s.set("layer",r+2)}function ot({params:t,theme:e},i,n){const o=k(n.color.toCss()),s=n.samples??[],a=s.length>0,{line:l,fill:r}=i;l.set("visible",a),l.set("stroke",o),r?.set("visible",a),r?.set("fill",X.lighten(o,e.seriesFillLighten)),t.scheduler?(l.data.clear(),r?.data.clear(),i.numUpdatedSamples=0):(l.data.setAll(s),r?.data.setAll(s))}function st(t){return{get running(){return!!t.data?.lines?.some((e=>{const i=t.seriesInfos.get(e.id),n=e.samples?.length??0;return i.numUpdatedSamples<n}))},runTask(e){const i=t.data?.lines;if(i)for(;!e.done&&this.running;){for(const{id:e,samples:n}of i){const i=t.seriesInfos.get(e),o=i.numUpdatedSamples;if(!n||o>=n.length)continue;const s=i.line.data,a=i.fill?.data,l=n[o];o<s.length?(s.setIndex(o,l),a?.setIndex(o,l)):(s.push(l),a?.push(l)),i.numUpdatedSamples++}e.madeProgress()}}}}function at(t,e){const{id:i}=e,n=lt(t,`${H}-${i}`);n.setAll({dy:e.chartStrokeOffsetY,tooltip:rt(t)}),n.strokes.template.setAll({strokeWidth:e.chartStrokeWidth});let o=null;e.chartFillEnabled&&(o=lt(t,`${B}-${i}`),o.fills.template.setAll({fillOpacity:1,visible:!0}));const s=a(0);return{id:i,line:n,fill:o,get numUpdatedSamples(){return s.value},set numUpdatedSamples(t){s.value=t}}}function lt(t,e){return M.new(t.chart.root,{connect:!1,excludeFromTotal:!0,fill:void 0,id:e,stroke:void 0,valueXField:"distance",valueYField:"elevation",xAxis:t.xAxis,yAxis:t.yAxis})}function rt({theme:t,chart:e}){const i=Y.new(e.root,{forceHidden:!0,getFillFromSprite:!1,getLabelFillFromSprite:!1,pointerOrientation:"vertical",visible:!1}),n=t.seriesTooltipPaddingHorizontal,o=t.seriesTooltipPaddingVertical;return i.label.setAll({fill:k(t.seriesTooltipLabelColor),fontFamily:t.fontFamily,fontSize:t.seriesTooltipFontSize,paddingBottom:o,paddingLeft:n,paddingRight:n,paddingTop:o,textAlign:"start"}),i.get("background")?.setAll({stroke:void 0,fill:k(t.seriesTooltipBackgroundColor)}),i.adapters.add("dy",(e=>{const n=t.seriesTooltipSpacing,o=i.get("pointTo")?.y??0;return(e??0)+(i.y()>o?n:-n)})),i}function dt(t,e){const{xAxis:i,yAxis:n}=t,o=()=>{e(ct(i),ct(n))},s=t=>[t.on("start",o),t.on("end",o)];return yt([...s(i),...s(n)])}function ct(t){const e=Math.abs((t.get("end")??0)-(t.get("start")??0)),i=0!==e?1/e:1;return Math.abs(1-i)<c()?1:i}function pt(t,e){const{chart:i,xAxis:n,yAxis:o}=t,s=i.get("cursor"),a=i.plotContainer.events,l=e=>{t.pointerIsOver=e,mt(t)},r=()=>{l(!1),e(null,null)};return yt([s?.events.on("cursormoved",(()=>{if(!t.pointerIsOver)return;mt(t);let i=s?.getPrivate("positionX")??0,a=s?.getPrivate("positionY")??0;const l=t.data;if(null!=l&&null!=l.statistics){const{maxDistance:t,minElevation:e,maxElevation:s}=l.statistics;if(null!=t){i=ut(i,bt(n),Tt(n),0,t)}if(null!=e&&null!=s){a=ut(a,bt(o),Tt(o),e,s)}}e(i,a)})),a.on("pointerover",(()=>l(!0))),a.on("pointerout",r),a.on("blur",r)])}function ut(t,e,i,n,o){return(e+t*(i-e)-n)/(o-n)}function mt(t){const e=ft(t);if(!e)return void t.seriesInfos.forEach((t=>{t.line.get("tooltip")?.set("forceHidden",!0)}));t.seriesInfos.forEach((t=>{const i=t.line.get("tooltip");i.set("forceHidden",!1),i.label.set("text",e)}));t.xAxis.getTooltip().setAll({tooltipText:ht(t)})}function ft(t){const{data:e}=t,i=e?.lines.map((e=>({line:e,y:vt(t,e)?.elevation}))).sort(xt);return i&&0!==i.length&&null!=i[0].y?i.map((({y:e,line:i})=>gt(t,i,e))).join("\n"):null}function xt({y:t},{y:e}){return null==t?1:null==e?-1:e-t}function gt(t,e,i){const{data:n,messages:o}=t;if(null==n||null==o)return"";const s=u().formatPrecision,a=z(o.chartTooltip,{name:f(e,o),elevation:null!=i?l(o,i,n.effectiveUnits.elevation,s):m});return`[${e.color.toHex()}]●[/] ${a}`}function ht(t){const{data:e,messages:i}=t;if(null==e||null==i)return"";const n=e.lines[0],o=n?vt(t,n):null,s=u().formatPrecision;return null!=o?l(i,o.distance,e.effectiveUnits.distance,s):"-"}function At(t,e){const i=h.new(t.chart.root,{});return i.format=(i,n,o)=>{const{data:s,messages:a}=t;if(null==a||null==s||"string"==typeof i)return"";return`${C(i,{maximumFractionDigits:o})} ${r(a,s.effectiveUnits[e],"abbr")}`},i}function vt({chart:t,xAxis:e},n){const o=n.samples??[];if(0===o.length)return null;const s=t.get("cursor"),a=s?.getPrivate("positionX")??0,l=e.toAxisPosition(a),r=e.positionToValue(l);return i(o,r,(t=>t.distance))}function bt(t){return t.positionToValue(t.get("start")??0)}function Tt(t){return t.positionToValue(t.get("end")??1)}function yt(t){return n(t.map(Lt))}function Lt(t){return o((()=>{t?.dispose()}))}export{$ as createChart,tt as getAdjustedBounds};
|
|
5
|
+
import{r as t,d as i}from"../../../chunks/Responsive.js";import"../../../intl.js";import{binaryFindClosest as e}from"../../../core/arrayUtils.js";import{handlesGroup as n,makeHandle as o}from"../../../core/handleUtils.js";import{throwIfAborted as s}from"../../../core/promiseUtils.js";import{signal as a}from"../../../core/signal.js";import{formatDecimal as l,unitName as r}from"../../../core/unitFormatUtils.js";import{convertUnit as d}from"../../../core/unitUtils.js";import{g as c}from"../../../chunks/common.js";import{getConfig as p,NOT_AVAILABLE as m}from"./constants.js";import{getTranslatedLineTitle as u}from"./intlUtils.js";import{niceScale as f}from"./niceScale.js";import{c as x,N as g}from"../../../chunks/chartUtilsAm5.js";import{isRTL as h}from"../../support/widgetUtils.js";import{isDarkTheme as A}from"../../../support/themeUtils.js";import{X as v,V as b,A as y,a as T,b as L,L as M}from"../../../chunks/LineSeries.js";import{aq as S,a6 as F,a4 as k,C as P}from"../../../chunks/Theme.js";import{T as X}from"../../../chunks/Tooltip.js";import{substitute as Y}from"../../../intl/substitute.js";import{formatNumber as z}from"../../../intl/number.js";const C="#f8f8f8",j="#a9a9a9",w="#323232",H="line",B="fill",U=15,D=12,R=.001,O=.1,W=.02,G={fontFamily:"Avenir Next",paddingBottom:D/2,paddingLeft:0,paddingRight:0,paddingTop:0,axisGridStroke:"#f4f4f4",axisLabelsFontSize:9,axisLabelsFontWeight:"400",axisLabelsColor:j,axisTooltipFontSize:12,axisTooltipBackgroundColor:w,axisTooltipLabelColor:C,axisTooltipPaddingTop:Math.round(D/4),axisTooltipPaddingBottom:Math.round(D/4),axisTooltipPaddingHorizontal:Math.round(U/4),xAxisMinGridDistance:50,xAxisLabelsSpacing:Math.round(D/2),xAxisMinLabelPosition:.05,xAxisMaxLabelPosition:.9,yAxisMinGridDistance:30,yAxisLabelSpacing:Math.round(U/4),yAxisMinLabelPosition:0,yAxisMaxLabelPosition:.8,seriesTooltipFontSize:12,seriesTooltipBackgroundColor:C,seriesTooltipLabelColor:w,seriesFillLighten:.9,seriesTooltipSpacing:D/2,seriesTooltipPaddingVertical:Math.round(U/4),seriesTooltipPaddingHorizontal:Math.round(U/4)},V={...G,axisGridStroke:w,axisLabelsColor:j,axisTooltipBackgroundColor:w,axisTooltipLabelColor:C,seriesTooltipBackgroundColor:w,seriesTooltipLabelColor:C,seriesFillLighten:-.75},E={minX:void 0,maxX:void 0,minY:void 0,maxY:void 0};async function I(e){const o=await x(e.container);s(e.abortOptions);const l=A(),r=l?V:G;o.setThemes(l?[t.new(o),i.new(o)]:[t.new(o)]);const d=h(e.container),c=o.container.children.push(v.new(o,{panX:!0,panY:!0,paddingTop:r.paddingTop,paddingBottom:r.paddingBottom,paddingLeft:d?r.paddingRight:r.paddingLeft,paddingRight:d?r.paddingLeft:r.paddingRight,maxTooltipDistance:0}));c.zoomOutButton.set("forceHidden",!0);const p=c.xAxes.push(b.new(o,{renderer:y.new(o,{})})),m=c.yAxes.push(b.new(o,{renderer:T.new(o,{})})),u=a(null),f=a("loading"),g={params:e,chart:c,xAxis:p,yAxis:m,seriesInfos:new Map,messages:null,theme:r,pointerIsOver:!1,get state(){return f.value},get data(){return u.value},set data(t){u.value=t}};Z(g),q(g),N(g);const L=n([lt(g,e.onRangeChange),dt(g,e.onCursorPositionChange),yt(o.events.once("frameended",(()=>{f.value="ready"}))),yt(o)]);return{destroy:()=>{L.remove(),f.value="destroyed"},update:t=>{t.data===g.data&&t.messages===g.messages||$(g)||J(g,t)},zoomOut:()=>K(g)}}function $(t){return"destroyed"===t.state}function N({chart:t,xAxis:i,yAxis:e}){const n=L.new(t.root,{behavior:"none",xAxis:i,yAxis:e});n.lineY.set("visible",!1),t.set("cursor",n)}function Z(t){const{chart:i,xAxis:e,theme:n}=t;e.setAll({extraMax:0,extraMin:0,maxDeviation:0,numberFormatter:gt(t,"distance"),strictMinMax:!0,strictMinMaxSelection:!0}),e.axisHeader.set("forceHidden",!0);const o=e.get("renderer");o.setAll({inside:!1,minGridDistance:n.xAxisMinGridDistance}),o.labels.template.setAll({centerX:S,centerY:S,fill:F(n.axisLabelsColor),fontFamily:n.fontFamily,fontSize:n.axisLabelsFontSize,fontWeight:n.axisLabelsFontWeight,maxPosition:n.xAxisMaxLabelPosition,minPosition:n.xAxisMinLabelPosition,paddingLeft:0,paddingRight:0,paddingTop:n.xAxisLabelsSpacing});const s=e.set("tooltip",X.new(i.root,{paddingBottom:0,paddingLeft:0,paddingRight:0,paddingTop:0}));s.get("background")?.setAll({fill:F(n.axisTooltipBackgroundColor),stroke:void 0}),s.label.setAll({fill:F(n.axisTooltipLabelColor),fontFamily:n.fontFamily,fontSize:n.axisTooltipFontSize,paddingBottom:n.axisTooltipPaddingBottom,paddingLeft:n.axisTooltipPaddingHorizontal,paddingRight:n.axisTooltipPaddingHorizontal,paddingTop:n.axisTooltipPaddingTop}),o.grid.template.setAll({strokeOpacity:1,stroke:F(n.axisGridStroke)})}function q(t){const{yAxis:i,theme:e}=t;i.setAll({baseValue:p().noDataValue,extraMax:0,extraMin:0,maxDeviation:0,numberFormatter:gt(t,"elevation"),strictMinMax:!0,strictMinMaxSelection:!0,tooltip:void 0}),i.axisHeader.set("visible",!1);const n=h(t.params.container),o=i.get("renderer");o.setAll({minGridDistance:e.yAxisMinGridDistance,opposite:n,inside:!0}),o.labels.template.setAll({centerX:S,centerY:k,fill:F(e.axisLabelsColor),fontFamily:e.fontFamily,fontSize:e.axisLabelsFontSize,fontWeight:e.axisLabelsFontWeight,maxPosition:e.yAxisMaxLabelPosition,minPosition:e.yAxisMinLabelPosition,paddingBottom:0,paddingLeft:n?0:e.yAxisLabelSpacing,paddingRight:n?e.yAxisLabelSpacing:0,paddingTop:0,textAlign:"start"}),o.grid.template.setAll({strokeOpacity:1,stroke:F(e.axisGridStroke)})}function J(t,i){if($(t))return;const e=t.data??void 0,n=i.data??void 0;t.chart.get("cursor")?.set("forceHidden",!n?.refined);const o=e!==n,s=e?.effectiveUnits!==n?.effectiveUnits,a=e?.uniformScaling!==n?.uniformScaling;t.data=n,t.messages=i.messages,(o||s)&&(Q(t),et(t)),a&&K(t),pt(t)}function K(t){$(t)||(t.xAxis.zoom(0,1),t.yAxis.zoom(0,1))}function Q(t){const{chart:i,data:e,xAxis:n,yAxis:o}=t,{minX:s,maxX:a,minY:l,maxY:r}=_({data:e,pixelWidth:n.width(),pixelHeight:o.height()}),d=e?.uniformScaling;i.setAll({panX:!0,panY:d,pinchZoomX:d,pinchZoomY:d,wheelX:"panX",wheelY:d?"zoomXY":"zoomX"}),n.setAll({max:a,min:s,panX:!0,panY:!1,zoomX:!0,zoomY:d}),o.setAll({max:r,min:l,panX:!1,panY:d,zoomX:d,zoomY:d})}function _({data:t,pixelWidth:i,pixelHeight:e}){if(null==t)return E;const n=t.statistics,o=0,s=n?.maxDistance;let a=n?.minElevation,l=n?.maxElevation;if(null==s||null==a||null==l)return E;const r=Math.max(s-o,R);let c=Math.max(l-a,R);const m=t.effectiveUnits;if(t.dynamicElevationRange){const t=d(r,m.distance,m.elevation);c=Math.max(c,t/p().maxChartRatio)}return a-=W*c,l=a+c+O*c,[a,l]=f(a,l,10),c=l-a,t.uniformScaling?tt({data:t,bounds:{minX:o,maxX:s,minY:a,maxY:l},pixelWidth:i,pixelHeight:e,centered:!0}):{minX:o,maxX:o+r,minY:a,maxY:a+c}}function tt({data:t,bounds:i,pixelWidth:e,pixelHeight:n,centered:o}){if(null==t)return i;let{minX:s,maxX:a,minY:l,maxY:r}=i;if(null==s||null==a||null==l||null==r)return E;const c=a-s,p=r-l,m=t.effectiveUnits,u=d(p,m.elevation,m.distance)/n/(c/e);return u>=1?[s,a]=it([s,a],u,o):[l,r]=it([l,r],1/u,o),{minX:s,maxX:a,minY:l,maxY:r}}function it([t,i],e,n){const o=(i-t)*e;if(n){const e=(t+i)/2-o/2;return[e,e+o]}return[t,t+o]}function et(t){const{chart:i,data:e,seriesInfos:n,xAxis:o,yAxis:s}=t;if(null==e||0===e.lines.length)return void i.series.clear();const a=new Map,l=new Set(i.series.values),r=e.lines.length;for(let d=0;d<r;d++){const o=e.lines[d];let s=n.get(o.id);s?(s.fill&&l.delete(s.fill),l.delete(s.line)):(s=ot(t,o),s.fill&&i.series.push(s.fill),i.series.push(s.line)),a.set(s.id,s);const c=r-d-1;s.fill?.set("layer",c),s.line.set("layer",r+c),nt(t,s,o)}t.seriesInfos=a;for(const d of l)i.series.removeValue(d);o.set("layer",r+1),s.set("layer",r+2)}function nt({theme:t},i,e){const n=F(e.color.toCss()),o=e.samples??[],s=o.length>0,{line:a,fill:l}=i;a.set("visible",s),a.set("stroke",n),l?.set("visible",s),l?.set("fill",P.lighten(n,t.seriesFillLighten)),a.data.setAll(o),l?.data.setAll(o)}function ot(t,i){const{id:e}=i,n=st(t,`${H}-${e}`);n.setAll({dy:i.chartStrokeOffsetY,tooltip:at(t)}),n.strokes.template.setAll({strokeWidth:i.chartStrokeWidth});let o=null;return i.chartFillEnabled&&(o=st(t,`${B}-${e}`),o.fills.template.setAll({fillOpacity:1,visible:!0})),{id:e,line:n,fill:o}}function st(t,i){return M.new(t.chart.root,{connect:!1,excludeFromTotal:!0,fill:void 0,id:i,stroke:void 0,valueXField:"distance",valueYField:"elevation",xAxis:t.xAxis,yAxis:t.yAxis})}function at({theme:t,chart:i}){const e=X.new(i.root,{forceHidden:!0,getFillFromSprite:!1,getLabelFillFromSprite:!1,pointerOrientation:"vertical",visible:!1}),n=t.seriesTooltipPaddingHorizontal,o=t.seriesTooltipPaddingVertical;return e.label.setAll({fill:F(t.seriesTooltipLabelColor),fontFamily:t.fontFamily,fontSize:t.seriesTooltipFontSize,paddingBottom:o,paddingLeft:n,paddingRight:n,paddingTop:o,textAlign:"start"}),e.get("background")?.setAll({stroke:void 0,fill:F(t.seriesTooltipBackgroundColor)}),e.adapters.add("dy",(i=>{const n=t.seriesTooltipSpacing,o=e.get("pointTo")?.y??0;return(i??0)+(e.y()>o?n:-n)})),e}function lt(t,i){const{xAxis:e,yAxis:n}=t,o=()=>{i(rt(e),rt(n))},s=t=>[t.on("start",o),t.on("end",o)];return bt([...s(e),...s(n)])}function rt(t){const i=Math.abs((t.get("end")??0)-(t.get("start")??0)),e=0!==i?1/i:1;return Math.abs(1-e)<c()?1:e}function dt(t,i){const{chart:e,xAxis:n,yAxis:o}=t,s=e.get("cursor"),a=e.plotContainer.events,l=i=>{t.pointerIsOver=i,pt(t)},r=()=>{l(!1),i(null,null)};return bt([s?.events.on("cursormoved",(()=>{if(!t.pointerIsOver)return;pt(t);let e=s?.getPrivate("positionX")??0,a=s?.getPrivate("positionY")??0;const l=t.data;if(null!=l&&null!=l.statistics){const{maxDistance:t,minElevation:i,maxElevation:s}=l.statistics;if(null!=t){e=ct(e,At(n),vt(n),0,t)}if(null!=i&&null!=s){a=ct(a,At(o),vt(o),i,s)}}i(e,a)})),a.on("pointerover",(()=>l(!0))),a.on("pointerout",r),a.on("blur",r)])}function ct(t,i,e,n,o){return(i+t*(e-i)-n)/(o-n)}function pt(t){const i=mt(t);if(!i)return void t.seriesInfos.forEach((t=>{t.line.get("tooltip")?.set("forceHidden",!0)}));t.seriesInfos.forEach((t=>{const e=t.line.get("tooltip");e.set("forceHidden",!1),e.label.set("text",i)}));t.xAxis.getTooltip().setAll({tooltipText:xt(t)})}function mt(t){const{data:i}=t,e=i?.lines.map((i=>({line:i,y:ht(t,i)?.elevation}))).sort(ut);return e&&0!==e.length&&null!=e[0].y?e.map((({y:i,line:e})=>ft(t,e,i))).join("\n"):null}function ut({y:t},{y:i}){return null==t?1:null==i?-1:i-t}function ft(t,i,e){const{data:n,messages:o}=t;if(null==n||null==o)return"";const s=p().formatPrecision,a=Y(o.chartTooltip,{name:u(i,o),elevation:null!=e?l(o,e,n.effectiveUnits.elevation,s):m});return`[${i.color.toHex()}]●[/] ${a}`}function xt(t){const{data:i,messages:e}=t;if(null==i||null==e)return"";const n=i.lines[0],o=n?ht(t,n):null,s=p().formatPrecision;return null!=o?l(e,o.distance,i.effectiveUnits.distance,s):"-"}function gt(t,i){const e=g.new(t.chart.root,{});return e.format=(e,n,o)=>{const{data:s,messages:a}=t;if(null==a||null==s||"string"==typeof e)return"";return`${z(e,{maximumFractionDigits:o})} ${r(a,s.effectiveUnits[i],"abbr")}`},e}function ht({chart:t,xAxis:i},n){const o=n.samples??[];if(0===o.length)return null;const s=t.get("cursor"),a=s?.getPrivate("positionX")??0,l=i.toAxisPosition(a),r=i.positionToValue(l);return e(o,r,(t=>t.distance))}function At(t){return t.positionToValue(t.get("start")??0)}function vt(t){return t.positionToValue(t.get("end")??1)}function bt(t){return n(t.map(yt))}function yt(t){return o((()=>{t?.dispose()}))}export{I as createChart,_ as getAdjustedBounds};
|
|
@@ -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{createTask as e}from"../core/asyncUtils.js";import{abortMaybe as i,destroyMaybe as s}from"../core/maybe.js";import{memoize as r}from"../core/memoize.js";import{throwIfAborted as n,createAbortError as o}from"../core/promiseUtils.js";import{watch as a,initial as l}from"../core/reactiveUtils.js";import{property as c}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as h}from"../core/accessorSupport/decorators/subclass.js";import d from"./Widget.js";import{CSS as p}from"./ElevationProfile/css.js";import u from"./ElevationProfile/ElevationProfileViewModel.js";import m from"./ElevationProfile/ElevationProfileVisibleElements.js";import{Legend as _}from"./ElevationProfile/components/Legend.js";import{SettingsButton as C}from"./ElevationProfile/components/SettingsButton.js";import{ElevationProfileErrorState as v,getConfig as f,ElevationProfileState as g}from"./ElevationProfile/support/constants.js";import{loadCalciteComponents as y}from"./support/componentsUtils.js";import{onResize as w}from"./support/widgetUtils.js";import{messageBundle as k}from"./support/decorators/messageBundle.js";import{tsx as b,tsxFragment as S}from"./support/jsxFactory.js";var M;!function(t){t.Sketch="sketch",t.SketchCancel="sketch-cancel",t.SketchDone="sketch-done",t.Select="select",t.SelectCancel="select-cancel"}(M||(M={}));const B=[{type:M.Select},{type:M.Sketch}],E={[v.None]:null,[v.NoValidInput]:"noProfile",[v.NoVisibleProfiles]:"noProfile",[v.RefinedButNoChartData]:"noProfile",[v.TooComplex]:"tooComplex",[v.UnknownError]:"unknown",[v.InvalidGeometry]:"invalidGeometry",[v.InvalidElevationInfo]:"invalidElevationInfo"},P=Symbol("resize-observer-handle");let j=class extends d{constructor(t,e){super(t,e),this.viewModel=null,this.visibleElements=new m,this.iconClass=p.widgetIcon,this.icon=null,this.messages=null,this.messagesCommon=null,this.messagesUnits=null,this._chartContainer=null,this._chart=null,this._chartInitTask=null,this._chartIsRefined=!1,this._width=0,this._zoomOutButtonVisible=!1,this._getChartUpdateParamsMemoized=r(((t,e,i,s)=>({chart:t,data:e,stationary:i,messages:s}))),this._onZoomOutButtonClick=()=>{this._chart?.zoomOut()},this._onClearButtonClick=()=>{this.viewModel.clear()},t?.viewModel||(this._defaultViewModel=new u({view:t?.view}),this.viewModel=this._defaultViewModel)}loadDependencies(){return y({action:()=>import("@esri/calcite-components/dist/components/calcite-action.js"),button:()=>import("@esri/calcite-components/dist/components/calcite-button.js"),loader:()=>import("@esri/calcite-components/dist/components/calcite-loader.js")})}postInitialize(){this.addHandles([a((()=>({container:this._chartContainer,width:this._width})),(({container:t,width:e})=>{this._destroyChart(),null!=t&&e>0&&this._initializeChart(t)}),l),a((()=>this._chartUpdateParams),(()=>this._updateChart(this._chartUpdateParams)),l)])}destroy(){this._destroyChart(),null!=this._defaultViewModel&&this.viewModel!==this._defaultViewModel&&this._defaultViewModel.destroy()}get view(){return this.viewModel.view}set view(t){this.viewModel.view=t}get input(){return this.viewModel.input}set input(t){this.viewModel.input=t}get profiles(){return this.viewModel.profiles}set profiles(t){this.viewModel.profiles=t}get unitOptions(){return this.viewModel.unitOptions}set unitOptions(t){this.viewModel.unitOptions=t}get unit(){return this.viewModel.unit}set unit(t){this.viewModel.unit=t}get geodesicDistanceThreshold(){return this.viewModel.geodesicDistanceThreshold}set geodesicDistanceThreshold(t){this.viewModel.geodesicDistanceThreshold=t}get label(){return this.messages?.widgetLabel??""}set label(t){this._overrideIfSome("label",t)}get visible(){return this.viewModel.visible}set visible(t){this.viewModel.visible=t}get _portrait(){return this._width<f().portraitModePixelBreakpoint}get _chartUpdateParams(){const t=this.view;return this._getChartUpdateParamsMemoized(this._chart,this.viewModel.chartData,null==t||t.stationary,this._chartMessages)}get _chartMessages(){return{...this.messagesUnits,...this.messages}}get _profilesArray(){return this.profiles.toArray()}render(){const{viewModel:t,visible:e}=this;return b("div",{key:this,class:this.classes({[p.base]:e,[p.esriWidget]:e,[p.esriWidgetDisabled]:e&&"disabled"===t.state,[p.portrait]:this._portrait,[p.refined]:1===t.progress}),"aria-label":this.messages.widgetLabel},b("div",{key:"content-wrapper",bind:this,afterCreate:this._onContentWrapperAfterCreate,afterRemoved:this._onContentWrapperRemoved},e&&this._renderContentForState()))}_renderContentForState(){switch(this.viewModel.state){case g.Ready:return this._renderContentForReadyState();case g.Selecting:return this._renderContentForSelectingState();case g.Creating:return this._renderContentForCreatingState();case g.Selected:return this._renderContentForSelectedState();case g.Created:return this._renderContentForCreatedState();case g.Disabled:return this._renderContentForReadyState()}}_renderContentForReadyState(){const{sketchButton:t,selectButton:e}=this.visibleElements,i=this.messages;let s;return s=t&&e?i.readyPrompt:t?i.readyPromptCreateOnly:e?i.readyPromptSelectOnly:i.errors?.noProfile,this._renderContent({prompt:s,chart:!1,actions:B})}_renderContentForSelectingState(){const t=this.view;if(null==t)return null;const e=this.messages[`selectingPrompt-${t.type}`];return this._renderContent({prompt:e,chart:!1,actions:[{type:M.SelectCancel}]})}_renderContentForCreatingState(){const{view:t,viewModel:e}=this;if(null==t)return null;const i=e.hasVertices?[{type:M.SketchCancel},{type:M.SketchDone,disabled:!e.tool.interaction.canStopCreating}]:[{type:M.Select},{type:M.Sketch,disabled:!0}];if(e.errorState===v.NoValidInput){const e=this.messages[`creatingPrompt-${t.type}`];return this._renderContent({chart:!1,actions:i,prompt:e})}const s=this._getErrorMessage();return s?this._renderContent({chart:!1,actions:i,prompt:s}):this._renderContent({chart:!0,actions:i})}_renderContentForSelectedState(){const t=this._getErrorMessage();return t?this._renderContent({chart:!1,actions:B,prompt:t}):this._renderContent({chart:!0,actions:B})}_renderContentForCreatedState(){const t=this._getErrorMessage();return t?this._renderContent({chart:!1,actions:B,prompt:t}):this._renderContent({chart:!0,actions:B})}_getErrorMessage(){const t=E[this.viewModel.errorState];return t?this.messages?.errors?.[t]:null}_renderContent(t){const e=null!=t.prompt?this._renderPrompt(t.prompt):t.chart&&this._renderChart(),{viewModel:i}=this,s=null!=i.input;return b(S,null,b("header",{key:"header",class:p.header},this._zoomOutButtonVisible&&this._renderZoomOutButton(),this.visibleElements.clearButton&&s&&this._renderClearButton(),this.visibleElements.settingsButton&&b(C,{messages:this.messages,onUniformChartScalingChange:t=>i.uniformChartScaling=t,onUnitChange:t=>i.unit=t,uniformChartScaling:i.uniformChartScaling,unit:i.unit,unitOptions:i.unitOptions,visibleElements:this.visibleElements})),b("div",{key:"main-container",class:p.mainContainer},e),this.visibleElements.legend&&b(_,{effectiveUnits:i.effectiveUnits,messages:this.messages,profiles:this._profilesArray}),this._renderActions(t))}_renderZoomOutButton(){return b("calcite-action",{appearance:"transparent",class:p.zoomOutButton,icon:"magnifying-glass-minus",key:"zoom-out",onclick:this._onZoomOutButtonClick,scale:"s",text:this.messages.zoomOut,"data-testid":"zoom-out-button"})}_renderClearButton(){return b("calcite-action",{appearance:"transparent",class:p.clearButton,icon:"trash",key:"clear-profile",onclick:this._onClearButtonClick,scale:"s",text:this.messages.clearProfile,"data-testid":"clear-button"})}_renderPrompt(t){return[b("div",{key:"prompt-container",bind:this,class:p.promptContainer},b("p",null,t))]}_renderChart(){if(!this.visibleElements.chart)return b("div",{key:"empty-chart-container",class:p.chartContainer});const t=this._chartIsRefined||this._canRenderChart();if(!t)return b(S,null,this._renderSpinner({size:"large"}),b("div",{key:"chart-container-empty",class:p.chartContainer}));const{chartData:e,progress:i}=this.viewModel;return b(S,null,null!=e&&i>0&&i<1&&this._renderSpinner({size:t?"small":"large"}),b("div",{key:"chart-container",bind:this,class:p.chartContainer,afterCreate:this._onChartContainerAfterCreate,afterRemoved:this._onChartContainerRemoved}))}_renderSpinner(t){const e="small"===t.size;return b("calcite-loader",{afterCreate:this._onSpinnerAfterCreate,class:this.classes(p.chartSpinner,e&&p.chartSpinnerSmall),exitAnimation:this._onSpinnerExit,inline:e,key:"spinner",label:"",scale:"s"})}_onSpinnerAfterCreate(t){requestAnimationFrame((()=>t.classList.add(p.chartSpinnerVisible)))}_onSpinnerExit(t,e){t.classList.remove(p.chartSpinnerVisible),setTimeout(e,200)}_canRenderChart(){const t=this.viewModel.chartData;if(null==t)return!1;if(!this.viewModel.inputIsSketched)return t.refined;let e=0;for(const{samples:i}of t.lines)e+=null!=i?i.length:0;return t.refined||e<=f().largeChartSamples}_renderActions({actions:t}){const e=t.map((t=>{switch(t.type){case M.Sketch:return this.visibleElements.sketchButton&&this._renderAction({action:t,className:p.sketchButton,label:this.messages.sketchButtonLabel,onClick:this._onSketchButtonClick,primary:!0});case M.SketchCancel:return this.visibleElements.sketchButton&&this._renderAction({action:t,onClick:this._onCancelButtonClick,className:p.sketchCancelButton,label:this.messagesCommon.cancel,primary:!1});case M.SketchDone:return this.visibleElements.sketchButton&&this._renderAction({action:t,onClick:this._onDoneButtonClick,className:p.sketchDoneButton,label:this.messagesCommon.done,primary:!0});case M.Select:return this.visibleElements.selectButton&&this._renderAction({action:t,onClick:this._onSelectButtonClick,className:p.selectButton,label:this.messages.selectButtonLabel,primary:!1});case M.SelectCancel:return this.visibleElements.selectButton&&this._renderAction({action:t,onClick:this._onCancelButtonClick,className:p.selectCancelButton,label:this.messagesCommon.cancel,primary:!1})}})).filter(Boolean);return e.length?b("footer",{key:"footer",class:p.footer},e):null}_renderAction({action:t,className:e,label:i,onClick:s,primary:r}){return b("calcite-button",{appearance:r?"solid":"outline-fill",bind:this,class:this.classes(p.actionButton,e),disabled:t.disabled,key:`action-${t.type}`,onclick:s},i)}_onSketchButtonClick(){this.viewModel.start({mode:"sketch"})}_onSelectButtonClick(){this.viewModel.start({mode:"select"})}_onCancelButtonClick(){this.viewModel.cancel()}_onDoneButtonClick(){this.viewModel.stop()}_onContentWrapperAfterCreate(t){const e=w(t,(t=>{this._width=t.contentRect.width}));this.addHandles(e,P)}_onContentWrapperRemoved(){this.removeHandles(P)}_updateChart(t){const{data:e,chart:i,messages:s,stationary:r}=t;null!=i&&null!=s&&r&&this._canRenderChart()&&(i.update(t),this._chartIsRefined=null!=e&&e.refined)}_onChartContainerAfterCreate(t){this._chartContainer=t}_onChartContainerRemoved(){this._chartContainer=null}_initializeChart(t){i(this._chartInitTask),this._chartInitTask=e((async e=>{const{createChart:i}=await import("./ElevationProfile/support/chartUtils.js");n(e);const{view:r}=this,a=await i({container:t,scheduler:"3d"===r?.type?r.resourceController?.scheduler:void 0,abortOptions:{signal:e},onRangeChange:(t,e)=>{this._zoomOutButtonVisible=1!==t||1!==e},onCursorPositionChange:t=>{this.viewModel.hoveredChartPosition=t}});if(e.aborted)throw s(a),o();this._chart=a,this._updateChart(this._chartUpdateParams)}))}_destroyChart(){this._chartInitTask=i(this._chartInitTask),this._chart=s(this._chart),this._chartIsRefined=!1}};t([c({type:u})],j.prototype,"viewModel",void 0),t([c()],j.prototype,"view",null),t([c()],j.prototype,"input",null),t([c()],j.prototype,"profiles",null),t([c()],j.prototype,"unitOptions",null),t([c()],j.prototype,"unit",null),t([c()],j.prototype,"geodesicDistanceThreshold",null),t([c({type:m,nonNullable:!0})],j.prototype,"visibleElements",void 0),t([c()],j.prototype,"iconClass",void 0),t([c()],j.prototype,"icon",void 0),t([c()],j.prototype,"label",null),t([c()],j.prototype,"visible",null),t([c(),k("esri/widgets/ElevationProfile/t9n/ElevationProfile")],j.prototype,"messages",void 0),t([c(),k("esri/t9n/common")],j.prototype,"messagesCommon",void 0),t([c(),k("esri/core/t9n/Units")],j.prototype,"messagesUnits",void 0),t([c()],j.prototype,"_chartContainer",void 0),t([c()],j.prototype,"_chart",void 0),t([c()],j.prototype,"_chartInitTask",void 0),t([c()],j.prototype,"_chartIsRefined",void 0),t([c()],j.prototype,"_width",void 0),t([c()],j.prototype,"_portrait",null),t([c()],j.prototype,"_zoomOutButtonVisible",void 0),t([c()],j.prototype,"_chartUpdateParams",null),t([c()],j.prototype,"_chartMessages",null),t([c()],j.prototype,"_profilesArray",null),j=t([h("esri.widgets.ElevationProfile")],j);const U=j;export{U as default};
|
|
5
|
+
import{_ as t}from"../chunks/tslib.es6.js";import{createTask as e}from"../core/asyncUtils.js";import{abortMaybe as i,destroyMaybe as s}from"../core/maybe.js";import{memoize as r}from"../core/memoize.js";import{throwIfAborted as n,createAbortError as o}from"../core/promiseUtils.js";import{watch as a,initial as l}from"../core/reactiveUtils.js";import{property as c}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as h}from"../core/accessorSupport/decorators/subclass.js";import d from"./Widget.js";import{CSS as p}from"./ElevationProfile/css.js";import u from"./ElevationProfile/ElevationProfileViewModel.js";import m from"./ElevationProfile/ElevationProfileVisibleElements.js";import{Legend as _}from"./ElevationProfile/components/Legend.js";import{SettingsButton as C}from"./ElevationProfile/components/SettingsButton.js";import{ElevationProfileErrorState as v,getConfig as f,ElevationProfileState as g}from"./ElevationProfile/support/constants.js";import{loadCalciteComponents as y}from"./support/componentsUtils.js";import{onResize as w}from"./support/widgetUtils.js";import{messageBundle as k}from"./support/decorators/messageBundle.js";import{tsx as b,tsxFragment as S}from"./support/jsxFactory.js";var M;!function(t){t.Sketch="sketch",t.SketchCancel="sketch-cancel",t.SketchDone="sketch-done",t.Select="select",t.SelectCancel="select-cancel"}(M||(M={}));const B=[{type:M.Select},{type:M.Sketch}],E={[v.None]:null,[v.NoValidInput]:"noProfile",[v.NoVisibleProfiles]:"noProfile",[v.RefinedButNoChartData]:"noProfile",[v.TooComplex]:"tooComplex",[v.UnknownError]:"unknown",[v.InvalidGeometry]:"invalidGeometry",[v.InvalidElevationInfo]:"invalidElevationInfo"},P=Symbol("resize-observer-handle");let j=class extends d{constructor(t,e){super(t,e),this.viewModel=null,this.visibleElements=new m,this.iconClass=p.widgetIcon,this.icon=null,this.messages=null,this.messagesCommon=null,this.messagesUnits=null,this._chartContainer=null,this._chart=null,this._chartInitTask=null,this._chartIsRefined=!1,this._width=0,this._zoomOutButtonVisible=!1,this._getChartUpdateParamsMemoized=r(((t,e,i,s)=>({chart:t,data:e,stationary:i,messages:s}))),this._onZoomOutButtonClick=()=>{this._chart?.zoomOut()},this._onClearButtonClick=()=>{this.viewModel.clear()},t?.viewModel||(this._defaultViewModel=new u({view:t?.view}),this.viewModel=this._defaultViewModel)}loadDependencies(){return y({action:()=>import("@esri/calcite-components/dist/components/calcite-action.js"),button:()=>import("@esri/calcite-components/dist/components/calcite-button.js"),loader:()=>import("@esri/calcite-components/dist/components/calcite-loader.js")})}postInitialize(){this.addHandles([a((()=>({container:this._chartContainer,width:this._width})),(({container:t,width:e})=>{this._destroyChart(),null!=t&&e>0&&this._initializeChart(t)}),l),a((()=>this._chartUpdateParams),(()=>this._updateChart(this._chartUpdateParams)),l)])}destroy(){this._destroyChart(),null!=this._defaultViewModel&&this.viewModel!==this._defaultViewModel&&this._defaultViewModel.destroy()}get view(){return this.viewModel.view}set view(t){this.viewModel.view=t}get input(){return this.viewModel.input}set input(t){this.viewModel.input=t}get profiles(){return this.viewModel.profiles}set profiles(t){this.viewModel.profiles=t}get unitOptions(){return this.viewModel.unitOptions}set unitOptions(t){this.viewModel.unitOptions=t}get unit(){return this.viewModel.unit}set unit(t){this.viewModel.unit=t}get geodesicDistanceThreshold(){return this.viewModel.geodesicDistanceThreshold}set geodesicDistanceThreshold(t){this.viewModel.geodesicDistanceThreshold=t}get label(){return this.messages?.widgetLabel??""}set label(t){this._overrideIfSome("label",t)}get visible(){return this.viewModel.visible}set visible(t){this.viewModel.visible=t}get _portrait(){return this._width<f().portraitModePixelBreakpoint}get _chartUpdateParams(){const t=this.view;return this._getChartUpdateParamsMemoized(this._chart,this.viewModel.chartData,null==t||t.stationary,this._chartMessages)}get _chartMessages(){return{...this.messagesUnits,...this.messages}}get _profilesArray(){return this.profiles.toArray()}render(){const{viewModel:t,visible:e}=this;return b("div",{key:this,class:this.classes({[p.base]:e,[p.esriWidget]:e,[p.esriWidgetDisabled]:e&&"disabled"===t.state,[p.portrait]:this._portrait,[p.refined]:1===t.progress}),"aria-label":this.messages.widgetLabel},b("div",{key:"content-wrapper",bind:this,afterCreate:this._onContentWrapperAfterCreate,afterRemoved:this._onContentWrapperRemoved},e&&this._renderContentForState()))}_renderContentForState(){switch(this.viewModel.state){case g.Ready:return this._renderContentForReadyState();case g.Selecting:return this._renderContentForSelectingState();case g.Creating:return this._renderContentForCreatingState();case g.Selected:return this._renderContentForSelectedState();case g.Created:return this._renderContentForCreatedState();case g.Disabled:return this._renderContentForReadyState()}}_renderContentForReadyState(){const{sketchButton:t,selectButton:e}=this.visibleElements,i=this.messages;let s;return s=t&&e?i.readyPrompt:t?i.readyPromptCreateOnly:e?i.readyPromptSelectOnly:i.errors?.noProfile,this._renderContent({prompt:s,chart:!1,actions:B})}_renderContentForSelectingState(){const t=this.view;if(null==t)return null;const e=this.messages[`selectingPrompt-${t.type}`];return this._renderContent({prompt:e,chart:!1,actions:[{type:M.SelectCancel}]})}_renderContentForCreatingState(){const{view:t,viewModel:e}=this;if(null==t)return null;const i=e.hasVertices?[{type:M.SketchCancel},{type:M.SketchDone,disabled:!e.tool.interaction.canStopCreating}]:[{type:M.Select},{type:M.Sketch,disabled:!0}];if(e.errorState===v.NoValidInput){const e=this.messages[`creatingPrompt-${t.type}`];return this._renderContent({chart:!1,actions:i,prompt:e})}const s=this._getErrorMessage();return s?this._renderContent({chart:!1,actions:i,prompt:s}):this._renderContent({chart:!0,actions:i})}_renderContentForSelectedState(){const t=this._getErrorMessage();return t?this._renderContent({chart:!1,actions:B,prompt:t}):this._renderContent({chart:!0,actions:B})}_renderContentForCreatedState(){const t=this._getErrorMessage();return t?this._renderContent({chart:!1,actions:B,prompt:t}):this._renderContent({chart:!0,actions:B})}_getErrorMessage(){const t=E[this.viewModel.errorState];return t?this.messages?.errors?.[t]:null}_renderContent(t){const e=null!=t.prompt?this._renderPrompt(t.prompt):t.chart&&this._renderChart(),{viewModel:i}=this,s=null!=i.input;return b(S,null,b("header",{key:"header",class:p.header},this._zoomOutButtonVisible&&this._renderZoomOutButton(),this.visibleElements.clearButton&&s&&this._renderClearButton(),this.visibleElements.settingsButton&&b(C,{messages:this.messages,onUniformChartScalingChange:t=>i.uniformChartScaling=t,onUnitChange:t=>i.unit=t,uniformChartScaling:i.uniformChartScaling,unit:i.unit,unitOptions:i.unitOptions,visibleElements:this.visibleElements})),b("div",{key:"main-container",class:p.mainContainer},e),this.visibleElements.legend&&b(_,{effectiveUnits:i.effectiveUnits,messages:this.messages,profiles:this._profilesArray}),this._renderActions(t))}_renderZoomOutButton(){return b("calcite-action",{appearance:"transparent",class:p.zoomOutButton,icon:"magnifying-glass-minus",key:"zoom-out",onclick:this._onZoomOutButtonClick,scale:"s",text:this.messages.zoomOut,"data-testid":"zoom-out-button"})}_renderClearButton(){return b("calcite-action",{appearance:"transparent",class:p.clearButton,icon:"trash",key:"clear-profile",onclick:this._onClearButtonClick,scale:"s",text:this.messages.clearProfile,"data-testid":"clear-button"})}_renderPrompt(t){return[b("div",{key:"prompt-container",bind:this,class:p.promptContainer},b("p",null,t))]}_renderChart(){if(!this.visibleElements.chart)return b("div",{key:"empty-chart-container",class:p.chartContainer});const t=this._chartIsRefined||this._canRenderChart();if(!t)return b(S,null,this._renderSpinner({size:"large"}),b("div",{key:"chart-container-empty",class:p.chartContainer}));const{chartData:e,progress:i}=this.viewModel;return b(S,null,null!=e&&i>0&&i<1&&this._renderSpinner({size:t?"small":"large"}),b("div",{key:"chart-container",bind:this,class:p.chartContainer,afterCreate:this._onChartContainerAfterCreate,afterRemoved:this._onChartContainerRemoved}))}_renderSpinner(t){const e="small"===t.size;return b("calcite-loader",{afterCreate:this._onSpinnerAfterCreate,class:this.classes(p.chartSpinner,e&&p.chartSpinnerSmall),exitAnimation:this._onSpinnerExit,inline:e,key:"spinner",label:"",scale:"s"})}_onSpinnerAfterCreate(t){requestAnimationFrame((()=>t.classList.add(p.chartSpinnerVisible)))}_onSpinnerExit(t,e){t.classList.remove(p.chartSpinnerVisible),setTimeout(e,200)}_canRenderChart(){const t=this.viewModel.chartData;if(null==t)return!1;if(!this.viewModel.inputIsSketched)return t.refined;let e=0;for(const{samples:i}of t.lines)e+=null!=i?i.length:0;return t.refined||e<=f().largeChartSamples}_renderActions({actions:t}){const e=t.map((t=>{switch(t.type){case M.Sketch:return this.visibleElements.sketchButton&&this._renderAction({action:t,className:p.sketchButton,label:this.messages.sketchButtonLabel,onClick:this._onSketchButtonClick,primary:!0});case M.SketchCancel:return this.visibleElements.sketchButton&&this._renderAction({action:t,onClick:this._onCancelButtonClick,className:p.sketchCancelButton,label:this.messagesCommon.cancel,primary:!1});case M.SketchDone:return this.visibleElements.sketchButton&&this._renderAction({action:t,onClick:this._onDoneButtonClick,className:p.sketchDoneButton,label:this.messagesCommon.done,primary:!0});case M.Select:return this.visibleElements.selectButton&&this._renderAction({action:t,onClick:this._onSelectButtonClick,className:p.selectButton,label:this.messages.selectButtonLabel,primary:!1});case M.SelectCancel:return this.visibleElements.selectButton&&this._renderAction({action:t,onClick:this._onCancelButtonClick,className:p.selectCancelButton,label:this.messagesCommon.cancel,primary:!1})}})).filter(Boolean);return e.length?b("footer",{key:"footer",class:p.footer},e):null}_renderAction({action:t,className:e,label:i,onClick:s,primary:r}){return b("calcite-button",{appearance:r?"solid":"outline-fill",bind:this,class:this.classes(p.actionButton,e),disabled:t.disabled,key:`action-${t.type}`,onclick:s},i)}_onSketchButtonClick(){this.viewModel.start({mode:"sketch"})}_onSelectButtonClick(){this.viewModel.start({mode:"select"})}_onCancelButtonClick(){this.viewModel.cancel()}_onDoneButtonClick(){this.viewModel.stop()}_onContentWrapperAfterCreate(t){const e=w(t,(t=>{this._width=t.contentRect.width}));this.addHandles(e,P)}_onContentWrapperRemoved(){this.removeHandles(P)}_updateChart(t){const{data:e,chart:i,messages:s,stationary:r}=t;null!=i&&null!=s&&r&&this._canRenderChart()&&(i.update(t),this._chartIsRefined=null!=e&&e.refined)}_onChartContainerAfterCreate(t){this._chartContainer=t}_onChartContainerRemoved(){this._chartContainer=null}_initializeChart(t){i(this._chartInitTask),this._chartInitTask=e((async e=>{const{createChart:i}=await import("./ElevationProfile/support/chartUtils.js");n(e);const r=await i({container:t,abortOptions:{signal:e},onRangeChange:(t,e)=>{this._zoomOutButtonVisible=1!==t||1!==e},onCursorPositionChange:t=>{this.viewModel.hoveredChartPosition=t}});if(e.aborted)throw s(r),o();this._chart=r,this._updateChart(this._chartUpdateParams)}))}_destroyChart(){this._chartInitTask=i(this._chartInitTask),this._chart=s(this._chart),this._chartIsRefined=!1}};t([c({type:u})],j.prototype,"viewModel",void 0),t([c()],j.prototype,"view",null),t([c()],j.prototype,"input",null),t([c()],j.prototype,"profiles",null),t([c()],j.prototype,"unitOptions",null),t([c()],j.prototype,"unit",null),t([c()],j.prototype,"geodesicDistanceThreshold",null),t([c({type:m,nonNullable:!0})],j.prototype,"visibleElements",void 0),t([c()],j.prototype,"iconClass",void 0),t([c()],j.prototype,"icon",void 0),t([c()],j.prototype,"label",null),t([c()],j.prototype,"visible",null),t([c(),k("esri/widgets/ElevationProfile/t9n/ElevationProfile")],j.prototype,"messages",void 0),t([c(),k("esri/t9n/common")],j.prototype,"messagesCommon",void 0),t([c(),k("esri/core/t9n/Units")],j.prototype,"messagesUnits",void 0),t([c()],j.prototype,"_chartContainer",void 0),t([c()],j.prototype,"_chart",void 0),t([c()],j.prototype,"_chartInitTask",void 0),t([c()],j.prototype,"_chartIsRefined",void 0),t([c()],j.prototype,"_width",void 0),t([c()],j.prototype,"_portrait",null),t([c()],j.prototype,"_zoomOutButtonVisible",void 0),t([c()],j.prototype,"_chartUpdateParams",null),t([c()],j.prototype,"_chartMessages",null),t([c()],j.prototype,"_profilesArray",null),j=t([h("esri.widgets.ElevationProfile")],j);const U=j;export{U 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{FeatureSetQueryInterceptor as i}from"../../arcade/featureset/support/FeatureSetQueryInterceptor.js";import r from"../../core/Accessor.js";import{isSome as s}from"../../core/arrayUtils.js";import{IdentifiableMixin as o}from"../../core/Identifiable.js";import n from"../../core/Logger.js";import{isAbortError as a,eachAlways as l}from"../../core/promiseUtils.js";import{watch as p,on as c,initial as d}from"../../core/reactiveUtils.js";import{throttle as u}from"../../core/throttle.js";import{property as h}from"../../core/accessorSupport/decorators/property.js";import{cast as f}from"../../core/accessorSupport/decorators/cast.js";import"../../core/has.js";import{subclass as m}from"../../core/accessorSupport/decorators/subclass.js";import _ from"../../popup/content/TextContent.js";import y from"./FeatureAttachments/FeatureAttachmentsViewModel.js";import g from"./FeatureContent/FeatureContentViewModel.js";import b from"./FeatureExpression/FeatureExpressionViewModel.js";import I from"./FeatureFields/FeatureFieldsViewModel.js";import A from"./FeatureMedia/FeatureMediaViewModel.js";import M from"./FeatureRelationship/FeatureRelationshipViewModel.js";import{createCompiledExpressions as w}from"./support/arcadeFeatureUtils.js";import{createfieldInfoMap as x,getAllFieldInfos as F,getSourceLayer as v,querySourceLayer as C,isRelatableFeatureSupportedLayer as T,substituteFieldsInLinksAndAttributes as E,isExpressionField as V,isRelatedField as j,formatEditInfo as P,graphicCallback as R,queryUpdatedFeature as L,formatAttributes as O,preLayerQueryCallback as S,preRequestCallback as k}from"./support/featureUtils.js";import{queryLayerInfos as H,queryRelatedFeatures as U,setRelatedFeatures as D,getRelatedFieldInfo as N,createRelatedInfo as q,updateRelatedInfo as B}from"./support/relatedFeatureUtils.js";var Q;const G=1,z="content-view-models",J="relationship-view-models",K={attachmentsContent:!0,chartAnimation:!0,customContent:!0,expressionContent:!0,fieldsContent:!0,mediaContent:!0,textContent:!0,relationshipContent:!0};let W=Q=class extends(o(r)){constructor(e){super(e),this._error=null,this._featureAbortController=null,this._graphicChangedThrottled=u(this._graphicChanged,G,this),this._expressionAttributes=null,this._graphicExpressionAttributes=null,this.abilities={...K},this.content=null,this.contentViewModels=[],this.description=null,this.defaultPopupTemplateEnabled=!1,this.formattedAttributes=null,this.lastEditInfo=null,this.relatedInfos=new Map,this.title="",this.view=null,this._isAllowedContentType=e=>{const{abilities:t}=this;return"attachments"===e.type&&!!t.attachmentsContent||"custom"===e.type&&!!t.customContent||"fields"===e.type&&!!t.fieldsContent||"media"===e.type&&!!t.mediaContent||"text"===e.type&&!!t.textContent||"expression"===e.type&&!!t.expressionContent||"relationship"===e.type&&!!t.relationshipContent},this.addHandles(p((()=>[this.graphic,this._effectivePopupTemplate,this.abilities]),(()=>this._graphicChangedThrottled()),d))}initialize(){this.addHandles(this._graphicChangedThrottled)}destroy(){this._clear(),this._cancelFeatureQuery(),this._error=null,this.graphic=null,this._destroyContentViewModels(),this.relatedInfos.clear()}get _effectivePopupTemplate(){return null!=this.graphic?this.graphic.getEffectivePopupTemplate(this.defaultPopupTemplateEnabled):null}get _fieldInfoMap(){return x(F(this._effectivePopupTemplate),this._sourceLayer)}get _sourceLayer(){return v(this.graphic)}castAbilities(e){return{...K,...e}}get isTable(){return this._sourceLayer?.isTable||!1}get state(){return this.graphic?this._error?"error":this.waitingForContent?"loading":"ready":"disabled"}set graphic(e){this._set("graphic",e?e.clone():null)}get spatialReference(){return this.view?.spatialReference??null}set spatialReference(e){this._override("spatialReference",e)}get map(){return this.view?.map||null}set map(e){this._override("map",e)}get waitingForContent(){return!!this._featureAbortController}setActiveMedia(e,t){const i=this.contentViewModels[e];i instanceof A&&i.setActiveMedia(t)}nextMedia(e){const t=this.contentViewModels[e];t instanceof A&&t.next()}previousMedia(e){const t=this.contentViewModels[e];t instanceof A&&t.previous()}async updateGeometry(){const{graphic:e,spatialReference:t,_sourceLayer:i}=this;await(i?.load());const r=i?.objectIdField;if(!r||!e||!i)return;const s=e?.attributes?.[r];if(null==s)return;const o=[s];if(!e.geometry){const r=await C({layer:i,graphic:e,outFields:[],objectIds:o,returnGeometry:!0,spatialReference:t}),s=r?.geometry;s&&(e.geometry=s)}}_clear(){this._set("title",""),this._set("content",null),this._set("formattedAttributes",null)}async _graphicChanged(){this._cancelFeatureQuery(),this._error=null,this._clear();const{graphic:e}=this;if(!e)return;const t=new AbortController;this._featureAbortController=t;try{await this._queryFeature({signal:t.signal})}catch(i){a(i)||(this._error=i,n.getLogger(this).error("error","The popupTemplate could not be displayed for this feature.",{error:i,graphic:e,popupTemplate:this._effectivePopupTemplate}))}this._featureAbortController===t&&(this._featureAbortController=null)}_cancelFeatureQuery(){const{_featureAbortController:e}=this;e&&e.abort(),this._featureAbortController=null}_compileContentElement(e,t){return"attachments"===e.type?this._compileAttachments(e,t):"custom"===e.type?this._compileCustom(e,t):"fields"===e.type?this._compileFields(e,t):"media"===e.type?this._compileMedia(e,t):"text"===e.type?this._compileText(e,t):"expression"===e.type?this._compileExpression(e,t):"relationship"===e.type?this._compileRelationship(e,t):void 0}_compileContent(e){if(this._destroyContentViewModels(),this.graphic)return Array.isArray(e)?e.filter(this._isAllowedContentType).map(((e,t)=>this._compileContentElement(e,t))).filter(s):"string"==typeof e?this._compileText(new _({text:e}),0).text:e}_destroyContentViewModels(){this.removeHandles(J),this.removeHandles(z),this.contentViewModels.forEach((e=>e&&!e.destroyed&&e.destroy())),this._set("contentViewModels",[])}_matchesFeature(e,t){const i=e?.graphic?.getObjectId(),r=t?.getObjectId();return null!=i&&null!=r&&i===r}_setRelatedFeaturesViewModels({relatedFeatureViewModels:e,relatedFeatures:t,map:i}){const{view:r,spatialReference:s}=this;t?.filter(Boolean).forEach((t=>{e.find((e=>this._matchesFeature(e,t)))||e.add(new Q({abilities:{relationshipContent:!1},map:i,view:r,spatialReference:s,graphic:t}))})),e.forEach((i=>{const r=t?.find((e=>this._matchesFeature(i,e)));r||e.remove(i)}))}_setExpressionContentVM(e,t){const i=this.formattedAttributes,{contentElement:r,contentElementViewModel:s}=e,o=r?.type;s&&o&&("fields"===o&&(this._createFieldsFormattedAttributes({contentElement:r,contentElementIndex:t,formattedAttributes:i}),s.set(this._createFieldsVMParams(r,t))),"media"===o&&(this._createMediaFormattedAttributes({contentElement:r,contentElementIndex:t,formattedAttributes:i}),s.set(this._createMediaVMParams(r,t))),"text"===o&&s.set(this._createTextVMParams(r)))}_compileRelationship(e,t){const{displayCount:i,orderByFields:r,relationshipId:s,title:o,description:n}=e,{_sourceLayer:a,graphic:l,map:p}=this;if(!T(a))return;const d=new M({displayCount:i,graphic:l,orderByFields:r,relationshipId:s,layer:a,map:p,...this._compileTitleAndDesc({title:o,description:n})});return this.contentViewModels[t]=d,this.addHandles(c((()=>d.relatedFeatures),"change",(()=>this._setRelatedFeaturesViewModels(d))),J),e}_compileExpression(e,t){const{expressionInfo:i}=e,{graphic:r,map:s,spatialReference:o,view:n}=this,a=new b({expressionInfo:i,graphic:r,interceptor:Q.interceptor,map:s,spatialReference:o,view:n});return this.contentViewModels[t]=a,this.addHandles(p((()=>a.contentElementViewModel),(()=>this._setExpressionContentVM(a,t)),d),z),e}_compileAttachments(e,t){const{graphic:i}=this,{description:r,title:s}=e;return this.contentViewModels[t]=new y({graphic:i,...this._compileTitleAndDesc({title:s,description:r})}),e}_compileCustom(e,t){const{graphic:i}=this,{creator:r,destroyer:s}=e;return this.contentViewModels[t]=new g({graphic:i,creator:r,destroyer:s}),e}_compileTitleAndDesc({title:e,description:t}){const{_fieldInfoMap:i,_sourceLayer:r,graphic:s,formattedAttributes:o}=this,n=s?.attributes,a=this._expressionAttributes,l=o.global;return{title:E({attributes:n,fieldInfoMap:i,globalAttributes:l,expressionAttributes:a,layer:r,text:e}),description:E({attributes:n,fieldInfoMap:i,globalAttributes:l,expressionAttributes:a,layer:r,text:t})}}_createFieldsVMParams(e,t){const i=this._effectivePopupTemplate,r=this.formattedAttributes,s={...r?.global,...r?.content[t]},o=e?.fieldInfos||i?.fieldInfos,n=o?.filter((({fieldName:e})=>V(e)||j(e)||s.hasOwnProperty(e))),a=i?.expressionInfos,{description:l,title:p}=e;return{attributes:s,expressionInfos:a,fieldInfos:n,...this._compileTitleAndDesc({title:p,description:l})}}_compileFields(e,t){const i=e.clone(),r=new I(this._createFieldsVMParams(e,t));return this.contentViewModels[t]=r,i.fieldInfos=r.formattedFieldInfos.slice(0),i}_createMediaVMParams(e,t){const{abilities:i,graphic:r,_fieldInfoMap:s,_effectivePopupTemplate:o,relatedInfos:n,_sourceLayer:a,_expressionAttributes:l}=this,p=this.formattedAttributes,c=r?.attributes??{},{description:d,mediaInfos:u,title:h}=e;return{abilities:{chartAnimation:i.chartAnimation},activeMediaInfoIndex:e.activeMediaInfoIndex||0,attributes:c,isAggregate:r?.isAggregate,layer:a,fieldInfoMap:s,formattedAttributes:{...p?.global,...p?.content[t]},expressionAttributes:l,mediaInfos:u,popupTemplate:o,relatedInfos:n,...this._compileTitleAndDesc({title:h,description:d})}}_compileMedia(e,t){const i=e.clone(),r=new A(this._createMediaVMParams(e,t));return i.mediaInfos=r.formattedMediaInfos.slice(0),this.contentViewModels[t]=r,i}_createTextVMParams(e){const{graphic:t,_fieldInfoMap:i,_sourceLayer:r,_expressionAttributes:s}=this;if(e&&e.text){const o=t?.attributes??{},n=this.formattedAttributes?.global??{};e.text=E({attributes:o,fieldInfoMap:i,globalAttributes:n,expressionAttributes:s,layer:r,text:e.text})}return{graphic:t,creator:e.text}}_compileText(e,t){const i=e.clone();return this.contentViewModels[t]=new g(this._createTextVMParams(i)),i}_compileLastEditInfo(){const{_effectivePopupTemplate:e,_sourceLayer:t,graphic:i}=this;if(!e)return;const{lastEditInfoEnabled:r}=e,s=t?.editFieldsInfo;return r&&s?P(s,i?.attributes):void 0}_compileTitle(e){const{_fieldInfoMap:t,_sourceLayer:i,graphic:r,_expressionAttributes:s}=this,o=r?.attributes??{},n=this.formattedAttributes?.global??{};return E({attributes:o,fieldInfoMap:t,globalAttributes:n,expressionAttributes:s,layer:i,text:e})}async _getTitle(){const{_effectivePopupTemplate:e,graphic:t}=this;if(!t)return null;const i=e?.title;return R(i,{graphic:t})}async _getContent(){const{_effectivePopupTemplate:e,graphic:t}=this;if(!t)return null;const i=e?.content;return R(i,{graphic:t})}async _queryFeature(e){const{_featureAbortController:t,_sourceLayer:i,graphic:r,_effectivePopupTemplate:s}=this,o=this.map,n=this.view,a=this.spatialReference;if(t!==this._featureAbortController||!r)return;await L({graphic:r,popupTemplate:s,layer:i,spatialReference:a},e);const{content:{value:p},title:{value:c}}=await l({content:this._getContent(),title:this._getTitle()}),{expressionAttributes:{value:d}}=await l({checkForRelatedFeatures:this._checkForRelatedFeatures(e),expressionAttributes:w({expressionInfos:s?.expressionInfos,spatialReference:a,graphic:r,map:o,interceptor:Q.interceptor,view:n})});t===this._featureAbortController&&r&&(this._expressionAttributes=d,this._graphicExpressionAttributes={...r.attributes,...d},this._set("formattedAttributes",this._createFormattedAttributes(p)),this._set("title",this._compileTitle(c)),this._set("lastEditInfo",this._compileLastEditInfo()||null),this._set("content",this._compileContent(p)||null))}_createMediaFormattedAttributes({contentElement:e,contentElementIndex:t,formattedAttributes:i}){const{_effectivePopupTemplate:r,graphic:s,relatedInfos:o,_sourceLayer:n,_fieldInfoMap:a,_graphicExpressionAttributes:l}=this;i.content[t]=O({fieldInfos:r?.fieldInfos,graphic:s,attributes:{...l,...e.attributes},layer:n,fieldInfoMap:a,relatedInfos:o})}_createFieldsFormattedAttributes({contentElement:e,contentElementIndex:t,formattedAttributes:i}){if(e.fieldInfos){const{graphic:r,relatedInfos:s,_sourceLayer:o,_fieldInfoMap:n,_graphicExpressionAttributes:a}=this;i.content[t]=O({fieldInfos:e.fieldInfos,graphic:r,attributes:{...a,...e.attributes},layer:o,fieldInfoMap:n,relatedInfos:s})}}_createFormattedAttributes(e){const{_effectivePopupTemplate:t,graphic:i,relatedInfos:r,_sourceLayer:s,_fieldInfoMap:o,_graphicExpressionAttributes:n}=this,a=t?.fieldInfos,l={global:O({fieldInfos:a,graphic:i,attributes:n,layer:s,fieldInfoMap:o,relatedInfos:r}),content:[]};return Array.isArray(e)&&e.forEach(((e,t)=>{"fields"===e.type&&this._createFieldsFormattedAttributes({contentElement:e,contentElementIndex:t,formattedAttributes:l}),"media"===e.type&&this._createMediaFormattedAttributes({contentElement:e,contentElementIndex:t,formattedAttributes:l})})),l}_checkForRelatedFeatures(e){const{graphic:t,_effectivePopupTemplate:i}=this;return this._queryRelatedInfos(t,F(i),e)}async _queryRelatedInfos(e,t,i){const{relatedInfos:r,_sourceLayer:s}=this;r.clear();const o=null!=s?.associatedLayer?await(s?.associatedLayer.load(i)):s;if(!o||!e)return;const n=t.filter((e=>e&&j(e.fieldName)));if(!n||!n.length)return;t.forEach((e=>this._configureRelatedInfo(e,o)));const a=await H({relatedInfos:r,layer:o},i);Object.keys(a).forEach((e=>{const t=r.get(e.toString()),i=a[e]?.value;t&&i&&(t.layerInfo=i.data)}));const l=await U({graphic:e,relatedInfos:r,layer:o},i);Object.keys(l).forEach((e=>{D(l[e]?.value,r.get(e.toString()))}))}_configureRelatedInfo(e,t){const{relatedInfos:i}=this,r=N(e.fieldName);if(!r)return;const{layerId:s,fieldName:o}=r;if(!s)return;const n=i.get(s.toString())||q(s,t);n&&(B({relatedInfo:n,fieldName:o,fieldInfo:e}),this.relatedInfos.set(s,n))}};W.interceptor=new i(S,k),e([h()],W.prototype,"_error",void 0),e([h()],W.prototype,"_featureAbortController",void 0),e([h({readOnly:!0})],W.prototype,"_effectivePopupTemplate",null),e([h({readOnly:!0})],W.prototype,"_fieldInfoMap",null),e([h({readOnly:!0})],W.prototype,"_sourceLayer",null),e([h()],W.prototype,"abilities",void 0),e([f("abilities")],W.prototype,"castAbilities",null),e([h({readOnly:!0})],W.prototype,"content",void 0),e([h({readOnly:!0})],W.prototype,"contentViewModels",void 0),e([h()],W.prototype,"description",void 0),e([h({type:Boolean})],W.prototype,"defaultPopupTemplateEnabled",void 0),e([h({readOnly:!0})],W.prototype,"isTable",null),e([h({readOnly:!0})],W.prototype,"state",null),e([h({readOnly:!0})],W.prototype,"formattedAttributes",void 0),e([h({type:t,value:null})],W.prototype,"graphic",null),e([h({readOnly:!0})],W.prototype,"lastEditInfo",void 0),e([h({readOnly:!0})],W.prototype,"relatedInfos",void 0),e([h()],W.prototype,"spatialReference",null),e([h({readOnly:!0})],W.prototype,"title",void 0),e([h()],W.prototype,"map",null),e([h({readOnly:!0})],W.prototype,"waitingForContent",null),e([h()],W.prototype,"view",void 0),W=Q=e([m("esri.widgets.FeatureViewModel")],W);const X=W;export{X as default};
|
|
5
|
+
import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../Graphic.js";import{FeatureSetQueryInterceptor as i}from"../../arcade/featureset/support/FeatureSetQueryInterceptor.js";import r from"../../core/Accessor.js";import{isSome as s}from"../../core/arrayUtils.js";import{IdentifiableMixin as o}from"../../core/Identifiable.js";import n from"../../core/Logger.js";import{isAbortError as a,eachAlways as l}from"../../core/promiseUtils.js";import{watch as p,on as c,initial as d}from"../../core/reactiveUtils.js";import{throttle as u}from"../../core/throttle.js";import{property as h}from"../../core/accessorSupport/decorators/property.js";import{cast as f}from"../../core/accessorSupport/decorators/cast.js";import"../../core/has.js";import{subclass as m}from"../../core/accessorSupport/decorators/subclass.js";import _ from"../../popup/content/TextContent.js";import y from"./FeatureAttachments/FeatureAttachmentsViewModel.js";import g from"./FeatureContent/FeatureContentViewModel.js";import b from"./FeatureExpression/FeatureExpressionViewModel.js";import I from"./FeatureFields/FeatureFieldsViewModel.js";import A from"./FeatureMedia/FeatureMediaViewModel.js";import M from"./FeatureRelationship/FeatureRelationshipViewModel.js";import{createCompiledExpressions as w}from"./support/arcadeFeatureUtils.js";import{createfieldInfoMap as x,getAllFieldInfos as v,getSourceLayer as F,querySourceLayer as C,isRelatableFeatureSupportedLayer as T,substituteFieldsInLinksAndAttributes as E,isExpressionField as V,isRelatedField as j,formatEditInfo as P,graphicCallback as R,queryUpdatedFeature as L,formatAttributes as O,preLayerQueryCallback as S,preRequestCallback as k}from"./support/featureUtils.js";import{queryLayerInfos as H,queryRelatedFeatures as U,setRelatedFeatures as Z,getRelatedFieldInfo as D,createRelatedInfo as N,updateRelatedInfo as q}from"./support/relatedFeatureUtils.js";var B;const Q=1,G="content-view-models",z="relationship-view-models",J={attachmentsContent:!0,chartAnimation:!0,customContent:!0,expressionContent:!0,fieldsContent:!0,mediaContent:!0,textContent:!0,relationshipContent:!0};let K=B=class extends(o(r)){constructor(e){super(e),this._error=null,this._featureAbortController=null,this._graphicChangedThrottled=u(this._graphicChanged,Q,this),this._expressionAttributes=null,this._graphicExpressionAttributes=null,this.abilities={...J},this.content=null,this.contentViewModels=[],this.description=null,this.defaultPopupTemplateEnabled=!1,this.formattedAttributes=null,this.lastEditInfo=null,this.relatedInfos=new Map,this.title="",this.view=null,this._isAllowedContentType=e=>{const{abilities:t}=this;return"attachments"===e.type&&!!t.attachmentsContent||"custom"===e.type&&!!t.customContent||"fields"===e.type&&!!t.fieldsContent||"media"===e.type&&!!t.mediaContent||"text"===e.type&&!!t.textContent||"expression"===e.type&&!!t.expressionContent||"relationship"===e.type&&!!t.relationshipContent},this.addHandles(p((()=>[this.graphic,this._effectivePopupTemplate,this.abilities]),(()=>this._graphicChangedThrottled()),d))}initialize(){this.addHandles(this._graphicChangedThrottled)}destroy(){this._clear(),this._cancelFeatureQuery(),this._error=null,this.graphic=null,this._destroyContentViewModels(),this.relatedInfos.clear()}get _effectivePopupTemplate(){return null!=this.graphic?this.graphic.getEffectivePopupTemplate(this.defaultPopupTemplateEnabled):null}get _fieldInfoMap(){return x(v(this._effectivePopupTemplate),this._sourceLayer)}get _sourceLayer(){return F(this.graphic)}castAbilities(e){return{...J,...e}}get isTable(){return this._sourceLayer?.isTable||!1}get state(){return this.graphic?this._error?"error":this.waitingForContent?"loading":"ready":"disabled"}set graphic(e){this._set("graphic",e?e.clone():null)}get spatialReference(){return this.view?.spatialReference??null}set spatialReference(e){this._override("spatialReference",e)}get map(){return this.view?.map||null}set map(e){this._override("map",e)}get waitingForContent(){return!!this._featureAbortController}setActiveMedia(e,t){const i=this.contentViewModels[e];i instanceof A&&i.setActiveMedia(t)}nextMedia(e){const t=this.contentViewModels[e];t instanceof A&&t.next()}previousMedia(e){const t=this.contentViewModels[e];t instanceof A&&t.previous()}async updateGeometry(){const{graphic:e,spatialReference:t,_sourceLayer:i}=this;await(i?.load());const r=i?.objectIdField;if(!r||!e||!i)return;const s=e?.attributes?.[r];if(null==s)return;const o=[s];if(!e.geometry){const r=await C({layer:i,graphic:e,outFields:[],objectIds:o,returnGeometry:!0,spatialReference:t}),s=r?.geometry;s&&(e.geometry=s)}}_clear(){this._set("title",""),this._set("content",null),this._set("formattedAttributes",null)}async _graphicChanged(){this._cancelFeatureQuery(),this._error=null,this._clear();const{graphic:e}=this;if(!e)return;const t=new AbortController;this._featureAbortController=t;try{await this._queryFeature({signal:t.signal})}catch(i){a(i)||(this._error=i,n.getLogger(this).error("error","The popupTemplate could not be displayed for this feature.",{error:i,graphic:e,popupTemplate:this._effectivePopupTemplate}))}this._featureAbortController===t&&(this._featureAbortController=null)}_cancelFeatureQuery(){const{_featureAbortController:e}=this;e&&e.abort(),this._featureAbortController=null}_compileContentElement(e,t){return"attachments"===e.type?this._compileAttachments(e,t):"custom"===e.type?this._compileCustom(e,t):"fields"===e.type?this._compileFields(e,t):"media"===e.type?this._compileMedia(e,t):"text"===e.type?this._compileText(e,t):"expression"===e.type?this._compileExpression(e,t):"relationship"===e.type?this._compileRelationship(e,t):void 0}_compileContent(e){if(this._destroyContentViewModels(),this.graphic)return Array.isArray(e)?e.filter(this._isAllowedContentType).map(((e,t)=>this._compileContentElement(e,t))).filter(s):"string"==typeof e?this._compileText(new _({text:e}),0).text:e}_destroyContentViewModels(){this.removeHandles(z),this.removeHandles(G),this.contentViewModels.forEach((e=>e&&!e.destroyed&&e.destroy())),this._set("contentViewModels",[])}_matchesFeature(e,t){const i=e?.graphic?.getObjectId(),r=t?.getObjectId();return null!=i&&null!=r&&i===r}_setRelatedFeaturesViewModels({relatedFeatureViewModels:e,relatedFeatures:t,map:i}){const{view:r,spatialReference:s}=this;t?.filter(Boolean).forEach((t=>{e.find((e=>this._matchesFeature(e,t)))||e.add(new B({abilities:{relationshipContent:!1},map:i,view:r,spatialReference:s,graphic:t}))})),e.forEach((i=>{const r=t?.find((e=>this._matchesFeature(i,e)));r||e.remove(i)}))}_setExpressionContentVM(e,t){const i=this.formattedAttributes,{contentElement:r,contentElementViewModel:s}=e,o=r?.type;s&&o&&("fields"===o&&(this._createFieldsFormattedAttributes({contentElement:r,contentElementIndex:t,formattedAttributes:i}),s.set(this._createFieldsVMParams(r,t))),"media"===o&&(this._createMediaFormattedAttributes({contentElement:r,contentElementIndex:t,formattedAttributes:i}),s.set(this._createMediaVMParams(r,t))),"text"===o&&s.set(this._createTextVMParams(r)))}_compileRelationship(e,t){const{displayCount:i,orderByFields:r,relationshipId:s,title:o,description:n}=e,{_sourceLayer:a,graphic:l,map:p}=this;if(!T(a))return;const d=new M({displayCount:i,graphic:l,orderByFields:r,relationshipId:s,layer:a,map:p,...this._compileTitleAndDesc({title:o,description:n})});return this.contentViewModels[t]=d,this.addHandles(c((()=>d.relatedFeatures),"change",(()=>this._setRelatedFeaturesViewModels(d))),z),e}_compileExpression(e,t){const{expressionInfo:i}=e,{graphic:r,map:s,spatialReference:o,view:n}=this,a=new b({expressionInfo:i,graphic:r,interceptor:B.interceptor,map:s,spatialReference:o,view:n});return this.contentViewModels[t]=a,this.addHandles(p((()=>a.contentElementViewModel),(()=>this._setExpressionContentVM(a,t)),d),G),e}_compileAttachments(e,t){const{graphic:i}=this,{description:r,title:s}=e;return this.contentViewModels[t]=new y({graphic:i,...this._compileTitleAndDesc({title:s,description:r})}),e}_compileCustom(e,t){const{graphic:i}=this,{creator:r,destroyer:s}=e;return this.contentViewModels[t]=new g({graphic:i,creator:r,destroyer:s}),e}_compileTitleAndDesc({title:e,description:t}){const{_fieldInfoMap:i,_sourceLayer:r,graphic:s,formattedAttributes:o}=this,n=s?.attributes,a=this._expressionAttributes,l=o.global;return{title:E({attributes:n,fieldInfoMap:i,globalAttributes:l,expressionAttributes:a,layer:r,text:e}),description:E({attributes:n,fieldInfoMap:i,globalAttributes:l,expressionAttributes:a,layer:r,text:t})}}_createFieldsVMParams(e,t){const i=this._effectivePopupTemplate,r=this.formattedAttributes,s={...r?.global,...r?.content[t]},o=e?.fieldInfos||i?.fieldInfos,n=o?.filter((({fieldName:e})=>V(e)||j(e)||s.hasOwnProperty(e))),a=i?.expressionInfos,{description:l,title:p}=e;return{attributes:s,expressionInfos:a,fieldInfos:n,...this._compileTitleAndDesc({title:p,description:l})}}_compileFields(e,t){const i=e.clone(),r=new I(this._createFieldsVMParams(e,t));return this.contentViewModels[t]=r,i.fieldInfos=r.formattedFieldInfos.slice(0),i}_createMediaVMParams(e,t){const{abilities:i,graphic:r,_fieldInfoMap:s,_effectivePopupTemplate:o,relatedInfos:n,_sourceLayer:a,_expressionAttributes:l}=this,p=this.formattedAttributes,c=r?.attributes??{},{description:d,mediaInfos:u,title:h}=e;return{abilities:{chartAnimation:i.chartAnimation},activeMediaInfoIndex:e.activeMediaInfoIndex||0,attributes:c,isAggregate:r?.isAggregate,layer:a,fieldInfoMap:s,formattedAttributes:{...p?.global,...p?.content[t]},expressionAttributes:l,mediaInfos:u,popupTemplate:o,relatedInfos:n,...this._compileTitleAndDesc({title:h,description:d})}}_compileMedia(e,t){const i=e.clone(),r=new A(this._createMediaVMParams(e,t));return i.mediaInfos=r.formattedMediaInfos.slice(0),this.contentViewModels[t]=r,i}_createTextVMParams(e){const{graphic:t,_fieldInfoMap:i,_sourceLayer:r,_expressionAttributes:s}=this;if(e&&e.text){const o=t?.attributes??{},n=this.formattedAttributes?.global??{};e.text=E({attributes:o,fieldInfoMap:i,globalAttributes:n,expressionAttributes:s,layer:r,text:e.text})}return{graphic:t,creator:e.text}}_compileText(e,t){const i=e.clone();return this.contentViewModels[t]=new g(this._createTextVMParams(i)),i}_compileLastEditInfo(){const{_effectivePopupTemplate:e,_sourceLayer:t,graphic:i}=this;if(!e)return;const{lastEditInfoEnabled:r}=e,s=t?.editFieldsInfo;return r&&s?P(s,i?.attributes):void 0}_compileTitle(e){const{_fieldInfoMap:t,_sourceLayer:i,graphic:r,_expressionAttributes:s}=this,o=r?.attributes??{},n=this.formattedAttributes?.global??{};return E({attributes:o,fieldInfoMap:t,globalAttributes:n,expressionAttributes:s,layer:i,text:e})}async _getTitle(){const{_effectivePopupTemplate:e,graphic:t}=this;if(!t)return null;const i=e?.title;return R(i,{graphic:t})}async _getContent(){const{_effectivePopupTemplate:e,graphic:t}=this;if(!t)return null;const i=e?.content;return R(i,{graphic:t})}async _queryFeature(e){const{_featureAbortController:t,_sourceLayer:i,graphic:r,_effectivePopupTemplate:s}=this,o=this.map,n=this.view,a=this.spatialReference;if(t!==this._featureAbortController||!r)return;await L({graphic:r,popupTemplate:s,layer:i,spatialReference:a},e);const{content:{value:p},title:{value:c}}=await l({content:this._getContent(),title:this._getTitle()}),{expressionAttributes:{value:d}}=await l({checkForRelatedFeatures:this._checkForRelatedFeatures(e),expressionAttributes:w({expressionInfos:s?.expressionInfos,spatialReference:a,graphic:r,map:o,interceptor:B.interceptor,view:n})});t===this._featureAbortController&&r&&(this._expressionAttributes=d,this._graphicExpressionAttributes={...r.attributes,...d},this._set("formattedAttributes",this._createFormattedAttributes(p)),this._set("title",this._compileTitle(c)),this._set("lastEditInfo",this._compileLastEditInfo()||null),this._set("content",this._compileContent(p)||null))}_createMediaFormattedAttributes({contentElement:e,contentElementIndex:t,formattedAttributes:i}){const{_effectivePopupTemplate:r,graphic:s,relatedInfos:o,_sourceLayer:n,_fieldInfoMap:a,_graphicExpressionAttributes:l}=this;i.content[t]=O({fieldInfos:r?.fieldInfos,graphic:s,attributes:{...l,...e.attributes},layer:n,fieldInfoMap:a,relatedInfos:o,timeZone:this.view?.timeZone??"system"})}_createFieldsFormattedAttributes({contentElement:e,contentElementIndex:t,formattedAttributes:i}){if(e.fieldInfos){const{graphic:r,relatedInfos:s,_sourceLayer:o,_fieldInfoMap:n,_graphicExpressionAttributes:a}=this;i.content[t]=O({fieldInfos:e.fieldInfos,graphic:r,attributes:{...a,...e.attributes},layer:o,fieldInfoMap:n,relatedInfos:s,timeZone:this.view?.timeZone??"system"})}}_createFormattedAttributes(e){const{_effectivePopupTemplate:t,graphic:i,relatedInfos:r,_sourceLayer:s,_fieldInfoMap:o,_graphicExpressionAttributes:n}=this,a=t?.fieldInfos,l={global:O({fieldInfos:a,graphic:i,attributes:n,layer:s,fieldInfoMap:o,relatedInfos:r,timeZone:this.view?.timeZone??"system"}),content:[]};return Array.isArray(e)&&e.forEach(((e,t)=>{"fields"===e.type&&this._createFieldsFormattedAttributes({contentElement:e,contentElementIndex:t,formattedAttributes:l}),"media"===e.type&&this._createMediaFormattedAttributes({contentElement:e,contentElementIndex:t,formattedAttributes:l})})),l}_checkForRelatedFeatures(e){const{graphic:t,_effectivePopupTemplate:i}=this;return this._queryRelatedInfos(t,v(i),e)}async _queryRelatedInfos(e,t,i){const{relatedInfos:r,_sourceLayer:s}=this;r.clear();const o=null!=s?.associatedLayer?await(s?.associatedLayer.load(i)):s;if(!o||!e)return;const n=t.filter((e=>e&&j(e.fieldName)));if(!n||!n.length)return;t.forEach((e=>this._configureRelatedInfo(e,o)));const a=await H({relatedInfos:r,layer:o},i);Object.keys(a).forEach((e=>{const t=r.get(e.toString()),i=a[e]?.value;t&&i&&(t.layerInfo=i.data)}));const l=await U({graphic:e,relatedInfos:r,layer:o},i);Object.keys(l).forEach((e=>{Z(l[e]?.value,r.get(e.toString()))}))}_configureRelatedInfo(e,t){const{relatedInfos:i}=this,r=D(e.fieldName);if(!r)return;const{layerId:s,fieldName:o}=r;if(!s)return;const n=i.get(s.toString())||N(s,t);n&&(q({relatedInfo:n,fieldName:o,fieldInfo:e}),this.relatedInfos.set(s,n))}};K.interceptor=new i(S,k),e([h()],K.prototype,"_error",void 0),e([h()],K.prototype,"_featureAbortController",void 0),e([h({readOnly:!0})],K.prototype,"_effectivePopupTemplate",null),e([h({readOnly:!0})],K.prototype,"_fieldInfoMap",null),e([h({readOnly:!0})],K.prototype,"_sourceLayer",null),e([h()],K.prototype,"abilities",void 0),e([f("abilities")],K.prototype,"castAbilities",null),e([h({readOnly:!0})],K.prototype,"content",void 0),e([h({readOnly:!0})],K.prototype,"contentViewModels",void 0),e([h()],K.prototype,"description",void 0),e([h({type:Boolean})],K.prototype,"defaultPopupTemplateEnabled",void 0),e([h({readOnly:!0})],K.prototype,"isTable",null),e([h({readOnly:!0})],K.prototype,"state",null),e([h({readOnly:!0})],K.prototype,"formattedAttributes",void 0),e([h({type:t,value:null})],K.prototype,"graphic",null),e([h({readOnly:!0})],K.prototype,"lastEditInfo",void 0),e([h({readOnly:!0})],K.prototype,"relatedInfos",void 0),e([h()],K.prototype,"spatialReference",null),e([h({readOnly:!0})],K.prototype,"title",void 0),e([h()],K.prototype,"map",null),e([h({readOnly:!0})],K.prototype,"waitingForContent",null),e([h()],K.prototype,"view",void 0),K=B=e([m("esri.widgets.FeatureViewModel")],K);const W=K;export{W as default};
|