@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 5.08 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
*/
import{handlesGroup as t}from"../../../../../core/handleUtils.js";import{zeroMeters as e,scale as o}from"../../../../../core/quantityUtils.js";import{watch as n,syncAndInitial as i,sync as a}from"../../../../../core/reactiveUtils.js";import{manipulatedObjectGeometry as s}from"../manipulatedObjectUtils.js";import{updateXYZFromTooltipInfo as r,updateTooltipInfoFromManipulatedObject as l,updateElevationFromPoint as p}from"../tooltipUtils3D.js";import{ManipulationType as c}from"../manipulations/MoveManipulation.js";import{axisConstrainedDragSign as f}from"../manipulations/moveUtils.js";import{AccumulationBehavior as m}from"../../../../interactive/editGeometry/interfaces.js";import{connectPasteEvent as u,getXYZDeltasFromTooltipInfo as d}from"../../../../interactive/tooltip/tooltipCommonUtils.js";import{MovePointTooltipInfo as v}from"../../../../interactive/tooltip/infos/MovePointTooltipInfo.js";import{ReshapeEdgeOffsetTooltipInfo as y}from"../../../../interactive/tooltip/infos/ReshapeEdgeOffsetTooltipInfo.js";import{SelectedVertexTooltipInfo as h}from"../../../../interactive/tooltip/infos/SelectedVertexTooltipInfo.js";import{TranslateTooltipInfo as k}from"../../../../interactive/tooltip/infos/TranslateTooltipInfo.js";import{TranslateXYTooltipInfo as T}from"../../../../interactive/tooltip/infos/TranslateXYTooltipInfo.js";import{TranslateZTooltipInfo as g}from"../../../../interactive/tooltip/infos/TranslateZTooltipInfo.js";import{autoArea2D as j}from"../../../../support/automaticAreaMeasurementUtils.js";import{autoDistance2D as I,autoLength2D as w,autoDistanceBetweenPoints2D as O}from"../../../../support/automaticLengthMeasurementUtils.js";import{verticalSignedDistanceBetweenPoints as b}from"../../../../support/euclideanLengthMeasurementUtils.js";function x(t,e){const o=e?.type;return{edgeOffset:new y({sketchOptions:t,viewType:o}),movePoint:new v({sketchOptions:t,viewType:o}),selectedVertex:new h({sketchOptions:t,viewType:o}),translate:new k({sketchOptions:t,viewType:o}),translateXY:new T({sketchOptions:t,viewType:o}),translateZ:new g({sketchOptions:t,viewType:o})}}function M(e,o,r){function l(){const t=r(),e=t.sketchOptions.tooltips.effectiveEnabled?t.activeTooltipInfo:null;return{...t,activeTooltipInfo:e}}let p=!1;function c(t){p||(p=!0,t(),p=!1)}function f(t){c((()=>{E(o,t),e.info=t.activeTooltipInfo}))}return t([n(l,f,i),n((()=>{const t=l(),{activeTooltipInfo:e}=t;if(e&&"key"in e)return{context:t,activeTooltipInfo:e,key:e.key,geometry:s(o)}}),((t,e)=>{t&&e&&e.key!==t.key&&c((()=>U(o,t.context)))}),a),o.on("committed",(()=>f(l()))),u(e,{onBeforePaste:()=>{p=!0},onAfterPaste:()=>{U(o,l()),p=!1}})])}function U(t,{activeTooltipInfo:e,selectedVertexManipulatorInfo:o,callbacks:n}){if(!e)return;n.onBeforeReshape();const i=s(t);switch(i?.type){case"mesh":"move-point"===e.type&&r(e,i.origin,t,n);break;case"point":"move-point"===e.type&&r(e,i,t,n);break;case"polyline":case"polygon":"selected-vertex"===e.type&&L(e,o,t,n)}}function L(t,e,o,n){if(!e)return;const{dx:i,dy:a,dz:s}=d(t,e.manipulator.location);0===i&&0===a&&0===s||(n.onReshapeStart(),o.operations?.moveVertices([e.handle],i,a,s,m.NEW_STEP),n.onReshape(),n.onReshapeStop())}function E(t,{activeTooltipInfo:e,selectedVertexManipulatorInfo:o,sketchOptions:n}){if(e)switch(e.sketchOptions=n,e?.type){case"move-point":l(e,t);break;case"selected-vertex":S(e,o,t)}}function S(t,e,o){if(!t||"selected-vertex"!==t.type)return;const n=e?.manipulator.location;t.setLocationFromPoint(n),p(t,n,o);const i=o.operations?.data.geometry;switch(i?.type){case"polygon":t.geometryType="polygon",t.totalLength.visible=!1,t.area.actual=j(i);break;case"polyline":t.geometryType="polyline",t.totalLength.actual=w(i),t.area.visible=!1}}function P(t,e,{sketchOptions:n,tooltipInfos:i}){let a=null;switch(t){case c.XY:a=i.translate,R(a,e,((t,e)=>O(t,e)));break;case c.XY_AXIS:a=i.translateXY,R(a,e,((t,n)=>o(O(t,n),f(e))));break;case c.Z:a=i.translateZ,R(a,e,b)}return a.sketchOptions=n,a}function R(t,o,n){if(null!=o&&"end"!==o.action){const{mapStart:i,mapEnd:a}=o,s=n(i,a);t.distance=null!=s?s:e}else t.distance=e}function X({operations:t},n,{sketchOptions:i,tooltipInfos:a}){const s=a.edgeOffset;if(s.distance.committed=null,null!=n&&null!=n.signedDistance&&"end"!==n.action&&null!=t){const e=t.data.coordinateHelper,{start:i,end:a}=n.operation.clampedStartAndEnd(n.mapEnd),r=I(i,a,e.spatialReference),l=Math.sign(n.signedDistance*n.operation.selectedArrow);s.distance.actual=null!=r?o(r,l):null}else s.distance.actual=e;const r=t?.data.geometry;switch(s.area.actual=null,s.area.visible=!1,s.totalLength.actual=null,s.totalLength.visible=!1,r?.type){case"polygon":s.area.actual=j(r),s.area.visible=!0;break;case"polyline":s.totalLength.actual=w(r),s.totalLength.visible=!0}return s.sketchOptions=i,s}export{M as connectTooltipToManipulatedObject,x as createTooltipInfos,X as getUpdatedEdgeOffsetTooltipInfo,P as getUpdatedTranslateObjectTooltipInfo};