UNPKG

@arcgis/core

Version:

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

3 lines (2 loc) • 13.6 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */ import{__decorate as e}from"tslib";import t from"../Color.js";import r from"../request.js";import{deprecatedProperty as o}from"../core/deprecate.js";import i from"../core/Error.js";import s from"../core/Logger.js";import{clamp as l}from"../core/mathUtils.js";import{MultiOriginJSONSupportMixin as n}from"../core/MultiOriginJSONSupport.js";import{throwIfAbortError as a}from"../core/promiseUtils.js";import{watch as p,initial as y,whenOnce as m}from"../core/reactiveUtils.js";import{property as u,subclass as d}from"../core/accessorSupport/decorators.js";import{Integer as c}from"../core/accessorSupport/ensureType.js";import h from"../geometry/Extent.js";import f from"../geometry/Polyline.js";import v from"../geometry/SpatialReference.js";import g from"./Layer.js";import{ArcGISService as S}from"./mixins/ArcGISService.js";import{BlendLayer as b,effectProperty as O}from"./mixins/BlendLayer.js";import{CustomParametersMixin as j}from"./mixins/CustomParametersMixin.js";import{OperationalLayer as T}from"./mixins/OperationalLayer.js";import{PortalLayer as w}from"./mixins/PortalLayer.js";import{ScaleRangeLayer as I}from"./mixins/ScaleRangeLayer.js";import{parse as L,cleanTitle as P,titleFromUrlAndName as C}from"./support/arcgisLayerUrl.js";import{opacity as x,id as U}from"./support/commonProperties.js";import{normalizeParsedUrlObject as E,urlProperty as M}from"./support/multiLayerServiceUtils.js";import N from"./support/PlaybackInfo.js";import{getVideoLayerCapabilities as k}from"./support/serviceCapabilitiesUtils.js";import F from"./support/TelemetryData.js";import V from"./support/TelemetryDisplay.js";import H from"./support/VideoFrame.js";import J from"./support/VideoTimeExtent.js";import _ from"./video/VideoController.js";import{getFrameHorizonPoints as G,getGroundControlPoints as R,getTelemetryData as z,getServiceLayersInfo as A,getStyledTelemetrySymbol as q,getSensorTrailPoints as D,readVideoTimeExtent as B}from"./video/videoUtils.js";import W from"../symbols/CIMSymbol.js";import Q from"../symbols/PictureMarkerSymbol.js";import Z from"../symbols/SimpleFillSymbol.js";import K from"../symbols/SimpleLineSymbol.js";import X from"../symbols/SimpleMarkerSymbol.js";import Y from"../symbols/Symbol.js";import{write as $}from"../symbols/support/jsonUtils.js";import{addLayerUnsupportedError as ee}from"../webdoc/support/unsupportedErrors.js";import{reader as te}from"../core/accessorSupport/decorators/reader.js";function re(e,t){return{ignoreOrigin:this.originIdOf(t)<3}}const oe=new t([255,127,0]),ie=new t([0,0,0,.05]),se=new X({angle:0,color:oe,size:10,style:"cross"}),le=new Z({color:ie,outline:new K({color:oe,width:2})}),ne=new K({color:oe,width:1}),ae=new X({angle:0,color:oe,outline:{color:[255,255,255],width:1.33},size:10,style:"circle"}),pe=new K({color:oe,width:1}),ye={types:{base:Y,key:"type",typeMap:{"simple-marker":X,"picture-marker":Q,cim:W}},json:{name:"drawingInfo.sensorSymbol",write:{writer:$,overridePolicy:re}}};function me(e,t){return{type:t,json:{name:e,write:{overridePolicy:re}}}}let ue=class extends(b(I(S(T(w(n(j(g)))))))){constructor(e){super(e),this._trailPoints=[],this.cameraInfo=null,this.capabilities=null,this.codecs=null,this.connectionInfo=null,this.controller=new _,this.copyright=null,this.created=null,this.customParameters=null,this.description=null,this.elevationSource=null,this.frame=null,this.frameCenterSymbol=se.clone(),this.frameCount=null,this.frameEffect=null,this.frameOpacity=1,this.frameOutlineSymbol=le.clone(),this.fullExtent=null,this.fullTimeExtent=null,this.initialExtent=null,this.layerId=null,this.operationalLayerType="ArcGISVideoLayer",this.playbackInfo=null,this.posterUrl=null,this.qualities=null,this.sensorSymbolOrientation={source:"platformHeading",symbolOffset:0},this.sensorSymbol=ae.clone(),this.sensorSightLineSymbol=ne.clone(),this.sensorTrailSymbol=pe.clone(),this.serviceItemId=null,this.sourceJSON=null,this.sourceQuality=null,this.sourceType=null,this.spatialReference=v.WGS84,this.start=0,this.telemetryDisplay=new V,this.sublayerTitleMode="item-title",this.type="video",this.url=null,this.version=null,this.videoLayersInfo=null}initialize(){this.addHandles([p(()=>this.metadata,()=>{this.notifyChange("telemetry"),this.notifyChange("groundControlPoints"),this.notifyChange("frameHorizonPoints")}),p(()=>this.telemetry?.sensorLocation,e=>this._setSensorTrail(e),y)]),m(()=>this.loaded&&"can-play"===this.state&&this.duration>0).then(()=>{this.start>=0&&this.start<=this.duration&&this.setCurrentTime(this.start)})}destroy(){this.removeAllHandles(),this.controller&&this.controller.destroy()}load(e){const t=null!=e?e.signal:null,r=this.loadFromPortal({supportedTypes:["Video Service"],supportsData:!0},e).catch(a).then(()=>this._fetchService(t));return this.addResolvingPromise(r),Promise.resolve(this)}get autoplay(){return this.controller?.autoplay??!1}set autoplay(e){this.controller.autoplay=e}get buffered(){return this.controller.buffered}readCapabilitiesFromService(e,t){return k(t)}readConnectionInfo(e,t){const r=Object.values(t.connectionUrl);return r?.length&&(this.controller.playerUrl=r[0]),t.connectionUrl}get currentTime(){return this.controller.currentTime}get duration(){return this.controller.duration}get ended(){return this.controller.ended}get frameHorizonPoints(){return G(this.metadata)}get groundControlPoints(){return R(this.metadata)}get isLive(){return this.controller?.isLive??!1}get livestreamStatus(){return this.controller?.livestreamStatus}get loop(){return this.controller.loop}set loop(e){this.controller.loop=e}get metadata(){return this.controller?.currentMetadata}get mimeType(){return this.controller?.mimeType}get muted(){return this.controller.muted}set muted(e){this.controller.muted=e}get parsedUrl(){return E(this)}get playbackRate(){return this.controller.rate}set playbackRate(e){this.controller.rate=e}get playerUrl(){return this.controller.playerUrl}get playing(){return this.controller.playing}get started(){return this.controller?.started??!1}get state(){return this.controller.state}get telemetry(){return z(this.metadata)}readTitleFromService(e,t){const{url:r}=this,o=t.name||(r?L(r)?.title:void 0);switch(this.sublayerTitleMode){case"item-title":if(r)return C(r,o);break;case"item-title-and-service-name":{const e=this.portalItem?.title;if(e&&e!==o)return P(e)+(o?" - "+P(o):"");break}}return o?P(o):void 0}readTitleFromPortalItem(e){return"item-title"===this.sublayerTitleMode?e:void 0}get videoElement(){return this.controller?.element}get videoHeight(){return this.controller?.videoHeight}readLayerInfosFromService(e,t){return A(t)}get videoTimeExtent(){return o(s.getLogger(this),"videoTimeExtent",{replacement:"fullTimeExtent",version:"4.33",warnOnce:!0}),this.fullTimeExtent}get videoWidth(){return this.controller?.videoWidth}get volume(){return this.controller?.volume??0}set volume(e){this.controller.volume=e}get waiting(){return this.controller.waiting}play(){this.controller.play()}pause(){this.controller.pause()}reset(){this._trailPoints=[],this.controller.reset()}setCurrentTime(e){if(this.duration<0)return;const t=l(e,0,this.duration);this.controller.setCurrentTime(t)}toGround(e,t){return this.controller?.sensorModel?.metadataSupportsTransforms?this.controller.sensorModel.transformImageToGeo(e,t):null}toVideo(e){if(!this.controller?.sensorModel?.metadataSupportsTransforms)return null;const t=this.controller.sensorModel.transformGeoToImage(e.x,e.y,e.z);return{x:t[0],y:t[1]}}updateTelemetryColor(e){this.frameCenterSymbol=q(this.frameCenterSymbol,e)??se,this.frameOutlineSymbol=q(this.frameOutlineSymbol,e,ie)??le,this.sensorSightLineSymbol=q(this.sensorSightLineSymbol,e)??ne,this.sensorTrailSymbol=q(this.sensorTrailSymbol,e)??pe,this.sensorSymbol=q(this.sensorSymbol,e)??ae}write(e,t){return null==this.layerId?(ee(t,this,"the ArcGIS server version must be greater than 11.2."),null):super.write(e,t)}async _fetchService(e){if(this.sourceJSON)return void this.read(this.sourceJSON,{origin:"service",url:this.parsedUrl});const{data:t,ssl:o}=await r(this.url,{query:{f:"json",...this.parsedUrl.query,...this.customParameters},signal:e});if(o&&(this.url=this.url.replace(/^http:/i,"https:")),!t?.currentVersion)return t.currentVersion="11.2",this.sourceJSON=t,void this.read(this.sourceJSON,{origin:"service",url:this.parsedUrl});if(this.layerId??=t.layers?.[0]?.id??null,null==this.layerId)throw new i("arcgis-layers:url-mismatch","The url is not a valid arcgis resource");const{data:s}=await r(this.parsedUrl.path,{query:{f:"json",...this.customParameters},signal:e});this.sourceJSON={...t,...s},this.read(this.sourceJSON,{origin:"service",url:this.parsedUrl})}_setSensorTrail(e){if(!e)return;const t=D(e,this._trailPoints);this._trailPoints=[...t];const r=this._trailPoints.map(e=>e.toArray()),o=new f({hasZ:e.hasZ,paths:[r]});this.telemetry.sensorTrail=o.clone()}};e([u({type:Boolean,json:{write:{ignoreOrigin:!0}}})],ue.prototype,"autoplay",null),e([u({readOnly:!0})],ue.prototype,"buffered",null),e([u({readOnly:!0})],ue.prototype,"cameraInfo",void 0),e([u({readOnly:!0,json:{read:!1}})],ue.prototype,"capabilities",void 0),e([te("service","capabilities",["supportsAppend","supportsCoverageQuery","supportsExportClip","supportsExportFrameset","supportsMensuration","supportsPreviews","supportsUpdate"])],ue.prototype,"readCapabilitiesFromService",null),e([u({readOnly:!0})],ue.prototype,"codecs",void 0),e([u({readOnly:!0})],ue.prototype,"connectionInfo",void 0),e([te("connectionInfo",["connectionUrl"])],ue.prototype,"readConnectionInfo",null),e([u()],ue.prototype,"controller",void 0),e([u({type:String})],ue.prototype,"copyright",void 0),e([u({readOnly:!0,type:Date})],ue.prototype,"created",void 0),e([u({type:Number})],ue.prototype,"currentTime",null),e([u({json:{write:!1}})],ue.prototype,"customParameters",void 0),e([u({type:String})],ue.prototype,"description",void 0),e([u({type:Number})],ue.prototype,"duration",null),e([u({readOnly:!0})],ue.prototype,"elevationSource",void 0),e([u({type:Boolean})],ue.prototype,"ended",null),e([u({type:H})],ue.prototype,"frame",void 0),e([u(me("drawingInfo.frameCenterSymbol",X))],ue.prototype,"frameCenterSymbol",void 0),e([u({readOnly:!0,type:c})],ue.prototype,"frameCount",void 0),e([u(O)],ue.prototype,"frameEffect",void 0),e([u(x)],ue.prototype,"frameOpacity",void 0),e([u(me("drawingInfo.frameOutlineSymbol",Z))],ue.prototype,"frameOutlineSymbol",void 0),e([u({type:h})],ue.prototype,"fullExtent",void 0),e([u({readOnly:!0})],ue.prototype,"frameHorizonPoints",null),e([u({readOnly:!0,json:{read:{reader:B,source:"time"}},type:J})],ue.prototype,"fullTimeExtent",void 0),e([u({readOnly:!0})],ue.prototype,"groundControlPoints",null),e([u(U)],ue.prototype,"id",void 0),e([u({type:h})],ue.prototype,"initialExtent",void 0),e([u({readOnly:!0})],ue.prototype,"isLive",null),e([u({type:c,json:{read:!1,origins:{service:{read:{source:"id"}}}}})],ue.prototype,"layerId",void 0),e([u({readOnly:!0})],ue.prototype,"livestreamStatus",null),e([u({type:Boolean})],ue.prototype,"loop",null),e([u({readOnly:!0})],ue.prototype,"metadata",null),e([u({readOnly:!0})],ue.prototype,"mimeType",null),e([u({type:Boolean,json:{write:{ignoreOrigin:!0}}})],ue.prototype,"muted",null),e([u({type:["ArcGISVideoLayer"]})],ue.prototype,"operationalLayerType",void 0),e([u({readOnly:!0})],ue.prototype,"parsedUrl",null),e([u({type:N})],ue.prototype,"playbackInfo",void 0),e([u({type:Number})],ue.prototype,"playbackRate",null),e([u({readOnly:!0,type:String})],ue.prototype,"playerUrl",null),e([u({readOnly:!0})],ue.prototype,"playing",null),e([u({readOnly:!0,json:{read:{source:"poster"}}})],ue.prototype,"posterUrl",void 0),e([u({readOnly:!0})],ue.prototype,"qualities",void 0),e([u()],ue.prototype,"sensorSymbolOrientation",void 0),e([u(ye)],ue.prototype,"sensorSymbol",void 0),e([u(me("drawingInfo.sensorSightLineSymbol",K))],ue.prototype,"sensorSightLineSymbol",void 0),e([u(me("drawingInfo.sensorTrailSymbol",K))],ue.prototype,"sensorTrailSymbol",void 0),e([u({readOnly:!0})],ue.prototype,"serviceItemId",void 0),e([u()],ue.prototype,"sourceJSON",void 0),e([u({readOnly:!0})],ue.prototype,"sourceQuality",void 0),e([u({readOnly:!0,json:{name:"serviceType"}})],ue.prototype,"sourceType",void 0),e([u({type:v})],ue.prototype,"spatialReference",void 0),e([u({json:{write:!0}})],ue.prototype,"start",void 0),e([u({readOnly:!0})],ue.prototype,"started",null),e([u({readOnly:!0,type:String})],ue.prototype,"state",null),e([u({readOnly:!0,type:F})],ue.prototype,"telemetry",null),e([u({type:V,nonNullable:!0,json:{write:{ignoreOrigin:!0}}})],ue.prototype,"telemetryDisplay",void 0),e([te("service","title",["name"])],ue.prototype,"readTitleFromService",null),e([te("portal-item","title")],ue.prototype,"readTitleFromPortalItem",null),e([u({type:String})],ue.prototype,"sublayerTitleMode",void 0),e([u({readOnly:!0})],ue.prototype,"type",void 0),e([u(M())],ue.prototype,"url",void 0),e([u({readOnly:!0,type:Number,json:{read:{source:"currentVersion"}}})],ue.prototype,"version",void 0),e([u({readOnly:!0})],ue.prototype,"videoElement",null),e([u({readOnly:!0})],ue.prototype,"videoHeight",null),e([u({readOnly:!0,json:{read:!1}})],ue.prototype,"videoLayersInfo",void 0),e([te("service","videoLayersInfo",["id","name","poster","serviceType","type"])],ue.prototype,"readLayerInfosFromService",null),e([u({type:J,readOnly:!0})],ue.prototype,"videoTimeExtent",null),e([u({readOnly:!0})],ue.prototype,"videoWidth",null),e([u()],ue.prototype,"volume",null),e([u({readOnly:!0})],ue.prototype,"waiting",null),ue=e([d("esri.layers.VideoLayer")],ue);const de=ue;export{de as default};