/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.24/esri/copyright.txt for details. */ import{_ as o}from"./chunks/tslib.es6.js";import{ClonableMixin as r}from"./core/Clonable.js";import{cyclicalDegrees as t}from"./core/Cyclical.js";import{JSONSupport as e}from"./core/JSONSupport.js";import{clamp as s}from"./core/mathUtils.js";import{property as i}from"./core/accessorSupport/decorators/property.js";import"./core/arrayUtils.js";import"./core/has.js";import{cast as p}from"./core/accessorSupport/decorators/cast.js";import{reader as n}from"./core/accessorSupport/decorators/reader.js";import{subclass as a}from"./core/accessorSupport/decorators/subclass.js";import{writer as c}from"./core/accessorSupport/decorators/writer.js";import{ensureNumber as l}from"./core/accessorSupport/ensureType.js";import m from"./geometry/Point.js";let u=class extends(r(e)){constructor(...o){super(...o),this.position=new m([0,0,0]),this.heading=0,this.tilt=0,this.fov=55}normalizeCtorArgs(o,r,t,e){if(o&&"object"==typeof o&&("x"in o||Array.isArray(o))){const s={position:o};return null!=r&&(s.heading=r),null!=t&&(s.tilt=t),null!=e&&(s.fov=e),s}return o}writePosition(o,r,t,e){const s=o.clone();s.x=l(o.x||0),s.y=l(o.y||0),s.z=o.hasZ?l(o.z||0):o.z,r[t]=s.write({},e)}readPosition(o,r){const t=new m;return t.read(o,r),t.x=l(t.x||0),t.y=l(t.y||0),t.z=t.hasZ?l(t.z||0):t.z,t}equals(o){return!!o&&(this.tilt===o.tilt&&this.heading===o.heading&&this.fov===o.fov&&this.position.equals(o.position))}};o([i({type:m,json:{write:{isRequired:!0}}})],u.prototype,"position",void 0),o([c("position")],u.prototype,"writePosition",null),o([n("position")],u.prototype,"readPosition",null),o([i({type:Number,nonNullable:!0,json:{write:{isRequired:!0}}}),p((o=>t.normalize(l(o))))],u.prototype,"heading",void 0),o([i({type:Number,nonNullable:!0,json:{write:{isRequired:!0}}}),p((o=>s(l(o),-180,180)))],u.prototype,"tilt",void 0),o([i({type:Number,nonNullable:!0,json:{read:!1,write:!1}})],u.prototype,"fov",void 0),u=o([a("esri.Camera")],u);const d=u;export{d as default};