UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 1.79 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{Vertex as e,Edge as t}from"../EditGeometry.js";class i{constructor(e,t,i){this._editGeometry=e,this._edge=t,this._t=i,this.createdVertex=null,this._left=null,this._right=null}apply(){let i="redo";const r=this._edge,s=r.component,d=r.leftVertex,h=r.rightVertex;s.edges.splice(s.edges.indexOf(r),1),null==this.createdVertex&&(i="apply",this.createdVertex=new e(r.component)),s.vertices.push(this.createdVertex),this.createdVertex.pos=this._editGeometry.coordinateHelper.lerp(r.leftVertex.pos,r.rightVertex.pos,this._t,this._editGeometry.coordinateHelper.createVector()),null==this._left&&(this._left=new t(s,d,this.createdVertex)),this._left.leftVertex.leftEdge?s.edges.push(this._left):s.edges.unshift(this._left),d.rightEdge=this._left,null==this._right&&(this._right=new t(s,this.createdVertex,h)),s.edges.push(this._right),h.leftEdge=this._right,s.updateVertexIndex(this.createdVertex,d.index+1),this._editGeometry.notifyChanges({operation:i,addedVertices:[this.createdVertex]})}undo(){if(null==this.createdVertex||null==this._left||null==this._right)return null;const e=this._edge,t=e.component,i=this.createdVertex.leftEdge,r=this.createdVertex.rightEdge,s=i?.leftVertex,d=r?.rightVertex;t.vertices.splice(t.vertices.indexOf(this.createdVertex),1),t.edges.splice(t.edges.indexOf(this._left),1),t.edges.splice(t.edges.indexOf(this._right),1),this._edge.leftVertex.leftEdge?t.edges.push(this._edge):t.edges.unshift(this._edge),s&&(s.rightEdge=e),d&&(d.leftEdge=e),s&&t.updateVertexIndex(s,s.index),this._editGeometry.notifyChanges({operation:"undo",removedVertices:[this.createdVertex]})}accumulate(){return!1}}export{i as SplitEdge};