@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 4.97 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.19/LICENSE.txt */
import{__decorate as o}from"tslib";import t from"../../../../core/Accessor.js";import{watch as e}from"../../../../core/reactiveUtils.js";import{property as s,subclass as i}from"../../../../core/accessorSupport/decorators.js";import{ControlPointsTransformTool as a}from"./ControlPointsTransformTool.js";import{TransformTool as n}from"./TransformTool.js";const r={redo:"r",undo:"z"};let d=class extends t{constructor(o){super(o),this._transformTool=null,this._controlPointsTransformTool=null,this._advancedModeTransformTool=null,this._activeTool=null,this._sharedUndoStack=[],this._sharedRedoStack=[],this._originalOpacity=null,this.activeHandle=0}initialize(){const{view:o,mediaElement:t,preserveAspectRatio:s,snapRotation:i,advancedMode:d}=this;this._originalOpacity=t.opacity,this._transformTool=new n({target:t,view:o,preserveAspectRatio:s,snapRotation:i}),this._controlPointsTransformTool=new a({mediaElement:t,view:o}),this._advancedModeTransformTool=new a({mediaElement:d.mediaElement,view:d.view}),this._transformTool.setSharedUndoStack(this._sharedUndoStack),this._transformTool.setSharedRedoStack(this._sharedRedoStack),this._controlPointsTransformTool.setSharedUndoStack(this._sharedUndoStack),this._controlPointsTransformTool.setSharedRedoStack(this._sharedRedoStack),this._advancedModeTransformTool.setSharedUndoStack(this._sharedUndoStack),this._advancedModeTransformTool.setSharedRedoStack(this._sharedRedoStack);const l=t.georeference,c=d.mediaElement.georeference;d.view.tools.addMany([this._advancedModeTransformTool]),"controlPoints"in c&&"controlPoints"in l&&this.addHandles([d.view.on("key-down",o=>{o.key===r.undo&&this.canUndo()&&(this.undo(),o.stopPropagation()),o.key===r.redo&&this.canRedo()&&(this.redo(),o.stopPropagation())}),d.view.on("focus",async o=>{this._controlPointsTransformTool.removeHighlightActiveHandle(),await this._advancedModeTransformTool.highlightActiveHandle()}),e(()=>c.controlPoints,o=>{l.controlPoints=o.map(({sourcePoint:o},t)=>({sourcePoint:o,mapPoint:l.controlPoints[t].mapPoint})),this._activeTool?.refresh()}),e(()=>this._controlPointsTransformTool.activeHandle,o=>{this._advancedModeTransformTool.updateActiveHandle(o),this.activeHandle=o}),e(()=>this._advancedModeTransformTool.activeHandle,o=>{this._controlPointsTransformTool.updateActiveHandle(o),this.activeHandle=o})]),this.addHandles([o.on("key-down",o=>{o.key===r.undo&&this.canUndo()&&(this.undo(),o.stopPropagation()),o.key===r.redo&&this.canRedo()&&(this.redo(),o.stopPropagation())}),o.on("focus",async o=>{this._advancedModeTransformTool.removeHighlightActiveHandle(),await this._controlPointsTransformTool.highlightActiveHandle()})]),o.tools.addMany([this._transformTool,this._controlPointsTransformTool]),o.activeTool=this._transformTool,this._activeTool=this._transformTool,o.focus()}destroy(){this._transformTool?.destroy(),this._controlPointsTransformTool?.destroy(),this._transformTool=null,this._controlPointsTransformTool=null,this._advancedModeTransformTool=null,this._activeTool=null,this._sharedUndoStack=null,this._sharedRedoStack=null}canUndo(){return this._sharedUndoStack.length>0}canRedo(){return this._sharedRedoStack.length>0}undo(){if(this._sharedUndoStack.length>0){const{tool:o,operation:t}=this._sharedUndoStack.pop();o!==this._activeTool&&o.refresh(),t.undo(),o.updateGraphics(),this._sharedRedoStack.push({tool:o,operation:t}),this._activeTool!==o&&this._activeTool?.refresh()}}redo(){if(this._sharedRedoStack.length>0){const{tool:o,operation:t}=this._sharedRedoStack.pop();o!==this._activeTool&&o.refresh(),t.apply(),o.updateGraphics(),this._sharedUndoStack.push({tool:o,operation:t}),this._activeTool!==o&&this._activeTool?.refresh()}}refresh(){this._activeTool.refresh()}reset(){this._activeTool.reset(),this._advancedModeTransformTool.reset()}async enableAdvancedMode(){this.view.activeTool=this._controlPointsTransformTool,this._activeTool=this._controlPointsTransformTool,this._activeTool.refresh(),await this.advancedMode.view.when(),this.advancedMode.view.activeTool=this._advancedModeTransformTool,this._originalOpacity=this._controlPointsTransformTool.mediaElement.opacity,this._controlPointsTransformTool.mediaElement.opacity=.25*this._originalOpacity}disableAdvancedMode(){this.view.activeTool=this._transformTool,this._activeTool=this._transformTool,this._activeTool.refresh(),this.advancedMode.view.activeTool=null,this._controlPointsTransformTool.mediaElement.opacity=this._originalOpacity}};o([s()],d.prototype,"activeHandle",void 0),o([s({constructOnly:!0})],d.prototype,"advancedMode",void 0),o([s()],d.prototype,"preserveAspectRatio",void 0),o([s()],d.prototype,"snapRotation",void 0),o([s({constructOnly:!0,nonNullable:!0})],d.prototype,"mediaElement",void 0),o([s({constructOnly:!0})],d.prototype,"view",void 0),d=o([i("esri.views.2d.interactive.editingTools.MediaTransformToolsWrapper")],d);export{d as MediaTransformToolsWrapper,r as keys};