UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 1.93 kB
import{createTask as e}from"../../../core/asyncUtils.js";import{destroyHandle as i,handlesGroup as t}from"../../../core/handleUtils.js";import{abortMaybe as s,removeMaybe as r,isNone as l,isSome as a}from"../../../core/maybe.js";import{throwIfAborted as h}from"../../../core/promiseUtils.js";import{watch as o}from"../../../core/reactiveUtils.js";import{getGraphicEffectiveElevationInfo as n}from"../../../support/elevationInfoUtils.js";import{settings as m}from"../../../views/3d/interactive/editingTools/settings.js";import{OutlineVisualElement as g}from"../../../views/3d/interactive/visualElements/OutlineVisualElement.js";import{GraphicState as c}from"../../../views/3d/layers/graphics/GraphicState.js";import{RenderOccludedFlag as p}from"../../../views/3d/webgl-engine/lib/Material.js";import{highlightsSupported as d}from"../../../views/support/layerViewUtils.js";class u{constructor(e){this._params=e,this._highlightTask=null,this._highlightHandle=null,this._visualElementHandle=null}destroy(){this.remove()}remove(){this._highlightTask=s(this._highlightTask),this._highlightHandle=r(this._highlightHandle),this._visualElementHandle=r(this._visualElementHandle)}showHighlight(i){if(this.remove(),l(i)||!v(i))return;const t=i.layer;this._highlightTask=e((async e=>{const s=await this._params.view.whenLayerView(t);h(e),d(s)&&(this._highlightHandle=s.highlight(i))}))}showReshaping(e){if(this.remove(),l(e))return;const s=this._params.view,r=new g({view:s,geometry:v(e)?e.geometry:null,attached:!1,elevationInfo:n(e),renderOccluded:p.OccludeAndTransparentStencil}),a=new c({graphic:e}),h=[o((()=>a.isDraped),(e=>{r.isDraped=e})),a.on("changed",(()=>{r.geometry=v(e)?e.geometry:null})),s.trackGraphicState(a),s.maskOccludee(e),i(r)];m.visualElements.lineGraphics.outline.apply(r),r.attached=!0,this._visualElementHandle=t(h)}}function v(e){return a(e.geometry)&&"polyline"===e.geometry.type}export{u as InputRepresentation3D};