UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 4.04 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{addMany as e}from"../../../core/arrayUtils.js";import{ignoreAbortErrors as r,whenOrAbort as t}from"../../../core/promiseUtils.js";import{getDisplayFieldName as s}from"../../../layers/support/fieldUtils.js";import{isFeatureLayer as a,isSubtypeGroupLayer as i,isSubtypeSublayer as l,isKnowledgeGraphLayer as n,isLinkChartLayer as o,isMapNotesLayer as c,isGraphicsLayer as u}from"../../../layers/support/layerUtils.js";import{calculateTolerance as d}from"../../../renderers/support/clickToleranceUtils.js";import{createQueryGeometry as y}from"../../../views/support/drapedUtils.js";import{isSelectableLayerView2D as p}from"../../../views/support/layerViewUtils.js";async function m(e){const{returnFeatureTitleFields:s,returnGeometry:a,selector:i,signal:l,sources:n,view:o}=e;if(!n?.length)return[];const{layers:c,layerViews:u,graphicsLayers:d}=f(n),y=[];return await r(t(Promise.all([w({candidates:y,layers:c,returnFeatureTitleFields:s,returnGeometry:a,selector:i,signal:l,view:o}),g({candidates:y,layerViews:u,returnGeometry:a,selector:i,signal:l,view:o}),j({candidates:y,graphicsLayers:d,selector:i})]),l)),y}function f(e){const r=[],t=[],s=[];return e.forEach((e=>{a(e)||i(e)||l(e)?r.push(e):(n(e)||o(e))&&e.layers?.length?r.push(...e.layers.toArray()):c(e)&&e.sublayers?.length?s.push(...e.sublayers.toArray()):u(e)?s.push(e):p(e)&&t.push(e)})),{layers:r,layerViews:t,graphicsLayers:s}}async function g(r){const{candidates:s,layerViews:a,returnGeometry:i,selector:l,signal:n,view:o}=r;"point"!==l.type?await t(Promise.allSettled(a.map((async r=>{const t=T(r,l,o,i),a=await r.queryFeatures(t,{signal:n});e(s,a.features)}))),n):await h({candidates:s,layerViews:a,selector:l,view:o})}async function h({candidates:e,layerViews:r,selector:t,view:s}){const a=s.toScreen(t);if(!a)return;const i=r.map((e=>e.layer)),{results:l}=await s.hitTest(a,{include:i});l.forEach((r=>{"graphic"in r&&r.graphic&&e.push(r.graphic)}))}async function w(r){const{candidates:s,layers:a,returnFeatureTitleFields:i,returnGeometry:l,selector:n,signal:o,view:c}=r;await t(Promise.allSettled(a.map((async r=>{if("isTable"in r&&r.isTable)return;const t=v(r,n,c,i,l),a=await r.queryFeatures(t,{signal:o});e(s,a.features)}))),o)}function F(e,r,t){return"point"===e.type?y(e,"renderer"in r?d({renderer:r.renderer}):0,t):e}function b(e,r,t){const{fields:a,fieldsIndex:i}=e,l=new Set([e.objectIdField]);"globalIdField"in e&&null!=e.globalIdField&&i.has(e.globalIdField)&&l.add(i.get(e.globalIdField).name);const n="displayField"in e?e.displayField:null,o=s({displayField:n,fields:a});if(null!=o&&i.has(o)&&l.add(o),"subtypeField"in e&&null!=e.subtypeField){const t=i.get(e.subtypeField)?.name;if(null!=t&&l.add(t),"utilityNetworks"in r.map&&r.map.utilityNetworks?.length){const e=i.get("assetgroup");e?.name&&l.add(e.name);const r=i.get("assettype");r?.name&&l.add(r.name)}}return(t||r.requiredFieldsOptions.featureTitleFields)&&"featureTitleFields"in e&&e.featureTitleFields&&e.featureTitleFields.forEach((e=>l.add(e))),Array.from(l.values())}function T(e,r,t,s=!0){const a=e.createQuery();return a.outFields=["*"],a.geometry=F(r,e.layer,t),a.returnGeometry=s,a.outSpatialReference=t.spatialReference,a}function v(e,r,t,s=!1,a=!0){const i=e.createQuery();return i.outFields=b(e,t,s),i.geometry=F(r,e,t),i.returnGeometry=a,i.outSpatialReference=t.spatialReference,i}async function j(e){const{candidates:r,graphicsLayers:t,selector:s}=e,a=t.flatMap((e=>e.graphics.toArray()))??[];if(!a?.length||!s)return;const i=await import("../../../geometry/operators/intersectsOperator.js");i.accelerateGeometry(s),a.forEach((e=>{e.geometry&&"mesh"!==e.geometry.type&&i.execute(s,e.geometry)&&r.push(e)}))}export{g as collectSelectionFromFeatureLayerViews,w as collectSelectionFromFeatureLayers,j as collectSelectionFromGraphicsLayers,m as getSelectionFromGeometry,F as getSuggestedQueryGeometry,b as getSuggestedQueryOutFields};