UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

6 lines (5 loc) 3 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{handlesGroup as t}from"../../../../core/handleUtils.js";import{createAngle as o,createLength as e}from"../../../../core/quantityUtils.js";import{watch as i,syncAndInitial as n,sync as r}from"../../../../core/reactiveUtils.js";import{manipulatedObjectGeometry as a}from"./manipulatedObjectUtils.js";import{AccumulationBehavior as s}from"../../../interactive/editGeometry/interfaces.js";import{connectPasteEvent as c,updateMeshTransformFromTooltipInfo as l,getXYZDeltasFromTooltipInfo as p,updateTooltipInfoFromMeshTransform as u}from"../../../interactive/tooltip/tooltipCommonUtils.js";import{elevationFromPoint as f}from"../../../support/euclideanLengthMeasurementUtils.js";function m(o,e,s){function l(){const t=s(),o=t.sketchOptions.tooltips.effectiveEnabled?t.activeTooltipInfo:null;return{...t,activeTooltipInfo:o}}let p=!1;function u(t){p||(p=!0,t(),p=!1)}function f({activeTooltipInfo:t,sketchOptions:i,scaleRotateTransform:n}){u((()=>{t&&(t.sketchOptions=i,h(t,e),k(t,n)),o.info=t}))}return t([i(l,f,n),i((()=>{const t=l(),{activeTooltipInfo:o}=t;if(o)return{context:t,activeTooltipInfo:o,key:o.key,geometry:a(e)}}),((t,o)=>{t&&o&&o.key!==t.key&&u((()=>v(e,t.context)))}),r),e.on("committed",(()=>{queueMicrotask((()=>f(l())))})),c(o,{onBeforePaste:()=>{p=!0},onAfterPaste:()=>{v(e,l()),p=!1}})])}function v(t,{activeTooltipInfo:o,callbacks:e}){if(!o)return;e.onBeforeUpdate();const i=a(t);switch(i?.type){case"mesh":d(o,i.origin,t,e),"orientation"in o&&"scale"in o&&l(o,i,e);break;case"point":d(o,i,t,e)}}function d(t,o,e,i){const{dx:n,dy:r,dz:a}=p(t,o);0===n&&0===r&&0===a||(i.onMoveStart(),e.operations?.move(n,r,a,s.NEW_STEP),i.onMove(n,r,a),i.onMoveStop())}function h(t,o){const e=a(o),i=e?.type;if(!t||!e||"mesh"!==i&&"point"!==i)return;const n="mesh"===i,r=n?e.origin:e;t.setLocationFromPoint(r),y(t,r,o),"transform-mesh"===t.type&&n&&u(t,e),t.clearInputValues()}function y(t,o,e){t.elevation.actual=f(o),t.elevation.visible=!!e.operations?.data.coordinateHelper.hasZ(),t.elevation.readOnly=!1,t.elevation.showAsZ=!0}function k(t,i){if("transform-point"!==t?.type)return;if(!i)return t.orientation.actual=void 0,t.size.actual=void 0,t.orientation.visible=!1,void(t.size.visible=!1);const n=i.mode,{size:r,orientationClockwise:a}=i.adapter,{visualVariables:s}=t.sketchOptions.tooltips,c=s?.rotation,l=null!=a&&(null==n||"rotate"===n),p="geographic";t.orientation.actual=l?o(a,"radians",p):void 0,t.orientation.precision=b(c?.valueType),t.orientation.visible=l;const u=s?.size,f=null!=r&&(null==n||"scale"===n);t.size.actual=f?e(r,u?.unit??"meters"):void 0,t.size.precision=b(u?.valueType),t.size.visible=f}function b(t){switch(t){case"integer":case"long":return 0;default:return null}}export{m as connectTooltipToManipulatedObject,y as updateElevationFromPoint,h as updateTooltipInfoFromManipulatedObject,d as updateXYZFromTooltipInfo};