12345 |
- /*
- All material copyright ESRI, All Rights Reserved, unless otherwise specified.
- See https://js.arcgis.com/4.25/esri/copyright.txt for details.
- */
- import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../core/Logger.js";import{isNone as r,isSome as o}from"../../core/maybe.js";import{unwrapUpdating as i,updating as n,isUpdating as l}from"../../core/maybeUpdating.js";import{whenOnce as s}from"../../core/reactiveUtils.js";import{property as a}from"../../core/accessorSupport/decorators/property.js";import"../../core/arrayUtils.js";import"../../core/accessorSupport/ensureType.js";import{subclass as m}from"../../core/accessorSupport/decorators/subclass.js";import{project as p,canProjectWithoutEngine as u,isLoaded as c,load as y}from"../../geometry/projection.js";import g from"./LayerView.js";const d="esri.views.layers.SceneLayerView",h=t.getLogger(d);let f=class extends g{constructor(){super(...arguments),this.layer=null,this.filter=null,this._geometryEngine=null,this._projectionEngineLoaded=!1}get availableFields(){return[]}get maximumNumberOfFeatures(){return 0}set maximumNumberOfFeatures(e){throw new Error("Not implemented")}get maximumNumberOfFeaturesExceeded(){return!1}get layerFilter(){return i(this._layerFilter)}get _layerFilter(){const e=this.layer.filter;if(r(e)||e.geometries.length<1)return null;const t=this._geometryEngine;if(r(t)||!this._projectionEngineLoaded&&this._filterNeedsProjectionEngine)return n;const o=e.geometries.getItemAt(0).spatialReference,i=e.geometries.toArray().map((e=>{try{e=t.simplify(e)}catch(r){return h.warnOncePerTick("Failed to simplify scene filter mask polygon. Polygon will be ignored."),null}if(null==e)return null;if(e.spatialReference.equals(o))return e;try{return p(e,o)}catch(r){return h.warnOncePerTick("Failed to project scene filter mask polygon. Polygon will be ignored."),null}})).filter((e=>null!=e)).sort(((e,t)=>e.extent.xmin-t.extent.xmin)),l=new Set,s=new Array,a=new Array;for(let r of i){const e=r.extent.xmin;if(s.length=0,l.forEach((o=>{if(e>=o.extent.xmax)return a.push(o),void l.delete(o);r.extent.ymin<=o.extent.ymax&&r.extent.ymax>=o.extent.ymin&&t.intersects(r,o)&&s.push(o)})),s.length>0){s.push(r);try{r=t.union(s)}catch(m){h.warnOncePerTick("Failed to unify filter mask polygons. Polygon will be ignored.");continue}s.pop(),s.forEach((e=>l.delete(e)))}l.add(r)}return l.forEach((e=>a.push(e))),a.length>0?{spatialRelationship:e.spatialRelationship,geometries:a}:null}get _filterNeedsProjectionEngine(){const e=this.layer.filter;if(r(e)||e.geometries.length<=1)return!1;const t=e.geometries.getItemAt(0).spatialReference;return e.geometries.some((({spatialReference:e})=>!e.equals(t)&&!u(e,t)))}get layerFilterUpdating(){return l(this._layerFilter)}initialize(){s((()=>!this._geometryEngine&&o(this.layer.filter)&&this.layer.filter.geometries.length)).then((async()=>this._geometryEngine=await import("../../geometry/geometryEngine.js"))),this._projectionEngineLoaded=c(),s((()=>!this._projectionEngineLoaded&&this._filterNeedsProjectionEngine)).then((async()=>{await y(),this._projectionEngineLoaded=!0}))}highlight(e){throw new Error("Not implemented")}queryFeatures(e,t){throw new Error("Not implemented")}queryObjectIds(e,t){throw new Error("Not implemented")}queryFeatureCount(e,t){throw new Error("Not implemented")}createQuery(){throw new Error("Not implemented")}queryExtent(e,t){throw new Error("Not implemented")}};e([a()],f.prototype,"layer",void 0),e([a()],f.prototype,"availableFields",null),e([a()],f.prototype,"maximumNumberOfFeatures",null),e([a({readOnly:!0})],f.prototype,"maximumNumberOfFeaturesExceeded",null),e([a()],f.prototype,"filter",void 0),e([a({readOnly:!0})],f.prototype,"layerFilter",null),e([a({readOnly:!0})],f.prototype,"_layerFilter",null),e([a()],f.prototype,"_geometryEngine",void 0),e([a()],f.prototype,"_projectionEngineLoaded",void 0),e([a()],f.prototype,"_filterNeedsProjectionEngine",null),e([a()],f.prototype,"layerFilterUpdating",null),f=e([m(d)],f);const E=f;export{E as default};
|