@arcgis/core 5.2.0-next.160 → 5.2.0-next.161
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{15bcf7cfe603f2ee1a24.js → 28104681ba161967039f.js} +1 -1
- package/assets/esri/core/workers/chunks/{842893e75696428d536f.js → 3b0808ee3c4facfaca3d.js} +1 -1
- package/assets/esri/core/workers/chunks/{eebbde81e56d69dc602f.js → 44f90e75c1dc3d726a95.js} +1 -1
- package/assets/esri/core/workers/chunks/{4eae066673484986d4c1.js → 4ed76fb5f6096a089f5b.js} +1 -1
- package/assets/esri/core/workers/chunks/5daa9429808ca31279f2.js +1 -0
- package/assets/esri/core/workers/chunks/83f29a159b8b5197e76a.js +1 -0
- package/assets/esri/core/workers/chunks/{77ebacfdf8e57f2e03f1.js → 8480fe6b4372dbbfa7cc.js} +1 -1
- package/assets/esri/core/workers/chunks/{1d77c8c59b0118c7e77b.js → 85bba551057366cd00ae.js} +1 -1
- package/assets/esri/core/workers/chunks/a2fcbc494333376192aa.js +1 -0
- package/assets/esri/core/workers/chunks/{f1df76f098a3cc924832.js → b5df193c93e9c19f9700.js} +1 -1
- package/assets/esri/core/workers/chunks/{02f8654852d389583891.js → e04fb83ab2634bc15cc7.js} +1 -1
- package/assets/esri/core/workers/chunks/f74ae0eff3f08978e607.js +1 -0
- package/chunks/RibbonLine.glsl.js +69 -83
- package/config.d.ts +62 -34
- package/config.js +1 -1
- package/core/has.js +1 -1
- package/core/mapCollectionUtils.js +1 -1
- package/core/workers/Connection.d.ts +58 -89
- package/core/workers.d.ts +45 -54
- package/geometry/support/Indices.js +1 -1
- package/geometry/support/aaBoundingRect.js +1 -1
- package/geometry/support/ray.js +1 -1
- package/kernel.js +1 -1
- package/layers/GeospatialPDFLayer.js +1 -1
- package/layers/geospatialPDF/GeospatialPDFLayerWorker.js +1 -1
- package/layers/knowledgeGraph/KnowledgeGraphSublayer.js +1 -1
- package/layers/support/commonProperties.js +1 -1
- package/package.json +2 -2
- package/rest/print.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightIntersectionResult.js +1 -1
- package/views/3d/input/SceneInputManager.js +1 -1
- package/views/3d/input/handlers/DragZoom.js +1 -1
- package/views/3d/input/handlers/MouseWheelFov.js +1 -1
- package/views/3d/layers/I3SMeshView3D.js +1 -1
- package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
- package/views/3d/layers/graphics/extrudePolygon.js +1 -1
- package/views/3d/layers/graphics/tessellationUtils.js +1 -1
- package/views/3d/state/controllers/FovController.js +1 -1
- package/views/3d/state/controllers/GroundNavigationController.js +1 -1
- package/views/3d/state/controllers/momentum/GroundNavigationMomentumController.js +1 -1
- package/views/3d/state/utils/OffsetCorrectionController.js +1 -1
- package/views/3d/terrain/PatchRenderData.js +1 -1
- package/views/3d/terrain/TextureReference.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeView.js +1 -1
- package/views/SceneView.js +1 -1
- package/views/interactive/editGeometry/EditGeometry.js +1 -1
- package/views/interactive/editGeometry/operations/RotateVertex.js +1 -1
- package/views/interactive/editGeometry/operations/ScaleVertex.js +1 -1
- package/views/interactive/editGeometry/operations/SetAllVertexPositions.js +1 -1
- package/views/interactive/snapping/FeatureSnappingEngine.js +1 -1
- package/widgets/FloorFilter/FloorFilterViewModel.js +1 -1
- package/widgets/Search/LocatorSearchSource.d.ts +22 -1
- package/widgets/support/SelectionList/GroupLayerItem.d.ts +2 -0
- package/widgets/support/SelectionList/GroupLayerItem.js +1 -1
- package/widgets/support/SelectionList/ItemBase.d.ts +2 -0
- package/widgets/support/SelectionList/ItemBase.js +1 -1
- package/widgets/support/SelectionList/SelectionListViewModel.js +1 -1
- package/widgets/support/SelectionList.js +1 -1
- package/assets/esri/core/workers/chunks/7d212c415f2709037408.js +0 -1
- package/assets/esri/core/workers/chunks/abb9e820d2871fa7acae.js +0 -1
- package/assets/esri/core/workers/chunks/ade5fdcd08dcbac74740.js +0 -1
- package/assets/esri/core/workers/chunks/b390b9cde2884755e8be.js +0 -1
package/rest/print.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{id as e}from"../kernel.js";import t from"../request.js";import{JSONMap as n}from"../core/jsonMap.js";import{createScreenPoint as r,pt2px as i,px2pt as a}from"../core/screenUtils.js";import{dataComponents as o,normalize as s}from"../core/urlUtils.js";import c from"../geometry/Polygon.js";import{collectLabelingFields as l}from"../layers/support/fieldUtils.js";import{getFloorFilterClause as u}from"../layers/support/floorFilterUtils.js";import{getSizeRangeAtScale as d}from"../renderers/visualVariables/support/visualVariableUtils.js";import{asValidOptions as f,findToken as p}from"./utils.js";import{execute as m}from"./geoprocessor/execute.js";import{submitJob as h}from"./geoprocessor/submitJob.js";import{formatJsonMap as g}from"./support/fileFormat.js";import{toJSON as _}from"./support/layoutTemplate.js";import{getVisibleLayerViews as ee,isScreenshotRequired as te,isBingMapsLayer as ne,isBlendLayer as v,getCopyright as y,getSelectionSymbol as b,createPointLayer as x,getContextBoundingBox as S,createPolygonLayer as re,createPolylineLayer as ie,createMultipointLayer as ae}from"./support/printTaskUtils.js";import oe from"./support/PrintTemplate.js";import{toJSON as se}from"./support/reportTemplate.js";import ce from"../symbols/WebStyleSymbol.js";import C from"../views/support/HighlightOptions.js";const w={Feet:`ft`,Kilometers:`km`,Meters:`m`,Miles:`mi`},T=new n({esriFeet:`Feet`,esriKilometers:`Kilometers`,esriMeters:`Meters`,esriMiles:`Miles`}),E=new n({esriExecutionTypeSynchronous:`sync`,esriExecutionTypeAsynchronous:`async`}),D=new Map;async function le(e,t,n){let r=await N(t,await O(e,n));if(await k(e,n)===`sync`){let{results:t}=await m(e,r,void 0,n);return t?.[0]?.value}let i=await h(e,r,void 0,n);await i.waitForJobCompletion({interval:t.updateDelay});let{value:a}=await i.fetchResultData(`Output_File`,null,n);return a}async function O(e,n){let r=F(e),i=D.get(r)??{gpServerUrl:r,legendLayerNameMap:{},legendLayers:[],screenshotLayers:[]};return i.gpMetadata??=(await t(r,f({f:`json`},n))).data,i.cimVersion=i.gpMetadata.cimVersion,D.set(r,i),i}async function k(e,t){return Te(await O(e,t))}async function A(e,n){let r=await O(e,n),i=r.gpMetadata.tasks,a=r.gpServerUrl;if(r.taskInfos)return r.taskInfos;let o=(await t(e,f({f:`json`},n))).data;r.taskInfos={ExportWebMap:o};let s=i?.filter(e=>e!==o.name)??[];return await Promise.all(s.map(async e=>{let i=(await t(`${a}/${e}`,f({f:`json`},n))).data,o=i.name.startsWith(`GetLayoutTemplatesInfo`)?`GetLayoutTemplatesInfo`:null;o&&(r.taskInfos[o]??=i)})),r.taskInfos}async function j(e,t,n){return(await A(e,n))[t]??null}async function M(e,t,n){let r=await j(e,t,n);return r?.executionType?E.fromJSON(r.executionType):`sync`}async function N(t,n){n||={is11xService:!1,legendLayerNameMap:{},legendLayers:[]};let r=t.template||new oe;r.showLabels??=!0;let i;r.format===`pdf`&&(i={enablePdfAccessibility:!0});let a=_(r.layout),o=r.exportOptions;if(o){let e=o.dpi;if(i??={},i.dpi=e,a?.toLowerCase()===`map_only`||a===``){let{width:e,height:t}=o;i.outputSize=e!=null&&t!=null?[e,t]:void 0}}let s=r.layoutOptions,c;if(s){let e,t;s.scalebarUnit===`Miles`||s.scalebarUnit===`Kilometers`?(e=`Kilometers`,t=`Miles`):(s.scalebarUnit===`Meters`||s.scalebarUnit===`Feet`)&&(e=`Meters`,t=`Feet`),c={titleText:s.titleText,authorText:s.authorText,copyrightText:s.copyrightText,customTextElements:s.customTextElements,elementOverrides:s.elementOverrides,scaleBarOptions:e||t?{metricUnit:T.toJSON(e)??void 0,metricLabel:e?w[e]:void 0,nonMetricUnit:T.toJSON(t)??void 0,nonMetricLabel:t?w[t]:void 0}:void 0}}let l=await P(t,r,n);if(l.operationalLayers){let e=RegExp(`[\\u4E00-\\u9FFF\\u0E00-\\u0E7F\\u0900-\\u097F\\u3040-\\u309F\\u30A0-\\u30FF\\u31F0-\\u31FF]`),t=/[\u0600-\u06FF]/,n=n=>{let r=n.text,i=n.font,a=i?.family?.toLowerCase();r&&i&&(a===`arial`||a===`arial unicode ms`)&&(i.family=e.test(r)?`Arial Unicode MS`:`Arial`,i.style!==`normal`&&t.test(r)&&(i.family=`Arial Unicode MS`))};for(let e of l.operationalLayers)if(e.featureCollection?.layers)for(let t of e.featureCollection.layers){if(t.layerDefinition?.drawingInfo?.renderer?.symbol){let e=t.layerDefinition.drawingInfo.renderer;e.symbol.type===`esriTS`&&n(e.symbol)}if(t.featureSet?.features)for(let e of t.featureSet.features)e.symbol&&e.symbol.type===`esriTS`&&n(e.symbol)}}let u=null;s?.legendLayers&&(u=s.legendLayers.filter(e=>!n.screenshotLayers.includes(e.layerId)).map(e=>{let t=e.layerId;n.legendLayerNameMap[t]=e.title;let r={id:t};if(e.subLayerIds){r.subLayerIds=e.subLayerIds;let t=e.dynamicLegend;t!=null&&(r.subLayerDynamicLegends=e.subLayerIds.map(()=>t))}return e.dynamicLegend!=null&&(r.dynamicLegend=e.dynamicLegend),r})),t.outSpatialReference&&(l.mapOptions.spatialReference=t.outSpatialReference.toJSON()),t.datumTransformations?.length&&(l.mapOptions.datumTransformations=t.datumTransformations.map(e=>e.toJSON())),Object.assign(l,{exportOptions:i,layoutOptions:c||{}}),Object.assign(l.layoutOptions,{legendOptions:{operationalLayers:u??n.legendLayers.slice()}}),n.legendLayers.length=0,n.screenshotLayers.length=0,D.set(n.gpServerUrl,n);let d={Web_Map_as_JSON:JSON.stringify(l),Format:g.toJSON(r.format),Layout_Template:a,Layout_Item_ID:void 0,Report_Template:se(r.report),Report_Item_ID:void 0};if(r.layoutItem){delete d.Layout_Template;let t=r.layoutItem;await t.load(),t.access!==`public`&&e&&await e.getCredential(n.gpServerUrl),d.Layout_Item_ID=JSON.stringify({id:t.id})}if(r.reportItem){delete d.Report_Template;let t=r.reportItem;await t.load(),t.access!==`public`&&e&&await e.getCredential(n.gpServerUrl),d.Report_Item_ID=JSON.stringify({id:t.id})}return t.extraParameters&&Object.assign(d,t.extraParameters),d}async function P(e,t,n){let r=e.view,i=r.spatialReference,a={operationalLayers:await I(r,t,n)};t.includeTables&&(a.tables=await ve(r));let o=e.extent||n.ssExtent||r.extent;if(i?.isWrappable&&(o=o.clone()._normalize(!0),i=o.spatialReference),a.mapOptions={extent:o&&o.toJSON(),spatialReference:i&&i.toJSON(),showAttribution:t.attributionVisible},n.ssExtent=null,r.background&&(a.background=r.background.toJSON()),r.rotation&&(a.mapOptions.rotation=-r.rotation),t.scalePreserved&&(a.mapOptions.scale=t.outScale||r.scale),r.timeExtent!=null){let e=r.timeExtent.start==null?null:r.timeExtent.start.getTime(),t=r.timeExtent.end==null?null:r.timeExtent.end.getTime();a.mapOptions.time=[e,t]}return t.reportOptions&&(a.reportOptions=t.reportOptions),a}function F(e){let t=e,n=t.lastIndexOf(`/GPServer/`);return n>0&&(t=t.slice(0,n+9)),t}async function I(e,t,n){let r=[],i=0;t.scalePreserved&&(i=t.outScale||e.scale);let a={layerView:null,outScale:i,printTemplate:t,view:e},o=ee(e,i);for(let e of o){let t=e.layer;if(!t.loaded||`layers`in t)continue;let i;a.layerView=e,i=te(e)?await G(t,a,n):ne(t)?L(t):t?.type===`csv`?await z(t,a,n):t?.type===`catalog-footprint`?await R(t,a,n):t?.type===`feature`?await V(t,a,n):t?.type===`geojson`?await H(t,a,n):t?.type===`graphics`?await U(t,a,n):t?.type===`imagery`?W(t,n):t?.type===`imagery-tile`?await ue(t,a,n):t?.type===`kml`?await de(t,a,n):t?.type===`map-image`?fe(t,a,n):t?.type===`map-notes`?await pe(a,n):t?.type===`open-street-map`?me():t?.type===`sketch`?await he(t,a,n):t?.type===`stream`?await ge(t,a,n):t?.type===`subtype-group`?await _e(t,n):t?.type===`tile`?ye(t,n):t?.type===`vector-tile`?await be(t,a,n):t?.type===`web-tile`?xe(t):t?.type===`wfs`?await Se(t,a,n):t?.type===`wms`?Ce(t,n):t?.type===`wmts`?we(t):await G(t,a,n),i&&(Array.isArray(i)?r.push(...i):(i.id=t.id,i.title=n.legendLayerNameMap[t.id]||t.title,i.opacity=e.fullOpacity,i.minScale=t.minScale||0,i.maxScale=t.maxScale||0,v(t)&&t.blendMode&&t.blendMode!==`normal`&&(i.blendMode=t.blendMode),r.push(i)))}if(i)for(let e of r)e.minScale=0,e.maxScale=0;if(e.graphics?.length){let i=await B(null,e.graphics,t,n);i&&r.push(i)}return r}function L(e){return{culture:e.culture,key:e.key,type:`BingMaps${e.style===`aerial`?`Aerial`:e.style===`hybrid`?`Hybrid`:`Road`}`}}async function R(e,{layerView:t,printTemplate:n},r){if(parseFloat(r.cimVersion)<3.1)return B(e,await Z(t),n,r);let i=e.parent,a=(e=>({id:e.id,url:e.url,layerType:e.layerType,customParameters:e.customParameters,dynamicGroupLayer:{visibility:!1},footprintLayer:e.footprintLayer,layerDefinition:e.layerDefinition}))(Q(i,`web-map`));return K(a,i),a}async function z(e,t,n){e.legendEnabled&&n.legendLayers.push({id:e.id});let r=t.layerView,i=t.printTemplate;if(!r.filter&&(!e.portalItem||e.portalItem.access===`public`)){let t=Q(e,`web-map`);return t.type=`CSV`,delete t.popupInfo,delete t.layerType,t.showLabels=i.showLabels&&e.labelsVisible,t}return B(e,await Z(r),i,n)}async function B(e,t,n,r){let i,a=re(),o=ie(),s=x(),u=ae(),d=x();if(d.layerDefinition.name=`textLayer`,delete d.layerDefinition.drawingInfo,e){if(e.declaredClass===`esri.layers.FeatureLayer`||e.declaredClass===`esri.layers.StreamLayer`?a.layerDefinition.name=o.layerDefinition.name=s.layerDefinition.name=u.layerDefinition.name=r.legendLayerNameMap[e.id]||e.arcgisProps?.title||e.title:e.declaredClass===`esri.layers.GraphicsLayer`&&(t=e.graphics.items),e.renderer){let t=e.renderer.toJSON(),n=a.layerDefinition.drawingInfo;n&&(n.renderer=t);let r=o.layerDefinition.drawingInfo;r&&(r.renderer=t);let i=s.layerDefinition.drawingInfo;i&&(i.renderer=t);let c=u.layerDefinition.drawingInfo;c&&(c.renderer=t)}if(n.showLabels&&e.labelsVisible&&typeof e.write==`function`){let t=Q(e).layerDefinition?.drawingInfo?.labelingInfo;if(t){i=!0;let e=a.layerDefinition.drawingInfo;e&&(e.labelingInfo=t);let n=o.layerDefinition.drawingInfo;n&&(n.labelingInfo=t);let r=s.layerDefinition.drawingInfo;r&&(r.labelingInfo=t);let c=u.layerDefinition.drawingInfo;c&&(c.labelingInfo=t)}}}!e?.renderer&&!i&&(delete a.layerDefinition.drawingInfo,delete o.layerDefinition.drawingInfo,delete s.layerDefinition.drawingInfo,delete u.layerDefinition.drawingInfo);let f,p=e?.fieldsIndex,m=e?.renderer;if(p){let t=new Set;i&&await l(t,e),m&&typeof m.collectRequiredFields==`function`&&await m.collectRequiredFields(t,p),f=Array.from(t);let n=p.fields.map(e=>e.toJSON());a.layerDefinition.fields=n,o.layerDefinition.fields=n,s.layerDefinition.fields=n,u.layerDefinition.fields=n}let h=t?.length,g;for(let e=0;e<h;e++){let i=t[e]||t.at(e);if(i.visible!==!1&&i.geometry){if(g=i.toJSON(),g.hasOwnProperty(`popupTemplate`)&&delete g.popupTemplate,g.geometry?.z&&delete g.geometry.z,g.symbol&&(g.symbol.angle||delete g.symbol.angle,$(g.symbol)?g.symbol=await q(g.symbol,r):g.symbol.text&&delete g.attributes),(!n||!n.forceFeatureAttributes)&&f?.length){let e={};for(let t of f)g.attributes?.hasOwnProperty(t)&&(e[t]=g.attributes[t]);g.attributes=e}i.geometry.type===`polygon`?a.featureSet.features.push(g):i.geometry.type===`polyline`?o.featureSet.features.push(g):i.geometry.type===`point`?g.symbol?.text?d.featureSet.features.push(g):s.featureSet.features.push(g):i.geometry.type===`multipoint`?u.featureSet.features.push(g):i.geometry.type===`extent`&&(g.geometry=c.fromExtent(i.geometry).toJSON(),a.featureSet.features.push(g))}}let _=[a,o,u,s,d].filter(e=>e.featureSet.features.length>0);for(let e of _){let t=e.featureSet.features.every(e=>e.symbol);if(t&&(!n||!n.forceFeatureAttributes))for(let t of e.featureSet.features)delete t.attributes;t&&delete e.layerDefinition.drawingInfo,e.layerDefinition.drawingInfo?.renderer&&(await X(e.layerDefinition.drawingInfo.renderer),await J(e.layerDefinition.drawingInfo.renderer,r))}return _.length?{featureCollection:{layers:_},showLabels:i}:null}async function V(e,t,n){let r,i=e.renderer,a=parseFloat(n.cimVersion);if(e.featureReduction?.type===`binning`||e.featureReduction?.type===`cluster`&&(a<2.9||e.featureReduction.renderer?.type===`pie-chart`)||i?.type===`pie-chart`&&a<3.1||i?.type===`dot-density`&&a<2.6||e.geometryType===`polygon`&&i?.authoringInfo?.visualVariables?.some(e=>e.theme===`spike`))return G(e,t,n);e.legendEnabled&&n.legendLayers.push({id:e.id});let o=t.layerView,{printTemplate:s,view:c}=t,l=e.source?.type!==`feature-layer`&&e.source?.type!==`ogc-feature`;if(!o.filter&&!l&&i&&(!(`field`in i)||i.field==null||e.getField(i.field))){if(r=(e=>({id:e.id,title:e.title,url:e.url,layerType:e.layerType,customParameters:e.customParameters,layerDefinition:e.layerDefinition,charts:s.includeCharts?e.charts:void 0}))(Q(e)),s.attributionVisible&&(r.credits=y(e)),r.showLabels=s.showLabels&&e.labelsVisible&&!!e.labelingInfo&&e.labelingInfo.length>0,K(r,e),delete r.layerDefinition?.featureReduction?.disablePopup,delete r.layerDefinition?.featureReduction?.popupInfo,o.displayFilterEnabled||delete r.layerDefinition?.displayFilterInfo,r.layerDefinition?.drawingInfo?.renderer&&(delete r.layerDefinition.minScale,delete r.layerDefinition.maxScale,await X(r.layerDefinition.drawingInfo.renderer),await J(r.layerDefinition.drawingInfo.renderer,n),`visualVariables`in i&&i.visualVariables?.[0])){let e=i.visualVariables[0];if(e.type===`size`&&e.maxSize&&typeof e.maxSize!=`number`&&e.minSize&&typeof e.minSize!=`number`){let t=d(e,c.scale);r.layerDefinition.drawingInfo.renderer.visualVariables[0].minSize=t.minSize,r.layerDefinition.drawingInfo.renderer.visualVariables[0].maxSize=t.maxSize}}let t=u(o);if(t&&(r.layerDefinition??={},r.layerDefinition.definitionExpression=r.layerDefinition.definitionExpression?`(${r.layerDefinition.definitionExpression}) AND (${t})`:t),e.gdbVersion&&(r.layerDefinition??={},r.layerDefinition.gdbVersion=e.gdbVersion),o.hasHighlight&&`highlightIds`in o){let t=o;r.selectionObjectIds=t.highlightIds;let n=t.highlightOptions??c.defaultHighlight??new C;r.selectionSymbol=b(e.geometryType,n)}}else r=await B(e,await Z(o),s,n);return r}async function H(e,t,n){return e.featureReduction?.type===`binning`||e.featureReduction?.type===`cluster`?G(e,t,n):(e.legendEnabled&&n.legendLayers.push({id:e.id}),B(e,await Z(t.layerView),t.printTemplate,n))}async function U(e,{printTemplate:t},n){return B(e,null,t,n)}function W(e,t){e.legendEnabled&&t.legendLayers.push({id:e.id});let n=(e=>({layerType:e.layerType,customParameters:e.customParameters}))(Q(e));return n.bandIds=e.bandIds,n.compressionQuality=e.compressionQuality,n.format=e.format,n.interpolation=e.interpolation,(e.mosaicRule||e.definitionExpression)&&(n.mosaicRule=e.exportImageServiceParameters.mosaicRule.toJSON()),e.rasterFunction&&(n.renderingRule=e.rasterFunction.toJSON()),e.renderer&&(n.layerDefinition??={},n.layerDefinition.drawingInfo??={},n.layerDefinition.drawingInfo.renderer=e.renderer.toJSON()),K(n,e),n}async function ue(e,t,n){if(e.renderer?.type===`flow`||!e.supportsWrite())return G(e,t,n);e.legendEnabled&&n.legendLayers.push({id:e.id});let r=(e=>({bandIds:e.bandIds,customParameters:e.customParameters,interpolation:e.interpolation,layerDefinition:e.layerDefinition}))(Q(e));return r.layerType=`ArcGISImageServiceLayer`,K(r,e),r}async function de(e,t,n){let r=t.printTemplate;if(!e.portalItem||e.portalItem.access===`public`){let t=Q(e,`web-map`);return t.type=`kml`,delete t.layerType,t.url=s(e.url),t}let i=[],a=t.layerView;a.allVisibleMapImages.forEach((t,n)=>{let r={id:`${e.id}_image${n}`,type:`image`,title:e.id,minScale:e.minScale||0,maxScale:e.maxScale||0,opacity:a.fullOpacity,extent:t.extent};t.href.startsWith(`data:image/png;base64,`)?r.imageData=t.href.slice(22):r.url=t.href,i.push(r)});let o=[...a.allVisiblePoints.items,...a.allVisiblePolylines.items,...a.allVisiblePolygons.items],c={id:e.id,...await B(null,o,r,n)};return i.push(c),i}function fe(e,{outScale:t,printTemplate:n,view:r},i){let a,o={id:e.id,subLayerIds:[]},s=[],c=t||r.scale,l=e=>{let t=c===0,n=e.minScale===0||c<=e.minScale,r=e.maxScale===0||c>=e.maxScale;if(e.visible&&(t||n&&r)){if(e.sublayers)e.sublayers.forEach(l);else{let t=e.toExportImageJSON(),n={id:e.id,name:e.title,layerDefinition:{definitionExpression:t.definitionExpression,drawingInfo:t.drawingInfo,orderBy:t.orderBy,source:t.source}};s.unshift(n),o.subLayerIds.push(e.id)}}};return e.sublayers?.forEach(l),s.length&&(s=s.map(({id:e,name:t,layerDefinition:n})=>({id:e,name:t,layerDefinition:n})),a=(e=>({layerType:e.layerType,customParameters:e.customParameters}))(Q(e)),a.layers=s,a.visibleLayers=e.capabilities?.exportMap?.supportsDynamicLayers?void 0:o.subLayerIds,n.attributionVisible&&(a.credits=y(e)),e.gdbVersion&&(a.gdbVersion=e.gdbVersion),K(a,e),e.legendEnabled&&i.legendLayers.push(o)),a}async function pe({layerView:e,printTemplate:t},n){let r=[],i=e.layer;if(i.featureCollections!=null)for(let e of i.featureCollections){let i=await B(e,e.source,t,n);i&&r.push(...i.featureCollection.layers)}else if(i.sublayers!=null)for(let e of i.sublayers){let i=await B(null,e.graphics,t,n);i&&r.push(...i.featureCollection.layers)}return{featureCollection:{layers:r}}}function me(){return{type:`OpenStreetMap`}}async function he(e,{printTemplate:t},n){let r=[];if(e.featureCollections!=null)for(let i of e.featureCollections){let e=await B(i,i.source,t,n);e&&r.push(...e.featureCollection.layers)}else{let i=await B(null,e.graphics,t,n);i&&r.push(...i.featureCollection.layers)}return{featureCollection:{layers:r}}}async function G(e,{printTemplate:t,view:n},i){let a={type:`image`};i.screenshotLayers.push(e.id);let s={format:`png`,ignoreBackground:!0,ignorePadding:!0,layers:[e]};n.rotation!==0&&(s.rotation=0);let c=i.ssExtent||n.state.extent.clone(),l=96,u=!0,d=!0;if(t.exportOptions){let e=t.exportOptions;e.dpi!=null&&e.dpi>0&&(l=e.dpi),e.width!=null&&e.width>0&&(u=e.width%2==n.width%2),e.height!=null&&e.height>0&&(d=e.height%2==n.height%2)}if(t.layout===`map-only`&&t.scalePreserved&&(!t.outScale||t.outScale===n.scale)&&l===96&&(!u||!d)&&n.state.extent.equals(n.extent)&&(s.area={x:0,y:0,width:n.width,height:n.height},u||--s.area.width,d||--s.area.height,!i.ssExtent)){let e=n.toMap(r(s.area.width,s.area.height));c.ymin=e.y,c.xmax=e.x,i.ssExtent=c}a.extent=c.clone()._normalize(!0).toJSON();let f=await n.takeScreenshot(s);return a.imageData=o(f.dataUrl)?.data,a}async function ge(e,{layerView:t,printTemplate:n},r){return e.legendEnabled&&r.legendLayers.push({id:e.id}),B(e,await Z(t),n,r)}async function _e(e,t){if(e.legendEnabled)for(let n of e.sublayers)n.legendEnabled&&t.legendLayers.push({id:n.id});let n=(e=>({customParameters:e.customParameters,effect:e.effect,layerDefinition:e.layerDefinition,layerType:e.layerType,layers:e.layers,url:e.url}))(Q(e));if(K(n,e),Array.isArray(n.layers)){for(let e of n.layers)delete e.popupInfo;n.token&&n.layers.length>0&&(n.layers[n.layers.length-1].token=n.token,delete n.token)}return n}async function ve(e){let t=[],n=[];for(let t of e.map.allTables)t.type===`feature`&&!t.loaded&&n.push(t.load());n.length&&await Promise.allSettled(n);for(let n of e.map.allTables)if(n.type===`feature`&&n.loaded&&n.isTable&&n.source?.type===`feature-layer`){let e=(e=>({id:e.id,title:e.title,customParameters:e.customParameters,layerDefinition:{definitionExpression:e.layerDefinition?.definitionExpression},url:e.url}))(Q(n));K(e,n),t.push(e)}return t.length?t:void 0}function ye(e,t){e.legendEnabled&&t.legendLayers.push({id:e.id});let n=(e=>({layerType:e.layerType,customParameters:e.customParameters}))(Q(e));return K(n,e),n}async function be(e,t,n){let r=t.layerView;if(e.serviceUrl&&e.styleUrl&&!r.spriteSourceChanged&&!r.styleChanged){let t=p(e.styleUrl,e.apiKey),r=p(e.serviceUrl,e.apiKey);if(!t&&!r||n.cimVersion!==`2.1.0`){let n={type:`VectorTileLayer`};return n.styleUrl=s(e.styleUrl),n.token=t,r!==t&&(n.additionalTokens=[{url:e.serviceUrl,token:r}]),n}}return G(e,t,n)}function xe(e){let t={type:`WebTiledLayer`,urlTemplate:e.urlTemplate?.replaceAll("${",`{`),credits:e.copyright};return e.subDomains&&e.subDomains.length>0&&(t.subDomains=e.subDomains),t}async function Se(e,t,n){return parseFloat(n.cimVersion)<3.5?G(e,t,n):(e.legendEnabled&&n.legendLayers.push({id:e.id}),(e=>({layerType:e.layerType,layerDefinition:e.layerDefinition,url:e.url,wfsInfo:e.wfsInfo}))(Q(e,`web-map`)))}function Ce(e,t){let n,r=[],i=e=>{e.visible&&(e.sublayers?e.sublayers.forEach(i):e.name&&r.unshift(e.name))};return e.sublayers&&e.sublayers.forEach(i),r.length&&(e.legendEnabled&&t.legendLayers.push({id:e.id,subLayerIds:r}),n={type:`wms`,customLayerParameters:e.customLayerParameters,customParameters:e.customParameters,transparentBackground:e.imageTransparency,visibleLayers:r,url:s(e.url),version:e.version}),n}function we(e){let t=e.activeLayer;return{type:`wmts`,customLayerParameters:e.customLayerParameters,customParameters:e.customParameters,format:t.imageFormat,layer:t.id,style:t.styleId,tileMatrixSet:t.tileMatrixSetId,url:s(e.url)}}function K(e,t){t.url&&(e.url=s(e.url||t.url),e.token=p(e.url,t.apiKey))}async function q(e,n){n.canvas||=document.createElement(`canvas`);let r=1024;n.canvas.width=r,n.canvas.height=r;let o=n.canvas.getContext(`2d`),s,c;if(e.path){let t=new Path2D(e.path);t.closePath(),o.fillStyle=Array.isArray(e.color)?`rgba(${e.color[0]},${e.color[1]},${e.color[2]},${e.color[3]/255})`:`rgb(0,0,0)`,o.fill(t);let n=S(o);if(!n)return null;o.clearRect(0,0,r,r);let a=i(e.size)/Math.max(n.width,n.height);o.scale(a,a);let l=r/a,u=l/2-n.width/2-n.x,d=l/2-n.height/2-n.y;if(o.translate(u,d),Array.isArray(e.color)&&o.fill(t),e.outline?.width&&Array.isArray(e.outline.color)){let r=e.outline;o.lineWidth=i(r.width)/a,o.lineJoin=`round`,o.strokeStyle=`rgba(${r.color[0]},${r.color[1]},${r.color[2]},${r.color[3]/255})`,o.stroke(t),n.width+=o.lineWidth,n.height+=o.lineWidth}n.width*=a,n.height*=a;let f=o.getImageData(r/2-n.width/2,r/2-n.height/2,Math.ceil(n.width),Math.ceil(n.height));s=f.width,c=f.height,o.canvas.width=s,o.canvas.height=c,o.putImageData(f,0,0)}else{let n=e.contentType===`image/svg+xml`?`data:image/svg+xml;base64,`+e.imageData:e.url,r=(await t(n,{responseType:`image`})).data;s=i(e.width),c=i(e.height),o.canvas.width=s,o.canvas.height=c,o.drawImage(r,0,0,o.canvas.width,o.canvas.height)}return{type:`esriPMS`,imageData:o.canvas.toDataURL(`image/png`).slice(22),angle:e.angle,contentType:`image/png`,height:a(c),width:a(s),xoffset:e.xoffset,yoffset:e.yoffset}}async function J(e,t){let n=e.type;if(n===`simple`&&$(e.symbol))e.symbol=await q(e.symbol,t)??{type:`esriSMS`,color:[0,0,0,0],size:0,style:`esriSMSSquare`};else if(n===`uniqueValue`){if($(e.defaultSymbol)&&(e.defaultSymbol=await q(e.defaultSymbol,t)),`uniqueValueInfos`in e&&e.uniqueValueInfos)for(let n of e.uniqueValueInfos)$(n.symbol)&&(n.symbol=await q(n.symbol,t));if(`uniqueValueGroups`in e&&e.uniqueValueGroups)for(let n of e.uniqueValueGroups)for(let e of n.classes)$(e.symbol)&&(e.symbol=await q(e.symbol,t))}else if(n===`classBreaks`){$(e.defaultSymbol)&&(e.defaultSymbol=await q(e.defaultSymbol,t));for(let n of e.classBreakInfos)$(n.symbol)&&(n.symbol=await q(n.symbol,t))}}async function Y(e){if(e?.type!==`styleSymbolReference`)return e;try{return(await ce.fromJSON(e).fetchSymbol())?.toJSON()??e}catch{return e}}async function X(e){if(e.type===`simple`&&e.symbol)e.symbol=await Y(e.symbol);else if(e.type===`uniqueValue`){if(e.defaultSymbol=await Y(e.defaultSymbol),`uniqueValueInfos`in e&&e.uniqueValueInfos)for(let t of e.uniqueValueInfos)t.symbol=await Y(t.symbol);if(`uniqueValueGroups`in e&&e.uniqueValueGroups)for(let t of e.uniqueValueGroups)for(let e of t.classes)e.symbol=await Y(e.symbol)}else if(e.type===`classBreaks`){e.defaultSymbol=await Y(e.defaultSymbol);for(let t of e.classBreakInfos)t.symbol=await Y(t.symbol)}}async function Z(e){return e.queryFeatures(e.createQuery()).then(e=>e.features)}function Q(e,t){return e.write({},{ignorePersistenceEnabled:!0,origin:t})??{}}function Te(e){return e.gpMetadata?.executionType?E.fromJSON(e.gpMetadata.executionType):`sync`}function $(e){return e&&(e.path||e.contentType===`image/svg+xml`||e.url?.endsWith(`.svg`))}export{le as execute,N as getGpPrintParams,F as getGpServerUrl,k as getMode,O as getPrintCache,M as getTaskExecutionMode,j as getTaskInfo,A as getTaskInfos,D as printCacheMap};
|
|
2
|
+
import{id as e}from"../kernel.js";import t from"../request.js";import{JSONMap as n}from"../core/jsonMap.js";import{createScreenPoint as r,pt2px as i,px2pt as a}from"../core/screenUtils.js";import{dataComponents as o,normalize as s}from"../core/urlUtils.js";import c from"../geometry/Polygon.js";import{collectLabelingFields as l}from"../layers/support/fieldUtils.js";import{getFloorFilterClause as u,getLayerFloorFilterClause as d}from"../layers/support/floorFilterUtils.js";import{getSizeRangeAtScale as f}from"../renderers/visualVariables/support/visualVariableUtils.js";import{asValidOptions as p,findToken as m}from"./utils.js";import{execute as h}from"./geoprocessor/execute.js";import{submitJob as g}from"./geoprocessor/submitJob.js";import{formatJsonMap as _}from"./support/fileFormat.js";import{toJSON as ee}from"./support/layoutTemplate.js";import{getVisibleLayerViews as v,isScreenshotRequired as te,isBingMapsLayer as ne,isBlendLayer as re,getCopyright as y,getSelectionSymbol as ie,createPointLayer as b,getContextBoundingBox as ae,createPolygonLayer as oe,createPolylineLayer as x,createMultipointLayer as se}from"./support/printTaskUtils.js";import ce from"./support/PrintTemplate.js";import{toJSON as le}from"./support/reportTemplate.js";import S from"../symbols/WebStyleSymbol.js";import C from"../views/support/HighlightOptions.js";const w={Feet:`ft`,Kilometers:`km`,Meters:`m`,Miles:`mi`},T=new n({esriFeet:`Feet`,esriKilometers:`Kilometers`,esriMeters:`Meters`,esriMiles:`Miles`}),E=new n({esriExecutionTypeSynchronous:`sync`,esriExecutionTypeAsynchronous:`async`}),D=new Map;async function O(e,t,n){let r=await P(t,await k(e,n));if(await A(e,n)===`sync`){let{results:t}=await h(e,r,void 0,n);return t?.[0]?.value}let i=await g(e,r,void 0,n);await i.waitForJobCompletion({interval:t.updateDelay});let{value:a}=await i.fetchResultData(`Output_File`,null,n);return a}async function k(e,n){let r=I(e),i=D.get(r)??{gpServerUrl:r,legendLayerNameMap:{},legendLayers:[],screenshotLayers:[]};return i.gpMetadata??=(await t(r,p({f:`json`},n))).data,i.cimVersion=i.gpMetadata.cimVersion,D.set(r,i),i}async function A(e,t){return Ee(await k(e,t))}async function j(e,n){let r=await k(e,n),i=r.gpMetadata.tasks,a=r.gpServerUrl;if(r.taskInfos)return r.taskInfos;let o=(await t(e,p({f:`json`},n))).data;r.taskInfos={ExportWebMap:o};let s=i?.filter(e=>e!==o.name)??[];return await Promise.all(s.map(async e=>{let i=(await t(`${a}/${e}`,p({f:`json`},n))).data,o=i.name.startsWith(`GetLayoutTemplatesInfo`)?`GetLayoutTemplatesInfo`:null;o&&(r.taskInfos[o]??=i)})),r.taskInfos}async function M(e,t,n){return(await j(e,n))[t]??null}async function N(e,t,n){let r=await M(e,t,n);return r?.executionType?E.fromJSON(r.executionType):`sync`}async function P(t,n){n||={is11xService:!1,legendLayerNameMap:{},legendLayers:[]};let r=t.template||new ce;r.showLabels??=!0;let i;r.format===`pdf`&&(i={enablePdfAccessibility:!0});let a=ee(r.layout),o=r.exportOptions;if(o){let e=o.dpi;if(i??={},i.dpi=e,a?.toLowerCase()===`map_only`||a===``){let{width:e,height:t}=o;i.outputSize=e!=null&&t!=null?[e,t]:void 0}}let s=r.layoutOptions,c;if(s){let e,t;s.scalebarUnit===`Miles`||s.scalebarUnit===`Kilometers`?(e=`Kilometers`,t=`Miles`):(s.scalebarUnit===`Meters`||s.scalebarUnit===`Feet`)&&(e=`Meters`,t=`Feet`),c={titleText:s.titleText,authorText:s.authorText,copyrightText:s.copyrightText,customTextElements:s.customTextElements,elementOverrides:s.elementOverrides,scaleBarOptions:e||t?{metricUnit:T.toJSON(e)??void 0,metricLabel:e?w[e]:void 0,nonMetricUnit:T.toJSON(t)??void 0,nonMetricLabel:t?w[t]:void 0}:void 0}}let l=await F(t,r,n);if(l.operationalLayers){let e=RegExp(`[\\u4E00-\\u9FFF\\u0E00-\\u0E7F\\u0900-\\u097F\\u3040-\\u309F\\u30A0-\\u30FF\\u31F0-\\u31FF]`),t=/[\u0600-\u06FF]/,n=n=>{let r=n.text,i=n.font,a=i?.family?.toLowerCase();r&&i&&(a===`arial`||a===`arial unicode ms`)&&(i.family=e.test(r)?`Arial Unicode MS`:`Arial`,i.style!==`normal`&&t.test(r)&&(i.family=`Arial Unicode MS`))};for(let e of l.operationalLayers)if(e.featureCollection?.layers)for(let t of e.featureCollection.layers){if(t.layerDefinition?.drawingInfo?.renderer?.symbol){let e=t.layerDefinition.drawingInfo.renderer;e.symbol.type===`esriTS`&&n(e.symbol)}if(t.featureSet?.features)for(let e of t.featureSet.features)e.symbol&&e.symbol.type===`esriTS`&&n(e.symbol)}}let u=null;s?.legendLayers&&(u=s.legendLayers.filter(e=>!n.screenshotLayers.includes(e.layerId)).map(e=>{let t=e.layerId;n.legendLayerNameMap[t]=e.title;let r={id:t};if(e.subLayerIds){r.subLayerIds=e.subLayerIds;let t=e.dynamicLegend;t!=null&&(r.subLayerDynamicLegends=e.subLayerIds.map(()=>t))}return e.dynamicLegend!=null&&(r.dynamicLegend=e.dynamicLegend),r})),t.outSpatialReference&&(l.mapOptions.spatialReference=t.outSpatialReference.toJSON()),t.datumTransformations?.length&&(l.mapOptions.datumTransformations=t.datumTransformations.map(e=>e.toJSON())),Object.assign(l,{exportOptions:i,layoutOptions:c||{}}),Object.assign(l.layoutOptions,{legendOptions:{operationalLayers:u??n.legendLayers.slice()}}),n.legendLayers.length=0,n.screenshotLayers.length=0,D.set(n.gpServerUrl,n);let d={Web_Map_as_JSON:JSON.stringify(l),Format:_.toJSON(r.format),Layout_Template:a,Layout_Item_ID:void 0,Report_Template:le(r.report),Report_Item_ID:void 0};if(r.layoutItem){delete d.Layout_Template;let t=r.layoutItem;await t.load(),t.access!==`public`&&e&&await e.getCredential(n.gpServerUrl),d.Layout_Item_ID=JSON.stringify({id:t.id})}if(r.reportItem){delete d.Report_Template;let t=r.reportItem;await t.load(),t.access!==`public`&&e&&await e.getCredential(n.gpServerUrl),d.Report_Item_ID=JSON.stringify({id:t.id})}return t.extraParameters&&Object.assign(d,t.extraParameters),d}async function F(e,t,n){let r=e.view,i=r.spatialReference,a={operationalLayers:await L(r,t,n)};t.includeTables&&(a.tables=await ye(r));let o=e.extent||n.ssExtent||r.extent;if(i?.isWrappable&&(o=o.clone()._normalize(!0),i=o.spatialReference),a.mapOptions={extent:o&&o.toJSON(),spatialReference:i&&i.toJSON(),showAttribution:t.attributionVisible},n.ssExtent=null,r.background&&(a.background=r.background.toJSON()),r.rotation&&(a.mapOptions.rotation=-r.rotation),t.scalePreserved&&(a.mapOptions.scale=t.outScale||r.scale),r.timeExtent!=null){let e=r.timeExtent.start==null?null:r.timeExtent.start.getTime(),t=r.timeExtent.end==null?null:r.timeExtent.end.getTime();a.mapOptions.time=[e,t]}return t.reportOptions&&(a.reportOptions=t.reportOptions),a}function I(e){let t=e,n=t.lastIndexOf(`/GPServer/`);return n>0&&(t=t.slice(0,n+9)),t}async function L(e,t,n){let r=[],i=0;t.scalePreserved&&(i=t.outScale||e.scale);let a={layerView:null,outScale:i,printTemplate:t,view:e},o=v(e,i);for(let e of o){let t=e.layer;if(!t.loaded||`layers`in t)continue;let i;a.layerView=e,i=te(e)?await G(t,a,n):ne(t)?R(t):t?.type===`csv`?await B(t,a,n):t?.type===`catalog-footprint`?await z(t,a,n):t?.type===`feature`?await H(t,a,n):t?.type===`geojson`?await U(t,a,n):t?.type===`graphics`?await W(t,a,n):t?.type===`imagery`?ue(t,n):t?.type===`imagery-tile`?await de(t,a,n):t?.type===`kml`?await fe(t,a,n):t?.type===`map-image`?pe(t,a,n):t?.type===`map-notes`?await me(a,n):t?.type===`open-street-map`?he():t?.type===`sketch`?await ge(t,a,n):t?.type===`stream`?await _e(t,a,n):t?.type===`subtype-group`?await ve(t,n):t?.type===`tile`?be(t,n):t?.type===`vector-tile`?await xe(t,a,n):t?.type===`web-tile`?Se(t):t?.type===`wfs`?await Ce(t,a,n):t?.type===`wms`?we(t,n):t?.type===`wmts`?Te(t):await G(t,a,n),i&&(Array.isArray(i)?r.push(...i):(i.id=t.id,i.title=n.legendLayerNameMap[t.id]||t.title,i.opacity=e.fullOpacity,i.minScale=t.minScale||0,i.maxScale=t.maxScale||0,re(t)&&t.blendMode&&t.blendMode!==`normal`&&(i.blendMode=t.blendMode),r.push(i)))}if(i)for(let e of r)e.minScale=0,e.maxScale=0;if(e.graphics?.length){let i=await V(null,e.graphics,t,n);i&&r.push(i)}return r}function R(e){return{culture:e.culture,key:e.key,type:`BingMaps${e.style===`aerial`?`Aerial`:e.style===`hybrid`?`Hybrid`:`Road`}`}}async function z(e,{layerView:t,printTemplate:n},r){if(parseFloat(r.cimVersion)<3.1)return V(e,await Z(t),n,r);let i=e.parent,a=(e=>({id:e.id,url:e.url,layerType:e.layerType,customParameters:e.customParameters,dynamicGroupLayer:{visibility:!1},footprintLayer:e.footprintLayer,layerDefinition:e.layerDefinition}))(Q(i,`web-map`));return K(a,i),a}async function B(e,t,n){e.legendEnabled&&n.legendLayers.push({id:e.id});let r=t.layerView,i=t.printTemplate;if(!r.filter&&(!e.portalItem||e.portalItem.access===`public`)){let t=Q(e,`web-map`);return t.type=`CSV`,delete t.popupInfo,delete t.layerType,t.showLabels=i.showLabels&&e.labelsVisible,t}return V(e,await Z(r),i,n)}async function V(e,t,n,r){let i,a=oe(),o=x(),s=b(),u=se(),d=b();if(d.layerDefinition.name=`textLayer`,delete d.layerDefinition.drawingInfo,e){if(e.declaredClass===`esri.layers.FeatureLayer`||e.declaredClass===`esri.layers.StreamLayer`?a.layerDefinition.name=o.layerDefinition.name=s.layerDefinition.name=u.layerDefinition.name=r.legendLayerNameMap[e.id]||e.arcgisProps?.title||e.title:e.declaredClass===`esri.layers.GraphicsLayer`&&(t=e.graphics.items),e.renderer){let t=e.renderer.toJSON(),n=a.layerDefinition.drawingInfo;n&&(n.renderer=t);let r=o.layerDefinition.drawingInfo;r&&(r.renderer=t);let i=s.layerDefinition.drawingInfo;i&&(i.renderer=t);let c=u.layerDefinition.drawingInfo;c&&(c.renderer=t)}if(n.showLabels&&e.labelsVisible&&typeof e.write==`function`){let t=Q(e).layerDefinition?.drawingInfo?.labelingInfo;if(t){i=!0;let e=a.layerDefinition.drawingInfo;e&&(e.labelingInfo=t);let n=o.layerDefinition.drawingInfo;n&&(n.labelingInfo=t);let r=s.layerDefinition.drawingInfo;r&&(r.labelingInfo=t);let c=u.layerDefinition.drawingInfo;c&&(c.labelingInfo=t)}}}!e?.renderer&&!i&&(delete a.layerDefinition.drawingInfo,delete o.layerDefinition.drawingInfo,delete s.layerDefinition.drawingInfo,delete u.layerDefinition.drawingInfo);let f,p=e?.fieldsIndex,m=e?.renderer;if(p){let t=new Set;i&&await l(t,e),m&&typeof m.collectRequiredFields==`function`&&await m.collectRequiredFields(t,p),f=Array.from(t);let n=p.fields.map(e=>e.toJSON());a.layerDefinition.fields=n,o.layerDefinition.fields=n,s.layerDefinition.fields=n,u.layerDefinition.fields=n}let h=t?.length,g;for(let e=0;e<h;e++){let i=t[e]||t.at(e);if(i.visible!==!1&&i.geometry){if(g=i.toJSON(),g.hasOwnProperty(`popupTemplate`)&&delete g.popupTemplate,g.geometry?.z&&delete g.geometry.z,g.symbol&&(g.symbol.angle||delete g.symbol.angle,$(g.symbol)?g.symbol=await q(g.symbol,r):g.symbol.text&&delete g.attributes),(!n||!n.forceFeatureAttributes)&&f?.length){let e={};for(let t of f)g.attributes?.hasOwnProperty(t)&&(e[t]=g.attributes[t]);g.attributes=e}i.geometry.type===`polygon`?a.featureSet.features.push(g):i.geometry.type===`polyline`?o.featureSet.features.push(g):i.geometry.type===`point`?g.symbol?.text?d.featureSet.features.push(g):s.featureSet.features.push(g):i.geometry.type===`multipoint`?u.featureSet.features.push(g):i.geometry.type===`extent`&&(g.geometry=c.fromExtent(i.geometry).toJSON(),a.featureSet.features.push(g))}}let _=[a,o,u,s,d].filter(e=>e.featureSet.features.length>0);for(let e of _){let t=e.featureSet.features.every(e=>e.symbol);if(t&&(!n||!n.forceFeatureAttributes))for(let t of e.featureSet.features)delete t.attributes;t&&delete e.layerDefinition.drawingInfo,e.layerDefinition.drawingInfo?.renderer&&(await X(e.layerDefinition.drawingInfo.renderer),await J(e.layerDefinition.drawingInfo.renderer,r))}return _.length?{featureCollection:{layers:_},showLabels:i}:null}async function H(e,t,n){let r,i=e.renderer,a=parseFloat(n.cimVersion);if(e.featureReduction?.type===`binning`||e.featureReduction?.type===`cluster`&&(a<2.9||e.featureReduction.renderer?.type===`pie-chart`)||i?.type===`pie-chart`&&a<3.1||i?.type===`dot-density`&&a<2.6||e.geometryType===`polygon`&&i?.authoringInfo?.visualVariables?.some(e=>e.theme===`spike`))return G(e,t,n);e.legendEnabled&&n.legendLayers.push({id:e.id});let o=t.layerView,{printTemplate:s,view:c}=t,l=e.source?.type!==`feature-layer`&&e.source?.type!==`ogc-feature`;if(!o.filter&&!l&&i&&(!(`field`in i)||i.field==null||e.getField(i.field))){if(r=(e=>({id:e.id,title:e.title,url:e.url,layerType:e.layerType,customParameters:e.customParameters,layerDefinition:e.layerDefinition,charts:s.includeCharts?e.charts:void 0}))(Q(e)),s.attributionVisible&&(r.credits=y(e)),r.showLabels=s.showLabels&&e.labelsVisible&&!!e.labelingInfo&&e.labelingInfo.length>0,K(r,e),delete r.layerDefinition?.featureReduction?.disablePopup,delete r.layerDefinition?.featureReduction?.popupInfo,o.displayFilterEnabled||delete r.layerDefinition?.displayFilterInfo,r.layerDefinition?.drawingInfo?.renderer&&(delete r.layerDefinition.minScale,delete r.layerDefinition.maxScale,await X(r.layerDefinition.drawingInfo.renderer),await J(r.layerDefinition.drawingInfo.renderer,n),`visualVariables`in i&&i.visualVariables?.[0])){let e=i.visualVariables[0];if(e.type===`size`&&e.maxSize&&typeof e.maxSize!=`number`&&e.minSize&&typeof e.minSize!=`number`){let t=f(e,c.scale);r.layerDefinition.drawingInfo.renderer.visualVariables[0].minSize=t.minSize,r.layerDefinition.drawingInfo.renderer.visualVariables[0].maxSize=t.maxSize}}let t=u(o);if(t&&(r.layerDefinition??={},r.layerDefinition.definitionExpression=r.layerDefinition.definitionExpression?`(${r.layerDefinition.definitionExpression}) AND (${t})`:t),e.gdbVersion&&(r.layerDefinition??={},r.layerDefinition.gdbVersion=e.gdbVersion),o.hasHighlight&&`highlightIds`in o){let t=o;r.selectionObjectIds=t.highlightIds;let n=t.highlightOptions??c.defaultHighlight??new C;r.selectionSymbol=ie(e.geometryType,n)}}else r=await V(e,await Z(o),s,n);return r}async function U(e,t,n){return e.featureReduction?.type===`binning`||e.featureReduction?.type===`cluster`?G(e,t,n):(e.legendEnabled&&n.legendLayers.push({id:e.id}),V(e,await Z(t.layerView),t.printTemplate,n))}async function W(e,{printTemplate:t},n){return V(e,null,t,n)}function ue(e,t){e.legendEnabled&&t.legendLayers.push({id:e.id});let n=(e=>({layerType:e.layerType,customParameters:e.customParameters}))(Q(e));return n.bandIds=e.bandIds,n.compressionQuality=e.compressionQuality,n.format=e.format,n.interpolation=e.interpolation,(e.mosaicRule||e.definitionExpression)&&(n.mosaicRule=e.exportImageServiceParameters.mosaicRule.toJSON()),e.rasterFunction&&(n.renderingRule=e.rasterFunction.toJSON()),e.renderer&&(n.layerDefinition??={},n.layerDefinition.drawingInfo??={},n.layerDefinition.drawingInfo.renderer=e.renderer.toJSON()),K(n,e),n}async function de(e,t,n){if(e.renderer?.type===`flow`||!e.supportsWrite())return G(e,t,n);e.legendEnabled&&n.legendLayers.push({id:e.id});let r=(e=>({bandIds:e.bandIds,customParameters:e.customParameters,interpolation:e.interpolation,layerDefinition:e.layerDefinition}))(Q(e));return r.layerType=`ArcGISImageServiceLayer`,K(r,e),r}async function fe(e,t,n){let r=t.printTemplate;if(!e.portalItem||e.portalItem.access===`public`){let t=Q(e,`web-map`);return t.type=`kml`,delete t.layerType,t.url=s(e.url),t}let i=[],a=t.layerView;a.allVisibleMapImages.forEach((t,n)=>{let r={id:`${e.id}_image${n}`,type:`image`,title:e.id,minScale:e.minScale||0,maxScale:e.maxScale||0,opacity:a.fullOpacity,extent:t.extent};t.href.startsWith(`data:image/png;base64,`)?r.imageData=t.href.slice(22):r.url=t.href,i.push(r)});let o=[...a.allVisiblePoints.items,...a.allVisiblePolylines.items,...a.allVisiblePolygons.items],c={id:e.id,...await V(null,o,r,n)};return i.push(c),i}function pe(e,{outScale:t,printTemplate:n,view:r},i){let a,o={id:e.id,subLayerIds:[]},s=[],c=t||r.scale,l=e=>{let t=c===0,n=e.minScale===0||c<=e.minScale,i=e.maxScale===0||c>=e.maxScale;if(e.visible&&(t||n&&i)){if(e.sublayers)e.sublayers.forEach(l);else{let t=d(r.floors,e),n=e.toExportImageJSON(t),i={id:e.id,name:e.title,layerDefinition:{definitionExpression:n.definitionExpression,drawingInfo:n.drawingInfo,orderBy:n.orderBy,source:n.source}};s.unshift(i),o.subLayerIds.push(e.id)}}};return e.sublayers?.forEach(l),s.length&&(s=s.map(({id:e,name:t,layerDefinition:n})=>({id:e,name:t,layerDefinition:n})),a=(e=>({layerType:e.layerType,customParameters:e.customParameters}))(Q(e)),a.layers=s,a.visibleLayers=e.capabilities?.exportMap?.supportsDynamicLayers?void 0:o.subLayerIds,n.attributionVisible&&(a.credits=y(e)),e.gdbVersion&&(a.gdbVersion=e.gdbVersion),K(a,e),e.legendEnabled&&i.legendLayers.push(o)),a}async function me({layerView:e,printTemplate:t},n){let r=[],i=e.layer;if(i.featureCollections!=null)for(let e of i.featureCollections){let i=await V(e,e.source,t,n);i&&r.push(...i.featureCollection.layers)}else if(i.sublayers!=null)for(let e of i.sublayers){let i=await V(null,e.graphics,t,n);i&&r.push(...i.featureCollection.layers)}return{featureCollection:{layers:r}}}function he(){return{type:`OpenStreetMap`}}async function ge(e,{printTemplate:t},n){let r=[];if(e.featureCollections!=null)for(let i of e.featureCollections){let e=await V(i,i.source,t,n);e&&r.push(...e.featureCollection.layers)}else{let i=await V(null,e.graphics,t,n);i&&r.push(...i.featureCollection.layers)}return{featureCollection:{layers:r}}}async function G(e,{printTemplate:t,view:n},i){let a={type:`image`};i.screenshotLayers.push(e.id);let s={format:`png`,ignoreBackground:!0,ignorePadding:!0,layers:[e]};n.rotation!==0&&(s.rotation=0);let c=i.ssExtent||n.state.extent.clone(),l=96,u=!0,d=!0;if(t.exportOptions){let e=t.exportOptions;e.dpi!=null&&e.dpi>0&&(l=e.dpi),e.width!=null&&e.width>0&&(u=e.width%2==n.width%2),e.height!=null&&e.height>0&&(d=e.height%2==n.height%2)}if(t.layout===`map-only`&&t.scalePreserved&&(!t.outScale||t.outScale===n.scale)&&l===96&&(!u||!d)&&n.state.extent.equals(n.extent)&&(s.area={x:0,y:0,width:n.width,height:n.height},u||--s.area.width,d||--s.area.height,!i.ssExtent)){let e=n.toMap(r(s.area.width,s.area.height));c.ymin=e.y,c.xmax=e.x,i.ssExtent=c}a.extent=c.clone()._normalize(!0).toJSON();let f=await n.takeScreenshot(s);return a.imageData=o(f.dataUrl)?.data,a}async function _e(e,{layerView:t,printTemplate:n},r){return e.legendEnabled&&r.legendLayers.push({id:e.id}),V(e,await Z(t),n,r)}async function ve(e,t){if(e.legendEnabled)for(let n of e.sublayers)n.legendEnabled&&t.legendLayers.push({id:n.id});let n=(e=>({customParameters:e.customParameters,effect:e.effect,layerDefinition:e.layerDefinition,layerType:e.layerType,layers:e.layers,url:e.url}))(Q(e));if(K(n,e),Array.isArray(n.layers)){for(let e of n.layers)delete e.popupInfo;n.token&&n.layers.length>0&&(n.layers[n.layers.length-1].token=n.token,delete n.token)}return n}async function ye(e){let t=[],n=[];for(let t of e.map.allTables)t.type===`feature`&&!t.loaded&&n.push(t.load());n.length&&await Promise.allSettled(n);for(let n of e.map.allTables)if(n.type===`feature`&&n.loaded&&n.isTable&&n.source?.type===`feature-layer`){let e=(e=>({id:e.id,title:e.title,customParameters:e.customParameters,layerDefinition:{definitionExpression:e.layerDefinition?.definitionExpression},url:e.url}))(Q(n));K(e,n),t.push(e)}return t.length?t:void 0}function be(e,t){e.legendEnabled&&t.legendLayers.push({id:e.id});let n=(e=>({layerType:e.layerType,customParameters:e.customParameters}))(Q(e));return K(n,e),n}async function xe(e,t,n){let r=t.layerView;if(e.serviceUrl&&e.styleUrl&&!r.spriteSourceChanged&&!r.styleChanged){let t=m(e.styleUrl,e.apiKey),r=m(e.serviceUrl,e.apiKey);if(!t&&!r||n.cimVersion!==`2.1.0`){let n={type:`VectorTileLayer`};return n.styleUrl=s(e.styleUrl),n.token=t,r!==t&&(n.additionalTokens=[{url:e.serviceUrl,token:r}]),n}}return G(e,t,n)}function Se(e){let t={type:`WebTiledLayer`,urlTemplate:e.urlTemplate?.replaceAll("${",`{`),credits:e.copyright};return e.subDomains&&e.subDomains.length>0&&(t.subDomains=e.subDomains),t}async function Ce(e,t,n){return parseFloat(n.cimVersion)<3.5?G(e,t,n):(e.legendEnabled&&n.legendLayers.push({id:e.id}),(e=>({layerType:e.layerType,layerDefinition:e.layerDefinition,url:e.url,wfsInfo:e.wfsInfo}))(Q(e,`web-map`)))}function we(e,t){let n,r=[],i=e=>{e.visible&&(e.sublayers?e.sublayers.forEach(i):e.name&&r.unshift(e.name))};return e.sublayers&&e.sublayers.forEach(i),r.length&&(e.legendEnabled&&t.legendLayers.push({id:e.id,subLayerIds:r}),n={type:`wms`,customLayerParameters:e.customLayerParameters,customParameters:e.customParameters,transparentBackground:e.imageTransparency,visibleLayers:r,url:s(e.url),version:e.version}),n}function Te(e){let t=e.activeLayer;return{type:`wmts`,customLayerParameters:e.customLayerParameters,customParameters:e.customParameters,format:t.imageFormat,layer:t.id,style:t.styleId,tileMatrixSet:t.tileMatrixSetId,url:s(e.url)}}function K(e,t){t.url&&(e.url=s(e.url||t.url),e.token=m(e.url,t.apiKey))}async function q(e,n){n.canvas||=document.createElement(`canvas`);let r=1024;n.canvas.width=r,n.canvas.height=r;let o=n.canvas.getContext(`2d`),s,c;if(e.path){let t=new Path2D(e.path);t.closePath(),o.fillStyle=Array.isArray(e.color)?`rgba(${e.color[0]},${e.color[1]},${e.color[2]},${e.color[3]/255})`:`rgb(0,0,0)`,o.fill(t);let n=ae(o);if(!n)return null;o.clearRect(0,0,r,r);let a=i(e.size)/Math.max(n.width,n.height);o.scale(a,a);let l=r/a,u=l/2-n.width/2-n.x,d=l/2-n.height/2-n.y;if(o.translate(u,d),Array.isArray(e.color)&&o.fill(t),e.outline?.width&&Array.isArray(e.outline.color)){let r=e.outline;o.lineWidth=i(r.width)/a,o.lineJoin=`round`,o.strokeStyle=`rgba(${r.color[0]},${r.color[1]},${r.color[2]},${r.color[3]/255})`,o.stroke(t),n.width+=o.lineWidth,n.height+=o.lineWidth}n.width*=a,n.height*=a;let f=o.getImageData(r/2-n.width/2,r/2-n.height/2,Math.ceil(n.width),Math.ceil(n.height));s=f.width,c=f.height,o.canvas.width=s,o.canvas.height=c,o.putImageData(f,0,0)}else{let n=e.contentType===`image/svg+xml`?`data:image/svg+xml;base64,`+e.imageData:e.url,r=(await t(n,{responseType:`image`})).data;s=i(e.width),c=i(e.height),o.canvas.width=s,o.canvas.height=c,o.drawImage(r,0,0,o.canvas.width,o.canvas.height)}return{type:`esriPMS`,imageData:o.canvas.toDataURL(`image/png`).slice(22),angle:e.angle,contentType:`image/png`,height:a(c),width:a(s),xoffset:e.xoffset,yoffset:e.yoffset}}async function J(e,t){let n=e.type;if(n===`simple`&&$(e.symbol))e.symbol=await q(e.symbol,t)??{type:`esriSMS`,color:[0,0,0,0],size:0,style:`esriSMSSquare`};else if(n===`uniqueValue`){if($(e.defaultSymbol)&&(e.defaultSymbol=await q(e.defaultSymbol,t)),`uniqueValueInfos`in e&&e.uniqueValueInfos)for(let n of e.uniqueValueInfos)$(n.symbol)&&(n.symbol=await q(n.symbol,t));if(`uniqueValueGroups`in e&&e.uniqueValueGroups)for(let n of e.uniqueValueGroups)for(let e of n.classes)$(e.symbol)&&(e.symbol=await q(e.symbol,t))}else if(n===`classBreaks`){$(e.defaultSymbol)&&(e.defaultSymbol=await q(e.defaultSymbol,t));for(let n of e.classBreakInfos)$(n.symbol)&&(n.symbol=await q(n.symbol,t))}}async function Y(e){if(e?.type!==`styleSymbolReference`)return e;try{return(await S.fromJSON(e).fetchSymbol())?.toJSON()??e}catch{return e}}async function X(e){if(e.type===`simple`&&e.symbol)e.symbol=await Y(e.symbol);else if(e.type===`uniqueValue`){if(e.defaultSymbol=await Y(e.defaultSymbol),`uniqueValueInfos`in e&&e.uniqueValueInfos)for(let t of e.uniqueValueInfos)t.symbol=await Y(t.symbol);if(`uniqueValueGroups`in e&&e.uniqueValueGroups)for(let t of e.uniqueValueGroups)for(let e of t.classes)e.symbol=await Y(e.symbol)}else if(e.type===`classBreaks`){e.defaultSymbol=await Y(e.defaultSymbol);for(let t of e.classBreakInfos)t.symbol=await Y(t.symbol)}}async function Z(e){return e.queryFeatures(e.createQuery()).then(e=>e.features)}function Q(e,t){return e.write({},{ignorePersistenceEnabled:!0,origin:t})??{}}function Ee(e){return e.gpMetadata?.executionType?E.fromJSON(e.gpMetadata.executionType):`sync`}function $(e){return e&&(e.path||e.contentType===`image/svg+xml`||e.url?.endsWith(`.svg`))}export{O as execute,P as getGpPrintParams,I as getGpServerUrl,A as getMode,k as getPrintCache,N as getTaskExecutionMode,M as getTaskInfo,j as getTaskInfos,D as printCacheMap};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{equalsMaybe as n}from"../../../../core/maybe.js";import{property as r,subclass as i}from"../../../../core/accessorSupport/decorators.js";import{equals as a,exactEquals as o}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{equals as s}from"../../../../geometry/support/ray.js";let c=class extends t{constructor(e){super(e)}clone(){return this}equals(e){return this.context?.type===e.context?.type&&(!this.context||!e.context||this.context.equals(e.context))&&this.id===e.id&&n(this.mapPoint,e.mapPoint)&&a(this.renderPoint,e.renderPoint)&&o(this.normal,e.normal)&&s(this.ray,e.ray)}};e([r({constructOnly:!0})],c.prototype,`context`,void 0),e([r({constructOnly:!0})],c.prototype,`id`,void 0),e([r({constructOnly:!0})],c.prototype,`mapPoint`,void 0),e([r({constructOnly:!0})],c.prototype,`renderPoint`,void 0),e([r({constructOnly:!0})],c.prototype,`normal`,void 0),e([r({constructOnly:!0})],c.prototype,`ray`,void 0),c=e([i(`esri.views.3d.analysis.LineOfSight.LineOfSightIntersectionResult`)],c);class l{constructor(e){this.graphic=e,this.type=`graphic`}equals(e){return e.type===this.type&&this.graphic===e.graphic}}class u{constructor(){this.type=`ground`}equals(e){return e.type===this.type}}const d=new u;class f{constructor(){this.type=`gaussian-splat`}equals(e){return e.type===this.type}}const p=new f;export{l as LineOfSightIntersectionContextGraphic,c as LineOfSightIntersectionResult,p as lineOfSightIntersectionContextGaussianSplat,d as lineOfSightIntersectionContextGround};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../core/Accessor.js";import"../../../core/has.js";import{destroyMaybe as n}from"../../../core/maybe.js";import{watch as r,initial as i,syncAndInitial as a}from"../../../core/reactiveUtils.js";import{property as o,subclass as s}from"../../../core/accessorSupport/decorators.js";import{DoubleClickZoom as c}from"./handlers/DoubleClickZoom.js";import{DragRotate as l}from"./handlers/DragRotate.js";import{DragZoom as u}from"./handlers/DragZoom.js";import{DragZoomBox as d}from"./handlers/DragZoomBox.js";import{GamepadNavigation as f}from"./handlers/GamepadNavigation.js";import{KeyboardNavigation as p}from"./handlers/KeyboardNavigation.js";import{MouseWheelFov as m}from"./handlers/MouseWheelFov.js";import{MouseWheelZoom as h}from"./handlers/MouseWheelZoom.js";import{PinchAndPanNavigation as g}from"./handlers/PinchAndPanNavigation.js";import{PointerDownCancelAnimation as _}from"./handlers/PointerDownCancelAnimation.js";import{TwoFingerTilt as v}from"./handlers/TwoFingerTilt.js";import{GroundDoubleClickMove as y}from"./handlers/ground/GroundDoubleClickMove.js";import{GroundNavigation as b}from"./handlers/ground/GroundNavigation.js";import{BrowserEventSource as x}from"../../input/BrowserEventSource.js";import{InputManager as S,ViewEventPriorities as C}from"../../input/InputManager.js";import{PreventContextMenu as w}from"../../input/handlers/PreventContextMenu.js";import{PreventTouchSelection as T}from"../../input/handlers/PreventTouchSelection.js";import{getPointerActions as E}from"../../input/handlers/support.js";import{Drag as D}from"../../input/recognizers/Drag.js";import{ImmediateDoubleClick as O}from"../../input/recognizers/ImmediateDoubleClick.js";import{PointerClickHoldAndDrag as k}from"../../input/recognizers/PointerClickHoldAndDrag.js";import{SingleAndDoubleClick as A}from"../../input/recognizers/SingleAndDoubleClick.js";import{VerticalTwoFingerDrag as j}from"../../input/recognizers/VerticalTwoFingerDrag.js";const M=`modeDependentNavigation`;let N=class extends t{constructor(){super(...arguments),this.mode=`default`,this._keys={fov:`Shift`,pan:{left:`ArrowLeft`,right:`ArrowRight`,forward:`ArrowUp`,backward:`ArrowDown`,up:[`u`,`U`],down:[`j`,`J`]},lookAround:{headingLeft:[`a`,`A`],headingRight:[`d`,`D`],tiltUp:[`w`,`W`],tiltDown:[`s`,`S`]},modifier:[`b`,`B`],zoom:{zoomIn:[`+`,`=`],zoomOut:[`-`,`_`]},reset:{heading:[`n`,`N`],tilt:[`p`,`P`]},precisionPanModifier:`Alt`,coarsePanModifier:`Shift`},this._updateMode=({mode:e,dragPrimary:t,dragSecondary:n,dragTertiary:r})=>{e===`pro`&&(n=`zoom`,r=t===`pan`?`rotate`:`pan`);let i={dragPrimary:t,dragSecondary:n,dragTertiary:r};this._modeDragPan&&(this._modeDragPan.pointerActions=E(`pan`,i)),this._modeGroundNavigation&&(this._modeGroundNavigation.pointerActions=E(`pan`,i)),this._modeDragRotate&&(this._modeDragRotate.pointerActions=E(`rotate`,i)),this._modeGroundNavigationDragRotate&&(this._modeGroundNavigationDragRotate.pointerActions=E(`rotate`,i)),this._modeDragZoom&&(this._modeDragZoom.pointerActions=E(`zoom`,i))}}destroy(){this.disconnect()}get primaryDragAction(){return this.view.navigation.actionMap.dragPrimary}set primaryDragAction(e){let{actionMap:t}=this.view.navigation;t.dragPrimary=e,t.dragSecondary=e===`pan`?`rotate`:`pan`}get updating(){return!!this._inputManager?.updating}get latestPointerInfo(){return this._inputManager?.latestPointerInfo}get latestPenInfo(){return this._inputManager?.latestPenInfo}get multiTouchActive(){return this._inputManager?.multiTouchActive??!1}disconnect(){this.removeAllHandles(),this.view.viewEvents.disconnect(),this._modeDragPan=null,this._modeGroundNavigation=null,this._modeDragRotate=null,this._modeGroundNavigationDragRotate=null,this._modeDragZoom=null,this._modeKeyboardNavigation=null,this._inputManager=n(this._inputManager),this._source=n(this._source)}connect(){let e=this.view;this._source=new x(this.view.surface,e.input);let t=[new O,new k,new A,new D(this.view.navigation),new j],n=new S({eventSource:this._source,recognizers:t});this._inputManager=n,n.installHandlers(`prevent-context-menu`,[new w],C.INTERNAL),n.installHandlers(`prevent-touch-text-selection-gesture`,[new T(this.view)],C.INTERNAL),this._modeDragPan=new g(e,[`primary`]),this._modeDragRotate=new l(e,[`secondary`],0),this._modeDragZoom=new u(e,[`tertiary`],this._keys.fov),this._modeKeyboardNavigation=new p(e,this._keys);let o=[new _(e),new c(e),new f(e),new m(e,this._keys.fov),new h(e),new d(e),new l(e,[`primary`],1,this._keys.modifier),new b(e,[`secondary`],this._keys.modifier),this._modeDragRotate,this._modeDragZoom,this._modeDragPan,this._modeKeyboardNavigation,new v(e)];this._modeGroundNavigation=new b(e,[`primary`]),this._modeGroundNavigationDragRotate=new l(e,[`secondary`],1);let s=[this._modeGroundNavigation,new m(e,this._keys.fov),new b(e,[`tertiary`]),this._modeGroundNavigationDragRotate,this._modeKeyboardNavigation,new y(e)];this.view.viewEvents.connect(n),this.addHandles([r(()=>this.view.navigation.mode,e=>{switch(n.hasHandlers(M)&&n.uninstallHandlers(M),e.type){case`default`:n.installHandlers(M,o,C.INTERNAL);break;case`ground`:n.installHandlers(M,s,C.INTERNAL)}},{initial:!0}),r(()=>this.view.navigation?.browserTouchPanEnabled,e=>{this._source.browserTouchPanningEnabled=!e},i),r(()=>{let{actionMap:e}=this.view.navigation,{dragPrimary:t,dragSecondary:n,dragTertiary:r}=e;return{mode:this.mode,dragPrimary:t,dragSecondary:n,dragTertiary:r}},this._updateMode,a)])}isModifierKeyDown(e){return this._inputManager?.isModifierKeyDown(e)??!1}get test(){}};e([o()],N.prototype,`view`,void 0),e([o({type:[`default`,`pro`]})],N.prototype,`mode`,void 0),e([o({readOnly:!0})],N.prototype,`updating`,null),e([o()],N.prototype,`latestPointerInfo`,null),e([o()],N.prototype,`latestPenInfo`,null),e([o()],N.prototype,`multiTouchActive`,null),e([o()],N.prototype,`_inputManager`,void 0),N=e([s(`esri.views.3d.input.SceneInputManager`)],N);const P=N;export{P as default};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../core/Accessor.js";import"../../../core/has.js";import{destroyMaybe as n}from"../../../core/maybe.js";import{watch as r,initial as i,syncAndInitial as a}from"../../../core/reactiveUtils.js";import{property as o,subclass as s}from"../../../core/accessorSupport/decorators.js";import{DoubleClickZoom as c}from"./handlers/DoubleClickZoom.js";import{DragRotate as l}from"./handlers/DragRotate.js";import{DragZoom as u}from"./handlers/DragZoom.js";import{DragZoomBox as d}from"./handlers/DragZoomBox.js";import{GamepadNavigation as f}from"./handlers/GamepadNavigation.js";import{KeyboardNavigation as p}from"./handlers/KeyboardNavigation.js";import{MouseWheelFov as m}from"./handlers/MouseWheelFov.js";import{MouseWheelZoom as h}from"./handlers/MouseWheelZoom.js";import{PinchAndPanNavigation as g}from"./handlers/PinchAndPanNavigation.js";import{PointerDownCancelAnimation as _}from"./handlers/PointerDownCancelAnimation.js";import{TwoFingerTilt as v}from"./handlers/TwoFingerTilt.js";import{GroundDoubleClickMove as y}from"./handlers/ground/GroundDoubleClickMove.js";import{GroundNavigation as b}from"./handlers/ground/GroundNavigation.js";import{BrowserEventSource as x}from"../../input/BrowserEventSource.js";import{InputManager as S,ViewEventPriorities as C}from"../../input/InputManager.js";import{PreventContextMenu as w}from"../../input/handlers/PreventContextMenu.js";import{PreventTouchSelection as T}from"../../input/handlers/PreventTouchSelection.js";import{getPointerActions as E}from"../../input/handlers/support.js";import{Drag as D}from"../../input/recognizers/Drag.js";import{ImmediateDoubleClick as O}from"../../input/recognizers/ImmediateDoubleClick.js";import{PointerClickHoldAndDrag as k}from"../../input/recognizers/PointerClickHoldAndDrag.js";import{SingleAndDoubleClick as A}from"../../input/recognizers/SingleAndDoubleClick.js";import{VerticalTwoFingerDrag as j}from"../../input/recognizers/VerticalTwoFingerDrag.js";const M=`modeDependentNavigation`;let N=class extends t{constructor(){super(...arguments),this.mode=`default`,this._keys={fov:`Shift`,pan:{left:`ArrowLeft`,right:`ArrowRight`,forward:`ArrowUp`,backward:`ArrowDown`,up:[`u`,`U`],down:[`j`,`J`]},lookAround:{headingLeft:[`a`,`A`],headingRight:[`d`,`D`],tiltUp:[`w`,`W`],tiltDown:[`s`,`S`]},modifier:[`b`,`B`],zoom:{zoomIn:[`+`,`=`],zoomOut:[`-`,`_`]},reset:{heading:[`n`,`N`],tilt:[`p`,`P`]},precisionPanModifier:`Alt`,coarsePanModifier:`Shift`},this._updateMode=({mode:e,dragPrimary:t,dragSecondary:n,dragTertiary:r})=>{e===`pro`&&(n=`zoom`,r=t===`pan`?`rotate`:`pan`);let i={dragPrimary:t,dragSecondary:n,dragTertiary:r};this._modeDragPan&&(this._modeDragPan.pointerActions=E(`pan`,i)),this._modeGroundNavigation&&(this._modeGroundNavigation.pointerActions=E(`pan`,i)),this._modeDragRotate&&(this._modeDragRotate.pointerActions=E(`rotate`,i)),this._modeGroundNavigationDragRotate&&(this._modeGroundNavigationDragRotate.pointerActions=E(`rotate`,i)),this._modeDragZoom&&(this._modeDragZoom.pointerActions=E(`zoom`,i))}}destroy(){this.disconnect()}get primaryDragAction(){return this.view.navigation.actionMap.dragPrimary}set primaryDragAction(e){let{actionMap:t}=this.view.navigation;t.dragPrimary=e,t.dragSecondary=e===`pan`?`rotate`:`pan`}get updating(){return!!this._inputManager?.updating}get latestPointerInfo(){return this._inputManager?.latestPointerInfo}get latestPenInfo(){return this._inputManager?.latestPenInfo}get multiTouchActive(){return this._inputManager?.multiTouchActive??!1}disconnect(){this.removeAllHandles(),this.view.viewEvents.disconnect(),this._modeDragPan=null,this._modeGroundNavigation=null,this._modeDragRotate=null,this._modeGroundNavigationDragRotate=null,this._modeDragZoom=null,this._modeKeyboardNavigation=null,this._inputManager=n(this._inputManager),this._source=n(this._source)}connect(){let e=this.view;this._source=new x(this.view.surface,e.input);let t=[new O,new k,new A,new D(this.view.navigation),new j],n=new S({eventSource:this._source,recognizers:t});this._inputManager=n,n.installHandlers(`prevent-context-menu`,[new w],C.INTERNAL),n.installHandlers(`prevent-touch-text-selection-gesture`,[new T(this.view)],C.INTERNAL),this._modeDragPan=new g(e,[`primary`]),this._modeDragRotate=new l(e,[`secondary`],0),this._modeDragZoom=new u(e,[`tertiary`],this._keys.fov),this._modeKeyboardNavigation=new p(e,this._keys);let o=[new _(e),new c(e),new f(e),new m(e,this._keys.fov,!0),new h(e),new d(e),new l(e,[`primary`],1,this._keys.modifier),new b(e,[`secondary`],this._keys.modifier),this._modeDragRotate,this._modeDragZoom,this._modeDragPan,this._modeKeyboardNavigation,new v(e)];this._modeGroundNavigation=new b(e,[`primary`]),this._modeGroundNavigationDragRotate=new l(e,[`secondary`],1);let s=[this._modeGroundNavigation,new m(e,this._keys.fov,!1),new b(e,[`tertiary`]),this._modeGroundNavigationDragRotate,this._modeKeyboardNavigation,new y(e)];this.view.viewEvents.connect(n),this.addHandles([r(()=>this.view.navigation.mode,e=>{switch(n.hasHandlers(M)&&n.uninstallHandlers(M),e.type){case`default`:n.installHandlers(M,o,C.INTERNAL);break;case`ground`:n.installHandlers(M,s,C.INTERNAL)}},{initial:!0}),r(()=>this.view.navigation?.browserTouchPanEnabled,e=>{this._source.browserTouchPanningEnabled=!e},i),r(()=>{let{actionMap:e}=this.view.navigation,{dragPrimary:t,dragSecondary:n,dragTertiary:r}=e;return{mode:this.mode,dragPrimary:t,dragSecondary:n,dragTertiary:r}},this._updateMode,a)])}isModifierKeyDown(e){return this._inputManager?.isModifierKeyDown(e)??!1}get test(){}};e([o()],N.prototype,`view`,void 0),e([o({type:[`default`,`pro`]})],N.prototype,`mode`,void 0),e([o({readOnly:!0})],N.prototype,`updating`,null),e([o()],N.prototype,`latestPointerInfo`,null),e([o()],N.prototype,`latestPenInfo`,null),e([o()],N.prototype,`multiTouchActive`,null),e([o()],N.prototype,`_inputManager`,void 0),N=e([s(`esri.views.3d.input.SceneInputManager`)],N);const P=N;export{P as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{createScreenPointArray as e}from"../../../../core/screenUtils.js";import{FovController as t}from"../../state/controllers/FovController.js";import{ZoomControllerGlobal as n}from"../../state/controllers/ZoomControllerGlobal.js";import{ZoomControllerLocal as r}from"../../state/controllers/ZoomControllerLocal.js";import{InputHandler as i}from"../../../input/InputHandler.js";import{eventMatchesMousePointerActions as a}from"../../../input/handlers/support.js";class o extends i{constructor(e,t,n){super(!0),this._view=e,this.pointerActions=t,this._fovModifier=n,this.registerIncoming(`drag`,[n],e=>this._handleZoom(e)),this.registerIncoming(`drag`,e=>this._handleZoom(e))}_handleZoom(i){let o=i.data;if(o.pointers.size>1||!a(i.data,this.pointerActions))return;let s=e(o.center.x,o.center.y);switch(o.action){case`start`:{this._cameraController?.finish();let e=this._view,a=i.modifiers.has(this._fovModifier);this._cameraController=a?new t({view:e,onStop:()=>this._stopController()}):e.state.isGlobal?new n({view:e}):new r({view:e}),this._view.state.switchCameraController(this._cameraController),this._cameraController.begin(s);break}case`update`:this._cameraController?.update(s);break;case`end`:this._cameraController instanceof t?this._cameraController.updateTimeout():this._stopController()}i.stopPropagation()}_stopController(){this._cameraController?.finish(),this._cameraController=null}}export{o as DragZoom};
|
|
2
|
+
import{createScreenPointArray as e}from"../../../../core/screenUtils.js";import{FovController as t}from"../../state/controllers/FovController.js";import{ZoomControllerGlobal as n}from"../../state/controllers/ZoomControllerGlobal.js";import{ZoomControllerLocal as r}from"../../state/controllers/ZoomControllerLocal.js";import{InputHandler as i}from"../../../input/InputHandler.js";import{eventMatchesMousePointerActions as a}from"../../../input/handlers/support.js";class o extends i{constructor(e,t,n){super(!0),this._view=e,this.pointerActions=t,this._fovModifier=n,this.registerIncoming(`drag`,[n],e=>this._handleZoom(e)),this.registerIncoming(`drag`,e=>this._handleZoom(e))}_handleZoom(i){let o=i.data;if(o.pointers.size>1||!a(i.data,this.pointerActions))return;let s=e(o.center.x,o.center.y);switch(o.action){case`start`:{this._cameraController?.finish();let e=this._view,a=i.modifiers.has(this._fovModifier);this._cameraController=a?new t({view:e,onStop:()=>this._stopController(),enableDolly:!0}):e.state.isGlobal?new n({view:e}):new r({view:e}),this._view.state.switchCameraController(this._cameraController),this._cameraController.begin(s);break}case`update`:this._cameraController?.update(s);break;case`end`:this._cameraController instanceof t?this._cameraController.updateTimeout():this._stopController()}i.stopPropagation()}_stopController(){this._cameraController?.finish(),this._cameraController=null}}export{o as DragZoom};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{FovController as e}from"../../state/controllers/FovController.js";import{InputHandler as t}from"../../../input/InputHandler.js";class n extends t{constructor(e,t){super(!0),this._view=e,this.registerIncoming(`mouse-wheel`,[t],e=>this._handleFov(e))}_handleFov(t){if(this._mouseWheelFovChangeEnabled){if(!this._fovController?.running&&(this._fovController?.hideOverlay(),this._fovController=new e({view:this._view,onStop:()=>this._stopFovController()}),this._view.state.switchCameraController(this._fovController),this._fovController.state===1)){this._stopFovController();return}this._fovController.updateTimeout(),this._fovController.step(t.data.deltaY/20),t.preventDefault(),t.stopPropagation()}}get _mouseWheelFovChangeEnabled(){return this._view.navigation.actionMap.mouseWheel===`zoom`}_stopFovController(){this._fovController?.finish(),this._fovController=null}}export{n as MouseWheelFov};
|
|
2
|
+
import{FovController as e}from"../../state/controllers/FovController.js";import{InputHandler as t}from"../../../input/InputHandler.js";class n extends t{constructor(e,t,n){super(!0),this._view=e,this._enableDolly=n,this.registerIncoming(`mouse-wheel`,[t],e=>this._handleFov(e))}_handleFov(t){if(this._mouseWheelFovChangeEnabled){if(!this._fovController?.running&&(this._fovController?.hideOverlay(),this._fovController=new e({view:this._view,onStop:()=>this._stopFovController(),enableDolly:this._enableDolly}),this._view.state.switchCameraController(this._fovController),this._fovController.state===1)){this._stopFovController();return}this._fovController.updateTimeout(),this._fovController.step(t.data.deltaY/20),t.preventDefault(),t.stopPropagation()}}get _mouseWheelFovChangeEnabled(){return this._view.navigation.actionMap.mouseWheel===`zoom`}_stopFovController(){this._fovController?.finish(),this._fovController=null}}export{n as MouseWheelFov};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../Color.js";import n from"../../../Graphic.js";import{removeUnordered as r,isSome as i}from"../../../core/arrayUtils.js";import has from"../../../core/has.js";import a from"../../../core/Logger.js";import{equals as o}from"../../../core/MapUtils.js";import{destroyMaybe as s}from"../../../core/maybe.js";import c from"../../../core/PooledArray.js";import{ignoreAbortErrors as l,isAbortError as u,throwIfAborted as d}from"../../../core/promiseUtils.js";import{initial as f,watch as p}from"../../../core/reactiveUtils.js";import{schedule as m}from"../../../core/scheduling.js";import{equals as h}from"../../../core/SetUtils.js";import{isArrayBuffer as g}from"../../../core/typedArrayUtil.js";import{property as _,subclass as v}from"../../../core/accessorSupport/decorators.js";import{fromMat4 as y,exactEquals as b,invert as ee}from"../../../core/libs/gl-matrix-2/math/mat3.js";import{create as te,IDENTITY as ne}from"../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{multiply as re,getTranslation as ie}from"../../../core/libs/gl-matrix-2/math/mat4.js";import{clone as ae,create as oe}from"../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{fromValues as se}from"../../../core/libs/gl-matrix-2/factories/quatf64.js";import{set as x,transformMat4 as S,transformMat3 as ce,sub as le,add as C,scale as ue,subtract as w}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as T}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{set as E}from"../../../core/libs/gl-matrix-2/math/vec4.js";import{fromValues as de}from"../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{UpdatingHandles as fe}from"../../../core/support/UpdatingHandles.js";import{getSphericalPCPF as D}from"../../../geometry/spatialReferenceEllipsoidUtils.js";import{localLinearScaleFactors as pe}from"../../../geometry/projection/localLinearScaleFactors.js";import{projectBoundingSphere as me}from"../../../geometry/projection/projectBoundingSphere.js";import{projectBuffer as he}from"../../../geometry/projection/projectBuffer.js";import{getProjectorName as ge}from"../../../geometry/projection/projectors.js";import{projectVectorToVector as O}from"../../../geometry/projection/projectVectorToVector.js";import{create as k,fromBuffer as _e,toRect as A}from"../../../geometry/support/aaBoundingBox.js";import{create as j,intersects as M}from"../../../geometry/support/aaBoundingRect.js";import{newDoubleArray as N,ensurePackedMat4f64 as P}from"../../../geometry/support/DoubleArray.js";import{compactFloatArray as ve}from"../../../geometry/support/FloatArray.js";import{compactIndices as ye}from"../../../geometry/support/Indices.js";import{Sphere as F}from"../../../geometry/support/sphere.js";import{newUByteArray as I}from"../../../geometry/support/UByteArray.js";import{fallbackObjectIDAttribute as L}from"../../../layers/LayerConstants.js";import be from"../../../layers/graphics/controllers/I3SOnDemandController.js";import{fixFields as xe}from"../../../layers/support/fieldUtils.js";import{I3SExtractChanges as Se}from"../../../layers/support/I3SExtractChanges.js";import R from"../../../layers/support/SceneModification.js";import{getColor as Ce,getOpacity as we}from"../../../renderers/visualVariables/support/visualVariableUtils.js";import{isBasemapLayerView as z}from"../../../support/basemapUtils.js";import{getElevationOffset as B}from"../../../support/elevationInfoUtils.js";import{loadArcade as Te}from"../../../support/loadArcade.js";import V from"../../../symbols/MeshSymbol3D.js";import Ee from"../../../symbols/SimpleFillSymbol.js";import{ContentGeometryUpdateEvent as De}from"./ContentGeometryLayerView.js";import Oe from"./I3SMeshViewLabeler.js";import{I3SMeshViewPerformanceInfo as ke}from"./I3SMeshViewPerformanceInfo.js";import{initialize as Ae,setModificationsSync as je,filterObbsForModificationsSync as Me,interpretObbModificationResults as Ne}from"./SceneLayerWorker.js";import{SceneLayerWorkerHandle as Pe,toWasmModification as Fe}from"./SceneLayerWorkerHandle.js";import{overrideColor as Ie}from"./graphics/graphicUtils.js";import{areLabelsVisible as Le}from"./graphics/Labeler.js";import Re from"./i3s/Highlights.js";import{I3SAsyncElevationUpdater as ze}from"./i3s/I3SAsyncElevationUpdater.js";import{getCachedAttributeValue as H}from"./i3s/I3SBinaryReader.js";import{I3SCrossfadeHelper as Be,NodeCrossfadeMetaData as Ve}from"./i3s/I3SCrossfadeHelper.js";import{boundingBoxCornerPoints as He}from"./i3s/I3SGeometryUtil.js";import{I3SIntersectionHandler as Ue,TraversedIntersectionNode as We}from"./i3s/I3SIntersectionHandler.js";import{getSupportedEncodings as Ge,selectEncoding as Ke,defaultMaterial as qe,createTexture as Je,configureMaterial as Ye}from"./i3s/I3SMaterialUtil.js";import{I3SOverrides as Xe}from"./i3s/I3SOverrides.js";import{computeGlobalTransformation as Ze}from"./i3s/I3SProjectionUtil.js";import{rendererNeedsTextures as Qe,checkSceneLayerValid as $e,checkSceneLayerCompatibleWithView as et,whenGraphicAttributes as tt,computeVisibilityObb as nt,filterInPlace as rt,intersectBoundingRectWithMbs as it,addWraparound as U,getSymbolInfo as at,transparentEdgeMaterial as W,getClipRect as ot}from"./i3s/I3SUtil.js";import{IDBCache as st}from"./i3s/IDBCache.js";import{IDBMockCache as ct}from"./i3s/IDBMockCache.js";import{LayerElevationProvider as lt}from"./i3s/LayerElevationProvider.js";import{SymbologyInfo as ut}from"./i3s/SymbologyInfo.js";import{attributeLookup as G}from"./support/attributeUtils.js";import{normalizeHighlightTarget as dt,emptyHighlightHandle as ft}from"./support/highlightUtils.js";import{makeScheduleFunction as pt}from"./support/makeScheduleFunction.js";import{debugFlags as K}from"../support/debugFlags.js";import{ElevationRange as q}from"../support/ElevationRange.js";import{toBoundingRect as mt}from"../support/extentUtils.js";import{Obb as J,ensurePackedObbData as ht}from"../support/orientedBoundingBox.js";import{updatingProgress as gt}from"../support/updatingProperties.js";import{glLayout as _t}from"../support/buffer/glUtil.js";import{ObjectParameters as vt}from"../webgl-engine/collections/Component/ObjectParameters.js";import{createVertexBufferLayout as yt,ComponentGeometryParameters as bt,SourceGeometry as xt,VertexBufferLayoutCreationParameters as St}from"../webgl-engine/collections/Component/SourceGeometry.js";import{Transform as Ct}from"../webgl-engine/collections/Component/Transform.js";import{emissiveStrengthDefault as Y}from"../webgl-engine/core/shaderLibrary/output/getEmissions.glsl.js";import{loadBasisTranscoder as wt}from"../webgl-engine/lib/BasisUtil.js";import{getHighlightName as Tt}from"../../support/highlightOptionsUtils.js";import{TextureCompressionTracker as Et}from"../../support/TextureCompressionTracker.js";import{alphaCutoff as Dt}from"../../../webscene/support/AlphaCutoff.js";const Ot=[1,1,1,1];class kt extends Ve{constructor(e,t,n,r,i,a,o,s,c,l,u){super(),this.node=e,this.featureIds=t,this.objectHandle=n,this.cachedRendererVersion=r,this.attributeInfo=i,this.material=a,this.textures=o,this.anchorIds=s,this.anchors=c,this._elevationAlignmentRange=new q,this._geometryElevationRange=new q,this.cachedElevationAnchors=null,this.cachedEdgeMaterials=[],this.edgeMemoryUsage=0,this.cachedSymbologyStride=5,this.elevationAlignmentOffset=0,this._baseGeometryElevationRange=new q(l,u),this.updateGeometryElevationRange()}get geometryElevationRange(){return this._geometryElevationRange}updateGeometryElevationRange(){let e=this._baseGeometryElevationRange;if(!e.elevationRangeValid||e.isEmpty){this._elevationAlignmentRange.invalidateElevationRange(),this._geometryElevationRange.invalidateElevationRange();return}let t=this.elevationOffsets;if(!t||t.length===0){let t=this.elevationAlignmentOffset;this._elevationAlignmentRange.setElevationRangeValues(t,t),this._geometryElevationRange.setElevationRangeValues(e.minElevation+t,e.maxElevation+t);return}let n=1/0,r=-1/0;for(let e=0;e<t.length;++e){let i=this.elevationAlignmentOffset+(t[e]??0);n=Math.min(n,i),r=Math.max(r,i)}this._elevationAlignmentRange.setElevationRangeValues(n,r),this._geometryElevationRange.setElevationRangeValues(e.minElevation+n,e.maxElevation+r)}get usedMemory(){return this.node.memory}get featureExtents(){return this._featureExtents??=new Float64Array(6*this.featureIds.length).fill(1/0),this._featureExtents}}const At=t=>{let g=t,F=class extends g{constructor(){super(...arguments),this._extractChanges=null,this._applySSAO=!0,this._imShading=!!has(`enable-feature:im-shading`),this._imVertexNormals=!!has(`enable-feature:im-vertex-normals`),this._updatingHandles=new fe,this._highlights=null,this._nodeId2Meta=new Map,this._nodeId2MetaReloading=new Map,this._i3sWasmLoaded=!1,this._snappingSourcesTrackers=[],this._compressionTracker=new Et,this._hasLoadedPBRTextures=!1,this._asyncModuleLoading=0,this._addTasks=new Map,this._currentRenderer=null,this._rendererVersion=0,this._colorVariable=null,this._opacityVariable=null,this._rendererFields=null,this._symbologyFields=null,this._symbologyOverride=null,this._symbologyOverrideFields=null,this._symbolInfos=new Map,this._visibleGeometryChangedSchedulerHandle=null,this._hasComponentData=!1,this._hasVertexColors=!1,this._nodeColorOverride=null,this.updating=!0,this.holeFilling=`auto`,this._hasColors=!1,this._hasTextures=!1,this._hasData=!1,this.slicePlaneEnabled=!1,this._modifications=[],this.ignoresMemoryFactor=!1,this._layerUrl=``,this._cacheKeySuffix=null,this._meshUtilsImporterModule=null,this._meshUtilsImporterPromise=null,this._planetRadiusInGlobalMode=0,this._elevationTask=null,this._needFilterResolve=!1,this._filters=[],this._arcade=null,this._tmpAttributeOnlyGraphic=new n,this._crossfadeHelper=new Be(this)}get lodCrossfadeoutDuration(){return 0}get lodCrossfadeinDuration(){return 0}get lodCrossfadeUncoveredDuration(){return 0}get extractChanges(){return this._extractChanges?.layer!==this.layer&&(this._extractChanges?.destroy(),this._extractChanges=new Se({layer:this.layer})),this._extractChanges}get layerViewUid(){return this.uid}get layerId(){return this.layer.id}get sublayerId(){return null}get _isIntegratedMesh(){return this.layer.type===`integrated-mesh`}get contentVisible(){return!this.suspended&&this._controller?.rootNodeVisible&&this.fullOpacity>Dt}get legendEnabled(){return this.contentVisible&&this.layer?.legendEnabled===!0}get updatingProgressValue(){return this._controller?.updatingProgress??0}get hasTexturesOrVertexColors(){return this._hasData?this._hasTextures||this._hasColors?`yes`:`probably-not`:`unknown`}get rendererTextureUsage(){return Qe(this._currentRenderer)?this._usePBR||this._hasLoadedPBRTextures?63:53:this._usePBR||this._hasLoadedPBRTextures?44:36}get elevationOffset(){let e=this.layer?.elevationInfo;return e?.mode===`absolute-height`?B(e,this.layer.spatialReference):0}get elevationInfo(){let e=this.layer?.elevationInfo;switch(e?.mode){case`absolute-height`:return new Z(0,B(e,this.layer.spatialReference));case`relative-to-ground`:return new Z(1,B(e,this.layer.spatialReference));case`on-the-ground`:return new Z(2,0);default:return new Z(0,0)}}get supportedTextureEncodings(){return Ge(this.view.stage.renderView.capabilities)}get clientGeometry(){return this.i3sOverrides.geometryOverrides}get elevationRange(){let e=this._nodeId2Meta,t=new q;for(let n of e.values()){let e=n?.geometryElevationRange;e?.elevationRangeValid&&!e.isEmpty&&t.expandElevationRange(e)}return t.elevationRangeValid&&!t.isEmpty?t:null}get fullExtent(){return this.layer.fullExtent}initialize(){let e=has(`enable-feature:idb-mock-cache`);this._idbCache=e?new ct(this.view,e):new st(`esri-scenelayer-cache`,`geometries`),this._preLoadBasis(),this.addResolvingPromise(this.layer.indexInfo);let t=this.view.resourceController,n=t.memoryController;this.i3sOverrides=new Xe({view:this.view,layer:this.layer,memoryController:n,extractChanges:this.extractChanges}),this._workerHandle=new Pe(pt(t)),this.addResolvingPromise(this._workerHandle.promise),$e(this.layer),et(this.layer,this.view);let r=this.layer.store.defaultGeometrySchema;if(this.addResolvingPromise(this._workerHandle.setLegacySchema(this.uid,r).catch(l)),this._layerUrl=this.layer.parsedUrl.path,this._controller=new be({layerView:this,worker:this._workerHandle}),this._gpuMemoryEstimate=0,this._texMemoryEstimate=0,this._geoMemoryEstimate=0,this._stage=this.view.stage,this._collection=this._stage.renderView.componentObjectCollection,this._isIntegratedMesh||!r)this._hasComponentData=!1;else{let e=r.featureAttributes;this._hasComponentData=!!(e&&e.faceRange&&e.id)}this._hasVertexColors=(r?.vertexAttributes.color??null)!=null&&!this.layer.cachedDrawingInfo?.color;let i=this.view.resourceController.memoryController.newCache(`sl-${this.uid}`,e=>this._deleteComponentObject(e));this._memCache=i;let o=this._controller,c=this._nodeId2Meta,u=this._nodeId2MetaReloading;function*d(e){let t=o.index;if(!t)return;let n=t.rootNode;if(!n)return;let r=null;for(let i of t.traverseValues(n,t=>(r=(c.get(t.index)||u.get(t.index))?.objectHandle??null,e(t,r))))yield new We(i,r)}this._intersectionHandler=new Ue({layerViewUid:this.layerViewUid,sublayerId:this.sublayerId,collection:this._collection,slicePlaneEnabled:this.slicePlaneEnabled,isGround:has(`enable-feature:im-as-ground`)?this.layer.isUsedAsGroundLayer:this._isIntegratedMesh,traverseNodeHierarchy:d}),this._elevationProvider=new lt({view:this.view,layerElevationSource:this,intersectionHandler:this._intersectionHandler}),this._hasLoadedPBRTextures=this._usePBR,this._updatingHandles.add(()=>this.view.clippingArea,()=>this._clippingAreaChanged(),f),this._updatingHandles.add(()=>this.fullOpacity,e=>this._opacityChange(e)),this._updatingHandles.add(()=>this.slicePlaneEnabled,e=>this._slicePlaneEnabledChange(e)),this._updatingHandles.add(()=>this.elevationOffset,(e,t)=>{this._reloadAll(t),this._controller.invalidateVisibilityObbs()}),this._updatingHandles.add(()=>this.elevationInfo,(e,t)=>this._elevationInfoChanged(e,t),f),this._updatingHandles.add(()=>!this.suspended&&this.elevationInfo.mode!==0,(e,t)=>{e?this.addHandles(this.view.groundView.on(`elevation-change`,({extent:e})=>this._ensureElevationTask().addExtent(e)),Gt):t&&this.removeHandles(Gt)},f),this._updatingHandles.add(()=>this._usePBR,e=>this._updatePBR(e)),this._updatingHandles.add(()=>this.rendererTextureUsage,()=>{this._reloadAll(),this.clearMemCache()}),this._updatingHandles.add(()=>this.contentVisible,e=>this._contentVisibleChanged(e),f),this._updatingHandles.add(()=>this.layer.labelsVisible,()=>this._labelingChanged(),f),this._updatingHandles.add(()=>this.layer.labelingInfo,()=>this._labelingChanged(),f),this._updatingHandles.add(()=>this._modifications,()=>this._modificationsChanged(),f),this.addHandles([p(()=>K.I3S_TREE_SHOW_TILES,e=>{if(e&&!this._treeDebugger){let e=this._controller.crsIndex;import(`./support/I3STreeDebugger.js`).then(({I3STreeDebugger:t})=>{!this._treeDebugger&&K.I3S_TREE_SHOW_TILES&&(this._treeDebugger=new t({lv:this,view:this.view,nodeSR:e}))})}else!e&&!K.I3S_TREE_SHOW_TILES&&(this._treeDebugger=s(this._treeDebugger))},f),p(()=>K.I3S_SHOW_MODIFICATIONS,()=>this._showModifications(),f)]),this._cacheKeySuffix=this._getCacheKeySuffix(),this._idbCache.init().catch(e=>a.getLogger(this).warn(`Failed to initialize IndexedDB cache: ${e}`));let{view:m}=this,{viewingMode:h,renderCoordsHelper:g}=m;this._planetRadiusInGlobalMode=h===`local`?0:g.referenceEllipsoid.radius}destroy(){this._clearAddTasks(),this._elevationTask=s(this._elevationTask),this.i3sOverrides=s(this.i3sOverrides),this._extractChanges=s(this._extractChanges),this._elevationProvider&&=(this._elevationProvider.notifyObjectsChanged(this.getVisibleObbs()),this.view.elevationProvider.unregister(this._elevationProvider),null),this._intersectionHandler&&=(this._stage.view.sceneIntersectionHelper.removeIntersectionHandler(this._intersectionHandler),null);let e=this._workerHandle;e&&(e.destroyContextAndSelf(this.uid),this._workerHandle=null),this._removeAllNodeDataFromStage(),this._memCache=s(this._memCache),this._collection=null,this._stage=null,this._edgeView=null,this._labeler=s(this._labeler),this._treeDebugger=s(this._treeDebugger),this._controller=s(this._controller),this._highlights=s(this._highlights),this._nodeId2Meta.clear(),this._nodeId2MetaReloading.clear(),this._crossfadeHelper=s(this._crossfadeHelper),this.emit(`visible-geometry-changed`),this._visibleGeometryChangedSchedulerHandle&&=(this._visibleGeometryChangedSchedulerHandle.remove(),null),this._updatingHandles=s(this._updatingHandles)}_memEstimateTextureAdded(e){let t=e.usedMemory;return this._gpuMemoryEstimate+=t,this._texMemoryEstimate+=t,t}_memEstimateTextureRemoved(e){if(e!=null){let t=e.usedMemory;this._gpuMemoryEstimate-=t,this._texMemoryEstimate-=t}}_memEstimateGeometryAdded(e){let t=this._collection.getObjectGPUMemoryUsage(e);return this._gpuMemoryEstimate+=t,this._geoMemoryEstimate+=t,t}_memEstimateGeometryRemoved(e){let t=this._collection.getObjectGPUMemoryUsage(e);this._gpuMemoryEstimate-=t,this._geoMemoryEstimate-=t}isNodeLoaded(e){return this._nodeId2Meta.has(e)}isNodeReloading(e){return this._nodeId2MetaReloading.has(e)}get usedMemory(){let e=this._labeler==null?0:this._labeler.usedMemory;return this._nodeId2Meta.forEach(t=>e+=t==null?0:t.node.memory),this._nodeId2MetaReloading.forEach(t=>e+=t==null?0:t.node.memory),e}get unloadedMemory(){return(this._controller==null?0:this._controller.unloadedMemoryEstimate)+(this._labeler==null?0:this._labeler.unloadedMemoryEstimate)}_labelingChanged(){if(!(Le(this.layer)&&this._supportsLabeling)){this._labeler!=null&&(this._labeler.destroy(),this._labeler=null);return}if(this._labeler!=null)return;let e=new Oe({view:this.view,layer:this.layer,collection:this._collection,overrides:this.i3sOverrides,layerViewUid:this.uid});this._nodeId2Meta.forEach(t=>t!=null&&this._addMetaToLabeler(e,t)),this._labeler=e}_loadAsyncModule(e){return++this._asyncModuleLoading,e.then(e=>(--this._asyncModuleLoading,e),e=>{throw--this._asyncModuleLoading,e})}_modificationsChanged(){if(!this._i3sWasmLoaded&&this.hasModifications){this._i3sWasmLoaded=Ae().then(()=>{this._i3sWasmLoaded=!0,this._modificationsChanged(),this.notifyUpdate()},()=>{}),this.notifyUpdate();return}if(this._i3sWasmLoaded!==!0)return;let e=e=>a.getLogger(this).error(`set-modifications-error`,`Error when setting modifications:`,e),t=this.uid,n=this.layer.spatialReference,r=n.isGeographic,i=Fe(this._layerClippingArea,this._modifications,n,this.view.state.isGlobal);this._workerHandle.setModifications(t,i,r).catch(e);try{je({context:t,modifications:i,isGeodetic:r})}catch(t){e(t)}this._controller.modificationsChanged();let o=this.hasModifications?new c:null;this._nodeId2Meta.forEach((e,t)=>{e==null?(this._nodeId2Meta.delete(t),this._controller.updateLoadStatus(t,!1)):e.node.hasModifications?(this._updateFeatureIdCounts(e,-1),this._nodeId2Meta.delete(t),this._nodeId2MetaReloading.set(t,e)):o?.push(e.node)}),this.notifyChange(`elevationRange`),o!=null&&this._nodeId2MetaReloading.forEach(e=>o.push(e.node)),o!=null&&o.length>0&&(this.updateNodeModificationStatus(o),o.forAll(e=>{if(e.imModificationImpact!==2){let t=this._nodeId2Meta.get(e.index);this._controller.invalidateGeometryVisibility(e.index),t==null?this._nodeId2Meta.has(e.index)&&(this._nodeId2Meta.delete(e.index),this._controller.updateLoadStatus(e.index,!1)):(this._updateFeatureIdCounts(t,-1),this._nodeId2Meta.delete(e.index),this._nodeId2MetaReloading.set(e.index,t),this.notifyChange(`elevationRange`))}})),this.clearMemCache(),this._controller.restartNodeLoading(),this._showModifications()}_showModifications(){if(this._modificationGraphics!=null&&(this.view.graphics.removeMany(this._modificationGraphics),this._modificationGraphics=null),!K.I3S_SHOW_MODIFICATIONS||this._modifications.length===0)return;let e={clip:[227,227,79,.8],mask:[227,139,79,.8],replace:[139,227,79,.8]},t={outline:{color:[255,255,255],width:1}};this._modificationGraphics=[];for(let r of this._modifications){let i=r.geometry;i.spatialReference=this.layer.spatialReference;let a=new Ee({...t,color:e[r.type]});this._modificationGraphics.push(new n({geometry:i,symbol:a}))}this.view.graphics.addMany(this._modificationGraphics)}_addMetaToLabeler(e,t){e.addNodeMeta(t,(e,t)=>this._createAttributes(e,t))}_contentVisibleChanged(e){e?(this.view.elevationProvider.register(this._elevationContext,this._elevationProvider),this._stage.view.sceneIntersectionHelper.addIntersectionHandler(this._intersectionHandler)):(this._removeAllNodeDataFromStage(),this.view.elevationProvider&&this.view.elevationProvider.unregister(this._elevationProvider),this._stage.view.sceneIntersectionHelper.removeIntersectionHandler(this._intersectionHandler))}getLoadedAttributes(e){let t=this._nodeId2Meta.get(e);if(t?.attributeInfo!=null)return t.attributeInfo.loadedAttributes}getAttributeData(e){let t=this._nodeId2Meta.get(e);if(t?.attributeInfo!=null)return t.attributeInfo.attributeData}setAttributeData(e,t){let n=this._nodeId2Meta.get(e);n?.attributeInfo!=null&&(n.attributeInfo.attributeData=t,this._attributeValuesChanged(n))}async updateAttributes(e,t,n){let r=this._nodeId2Meta.get(e);r!=null&&(await this.i3sOverrides.applyAttributeOverrides(r.featureIds,t,n,this._controller.requiredAttributes),r.attributeInfo=t,this._controller.reschedule(()=>{this._nodeId2Meta.get(e)===r&&this._attributeValuesChanged(r)},n).catch(e=>{u(e)||a.getLogger(this).warn(`Error while updating attribute values. Layer might not display correctly.`,e)}))}_attributeValuesChanged(e){e.cachedRendererVersion=this._getInvalidRendererVersion(),e.appliedFilters=null,this._labeler!=null&&this._labeler.setNodeMetaAttributes(e,(e,t)=>this._createAttributes(e,t)),this._updateEngineObject(e)}clearMemCache(){this._memCache!=null&&this._memCache.clear(),this._addTasks.forEach(e=>e.allowMemCache=!1)}getVisibleNodes(){let e=[];return this._nodeId2Meta.forEach(t=>t!=null&&e.push(t.node)),e}getVisibleObbs(){let e=[];return this._nodeId2Meta.forEach(t=>t&&e.push(this._collection.getComponentObb(t.objectHandle))),e}getLoadedNodeIndices(e){this._nodeId2Meta.forEach((t,n)=>e.push(n)),this._nodeId2MetaReloading.forEach((t,n)=>e.push(n))}_preLoadBasis(){!has(`disable-feature:i3s-basis`)&&this.supportedTextureEncodings&2&&this.layer.textureSetDefinitions?.some(e=>e.formats.some(e=>e.format===`basis`||e.format===`ktx2`))&&wt()}_getVertexBufferLayout(e,t){return _t(yt(this._getGeometryParameters({hasTexture:Lt(e.params.material),hasNormals:t.normal,hasRegions:t.uvRegion})))}_getObjectIdField(){return this.layer.objectIdField||L}_getGlobalIdField(){return this.layer.globalIdField}_findGraphicNodeAndIndex(e){let t=G(this.layer.fieldsIndex,e.attributes,this._getObjectIdField());for(let e of this._nodeId2Meta.values()){let n=e?.featureIds.indexOf(t);if(n!=null&&n>=0)return{node:e.node,index:n}}return null}_getGraphicIndices(e,t){let n=this._nodeId2Meta.get(e.index);if(n==null)return[];let r=[],i=this._getObjectIdField(),a=this.layer.fieldsIndex;for(let e of t){let t=G(a,e.attributes,i),o=n.featureIds.indexOf(t);o!==-1&&r.push(o)}return r}whenGraphicBounds(e){let t=this._findGraphicNodeAndIndex(e);if(!t)return Promise.reject();let n=this.getAABB(t.node.index,t.index);return n==null?Promise.reject():Promise.resolve({boundingBox:n,screenSpaceObjects:[]})}getAABBFromIntersectorTarget(e){return e.nodeIndex==null||e.componentIndex==null?null:this.getAABB(e.nodeIndex,e.componentIndex)}getAABB(e,t){let n=this._nodeId2Meta.get(e);if(n?.featureIds==null||t>=n.featureIds.length)return null;let r=n.objectHandle,i=He(t,this._collection,r,N(24),0),a=this.view.renderSpatialReference,o=this.view.spatialReference;return he(i,a,0,i,o,0)?_e(i):null}whenGraphicAttributes(e,t){return tt(this.layer,e,this._getObjectIdField(),t,()=>this._nodeId2Meta.values().filter(i).toArray())}getGraphicFromIntersectorTarget(e,t){if(e.nodeIndex==null||e.componentIndex==null)return null;let n=this._nodeId2Meta.get(e.nodeIndex);if(n?.featureIds==null||e.componentIndex>=n.featureIds.length)return null;let r=this._createLayerGraphic(this._createAttributes(e.componentIndex,n));return r?this._meshUtilsImporterModule?(r.geometry=this._meshUtilsImporterModule.createMesh({layerView:this,nodeIndex:e.nodeIndex,featureIndex:e.componentIndex}),r):t.defer?(t.defer(async()=>(r.geometry=(await this._meshUtilsImporter).createMesh({layerView:this,nodeIndex:e.nodeIndex,featureIndex:e.componentIndex}),r)),null):r:null}_getCacheKey(e){return`${this._layerUrl}/v30/${e}${this._cacheKeySuffix}`}get _meshUtilsImporter(){return this._meshUtilsImporterPromise||(this._meshUtilsImporterPromise=import(`./i3s/meshUtils.js`),this._meshUtilsImporterPromise.then(e=>this._meshUtilsImporterModule=e,()=>{})),this._meshUtilsImporterPromise}_getCacheKeySuffix(){let e=this.view.renderSpatialReference;return e==null?qt:e===D(e)?Jt:this.layer.spatialReference.equals(e)?Kt:e.wkid==null?null:`@${e.wkid}`}_getMemCacheKey(e,t=this.elevationOffset){return e+`#`+t}get _idbCacheEnabled(){return!this._controller.disableIDBCache&&!this.hasModifications&&this.elevationOffset===0&&this._cacheKeySuffix!=null}loadCachedGPUData(e){return this._memCache==null?null:this._memCache.pop(this._getMemCacheKey(e))}deleteCachedGPUData(e){e!=null&&this._deleteComponentObject(e)}_cacheGPUData(e,t=this.elevationOffset){if(this._memCache==null){this._deleteComponentObject(e);return}let n=this._controller.indexDepth-e.node.level;this._memCache.put(this._getMemCacheKey(e.node.index,t),e,n)}loadMissingTextures(e,t,n,r){let i=e?.filter((e,n)=>{if((e.usage&this.rendererTextureUsage)===0)return!1;if(t==null)return!0;let r=Ke(e.encodings,this.supportedTextureEncodings),i=t[n];return!!(i?.data==null||r&&i.encoding!==r.encoding)})??[];return i.length===0?Promise.resolve(!1):n(i,r).then(n=>{let r=0;for(let i=0;i<e.length;i++)r<n.length&&n[r].id===e[i].id&&(t[i]=n[r],r++);return!0})}loadCachedNodeData(e,t,n){return this._idbCacheEnabled?this._idbCache.get(this._getCacheKey(e.id),t).then(r=>r==null?null:(r.globalTrafo=P(r.globalTrafo),r.nodeVersion===e.version?(this.elevationInfo.mode===0&&(e.geometryObbInRenderSR=J.fromData(r.geometryObbData)),this.loadMissingTextures(r.requiredTextures,r.textureData,n,t).then(n=>(n&&this._idbCache.initialized&&r.textureData!=null&&(r.byteSize=Bt(r.transformedGeometry,r.textureData),r.textureData.every(zt)&&this._indexedDbSizeCheck(e,r)&&this._idbCache.put(this._getCacheKey(e.id),r).catch(t=>a.getLogger(this).warn(`Failed to update node with textures in IndexedDB cache: ${e.id}: ${t}`))),d(t),r))):(this._idbCache.remove(this._getCacheKey(e.id)),null))):Promise.resolve(null)}addNode(e,t,n){return Rt(t)?t.geometryBuffer==null?(this._addNodeMeta(e.index,null),Promise.resolve()):this._addData(e,t.attributeDataInfo,()=>this._transformNode(e,t,n).then(r=>this._safeReschedule(()=>{if(r==null)return e.hasModifications=!1,this._addCachedNodeData(e,null,n);let{obb:i,componentOffsets:o,featureIds:s,anchorIds:c,anchors:l,transformedGeometry:u,geometryMinElevation:d,geometryMaxElevation:f}=r;e.hasModifications=u.hasModifications;let p=P(r.globalTrafo),m=x(Ut,i.center.x,i.center.y,i.center.z);S(m,m,p);let h=new J(m,[i.extents.x,i.extents.y,i.extents.z],se(i.orientation.x,i.orientation.y,i.orientation.z,i.orientation.w));this.elevationInfo.mode===0&&(e.geometryObbInRenderSR=h),t.geometryData.componentOffsets=o,s&&(t.geometryData.featureIds=Array.from(s)),t.geometryData.anchorIds=c,t.geometryData.anchors=l;let g={nodeVersion:e.version,geometryData:t.geometryData,requiredTextures:t.requiredTextures,textureData:t.textureData,transformedGeometry:u,globalTrafo:p,geometryObbData:h.data,geometryMinElevation:d,geometryMaxElevation:f,byteSize:Bt(u,t.textureData)};if(this._idbCacheEnabled&&this._idbCache.initialized&&this._indexedDbSizeCheck(e,g)){let t=g.textureData==null?null:g.textureData.map(e=>zt(e)?e:null);this._idbCache.put(this._getCacheKey(e.id),{...g,textureData:t}).catch(t=>a.getLogger(this).warn(`Failed to store node in IndexedDB cache: ${e.id}: ${t}`))}return this._addCachedNodeData(e,g,n)},n))):Promise.reject()}getElevationRange(e){let t=new q,n=this._controller,{index:r}=n;if(!r)return t;let{rootNode:i}=r;if(!i)return t;let a=this._nodeId2Meta,o=n.viewportQueries;return r.traverse(i,n=>{let{childrenLoaded:r}=n;if(r===0)return!1;let i=o.getAndUpdateVisibilityObbInRenderSR(n),s=null;if(i){if(!i.intersectSphereWithMBS(e,i.radius))return!1}else if(s=o.calculateServiceMbsInRenderSRElevationAdjusted(n),s?.isValid&&!e.intersects(s))return!1;let c=a.get(n.index);if(c){let{geometryObbInRenderSR:r}=n;if(!r||r.intersectSphereWithMBS(e)){let e=c.geometryElevationRange;e.elevationRangeValid&&!e.isEmpty&&t.expandElevationRange(e)}}return r-+!!c>0}),t}computeVisibilityObb(e){return nt(e,this.view.renderSpatialReference,this._controller.crsIndex,this.layer.spatialReference,this.elevationOffset,this._modifications,this.view.renderCoordsHelper.sphericalPCPF)}_transformNode(e,t,n){let r=t.geometryData.geometries??[],i=Array(r.length);for(let e=0;e<r.length;++e)i[e]=this._getVertexBufferLayout(r[e],t.geometryDescriptor);let a=this.layer.normalReferenceFrame,o=t.normalReferenceFrame??a??`none`,s=e.serviceMbsInIndexSR,c=this.elevationOffset,l=this._controller.crsIndex,u=this._controller.crsVertex,d=this.view.renderSpatialReference,f=Ze(s,c,o,l,d),p=ge(l,u),m=ge(u,d);if(p==null||m==null)return Promise.resolve(null);let h={context:this.uid,geometryBuffer:t.geometryBuffer,geometryData:t.geometryData,geometryDescriptor:t.geometryDescriptor,layouts:i,globalTrafo:f,geometryElevationOffset:c,mbs:s.toJSON(),obbData:e.serviceObbInIndexSR?.data,elevationOffset:c,planetRadiusInGlobalMode:this._planetRadiusInGlobalMode,needNormals:this._controller.isMeshPyramid||this._imVertexNormals,computeNormals:this._isIntegratedMesh&&this._imVertexNormals,normalReferenceFrame:o,indexToVertexProjector:p,vertexToRenderProjector:m};return this._workerHandle.invoke(h,n)}get _supportsNodeCrossFading(){return!this.view?.stage?.renderer.shadowsEnabled}get nodeCrossfadingEnabled(){return this._supportsNodeCrossFading&&(this.lodCrossfadeinDuration>0||this.lodCrossfadeoutDuration>0||this.lodCrossfadeUncoveredDuration>0)}get nodeFadeoutEnabled(){return this._supportsNodeCrossFading&&this.lodCrossfadeoutDuration>0}_setNewNodeOpacity(e){let t=this.nodeCrossfadingEnabled?0:this.fullOpacity;this._setNodeOpacity(e,t)}addCachedGPUData(e,t,n){if(this.elevationInfo.mode===0&&(e.geometryObbInRenderSR=this._collection.getComponentObb(t.objectHandle).clone()),!this._controller.isGeometryVisible(e)){this._cacheGPUData(t);return}let r=e.index;this._addNodeMeta(r,t),this.updateNodeState(r,n),this._collection.setObjectVisibility(t.objectHandle,!0),this._updateElevationOffsets(t),this._labeler!=null&&this._addMetaToLabeler(this._labeler,t),this._updateMaterial(t),this._setNewNodeOpacity(t),this.elevationInfo.mode!==0&&this._ensureElevationTask().schedule(r),this._updateEngineObject(t),this._highlights?.objectCreated(t),this._treeDebugger!=null&&this._treeDebugger.update()}addCachedNodeData(e,t,n,r){return this._addData(e,n,()=>this._addCachedNodeData(e,t,r))}async deleteCachedNodeData(e){if(this._idbCacheEnabled)return this._idbCache.remove(this._getCacheKey(e))}async _addCachedNodeData(e,t,n){if(!this.contentVisible||!this._controller.isGeometryVisible(e)){this._removeNodeStageData(e.index,this.elevationOffset,this._nodeId2MetaReloading);return}if(t==null){this._addNodeMeta(e.index,null);return}let r=this._addTasks.get(e.index),{geometryData:i,transformedGeometry:o}=t;await this.i3sOverrides.applyAttributeOverrides(i.featureIds,r.attributeInfo,n,this._controller.requiredAttributes);let s=t.textureData==null?[]:t.textureData.filter(e=>e!=null&&(e.usage&this.rendererTextureUsage)!==0);!has(`disable-feature:i3s-basis`)&&s.some(e=>e!=null&&(e.encoding===2||e.encoding===1))&&await wt(),e.memory=0;let{componentOffsets:c,geometries:l,featureIds:u,anchorIds:d,anchors:f}=i,p=this._collection,m=l[0],{layout:h,indices:g,interleavedVertexData:_,positionData:v,hasColors:se}=o,{material:x,geometryParameters:S}=this._materialParameters(m,h),C=_.byteLength/h[0].stride,ue=c||new Uint32Array([0,g?g.length:C]),w=m.transformation?ae(m.transformation):oe(),E=P(t.globalTrafo);re(w,E,w);let fe=ie(T(),w),D=y(te(),w),me=this._isIntegratedMesh?this._imShading?2:0:1,he=S.textureCoordinateType,ge=!b(D,ne),k=new bt(h,me,he,+!!ge),_e=new xt({interleavedVertexData:_,vertexCount:C,indexData:g},{positions:ve(v.data),indices:ye(v.indices)},ue,k),A=this.view.renderSpatialReference,j=this.view.groundView.spatialReference,M=J.fromData(ht(t.geometryObbData)).getCenter(Zt),N=[1,1,1];pe(M,A,N,j)||a.getLogger(this).errorOnce(`Unsupported coordinate system for IM overlay`);let F=T();O(M,A,F,j);let I=te();ee(I,D);let L=T();ce(L,le(L,M,fe),I);let be=F[0]-L[0]*N[0],xe=F[1]-L[1]*N[1],Se=S.textureCoordinateType===2,{textures:R,texturePromise:Ce,materialParameters:we}=this._initMaterialAndTextures(x,s,Se,e),z=p.createObject(new vt(de(be,xe,N[0],N[1]),new Ct(fe,D),J.fromData(ht(t.geometryObbData)),_e,has(`enable-feature:im-as-ground`)?!this.layer.isUsedAsGroundLayer:!this._isIntegratedMesh),we);e.memory+=this._memEstimateGeometryAdded(z),e.memory+=R.reduce((e,t)=>e+(t==null?0:this._memEstimateTextureAdded(t)),0);let B=!!x.hasParametersFromSource,Te=x.alphaMode!==`blend`&&x.metallicRoughness.baseColorFactor[3]>=1,V=new kt(e,u,z,this._getInvalidRendererVersion(),r.attributeInfo,{hasParametersFromSource:B,isOpaque:Te},R,d,f,t.geometryMinElevation,t.geometryMaxElevation);r.meta=V,this._hasTextures||=t.requiredTextures?.some(({usage:e})=>!!(e&19))||!!e.resources.texture,this._hasData=!0,this._hasColors||=se,this.notifyChange(`hasTexturesOrVertexColors`);let Ee=this.slicePlaneEnabled;return Promise.all([this._addOrUpdateEdgeRendering(V),Ce]).then(([t,r])=>(this._addTasks.has(e.index)&&t?.updateObjectVisibility(V.objectHandle,!1).catch(e=>this._logEdgeViewError(e,this.layer.title)),this._safeReschedule(()=>{let n=this._addTasks.get(e.index);if(!n)return;if(this._addNodeMeta(e.index,V),n.meta=null,!this.contentVisible){this._removeNodeStageData(e.index,this.elevationOffset);return}p.setObjectVisibility(z,!0),t?.updateObjectVisibility(V.objectHandle,!0).catch(e=>this._logEdgeViewError(e,this.layer.title)),V.attributeInfo=n.attributeInfo;let r=V.cachedRendererVersion!==this._rendererVersion,i=Ee!==this.slicePlaneEnabled;this._updateElevationOffsets(V);let a=V.elevationOffsets;this._updateComponentData(V);let o=this._applyFiltersToNode(V);(r||t!=null&&(i||o||a))&&this._addOrUpdateEdgeRendering(V).catch(()=>{}),this._labeler!=null&&this._addMetaToLabeler(this._labeler,V),this._visibleGeometryChanged(V,0),this._highlights?.objectCreated(V),this._updateMaterial(V),this._setNewNodeOpacity(V),this._treeDebugger!=null&&this._treeDebugger.update()},n))).catch(e=>{let{meta:t,allowMemCache:n}=r;throw r.meta=null,t&&n?this._cacheGPUData(t):t&&this._deleteComponentObject(t),e})}_addNodeMeta(e,t){if(this._removeNodeStageData(e,this.elevationOffset,this._nodeId2MetaReloading),this._nodeId2Meta.has(e)){a.getLogger(this).error(`Removing duplicated node`);let t=this._nodeId2Meta.get(e);t&&(this._deleteComponentObject(t),this._updateFeatureIdCounts(t,-1))}else this._controller.updateLoadStatus(e,!0);t&&(t.lodCrossfadeProgress=null,this.nodeCrossfadingEnabled&&X(t.cachedEdgeMaterials,0),this._updateFeatureIdCounts(t,1)),this._nodeId2Meta.set(e,t),this.notifyChange(`elevationRange`)}_updateElevationOffsets(e){if(!e.node.serviceMbsInIndexSR)return;let{view:t,elevationInfo:n}=this,r=this._controller.crsIndex,{groundView:i,groundSpatialReference:a,renderSpatialReference:o}=t,s=n.mode;if(s===0){e.elevationAlignmentOffset=n.offset,e.elevationOffsets=null,e.updateGeometryElevationRange(),this.notifyChange(`elevationRange`);return}if(e.elevationAlignmentOffset=0,o==null||a==null){e.elevationOffsets=null,e.updateGeometryElevationRange(),this.notifyChange(`elevationRange`);return}let c=this._collection.getObjectTransform(e.objectHandle);e.elevationOffsets=e.elevationOffsets??[];let l=Ut,u=Wt,d=s===2,f=this.view.renderCoordsHelper,p=e.featureIds.length,m=(()=>{if(e.cachedElevationAnchors)return e.cachedElevationAnchors;let t=N(p*3);e.cachedElevationAnchors=t;let{center:n}=e.node.serviceMbsInIndexSR;for(let i=0;i<p;i++){let s=i*3,d=e.anchorIds?.indexOf(i)??-1;if(e.anchors&&d>=0){x(l,e.anchors[d*3],e.anchors[d*3+1],e.anchors[d*3+2]),C(l,l,n),O(l,r,l,a),t[s]=l[0],t[s+1]=l[1],t[s+2]=f.getAltitude(l);continue}this._collection.getComponentAabb(e.objectHandle,i,u,!0),x(l,(u[0]+u[3])/2,(u[1]+u[4])/2,u[2]),ce(l,l,c.rotationScale),C(l,l,c.position),t[s+2]=f.getAltitude(l),O(l,o,l,a),t[s]=l[0],t[s+1]=l[1]}return t})(),h=n.offset,g=e.elevationOffsets;i.getElevations(m,p,(e,t)=>{let n=d?m[e*3+2]:0;g[e]=h+(t??0)-n}),e.updateGeometryElevationRange(),this.notifyChange(`elevationRange`)}_ensureElevationTask(){return this._elevationTask??=new ze(this.view.resourceController.scheduler,e=>this._controller.updateElevationChanged(e,this.view.groundView.spatialReference)?.filterInPlace(e=>this._nodeId2Meta.get(e)!=null),e=>this._nodeElevationAlignmentChanged(this._nodeId2Meta.get(e)),()=>this.elevationInfo?.mode),this._elevationTask}_elevationInfoChanged(e,t){let n=e.mode!==0,r=!!t&&t!==e&&t.mode!==0;this._intersectionHandler.updateElevationAlignState(n,this.view.state.viewingMode),n&&!r&&this._controller.removeAllGeometryObbs(),this._nodeId2Meta.forEach(e=>this._nodeElevationAlignmentChanged(e))}_nodeElevationAlignmentChanged(e){e!=null&&(this._updateElevationOffsets(e),this._updateComponentData(e),this._updateEdgeRendering(e),this._labeler!=null&&this._labeler.updateLabelPositions(e),this._updateSnappingSources(e,2),this._elevationProvider.notifyObjectChanged(this._collection.getComponentObb(e.objectHandle)))}_safeReschedule(e,t){return d(t),this._controller.reschedule(e,t)}_materialParameters(e,t){let n=e.params.material==null?qe():e.params.material,r=t.some(({name:e})=>e===`uvRegion`),i=t.some(({name:e})=>e===`normalCompressed`),a=Lt(n);return{geometryParameters:this._getGeometryParameters({hasTexture:a,hasNormals:i,hasRegions:r}),material:n}}_initMaterialAndTextures(e,t,n,r){let i=this._stage.renderView,a=e=>{this._gpuMemoryEstimate-=e,this._texMemoryEstimate-=e,r.memory-=e},o=t.map(t=>Je(t,e,n,i,this._compressionTracker,a));this._stage.addTextures(o);let{materialParameters:s,texturePromise:c}=Ye(e,o,t,this.view.stage.renderView.textures,{rendererTextureUsage:this.rendererTextureUsage,usePBR:this._usePBR,isIntegratedMesh:this._isIntegratedMesh,isGround:this.layer.isUsedAsGroundLayer,slicePlaneEnabled:this.slicePlaneEnabled,viewSpatialReference:this.view.spatialReference,applySSAO:this._applySSAO});return{textures:o,texturePromise:c,materialParameters:s}}_getGeometryParameters(e){return new St(this._hasVertexColors,e.hasNormals,e.hasTexture?e.hasRegions?2:1:0)}_addData(e,t,n){let r=this._addTasks.get(e.index);if(r)r.attributeInfo=t;else{let i=Promise.withResolvers();r=new Ht(t,null,i.promise),this._addTasks.set(e.index,r),n().then(i.resolve,i.reject).then(()=>this._addTasks.delete(e.index)).catch(t=>{throw this._addTasks.delete(e.index),t})}return r.promise}_clearAddTasks(){this._addTasks.forEach(e=>{e.meta!=null&&(this._cacheGPUData(e.meta),e.meta=null)}),this._addTasks.clear()}_clippingAreaChanged(){let e=this.view.renderSpatialReference,t=this.layer.spatialReference,n=j();this._renderClippingArea=mt(this.view.clippingArea,n,e)?n:null;let r=j();this._layerClippingArea=mt(this.view.clippingArea,r,t)?r:null,this._filterChange(),this._controller&&this._controller.updateClippingArea(this.view.clippingArea),this._isIntegratedMesh&&this._modificationsChanged()}get hasGeometryFilter(){return!1}_geometryFilterChange(){let e=this.hasGeometryFilter;this._controller.geometryFilterChanged(e),this._applyFilters(e),this._assertFeatureIdNodeCounts(e)}_assertFeatureIdNodeCounts(e){e&&!this._featureIdCounts?(this._featureIdCounts=$(this._nodeId2Meta.values()),this._filteredIdCounts=$(this._nodeId2Meta.values(),1),this._weaklyRemovedIdCounts=$(this._nodeId2Meta.values(),2),this.addHandles(p(()=>this._controller.updating,e=>{!e&&this._needFilterResolve&&(this.multiGeometryFilterResolve(),this._needFilterResolve=!1,this.notifyUpdate())},{sync:!0}),`updateFinished`)):!e&&this._featureIdCounts&&(this._featureIdCounts=null,this._filteredIdCounts=null,this._weaklyRemovedIdCounts=null,this._mismatchShow=null,this._mismatchHide=null,this.removeHandles(`updateFinished`),this._needFilterResolve=!1,this.notifyUpdate())}_updateFeatureIdCounts(e,t){this._featureIdCounts&&(this._needFilterResolve=!0,Q(this._featureIdCounts,e.featureIds,t),Q(this._filteredIdCounts,e.filteredIds,t),Q(this._weaklyRemovedIdCounts,e.weaklyRemovedIds,t))}_updateFilteredIdCounts(e,t,n){this._filteredIdCounts&&(this._needFilterResolve=!0,Q(this._filteredIdCounts,t,-1),Q(this._filteredIdCounts,e.filteredIds,1),Q(this._weaklyRemovedIdCounts,n,-1),Q(this._weaklyRemovedIdCounts,e.weaklyRemovedIds,1))}_checkFeatureIdNodeCountInvariant(){let e=this._featureIdCounts!=null;if(this.hasGeometryFilter!==e&&a.getLogger(this).error(`checkFeatureIdNodeCountInvariant()`,`LayerView should have feature id node counts if and only if it has a geometry filter`,{layerView:this,hasNodeCounts:e}),!this._featureIdCounts||!this._filteredIdCounts)return;let t=$(this._nodeId2Meta.values());o(this._featureIdCounts,t)||a.getLogger(this).error(`checkFeatureIdNodeCountInvariant()`,`Incorrect _featureIdCounts`,{layerView:this,counts:this._featureIdCounts,expected:t});let n=$(this._nodeId2Meta.values(),1);o(this._filteredIdCounts,n)||a.getLogger(this).error(`checkFeatureIdNodeCountInvariant()`,`Incorrect _filteredIdCounts`,{layerView:this,counts:this._filteredIdCounts,expected:n});let r=$(this._nodeId2Meta.values(),2);o(this._weaklyRemovedIdCounts,r)||a.getLogger(this).error(`checkFeatureIdNodeCountInvariant()`,`Incorrect _weaklyRemovedIdCounts`,{layerView:this,counts:this._weaklyRemovedIdCounts,expected:n})}multiGeometryFilterResolve(){if(!this._featureIdCounts||!this._filteredIdCounts)return;let e=null,t=null;for(let[n,r]of this._filteredIdCounts){let i=this._featureIdCounts.get(n);i!==r&&(r+(this._weaklyRemovedIdCounts?.get(n)??0)===i?(e??=new Set,e.add(n)):(t??=new Set,t.add(n)))}h(e,this._mismatchShow)&&h(t,this._mismatchHide)||(this._mismatchShow=e,this._mismatchHide=t,this._nodeId2Meta.forEach(e=>{if(!e?.filteredIds)return;let t=Xt(e,this._mismatchShow,this._mismatchHide);this._collection.setAllComponentVisibilities(e.objectHandle,t),this._visibleGeometryChanged(e,2)}))}_filterChange(){this._applyFilters(this.hasGeometryFilter)}_applyFilters(e){this._filters=this.getFilters(),e?this._controller&&this._controller.requestUpdate():this._nodeId2Meta.forEach(e=>{e&&this._applyFiltersToNode(e)&&(this._addOrUpdateEdgeRendering(e).catch(()=>{}),this._visibleGeometryChanged(e,2))})}getFilters(){let e=[],t=this._renderClippingArea;return t!=null&&e.push((e,n)=>this._boundingRectFilter(e,n,t)),e}addSqlFilter(e,t,n){if(t!=null){let r=t.fieldNames;e.push((e,i)=>this._sqlFilter(e,i,t,r,n))}}_sqlFilter(e,t,n,r,i){let a={},o=this._createLayerGraphic(a);if(!o)return;let s=this.layer.objectIdField,c=t.featureIds,l=t.attributeInfo?.attributeData;r.every(e=>e===s||l?.[e]!=null)&&rt(e,c,e=>{a[s]=c[e];for(let t of r)t!==s&&(a[t]=l?H(l[t],e):null);try{return n.testFeature(o)}catch(e){return i(e),!1}})}_boundingRectNodeTest(e,t){return me(e.node.serviceMbsInIndexSR,this._controller.crsIndex,It,this.view.renderSpatialReference),it(t,It)}_boundingRectFeatureTest(e,t,n){return this._collection.getComponentAabb(e.objectHandle,t,jt),A(jt,Mt),M(n,Mt)}_boundingRectFilter(e,t,n){let r=this._collection,i=this._boundingRectNodeTest(t,n);if(i===3)return;if(i===0){e.length=0;return}let a=r.getComponentCount(t.objectHandle);if(a.invisible+a.visible!==t.featureIds.length)return;let o=this._transformClippingArea(Nt,n,t.objectHandle);rt(e,t.featureIds,e=>this._boundingRectFeatureTest(t,e,o))}_transformClippingArea(e,t,n){let r=this._collection.getObjectTransform(n),i=r.position,a=r.rotationScale;return e[0]=(t[0]-i[0])/a[0],e[1]=(t[1]-i[1])/a[4],e[2]=(t[2]-i[0])/a[0],e[3]=(t[3]-i[1])/a[4],e}async _addOrUpdateEdgeRendering(e,t=!0){let n=e.objectHandle,{hasEdges:r,perFeatureEdgeMaterials:i}=this._getFilteredEdgeMaterials(e);if(r&&!this._edgeView)try{this._edgeView=await this._stage.renderer.loadEdgeView()}catch(e){if(!u(e))throw e}let a=this._edgeView;if(!a)return null;let o=a.hasObject(n);if(r){if(o)return this.nodeCrossfadingEnabled&&X(i,this.getNodeOpacity(e)),a.updateAllComponentMaterials(n,i,this.slicePlaneEnabled,t).catch(e=>this._logEdgeViewError(e,this.layer.title)),a.updateObjectVisibility(n,!0).catch(e=>this._logEdgeViewError(e,this.layer.title)),a.updateAllVerticalOffsets(n,e.elevationOffsets).catch(e=>this._logEdgeViewError(e,this.layer.title)),a;let r=await this._collection.addEdges(n,a,i,this.slicePlaneEnabled,e.elevationOffsets);return e.edgeMemoryUsage=r,e.node.memory+=r,a}return o&&(e.node.memory-=e.edgeMemoryUsage,e.edgeMemoryUsage=0,a.removeObject(n)),null}_applyFiltersToNode(e){let{filteredIds:t,weaklyRemovedIds:n}=e,r=this._applyFiltersToNodeComponents(e);return this._updateFilteredIdCounts(e,t,n),r&&this._labeler?.applyFilterChange(e),r}_applyFiltersToNodeComponents(e){let t=this._collection,n=t.getComponentCount(e.objectHandle),r=e.filteredIds!=null,i=n.invisible===0;if(t.setAllComponentVisibilities(e.objectHandle,`all`),this._filters.length===0)return e.filteredIds=null,!i;if((e.filteredIds==null||e.appliedFilters!==this._filters)&&(e.weaklyRemovedIds=null,e.filteredIds=Yt(e,this._filters),e.appliedFilters=this._filters),r&&e.filteredIds===e.featureIds&&(!this._mismatchHide||e.filteredIds.every(e=>!this._mismatchHide?.has(e))))return!i;let a=Xt(e,this._mismatchShow,this._mismatchHide);return t.setAllComponentVisibilities(e.objectHandle,a),!0}_removeAllNodeDataFromStage(e=this.elevationOffset){this._nodeId2Meta.forEach((t,n)=>this._removeNodeStageData(n,e)),this._nodeId2MetaReloading.forEach((t,n)=>this._removeNodeStageData(n,e,this._nodeId2MetaReloading)),this._elevationTask=s(this._elevationTask)}removeNode(e){let t=this.elevationOffset;this._removeNodeStageData(e,t),this._removeNodeStageData(e,t,this._nodeId2MetaReloading),this._elevationTask!=null&&this._elevationTask.remove(e)}_removeNodeStageData(e,t,n=this._nodeId2Meta){n.has(e)&&this._controller.updateLoadStatus(e,!1);let r=n.get(e);if(r==null){n.delete(e);return}this._collection.setObjectVisibility(r.objectHandle,!1),this._edgeView!=null&&this._edgeView.hasObject(r.objectHandle)&&this._edgeView.updateObjectVisibility(r.objectHandle,!1).catch(e=>this._logEdgeViewError(e,this.layer.title)),this._visibleGeometryChanged(r,1),this._labeler!=null&&this._labeler.removeNodeMeta(r),n.delete(e),this._highlights?.objectDeleted(r),n===this._nodeId2Meta?(this._updateFeatureIdCounts(r,-1),this._cacheGPUData(r,t),this.nodeCrossfadingEnabled&&this._crossfadeHelper.stopNodeFading(r)):this._deleteComponentObject(r),this._treeDebugger!=null&&this._treeDebugger.update()}_deleteComponentObject(e){if(this._edgeView!=null&&this._edgeView.removeObject(e.objectHandle),this._memEstimateGeometryRemoved(e.objectHandle),this._collection.destroyObject(e.objectHandle),e.textures)for(let t of e.textures)this._memEstimateTextureRemoved(t),this._stage.removeTexture(t)}updateNodeState(e,t){this._nodeId2Meta.get(e)?.objectHandle.updateMaterial({polygonOffset:+(t===0)})}updateNodeIndex(e,t){if(this._nodeId2Meta.has(e)){let n=this._nodeId2Meta.get(e);this._nodeId2Meta.delete(e),this._nodeId2Meta.set(t,n),this.notifyChange(`elevationRange`)}let n=this._nodeId2MetaReloading.get(e);n&&(this._nodeId2MetaReloading.delete(e),this._nodeId2MetaReloading.set(t,n))}_invalidateAllSymbols(){this._rendererVersion=U(this._rendererVersion,1),this._controller?.requestUpdate()}_getInvalidRendererVersion(){return U(this._rendererVersion,-1)}async _rendererChange(e){if(this._currentRenderer=e,this.notifyChange(`rendererTextureUsage`),this._rendererVersion=U(this._rendererVersion,1),this._rendererFields=null,this._colorVariable=null,this._opacityVariable=null,this._invalidateAllSymbols(),e&&(this._rendererFields=await e.getRequiredFields(this.layer.fieldsIndex)),this._updateSymbologyFields(),!this._arcade&&e&&`arcadeRequired`in e&&e.arcadeRequired&&(this._arcade=await Te()),e&&`visualVariables`in e&&e.visualVariables)for(let t of e.visualVariables)t.type===`color`?this._colorVariable=t:t.type===`opacity`?this._opacityVariable=t:a.getLogger(this).warn(`Unsupported visual variable type for 3D Object Scene Services: ${t.type}`);if(e)for(let t of e.symbols)t.type!==`mesh-3d`&&a.getLogger(this).error(`Symbols of type '${t.type}' are not supported for 3D Object Scene Services.`);this._controller&&this._controller.requestUpdate()}_getCachedEdgeMaterials(e){return this._hasComponentData&&e.cachedRendererVersion!==this._rendererVersion&&this._updateCachedRendererData(e),e.cachedEdgeMaterials}_getComponentParameters(e){this._hasComponentData&&e.cachedRendererVersion!==this._rendererVersion&&this._updateCachedRendererData(e);let t=e.cachedSymbology;return(n,r)=>{let i=n*e.cachedSymbologyStride;E(r.externalColor,t[i]/255,t[i+1]/255,t[i+2]/255,t[i+3]/255);let a=this._stage.renderView.olidRenderHelper;if(a){let t=e.featureIds[n],i=this.sublayerId?`${this.layerViewUid}_${this.sublayerId}`:this.layerViewUid,o=z(this.view,this.uid);a.setUidToObjectAndLayerId(t,t,this.layerId,i,this.layerPopupEnabledAndHasTemplate&&!o,e.node.resources.attributes,n,this.sublayerId),r.olidColor=a.getObjectAndLayerIdColor({graphicUid:t,layerViewUid:i})}r.externalColorMixMode=t[i+4]&15,r.castShadows=!!(t[i+4]&16),r.pickable=!!(t[i+4]&32),r.elevationOffset=e.elevationOffsets?.[n]??0,r.emissiveStrength=e.emissiveStrengths?.[n]??1,r.emissiveSource=e.emissiveSources?.[n]??0}}_getSymbolInfo(e,t){let n=e?.getSymbol(t,{arcade:this._arcade});if(!(n instanceof V))return null;let r=n.id;if(this._symbolInfos.has(r))return this._symbolInfos.get(r);let i=at(n);return this._symbolInfos.set(r,i),i}_setSymbologyOverride(e,t){this._symbologyOverride!==e&&(this._symbologyOverride=e,this._symbologyOverrideFields=t,this._invalidateAllSymbols(),this._updateSymbologyFields())}_updateSymbologyFields(){this._symbologyFields=this._symbologyOverrideFields!=null&&this._symbologyOverrideFields.length>0?this._rendererFields!=null&&this._rendererFields.length>0?xe(this.layer.fieldsIndex,[...this._rendererFields,...this._symbologyOverrideFields]):this._symbologyOverrideFields:this._rendererFields}_updateCachedRendererData(e){if(e.cachedRendererVersion=this._rendererVersion,!this._hasComponentData)return;let t=this._tmpAttributeOnlyGraphic,n={};t.attributes=n;let r=this._currentRenderer,i=e.attributeInfo?.attributeData,a=e.featureIds?this.layer.objectIdField:null,o=i!=null&&this._symbologyFields!=null&&this._symbologyFields.length>0,s=null,c=null;if(o&&this._symbologyFields!=null){s=[],c=[];for(let e of this._symbologyFields){let t=i[e];t&&(s.push(e),c.push(t))}}e.cachedSymbology||=I(e.featureIds.length*e.cachedSymbologyStride);let l=new ut,u=this.fullOpacity,d=this.nodeCrossfadingEnabled?this.getNodeOpacity(e):u,f=null,p=1,m=W,h=0;for(let i=0;i<e.featureIds.length;i++){if(a!=null&&(n[a]=e.featureIds[i]),o&&s)for(let e=0;e<s.length;e++)n[s[e]]=H(c[e],i);let u=r?this._getSymbolInfo(r,t):null,g,_;if(l.pickable=!0,r&&`visualVariables`in r){if(this._colorVariable){let e=Ce(this._colorVariable,t,{color:Ft,arcade:this._arcade});e&&(g=l.color,g[0]=e.r/255,g[1]=e.g/255,g[2]=e.b/255,g[3]=e.a??1,!this._opacityVariable&&e.a!==null&&(_=e.a))}this._opacityVariable&&(_=we(this._opacityVariable,t,{arcade:this._arcade}))}if(u?.material){let e=u.material;g=g==null||_==null?Ie(g,_,e.color,e.alpha,Ot,l.color):Ie(g,_,null,null,Ot,l.color)}g??=E(l.color,1,1,1,1);let v=u?.material;if(l.colorMixMode=v?.colorMixMode??1,l.edgeMaterial=u?.edgeMaterial,this._symbologyOverride?.(t,l),this._nodeColorOverride!=null&&(this._nodeColorOverride(e.node,g),l.colorMixMode=3),l.pickable&&=g[3]>=Dt,l.castShadows=u?u.castShadows:l.pickable,l.edgeMaterial!=null){let t=g[3]>=1&&(e.material.isOpaque||l.colorMixMode===3)?1:0;(l.edgeMaterial!==f||t!==p)&&(m={...l.edgeMaterial,opacity:d,objectTransparency:t},f=l.edgeMaterial,p=t),e.cachedEdgeMaterials[i]=m}else e.cachedEdgeMaterials[i]=W;e.cachedSymbology[h++]=Math.round(g[0]*255),e.cachedSymbology[h++]=Math.round(g[1]*255),e.cachedSymbology[h++]=Math.round(g[2]*255),e.cachedSymbology[h++]=Math.round(g[3]*255),e.cachedSymbology[h++]=l.colorMixMode|l.castShadows<<4|l.pickable<<5;let y=v?.emissive?.strength==null?Y:v?.emissive?.strength;y!==Y&&!e.emissiveStrengths&&(e.emissiveStrengths=Array(e.featureIds.length).fill(Y)),e.emissiveStrengths&&(e.emissiveStrengths[i]=y);let b=v?.emissive?.source||0;b!==0&&!e.emissiveSources&&(e.emissiveSources=Array(e.featureIds.length).fill(0)),e.emissiveSources&&(e.emissiveSources[i]=b)}}_getFilteredEdgeMaterials(e){let t=this._getCachedEdgeMaterials(e);this.nodeCrossfadingEnabled||X(t,this.fullOpacity);let n=e.filteredIds;if(n==null)return{hasEdges:t.some(e=>e!==W),perFeatureEdgeMaterials:t};let r=0,i=!1,a=t.map((t,a)=>e.featureIds[a]===n[r]?(i||=t!==W,r++,t):W);return{hasEdges:i,perFeatureEdgeMaterials:a}}_updateComponentData(e){if(!this._hasComponentData)return;let{objectHandle:t}=e,n=this._getComponentParameters(e);this._collection.setComponentData(t,n),this._stage.renderView.requestRender()}_reloadAll(e=this.elevationOffset){this._removeAllNodeDataFromStage(e),this._controller!=null&&this._controller.restartNodeLoading()}_refreshGroundUsage(){this._intersectionHandler.isGround=has(`enable-feature:im-as-ground`)?this.layer.isUsedAsGroundLayer:this._isIntegratedMesh,this.contentVisible&&(this.view.elevationProvider.unregister(this._elevationProvider),this.view.elevationProvider.register(this._elevationContext,this._elevationProvider)),this._reloadAll(),this.clearMemCache()}_opacityChange(e){this.nodeCrossfadingEnabled&&this._crossfadeHelper.stopAllNodeFading(),this._nodeId2Meta.forEach(t=>{t!=null&&(this._collection.updateObjectOpacity(t.objectHandle,e),X(t.cachedEdgeMaterials,e),this._updateEdgeRendering(t))})}_updateMaterial(e){e.objectHandle.updateMaterial({slicePlaneEnabled:this.slicePlaneEnabled,usePBR:this._usePBR})}_updateEngineObject(e){this._updateComponentData(e),this._applyFiltersToNode(e),this._addOrUpdateEdgeRendering(e).catch(()=>{}),this._visibleGeometryChanged(e,2)}intersect(e,t,n,r){this._intersectionHandler.intersectRay(e,t,n,r,null,!1)}_slicePlaneEnabledChange(e){this._intersectionHandler&&(this._intersectionHandler.slicePlaneEnabled=e),this._labeler!=null&&(this._labeler.slicePlaneEnabled=e),this._foreachMeta(t=>{t.objectHandle.updateMaterial({slicePlaneEnabled:e}),this._updateEdgeRendering(t,!1)})}_updatePBR(e){this._foreachMeta(t=>t.objectHandle.updateMaterial({usePBR:e})),this._hasLoadedPBRTextures=!0}_foreachMeta(e){this._nodeId2Meta.forEach(t=>{t!=null&&e(t)})}get _usePBR(){return this._imShading&&this.view.qualitySettings.physicallyBasedRenderingEnabled}_updateEdgeRendering(e,t=!0){this._edgeView!=null&&this._edgeView.hasObject(e.objectHandle)&&this._addOrUpdateEdgeRendering(e,t).catch(()=>{})}_forAllNodes(e){this._nodeId2Meta.forEach(e)}_ignoreClientNodeOverriddenFeatures(e){return this.i3sOverrides.hasGeometryChanges?(t,n,r)=>r.node.index>=0&&this.i3sOverrides.featureHasGeometryChanges(t)?0:e(t,n,r):e}_forAllFeatures(e,t,n){for(let r of this._nodeId2Meta.values())if(r!=null&&!(t&&r.node.serviceMbsInIndexSR&&t(r.node.serviceMbsInIndexSR)===1))switch(n){case 1:this._forAllFeaturesOfNode(r,e);break;case 0:this._forAllVisibleFeaturesOfNode(r,e);break;case 2:this._forAllQueryableFeaturesOfNode(r,e)}}_forAllFeaturesOfNode(e,t){e.featureIds.forEach((n,r)=>t(n,r,e))}_forAllVisibleFeaturesOfNode(e,t){let n=e.featureIds;this._collection.forEachVisibleComponent(e.objectHandle,r=>t(n[r],r,e)===0)}_forAllQueryableFeaturesOfNode(e,t){let n=this._ignoreClientNodeOverriddenFeatures(t);if(this._renderClippingArea==null)return this._forAllFeaturesOfNode(e,n);let r=this._boundingRectNodeTest(e,this._renderClippingArea);if(r===0)return;if(r===3)return this._forAllFeaturesOfNode(e,n);let i=e.featureIds,a=e.objectHandle,o=ot(this._renderClippingArea,this._collection.getObjectTransform(a));for(let t=0;t<i.length;t++)this._boundingRectFeatureTest(e,t,o)&&n(i[t],t,e)}_createAttributes(e,t){let n={};t.featureIds!=null&&(n[this._getObjectIdField()]=t.featureIds[e]);let r=t.attributeInfo?.attributeData;if(r!=null)for(let t of Object.keys(r))n[t]=H(r[t],e);return n}_createGraphic(e,t){return this._createLayerGraphic(this._createAttributes(e,t))}highlight(e,t){let r=dt(e);if(r.length===0)return ft;let i=Tt(t),a=r[0]instanceof n?this._featureIdsFromGraphics(r):typeof r[0]==`number`?r:null;if(!a)return ft;let o=this._ensureHighlights(),{set:s,handle:c}=o.acquireSet(i);return o.setFeatureIds(s,a),c}_featureIdsFromGraphics(e){let t=this.layer.fieldsIndex,n=this._getObjectIdField();return e.map(e=>G(t,e.attributes,n))}_ensureHighlights(){return this._highlights??=new Re({collection:this._collection,forAllFeatures:e=>this._forAllFeatures(e,null,1),forAllFeaturesOfNode:(e,t)=>this._forAllFeaturesOfNode(e,t)}),this._highlights}resetHighlights(){this._highlights=s(this._highlights)}_visibleGeometryChanged(e,t){this._elevationProvider&&(this._visibleGeometryChangedSchedulerHandle??=m(()=>{let{node:t}=e,n=t.visibilityObbInRenderSR??t.geometryObbInRenderSR??t.serviceObbInRenderSR;if(n!=null){let e=k();n.toAaBoundingBox(e),this.emit(`visible-geometry-changed`,new De(e))}else this.emit(`visible-geometry-changed`);this._visibleGeometryChangedSchedulerHandle=null}),this._updateSnappingSources(e,t),this._elevationProvider.notifyObjectChanged(this._collection.getComponentObb(e.objectHandle)))}get performanceInfo(){return new ke(this.usedMemory,this._nodeId2Meta.size,Math.round(this._gpuMemoryEstimate/1048576),Math.round(this._geoMemoryEstimate/1048576),Math.round(this._texMemoryEstimate/1048576),Math.round(this.unloadedMemory/1048576),this._idbCacheEnabled?Math.round(this._idbCache.getHitRate()*100):0)}checkInvariants(){}get test(){}getNodeOpacityByIndex(e){let t=this._nodeId2Meta.get(e);return this.getNodeOpacity(t)}getNodeOpacity(e){return e==null?0:this._collection.getObjectOpacity(e.objectHandle)}isNodeFullyFadedIn(e){return this._crossfadeHelper.isNodeFullyFadedIn(e)}getNodeCrossfadeMetaData(e){return this._nodeId2Meta.get(e)}getNodeComponentHandle(e){return this._nodeId2Meta.get(e)?.objectHandle}markNodeToRemove(e){this._controller&&this._controller.markNodeToRemove(e)}removeMarkedNodes(){this._controller&&this._controller.removeMarkedNodes()}foreachCrossfadeNode(e){this._nodeId2Meta.forEach(e)}fadeNode(e,t,n){if(!this.nodeCrossfadingEnabled)return;let r=this._nodeId2Meta.get(e);r!=null&&this._crossfadeHelper.fadeNode(e,r,t,n)}setNodeOpacityByIndex(e,t){let n=this._nodeId2Meta.get(e);n!=null&&this._setNodeOpacity(n,t)}_setNodeOpacity(e,t){this._collection.updateObjectOpacity(e.objectHandle,t),this._setNodeEdgeOpacity(e,t)}_setNodeEdgeOpacity(e,t){if(this._edgeView==null||!e.cachedEdgeMaterials)return;X(e.cachedEdgeMaterials,t);let n=e.objectHandle;this._edgeView.hasObject(n)&&this._edgeView.updateAllComponentOpacities(n,t).catch(e=>this._logEdgeViewError(e,this.layer.title))}get hasModifications(){return this._isIntegratedMesh&&this._layerClippingArea!=null||this._modifications&&this._modifications.length>0}updateNodeModificationStatus(e){let t=e.length;if(!this.hasModifications||t<=0||this._i3sWasmLoaded!==!0)return;let n=this.uid,r=Vt(e);if(r){let t={context:n,buffer:r.buffer};Me(t);let i=new Float64Array(r.buffer);e.forAll((e,t)=>{let n=i[t],r=Ne(n);e.imModificationImpact=r,r!==0&&this._controller.invalidateGeometryVisibility(e.index)})}}notifyUpdate(){this.notifyChange(`updating`)}notifyLODUpdate(){this._controller.notifyLODUpdate()}isUpdating(){return!!(this._controller&&this._controller.updating)||!!this._visibleGeometryChangedSchedulerHandle||this._labeler!=null&&this._labeler.updating||this._crossfadeHelper?.updating||this._i3sWasmLoaded instanceof Promise||this._asyncModuleLoading>0||this._elevationTask!=null&&this._elevationTask.readyToRun||this._needFilterResolve||this._compressionTracker.compressing}trackSnappingSources(e){let t={events:e,fetchEdgeLocations:async(e,t,n)=>{let r=this._nodeId2Meta.get(e);if(r==null)throw Error(`invalid-node`);let{origin:i,buffer:a}=await this._collection.extractEdgeInformation(r.objectHandle,t,n);return this._snappingLocationsApplyElevation(r,a,i),{type:`components`,objectIds:r.featureIds,locations:a,origin:i}},remove:()=>r(this._snappingSourcesTrackers,t)};return this._snappingSourcesTrackers.push(t),this._nodeId2Meta.forEach((t,n)=>{if(t==null)return;let r=this._controller.getRenderMbs(t.node);r&&e.add(n,r)}),t}_snappingLocationsApplyElevation(e,t,n){if(!e.elevationOffsets||this.elevationInfo.mode===0)return;let r=t.position0,i=t.position1,a=t.componentIndex,o=T(),s=T(),c=(e,t)=>{C(e,e,n),this.view.renderCoordsHelper.worldUpAtPosition(e,s),C(e,e,ue(s,s,t)),w(e,e,n)};for(let t=0;t<r.count;t++){let n=e.elevationOffsets[a.get(t)];r.getVec(t,o),c(o,n),r.setVec(t,o),i.getVec(t,o),c(o,n),i.setVec(t,o)}}_updateSnappingSources(e,t){let{index:n}=e.node,r=this._controller.getRenderMbs(e.node);if(r!=null)for(let e of this._snappingSourcesTrackers)(t===1||t===2)&&e.events.remove(n),(t===0||t===2)&&e.events.add(n,r)}_logEdgeViewError(e,t){u(e)||a.getLogger(this).warn(`Error while processing edges. Edges on this layer might not display correctly`,t,e)}_indexedDbSizeCheck(e,t){return t.byteSize>104857600?(a.getLogger(this).warn(`Node is too big to store in IndexedDB cache: ${e.id} (${t.byteSize} bytes)`),!1):t.byteSize>0}get elevationProvider(){return this._elevationProvider}};return e([_()],F.prototype,`extractChanges`,null),e([_()],F.prototype,`_hasLoadedPBRTextures`,void 0),e([_()],F.prototype,`_asyncModuleLoading`,void 0),e([_()],F.prototype,`_visibleGeometryChangedSchedulerHandle`,void 0),e([_()],F.prototype,`view`,void 0),e([_()],F.prototype,`layer`,void 0),e([_()],F.prototype,`_controller`,void 0),e([_()],F.prototype,`_labeler`,void 0),e([_()],F.prototype,`updating`,void 0),e([_()],F.prototype,`suspended`,void 0),e([_()],F.prototype,`contentVisible`,null),e([_({readOnly:!0})],F.prototype,`legendEnabled`,null),e([_(gt)],F.prototype,`updatingProgress`,void 0),e([_()],F.prototype,`updatingProgressValue`,null),e([_()],F.prototype,`hasTexturesOrVertexColors`,null),e([_()],F.prototype,`rendererTextureUsage`,null),e([_()],F.prototype,`elevationOffset`,null),e([_()],F.prototype,`elevationInfo`,null),e([_({type:Boolean})],F.prototype,`slicePlaneEnabled`,void 0),e([_()],F.prototype,`supportedTextureEncodings`,null),e([_({type:[R]})],F.prototype,`_modifications`,void 0),e([_({readOnly:!0})],F.prototype,`clientGeometry`,null),e([_()],F.prototype,`elevationRange`,null),e([_()],F.prototype,`fullExtent`,null),e([_()],F.prototype,`_elevationTask`,void 0),e([_({readOnly:!0})],F.prototype,`_usePBR`,null),F=e([v(`esri.views.3d.layers.I3SMeshView3D`)],F),F},jt=k(),Mt=j(),Nt=j(),Pt=new J,Ft=new t([0,0,0,0]),It=new F(0,0,0,0);function Lt(e){if(e==null)return!1;let t=e.metallicRoughness;return t&&t.baseColorTextureId>=0||t&&t.metallicRoughnessTextureId>=0||e.normalTextureId>=0||e.emissiveTextureId>=0||e.occlusionTextureId>=0}function Rt(e){return`geometryData`in e}function zt(e){return e!=null&&g(e.data)}function Bt(e,t){let n=1024+e.interleavedVertexData.byteLength+(e.indices?e.indices.byteLength:0)+e.positionData.data.byteLength+e.positionData.indices.byteLength;if(t!=null)for(let e of t)e!=null&&g(e.data)&&(n+=e.data.byteLength);return n}function Vt(e){if(e.length===0)return;let t=e.length*10,n=new Float64Array(t),r=0;return e.forAll(e=>{let t=e.serviceObbInIndexSR;t??(t=Pt,e.serviceMbsInIndexSR?(t.setCenter(e.serviceMbsInIndexSR.center),t.setHalfSizeFromValues(e.serviceMbsInIndexSR.radius,e.serviceMbsInIndexSR.radius,e.serviceMbsInIndexSR.radius)):t.invalidate());let i=t.data;n[r++]=i[0],n[r++]=i[1],n[r++]=i[2],n[r++]=i[3],n[r++]=i[4],n[r++]=i[5],n[r++]=i[6],n[r++]=i[7],n[r++]=i[8],n[r++]=i[9]}),n}class Ht{constructor(e,t,n){this.attributeInfo=e,this.meta=t,this.promise=n,this.allowMemCache=!0}}function X(e,t){e.forEach(e=>e.opacity=t)}class Z{constructor(e,t){this.mode=e,this.offset=t}}const Ut=T(),Wt=k(),Gt=`elevation-change`,Kt=``,qt=`@null`,Jt=`@ECEF`;function Yt(e,t){let n=e.featureIds.slice();for(let r of t)if(r(n,e),n.length===0)break;return n.length===e.featureIds.length?e.featureIds:n}function Xt(e,t,n){let r=[],i=e.filteredIds;if(i!=null&&!t?.size&&!n?.size)e.featureIds.forEach((e,t)=>{i[r.length]===e&&r.push(t)});else if(i!=null){let a=0;e.featureIds.forEach((e,o)=>{if(i[a]===e)++a;else if(!t?.has(e))return;n?.has(e)||r.push(o)})}return r}function Q(e,t,n){if(e&&t)for(let r of t){let t=(e.get(r)??0)+n;t>0?e.set(r,t):e.delete(r)}}function $(e,t=0){let n=new Map;for(let r of e)Q(n,t===0?r?.featureIds:t===1?r?.filteredIds:r?.weaklyRemovedIds,1);return n}const Zt=T();export{At as I3SMeshView3D};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../Color.js";import n from"../../../Graphic.js";import{removeUnordered as r,isSome as i}from"../../../core/arrayUtils.js";import has from"../../../core/has.js";import a from"../../../core/Logger.js";import{equals as o}from"../../../core/MapUtils.js";import{destroyMaybe as s}from"../../../core/maybe.js";import c from"../../../core/PooledArray.js";import{ignoreAbortErrors as l,isAbortError as u,throwIfAborted as d}from"../../../core/promiseUtils.js";import{initial as f,watch as p}from"../../../core/reactiveUtils.js";import{schedule as m}from"../../../core/scheduling.js";import{equals as h}from"../../../core/SetUtils.js";import{isArrayBuffer as g}from"../../../core/typedArrayUtil.js";import{property as _,subclass as v}from"../../../core/accessorSupport/decorators.js";import{fromMat4 as y,exactEquals as b,invert as ee}from"../../../core/libs/gl-matrix-2/math/mat3.js";import{create as te,IDENTITY as ne}from"../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{multiply as re,getTranslation as ie}from"../../../core/libs/gl-matrix-2/math/mat4.js";import{clone as ae,create as oe}from"../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{fromValues as se}from"../../../core/libs/gl-matrix-2/factories/quatf64.js";import{set as x,transformMat4 as S,transformMat3 as ce,sub as le,add as C,scale as ue,subtract as w}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as T}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{set as E}from"../../../core/libs/gl-matrix-2/math/vec4.js";import{fromValues as de}from"../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{UpdatingHandles as fe}from"../../../core/support/UpdatingHandles.js";import{getSphericalPCPF as D}from"../../../geometry/spatialReferenceEllipsoidUtils.js";import{localLinearScaleFactors as pe}from"../../../geometry/projection/localLinearScaleFactors.js";import{projectBoundingSphere as me}from"../../../geometry/projection/projectBoundingSphere.js";import{projectBuffer as he}from"../../../geometry/projection/projectBuffer.js";import{getProjectorName as ge}from"../../../geometry/projection/projectors.js";import{projectVectorToVector as O}from"../../../geometry/projection/projectVectorToVector.js";import{create as k,fromBuffer as _e,toRect as A}from"../../../geometry/support/aaBoundingBox.js";import{create as j,intersects as M}from"../../../geometry/support/aaBoundingRect.js";import{newDoubleArray as N,ensurePackedMat4f64 as P}from"../../../geometry/support/DoubleArray.js";import{compactFloatArray as ve}from"../../../geometry/support/FloatArray.js";import{compactIndices as ye}from"../../../geometry/support/Indices.js";import{Sphere as F}from"../../../geometry/support/sphere.js";import{newUByteArray as I}from"../../../geometry/support/UByteArray.js";import{fallbackObjectIDAttribute as L}from"../../../layers/LayerConstants.js";import be from"../../../layers/graphics/controllers/I3SOnDemandController.js";import{fixFields as xe}from"../../../layers/support/fieldUtils.js";import{I3SExtractChanges as Se}from"../../../layers/support/I3SExtractChanges.js";import R from"../../../layers/support/SceneModification.js";import{getColor as Ce,getOpacity as we}from"../../../renderers/visualVariables/support/visualVariableUtils.js";import{isBasemapLayerView as z}from"../../../support/basemapUtils.js";import{getElevationOffset as B}from"../../../support/elevationInfoUtils.js";import{loadArcade as Te}from"../../../support/loadArcade.js";import V from"../../../symbols/MeshSymbol3D.js";import Ee from"../../../symbols/SimpleFillSymbol.js";import{ContentGeometryUpdateEvent as De}from"./ContentGeometryLayerView.js";import Oe from"./I3SMeshViewLabeler.js";import{I3SMeshViewPerformanceInfo as ke}from"./I3SMeshViewPerformanceInfo.js";import{initialize as Ae,setModificationsSync as je,filterObbsForModificationsSync as Me,interpretObbModificationResults as Ne}from"./SceneLayerWorker.js";import{SceneLayerWorkerHandle as Pe,toWasmModification as Fe}from"./SceneLayerWorkerHandle.js";import{overrideColor as Ie}from"./graphics/graphicUtils.js";import{areLabelsVisible as Le}from"./graphics/Labeler.js";import Re from"./i3s/Highlights.js";import{I3SAsyncElevationUpdater as ze}from"./i3s/I3SAsyncElevationUpdater.js";import{getCachedAttributeValue as H}from"./i3s/I3SBinaryReader.js";import{I3SCrossfadeHelper as Be,NodeCrossfadeMetaData as Ve}from"./i3s/I3SCrossfadeHelper.js";import{boundingBoxCornerPoints as He}from"./i3s/I3SGeometryUtil.js";import{I3SIntersectionHandler as Ue,TraversedIntersectionNode as We}from"./i3s/I3SIntersectionHandler.js";import{getSupportedEncodings as Ge,selectEncoding as Ke,defaultMaterial as qe,createTexture as Je,configureMaterial as Ye}from"./i3s/I3SMaterialUtil.js";import{I3SOverrides as Xe}from"./i3s/I3SOverrides.js";import{computeGlobalTransformation as Ze}from"./i3s/I3SProjectionUtil.js";import{rendererNeedsTextures as Qe,checkSceneLayerValid as $e,checkSceneLayerCompatibleWithView as et,whenGraphicAttributes as tt,computeVisibilityObb as nt,filterInPlace as rt,intersectBoundingRectWithMbs as it,addWraparound as U,getSymbolInfo as at,transparentEdgeMaterial as W,getClipRect as ot}from"./i3s/I3SUtil.js";import{IDBCache as st}from"./i3s/IDBCache.js";import{IDBMockCache as ct}from"./i3s/IDBMockCache.js";import{LayerElevationProvider as lt}from"./i3s/LayerElevationProvider.js";import{SymbologyInfo as ut}from"./i3s/SymbologyInfo.js";import{attributeLookup as G}from"./support/attributeUtils.js";import{normalizeHighlightTarget as dt,emptyHighlightHandle as ft}from"./support/highlightUtils.js";import{makeScheduleFunction as pt}from"./support/makeScheduleFunction.js";import{debugFlags as K}from"../support/debugFlags.js";import{ElevationRange as q}from"../support/ElevationRange.js";import{toBoundingRect as mt}from"../support/extentUtils.js";import{Obb as J,ensurePackedObbData as ht}from"../support/orientedBoundingBox.js";import{updatingProgress as gt}from"../support/updatingProperties.js";import{glLayout as _t}from"../support/buffer/glUtil.js";import{ObjectParameters as vt}from"../webgl-engine/collections/Component/ObjectParameters.js";import{createVertexBufferLayout as yt,ComponentGeometryParameters as bt,SourceGeometry as xt,VertexBufferLayoutCreationParameters as St}from"../webgl-engine/collections/Component/SourceGeometry.js";import{Transform as Ct}from"../webgl-engine/collections/Component/Transform.js";import{emissiveStrengthDefault as Y}from"../webgl-engine/core/shaderLibrary/output/getEmissions.glsl.js";import{loadBasisTranscoder as wt}from"../webgl-engine/lib/BasisUtil.js";import{getHighlightName as Tt}from"../../support/highlightOptionsUtils.js";import{TextureCompressionTracker as Et}from"../../support/TextureCompressionTracker.js";import{alphaCutoff as Dt}from"../../../webscene/support/AlphaCutoff.js";const Ot=[1,1,1,1];class kt extends Ve{constructor(e,t,n,r,i,a,o,s,c,l,u){super(),this.node=e,this.featureIds=t,this.objectHandle=n,this.cachedRendererVersion=r,this.attributeInfo=i,this.material=a,this.textures=o,this.anchorIds=s,this.anchors=c,this._elevationAlignmentRange=new q,this._geometryElevationRange=new q,this.cachedElevationAnchors=null,this.cachedEdgeMaterials=[],this.edgeMemoryUsage=0,this.cachedSymbologyStride=5,this.elevationAlignmentOffset=0,this._baseGeometryElevationRange=new q(l,u),this.updateGeometryElevationRange()}get geometryElevationRange(){return this._geometryElevationRange}updateGeometryElevationRange(){let e=this._baseGeometryElevationRange;if(!e.elevationRangeValid||e.isEmpty){this._elevationAlignmentRange.invalidateElevationRange(),this._geometryElevationRange.invalidateElevationRange();return}let t=this.elevationOffsets;if(!t||t.length===0){let t=this.elevationAlignmentOffset;this._elevationAlignmentRange.setElevationRangeValues(t,t),this._geometryElevationRange.setElevationRangeValues(e.minElevation+t,e.maxElevation+t);return}let n=1/0,r=-1/0;for(let e=0;e<t.length;++e){let i=this.elevationAlignmentOffset+(t[e]??0);n=Math.min(n,i),r=Math.max(r,i)}this._elevationAlignmentRange.setElevationRangeValues(n,r),this._geometryElevationRange.setElevationRangeValues(e.minElevation+n,e.maxElevation+r)}get usedMemory(){return this.node.memory}get featureExtents(){return this._featureExtents??=new Float64Array(6*this.featureIds.length).fill(1/0),this._featureExtents}}const At=t=>{let g=t,F=class extends g{constructor(){super(...arguments),this._extractChanges=null,this._applySSAO=!0,this._imShading=!has(`disable-feature:im-shading`),this._imVertexNormals=!has(`disable-feature:im-vertex-normals`),this._updatingHandles=new fe,this._highlights=null,this._nodeId2Meta=new Map,this._nodeId2MetaReloading=new Map,this._i3sWasmLoaded=!1,this._snappingSourcesTrackers=[],this._compressionTracker=new Et,this._hasLoadedPBRTextures=!1,this._asyncModuleLoading=0,this._addTasks=new Map,this._currentRenderer=null,this._rendererVersion=0,this._colorVariable=null,this._opacityVariable=null,this._rendererFields=null,this._symbologyFields=null,this._symbologyOverride=null,this._symbologyOverrideFields=null,this._symbolInfos=new Map,this._visibleGeometryChangedSchedulerHandle=null,this._hasComponentData=!1,this._hasVertexColors=!1,this._nodeColorOverride=null,this.updating=!0,this.holeFilling=`auto`,this._hasColors=!1,this._hasTextures=!1,this._hasData=!1,this.slicePlaneEnabled=!1,this._modifications=[],this.ignoresMemoryFactor=!1,this._layerUrl=``,this._cacheKeySuffix=null,this._meshUtilsImporterModule=null,this._meshUtilsImporterPromise=null,this._planetRadiusInGlobalMode=0,this._elevationTask=null,this._needFilterResolve=!1,this._filters=[],this._arcade=null,this._tmpAttributeOnlyGraphic=new n,this._crossfadeHelper=new Be(this)}get lodCrossfadeoutDuration(){return 0}get lodCrossfadeinDuration(){return 0}get lodCrossfadeUncoveredDuration(){return 0}get extractChanges(){return this._extractChanges?.layer!==this.layer&&(this._extractChanges?.destroy(),this._extractChanges=new Se({layer:this.layer})),this._extractChanges}get layerViewUid(){return this.uid}get layerId(){return this.layer.id}get sublayerId(){return null}get _isIntegratedMesh(){return this.layer.type===`integrated-mesh`}get contentVisible(){return!this.suspended&&this._controller?.rootNodeVisible&&this.fullOpacity>Dt}get legendEnabled(){return this.contentVisible&&this.layer?.legendEnabled===!0}get updatingProgressValue(){return this._controller?.updatingProgress??0}get hasTexturesOrVertexColors(){return this._hasData?this._hasTextures||this._hasColors?`yes`:`probably-not`:`unknown`}get rendererTextureUsage(){return Qe(this._currentRenderer)?this._usePBR||this._hasLoadedPBRTextures?63:53:this._usePBR||this._hasLoadedPBRTextures?44:36}get elevationOffset(){let e=this.layer?.elevationInfo;return e?.mode===`absolute-height`?B(e,this.layer.spatialReference):0}get elevationInfo(){let e=this.layer?.elevationInfo;switch(e?.mode){case`absolute-height`:return new Z(0,B(e,this.layer.spatialReference));case`relative-to-ground`:return new Z(1,B(e,this.layer.spatialReference));case`on-the-ground`:return new Z(2,0);default:return new Z(0,0)}}get supportedTextureEncodings(){return Ge(this.view.stage.renderView.capabilities)}get clientGeometry(){return this.i3sOverrides.geometryOverrides}get elevationRange(){let e=this._nodeId2Meta,t=new q;for(let n of e.values()){let e=n?.geometryElevationRange;e?.elevationRangeValid&&!e.isEmpty&&t.expandElevationRange(e)}return t.elevationRangeValid&&!t.isEmpty?t:null}get fullExtent(){return this.layer.fullExtent}initialize(){let e=has(`enable-feature:idb-mock-cache`);this._idbCache=e?new ct(this.view,e):new st(`esri-scenelayer-cache`,`geometries`),this._preLoadBasis(),this.addResolvingPromise(this.layer.indexInfo);let t=this.view.resourceController,n=t.memoryController;this.i3sOverrides=new Xe({view:this.view,layer:this.layer,memoryController:n,extractChanges:this.extractChanges}),this._workerHandle=new Pe(pt(t)),this.addResolvingPromise(this._workerHandle.promise),$e(this.layer),et(this.layer,this.view);let r=this.layer.store.defaultGeometrySchema;if(this.addResolvingPromise(this._workerHandle.setLegacySchema(this.uid,r).catch(l)),this._layerUrl=this.layer.parsedUrl.path,this._controller=new be({layerView:this,worker:this._workerHandle}),this._gpuMemoryEstimate=0,this._texMemoryEstimate=0,this._geoMemoryEstimate=0,this._stage=this.view.stage,this._collection=this._stage.renderView.componentObjectCollection,this._isIntegratedMesh||!r)this._hasComponentData=!1;else{let e=r.featureAttributes;this._hasComponentData=!!(e&&e.faceRange&&e.id)}this._hasVertexColors=(r?.vertexAttributes.color??null)!=null&&!this.layer.cachedDrawingInfo?.color;let i=this.view.resourceController.memoryController.newCache(`sl-${this.uid}`,e=>this._deleteComponentObject(e));this._memCache=i;let o=this._controller,c=this._nodeId2Meta,u=this._nodeId2MetaReloading;function*d(e){let t=o.index;if(!t)return;let n=t.rootNode;if(!n)return;let r=null;for(let i of t.traverseValues(n,t=>(r=(c.get(t.index)||u.get(t.index))?.objectHandle??null,e(t,r))))yield new We(i,r)}this._intersectionHandler=new Ue({layerViewUid:this.layerViewUid,sublayerId:this.sublayerId,collection:this._collection,slicePlaneEnabled:this.slicePlaneEnabled,isGround:has(`enable-feature:im-as-ground`)?this.layer.isUsedAsGroundLayer:this._isIntegratedMesh,traverseNodeHierarchy:d}),this._elevationProvider=new lt({view:this.view,layerElevationSource:this,intersectionHandler:this._intersectionHandler}),this._hasLoadedPBRTextures=this._usePBR,this._updatingHandles.add(()=>this.view.clippingArea,()=>this._clippingAreaChanged(),f),this._updatingHandles.add(()=>this.fullOpacity,e=>this._opacityChange(e)),this._updatingHandles.add(()=>this.slicePlaneEnabled,e=>this._slicePlaneEnabledChange(e)),this._updatingHandles.add(()=>this.elevationOffset,(e,t)=>{this._reloadAll(t),this._controller.invalidateVisibilityObbs()}),this._updatingHandles.add(()=>this.elevationInfo,(e,t)=>this._elevationInfoChanged(e,t),f),this._updatingHandles.add(()=>!this.suspended&&this.elevationInfo.mode!==0,(e,t)=>{e?this.addHandles(this.view.groundView.on(`elevation-change`,({extent:e})=>this._ensureElevationTask().addExtent(e)),Gt):t&&this.removeHandles(Gt)},f),this._updatingHandles.add(()=>this._usePBR,e=>this._updatePBR(e)),this._updatingHandles.add(()=>this.rendererTextureUsage,()=>{this._reloadAll(),this.clearMemCache()}),this._updatingHandles.add(()=>this.contentVisible,e=>this._contentVisibleChanged(e),f),this._updatingHandles.add(()=>this.layer.labelsVisible,()=>this._labelingChanged(),f),this._updatingHandles.add(()=>this.layer.labelingInfo,()=>this._labelingChanged(),f),this._updatingHandles.add(()=>this._modifications,()=>this._modificationsChanged(),f),this.addHandles([p(()=>K.I3S_TREE_SHOW_TILES,e=>{if(e&&!this._treeDebugger){let e=this._controller.crsIndex;import(`./support/I3STreeDebugger.js`).then(({I3STreeDebugger:t})=>{!this._treeDebugger&&K.I3S_TREE_SHOW_TILES&&(this._treeDebugger=new t({lv:this,view:this.view,nodeSR:e}))})}else!e&&!K.I3S_TREE_SHOW_TILES&&(this._treeDebugger=s(this._treeDebugger))},f),p(()=>K.I3S_SHOW_MODIFICATIONS,()=>this._showModifications(),f)]),this._cacheKeySuffix=this._getCacheKeySuffix(),this._idbCache.init().catch(e=>a.getLogger(this).warn(`Failed to initialize IndexedDB cache: ${e}`));let{view:m}=this,{viewingMode:h,renderCoordsHelper:g}=m;this._planetRadiusInGlobalMode=h===`local`?0:g.referenceEllipsoid.radius}destroy(){this._clearAddTasks(),this._elevationTask=s(this._elevationTask),this.i3sOverrides=s(this.i3sOverrides),this._extractChanges=s(this._extractChanges),this._elevationProvider&&=(this._elevationProvider.notifyObjectsChanged(this.getVisibleObbs()),this.view.elevationProvider.unregister(this._elevationProvider),null),this._intersectionHandler&&=(this._stage.view.sceneIntersectionHelper.removeIntersectionHandler(this._intersectionHandler),null);let e=this._workerHandle;e&&(e.destroyContextAndSelf(this.uid),this._workerHandle=null),this._removeAllNodeDataFromStage(),this._memCache=s(this._memCache),this._collection=null,this._stage=null,this._edgeView=null,this._labeler=s(this._labeler),this._treeDebugger=s(this._treeDebugger),this._controller=s(this._controller),this._highlights=s(this._highlights),this._nodeId2Meta.clear(),this._nodeId2MetaReloading.clear(),this._crossfadeHelper=s(this._crossfadeHelper),this.emit(`visible-geometry-changed`),this._visibleGeometryChangedSchedulerHandle&&=(this._visibleGeometryChangedSchedulerHandle.remove(),null),this._updatingHandles=s(this._updatingHandles)}_memEstimateTextureAdded(e){let t=e.usedMemory;return this._gpuMemoryEstimate+=t,this._texMemoryEstimate+=t,t}_memEstimateTextureRemoved(e){if(e!=null){let t=e.usedMemory;this._gpuMemoryEstimate-=t,this._texMemoryEstimate-=t}}_memEstimateGeometryAdded(e){let t=this._collection.getObjectGPUMemoryUsage(e);return this._gpuMemoryEstimate+=t,this._geoMemoryEstimate+=t,t}_memEstimateGeometryRemoved(e){let t=this._collection.getObjectGPUMemoryUsage(e);this._gpuMemoryEstimate-=t,this._geoMemoryEstimate-=t}isNodeLoaded(e){return this._nodeId2Meta.has(e)}isNodeReloading(e){return this._nodeId2MetaReloading.has(e)}get usedMemory(){let e=this._labeler==null?0:this._labeler.usedMemory;return this._nodeId2Meta.forEach(t=>e+=t==null?0:t.node.memory),this._nodeId2MetaReloading.forEach(t=>e+=t==null?0:t.node.memory),e}get unloadedMemory(){return(this._controller==null?0:this._controller.unloadedMemoryEstimate)+(this._labeler==null?0:this._labeler.unloadedMemoryEstimate)}_labelingChanged(){if(!(Le(this.layer)&&this._supportsLabeling)){this._labeler!=null&&(this._labeler.destroy(),this._labeler=null);return}if(this._labeler!=null)return;let e=new Oe({view:this.view,layer:this.layer,collection:this._collection,overrides:this.i3sOverrides,layerViewUid:this.uid});this._nodeId2Meta.forEach(t=>t!=null&&this._addMetaToLabeler(e,t)),this._labeler=e}_loadAsyncModule(e){return++this._asyncModuleLoading,e.then(e=>(--this._asyncModuleLoading,e),e=>{throw--this._asyncModuleLoading,e})}_modificationsChanged(){if(!this._i3sWasmLoaded&&this.hasModifications){this._i3sWasmLoaded=Ae().then(()=>{this._i3sWasmLoaded=!0,this._modificationsChanged(),this.notifyUpdate()},()=>{}),this.notifyUpdate();return}if(this._i3sWasmLoaded!==!0)return;let e=e=>a.getLogger(this).error(`set-modifications-error`,`Error when setting modifications:`,e),t=this.uid,n=this.layer.spatialReference,r=n.isGeographic,i=Fe(this._layerClippingArea,this._modifications,n,this.view.state.isGlobal);this._workerHandle.setModifications(t,i,r).catch(e);try{je({context:t,modifications:i,isGeodetic:r})}catch(t){e(t)}this._controller.modificationsChanged();let o=this.hasModifications?new c:null;this._nodeId2Meta.forEach((e,t)=>{e==null?(this._nodeId2Meta.delete(t),this._controller.updateLoadStatus(t,!1)):e.node.hasModifications?(this._updateFeatureIdCounts(e,-1),this._nodeId2Meta.delete(t),this._nodeId2MetaReloading.set(t,e)):o?.push(e.node)}),this.notifyChange(`elevationRange`),o!=null&&this._nodeId2MetaReloading.forEach(e=>o.push(e.node)),o!=null&&o.length>0&&(this.updateNodeModificationStatus(o),o.forAll(e=>{if(e.imModificationImpact!==2){let t=this._nodeId2Meta.get(e.index);this._controller.invalidateGeometryVisibility(e.index),t==null?this._nodeId2Meta.has(e.index)&&(this._nodeId2Meta.delete(e.index),this._controller.updateLoadStatus(e.index,!1)):(this._updateFeatureIdCounts(t,-1),this._nodeId2Meta.delete(e.index),this._nodeId2MetaReloading.set(e.index,t),this.notifyChange(`elevationRange`))}})),this.clearMemCache(),this._controller.restartNodeLoading(),this._showModifications()}_showModifications(){if(this._modificationGraphics!=null&&(this.view.graphics.removeMany(this._modificationGraphics),this._modificationGraphics=null),!K.I3S_SHOW_MODIFICATIONS||this._modifications.length===0)return;let e={clip:[227,227,79,.8],mask:[227,139,79,.8],replace:[139,227,79,.8]},t={outline:{color:[255,255,255],width:1}};this._modificationGraphics=[];for(let r of this._modifications){let i=r.geometry;i.spatialReference=this.layer.spatialReference;let a=new Ee({...t,color:e[r.type]});this._modificationGraphics.push(new n({geometry:i,symbol:a}))}this.view.graphics.addMany(this._modificationGraphics)}_addMetaToLabeler(e,t){e.addNodeMeta(t,(e,t)=>this._createAttributes(e,t))}_contentVisibleChanged(e){e?(this.view.elevationProvider.register(this._elevationContext,this._elevationProvider),this._stage.view.sceneIntersectionHelper.addIntersectionHandler(this._intersectionHandler)):(this._removeAllNodeDataFromStage(),this.view.elevationProvider&&this.view.elevationProvider.unregister(this._elevationProvider),this._stage.view.sceneIntersectionHelper.removeIntersectionHandler(this._intersectionHandler))}getLoadedAttributes(e){let t=this._nodeId2Meta.get(e);if(t?.attributeInfo!=null)return t.attributeInfo.loadedAttributes}getAttributeData(e){let t=this._nodeId2Meta.get(e);if(t?.attributeInfo!=null)return t.attributeInfo.attributeData}setAttributeData(e,t){let n=this._nodeId2Meta.get(e);n?.attributeInfo!=null&&(n.attributeInfo.attributeData=t,this._attributeValuesChanged(n))}async updateAttributes(e,t,n){let r=this._nodeId2Meta.get(e);r!=null&&(await this.i3sOverrides.applyAttributeOverrides(r.featureIds,t,n,this._controller.requiredAttributes),r.attributeInfo=t,this._controller.reschedule(()=>{this._nodeId2Meta.get(e)===r&&this._attributeValuesChanged(r)},n).catch(e=>{u(e)||a.getLogger(this).warn(`Error while updating attribute values. Layer might not display correctly.`,e)}))}_attributeValuesChanged(e){e.cachedRendererVersion=this._getInvalidRendererVersion(),e.appliedFilters=null,this._labeler!=null&&this._labeler.setNodeMetaAttributes(e,(e,t)=>this._createAttributes(e,t)),this._updateEngineObject(e)}clearMemCache(){this._memCache!=null&&this._memCache.clear(),this._addTasks.forEach(e=>e.allowMemCache=!1)}getVisibleNodes(){let e=[];return this._nodeId2Meta.forEach(t=>t!=null&&e.push(t.node)),e}getVisibleObbs(){let e=[];return this._nodeId2Meta.forEach(t=>t&&e.push(this._collection.getComponentObb(t.objectHandle))),e}getLoadedNodeIndices(e){this._nodeId2Meta.forEach((t,n)=>e.push(n)),this._nodeId2MetaReloading.forEach((t,n)=>e.push(n))}_preLoadBasis(){!has(`disable-feature:i3s-basis`)&&this.supportedTextureEncodings&2&&this.layer.textureSetDefinitions?.some(e=>e.formats.some(e=>e.format===`basis`||e.format===`ktx2`))&&wt()}_getVertexBufferLayout(e,t){return _t(yt(this._getGeometryParameters({hasTexture:Lt(e.params.material),hasNormals:t.normal,hasRegions:t.uvRegion})))}_getObjectIdField(){return this.layer.objectIdField||L}_getGlobalIdField(){return this.layer.globalIdField}_findGraphicNodeAndIndex(e){let t=G(this.layer.fieldsIndex,e.attributes,this._getObjectIdField());for(let e of this._nodeId2Meta.values()){let n=e?.featureIds.indexOf(t);if(n!=null&&n>=0)return{node:e.node,index:n}}return null}_getGraphicIndices(e,t){let n=this._nodeId2Meta.get(e.index);if(n==null)return[];let r=[],i=this._getObjectIdField(),a=this.layer.fieldsIndex;for(let e of t){let t=G(a,e.attributes,i),o=n.featureIds.indexOf(t);o!==-1&&r.push(o)}return r}whenGraphicBounds(e){let t=this._findGraphicNodeAndIndex(e);if(!t)return Promise.reject();let n=this.getAABB(t.node.index,t.index);return n==null?Promise.reject():Promise.resolve({boundingBox:n,screenSpaceObjects:[]})}getAABBFromIntersectorTarget(e){return e.nodeIndex==null||e.componentIndex==null?null:this.getAABB(e.nodeIndex,e.componentIndex)}getAABB(e,t){let n=this._nodeId2Meta.get(e);if(n?.featureIds==null||t>=n.featureIds.length)return null;let r=n.objectHandle,i=He(t,this._collection,r,N(24),0),a=this.view.renderSpatialReference,o=this.view.spatialReference;return he(i,a,0,i,o,0)?_e(i):null}whenGraphicAttributes(e,t){return tt(this.layer,e,this._getObjectIdField(),t,()=>this._nodeId2Meta.values().filter(i).toArray())}getGraphicFromIntersectorTarget(e,t){if(e.nodeIndex==null||e.componentIndex==null)return null;let n=this._nodeId2Meta.get(e.nodeIndex);if(n?.featureIds==null||e.componentIndex>=n.featureIds.length)return null;let r=this._createLayerGraphic(this._createAttributes(e.componentIndex,n));return r?this._meshUtilsImporterModule?(r.geometry=this._meshUtilsImporterModule.createMesh({layerView:this,nodeIndex:e.nodeIndex,featureIndex:e.componentIndex}),r):t.defer?(t.defer(async()=>(r.geometry=(await this._meshUtilsImporter).createMesh({layerView:this,nodeIndex:e.nodeIndex,featureIndex:e.componentIndex}),r)),null):r:null}_getCacheKey(e){return`${this._layerUrl}/v30/${e}${this._cacheKeySuffix}`}get _meshUtilsImporter(){return this._meshUtilsImporterPromise||(this._meshUtilsImporterPromise=import(`./i3s/meshUtils.js`),this._meshUtilsImporterPromise.then(e=>this._meshUtilsImporterModule=e,()=>{})),this._meshUtilsImporterPromise}_getCacheKeySuffix(){let e=this.view.renderSpatialReference;return e==null?qt:e===D(e)?Jt:this.layer.spatialReference.equals(e)?Kt:e.wkid==null?null:`@${e.wkid}`}_getMemCacheKey(e,t=this.elevationOffset){return e+`#`+t}get _idbCacheEnabled(){return!this._controller.disableIDBCache&&!this.hasModifications&&this.elevationOffset===0&&this._cacheKeySuffix!=null}loadCachedGPUData(e){return this._memCache==null?null:this._memCache.pop(this._getMemCacheKey(e))}deleteCachedGPUData(e){e!=null&&this._deleteComponentObject(e)}_cacheGPUData(e,t=this.elevationOffset){if(this._memCache==null){this._deleteComponentObject(e);return}let n=this._controller.indexDepth-e.node.level;this._memCache.put(this._getMemCacheKey(e.node.index,t),e,n)}loadMissingTextures(e,t,n,r){let i=e?.filter((e,n)=>{if((e.usage&this.rendererTextureUsage)===0)return!1;if(t==null)return!0;let r=Ke(e.encodings,this.supportedTextureEncodings),i=t[n];return!!(i?.data==null||r&&i.encoding!==r.encoding)})??[];return i.length===0?Promise.resolve(!1):n(i,r).then(n=>{let r=0;for(let i=0;i<e.length;i++)r<n.length&&n[r].id===e[i].id&&(t[i]=n[r],r++);return!0})}loadCachedNodeData(e,t,n){return this._idbCacheEnabled?this._idbCache.get(this._getCacheKey(e.id),t).then(r=>r==null?null:(r.globalTrafo=P(r.globalTrafo),r.nodeVersion===e.version?(this.elevationInfo.mode===0&&(e.geometryObbInRenderSR=J.fromData(r.geometryObbData)),this.loadMissingTextures(r.requiredTextures,r.textureData,n,t).then(n=>(n&&this._idbCache.initialized&&r.textureData!=null&&(r.byteSize=Bt(r.transformedGeometry,r.textureData),r.textureData.every(zt)&&this._indexedDbSizeCheck(e,r)&&this._idbCache.put(this._getCacheKey(e.id),r).catch(t=>a.getLogger(this).warn(`Failed to update node with textures in IndexedDB cache: ${e.id}: ${t}`))),d(t),r))):(this._idbCache.remove(this._getCacheKey(e.id)),null))):Promise.resolve(null)}addNode(e,t,n){return Rt(t)?t.geometryBuffer==null?(this._addNodeMeta(e.index,null),Promise.resolve()):this._addData(e,t.attributeDataInfo,()=>this._transformNode(e,t,n).then(r=>this._safeReschedule(()=>{if(r==null)return e.hasModifications=!1,this._addCachedNodeData(e,null,n);let{obb:i,componentOffsets:o,featureIds:s,anchorIds:c,anchors:l,transformedGeometry:u,geometryMinElevation:d,geometryMaxElevation:f}=r;e.hasModifications=u.hasModifications;let p=P(r.globalTrafo),m=x(Ut,i.center.x,i.center.y,i.center.z);S(m,m,p);let h=new J(m,[i.extents.x,i.extents.y,i.extents.z],se(i.orientation.x,i.orientation.y,i.orientation.z,i.orientation.w));this.elevationInfo.mode===0&&(e.geometryObbInRenderSR=h),t.geometryData.componentOffsets=o,s&&(t.geometryData.featureIds=Array.from(s)),t.geometryData.anchorIds=c,t.geometryData.anchors=l;let g={nodeVersion:e.version,geometryData:t.geometryData,requiredTextures:t.requiredTextures,textureData:t.textureData,transformedGeometry:u,globalTrafo:p,geometryObbData:h.data,geometryMinElevation:d,geometryMaxElevation:f,byteSize:Bt(u,t.textureData)};if(this._idbCacheEnabled&&this._idbCache.initialized&&this._indexedDbSizeCheck(e,g)){let t=g.textureData==null?null:g.textureData.map(e=>zt(e)?e:null);this._idbCache.put(this._getCacheKey(e.id),{...g,textureData:t}).catch(t=>a.getLogger(this).warn(`Failed to store node in IndexedDB cache: ${e.id}: ${t}`))}return this._addCachedNodeData(e,g,n)},n))):Promise.reject()}getElevationRange(e){let t=new q,n=this._controller,{index:r}=n;if(!r)return t;let{rootNode:i}=r;if(!i)return t;let a=this._nodeId2Meta,o=n.viewportQueries;return r.traverse(i,n=>{let{childrenLoaded:r}=n;if(r===0)return!1;let i=o.getAndUpdateVisibilityObbInRenderSR(n),s=null;if(i){if(!i.intersectSphereWithMBS(e,i.radius))return!1}else if(s=o.calculateServiceMbsInRenderSRElevationAdjusted(n),s?.isValid&&!e.intersects(s))return!1;let c=a.get(n.index);if(c){let{geometryObbInRenderSR:r}=n;if(!r||r.intersectSphereWithMBS(e)){let e=c.geometryElevationRange;e.elevationRangeValid&&!e.isEmpty&&t.expandElevationRange(e)}}return r-+!!c>0}),t}computeVisibilityObb(e){return nt(e,this.view.renderSpatialReference,this._controller.crsIndex,this.layer.spatialReference,this.elevationOffset,this._modifications,this.view.renderCoordsHelper.sphericalPCPF)}_transformNode(e,t,n){let r=t.geometryData.geometries??[],i=Array(r.length);for(let e=0;e<r.length;++e)i[e]=this._getVertexBufferLayout(r[e],t.geometryDescriptor);let a=this.layer.normalReferenceFrame,o=t.normalReferenceFrame??a??`none`,s=e.serviceMbsInIndexSR,c=this.elevationOffset,l=this._controller.crsIndex,u=this._controller.crsVertex,d=this.view.renderSpatialReference,f=Ze(s,c,o,l,d),p=ge(l,u),m=ge(u,d);if(p==null||m==null)return Promise.resolve(null);let h={context:this.uid,geometryBuffer:t.geometryBuffer,geometryData:t.geometryData,geometryDescriptor:t.geometryDescriptor,layouts:i,globalTrafo:f,geometryElevationOffset:c,mbs:s.toJSON(),obbData:e.serviceObbInIndexSR?.data,elevationOffset:c,planetRadiusInGlobalMode:this._planetRadiusInGlobalMode,needNormals:this._controller.isMeshPyramid||this._imVertexNormals,computeNormals:this._isIntegratedMesh&&this._imVertexNormals,normalReferenceFrame:o,indexToVertexProjector:p,vertexToRenderProjector:m};return this._workerHandle.invoke(h,n)}get _supportsNodeCrossFading(){return!this.view?.stage?.renderer.shadowsEnabled}get nodeCrossfadingEnabled(){return this._supportsNodeCrossFading&&(this.lodCrossfadeinDuration>0||this.lodCrossfadeoutDuration>0||this.lodCrossfadeUncoveredDuration>0)}get nodeFadeoutEnabled(){return this._supportsNodeCrossFading&&this.lodCrossfadeoutDuration>0}_setNewNodeOpacity(e){let t=this.nodeCrossfadingEnabled?0:this.fullOpacity;this._setNodeOpacity(e,t)}addCachedGPUData(e,t,n){if(this.elevationInfo.mode===0&&(e.geometryObbInRenderSR=this._collection.getComponentObb(t.objectHandle).clone()),!this._controller.isGeometryVisible(e)){this._cacheGPUData(t);return}let r=e.index;this._addNodeMeta(r,t),this.updateNodeState(r,n),this._collection.setObjectVisibility(t.objectHandle,!0),this._updateElevationOffsets(t),this._labeler!=null&&this._addMetaToLabeler(this._labeler,t),this._updateMaterial(t),this._setNewNodeOpacity(t),this.elevationInfo.mode!==0&&this._ensureElevationTask().schedule(r),this._updateEngineObject(t),this._highlights?.objectCreated(t),this._treeDebugger!=null&&this._treeDebugger.update()}addCachedNodeData(e,t,n,r){return this._addData(e,n,()=>this._addCachedNodeData(e,t,r))}async deleteCachedNodeData(e){if(this._idbCacheEnabled)return this._idbCache.remove(this._getCacheKey(e))}async _addCachedNodeData(e,t,n){if(!this.contentVisible||!this._controller.isGeometryVisible(e)){this._removeNodeStageData(e.index,this.elevationOffset,this._nodeId2MetaReloading);return}if(t==null){this._addNodeMeta(e.index,null);return}let r=this._addTasks.get(e.index),{geometryData:i,transformedGeometry:o}=t;await this.i3sOverrides.applyAttributeOverrides(i.featureIds,r.attributeInfo,n,this._controller.requiredAttributes);let s=t.textureData==null?[]:t.textureData.filter(e=>e!=null&&(e.usage&this.rendererTextureUsage)!==0);!has(`disable-feature:i3s-basis`)&&s.some(e=>e!=null&&(e.encoding===2||e.encoding===1))&&await wt(),e.memory=0;let{componentOffsets:c,geometries:l,featureIds:u,anchorIds:d,anchors:f}=i,p=this._collection,m=l[0],{layout:h,indices:g,interleavedVertexData:_,positionData:v,hasColors:se}=o,{material:x,geometryParameters:S}=this._materialParameters(m,h),C=_.byteLength/h[0].stride,ue=c||new Uint32Array([0,g?g.length:C]),w=m.transformation?ae(m.transformation):oe(),E=P(t.globalTrafo);re(w,E,w);let fe=ie(T(),w),D=y(te(),w),me=this._isIntegratedMesh?this._imShading?2:0:1,he=S.textureCoordinateType,ge=!b(D,ne),k=new bt(h,me,he,+!!ge),_e=new xt({interleavedVertexData:_,vertexCount:C,indexData:g},{positions:ve(v.data),indices:ye(v.indices)},ue,k),A=this.view.renderSpatialReference,j=this.view.groundView.spatialReference,M=J.fromData(ht(t.geometryObbData)).getCenter(Zt),N=[1,1,1];pe(M,A,N,j)||a.getLogger(this).errorOnce(`Unsupported coordinate system for IM overlay`);let F=T();O(M,A,F,j);let I=te();ee(I,D);let L=T();ce(L,le(L,M,fe),I);let be=F[0]-L[0]*N[0],xe=F[1]-L[1]*N[1],Se=S.textureCoordinateType===2,{textures:R,texturePromise:Ce,materialParameters:we}=this._initMaterialAndTextures(x,s,Se,e),z=p.createObject(new vt(de(be,xe,N[0],N[1]),new Ct(fe,D),J.fromData(ht(t.geometryObbData)),_e,has(`enable-feature:im-as-ground`)?!this.layer.isUsedAsGroundLayer:!this._isIntegratedMesh),we);e.memory+=this._memEstimateGeometryAdded(z),e.memory+=R.reduce((e,t)=>e+(t==null?0:this._memEstimateTextureAdded(t)),0);let B=!!x.hasParametersFromSource,Te=x.alphaMode!==`blend`&&x.metallicRoughness.baseColorFactor[3]>=1,V=new kt(e,u,z,this._getInvalidRendererVersion(),r.attributeInfo,{hasParametersFromSource:B,isOpaque:Te},R,d,f,t.geometryMinElevation,t.geometryMaxElevation);r.meta=V,this._hasTextures||=t.requiredTextures?.some(({usage:e})=>!!(e&19))||!!e.resources.texture,this._hasData=!0,this._hasColors||=se,this.notifyChange(`hasTexturesOrVertexColors`);let Ee=this.slicePlaneEnabled;return Promise.all([this._addOrUpdateEdgeRendering(V),Ce]).then(([t,r])=>(this._addTasks.has(e.index)&&t?.updateObjectVisibility(V.objectHandle,!1).catch(e=>this._logEdgeViewError(e,this.layer.title)),this._safeReschedule(()=>{let n=this._addTasks.get(e.index);if(!n)return;if(this._addNodeMeta(e.index,V),n.meta=null,!this.contentVisible){this._removeNodeStageData(e.index,this.elevationOffset);return}p.setObjectVisibility(z,!0),t?.updateObjectVisibility(V.objectHandle,!0).catch(e=>this._logEdgeViewError(e,this.layer.title)),V.attributeInfo=n.attributeInfo;let r=V.cachedRendererVersion!==this._rendererVersion,i=Ee!==this.slicePlaneEnabled;this._updateElevationOffsets(V);let a=V.elevationOffsets;this._updateComponentData(V);let o=this._applyFiltersToNode(V);(r||t!=null&&(i||o||a))&&this._addOrUpdateEdgeRendering(V).catch(()=>{}),this._labeler!=null&&this._addMetaToLabeler(this._labeler,V),this._visibleGeometryChanged(V,0),this._highlights?.objectCreated(V),this._updateMaterial(V),this._setNewNodeOpacity(V),this._treeDebugger!=null&&this._treeDebugger.update()},n))).catch(e=>{let{meta:t,allowMemCache:n}=r;throw r.meta=null,t&&n?this._cacheGPUData(t):t&&this._deleteComponentObject(t),e})}_addNodeMeta(e,t){if(this._removeNodeStageData(e,this.elevationOffset,this._nodeId2MetaReloading),this._nodeId2Meta.has(e)){a.getLogger(this).error(`Removing duplicated node`);let t=this._nodeId2Meta.get(e);t&&(this._deleteComponentObject(t),this._updateFeatureIdCounts(t,-1))}else this._controller.updateLoadStatus(e,!0);t&&(t.lodCrossfadeProgress=null,this.nodeCrossfadingEnabled&&X(t.cachedEdgeMaterials,0),this._updateFeatureIdCounts(t,1)),this._nodeId2Meta.set(e,t),this.notifyChange(`elevationRange`)}_updateElevationOffsets(e){if(!e.node.serviceMbsInIndexSR)return;let{view:t,elevationInfo:n}=this,r=this._controller.crsIndex,{groundView:i,groundSpatialReference:a,renderSpatialReference:o}=t,s=n.mode;if(s===0){e.elevationAlignmentOffset=n.offset,e.elevationOffsets=null,e.updateGeometryElevationRange(),this.notifyChange(`elevationRange`);return}if(e.elevationAlignmentOffset=0,o==null||a==null){e.elevationOffsets=null,e.updateGeometryElevationRange(),this.notifyChange(`elevationRange`);return}let c=this._collection.getObjectTransform(e.objectHandle);e.elevationOffsets=e.elevationOffsets??[];let l=Ut,u=Wt,d=s===2,f=this.view.renderCoordsHelper,p=e.featureIds.length,m=(()=>{if(e.cachedElevationAnchors)return e.cachedElevationAnchors;let t=N(p*3);e.cachedElevationAnchors=t;let{center:n}=e.node.serviceMbsInIndexSR;for(let i=0;i<p;i++){let s=i*3,d=e.anchorIds?.indexOf(i)??-1;if(e.anchors&&d>=0){x(l,e.anchors[d*3],e.anchors[d*3+1],e.anchors[d*3+2]),C(l,l,n),O(l,r,l,a),t[s]=l[0],t[s+1]=l[1],t[s+2]=f.getAltitude(l);continue}this._collection.getComponentAabb(e.objectHandle,i,u,!0),x(l,(u[0]+u[3])/2,(u[1]+u[4])/2,u[2]),ce(l,l,c.rotationScale),C(l,l,c.position),t[s+2]=f.getAltitude(l),O(l,o,l,a),t[s]=l[0],t[s+1]=l[1]}return t})(),h=n.offset,g=e.elevationOffsets;i.getElevations(m,p,(e,t)=>{let n=d?m[e*3+2]:0;g[e]=h+(t??0)-n}),e.updateGeometryElevationRange(),this.notifyChange(`elevationRange`)}_ensureElevationTask(){return this._elevationTask??=new ze(this.view.resourceController.scheduler,e=>this._controller.updateElevationChanged(e,this.view.groundView.spatialReference)?.filterInPlace(e=>this._nodeId2Meta.get(e)!=null),e=>this._nodeElevationAlignmentChanged(this._nodeId2Meta.get(e)),()=>this.elevationInfo?.mode),this._elevationTask}_elevationInfoChanged(e,t){let n=e.mode!==0,r=!!t&&t!==e&&t.mode!==0;this._intersectionHandler.updateElevationAlignState(n,this.view.state.viewingMode),n&&!r&&this._controller.removeAllGeometryObbs(),this._nodeId2Meta.forEach(e=>this._nodeElevationAlignmentChanged(e))}_nodeElevationAlignmentChanged(e){e!=null&&(this._updateElevationOffsets(e),this._updateComponentData(e),this._updateEdgeRendering(e),this._labeler!=null&&this._labeler.updateLabelPositions(e),this._updateSnappingSources(e,2),this._elevationProvider.notifyObjectChanged(this._collection.getComponentObb(e.objectHandle)))}_safeReschedule(e,t){return d(t),this._controller.reschedule(e,t)}_materialParameters(e,t){let n=e.params.material==null?qe():e.params.material,r=t.some(({name:e})=>e===`uvRegion`),i=t.some(({name:e})=>e===`normalCompressed`),a=Lt(n);return{geometryParameters:this._getGeometryParameters({hasTexture:a,hasNormals:i,hasRegions:r}),material:n}}_initMaterialAndTextures(e,t,n,r){let i=this._stage.renderView,a=e=>{this._gpuMemoryEstimate-=e,this._texMemoryEstimate-=e,r.memory-=e},o=t.map(t=>Je(t,e,n,i,this._compressionTracker,a));this._stage.addTextures(o);let{materialParameters:s,texturePromise:c}=Ye(e,o,t,this.view.stage.renderView.textures,{rendererTextureUsage:this.rendererTextureUsage,usePBR:this._usePBR,isIntegratedMesh:this._isIntegratedMesh,isGround:this.layer.isUsedAsGroundLayer,slicePlaneEnabled:this.slicePlaneEnabled,viewSpatialReference:this.view.spatialReference,applySSAO:this._applySSAO});return{textures:o,texturePromise:c,materialParameters:s}}_getGeometryParameters(e){return new St(this._hasVertexColors,e.hasNormals,e.hasTexture?e.hasRegions?2:1:0)}_addData(e,t,n){let r=this._addTasks.get(e.index);if(r)r.attributeInfo=t;else{let i=Promise.withResolvers();r=new Ht(t,null,i.promise),this._addTasks.set(e.index,r),n().then(i.resolve,i.reject).then(()=>this._addTasks.delete(e.index)).catch(t=>{throw this._addTasks.delete(e.index),t})}return r.promise}_clearAddTasks(){this._addTasks.forEach(e=>{e.meta!=null&&(this._cacheGPUData(e.meta),e.meta=null)}),this._addTasks.clear()}_clippingAreaChanged(){let e=this.view.renderSpatialReference,t=this.layer.spatialReference,n=j();this._renderClippingArea=mt(this.view.clippingArea,n,e)?n:null;let r=j();this._layerClippingArea=mt(this.view.clippingArea,r,t)?r:null,this._filterChange(),this._controller&&this._controller.updateClippingArea(this.view.clippingArea),this._isIntegratedMesh&&this._modificationsChanged()}get hasGeometryFilter(){return!1}_geometryFilterChange(){let e=this.hasGeometryFilter;this._controller.geometryFilterChanged(e),this._applyFilters(e),this._assertFeatureIdNodeCounts(e)}_assertFeatureIdNodeCounts(e){e&&!this._featureIdCounts?(this._featureIdCounts=$(this._nodeId2Meta.values()),this._filteredIdCounts=$(this._nodeId2Meta.values(),1),this._weaklyRemovedIdCounts=$(this._nodeId2Meta.values(),2),this.addHandles(p(()=>this._controller.updating,e=>{!e&&this._needFilterResolve&&(this.multiGeometryFilterResolve(),this._needFilterResolve=!1,this.notifyUpdate())},{sync:!0}),`updateFinished`)):!e&&this._featureIdCounts&&(this._featureIdCounts=null,this._filteredIdCounts=null,this._weaklyRemovedIdCounts=null,this._mismatchShow=null,this._mismatchHide=null,this.removeHandles(`updateFinished`),this._needFilterResolve=!1,this.notifyUpdate())}_updateFeatureIdCounts(e,t){this._featureIdCounts&&(this._needFilterResolve=!0,Q(this._featureIdCounts,e.featureIds,t),Q(this._filteredIdCounts,e.filteredIds,t),Q(this._weaklyRemovedIdCounts,e.weaklyRemovedIds,t))}_updateFilteredIdCounts(e,t,n){this._filteredIdCounts&&(this._needFilterResolve=!0,Q(this._filteredIdCounts,t,-1),Q(this._filteredIdCounts,e.filteredIds,1),Q(this._weaklyRemovedIdCounts,n,-1),Q(this._weaklyRemovedIdCounts,e.weaklyRemovedIds,1))}_checkFeatureIdNodeCountInvariant(){let e=this._featureIdCounts!=null;if(this.hasGeometryFilter!==e&&a.getLogger(this).error(`checkFeatureIdNodeCountInvariant()`,`LayerView should have feature id node counts if and only if it has a geometry filter`,{layerView:this,hasNodeCounts:e}),!this._featureIdCounts||!this._filteredIdCounts)return;let t=$(this._nodeId2Meta.values());o(this._featureIdCounts,t)||a.getLogger(this).error(`checkFeatureIdNodeCountInvariant()`,`Incorrect _featureIdCounts`,{layerView:this,counts:this._featureIdCounts,expected:t});let n=$(this._nodeId2Meta.values(),1);o(this._filteredIdCounts,n)||a.getLogger(this).error(`checkFeatureIdNodeCountInvariant()`,`Incorrect _filteredIdCounts`,{layerView:this,counts:this._filteredIdCounts,expected:n});let r=$(this._nodeId2Meta.values(),2);o(this._weaklyRemovedIdCounts,r)||a.getLogger(this).error(`checkFeatureIdNodeCountInvariant()`,`Incorrect _weaklyRemovedIdCounts`,{layerView:this,counts:this._weaklyRemovedIdCounts,expected:n})}multiGeometryFilterResolve(){if(!this._featureIdCounts||!this._filteredIdCounts)return;let e=null,t=null;for(let[n,r]of this._filteredIdCounts){let i=this._featureIdCounts.get(n);i!==r&&(r+(this._weaklyRemovedIdCounts?.get(n)??0)===i?(e??=new Set,e.add(n)):(t??=new Set,t.add(n)))}h(e,this._mismatchShow)&&h(t,this._mismatchHide)||(this._mismatchShow=e,this._mismatchHide=t,this._nodeId2Meta.forEach(e=>{if(!e?.filteredIds)return;let t=Xt(e,this._mismatchShow,this._mismatchHide);this._collection.setAllComponentVisibilities(e.objectHandle,t),this._visibleGeometryChanged(e,2)}))}_filterChange(){this._applyFilters(this.hasGeometryFilter)}_applyFilters(e){this._filters=this.getFilters(),e?this._controller&&this._controller.requestUpdate():this._nodeId2Meta.forEach(e=>{e&&this._applyFiltersToNode(e)&&(this._addOrUpdateEdgeRendering(e).catch(()=>{}),this._visibleGeometryChanged(e,2))})}getFilters(){let e=[],t=this._renderClippingArea;return t!=null&&e.push((e,n)=>this._boundingRectFilter(e,n,t)),e}addSqlFilter(e,t,n){if(t!=null){let r=t.fieldNames;e.push((e,i)=>this._sqlFilter(e,i,t,r,n))}}_sqlFilter(e,t,n,r,i){let a={},o=this._createLayerGraphic(a);if(!o)return;let s=this.layer.objectIdField,c=t.featureIds,l=t.attributeInfo?.attributeData;r.every(e=>e===s||l?.[e]!=null)&&rt(e,c,e=>{a[s]=c[e];for(let t of r)t!==s&&(a[t]=l?H(l[t],e):null);try{return n.testFeature(o)}catch(e){return i(e),!1}})}_boundingRectNodeTest(e,t){return me(e.node.serviceMbsInIndexSR,this._controller.crsIndex,It,this.view.renderSpatialReference),it(t,It)}_boundingRectFeatureTest(e,t,n){return this._collection.getComponentAabb(e.objectHandle,t,jt),A(jt,Mt),M(n,Mt)}_boundingRectFilter(e,t,n){let r=this._collection,i=this._boundingRectNodeTest(t,n);if(i===3)return;if(i===0){e.length=0;return}let a=r.getComponentCount(t.objectHandle);if(a.invisible+a.visible!==t.featureIds.length)return;let o=this._transformClippingArea(Nt,n,t.objectHandle);rt(e,t.featureIds,e=>this._boundingRectFeatureTest(t,e,o))}_transformClippingArea(e,t,n){let r=this._collection.getObjectTransform(n),i=r.position,a=r.rotationScale;return e[0]=(t[0]-i[0])/a[0],e[1]=(t[1]-i[1])/a[4],e[2]=(t[2]-i[0])/a[0],e[3]=(t[3]-i[1])/a[4],e}async _addOrUpdateEdgeRendering(e,t=!0){let n=e.objectHandle,{hasEdges:r,perFeatureEdgeMaterials:i}=this._getFilteredEdgeMaterials(e);if(r&&!this._edgeView)try{this._edgeView=await this._stage.renderer.loadEdgeView()}catch(e){if(!u(e))throw e}let a=this._edgeView;if(!a)return null;let o=a.hasObject(n);if(r){if(o)return this.nodeCrossfadingEnabled&&X(i,this.getNodeOpacity(e)),a.updateAllComponentMaterials(n,i,this.slicePlaneEnabled,t).catch(e=>this._logEdgeViewError(e,this.layer.title)),a.updateObjectVisibility(n,!0).catch(e=>this._logEdgeViewError(e,this.layer.title)),a.updateAllVerticalOffsets(n,e.elevationOffsets).catch(e=>this._logEdgeViewError(e,this.layer.title)),a;let r=await this._collection.addEdges(n,a,i,this.slicePlaneEnabled,e.elevationOffsets);return e.edgeMemoryUsage=r,e.node.memory+=r,a}return o&&(e.node.memory-=e.edgeMemoryUsage,e.edgeMemoryUsage=0,a.removeObject(n)),null}_applyFiltersToNode(e){let{filteredIds:t,weaklyRemovedIds:n}=e,r=this._applyFiltersToNodeComponents(e);return this._updateFilteredIdCounts(e,t,n),r&&this._labeler?.applyFilterChange(e),r}_applyFiltersToNodeComponents(e){let t=this._collection,n=t.getComponentCount(e.objectHandle),r=e.filteredIds!=null,i=n.invisible===0;if(t.setAllComponentVisibilities(e.objectHandle,`all`),this._filters.length===0)return e.filteredIds=null,!i;if((e.filteredIds==null||e.appliedFilters!==this._filters)&&(e.weaklyRemovedIds=null,e.filteredIds=Yt(e,this._filters),e.appliedFilters=this._filters),r&&e.filteredIds===e.featureIds&&(!this._mismatchHide||e.filteredIds.every(e=>!this._mismatchHide?.has(e))))return!i;let a=Xt(e,this._mismatchShow,this._mismatchHide);return t.setAllComponentVisibilities(e.objectHandle,a),!0}_removeAllNodeDataFromStage(e=this.elevationOffset){this._nodeId2Meta.forEach((t,n)=>this._removeNodeStageData(n,e)),this._nodeId2MetaReloading.forEach((t,n)=>this._removeNodeStageData(n,e,this._nodeId2MetaReloading)),this._elevationTask=s(this._elevationTask)}removeNode(e){let t=this.elevationOffset;this._removeNodeStageData(e,t),this._removeNodeStageData(e,t,this._nodeId2MetaReloading),this._elevationTask!=null&&this._elevationTask.remove(e)}_removeNodeStageData(e,t,n=this._nodeId2Meta){n.has(e)&&this._controller.updateLoadStatus(e,!1);let r=n.get(e);if(r==null){n.delete(e);return}this._collection.setObjectVisibility(r.objectHandle,!1),this._edgeView!=null&&this._edgeView.hasObject(r.objectHandle)&&this._edgeView.updateObjectVisibility(r.objectHandle,!1).catch(e=>this._logEdgeViewError(e,this.layer.title)),this._visibleGeometryChanged(r,1),this._labeler!=null&&this._labeler.removeNodeMeta(r),n.delete(e),this._highlights?.objectDeleted(r),n===this._nodeId2Meta?(this._updateFeatureIdCounts(r,-1),this._cacheGPUData(r,t),this.nodeCrossfadingEnabled&&this._crossfadeHelper.stopNodeFading(r)):this._deleteComponentObject(r),this._treeDebugger!=null&&this._treeDebugger.update()}_deleteComponentObject(e){if(this._edgeView!=null&&this._edgeView.removeObject(e.objectHandle),this._memEstimateGeometryRemoved(e.objectHandle),this._collection.destroyObject(e.objectHandle),e.textures)for(let t of e.textures)this._memEstimateTextureRemoved(t),this._stage.removeTexture(t)}updateNodeState(e,t){this._nodeId2Meta.get(e)?.objectHandle.updateMaterial({polygonOffset:+(t===0)})}updateNodeIndex(e,t){if(this._nodeId2Meta.has(e)){let n=this._nodeId2Meta.get(e);this._nodeId2Meta.delete(e),this._nodeId2Meta.set(t,n),this.notifyChange(`elevationRange`)}let n=this._nodeId2MetaReloading.get(e);n&&(this._nodeId2MetaReloading.delete(e),this._nodeId2MetaReloading.set(t,n))}_invalidateAllSymbols(){this._rendererVersion=U(this._rendererVersion,1),this._controller?.requestUpdate()}_getInvalidRendererVersion(){return U(this._rendererVersion,-1)}async _rendererChange(e){if(this._currentRenderer=e,this.notifyChange(`rendererTextureUsage`),this._rendererVersion=U(this._rendererVersion,1),this._rendererFields=null,this._colorVariable=null,this._opacityVariable=null,this._invalidateAllSymbols(),e&&(this._rendererFields=await e.getRequiredFields(this.layer.fieldsIndex)),this._updateSymbologyFields(),!this._arcade&&e&&`arcadeRequired`in e&&e.arcadeRequired&&(this._arcade=await Te()),e&&`visualVariables`in e&&e.visualVariables)for(let t of e.visualVariables)t.type===`color`?this._colorVariable=t:t.type===`opacity`?this._opacityVariable=t:a.getLogger(this).warn(`Unsupported visual variable type for 3D Object Scene Services: ${t.type}`);if(e)for(let t of e.symbols)t.type!==`mesh-3d`&&a.getLogger(this).error(`Symbols of type '${t.type}' are not supported for 3D Object Scene Services.`);this._controller&&this._controller.requestUpdate()}_getCachedEdgeMaterials(e){return this._hasComponentData&&e.cachedRendererVersion!==this._rendererVersion&&this._updateCachedRendererData(e),e.cachedEdgeMaterials}_getComponentParameters(e){this._hasComponentData&&e.cachedRendererVersion!==this._rendererVersion&&this._updateCachedRendererData(e);let t=e.cachedSymbology;return(n,r)=>{let i=n*e.cachedSymbologyStride;E(r.externalColor,t[i]/255,t[i+1]/255,t[i+2]/255,t[i+3]/255);let a=this._stage.renderView.olidRenderHelper;if(a){let t=e.featureIds[n],i=this.sublayerId?`${this.layerViewUid}_${this.sublayerId}`:this.layerViewUid,o=z(this.view,this.uid);a.setUidToObjectAndLayerId(t,t,this.layerId,i,this.layerPopupEnabledAndHasTemplate&&!o,e.node.resources.attributes,n,this.sublayerId),r.olidColor=a.getObjectAndLayerIdColor({graphicUid:t,layerViewUid:i})}r.externalColorMixMode=t[i+4]&15,r.castShadows=!!(t[i+4]&16),r.pickable=!!(t[i+4]&32),r.elevationOffset=e.elevationOffsets?.[n]??0,r.emissiveStrength=e.emissiveStrengths?.[n]??1,r.emissiveSource=e.emissiveSources?.[n]??0}}_getSymbolInfo(e,t){let n=e?.getSymbol(t,{arcade:this._arcade});if(!(n instanceof V))return null;let r=n.id;if(this._symbolInfos.has(r))return this._symbolInfos.get(r);let i=at(n);return this._symbolInfos.set(r,i),i}_setSymbologyOverride(e,t){this._symbologyOverride!==e&&(this._symbologyOverride=e,this._symbologyOverrideFields=t,this._invalidateAllSymbols(),this._updateSymbologyFields())}_updateSymbologyFields(){this._symbologyFields=this._symbologyOverrideFields!=null&&this._symbologyOverrideFields.length>0?this._rendererFields!=null&&this._rendererFields.length>0?xe(this.layer.fieldsIndex,[...this._rendererFields,...this._symbologyOverrideFields]):this._symbologyOverrideFields:this._rendererFields}_updateCachedRendererData(e){if(e.cachedRendererVersion=this._rendererVersion,!this._hasComponentData)return;let t=this._tmpAttributeOnlyGraphic,n={};t.attributes=n;let r=this._currentRenderer,i=e.attributeInfo?.attributeData,a=e.featureIds?this.layer.objectIdField:null,o=i!=null&&this._symbologyFields!=null&&this._symbologyFields.length>0,s=null,c=null;if(o&&this._symbologyFields!=null){s=[],c=[];for(let e of this._symbologyFields){let t=i[e];t&&(s.push(e),c.push(t))}}e.cachedSymbology||=I(e.featureIds.length*e.cachedSymbologyStride);let l=new ut,u=this.fullOpacity,d=this.nodeCrossfadingEnabled?this.getNodeOpacity(e):u,f=null,p=1,m=W,h=0;for(let i=0;i<e.featureIds.length;i++){if(a!=null&&(n[a]=e.featureIds[i]),o&&s)for(let e=0;e<s.length;e++)n[s[e]]=H(c[e],i);let u=r?this._getSymbolInfo(r,t):null,g,_;if(l.pickable=!0,r&&`visualVariables`in r){if(this._colorVariable){let e=Ce(this._colorVariable,t,{color:Ft,arcade:this._arcade});e&&(g=l.color,g[0]=e.r/255,g[1]=e.g/255,g[2]=e.b/255,g[3]=e.a??1,!this._opacityVariable&&e.a!==null&&(_=e.a))}this._opacityVariable&&(_=we(this._opacityVariable,t,{arcade:this._arcade}))}if(u?.material){let e=u.material;g=g==null||_==null?Ie(g,_,e.color,e.alpha,Ot,l.color):Ie(g,_,null,null,Ot,l.color)}g??=E(l.color,1,1,1,1);let v=u?.material;if(l.colorMixMode=v?.colorMixMode??1,l.edgeMaterial=u?.edgeMaterial,this._symbologyOverride?.(t,l),this._nodeColorOverride!=null&&(this._nodeColorOverride(e.node,g),l.colorMixMode=3),l.pickable&&=g[3]>=Dt,l.castShadows=u?u.castShadows:l.pickable,l.edgeMaterial!=null){let t=g[3]>=1&&(e.material.isOpaque||l.colorMixMode===3)?1:0;(l.edgeMaterial!==f||t!==p)&&(m={...l.edgeMaterial,opacity:d,objectTransparency:t},f=l.edgeMaterial,p=t),e.cachedEdgeMaterials[i]=m}else e.cachedEdgeMaterials[i]=W;e.cachedSymbology[h++]=Math.round(g[0]*255),e.cachedSymbology[h++]=Math.round(g[1]*255),e.cachedSymbology[h++]=Math.round(g[2]*255),e.cachedSymbology[h++]=Math.round(g[3]*255),e.cachedSymbology[h++]=l.colorMixMode|l.castShadows<<4|l.pickable<<5;let y=v?.emissive?.strength==null?Y:v?.emissive?.strength;y!==Y&&!e.emissiveStrengths&&(e.emissiveStrengths=Array(e.featureIds.length).fill(Y)),e.emissiveStrengths&&(e.emissiveStrengths[i]=y);let b=v?.emissive?.source||0;b!==0&&!e.emissiveSources&&(e.emissiveSources=Array(e.featureIds.length).fill(0)),e.emissiveSources&&(e.emissiveSources[i]=b)}}_getFilteredEdgeMaterials(e){let t=this._getCachedEdgeMaterials(e);this.nodeCrossfadingEnabled||X(t,this.fullOpacity);let n=e.filteredIds;if(n==null)return{hasEdges:t.some(e=>e!==W),perFeatureEdgeMaterials:t};let r=0,i=!1,a=t.map((t,a)=>e.featureIds[a]===n[r]?(i||=t!==W,r++,t):W);return{hasEdges:i,perFeatureEdgeMaterials:a}}_updateComponentData(e){if(!this._hasComponentData)return;let{objectHandle:t}=e,n=this._getComponentParameters(e);this._collection.setComponentData(t,n),this._stage.renderView.requestRender()}_reloadAll(e=this.elevationOffset){this._removeAllNodeDataFromStage(e),this._controller!=null&&this._controller.restartNodeLoading()}_refreshGroundUsage(){this._intersectionHandler.isGround=has(`enable-feature:im-as-ground`)?this.layer.isUsedAsGroundLayer:this._isIntegratedMesh,this.contentVisible&&(this.view.elevationProvider.unregister(this._elevationProvider),this.view.elevationProvider.register(this._elevationContext,this._elevationProvider)),this._reloadAll(),this.clearMemCache()}_opacityChange(e){this.nodeCrossfadingEnabled&&this._crossfadeHelper.stopAllNodeFading(),this._nodeId2Meta.forEach(t=>{t!=null&&(this._collection.updateObjectOpacity(t.objectHandle,e),X(t.cachedEdgeMaterials,e),this._updateEdgeRendering(t))})}_updateMaterial(e){e.objectHandle.updateMaterial({slicePlaneEnabled:this.slicePlaneEnabled,usePBR:this._usePBR})}_updateEngineObject(e){this._updateComponentData(e),this._applyFiltersToNode(e),this._addOrUpdateEdgeRendering(e).catch(()=>{}),this._visibleGeometryChanged(e,2)}intersect(e,t,n,r){this._intersectionHandler.intersectRay(e,t,n,r,null,!1)}_slicePlaneEnabledChange(e){this._intersectionHandler&&(this._intersectionHandler.slicePlaneEnabled=e),this._labeler!=null&&(this._labeler.slicePlaneEnabled=e),this._foreachMeta(t=>{t.objectHandle.updateMaterial({slicePlaneEnabled:e}),this._updateEdgeRendering(t,!1)})}_updatePBR(e){this._foreachMeta(t=>t.objectHandle.updateMaterial({usePBR:e})),this._hasLoadedPBRTextures=!0}_foreachMeta(e){this._nodeId2Meta.forEach(t=>{t!=null&&e(t)})}get _usePBR(){return this._imShading&&this.view.qualitySettings.physicallyBasedRenderingEnabled}_updateEdgeRendering(e,t=!0){this._edgeView!=null&&this._edgeView.hasObject(e.objectHandle)&&this._addOrUpdateEdgeRendering(e,t).catch(()=>{})}_forAllNodes(e){this._nodeId2Meta.forEach(e)}_ignoreClientNodeOverriddenFeatures(e){return this.i3sOverrides.hasGeometryChanges?(t,n,r)=>r.node.index>=0&&this.i3sOverrides.featureHasGeometryChanges(t)?0:e(t,n,r):e}_forAllFeatures(e,t,n){for(let r of this._nodeId2Meta.values())if(r!=null&&!(t&&r.node.serviceMbsInIndexSR&&t(r.node.serviceMbsInIndexSR)===1))switch(n){case 1:this._forAllFeaturesOfNode(r,e);break;case 0:this._forAllVisibleFeaturesOfNode(r,e);break;case 2:this._forAllQueryableFeaturesOfNode(r,e)}}_forAllFeaturesOfNode(e,t){e.featureIds.forEach((n,r)=>t(n,r,e))}_forAllVisibleFeaturesOfNode(e,t){let n=e.featureIds;this._collection.forEachVisibleComponent(e.objectHandle,r=>t(n[r],r,e)===0)}_forAllQueryableFeaturesOfNode(e,t){let n=this._ignoreClientNodeOverriddenFeatures(t);if(this._renderClippingArea==null)return this._forAllFeaturesOfNode(e,n);let r=this._boundingRectNodeTest(e,this._renderClippingArea);if(r===0)return;if(r===3)return this._forAllFeaturesOfNode(e,n);let i=e.featureIds,a=e.objectHandle,o=ot(this._renderClippingArea,this._collection.getObjectTransform(a));for(let t=0;t<i.length;t++)this._boundingRectFeatureTest(e,t,o)&&n(i[t],t,e)}_createAttributes(e,t){let n={};t.featureIds!=null&&(n[this._getObjectIdField()]=t.featureIds[e]);let r=t.attributeInfo?.attributeData;if(r!=null)for(let t of Object.keys(r))n[t]=H(r[t],e);return n}_createGraphic(e,t){return this._createLayerGraphic(this._createAttributes(e,t))}highlight(e,t){let r=dt(e);if(r.length===0)return ft;let i=Tt(t),a=r[0]instanceof n?this._featureIdsFromGraphics(r):typeof r[0]==`number`?r:null;if(!a)return ft;let o=this._ensureHighlights(),{set:s,handle:c}=o.acquireSet(i);return o.setFeatureIds(s,a),c}_featureIdsFromGraphics(e){let t=this.layer.fieldsIndex,n=this._getObjectIdField();return e.map(e=>G(t,e.attributes,n))}_ensureHighlights(){return this._highlights??=new Re({collection:this._collection,forAllFeatures:e=>this._forAllFeatures(e,null,1),forAllFeaturesOfNode:(e,t)=>this._forAllFeaturesOfNode(e,t)}),this._highlights}resetHighlights(){this._highlights=s(this._highlights)}_visibleGeometryChanged(e,t){this._elevationProvider&&(this._visibleGeometryChangedSchedulerHandle??=m(()=>{let{node:t}=e,n=t.visibilityObbInRenderSR??t.geometryObbInRenderSR??t.serviceObbInRenderSR;if(n!=null){let e=k();n.toAaBoundingBox(e),this.emit(`visible-geometry-changed`,new De(e))}else this.emit(`visible-geometry-changed`);this._visibleGeometryChangedSchedulerHandle=null}),this._updateSnappingSources(e,t),this._elevationProvider.notifyObjectChanged(this._collection.getComponentObb(e.objectHandle)))}get performanceInfo(){return new ke(this.usedMemory,this._nodeId2Meta.size,Math.round(this._gpuMemoryEstimate/1048576),Math.round(this._geoMemoryEstimate/1048576),Math.round(this._texMemoryEstimate/1048576),Math.round(this.unloadedMemory/1048576),this._idbCacheEnabled?Math.round(this._idbCache.getHitRate()*100):0)}checkInvariants(){}get test(){}getNodeOpacityByIndex(e){let t=this._nodeId2Meta.get(e);return this.getNodeOpacity(t)}getNodeOpacity(e){return e==null?0:this._collection.getObjectOpacity(e.objectHandle)}isNodeFullyFadedIn(e){return this._crossfadeHelper.isNodeFullyFadedIn(e)}getNodeCrossfadeMetaData(e){return this._nodeId2Meta.get(e)}getNodeComponentHandle(e){return this._nodeId2Meta.get(e)?.objectHandle}markNodeToRemove(e){this._controller&&this._controller.markNodeToRemove(e)}removeMarkedNodes(){this._controller&&this._controller.removeMarkedNodes()}foreachCrossfadeNode(e){this._nodeId2Meta.forEach(e)}fadeNode(e,t,n){if(!this.nodeCrossfadingEnabled)return;let r=this._nodeId2Meta.get(e);r!=null&&this._crossfadeHelper.fadeNode(e,r,t,n)}setNodeOpacityByIndex(e,t){let n=this._nodeId2Meta.get(e);n!=null&&this._setNodeOpacity(n,t)}_setNodeOpacity(e,t){this._collection.updateObjectOpacity(e.objectHandle,t),this._setNodeEdgeOpacity(e,t)}_setNodeEdgeOpacity(e,t){if(this._edgeView==null||!e.cachedEdgeMaterials)return;X(e.cachedEdgeMaterials,t);let n=e.objectHandle;this._edgeView.hasObject(n)&&this._edgeView.updateAllComponentOpacities(n,t).catch(e=>this._logEdgeViewError(e,this.layer.title))}get hasModifications(){return this._isIntegratedMesh&&this._layerClippingArea!=null||this._modifications&&this._modifications.length>0}updateNodeModificationStatus(e){let t=e.length;if(!this.hasModifications||t<=0||this._i3sWasmLoaded!==!0)return;let n=this.uid,r=Vt(e);if(r){let t={context:n,buffer:r.buffer};Me(t);let i=new Float64Array(r.buffer);e.forAll((e,t)=>{let n=i[t],r=Ne(n);e.imModificationImpact=r,r!==0&&this._controller.invalidateGeometryVisibility(e.index)})}}notifyUpdate(){this.notifyChange(`updating`)}notifyLODUpdate(){this._controller.notifyLODUpdate()}isUpdating(){return!!(this._controller&&this._controller.updating)||!!this._visibleGeometryChangedSchedulerHandle||this._labeler!=null&&this._labeler.updating||this._crossfadeHelper?.updating||this._i3sWasmLoaded instanceof Promise||this._asyncModuleLoading>0||this._elevationTask!=null&&this._elevationTask.readyToRun||this._needFilterResolve||this._compressionTracker.compressing}trackSnappingSources(e){let t={events:e,fetchEdgeLocations:async(e,t,n)=>{let r=this._nodeId2Meta.get(e);if(r==null)throw Error(`invalid-node`);let{origin:i,buffer:a}=await this._collection.extractEdgeInformation(r.objectHandle,t,n);return this._snappingLocationsApplyElevation(r,a,i),{type:`components`,objectIds:r.featureIds,locations:a,origin:i}},remove:()=>r(this._snappingSourcesTrackers,t)};return this._snappingSourcesTrackers.push(t),this._nodeId2Meta.forEach((t,n)=>{if(t==null)return;let r=this._controller.getRenderMbs(t.node);r&&e.add(n,r)}),t}_snappingLocationsApplyElevation(e,t,n){if(!e.elevationOffsets||this.elevationInfo.mode===0)return;let r=t.position0,i=t.position1,a=t.componentIndex,o=T(),s=T(),c=(e,t)=>{C(e,e,n),this.view.renderCoordsHelper.worldUpAtPosition(e,s),C(e,e,ue(s,s,t)),w(e,e,n)};for(let t=0;t<r.count;t++){let n=e.elevationOffsets[a.get(t)];r.getVec(t,o),c(o,n),r.setVec(t,o),i.getVec(t,o),c(o,n),i.setVec(t,o)}}_updateSnappingSources(e,t){let{index:n}=e.node,r=this._controller.getRenderMbs(e.node);if(r!=null)for(let e of this._snappingSourcesTrackers)(t===1||t===2)&&e.events.remove(n),(t===0||t===2)&&e.events.add(n,r)}_logEdgeViewError(e,t){u(e)||a.getLogger(this).warn(`Error while processing edges. Edges on this layer might not display correctly`,t,e)}_indexedDbSizeCheck(e,t){return t.byteSize>104857600?(a.getLogger(this).warn(`Node is too big to store in IndexedDB cache: ${e.id} (${t.byteSize} bytes)`),!1):t.byteSize>0}get elevationProvider(){return this._elevationProvider}};return e([_()],F.prototype,`extractChanges`,null),e([_()],F.prototype,`_hasLoadedPBRTextures`,void 0),e([_()],F.prototype,`_asyncModuleLoading`,void 0),e([_()],F.prototype,`_visibleGeometryChangedSchedulerHandle`,void 0),e([_()],F.prototype,`view`,void 0),e([_()],F.prototype,`layer`,void 0),e([_()],F.prototype,`_controller`,void 0),e([_()],F.prototype,`_labeler`,void 0),e([_()],F.prototype,`updating`,void 0),e([_()],F.prototype,`suspended`,void 0),e([_()],F.prototype,`contentVisible`,null),e([_({readOnly:!0})],F.prototype,`legendEnabled`,null),e([_(gt)],F.prototype,`updatingProgress`,void 0),e([_()],F.prototype,`updatingProgressValue`,null),e([_()],F.prototype,`hasTexturesOrVertexColors`,null),e([_()],F.prototype,`rendererTextureUsage`,null),e([_()],F.prototype,`elevationOffset`,null),e([_()],F.prototype,`elevationInfo`,null),e([_({type:Boolean})],F.prototype,`slicePlaneEnabled`,void 0),e([_()],F.prototype,`supportedTextureEncodings`,null),e([_({type:[R]})],F.prototype,`_modifications`,void 0),e([_({readOnly:!0})],F.prototype,`clientGeometry`,null),e([_()],F.prototype,`elevationRange`,null),e([_()],F.prototype,`fullExtent`,null),e([_()],F.prototype,`_elevationTask`,void 0),e([_({readOnly:!0})],F.prototype,`_usePBR`,null),F=e([v(`esri.views.3d.layers.I3SMeshView3D`)],F),F},jt=k(),Mt=j(),Nt=j(),Pt=new J,Ft=new t([0,0,0,0]),It=new F(0,0,0,0);function Lt(e){if(e==null)return!1;let t=e.metallicRoughness;return t&&t.baseColorTextureId>=0||t&&t.metallicRoughnessTextureId>=0||e.normalTextureId>=0||e.emissiveTextureId>=0||e.occlusionTextureId>=0}function Rt(e){return`geometryData`in e}function zt(e){return e!=null&&g(e.data)}function Bt(e,t){let n=1024+e.interleavedVertexData.byteLength+(e.indices?e.indices.byteLength:0)+e.positionData.data.byteLength+e.positionData.indices.byteLength;if(t!=null)for(let e of t)e!=null&&g(e.data)&&(n+=e.data.byteLength);return n}function Vt(e){if(e.length===0)return;let t=e.length*10,n=new Float64Array(t),r=0;return e.forAll(e=>{let t=e.serviceObbInIndexSR;t??(t=Pt,e.serviceMbsInIndexSR?(t.setCenter(e.serviceMbsInIndexSR.center),t.setHalfSizeFromValues(e.serviceMbsInIndexSR.radius,e.serviceMbsInIndexSR.radius,e.serviceMbsInIndexSR.radius)):t.invalidate());let i=t.data;n[r++]=i[0],n[r++]=i[1],n[r++]=i[2],n[r++]=i[3],n[r++]=i[4],n[r++]=i[5],n[r++]=i[6],n[r++]=i[7],n[r++]=i[8],n[r++]=i[9]}),n}class Ht{constructor(e,t,n){this.attributeInfo=e,this.meta=t,this.promise=n,this.allowMemCache=!0}}function X(e,t){e.forEach(e=>e.opacity=t)}class Z{constructor(e,t){this.mode=e,this.offset=t}}const Ut=T(),Wt=k(),Gt=`elevation-change`,Kt=``,qt=`@null`,Jt=`@ECEF`;function Yt(e,t){let n=e.featureIds.slice();for(let r of t)if(r(n,e),n.length===0)break;return n.length===e.featureIds.length?e.featureIds:n}function Xt(e,t,n){let r=[],i=e.filteredIds;if(i!=null&&!t?.size&&!n?.size)e.featureIds.forEach((e,t)=>{i[r.length]===e&&r.push(t)});else if(i!=null){let a=0;e.featureIds.forEach((e,o)=>{if(i[a]===e)++a;else if(!t?.has(e))return;n?.has(e)||r.push(o)})}return r}function Q(e,t,n){if(e&&t)for(let r of t){let t=(e.get(r)??0)+n;t>0?e.set(r,t):e.delete(r)}}function $(e,t=0){let n=new Map;for(let r of e)Q(n,t===0?r?.featureIds:t===1?r?.filteredIds:r?.weaklyRemovedIds,1);return n}const Zt=T();export{At as I3SMeshView3D};
|