@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 2.44 kB
JavaScript
import{_ as e}from"../../chunks/tslib.es6.js";import"../../geometry.js";import{isSome as t,unwrap as r}from"../../core/maybe.js";import{property as o}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import{reader as s}from"../../core/accessorSupport/decorators/reader.js";import{subclass as a}from"../../core/accessorSupport/decorators/subclass.js";import n from"./DirectionsFeature.js";import p from"./FeatureSet.js";import i from"../../geometry/SpatialReference.js";import m from"../../geometry/Extent.js";import l from"../../geometry/Polyline.js";function u(e,t){if(0===e.length)return new l({spatialReference:t});const r=[];for(const n of e)for(const e of n.paths)r.push(...e);const o=[];r.forEach(((e,t)=>{0!==t&&e[0]===r[t-1][0]&&e[1]===r[t-1][1]||o.push(e)}));const{hasM:s,hasZ:a}=e[0];return new l({hasM:s,hasZ:a,paths:[o],spatialReference:t})}let c=class extends p{constructor(e){super(e),this.extent=null,this.features=[],this.geometryType="polyline",this.routeId=null,this.routeName=null,this.totalDriveTime=null,this.totalLength=null,this.totalTime=null}readFeatures(e,r){if(!e)return[];const o=r.summary.envelope.spatialReference??r.spatialReference,s=o&&i.fromJSON(o);return e.map((e=>{const r=n.fromJSON(e);if(t(r.geometry)&&(r.geometry.spatialReference=s),t(r.events))for(const o of r.events)t(o.geometry)&&(o.geometry.spatialReference=s);return r}))}get mergedGeometry(){if(!this.features)return null;return u(this.features.map((({geometry:e})=>r(e))),this.extent.spatialReference)}get strings(){return this.features.map((({strings:e})=>e)).flat().filter(t)}};e([o({type:m,json:{read:{source:"summary.envelope"}}})],c.prototype,"extent",void 0),e([o({nonNullable:!0})],c.prototype,"features",void 0),e([s("features")],c.prototype,"readFeatures",null),e([o()],c.prototype,"geometryType",void 0),e([o({readOnly:!0})],c.prototype,"mergedGeometry",null),e([o()],c.prototype,"routeId",void 0),e([o()],c.prototype,"routeName",void 0),e([o({value:null,readOnly:!0})],c.prototype,"strings",null),e([o({json:{read:{source:"summary.totalDriveTime"}}})],c.prototype,"totalDriveTime",void 0),e([o({json:{read:{source:"summary.totalLength"}}})],c.prototype,"totalLength",void 0),e([o({json:{read:{source:"summary.totalTime"}}})],c.prototype,"totalTime",void 0),c=e([a("esri.rest.support.DirectionsFeatureSet")],c);const f=c;export{f as default};