UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 3.86 kB
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/accessorSupport/ensureType.js";import"../../core/arrayUtils.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 i=e.geometries.getItemAt(0).spatialReference,l=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(i))return e;try{return p(e,i)}catch(r){return h.warnOncePerTick("Failed to project scene filter mask polygon. Polygon will be ignored."),null}})).filter(o).sort(((e,t)=>e.extent.xmin-t.extent.xmin)),s=new Set,a=new Array,m=new Array;for(let r of l){const e=r.extent.xmin;if(a.length=0,s.forEach((o=>{if(e>=o.extent.xmax)return m.push(o),void s.delete(o);r.extent.ymin<=o.extent.ymax&&r.extent.ymax>=o.extent.ymin&&t.intersects(r,o)&&a.push(o)})),a.length>0){a.push(r);try{r=t.union(a)}catch(u){h.warnOncePerTick("Failed to unify filter mask polygons. Polygon will be ignored.");continue}a.pop(),a.forEach((e=>s.delete(e)))}s.add(r)}return s.forEach((e=>m.push(e))),m.length>0?{spatialRelationship:e.spatialRelationship,geometries:m}: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};