@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 1.18 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{throwIfAborted as n}from"../../../../core/promiseUtils.js";import{loadArcade as e}from"../../../../support/arcadeOnDemand.js";async function r(r,a,s){if(null==r||0===a.candidates.length)return t;const i=r.graphics3DGraphicsByObjectID??r.graphics3DGraphics,c=[],o=[],{renderer:d}=r,p=null!=d&&"arcadeRequired"in d&&d.arcadeRequired?e():null,l=async(n,{graphic:e,graphics3DSymbol:t})=>{const a=await p,i=await r.getRenderingInfoAsync(e,d,a,{signal:s});return null==i?[]:t.queryForSnapping(n,g,i,s)},{candidates:u,spatialReference:g}=a;for(let n=0;n<u.length;++n){const e=u[n],{objectId:r}=e,t="number"==typeof r?i?.get(r):void 0;if(null==t)continue;const{graphics3DSymbol:a}=t;a.symbologySnappingSupported&&(c.push(l(e,t)),o.push(n))}if(0===c.length)return t;const h=await Promise.all(c);n(s);const f=[],m=[];for(let n=0;n<h.length;++n){const e=h[n],r=o[n];for(const n of e)f.push(n),m.push(r)}return{candidates:f,sourceCandidateIndices:m}}const t={candidates:[],sourceCandidateIndices:[]};export{r as queryForSymbologySnapping};