@arcgis/core 4.27.0-next.20230320 → 4.27.0-next.20230321

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/assets/esri/core/workers/RemoteClient.js +1 -1
  2. package/assets/esri/core/workers/chunks/29ee4f14602caf6967e4.js +1 -0
  3. package/assets/esri/core/workers/chunks/{c36efbdd0a84fe851bbb.js → 433686dfda9e2ff1f98b.js} +1 -1
  4. package/assets/esri/core/workers/chunks/70ea44365021b665c213.js +1 -0
  5. package/assets/esri/core/workers/chunks/{f150bd21c3b9e098da57.js → 92951b85676df776961f.js} +56 -56
  6. package/assets/esri/core/workers/chunks/{19355af765993931a7c0.js → 9b196a726c6d175ca60f.js} +1 -1
  7. package/assets/esri/core/workers/chunks/bc002e4dff8859571a7a.js +1 -0
  8. package/assets/esri/core/workers/chunks/c5dd23d11fa91b0f318e.js +1 -0
  9. package/assets/esri/core/workers/chunks/c8f019d13f6b22481f2e.js +1 -0
  10. package/assets/esri/core/workers/chunks/f1ab86dbbd5b04e2a96c.js +1 -0
  11. package/assets/esri/themes/base/widgets/_Editor.scss +18 -0
  12. package/assets/esri/themes/base/widgets/_ItemList.scss +13 -33
  13. package/assets/esri/themes/dark/main.css +1 -1
  14. package/assets/esri/themes/light/main.css +1 -1
  15. package/assets/esri/themes/light/view.css +1 -1
  16. package/assets/esri/widgets/Editor/t9n/Editor.json +1 -1
  17. package/assets/esri/widgets/Editor/t9n/Editor_en.json +1 -1
  18. package/assets/esri/widgets/Slice/t9n/Slice_ar.json +1 -1
  19. package/assets/esri/widgets/Slice/t9n/Slice_bg.json +1 -1
  20. package/assets/esri/widgets/Slice/t9n/Slice_bs.json +1 -1
  21. package/assets/esri/widgets/Slice/t9n/Slice_ca.json +1 -1
  22. package/assets/esri/widgets/Slice/t9n/Slice_cs.json +1 -1
  23. package/assets/esri/widgets/Slice/t9n/Slice_da.json +1 -1
  24. package/assets/esri/widgets/Slice/t9n/Slice_de.json +1 -1
  25. package/assets/esri/widgets/Slice/t9n/Slice_el.json +1 -1
  26. package/assets/esri/widgets/Slice/t9n/Slice_es.json +1 -1
  27. package/assets/esri/widgets/Slice/t9n/Slice_et.json +1 -1
  28. package/assets/esri/widgets/Slice/t9n/Slice_fi.json +1 -1
  29. package/assets/esri/widgets/Slice/t9n/Slice_fr.json +1 -1
  30. package/assets/esri/widgets/Slice/t9n/Slice_he.json +1 -1
  31. package/assets/esri/widgets/Slice/t9n/Slice_hr.json +1 -1
  32. package/assets/esri/widgets/Slice/t9n/Slice_hu.json +1 -1
  33. package/assets/esri/widgets/Slice/t9n/Slice_id.json +1 -1
  34. package/assets/esri/widgets/Slice/t9n/Slice_it.json +1 -1
  35. package/assets/esri/widgets/Slice/t9n/Slice_ja.json +1 -1
  36. package/assets/esri/widgets/Slice/t9n/Slice_ko.json +1 -1
  37. package/assets/esri/widgets/Slice/t9n/Slice_lt.json +1 -1
  38. package/assets/esri/widgets/Slice/t9n/Slice_lv.json +1 -1
  39. package/assets/esri/widgets/Slice/t9n/Slice_nb.json +1 -1
  40. package/assets/esri/widgets/Slice/t9n/Slice_nl.json +1 -1
  41. package/assets/esri/widgets/Slice/t9n/Slice_pl.json +1 -1
  42. package/assets/esri/widgets/Slice/t9n/Slice_pt-BR.json +1 -1
  43. package/assets/esri/widgets/Slice/t9n/Slice_pt-PT.json +1 -1
  44. package/assets/esri/widgets/Slice/t9n/Slice_ro.json +1 -1
  45. package/assets/esri/widgets/Slice/t9n/Slice_ru.json +1 -1
  46. package/assets/esri/widgets/Slice/t9n/Slice_sk.json +1 -1
  47. package/assets/esri/widgets/Slice/t9n/Slice_sl.json +1 -1
  48. package/assets/esri/widgets/Slice/t9n/Slice_sr.json +1 -1
  49. package/assets/esri/widgets/Slice/t9n/Slice_sv.json +1 -1
  50. package/assets/esri/widgets/Slice/t9n/Slice_th.json +1 -1
  51. package/assets/esri/widgets/Slice/t9n/Slice_tr.json +1 -1
  52. package/assets/esri/widgets/Slice/t9n/Slice_uk.json +1 -1
  53. package/assets/esri/widgets/Slice/t9n/Slice_vi.json +1 -1
  54. package/assets/esri/widgets/Slice/t9n/Slice_zh-CN.json +1 -1
  55. package/assets/esri/widgets/Slice/t9n/Slice_zh-HK.json +1 -1
  56. package/assets/esri/widgets/Slice/t9n/Slice_zh-TW.json +1 -1
  57. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ar.json +1 -1
  58. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_bg.json +1 -1
  59. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_bs.json +1 -1
  60. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ca.json +1 -1
  61. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_cs.json +1 -1
  62. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_da.json +1 -1
  63. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_de.json +1 -1
  64. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_el.json +1 -1
  65. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_es.json +1 -1
  66. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_et.json +1 -1
  67. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_fi.json +1 -1
  68. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_fr.json +1 -1
  69. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_he.json +1 -1
  70. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_hr.json +1 -1
  71. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_hu.json +1 -1
  72. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_id.json +1 -1
  73. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_it.json +1 -1
  74. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ja.json +1 -1
  75. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ko.json +1 -1
  76. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_lt.json +1 -1
  77. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_lv.json +1 -1
  78. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_nb.json +1 -1
  79. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_nl.json +1 -1
  80. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_pl.json +1 -1
  81. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_pt-BR.json +1 -1
  82. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_pt-PT.json +1 -1
  83. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ro.json +1 -1
  84. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_ru.json +1 -1
  85. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_sk.json +1 -1
  86. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_sl.json +1 -1
  87. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_sr.json +1 -1
  88. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_sv.json +1 -1
  89. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_th.json +1 -1
  90. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_tr.json +1 -1
  91. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_uk.json +1 -1
  92. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_vi.json +1 -1
  93. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_zh-CN.json +1 -1
  94. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_zh-HK.json +1 -1
  95. package/assets/esri/widgets/UtilityNetworkAssociations/t9n/UtilityNetworkAssociations_zh-TW.json +1 -1
  96. package/chunks/ColorMaterial.glsl.js +16 -14
  97. package/interfaces.d.ts +1 -1
  98. package/layers/SceneLayer.js +1 -1
  99. package/layers/graphics/controllers/FeatureTileController3D.js +1 -1
  100. package/package.json +1 -1
  101. package/support/revision.js +1 -1
  102. package/views/3d/analysis/Slice/SliceTool.js +1 -1
  103. package/views/3d/analysis/Slice/sliceToolUtils.js +1 -1
  104. package/views/3d/environment/CloudsData.js +1 -1
  105. package/views/3d/environment/CloudsGenerator.js +1 -1
  106. package/views/3d/interactive/editingTools/transformGraphic/GraphicScaleRotateTransform.js +1 -1
  107. package/views/3d/interactive/editingTools/transformGraphic/GraphicTransformTool.js +1 -1
  108. package/views/3d/interactive/editingTools/transformGraphic/ScaleRotateMeshAdapter.js +1 -1
  109. package/views/3d/interactive/editingTools/transformGraphic/ScaleRotateObjectSymbol3DAdapter.js +1 -1
  110. package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
  111. package/views/3d/layers/graphics/Graphics3DExtrudeSymbolLayer.js +1 -1
  112. package/views/3d/layers/graphics/Graphics3DFeatureProcessor.js +1 -1
  113. package/views/3d/layers/graphics/Graphics3DIconSymbolLayer.js +1 -1
  114. package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
  115. package/views/3d/layers/graphics/Graphics3DObjectSymbolLayer.js +1 -1
  116. package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
  117. package/views/3d/layers/graphics/Graphics3DPolygonFillSymbolLayer.js +1 -1
  118. package/views/3d/layers/graphics/Graphics3DSymbol.js +1 -1
  119. package/views/3d/layers/graphics/Graphics3DSymbolLayer.js +1 -1
  120. package/views/3d/layers/graphics/Graphics3DWebStyleSymbol.js +1 -1
  121. package/views/3d/layers/graphics/interfaces.js +1 -1
  122. package/views/3d/layers/graphics/polygonUtils.js +1 -1
  123. package/views/3d/layers/support/FastSymbolUpdates.js +1 -1
  124. package/views/3d/support/buffer/InterleavedLayout.js +1 -1
  125. package/views/3d/support/buffer/glUtil.js +1 -1
  126. package/views/3d/support/buffer/workerHelper.js +1 -1
  127. package/views/3d/support/engineContent/line.js +1 -1
  128. package/views/3d/terrain/TerrainSurface.js +1 -1
  129. package/views/3d/webgl-engine/core/shaderLibrary/util/CloudsParallaxShading.glsl.js +2 -2
  130. package/views/3d/webgl-engine/core/shaderModules/ShaderBuilder.js +1 -1
  131. package/views/3d/webgl-engine/lib/DefaultVertexAttributeLocations.js +1 -1
  132. package/views/3d/webgl-engine/materials/ColorMaterial.js +1 -1
  133. package/views/3d/webgl-engine/materials/PatternMaterial.js +1 -1
  134. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  135. package/views/3d/webgl-engine/materials/internal/bufferWriterUtils.js +1 -1
  136. package/views/3d/webgl-engine/shaders/ColorMaterial.glsl.js +1 -1
  137. package/views/3d/webgl-engine/shaders/ColorMaterialTechnique.js +1 -1
  138. package/views/3d/webgl-engine/shaders/ColorMaterialTechniqueConfiguration.js +1 -1
  139. package/views/interactive/tooltip/TransformTooltipInfos.js +1 -1
  140. package/views/interactive/tooltip/content/TooltipContentTransformRotate.js +1 -1
  141. package/views/interactive/tooltip/content/TooltipContentTransformScale.js +1 -1
  142. package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
  143. package/widgets/Editor/CreateFeaturesWorkflowData.js +1 -1
  144. package/widgets/Editor/EditorViewModel.js +1 -1
  145. package/widgets/Editor/Upload.js +5 -0
  146. package/widgets/Editor/UploadState.js +4 -0
  147. package/widgets/Editor/workflowUtils.js +1 -1
  148. package/widgets/Editor.js +1 -1
  149. package/widgets/FeatureTemplates/ItemList.js +1 -1
  150. package/widgets/FeatureTemplates/TemplateItem.js +1 -1
  151. package/widgets/FeatureTemplates.js +1 -1
  152. package/widgets/LayerList/LayerListViewModel.js +1 -1
  153. package/widgets/ScaleBar/ScaleBarViewModel.js +1 -1
  154. package/assets/esri/core/workers/chunks/1ee774c3f29d8074da12.js +0 -1
  155. package/assets/esri/core/workers/chunks/2883a59fc1fc9e4d71af.js +0 -1
  156. package/assets/esri/core/workers/chunks/4d4cbfe72835c0460b09.js +0 -1
  157. package/assets/esri/core/workers/chunks/5bded2588008117d0c35.js +0 -1
  158. package/assets/esri/core/workers/chunks/9f02a0670ad73718d8f9.js +0 -1
  159. package/assets/esri/core/workers/chunks/ec73d16ef169adfc34fb.js +0 -1
  160. package/assets/esri/widgets/Directions/t9n/Printout.json +0 -1
  161. package/assets/esri/widgets/Directions/t9n/Printout_ar.json +0 -1
  162. package/assets/esri/widgets/Directions/t9n/Printout_bg.json +0 -1
  163. package/assets/esri/widgets/Directions/t9n/Printout_bs.json +0 -1
  164. package/assets/esri/widgets/Directions/t9n/Printout_ca.json +0 -1
  165. package/assets/esri/widgets/Directions/t9n/Printout_cs.json +0 -1
  166. package/assets/esri/widgets/Directions/t9n/Printout_da.json +0 -1
  167. package/assets/esri/widgets/Directions/t9n/Printout_de.json +0 -1
  168. package/assets/esri/widgets/Directions/t9n/Printout_el.json +0 -1
  169. package/assets/esri/widgets/Directions/t9n/Printout_en.json +0 -1
  170. package/assets/esri/widgets/Directions/t9n/Printout_es.json +0 -1
  171. package/assets/esri/widgets/Directions/t9n/Printout_et.json +0 -1
  172. package/assets/esri/widgets/Directions/t9n/Printout_fi.json +0 -1
  173. package/assets/esri/widgets/Directions/t9n/Printout_fr.json +0 -1
  174. package/assets/esri/widgets/Directions/t9n/Printout_he.json +0 -1
  175. package/assets/esri/widgets/Directions/t9n/Printout_hr.json +0 -1
  176. package/assets/esri/widgets/Directions/t9n/Printout_hu.json +0 -1
  177. package/assets/esri/widgets/Directions/t9n/Printout_id.json +0 -1
  178. package/assets/esri/widgets/Directions/t9n/Printout_it.json +0 -1
  179. package/assets/esri/widgets/Directions/t9n/Printout_ja.json +0 -1
  180. package/assets/esri/widgets/Directions/t9n/Printout_ko.json +0 -1
  181. package/assets/esri/widgets/Directions/t9n/Printout_lt.json +0 -1
  182. package/assets/esri/widgets/Directions/t9n/Printout_lv.json +0 -1
  183. package/assets/esri/widgets/Directions/t9n/Printout_nb.json +0 -1
  184. package/assets/esri/widgets/Directions/t9n/Printout_nl.json +0 -1
  185. package/assets/esri/widgets/Directions/t9n/Printout_pl.json +0 -1
  186. package/assets/esri/widgets/Directions/t9n/Printout_pt-BR.json +0 -1
  187. package/assets/esri/widgets/Directions/t9n/Printout_pt-PT.json +0 -1
  188. package/assets/esri/widgets/Directions/t9n/Printout_ro.json +0 -1
  189. package/assets/esri/widgets/Directions/t9n/Printout_ru.json +0 -1
  190. package/assets/esri/widgets/Directions/t9n/Printout_sk.json +0 -1
  191. package/assets/esri/widgets/Directions/t9n/Printout_sl.json +0 -1
  192. package/assets/esri/widgets/Directions/t9n/Printout_sr.json +0 -1
  193. package/assets/esri/widgets/Directions/t9n/Printout_sv.json +0 -1
  194. package/assets/esri/widgets/Directions/t9n/Printout_th.json +0 -1
  195. package/assets/esri/widgets/Directions/t9n/Printout_tr.json +0 -1
  196. package/assets/esri/widgets/Directions/t9n/Printout_uk.json +0 -1
  197. package/assets/esri/widgets/Directions/t9n/Printout_vi.json +0 -1
  198. package/assets/esri/widgets/Directions/t9n/Printout_zh-CN.json +0 -1
  199. package/assets/esri/widgets/Directions/t9n/Printout_zh-HK.json +0 -1
  200. package/assets/esri/widgets/Directions/t9n/Printout_zh-TW.json +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.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../chunks/tslib.es6.js";import{remove as t}from"../../core/arrayUtils.js";import{makeHandle as a,handlesGroup as i}from"../../core/handleUtils.js";import{removeMaybe as r,destroyMaybe as o}from"../../core/maybe.js";import{whenOnce as s,watch as n,syncAndInitial as l}from"../../core/reactiveUtils.js";import{generateUUID as c}from"../../core/uuid.js";import{property as d}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/has.js";import{subclass as u}from"../../core/accessorSupport/decorators/subclass.js";import{getEffectiveLayerCapabilities as h,getEffectiveEditingEnabled as p}from"../../layers/support/layerUtils.js";import{getDrawHelpMessage as f}from"../../views/draw/support/helpMessageUtils.js";import m from"../../views/interactive/snapping/FeatureSnappingLayerSource.js";import{CreateFeaturesWorkflowData as w}from"./CreateFeaturesWorkflowData.js";import g from"./Workflow.js";import{shouldShowAttachmentsForCreateWorkflow as v,startCreatingNewFeature as y,findLayerInfo as M,updateGraphicSymbolWhenRequired as _,isTerminalUpdateEventType as A,getVisualVariableAttributes as b,startUpdatingFeature as F,createWorkflowSteps as V,avoidFeatureTemplateSelectionWithOnlyOneItem as I,prepareAttachmentsForCreateWorkflow as k,visualVariableInteractiveUpdate as S}from"./workflowUtils.js";var j;const C=Symbol();let E=j=class extends g{constructor(e){super(e),this.type="create-features",this.createFeatureState="create-new",this._featureFormHandle=null,this._visualVariableAttributes={rotation:null,size:null},this._attachmentFileInfos=new Map,this._highlightHandles=new Map,this._preventDefaultActionOnCancel=!1,this._lastActiveGraphics=[]}get numPendingFeatures(){return this.data.viewModel.sketchViewModel.layer.graphics.length}get pendingFeatures(){return this.data.viewModel.sketchViewModel.layer.graphics}get reliesOnOwnerAdminPrivileges(){const{layer:e}=this.data.creationInfo,t=e.capabilities?.operations.supportsAdd,a=h(e)?.operations.supportsAdd;return p(e)&&!e.editingEnabled||!!a&&!t}get shouldShowAttachments(){return!!(this.data&&this.data.creationInfo&&this.data.viewModel)&&v(this.data)}get shouldAllowAttachmentEditing(){return this.shouldShowAttachments}get helpMessage(){if("creating-features"!==this.stepId)return;const{creationInfo:e,viewModel:t}=this.data;return f(e.layer.geometryType,t.sketchViewModel.createGraphic?.geometry)}async updatePendingFeature(e,a){return this._preventDefaultActionOnCancel=!0,this.data.viewModel.sketchViewModel.cancel(),t(this._lastActiveGraphics,e),this._startUpdating(e,a)}static create(e,t,a,i,r){const o=new j({data:new w({creationInfo:t,viewModel:e}),onCommit:async e=>{const t=e.viewModel.sketchViewModel.layer.graphics.toArray(),a=e.creationInfo.layer,s=a.capabilities?.editing.supportsGlobalId&&"globalIdField"in a,n=o._attachmentFileInfos;if(0===n.size)return void await i(a,{addFeatures:t});if(s){const e=o._getAttachmentEditsWithGlobalIds(t,a,n),r="addAttachments"in e?{globalIdUsed:!0}:void 0;return void await i(a,e,r)}const{addFeatureResults:l}=await i(a,{addFeatures:t}),c=o._getAddAttachmentsData(t,l,a,n);await r(a,c)}});return o._set("steps",this._createWorkflowSteps(o,a)),o}_fadeExistingFeatures(e){if("effect"in e){const t=e.effect;return e.effect="saturate(0.6) opacity(0.8)",a((()=>e.effect=t))}const t=e.opacity;return e.opacity=.7,a((()=>e.opacity=t))}_highlight(e){const t=this.data.viewModel.view;"3d"===t?.type&&this._highlightHandles.set(e,t.highlight(e))}_removeHighlight(e){r(this._highlightHandles.get(e)),this._highlightHandles.delete(e)}async _startCreating(e){return this.createFeatureState="create-new",y(this.data.viewModel.sketchViewModel,this.data.creationInfo,e)}async _startUpdating(e,t){const{featureFormViewModel:a,layerInfos:o,sketchViewModel:s,view:n}=this.data.viewModel;if(!n)return;const l=this.data.creationInfo.layer,c=M(o,l),d=c?.formTemplate,u=n.spatialReference;return a.set({arcadeEditType:"INSERT",feature:e,formTemplate:d,spatialReference:u,view:n}),r(this._featureFormHandle),this._featureFormHandle=i([a.on("value-change",(async()=>{e.attributes=a.getValues(),await _(e,t)})),s.on(["update","undo","redo"],(e=>{("undo"===e.type||"redo"===e.type||"update"===e.type&&null!=e.toolEventInfo&&A(e.toolEventInfo.type))&&a.notifyFeatureGeometryChanged()}))]),this._removeHighlight(e),this.createFeatureState="update-pending",this._visualVariableAttributes=b(e),F(s,e,l,this._visualVariableAttributes,t)}static _createWorkflowSteps(e,i="awaiting-feature-creation-info"){const{data:c,handles:d}=e;let u=null,h=!0;const p=new Map,f=V(["awaiting-feature-creation-info","creating-features","adding-attachment","editing-attachment"],i,{"awaiting-feature-creation-info":()=>({id:"awaiting-feature-creation-info",async setUp(){c.creationInfo=null,d.add(c.viewModel.featureTemplatesViewModel.on("select",(({item:e})=>{e&&(c.creationInfo=e,c.viewModel.activeWorkflow?.next())})),this.id)},async tearDown(){d.remove(this.id)}}),"creating-features":()=>({id:"creating-features",async setUp(){if(d.has(this.id))return;const i=c.viewModel.view;if(!i)return;const f=c.viewModel.sketchViewModel;h=f.updateOnGraphicClick,f.updateOnGraphicClick=!1,e._lastActiveGraphics=[],e._featureFormHandle=r(e._featureFormHandle),e._visualVariableAttributes={rotation:null,size:null},k(c.viewModel.attachmentsViewModel);const w="2d"===i.type?e._fadeExistingFeatures(c.creationInfo.layer):null,g=f.on("create",(async t=>{if("cancel"===t.state){if(e._preventDefaultActionOnCancel)return void(e._preventDefaultActionOnCancel=!1);if(e._lastActiveGraphics.length<1)return e._startCreating(p);const t=e._lastActiveGraphics.pop();return e._startUpdating(t,p)}if("complete"===t.state&&t.graphic)return e._startUpdating(t.graphic,p)})),v=f.on("update",(async t=>{const r=t.graphics[0];if("complete"===t.state){if(r!==u&&(e._lastActiveGraphics.push(r),e._highlight(r)),u=null,"add"!==c.viewModel.attachmentsViewModel.mode&&"edit"!==c.viewModel.attachmentsViewModel.mode||c.viewModel.activeWorkflow?.previous(),t.aborted&&e._preventDefaultActionOnCancel)return void(e._preventDefaultActionOnCancel=!1);const o=i.cursor;return i.cursor="progress",d.add([a((()=>i.cursor=o)),i.on("click",(e=>e.preventDefault()))],C),s((()=>!c.viewModel.featureFormViewModel.updating)).then((()=>{d.remove(C),e._startCreating(p)}))}if("start"===t.state){e._removeHighlight(r);const t=c.viewModel.attachmentsViewModel;"add"!==t.mode&&"edit"!==t.mode||c.viewModel.activeWorkflow?.previous(),t.fileInfos.removeAll(),t.graphic=r,t.mode="view";(e._attachmentFileInfos.get(r)||[]).forEach((({file:e,form:a})=>t.addFile(e,a)))}await S(i,r,t,e._visualVariableAttributes,p);const o=r.attributes;if(null!=e._visualVariableAttributes.rotation){const{field:t}=e._visualVariableAttributes.rotation;c.viewModel.featureFormViewModel.setValue(t,o[t])}if(null!=e._visualVariableAttributes.size){const{field:t}=e._visualVariableAttributes.size;c.viewModel.featureFormViewModel.setValue(t,o[t])}})),y=f.on("delete",(async a=>{const i=a.graphics[0];t(e._lastActiveGraphics,i),u=i}));let M=null;const _=n((()=>{const e=f.snappingOptions.featureSources.find((e=>e.layer===c.creationInfo.layer));return{hasFeatureLayerSource:!!e,enabled:e?.enabled??!1}}),(({hasFeatureLayerSource:e,enabled:t})=>{const a=f.snappingOptions.featureSources;e?(null==M&&(M=new m({layer:f.layer,enabled:t}),a.add(M)),M.enabled=t):(null!=M&&a.remove(M),M=o(M))}),l),A=i.on("immediate-click",(async t=>{const{results:a}=await i.hitTest(t,{include:f.layer}),r=a.find((e=>"graphic"===e.type));if(r){const t=r.graphic;if("transform"===f.activeTool||"reshape"===f.activeTool){if(f.updateGraphics.getItemAt(0)===t)return;await e.updatePendingFeature(t,p)}}})),b=n((()=>c.viewModel.attachmentsViewModel.mode),(e=>{"add"===e&&c.viewModel.activeWorkflow.go("adding-attachment"),"edit"===e&&c.viewModel.activeWorkflow.go("editing-attachment")}));await e._startCreating(p);const F={remove:()=>{r(e._featureFormHandle),g.remove(),v.remove(),y.remove(),_.remove(),null!=M&&f.snappingOptions.featureSources.remove(M),M=o(M),f.cancel(),A.remove(),b.remove(),r(w)}};d.add(F,this.id)},async tearDown(t){t.cancelled&&(c.viewModel.sketchViewModel.layer.removeAll(),d.remove([this.id,C]),c.viewModel.attachmentsViewModel.fileInfos.removeAll(),e._attachmentFileInfos.clear(),c.viewModel.sketchViewModel.updateOnGraphicClick=h)}}),"adding-attachment":()=>({id:"adding-attachment",parent:"creating-features",async setUp(){},async tearDown(){const{graphic:t,fileInfos:a}=c.viewModel.attachmentsViewModel;e._attachmentFileInfos.set(t,a.toArray()),c.viewModel.attachmentsViewModel.mode="view"}}),"editing-attachment":()=>({id:"editing-attachment",parent:"creating-features",async setUp(){},async tearDown(){const{graphic:t,fileInfos:a}=c.viewModel.attachmentsViewModel;e._attachmentFileInfos.set(t,a.toArray()),c.viewModel.attachmentsViewModel.mode="view"}})});return I(c,f)}_getAddAttachmentsData(e,t,a,i){const r=[];return t.forEach(((t,o)=>{if(!t.error){const s=e[o],n=i.get(s)||[];s.attributes[a.objectIdField]=t.objectId,n.forEach((({form:e})=>r.push({feature:s,attachment:e})))}})),r}_getAttachmentEditsWithGlobalIds(e,t,a){const i=[],r=t.globalIdField;return e.forEach(((t,o)=>{const s=a.get(t)||[];let n=t.attributes[r];null==n&&(n=c(),e[o].attributes[r]=n),s.forEach((({file:e})=>i.push({feature:t,attachment:{globalId:c(),data:e}})))})),i.length?{addFeatures:e,addAttachments:i}:{addFeatures:e}}};e([d()],E.prototype,"reliesOnOwnerAdminPrivileges",null),e([d()],E.prototype,"shouldShowAttachments",null),e([d()],E.prototype,"shouldAllowAttachmentEditing",null),e([d()],E.prototype,"helpMessage",null),E=j=e([u("esri.widgets.Editor.CreateFeaturesWorkflow")],E);const G=E;export{G as default};
