import {isNumber} from '../helpers/helpers.math'; export default class Element { constructor() { this.x = undefined; this.y = undefined; this.active = false; this.options = undefined; this.$animations = undefined; } /** * @param {boolean} [useFinalPosition] */ tooltipPosition(useFinalPosition) { const {x, y} = this.getProps(['x', 'y'], useFinalPosition); return {x, y}; } hasValue() { return isNumber(this.x) && isNumber(this.y); } /** * Gets the current or final value of each prop. Can return extra properties (whole object). * @param {string[]} props - properties to get * @param {boolean} [final] - get the final value (animation target) * @return {object} */ getProps(props, final) { const me = this; const anims = this.$animations; if (!final || !anims) { // let's not create an object, if not needed return me; } const ret = {}; props.forEach(prop => { ret[prop] = anims[prop] && anims[prop].active ? anims[prop]._to : me[prop]; }); return ret; } } /** * @type any */ Element.defaults = {}; /** * @type any */ Element.defaultRoutes = undefined;