@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 1.09 kB
JavaScript
import{isNone as e,isSome as n}from"../../../../core/maybe.js";import{throwIfAborted as r}from"../../../../core/promiseUtils.js";import{loadArcade as t}from"../../../../support/arcadeOnDemand.js";async function a(a,o,i){if(e(a)||0===o.candidates.length)return s;const c=a.graphics3DGraphicsByObjectID??a.graphics3DGraphics,p=[],d=[],{renderer:u}=a,g=n(u)&&"arcadeRequired"in u&&u.arcadeRequired?t():null,l=async(n,{graphic:r,graphics3DSymbol:t})=>{const s=await g,o=await a.getRenderingInfoAsync(r,u,s,{signal:i});return e(o)?[]:t.queryForSnapping(n,f,o,i)},{candidates:h,spatialReference:f}=o;for(let n=0;n<h.length;++n){const r=h[n],{objectId:t}=r,a="number"==typeof t?c?.get(t):void 0;if(e(a))continue;const{graphics3DSymbol:s}=a;s.symbologySnappingSupported&&(p.push(l(r,a)),d.push(n))}if(0===p.length)return s;const m=await Promise.all(p);r(i);const y=[],b=[];for(let e=0;e<m.length;++e){const n=m[e],r=d[e];for(const e of n)y.push(e),b.push(r)}return{candidates:y,sourceCandidateIndices:b}}const s={candidates:[],sourceCandidateIndices:[]};export{a as queryForSymbologySnapping};