UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

6 lines (5 loc) 5.26 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{_ as o}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Accessor.js";import{watch as e}from"../../../../core/reactiveUtils.js";import{property as s}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/has.js";import"../../../../core/Logger.js";import"../../../../core/RandomLCG.js";import{subclass as i}from"../../../../core/accessorSupport/decorators/subclass.js";import{ControlPointsTransformTool as a}from"./ControlPointsTransformTool.js";import{TransformTool as r}from"./TransformTool.js";const n={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 r({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===n.undo&&this.canUndo()&&(this.undo(),o.stopPropagation()),o.key===n.redo&&this.canRedo()&&(this.redo(),o.stopPropagation())})),d.view.on("focus",(async o=>{this._controlPointsTransformTool.removeHighlightActiveHandle(),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===n.undo&&this.canUndo()&&(this.undo(),o.stopPropagation()),o.key===n.redo&&this.canRedo()&&(this.redo(),o.stopPropagation())})),o.on("focus",(async o=>{this._advancedModeTransformTool.removeHighlightActiveHandle(),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,n as keys};