spiritjs
Version:
The animation toolkit for the web
1,354 lines (1,235 loc) • 139 kB
JavaScript
/*!
* Spirit.js v3.1.17
*
* (c) 2024 Patrick Brouwer
* Released under the MIT License.
*/
var spirit;
/******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ "./src/config/config.js":
/*!******************************!*\
!*** ./src/config/config.js ***!
\******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _utils_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/context */ "./src/utils/context.js");
var Config = function Config() {
this.debug = true && (0,_utils_context__WEBPACK_IMPORTED_MODULE_0__.isBrowser)();
this.overwriteAnimations = true;
this.gsap = {
instance: null,
autoInject: true,
autoInjectUrl: 'https://unpkg.com/gsap@3.1.1/dist/gsap.min.js'
};
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (new Config());
/***/ }),
/***/ "./src/config/setup.js":
/*!*****************************!*\
!*** ./src/config/setup.js ***!
\*****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ setup)
/* harmony export */ });
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils/index.js");
/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./config */ "./src/config/config.js");
/* harmony import */ var _utils_gsap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/gsap */ "./src/utils/gsap.js");
/**
* Setup Spirit GSAP
*
* @param {object} gsapInstance
*/
function setup(gsapInstance) {
if (gsapInstance === void 0) {
gsapInstance = null;
}
return new Promise(function (resolve, reject) {
if ((0,_utils_gsap__WEBPACK_IMPORTED_MODULE_2__.isGSAPInstance)(gsapInstance)) {
_config__WEBPACK_IMPORTED_MODULE_1__["default"].gsap.instance = gsapInstance;
}
_utils__WEBPACK_IMPORTED_MODULE_0__.gsap.ensure().then(resolve)["catch"](reject);
});
}
/***/ }),
/***/ "./src/data/parser.js":
/*!****************************!*\
!*** ./src/data/parser.js ***!
\****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ create: () => (/* binding */ create),
/* harmony export */ load: () => (/* binding */ load)
/* harmony export */ });
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils/index.js");
/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../group */ "./src/group/index.js");
/**
* Create groups factory
*
* @return {{add: {function} add, groups: {array|Groups} groups}}
*/
function groupsFactory() {
var list = [];
var getGroupsByRoot = function getGroupsByRoot(root) {
for (var i = 0; i < list.length; i++) {
var groups = list[i];
if (groups.rootEl === root) {
return groups;
}
}
return null;
};
return {
add: function add(root, group) {
var groups = getGroupsByRoot(root);
if (!groups) {
groups = new _group__WEBPACK_IMPORTED_MODULE_1__.Groups(root, []);
list.push(groups);
}
if (group) {
group._list = groups;
group.resolve();
groups.add(group);
}
},
groups: function groups() {
return list.length === 1 ? list[0] : list;
}
};
}
/**
* Parse groups
*
* @param {object|Array} data animation data
* @param {Element} root the root element for animation groups
* @returns Groups
*/
function create(data, root) {
if (root === void 0) {
root = undefined;
}
if (!_utils__WEBPACK_IMPORTED_MODULE_0__.context.isBrowser()) {
throw new Error('Invalid context. spirit.create() can only be executed in the browser.');
}
var resolveRoot = false;
// ensure root element
if (!(root instanceof window.Element)) {
resolveRoot = true;
root = document.body || document.documentElement;
}
if (_utils__WEBPACK_IMPORTED_MODULE_0__.is.isObject(data) && data['groups'] && Array.isArray(data['groups'])) {
data = data['groups'];
}
if (!Array.isArray(data)) {
data = [data];
}
var factory = groupsFactory();
if (data.length === 0) {
factory.add(root, null);
}
data.forEach(function (g) {
var groupRoot = root;
if (resolveRoot && g.root) {
groupRoot = _utils__WEBPACK_IMPORTED_MODULE_0__.resolver.resolveElement(root, g.root);
if (!groupRoot) {
groupRoot = root;
}
}
var d = {
name: g.name,
timeScale: g.timeScale || 1,
timelines: []
};
var timelines = g.timelines || [];
timelines.forEach(function (timeline) {
d.timelines.push({
type: timeline.type,
props: timeline.props,
label: timeline.label || timeline.id || timeline.path,
path: timeline.path || null,
id: timeline.id || null
});
});
factory.add(groupRoot, new _group__WEBPACK_IMPORTED_MODULE_1__.Group(d));
});
return factory.groups();
}
/**
* Load data and apply it to element
*
* @param {string} url
* @param {Element} root
* @returns {Promise}
*/
function load(url, root) {
if (root === void 0) {
root = undefined;
}
if (!_utils__WEBPACK_IMPORTED_MODULE_0__.context.isBrowser()) {
return Promise.reject(new Error('Invalid context: spirit.load() can only be executed in the browser.'));
}
return (0,_utils__WEBPACK_IMPORTED_MODULE_0__.jsonloader)(url).then(function (data) {
return create(data, root);
});
}
/***/ }),
/***/ "./src/group/evalmap.js":
/*!******************************!*\
!*** ./src/group/evalmap.js ***!
\******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
var EvalMap =
/**
* Create an evaluable map
*
* @param {RegExp} regex
* @param {*} map
*/
function EvalMap(regex, map) {
if (!regex || regex && !(regex instanceof RegExp)) {
throw new Error('Invalid expression.');
}
if (map === null || map === undefined) {
throw new Error('Invalid mapping.');
}
Object.assign(this, {
regex: regex,
map: map
});
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (EvalMap);
/***/ }),
/***/ "./src/group/group.js":
/*!****************************!*\
!*** ./src/group/group.js ***!
\****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _config_config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../config/config */ "./src/config/config.js");
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils */ "./src/utils/index.js");
/* harmony import */ var _timelines__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./timelines */ "./src/group/timelines.js");
/* harmony import */ var _utils_emitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/emitter */ "./src/utils/emitter.js");
/* harmony import */ var _utils_errors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/errors */ "./src/utils/errors.js");
/* harmony import */ var _utils_events__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/events */ "./src/utils/events.js");
/* harmony import */ var _utils_gsap__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/gsap */ "./src/utils/gsap.js");
var _dec, _dec2, _dec3, _dec4, _class;
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer && (Object.defineProperty(i, e, a), a = null), a; }
/**
* Group.
*/
var Group = (_dec = (0,_utils_emitter__WEBPACK_IMPORTED_MODULE_3__.emitChange)(), _dec2 = (0,_utils_emitter__WEBPACK_IMPORTED_MODULE_3__.emitChange)(), _dec3 = (0,_utils_emitter__WEBPACK_IMPORTED_MODULE_3__.emitChange)(), _dec4 = (0,_utils_emitter__WEBPACK_IMPORTED_MODULE_3__.emitChange)(), (_class = /*#__PURE__*/function (_Emitter) {
/**
* Create a group instance.
*
* @param {object} props
*/
function Group(props) {
var _this;
if (props === void 0) {
props = {};
}
_this = _Emitter.call(this) || this;
_this._name = 'untitled';
_this._timeScale = 1;
_this._timelines = new _timelines__WEBPACK_IMPORTED_MODULE_2__["default"]();
_this.timeline = null;
if (!props.name || typeof props.name !== 'string' || props.name.trim() === '') {
throw new Error('Cannot create group without a name.');
}
var defaults = {
name: 'untitled',
timeScale: 1,
timelines: new _timelines__WEBPACK_IMPORTED_MODULE_2__["default"]()
};
Object.assign(_this, _objectSpread(_objectSpread({}, defaults), props));
return _this;
}
/**
* Get timelines
*
* @returns {Timelines}
*/
_inheritsLoose(Group, _Emitter);
var _proto = Group.prototype;
/**
* Convert group to object
*
* @returns {object}
*/
_proto.toObject = function toObject() {
var name = this.name;
var timeScale = this.timeScale;
var timelines = this.timelines.toArray();
return {
name: name,
timeScale: timeScale,
timelines: timelines
};
};
_proto.reset = function reset() {
var killed = false;
if (this.timeline) {
killed = true;
_utils__WEBPACK_IMPORTED_MODULE_1__.gsap.killTimeline(this.timeline);
// reset styles
this.timelines.each(function (tl) {
if (tl.type === 'dom' && tl.transformObject instanceof window.Element) {
if (tl._style) tl.transformObject.setAttribute('style', tl._style);
if (tl._transform) tl.transformObject.setAttribute('transform', '');
}
});
}
return killed;
}
/**
* Resolve transformObject for timelines
*
* @returns {Group}
*/;
_proto.resolve = function resolve() {
this.reset();
var root = this._list && this._list.rootEl ? this._list.rootEl : null;
if (!root) {
return this;
}
var hasUnresolved = false;
this.timelines.each(function (timeline) {
if (timeline.type === 'dom') {
timeline.transformObject = !root ? null : _utils__WEBPACK_IMPORTED_MODULE_1__.resolver.resolveElement(root, timeline);
if (timeline.transformObject) {
timeline.path = _utils__WEBPACK_IMPORTED_MODULE_1__.xpath.getExpression(timeline.transformObject, root);
}
if (!hasUnresolved && !timeline.transformObject) {
hasUnresolved = true;
}
}
});
this.emit('resolve', {
resolved: this.resolved,
unresolved: this.unresolved
});
if (hasUnresolved) {
if ((0,_utils__WEBPACK_IMPORTED_MODULE_1__.debug)()) {
console.warn("Could not resolve all elements for group " + this.name, this.unresolved);
}
this.emit('unresolve', this.unresolved);
}
return this;
}
/**
* Construct GSAP timeline
*
* @param {boolean} resolve elements
* @returns {gsap.timeline}
*/;
_proto.construct = function construct(resolve) {
var _this2 = this;
if (resolve === void 0) {
resolve = false;
}
try {
if (!_utils__WEBPACK_IMPORTED_MODULE_1__.gsap.has()) {
if ((0,_utils__WEBPACK_IMPORTED_MODULE_1__.debug)()) {
console.warn("Cannot construct group " + this.name + ". GSAP not found.");
}
throw new Error('GSAP cannot be found');
}
if (resolve) {
this.resolve();
}
if (!this.reset()) {
this.timeline = _config_config__WEBPACK_IMPORTED_MODULE_0__["default"].gsap.instance.timeline({
paused: true
}); // eslint-disable-line new-cap
}
this.resolved.each(function (timeline) {
if (timeline.type === 'dom' && timeline.transformObject instanceof window.Element) {
try {
_this2.timeline.add(_utils__WEBPACK_IMPORTED_MODULE_1__.gsap.generateTimeline(timeline).play(), 0, 'start');
} catch (err) {
throw new _utils_errors__WEBPACK_IMPORTED_MODULE_4__.TimelineError(err.message, timeline.transformObject, err.stack);
}
}
});
this.timeline.timeScale(this.timeScale);
this._duration = this.timeline.duration();
} catch (err) {
err.message = "Could not construct timeline: " + err.message;
throw err;
}
this.emit('construct', this.timeline);
return this.timeline;
};
return _createClass(Group, [{
key: "timelines",
get: function get() {
return this._timelines;
}
/**
* Get unresolved timelines
*
* @returns {Timelines}
*/,
set:
/**
* Set timelines
*
* @param {Timelines} timelines
*/
function set(timelines) {
if (!(timelines instanceof _timelines__WEBPACK_IMPORTED_MODULE_2__["default"])) {
timelines = new _timelines__WEBPACK_IMPORTED_MODULE_2__["default"](Array.from(timelines));
}
this._timelines = timelines;
}
/**
* Get current timeScale
*
* @returns {number}
*/
}, {
key: "unresolved",
get: function get() {
var timelines = new _timelines__WEBPACK_IMPORTED_MODULE_2__["default"]();
this.timelines.each(function (tl) {
return !tl.transformObject && timelines.add(tl);
});
return timelines;
}
/**
* Get resolved timelines
*
* @returns {Timelines}
*/
}, {
key: "resolved",
get: function get() {
var timelines = new _timelines__WEBPACK_IMPORTED_MODULE_2__["default"]();
this.timelines.each(function (tl) {
return !!tl.transformObject && timelines.add(tl);
});
return timelines;
}
}, {
key: "timeScale",
get: function get() {
return this._timeScale;
}
/**
* Set timeScale
*
* @param {number} scale
*/,
set: function set(scale) {
if (!(typeof scale === 'number' && Number.isFinite(scale))) {
throw new Error('timeScale needs to be a number');
}
if ((0,_utils_gsap__WEBPACK_IMPORTED_MODULE_6__.isGSAPTimeline)(this.timeline)) {
this.timeline.timeScale(scale);
}
this._timeScale = scale;
}
/**
* Get the timeline duration.
* Equal to this.timeline.duration()
*
* @returns {number}
*/
}, {
key: "duration",
get: function get() {
return this.timeline ? this.timeline.duration() : 0;
}
/**
* Set the timeline duration.
* Updates the group timeScale
*
* @param {number} val
*/,
set: function set(val) {
if ((0,_utils_gsap__WEBPACK_IMPORTED_MODULE_6__.isGSAPTimeline)(this.timeline)) {
this.timeline.duration(val);
this.timeScale = this.timeline.timeScale();
this._duration = this.timeline.duration();
}
}
/**
* Get name
*
* @returns {string}
*/
}, {
key: "name",
get: function get() {
return this._name;
}
/**
* Set name
*
* @param {string} name
*/,
set: function set(name) {
if (typeof name !== 'string') {
throw new Error('Name needs to be a string');
}
this._name = name;
}
}]);
}(_utils_events__WEBPACK_IMPORTED_MODULE_5__.Emitter), (_applyDecoratedDescriptor(_class.prototype, "timelines", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "timelines"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "timeScale", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, "timeScale"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "duration", [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, "duration"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "name", [_dec4], Object.getOwnPropertyDescriptor(_class.prototype, "name"), _class.prototype)), _class));
Group.fromObject = function (obj) {
return new Group(obj);
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Group);
/***/ }),
/***/ "./src/group/groups.js":
/*!*****************************!*\
!*** ./src/group/groups.js ***!
\*****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _list_list__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../list/list */ "./src/list/list.js");
/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./group */ "./src/group/group.js");
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils */ "./src/utils/index.js");
/* harmony import */ var _registry_registry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../registry/registry */ "./src/registry/registry.js");
function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
var Groups = /*#__PURE__*/function (_List) {
/**
* Create a groups instance.
*
* @param {HTMLElement} rootEl define the animation root
* @param {Array} data
*/
function Groups(rootEl, data) {
var _this;
if (rootEl === void 0) {
rootEl = document.body;
}
if (data === void 0) {
data = [];
}
_this = _List.call(this, data, _group__WEBPACK_IMPORTED_MODULE_1__["default"], [{
name: 'untitled'
}]) || this;
_this.rootEl = null;
if (!(rootEl instanceof window.Element)) {
throw new Error('No root element provided.');
}
_this.rootEl = rootEl;
// add groups to registry
_this.each(function (g) {
return _registry_registry__WEBPACK_IMPORTED_MODULE_3__["default"].add(g);
});
return _this;
}
/**
* Add group to list and global registry
*
* @param {Array|*} group
* @returns {Array|*}
*/
_inheritsLoose(Groups, _List);
var _proto = Groups.prototype;
_proto.add = function add(group) {
var affected = _List.prototype.add.call(this, group);
Array.isArray(affected) ? affected.forEach(function (g) {
return _registry_registry__WEBPACK_IMPORTED_MODULE_3__["default"].add(g);
}) : _registry_registry__WEBPACK_IMPORTED_MODULE_3__["default"].add(affected);
return affected;
}
/**
* Remove group from list and global registry
*
* @param {Array|*} group
* @returns {Array|*}
*/;
_proto.remove = function remove(group) {
var affected = _List.prototype.remove.call(this, group);
Array.isArray(affected) ? affected.forEach(function (g) {
return _registry_registry__WEBPACK_IMPORTED_MODULE_3__["default"].remove(g);
}) : _registry_registry__WEBPACK_IMPORTED_MODULE_3__["default"].remove(affected);
return affected;
}
/**
* Construct all groups
*
* @returns {Array.<TimelineLite|TimelineMax>}
*/;
_proto.construct = function construct(resolve) {
if (resolve === void 0) {
resolve = false;
}
if (!_utils__WEBPACK_IMPORTED_MODULE_2__.gsap.has()) {
(0,_utils__WEBPACK_IMPORTED_MODULE_2__.debug)() && console.warn('Trying to construct groups, but GSAP cannot be found.');
throw new Error('GSAP cannot be found');
}
return this.list.map(function (group) {
return group.construct(resolve);
});
}
/**
* Get group by name
*
* @param {string} name
* @returns {Group|undefined}
*/;
_proto.get = function get(name) {
return this.list.find(function (group) {
return group.name === name;
});
};
return Groups;
}(_list_list__WEBPACK_IMPORTED_MODULE_0__["default"]);
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Groups);
/***/ }),
/***/ "./src/group/index.js":
/*!****************************!*\
!*** ./src/group/index.js ***!
\****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ EvalMap: () => (/* reexport safe */ _evalmap__WEBPACK_IMPORTED_MODULE_0__["default"]),
/* harmony export */ Group: () => (/* reexport safe */ _group__WEBPACK_IMPORTED_MODULE_1__["default"]),
/* harmony export */ Groups: () => (/* reexport safe */ _groups__WEBPACK_IMPORTED_MODULE_2__["default"]),
/* harmony export */ Keyframe: () => (/* reexport safe */ _keyframe__WEBPACK_IMPORTED_MODULE_3__["default"]),
/* harmony export */ Keyframes: () => (/* reexport safe */ _keyframes__WEBPACK_IMPORTED_MODULE_4__["default"]),
/* harmony export */ Prop: () => (/* reexport safe */ _prop__WEBPACK_IMPORTED_MODULE_5__["default"]),
/* harmony export */ Props: () => (/* reexport safe */ _props__WEBPACK_IMPORTED_MODULE_6__["default"]),
/* harmony export */ Timeline: () => (/* reexport safe */ _timeline__WEBPACK_IMPORTED_MODULE_7__["default"]),
/* harmony export */ Timelines: () => (/* reexport safe */ _timelines__WEBPACK_IMPORTED_MODULE_8__["default"])
/* harmony export */ });
/* harmony import */ var _evalmap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./evalmap */ "./src/group/evalmap.js");
/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./group */ "./src/group/group.js");
/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./groups */ "./src/group/groups.js");
/* harmony import */ var _keyframe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./keyframe */ "./src/group/keyframe.js");
/* harmony import */ var _keyframes__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./keyframes */ "./src/group/keyframes.js");
/* harmony import */ var _prop__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./prop */ "./src/group/prop.js");
/* harmony import */ var _props__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./props */ "./src/group/props.js");
/* harmony import */ var _timeline__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./timeline */ "./src/group/timeline.js");
/* harmony import */ var _timelines__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./timelines */ "./src/group/timelines.js");
/***/ }),
/***/ "./src/group/keyframe.js":
/*!*******************************!*\
!*** ./src/group/keyframe.js ***!
\*******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "./src/utils/index.js");
/* harmony import */ var _utils_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/emitter */ "./src/utils/emitter.js");
/* harmony import */ var _utils_events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/events */ "./src/utils/events.js");
var _dec, _dec2, _dec3, _class, _class2;
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer && (Object.defineProperty(i, e, a), a = null), a; }
/**
* -------------------------------------------
* Single keyframe.
*
* @example
*
* {
* "0.1s": { value: 10, ease: "Linear.easeNone" }
* }
*
* @fires Keyframe#change
* @fires Keyframe#change:time
* @fires Keyframe#change:value
* @fires Keyframe#change:ease
*
* @fires List#change
* @fires List#change:time
* @fires List#change:value
* @fires List#change:ease
*
* -------------------------------------------
*/
var Keyframe = (_dec = (0,_utils_emitter__WEBPACK_IMPORTED_MODULE_1__.emitChange)('time', null, [{
validator: function validator(val) {
return typeof val === 'number';
},
message: 'Time must be a number'
}]), _dec2 = (0,_utils_emitter__WEBPACK_IMPORTED_MODULE_1__.emitChange)('ease', null), _dec3 = (0,_utils_emitter__WEBPACK_IMPORTED_MODULE_1__.emitChange)(), _dec(_class = _dec2(_class = (_class2 = /*#__PURE__*/function (_Emitter) {
/**
* Keyframe.
*
* @param {number} time position (in seconds) on timeline
* @param {*} value value assigned
* @param {string} ease easing value (optional)
*/
function Keyframe(time, value, ease) {
var _this;
if (ease === void 0) {
ease = null;
}
_this = _Emitter.call(this) || this;
_this._list = null;
_this._value = null;
_this.mappings = [];
ease = ease || null;
Object.assign(_this, {
time: time,
value: value,
ease: ease
});
return _this;
}
/**
* Get next keyframe (linked list)
*
* @returns {Keyframe|null}
*/
_inheritsLoose(Keyframe, _Emitter);
var _proto = Keyframe.prototype;
_proto.next = function next() {
return this._next;
}
/**
* Get previous keyframe (linked list)
*
* @returns {Keyframe|null}
*/;
_proto.prev = function prev() {
return this._prev;
}
/**
* Get the value
*
* @returns {*}
*/;
/**
* Check if current keyframe has an evaluable value
*
* @returns {boolean}
*/
_proto.isEval = function isEval() {
return /{(.*?)}/.test(this._value);
}
/**
* Convert to readable object
*
* @param {boolean} ignoreEval
* @returns {object} { "0.2s": { value: 10, ease: "Linear.easeNone" }}
*/;
_proto.toObject = function toObject(ignoreEval) {
var _ref;
if (ignoreEval === void 0) {
ignoreEval = false;
}
var value;
try {
value = ignoreEval ? this._value : this.value;
} catch (err) {
value = this._value;
}
return _ref = {}, _ref[this.time + "s"] = {
value: value,
ease: this.ease
}, _ref;
}
/**
* Destroy events
*/;
_proto.destroy = function destroy() {
this.removeAllListeners();
};
return _createClass(Keyframe, [{
key: "value",
get: function get() {
var _this2 = this;
if (this.isEval()) {
// create available mappings for current value
var mappings = this.mappings.reduce(function (result, mapping) {
if (mapping.regex.global) {
mapping.regex.lastIndex = 0;
}
if (mapping.regex.test(_this2._value)) {
result[mapping.regex] = mapping;
}
return result;
}, {});
// apply mappings
var val = this._value;
for (var mapping in mappings) {
val = val.replace(mappings[mapping].regex, "mappings[" + mapping + "].map");
}
var res;
try {
res = eval(val); // eslint-disable-line no-eval
} catch (err) {
if (this.mappings.length > 0) {
throw err;
}
}
return res;
}
return this._value;
}
/**
* Set value
*
* @param {*} val
*/,
set: function set(val) {
this._value = val;
}
/**
* Get the list where this keyframe is added to
*
* @returns {Keyframes|null}
*/
}, {
key: "list",
get: function get() {
return this._list;
}
}]);
}(_utils_events__WEBPACK_IMPORTED_MODULE_2__.Emitter), (_applyDecoratedDescriptor(_class2.prototype, "value", [_dec3], Object.getOwnPropertyDescriptor(_class2.prototype, "value"), _class2.prototype)), _class2)) || _class) || _class);
/**
* Create keyframe instance from object
*
* @example { "0.2s": { value: 10, ease: "Linear.easeNone" }}
* @param {object} obj
* @returns {Keyframe}
*/
Keyframe.fromObject = function (obj) {
if (!_utils__WEBPACK_IMPORTED_MODULE_0__.is.isObject(obj)) {
throw new Error('Object is invalid');
}
var keys = Object.keys(obj);
if (keys.length === 0 || keys.length > 1) {
throw new Error('Object is invalid');
}
var time = keys[0];
var _obj$time = obj[time],
value = _obj$time.value,
ease = _obj$time.ease;
if (!_utils__WEBPACK_IMPORTED_MODULE_0__.is.isObject(obj[time]) && (typeof obj[time] === 'string' || typeof obj[time] === 'number')) {
value = obj[time];
ease = null;
}
time = parseFloat(time);
if (isNaN(time)) {
throw new Error('Object is invalid. Invalid time object { `1s`: ... }');
}
if (value === undefined || value === null) {
throw new Error('Object is invalid. No value found: {value}');
}
return new Keyframe(time, value, ease);
};
Keyframe.Events = ['change', 'change:time', 'change:value', 'change:ease'];
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Keyframe);
/***/ }),
/***/ "./src/group/keyframes.js":
/*!********************************!*\
!*** ./src/group/keyframes.js ***!
\********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _list_list__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../list/list */ "./src/list/list.js");
/* harmony import */ var _keyframe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keyframe */ "./src/group/keyframe.js");
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils */ "./src/utils/index.js");
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
var Keyframes = /*#__PURE__*/function (_List) {
/**
* Create keyframes
*
* @constructor
* @param {Array|object} keyframes
*/
function Keyframes(keyframes) {
var _this;
if (keyframes === void 0) {
keyframes = [];
}
if (_utils__WEBPACK_IMPORTED_MODULE_2__.is.isObject(keyframes)) {
keyframes = _utils__WEBPACK_IMPORTED_MODULE_2__.convert.objectToArray(keyframes);
}
_this = _List.call(this, keyframes, _keyframe__WEBPACK_IMPORTED_MODULE_1__["default"], [0, 0]) || this;
_this.duplicates = {
prop: 'time'
};
_this.sortOn = 'time';
_this.linkedList = true;
_this._mappings = [];
return _this;
}
/**
* Add keyframe
*
* @param {*|Array} keyframe
* @returns {*}
*/
_inheritsLoose(Keyframes, _List);
var _proto = Keyframes.prototype;
_proto.add = function add(keyframe) {
var _this2 = this;
if (_utils__WEBPACK_IMPORTED_MODULE_2__.is.isObject(keyframe) && !(keyframe instanceof _keyframe__WEBPACK_IMPORTED_MODULE_1__["default"]) && Object.keys(keyframe).length > 1) {
keyframe = _utils__WEBPACK_IMPORTED_MODULE_2__.convert.objectToArray(keyframe);
}
var affected = _List.prototype.add.call(this, keyframe);
var exec = function exec(keyframe) {
keyframe.mappings = [].concat(_this2.mappings);
};
Array.isArray(affected) ? affected.forEach(exec) : exec(affected);
return affected;
}
/**
* Remove keyframe
*
* @param {Keyframe}
* @returns {Keyframe}
*/;
_proto.remove = function remove(keyframe) {
var affected = _List.prototype.remove.call(this, keyframe);
var exec = function exec(keyframe) {
keyframe.mappings = [];
};
Array.isArray(affected) ? affected.forEach(exec) : exec(affected);
return affected;
}
/**
* Get mappings for these keyframes
*
* @returns {Array}
*/;
/**
* Get keyframe at time
*
* @param {string} time
* @returns {Keyframe}
*/
_proto.get = function get(time) {
var t = parseFloat(time);
// get keyframe at time
return this._list.find(function (p) {
return p.time === t;
});
}
/**
* Convert keyframes to object
*
* @param {boolean} ignoreEval
* @returns {object}
*/;
_proto.toObject = function toObject(ignoreEval) {
if (ignoreEval === void 0) {
ignoreEval = false;
}
return this.list.reduce(function (obj, keyframe) {
return _objectSpread(_objectSpread({}, obj), keyframe.toObject(ignoreEval));
}, {});
}
/**
* Destroy events
*/;
_proto.destroy = function destroy() {
this.removeAllListeners();
this.each(function (keyframe) {
return keyframe.destroy();
});
};
return _createClass(Keyframes, [{
key: "mappings",
get: function get() {
return this._mappings;
}
/**
* Set mappings for these keyframes
*
* @param {Array} mappings
*/,
set: function set(mappings) {
this._mappings = mappings;
this.each(function (keyframe) {
keyframe.mappings = [].concat(mappings);
});
}
}]);
}(_list_list__WEBPACK_IMPORTED_MODULE_0__["default"]);
Keyframes.Events = ['change:list', 'add', 'remove', 'change', 'change:time', 'change:value', 'change:ease'];
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Keyframes);
/***/ }),
/***/ "./src/group/prop.js":
/*!***************************!*\
!*** ./src/group/prop.js ***!
\***************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _keyframes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./keyframes */ "./src/group/keyframes.js");
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils */ "./src/utils/index.js");
/* harmony import */ var _utils_emitter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/emitter */ "./src/utils/emitter.js");
/* harmony import */ var _utils_events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/events */ "./src/utils/events.js");
/* harmony import */ var _utils_polyfill__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/polyfill */ "./src/utils/polyfill.js");
var _dec, _dec2, _class, _class2;
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer && (Object.defineProperty(i, e, a), a = null), a; }
/**
* -------------------------------------------
* Single Property.
*
* @example
*
* {
* x: {
* "0.1s": { value: 10, ease: null },
* "0.2s": { value: 0, ease: null },
* "0.3s": { value: 100, ease: "Power3.easeOut" },
* }
* }
*
* @fires Prop#change
* @fires Prop#change:name
* @fires Prop#change:keyframes
* @fires Prop#change:keyframes:list
* @fires Prop#change:keyframe
* @fires Prop#change:keyframe:time
* @fires Prop#change:keyframe:value
* @fires Prop#change:keyframe:ease
* @fires Prop#add:keyframe
* @fires Prop#remove:keyframe
*
* -------------------------------------------
*/
var Prop = (_dec = (0,_utils_emitter__WEBPACK_IMPORTED_MODULE_2__.emitChange)('name', null, [{
validator: function validator(val) {
return typeof val === 'string';
},
message: 'Name must be a string'
}, {
validator: function validator(val) {
return !/^\d+\.?\d*?$/.test(val);
},
message: 'Name must be a string'
}]), _dec2 = (0,_utils_emitter__WEBPACK_IMPORTED_MODULE_2__.emitChange)(), _dec(_class = (_class2 = /*#__PURE__*/function (_Emitter) {
/**
* Property.
*
* @param {string} name
* @param {object|Keyframes|Array} keyframes
*/
function Prop(name, keyframes) {
var _this;
if (keyframes === void 0) {
keyframes = new _keyframes__WEBPACK_IMPORTED_MODULE_0__["default"]();
}
_this = _Emitter.call(this) || this;
_this._keyframes = null;
_this._list = null;
if (!(keyframes instanceof _keyframes__WEBPACK_IMPORTED_MODULE_0__["default"])) {
keyframes = new _keyframes__WEBPACK_IMPORTED_MODULE_0__["default"](keyframes);
}
name = name || null;
Object.assign(_this, {
name: name,
keyframes: keyframes
});
return _this;
}
/**
* Get next property (linked list)
*
* @returns {Prop|null}
*/
_inheritsLoose(Prop, _Emitter);
var _proto = Prop.prototype;
_proto.next = function next() {
return this._next;
}
/**
* Get previous property (linked list)
*
* @returns {Prop|null}
*/;
_proto.prev = function prev() {
return this._prev;
}
/**
* Get the list where this prop is added to
*
* @returns {Props|null}
*/;
/**
* Bubble events from keyframes
*/
_proto.setupBubbleEvents = function setupBubbleEvents() {
var _this2 = this;
if (this._keyframes instanceof _keyframes__WEBPACK_IMPORTED_MODULE_0__["default"]) {
this._keyframes.removeAllListeners();
var evt = function evt(from, to) {
_this2._keyframes.on(from, _utils__WEBPACK_IMPORTED_MODULE_1__.events.bubbleEvent(to, _this2));
};
evt('change:list', 'change:keyframes:list');
evt('change', 'change:keyframe');
evt('change:time', 'change:keyframe:time');
evt('change:value', 'change:keyframe:value');
evt('change:ease', 'change:keyframe:ease');
evt('add', 'add:keyframe');
evt('remove', 'remove:keyframe');
}
}
/**
* Convert Prop to readable object
*
* @param {boolean} ignoreEval
* @example { x: { "10.5s": { value: 100, ease: "Power2.easeOut" } } }
* @returns {object}
*/;
_proto.toObject = function toObject(ignoreEval) {
var _ref;
if (ignoreEval === void 0) {
ignoreEval = false;
}
var keyframes = this.keyframes ? this.keyframes.toObject(ignoreEval) : {};
return _ref = {}, _ref[this.name] = keyframes, _ref;
}
/**
* Determine if this property is a CSS transform
*
* @returns {boolean}
*/;
_proto.isCSSTransform = function isCSSTransform() {
return (0,_utils_polyfill__WEBPACK_IMPORTED_MODULE_4__.includes)(['x', 'y', 'z', 'rotation', 'rotationZ', 'rotationX', 'rotationY', 'skewX', 'skewY', 'scale', 'scaleX', 'scaleY'], this.name);
}
/**
* Destroy.
* Clear events
*/;
_proto.destroy = function destroy() {
if (this._keyframes) {
this._keyframes.destroy();
}
this.removeAllListeners();
};
return _createClass(Prop, [{
key: "list",
get: function get() {
return this._list;
}
/**
* Get keyframes
*
* @returns {Keyframes|object|Array}
*/
}, {
key: "keyframes",
get: function get() {
return this._keyframes;
}
/**
* Set keyframes
*
* @param {Keyframes|object|Array} kf
*/,
set: function set(kf) {
if (!(kf instanceof _keyframes__WEBPACK_IMPORTED_MODULE_0__["default"])) {
kf = new _keyframes__WEBPACK_IMPORTED_MODULE_0__["default"](kf);
}
var mappings = [];
if (this._keyframes) {
mappings = this._keyframes.mappings;
this._keyframes.removeAllListeners();
this._keyframes.clear();
}
this._keyframes = kf;
this._keyframes.mappings = mappings;
this.setupBubbleEvents();
}
}]);
}(_utils_events__WEBPACK_IMPORTED_MODULE_3__.Emitter), (_applyDecoratedDescriptor(_class2.prototype, "keyframes", [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, "keyframes"), _class2.prototype)), _class2)) || _class);
/**
* Create a valid Prop from object
*
* @param {object} obj
* @returns {Prop}
*/
Prop.fromObject = function (obj) {
if (!_utils__WEBPACK_IMPORTED_MODULE_1__.is.isObject(obj)) {
throw new Error('Object is invalid');
}
var keys = Object.keys(obj);
if (keys.length === 0) {
throw new Error('Object is invalid');
}
for (var i in obj) {
if (!_utils__WEBPACK_IMPORTED_MODULE_1__.is.isObject(obj[i])) {
throw new Error('Object is invalid');
}
}
var p = keys[0];
return new Prop(p, obj[p]);
};
/**
* Prop Events
*
* @type {Array}
*/
Prop.Events = ['change', 'change:name', 'change:keyframes', 'change:keyframes:list', 'change:keyframe', 'change:keyframe:time', 'change:keyframe:value', 'change:keyframe:ease', 'add:keyframe', 'remove:keyframe'];
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Prop);
/***/ }),
/***/ "./src/group/props.js":
/*!****************************!*\
!*** ./src/group/props.js ***!
\****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _list_list__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../list/list */ "./src/list/list.js");
/* harmony import */ var _prop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./prop */ "./src/group/prop.js");
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils */ "./src/utils/index.js");
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropert