import { __extends } from "tslib"; import Displayable, { DEFAULT_COMMON_STYLE, DEFAULT_COMMON_ANIMATION_PROPS } from './Displayable.js'; import BoundingRect from '../core/BoundingRect.js'; import { defaults, createObject } from '../core/util.js'; export var DEFAULT_IMAGE_STYLE = defaults({ x: 0, y: 0 }, DEFAULT_COMMON_STYLE); export var DEFAULT_IMAGE_ANIMATION_PROPS = { style: defaults({ x: true, y: true, width: true, height: true, sx: true, sy: true, sWidth: true, sHeight: true }, DEFAULT_COMMON_ANIMATION_PROPS.style) }; function isImageLike(source) { return !!(source && typeof source !== 'string' && source.width && source.height); } var ZRImage = (function (_super) { __extends(ZRImage, _super); function ZRImage() { return _super !== null && _super.apply(this, arguments) || this; } ZRImage.prototype.createStyle = function (obj) { return createObject(DEFAULT_IMAGE_STYLE, obj); }; ZRImage.prototype._getSize = function (dim) { var style = this.style; var size = style[dim]; if (size != null) { return size; } var imageSource = isImageLike(style.image) ? style.image : this.__image; if (!imageSource) { return 0; } var otherDim = dim === 'width' ? 'height' : 'width'; var otherDimSize = style[otherDim]; if (otherDimSize == null) { return imageSource[dim]; } else { return imageSource[dim] / imageSource[otherDim] * otherDimSize; } }; ZRImage.prototype.getWidth = function () { return this._getSize('width'); }; ZRImage.prototype.getHeight = function () { return this._getSize('height'); }; ZRImage.prototype.getAnimationStyleProps = function () { return DEFAULT_IMAGE_ANIMATION_PROPS; }; ZRImage.prototype.getBoundingRect = function () { var style = this.style; if (!this._rect) { this._rect = new BoundingRect(style.x || 0, style.y || 0, this.getWidth(), this.getHeight()); } return this._rect; }; return ZRImage; }(Displayable)); ZRImage.prototype.type = 'image'; export default ZRImage;