@arcgis/core 5.2.0-next.54 → 5.2.0-next.56

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 (51) hide show
  1. package/assets/esri/core/workers/RemoteClient.js +1 -1
  2. package/assets/esri/core/workers/chunks/{7e2bf6dd26c3cf0b49b0.js → 2190034c14ab3a25ac20.js} +1 -1
  3. package/assets/esri/core/workers/chunks/{a239f1e82dde4f7ada32.js → 2c29085c5e649971b31b.js} +1 -1
  4. package/assets/esri/core/workers/chunks/{77f19d204a4673b1e676.js → 46756a7f014d9d5b3f6c.js} +2 -2
  5. package/assets/esri/core/workers/chunks/4abd54518e35050feb90.js +1 -0
  6. package/assets/esri/core/workers/chunks/61d0ada7627f21988183.js +1 -0
  7. package/assets/esri/core/workers/chunks/{c38992b250731137cb1a.js → 6e84140c6129c5a666f7.js} +1 -1
  8. package/assets/esri/core/workers/chunks/{5d6d07ecebf881ad913f.js → 8b80dd993ed14ec263c8.js} +1 -1
  9. package/assets/esri/core/workers/chunks/8ce649e55fefc8eca55c.js +1 -0
  10. package/assets/esri/core/workers/chunks/{2fbb00a29faeaa02912b.js → a4d9985391126e8ea06d.js} +1 -1
  11. package/assets/esri/core/workers/chunks/{0ffd0190adfed8e5937a.js → a633291cdaff7fb7ce80.js} +1 -1
  12. package/assets/esri/core/workers/chunks/c25dc9073e73d6b44d88.js +1 -0
  13. package/assets/esri/core/workers/chunks/{2d6d2d4df05bba9fa4a6.js → daae34cd086c0c6a5900.js} +1 -1
  14. package/assets/esri/core/workers/chunks/{ce719d3aec8b52bfe160.js → ecff3a6ca99f2c88c837.js} +1 -1
  15. package/assets/esri/core/workers/chunks/{847ce06b14a921cd16f0.js → facf7e07e758601b642f.js} +1 -1
  16. package/config.js +1 -1
  17. package/core/has.js +1 -1
  18. package/geometry/support/normalizeUtilsSync.js +1 -1
  19. package/kernel.js +1 -1
  20. package/package.json +5 -5
  21. package/rest/featureService/FeatureService.d.ts +50 -2
  22. package/support/revision.js +1 -1
  23. package/symbols/cim/types.d.ts +2 -2
  24. package/views/2d/engine/webgl/util/AnnotationMatcher.js +1 -1
  25. package/views/2d/layers/support/annodime/MatcherGeometryOverride.js +1 -1
  26. package/views/2d/layers/support/annodime/annotationGraphic.js +1 -1
  27. package/views/2d/layers/support/annodime/cimAnnotations.js +1 -1
  28. package/views/2d/layers/support/annodime/utils.js +1 -1
  29. package/views/2d/layers/support/annodime/virtualFields.js +1 -1
  30. package/views/3d/analysis/LineOfSight/LineOfSightTool.js +1 -1
  31. package/views/3d/analysis/LineOfSightAnalysisView3D.js +1 -1
  32. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  33. package/views/3d/layers/I3SMeshView3D.js +1 -1
  34. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  35. package/views/3d/layers/SceneLayerWorkerHandle.js +1 -1
  36. package/views/3d/layers/graphics/SpatialIndex2D.js +1 -1
  37. package/views/3d/layers/i3s/LayerElevationProvider.js +1 -1
  38. package/views/3d/layers/support/StageLayerElevationProvider.js +1 -1
  39. package/views/3d/support/ElevationUpdateEvent.js +2 -0
  40. package/views/3d/support/elevationUpdateExtentUtils.js +2 -0
  41. package/views/3d/terrain/TerrainSurface.js +1 -1
  42. package/views/PopupView.js +1 -1
  43. package/views/SceneView.js +1 -1
  44. package/widgets/OrientedImageryViewer/adapters/sketch/MeasurementAdapter.js +1 -1
  45. package/assets/esri/core/workers/chunks/25cb56c3b538d00e7693.js +0 -1
  46. package/assets/esri/core/workers/chunks/2da337d7fd9295f6b967.js +0 -1
  47. package/assets/esri/core/workers/chunks/9e474465d069cb9e94f5.js +0 -1
  48. package/assets/esri/core/workers/chunks/c8db0a4fb5bc982dc9fc.js +0 -1
  49. package/views/3d/analysis/LineOfSight/LineOfSightTool2.js +0 -2
  50. package/views/3d/terrain/ElevationUpdateEvent.js +0 -2
  51. /package/assets/esri/core/workers/chunks/{77f19d204a4673b1e676.js.LICENSE.txt → 46756a7f014d9d5b3f6c.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../../Graphic.js";import{createTask as a}from"../../../../core/asyncUtils.js";import{EsriPromise as i}from"../../../../core/Promise.js";import{throwIfAborted as r}from"../../../../core/promiseUtils.js";import{property as s,subclass as n}from"../../../../core/accessorSupport/decorators.js";import o from"../../../../geometry/Polygon.js";import c from"../../../../geometry/Polyline.js";import{load as l}from"../../../../geometry/projectionUtils.js";import u from"../../../../geometry/SpatialReference.js";import h from"../../../../layers/GraphicsLayer.js";import{convertSphereVertexToPixelLocation as m,convertPixelToHeadingPitch as d,convertHeadingPitchToSphereVertex as w}from"../../../../layers/orientedImagery/transformations/utils.js";import{getMeasurementProperties as p,getMeasurementPropertiesPanoramic as g,pixelAreaMeasurement2D as y,pixelAreaMeasurementPanoramic as v,pixelDistanceMeasurement2D as M,pixelDistanceMeasurementPanoramic as f,getPixelLocationFromSphereVertices as T,formatPixels as A,imageToImageTransform as V,imageToImageTransformPanoramic as k}from"../../imageMeasurementUtils.js";import{extractHorizonAnglesFromMedia as S}from"../../utils.js";import{SketchHandlerMixin as _}from"../../mixins/SketchHandlerMixin.js";import x from"../../../Sketch/SketchViewModel.js";let F=[],z=[],G=0,B=class extends(_(i)){constructor(e){super(e),this.type="measurement",this.measurementArray=[],this.pixelMeasurement=0,this.pixelAreaMeasurement=0,this.polygonVertices=[],this._calculationTask=null,this._distanceCalculation=0,this._areaCalculation=null}initialize(){this.addResolvingPromise(l())}async handleCreate(e){const t=e.toolEventInfo;switch(e.tool){case"polyline":await this.handlePolylineEvents(e,t);break;case"polygon":await this.handlePolygonEvents(e,t)}}handleDelete(e){this.resetDistanceMeasurements(),this.resetAreaMeasurements()}handleDestroy(){this.resetDistanceMeasurements(),this.resetAreaMeasurements()}async calculateAreaMeasurement(e,t,a){if(e.length<3||!this.viewModel.currentBestFeature||!this.viewModel.activeViewer?.imageSize||"none"===this.viewModel.mode)return null;const i="default"===t?await p(this.viewModel.currentBestFeature,this.viewModel.activeViewer?.imageSize,this.viewModel.footprintExtent):await g(this.viewModel.currentBestFeature,this.viewModel.activeViewer?.imageSize,this.viewModel.footprintExtent);return r(a),i?"default"===t?await y(e,i,!0):await v(e,i,!0,a):null}async calculateDistanceMeasurement(e,t,a){const{currentBestFeature:i,activeViewer:s}=this.viewModel;if(e.length<2||!i||!s?.imageSize||"none"===t)return null;const n="default"===t?await p(i,s?.imageSize,this.viewModel.footprintExtent):await g(i,s?.imageSize,this.viewModel.footprintExtent);return r(a),n?"default"===t?await M([e.at(0),e.at(-1)],n,!0):await f([e.at(0),e.at(-1)],n,!0):null}cursorUpdatePolylineHandler(e){const{mode:t,activeViewer:a}=this.viewModel;if("none"===t||!a?.imageSize)return;if("default"===t)this.measurementArray.push(e.coordinates);else{const t={x:e.coordinates[0],y:e.coordinates[1],z:e.coordinates[2]},i=m(t,a.imageSize[0],a.imageSize[1]);this.measurementArray.push([i.x,i.y])}const i=z.reduce((e,t)=>e+t,0)+this.pixelMeasurement;this.viewModel.distanceMeasurementResult=i}async cursorUpdatePolygonHandler(e){const{mode:t,activeViewer:a}=this.viewModel;if("none"===t||!a?.imageSize)return;const i=e.coordinates;if(F=[...this.polygonVertices],"default"===t)F.push(i);else{const e={x:i[0],y:i[1],z:i[2]},t=m(e,a?.imageSize[0],a?.imageSize[1]);F.push([t.x,t.y])}if(F.length<3||!this.viewModel.currentBestFeature||!this.viewModel.activeViewer?.imageSize)return;const r=F[0];F=F.filter((e,t)=>0===t||t===F.length-1||JSON.stringify(e)!==JSON.stringify(r));const s=await this._getAreaFromTask(F);s?.area&&s?.perimeter&&(G=s.area)}async handlePolylineEvents(e,t){const{currentBestFeature:a,activeViewer:i,mode:r,view:s}=this.viewModel,n=!this.viewModel.accuracyParametersMissing;if("cancel"===e.state)return this.resetDistanceMeasurements(),this.viewModel.distanceMeasurementResult=0,void(this.viewModel.distanceAccuracyArray=[]);if("complete"===e.state&&e.graphic){if(this.viewModel.activeViewer?.addGraphic(e.graphic),this.viewModel.triangularMeasurementActive&&a){const t={pixels:e.graphic.geometry.paths[0],activeFeature:a,activeViewer:i,mode:r,spatialReference:s?.spatialReference};await(this.measurementService?.updateMeasurementVectorsArray(t)),await this._overlayFirstMeasurement(e.graphic,e.tool)}return this.viewModel.measurementGraphic=e.graphic,void this.resetDistanceMeasurements()}switch(t?.type){case"cursor-update":this.cursorUpdatePolylineHandler(t);break;case"vertex-add":if(this.measurementArray.length&&n){const e=await this._getAccuracyFromTask();e&&this.viewModel.distanceAccuracyArray.push(e)}this.vertexUpdatePolylineHandler()}const o=await this._getDistanceFromTask();this.pixelMeasurement=o??this.pixelMeasurement}async handlePolygonEvents(e,t){const{currentBestFeature:a,activeViewer:i,mode:r,view:s,accuracyParametersMissing:n}=this.viewModel;if("cancel"===e.state)return this.resetAreaMeasurements(),this.viewModel.areaMeasurementResult=0,void(this.viewModel.areaMeasurementAccuracy=0);if("complete"===e.state&&e.graphic){this.viewModel.activeViewer?.addGraphic(e.graphic);if(!n&&!this.viewModel.triangularMeasurementActive){const e=await this._getAreaAccuracyFromTask(this.polygonVertices);this.viewModel.areaMeasurementAccuracy=e||this.viewModel.areaMeasurementAccuracy}if(this.viewModel.triangularMeasurementActive&&a){const t={pixels:e.graphic.geometry.rings[0],activeFeature:a,activeViewer:i,mode:r,spatialReference:s?.spatialReference};await(this.measurementService?.updateMeasurementVectorsArray(t)),await this._overlayFirstMeasurement(e.graphic,e.tool)}return this.viewModel.measurementGraphic=e.graphic,void this.resetAreaMeasurements()}switch(t?.type){case"vertex-add":await this.vertexAddPolygonHandler(t);break;case"cursor-update":await this.cursorUpdatePolygonHandler(t)}this.viewModel.areaMeasurementResult=G>0?G:this.pixelAreaMeasurement}async vertexAddPolygonHandler(e){const{mode:t,activeViewer:a}=this.viewModel,i=e.added,r=i[i.length-1];if(!Array.isArray(r)||"none"===t||!a?.imageSize)return;if("default"===t)this.polygonVertices.push(r);else{const e={x:r[0],y:r[1],z:r[2]},t=m(e,a?.imageSize[0],a?.imageSize[1]);this.polygonVertices.push([t.x,t.y])}if(this.polygonVertices.length<3||!this.viewModel.currentBestFeature||!this.viewModel.activeViewer?.imageSize)return;const s=this.polygonVertices[0];this.polygonVertices=this.polygonVertices.filter((e,t)=>0===t||t===this.polygonVertices.length-1||JSON.stringify(e)!==JSON.stringify(s));const n=await this._getAreaFromTask(this.polygonVertices);if(!n?.area||!n?.perimeter)return;const{area:o}=n;this.pixelAreaMeasurement=o}vertexUpdatePolylineHandler(){this.measurementArray=this.measurementArray.slice(-1);const e=z.reduce((e,t)=>e+t,0)+this.pixelMeasurement;this.viewModel.distanceMeasurementResult=e,this.pixelMeasurement>0&&z.push(this.pixelMeasurement)}resetDistanceMeasurements(){this.measurementArray=[],this.pixelMeasurement=0,z=[]}resetAreaMeasurements(){this.polygonVertices=[],this.pixelAreaMeasurement=0,G=0}async _editOverlayedGraphics(e){this.viewModel.sketchTriangularGraphicsLayer||this._initializeSketchTriangularGraphicsLayer(),this.viewModel.sketchTriangularGraphicsLayer?.destroyed&&this._handleDestroyedTriangularSketchLayer(),this.viewModel.sketchTriangularGraphicsLayer.add(e),this.viewModel.sketchTriangular||(this._initializeSketchTriangular(),await this._loadTriangulatedMeasurementAdapter()),this._updateOverlayedGeometry(e)}_handleDestroyedTriangularSketchLayer(){this.viewModel.sketchTriangularGraphicsLayer&&this.viewModel.activeTriangulatedViewer&&(this.viewModel.activeTriangulatedViewer.imageRenderer.map.layers.remove(this.viewModel.sketchTriangularGraphicsLayer),this.viewModel.sketchTriangularGraphicsLayer=new h,this.viewModel.activeTriangulatedViewer.imageRenderer.map.layers.add(this.viewModel.sketchTriangularGraphicsLayer),this.viewModel.sketchTriangular&&(this.viewModel.sketchTriangular.layer=this.viewModel.sketchTriangularGraphicsLayer,this.viewModel.sketchTriangular.view=this.viewModel.activeTriangulatedViewer.imageRenderer))}_initializeSketchTriangular(){if(!this.viewModel.activeTriangulatedViewer)return;const e="panoramic"===this.viewModel.mode;this.viewModel.sketchTriangular=new x({view:this.viewModel.activeTriangulatedViewer.imageRenderer,layer:this.viewModel.sketchTriangularGraphicsLayer,updateOnGraphicClick:!0,defaultUpdateOptions:{toggleToolOnClick:!1,enableZ:!e}}),e&&(this.viewModel.sketchTriangular.defaultUpdateOptions.reshapeOptions={edgeOperation:"offset",shapeOperation:"move-xy",vertexOperation:"move-xy"})}_initializeSketchTriangularGraphicsLayer(){this.viewModel.activeTriangulatedViewer&&(this.viewModel.sketchTriangularGraphicsLayer=new h,this.viewModel.activeTriangulatedViewer.imageRenderer.map.layers.add(this.viewModel.sketchTriangularGraphicsLayer))}async _overlayFirstMeasurement(e,t){switch(t){case"polyline":await this._overlayFirstDistanceMeasurement(e);break;case"polygon":await this._overlayFirstAreaGeometry(e)}}async _overlayFirstDistanceMeasurement(e){const{mode:a,activeTriangulatedViewer:i,currentBestFeature:r,activeViewer:s,footprintExtent:n,currentBestFeatureMeasurementImage:o}=this.viewModel,l=e.geometry?.clone(),h=e.symbol?.clone(),m=i?.imageSize,d=[...l.paths[0]],w=S(i?.media),y="default"===a;if(!("none"!==a&&"video"!==a&&m&&r&&s?.imageSize&&o))return;const v=y?d:T(d,m,w),M=y?A(v,!0):v,f=y?await p(r,s?.imageSize,n):await g(r,s?.imageSize,n),_=y?await p(o,this.viewModel.imageMeasurementViewer?.imageSize,n):await g(o,this.viewModel.activeTriangulatedViewer?.imageSize,n);if(M?.length&&f&&_){const e=y?await V(M,f,_):await k(M,f,_),a=e.map(e=>[e.x-.5,-.5-e.y]),i=e.slice(0,2).map(e=>R(e,m,w)),r=new c({paths:y?[a]:[i],spatialReference:u.WebMercator}),s=new t({geometry:r,symbol:h});await this._editOverlayedGraphics(s)}}async _overlayFirstAreaGeometry(e){const{mode:a,activeTriangulatedViewer:i,currentBestFeature:r,currentBestFeatureMeasurementImage:s,activeViewer:n,footprintExtent:c}=this.viewModel,l=e.geometry?.clone(),h=e.symbol?.clone(),m=i?.imageSize,d=S(i?.media),w=[...l.rings[0]],y="default"===a;if(!("none"!==a&&"video"!==a&&m&&r&&n?.imageSize&&s))return;const v=y?w:T(w,m,d),M=y?A(v,!0):v,f=y?await p(r,n?.imageSize,c):await g(r,n?.imageSize,c),_=y?await p(s,this.viewModel.imageMeasurementViewer?.imageSize,c):await g(s,this.viewModel.activeTriangulatedViewer?.imageSize,c);if(M?.length&&f&&_){const e=y?await V(M,f,_):await k(M,f,_),a=e.map(e=>[e.x-.5,-.5-e.y]),i=e.slice(0,y?2:e.length).map(e=>R(e,m,d)),r=new o({rings:y?[a]:[i],spatialReference:u.WebMercator}),s=new t({geometry:r,symbol:h});await this._editOverlayedGraphics(s)}}async _loadTriangulatedMeasurementAdapter(e){if(!this.viewModel.triangulatedMeasurementAdapter){const t=import("./TriangulatedMeasurementAdapter.js"),{default:a}=await t;if(r(e),this.viewModel.triangulatedMeasurementAdapter=new a({viewModel:this.viewModel,measurementService:this.measurementService}),!this.viewModel.triangulatedMeasurementAdapter.viewModel.isResolved())return}return this.viewModel.triangulatedMeasurementAdapter}async _getAreaFromTask(e){const{mode:t}=this.viewModel;return this._calculationTask?.abort(),this._calculationTask=a(async a=>{this._areaCalculation=null;const i=await this.calculateAreaMeasurement(e,t,a);r(a),this._areaCalculation=i}),await this._calculationTask.promise,this._areaCalculation}async _getDistanceFromTask(){const{mode:e}=this.viewModel;return this._calculationTask?.abort(),this._calculationTask=a(async t=>{this._distanceCalculation=0;const a=await this.calculateDistanceMeasurement(this.measurementArray,e,t);r(t),this._distanceCalculation=a}),await this._calculationTask.promise,this._distanceCalculation}async _getAccuracyFromTask(){const{mode:e,currentBestFeature:t,currentBestFeatureMeasurementImage:i,activeViewer:s,activeTriangulatedViewer:n,layer:o,footprintExtent:c}=this.viewModel,l=s?.imageSize;return"none"!==e&&l?(this._calculationTask?.abort(),this._calculationTask=a(async a=>{this._distanceCalculation=0;const u={measurementArray:this.measurementArray,measurementType:"distance",currentBestFeature:t,currentBestFeatureMeasurementImage:i,activeViewer:s,imageSize:l,layer:o,triangularMeasurementActive:!1,footprintExtent:c,signal:a},h={measurementArray:this.measurementArray,measurementType:"distance",secondaryViewer:!1,currentBestFeature:t,currentBestFeatureMeasurementImage:i,activeViewer:s,activeTriangulatedViewer:n,layer:o,footprintExtent:c,signal:a},m="default"===e?await(this.measurementService?.calculateAccuracy(u)):await(this.measurementService?.calculateAccuracyPanoramic(h));r(a),this._distanceCalculation=m}),await this._calculationTask.promise,this._distanceCalculation):null}async _getAreaAccuracyFromTask(e){const{mode:t,currentBestFeature:i,currentBestFeatureMeasurementImage:s,activeViewer:n,activeTriangulatedViewer:o,layer:c,footprintExtent:l}=this.viewModel,u=n?.imageSize;return"none"!==t&&u?(this._calculationTask?.abort(),this._calculationTask=a(async a=>{this._distanceCalculation=0;const h={measurementArray:e,measurementType:"area",currentBestFeature:i,currentBestFeatureMeasurementImage:s,activeViewer:n,imageSize:u,layer:c,triangularMeasurementActive:!1,footprintExtent:l,signal:a},m={measurementArray:e,measurementType:"area",secondaryViewer:!1,currentBestFeature:i,currentBestFeatureMeasurementImage:s,activeViewer:n,activeTriangulatedViewer:o,layer:c,footprintExtent:l,signal:a},d="default"===t?await(this.measurementService?.calculateAccuracy(h)):await(this.measurementService?.calculateAccuracyPanoramic(m));r(a),this._distanceCalculation=d}),await this._calculationTask.promise,this._distanceCalculation):null}_updateOverlayedGeometry(e){this.viewModel.sketchTriangular?.update([e],{tool:"reshape"}).catch(()=>{})}};e([s()],B.prototype,"type",void 0),e([s()],B.prototype,"measurementArray",void 0),e([s()],B.prototype,"pixelMeasurement",void 0),e([s()],B.prototype,"pixelAreaMeasurement",void 0),e([s()],B.prototype,"polygonVertices",void 0),B=e([n("esri.widgets.OrientedImageryViewer.adapters.sketch.MeasurementAdapter")],B);const P=B,R=(e,t,a)=>{const{heading:i,pitch:r}=d(e,t[0],t[1]);return w(i,r,a)};export{P as default};
2
+ import{__decorate as e}from"tslib";import t from"../../../../Graphic.js";import{createTask as a}from"../../../../core/asyncUtils.js";import{EsriPromise as i}from"../../../../core/Promise.js";import{isAbortError as r,throwIfAborted as s}from"../../../../core/promiseUtils.js";import{property as n,subclass as o}from"../../../../core/accessorSupport/decorators.js";import c from"../../../../geometry/Polygon.js";import l from"../../../../geometry/Polyline.js";import{load as u}from"../../../../geometry/projectionUtils.js";import h from"../../../../geometry/SpatialReference.js";import m from"../../../../layers/GraphicsLayer.js";import{convertSphereVertexToPixelLocation as d,convertPixelToHeadingPitch as w,convertHeadingPitchToSphereVertex as p}from"../../../../layers/orientedImagery/transformations/utils.js";import{getMeasurementProperties as g,getMeasurementPropertiesPanoramic as y,pixelAreaMeasurement2D as v,pixelAreaMeasurementPanoramic as M,pixelDistanceMeasurement2D as f,pixelDistanceMeasurementPanoramic as T,getPixelLocationFromSphereVertices as A,formatPixels as V,imageToImageTransform as k,imageToImageTransformPanoramic as S}from"../../imageMeasurementUtils.js";import{extractHorizonAnglesFromMedia as _}from"../../utils.js";import{SketchHandlerMixin as x}from"../../mixins/SketchHandlerMixin.js";import F from"../../../Sketch/SketchViewModel.js";let z=[],G=[],B=0,P=class extends(x(i)){constructor(e){super(e),this.type="measurement",this.measurementArray=[],this.pixelMeasurement=0,this.pixelAreaMeasurement=0,this.polygonVertices=[],this._calculationTask=null,this._distanceCalculation=0,this._areaCalculation=null}initialize(){this.addResolvingPromise(u())}async handleCreate(e){try{const t=e.toolEventInfo;switch(e.tool){case"polyline":await this.handlePolylineEvents(e,t);break;case"polygon":await this.handlePolygonEvents(e,t)}}catch(t){if(!r(t))throw t}}handleDelete(e){this.resetDistanceMeasurements(),this.resetAreaMeasurements()}handleDestroy(){this.resetDistanceMeasurements(),this.resetAreaMeasurements()}async calculateAreaMeasurement(e,t,a){if(e.length<3||!this.viewModel.currentBestFeature||!this.viewModel.activeViewer?.imageSize||"none"===this.viewModel.mode)return null;const i="default"===t?await g(this.viewModel.currentBestFeature,this.viewModel.activeViewer?.imageSize,this.viewModel.footprintExtent):await y(this.viewModel.currentBestFeature,this.viewModel.activeViewer?.imageSize,this.viewModel.footprintExtent);return s(a),i?"default"===t?await v(e,i,!0):await M(e,i,!0,a):null}async calculateDistanceMeasurement(e,t,a){const{currentBestFeature:i,activeViewer:r}=this.viewModel;if(e.length<2||!i||!r?.imageSize||"none"===t)return null;const n="default"===t?await g(i,r?.imageSize,this.viewModel.footprintExtent):await y(i,r?.imageSize,this.viewModel.footprintExtent);return s(a),n?"default"===t?await f([e.at(0),e.at(-1)],n,!0):await T([e.at(0),e.at(-1)],n,!0):null}cursorUpdatePolylineHandler(e){const{mode:t,activeViewer:a}=this.viewModel;if("none"===t||!a?.imageSize)return;if("default"===t)this.measurementArray.push(e.coordinates);else{const t={x:e.coordinates[0],y:e.coordinates[1],z:e.coordinates[2]},i=d(t,a.imageSize[0],a.imageSize[1]);this.measurementArray.push([i.x,i.y])}const i=G.reduce((e,t)=>e+t,0)+this.pixelMeasurement;this.viewModel.distanceMeasurementResult=i}async cursorUpdatePolygonHandler(e){const{mode:t,activeViewer:a}=this.viewModel;if("none"===t||!a?.imageSize)return;const i=e.coordinates;if(z=[...this.polygonVertices],"default"===t)z.push(i);else{const e={x:i[0],y:i[1],z:i[2]},t=d(e,a?.imageSize[0],a?.imageSize[1]);z.push([t.x,t.y])}if(z.length<3||!this.viewModel.currentBestFeature||!this.viewModel.activeViewer?.imageSize)return;const r=z[0];z=z.filter((e,t)=>0===t||t===z.length-1||JSON.stringify(e)!==JSON.stringify(r));const s=await this._getAreaFromTask(z);s?.area&&s?.perimeter&&(B=s.area)}async handlePolylineEvents(e,t){const{currentBestFeature:a,activeViewer:i,mode:r,view:s}=this.viewModel,n=!this.viewModel.accuracyParametersMissing;if("cancel"===e.state)return this.resetDistanceMeasurements(),this.viewModel.distanceMeasurementResult=0,void(this.viewModel.distanceAccuracyArray=[]);if("complete"===e.state&&e.graphic){if(this.viewModel.activeViewer?.addGraphic(e.graphic),this.viewModel.triangularMeasurementActive&&a){const t={pixels:e.graphic.geometry.paths[0],activeFeature:a,activeViewer:i,mode:r,spatialReference:s?.spatialReference};await(this.measurementService?.updateMeasurementVectorsArray(t)),await this._overlayFirstMeasurement(e.graphic,e.tool)}return this.viewModel.measurementGraphic=e.graphic,void this.resetDistanceMeasurements()}switch(t?.type){case"cursor-update":this.cursorUpdatePolylineHandler(t);break;case"vertex-add":if(this.measurementArray.length&&n){const e=await this._getAccuracyFromTask();e&&this.viewModel.distanceAccuracyArray.push(e)}this.vertexUpdatePolylineHandler()}const o=await this._getDistanceFromTask();this.pixelMeasurement=o??this.pixelMeasurement}async handlePolygonEvents(e,t){const{currentBestFeature:a,activeViewer:i,mode:r,view:s,accuracyParametersMissing:n}=this.viewModel;if("cancel"===e.state)return this.resetAreaMeasurements(),this.viewModel.areaMeasurementResult=0,void(this.viewModel.areaMeasurementAccuracy=0);if("complete"===e.state&&e.graphic){this.viewModel.activeViewer?.addGraphic(e.graphic);if(!n&&!this.viewModel.triangularMeasurementActive){const e=await this._getAreaAccuracyFromTask(this.polygonVertices);this.viewModel.areaMeasurementAccuracy=e||this.viewModel.areaMeasurementAccuracy}if(this.viewModel.triangularMeasurementActive&&a){const t={pixels:e.graphic.geometry.rings[0],activeFeature:a,activeViewer:i,mode:r,spatialReference:s?.spatialReference};await(this.measurementService?.updateMeasurementVectorsArray(t)),await this._overlayFirstMeasurement(e.graphic,e.tool)}return this.viewModel.measurementGraphic=e.graphic,void this.resetAreaMeasurements()}switch(t?.type){case"vertex-add":await this.vertexAddPolygonHandler(t);break;case"cursor-update":await this.cursorUpdatePolygonHandler(t)}this.viewModel.areaMeasurementResult=B>0?B:this.pixelAreaMeasurement}async vertexAddPolygonHandler(e){const{mode:t,activeViewer:a}=this.viewModel,i=e.added,r=i[i.length-1];if(!Array.isArray(r)||"none"===t||!a?.imageSize)return;if("default"===t)this.polygonVertices.push(r);else{const e={x:r[0],y:r[1],z:r[2]},t=d(e,a?.imageSize[0],a?.imageSize[1]);this.polygonVertices.push([t.x,t.y])}if(this.polygonVertices.length<3||!this.viewModel.currentBestFeature||!this.viewModel.activeViewer?.imageSize)return;const s=this.polygonVertices[0];this.polygonVertices=this.polygonVertices.filter((e,t)=>0===t||t===this.polygonVertices.length-1||JSON.stringify(e)!==JSON.stringify(s));const n=await this._getAreaFromTask(this.polygonVertices);if(!n?.area||!n?.perimeter)return;const{area:o}=n;this.pixelAreaMeasurement=o}vertexUpdatePolylineHandler(){this.measurementArray=this.measurementArray.slice(-1);const e=G.reduce((e,t)=>e+t,0)+this.pixelMeasurement;this.viewModel.distanceMeasurementResult=e,this.pixelMeasurement>0&&G.push(this.pixelMeasurement)}resetDistanceMeasurements(){this.measurementArray=[],this.pixelMeasurement=0,G=[]}resetAreaMeasurements(){this.polygonVertices=[],this.pixelAreaMeasurement=0,B=0}async _editOverlayedGraphics(e){this.viewModel.sketchTriangularGraphicsLayer||this._initializeSketchTriangularGraphicsLayer(),this.viewModel.sketchTriangularGraphicsLayer?.destroyed&&this._handleDestroyedTriangularSketchLayer(),this.viewModel.sketchTriangularGraphicsLayer.add(e),this.viewModel.sketchTriangular||(this._initializeSketchTriangular(),await this._loadTriangulatedMeasurementAdapter()),this._updateOverlayedGeometry(e)}_handleDestroyedTriangularSketchLayer(){this.viewModel.sketchTriangularGraphicsLayer&&this.viewModel.activeTriangulatedViewer&&(this.viewModel.activeTriangulatedViewer.imageRenderer.map.layers.remove(this.viewModel.sketchTriangularGraphicsLayer),this.viewModel.sketchTriangularGraphicsLayer=new m,this.viewModel.activeTriangulatedViewer.imageRenderer.map.layers.add(this.viewModel.sketchTriangularGraphicsLayer),this.viewModel.sketchTriangular&&(this.viewModel.sketchTriangular.layer=this.viewModel.sketchTriangularGraphicsLayer,this.viewModel.sketchTriangular.view=this.viewModel.activeTriangulatedViewer.imageRenderer))}_initializeSketchTriangular(){if(!this.viewModel.activeTriangulatedViewer)return;const e="panoramic"===this.viewModel.mode;this.viewModel.sketchTriangular=new F({view:this.viewModel.activeTriangulatedViewer.imageRenderer,layer:this.viewModel.sketchTriangularGraphicsLayer,updateOnGraphicClick:!0,defaultUpdateOptions:{toggleToolOnClick:!1,enableZ:!e}}),e&&(this.viewModel.sketchTriangular.defaultUpdateOptions.reshapeOptions={edgeOperation:"offset",shapeOperation:"move-xy",vertexOperation:"move-xy"})}_initializeSketchTriangularGraphicsLayer(){this.viewModel.activeTriangulatedViewer&&(this.viewModel.sketchTriangularGraphicsLayer=new m,this.viewModel.activeTriangulatedViewer.imageRenderer.map.layers.add(this.viewModel.sketchTriangularGraphicsLayer))}async _overlayFirstMeasurement(e,t){switch(t){case"polyline":await this._overlayFirstDistanceMeasurement(e);break;case"polygon":await this._overlayFirstAreaGeometry(e)}}async _overlayFirstDistanceMeasurement(e){const{mode:a,activeTriangulatedViewer:i,currentBestFeature:r,activeViewer:s,footprintExtent:n,currentBestFeatureMeasurementImage:o}=this.viewModel,c=e.geometry?.clone(),u=e.symbol?.clone(),m=i?.imageSize,d=[...c.paths[0]],w=_(i?.media),p="default"===a;if(!("none"!==a&&"video"!==a&&m&&r&&s?.imageSize&&o))return;const v=p?d:A(d,m,w),M=p?V(v,!0):v,f=p?await g(r,s?.imageSize,n):await y(r,s?.imageSize,n),T=p?await g(o,this.viewModel.imageMeasurementViewer?.imageSize,n):await y(o,this.viewModel.activeTriangulatedViewer?.imageSize,n);if(M?.length&&f&&T){const e=p?await k(M,f,T):await S(M,f,T),a=e.map(e=>[e.x-.5,-.5-e.y]),i=e.slice(0,2).map(e=>O(e,m,w)),r=new l({paths:p?[a]:[i],spatialReference:h.WebMercator}),s=new t({geometry:r,symbol:u});await this._editOverlayedGraphics(s)}}async _overlayFirstAreaGeometry(e){const{mode:a,activeTriangulatedViewer:i,currentBestFeature:r,currentBestFeatureMeasurementImage:s,activeViewer:n,footprintExtent:o}=this.viewModel,l=e.geometry?.clone(),u=e.symbol?.clone(),m=i?.imageSize,d=_(i?.media),w=[...l.rings[0]],p="default"===a;if(!("none"!==a&&"video"!==a&&m&&r&&n?.imageSize&&s))return;const v=p?w:A(w,m,d),M=p?V(v,!0):v,f=p?await g(r,n?.imageSize,o):await y(r,n?.imageSize,o),T=p?await g(s,this.viewModel.imageMeasurementViewer?.imageSize,o):await y(s,this.viewModel.activeTriangulatedViewer?.imageSize,o);if(M?.length&&f&&T){const e=p?await k(M,f,T):await S(M,f,T),a=e.map(e=>[e.x-.5,-.5-e.y]),i=e.slice(0,p?2:e.length).map(e=>O(e,m,d)),r=new c({rings:p?[a]:[i],spatialReference:h.WebMercator}),s=new t({geometry:r,symbol:u});await this._editOverlayedGraphics(s)}}async _loadTriangulatedMeasurementAdapter(e){if(!this.viewModel.triangulatedMeasurementAdapter){const t=import("./TriangulatedMeasurementAdapter.js"),{default:a}=await t;if(s(e),this.viewModel.triangulatedMeasurementAdapter=new a({viewModel:this.viewModel,measurementService:this.measurementService}),!this.viewModel.triangulatedMeasurementAdapter.viewModel.isResolved())return}return this.viewModel.triangulatedMeasurementAdapter}async _getAreaFromTask(e){const{mode:t}=this.viewModel;return this._calculationTask?.abort(),this._calculationTask=a(async a=>{this._areaCalculation=null;const i=await this.calculateAreaMeasurement(e,t,a);s(a),this._areaCalculation=i}),await this._calculationTask.promise,this._areaCalculation}async _getDistanceFromTask(){const{mode:e}=this.viewModel;return this._calculationTask?.abort(),this._calculationTask=a(async t=>{this._distanceCalculation=0;const a=await this.calculateDistanceMeasurement(this.measurementArray,e,t);s(t),this._distanceCalculation=a}),await this._calculationTask.promise,this._distanceCalculation}async _getAccuracyFromTask(){const{mode:e,currentBestFeature:t,currentBestFeatureMeasurementImage:i,activeViewer:r,activeTriangulatedViewer:n,layer:o,footprintExtent:c}=this.viewModel,l=r?.imageSize;return"none"!==e&&l?(this._calculationTask?.abort(),this._calculationTask=a(async a=>{this._distanceCalculation=0;const u={measurementArray:this.measurementArray,measurementType:"distance",currentBestFeature:t,currentBestFeatureMeasurementImage:i,activeViewer:r,imageSize:l,layer:o,triangularMeasurementActive:!1,footprintExtent:c,signal:a},h={measurementArray:this.measurementArray,measurementType:"distance",secondaryViewer:!1,currentBestFeature:t,currentBestFeatureMeasurementImage:i,activeViewer:r,activeTriangulatedViewer:n,layer:o,footprintExtent:c,signal:a},m="default"===e?await(this.measurementService?.calculateAccuracy(u)):await(this.measurementService?.calculateAccuracyPanoramic(h));s(a),this._distanceCalculation=m}),await this._calculationTask.promise,this._distanceCalculation):null}async _getAreaAccuracyFromTask(e){const{mode:t,currentBestFeature:i,currentBestFeatureMeasurementImage:r,activeViewer:n,activeTriangulatedViewer:o,layer:c,footprintExtent:l}=this.viewModel,u=n?.imageSize;return"none"!==t&&u?(this._calculationTask?.abort(),this._calculationTask=a(async a=>{this._distanceCalculation=0;const h={measurementArray:e,measurementType:"area",currentBestFeature:i,currentBestFeatureMeasurementImage:r,activeViewer:n,imageSize:u,layer:c,triangularMeasurementActive:!1,footprintExtent:l,signal:a},m={measurementArray:e,measurementType:"area",secondaryViewer:!1,currentBestFeature:i,currentBestFeatureMeasurementImage:r,activeViewer:n,activeTriangulatedViewer:o,layer:c,footprintExtent:l,signal:a},d="default"===t?await(this.measurementService?.calculateAccuracy(h)):await(this.measurementService?.calculateAccuracyPanoramic(m));s(a),this._distanceCalculation=d}),await this._calculationTask.promise,this._distanceCalculation):null}_updateOverlayedGeometry(e){this.viewModel.sketchTriangular?.update([e],{tool:"reshape"}).catch(()=>{})}};e([n()],P.prototype,"type",void 0),e([n()],P.prototype,"measurementArray",void 0),e([n()],P.prototype,"pixelMeasurement",void 0),e([n()],P.prototype,"pixelAreaMeasurement",void 0),e([n()],P.prototype,"polygonVertices",void 0),P=e([o("esri.widgets.OrientedImageryViewer.adapters.sketch.MeasurementAdapter")],P);const R=P,O=(e,t,a)=>{const{heading:i,pitch:r}=w(e,t[0],t[1]);return p(i,r,a)};export{R as default};