var __extends=this&&this.__extends||function(){var n=function(i,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,t){i.__proto__=t}||function(i,t){for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(i[o]=t[o])})(i,t)};return function(i,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function o(){this.constructor=i}n(i,t),i.prototype=null===t?Object.create(t):(o.prototype=t.prototype,new o)}}();import EventType from"../events/EventType.js";import IconAnchorUnits from"./IconAnchorUnits.js";import IconOrigin from"./IconOrigin.js";import ImageState from"../ImageState.js";import ImageStyle from"./Image.js";import{asArray}from"../color.js";import{assert}from"../asserts.js";import{get as getIconImage}from"./IconImage.js";import{getUid}from"../util.js";var Icon=function(s){function t(i){var t=this,i=i||{},o=void 0!==i.opacity?i.opacity:1,n=void 0!==i.rotation?i.rotation:0,r=void 0!==i.scale?i.scale:1,e=void 0!==i.rotateWithView&&i.rotateWithView,o=((t=s.call(this,{opacity:o,rotation:n,scale:r,displacement:void 0!==i.displacement?i.displacement:[0,0],rotateWithView:e,declutterMode:i.declutterMode})||this).anchor_=void 0!==i.anchor?i.anchor:[.5,.5],t.normalizedAnchor_=null,t.anchorOrigin_=void 0!==i.anchorOrigin?i.anchorOrigin:IconOrigin.TOP_LEFT,t.anchorXUnits_=void 0!==i.anchorXUnits?i.anchorXUnits:IconAnchorUnits.FRACTION,t.anchorYUnits_=void 0!==i.anchorYUnits?i.anchorYUnits:IconAnchorUnits.FRACTION,t.crossOrigin_=void 0!==i.crossOrigin?i.crossOrigin:null,void 0!==i.img?i.img:null),n=(t.imgSize_=i.imgSize,i.src),r=(assert(!(void 0!==n&&o),4),assert(!o||t.imgSize_,5),void 0!==n&&0!==n.length||!o||(n=o.src||getUid(o)),assert(void 0!==n&&0<n.length,6),void 0!==i.src?ImageState.IDLE:ImageState.LOADED);return t.color_=void 0!==i.color?asArray(i.color):null,t.iconImage_=getIconImage(o,n,void 0!==t.imgSize_?t.imgSize_:null,t.crossOrigin_,r,t.color_),t.offset_=void 0!==i.offset?i.offset:[0,0],t.offsetOrigin_=void 0!==i.offsetOrigin?i.offsetOrigin:IconOrigin.TOP_LEFT,t.origin_=null,t.size_=void 0!==i.size?i.size:null,t}return __extends(t,s),t.prototype.clone=function(){var i=this.getScale();return new t({anchor:this.anchor_.slice(),anchorOrigin:this.anchorOrigin_,anchorXUnits:this.anchorXUnits_,anchorYUnits:this.anchorYUnits_,color:this.color_&&this.color_.slice?this.color_.slice():this.color_||void 0,crossOrigin:this.crossOrigin_,imgSize:this.imgSize_,offset:this.offset_.slice(),offsetOrigin:this.offsetOrigin_,opacity:this.getOpacity(),rotateWithView:this.getRotateWithView(),rotation:this.getRotation(),scale:Array.isArray(i)?i.slice():i,size:null!==this.size_?this.size_.slice():void 0,src:this.getSrc()})},t.prototype.getAnchor=function(){if(!(i=this.normalizedAnchor_)){var i=this.anchor_,t=this.getSize();if(this.anchorXUnits_==IconAnchorUnits.FRACTION||this.anchorYUnits_==IconAnchorUnits.FRACTION){if(!t)return null;i=this.anchor_.slice(),this.anchorXUnits_==IconAnchorUnits.FRACTION&&(i[0]*=t[0]),this.anchorYUnits_==IconAnchorUnits.FRACTION&&(i[1]*=t[1])}if(this.anchorOrigin_!=IconOrigin.TOP_LEFT){if(!t)return null;i===this.anchor_&&(i=this.anchor_.slice()),this.anchorOrigin_!=IconOrigin.TOP_RIGHT&&this.anchorOrigin_!=IconOrigin.BOTTOM_RIGHT||(i[0]=-i[0]+t[0]),this.anchorOrigin_!=IconOrigin.BOTTOM_LEFT&&this.anchorOrigin_!=IconOrigin.BOTTOM_RIGHT||(i[1]=-i[1]+t[1])}this.normalizedAnchor_=i}t=this.getDisplacement();return[i[0]-t[0],i[1]+t[1]]},t.prototype.setAnchor=function(i){this.anchor_=i,this.normalizedAnchor_=null},t.prototype.getColor=function(){return this.color_},t.prototype.getImage=function(i){return this.iconImage_.getImage(i)},t.prototype.getPixelRatio=function(i){return this.iconImage_.getPixelRatio(i)},t.prototype.getImageSize=function(){return this.iconImage_.getSize()},t.prototype.getImageState=function(){return this.iconImage_.getImageState()},t.prototype.getHitDetectionImage=function(){return this.iconImage_.getHitDetectionImage()},t.prototype.getOrigin=function(){if(this.origin_)return this.origin_;var i=this.offset_;if(this.offsetOrigin_!=IconOrigin.TOP_LEFT){var t=this.getSize(),o=this.iconImage_.getSize();if(!t||!o)return null;i=i.slice(),this.offsetOrigin_!=IconOrigin.TOP_RIGHT&&this.offsetOrigin_!=IconOrigin.BOTTOM_RIGHT||(i[0]=o[0]-t[0]-i[0]),this.offsetOrigin_!=IconOrigin.BOTTOM_LEFT&&this.offsetOrigin_!=IconOrigin.BOTTOM_RIGHT||(i[1]=o[1]-t[1]-i[1])}return this.origin_=i,this.origin_},t.prototype.getSrc=function(){return this.iconImage_.getSrc()},t.prototype.getSize=function(){return this.size_||this.iconImage_.getSize()},t.prototype.listenImageChange=function(i){this.iconImage_.addEventListener(EventType.CHANGE,i)},t.prototype.load=function(){this.iconImage_.load()},t.prototype.unlistenImageChange=function(i){this.iconImage_.removeEventListener(EventType.CHANGE,i)},t}(ImageStyle);export default Icon;