UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 5.8 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ import{_ as e}from"../../../../chunks/tslib.es6.js";import r from"../../../../core/Accessor.js";import{destroyHandle as t}from"../../../../core/handleUtils.js";import{destroyMaybe as o}from"../../../../core/maybe.js";import{watch as s,initial as i}from"../../../../core/reactiveUtils.js";import{property as a}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/has.js";import"../../../../core/Logger.js";import"../../../../core/RandomLCG.js";import{subclass as l}from"../../../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as p}from"../../../../core/support/UpdatingHandles.js";import n from"../../../../layers/GraphicsLayer.js";import c from"../../../../rest/support/PointBarrier.js";import h from"../../../../rest/support/PolygonBarrier.js";import y from"../../../../rest/support/PolylineBarrier.js";import d from"../../../../rest/support/Stop.js";import m from"../../../../widgets/Sketch/SketchViewModel.js";function g(e,r){e.networkFeature=r}function u(e){const r=w(e.graphic);return{...e,networkFeature:r}}function b(e){const r=e.graphics.map((e=>w(e)));return{...e,networkFeatures:r}}function w(e){return e.networkFeature}function k(e){return"point"===e?.type||"polyline"===e?.type||"polygon"===e?.type}let _=class extends r{constructor(e){super(e),this._createMode=null,this._graphicsLayer=new n({internal:!0,listMode:"hide",title:"Banana"}),this._updatingHandles=new p,this.enabled=!0,this._handleSketchViewModelEvents=async e=>{switch(e.type){case"update":switch(e.state){case"active":case"complete":for(const r of e.graphics){w(r).geometry=k(r.geometry)?r.geometry.clone():null}}break;case"undo":case"redo":break;case"delete":for(const r of e.graphics){const e=w(r);this._removeNetworkFeature(e)}break;case"create":if(e.graphic&&"complete"===e.state&&this._createMode){const r=e.graphic.geometry?.clone(),t=e.graphic.symbol?.clone();if(!r)break;switch(this._createMode){case"stop":{if("point"!==r.type)break;const{stops:t}=this.layer;if(t.length>0&&t.every((({geometry:e})=>!e))){t.at(0).geometry=r;break}if(t.length>1&&t.filter(((e,r)=>0!==r)).every((({geometry:e})=>!e))){t.at(1).geometry=r;break}const o=new d({geometry:r});t.add(o),g(e.graphic,o);break}case"point-barrier":{if("point"!==r.type)break;const o=new c({geometry:r,symbol:t});this.layer.pointBarriers.add(o),g(e.graphic,o);break}case"polyline-barrier":{if("polyline"!==r.type)break;const o=new y({geometry:r,symbol:t});this.layer.polylineBarriers.add(o),g(e.graphic,o);break}case"polygon-barrier":{if("polygon"!==r.type)break;const o=new h({geometry:r,symbol:t});this.layer.polygonBarriers.add(o),g(e.graphic,o);break}}}}(await this.view.whenLayerView(this.layer)).emit(e.type,"create"===e.type?u(e):b(e))}}initialize(){this._sketchViewModel=new m({layer:this._graphicsLayer,view:this.view}),this.addHandles([s((()=>this.enabled),(e=>{e?this._activate():this._deactivate()}),i),s((()=>{const{stops:e,pointBarriers:r,polylineBarriers:t,polygonBarriers:o}=this.layer;return{stops:e,pointBarriers:r,polylineBarriers:t,polygonBarriers:o}}),(()=>{this.enabled&&this._loadClonedGraphics()})),this._sketchViewModel.on(["create","delete","redo","undo","update"],this._handleSketchViewModelEvents),t(this._updatingHandles)])}destroy(){this.view.map.remove(this._graphicsLayer),this._graphicsLayer.removeAll(),this._graphicsLayer=o(this._graphicsLayer),this._sketchViewModel=o(this._sketchViewModel)}get selectedNetworkFeatures(){return this._sketchViewModel.updateGraphics.map((e=>w(e)))}get updating(){return this._updatingHandles.updating}create(e){switch(this._createMode=e,e){case"stop":this.layer.defaultSymbols.stops?.unlocated&&(this._sketchViewModel.pointSymbol=this.layer.defaultSymbols.stops.unlocated.clone());break;case"point-barrier":this.layer.defaultSymbols.pointBarriers&&(this._sketchViewModel.pointSymbol=this.layer.defaultSymbols.pointBarriers.clone());break;case"polyline-barrier":this.layer.defaultSymbols.polylineBarriers&&(this._sketchViewModel.polylineSymbol=this.layer.defaultSymbols.polylineBarriers.clone());break;case"polygon-barrier":this.layer.defaultSymbols.polygonBarriers&&(this._sketchViewModel.polygonSymbol=this.layer.defaultSymbols.polygonBarriers.clone())}switch(e){case"stop":case"point-barrier":return this._sketchViewModel.create("point");case"polyline-barrier":return this._sketchViewModel.create("polyline");case"polygon-barrier":return this._sketchViewModel.create("polygon")}}remove(e){const r=this._graphicsLayer.graphics.find((r=>w(r)===e));r&&this._graphicsLayer.remove(r),this._removeNetworkFeature(e)}_activate(){this._loadClonedGraphics(),this.view.map.add(this._graphicsLayer)}_deactivate(){this._sketchViewModel.cancel(),this.view.map?.remove(this._graphicsLayer),this._graphicsLayer.removeAll()}_loadClonedGraphics(){const e=[this.layer.stops,this.layer.pointBarriers,this.layer.polylineBarriers,this.layer.polygonBarriers].flatMap((e=>e.toArray().map((e=>{const r=e.toGraphic();return r.networkFeature=e,r}))));this._graphicsLayer.removeAll().addMany(e)}_removeNetworkFeature(e){switch(e.type){case"stop":this.layer.stops.remove(e);break;case"point-barrier":this.layer.pointBarriers.remove(e);break;case"polyline-barrier":this.layer.polylineBarriers.remove(e);break;case"polygon-barrier":this.layer.polygonBarriers.remove(e)}}};e([a()],_.prototype,"enabled",void 0),e([a({constructOnly:!0})],_.prototype,"layer",void 0),e([a({readOnly:!0})],_.prototype,"selectedNetworkFeatures",null),e([a()],_.prototype,"updating",null),e([a({constructOnly:!0})],_.prototype,"view",void 0),_=e([l("esri.views.2d.layers.support.RouteLayerInteraction")],_);export{_ as RouteLayerInteraction};