@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 6.95 kB
JavaScript
import{_ as i}from"../../../../../chunks/tslib.es6.js";import t from"../../../../../Color.js";import e from"../../../../../core/Accessor.js";import{getAccentColor as s,getContrastColor as a}from"../../../../../core/analysisThemeUtils.js";import n from"../../../../../core/Handles.js";import{destroyMaybe as o,isSome as r,applySome as l,isNone as h}from"../../../../../core/maybe.js";import{watch as d,initial as p}from"../../../../../core/reactiveUtils.js";import{property as c}from"../../../../../core/accessorSupport/decorators/property.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import{subclass as u}from"../../../../../core/accessorSupport/decorators/subclass.js";import{c as g}from"../../../../../chunks/vec3f64.js";import{fromPoints as _}from"../../../../../geometry/support/lineSegment.js";import{MeasurementMode as m}from"../../../analysis/interfaces.js";import{ViewMode as y}from"../../../analysis/DirectLineMeasurement/interfaces.js";import{Manipulator3D as v}from"../../Manipulator3D.js";import{createSphereManipulator as b}from"../../manipulatorUtils.js";import{LaserlineVisualElement as w}from"../../visualElements/LaserlineVisualElement.js";var P;!function(i){i.Manipulators="manipulators",i.AnalysisViewDestroyed="analysis-view-destroyed",i.AnalysisView="analysis-view"}(P||(P={}));let L=class extends e{constructor(i){super(i),this._params={laserLineGlowColor:t.toUnitRGB(s()),laserLineGlowWidth:8,laserLineGlowFalloff:8,laserLineInnerColor:t.toUnitRGB(a()),laserLineInnerWidth:.75,laserLineGlobalAlpha:.75,handleColor:t.toUnitRGB(s()),handleOpacity:.5,handleRadius:5},this.cursorPoint=null,this._visible=!1,this._laserLine=null,this.laserLineEnabled=!0,this._handles=new n,this._lastDraggedHandle=null}initialize(){this._laserLine=new w({view:this.view,attached:!0}),this._updateVisibility(this._visible),this._connectToAnalysisView()}destroy(){this._handles=o(this._handles),this._laserLine=o(this._laserLine)}get visible(){return this._visible}set visible(i){i?this.show():this.hide()}get testData(){const i=this._laserLine.testData,t=this.analysisViewData.testData;return{labels:t?.labels,stripeLength:t?.stripeLength,laserLineRenderer:{heightManifoldEnabled:!!r(i)&&i.heightManifoldEnabled,heightManifoldTarget:r(i)?i.heightManifoldTarget:null,pointDistanceEnabled:!!r(i)&&i.pointDistanceEnabled,pointDistanceOrigin:r(i)?i.pointDistanceOrigin:null,pointDistanceTarget:r(i)?i.pointDistanceTarget:null,lineVerticalPlaneEnabled:!!r(i)&&i.lineVerticalPlaneEnabled}}}get _cursorPosition(){const i=g();return l(this.cursorPoint,(t=>this.view.renderCoordsHelper.toRenderCoords(t,i))),i}get _startPosition(){const i=g();return l(this.analysis.startPoint,(t=>this.view.renderCoordsHelper.toRenderCoords(t,i))),i}get _endPosition(){const i=g();return l(this.analysis.endPoint,(t=>this.view.renderCoordsHelper.toRenderCoords(t,i))),i}get _laserLineParams(){const i=this._focusPosition,{active:t,lineState:e}=this.toolState,s=this.analysisViewData,a=this.laserLineEnabled&&!!i&&"measured"!==e&&t;if(!a||!this.visible||h(s)||s.destroyed)return{heightManifoldTarget:null,pointDistanceLine:null,lineVerticalPlaneSegment:null};const n=s.actualVisualizedMeasurement,o="local"!==this.view.viewingMode&&a&&!!this.analysis.startPoint&&"geodesic"===n,r=a&&s.viewMode===y.Triangle;return{heightManifoldTarget:"euclidean"===n?i:null,pointDistanceLine:o?this._pointDistanceLine:null,lineVerticalPlaneSegment:r?_(this._startPosition,this._endPosition):null}}get _focusPosition(){const{lineState:i}=this.toolState,t=this.analysisViewData,e=r(t)&&!t.destroyed&&t.measurementMode===m.Euclidean&&t.viewMode===y.Direct;switch(i){case"drawing":return e?this._startPosition:this.analysis.endPoint?this._endPosition:this._startPosition;case"editing":return e?"start"===this._lastDraggedHandle?this._endPosition:this._startPosition:"start"===this._lastDraggedHandle?this._startPosition:this._endPosition;default:return r(this.cursorPoint)?this._cursorPosition:null}}get _pointDistanceLine(){return{origin:"drawing"===this.toolState.lineState||"end"===this._lastDraggedHandle?this._startPosition:this._endPosition,target:this._focusPosition}}createManipulators(){const i=()=>{const i=b(this.view,this._params.handleColor,this._params.handleOpacity);return i.available=!1,i.radius=this._params.handleRadius,i},t=i(),e=i(),s=new v({view:this.view});s.available=!1,s.interactive=!1,r(this.analysis.startPoint)&&(t.location=this.analysis.startPoint,t.available=!0),r(this.analysis.endPoint)&&(e.location=this.analysis.endPoint,e.available=!0);const a=()=>{let i=this._lastDraggedHandle;t.grabbing&&!e.grabbing&&(i="start"),e.grabbing&&!t.grabbing&&(i="end"),t.grabbing||e.grabbing||(i=null),this._lastDraggedHandle=i},n=t.events.on("grab-changed",a),o=e.events.on("grab-changed",a);return this._handles.add([n,o],P.Manipulators),{start:t,end:e,cursor:s}}show(){this.destroyed||this._visible||this._updateVisibility(!0)}hide(){!this.destroyed&&this._visible&&this._updateVisibility(!1)}_connectToAnalysisView(){this._handles.remove(P.AnalysisView),this._handles.add([d((()=>l(this.analysisViewData,(i=>i.destroyed))),(i=>{i&&this._handles.remove(P.AnalysisView)}),p),d((()=>["measured"===this.toolState.lineState,this.analysisViewData]),(([i,t])=>{r(t)&&!t.destroyed&&(t.allowVisualElementsOrientationChange=!i)}),p),d((()=>this._laserLineParams),(i=>{const t=this._laserLine;t.heightManifoldTarget=i.heightManifoldTarget,t.pointDistanceLine=i.pointDistanceLine,t.lineVerticalPlaneSegment=i.lineVerticalPlaneSegment}),p)],P.AnalysisView)}_updateVisibility(i){this.initialized&&(this._visible=i,i?this._laserLine.style={innerColor:this._params.laserLineInnerColor,innerWidth:this._params.laserLineInnerWidth,glowColor:this._params.laserLineGlowColor,glowWidth:this._params.laserLineGlowWidth,glowFalloff:this._params.laserLineGlowFalloff,globalAlpha:this._params.laserLineGlobalAlpha}:this.view.cursor=null,this._laserLine.visible=i)}};i([c({constructOnly:!0})],L.prototype,"view",void 0),i([c()],L.prototype,"_params",void 0),i([c({constructOnly:!0})],L.prototype,"analysis",void 0),i([c({constructOnly:!0})],L.prototype,"analysisViewData",void 0),i([c()],L.prototype,"cursorPoint",void 0),i([c()],L.prototype,"toolState",void 0),i([c()],L.prototype,"visible",null),i([c()],L.prototype,"testData",null),i([c()],L.prototype,"_visible",void 0),i([c()],L.prototype,"_laserLine",void 0),i([c({constructOnly:!0})],L.prototype,"laserLineEnabled",void 0),i([c()],L.prototype,"_cursorPosition",null),i([c()],L.prototype,"_startPosition",null),i([c()],L.prototype,"_endPosition",null),i([c()],L.prototype,"_lastDraggedHandle",void 0),i([c()],L.prototype,"_laserLineParams",null),i([c()],L.prototype,"_focusPosition",null),i([c()],L.prototype,"_pointDistanceLine",null),L=i([u("esri.views.3d.interactive.measurementTools.directLineMeasurement3D.DirectLineMeasurement3DView")],L);export{L as DirectLineMeasurement3DView};