UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 5.17 kB
import{_ as o}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Accessor.js";import{unwrap as e}from"../../../../core/maybe.js";import{watch as s}from"../../../../core/reactiveUtils.js";import{property as i}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import{subclass as a}from"../../../../core/accessorSupport/decorators/subclass.js";import{ControlPointsTransformTool as r}from"./ControlPointsTransformTool.js";import{TransformTool as n}from"./TransformTool.js";const d={redo:"r",undo:"z"};let l=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:i,snapRotation:a,advancedMode:l}=this;this._originalOpacity=t.opacity,this._transformTool=new n({target:t,view:o,preserveAspectRatio:i,snapRotation:a}),this._controlPointsTransformTool=new r({mediaElement:t,view:o}),this._advancedModeTransformTool=new r({mediaElement:l.mediaElement,view:l.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 c=e(t.georeference),h=e(l.mediaElement.georeference);l.view.tools.addMany([this._advancedModeTransformTool]),"controlPoints"in h&&"controlPoints"in c&&this.addHandles([l.view.on("key-down",(o=>{o.key===d.undo&&this.canUndo()&&(this.undo(),o.stopPropagation()),o.key===d.redo&&this.canRedo()&&(this.redo(),o.stopPropagation())})),l.view.on("focus",(async o=>{this._controlPointsTransformTool.removeHighlightActiveHandle(),this._advancedModeTransformTool.highlightActiveHandle()})),s((()=>h.controlPoints),(o=>{c.controlPoints=e(o).map((({sourcePoint:o},t)=>({sourcePoint:o,mapPoint:e(c.controlPoints)[t].mapPoint}))),this._activeTool?.refresh()})),s((()=>this._controlPointsTransformTool.activeHandle),(o=>{this._advancedModeTransformTool.updateActiveHandle(o),this.activeHandle=o})),s((()=>this._advancedModeTransformTool.activeHandle),(o=>{this._controlPointsTransformTool.updateActiveHandle(o),this.activeHandle=o}))]),this.addHandles([o.on("key-down",(o=>{o.key===d.undo&&this.canUndo()&&(this.undo(),o.stopPropagation()),o.key===d.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([i()],l.prototype,"activeHandle",void 0),o([i({constructOnly:!0})],l.prototype,"advancedMode",void 0),o([i()],l.prototype,"preserveAspectRatio",void 0),o([i()],l.prototype,"snapRotation",void 0),o([i({constructOnly:!0,nonNullable:!0})],l.prototype,"mediaElement",void 0),o([i({constructOnly:!0})],l.prototype,"view",void 0),l=o([a("esri.views.2d.interactive.editingTools.MediaTransformToolsWrapper")],l);export{d as KEYS,l as MediaTransformToolsWrapper};