@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 5.69 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
import{handlesGroup as t}from"../../../../../core/handleUtils.js";import{debounce as e}from"../../../../../core/promiseUtils.js";import{scale as o,zeroMeters as n}from"../../../../../core/quantity.js";import{watch as a,syncAndInitial as i,sync as s}from"../../../../../core/reactiveUtils.js";import{ensureType as r}from"../../../../../core/accessorSupport/ensureType.js";import l from"../../../../../geometry/Point.js";import{manipulatedObjectGeometry as c}from"../manipulatedObjectUtils.js";import{updateXYZFromTooltipInfo as p,updateTooltipInfoFromManipulatedObject as f,updateElevationFromPoint as u}from"../tooltipUtils3D.js";import{axisConstrainedDragSign as m}from"../manipulations/moveUtils.js";import{connectPasteEvent as d,getXYZDeltasFromTooltipInfo as y}from"../../../../interactive/tooltip/tooltipCommonUtils.js";import{MovePointTooltipInfo as h}from"../../../../interactive/tooltip/infos/MovePointTooltipInfo.js";import{ReshapeEdgeOffsetTooltipInfo as v}from"../../../../interactive/tooltip/infos/ReshapeEdgeOffsetTooltipInfo.js";import{SelectedVertexTooltipInfo as g}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 w}from"../../../../interactive/tooltip/infos/TranslateZTooltipInfo.js";import{verticalSignedDistanceBetweenPoints as b}from"../../../../support/euclideanLengthMeasurementUtils.js";function j(t,e){const o=e?.type;return{edgeOffset:new v({sketchOptions:t,viewType:o}),movePoint:new h({sketchOptions:t,viewType:o}),selectedVertex:new g({sketchOptions:t,viewType:o}),translate:new k({sketchOptions:t,viewType:o}),translateXY:new T({sketchOptions:t,viewType:o}),translateZ:new w({sketchOptions:t,viewType:o})}}function I(o,n,r,l){function p(){const t=r(),e=t.sketchOptions.tooltips.effectiveEnabled?t.activeTooltipInfo:null;return{...t,activeTooltipInfo:e}}let f=!1;function u(t){f||(f=!0,t(),f=!1)}const m=e(t=>D(n,t)),y=t=>{u(()=>{U(n,t),o.info=t.activeTooltipInfo,l.addPromise(m(t)).catch(()=>{})})};return t([a(p,t=>y(t),i),a(()=>{const t=p(),{activeTooltipInfo:e}=t;if(e&&"key"in e)return{context:t,activeTooltipInfo:e,key:e.key,geometry:c(n)}},(t,e)=>{t&&e&&e.key!==t.key&&u(()=>O(n,t.context))},s),n.on("committed",()=>y(p())),d(o,{onBeforePaste:()=>{f=!0},onAfterPaste:()=>{O(n,p()),f=!1}})])}function O(t,{activeTooltipInfo:e,selectedVertexManipulatorInfo:o,callbacks:n}){if(!e)return;n.onBeforeReshape();const a=c(t);switch(a?.type){case"mesh":"move-point"===e.type&&p(e,a.origin,t,n);break;case"point":"move-point"===e.type&&p(e,a,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:a,dy:i,dz:s}=y(t,e.manipulator.location);0===a&&0===i&&0===s||(n.onReshapeStart(),o.operations?.moveVertices([e.handle],a,i,s,0),n.onReshape(),n.onReshapeStop())}function U(t,e){const{activeTooltipInfo:o,selectedVertexManipulatorInfo:n,sketchOptions:a}=e;if(o)switch(o.sketchOptions=a,o?.type){case"move-point":f(o,t);break;case"selected-vertex":x(o,n,t,e);break;case"reshape-edge-offset":E(o,t,e)}}async function D(t,e){const{activeTooltipInfo:o}=e;if(o)switch(o?.type){case"selected-vertex":return await M(o,t,e);case"reshape-edge-offset":return await V(o,t,e)}}function x(t,e,o,{automaticLengthMeasurementUtils:n}){if(!t||"selected-vertex"!==t.type)return;const a=e?.manipulator.location;t.setLocationFromPoint(a),u(t,a,o);const i=o.operations?.data.geometry;switch(i?.type){case"polygon":t.geometryType="polygon",t.totalLength.visible=!1;break;case"polyline":t.geometryType="polyline",t.totalLength.actual=n.autoLength2D(i),t.area.visible=!1}}async function M(t,e,{automaticAreaMeasurementUtils:o}){const n=e.operations?.data.geometry;if("polygon"===n?.type)t.area.actual=await o.autoArea2D(n)}const P=r(l);function A(t,e,{sketchOptions:n,tooltipInfos:a,automaticLengthMeasurementUtils:i}){let s=null;switch(t){case 0:s=a.translate,R(s,e,(t,e)=>i.autoDistanceBetweenPoints2D(P(t),P(e)));break;case 1:s=a.translateXY,R(s,e,(t,n)=>o(i.autoDistanceBetweenPoints2D(P(t),P(n)),m(e)));break;case 2:s=a.translateZ,R(s,e,b)}return s.sketchOptions=n,s}function R(t,e,o){if(null!=e&&"end"!==e.action){const{mapStart:a,mapEnd:i}=e,s=o(a,i);t.distance=null!=s?s:n}else t.distance=n}function S({operations:t},e,{sketchOptions:a,tooltipInfos:i,automaticLengthMeasurementUtils:s}){const r=i.edgeOffset;if(r.distance.committed=null,null!=e&&null!=e.signedDistance&&"end"!==e.action&&null!=t){const n=t.data.coordinateHelper,{start:a,end:i}=e.operation.clampedStartAndEnd(e.mapEnd),l=s.autoDistance2D(a,i,n.spatialReference),c=Math.sign(e.signedDistance*e.operation.selectedArrow);r.distance.actual=null!=l?o(l,c):null}else r.distance.actual=n;return r.sketchOptions=a,r}function E(t,e,{automaticLengthMeasurementUtils:o}){const n=e.operations?.data.geometry;switch(n?.type){case"polygon":t.totalLength.visible=!1,t.totalLength.actual=null,t.area.visible=!0;break;case"polyline":t.totalLength.actual=o.autoLength2D(n),t.totalLength.visible=!0,t.area.visible=!1,t.area.actual=null;break;default:t.area.actual=null,t.area.visible=!1,t.totalLength.actual=null,t.totalLength.visible=!1}}async function V(t,e,{automaticAreaMeasurementUtils:o}){const n=e.operations?.data.geometry;if("polygon"===n?.type)t.area.actual=await o.autoArea2D(n)}export{I as connectTooltipToManipulatedObject,j as createTooltipInfos,S as getUpdatedEdgeOffsetTooltipInfo,A as getUpdatedTranslateObjectTooltipInfo};