@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 2.63 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.19/LICENSE.txt */
import{__decorate as e}from"tslib";import t from"../../../../../core/Accessor.js";import{destroyHandle as o}from"../../../../../core/handleUtils.js";import{initial as i}from"../../../../../core/reactiveUtils.js";import{property as r,subclass as s}from"../../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as n}from"../../../../../core/support/UpdatingHandles.js";import{projectAsync as a}from"../../../../../geometry/projectionUtils.js";import{EditGeometryOperations as d}from"../../../../interactive/editGeometry/EditGeometryOperations.js";let p=class extends t{get operations(){return this._operations}get updating(){return this._updatingHandles.updating}constructor(e){super(e),this._updatingHandles=new n}initialize(){this.addHandles([o(this._updatingHandles),this._updatingHandles.add(()=>this.element.georeference?.coords,e=>this._elementCoordinatesChanged(e),i)])}_elementCoordinatesChanged(e){this._updatedElementCoordinates!==e&&this._updatingHandles.addPromise(this._whenProjected(e,this.view.spatialReference,e=>{if(!e)return void this._replaceOperations(null);const{_operations:t}=this;t?.trySetGeometry(e)?this.onModifiedExternally():this._replaceOperations(d.fromGeometry(e,this.view.state.viewingMode))}))}_operationsGeometryChanged(){const{element:{georeference:e},_operations:t}=this;if(!t||!e)return;const o=t.data.geometry;if(!e.coords)return void this._updateElementCoordinates(o);const i=e.coords.spatialReference;this._updatingHandles.addPromise(this._whenProjected(o,i,e=>this._updateElementCoordinates(e)))}_updateElementCoordinates(e){const{georeference:t}=this.element;t&&(t.coords=e,this._updatedElementCoordinates=t.coords)}async _whenProjected(e,t,o){if(!e)return void o(e);const{_operations:i,element:{georeference:r}}=this,s=await a(e,t);i===this._operations&&r===this.element.georeference&&o(s)}_replaceOperations(e){this._operations&&(this.removeHandles(this._operations),this._operations.destroy()),this._operations=e,e&&this.addHandles(e.data.on("change",()=>this._operationsGeometryChanged()),e),this.onModifiedExternally()}};e([r({constructOnly:!0})],p.prototype,"view",void 0),e([r({constructOnly:!0})],p.prototype,"layer",void 0),e([r({constructOnly:!0})],p.prototype,"element",void 0),e([r({constructOnly:!0})],p.prototype,"onModifiedExternally",void 0),e([r()],p.prototype,"_operations",void 0),e([r()],p.prototype,"operations",null),e([r()],p.prototype,"updating",null),p=e([s("esri.views.3d.interactive.editingTools.media.MediaElementControllerShape")],p);export{p as MediaElementControllerShape};