5
+ import{_ as e}from"../../chunks/tslib.es6.js";import{remove as t}from"../../core/arrayUtils.js";import{makeHandle as a,handlesGroup as i}from"../../core/handleUtils.js";import{removeMaybe as r,destroyMaybe as o}from"../../core/maybe.js";import{watch as s,whenOnce as n,syncAndInitial as l}from"../../core/reactiveUtils.js";import{generateUUID as c}from"../../core/uuid.js";import{property as d}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/has.js";import{subclass as u}from"../../core/accessorSupport/decorators/subclass.js";import{getEffectiveLayerCapabilities as h,getEffectiveEditingEnabled as p}from"../../layers/support/layerUtils.js";import{getDrawHelpMessage as f}from"../../views/draw/support/helpMessageUtils.js";import m from"../../views/interactive/snapping/FeatureSnappingLayerSource.js";import{CreateFeaturesWorkflowData as w}from"./CreateFeaturesWorkflowData.js";import g from"./Upload.js";import v from"./Workflow.js";import{shouldShowAttachmentsForCreateWorkflow as y,startCreatingNewFeature as M,findLayerInfo as _,updateGraphicSymbolWhenRequired as A,isTerminalUpdateEventType as b,getVisualVariableAttributes as F,startUpdatingFeature as I,createWorkflowSteps as V,avoidFeatureTemplateSelectionWithOnlyOneItem as k,prepareAttachmentsForCreateWorkflow as S,visualVariableInteractiveUpdate as j}from"./workflowUtils.js";var C;const E=Symbol();let G=C=class extends v{constructor(e){super(e),this.type="create-features",this.createFeatureState="create-new",this._featureFormHandle=null,this._visualVariableAttributes={rotation:null,size:null},this._attachmentFileInfos=new Map,this._highlightHandles=new Map,this._preventDefaultActionOnCancel=!1,this._lastActiveGraphics=[]}get numPendingFeatures(){return this.data.viewModel.sketchViewModel.layer.graphics.length}get pendingFeatures(){return this.data.viewModel.sketchViewModel.layer.graphics}get reliesOnOwnerAdminPrivileges(){const{creationInfo:e}=this.data;if(!e)return!1;const{layer:t}=e,a=t.capabilities?.operations.supportsAdd,i=h(t)?.operations.supportsAdd;return p(t)&&!t.editingEnabled||!!i&&!a}get shouldShowAttachments(){return!!(this.data&&this.data.creationInfo&&this.data.viewModel)&&y(this.data)}get shouldAllowAttachmentEditing(){return this.shouldShowAttachments}get helpMessage(){const{creationInfo:e,viewModel:t}=this.data;if("creating-features"===this.stepId&&e)return f(e.layer.geometryType,t.sketchViewModel.createGraphic?.geometry)}async updatePendingFeature(e,a){return this._preventDefaultActionOnCancel=!0,this.data.viewModel.sketchViewModel.cancel(),t(this._lastActiveGraphics,e),this._startUpdating(e,a)}static create(e,t,a,i,r){const o=new C({data:new w({creationInfo:t,viewModel:e}),onCommit:async e=>{const{creationInfo:t,viewModel:a}=e;if(!t)return;const s=a.sketchViewModel.layer.graphics.toArray(),n=t.layer,l=n.capabilities?.editing.supportsGlobalId&&"globalIdField"in n,c=o._attachmentFileInfos;if(0===c.size)return void await i(n,{addFeatures:s});if(l){const e=o._getAttachmentEditsWithGlobalIds(s,n,c),t="addAttachments"in e?{globalIdUsed:!0}:void 0;return void await i(n,e,t)}const{addFeatureResults:d}=await i(n,{addFeatures:s}),u=o._getAddAttachmentsData(s,d,n,c);await r(n,u)}});return o._set("steps",this._createWorkflowSteps(o,a)),o}_fadeExistingFeatures(e){if("effect"in e){const t=e.effect;return e.effect="saturate(0.6) opacity(0.8)",a((()=>e.effect=t))}const t=e.opacity;return e.opacity=.7,a((()=>e.opacity=t))}_highlight(e){const t=this.data.viewModel.view;"3d"===t?.type&&this._highlightHandles.set(e,t.highlight(e))}_removeHighlight(e){r(this._highlightHandles.get(e)),this._highlightHandles.delete(e)}async _startCreating(e){const{creationInfo:t}=this.data;if(t)return this.createFeatureState="create-new",M(this.data.viewModel.sketchViewModel,t,e)}async _startUpdating(e,t){const{creationInfo:a,viewModel:o}=this.data,{featureFormViewModel:s,layerInfos:n,sketchViewModel:l,view:c}=o;if(!c||!a)return;const d=a.layer,u=_(n,d),h=u?.formTemplate,p=c.spatialReference;return s.set({arcadeEditType:"INSERT",feature:e,formTemplate:h,spatialReference:p,view:c}),r(this._featureFormHandle),this._featureFormHandle=i([s.on("value-change",(async()=>{e.attributes=s.getValues(),await A(e,t)})),l.on(["update","undo","redo"],(e=>{("undo"===e.type||"redo"===e.type||"update"===e.type&&null!=e.toolEventInfo&&b(e.toolEventInfo.type))&&s.notifyFeatureGeometryChanged()}))]),this._removeHighlight(e),this.createFeatureState="update-pending",this._visualVariableAttributes=F(e),I(l,e,d,this._visualVariableAttributes,t)}static _createWorkflowSteps(e,i="awaiting-feature-creation-info"){const{data:c,handles:d}=e;let u=null,h=!0;const p=new Map,f=V(["awaiting-feature-creation-info","creating-features","adding-attachment","editing-attachment"],i,{"awaiting-feature-creation-info":()=>({id:"awaiting-feature-creation-info",async setUp(){const{creationInfo:t}=c;if("scene"===t?.layer?.type){const a=null!=t.geometryToPlace;if(t.geometryToPlace=null,a)return c.viewModel.cancelWorkflow();const i=new g;c.upload=i,i.start(),d.add(s((()=>i.state),(a=>{switch(a){case"success":t.geometryToPlace=i.result,e.next();break;case"error":case"cancelled":c.viewModel.cancelWorkflow()}})),this.id)}else c.creationInfo=null,d.add(c.viewModel.featureTemplatesViewModel.on("select",(({item:e})=>{e&&(c.creationInfo=e,c.viewModel.activeWorkflow?.next())})),this.id)},async tearDown(){c.upload?.destroy(),c.upload=null,d.remove(this.id)}}),"creating-features":()=>({id:"creating-features",async setUp(){if(d.has(this.id))return;const i=c.viewModel.view;if(!i)return;const f=c.viewModel.sketchViewModel;h=f.updateOnGraphicClick,f.updateOnGraphicClick=!1,e._lastActiveGraphics=[],e._featureFormHandle=r(e._featureFormHandle),e._visualVariableAttributes={rotation:null,size:null},S(c.viewModel.attachmentsViewModel);const w="2d"===i.type&&c.creationInfo?e._fadeExistingFeatures(c.creationInfo.layer):null,g=f.on("create",(async t=>{if("cancel"===t.state){if(e._preventDefaultActionOnCancel)return void(e._preventDefaultActionOnCancel=!1);if(e._lastActiveGraphics.length<1)return e._startCreating(p);const t=e._lastActiveGraphics.pop();return e._startUpdating(t,p)}if("complete"===t.state&&t.graphic)return e._startUpdating(t.graphic,p)})),v=f.on("update",(async t=>{const r=t.graphics[0];if("complete"===t.state){if(r!==u&&(e._lastActiveGraphics.push(r),e._highlight(r)),u=null,"add"!==c.viewModel.attachmentsViewModel.mode&&"edit"!==c.viewModel.attachmentsViewModel.mode||c.viewModel.activeWorkflow?.previous(),t.aborted&&e._preventDefaultActionOnCancel)return void(e._preventDefaultActionOnCancel=!1);const o=i.cursor;return i.cursor="progress",d.add([a((()=>i.cursor=o)),i.on("click",(e=>e.preventDefault()))],E),n((()=>!c.viewModel.featureFormViewModel.updating)).then((()=>{d.remove(E),e._startCreating(p)}))}if("start"===t.state){e._removeHighlight(r);const t=c.viewModel.attachmentsViewModel;"add"!==t.mode&&"edit"!==t.mode||c.viewModel.activeWorkflow?.previous(),t.fileInfos.removeAll(),t.graphic=r,t.mode="view";(e._attachmentFileInfos.get(r)||[]).forEach((({file:e,form:a})=>t.addFile(e,a)))}await j(i,r,t,e._visualVariableAttributes,p);const o=r.attributes;if(null!=e._visualVariableAttributes.rotation){const{field:t}=e._visualVariableAttributes.rotation;c.viewModel.featureFormViewModel.setValue(t,o[t])}if(null!=e._visualVariableAttributes.size){const{field:t}=e._visualVariableAttributes.size;c.viewModel.featureFormViewModel.setValue(t,o[t])}})),y=f.on("delete",(async a=>{const i=a.graphics[0];t(e._lastActiveGraphics,i),u=i}));let M=null;const _=s((()=>{const e=f.snappingOptions.featureSources.find((e=>e.layer===c.creationInfo?.layer));return{hasFeatureLayerSource:!!e,enabled:e?.enabled??!1}}),(({hasFeatureLayerSource:e,enabled:t})=>{const a=f.snappingOptions.featureSources;e?(null==M&&(M=new m({layer:f.layer,enabled:t}),a.add(M)),M.enabled=t):(null!=M&&a.remove(M),M=o(M))}),l),A=i.on("immediate-click",(async t=>{const{results:a}=await i.hitTest(t,{include:f.layer}),r=a.find((e=>"graphic"===e.type));if(r){const t=r.graphic;if("transform"===f.activeTool||"reshape"===f.activeTool){if(f.updateGraphics.getItemAt(0)===t)return;await e.updatePendingFeature(t,p)}}})),b=s((()=>c.viewModel.attachmentsViewModel.mode),(e=>{"add"===e&&c.viewModel.activeWorkflow.go("adding-attachment"),"edit"===e&&c.viewModel.activeWorkflow.go("editing-attachment")}));await e._startCreating(p);const F={remove:()=>{r(e._featureFormHandle),g.remove(),v.remove(),y.remove(),_.remove(),null!=M&&f.snappingOptions.featureSources.remove(M),M=o(M),f.cancel(),A.remove(),b.remove(),r(w)}};d.add(F,this.id)},async tearDown(t){t.cancelled&&(c.viewModel.sketchViewModel.layer.removeAll(),d.remove([this.id,E]),c.viewModel.attachmentsViewModel.fileInfos.removeAll(),e._attachmentFileInfos.clear(),c.viewModel.sketchViewModel.updateOnGraphicClick=h)}}),"adding-attachment":()=>({id:"adding-attachment",parent:"creating-features",async setUp(){},async tearDown(){const{graphic:t,fileInfos:a}=c.viewModel.attachmentsViewModel;e._attachmentFileInfos.set(t,a.toArray()),c.viewModel.attachmentsViewModel.mode="view"}}),"editing-attachment":()=>({id:"editing-attachment",parent:"creating-features",async setUp(){},async tearDown(){const{graphic:t,fileInfos:a}=c.viewModel.attachmentsViewModel;e._attachmentFileInfos.set(t,a.toArray()),c.viewModel.attachmentsViewModel.mode="view"}})});return k(c,f)}_getAddAttachmentsData(e,t,a,i){const r=[];return t.forEach(((t,o)=>{if(!t.error){const s=e[o],n=i.get(s)||[];s.attributes[a.objectIdField]=t.objectId,n.forEach((({form:e})=>r.push({feature:s,attachment:e})))}})),r}_getAttachmentEditsWithGlobalIds(e,t,a){const i=[],r=t.globalIdField;return e.forEach(((t,o)=>{const s=a.get(t)||[];let n=t.attributes[r];null==n&&(n=c(),e[o].attributes[r]=n),s.forEach((({file:e})=>i.push({feature:t,attachment:{globalId:c(),data:e}})))})),i.length?{addFeatures:e,addAttachments:i}:{addFeatures:e}}};e([d()],G.prototype,"reliesOnOwnerAdminPrivileges",null),e([d()],G.prototype,"shouldShowAttachments",null),e([d()],G.prototype,"shouldAllowAttachmentEditing",null),e([d()],G.prototype,"helpMessage",null),G=C=e([u("esri.widgets.Editor.CreateFeaturesWorkflow")],G);const O=G;export{O 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.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as o}from"../../chunks/tslib.es6.js";import r from"../../core/Accessor.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 e}from"../../core/accessorSupport/decorators/subclass.js";let t=class extends r{constructor(o){super(o),this.creationInfo=null,this.viewModel=null}};o([s()],t.prototype,"creationInfo",void 0),o([s()],t.prototype,"viewModel",void 0),t=o([e("esri.widgets.Editor.CreateFeaturesWorkflowData")],t);export{t as CreateFeaturesWorkflowData};
5
+ import{_ as o}from"../../chunks/tslib.es6.js";import r from"../../core/Accessor.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 e}from"../../core/accessorSupport/decorators/subclass.js";let t=class extends r{constructor(o){super(o),this.creationInfo=null,this.viewModel=null,this.upload=null}};o([s()],t.prototype,"creationInfo",void 0),o([s()],t.prototype,"viewModel",void 0),o([s()],t.prototype,"upload",void 0),t=o([e("esri.widgets.Editor.CreateFeaturesWorkflowData")],t);export{t as CreateFeaturesWorkflowData};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/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{HandleOwnerMixin as o}from"../../core/HandleOwner.js";import n from"../../core/Logger.js";import{abortMaybe as l}from"../../core/maybe.js";import{watch as d,on as p,when as c,whenOnce as u,initial as h}from"../../core/reactiveUtils.js";import{property as w}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as f}from"../../core/accessorSupport/decorators/subclass.js";import m from"../../layers/GraphicsLayer.js";import{getOwningPortalUrl as y,getEffectiveLayerCapabilities as k}from"../../layers/support/layerUtils.js";import{parseKnownArcGISOnlineDomain as g}from"../../portal/support/urlUtils.js";import v from"../Attachments/AttachmentsViewModel.js";import b from"./CreateFeaturesWorkflow.js";import _ from"./CreateWorkflow.js";import{workflowDeprecation as W}from"./deprecationUtils.js";import C from"./UpdateWorkflow.js";import{whenEditorLayerView as F}from"./workflowUtils.js";import E from"../FeatureForm/FeatureFormViewModel.js";import I from"../FeatureTemplates/FeatureTemplatesViewModel.js";import O from"../Sketch/SketchViewModel.js";import U from"../Spinner/SpinnerViewModel.js";const A="esri.widgets.Editor.EditorViewModel",V=n.getLogger(A),M=["create","create-features","update"];function j(t,e,a){V.error(new i(t,e,a))}function S(t,e){return t?t.find((t=>t.layer===e)):void 0}let T=class extends(o(s.EventedAccessor)){constructor(t){super(t),this._sketchGraphicsLayer=new m({listMode:"hide",internal:!0}),this._updateEditableItemsTask=null,this.activeWorkflow=null,this._activityQueue=[],this.editableItems=new a,this.failures=[],this.attachmentsViewModel=new v({abilities:{editing:!0}}),this.featureFormViewModel=new E,this.featureTemplatesViewModel=new I,this.sketchViewModel=new O({layer:this._sketchGraphicsLayer}),this.spinnerViewModel=new U,this.pageStack=[],this.showDiscardPrompt=()=>Promise.resolve(),this._candidateCommitted=!1,this.back=async()=>{const t=this.activeWorkflow;if(t&&this.canGoBack){if(this.hasPendingEdits)try{await this.showDiscardPrompt()}catch(e){return}t.hasPreviousStep?await t.previous({cancelCurrentStep:!0}):await this.cancelWorkflow({force:!0})}},this.save=()=>{const{featureFormViewModel:t}=this;t.submit(),!t.submittable||t.validateContingencyConstraints(t.getValues(),{includeIncompleteViolations:!0}).length>0||this.activeWorkflow?.commit()},this.selectFeature=(t,e=!1)=>{const a=this.activeWorkflow;this._candidateCommitted||"update"!==a?.type||(a.data.edits.feature=t,e&&(a.next(),this._candidateCommitted=!0))}}initialize(){this.handles.add([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"))),c((()=>this.view?.map),(t=>{t.add(this._sketchGraphicsLayer)}),h),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.slice(),r=a.indexOf(t);-1===r&&e?a.push(e):a.splice(r),this.pageStack=a})),c((()=>"awaiting-update-feature-candidate"===this.state),(()=>this._candidateCommitted=!1))])}destroy(){this._cancelWorkflow().then((()=>{this.view?.map&&this.view.map.remove(this._sketchGraphicsLayer),this.view=null})),this._updateEditableItemsTask=l(this._updateEditableItemsTask)}get allowedWorkflows(){return this._get("allowedWorkflows")}set allowedWorkflows(t){t&&0!==t.length||(t=[...M]),this._set("allowedWorkflows",t)}get canCreate(){return this.editableItems.some((t=>t.supports.includes("create")))}get canUpdate(){return this.editableItems.some((t=>t.supports.includes("update")||t.supports.includes("delete")||t.attachmentsOnUpdateEnabled))}get labelOptions(){return this.sketchViewModel.labelOptions}set labelOptions(t){this.sketchViewModel.labelOptions=t}set layerInfos(t){t?.some((t=>("allowAttachments"in t&&r(V,"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.get("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}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"awaiting-feature-to-update"===e||"awaiting-feature-to-create"===e||"create-features"===t?.type&&0===t.pendingFeatures.length?"ready":e??"disabled"}get selectedTemplateItem(){const{activeWorkflow:t}=this;if("create-features"===t?.type&&0===t.pendingFeatures.length){const{template:e}=t.data.creationInfo;for(const t of this.featureTemplatesViewModel.items)if("findByTemplate"in t){const a=t.findByTemplate(e);if(a)return a}else if(t.template===e)return t}}get featureFormDisabled(){const{activeWorkflow:t}=this;return"update"===t?.type&&!1===t?.data.editableItem?.attributeUpdatesEnabled}get canGoBack(){return null!=this.activeWorkflow&&!this.syncing}get shouldShowDeleteButton(){const{activeWorkflow:t}=this;return!!t&&"update"===t.type&&t.data.editableItem.supports.includes("delete")}get hasPendingEdits(){const{activeWorkflow:t}=this;return!!t&&("create"===t.type||"create-features"===t.type&&t.numPendingFeatures>0||"editing-existing-feature"===t.stepId&&t.data.edits.modified)}async startCreateWorkflowAtFeatureTypeSelection(){if(W(V,"startCreateWorkflowAtFeatureTypeSelection","startCreateFeaturesWorkflowAtFeatureTypeSelection"),await u((()=>!this.updating)),!this.canCreate)return void j("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(W(V,"startCreateWorkflowAtFeatureCreation","startCreateFeaturesWorkflowAtFeatureCreation"),await u((()=>!this.updating)),!this.canCreate)return void j("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(W(V,"startCreateWorkflowAtFeatureEdit"),await u((()=>!this.updating)),!this.canCreate)return void j("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 startUpdateWorkflowAtFeatureSelection(){if(await u((()=>!this.updating)),!this.canUpdate)return void j("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 j("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 j("editing:unsupported-workflow","Update workflow is unsupported or disabled.");await this._cancelWorkflow();const e=this._createUpdateWorkflow("editing-existing-feature");e.data.edits.feature=t,await e.start(),this._set("activeWorkflow",e)}async deleteFeatureFromWorkflow(){const{activeWorkflow:t}=this;t&&"update"===t.type?(await this._delete(t.data.edits.feature),await t.reset()):j("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))}refreshCreationTemplates(){const t=[];for(const{layer:e,supports:a}of this.editableItems)e.loaded&&a.includes("create")&&t.push(e);this.featureTemplatesViewModel.layers=t}async _updateEditableItems(){l(this._updateEditableItemsTask);const t=e((async t=>{const e=this.view?.allLayerViews,r=this.view?.map?.editableLayers;if(!e||!r)return;const i=new Set(r),s=r?.filter((t=>{const e=k(t)?.operations;return!(!t.visible||!e?.supportsAdd||e?.supportsQuery)})),o=e.filter((t=>i.has(t.layer))),n=[];for(const a of o.reverse()){const{layer:t,suspended:e}=a;"subtype-group"===t.type?(await t.loadAll(),n.push(...t.sublayers.slice().reverse().map((t=>this._makeEditableItemForLayer(t,e))))):n.push(this._makeEditableItemForLayer(t,e))}for(const a of s.reverse())"subtype-group"===a.type?(await a.loadAll(),n.push(...a.sublayers.map((t=>this._makeEditableItemForLayer(t,!1))))):n.push(this._makeEditableItemForLayer(a,!1));if(t.aborted)return;const l=this.editableItems;this.editableItems=new a(n),l.destroy()}));this.updatingHandles.addPromise(t.promise),this._updateEditableItemsTask=t}async _cancelWorkflow(t){const e=this.activeWorkflow;if(!e)return void(t&&t.warn&&j("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 b.create(this,t,e,((t,e,a)=>this._applyEdits(t,e,a)),((t,e)=>this._addAttachments(t,e)))}_createCreateWorkflow(t){return _.create(this,t,((t,e,a)=>this._applyEdits(t,e,a)))}_createUpdateWorkflow(t){return C.create(this,t,((t,e)=>this._applyEdits(t,e)))}async _delete(t){const e=t?.sourceLayer;e&&"applyEdits"in e&&await this._applyEdits(e,{deleteFeatures:[t]})}_addAttachments(t,e){const a=[];return e?.forEach((e=>a.push(this._addAttachment(t,e.feature,e.attachment)))),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 y(t.url):null,s={returnServiceEditsOption:(!i||!g(i))&&!RegExp("/hosted/","i").test(t.url)?"original-and-current-features":void 0,...a};return await this._queueOperation((async()=>{if(k(t)?.operations.supportsQuery){const a=await F(this.view,t);return r=await t.applyEdits(e,s),await u((()=>!a.updating)),r}return r=await t.applyEdits(e,s),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=>{j("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=k(t),r=a?.operations,i=S(this.layerInfos,t),s=this.allowedWorkflows,o=s.includes("create")||s.includes("create-features"),n=s.includes("update"),l=t=>!i||!1!==i.enabled&&!1!==i[t],d=o&&!!r?.supportsAdd&&l("addEnabled"),p=n&&!!r?.supportsUpdate&&l("updateEnabled"),c=n&&!!r?.supportsDelete&&l("deleteEnabled"),u=[];e||(d&&u.push("create"),p&&u.push("update"),c&&u.push("delete"));const h=p&&(!i||!1!==i.attributeUpdatesEnabled),w=p&&!!a?.editing?.supportsGeometryUpdate&&(!i||!1!==i.geometryUpdatesEnabled),f=!(!a?.data?.supportsAttachment||i&&!1===i.allowAttachments);return{layer:t,supports:u,attributeUpdatesEnabled:h,geometryUpdatesEnabled:w,hasAttachments:f,attachmentsOnCreateEnabled:f&&o&&(!i||!1!==i.attachmentsOnCreateEnabled),attachmentsOnUpdateEnabled:f&&(!i||!1!==i.attachmentsOnUpdateEnabled)}}};t([w({readOnly:!0})],T.prototype,"activeWorkflow",void 0),t([w({readOnly:!0})],T.prototype,"_activityQueue",void 0),t([w({value:[...M]})],T.prototype,"allowedWorkflows",null),t([w({readOnly:!0})],T.prototype,"canCreate",null),t([w({readOnly:!0})],T.prototype,"canUpdate",null),t([w()],T.prototype,"editableItems",void 0),t([w({readOnly:!0})],T.prototype,"failures",void 0),t([w()],T.prototype,"attachmentsViewModel",void 0),t([w()],T.prototype,"featureFormViewModel",void 0),t([w()],T.prototype,"featureTemplatesViewModel",void 0),t([w()],T.prototype,"labelOptions",null),t([w()],T.prototype,"layerInfos",null),t([w()],T.prototype,"sketchViewModel",void 0),t([w()],T.prototype,"snappingOptions",null),t([w()],T.prototype,"spinnerViewModel",void 0),t([w()],T.prototype,"state",null),t([w({readOnly:!0})],T.prototype,"syncing",null),t([w()],T.prototype,"updating",null),t([w()],T.prototype,"tooltipOptions",null),t([w()],T.prototype,"view",null),t([w()],T.prototype,"pageStack",void 0),t([w()],T.prototype,"showDiscardPrompt",void 0),t([w()],T.prototype,"_candidateCommitted",void 0),t([w()],T.prototype,"page",null),t([w()],T.prototype,"selectedTemplateItem",null),t([w()],T.prototype,"featureFormDisabled",null),t([w()],T.prototype,"canGoBack",null),t([w()],T.prototype,"shouldShowDeleteButton",null),t([w()],T.prototype,"hasPendingEdits",null),T=t([f(A)],T);const L=T;export{L 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{HandleOwnerMixin as o}from"../../core/HandleOwner.js";import n from"../../core/Logger.js";import{abortMaybe as l}from"../../core/maybe.js";import{throwIfAborted as d}from"../../core/promiseUtils.js";import{watch as p,on as c,when as u,whenOnce as h,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 y from"../../layers/GraphicsLayer.js";import{getOwningPortalUrl as k,getEffectiveLayerCapabilities as g}from"../../layers/support/layerUtils.js";import{parseKnownArcGISOnlineDomain as v}from"../../portal/support/urlUtils.js";import b from"../Attachments/AttachmentsViewModel.js";import _ from"./CreateFeaturesWorkflow.js";import W from"./CreateWorkflow.js";import{workflowDeprecation as C}from"./deprecationUtils.js";import F from"./UpdateWorkflow.js";import{whenEditorLayerView as E}from"./workflowUtils.js";import I from"../FeatureForm/FeatureFormViewModel.js";import O from"../FeatureTemplates/FeatureTemplatesViewModel.js";import U from"../Sketch/SketchViewModel.js";import A from"../Spinner/SpinnerViewModel.js";const V="esri.widgets.Editor.EditorViewModel",j=n.getLogger(V),M=["create","create-features","update"];function T(t,e,a){j.error(new i(t,e,a))}function S(t,e){return t?t.find((t=>t.layer===e)):void 0}let L=class extends(o(s.EventedAccessor)){constructor(t){super(t),this._sketchGraphicsLayer=new y({listMode:"hide",internal:!0}),this._updateEditableItemsTask=null,this.activeWorkflow=null,this._activityQueue=[],this.editableItems=new a,this.failures=[],this.attachmentsViewModel=new b({abilities:{editing:!0}}),this.featureFormViewModel=new I,this.featureTemplatesViewModel=new O,this.sketchViewModel=new U({layer:this._sketchGraphicsLayer}),this.spinnerViewModel=new A,this.pageStack=[],this.showDiscardPrompt=()=>Promise.resolve(),this._candidateCommitted=!1,this.back=async()=>{const t=this.activeWorkflow;if(t&&this.canGoBack){if(this.hasPendingEdits)try{await this.showDiscardPrompt()}catch(e){return}t.hasPreviousStep?await t.previous({cancelCurrentStep:!0}):await this.cancelWorkflow({force:!0})}},this.save=()=>{const{featureFormViewModel:t}=this;t.submit(),!t.submittable||t.validateContingencyConstraints(t.getValues(),{includeIncompleteViolations:!0}).length>0||this.activeWorkflow?.commit()},this.selectFeature=(t,e=!1)=>{const a=this.activeWorkflow;this._candidateCommitted||"update"!==a?.type||(a.data.edits.feature=t,e&&(a.next(),this._candidateCommitted=!0))}}initialize(){this.handles.add([p((()=>{const t=this.view?.map?.editableLayers.filter((({parent:t,visible:e})=>t&&"visible"in t?e&&t.visible:e)),e=this.view?.allLayerViews,a=e?.filter((e=>!!t?.includes(e.layer)&&!e.suspended));return[t,a,this.layerInfos,this.allowedWorkflows]}),(()=>this._updateEditableItems()),w),c((()=>this.activeWorkflow),"cancel",(()=>this.emit("workflow-cancel"))),c((()=>this.activeWorkflow),"commit",(()=>this.emit("workflow-commit"))),u((()=>this.view?.map),(t=>{t.add(this._sketchGraphicsLayer)}),w),p((()=>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()})),p((()=>this.page),((t,e)=>{const a=this.pageStack.slice(),r=a.indexOf(t);-1===r&&e?a.push(e):a.splice(r),this.pageStack=a})),u((()=>"awaiting-update-feature-candidate"===this.state),(()=>this._candidateCommitted=!1))])}destroy(){this._cancelWorkflow().then((()=>{this.view?.map&&this.view.map.remove(this._sketchGraphicsLayer),this.view=null})),this._updateEditableItemsTask=l(this._updateEditableItemsTask)}get allowedWorkflows(){return this._get("allowedWorkflows")}set allowedWorkflows(t){t&&0!==t.length||(t=[...M]),this._set("allowedWorkflows",t)}get canCreate(){return this.editableItems.some((t=>t.supports.includes("create")))}get canUpdate(){return this.editableItems.some((t=>t.supports.includes("update")||t.supports.includes("delete")||t.attachmentsOnUpdateEnabled))}get labelOptions(){return this.sketchViewModel.labelOptions}set labelOptions(t){this.sketchViewModel.labelOptions=t}set layerInfos(t){t?.some((t=>("allowAttachments"in t&&r(j,"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.get("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}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"awaiting-feature-to-update"===e||"awaiting-feature-to-create"===e||"create-features"===t?.type&&0===t.pendingFeatures.length?"ready":e??"disabled"}get selectedTemplateItem(){const{activeWorkflow:t}=this;if("create-features"===t?.type&&0===t.pendingFeatures.length){const e=t.data.creationInfo?.template;if(!e)return;for(const t of this.featureTemplatesViewModel.items)if("findByTemplate"in t){const a=t.findByTemplate(e);if(a)return a}else if(t.template===e)return t}}get featureFormDisabled(){const{activeWorkflow:t}=this;return"update"===t?.type&&!1===t?.data.editableItem?.attributeUpdatesEnabled}get canGoBack(){return null!=this.activeWorkflow&&!this.syncing}get shouldShowDeleteButton(){const{activeWorkflow:t}=this;return!!t&&"update"===t.type&&t.data.editableItem.supports.includes("delete")}get hasPendingEdits(){const{activeWorkflow:t}=this;return!!t&&("create"===t.type||"create-features"===t.type&&(t.numPendingFeatures>0||!!t.data.upload||!!t.data.creationInfo?.geometryToPlace)||"editing-existing-feature"===t.stepId&&t.data.edits.modified)}async startCreateWorkflowAtFeatureTypeSelection(){if(C(j,"startCreateWorkflowAtFeatureTypeSelection","startCreateFeaturesWorkflowAtFeatureTypeSelection"),await h((()=>!this.updating)),!this.canCreate)return void T("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(C(j,"startCreateWorkflowAtFeatureCreation","startCreateFeaturesWorkflowAtFeatureCreation"),await h((()=>!this.updating)),!this.canCreate)return void T("editing:unsupported-workflow","Create workflow is unsupported or disabled.");await this._cancelWorkflow();const e=this._createCreateWorkflow("awaiting-feature-to-create");e.data.creationInfo=t,await e.start(),this._set("activeWorkflow",e)}async startCreateFeaturesWorkflowAtFeatureCreation(t){return this.startCreateFeaturesWorkflow(t,"creating-features")}async startCreateFeaturesWorkflow(t,e="awaiting-feature-creation-info"){if(await h((()=>!this.updating)),!this.canCreate)throw new i("editing:unsupported-workflow","Creating features is unsupported or disabled.");await this._cancelWorkflow();const a=this._createCreateFeaturesWorkflow(t,e);await a.start(),this._set("activeWorkflow",a)}async startCreateWorkflowAtFeatureEdit(t){if(C(j,"startCreateWorkflowAtFeatureEdit"),await h((()=>!this.updating)),!this.canCreate)return void T("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 startUpdateWorkflowAtFeatureSelection(){if(await h((()=>!this.updating)),!this.canUpdate)return void T("editing:unsupported-workflow","Update workflow is unsupported or disabled.");await this._cancelWorkflow();const t=this._createUpdateWorkflow();await t.start(),this._set("activeWorkflow",t)}async startUpdateWorkflowAtMultipleFeatureSelection(t){if(await h((()=>!this.updating)),!this.canUpdate)return void T("editing:unsupported-workflow","Update workflow is unsupported or disabled.");await this._cancelWorkflow();const e=this._createUpdateWorkflow("awaiting-update-feature-candidate");e.data.candidates=t,await e.start(),this._set("activeWorkflow",e)}async startUpdateWorkflowAtFeatureEdit(t){if(await h((()=>!this.updating)),!this.canUpdate)return void T("editing:unsupported-workflow","Update workflow is unsupported or disabled.");await this._cancelWorkflow();const e=this._createUpdateWorkflow("editing-existing-feature");e.data.edits.feature=t,await e.start(),this._set("activeWorkflow",e)}async deleteFeatureFromWorkflow(){const{activeWorkflow:t}=this;t&&"update"===t.type?(await this._delete(t.data.edits.feature),await t.reset()):T("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))}refreshCreationTemplates(){const t=[];for(const{layer:e,supports:a}of this.editableItems)e.loaded&&a.includes("create")&&t.push(e);this.featureTemplatesViewModel.layers=t}async _updateEditableItems(){l(this._updateEditableItemsTask);const t=e((async t=>{const e=this.view?.allLayerViews,r=this.view?.map?.editableLayers;if(!e||!r)return;const i=new Set(r),s=r?.filter((t=>{const e=g(t)?.operations;return!(!t.visible||!e?.supportsAdd||e?.supportsQuery)})),o=e.filter((t=>i.has(t.layer))),n=[];for(const{layer:a,suspended:p}of o.reverse())if("subtype-group"===a.type){await a.loadAll(),d(t);for(let t=a.sublayers.length-1;t>=0;--t)n.push(this._makeEditableItemForLayer(a.sublayers.at(t),p))}else n.push(this._makeEditableItemForLayer(a,p));for(const a of s.reverse())if("subtype-group"===a.type){await a.loadAll(),d(t);for(const t of a.sublayers)n.push(this._makeEditableItemForLayer(t,!1))}else n.push(this._makeEditableItemForLayer(a,!1));if(t.aborted)return;const l=this.editableItems;this.editableItems=new a(n),l.destroy()}));this.updatingHandles.addPromise(t.promise),this._updateEditableItemsTask=t}async _cancelWorkflow(t){const e=this.activeWorkflow;if(!e)return void(t&&t.warn&&T("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 _.create(this,t,e,((t,e,a)=>this._applyEdits(t,e,a)),((t,e)=>this._addAttachments(t,e)))}_createCreateWorkflow(t){return W.create(this,t,((t,e,a)=>this._applyEdits(t,e,a)))}_createUpdateWorkflow(t){return F.create(this,t,((t,e)=>this._applyEdits(t,e)))}async _delete(t){const e=t?.sourceLayer;e&&"applyEdits"in e&&await this._applyEdits(e,{deleteFeatures:[t]})}_addAttachments(t,e){const a=[];return e?.forEach((e=>a.push(this._addAttachment(t,e.feature,e.attachment)))),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 k(t.url):null,s={returnServiceEditsOption:(!i||!v(i))&&!RegExp("/hosted/","i").test(t.url)?"original-and-current-features":void 0,...a};return await this._queueOperation((async()=>{if(g(t)?.operations.supportsQuery){const a=await E(this.view,t);return r=await t.applyEdits(e,s),await h((()=>!a.updating)),r}return r=await t.applyEdits(e,s),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=>{T("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=g(t),r=a?.operations,i=S(this.layerInfos,t),s=this.allowedWorkflows,o=s.includes("create")||s.includes("create-features"),n=s.includes("update"),l=t=>!i||!1!==i.enabled&&!1!==i[t],d=o&&!!r?.supportsAdd&&l("addEnabled"),p=n&&!!r?.supportsUpdate&&l("updateEnabled"),c=n&&!!r?.supportsDelete&&l("deleteEnabled"),u=[];e||(d&&u.push("create"),p&&u.push("update"),c&&u.push("delete"));const h=p&&(!i||!1!==i.attributeUpdatesEnabled),w=p&&!!a?.editing?.supportsGeometryUpdate&&(!i||!1!==i.geometryUpdatesEnabled),f=!(!a?.data?.supportsAttachment||i&&!1===i.allowAttachments);return{layer:t,supports:u,attributeUpdatesEnabled:h,geometryUpdatesEnabled:w,hasAttachments:f,attachmentsOnCreateEnabled:f&&o&&(!i||!1!==i.attachmentsOnCreateEnabled),attachmentsOnUpdateEnabled:f&&(!i||!1!==i.attachmentsOnUpdateEnabled)}}};t([f({readOnly:!0})],L.prototype,"activeWorkflow",void 0),t([f({readOnly:!0})],L.prototype,"_activityQueue",void 0),t([f({value:[...M]})],L.prototype,"allowedWorkflows",null),t([f({readOnly:!0})],L.prototype,"canCreate",null),t([f({readOnly:!0})],L.prototype,"canUpdate",null),t([f()],L.prototype,"editableItems",void 0),t([f({readOnly:!0})],L.prototype,"failures",void 0),t([f()],L.prototype,"attachmentsViewModel",void 0),t([f()],L.prototype,"featureFormViewModel",void 0),t([f()],L.prototype,"featureTemplatesViewModel",void 0),t([f()],L.prototype,"labelOptions",null),t([f()],L.prototype,"layerInfos",null),t([f()],L.prototype,"sketchViewModel",void 0),t([f()],L.prototype,"snappingOptions",null),t([f()],L.prototype,"spinnerViewModel",void 0),t([f()],L.prototype,"state",null),t([f({readOnly:!0})],L.prototype,"syncing",null),t([f()],L.prototype,"updating",null),t([f()],L.prototype,"tooltipOptions",null),t([f()],L.prototype,"view",null),t([f()],L.prototype,"pageStack",void 0),t([f()],L.prototype,"showDiscardPrompt",void 0),t([f()],L.prototype,"_candidateCommitted",void 0),t([f()],L.prototype,"page",null),t([f()],L.prototype,"selectedTemplateItem",null),t([f()],L.prototype,"featureFormDisabled",null),t([f()],L.prototype,"canGoBack",null),t([f()],L.prototype,"shouldShowDeleteButton",null),t([f()],L.prototype,"hasPendingEdits",null),L=t([m(V)],L);const P=L;export{P as default};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
+ */
5
+ import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../core/Accessor.js";import{createTask as r}from"../../core/asyncUtils.js";import{isAbortError as o,throwIfAborted as s,createAbortError as a,createDeferred as n}from"../../core/promiseUtils.js";import{property as i}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as l}from"../../core/accessorSupport/decorators/subclass.js";import c from"../../geometry/Mesh.js";import u from"../../geometry/Point.js";import p from"../../geometry/SpatialReference.js";let m=class extends t{constructor(){super({}),this.data=null,this._uploadTask=null}destroy(){this.cancel()}get state(){const e=this._uploadTask;return e?e.finished?e.error?o(e.error)?"cancelled":"error":"success":"pending":"default"}get result(){return this._uploadTask?.value??null}get error(){return this._uploadTask?.error??null}start(){this.cancel(),this._uploadTask=r((async e=>{const t=await d();if(s(e),!t)throw a();this.data=t,await f(t),s(e);const r=URL.createObjectURL(t),o=await c.createFromGLTF(new u({x:0,y:0,z:0,spatialReference:p.WebMercator}),r,{geographic:!1,useTransform:!0});return URL.revokeObjectURL(r),s(e),o}))}cancel(){this._uploadTask?.abort(),this._uploadTask=null,this.data=null}};async function d(){const e=n(),t=document.createElement("input");function r(){window.removeEventListener("focus",r),setTimeout((()=>{const{files:r}=t;if(!r||0===r.length)return e.resolve(null)}),1e3)}return t.type="file",t.accept=".glb, .gltf",t.addEventListener("change",(()=>{const{files:r}=t;return r&&0!==r.length?e.resolve(r[0]):e.resolve(null)})),window.addEventListener("focus",r),t.click(),e.promise}function f(e,t=1e7){const r=1e3*(8*e.size)/t;return console.log(`Simulating upload time of ${r/1e3}s`),new Promise((e=>setTimeout(e,r)))}e([i()],m.prototype,"state",null),e([i()],m.prototype,"result",null),e([i()],m.prototype,"error",null),e([i()],m.prototype,"data",void 0),e([i()],m.prototype,"_uploadTask",void 0),m=e([l("esri.widgets.Editor.Upload")],m);const h=m;export{h as default};
@@ -0,0 +1,4 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
+ */
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../Graphic.js";import"../../core/has.js";import{handlesGroup as t}from"../../core/handleUtils.js";import{removeMaybe as i}from"../../core/maybe.js";import{whenOrAbort as n,eachAlways as r}from"../../core/promiseUtils.js";import{watch as a,initial as s,whenOnce as l}from"../../core/reactiveUtils.js";import{px2pt as o}from"../../core/screenUtils.js";import{diff as c}from"../../core/accessorSupport/diffUtils.js";import{calculateTolerance as u}from"../../renderers/support/clickToleranceUtils.js";import{meterIn as p}from"../../renderers/support/lengthUtils.js";import{getTransformationType as y,TransformationType as d}from"../../renderers/visualVariables/support/sizeVariableUtils.js";import{getRotationAngle as f,getSize as m}from"../../renderers/visualVariables/support/visualVariableUtils.js";import{to3D as h}from"../../symbols/support/symbolConversion.js";import{getDisplayedSymbol as g}from"../../symbols/support/symbolUtils.js";import{GraphicState as b}from"../../views/3d/layers/graphics/GraphicState.js";import{createQueryGeometry as w}from"../../views/support/drapedUtils.js";import{hitTestSelectSimilarDistance as v,filterGraphicHits as S}from"../../views/support/hitTestSelectUtils.js";function I(e){const t=e.sourceLayer;if(!t||"feature"!==t.type||!x(t.renderer))return{rotation:null,size:null};let i=null,n=null;const r=t.renderer.getVisualVariablesForType("rotation").filter((t=>(!t.axis||"heading"===t.axis)&&t.field&&!t.valueExpression&&null!=f(t,e)));1===r.length&&(i=j(r[0],t));const a=t.renderer.getVisualVariablesForType("size").filter((t=>t.field&&!t.useSymbolValue&&!t.valueExpression&&y(t)===d.RealWorldSize&&null!=m(t,e)));return 1===a.length&&(n=z(a[0],t)),{rotation:i,size:n}}function j(e,t){const i="heading"===(e.axis||"heading")&&"arithmetic"===e.rotationType?-1:1,n=e.field,r=t.fields&&t.fields.filter((e=>e.name===n)),a=r&&1===r.length?r[0].type:"double",s={initial:0,current:0};return{field:n,fieldType:a,getDefault:()=>Promise.resolve(0),getValue:e=>(s.current=s.initial-i*e,F((s.current+360)%360,a)),initValue:e=>{s.initial=null!=e?e:s.current,s.current=0},isUpdatingInteractively:!1,rotationType:e.rotationType??"geographic"}}function U(e,t){switch(t){case"width":return e[0];case"depth":return e[1];case"height":return e[2];default:return e[2]||e[1]||e[0]}}async function V(e,t,i){if(null==t)return 0;const{symbol:n}=h(t);if(null==n||"web-style"===n.type||"cim"===n.type)return 0;const r=n.symbolLayers.getItemAt(0);if(!r)return 0;switch(r.type){case"icon":{const{computeIconLayerResourceSize:e}=await import("../../symbols/support/symbolLayerUtils.js");return r.size||Math.min(W.icon,(await e(r,W.icon))[0])||W.icon}case"text":return r.size||W.text;case"line":return r.size||W.line;case"object":{const{computeObjectLayerResourceSize:t}=await import("../../symbols/support/symbolLayerUtils.js");return U(await t(r,e.scale/W.viewScaleSizeFactor),i)}case"path":return(null!=r.width?r.width:r.height)||e.scale/W.viewScaleSizeFactor;case"extrude":return r.size||e.scale/W.viewScaleSizeFactor;default:return 0}}function z(e,t){const i=e.field,n=e.axis,r=t.fields&&t.fields.filter((e=>e.name===i)),a=r&&1===r.length?r[0].type:"double",s={updating:!1,initial:0,current:0},l=p[e.valueUnit]??1;let o;return o="area"===e.valueRepresentation?e=>(e*l/2)**2*Math.PI:"radius"===e.valueRepresentation||"distance"===e.valueRepresentation?e=>e*l/2:e=>e*l,{field:i,fieldType:a,getDefault:async(e,t)=>F(o(await V(t,e,n)),a),getValue:(e,t)=>(s.initial||(s.initial=t.pixelSizeAt(t.center)),s.current=s.initial*e,F(s.current,a)),initValue:e=>{s.initial=null!=e?e:s.current,s.current=0},isUpdatingInteractively:!1,displayUnit:N(e.valueUnit),axis:e.axis}}function F(e,t){switch(t){case"small-integer":case"integer":case"long":return Math.round(e);case"double":case"single":return e;default:return 0}}function x(e){switch(e?.type){case"class-breaks":case"simple":case"unique-value":case"dot-density":case"dictionary":case"pie-chart":return!0;default:return!1}}async function T(e,t){const i=await g(e,{useSourceLayer:!0,ignoreGraphicSymbol:!0,webStyleCache:t});null!=c(e.symbol,i)&&(e.symbol=i)}function L(e){if(!e)throw new Error("no geometry type");if("mesh"===e||"multipatch"===e)throw new Error("Mesh and Multipatch not supported");return e}async function E(e,t,i,n){await M(e,t,n);const r=e.on("create",(async r=>{if("cancel"===r.state)return M(e,t,n);if("complete"===r.state){const e=r.graphic;e.sourceLayer||(e.sourceLayer=t.layer),e.attributes||(e.attributes={...t.template.prototype.attributes}),await T(e,n),i(e)}}));return{remove:()=>{r.remove(),e.cancel()}}}async function M(e,t,i){const n=t.layer,r={...t.template.prototype.attributes};await R(e,n,r,i);const a={graphicProperties:{attributes:r,sourceLayer:n},hasZ:n.capabilities.data.supportsZ};return e.layer.elevationInfo=n.elevationInfo,e.create(L(n.geometryType),a)}async function R(t,i,n,r){const a=new e({sourceLayer:i,attributes:n}),{rotation:s,size:l}=I(a);let o=await g(a,{useSourceLayer:!0,webStyleCache:r}),c=!1;for(const e of[l,s]){if(null==e)continue;null==n[e.field]&&(n[e.field]=await e.getDefault(o,t.view),c=!0)}switch(c&&(o=await g(a,{useSourceLayer:!0,webStyleCache:r})),o?.type){case"simple-fill":case"polygon-3d":t.polygonSymbol=o;break;case"simple-line":case"line-3d":t.polylineSymbol=o;break;case"simple-marker":case"picture-marker":case"point-3d":case"cim":t.pointSymbol=o}A(t.tooltipOptions,l,s)}function A(e,t,i){e.visualVariables=null!=t||null!=i?{size:null!=t?{unit:t.displayUnit,axis:t.axis,valueType:t.fieldType}:null,rotation:null!=i?{valueType:i.fieldType,rotationType:i.rotationType??"geographic"}:null}:null}function O(e,t){return e?e.find((e=>e.layer===t)):void 0}async function k(e,t,i,a){if(0===e.length)return[];const{updatable:s,graphicsByLayer:l}=await i.async((async()=>{const{results:r}=await n(v(t,i),a),s=new Map,l=e=>{const t=e.layer,i=s.get(t);if(!i){const e=new Array;return s.set(t,e),e}return i};S(r).forEach((({graphic:e})=>l(e).push(e)));const o=e.filter((({supports:e,layer:t})=>e.includes("update")&&s.has(t)));return 0!==o.length&&i.stopPropagation(),{updatable:o,graphicsByLayer:s}}));return n(r(s.map((async({layer:e})=>{const{objectIdField:t}=e,i="displayField"in e?e.displayField:null,n=[t];null!=i&&e.fieldsIndex.has(i)&&n.push(i);const r=l.get(e);if(!!r.some((e=>n.some((t=>!(t in e.attributes)))))){const t=e.createQuery();return t.outFields=n,t.returnGeometry=!1,t.objectIds=r.map((e=>e.getObjectId())),e.queryFeatures(t,{signal:a}).then((({features:e})=>e))}return r}))),a)}async function C(e,t,i,a){if(0===e.length)return[];let s=null;const l=await i.async((async()=>{const{results:r}=await n(t.hitTest(i),a);if(0===r.length)return[];const l=new Set;s=S(r),s.forEach((({graphic:e})=>e&&l.add(e.layer)));const o=e.items.filter((({layer:e,supports:t,attachmentsOnUpdateEnabled:i})=>l.has(e)&&(t.includes("update")||t.includes("delete")||i)));return o.length>0&&i.stopPropagation(),o}));return n(r(l.map((({layer:e})=>{const n=e.objectIdField,r="displayField"in e?e.displayField:null,l=[n];null!=r&&e.fieldsIndex.has(r)&&l.push(r);const o=e.createQuery();o.outFields=l,o.returnGeometry=!1;const c="renderer"in e?u({renderer:e.renderer,event:i}):0;return o.geometry=w(i.mapPoint,c,t),o.outSpatialReference=t.spatialReference,e.queryFeatures(o,{signal:a}).then((({features:t})=>(s?.forEach((({graphic:i})=>{i.layer!==e||t.some((e=>e.getObjectId()===i.getObjectId()))||t.push(i)})),t)))}))),a)}async function G(e,t,i,n){switch(t.type){case"3d":return k(e,t,i,n);case"2d":return C(e,t,i,n)}}async function P(e,t,i){const{sourceLayer:n}=e,r=n.createQuery();return r.objectIds=[e.getAttribute(n.objectIdField)],r.outFields=["*"],r.outSpatialReference=t.spatialReference,r.returnM=n.capabilities.data.supportsM,r.returnZ=n.capabilities.data.supportsZ,(await n.queryFeatures(r,{signal:i})).features[0]}async function q(e,t,i,n,r){let a=!1;const{rotation:s,size:l}=n;[s,l].forEach((async i=>{if(null==i)return;const n=t.attributes[i.field];if(null!=n)i.initValue(n);else{const n=await i.getDefault(t.symbol,e.view);i.initValue(n),t.setAttribute(i.field,n),a=!0}})),a&&await T(t,r);const o={multipleSelectionEnabled:!1};return"point"===i.geometryType&&(o.enableRotation=null!=s,o.enableScaling=null!=l),A(e.tooltipOptions,l,s),e.layer.elevationInfo=i.elevationInfo,e.update(t,o)}function D(e){return null==e||"rotate-start"!==e.type&&"rotate"!==e.type&&"rotate-stop"!==e.type?null:e}function Z(e){return null==e||"scale-start"!==e.type&&"scale"!==e.type&&"scale-stop"!==e.type?null:e}async function Q(e,t,i,n,r){if(null==t.geometry||"point"!==t.geometry?.type)return;const a=n.rotation,s=D(i.toolEventInfo);if(null!=a&&null!=s)if("rotate-stop"===s.type)a.isUpdatingInteractively=!1,a.initValue();else{a.isUpdatingInteractively=!0;const{field:i,getValue:n}=a;t.attributes[i]=n(s.angle,e)}const l=n.size,o=Z(i.toolEventInfo);if(null!=l&&null!=o)if("scale-stop"===o.type)l.isUpdatingInteractively=!1,l.initValue();else{l.isUpdatingInteractively=!0;const{field:i,getValue:n}=l;t.attributes[i]=n(o.xScale,e)}await T(t,r)}async function B(e,n,r,o,c,u){const p=e.clone();await T(p,u),o.map.add(r.layer),r.layer.add(p);const y=e.sourceLayer,d=_(o,y),f=()=>{const t=e.layer,i=e.attributes[t.objectIdField];return d.then((e=>e.setVisibility?.(i,!1)),(()=>{})),{remove(){d.then((e=>e.setVisibility?.(i,!0)),(()=>{}))}}};let m=null,h=null;if("3d"===o.type){const e=new b({graphic:p});m=t([o.trackGraphicState(e),a((()=>e.displaying),(e=>{h=e?f():i(h)}),s)])}else h=f();await q(r,p,y,n,u);let g=null;d.then((e=>g=e),(()=>{}));const w=n.size,v=n.rotation,S=a((()=>e.attributes),(async e=>{let t=!1;for(const i in e){const n=e[i];n!==p.attributes[i]&&(p.setAttribute(i,n),null==w||w.isUpdatingInteractively||w.field!==i||w.initValue(n),null==v||v.isUpdatingInteractively||v.field!==i||v.initValue(n),(null==g||g.requiredFields.includes(i))&&(t=!0))}t&&await T(p,u)})),I=r.on("update",(async e=>{const t=e.graphics[0];if("complete"===e.state)return q(r,t,y,n,u);await Q(o,t,e,n,u),c(t.clone(),e)})),j=r.on(["undo","redo"],(async e=>{c(e.graphics[0].clone(),e)})),U=()=>{};return{interactive:{remove(){j.remove(),I.remove(),r.cancel(),S&&S.remove(),this.remove=U}},visual:{remove(){i(h),_(o,y).then((e=>l((()=>!e.updating)))).then((()=>{i(m),r.layer.remove(p),this.remove=U}))}}}}const W={icon:o(24),text:o(12),line:o(1),viewScaleSizeFactor:100};function H(e,t,i){let n=!1;return e.filter((e=>!!n||(n=e===t,n))).map((e=>i[e]()))}function J(e){if(1!==e.length)return null;const t=e[0];if("items"in t){const e=t;return 1===e.items.length?e.items[0]:null}return t}function K(e,t){if(e.viewModel.refreshCreationTemplates(),"awaiting-feature-creation-info"===t[0].id){const i=J(e.viewModel.featureTemplatesViewModel.items);null!=i&&(e.creationInfo=i,t.shift())}return t}function N(e){switch(e){case"unknown":case"decimal-degrees":return null;default:return e}}function X(e){e.set({abilities:{editing:!0,operations:{add:!0,update:!0,delete:!0}},filesEnabled:!0,mode:"view"})}function Y(e){const{creationInfo:{layer:t},viewModel:i}=e,n=i.editableItems.find((e=>e.layer===t));if(n)return n.attachmentsOnCreateEnabled;const r=t.capabilities?.data,a=i.layerInfos?.find((e=>e.layer===t));return!(!(r&&"supportsAttachment"in r&&r.supportsAttachment)||a&&(!1===a.allowAttachments||!1===a.attachmentsOnUpdateEnabled))}const $=e=>/-stop/.test(e)||/vertex-/.test(e),_=(e,t)=>{const i="subtype-sublayer"===t.type?t.parent:t;return e.whenLayerView(i)};export{K as avoidFeatureTemplateSelectionWithOnlyOneItem,H as createWorkflowSteps,G as fetchCandidates,P as fetchFullFeature,O as findLayerInfo,I as getVisualVariableAttributes,$ as isTerminalUpdateEventType,X as prepareAttachmentsForCreateWorkflow,E as setUpFeatureAdd,B as setUpGeometryUpdate,Y as shouldShowAttachmentsForCreateWorkflow,W as sizeDefaults,N as sizeVariableUnitToLengthUnit,M as startCreatingNewFeature,q as startUpdatingFeature,T as updateGraphicSymbolWhenRequired,Q as visualVariableInteractiveUpdate,_ as whenEditorLayerView};
5
+ import e from"../../Graphic.js";import"../../core/has.js";import{handlesGroup as t}from"../../core/handleUtils.js";import{removeMaybe as i}from"../../core/maybe.js";import{whenOrAbort as n,eachAlways as r}from"../../core/promiseUtils.js";import{watch as a,initial as s,whenOnce as l}from"../../core/reactiveUtils.js";import{px2pt as o}from"../../core/screenUtils.js";import{diff as c}from"../../core/accessorSupport/diffUtils.js";import{calculateTolerance as u}from"../../renderers/support/clickToleranceUtils.js";import{meterIn as p}from"../../renderers/support/lengthUtils.js";import{getTransformationType as y,TransformationType as d}from"../../renderers/visualVariables/support/sizeVariableUtils.js";import{getRotationAngle as f,getSize as m}from"../../renderers/visualVariables/support/visualVariableUtils.js";import{to3D as h}from"../../symbols/support/symbolConversion.js";import{getDisplayedSymbol as g}from"../../symbols/support/symbolUtils.js";import{GraphicState as b}from"../../views/3d/layers/graphics/GraphicState.js";import{createQueryGeometry as w}from"../../views/support/drapedUtils.js";import{hitTestSelectSimilarDistance as v,filterGraphicHits as S}from"../../views/support/hitTestSelectUtils.js";function I(e){const t=e.sourceLayer;if(!t||"feature"!==t.type||!F(t.renderer))return{rotation:null,size:null};let i=null,n=null;const r=t.renderer.getVisualVariablesForType("rotation").filter((t=>(!t.axis||"heading"===t.axis)&&t.field&&!t.valueExpression&&null!=f(t,e)));1===r.length&&(i=j(r[0],t));const a=t.renderer.getVisualVariablesForType("size").filter((t=>t.field&&!t.useSymbolValue&&!t.valueExpression&&y(t)===d.RealWorldSize&&null!=m(t,e)));return 1===a.length&&(n=T(a[0],t)),{rotation:i,size:n}}function j(e,t){const i="heading"===(e.axis||"heading")&&"arithmetic"===e.rotationType?-1:1,n=e.field,r=t.fields&&t.fields.filter((e=>e.name===n)),a=r&&1===r.length?r[0].type:"double",s={initial:0,current:0};return{field:n,fieldType:a,getDefault:()=>Promise.resolve(0),getValue:e=>(s.current=s.initial-i*e,z((s.current+360)%360,a)),initValue:e=>{s.initial=null!=e?e:s.current,s.current=0},isUpdatingInteractively:!1,rotationType:e.rotationType??"geographic"}}function U(e,t){switch(t){case"width":return e[0];case"depth":return e[1];case"height":return e[2];default:return e[2]||e[1]||e[0]}}async function V(e,t,i){if(null==t)return 0;const{symbol:n}=h(t);if(null==n||"web-style"===n.type||"cim"===n.type)return 0;const r=n.symbolLayers.getItemAt(0);if(!r)return 0;switch(r.type){case"icon":{const{computeIconLayerResourceSize:e}=await import("../../symbols/support/symbolLayerUtils.js");return r.size||Math.min(W.icon,(await e(r,W.icon))[0])||W.icon}case"text":return r.size||W.text;case"line":return r.size||W.line;case"object":{const{computeObjectLayerResourceSize:t}=await import("../../symbols/support/symbolLayerUtils.js");return U(await t(r,e.scale/W.viewScaleSizeFactor),i)}case"path":return(null!=r.width?r.width:r.height)||e.scale/W.viewScaleSizeFactor;case"extrude":return r.size||e.scale/W.viewScaleSizeFactor;default:return 0}}function T(e,t){const i=e.field,n=e.axis,r=t.fields&&t.fields.filter((e=>e.name===i)),a=r&&1===r.length?r[0].type:"double",s={updating:!1,initial:0,current:0},l=p[e.valueUnit]??1;let o;return o="area"===e.valueRepresentation?e=>(e*l/2)**2*Math.PI:"radius"===e.valueRepresentation||"distance"===e.valueRepresentation?e=>e*l/2:e=>e*l,{field:i,fieldType:a,getDefault:async(e,t)=>z(o(await V(t,e,n)),a),getValue:(e,t)=>(s.initial||(s.initial=t.pixelSizeAt(t.center)),s.current=s.initial*e,z(s.current,a)),initValue:e=>{s.initial=null!=e?e:s.current,s.current=0},isUpdatingInteractively:!1,displayUnit:N(e.valueUnit),axis:e.axis}}function z(e,t){switch(t){case"small-integer":case"integer":case"long":return Math.round(e);case"double":case"single":return e;default:return 0}}function F(e){switch(e?.type){case"class-breaks":case"simple":case"unique-value":case"dot-density":case"dictionary":case"pie-chart":return!0;default:return!1}}async function x(e,t){const i=await g(e,{useSourceLayer:!0,ignoreGraphicSymbol:!0,webStyleCache:t});null!=c(e.symbol,i)&&(e.symbol=i)}function L(e){if(!e)throw new Error("no geometry type");return"multipatch"===e?"mesh":e}async function E(e,t,i,n){await R(e,t,n);const r=e.on("create",(async r=>{if("cancel"===r.state)return R(e,t,n);if("complete"===r.state){const e=r.graphic;e.sourceLayer||(e.sourceLayer=t.layer),e.attributes||(e.attributes={...t.template.prototype.attributes}),await x(e,n),i(e)}}));return{remove:()=>{r.remove(),e.cancel()}}}async function R(e,t,i){const n=t.layer,r={...t.template.prototype.attributes};await M(e,n,r,i);const a={graphicProperties:{attributes:r,sourceLayer:n},hasZ:n.capabilities.data.supportsZ,geometryToPlace:t.geometryToPlace??void 0};return e.layer.elevationInfo=n.elevationInfo,e.create(L(n.geometryType),a)}async function M(t,i,n,r){const a=new e({sourceLayer:i,attributes:n}),{rotation:s,size:l}=I(a);let o=await g(a,{useSourceLayer:!0,webStyleCache:r}),c=!1;for(const e of[l,s]){if(null==e)continue;null==n[e.field]&&(n[e.field]=await e.getDefault(o,t.view),c=!0)}switch(c&&(o=await g(a,{useSourceLayer:!0,webStyleCache:r})),o?.type){case"simple-fill":case"polygon-3d":t.polygonSymbol=o;break;case"simple-line":case"line-3d":t.polylineSymbol=o;break;case"simple-marker":case"picture-marker":case"point-3d":case"cim":t.pointSymbol=o}A(t.tooltipOptions,l,s)}function A(e,t,i){e.visualVariables=null!=t||null!=i?{size:null!=t?{unit:t.displayUnit,axis:t.axis,valueType:t.fieldType}:null,rotation:null!=i?{valueType:i.fieldType,rotationType:i.rotationType??"geographic"}:null}:null}function O(e,t){return e?e.find((e=>e.layer===t)):void 0}async function k(e,t,i,a){if(0===e.length)return[];const{updatable:s,graphicsByLayer:l}=await i.async((async()=>{const{results:r}=await n(v(t,i),a),s=new Map,l=e=>{const t=e.layer,i=s.get(t);if(!i){const e=new Array;return s.set(t,e),e}return i};S(r).forEach((({graphic:e})=>l(e).push(e)));const o=e.filter((({supports:e,layer:t})=>e.includes("update")&&s.has(t)));return 0!==o.length&&i.stopPropagation(),{updatable:o,graphicsByLayer:s}}));return n(r(s.map((async({layer:e})=>{const{objectIdField:t}=e,i="displayField"in e?e.displayField:null,n=[t];null!=i&&e.fieldsIndex.has(i)&&n.push(i);const r=l.get(e);if(!!r.some((e=>n.some((t=>!(t in e.attributes)))))){const t=e.createQuery();return t.outFields=n,t.returnGeometry=!1,t.objectIds=r.map((e=>e.getObjectId())),e.queryFeatures(t,{signal:a}).then((({features:e})=>e))}return r}))),a)}async function P(e,t,i,a){if(0===e.length)return[];let s=null;const l=await i.async((async()=>{const{results:r}=await n(t.hitTest(i),a);if(0===r.length)return[];const l=new Set;s=S(r),s.forEach((({graphic:e})=>e&&l.add(e.layer)));const o=e.items.filter((({layer:e,supports:t,attachmentsOnUpdateEnabled:i})=>l.has(e)&&(t.includes("update")||t.includes("delete")||i)));return o.length>0&&i.stopPropagation(),o}));return n(r(l.map((({layer:e})=>{const n=e.objectIdField,r="displayField"in e?e.displayField:null,l=[n];null!=r&&e.fieldsIndex.has(r)&&l.push(r);const o=e.createQuery();o.outFields=l,o.returnGeometry=!1;const c="renderer"in e?u({renderer:e.renderer,event:i}):0;return o.geometry=w(i.mapPoint,c,t),o.outSpatialReference=t.spatialReference,e.queryFeatures(o,{signal:a}).then((({features:t})=>(s?.forEach((({graphic:i})=>{i.layer!==e||t.some((e=>e.getObjectId()===i.getObjectId()))||t.push(i)})),t)))}))),a)}async function C(e,t,i,n){switch(t.type){case"3d":return k(e,t,i,n);case"2d":return P(e,t,i,n)}}async function G(e,t,i){const{sourceLayer:n}=e,r=n.createQuery();return r.objectIds=[e.getAttribute(n.objectIdField)],r.outFields=["*"],r.outSpatialReference=t.spatialReference,r.returnM=n.capabilities.data.supportsM,r.returnZ=n.capabilities.data.supportsZ,(await n.queryFeatures(r,{signal:i})).features[0]}async function q(e,t,i,n,r){let a=!1;const{rotation:s,size:l}=n;[s,l].forEach((async i=>{if(null==i)return;const n=t.attributes[i.field];if(null!=n)i.initValue(n);else{const n=await i.getDefault(t.symbol,e.view);i.initValue(n),t.setAttribute(i.field,n),a=!0}})),a&&await x(t,r);const o={multipleSelectionEnabled:!1};return"point"===i.geometryType&&(o.enableRotation=null!=s,o.enableScaling=null!=l),A(e.tooltipOptions,l,s),e.layer.elevationInfo=i.elevationInfo,e.update(t,o)}function D(e){return null==e||"rotate-start"!==e.type&&"rotate"!==e.type&&"rotate-stop"!==e.type?null:e}function Z(e){return null==e||"scale-start"!==e.type&&"scale"!==e.type&&"scale-stop"!==e.type?null:e}async function Q(e,t,i,n,r){if(null==t.geometry||"point"!==t.geometry?.type)return;const a=n.rotation,s=D(i.toolEventInfo);if(null!=a&&null!=s)if("rotate-stop"===s.type)a.isUpdatingInteractively=!1,a.initValue();else{a.isUpdatingInteractively=!0;const{field:i,getValue:n}=a;t.attributes[i]=n(s.angle,e)}const l=n.size,o=Z(i.toolEventInfo);if(null!=l&&null!=o)if("scale-stop"===o.type)l.isUpdatingInteractively=!1,l.initValue();else{l.isUpdatingInteractively=!0;const{field:i,getValue:n}=l;t.attributes[i]=n(o.xScale,e)}await x(t,r)}async function B(e,n,r,o,c,u){const p=e.clone();await x(p,u),o.map.add(r.layer),r.layer.add(p);const y=e.sourceLayer,d=_(o,y),f=()=>{const t=e.layer,i=e.attributes[t.objectIdField];return d.then((e=>e.setVisibility?.(i,!1)),(()=>{})),{remove(){d.then((e=>e.setVisibility?.(i,!0)),(()=>{}))}}};let m=null,h=null;if("3d"===o.type){const e=new b({graphic:p});m=t([o.trackGraphicState(e),a((()=>e.displaying),(e=>{h=e?f():i(h)}),s)])}else h=f();await q(r,p,y,n,u);let g=null;d.then((e=>g=e),(()=>{}));const w=n.size,v=n.rotation,S=a((()=>e.attributes),(async e=>{let t=!1;for(const i in e){const n=e[i];n!==p.attributes[i]&&(p.setAttribute(i,n),null==w||w.isUpdatingInteractively||w.field!==i||w.initValue(n),null==v||v.isUpdatingInteractively||v.field!==i||v.initValue(n),(null==g||g.requiredFields.includes(i))&&(t=!0))}t&&await x(p,u)})),I=r.on("update",(async e=>{const t=e.graphics[0];if("complete"===e.state)return q(r,t,y,n,u);await Q(o,t,e,n,u),c(t.clone(),e)})),j=r.on(["undo","redo"],(async e=>{c(e.graphics[0].clone(),e)})),U=()=>{};return{interactive:{remove(){j.remove(),I.remove(),r.cancel(),S&&S.remove(),this.remove=U}},visual:{remove(){i(h),_(o,y).then((e=>l((()=>!e.updating)))).then((()=>{i(m),r.layer.remove(p),this.remove=U}))}}}}const W={icon:o(24),text:o(12),line:o(1),viewScaleSizeFactor:100};function H(e,t,i){let n=!1;return e.filter((e=>!!n||(n=e===t,n))).map((e=>i[e]()))}function J(e){if(1!==e.length)return null;const t=e[0];if("items"in t){const e=t;return 1===e.items.length?e.items[0]:null}return t}function K(e,t){if(e.viewModel.refreshCreationTemplates(),"awaiting-feature-creation-info"===t[0].id){const i=J(e.viewModel.featureTemplatesViewModel.items);null!=i&&(e.creationInfo=i,t.shift())}return t}function N(e){switch(e){case"unknown":case"decimal-degrees":return null;default:return e}}function X(e){e.set({abilities:{editing:!0,operations:{add:!0,update:!0,delete:!0}},filesEnabled:!0,mode:"view"})}function Y(e){const{creationInfo:t,viewModel:i}=e;if(!t)return!1;const{layer:n}=t,r=i.editableItems.find((e=>e.layer===n));if(r)return r.attachmentsOnCreateEnabled;const a=n.capabilities?.data,s=i.layerInfos?.find((e=>e.layer===n));return!(!(a&&"supportsAttachment"in a&&a.supportsAttachment)||s&&(!1===s.allowAttachments||!1===s.attachmentsOnUpdateEnabled))}const $=e=>/-stop/.test(e)||/vertex-/.test(e),_=(e,t)=>{const i="subtype-sublayer"===t.type?t.parent:t;return e.whenLayerView(i)};export{K as avoidFeatureTemplateSelectionWithOnlyOneItem,H as createWorkflowSteps,C as fetchCandidates,G as fetchFullFeature,O as findLayerInfo,I as getVisualVariableAttributes,$ as isTerminalUpdateEventType,X as prepareAttachmentsForCreateWorkflow,E as setUpFeatureAdd,B as setUpGeometryUpdate,Y as shouldShowAttachmentsForCreateWorkflow,W as sizeDefaults,N as sizeVariableUnitToLengthUnit,R as startCreatingNewFeature,q as startUpdatingFeature,x as updateGraphicSymbolWhenRequired,Q as visualVariableInteractiveUpdate,_ as whenEditorLayerView};
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.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../chunks/tslib.es6.js";import"../intl.js";import{HandleOwnerMixin as t}from"../core/HandleOwner.js";import s from"../core/Logger.js";import{isSome as i}from"../core/maybe.js";import{createDeferred as o}from"../core/promiseUtils.js";import{watch as a,on as n,when as r,initial as l}from"../core/reactiveUtils.js";import{property as c}from"../core/accessorSupport/decorators/property.js";import{cast as d}from"../core/accessorSupport/decorators/cast.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as p}from"../core/accessorSupport/decorators/subclass.js";import{getDisplayFieldName as m}from"../layers/support/fieldUtils.js";import h from"./Attachments.js";import u from"./FeatureForm.js";import g from"./FeatureTemplates.js";import f from"./Spinner.js";import w from"./Widget.js";import{workflowDeprecation as _}from"./Editor/deprecationUtils.js";import v from"./Editor/EditorViewModel.js";import{ItemList as k}from"./FeatureTemplates/ItemList.js";import{loadCalciteComponents as y}from"./support/componentsUtils.js";import{Heading as b,incrementHeadingLevel as A}from"./support/Heading.js";import M from"./support/SnappingControls.js";import{accessibleHandler as C}from"./support/decorators/accessibleHandler.js";import{messageBundle as F}from"./support/decorators/messageBundle.js";import{vmEvent as W}from"./support/decorators/vmEvent.js";import{tsx as T}from"./support/jsxFactory.js";import"./support/widgetUtils.js";import{SketchTooltipControls as E}from"./support/SketchTooltipControls/SketchTooltipControls.js";import{substitute as S}from"../intl/substitute.js";const j="esri-editor",L=`${j}__panel`,P=`${j}__prompt`,B={base:`${j} esri-widget esri-widget--panel`,message:`${j}__message`,actions:`${j}__actions`,helpMessage:`${j}__help-message`,progressBar:`${j}__progress-bar`,panelToolbar:`${L}-toolbar`,panelContent:`${L}-content`,panelContentMessage:`${L}-content__message`,panelContentSection:`${L}-content__section`,panelContentSectionGroup:`${L}-content__section__group`,panelContentScrimContainer:`${L}-content__scrim-container`,settingsContainer:`${j}__settings`,updateFeaturesActionButtons:`${j}__update-features-action-buttons`,updateFeaturesActionButtonsButton:`${j}__update-features-action-buttons--button`,featureTemplatesContainer:`${j}__feature-templates-container`,ownerAdminNotice:`${j}__owner-admin-notice`,promptContainer:P,promptHeader:`${P}__header`,promptHeading:`${P}__header__heading`,promptMessage:`${P}__message`,promptDivider:`${P}__divider`,promptActions:`${P}__actions`,warningIcon:"esri-icon-notice-triangle",widgetIcon:"esri-icon-edit"},U={undoRedoButtons:!1,snappingControls:!0,snappingControlsElements:{header:!1,enabledToggle:!0,selfEnabledToggle:!0,featureEnabledToggle:!0,layerList:!0},sketchTooltipControls:!0};function I(e){e.focus()}const $="esri.widgets.Editor",O=s.getLogger($);let D=class extends(t(w)){constructor(e,t){super(e,t),this._featureForm=new u,this._attachments=new h({visibleElements:{addSubmitButton:!1,cancelAddButton:!1,cancelUpdateButton:!1,deleteButton:!1,errorMessage:!1,progressBar:!1,updateButton:!1}}),this._featureTemplates=new g({enableListScroll:!1}),this._filterText="",this._prompt=null,this._spinner=new f,this.useDeprecatedCreateWorkflow=!1,this.headingLevel=4,this.iconClass=B.widgetIcon,this.messages=null,this.messagesCommon=null,this.messagesTemplates=null,this.supportingWidgetDefaults=null,this.viewModel=new v,this.visibleElements={...U},this.EditorPanel=({handleBack:e,heading:t,headingLevel:s,key:i},...o)=>{const{messagesCommon:a,viewModel:n,visibleElements:r}=this,l=n.sketchViewModel,c=n.syncing||this._attachments.submitting;return T("calcite-flow-item",{closable:!1,heading:t,headingLevel:s,key:i,loading:c,onCalciteFlowItemBack:e??void 0},T("div",{key:"panel-toolbar",class:B.panelToolbar},this._renderSettings(),r.undoRedoButtons&&[T("calcite-button",{key:"undo-button",label:a.undo,appearance:"transparent",kind:"neutral",alignment:"center",iconStart:"undo",scale:"l",disabled:!l.canUndo(),onclick:l.undo.bind(l)},a.undo),T("calcite-button",{key:"redo-button",label:a.redo,appearance:"transparent",kind:"neutral",alignment:"center",iconStart:"redo",scale:"l",disabled:!l.canRedo(),onclick:l.redo.bind(l)},a.redo)]),...o)},this._showDiscardWarning=()=>{const{messages:e}=this,t="create"===this.activeWorkflow?.type,s=o();return this._prompt={title:e[t?"cancelAddTitle":"cancelEditTitle"],message:e[t?"cancelAddWarningMessage":"cancelEditWarningMessage"],context:"danger",actions:{primary:{label:e[t?"discardFeature":"discardEdits"],action:()=>{s.resolve(),this._clearPrompt()}},secondary:{label:e[t?"continueAdding":"continueEditing"],action:()=>{s.reject(),this._clearPrompt()}}}},s.promise},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.previous(),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},this._onBack=this._onBack.bind(this),this._onSave=this._onSave.bind(this),this._onDelete=this._onDelete.bind(this),this._onToggleUpdateWorkflow=this._onToggleUpdateWorkflow.bind(this),this._onAttachmentAdd=this._onAttachmentAdd.bind(this),this._onAttachmentUpdate=this._onAttachmentUpdate.bind(this),this._onAttachmentDelete=this._onAttachmentDelete.bind(this)}initialize(){const e=()=>this.scheduleRender();this.addHandles([a((()=>A(this.headingLevel)),(e=>{this._featureForm.headingLevel=e,this._featureTemplates.headingLevel=e}),l),n((()=>this.viewModel.featureTemplatesViewModel),"select",(async({item:e,oldItem:t})=>{this.viewModel.activeWorkflow&&await this.viewModel.cancelWorkflow(),e&&e.id!==t?.id&&(this.useDeprecatedCreateWorkflow?this.startCreateWorkflowAtFeatureCreation(e):this.startCreateFeaturesWorkflowAtFeatureCreation(e))})),a((()=>this.viewModel.selectedTemplateItem),(e=>this._featureTemplates.select(e,!1))),n((()=>this.viewModel.activeWorkflow),"cancel-request",(({controller:e})=>{const{messages:t,messagesCommon:s}=this;this._prompt={title:t.cancelRequestTitle,message:t.cancelRequestWarningMessage,context:"danger",actions:{primary:{label:s.form.yes,action:()=>{e.allow(),this._clearPrompt()}},secondary:{label:s.form.no,action:()=>{e.deny(),this._clearPrompt()}}}}})),a((()=>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.showDiscardPrompt=this._showDiscardWarning}),l),a((()=>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"})}),l),n((()=>this.viewModel?.sketchViewModel),"create",e),r((()=>this.supportingWidgetDefaults),(e=>{this._featureForm.set(e.featureForm),this._attachments.set(e.attachments),this._featureTemplates.set(e.featureTemplates),this.viewModel.sketchViewModel.set(e.sketch)}),l),r((()=>this._attachments?.error),(e=>this._onAttachmentsError(e))),r((()=>this.viewModel?.failures),(e=>{const{messages:t}=this,[{error:s,retry:i,cancel:o}]=e;this._prompt={title:t.errorWarningTitle,message:S(t.errorWarningMessageTemplate,{errorMessage:s.message}),context:"warning",actions:{primary:{label:t.retry,action:()=>{i(),this._clearPrompt()}},secondary:{label:t.ignore,action:()=>{o(),this._clearPrompt()}}}}})),a((()=>this.viewModel?.state),(e=>{switch(e){case"awaiting-feature-to-update":case"ready":case"disabled":this._filterText="",this._featureTemplates.filterText=""}})),a((()=>[this._attachments?.selectedFile,this._attachments?.submitting]),e),a((()=>this.viewModel.featureFormDisabled),(e=>this._featureForm.disabled=e)),n((()=>this.view),"key-down",(e=>{"Escape"===e.key&&this.viewModel.back()}))])}destroy(){this._attachments.destroy(),this._featureForm.destroy(),this._featureTemplates.destroy()}loadDependencies(){return y({accordion:()=>import("@esri/calcite-components/dist/components/calcite-accordion.js"),"accordion-item":()=>import("@esri/calcite-components/dist/components/calcite-accordion-item.js"),button:()=>import("@esri/calcite-components/dist/components/calcite-button.js"),flow:()=>import("@esri/calcite-components/dist/components/calcite-flow.js"),"flow-item":()=>import("@esri/calcite-components/dist/components/calcite-flow-item.js"),icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js"),list:()=>import("@esri/calcite-components/dist/components/calcite-list.js"),"list-item":()=>import("@esri/calcite-components/dist/components/calcite-list-item.js"),notice:()=>import("@esri/calcite-components/dist/components/calcite-notice.js"),scrim:()=>import("@esri/calcite-components/dist/components/calcite-scrim.js")})}get _deleteButtonCommonInfo(){return{appearance:"outline",kind:"danger",type:"primary"}}get activeWorkflow(){return this.viewModel.activeWorkflow}get allowedWorkflows(){return this.viewModel.allowedWorkflows}set allowedWorkflows(e){this.viewModel.allowedWorkflows=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{...U,...e,snappingControlsElements:{...U.snappingControlsElements,...e?.snappingControlsElements}}}startCreateWorkflowAtFeatureTypeSelection(){return _(O,"startCreateWorkflowAtFeatureTypeSelection","startCreateFeaturesWorkflowAtFeatureTypeSelection"),this.viewModel.startCreateWorkflowAtFeatureTypeSelection()}startCreateFeaturesWorkflowAtFeatureTypeSelection(){return this.viewModel.startCreateFeaturesWorkflowAtFeatureTypeSelection()}startCreateWorkflowAtFeatureCreation(e){return _(O,"startCreateWorkflowAtFeatureCreation","startCreateFeaturesWorkflowAtFeatureCreation"),this.viewModel.startCreateWorkflowAtFeatureCreation(e)}startCreateFeaturesWorkflowAtFeatureCreation(e){return this.viewModel.startCreateFeaturesWorkflowAtFeatureCreation(e)}startCreateWorkflowAtFeatureEdit(e){return _(O,"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;if(!e)return T("div",{class:B.base});const{state:t}=e;return T("div",{class:B.base},T("calcite-flow",null,e.pageStack.map((e=>this._renderPage(e,t))),this._renderPage(e.page,t)),this._renderPrompt())}_renderPage(e,t){switch(e){case"disabled":break;case"ready":return this._renderLanding(t);case"awaiting-feature-creation-info":return this._renderTemplates(t);case"creating-features":case"editing-new-feature":case"editing-existing-feature":return this._renderAttributeEditing(t);case"awaiting-update-feature-candidate":return this._renderFeatureList(t);case"adding-attachment":return this._renderAttachmentAdding(t);case"editing-attachment":return this._renderAttachmentEditing(t)}return T("div",null)}_renderTemplates(e){const{EditorPanel:t,headingLevel:s,messages:i,_onBack:o}=this;return T(t,{active:this._isPanelActive(e),key:"templates-panel",handleBack:o,heading:i.selectTemplate,headingLevel:s},T("div",{class:B.panelContent},this._featureTemplates.render()))}_renderAttributeEditing(e){const{activeWorkflow:t,EditorPanel:s,messages:i,messagesCommon:o,headingLevel:a,_onBack:n,viewModel:r}=this;if(!t)return null;const l=t.type,c=r.featureFormViewModel,d="update"===l&&!t.data.edits.modified||r.syncing||c.updating,p="update"===l?i.editFeature:i.createFeatures,m="update"===l?o.update:o.create,h="create-features"===l&&"create-new"===t.createFeatureState,u="create-features"===l?t.numPendingFeatures:0,g=u>1?S(i.createFeaturesTemplate,{numFeatures:u}):m,f=t.shouldShowAttachments,w=c.inputs.every((e=>!e.visible))&&!f?this._renderMessage(S(i.clickToFinishTemplate,{button:m})):T("div",{key:"panel-content-section",class:B.panelContentSection},this._renderOwnerAdminNoticeIfApplicable(t),T("div",{class:B.panelContentSectionGroup},this._featureForm.render(),f&&T("div",{key:"attachments"},T(b,{level:A(a)},i.attachments),this._attachments.render())));return T(s,{active:this._isPanelActive(e),key:"attribute-editing-panel",heading:p,headingLevel:a,handleBack:n},T("div",{key:"panel-content",class:this.classes(B.panelContent,{[B.panelContentScrimContainer]:h})},w,h&&T("calcite-scrim",null)),this._renderFooterActions([{clickHandler:this._onSave,disabled:d,label:g,type:"primary"},r.shouldShowDeleteButton?{...this._deleteButtonCommonInfo,clickHandler:this._onDelete,disabled:r.syncing,label:o.delete}:null]))}_renderOwnerAdminNoticeIfApplicable(e){if(e?.reliesOnOwnerAdminPrivileges)return T("calcite-notice",{open:!0,kind:"info",scale:"s",class:B.ownerAdminNotice},T("div",{slot:"message"},this.messages.ownerAdminNotice))}_renderAttachmentAdding(e){const{_attachments:t,EditorPanel:s,_onBack:i,headingLevel:o,messages:a,messagesCommon:n}=this;return T(s,{active:this._isPanelActive(e),key:"attachment-adding-panel",heading:a.addAttachment,headingLevel:o,handleBack:i},T("div",{class:B.panelContent},t.render()),this._renderFooterActions([{label:t.submitting?n.cancel:n.add,disabled:t.submitting||!t.selectedFile,type:"primary",clickHandler:this._onAttachmentAdd}]))}_renderAttachmentEditing(e){const{_attachments:t,EditorPanel:s,_onBack:i,activeWorkflow:o,headingLevel:a,messages:n,messagesCommon:r}=this;return o?T(s,{active:this._isPanelActive(e),key:"attachment-editing-panel",heading:n.editAttachment,headingLevel:a,handleBack:i},T("div",{class:B.panelContent},t.render()),o.shouldAllowAttachmentEditing?this._renderFooterActions([{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}_renderMessage(e){return T("div",{key:"panel-content-message",class:B.panelContentMessage},e)}_renderFooterActions(e){return T("div",{key:"footer-actions",slot:"footer",class:B.actions},e.filter(i).map((({type:e,disabled:t,class:s,clickHandler:i,label:o,...a},n)=>T("calcite-button",{key:`action-${n}`,slot:"footer-actions",class:s,disabled:t??!1,onclick:i,width:"full",...a},o))))}_renderPrompt(){const e=this._prompt;if(!e)return null;const{title:t,message:s,context:i,actions:o}=e,a=o.secondary;let n;switch(i){case"danger":n="danger";break;case"info":n="brand";break;default:n="neutral"}const r=T("calcite-button",{afterCreate:I,appearance:"solid",key:"prompt-primary-button",kind:n,onclick:o.primary.action,scale:"m",width:a?"half":"full"},o.primary.label),l=a&&T("calcite-button",{appearance:"outline",key:"prompt-secondary-button",kind:n,onclick:a.action,scale:"m",width:"half"},a.label);return T("calcite-scrim",null,T("div",{class:`${B.promptContainer}--${i}`},T("div",{class:B.promptHeader},T("calcite-icon",{icon:"exclamation-mark-triangle"}),T(b,{class:B.promptHeading,level:this.headingLevel},t)),T("div",{class:B.promptMessage},s),T("div",{class:B.promptDivider}),T("div",{class:B.promptActions},l,r)))}_renderLanding(e){const{EditorPanel:t,headingLevel:s,messages:i,viewModel:o}=this,{canUpdate:a}=o,n=this._featureTemplates.viewModel.numberOfFeatureTemplates,r=!a&&0===n;return T(t,{active:this._isPanelActive(e),key:"landing-panel",heading:i.widgetLabel,headingLevel:s},T("div",{class:B.panelContent},a&&T("div",{key:"edit-actions",class:B.panelContentSection},this._renderUpdateActions(e)),n>0&&T("div",{key:"create-actions",class:B.panelContentSection},this._renderCreateActions()),r&&T("div",{key:"no-content",class:B.panelContentMessage},i.noEditableLayers)),this._renderFooterHelpMessages())}_renderFooterHelpMessages(){const{activeWorkflow:e,messages:t,view:s}=this,i=e?.helpMessage,o=i?t["3d"===s?.type?"helpMessages3d":"helpMessages2d"]?.[i]:null;return o?T("div",{key:"footer-actions",slot:"footer",class:B.helpMessage},o):null}_renderUpdateActions(e){const{messages:t,messagesCommon:s}=this;return T("div",{key:"update-actions"},T(b,{level:A(this.headingLevel)},t.editFeatures),T("calcite-list",{selectionMode:"single",selectionAppearance:"border"},T("calcite-list-item",{selected:"awaiting-feature-to-update"===e,label:s.select,onCalciteListItemSelect:this._onToggleUpdateWorkflow},T("calcite-icon",{icon:"cursor",slot:"content-start"}))))}_renderCreateActions(){const{_featureTemplates:e,headingLevel:t,messages:s}=this;return T("div",{key:"create-actions"},T(b,{level:A(t)},s.createFeatures),T("div",{key:"templates",class:B.featureTemplatesContainer},e.render()))}_renderFeatureList(e){const{EditorPanel:t,_onBack:s,headingLevel:o,messages:a,messagesTemplates:n,viewModel:{activeWorkflow:r,editableItems:l}}=this;if("update"!==r?.type)return null;const c=r.data.candidates,d=S(a.multipleFeaturesTemplate,{total:c.length}),p=new Map;let m=0;c.map((e=>({label:this._getLabel(e),id:e.attributes[e.layer.objectIdField],data:e}))).filter((e=>{const{label:t,data:s}=e,i=this._filterText.toLowerCase(),{title:o}=s.layer,a=l.find((e=>e.layer===s.layer));if(!a)return null;const{attachmentsOnUpdateEnabled:n,supports:r}=a;return(r.includes("update")||r.includes("delete")||n)&&(!i||t?.toLowerCase().includes(i)||o?.toLowerCase().includes(i))})).filter(i).forEach((e=>{m++;const t=e.data.layer;p.has(t)?p.get(t)?.items.push(e):p.set(t,{id:`${t.id}`,label:t.title??"",items:[e]})}));const h=l.toArray().map((({layer:e})=>p.get(e))).filter(i),u=m>10||this._filterText.length>0;return T(t,{active:this._isPanelActive(e),key:"feature-list",heading:d,headingLevel:o,handleBack:s},T("div",{class:B.panelContent},T("div",{class:B.panelContentSection},k({id:this.id,enableListScroll:!1,filterEnabled:u,filterText:this._filterText,items:h,messages:{filterPlaceholder:n.filterPlaceholder,noItems:n.noItems,noMatches:n.noMatches},onItemMouseEnter:e=>this.viewModel.selectFeature(e.data),onItemMouseLeave:()=>this.viewModel.selectFeature(null),onItemSelect:e=>this.viewModel.selectFeature(e.data,!0),onFilterChange:e=>this._filterText=e}))))}_isPanelActive(e){return this.viewModel.state===e}_renderSettings(){const e=this.visibleElements,t=e.snappingControls,s=e.sketchTooltipControls;return t||s?T("calcite-accordion",{class:B.settingsContainer,appearance:"transparent"},T("calcite-accordion-item",{heading:this.messagesCommon?.settings,iconStart:"gear"},s&&T(E,{tooltipOptions:this.tooltipOptions}),t&&T(M,{snappingOptions:this.snappingOptions,view:this.view,visibleElements:e.snappingControlsElements,afterCreate:e=>e.layerListOpen=!1}))):null}_getLabel(e){const t=e.layer;if(!t)return null;const{objectIdField:s}=t,{attributes:i}=e,o=m(t);return o&&i[o]&&`${i[o]}`||S(this.messages.untitledFeatureTemplate,{id:i[s]})}_onSave(){this.viewModel.save()}_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}}}}async _onToggleUpdateWorkflow(){const{viewModel:e}=this;e.canUpdate&&(e.activeWorkflow&&"awaiting-feature-to-update"===e.state?await e.cancelWorkflow():await e.startUpdateWorkflowAtFeatureSelection())}async _onBack(e){return e?.stopPropagation(),this.viewModel.back()}_onAttachmentAdd(){const{activeWorkflow:e}=this.viewModel;e&&("create-features"===e.type?(this._attachments.addFile(),e.previous()):this._attachments.addAttachment().then((()=>e.previous())))}_onAttachmentUpdate(){const{activeWorkflow:e}=this.viewModel;e&&("create-features"===e.type?(this._attachments.updateFile(),e.previous()):this._attachments.updateAttachment().then((()=>e.previous())))}_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}}}}};e([c()],D.prototype,"_featureForm",void 0),e([c()],D.prototype,"_attachments",void 0),e([c()],D.prototype,"_featureTemplates",void 0),e([c()],D.prototype,"_filterText",void 0),e([c()],D.prototype,"_prompt",void 0),e([c()],D.prototype,"_spinner",void 0),e([c()],D.prototype,"_deleteButtonCommonInfo",null),e([c({readOnly:!0})],D.prototype,"activeWorkflow",null),e([c()],D.prototype,"allowedWorkflows",null),e([c()],D.prototype,"useDeprecatedCreateWorkflow",void 0),e([c()],D.prototype,"headingLevel",void 0),e([c()],D.prototype,"iconClass",void 0),e([c()],D.prototype,"label",null),e([c()],D.prototype,"labelOptions",null),e([c()],D.prototype,"layerInfos",null),e([c(),F("esri/widgets/Editor/t9n/Editor")],D.prototype,"messages",void 0),e([c(),F("esri/t9n/common")],D.prototype,"messagesCommon",void 0),e([c(),F("esri/widgets/FeatureTemplates/t9n/FeatureTemplates")],D.prototype,"messagesTemplates",void 0),e([c()],D.prototype,"snappingOptions",null),e([c()],D.prototype,"tooltipOptions",null),e([c()],D.prototype,"supportingWidgetDefaults",void 0),e([c()],D.prototype,"view",null),e([c(),W(["workflow-cancel","workflow-commit"])],D.prototype,"viewModel",void 0),e([c()],D.prototype,"visibleElements",void 0),e([d("visibleElements")],D.prototype,"castVisibleElements",null),e([C()],D.prototype,"_onSave",null),e([C()],D.prototype,"_onDelete",null),e([C()],D.prototype,"_onToggleUpdateWorkflow",null),e([C()],D.prototype,"_onBack",null),e([C()],D.prototype,"_onAttachmentAdd",null),e([C()],D.prototype,"_onAttachmentUpdate",null),e([C()],D.prototype,"_onAttachmentDelete",null),D=e([p($)],D);const x=D;export{x as default};
5
+ import{_ as e}from"../chunks/tslib.es6.js";import"../intl.js";import{HandleOwnerMixin as t}from"../core/HandleOwner.js";import s from"../core/Logger.js";import{isSome as a}from"../core/maybe.js";import{createDeferred as o}from"../core/promiseUtils.js";import{watch as i,on as n,when as r,initial as l}from"../core/reactiveUtils.js";import{property as c}from"../core/accessorSupport/decorators/property.js";import{cast as d}from"../core/accessorSupport/decorators/cast.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as p}from"../core/accessorSupport/decorators/subclass.js";import{getDisplayFieldName as m}from"../layers/support/fieldUtils.js";import u from"./Attachments.js";import h from"./FeatureForm.js";import g from"./FeatureTemplates.js";import f from"./Spinner.js";import _ from"./Widget.js";import{workflowDeprecation as w}from"./Editor/deprecationUtils.js";import v from"./Editor/EditorViewModel.js";import{ItemList as y}from"./FeatureTemplates/ItemList.js";import{loadCalciteComponents as k}from"./support/componentsUtils.js";import{Heading as b,incrementHeadingLevel as C}from"./support/Heading.js";import A from"./support/SnappingControls.js";import{accessibleHandler as M}from"./support/decorators/accessibleHandler.js";import{messageBundle as F}from"./support/decorators/messageBundle.js";import{vmEvent as T}from"./support/decorators/vmEvent.js";import{tsx as W}from"./support/jsxFactory.js";import"./support/widgetUtils.js";import{SketchTooltipControls as E}from"./support/SketchTooltipControls/SketchTooltipControls.js";import{substitute as S}from"../intl/substitute.js";const L="esri-editor",j=`${L}__panel`,I=`${L}__prompt`,P={base:`${L} esri-widget esri-widget--panel`,message:`${L}__message`,actions:`${L}__actions`,helpMessage:`${L}__help-message`,progressBar:`${L}__progress-bar`,panelToolbar:`${j}-toolbar`,panelContent:`${j}-content`,panelContentMessage:`${j}-content__message`,panelContentSection:`${j}-content__section`,panelContentSectionGroup:`${j}-content__section__group`,panelContentScrimContainer:`${j}-content__scrim-container`,settingsContainer:`${L}__settings`,updateFeaturesActionButtons:`${L}__update-features-action-buttons`,updateFeaturesActionButtonsButton:`${L}__update-features-action-buttons--button`,featureTemplatesContainer:`${L}__feature-templates-container`,ownerAdminNotice:`${L}__owner-admin-notice`,templateItemContentEnd:`${L}__template-item-content-end`,templateItemContentEndSuccess:`${L}__template-item-content-end--success`,templateItemContentEndError:`${L}__template-item-content-end--error`,templateItemLoader:`${L}__template-item-loader`,promptContainer:I,promptHeader:`${I}__header`,promptHeading:`${I}__header__heading`,promptMessage:`${I}__message`,promptDivider:`${I}__divider`,promptActions:`${I}__actions`,warningIcon:"esri-icon-notice-triangle",widgetIcon:"esri-icon-edit"},U={undoRedoButtons:!1,snappingControls:!0,snappingControlsElements:{header:!1,enabledToggle:!0,selfEnabledToggle:!0,featureEnabledToggle:!0,layerList:!0},sketchTooltipControls:!0};function B(e){e.focus()}const $="esri.widgets.Editor",D=s.getLogger($);let O=class extends(t(_)){constructor(e,t){super(e,t),this._featureForm=new h,this._attachments=new u({visibleElements:{addSubmitButton:!1,cancelAddButton:!1,cancelUpdateButton:!1,deleteButton:!1,errorMessage:!1,progressBar:!1,updateButton:!1}}),this._featureTemplates=new g({enableListScroll:!1,renderItemContentEnd:e=>this._renderTemplateContentEnd(e),renderItemDescription:e=>this._renderTemplateDescription(e),renderItemLabel:e=>this._renderTemplateLabel(e)}),this._filterText="",this._prompt=null,this._spinner=new f,this.useDeprecatedCreateWorkflow=!1,this.headingLevel=4,this.iconClass=P.widgetIcon,this.messages=null,this.messagesCommon=null,this.messagesTemplates=null,this.supportingWidgetDefaults=null,this.viewModel=new v,this.visibleElements={...U},this.EditorPanel=({handleBack:e,heading:t,headingLevel:s,key:a},...o)=>{const{messagesCommon:i,viewModel:n,visibleElements:r}=this,l=n.sketchViewModel,c=n.syncing||this._attachments.submitting;return W("calcite-flow-item",{closable:!1,heading:t,headingLevel:s,key:a,loading:c,onCalciteFlowItemBack:e??void 0},W("div",{key:"panel-toolbar",class:P.panelToolbar},this._renderSettings(),r.undoRedoButtons&&[W("calcite-button",{key:"undo-button",label:i.undo,appearance:"transparent",kind:"neutral",alignment:"center",iconStart:"undo",scale:"l",disabled:!l.canUndo(),onclick:l.undo.bind(l)},i.undo),W("calcite-button",{key:"redo-button",label:i.redo,appearance:"transparent",kind:"neutral",alignment:"center",iconStart:"redo",scale:"l",disabled:!l.canRedo(),onclick:l.redo.bind(l)},i.redo)]),...o)},this._showDiscardWarning=()=>{const{messages:e}=this,t="create"===this.activeWorkflow?.type,s=o();return this._prompt={title:e[t?"cancelAddTitle":"cancelEditTitle"],message:e[t?"cancelAddWarningMessage":"cancelEditWarningMessage"],context:"danger",actions:{primary:{label:e[t?"discardFeature":"discardEdits"],action:()=>{s.resolve(),this._clearPrompt()}},secondary:{label:e[t?"continueAdding":"continueEditing"],action:()=>{s.reject(),this._clearPrompt()}}}},s.promise},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.previous(),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},this._onBack=this._onBack.bind(this),this._onSave=this._onSave.bind(this),this._onDelete=this._onDelete.bind(this),this._onToggleUpdateWorkflow=this._onToggleUpdateWorkflow.bind(this),this._onAttachmentAdd=this._onAttachmentAdd.bind(this),this._onAttachmentUpdate=this._onAttachmentUpdate.bind(this),this._onAttachmentDelete=this._onAttachmentDelete.bind(this)}initialize(){this.addHandles([i((()=>C(this.headingLevel)),(e=>{this._featureForm.headingLevel=e,this._featureTemplates.headingLevel=e}),l),n((()=>this.viewModel.featureTemplatesViewModel),"select",(async({item:e,oldItem:t})=>{const s=this.viewModel;if(s.activeWorkflow)try{await s.cancelWorkflow({force:!s.hasPendingEdits})}catch{return}if(!e||e.id===t?.id)return;const a={layer:e.layer,template:e.template};if(e.supportsUpload)return this.viewModel.startCreateFeaturesWorkflow(a);this.useDeprecatedCreateWorkflow?this.startCreateWorkflowAtFeatureCreation(a):this.startCreateFeaturesWorkflowAtFeatureCreation(a)})),i((()=>this.viewModel.selectedTemplateItem),(e=>this._featureTemplates.select(e,!1))),n((()=>this.viewModel.activeWorkflow),"cancel-request",(({controller:e})=>{const{messages:t,messagesCommon:s}=this;this._prompt={title:t.cancelRequestTitle,message:t.cancelRequestWarningMessage,context:"danger",actions:{primary:{label:s.form.yes,action:()=>{e.allow(),this._clearPrompt()}},secondary:{label:s.form.no,action:()=>{e.deny(),this._clearPrompt()}}}}})),i((()=>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.showDiscardPrompt=this._showDiscardWarning}),l),i((()=>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"})}),l),r((()=>this.supportingWidgetDefaults),(e=>{this._featureForm.set(e.featureForm),this._attachments.set(e.attachments),this._featureTemplates.set(e.featureTemplates),this.viewModel.sketchViewModel.set(e.sketch)}),l),r((()=>this._attachments?.error),(e=>this._onAttachmentsError(e))),r((()=>this.viewModel?.failures),(e=>{const{messages:t}=this,[{error:s,retry:a,cancel:o}]=e;this._prompt={title:t.errorWarningTitle,message:S(t.errorWarningMessageTemplate,{errorMessage:s.message}),context:"warning",actions:{primary:{label:t.retry,action:()=>{a(),this._clearPrompt()}},secondary:{label:t.ignore,action:()=>{o(),this._clearPrompt()}}}}})),i((()=>this.viewModel?.state),(e=>{switch(e){case"awaiting-feature-to-update":case"ready":case"disabled":this._filterText="",this._featureTemplates.filterText=""}})),i((()=>this.viewModel.featureFormDisabled),(e=>this._featureForm.disabled=e)),n((()=>this.view),"key-down",(e=>{"Escape"===e.key&&this.viewModel.back()}))])}destroy(){this._attachments.destroy(),this._featureForm.destroy(),this._featureTemplates.destroy()}loadDependencies(){return k({accordion:()=>import("@esri/calcite-components/dist/components/calcite-accordion.js"),"accordion-item":()=>import("@esri/calcite-components/dist/components/calcite-accordion-item.js"),button:()=>import("@esri/calcite-components/dist/components/calcite-button.js"),"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-item":()=>import("@esri/calcite-components/dist/components/calcite-list-item.js"),list:()=>import("@esri/calcite-components/dist/components/calcite-list.js"),loader:()=>import("@esri/calcite-components/dist/components/calcite-loader.js"),notice:()=>import("@esri/calcite-components/dist/components/calcite-notice.js"),scrim:()=>import("@esri/calcite-components/dist/components/calcite-scrim.js")})}get _deleteButtonCommonInfo(){return{appearance:"outline",kind:"danger",type:"primary"}}get activeWorkflow(){return this.viewModel.activeWorkflow}get allowedWorkflows(){return this.viewModel.allowedWorkflows}set allowedWorkflows(e){this.viewModel.allowedWorkflows=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{...U,...e,snappingControlsElements:{...U.snappingControlsElements,...e?.snappingControlsElements}}}startCreateWorkflowAtFeatureTypeSelection(){return w(D,"startCreateWorkflowAtFeatureTypeSelection","startCreateFeaturesWorkflowAtFeatureTypeSelection"),this.viewModel.startCreateWorkflowAtFeatureTypeSelection()}startCreateFeaturesWorkflowAtFeatureTypeSelection(){return this.viewModel.startCreateFeaturesWorkflowAtFeatureTypeSelection()}startCreateWorkflowAtFeatureCreation(e){return w(D,"startCreateWorkflowAtFeatureCreation","startCreateFeaturesWorkflowAtFeatureCreation"),this.viewModel.startCreateWorkflowAtFeatureCreation(e)}startCreateFeaturesWorkflowAtFeatureCreation(e){return this.viewModel.startCreateFeaturesWorkflowAtFeatureCreation(e)}startCreateWorkflowAtFeatureEdit(e){return w(D,"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;if(!e)return W("div",{key:"empty",class:P.base});const{state:t}=e;return W("div",{key:"base",class:P.base},W("calcite-flow",{key:"flow"},e.pageStack.map((e=>this._renderPage(e,t))),this._renderPage(e.page,t)),this._renderPrompt())}_renderPage(e,t){switch(e){case"disabled":break;case"ready":return this._renderLanding(t);case"awaiting-feature-creation-info":return this._renderTemplates(t);case"creating-features":case"editing-new-feature":case"editing-existing-feature":return this._renderAttributeEditing(t);case"awaiting-update-feature-candidate":return this._renderFeatureList(t);case"adding-attachment":return this._renderAttachmentAdding(t);case"editing-attachment":return this._renderAttachmentEditing(t)}return W("div",null)}_renderTemplates(e){const{EditorPanel:t,headingLevel:s,messages:a,_onBack:o}=this;return W(t,{active:this._isPanelActive(e),key:"templates-panel",handleBack:o,heading:a.selectTemplate,headingLevel:s},W("div",{key:"feature-templates",class:P.panelContent},this._featureTemplates.render()))}_renderAttributeEditing(e){const{activeWorkflow:t,EditorPanel:s,messages:a,messagesCommon:o,headingLevel:i,_onBack:n,viewModel:r}=this;if(!t)return null;const l=t.type,c=r.featureFormViewModel,d="update"===l&&!t.data.edits.modified||r.syncing||c.updating,p="update"===l?a.editFeature:a.createFeatures,m="update"===l?o.update:o.create,u="create-features"===l&&"create-new"===t.createFeatureState,h="create-features"===l?t.numPendingFeatures:0,g=h>1?S(a.createFeaturesTemplate,{numFeatures:h}):m,f=t.shouldShowAttachments,_=c.inputs.every((e=>!e.visible))&&!f?this._renderMessage(S(a.clickToFinishTemplate,{button:m})):W("div",{key:"panel-content-section",class:P.panelContentSection},this._renderOwnerAdminNoticeIfApplicable(t),W("div",{class:P.panelContentSectionGroup},this._featureForm.render(),f&&W("div",{key:"attachments"},W(b,{level:C(i)},a.attachments),this._attachments.render())));return W(s,{active:this._isPanelActive(e),key:"attribute-editing-panel",heading:p,headingLevel:i,handleBack:n},W("div",{key:"panel-content",class:this.classes(P.panelContent,{[P.panelContentScrimContainer]:u})},_,u&&W("calcite-scrim",null)),this._renderFooterActions([{clickHandler:this._onSave,disabled:d,label:g,type:"primary"},r.shouldShowDeleteButton?{...this._deleteButtonCommonInfo,clickHandler:this._onDelete,disabled:r.syncing,label:o.delete}:null]))}_renderOwnerAdminNoticeIfApplicable(e){if(e?.reliesOnOwnerAdminPrivileges)return W("calcite-notice",{open:!0,kind:"info",scale:"s",class:P.ownerAdminNotice},W("div",{slot:"message"},this.messages.ownerAdminNotice))}_renderAttachmentAdding(e){const{_attachments:t,EditorPanel:s,_onBack:a,headingLevel:o,messages:i,messagesCommon:n}=this;return W(s,{active:this._isPanelActive(e),key:"attachment-adding-panel",heading:i.addAttachment,headingLevel:o,handleBack:a},W("div",{key:"attachments",class:P.panelContent},t.render()),this._renderFooterActions([{label:t.submitting?n.cancel:n.add,disabled:t.submitting||!t.selectedFile,type:"primary",clickHandler:this._onAttachmentAdd}]))}_renderAttachmentEditing(e){const{_attachments:t,EditorPanel:s,_onBack:a,activeWorkflow:o,headingLevel:i,messages:n,messagesCommon:r}=this;return o?W(s,{active:this._isPanelActive(e),key:"attachment-editing-panel",heading:n.editAttachment,headingLevel:i,handleBack:a},W("div",{key:"attachments",class:P.panelContent},t.render()),o.shouldAllowAttachmentEditing?this._renderFooterActions([{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}_renderMessage(e){return W("div",{key:"panel-content-message",class:P.panelContentMessage},e)}_renderFooterActions(e){return W("div",{key:"footer-actions",slot:"footer",class:P.actions},e.filter(a).map((({type:e,disabled:t,class:s,clickHandler:a,label:o,...i},n)=>W("calcite-button",{key:`action-${n}`,slot:"footer-actions",class:s,disabled:t??!1,onclick:a,width:"full",...i},o))))}_renderPrompt(){const e=this._prompt;if(!e)return null;const{title:t,message:s,context:a,actions:o}=e,i=o.secondary;let n;switch(a){case"danger":n="danger";break;case"info":n="brand";break;default:n="neutral"}const r=W("calcite-button",{afterCreate:B,appearance:"solid",key:"prompt-primary-button",kind:n,onclick:o.primary.action,scale:"m",width:i?"half":"full"},o.primary.label),l=i&&W("calcite-button",{appearance:"outline",key:"prompt-secondary-button",kind:n,onclick:i.action,scale:"m",width:"half"},i.label);return W("calcite-scrim",{key:"prompt"},W("div",{class:`${P.promptContainer}--${a}`},W("div",{class:P.promptHeader},W("calcite-icon",{icon:"exclamation-mark-triangle"}),W(b,{class:P.promptHeading,level:this.headingLevel},t)),W("div",{class:P.promptMessage},s),W("div",{class:P.promptDivider}),W("div",{class:P.promptActions},l,r)))}_renderLanding(e){const{EditorPanel:t,headingLevel:s,messages:a,viewModel:o}=this,{canUpdate:i}=o,n=this._featureTemplates.viewModel.numberOfFeatureTemplates,r=!i&&0===n;return W(t,{active:this._isPanelActive(e),key:"landing-panel",heading:a.widgetLabel,headingLevel:s},W("div",{key:"landing-content",class:P.panelContent},i&&W("div",{key:"edit-actions",class:P.panelContentSection},this._renderUpdateActions(e)),n>0&&W("div",{key:"create-actions",class:P.panelContentSection},this._renderCreateActions()),r&&W("div",{key:"no-content",class:P.panelContentMessage},a.noEditableLayers)),this._renderFooterHelpMessages())}_renderFooterHelpMessages(){const{activeWorkflow:e,messages:t,view:s}=this,a=e?.helpMessage,o=a?t["3d"===s?.type?"helpMessages3d":"helpMessages2d"]?.[a]:null;return o?W("div",{key:"footer-actions",slot:"footer",class:P.helpMessage},o):null}_renderUpdateActions(e){const{messages:t,messagesCommon:s}=this;return W("div",{key:"update-actions"},W(b,{level:C(this.headingLevel)},t.editFeatures),W("calcite-list",{selectionMode:"single",selectionAppearance:"border"},W("calcite-list-item",{selected:"awaiting-feature-to-update"===e,label:s.select,onCalciteListItemSelect:this._onToggleUpdateWorkflow},W("calcite-icon",{icon:"cursor",slot:"content-start"}))))}_renderCreateActions(){const{_featureTemplates:e,headingLevel:t,messages:s}=this;return W("div",{key:"create-actions"},W(b,{level:C(t)},s.createFeatures),W("div",{key:"templates",class:P.featureTemplatesContainer},e.render()))}_renderTemplateLabel(e){return e.label}_renderTemplateDescription(e){return"pending"===this._getUploadForTemplateItem(e)?.state?this.messages?.uploadingModel:null}_renderTemplateContentEnd(e){const t=this._getUploadForTemplateItem(e),s=W("calcite-icon",{key:"upload-icon",class:P.templateItemContentEnd,icon:"upload-to"});if(!t)return e.supportsUpload?s:null;switch(t.state){case"success":return W("calcite-icon",{key:"success-icon",class:this.classes(P.templateItemContentEnd,P.templateItemContentEndSuccess),icon:"check"});case"error":return W("calcite-icon",{key:"error-icon",class:this.classes(P.templateItemContentEnd,P.templateItemContentEndError),icon:"exclamation-mark-circle-f"});case"pending":return W("calcite-loader",{class:P.templateItemLoader,inline:!0,key:"loader",label:"",scale:"s",type:"indeterminate"});case"cancelled":case"default":return s}}_getUploadForTemplateItem(e){const t=this.activeWorkflow;if("create-features"!==t?.type)return null;const{data:s}=t,{creationInfo:a,upload:o}=s;return a?.template===e.template&&a?.layer===e.layer?o:null}_renderFeatureList(e){const{EditorPanel:t,_onBack:s,headingLevel:o,messages:i,messagesTemplates:n,viewModel:{activeWorkflow:r,editableItems:l}}=this;if("update"!==r?.type)return null;const c=r.data.candidates,d=S(i.multipleFeaturesTemplate,{total:c.length}),p=new Map;let m=0;c.map((e=>({label:this._getLabel(e),id:e.attributes[e.layer.objectIdField],data:e}))).filter((e=>{const{label:t,data:s}=e,a=this._filterText.toLowerCase(),{title:o}=s.layer,i=l.find((e=>e.layer===s.layer));if(!i)return null;const{attachmentsOnUpdateEnabled:n,supports:r}=i;return(r.includes("update")||r.includes("delete")||n)&&(!a||t?.toLowerCase().includes(a)||o?.toLowerCase().includes(a))})).filter(a).forEach((e=>{m++;const t=e.data.layer;p.has(t)?p.get(t)?.items.push(e):p.set(t,{id:`${t.id}`,label:t.title??"",items:[e]})}));const u=l.toArray().map((({layer:e})=>p.get(e))).filter(a),h=m>10||this._filterText.length>0;return W(t,{active:this._isPanelActive(e),key:"feature-list",heading:d,headingLevel:o,handleBack:s},W("div",{key:"feature-list",class:P.panelContent},W("div",{class:P.panelContentSection},y({enableListScroll:!1,filterEnabled:h,filterText:this._filterText,id:this.id,items:u,messages:{filterPlaceholder:n.filterPlaceholder,noItems:n.noItems,noMatches:n.noMatches},onFilterChange:e=>this._filterText=e,onItemMouseEnter:e=>this.viewModel.selectFeature(e.data),onItemMouseLeave:()=>this.viewModel.selectFeature(null),onItemSelect:e=>this.viewModel.selectFeature(e.data,!0)}))))}_isPanelActive(e){return this.viewModel.state===e}_renderSettings(){const e=this.visibleElements,t=e.snappingControls,s=e.sketchTooltipControls;return t||s?W("calcite-accordion",{key:"settings",class:P.settingsContainer,appearance:"transparent"},W("calcite-accordion-item",{heading:this.messagesCommon?.settings,iconStart:"gear"},s&&W(E,{tooltipOptions:this.tooltipOptions}),t&&W(A,{snappingOptions:this.snappingOptions,view:this.view,visibleElements:e.snappingControlsElements,afterCreate:e=>e.layerListOpen=!1}))):null}_getLabel(e){const t=e.layer;if(!t)return null;const{objectIdField:s}=t,{attributes:a}=e,o=m(t);return o&&a[o]&&`${a[o]}`||S(this.messages.untitledFeatureTemplate,{id:a[s]})}_onSave(){this.viewModel.save()}_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}}}}async _onToggleUpdateWorkflow(){const{viewModel:e}=this;e.canUpdate&&(e.activeWorkflow&&"awaiting-feature-to-update"===e.state?await e.cancelWorkflow():await e.startUpdateWorkflowAtFeatureSelection())}async _onBack(e){return e?.stopPropagation(),this.viewModel.back()}_onAttachmentAdd(){const{activeWorkflow:e}=this.viewModel;e&&("create-features"===e.type?(this._attachments.addFile(),e.previous()):this._attachments.addAttachment().then((()=>e.previous())))}_onAttachmentUpdate(){const{activeWorkflow:e}=this.viewModel;e&&("create-features"===e.type?(this._attachments.updateFile(),e.previous()):this._attachments.updateAttachment().then((()=>e.previous())))}_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}}}}};e([c()],O.prototype,"_featureForm",void 0),e([c()],O.prototype,"_attachments",void 0),e([c()],O.prototype,"_featureTemplates",void 0),e([c()],O.prototype,"_filterText",void 0),e([c()],O.prototype,"_prompt",void 0),e([c()],O.prototype,"_spinner",void 0),e([c()],O.prototype,"_deleteButtonCommonInfo",null),e([c({readOnly:!0})],O.prototype,"activeWorkflow",null),e([c()],O.prototype,"allowedWorkflows",null),e([c()],O.prototype,"useDeprecatedCreateWorkflow",void 0),e([c()],O.prototype,"headingLevel",void 0),e([c()],O.prototype,"iconClass",void 0),e([c()],O.prototype,"label",null),e([c()],O.prototype,"labelOptions",null),e([c()],O.prototype,"layerInfos",null),e([c(),F("esri/widgets/Editor/t9n/Editor")],O.prototype,"messages",void 0),e([c(),F("esri/t9n/common")],O.prototype,"messagesCommon",void 0),e([c(),F("esri/widgets/FeatureTemplates/t9n/FeatureTemplates")],O.prototype,"messagesTemplates",void 0),e([c()],O.prototype,"snappingOptions",null),e([c()],O.prototype,"tooltipOptions",null),e([c()],O.prototype,"supportingWidgetDefaults",void 0),e([c()],O.prototype,"view",null),e([c(),T(["workflow-cancel","workflow-commit"])],O.prototype,"viewModel",void 0),e([c()],O.prototype,"visibleElements",void 0),e([d("visibleElements")],O.prototype,"castVisibleElements",null),e([M()],O.prototype,"_onSave",null),e([M()],O.prototype,"_onDelete",null),e([M()],O.prototype,"_onToggleUpdateWorkflow",null),e([M()],O.prototype,"_onBack",null),e([M()],O.prototype,"_onAttachmentAdd",null),e([M()],O.prototype,"_onAttachmentUpdate",null),e([M()],O.prototype,"_onAttachmentDelete",null),O=e([p($)],O);const x=O;export{x 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.27/esri/copyright.txt for details.
4
4
  */
5
- import{Heading as e}from"../support/Heading.js";import{classes as t,isActivationKey as n}from"../support/widgetUtils.js";import{tsx as i}from"../support/jsxFactory.js";const o="esri-item-list",l={base:o,list:`${o}__list`,group:`${o}__group`,scroller:`${o}__scroller`,groupHeader:`${o}__group__header`,item:`${o}__list-item`,itemSelected:`${o}__list-item--selected`,itemContainer:`${o}__list-item-container`,itemLabel:`${o}__list-item-label`,itemIcon:`${o}__list-item-icon`,noMatchesMessage:`${o}__no-matches-message`,noItemsMessage:`${o}__no-items-message`,filterContainer:`${o}__filter-container`,filterContainerSticky:`${o}__filter-container--sticky`,filterPlaceholder:`${o}__filter-placeholder`,filterInput:`${o}__filter-input`,filterPlaceholderText:`${o}__filter-placeholder-text`,searchIcon:"esri-icon-search",widget:"esri-widget",input:"esri-input"},r=4;function s(e){const{filterEnabled:t=!0,filterText:n="",headingLevel:o=r,id:l,identify:s,items:a,messages:d,onFilterChange:u,onItemMouseEnter:I,onItemMouseLeave:f,onItemSelect:g,renderIcon:p,selectedItem:_,selectionMode:v="none"}=e,h=e.enableListScroll??!0;return i("div",{key:l},i("calcite-list",{selectionMode:v,selectionAppearance:"border"},t?m({filterText:n,messages:d,onFilterChange:u,id:l}):null,c({enableListScroll:h,identify:s,items:a,selectedItem:_,messages:d,filterText:n,headingLevel:o,renderIcon:p,onItemMouseLeave:f,onItemMouseEnter:I,onItemSelect:g})))}function a(e){return!!e.items}function c(e){const{headingLevel:t,identify:n,items:o,renderIcon:r,filterText:s,onItemMouseLeave:c,onItemMouseEnter:m,onItemSelect:u,selectedItem:I}=e,g=e.enableListScroll?l.scroller:void 0;return 0===o.length?i("div",{class:l.noMatchesMessage,key:"no-matches"},e.messages.noMatches):i("div",{class:g,key:"item-container"},o.map((e=>a(e)?f({group:e,filterText:s,headingLevel:t,identify:n,onItemMouseLeave:c,onItemMouseEnter:m,onItemSelect:u,renderIcon:r,selectedItem:I}):d({item:e,identify:n,grouped:!0,onItemMouseLeave:c,onItemMouseEnter:m,onItemSelect:u,renderIcon:r,filterText:s,selectedItem:I}))))}function m(e){const{messages:t,filterText:n,enableListScroll:o}=e;return i("div",{key:"filter",class:o?void 0:l.filterContainerSticky},i("calcite-input",{onCalciteInputInput:t=>{const n=t.currentTarget;e.onFilterChange&&e.onFilterChange(n.value)},placeholder:t.filterPlaceholder,value:n,type:"search"}))}function d({grouped:e,identify:o,item:r,onItemMouseEnter:s,onItemMouseLeave:a,onItemSelect:c,renderIcon:m,selectedItem:d}){const f=u(r,o),g=f===u(d,o);return i("calcite-list-item",{"aria-level":e?"2":"",class:t(l.item,g?l.itemSelected:""),"data-item":r,key:f,label:r.label??void 0,selected:g,tabIndex:0,onCalciteListItemSelect:e=>c?.(I(e)),onmouseenter:e=>s?.(I(e)),onkeydown:e=>n(e.key)&&c?.(I(e)),onmouseleave:e=>a?.(I(e))},i("div",{class:l.itemIcon,slot:"content-start"},m?.({item:r})))}function u(e,t){return e?`${t?.(e)||e.id}__${e.label}`:""}function I(e){return e.currentTarget["data-item"]}function f(t){const{group:n,headingLevel:o=r,...s}=t;return i("div",{class:l.group,key:n.label??void 0},i(e,{level:o,class:l.groupHeader},n.label),n.items.map((e=>d({...s,item:e,grouped:!0}))))}export{s as ItemList,f as renderGroup,d as renderItem};
5
+ import{Heading as e}from"../support/Heading.js";import{classes as t,isActivationKey as n}from"../support/widgetUtils.js";import{tsx as i}from"../support/jsxFactory.js";const r="esri-item-list",l={base:r,list:`${r}__list`,group:`${r}__group`,scroller:`${r}__scroller`,scrollerEnabled:`${r}__scroller--enabled`,groupHeader:`${r}__group__header`,item:`${r}__list-item`,itemIcon:`${r}__list-item-icon`,itemIconSuccess:`${r}__list-item-icon--success`,itemIconError:`${r}__list-item-icon--error`,itemContentEnd:`${r}__list-item-content-end`,itemLoader:`${r}__list-item-loader`,noMatchesMessage:`${r}__no-matches-message`,noItemsMessage:`${r}__no-items-message`,filterContainer:`${r}__filter-container`,filterContainerSticky:`${r}__filter-container--sticky`,filterPlaceholder:`${r}__filter-placeholder`,filterInput:`${r}__filter-input`,filterPlaceholderText:`${r}__filter-placeholder-text`,searchIcon:"esri-icon-search",widget:"esri-widget",input:"esri-input"},o=4;function s(e){const{filterText:t="",id:n,messages:r,onFilterChange:l,...o}=e;return i("div",{key:n},e.filterEnabled??1?d({filterText:t,id:n,messages:r,onFilterChange:l}):null,a({...o,enableListScroll:e.enableListScroll??!0,filterText:t,messages:r}))}function c(e){return!!e.items}function a(e){const{headingLevel:n,items:r,...o}=e;return 0===r.length?i("div",{class:l.noMatchesMessage,key:"no-matches"},e.messages.noMatches):i("div",{class:t({[l.scroller]:!0,[l.scrollerEnabled]:!!e.enableListScroll}),key:"item-container"},r.map((e=>c(e)?p({...o,group:e,headingLevel:n}):m({...o,grouped:!0,item:e}))))}function d(e){const{messages:t,filterText:n,enableListScroll:r}=e;return i("div",{key:"filter",class:r?void 0:l.filterContainerSticky},i("calcite-input",{onCalciteInputInput:t=>{const n=t.currentTarget;e.onFilterChange&&e.onFilterChange(n.value)},placeholder:t.filterPlaceholder,value:n,type:"search"}))}function m({grouped:e,identify:t,item:r,onItemMouseEnter:o,onItemMouseLeave:s,onItemSelect:c,renderIcon:a,renderItemContent:d,renderItemContentEnd:m,renderItemLabel:p,renderItemDescription:g,selectedItem:f}){const h=u(r,t),v=h===u(f,t),I=d?.(r),$=m?.(r);return i("calcite-list-item",{"aria-level":e?"2":"",class:l.item,"data-item":r,key:h,label:I?void 0:p?.(r)??r.label??void 0,description:I?void 0:g?.(r)??void 0,selected:v,tabIndex:0,afterUpdate:e=>{e.selected=v},onCalciteListItemSelect:e=>c?.(_(e)),onmouseenter:e=>o?.(_(e)),onkeydown:e=>n(e.key)&&c?.(_(e)),onmouseleave:e=>s?.(_(e))},i("div",{key:"content-start",class:l.itemIcon,slot:"content-start"},a?.(r)),I?i("div",{key:"content",slot:"content"},I):null,$?i("div",{key:"content-end",class:l.itemContentEnd,slot:"content-end"},$):null)}function u(e,t){return e?`${t?.(e)||e.id}__${e.label}`:""}function _(e){return e.currentTarget["data-item"]}function p(t){const{group:n,headingLevel:r=o,selectionMode:s="none",...c}=t;return i("div",{class:l.group,key:n.label??void 0},i(e,{level:r,class:l.groupHeader},n.label),i("calcite-list",{selectionMode:s,selectionAppearance:"border"},n.items.map((e=>m({...c,item:e,grouped:!0})))))}export{s as ItemList,p as renderGroup,m as renderItem};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../../chunks/tslib.es6.js";import e from"../../Graphic.js";import r from"../../core/Accessor.js";import{HandleOwnerMixin as i}from"../../core/HandleOwner.js";import{watch as s,initial as l}from"../../core/reactiveUtils.js";import{property as o}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as n}from"../../core/accessorSupport/decorators/subclass.js";import{renderPreviewHTML as a}from"../../symbols/support/symbolUtils.js";var p;const m="esri.widgets.FeatureTemplates.TemplateItem";let u=p=class extends(i(r)){constructor(t){super(t),this._activeFetchInfo={id:null,request:null},this.layer=null,this.template=null,this.thumbnail=null}initialize(){this.handles.add(s((()=>{const{layer:t}=this;return[t&&"renderer"in t?t.renderer:null,this.template]}),(()=>{this._activeFetchInfo.id=null,this._activeFetchInfo.request=null,this._set("thumbnail",null)}),l))}get description(){return this.template?.description}set description(t){this.template&&(this.template.description=t)}get label(){return this.template?.name}set label(t){this.template&&(this.template.name=t)}get id(){return`${this.label??""}–${this.layer?.id}`}clone(){const t=null!=this.thumbnail?this.thumbnail.cloneNode(!0):null,e=new p({layer:this.layer,template:this.template});return e._set("thumbnail",t),e}static async fetchThumbnail(t,e){const r=await c(t,e);if(null==r)return null;const i={maxSize:36};"dictionary"===t.renderer?.type&&(i.fieldMap=t.renderer.fieldMap??void 0,i.feature={attributes:e.prototype.attributes??{}});return await a(r,i)}};async function c(t,r){const{renderer:i}=t;if(i){const t=new e({attributes:r.prototype.attributes}),s=await i.getSymbolAsync(t);if(s)return s}return h(t)}async function h(t){const{geometryType:e}=t,r="point"===e||"multipoint"===e?await import("../../symbols/SimpleMarkerSymbol.js"):"polyline"===e?await import("../../symbols/SimpleLineSymbol.js"):"polygon"===e||"mesh"===e||"multipatch"===e?await import("../../symbols/SimpleFillSymbol.js"):null;return r?new r.default:null}t([o()],u.prototype,"description",null),t([o()],u.prototype,"label",null),t([o()],u.prototype,"layer",void 0),t([o()],u.prototype,"template",void 0),t([o({readOnly:!0})],u.prototype,"thumbnail",void 0),t([o()],u.prototype,"id",null),u=p=t([n(m)],u);const y=u;export{y as default};
5
+ import{_ as t}from"../../chunks/tslib.es6.js";import e from"../../Graphic.js";import r from"../../core/Accessor.js";import{watch as s,initial as l}from"../../core/reactiveUtils.js";import{property as i}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as o}from"../../core/accessorSupport/decorators/subclass.js";import{renderPreviewHTML as n}from"../../symbols/support/symbolUtils.js";var a;const p="esri.widgets.FeatureTemplates.TemplateItem";let u=a=class extends r{constructor(t){super(t),this._activeFetchInfo={id:null,request:null},this.layer=null,this.template=null,this.thumbnail=null}initialize(){this.addHandles(s((()=>{const{layer:t}=this;return[t&&"renderer"in t?t.renderer:null,this.template]}),(()=>{this._activeFetchInfo.id=null,this._activeFetchInfo.request=null,this._set("thumbnail",null)}),l))}get description(){return this.template?.description}set description(t){this.template&&(this.template.description=t)}get label(){return this.template?.name}set label(t){this.template&&(this.template.name=t)}get id(){return`${this.label??""}–${this.layer?.id}`}get supportsUpload(){return"scene"===this.layer.type}clone(){const t=null!=this.thumbnail?this.thumbnail.cloneNode(!0):null,e=new a({layer:this.layer,template:this.template});return e._set("thumbnail",t),e}static async fetchThumbnail(t,e){const r=await m(t,e);if(null==r)return null;const s={maxSize:36};"dictionary"===t.renderer?.type&&(s.fieldMap=t.renderer.fieldMap??void 0,s.feature={attributes:e.prototype.attributes??{}});return await n(r,s)}};async function m(t,r){const{renderer:s}=t;if(s){const t=new e({attributes:r.prototype.attributes}),l=await s.getSymbolAsync(t);if(l)return l}return c(t)}async function c(t){const{geometryType:e}=t,r="point"===e||"multipoint"===e?await import("../../symbols/SimpleMarkerSymbol.js"):"polyline"===e?await import("../../symbols/SimpleLineSymbol.js"):"polygon"===e||"mesh"===e||"multipatch"===e?await import("../../symbols/SimpleFillSymbol.js"):null;return r?new r.default:null}t([i()],u.prototype,"description",null),t([i()],u.prototype,"label",null),t([i()],u.prototype,"layer",void 0),t([i()],u.prototype,"template",void 0),t([i({readOnly:!0})],u.prototype,"thumbnail",void 0),t([i()],u.prototype,"id",null),t([i()],u.prototype,"supportsUpload",null),u=a=t([o(p)],u);const y=u;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.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../chunks/tslib.es6.js";import{HandleOwnerMixin as t}from"../core/HandleOwner.js";import{watch as r,initial as s}from"../core/reactiveUtils.js";import{property as i}from"../core/accessorSupport/decorators/property.js";import{cast as o}from"../core/accessorSupport/decorators/cast.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as l}from"../core/accessorSupport/decorators/subclass.js";import n from"./Widget.js";import a from"./FeatureTemplates/FeatureTemplatesViewModel.js";import{ItemList as c}from"./FeatureTemplates/ItemList.js";import d from"./FeatureTemplates/TemplateItem.js";import{loadCalciteComponents as m}from"./support/componentsUtils.js";import"./support/widgetUtils.js";import{messageBundle as p}from"./support/decorators/messageBundle.js";import{vmEvent as u}from"./support/decorators/vmEvent.js";import{tsx as h}from"./support/jsxFactory.js";const f="esri-feature-templates",v={base:f,loader:`${f}__loader`,widget:"esri-widget"};function b(e){return"items"in e}function I(e){return e.length>0&&b(e[0])}function g(e){return e.id}const y={filter:!0};let w=class extends(t(n)){constructor(e,t){super(e,t),this._iconIntersectionObserver=new IntersectionObserver(((e,t)=>{e.forEach((async e=>{if(e.isIntersecting){const r=e.target;if(r["data-has-icon"])return void t.unobserve(r);const s=r["data-item"],{layer:i,template:o}=s;r["data-has-icon"]=!0;const l=await d.fetchThumbnail(i,o).catch((()=>(r["data-has-icon"]=!1,null)));if(null==l)return;r.appendChild(l)}}))})),this.enableListScroll=!0,this.filterText="",this.headingLevel=4,this.messages=null,this.viewModel=new a,this.visibleElements={...y},this.renderItemIcon=this.renderItemIcon.bind(this),this._afterItemCreateOrUpdate=this._afterItemCreateOrUpdate.bind(this),this._afterItemRemoved=this._afterItemRemoved.bind(this)}initialize(){const e=({label:e})=>!this.filterText||!!e?.toLowerCase().includes(this.filterText.toLowerCase());this.addHandles(r((()=>this.viewModel),((t,r)=>{t&&!t.filterFunction&&(this.filterFunction=e),r&&r!==t&&r.filterFunction===e&&(r.filterFunction=null)}),s))}destroy(){this._iconIntersectionObserver?.disconnect(),this._iconIntersectionObserver=null}loadDependencies(){return m({input:()=>import("@esri/calcite-components/dist/components/calcite-input.js"),"list-item":()=>import("@esri/calcite-components/dist/components/calcite-list-item.js")})}get filterFunction(){return this.viewModel.filterFunction}set filterFunction(e){this.viewModel.filterFunction=e}get groupBy(){return this.viewModel.groupBy}set groupBy(e){this.viewModel.groupBy=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get layers(){return this.viewModel.layers}set layers(e){this.viewModel.layers=e}get selectedItem(){return this.viewModel.selectedItem}castVisibleElements(e){return{...y,...e}}select(e,t){return this.viewModel.select(e,t)}render(){const{enableListScroll:e,filterText:t,headingLevel:r,messages:s,viewModel:{items:i,numberOfFeatureTemplates:o,selectedItem:l,state:n}}=this,d=this.visibleElements.filter&&o>1;if(I(i)){const e=i.find((e=>e.label===a.nullGroupBy.label));e&&(e.label=s.other)}return h("div",{class:this.classes(v.base,v.widget),"aria-label":s.widgetLabel},"loading"===n?this.renderLoader():"ready"===n?h(c,{id:this.id,identify:g,filterText:t,items:i,headingLevel:r,selectionMode:"single",messages:{filterPlaceholder:s.filterPlaceholder,noItems:s.noItems,noMatches:s.noMatches},filterEnabled:d,onItemSelect:e=>this.viewModel.select(e),onFilterChange:e=>{this.filterText=e,this.viewModel.refresh()},renderIcon:this.renderItemIcon,selectedItem:l??void 0,enableListScroll:e}):null)}renderItemIcon({item:e}){return h("span",{key:"icon",afterCreate:this._afterItemCreateOrUpdate,afterUpdate:this._afterItemCreateOrUpdate,afterRemoved:this._afterItemRemoved,"data-item":e,"data-has-icon":!1})}renderLoader(){return h("div",{class:v.loader,key:"loader"})}_afterItemCreateOrUpdate(e){this._iconIntersectionObserver?.observe(e)}_afterItemRemoved(e){this._iconIntersectionObserver?.unobserve(e)}};e([i()],w.prototype,"enableListScroll",void 0),e([i()],w.prototype,"filterFunction",null),e([i()],w.prototype,"filterText",void 0),e([i()],w.prototype,"groupBy",null),e([i()],w.prototype,"headingLevel",void 0),e([i()],w.prototype,"label",null),e([i()],w.prototype,"layers",null),e([i(),p("esri/widgets/FeatureTemplates/t9n/FeatureTemplates")],w.prototype,"messages",void 0),e([i({readOnly:!0})],w.prototype,"selectedItem",null),e([i(),u("select")],w.prototype,"viewModel",void 0),e([i()],w.prototype,"visibleElements",void 0),e([o("visibleElements")],w.prototype,"castVisibleElements",null),w=e([l("esri.widgets.FeatureTemplates")],w);const j=w;export{j as default};
5
+ import{_ as e}from"../chunks/tslib.es6.js";import{HandleOwnerMixin as t}from"../core/HandleOwner.js";import{watch as r,initial as s}from"../core/reactiveUtils.js";import{property as i}from"../core/accessorSupport/decorators/property.js";import{cast as o}from"../core/accessorSupport/decorators/cast.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as n}from"../core/accessorSupport/decorators/subclass.js";import l from"./Widget.js";import a from"./FeatureTemplates/FeatureTemplatesViewModel.js";import{ItemList as d}from"./FeatureTemplates/ItemList.js";import c from"./FeatureTemplates/TemplateItem.js";import{loadCalciteComponents as m}from"./support/componentsUtils.js";import"./support/widgetUtils.js";import{messageBundle as p}from"./support/decorators/messageBundle.js";import{vmEvent as u}from"./support/decorators/vmEvent.js";import{tsx as h}from"./support/jsxFactory.js";const f="esri-feature-templates",v={base:f,loader:`${f}__loader`,widget:"esri-widget"};function I(e){return"items"in e}function b(e){return e.length>0&&I(e[0])}function y(e){return e.id}const g={filter:!0};let w=class extends(t(l)){constructor(e,t){super(e,t),this.enableListScroll=!0,this.filterText="",this.headingLevel=4,this.messages=null,this.viewModel=new a,this.visibleElements={...g},this.renderItemLabel=()=>null,this.renderItemDescription=()=>null,this.renderItemContent=e=>null,this.renderItemContentEnd=e=>null,this._iconIntersectionObserver=new IntersectionObserver(((e,t)=>{e.forEach((async e=>{if(e.isIntersecting){const r=e.target;if(r["data-has-icon"])return void t.unobserve(r);const s=r["data-item"],{layer:i,template:o}=s;r["data-has-icon"]=!0;const n=await c.fetchThumbnail(i,o).catch((()=>(r["data-has-icon"]=!1,null)));if(null==n)return;r.appendChild(n)}}))})),this.renderItemIcon=e=>h("span",{key:"icon",afterCreate:this._afterItemCreateOrUpdate,afterUpdate:this._afterItemCreateOrUpdate,afterRemoved:this._afterItemRemoved,"data-item":e,"data-has-icon":!1}),this._afterItemCreateOrUpdate=e=>{this._iconIntersectionObserver?.observe(e)},this._afterItemRemoved=e=>{this._iconIntersectionObserver?.unobserve(e)}}initialize(){const e=({label:e})=>!this.filterText||!!e?.toLowerCase().includes(this.filterText.toLowerCase());this.addHandles(r((()=>this.viewModel),((t,r)=>{t&&!t.filterFunction&&(this.filterFunction=e),r&&r!==t&&r.filterFunction===e&&(r.filterFunction=null)}),s))}destroy(){this._iconIntersectionObserver?.disconnect(),this._iconIntersectionObserver=null}loadDependencies(){return m({input:()=>import("@esri/calcite-components/dist/components/calcite-input.js"),"list-item":()=>import("@esri/calcite-components/dist/components/calcite-list-item.js")})}get filterFunction(){return this.viewModel.filterFunction}set filterFunction(e){this.viewModel.filterFunction=e}get groupBy(){return this.viewModel.groupBy}set groupBy(e){this.viewModel.groupBy=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get layers(){return this.viewModel.layers}set layers(e){this.viewModel.layers=e}get selectedItem(){return this.viewModel.selectedItem}castVisibleElements(e){return{...g,...e}}select(e,t){return this.viewModel.select(e,t)}render(){const{enableListScroll:e,filterText:t,headingLevel:r,messages:s,viewModel:{items:i,numberOfFeatureTemplates:o,selectedItem:n,state:l}}=this,c=this.visibleElements.filter&&o>1;if(b(i)){const e=i.find((e=>e.label===a.nullGroupBy.label));e&&(e.label=s.other)}return h("div",{class:this.classes(v.base,v.widget),"aria-label":s.widgetLabel},"loading"===l?this.renderLoader():"ready"===l?h(d,{enableListScroll:e,filterEnabled:c,filterText:t,headingLevel:r,id:this.id,identify:y,items:i,messages:{filterPlaceholder:s.filterPlaceholder,noItems:s.noItems,noMatches:s.noMatches},renderIcon:this.renderItemIcon,renderItemContent:this.renderItemContent,renderItemContentEnd:this.renderItemContentEnd,renderItemDescription:this.renderItemDescription,renderItemLabel:this.renderItemLabel,selectedItem:n??void 0,selectionMode:"single",onItemSelect:e=>this.viewModel.select(e),onFilterChange:e=>{this.filterText=e,this.viewModel.refresh()}}):null)}renderLoader(){return h("div",{class:v.loader,key:"loader"})}};e([i()],w.prototype,"enableListScroll",void 0),e([i()],w.prototype,"filterFunction",null),e([i()],w.prototype,"filterText",void 0),e([i()],w.prototype,"groupBy",null),e([i()],w.prototype,"headingLevel",void 0),e([i()],w.prototype,"label",null),e([i()],w.prototype,"layers",null),e([i(),p("esri/widgets/FeatureTemplates/t9n/FeatureTemplates")],w.prototype,"messages",void 0),e([i({readOnly:!0})],w.prototype,"selectedItem",null),e([i(),u("select")],w.prototype,"viewModel",void 0),e([i()],w.prototype,"visibleElements",void 0),e([o("visibleElements")],w.prototype,"castVisibleElements",null),e([i()],w.prototype,"renderItemLabel",void 0),e([i()],w.prototype,"renderItemDescription",void 0),e([i()],w.prototype,"renderItemContent",void 0),e([i()],w.prototype,"renderItemContentEnd",void 0),w=e([n("esri.widgets.FeatureTemplates")],w);const j=w;export{j 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.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../core/Collection.js";import s from"../../core/Evented.js";import{watch as i,initial as r}from"../../core/reactiveUtils.js";import{property as a}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as o}from"../../core/accessorSupport/decorators/subclass.js";import l from"./ListItem.js";import{getItemLayers as n,findLayerListMode as c}from"./support/layerListUtils.js";const d={view:"view",viewLayers:"view-layers",mapLayers:"map-layers",layerViews:"layer-views",layerListMode:"layer-list-mode"},m="hide",h=t.ofType(l);let p=class extends s.EventedAccessor{constructor(e){super(e),this.checkPublishStatusEnabled=!1,this.listItemCreatedFunction=null,this.operationalItems=new h,this.view=null}initialize(){this.addHandles([i((()=>[this.view,this.view?.ready]),(()=>this._viewHandles()),r),i((()=>[this.listItemCreatedFunction,this.checkPublishStatusEnabled]),(()=>this._recompileList()))],d.view)}destroy(){this.removeAllHandles(),this.view=null,this.operationalItems.removeAll()}get state(){const e=this.get("view");return this.get("view.ready")?"ready":e?"loading":"disabled"}triggerAction(e,t){e&&!e.disabled&&this.emit("trigger-action",{action:e,item:t})}moveListItem(e,t,s,i){const r=e?.layer;if(!r)return;const a=this.view?.map?.layers,o=t?n(t):a,l=s?n(s):a;if(!o||!l)return;const{operationalItems:c}=this,d=t?.children||c,m=s?.children||c,h=l.length-i;e.parent=s||null,d.includes(e)&&d.remove(e),o.includes(r)&&o.remove(r),m.includes(e)||m.add(e,h),l.includes(r)||l.add(r,h)}_createLayerViewHandles(e){this.removeHandles(d.layerViews),this._compileList(),e&&this.addHandles(e.on("change",(()=>this._compileList())),d.layerViews)}_createMapLayerHandles(e){this.removeHandles(d.mapLayers),this._compileList(),e&&this.addHandles(e.on("change",(()=>this._compileList())),d.mapLayers)}_createListItem(e){const{view:t,listItemCreatedFunction:s,checkPublishStatusEnabled:i}=this;return new l({checkPublishStatusEnabled:i,layer:e,listItemCreatedFunction:s,view:t})}_removeAllItems(){this.operationalItems.removeAll()}_getViewableLayers(e){if(e)return e.filter((e=>c(e)!==m))}_watchLayersListMode(e){this.removeHandles(d.layerListMode),e&&e.forEach((e=>{"listMode"in e&&this.addHandles(i((()=>e.listMode),(()=>this._compileList())),d.layerListMode)}))}_compileList(){const e=this.get("view.map.layers");this._watchLayersListMode(e);const t=this._getViewableLayers(e);t&&t.length?(this._createNewItems(t),this._removeItems(t),this._sortItems(t)):this._removeAllItems()}_createNewItems(e){const{operationalItems:t}=this;e.forEach((e=>{t.find((t=>t.layer===e))||t.add(this._createListItem(e))}))}_removeItems(e){const{operationalItems:t}=this,s=[];t.forEach((t=>{t&&e&&e.includes(t.layer)||s.push(t)})),t.removeMany(s)}_sortItems(e){const{operationalItems:t}=this;t.sort(((t,s)=>{const i=e.indexOf(t.layer),r=e.indexOf(s.layer);return i>r?-1:i<r?1:0}))}_recompileList(){this._removeAllItems(),this._compileList()}_viewHandles(){const{view:e}=this;this.removeHandles([d.mapLayers,d.layerViews,d.viewLayers]),this._compileList(),e&&e.ready&&this.addHandles([i((()=>this.view?.map?.allLayers),(e=>this._createMapLayerHandles(e)),r),i((()=>this.view?.allLayerViews),(e=>this._createLayerViewHandles(e)),r)],d.viewLayers)}};e([a()],p.prototype,"checkPublishStatusEnabled",void 0),e([a()],p.prototype,"listItemCreatedFunction",void 0),e([a({type:h})],p.prototype,"operationalItems",void 0),e([a({readOnly:!0})],p.prototype,"state",null),e([a()],p.prototype,"view",void 0),p=e([o("esri.widgets.LayerList.LayerListViewModel")],p);const y=p;export{y as default};
5
+ import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../core/Collection.js";import s from"../../core/Evented.js";import{watch as i,initial as r}from"../../core/reactiveUtils.js";import{property as a}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as o}from"../../core/accessorSupport/decorators/subclass.js";import l from"./ListItem.js";import{getItemLayers as n,findLayerListMode as c}from"./support/layerListUtils.js";const d={view:"view",viewLayers:"view-layers",mapLayers:"map-layers",layerViews:"layer-views",layerListMode:"layer-list-mode"},m="hide",h=t.ofType(l);let p=class extends s.EventedAccessor{constructor(e){super(e),this.checkPublishStatusEnabled=!1,this.listItemCreatedFunction=null,this.operationalItems=new h,this.view=null}initialize(){this.addHandles([i((()=>[this.view,this.view?.ready]),(()=>this._viewHandles()),r),i((()=>[this.listItemCreatedFunction,this.checkPublishStatusEnabled]),(()=>this._recompileList()))],d.view)}destroy(){this.removeAllHandles(),this.view=null,this.operationalItems.removeAll()}get state(){const e=this.get("view");return this.get("view.ready")?"ready":e?"loading":"disabled"}triggerAction(e,t){e&&!e.disabled&&this.emit("trigger-action",{action:e,item:t})}moveListItem(e,t,s,i){const r=e?.layer;if(!r)return;const a=this.view?.map?.layers,o=t?n(t):a,l=s?n(s):a;if(!o||!l)return;const{operationalItems:c}=this,d=t?.children||c,m=s?.children||c,h=l.length-i;e.parent=s||null,d.includes(e)&&d.remove(e),o.includes(r)&&o.remove(r),m.includes(e)||m.add(e,h),l.includes(r)||l.add(r,h)}_createLayerViewHandles(e){this.removeHandles(d.layerViews),this._compileList(),e&&this.addHandles(e.on("change",(()=>this._compileList())),d.layerViews)}_createMapLayerHandles(e){this.removeHandles(d.mapLayers),this._compileList(),e&&this.addHandles(e.on("change",(()=>this._compileList())),d.mapLayers)}_createListItem(e){const{view:t,listItemCreatedFunction:s,checkPublishStatusEnabled:i}=this;return new l({checkPublishStatusEnabled:i,layer:e,listItemCreatedFunction:s,view:t})}_removeAllItems(){this.operationalItems.removeAll()}_getViewableLayers(e){if(e)return e.filter((e=>c(e)!==m))}_watchLayersListMode(e){this.removeHandles(d.layerListMode),e&&e.forEach((e=>{"listMode"in e&&this.addHandles(i((()=>e.listMode),(()=>this._compileList())),d.layerListMode)}))}_compileList(){const e=this.get("view.map.layers");this._watchLayersListMode(e);const t=this._getViewableLayers(e);t&&t.length?(this._createNewItems(t),this._removeItems(t),this._sortItems(t)):this._removeAllItems()}_createNewItems(e){const{operationalItems:t}=this;e.forEach((e=>{t.find((t=>t.layer===e))||t.add(this._createListItem(e))}))}_removeItems(e){const{operationalItems:t}=this,s=[];t.forEach((t=>{t&&e&&e.includes(t.layer)||s.push(t)})),t.removeMany(s)}_sortItems(e){const{operationalItems:t}=this;t.sort(((t,s)=>{const i=e.indexOf(t.layer),r=e.indexOf(s.layer);return i>r?-1:i<r?1:0}))}_recompileList(){this._removeAllItems(),this._compileList()}_viewHandles(){const{view:e}=this;this.removeHandles([d.mapLayers,d.layerViews,d.viewLayers]),this._recompileList(),e&&e.ready&&this.addHandles([i((()=>this.view?.map?.allLayers),(e=>this._createMapLayerHandles(e)),r),i((()=>this.view?.allLayerViews),(e=>this._createLayerViewHandles(e)),r)],d.viewLayers)}};e([a()],p.prototype,"checkPublishStatusEnabled",void 0),e([a()],p.prototype,"listItemCreatedFunction",void 0),e([a({type:h})],p.prototype,"operationalItems",void 0),e([a({readOnly:!0})],p.prototype,"state",null),e([a()],p.prototype,"view",void 0),p=e([o("esri.widgets.LayerList.LayerListViewModel")],p);const y=p;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.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../chunks/tslib.es6.js";import"../../geometry.js";import t from"../../core/Accessor.js";import{createScreenPoint as r}from"../../core/screenUtils.js";import{isProjectedWKT as i}from"../../core/unitUtils.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 o}from"../../core/accessorSupport/decorators/subclass.js";import{isSupported as n,geodesicLengths as a}from"../../geometry/support/geodesicUtils.js";import{straightLineDensify as l}from"../../geometry/support/normalizeUtils.js";import{isValid as c,getInfo as m}from"../../geometry/support/spatialReferenceUtils.js";import{webMercatorToGeographic as p}from"../../geometry/support/webMercatorUtils.js";import u from"../../geometry/support/WKIDUnitConversion.js";import d from"../../geometry/SpatialReference.js";import f from"../../geometry/Polyline.js";import g from"../../geometry/Point.js";function h(e){const{wkid:t,wkt:r}=e;if(null!=t&&null!=u[t])return u.values[u[t]];if(null!=r){const e=r.lastIndexOf(",")+1,t=r.lastIndexOf("]]");return parseFloat(r.substring(e,t))}return 1}function w(e,t){const{x:r,y:i}="decimal-degrees"===e?p(t,!0):t;return[r,i]}function y({state:{paddedViewState:e},spatialReference:t,width:r}){return t.isWrappable&&e.worldScreenWidth<r}let j=class extends t{constructor(e){super(e),this.scaleComputedFrom=r(),this.view=null}get state(){return this.view?.ready&&"2d"===this.view?.type?"ready":"disabled"}getScaleBarProperties(e,t){if("disabled"===this.state||isNaN(e)||!t||null==this.view)return null;const r=this._getDistanceInKm(this.view,this.scaleComputedFrom);if(null==r)return null;if("metric"===t)return this._getScaleBarProps(e,r,"metric");const i=r/1.609;return this._getScaleBarProps(e,i,"imperial")}_getLocationUnit(){const e=this.view,{spatialReference:t}=e,{isWebMercator:r,wkid:s,wkt:o}=t;return r||o?.includes("WGS_1984_Web_Mercator")?"decimal-degrees":c(t)&&(null!=s&&u[s]||null!=o&&i(o))?"linear-unit":"unknown"}_getDistanceInKm(e,t){const{state:r,spatialReference:i}=e,s=this._getLocationUnit();if("linear-unit"===s){const e=1e3;return r.extent.width*h(i)/e}const[o,c]=this._getScaleMeasuringPoints(e,t),m="decimal-degrees"===s||i.isGeographic&&!n(i)?d.WGS84:i,p=new f({paths:[[w(s,o),w(s,c)]],spatialReference:m}),u=l(p,10);let g;try{[g]=a([u],"kilometers")}catch{return null}return g}_getScaleMeasuringPoints(e,t){const{width:i,height:s,position:o,spatialReference:n}=e;if(y(e)){const e=m(n),{valid:t}=e;return[new g(t[0],0,n),new g(t[1],0,n)]}let a=t.y-o[1];a>s?a=s:a<0&&(a=0);const l=r(0,a),c=r(i,a);return[e.toMap(l),e.toMap(c)]}_getScaleBarProps(e,t,r){const i=this.view;let s=e*t/(y(i)?i.state.paddedViewState.worldScreenWidth:i.width),o="metric"===r?"kilometer":"mile";if(s<.1)if("mile"===o){s*=5280,o="foot"}else if("kilometer"===o){s*=1e3,o="meter"}let n=0;for(;s>=1;)s/=10,n++;const a=this._getConstraints(s);if(!a)return null;const{min:l,max:c}=a,m=c/s>=s/l?l:c;return{length:e*(m/s),value:10**n*m,unit:o}}_getConstraints(e){return e>.5?{min:.5,max:1}:e>.3?{min:.3,max:.5}:e>.2?{min:.2,max:.3}:e>.15?{min:.15,max:.2}:e>=.1?{min:.15,max:.1}:null}};e([s()],j.prototype,"scaleComputedFrom",void 0),e([s({readOnly:!0})],j.prototype,"state",null),e([s()],j.prototype,"view",void 0),j=e([o("esri.widgets.Scalebar.ScaleBarViewModel")],j);const S=j;export{S as default};
5
+ import{_ as e}from"../../chunks/tslib.es6.js";import"../../geometry.js";import t from"../../core/Accessor.js";import{createScreenPoint as r}from"../../core/screenUtils.js";import{convertUnit as s}from"../../core/unitUtils.js";import{property as i}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as o}from"../../core/accessorSupport/decorators/subclass.js";import{isSupported as n,geodesicLengths as a}from"../../geometry/support/geodesicUtils.js";import{straightLineDensify as c}from"../../geometry/support/normalizeUtils.js";import{isValid as l,getInfo as m}from"../../geometry/support/spatialReferenceUtils.js";import{webMercatorToGeographic as u}from"../../geometry/support/webMercatorUtils.js";import p from"../../geometry/support/WKIDUnitConversion.js";import d from"../../geometry/SpatialReference.js";import f from"../../geometry/Polyline.js";import h from"../../geometry/Point.js";function g(e,t){switch(t){case"metric":return e>100?{distance:s(e,"meters","kilometers"),unit:"kilometer"}:e>.1?{distance:e,unit:"meter"}:{distance:s(e,"meters","centimeters"),unit:"centimeter"};case"imperial":case"non-metric":return e>160.9344?{distance:s(e,"meters","miles"),unit:"mile"}:e>.03048?{distance:s(e,"meters","feet"),unit:"foot"}:{distance:s(e,"meters","inches"),unit:"inch"}}}function w(e){const{isWebMercator:t,wkt:r}=e;return t||(r?.includes("WGS_1984_Web_Mercator")??!1)}function y(e){const{wkid:t,wkt:r}=e;if(null!=t&&null!=p[t])return p.values[p[t]];if(null!=r){const e=r.lastIndexOf(",")+1,t=r.lastIndexOf("]]");return parseFloat(r.substring(e,t))}return 1}function j(e,t){const{x:r,y:s}=e?u(t,!0):t;return[r,s]}function S({state:{paddedViewState:e},spatialReference:t,width:r}){return t.isWrappable&&e.worldScreenWidth<r}let v=class extends t{constructor(e){super(e),this.scaleComputedFrom=r(),this.view=null}get state(){return this.view?.ready&&"2d"===this.view?.type?"ready":"disabled"}getScaleBarProperties(e,t){if("disabled"===this.state||isNaN(e)||!t||null==this.view)return null;const r=this._getDistanceInMeters(this.view,this.scaleComputedFrom);return null==r?null:this._getScaleBarProps(e,r,t)}_getDistanceInMeters(e,t){const{state:r,spatialReference:s}=e;if(!l(s))return null;const{isGeographic:i}=s,o=w(s);if(!i&&!o){return r.extent.width*y(s)}const[m,u]=this._getScaleMeasuringPoints(e,t),p=o||i&&!n(s)?d.WGS84:s,h=new f({paths:[[j(o,m),j(o,u)]],spatialReference:p}),g=c(h,10);let S;try{[S]=a([g],"meters")}catch{return null}return S}_getScaleMeasuringPoints(e,t){const{width:s,height:i,position:o,spatialReference:n}=e;if(S(e)){const e=m(n),{valid:t}=e;return[new h(t[0],0,n),new h(t[1],0,n)]}let a=t.y-o[1];a>i?a=i:a<0&&(a=0);const c=r(0,a),l=r(s,a);return[e.toMap(c),e.toMap(l)]}_getScaleBarProps(e,t,r){const s=this.view,i=g(e*t/(S(s)?s.state.paddedViewState.worldScreenWidth:s.width),r),{unit:o}=i;let n=i.distance,a=0;for(;n>=1;)n/=10,a++;const c=this._getConstraints(n);if(!c)return null;const{min:l,max:m}=c,u=m/n>=n/l?l:m;return{length:e*(u/n),value:10**a*u,unit:o}}_getConstraints(e){return e>.5?{min:.5,max:1}:e>.3?{min:.3,max:.5}:e>.2?{min:.2,max:.3}:e>.15?{min:.15,max:.2}:e>=.1?{min:.15,max:.1}:null}};e([i()],v.prototype,"scaleComputedFrom",void 0),e([i({readOnly:!0})],v.prototype,"state",null),e([i()],v.prototype,"view",void 0),v=e([o("esri.widgets.Scalebar.ScaleBarViewModel")],v);const x=v;export{x as default};