@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 2.97 kB
JavaScript
import"../../../../geometry.js";import{LengthDimensionMeasureType as e}from"../../../../analysis/dimensionUtils.js";import"../../../../core/has.js";import{isNone as t,isSome as n}from"../../../../core/maybe.js";import{k as i,g as o,e as r,b as a,p as s}from"../../../../chunks/vec3.js";import{sv3d as d}from"../../../../geometry/support/vectorStacks.js";import{automaticHeadingFromCamera as c}from"./lengthDimensionManipulatorUtils.js";import{isGeodesicDimension as l,directUp as m,directStartToEnd as P}from"./lengthDimensionUtils.js";import{settings as p}from"./settings.js";import u from"../../../../geometry/Point.js";var f;function g(e,t){return{enabled:t.effectiveFeatureEnabled,elevationAlignedStartPoint:e.elevationAlignedStartPoint,elevationAlignedEndPoint:e.elevationAlignedEndPoint,geometry:e.geometry}}function v(e,n){if(l(e))return f.Direct;if(!e.enabled)return null;const{geometry:c}=e;if(t(c)||i(c.directSegment.startRenderSpace,c.directSegment.endRenderSpace))return null;const{constraintThresholdPx:u}=p,{camera:g}=n.state,v=m(d.get(),c,n.renderCoordsHelper),y=P(d.get(),c),S=o(d.get(),v,r(y,v)),A=a(d.get(),y,S),R=s(A),j=s(S),{startRenderSpace:z,endRenderSpace:x}=c.directSegment,h=Math.max(g.computeRenderPixelSizeAt(z)*u,g.computeRenderPixelSizeAt(x)*u)**2;return R<h?f.Vertical:j<h?f.Horizontal:null}function y(e,n,{constraint:i,view:o}){const{unconstrainedGeometry:r}=e;if(t(r))return;const{renderCoordsHelper:a,spatialReference:s}=o,{startRenderSpace:d,endRenderSpace:c}=r.directSegment,l=a.fromRenderCoords(d,new u,s),m=a.fromRenderCoords(c,new u,s);let P;P="start"===n?{startPoint:l}:{endPoint:m},S(e,P,{constraint:i,elevationAlignedStartPoint:e.elevationAlignedStartPoint,elevationAlignedEndPoint:e.elevationAlignedEndPoint,unconstrainedGeometry:r,view:o})}function S(i,o,r){const{constraint:a,elevationAlignedStartPoint:s,elevationAlignedEndPoint:d,unconstrainedGeometry:l,view:m}=r,{dimension:P,previousConstraint:p,preConstraintProperties:u}=i;if(t(s)||t(d))return;const g=()=>{"startPoint"in o?P.startPoint=o.startPoint:"endPoint"in o&&(P.endPoint=o.endPoint)};if(t(a))g(),n(p)&&n(u)&&(P.measureType=u.measureType,P.orientation=u.orientation);else switch(P.measureType=e.Direct,a){case f.Horizontal:if(a!==p&&(P.orientation=0),"startPoint"in o){const e=o.startPoint;n(e)&&(e.z=d.z),P.startPoint=e}else if("endPoint"in o){const e=o.endPoint;n(e)&&(e.z=s.z),P.endPoint=e}break;case f.Vertical:if(a!==p&&(P.orientation=c(l,m)),"startPoint"in o){const e=o.startPoint;n(e)&&(e.x=d.x,e.y=d.y),P.startPoint=e}else if("endPoint"in o){const e=o.endPoint;n(e)&&(e.x=s.x,e.y=s.y),P.endPoint=e}break;case f.Direct:a!==p&&n(u)&&(P.orientation=u.orientation),g()}i.previousConstraint=a,i.unconstrainedGeometry=l}!function(e){e[e.Horizontal=0]="Horizontal",e[e.Vertical=1]="Vertical",e[e.Direct=2]="Direct"}(f||(f={}));export{f as LengthDimensionConstraint,S as applyConstraint,v as computeConstraint,g as constraintDependencies,y as reapplyConstraint};