@belvo-finance/belvo-vue-components
Version:
## Project setup ``` npm install ```
35,090 lines • 1.23 MB
JavaScript
module.exports =
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = "fb15");
/******/ })
/************************************************************************/
/******/ ({
/***/ "00ee":
/***/ (function(module, exports, __webpack_require__) {
var wellKnownSymbol = __webpack_require__("b622");
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
var test = {};
test[TO_STRING_TAG] = 'z';
module.exports = String(test) === '[object z]';
/***/ }),
/***/ "0366":
/***/ (function(module, exports, __webpack_require__) {
var aFunction = __webpack_require__("1c0b");
// optional / simple context binding
module.exports = function (fn, that, length) {
aFunction(fn);
if (that === undefined) return fn;
switch (length) {
case 0: return function () {
return fn.call(that);
};
case 1: return function (a) {
return fn.call(that, a);
};
case 2: return function (a, b) {
return fn.call(that, a, b);
};
case 3: return function (a, b, c) {
return fn.call(that, a, b, c);
};
}
return function (/* ...args */) {
return fn.apply(that, arguments);
};
};
/***/ }),
/***/ "0481":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__("23e7");
var flattenIntoArray = __webpack_require__("a2bf");
var toObject = __webpack_require__("7b0b");
var toLength = __webpack_require__("50c4");
var toInteger = __webpack_require__("a691");
var arraySpeciesCreate = __webpack_require__("65f0");
// `Array.prototype.flat` method
// https://github.com/tc39/proposal-flatMap
$({ target: 'Array', proto: true }, {
flat: function flat(/* depthArg = 1 */) {
var depthArg = arguments.length ? arguments[0] : undefined;
var O = toObject(this);
var sourceLen = toLength(O.length);
var A = arraySpeciesCreate(O, 0);
A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));
return A;
}
});
/***/ }),
/***/ "06cf":
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__("83ab");
var propertyIsEnumerableModule = __webpack_require__("d1e7");
var createPropertyDescriptor = __webpack_require__("5c6c");
var toIndexedObject = __webpack_require__("fc6a");
var toPrimitive = __webpack_require__("c04e");
var has = __webpack_require__("5135");
var IE8_DOM_DEFINE = __webpack_require__("0cfb");
var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
// `Object.getOwnPropertyDescriptor` method
// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor
exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
O = toIndexedObject(O);
P = toPrimitive(P, true);
if (IE8_DOM_DEFINE) try {
return nativeGetOwnPropertyDescriptor(O, P);
} catch (error) { /* empty */ }
if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);
};
/***/ }),
/***/ "07ac":
/***/ (function(module, exports, __webpack_require__) {
var $ = __webpack_require__("23e7");
var $values = __webpack_require__("6f53").values;
// `Object.values` method
// https://tc39.github.io/ecma262/#sec-object.values
$({ target: 'Object', stat: true }, {
values: function values(O) {
return $values(O);
}
});
/***/ }),
/***/ "0cfb":
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__("83ab");
var fails = __webpack_require__("d039");
var createElement = __webpack_require__("cc12");
// Thank's IE8 for his funny defineProperty
module.exports = !DESCRIPTORS && !fails(function () {
return Object.defineProperty(createElement('div'), 'a', {
get: function () { return 7; }
}).a != 7;
});
/***/ }),
/***/ "0f6b":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_list_header_scss_vue_type_style_index_0_id_6841f599_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("8965");
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_list_header_scss_vue_type_style_index_0_id_6841f599_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_list_header_scss_vue_type_style_index_0_id_6841f599_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */
/* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_list_header_scss_vue_type_style_index_0_id_6841f599_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ "1148":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var toInteger = __webpack_require__("a691");
var requireObjectCoercible = __webpack_require__("1d80");
// `String.prototype.repeat` method implementation
// https://tc39.github.io/ecma262/#sec-string.prototype.repeat
module.exports = ''.repeat || function repeat(count) {
var str = String(requireObjectCoercible(this));
var result = '';
var n = toInteger(count);
if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');
for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;
return result;
};
/***/ }),
/***/ "1276":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var fixRegExpWellKnownSymbolLogic = __webpack_require__("d784");
var isRegExp = __webpack_require__("44e7");
var anObject = __webpack_require__("825a");
var requireObjectCoercible = __webpack_require__("1d80");
var speciesConstructor = __webpack_require__("4840");
var advanceStringIndex = __webpack_require__("8aa5");
var toLength = __webpack_require__("50c4");
var callRegExpExec = __webpack_require__("14c3");
var regexpExec = __webpack_require__("9263");
var fails = __webpack_require__("d039");
var arrayPush = [].push;
var min = Math.min;
var MAX_UINT32 = 0xFFFFFFFF;
// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError
var SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });
// @@split logic
fixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {
var internalSplit;
if (
'abbc'.split(/(b)*/)[1] == 'c' ||
'test'.split(/(?:)/, -1).length != 4 ||
'ab'.split(/(?:ab)*/).length != 2 ||
'.'.split(/(.?)(.?)/).length != 4 ||
'.'.split(/()()/).length > 1 ||
''.split(/.?/).length
) {
// based on es5-shim implementation, need to rework it
internalSplit = function (separator, limit) {
var string = String(requireObjectCoercible(this));
var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
if (lim === 0) return [];
if (separator === undefined) return [string];
// If `separator` is not a regex, use native split
if (!isRegExp(separator)) {
return nativeSplit.call(string, separator, lim);
}
var output = [];
var flags = (separator.ignoreCase ? 'i' : '') +
(separator.multiline ? 'm' : '') +
(separator.unicode ? 'u' : '') +
(separator.sticky ? 'y' : '');
var lastLastIndex = 0;
// Make `global` and avoid `lastIndex` issues by working with a copy
var separatorCopy = new RegExp(separator.source, flags + 'g');
var match, lastIndex, lastLength;
while (match = regexpExec.call(separatorCopy, string)) {
lastIndex = separatorCopy.lastIndex;
if (lastIndex > lastLastIndex) {
output.push(string.slice(lastLastIndex, match.index));
if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));
lastLength = match[0].length;
lastLastIndex = lastIndex;
if (output.length >= lim) break;
}
if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop
}
if (lastLastIndex === string.length) {
if (lastLength || !separatorCopy.test('')) output.push('');
} else output.push(string.slice(lastLastIndex));
return output.length > lim ? output.slice(0, lim) : output;
};
// Chakra, V8
} else if ('0'.split(undefined, 0).length) {
internalSplit = function (separator, limit) {
return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);
};
} else internalSplit = nativeSplit;
return [
// `String.prototype.split` method
// https://tc39.github.io/ecma262/#sec-string.prototype.split
function split(separator, limit) {
var O = requireObjectCoercible(this);
var splitter = separator == undefined ? undefined : separator[SPLIT];
return splitter !== undefined
? splitter.call(separator, O, limit)
: internalSplit.call(String(O), separator, limit);
},
// `RegExp.prototype[@@split]` method
// https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split
//
// NOTE: This cannot be properly polyfilled in engines that don't support
// the 'y' flag.
function (regexp, limit) {
var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);
if (res.done) return res.value;
var rx = anObject(regexp);
var S = String(this);
var C = speciesConstructor(rx, RegExp);
var unicodeMatching = rx.unicode;
var flags = (rx.ignoreCase ? 'i' : '') +
(rx.multiline ? 'm' : '') +
(rx.unicode ? 'u' : '') +
(SUPPORTS_Y ? 'y' : 'g');
// ^(? + rx + ) is needed, in combination with some S slicing, to
// simulate the 'y' flag.
var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);
var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
if (lim === 0) return [];
if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];
var p = 0;
var q = 0;
var A = [];
while (q < S.length) {
splitter.lastIndex = SUPPORTS_Y ? q : 0;
var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));
var e;
if (
z === null ||
(e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p
) {
q = advanceStringIndex(S, q, unicodeMatching);
} else {
A.push(S.slice(p, q));
if (A.length === lim) return A;
for (var i = 1; i <= z.length - 1; i++) {
A.push(z[i]);
if (A.length === lim) return A;
}
q = p = e;
}
}
A.push(S.slice(p));
return A;
}
];
}, !SUPPORTS_Y);
/***/ }),
/***/ "13d5":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__("23e7");
var $reduce = __webpack_require__("d58f").left;
var arrayMethodIsStrict = __webpack_require__("a640");
var arrayMethodUsesToLength = __webpack_require__("ae40");
var STRICT_METHOD = arrayMethodIsStrict('reduce');
var USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });
// `Array.prototype.reduce` method
// https://tc39.github.io/ecma262/#sec-array.prototype.reduce
$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {
reduce: function reduce(callbackfn /* , initialValue */) {
return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);
}
});
/***/ }),
/***/ "14c3":
/***/ (function(module, exports, __webpack_require__) {
var classof = __webpack_require__("c6b6");
var regexpExec = __webpack_require__("9263");
// `RegExpExec` abstract operation
// https://tc39.github.io/ecma262/#sec-regexpexec
module.exports = function (R, S) {
var exec = R.exec;
if (typeof exec === 'function') {
var result = exec.call(R, S);
if (typeof result !== 'object') {
throw TypeError('RegExp exec method returned something other than an Object or null');
}
return result;
}
if (classof(R) !== 'RegExp') {
throw TypeError('RegExp#exec called on incompatible receiver');
}
return regexpExec.call(R, S);
};
/***/ }),
/***/ "159b":
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__("da84");
var DOMIterables = __webpack_require__("fdbc");
var forEach = __webpack_require__("17c2");
var createNonEnumerableProperty = __webpack_require__("9112");
for (var COLLECTION_NAME in DOMIterables) {
var Collection = global[COLLECTION_NAME];
var CollectionPrototype = Collection && Collection.prototype;
// some Chrome versions have non-configurable methods on DOMTokenList
if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {
createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);
} catch (error) {
CollectionPrototype.forEach = forEach;
}
}
/***/ }),
/***/ "1775":
/***/ (function(module, exports) {
/**
* Do not edit directly
* Generated on Tue, 05 May 2020 11:31:19 GMT
*/
module.exports = {
"color": {
"blue": {
"10": {
"value": "#011432",
"original": {
"value": "#011432"
},
"name": "ColorBlue10",
"attributes": {
"category": "color",
"type": "blue",
"item": "10"
},
"path": ["color", "blue", "10"]
},
"15": {
"value": "#021e4b",
"original": {
"value": "#021e4b"
},
"name": "ColorBlue15",
"attributes": {
"category": "color",
"type": "blue",
"item": "15"
},
"path": ["color", "blue", "15"]
},
"20": {
"value": "#032863",
"original": {
"value": "#032863"
},
"name": "ColorBlue20",
"attributes": {
"category": "color",
"type": "blue",
"item": "20"
},
"path": ["color", "blue", "20"]
},
"25": {
"value": "#03327c",
"original": {
"value": "#03327c"
},
"name": "ColorBlue25",
"attributes": {
"category": "color",
"type": "blue",
"item": "25"
},
"path": ["color", "blue", "25"]
},
"30": {
"value": "#043c95",
"original": {
"value": "#043c95"
},
"name": "ColorBlue30",
"attributes": {
"category": "color",
"type": "blue",
"item": "30"
},
"path": ["color", "blue", "30"]
},
"35": {
"value": "#0446ae",
"original": {
"value": "#0446ae"
},
"name": "ColorBlue35",
"attributes": {
"category": "color",
"type": "blue",
"item": "35"
},
"path": ["color", "blue", "35"]
},
"40": {
"value": "#054fc7",
"original": {
"value": "#054fc7"
},
"name": "ColorBlue40",
"attributes": {
"category": "color",
"type": "blue",
"item": "40"
},
"path": ["color", "blue", "40"]
},
"45": {
"value": "#0659e0",
"original": {
"value": "#0659e0"
},
"name": "ColorBlue45",
"attributes": {
"category": "color",
"type": "blue",
"item": "45"
},
"path": ["color", "blue", "45"]
},
"50": {
"value": "#0663f9",
"original": {
"value": "#0663f9"
},
"name": "ColorBlue50",
"attributes": {
"category": "color",
"type": "blue",
"item": "50"
},
"path": ["color", "blue", "50"]
},
"55": {
"value": "#1f73f9",
"original": {
"value": "#1f73f9"
},
"name": "ColorBlue55",
"attributes": {
"category": "color",
"type": "blue",
"item": "55"
},
"path": ["color", "blue", "55"]
},
"60": {
"value": "#3882fa",
"original": {
"value": "#3882fa"
},
"name": "ColorBlue60",
"attributes": {
"category": "color",
"type": "blue",
"item": "60"
},
"path": ["color", "blue", "60"]
},
"65": {
"value": "#5192fb",
"original": {
"value": "#5192fb"
},
"name": "ColorBlue65",
"attributes": {
"category": "color",
"type": "blue",
"item": "65"
},
"path": ["color", "blue", "65"]
},
"70": {
"value": "#6aa2fb",
"original": {
"value": "#6aa2fb"
},
"name": "ColorBlue70",
"attributes": {
"category": "color",
"type": "blue",
"item": "70"
},
"path": ["color", "blue", "70"]
},
"75": {
"value": "#83b1fc",
"original": {
"value": "#83b1fc"
},
"name": "ColorBlue75",
"attributes": {
"category": "color",
"type": "blue",
"item": "75"
},
"path": ["color", "blue", "75"]
},
"80": {
"value": "#9cc1fc",
"original": {
"value": "#9cc1fc"
},
"name": "ColorBlue80",
"attributes": {
"category": "color",
"type": "blue",
"item": "80"
},
"path": ["color", "blue", "80"]
},
"85": {
"value": "#b4d0fd",
"original": {
"value": "#b4d0fd"
},
"name": "ColorBlue85",
"attributes": {
"category": "color",
"type": "blue",
"item": "85"
},
"path": ["color", "blue", "85"]
},
"90": {
"value": "#cde0fe",
"original": {
"value": "#cde0fe"
},
"name": "ColorBlue90",
"attributes": {
"category": "color",
"type": "blue",
"item": "90"
},
"path": ["color", "blue", "90"]
},
"95": {
"value": "#e6effe",
"original": {
"value": "#E6EFFE"
},
"name": "ColorBlue95",
"attributes": {
"category": "color",
"type": "blue",
"item": "95"
},
"path": ["color", "blue", "95"]
}
},
"green": {
"10": {
"value": "#12280b",
"original": {
"value": "#12280b"
},
"name": "ColorGreen10",
"attributes": {
"category": "color",
"type": "green",
"item": "10"
},
"path": ["color", "green", "10"]
},
"15": {
"value": "#1b3c10",
"original": {
"value": "#1B3C10"
},
"name": "ColorGreen15",
"attributes": {
"category": "color",
"type": "green",
"item": "15"
},
"path": ["color", "green", "15"]
},
"20": {
"value": "#235016",
"original": {
"value": "#235016"
},
"name": "ColorGreen20",
"attributes": {
"category": "color",
"type": "green",
"item": "20"
},
"path": ["color", "green", "20"]
},
"25": {
"value": "#2c641b",
"original": {
"value": "#2C641B"
},
"name": "ColorGreen25",
"attributes": {
"category": "color",
"type": "green",
"item": "25"
},
"path": ["color", "green", "25"]
},
"30": {
"value": "#357821",
"original": {
"value": "#357821"
},
"name": "ColorGreen30",
"attributes": {
"category": "color",
"type": "green",
"item": "30"
},
"path": ["color", "green", "30"]
},
"35": {
"value": "#3e8c26",
"original": {
"value": "#3E8C26"
},
"name": "ColorGreen35",
"attributes": {
"category": "color",
"type": "green",
"item": "35"
},
"path": ["color", "green", "35"]
},
"40": {
"value": "#47a02c",
"original": {
"value": "#47A02C"
},
"name": "ColorGreen40",
"attributes": {
"category": "color",
"type": "green",
"item": "40"
},
"path": ["color", "green", "40"]
},
"45": {
"value": "#50b431",
"original": {
"value": "#50B431"
},
"name": "ColorGreen45",
"attributes": {
"category": "color",
"type": "green",
"item": "45"
},
"path": ["color", "green", "45"]
},
"50": {
"value": "#59c837",
"original": {
"value": "#59C837"
},
"name": "ColorGreen50",
"attributes": {
"category": "color",
"type": "green",
"item": "50"
},
"path": ["color", "green", "50"]
},
"55": {
"value": "#69ce4b",
"original": {
"value": "#69CE4B"
},
"name": "ColorGreen55",
"attributes": {
"category": "color",
"type": "green",
"item": "55"
},
"path": ["color", "green", "55"]
},
"60": {
"value": "#7ad35f",
"original": {
"value": "#7AD35F"
},
"name": "ColorGreen60",
"attributes": {
"category": "color",
"type": "green",
"item": "60"
},
"path": ["color", "green", "60"]
},
"65": {
"value": "#8bd973",
"original": {
"value": "#8BD973"
},
"name": "ColorGreen65",
"attributes": {
"category": "color",
"type": "green",
"item": "65"
},
"path": ["color", "green", "65"]
},
"70": {
"value": "#9bde87",
"original": {
"value": "#9BDE87"
},
"name": "ColorGreen70",
"attributes": {
"category": "color",
"type": "green",
"item": "70"
},
"path": ["color", "green", "70"]
},
"75": {
"value": "#ace49b",
"original": {
"value": "#ACE49B"
},
"name": "ColorGreen75",
"attributes": {
"category": "color",
"type": "green",
"item": "75"
},
"path": ["color", "green", "75"]
},
"80": {
"value": "#bce9af",
"original": {
"value": "#BCE9AF"
},
"name": "ColorGreen80",
"attributes": {
"category": "color",
"type": "green",
"item": "80"
},
"path": ["color", "green", "80"]
},
"85": {
"value": "#cdefc3",
"original": {
"value": "#CDEFC3"
},
"name": "ColorGreen85",
"attributes": {
"category": "color",
"type": "green",
"item": "85"
},
"path": ["color", "green", "85"]
},
"90": {
"value": "#def4d7",
"original": {
"value": "#DEF4D7"
},
"name": "ColorGreen90",
"attributes": {
"category": "color",
"type": "green",
"item": "90"
},
"path": ["color", "green", "90"]
},
"95": {
"value": "#eefaeb",
"original": {
"value": "#EEFAEB"
},
"name": "ColorGreen95",
"attributes": {
"category": "color",
"type": "green",
"item": "95"
},
"path": ["color", "green", "95"]
}
},
"grey": {
"0": {
"value": "#ffffff",
"original": {
"value": "#ffffff"
},
"name": "ColorGrey0",
"attributes": {
"category": "color",
"type": "grey",
"item": "0"
},
"path": ["color", "grey", "0"]
},
"10": {
"value": "#161a1d",
"original": {
"value": "#161a1d"
},
"name": "ColorGrey10",
"attributes": {
"category": "color",
"type": "grey",
"item": "10"
},
"path": ["color", "grey", "10"]
},
"15": {
"value": "#21272c",
"original": {
"value": "#21272c"
},
"name": "ColorGrey15",
"attributes": {
"category": "color",
"type": "grey",
"item": "15"
},
"path": ["color", "grey", "15"]
},
"20": {
"value": "#2b343b",
"original": {
"value": "#2b343b"
},
"name": "ColorGrey20",
"attributes": {
"category": "color",
"type": "grey",
"item": "20"
},
"path": ["color", "grey", "20"]
},
"25": {
"value": "#364049",
"original": {
"value": "#364049"
},
"name": "ColorGrey25",
"attributes": {
"category": "color",
"type": "grey",
"item": "25"
},
"path": ["color", "grey", "25"]
},
"30": {
"value": "#414d58",
"original": {
"value": "#414d58"
},
"name": "ColorGrey30",
"attributes": {
"category": "color",
"type": "grey",
"item": "30"
},
"path": ["color", "grey", "30"]
},
"35": {
"value": "#4c5a67",
"original": {
"value": "#4c5a67"
},
"name": "ColorGrey35",
"attributes": {
"category": "color",
"type": "grey",
"item": "35"
},
"path": ["color", "grey", "35"]
},
"40": {
"value": "#576775",
"original": {
"value": "#576775"
},
"name": "ColorGrey40",
"attributes": {
"category": "color",
"type": "grey",
"item": "40"
},
"path": ["color", "grey", "40"]
},
"45": {
"value": "#627484",
"original": {
"value": "#627484"
},
"name": "ColorGrey45",
"attributes": {
"category": "color",
"type": "grey",
"item": "45"
},
"path": ["color", "grey", "45"]
},
"50": {
"value": "#6c8193",
"original": {
"value": "#6c8193"
},
"name": "ColorGrey50",
"attributes": {
"category": "color",
"type": "grey",
"item": "50"
},
"path": ["color", "grey", "50"]
},
"55": {
"value": "#7b8e9d",
"original": {
"value": "#7b8e9d"
},
"name": "ColorGrey55",
"attributes": {
"category": "color",
"type": "grey",
"item": "55"
},
"path": ["color", "grey", "55"]
},
"60": {
"value": "#8a9aa8",
"original": {
"value": "#8a9aa8"
},
"name": "ColorGrey60",
"attributes": {
"category": "color",
"type": "grey",
"item": "60"
},
"path": ["color", "grey", "60"]
},
"65": {
"value": "#98a7b3",
"original": {
"value": "#98a7b3"
},
"name": "ColorGrey65",
"attributes": {
"category": "color",
"type": "grey",
"item": "65"
},
"path": ["color", "grey", "65"]
},
"70": {
"value": "#a7b3be",
"original": {
"value": "#a7b3be"
},
"name": "ColorGrey70",
"attributes": {
"category": "color",
"type": "grey",
"item": "70"
},
"path": ["color", "grey", "70"]
},
"75": {
"value": "#b6c0c9",
"original": {
"value": "#b6c0c9"
},
"name": "ColorGrey75",
"attributes": {
"category": "color",
"type": "grey",
"item": "75"
},
"path": ["color", "grey", "75"]
},
"80": {
"value": "#c4cdd4",
"original": {
"value": "#c4cdd4"
},
"name": "ColorGrey80",
"attributes": {
"category": "color",
"type": "grey",
"item": "80"
},
"path": ["color", "grey", "80"]
},
"85": {
"value": "#d3d9de",
"original": {
"value": "#d3d9de"
},
"name": "ColorGrey85",
"attributes": {
"category": "color",
"type": "grey",
"item": "85"
},
"path": ["color", "grey", "85"]
},
"90": {
"value": "#e2e6e9",
"original": {
"value": "#e2e6e9"
},
"name": "ColorGrey90",
"attributes": {
"category": "color",
"type": "grey",
"item": "90"
},
"path": ["color", "grey", "90"]
},
"95": {
"value": "#f0f2f4",
"original": {
"value": "#f0f2f4"
},
"name": "ColorGrey95",
"attributes": {
"category": "color",
"type": "grey",
"item": "95"
},
"path": ["color", "grey", "95"]
}
},
"red": {
"10": {
"value": "#320301",
"original": {
"value": "#320301"
},
"name": "ColorRed10",
"attributes": {
"category": "color",
"type": "red",
"item": "10"
},
"path": ["color", "red", "10"]
},
"15": {
"value": "#4b0402",
"original": {
"value": "#4b0402"
},
"name": "ColorRed15",
"attributes": {
"category": "color",
"type": "red",
"item": "15"
},
"path": ["color", "red", "15"]
},
"20": {
"value": "#630603",
"original": {
"value": "#630603"
},
"name": "ColorRed20",
"attributes": {
"category": "color",
"type": "red",
"item": "20"
},
"path": ["color", "red", "20"]
},
"25": {
"value": "#7c0703",
"original": {
"value": "#7c0703"
},
"name": "ColorRed25",
"attributes": {
"category": "color",
"type": "red",
"item": "25"
},
"path": ["color", "red", "25"]
},
"30": {
"value": "#950904",
"original": {
"value": "#950904"
},
"name": "ColorRed30",
"attributes": {
"category": "color",
"type": "red",
"item": "30"
},
"path": ["color", "red", "30"]
},
"35": {
"value": "#ae0a04",
"original": {
"value": "#ae0a04"
},
"name": "ColorRed35",
"attributes": {
"category": "color",
"type": "red",
"item": "35"
},
"path": ["color", "red", "35"]
},
"40": {
"value": "#c70c05",
"original": {
"value": "#c70c05"
},
"name": "ColorRed40",
"attributes": {
"category": "color",
"type": "red",
"item": "40"
},
"path": ["color", "red", "40"]
},
"45": {
"value": "#e00d06",
"original": {
"value": "#e00d06"
},
"name": "ColorRed45",
"attributes": {
"category": "color",
"type": "red",
"item": "45"
},
"path": ["color", "red", "45"]
},
"50": {
"value": "#f90e06",
"original": {
"value": "#f90e06"
},
"name": "ColorRed50",
"attributes": {
"category": "color",
"type": "red",
"item": "50"
},
"path": ["color", "red", "50"]
},
"55": {
"value": "#f9271f",
"original": {
"value": "#f9271f"
},
"name": "ColorRed55",
"attributes": {
"category": "color",
"type": "red",
"item": "55"
},
"path": ["color", "red", "55"]
},
"60": {
"value": "#fa3f38",
"original": {
"value": "#fa3f38"
},
"name": "ColorRed60",
"attributes": {
"category": "color",
"type": "red",
"item": "60"
},
"path": ["color", "red", "60"]
},
"65": {
"value": "#fb5751",
"original": {
"value": "#fb5751"
},
"name": "ColorRed65",
"attributes": {
"category": "color",
"type": "red",
"item": "65"
},
"path": ["color", "red", "65"]
},
"70": {
"value": "#fb6f6a",
"original": {
"value": "#fb6f6a"
},
"name": "ColorRed70",
"attributes": {
"category": "color",
"type": "red",
"item": "70"
},
"path": ["color", "red", "70"]
},
"75": {
"value": "#fc8783",
"original": {
"value": "#fc8783"
},
"name": "ColorRed75",
"attributes": {
"category": "color",
"type": "red",
"item": "75"
},
"path": ["color", "red", "75"]
},
"80": {
"value": "#fc9f9c",
"original": {
"value": "#fc9f9c"
},
"name": "ColorRed80",
"attributes": {
"category": "color",
"type": "red",
"item": "80"
},
"path": ["color", "red", "80"]
},
"85": {
"value": "#fdb7b4",
"original": {
"value": "#fdb7b4"
},
"name": "ColorRed85",
"attributes": {
"category": "color",
"type": "red",
"item": "85"
},
"path": ["color", "red", "85"]
},
"90": {
"value": "#fecfcd",
"original": {
"value": "#fecfcd"
},
"name": "ColorRed90",
"attributes": {
"category": "color",
"type": "red",
"item": "90"
},
"path": ["color", "red", "90"]
},
"95": {
"value": "#fee7e6",
"original": {
"value": "#fee7e6"
},
"name": "ColorRed95",
"attributes": {
"category": "color",
"type": "red",
"item": "95"
},
"path": ["color", "red", "95"]
}
},
"yellow": {
"10": {
"value": "#322801",
"original": {
"value": "#322801"
},
"name": "ColorYellow10",
"attributes": {
"category": "color",
"type": "yellow",
"item": "10"
},
"path": ["color", "yellow", "10"]
},
"15": {
"value": "#4b3c02",
"original": {
"value": "#4b3c02"
},
"name": "ColorYellow15",
"attributes": {
"category": "color",
"type": "yellow",
"item": "15"
},
"path": ["color", "yellow", "15"]
},
"20": {
"value": "#645002",
"original": {
"value": "#645002"
},
"name": "ColorYellow20",
"attributes": {
"category": "color",
"type": "yellow",
"item": "20"
},
"path": ["color", "yellow", "20"]
},
"25": {
"value": "#7d6403",
"original": {
"value": "#7d6403"
},
"name": "ColorYellow25",
"attributes": {
"category": "color",
"type": "yellow",
"item": "25"
},
"path": ["color", "yellow", "25"]
},
"30": {
"value": "#957804",
"original": {
"value": "#957804"
},
"name": "ColorYellow30",
"attributes": {
"category": "color",
"type": "yellow",
"item": "30"
},
"path": ["color", "yellow", "30"]
},
"35": {
"value": "#ae8c04",
"original": {
"value": "#ae8c04"
},
"name": "ColorYellow35",
"attributes": {
"category": "color",
"type": "yellow",
"item": "35"
},
"path": ["color", "yellow", "35"]
},
"40": {
"value": "#c7a005",
"original": {
"value": "#c7a005"
},
"name": "ColorYellow40",
"attributes": {
"category": "color",
"type": "yellow",
"item": "40"
},
"path": ["color", "yellow", "40"]
},
"45": {
"value": "#e0b405",
"original": {
"value": "#e0b405"
},
"name": "ColorYellow45",
"attributes": {
"category": "color",
"type": "yellow",
"item": "45"
},
"path": ["color", "yellow", "45"]
},
"50": {
"value": "#f9c806",
"original": {
"value": "#f9c806"
},
"name": "ColorYellow50",
"attributes": {
"category": "color",
"type": "yellow",
"item": "50"
},
"path": ["color", "yellow", "50"]
},
"55": {
"value": "#facd1f",
"original": {
"value": "#facd1f"
},
"name": "ColorYellow55",
"attributes": {
"category": "color",
"type": "yellow",
"item": "55"
},
"path": ["color", "yellow", "55"]
},
"60": {
"value": "#fad338",
"original": {
"value": "#fad338"
},
"name": "ColorYellow60",
"attributes": {
"category": "color",
"type": "yellow",
"item": "60"
},
"path": ["color", "yellow", "60"]
},
"65": {
"value": "#fbd951",
"original": {
"value": "#fbd951"
},
"name": "ColorYellow65",
"attributes": {
"category": "color",
"type": "yellow",
"item": "65"
},
"path": ["color", "yellow", "65"]
},
"70": {
"value": "#fbde6a",
"original": {
"value": "#fbde6a"
},
"name": "ColorYellow70",
"attributes": {
"category": "color",
"type": "yellow",
"item": "70"
},
"path": ["color", "yellow", "70"]
},
"75": {
"value": "#fce383",
"original": {
"value": "#fce383"
},
"name": "ColorYellow75",
"attributes": {
"category": "color",
"type": "yellow",
"item": "75"
},
"path": ["color", "yellow", "75"]
},
"80": {
"value": "#fde99b",
"original": {
"value": "#fde99b"
},
"name": "ColorYellow80",
"attributes": {
"category": "color",
"type": "yellow",
"item": "80"
},
"path": ["color", "yellow", "80"]
},
"85": {
"value": "#fdeeb4",
"original": {
"value": "#fdeeb4"
},
"name": "ColorYellow85",
"attributes": {
"category": "color",
"type": "yellow",
"item": "85"
},
"path": ["color", "yellow", "85"]
},
"90": {
"value": "#fef4cd",
"original": {
"value": "#fef4cd"
},
"name": "ColorYellow90",
"attributes": {
"category": "color",
"type": "yellow",
"item": "90"
},
"path": ["color", "yellow", "90"]
},
"95": {
"value": "#fefae6",
"original": {
"value": "#fefae6"
},
"name": "ColorYellow95",
"attributes": {
"category": "color",
"type": "yellow",
"item": "95"
},
"path": ["color", "yellow", "95"]
}
},
"background": {
"accordion": {
"normal": {
"value": "#ffffff",
"comment": "Background color of the accordion",
"original": {
"value": "#ffffff",
"comment": "Background color of the accordion"
},
"name": "ColorBackgroundAccordionNormal",
"attributes": {
"category": "color",
"type": "background",
"item": "accordion",
"subitem": "normal"
},
"path": ["color", "background", "accordion", "normal"]
},
"hover": {
"value": "#f0f2f4",
"comment": "Background color of the accordion in hover state",
"original": {
"value": "{color.grey.95.value}",
"comment": "Background color of the accordion in hover state"
},
"name": "ColorBackgroundAccordionHover",
"attributes": {
"category": "color",
"type": "background",
"item": "accordion",
"subitem": "hover"
},
"path": ["color", "background", "accordion", "hover"]
}
},
"avatar": {
"value": "#3882fa",
"comment": "Background color of the avatar",
"original": {
"value": "{color.blue.60.value}",
"comment": "Background color of the avatar"
},
"name": "ColorBackgroundAvatar",
"attributes": {
"category": "color",
"type": "background",
"item": "avatar"
},
"path": ["color", "background", "avatar"]
},
"banner": {
"info": {
"value": "#e6effe",
"comment": "Background color of the info banner",
"original": {
"value": "{color.blue.95.value}",
"comment": "Background color of the info banner"
},
"name": "ColorBackgroundBannerInfo",
"attributes": {
"category": "color",
"type": "background",
"item": "banner",
"subitem": "info"
},
"path": ["color", "background", "banner", "info"]
},
"warning": {
"value": "#fefae6",
"comment": "Background color of the warning banner",
"original": {
"value": "{color.yellow.95.value}",
"comment": "Background color of the warning banner"
},
"name": "ColorBackgroundBannerWarning",
"attributes": {
"category": "color",
"type": "background",
"item": "banner",
"subitem": "warning"
},
"path": ["color", "background", "banner", "warning"]
},
"error": {
"value": "#fee7e6",
"comment": "Background color of the error banner",
"original": {
"value": "{color.red.95.value}",
"comment": "Background color of the error banner"
},
"name": "ColorBackgroundBannerError",
"attributes": {
"category": "color",
"type": "background",
"item": "banner",
"subitem": "error"
},
"path": ["color", "background", "banner", "error"]
},
"success": {
"value": "#eefaeb",
"comment": "Background color of the success banner",
"original": {
"value": "{color.green.95.value}",
"comment": "Background color of the success banner"
},
"name": "ColorBackgroundBannerSuccess",
"attributes": {
"category": "color",
"type": "background",
"item": "banner",
"subitem": "success"
},
"path": ["color", "background", "banner", "success"]
},
"emoji": {
"info": {
"value": "#ffffff",
"comment": "Background color of the info banner",
"original": {
"value": "#ffffff",
"comment": "Background color of the info banner"
},
"name": "ColorBackgroundBannerEmojiInfo",
"attributes": {
"category": "color",
"type": "background",
"item": "banner",
"subitem": "emoji",
"state": "info"
},
"path": ["color", "background", "banner", "emoji", "info"]
},
"warning": {
"value": "#ffffff",
"comment": "Background color of the warning banner",
"original": {
"value": "#ffffff",
"comment": "Background color of the warning banner"
},
"name": "ColorBackgroundBannerEmojiWarning",
"attributes": {
"category": "color",
"type": "background",
"item": "banner",
"subitem": "emoji",
"state": "warning"
},
"path": ["color", "background", "banner", "emoji", "warning"]
},
"error": {
"value": "#ffffff",
"comment": "Background color of the error banner",
"original": {
"value": "#ffffff",
"comment": "Background color of the error banner"
},
"name": "ColorBackgroundBannerEmojiError",
"attributes": {
"category": "color",
"type": "background",
"item": "banner",
"subitem": "emoji",
"state": "error"
},
"path": ["color", "background", "banner", "emoji", "error"]
},
"success": {
"value": "#ffffff",
"comment": "Background color of the success banner",
"original": {
"value": "#ffffff",
"comment": "Background color of the success banner"
},
"name": "ColorBackgroundBannerEmojiSuccess",
"attributes": {
"category": "color",
"type": "background",
"item": "banner",
"subitem": "emoji",
"state": "success"
},
"path": ["color", "background", "banner", "emoji", "success"]
}
}
},
"card": {
"value": "#ffffff",
"comment": "Background color of the card",
"original": {
"value": "#ffffff",
"comment": "Background color of the card"
},
"name": "ColorBackgroundCard",
"attributes": {
"category": "color",
"type": "background",
"item": "card"
},
"path": ["color", "background", "card"]
},
"progress-bar": {
"container": {
"value": "#ffffff",
"comment": "Background color of the progress bar",
"original": {
"value": "#ffffff",
"comment": "Background color of the progress bar"
},
"name": "ColorBackgroundProgressBarContainer",
"attributes": {
"category": "color",
"type": "background",
"item": "progress-bar",
"subitem": "container"
},
"path": ["color", "background", "progress-bar", "container"]
},
"buffer": {
"value": "#3882fa",
"comment": "Background color of the buffer of the progress bar",
"original": {
"value": "{color.blue.60.value}",
"comment": "Background color of the buffer of the progress bar"
},
"name": "ColorBackgroundProgressBarBuffer",
"attributes": {
"category": "color",
"type": "background",
"item": "progress-bar",
"subitem": "buffer"
},
"path": ["color", "background", "progress-bar", "buffer"]
}
},
"snack-bar": {
"info": {
"value": "#e6effe",
"comment": "Background color of the info snack-bar",
"original": {
"value": "{color.blue.95.value}",
"comment": "Background color of the info snack-bar"
},
"name": "ColorBackgroundSnackBarInfo",
"attributes": {
"category": "color",
"type": "background",
"item": "snack-bar",
"subitem": "info"
},
"path": ["color", "background", "snack-bar", "info"]
},
"warning": {
"value": "#fefae6",
"comment": "Background color of the warning snack-bar",
"original": {
"value": "{color.yellow.95.value}",
"comment": "Background color of the warning snack-bar"
},
"name": "ColorBackgroundSnackBarWarning",
"attributes": {
"category": "color",
"type": "background",
"item": "snack-bar",
"subitem": "warning"
},
"path": ["color", "background", "snack-bar", "warning"]
},
"error": {
"value": "#fee7e6",
"comment": "Background color of the error snack-bar",
"original": {
"value": "{color.red.95.value}",
"comment": "Background color of the error snack-bar"
},
"name": "ColorBackgroundSnackBarError",
"attributes": {
"category": "color",
"type": "background",
"item": "snack-bar",
"subitem": "error"
},
"path": ["color", "background", "snack-bar", "error"]
},
"success": {
"value": "#eefaeb",
"comment": "Background color of the success snack-bar",
"original": {
"value": "{color.green.95.value}",
"comment": "Background color of the success snack-bar"
},
"name": "ColorBackgroundSnackBarSuccess",
"attributes": {
"category": "color",
"type": "background",
"item": "snack-bar",
"subitem": "success"
},
"path": ["color", "background", "snack-bar", "success"]
},
"emoji": {
"info": {
"value": "#ffffff",
"comment": "Background color of the info snack-bar",
"original": {
"value": "#ffffff",
"comment": "Background color of the info snack-bar"
},
"name": "ColorBackgroundSnackBarEmojiInfo",
"attributes": {
"category": "color",
"type": "background",
"item": "snack-bar",
"subitem": "emoji",
"state": "info"
},
"path": ["color", "background", "snack-bar", "emoji", "info"]
},
"warning": {
"value": "#ffffff",
"comment": "Background color of the warning snack-bar",
"original": {
"value": "#ffffff",
"comment": "Background color of the warning snack-bar"
},
"name": "ColorBackgroundSnackBarEmojiWarning",
"attributes": {
"category": "color",
"type": "background",
"item": "snack-bar",
"subitem": "emoji",
"state": "warning"
},
"path": ["color", "background", "snack-bar", "emoji", "warning"]
},
"error": {
"value": "#ffffff",
"comment": "Background color of the error snack-bar",
"original": {
"value": "#ffffff",
"comment": "Background color of the error snack-bar"
},
"name": "ColorBackgroundSnackBarEmojiError",
"attributes": {
"category": "color",
"type": "background",
"item": "snack-bar",
"subitem": "emoji",
"state": "error"
},
"path": ["color", "background", "snack-bar", "emoji", "error"]
},
"success": {
"value": "#ffffff",
"comment": "Background color of the success banner",
"original": {
"value": "#ffffff",
"comment": "Background color of the success banner"
},
"name": "ColorBackgroundSnackBarEmojiSuccess",
"attributes": {
"category": "color",
"type": "background",
"item": "snack-bar",
"subitem": "emoji",
"state": "success"
},
"path": ["color", "background", "snack-bar", "emoji", "success"]
}
}
},
"toggle": {
"container": {
"value": "#ffffff",
"comment": "Background color of the toggle",
"original": {
"value": "#ffffff",
"comment": "Background color of the toggle"
},
"name": "ColorBackgroundToggleContainer",
"attributes": {
"category": "color",
"type": "background",
"item": "toggle",
"subitem": "container"
},
"path": ["color", "background", "toggle", "container"]
},
"selector": {
"normal": {
"value": "#000000",
"comment": "Background color of the toggle selector",
"original": {
"value": "#000000",
"comment": "Background color of the toggle selector"
},
"name": "ColorBackgroundToggleSelectorNormal",
"attributes": {
"category": "color",
"type": "background",
"item": "toggle",
"subitem": "selector",
"state": "normal"
},
"path": ["color", "background", "toggle", "selector", "normal"]
},
"hover": {
"value": "#f9c806",
"comment": "Background color of the toggle selector on hover",
"original": {
"value": "{color.yellow.50.value}",
"comment": "Background color of the toggle selector on hover"
},
"name": "ColorBackgroundToggleSelectorHover",
"attributes": {
"category": "color",
"type": "background",
"item": "toggle",
"subitem": "selector",
"state": "hover"
},
"path": ["color", "background", "toggle", "selector", "hover"]
},
"inactive": {
"value": "#3882fa",
"comment": "Background color of the toggle selector inactive",
"original": {
"value": "{color.blue.60.value}",
"comment": "Background color of the toggle selector inactive"
},
"name": "ColorBackgroundToggleSelectorInactive",
"attributes": {
"category": "color",
"type": "background",
"item": "toggle",
"subitem": "selector",
"state": "inactive"
},
"path": ["color", "background", "toggle", "selector", "inactive"]
}
}
}
},
"border": {
"accordion": {
"value": "#f0f2f4",
"comment": "Border color of the accordion",
"original": {
"value": "{color.grey.95.value}",
"comment": "Border color of the accordion"
},
"name": "ColorBorderAccordion",
"attributes": {
"category": "color",
"type": "border",
"item": "accordion"
},
"path": ["color", "border", "accordion"]
},
"banner": {
"info": {
"value": "#9cc1fc",
"comment": "Border color of the info banner",
"original": {
"value": "{color.blue.80.value}",
"comment": "Border color of the info banner"
},
"name": "ColorBorderBannerInfo",
"attributes": {
"category": "color",
"type": "border",
"item": "banner",
"subitem": "info"
},
"path": ["color", "border", "banner", "info"]
},
"warning": {
"value": "#fde99b",
"comment": "Border color of the warning banner",
"original": {
"value": "{color.yellow.80.value}",
"comment": "Border color of the warning banner"
},
"name": "ColorBorderBannerWarning",
"attributes": {
"category": "color",
"type": "border",
"item": "banner",
"subitem": "warning"
},
"path": ["color", "border", "banner", "warning"]
},
"error": {
"value": "#fc9f9c",
"comment": "Border color of the error banner",
"original": {
"value": "{color.red.80.value}",
"comment": "Border color of the error banner"
},
"name": "ColorBorderBannerError",
"attributes": {
"category": "color",
"type": "border",
"item": "banner",
"subitem": "error"
},
"path": ["color", "border", "banner", "error"]
},
"success": {
"value": "#bce9af",
"comment": "Border color of the success banner",
"original": {
"value": "{color.green.80.value}",
"comment": "Border color of the success banner"
},
"name": "ColorBorderBannerSuccess",
"attributes": {
"category": "color",
"type": "border",
"item": "banner",
"subitem": "success"
},
"path": ["color", "border", "banner", "success"]
}
},
"chip": {
"success": {
"value": "#bbebb4",
"comment": "Border color of the success chip",
"original": {
"value": "#bbebb4",
"comment": "Border color of the success chip"
},
"name": "ColorBorderChipSuccess",
"attributes": {
"category": "color",
"type": "border",
"item": "chip",
"subitem": "success"
},
"path": ["color", "border", "chip", "success"]
},
"error": {
"value": "#fecfcd",
"comment": "Border color of the error chip",
"original": {
"value": "{color.red.90.value}",
"comment": "Border color of the error chip"
},
"name": "ColorBorderChipError",
"attributes": {
"category": "color",
"type": "border",
"item": "chip",
"subitem": "error"
},
"path": ["color", "border", "chip", "error"]
},
"info": {
"value": "#cde0fe",
"comment": "Border color of the info chip",
"original": {
"value": "{color.blue.90.value}",
"comment": "Border color of the info chip"
},
"name": "ColorBorderChipInfo",
"attributes": {
"category": "color",
"type": "border",
"item": "chip",
"subitem": "info"
},
"path": ["color", "border", "chip", "info"]
},
"message": {
"value": "#e2e6e9",
"comment": "Border color of the message chip",
"original": {
"value": "{color.grey.90.value}",
"comment": "Border color of the message chip"
},
"name": "ColorBorderChipMessage",
"attributes": {
"category": "color",
"type": "border",
"item": "chip",
"subitem": "message"
},
"path": ["color", "border", "chip", "message"]
}
},
"list-header": {
"value": "#f0f2f4",
"comment": "Border color of the list header",
"original": {
"value": "{color.grey.95.value}",
"comment": "Border color of the list header"
},
"name": "ColorBorderListHeader",
"attributes": {
"category": "color",
"type": "border",
"item": "list-header"
},
"path": ["color", "border", "list-header"]
},
"snack-bar": {
"info": {
"value": "#9cc1fc",
"comment": "Border color of the info snack-bar",
"original": {
"value": "{color.blue.80.value}",
"comment": "Border color of the info snack-bar"
},
"name": "ColorBorderSnackBarInfo",
"attributes": {
"category": "color",
"type": "border",
"item": "snack-bar",
"subitem": "info"
},
"path": ["color", "border", "snack-bar", "info"]
},
"warning": {
"value": "#fde99b",
"comment": "Border color of the warning snack-bar",
"original": {
"value": "{color.yellow.80.value}",
"comment": "Border color of the warning snack-bar"
},
"name": "ColorBorderSnackBarWarning",
"attributes": {
"category": "color",
"type": "border",
"item": "snack-bar",
"subitem": "warning"
},
"path": ["color", "border", "snack-bar", "warning"]
},
"error": {
"value": "#fc9f9c",
"comment": "Border color of the error snack-bar",
"original": {
"value": "{color.red.80.value}",
"comment": "Border color of the error snack-bar"
},
"name": "ColorBorderSnackBarError",
"attributes": {
"category": "color",
"type": "border",
"item": "snack-bar",
"subitem": "error"
},
"path": ["color", "border", "snack-bar", "error"]
},
"success": {
"value": "#bce9af",
"comment": "Border color of the success snack-bar",
"original": {
"value": "{color.green.80.value}",
"comment": "Border color of the success snack-bar"
},
"name": "ColorBorderSnackBarSuccess",
"attributes": {
"category": "color",
"type": "border",
"item": "snack-bar",
"subitem": "success"
},
"path": ["color", "border", "snack-bar", "success"]
}
}
},
"text": {
"banner": {
"info": {
"value": "#3882fa",
"comment": "Text color of the info banner",
"original": {
"value": "{color.blue.60.value}",
"comment": "Text color of the info banner"
},
"name": "ColorTextBannerInfo",
"attributes": {
"category": "color",
"type": "text",
"item": "banner",
"subitem": "info"
},
"path": ["color", "text", "banner", "info"]
},
"warning": {
"value": "#fad338",
"comment": "Text color of the warning banner",
"original": {
"value": "{color.yellow.60.value}",
"comment": "Text color of the warning banner"
},
"name": "ColorTextBannerWarning",
"attributes": {
"category": "color",
"type": "text",
"item": "banner",
"subitem": "warning"
},
"path": ["color", "text", "banner", "warning"]
},
"error": {
"value": "#fa3f38",
"comment": "Text color of the error banner",
"original": {
"value": "{color.red.60.value}",
"comment": "Text color of the error banner"
},
"name": "ColorTextBannerError",
"attributes": {
"category": "color",
"type": "text",
"item": "banner",
"subitem": "error"
},
"path": ["color", "text", "banner", "error"]
},
"success": {
"value": "#7ad35f",
"comment": "Text color of the success banner",
"original": {
"value": "{color.green.60.value}",
"comment": "Text color of the success banner"
},
"name": "ColorTextBannerSuccess",
"attributes": {
"category": "color",
"type": "text",
"item": "banner",
"subitem": "success"
},
"path": ["color", "text", "banner", "success"]
}
},
"chip": {
"success": {
"value": "#4fd53a",
"comment": "Text color of the success chip",
"original": {
"value": "#4fd53a",
"comment": "Text color of the success chip"
},
"name": "ColorTextChipSuccess",
"attributes": {
"category": "color",
"type": "text",
"item": "chip",
"subitem": "success"
},
"path": ["color", "text", "chip", "success"]
},
"error": {
"value": "#e00d06",
"comment": "Text color of the error chip",
"original": {
"value": "{color.red.45.value}",
"comment": "Text color of the error chip"
},
"name": "ColorTextChipError",
"attributes": {
"category": "color",
"type": "text",
"item": "chip",
"subitem": "error"
},
"path": ["color", "text", "chip", "error"]
},
"info": {
"value": "#0659e0",
"comment": "Text color of the info chip",
"original": {
"value": "{color.blue.45.value}",
"comment": "Text color of the info chip"
},
"name": "ColorTextChipInfo",
"attributes": {
"category": "color",
"type": "text",
"item": "chip",
"subitem": "info"
},
"path": ["color", "text", "chip", "info"]
},
"message": {
"value": "#627484",
"comment": "Text color of the message chip",
"original": {
"value": "{color.grey.45.value}",
"comment": "Text color of the message chip"
},
"name": "ColorTextChipMessage",
"attributes": {
"category": "color",
"type": "text",
"item": "chip",
"subitem": "message"
},
"path": ["color", "text", "chip", "message"]
}
},
"list-header": {
"value": "#8a9aa8",
"comment": "Text color of the list header",
"original": {
"value": "{color.grey.60.value}",
"comment": "Text color of the list header"
},
"name": "ColorTextListHeader",
"attributes": {
"category": "color",
"type": "text",
"item": "list-header"
},
"path": ["color", "text", "list-header"]
},
"snack-bar": {
"info": {
"value": "#3882fa",
"comment": "Text color of the info snack-bar",
"original": {
"value": "{color.blue.60.value}",
"comment": "Text color of the info snack-bar"
},
"name": "ColorTextSnackBarInfo",
"attributes": {
"category": "color",
"type": "text",
"item": "snack-bar",
"subitem": "info"
},
"path": ["color", "text", "snack-bar", "info"]
},
"warning": {
"value": "#fad338",
"comment": "Text color of the warning snack-bar",
"original": {
"value": "{color.yellow.60.value}",
"comment": "Text color of the warning snack-bar"
},
"name": "ColorTextSnackBarWarning",
"attributes": {
"category": "color",
"type": "text",
"item": "snack-bar",
"subitem": "warning"
},
"path": ["color", "text", "snack-bar", "warning"]
},
"error": {
"value": "#fa3f38",
"comment": "Text color of the error snack-bar",
"original": {
"value": "{color.red.60.value}",
"comment": "Text color of the error snack-bar"
},
"name": "ColorTextSnackBarError",
"attributes": {
"category": "color",
"type": "text",
"item": "snack-bar",
"subitem": "error"
},
"path": ["color", "text", "snack-bar", "error"]
},
"success": {
"value": "#7ad35f",
"comment": "Text color of the success snack-bar",
"original": {
"value": "{color.green.60.value}",
"comment": "Text color of the success snack-bar"
},
"name": "ColorTextSnackBarSuccess",
"attributes": {
"category": "color",
"type": "text",
"item": "snack-bar",
"subitem": "success"
},
"path": ["color", "text", "snack-bar", "success"]
}
}
},
"close": {
"icon": {
"info": {
"value": "#0659e0",
"comment": "Icon color of the close button",
"original": {
"value": "{color.blue.45.value}",
"comment": "Icon color of the close button"
},
"name": "ColorCloseIconInfo",
"attributes": {
"category": "color",
"type": "close",
"item": "icon",
"subitem": "info"
},
"path": ["color", "close", "icon", "info"]
},
"warning": {
"value": "#e0b405",
"comment": "Icon color of the warning close button",
"original": {
"value": "{color.yellow.45.value}",
"comment": "Icon color of the warning close button"
},
"name": "ColorCloseIconWarning",
"attributes": {
"category": "color",
"type": "close",
"item": "icon",
"subitem": "warning"
},
"path": ["color", "close", "icon", "warning"]
},
"error": {
"value": "#e00d06",
"comment": "Icon color of the error close button",
"original": {
"value": "{color.red.45.value}",
"comment": "Icon color of the error close button"
},
"name": "ColorCloseIconError",
"attributes": {
"category": "color",
"type": "close",
"item": "icon",
"subitem": "error"
},
"path": ["color", "close", "icon", "error"]
},
"success": {
"value": "#50b431",
"comment": "Icon color of the success close button",
"original": {
"value": "{color.green.45.value}",
"comment": "Icon color of the success close button"
},
"name": "ColorCloseIconSuccess",
"attributes": {
"category": "color",
"type": "close",
"item": "icon",
"subitem": "success"
},
"path": ["color", "close", "icon", "success"]
}
},
"background": {
"info": {
"value": "#e6effe",
"comment": "Hover background color of the info close button",
"original": {
"value": "{color.blue.95.value}",
"comment": "Hover background color of the info close button"
},
"name": "ColorCloseBackgroundInfo",
"attributes": {
"category": "color",
"type": "close",
"item": "background",
"subitem": "info"
},
"path": ["color", "close", "background", "info"]
},
"warning": {
"value": "#fefae6",
"comment": "Hover background color of the warning close buttonr",
"original": {
"value": "{color.yellow.95.value}",
"comment": "Hover background color of the warning close buttonr"
},
"name": "ColorCloseBackgroundWarning",
"attributes": {
"category": "color",
"type": "close",
"item": "background",
"subitem": "warning"
},
"path": ["color", "close", "background", "warning"]
},
"error": {
"value": "#fee7e6",
"comment": "Hover background color of the error close button",
"original": {
"value": "{color.red.95.value}",
"comment": "Hover background color of the error close button"
},
"name": "ColorCloseBackgroundError",
"attributes": {
"category": "color",
"type": "close",
"item": "background",
"subitem": "error"
},
"path": ["color", "close", "background", "error"]
},
"success": {
"value": "#eefaeb",
"comment": "Hover background color of the success close button",
"original": {
"value": "{color.green.95.value}",
"comment": "Hover background color of the success close button"
},
"name": "ColorCloseBackgroundSuccess",
"attributes": {
"category": "color",
"type": "close",
"item": "background",
"subitem": "success"
},
"path": ["color", "close", "background", "success"]
}
},
"ripple": {
"info": {
"value": "#cde0fe",
"comment": "Hover background color of the info close button",
"original": {
"value": "{color.blue.90.value}",
"comment": "Hover background color of the info close button"
},
"name": "ColorCloseRippleInfo",
"attributes": {
"category": "color",
"type": "close",
"item": "ripple",
"subitem": "info"
},
"path": ["color", "close", "ripple", "info"]
},
"warning": {
"value": "#fef4cd",
"comment": "Hover background color of the warning close buttonr",
"original": {
"value": "{color.yellow.90.value}",
"comment": "Hover background color of the warning close buttonr"
},
"name": "ColorCloseRippleWarning",
"attributes": {
"category": "color",
"type": "close",
"item": "ripple",
"subitem": "warning"
},
"path": ["color", "close", "ripple", "warning"]
},
"error": {
"value": "#fecfcd",
"comment": "Hover background color of the error close button",
"original": {
"value": "{color.red.90.value}",
"comment": "Hover background color of the error close button"
},
"name": "ColorCloseRippleError",
"attributes": {
"category": "color",
"type": "close",
"item": "ripple",
"subitem": "error"
},
"path": ["color", "close", "ripple", "error"]
},
"success": {
"value": "#def4d7",
"comment": "Hover background color of the success close button",
"original": {
"value": "{color.green.90.value}",
"comment": "Hover background color of the success close button"
},
"name": "ColorCloseRippleSuccess",
"attributes": {
"category": "color",
"type": "close",
"item": "ripple",
"subitem": "success"
},
"path": ["color", "close", "ripple", "success"]
}
}
}
},
"elevation": {
"box": {
"s": {
"value": "0 2px 4px 0 rgba(0,0,0,0.15)",
"original": {
"value": "0 2px 4px 0 rgba(0,0,0,0.15)"
},
"name": "ElevationBoxS",
"attributes": {
"category": "elevation",
"type": "box",
"item": "s"
},
"path": ["elevation", "box", "s"]
},
"m": {
"value": "0 2px 8px 0 rgba(0,0,0,0.15)",
"original": {
"value": "0 2px 8px 0 rgba(0,0,0,0.15)"
},
"name": "ElevationBoxM",
"attributes": {
"category": "elevation",
"type": "box",
"item": "m"
},
"path": ["elevation", "box", "m"]
},
"l": {
"value": "0 2px 16px 0 rgba(0,0,0,0.15)",
"original": {
"value": "0 2px 16px 0 rgba(0,0,0,0.15)"
},
"name": "ElevationBoxL",
"attributes": {
"category": "elevation",
"type": "box",
"item": "l"
},
"path": ["elevation", "box", "l"]
},
"xl": {
"value": "0 2px 32px 0 rgba(0,0,0,0.15)",
"original": {
"value": "0 2px 32px 0 rgba(0,0,0,0.15)"
},
"name": "ElevationBoxXl",
"attributes": {
"category": "elevation",
"type": "box",
"item": "xl"
},
"path": ["elevation", "box", "xl"]
}
},
"text": {
"s": {
"value": "0 1px 1px rgba(0,0,0,0.15)",
"original": {
"value": "0 1px 1px rgba(0,0,0,0.15)"
},
"name": "ElevationTextS",
"attributes": {
"category": "elevation",
"type": "text",
"item": "s"
},
"path": ["elevation", "text", "s"]
}
}
},
"height": {
"line": {
"12": {
"value": "12px",
"original": {
"value": "12px"
},
"name": "HeightLine12",
"attributes": {
"category": "height",
"type": "line",
"item": "12"
},
"path": ["height", "line", "12"]
},
"16": {
"value": "16px",
"original": {
"value": "16px"
},
"name": "HeightLine16",
"attributes": {
"category": "height",
"type": "line",
"item": "16"
},
"path": ["height", "line", "16"]
},
"20": {
"value": "20px",
"original": {
"value": "20px"
},
"name": "HeightLine20",
"attributes": {
"category": "height",
"type": "line",
"item": "20"
},
"path": ["height", "line", "20"]
},
"24": {
"value": "24px",
"original": {
"value": "24px"
},
"name": "HeightLine24",
"attributes": {
"category": "height",
"type": "line",
"item": "24"
},
"path": ["height", "line", "24"]
},
"26": {
"value": "26px",
"original": {
"value": "26px"
},
"name": "HeightLine26",
"attributes": {
"category": "height",
"type": "line",
"item": "26"
},
"path": ["height", "line", "26"]
},
"28": {
"value": "28px",
"original": {
"value": "28px"
},
"name": "HeightLine28",
"attributes": {
"category": "height",
"type": "line",
"item": "28"
},
"path": ["height", "line", "28"]
},
"30": {
"value": "30px",
"original": {
"value": "30px"
},
"name": "HeightLine30",
"attributes": {
"category": "height",
"type": "line",
"item": "30"
},
"path": ["height", "line", "30"]
},
"32": {
"value": "32px",
"original": {
"value": "32px"
},
"name": "HeightLine32",
"attributes": {
"category": "height",
"type": "line",
"item": "32"
},
"path": ["height", "line", "32"]
},
"36": {
"value": "36px",
"original": {
"value": "36px"
},
"name": "HeightLine36",
"attributes": {
"category": "height",
"type": "line",
"item": "36"
},
"path": ["height", "line", "36"]
},
"40": {
"value": "40px",
"original": {
"value": "40px"
},
"name": "HeightLine40",
"attributes": {
"category": "height",
"type": "line",
"item": "40"
},
"path": ["height", "line", "40"]
},
"44": {
"value": "44px",
"original": {
"value": "44px"
},
"name": "HeightLine44",
"attributes": {
"category": "height",
"type": "line",
"item": "44"
},
"path": ["height", "line", "44"]
},
"48": {
"value": "48px",
"original": {
"value": "48px"
},
"name": "HeightLine48",
"attributes": {
"category": "height",
"type": "line",
"item": "48"
},
"path": ["height", "line", "48"]
},
"52": {
"value": "52px",
"original": {
"value": "52px"
},
"name": "HeightLine52",
"attributes": {
"category": "height",
"type": "line",
"item": "52"
},
"path": ["height", "line", "52"]
},
"64": {
"value": "64px",
"original": {
"value": "64px"
},
"name": "HeightLine64",
"attributes": {
"category": "height",
"type": "line",
"item": "64"
},
"path": ["height", "line", "64"]
},
"68": {
"value": "68px",
"original": {
"value": "68px"
},
"name": "HeightLine68",
"attributes": {
"category": "height",
"type": "line",
"item": "68"
},
"path": ["height", "line", "68"]
},
"72": {
"value": "72px",
"original": {
"value": "72px"
},
"name": "HeightLine72",
"attributes": {
"category": "height",
"type": "line",
"item": "72"
},
"path": ["height", "line", "72"]
}
}
},
"size": {
"border": {
"s": {
"value": "0.0625rem",
"original": {
"value": "0.0625"
},
"name": "SizeBorderS",
"attributes": {
"category": "size",
"type": "border",
"item": "s"
},
"path": ["size", "border", "s"]
},
"m": {
"value": "0.125rem",
"original": {
"value": "0.125"
},
"name": "SizeBorderM",
"attributes": {
"category": "size",
"type": "border",
"item": "m"
},
"path": ["size", "border", "m"]
},
"l": {
"value": "0.1875rem",
"original": {
"value": "0.1875"
},
"name": "SizeBorderL",
"attributes": {
"category": "size",
"type": "border",
"item": "l"
},
"path": ["size", "border", "l"]
},
"xl": {
"value": "0.25rem",
"original": {
"value": "0.25"
},
"name": "SizeBorderXl",
"attributes": {
"category": "size",
"type": "border",
"item": "xl"
},
"path": ["size", "border", "xl"]
},
"accordion": {
"value": "0.0625rem",
"comment": "Size of the border of the accordion",
"original": {
"value": "{size.border.s.value}",
"comment": "Size of the border of the accordion"
},
"name": "SizeBorderAccordion",
"attributes": {
"category": "size",
"type": "border",
"item": "accordion"
},
"path": ["size", "border", "accordion"]
},
"banner": {
"value": "0.0625rem",
"comment": "Border size of the banner",
"original": {
"value": "{size.border.s.value}",
"comment": "Border size of the banner"
},
"name": "SizeBorderBanner",
"attributes": {
"category": "size",
"type": "border",
"item": "banner"
},
"path": ["size", "border", "banner"]
},
"chip": {
"value": "0.1875rem",
"comment": "Size of the border of the chip",
"original": {
"value": "{size.border.l.value}",
"comment": "Size of the border of the chip"
},
"name": "SizeBorderChip",
"attributes": {
"category": "size",
"type": "border",
"item": "chip"
},
"path": ["size", "border", "chip"]
},
"list-header": {
"value": "0.0625rem",
"comment": "Size of the border of the list header",
"original": {
"value": "{size.border.s.value}",
"comment": "Size of the border of the list header"
},
"name": "SizeBorderListHeader",
"attributes": {
"category": "size",
"type": "border",
"item": "list-header"
},
"path": ["size", "border", "list-header"]
},
"snack-bar": {
"value": "0.0625rem",
"comment": "Border size of the snack-bar",
"original": {
"value": "{size.border.s.value}",
"comment": "Border size of the snack-bar"
},
"name": "SizeBorderSnackBar",
"attributes": {
"category": "size",
"type": "border",
"item": "snack-bar"
},
"path": ["size", "border", "snack-bar"]
}
},
"font": {
"12": {
"value": "0.75rem",
"original": {
"value": "0.75rem"
},
"name": "SizeFont12",
"attributes": {
"category": "size",
"type": "font",
"item": "12"
},
"path": ["size", "font", "12"]
},
"14": {
"value": "0.875rem",
"original": {
"value": "0.875rem"
},
"name": "SizeFont14",
"attributes": {
"category": "size",
"type": "font",
"item": "14"
},
"path": ["size", "font", "14"]
},
"16": {
"value": "1rem",
"original": {
"value": "1"
},
"name": "SizeFont16",
"attributes": {
"category": "size",
"type": "font",
"item": "16"
},
"path": ["size", "font", "16"]
},
"18": {
"value": "1.125rem",
"original": {
"value": "1.125rem"
},
"name": "SizeFont18",
"attributes": {
"category": "size",
"type": "font",
"item": "18"
},
"path": ["size", "font", "18"]
},
"20": {
"value": "1.25rem",
"original": {
"value": "1.25rem"
},
"name": "SizeFont20",
"attributes": {
"category": "size",
"type": "font",
"item": "20"
},
"path": ["size", "font", "20"]
},
"24": {
"value": "1.5rem",
"original": {
"value": "1.5rem"
},
"name": "SizeFont24",
"attributes": {
"category": "size",
"type": "font",
"item": "24"
},
"path": ["size", "font", "24"]
},
"28": {
"value": "1.75rem",
"original": {
"value": "1.75rem"
},
"name": "SizeFont28",
"attributes": {
"category": "size",
"type": "font",
"item": "28"
},
"path": ["size", "font", "28"]
},
"32": {
"value": "2rem",
"original": {
"value": "2rem"
},
"name": "SizeFont32",
"attributes": {
"category": "size",
"type": "font",
"item": "32"
},
"path": ["size", "font", "32"]
},
"36": {
"value": "2.25rem",
"original": {
"value": "2.25rem"
},
"name": "SizeFont36",
"attributes": {
"category": "size",
"type": "font",
"item": "36"
},
"path": ["size", "font", "36"]
},
"40": {
"value": "2.5rem",
"original": {
"value": "2.5rem"
},
"name": "SizeFont40",
"attributes": {
"category": "size",
"type": "font",
"item": "40"
},
"path": ["size", "font", "40"]
},
"52": {
"value": "3.25rem",
"original": {
"value": "3.25rem"
},
"name": "SizeFont52",
"attributes": {
"category": "size",
"type": "font",
"item": "52"
},
"path": ["size", "font", "52"]
},
"60": {
"value": "3.75rem",
"original": {
"value": "3.75rem"
},
"name": "SizeFont60",
"attributes": {
"category": "size",
"type": "font",
"item": "60"
},
"path": ["size", "font", "60"]
},
"base": {
"value": "1rem",
"original": {
"value": "{size.font.16.value}"
},
"name": "SizeFontBase",
"attributes": {
"category": "size",
"type": "font",
"item": "base"
},
"path": ["size", "font", "base"]
},
"normal": {
"xs": {
"value": "0.75rem",
"original": {
"value": "{size.font.12.value}"
},
"name": "SizeFontNormalXs",
"attributes": {
"category": "size",
"type": "font",
"item": "normal",
"subitem": "xs"
},
"path": ["size", "font", "normal", "xs"]
},
"s": {
"value": "0.875rem",
"original": {
"value": "{size.font.14.value}"
},
"name": "SizeFontNormalS",
"attributes": {
"category": "size",
"type": "font",
"item": "normal",
"subitem": "s"
},
"path": ["size", "font", "normal", "s"]
},
"m": {
"value": "1rem",
"original": {
"value": "{size.font.16.value}"
},
"name": "SizeFontNormalM",
"attributes": {
"category": "size",
"type": "font",
"item": "normal",
"subitem": "m"
},
"path": ["size", "font", "normal", "m"]
},
"l": {
"value": "1.125rem",
"original": {
"value": "{size.font.18.value}"
},
"name": "SizeFontNormalL",
"attributes": {
"category": "size",
"type": "font",
"item": "normal",
"subitem": "l"
},
"path": ["size", "font", "normal", "l"]
}
},
"large": {
"xs": {
"value": "1.25rem",
"original": {
"value": "{size.font.20.value}"
},
"name": "SizeFontLargeXs",
"attributes": {
"category": "size",
"type": "font",
"item": "large",
"subitem": "xs"
},
"path": ["size", "font", "large", "xs"]
},
"s": {
"value": "1.5rem",
"original": {
"value": "{size.font.24.value}"
},
"name": "SizeFontLargeS",
"attributes": {
"category": "size",
"type": "font",
"item": "large",
"subitem": "s"
},
"path": ["size", "font", "large", "s"]
},
"m": {
"value": "1.75rem",
"original": {
"value": "{size.font.28.value}"
},
"name": "SizeFontLargeM",
"attributes": {
"category": "size",
"type": "font",
"item": "large",
"subitem": "m"
},
"path": ["size", "font", "large", "m"]
},
"l": {
"value": "2rem",
"original": {
"value": "{size.font.32.value}"
},
"name": "SizeFontLargeL",
"attributes": {
"category": "size",
"type": "font",
"item": "large",
"subitem": "l"
},
"path": ["size", "font", "large", "l"]
}
},
"extra-large": {
"xs": {
"value": "2.25rem",
"original": {
"value": "{size.font.36.value}"
},
"name": "SizeFontExtraLargeXs",
"attributes": {
"category": "size",
"type": "font",
"item": "extra-large",
"subitem": "xs"
},
"path": ["size", "font", "extra-large", "xs"]
},
"s": {
"value": "2.5rem",
"original": {
"value": "{size.font.40.value}"
},
"name": "SizeFontExtraLargeS",
"attributes": {
"category": "size",
"type": "font",
"item": "extra-large",
"subitem": "s"
},
"path": ["size", "font", "extra-large", "s"]
},
"m": {
"value": "3.25rem",
"original": {
"value": "{size.font.52.value}"
},
"name": "SizeFontExtraLargeM",
"attributes": {
"category": "size",
"type": "font",
"item": "extra-large",
"subitem": "m"
},
"path": ["size", "font", "extra-large", "m"]
},
"l": {
"value": "3.75rem",
"original": {
"value": "{size.font.60.value}"
},
"name": "SizeFontExtraLargeL",
"attributes": {
"category": "size",
"type": "font",
"item": "extra-large",
"subitem": "l"
},
"path": ["size", "font", "extra-large", "l"]
}
}
},
"break-point": {
"s": {
"min": {
"value": "20rem",
"original": {
"value": "20"
},
"name": "SizeBreakPointSMin",
"attributes": {
"category": "size",
"type": "break-point",
"item": "s",
"subitem": "min"
},
"path": ["size", "break-point", "s", "min"]
},
"max": {
"value": "39.9375rem",
"original": {
"value": "39.9375"
},
"name": "SizeBreakPointSMax",
"attributes": {
"category": "size",
"type": "break-point",
"item": "s",
"subitem": "max"
},
"path": ["size", "break-point", "s", "max"]
}
},
"m": {
"min": {
"value": "40rem",
"original": {
"value": "40"
},
"name": "SizeBreakPointMMin",
"attributes": {
"category": "size",
"type": "break-point",
"item": "m",
"subitem": "min"
},
"path": ["size", "break-point", "m", "min"]
},
"max": {
"value": "59.9375rem",
"original": {
"value": "59.9375"
},
"name": "SizeBreakPointMMax",
"attributes": {
"category": "size",
"type": "break-point",
"item": "m",
"subitem": "max"
},
"path": ["size", "break-point", "m", "max"]
}
},
"l": {
"min": {
"value": "60rem",
"original": {
"value": "60"
},
"name": "SizeBreakPointLMin",
"attributes": {
"category": "size",
"type": "break-point",
"item": "l",
"subitem": "min"
},
"path": ["size", "break-point", "l", "min"]
},
"max": {
"value": "9999rem",
"original": {
"value": "9999"
},
"name": "SizeBreakPointLMax",
"attributes": {
"category": "size",
"type": "break-point",
"item": "l",
"subitem": "max"
},
"path": ["size", "break-point", "l", "max"]
}
}
},
"radius": {
"100": {
"value": "100rem",
"original": {
"value": "100px"
},
"name": "SizeRadius100",
"attributes": {
"category": "size",
"type": "radius",
"item": "100"
},
"path": ["size", "radius", "100"]
},
"avatar": {
"value": "100rem",
"comment": "Radius of the avatar",
"original": {
"value": "{size.radius.100.value}",
"comment": "Radius of the avatar"
},
"name": "SizeRadiusAvatar",
"attributes": {
"category": "size",
"type": "radius",
"item": "avatar"
},
"path": ["size", "radius", "avatar"]
}
},
"spacing": {
"none": {
"value": "0rem",
"original": {
"value": "0"
},
"name": "SizeSpacingNone",
"attributes": {
"category": "size",
"type": "spacing",
"item": "none"
},
"path": ["size", "spacing", "none"]
},
"xs": {
"value": "0.25rem",
"original": {
"value": "0.25"
},
"name": "SizeSpacingXs",
"attributes": {
"category": "size",
"type": "spacing",
"item": "xs"
},
"path": ["size", "spacing", "xs"]
},
"s": {
"value": "0.5rem",
"original": {
"value": "0.5"
},
"name": "SizeSpacingS",
"attributes": {
"category": "size",
"type": "spacing",
"item": "s"
},
"path": ["size", "spacing", "s"]
},
"m": {
"value": "1rem",
"original": {
"value": "1"
},
"name": "SizeSpacingM",
"attributes": {
"category": "size",
"type": "spacing",
"item": "m"
},
"path": ["size", "spacing", "m"]
},
"l": {
"value": "1.5rem",
"original": {
"value": "1.5"
},
"name": "SizeSpacingL",
"attributes": {
"category": "size",
"type": "spacing",
"item": "l"
},
"path": ["size", "spacing", "l"]
},
"xl": {
"value": "2rem",
"original": {
"value": "2"
},
"name": "SizeSpacingXl",
"attributes": {
"category": "size",
"type": "spacing",
"item": "xl"
},
"path": ["size", "spacing", "xl"]
},
"xxl": {
"value": "2.5rem",
"original": {
"value": "2.5"
},
"name": "SizeSpacingXxl",
"attributes": {
"category": "size",
"type": "spacing",
"item": "xxl"
},
"path": ["size", "spacing", "xxl"]
},
"xxxl": {
"value": "3rem",
"original": {
"value": "3"
},
"name": "SizeSpacingXxxl",
"attributes": {
"category": "size",
"type": "spacing",
"item": "xxxl"
},
"path": ["size", "spacing", "xxxl"]
}
},
"padding": {
"accordion": {
"value": "1.5rem",
"comment": "Padding of the accordion container",
"original": {
"value": "{size.spacing.l.value}",
"comment": "Padding of the accordion container"
},
"name": "SizePaddingAccordion",
"attributes": {
"category": "size",
"type": "padding",
"item": "accordion"
},
"path": ["size", "padding", "accordion"]
},
"vertical": {
"banner": {
"value": "1.5rem",
"comment": "Top and bottom padding of the banner container",
"original": {
"value": "{size.spacing.l.value}",
"comment": "Top and bottom padding of the banner container"
},
"name": "SizePaddingVerticalBanner",
"attributes": {
"category": "size",
"type": "padding",
"item": "vertical",
"subitem": "banner"
},
"path": ["size", "padding", "vertical", "banner"]
},
"snack-bar": {
"value": "1.5rem",
"comment": "Top and bottom padding of the snack-bar container",
"original": {
"value": "{size.spacing.l.value}",
"comment": "Top and bottom padding of the snack-bar container"
},
"name": "SizePaddingVerticalSnackBar",
"attributes": {
"category": "size",
"type": "padding",
"item": "vertical",
"subitem": "snack-bar"
},
"path": ["size", "padding", "vertical", "snack-bar"]
}
},
"horizontal": {
"banner": {
"value": "1.5rem",
"comment": "Left and right padding of the banner container",
"original": {
"value": "{size.spacing.l.value}",
"comment": "Left and right padding of the banner container"
},
"name": "SizePaddingHorizontalBanner",
"attributes": {
"category": "size",
"type": "padding",
"item": "horizontal",
"subitem": "banner"
},
"path": ["size", "padding", "horizontal", "banner"]
},
"snack-bar": {
"value": "1.5rem",
"comment": "Left and right padding of the snack-bar container",
"original": {
"value": "{size.spacing.l.value}",
"comment": "Left and right padding of the snack-bar container"
},
"name": "SizePaddingHorizontalSnackBar",
"attributes": {
"category": "size",
"type": "padding",
"item": "horizontal",
"subitem": "snack-bar"
},
"path": ["size", "padding", "horizontal", "snack-bar"]
}
},
"chip": {
"horizontal": {
"value": "0.5rem",
"comment": "Horizontal padding of the text of the chip",
"original": {
"value": "{size.spacing.s.value}",
"comment": "Horizontal padding of the text of the chip"
},
"name": "SizePaddingChipHorizontal",
"attributes": {
"category": "size",
"type": "padding",
"item": "chip",
"subitem": "horizontal"
},
"path": ["size", "padding", "chip", "horizontal"]
}
},
"list-header": {
"horizontal": {
"value": "0rem",
"comment": "Horizontal padding of the list header",
"original": {
"value": "{size.spacing.none.value}",
"comment": "Horizontal padding of the list header"
},
"name": "SizePaddingListHeaderHorizontal",
"attributes": {
"category": "size",
"type": "padding",
"item": "list-header",
"subitem": "horizontal"
},
"path": ["size", "padding", "list-header", "horizontal"]
},
"vertical": {
"value": "0.25rem",
"comment": "Horizontal padding of the list header",
"original": {
"value": "{size.spacing.xs.value}",
"comment": "Horizontal padding of the list header"
},
"name": "SizePaddingListHeaderVertical",
"attributes": {
"category": "size",
"type": "padding",
"item": "list-header",
"subitem": "vertical"
},
"path": ["size", "padding", "list-header", "vertical"]
}
}
},
"margin": {
"accordion": {
"active": {
"inset": {
"value": "1rem",
"comment": "Margin left and right of the accordion container when inset",
"original": {
"value": "{size.spacing.m.value}",
"comment": "Margin left and right of the accordion container when inset"
},
"name": "SizeMarginAccordionActiveInset",
"attributes": {
"category": "size",
"type": "margin",
"item": "accordion",
"subitem": "active",
"state": "inset"
},
"path": ["size", "margin", "accordion", "active", "inset"]
},
"vertical": {
"value": "1rem",
"comment": "Margin top and bottom of the accordion container when expand",
"original": {
"value": "{size.spacing.m.value}",
"comment": "Margin top and bottom of the accordion container when expand"
},
"name": "SizeMarginAccordionActiveVertical",
"attributes": {
"category": "size",
"type": "margin",
"item": "accordion",
"subitem": "active",
"state": "vertical"
},
"path": ["size", "margin", "accordion", "active", "vertical"]
}
}
}
},
"height": {
"chip": {
"value": "1.5rem",
"comment": "Height of the chip",
"original": {
"value": "1.5",
"comment": "Height of the chip"
},
"name": "SizeHeightChip",
"attributes": {
"category": "size",
"type": "height",
"item": "chip"
},
"path": ["size", "height", "chip"]
},
"progress-bar": {
"s": {
"value": "0.125rem",
"comment": "Height of the progress bar",
"original": {
"value": "0.125",
"comment": "Height of the progress bar"
},
"name": "SizeHeightProgressBarS",
"attributes": {
"category": "size",
"type": "height",
"item": "progress-bar",
"subitem": "s"
},
"path": ["size", "height", "progress-bar", "s"]
}
}
}
},
"space": {
"letter": {
"null": {
"value": "0rem",
"original": {
"value": "0rem"
},
"name": "SpaceLetterNull",
"attributes": {
"category": "space",
"type": "letter",
"item": "null"
},
"path": ["space", "letter", "null"]
},
"s": {
"value": "0.01rem",
"original": {
"value": "0.01rem"
},
"name": "SpaceLetterS",
"attributes": {
"category": "space",
"type": "letter",
"item": "s"
},
"path": ["space", "letter", "s"]
},
"m": {
"value": "0.2rem",
"original": {
"value": "0.2rem"
},
"name": "SpaceLetterM",
"attributes": {
"category": "space",
"type": "letter",
"item": "m"
},
"path": ["space", "letter", "m"]
}
}
},
"transition": {
"duration": {
"s": {
"value": "0.1s",
"original": {
"value": "0.1s"
},
"name": "TransitionDurationS",
"attributes": {
"category": "transition",
"type": "duration",
"item": "s"
},
"path": ["transition", "duration", "s"]
},
"m": {
"value": "0.2s",
"original": {
"value": "0.2s"
},
"name": "TransitionDurationM",
"attributes": {
"category": "transition",
"type": "duration",
"item": "m"
},
"path": ["transition", "duration", "m"]
},
"l": {
"value": "0.5s",
"original": {
"value": "0.5s"
},
"name": "TransitionDurationL",
"attributes": {
"category": "transition",
"type": "duration",
"item": "l"
},
"path": ["transition", "duration", "l"]
},
"xl": {
"value": "1s",
"original": {
"value": "1s"
},
"name": "TransitionDurationXl",
"attributes": {
"category": "transition",
"type": "duration",
"item": "xl"
},
"path": ["transition", "duration", "xl"]
},
"xxl": {
"value": "2s",
"original": {
"value": "2s"
},
"name": "TransitionDurationXxl",
"attributes": {
"category": "transition",
"type": "duration",
"item": "xxl"
},
"path": ["transition", "duration", "xxl"]
}
},
"function": {
"ease": {
"value": "ease",
"comment": "Transition effect with a slow start, then fast, then end slowly",
"original": {
"value": "ease",
"comment": "Transition effect with a slow start, then fast, then end slowly"
},
"name": "TransitionFunctionEase",
"attributes": {
"category": "transition",
"type": "function",
"item": "ease"
},
"path": ["transition", "function", "ease"]
},
"ease-in": {
"value": "ease-in",
"comment": "Transition effect with a slow start",
"original": {
"value": "ease-in",
"comment": "Transition effect with a slow start"
},
"name": "TransitionFunctionEaseIn",
"attributes": {
"category": "transition",
"type": "function",
"item": "ease-in"
},
"path": ["transition", "function", "ease-in"]
},
"ease-out": {
"value": "ease-out",
"comment": "Transition effect with a slow end",
"original": {
"value": "ease-out",
"comment": "Transition effect with a slow end"
},
"name": "TransitionFunctionEaseOut",
"attributes": {
"category": "transition",
"type": "function",
"item": "ease-out"
},
"path": ["transition", "function", "ease-out"]
},
"ease-in-out": {
"value": "ease-in-out",
"comment": "Transition effect with a slow start and end",
"original": {
"value": "ease-in-out",
"comment": "Transition effect with a slow start and end"
},
"name": "TransitionFunctionEaseInOut",
"attributes": {
"category": "transition",
"type": "function",
"item": "ease-in-out"
},
"path": ["transition", "function", "ease-in-out"]
},
"linear": {
"value": "linear",
"comment": "Transition effect with the same speed from start to end",
"original": {
"value": "linear",
"comment": "Transition effect with the same speed from start to end"
},
"name": "TransitionFunctionLinear",
"attributes": {
"category": "transition",
"type": "function",
"item": "linear"
},
"path": ["transition", "function", "linear"]
}
},
"transform": {
"rotate": {
"90": {
"value": "rotate(90deg)",
"original": {
"value": "rotate(90deg)"
},
"name": "TransitionTransformRotate90",
"attributes": {
"category": "transition",
"type": "transform",
"item": "rotate",
"subitem": "90"
},
"path": ["transition", "transform", "rotate", "90"]
},
"180": {
"value": "rotate(180deg)",
"original": {
"value": "rotate(180deg)"
},
"name": "TransitionTransformRotate180",
"attributes": {
"category": "transition",
"type": "transform",
"item": "rotate",
"subitem": "180"
},
"path": ["transition", "transform", "rotate", "180"]
},
"270": {
"value": "rotate(270deg)",
"original": {
"value": "rotate(270deg)"
},
"name": "TransitionTransformRotate270",
"attributes": {
"category": "transition",
"type": "transform",
"item": "rotate",
"subitem": "270"
},
"path": ["transition", "transform", "rotate", "270"]
},
"360": {
"value": "rotate(360deg)",
"original": {
"value": "rotate(360deg)"
},
"name": "TransitionTransformRotate360",
"attributes": {
"category": "transition",
"type": "transform",
"item": "rotate",
"subitem": "360"
},
"path": ["transition", "transform", "rotate", "360"]
}
},
"accordion": {
"icon": {
"value": "rotate(180deg)",
"comment": "Transform of the icon when the accordion expands and collapse",
"original": {
"value": "{transition.transform.rotate.180.value}",
"comment": "Transform of the icon when the accordion expands and collapse"
},
"name": "TransitionTransformAccordionIcon",
"attributes": {
"category": "transition",
"type": "transform",
"item": "accordion",
"subitem": "icon"
},
"path": ["transition", "transform", "accordion", "icon"]
}
},
"avatar": {
"icon": {
"value": "rotate(180deg)",
"comment": "Transform of the icon when the avatar is active",
"original": {
"value": "{transition.transform.rotate.180.value}",
"comment": "Transform of the icon when the avatar is active"
},
"name": "TransitionTransformAvatarIcon",
"attributes": {
"category": "transition",
"type": "transform",
"item": "avatar",
"subitem": "icon"
},
"path": ["transition", "transform", "avatar", "icon"]
}
}
},
"types": {
"fade": {
"value": "opacity 0.2s ease",
"original": {
"value": "opacity {transition.duration.m.value} {transition.function.ease.value}"
},
"name": "TransitionTypesFade",
"attributes": {
"category": "transition",
"type": "types",
"item": "fade"
},
"path": ["transition", "types", "fade"]
},
"transform": {
"value": "transform 0.2s ease",
"original": {
"value": "transform {transition.duration.m.value} {transition.function.ease.value}"
},
"name": "TransitionTypesTransform",
"attributes": {
"category": "transition",
"type": "types",
"item": "transform"
},
"path": ["transition", "types", "transform"]
},
"width": {
"value": "width 0.2s ease",
"original": {
"value": "width {transition.duration.m.value} {transition.function.ease.value}"
},
"name": "TransitionTypesWidth",
"attributes": {
"category": "transition",
"type": "types",
"item": "width"
},
"path": ["transition", "types", "width"]
}
},
"expand": {
"accordion": {
"icon": {
"value": "transform 0.2s ease-in",
"comment": "Transition of the icon when the accordion expands and collapse",
"original": {
"value": "transform {transition.duration.m.value} {transition.function.ease-in.value}",
"comment": "Transition of the icon when the accordion expands and collapse"
},
"name": "TransitionExpandAccordionIcon",
"attributes": {
"category": "transition",
"type": "expand",
"item": "accordion",
"subitem": "icon"
},
"path": ["transition", "expand", "accordion", "icon"]
},
"duration": {
"value": 0.2,
"original": {
"value": 0.2
},
"name": "TransitionExpandAccordionDuration",
"attributes": {
"category": "transition",
"type": "expand",
"item": "accordion",
"subitem": "duration"
},
"path": ["transition", "expand", "accordion", "duration"]
}
}
},
"avatar": {
"icon": {
"value": "transform 0.2s ease-in",
"comment": "Transition of the icon when the avatar is active",
"original": {
"value": "transform {transition.duration.m.value} {transition.function.ease-in.value}",
"comment": "Transition of the icon when the avatar is active"
},
"name": "TransitionAvatarIcon",
"attributes": {
"category": "transition",
"type": "avatar",
"item": "icon"
},
"path": ["transition", "avatar", "icon"]
}
}
},
"weight": {
"font": {
"light": {
"value": "300",
"original": {
"value": "300"
},
"name": "WeightFontLight",
"attributes": {
"category": "weight",
"type": "font",
"item": "light"
},
"path": ["weight", "font", "light"]
},
"regular": {
"value": "400",
"original": {
"value": "400"
},
"name": "WeightFontRegular",
"attributes": {
"category": "weight",
"type": "font",
"item": "regular"
},
"path": ["weight", "font", "regular"]
},
"book": {
"value": "500",
"original": {
"value": "500"
},
"name": "WeightFontBook",
"attributes": {
"category": "weight",
"type": "font",
"item": "book"
},
"path": ["weight", "font", "book"]
},
"medium": {
"value": "600",
"original": {
"value": "600"
},
"name": "WeightFontMedium",
"attributes": {
"category": "weight",
"type": "font",
"item": "medium"
},
"path": ["weight", "font", "medium"]
},
"bold": {
"value": "700",
"original": {
"value": "700"
},
"name": "WeightFontBold",
"attributes": {
"category": "weight",
"type": "font",
"item": "bold"
},
"path": ["weight", "font", "bold"]
}
}
},
"shadow": {
"box": {
"accordion": {
"normal": {
"value": "0 2px 4px 0 rgba(0,0,0,0.15)",
"comment": "Box shadow of the accordion in normal state",
"original": {
"value": "{elevation.box.s.value}",
"comment": "Box shadow of the accordion in normal state"
},
"name": "ShadowBoxAccordionNormal",
"attributes": {
"category": "shadow",
"type": "box",
"item": "accordion",
"subitem": "normal"
},
"path": ["shadow", "box", "accordion", "normal"]
}
},
"banner": {
"value": "0 2px 4px 0 rgba(0,0,0,0.15)",
"comment": "Box shadow of the banner",
"original": {
"value": "{elevation.box.s.value}",
"comment": "Box shadow of the banner"
},
"name": "ShadowBoxBanner",
"attributes": {
"category": "shadow",
"type": "box",
"item": "banner"
},
"path": ["shadow", "box", "banner"]
},
"card": {
"value": "0 2px 4px 0 rgba(0,0,0,0.15)",
"comment": "Box shadow of the card",
"original": {
"value": "{elevation.box.s.value}",
"comment": "Box shadow of the card"
},
"name": "ShadowBoxCard",
"attributes": {
"category": "shadow",
"type": "box",
"item": "card"
},
"path": ["shadow", "box", "card"]
},
"snack-bar": {
"value": "0 2px 4px 0 rgba(0,0,0,0.15)",
"comment": "Box shadow of the snack-bar",
"original": {
"value": "{elevation.box.s.value}",
"comment": "Box shadow of the snack-bar"
},
"name": "ShadowBoxSnackBar",
"attributes": {
"category": "shadow",
"type": "box",
"item": "snack-bar"
},
"path": ["shadow", "box", "snack-bar"]
}
}
}
};
/***/ }),
/***/ "17c2":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $forEach = __webpack_require__("b727").forEach;
var arrayMethodIsStrict = __webpack_require__("a640");
var arrayMethodUsesToLength = __webpack_require__("ae40");
var STRICT_METHOD = arrayMethodIsStrict('forEach');
var USES_TO_LENGTH = arrayMethodUsesToLength('forEach');
// `Array.prototype.forEach` method implementation
// https://tc39.github.io/ecma262/#sec-array.prototype.foreach
module.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {
return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
} : [].forEach;
/***/ }),
/***/ "1be4":
/***/ (function(module, exports, __webpack_require__) {
var getBuiltIn = __webpack_require__("d066");
module.exports = getBuiltIn('document', 'documentElement');
/***/ }),
/***/ "1c0b":
/***/ (function(module, exports) {
module.exports = function (it) {
if (typeof it != 'function') {
throw TypeError(String(it) + ' is not a function');
} return it;
};
/***/ }),
/***/ "1d80":
/***/ (function(module, exports) {
// `RequireObjectCoercible` abstract operation
// https://tc39.github.io/ecma262/#sec-requireobjectcoercible
module.exports = function (it) {
if (it == undefined) throw TypeError("Can't call method on " + it);
return it;
};
/***/ }),
/***/ "1dde":
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__("d039");
var wellKnownSymbol = __webpack_require__("b622");
var V8_VERSION = __webpack_require__("2d00");
var SPECIES = wellKnownSymbol('species');
module.exports = function (METHOD_NAME) {
// We can't use this feature detection in V8 since it causes
// deoptimization and serious performance degradation
// https://github.com/zloirock/core-js/issues/677
return V8_VERSION >= 51 || !fails(function () {
var array = [];
var constructor = array.constructor = {};
constructor[SPECIES] = function () {
return { foo: 1 };
};
return array[METHOD_NAME](Boolean).foo !== 1;
});
};
/***/ }),
/***/ "2155":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_button_scss_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("9702");
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_button_scss_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_button_scss_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */
/* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_button_scss_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ "23cb":
/***/ (function(module, exports, __webpack_require__) {
var toInteger = __webpack_require__("a691");
var max = Math.max;
var min = Math.min;
// Helper for a popular repeating case of the spec:
// Let integer be ? ToInteger(index).
// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
module.exports = function (index, length) {
var integer = toInteger(index);
return integer < 0 ? max(integer + length, 0) : min(integer, length);
};
/***/ }),
/***/ "23e7":
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__("da84");
var getOwnPropertyDescriptor = __webpack_require__("06cf").f;
var createNonEnumerableProperty = __webpack_require__("9112");
var redefine = __webpack_require__("6eeb");
var setGlobal = __webpack_require__("ce4e");
var copyConstructorProperties = __webpack_require__("e893");
var isForced = __webpack_require__("94ca");
/*
options.target - name of the target object
options.global - target is the global object
options.stat - export as static methods of target
options.proto - export as prototype methods of target
options.real - real prototype method for the `pure` version
options.forced - export even if the native feature is available
options.bind - bind methods to the target, required for the `pure` version
options.wrap - wrap constructors to preventing global pollution, required for the `pure` version
options.unsafe - use the simple assignment of property instead of delete + defineProperty
options.sham - add a flag to not completely full polyfills
options.enumerable - export as enumerable property
options.noTargetGet - prevent calling a getter on target
*/
module.exports = function (options, source) {
var TARGET = options.target;
var GLOBAL = options.global;
var STATIC = options.stat;
var FORCED, target, key, targetProperty, sourceProperty, descriptor;
if (GLOBAL) {
target = global;
} else if (STATIC) {
target = global[TARGET] || setGlobal(TARGET, {});
} else {
target = (global[TARGET] || {}).prototype;
}
if (target) for (key in source) {
sourceProperty = source[key];
if (options.noTargetGet) {
descriptor = getOwnPropertyDescriptor(target, key);
targetProperty = descriptor && descriptor.value;
} else targetProperty = target[key];
FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
// contained in target
if (!FORCED && targetProperty !== undefined) {
if (typeof sourceProperty === typeof targetProperty) continue;
copyConstructorProperties(sourceProperty, targetProperty);
}
// add a flag to not completely full polyfills
if (options.sham || (targetProperty && targetProperty.sham)) {
createNonEnumerableProperty(sourceProperty, 'sham', true);
}
// extend global
redefine(target, key, sourceProperty, options);
}
};
/***/ }),
/***/ "241c":
/***/ (function(module, exports, __webpack_require__) {
var internalObjectKeys = __webpack_require__("ca84");
var enumBugKeys = __webpack_require__("7839");
var hiddenKeys = enumBugKeys.concat('length', 'prototype');
// `Object.getOwnPropertyNames` method
// https://tc39.github.io/ecma262/#sec-object.getownpropertynames
exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
return internalObjectKeys(O, hiddenKeys);
};
/***/ }),
/***/ "2532":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__("23e7");
var notARegExp = __webpack_require__("5a34");
var requireObjectCoercible = __webpack_require__("1d80");
var correctIsRegExpLogic = __webpack_require__("ab13");
// `String.prototype.includes` method
// https://tc39.github.io/ecma262/#sec-string.prototype.includes
$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {
includes: function includes(searchString /* , position = 0 */) {
return !!~String(requireObjectCoercible(this))
.indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);
}
});
/***/ }),
/***/ "2593":
/***/ (function(module) {
module.exports = JSON.parse("{\"code\":\"en\",\"messages\":{\"alpha\":\"The {_field_} field may only contain alphabetic characters\",\"alpha_num\":\"The {_field_} field may only contain alpha-numeric characters\",\"alpha_dash\":\"The {_field_} field may contain alpha-numeric characters as well as dashes and underscores\",\"alpha_spaces\":\"The {_field_} field may only contain alphabetic characters as well as spaces\",\"between\":\"The {_field_} field must be between {min} and {max}\",\"confirmed\":\"The {_field_} field confirmation does not match\",\"digits\":\"The {_field_} field must be numeric and exactly contain {length} digits\",\"dimensions\":\"The {_field_} field must be {width} pixels by {height} pixels\",\"email\":\"The {_field_} field must be a valid email\",\"excluded\":\"The {_field_} field is not a valid value\",\"ext\":\"The {_field_} field is not a valid file\",\"image\":\"The {_field_} field must be an image\",\"integer\":\"The {_field_} field must be an integer\",\"length\":\"The {_field_} field must be {length} long\",\"max_value\":\"The {_field_} field must be {max} or less\",\"max\":\"The {_field_} field may not be greater than {length} characters\",\"mimes\":\"The {_field_} field must have a valid file type\",\"min_value\":\"The {_field_} field must be {min} or more\",\"min\":\"The {_field_} field must be at least {length} characters\",\"numeric\":\"The {_field_} field may only contain numeric characters\",\"oneOf\":\"The {_field_} field is not a valid value\",\"regex\":\"The {_field_} field format is invalid\",\"required_if\":\"The {_field_} field is required\",\"required\":\"The {_field_} field is required\",\"size\":\"The {_field_} field size must be less than {size}KB\"}}");
/***/ }),
/***/ "25ab":
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "25f0":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var redefine = __webpack_require__("6eeb");
var anObject = __webpack_require__("825a");
var fails = __webpack_require__("d039");
var flags = __webpack_require__("ad6d");
var TO_STRING = 'toString';
var RegExpPrototype = RegExp.prototype;
var nativeToString = RegExpPrototype[TO_STRING];
var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });
// FF44- RegExp#toString has a wrong name
var INCORRECT_NAME = nativeToString.name != TO_STRING;
// `RegExp.prototype.toString` method
// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring
if (NOT_GENERIC || INCORRECT_NAME) {
redefine(RegExp.prototype, TO_STRING, function toString() {
var R = anObject(this);
var p = String(R.source);
var rf = R.flags;
var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);
return '/' + p + '/' + f;
}, { unsafe: true });
}
/***/ }),
/***/ "27e2":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_banner_scss_vue_type_style_index_0_id_6951da42_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("fd58");
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_banner_scss_vue_type_style_index_0_id_6951da42_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_banner_scss_vue_type_style_index_0_id_6951da42_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */
/* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_banner_scss_vue_type_style_index_0_id_6951da42_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ "28a3":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_navigation_bar_scss_vue_type_style_index_0_id_648f09ae_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("8e91");
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_navigation_bar_scss_vue_type_style_index_0_id_648f09ae_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_navigation_bar_scss_vue_type_style_index_0_id_648f09ae_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */
/* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_navigation_bar_scss_vue_type_style_index_0_id_648f09ae_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ "2c29":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_snack_bar_scss_vue_type_style_index_0_id_14c956e6_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("25ab");
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_snack_bar_scss_vue_type_style_index_0_id_14c956e6_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_snack_bar_scss_vue_type_style_index_0_id_14c956e6_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */
/* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_snack_bar_scss_vue_type_style_index_0_id_14c956e6_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ "2d00":
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__("da84");
var userAgent = __webpack_require__("342f");
var process = global.process;
var versions = process && process.versions;
var v8 = versions && versions.v8;
var match, version;
if (v8) {
match = v8.split('.');
version = match[0] + match[1];
} else if (userAgent) {
match = userAgent.match(/Edge\/(\d+)/);
if (!match || match[1] >= 74) {
match = userAgent.match(/Chrome\/(\d+)/);
if (match) version = match[1];
}
}
module.exports = version && +version;
/***/ }),
/***/ "2e4f":
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "342f":
/***/ (function(module, exports, __webpack_require__) {
var getBuiltIn = __webpack_require__("d066");
module.exports = getBuiltIn('navigator', 'userAgent') || '';
/***/ }),
/***/ "37e8":
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__("83ab");
var definePropertyModule = __webpack_require__("9bf2");
var anObject = __webpack_require__("825a");
var objectKeys = __webpack_require__("df75");
// `Object.defineProperties` method
// https://tc39.github.io/ecma262/#sec-object.defineproperties
module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
anObject(O);
var keys = objectKeys(Properties);
var length = keys.length;
var index = 0;
var key;
while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);
return O;
};
/***/ }),
/***/ "3bbe":
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__("861d");
module.exports = function (it) {
if (!isObject(it) && it !== null) {
throw TypeError("Can't set " + String(it) + ' as a prototype');
} return it;
};
/***/ }),
/***/ "3f8c":
/***/ (function(module, exports) {
module.exports = {};
/***/ }),
/***/ "4069":
/***/ (function(module, exports, __webpack_require__) {
// this method was added to unscopables after implementation
// in popular engines, so it's moved to a separate module
var addToUnscopables = __webpack_require__("44d2");
addToUnscopables('flat');
/***/ }),
/***/ "408a":
/***/ (function(module, exports, __webpack_require__) {
var classof = __webpack_require__("c6b6");
// `thisNumberValue` abstract operation
// https://tc39.github.io/ecma262/#sec-thisnumbervalue
module.exports = function (value) {
if (typeof value != 'number' && classof(value) != 'Number') {
throw TypeError('Incorrect invocation');
}
return +value;
};
/***/ }),
/***/ "4160":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__("23e7");
var forEach = __webpack_require__("17c2");
// `Array.prototype.forEach` method
// https://tc39.github.io/ecma262/#sec-array.prototype.foreach
$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {
forEach: forEach
});
/***/ }),
/***/ "428f":
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__("da84");
module.exports = global;
/***/ }),
/***/ "44ad":
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__("d039");
var classof = __webpack_require__("c6b6");
var split = ''.split;
// fallback for non-array-like ES3 and non-enumerable old V8 strings
module.exports = fails(function () {
// throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
// eslint-disable-next-line no-prototype-builtins
return !Object('z').propertyIsEnumerable(0);
}) ? function (it) {
return classof(it) == 'String' ? split.call(it, '') : Object(it);
} : Object;
/***/ }),
/***/ "44d2":
/***/ (function(module, exports, __webpack_require__) {
var wellKnownSymbol = __webpack_require__("b622");
var create = __webpack_require__("7c73");
var definePropertyModule = __webpack_require__("9bf2");
var UNSCOPABLES = wellKnownSymbol('unscopables');
var ArrayPrototype = Array.prototype;
// Array.prototype[@@unscopables]
// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
if (ArrayPrototype[UNSCOPABLES] == undefined) {
definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {
configurable: true,
value: create(null)
});
}
// add a key to Array.prototype[@@unscopables]
module.exports = function (key) {
ArrayPrototype[UNSCOPABLES][key] = true;
};
/***/ }),
/***/ "44e7":
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__("861d");
var classof = __webpack_require__("c6b6");
var wellKnownSymbol = __webpack_require__("b622");
var MATCH = wellKnownSymbol('match');
// `IsRegExp` abstract operation
// https://tc39.github.io/ecma262/#sec-isregexp
module.exports = function (it) {
var isRegExp;
return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');
};
/***/ }),
/***/ "4840":
/***/ (function(module, exports, __webpack_require__) {
var anObject = __webpack_require__("825a");
var aFunction = __webpack_require__("1c0b");
var wellKnownSymbol = __webpack_require__("b622");
var SPECIES = wellKnownSymbol('species');
// `SpeciesConstructor` abstract operation
// https://tc39.github.io/ecma262/#sec-speciesconstructor
module.exports = function (O, defaultConstructor) {
var C = anObject(O).constructor;
var S;
return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);
};
/***/ }),
/***/ "4930":
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__("d039");
module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
// Chrome 38 Symbol has incorrect toString conversion
// eslint-disable-next-line no-undef
return !String(Symbol());
});
/***/ }),
/***/ "4a20":
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "4d45":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_chip_scss_vue_type_style_index_0_id_314055ab_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("2e4f");
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_chip_scss_vue_type_style_index_0_id_314055ab_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_chip_scss_vue_type_style_index_0_id_314055ab_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */
/* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_chip_scss_vue_type_style_index_0_id_314055ab_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ "4d64":
/***/ (function(module, exports, __webpack_require__) {
var toIndexedObject = __webpack_require__("fc6a");
var toLength = __webpack_require__("50c4");
var toAbsoluteIndex = __webpack_require__("23cb");
// `Array.prototype.{ indexOf, includes }` methods implementation
var createMethod = function (IS_INCLUDES) {
return function ($this, el, fromIndex) {
var O = toIndexedObject($this);
var length = toLength(O.length);
var index = toAbsoluteIndex(fromIndex, length);
var value;
// Array#includes uses SameValueZero equality algorithm
// eslint-disable-next-line no-self-compare
if (IS_INCLUDES && el != el) while (length > index) {
value = O[index++];
// eslint-disable-next-line no-self-compare
if (value != value) return true;
// Array#indexOf ignores holes, Array#includes - not
} else for (;length > index; index++) {
if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
} return !IS_INCLUDES && -1;
};
};
module.exports = {
// `Array.prototype.includes` method
// https://tc39.github.io/ecma262/#sec-array.prototype.includes
includes: createMethod(true),
// `Array.prototype.indexOf` method
// https://tc39.github.io/ecma262/#sec-array.prototype.indexof
indexOf: createMethod(false)
};
/***/ }),
/***/ "4de4":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__("23e7");
var $filter = __webpack_require__("b727").filter;
var arrayMethodHasSpeciesSupport = __webpack_require__("1dde");
var arrayMethodUsesToLength = __webpack_require__("ae40");
var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');
// Edge 14- issue
var USES_TO_LENGTH = arrayMethodUsesToLength('filter');
// `Array.prototype.filter` method
// https://tc39.github.io/ecma262/#sec-array.prototype.filter
// with adding support of @@species
$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {
filter: function filter(callbackfn /* , thisArg */) {
return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
}
});
/***/ }),
/***/ "50c4":
/***/ (function(module, exports, __webpack_require__) {
var toInteger = __webpack_require__("a691");
var min = Math.min;
// `ToLength` abstract operation
// https://tc39.github.io/ecma262/#sec-tolength
module.exports = function (argument) {
return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
};
/***/ }),
/***/ "5135":
/***/ (function(module, exports) {
var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
return hasOwnProperty.call(it, key);
};
/***/ }),
/***/ "5319":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var fixRegExpWellKnownSymbolLogic = __webpack_require__("d784");
var anObject = __webpack_require__("825a");
var toObject = __webpack_require__("7b0b");
var toLength = __webpack_require__("50c4");
var toInteger = __webpack_require__("a691");
var requireObjectCoercible = __webpack_require__("1d80");
var advanceStringIndex = __webpack_require__("8aa5");
var regExpExec = __webpack_require__("14c3");
var max = Math.max;
var min = Math.min;
var floor = Math.floor;
var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d\d?|<[^>]*>)/g;
var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d\d?)/g;
var maybeToString = function (it) {
return it === undefined ? it : String(it);
};
// @@replace logic
fixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {
var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;
var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;
var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';
return [
// `String.prototype.replace` method
// https://tc39.github.io/ecma262/#sec-string.prototype.replace
function replace(searchValue, replaceValue) {
var O = requireObjectCoercible(this);
var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];
return replacer !== undefined
? replacer.call(searchValue, O, replaceValue)
: nativeReplace.call(String(O), searchValue, replaceValue);
},
// `RegExp.prototype[@@replace]` method
// https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace
function (regexp, replaceValue) {
if (
(!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||
(typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)
) {
var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);
if (res.done) return res.value;
}
var rx = anObject(regexp);
var S = String(this);
var functionalReplace = typeof replaceValue === 'function';
if (!functionalReplace) replaceValue = String(replaceValue);
var global = rx.global;
if (global) {
var fullUnicode = rx.unicode;
rx.lastIndex = 0;
}
var results = [];
while (true) {
var result = regExpExec(rx, S);
if (result === null) break;
results.push(result);
if (!global) break;
var matchStr = String(result[0]);
if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
}
var accumulatedResult = '';
var nextSourcePosition = 0;
for (var i = 0; i < results.length; i++) {
result = results[i];
var matched = String(result[0]);
var position = max(min(toInteger(result.index), S.length), 0);
var captures = [];
// NOTE: This is equivalent to
// captures = result.slice(1).map(maybeToString)
// but for some reason `nativeSlice.call(result, 1, result.length)` (called in
// the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
// causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));
var namedCaptures = result.groups;
if (functionalReplace) {
var replacerArgs = [matched].concat(captures, position, S);
if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);
var replacement = String(replaceValue.apply(undefined, replacerArgs));
} else {
replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
}
if (position >= nextSourcePosition) {
accumulatedResult += S.slice(nextSourcePosition, position) + replacement;
nextSourcePosition = position + matched.length;
}
}
return accumulatedResult + S.slice(nextSourcePosition);
}
];
// https://tc39.github.io/ecma262/#sec-getsubstitution
function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {
var tailPos = position + matched.length;
var m = captures.length;
var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
if (namedCaptures !== undefined) {
namedCaptures = toObject(namedCaptures);
symbols = SUBSTITUTION_SYMBOLS;
}
return nativeReplace.call(replacement, symbols, function (match, ch) {
var capture;
switch (ch.charAt(0)) {
case '$': return '$';
case '&': return matched;
case '`': return str.slice(0, position);
case "'": return str.slice(tailPos);
case '<':
capture = namedCaptures[ch.slice(1, -1)];
break;
default: // \d\d?
var n = +ch;
if (n === 0) return match;
if (n > m) {
var f = floor(n / 10);
if (f === 0) return match;
if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);
return match;
}
capture = captures[n - 1];
}
return capture === undefined ? '' : capture;
});
}
});
/***/ }),
/***/ "5692":
/***/ (function(module, exports, __webpack_require__) {
var IS_PURE = __webpack_require__("c430");
var store = __webpack_require__("c6cd");
(module.exports = function (key, value) {
return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
version: '3.6.4',
mode: IS_PURE ? 'pure' : 'global',
copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
});
/***/ }),
/***/ "56ef":
/***/ (function(module, exports, __webpack_require__) {
var getBuiltIn = __webpack_require__("d066");
var getOwnPropertyNamesModule = __webpack_require__("241c");
var getOwnPropertySymbolsModule = __webpack_require__("7418");
var anObject = __webpack_require__("825a");
// all object keys, includes non-enumerable and symbols
module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
var keys = getOwnPropertyNamesModule.f(anObject(it));
var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
};
/***/ }),
/***/ "5899":
/***/ (function(module, exports) {
// a string of all valid unicode whitespaces
// eslint-disable-next-line max-len
module.exports = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
/***/ }),
/***/ "58a8":
/***/ (function(module, exports, __webpack_require__) {
var requireObjectCoercible = __webpack_require__("1d80");
var whitespaces = __webpack_require__("5899");
var whitespace = '[' + whitespaces + ']';
var ltrim = RegExp('^' + whitespace + whitespace + '*');
var rtrim = RegExp(whitespace + whitespace + '*$');
// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation
var createMethod = function (TYPE) {
return function ($this) {
var string = String(requireObjectCoercible($this));
if (TYPE & 1) string = string.replace(ltrim, '');
if (TYPE & 2) string = string.replace(rtrim, '');
return string;
};
};
module.exports = {
// `String.prototype.{ trimLeft, trimStart }` methods
// https://tc39.github.io/ecma262/#sec-string.prototype.trimstart
start: createMethod(1),
// `String.prototype.{ trimRight, trimEnd }` methods
// https://tc39.github.io/ecma262/#sec-string.prototype.trimend
end: createMethod(2),
// `String.prototype.trim` method
// https://tc39.github.io/ecma262/#sec-string.prototype.trim
trim: createMethod(3)
};
/***/ }),
/***/ "5a17":
/***/ (function(module) {
module.exports = JSON.parse("{\"code\":\"es\",\"messages\":{\"alpha\":\"El campo {_field_} solo debe contener letras\",\"alpha_dash\":\"El campo {_field_} solo debe contener letras, números y guiones\",\"alpha_num\":\"El campo {_field_} solo debe contener letras y números\",\"alpha_spaces\":\"El campo {_field_} solo debe contener letras y espacios\",\"between\":\"El campo {_field_} debe estar entre {min} y {max}\",\"confirmed\":\"El campo {_field_} no coincide\",\"digits\":\"El campo {_field_} debe ser numérico y contener exactamente {length} dígitos\",\"dimensions\":\"El campo {_field_} debe ser de {width} píxeles por {height} píxeles\",\"email\":\"El campo {_field_} debe ser un correo electrónico válido\",\"excluded\":\"El campo {_field_} debe ser un valor válido\",\"ext\":\"El campo {_field_} debe ser un archivo válido\",\"image\":\"El campo {_field_} debe ser una imagen\",\"oneOf\":\"El campo {_field_} debe ser un valor válido\",\"integer\":\"El campo {_field_} debe ser un entero\",\"length\":\"El largo del campo {_field_} debe ser {length}\",\"max\":\"El campo {_field_} no debe ser mayor a {length} caracteres\",\"max_value\":\"El campo {_field_} debe de ser {max} o menor\",\"mimes\":\"El campo {_field_} debe ser un tipo de archivo válido\",\"min\":\"El campo {_field_} debe tener al menos {length} caracteres\",\"min_value\":\"El campo {_field_} debe ser {min} o superior\",\"numeric\":\"El campo {_field_} debe contener solo caracteres numéricos\",\"regex\":\"El formato del campo {_field_} no es válido\",\"required\":\"El campo {_field_} es obligatorio\",\"required_if\":\"El campo {_field_} es obligatorio\",\"size\":\"El campo {_field_} debe ser menor a {size}KB\"}}");
/***/ }),
/***/ "5a34":
/***/ (function(module, exports, __webpack_require__) {
var isRegExp = __webpack_require__("44e7");
module.exports = function (it) {
if (isRegExp(it)) {
throw TypeError("The method doesn't accept regular expressions");
} return it;
};
/***/ }),
/***/ "5c6c":
/***/ (function(module, exports) {
module.exports = function (bitmap, value) {
return {
enumerable: !(bitmap & 1),
configurable: !(bitmap & 2),
writable: !(bitmap & 4),
value: value
};
};
/***/ }),
/***/ "5db9":
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "5f9d":
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "5fa8":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_card_scss_vue_type_style_index_0_id_3b8ef79e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("5f9d");
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_card_scss_vue_type_style_index_0_id_3b8ef79e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_card_scss_vue_type_style_index_0_id_3b8ef79e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */
/* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_card_scss_vue_type_style_index_0_id_3b8ef79e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ "601b":
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "6547":
/***/ (function(module, exports, __webpack_require__) {
var toInteger = __webpack_require__("a691");
var requireObjectCoercible = __webpack_require__("1d80");
// `String.prototype.{ codePointAt, at }` methods implementation
var createMethod = function (CONVERT_TO_STRING) {
return function ($this, pos) {
var S = String(requireObjectCoercible($this));
var position = toInteger(pos);
var size = S.length;
var first, second;
if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
first = S.charCodeAt(position);
return first < 0xD800 || first > 0xDBFF || position + 1 === size
|| (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF
? CONVERT_TO_STRING ? S.charAt(position) : first
: CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
};
};
module.exports = {
// `String.prototype.codePointAt` method
// https://tc39.github.io/ecma262/#sec-string.prototype.codepointat
codeAt: createMethod(false),
// `String.prototype.at` method
// https://github.com/mathiasbynens/String.prototype.at
charAt: createMethod(true)
};
/***/ }),
/***/ "65f0":
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__("861d");
var isArray = __webpack_require__("e8b5");
var wellKnownSymbol = __webpack_require__("b622");
var SPECIES = wellKnownSymbol('species');
// `ArraySpeciesCreate` abstract operation
// https://tc39.github.io/ecma262/#sec-arrayspeciescreate
module.exports = function (originalArray, length) {
var C;
if (isArray(originalArray)) {
C = originalArray.constructor;
// cross-realm fallback
if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
else if (isObject(C)) {
C = C[SPECIES];
if (C === null) C = undefined;
}
} return new (C === undefined ? Array : C)(length === 0 ? 0 : length);
};
/***/ }),
/***/ "69f3":
/***/ (function(module, exports, __webpack_require__) {
var NATIVE_WEAK_MAP = __webpack_require__("7f9a");
var global = __webpack_require__("da84");
var isObject = __webpack_require__("861d");
var createNonEnumerableProperty = __webpack_require__("9112");
var objectHas = __webpack_require__("5135");
var sharedKey = __webpack_require__("f772");
var hiddenKeys = __webpack_require__("d012");
var WeakMap = global.WeakMap;
var set, get, has;
var enforce = function (it) {
return has(it) ? get(it) : set(it, {});
};
var getterFor = function (TYPE) {
return function (it) {
var state;
if (!isObject(it) || (state = get(it)).type !== TYPE) {
throw TypeError('Incompatible receiver, ' + TYPE + ' required');
} return state;
};
};
if (NATIVE_WEAK_MAP) {
var store = new WeakMap();
var wmget = store.get;
var wmhas = store.has;
var wmset = store.set;
set = function (it, metadata) {
wmset.call(store, it, metadata);
return metadata;
};
get = function (it) {
return wmget.call(store, it) || {};
};
has = function (it) {
return wmhas.call(store, it);
};
} else {
var STATE = sharedKey('state');
hiddenKeys[STATE] = true;
set = function (it, metadata) {
createNonEnumerableProperty(it, STATE, metadata);
return metadata;
};
get = function (it) {
return objectHas(it, STATE) ? it[STATE] : {};
};
has = function (it) {
return objectHas(it, STATE);
};
}
module.exports = {
set: set,
get: get,
has: has,
enforce: enforce,
getterFor: getterFor
};
/***/ }),
/***/ "6c28":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_text_field_scss_vue_type_style_index_0_id_0cef31b4_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("601b");
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_text_field_scss_vue_type_style_index_0_id_0cef31b4_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_text_field_scss_vue_type_style_index_0_id_0cef31b4_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */
/* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_text_field_scss_vue_type_style_index_0_id_0cef31b4_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ "6eeb":
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__("da84");
var createNonEnumerableProperty = __webpack_require__("9112");
var has = __webpack_require__("5135");
var setGlobal = __webpack_require__("ce4e");
var inspectSource = __webpack_require__("8925");
var InternalStateModule = __webpack_require__("69f3");
var getInternalState = InternalStateModule.get;
var enforceInternalState = InternalStateModule.enforce;
var TEMPLATE = String(String).split('String');
(module.exports = function (O, key, value, options) {
var unsafe = options ? !!options.unsafe : false;
var simple = options ? !!options.enumerable : false;
var noTargetGet = options ? !!options.noTargetGet : false;
if (typeof value == 'function') {
if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);
enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');
}
if (O === global) {
if (simple) O[key] = value;
else setGlobal(key, value);
return;
} else if (!unsafe) {
delete O[key];
} else if (!noTargetGet && O[key]) {
simple = true;
}
if (simple) O[key] = value;
else createNonEnumerableProperty(O, key, value);
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
})(Function.prototype, 'toString', function toString() {
return typeof this == 'function' && getInternalState(this).source || inspectSource(this);
});
/***/ }),
/***/ "6f53":
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__("83ab");
var objectKeys = __webpack_require__("df75");
var toIndexedObject = __webpack_require__("fc6a");
var propertyIsEnumerable = __webpack_require__("d1e7").f;
// `Object.{ entries, values }` methods implementation
var createMethod = function (TO_ENTRIES) {
return function (it) {
var O = toIndexedObject(it);
var keys = objectKeys(O);
var length = keys.length;
var i = 0;
var result = [];
var key;
while (length > i) {
key = keys[i++];
if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {
result.push(TO_ENTRIES ? [key, O[key]] : O[key]);
}
}
return result;
};
};
module.exports = {
// `Object.entries` method
// https://tc39.github.io/ecma262/#sec-object.entries
entries: createMethod(true),
// `Object.values` method
// https://tc39.github.io/ecma262/#sec-object.values
values: createMethod(false)
};
/***/ }),
/***/ "7156":
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__("861d");
var setPrototypeOf = __webpack_require__("d2bb");
// makes subclassing work correct for wrapped built-ins
module.exports = function ($this, dummy, Wrapper) {
var NewTarget, NewTargetPrototype;
if (
// it can work only with native `setPrototypeOf`
setPrototypeOf &&
// we haven't completely correct pre-ES6 way for getting `new.target`, so use this
typeof (NewTarget = dummy.constructor) == 'function' &&
NewTarget !== Wrapper &&
isObject(NewTargetPrototype = NewTarget.prototype) &&
NewTargetPrototype !== Wrapper.prototype
) setPrototypeOf($this, NewTargetPrototype);
return $this;
};
/***/ }),
/***/ "72cc":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_accordion_scss_vue_type_style_index_0_id_80621ee6_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("fde5");
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_accordion_scss_vue_type_style_index_0_id_80621ee6_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_accordion_scss_vue_type_style_index_0_id_80621ee6_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */
/* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_accordion_scss_vue_type_style_index_0_id_80621ee6_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ "7418":
/***/ (function(module, exports) {
exports.f = Object.getOwnPropertySymbols;
/***/ }),
/***/ "7687":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_dialog_scss_vue_type_style_index_0_id_17efdcdb_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("ad4b");
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_dialog_scss_vue_type_style_index_0_id_17efdcdb_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_dialog_scss_vue_type_style_index_0_id_17efdcdb_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */
/* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_dialog_scss_vue_type_style_index_0_id_17efdcdb_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ "7740":
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "7839":
/***/ (function(module, exports) {
// IE8- don't enum bug keys
module.exports = [
'constructor',
'hasOwnProperty',
'isPrototypeOf',
'propertyIsEnumerable',
'toLocaleString',
'toString',
'valueOf'
];
/***/ }),
/***/ "7b0b":
/***/ (function(module, exports, __webpack_require__) {
var requireObjectCoercible = __webpack_require__("1d80");
// `ToObject` abstract operation
// https://tc39.github.io/ecma262/#sec-toobject
module.exports = function (argument) {
return Object(requireObjectCoercible(argument));
};
/***/ }),
/***/ "7c73":
/***/ (function(module, exports, __webpack_require__) {
var anObject = __webpack_require__("825a");
var defineProperties = __webpack_require__("37e8");
var enumBugKeys = __webpack_require__("7839");
var hiddenKeys = __webpack_require__("d012");
var html = __webpack_require__("1be4");
var documentCreateElement = __webpack_require__("cc12");
var sharedKey = __webpack_require__("f772");
var GT = '>';
var LT = '<';
var PROTOTYPE = 'prototype';
var SCRIPT = 'script';
var IE_PROTO = sharedKey('IE_PROTO');
var EmptyConstructor = function () { /* empty */ };
var scriptTag = function (content) {
return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;
};
// Create object with fake `null` prototype: use ActiveX Object with cleared prototype
var NullProtoObjectViaActiveX = function (activeXDocument) {
activeXDocument.write(scriptTag(''));
activeXDocument.close();
var temp = activeXDocument.parentWindow.Object;
activeXDocument = null; // avoid memory leak
return temp;
};
// Create object with fake `null` prototype: use iframe Object with cleared prototype
var NullProtoObjectViaIFrame = function () {
// Thrash, waste and sodomy: IE GC bug
var iframe = documentCreateElement('iframe');
var JS = 'java' + SCRIPT + ':';
var iframeDocument;
iframe.style.display = 'none';
html.appendChild(iframe);
// https://github.com/zloirock/core-js/issues/475
iframe.src = String(JS);
iframeDocument = iframe.contentWindow.document;
iframeDocument.open();
iframeDocument.write(scriptTag('document.F=Object'));
iframeDocument.close();
return iframeDocument.F;
};
// Check for document.domain and active x support
// No need to use active x approach when document.domain is not set
// see https://github.com/es-shims/es5-shim/issues/150
// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346
// avoid IE GC bug
var activeXDocument;
var NullProtoObject = function () {
try {
/* global ActiveXObject */
activeXDocument = document.domain && new ActiveXObject('htmlfile');
} catch (error) { /* ignore */ }
NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();
var length = enumBugKeys.length;
while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];
return NullProtoObject();
};
hiddenKeys[IE_PROTO] = true;
// `Object.create` method
// https://tc39.github.io/ecma262/#sec-object.create
module.exports = Object.create || function create(O, Properties) {
var result;
if (O !== null) {
EmptyConstructor[PROTOTYPE] = anObject(O);
result = new EmptyConstructor();
EmptyConstructor[PROTOTYPE] = null;
// add "__proto__" for Object.getPrototypeOf polyfill
result[IE_PROTO] = O;
} else result = NullProtoObject();
return Properties === undefined ? result : defineProperties(result, Properties);
};
/***/ }),
/***/ "7dd0":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__("23e7");
var createIteratorConstructor = __webpack_require__("9ed3");
var getPrototypeOf = __webpack_require__("e163");
var setPrototypeOf = __webpack_require__("d2bb");
var setToStringTag = __webpack_require__("d44e");
var createNonEnumerableProperty = __webpack_require__("9112");
var redefine = __webpack_require__("6eeb");
var wellKnownSymbol = __webpack_require__("b622");
var IS_PURE = __webpack_require__("c430");
var Iterators = __webpack_require__("3f8c");
var IteratorsCore = __webpack_require__("ae93");
var IteratorPrototype = IteratorsCore.IteratorPrototype;
var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
var ITERATOR = wellKnownSymbol('iterator');
var KEYS = 'keys';
var VALUES = 'values';
var ENTRIES = 'entries';
var returnThis = function () { return this; };
module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {
createIteratorConstructor(IteratorConstructor, NAME, next);
var getIterationMethod = function (KIND) {
if (KIND === DEFAULT && defaultIterator) return defaultIterator;
if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];
switch (KIND) {
case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };
case VALUES: return function values() { return new IteratorConstructor(this, KIND); };
case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };
} return function () { return new IteratorConstructor(this); };
};
var TO_STRING_TAG = NAME + ' Iterator';
var INCORRECT_VALUES_NAME = false;
var IterablePrototype = Iterable.prototype;
var nativeIterator = IterablePrototype[ITERATOR]
|| IterablePrototype['@@iterator']
|| DEFAULT && IterablePrototype[DEFAULT];
var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);
var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;
var CurrentIteratorPrototype, methods, KEY;
// fix native
if (anyNativeIterator) {
CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));
if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {
if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {
if (setPrototypeOf) {
setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);
} else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {
createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);
}
}
// Set @@toStringTag to native iterators
setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);
if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;
}
}
// fix Array#{values, @@iterator}.name in V8 / FF
if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {
INCORRECT_VALUES_NAME = true;
defaultIterator = function values() { return nativeIterator.call(this); };
}
// define iterator
if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {
createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);
}
Iterators[NAME] = defaultIterator;
// export additional methods
if (DEFAULT) {
methods = {
values: getIterationMethod(VALUES),
keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),
entries: getIterationMethod(ENTRIES)
};
if (FORCED) for (KEY in methods) {
if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
redefine(IterablePrototype, KEY, methods[KEY]);
}
} else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
}
return methods;
};
/***/ }),
/***/ "7f9a":
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__("da84");
var inspectSource = __webpack_require__("8925");
var WeakMap = global.WeakMap;
module.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));
/***/ }),
/***/ "825a":
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__("861d");
module.exports = function (it) {
if (!isObject(it)) {
throw TypeError(String(it) + ' is not an object');
} return it;
};
/***/ }),
/***/ "83ab":
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__("d039");
// Thank's IE8 for his funny defineProperty
module.exports = !fails(function () {
return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;
});
/***/ }),
/***/ "8418":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var toPrimitive = __webpack_require__("c04e");
var definePropertyModule = __webpack_require__("9bf2");
var createPropertyDescriptor = __webpack_require__("5c6c");
module.exports = function (object, key, value) {
var propertyKey = toPrimitive(key);
if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));
else object[propertyKey] = value;
};
/***/ }),
/***/ "857a":
/***/ (function(module, exports, __webpack_require__) {
var requireObjectCoercible = __webpack_require__("1d80");
var quot = /"/g;
// B.2.3.2.1 CreateHTML(string, tag, attribute, value)
// https://tc39.github.io/ecma262/#sec-createhtml
module.exports = function (string, tag, attribute, value) {
var S = String(requireObjectCoercible(string));
var p1 = '<' + tag;
if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '"') + '"';
return p1 + '>' + S + '</' + tag + '>';
};
/***/ }),
/***/ "861d":
/***/ (function(module, exports) {
module.exports = function (it) {
return typeof it === 'object' ? it !== null : typeof it === 'function';
};
/***/ }),
/***/ "8925":
/***/ (function(module, exports, __webpack_require__) {
var store = __webpack_require__("c6cd");
var functionToString = Function.toString;
// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper
if (typeof store.inspectSource != 'function') {
store.inspectSource = function (it) {
return functionToString.call(it);
};
}
module.exports = store.inspectSource;
/***/ }),
/***/ "8965":
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "8a54":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_progress_bar_scss_vue_type_style_index_0_id_dbb4ef54_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("e776");
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_progress_bar_scss_vue_type_style_index_0_id_dbb4ef54_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_progress_bar_scss_vue_type_style_index_0_id_dbb4ef54_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */
/* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_progress_bar_scss_vue_type_style_index_0_id_dbb4ef54_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ "8aa5":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var charAt = __webpack_require__("6547").charAt;
// `AdvanceStringIndex` abstract operation
// https://tc39.github.io/ecma262/#sec-advancestringindex
module.exports = function (S, index, unicode) {
return index + (unicode ? charAt(S, index).length : 1);
};
/***/ }),
/***/ "8aaf":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_grid_item_scss_vue_type_style_index_0_id_118f567a_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("7740");
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_grid_item_scss_vue_type_style_index_0_id_118f567a_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_grid_item_scss_vue_type_style_index_0_id_118f567a_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */
/* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_grid_item_scss_vue_type_style_index_0_id_118f567a_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ "8bbf":
/***/ (function(module, exports) {
module.exports = require("vue");
/***/ }),
/***/ "8d39":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_token_text_field_scss_vue_type_style_index_0_id_190aba6c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("8f73");
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_token_text_field_scss_vue_type_style_index_0_id_190aba6c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_token_text_field_scss_vue_type_style_index_0_id_190aba6c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */
/* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_token_text_field_scss_vue_type_style_index_0_id_190aba6c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ "8e91":
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "8f73":
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "90e3":
/***/ (function(module, exports) {
var id = 0;
var postfix = Math.random();
module.exports = function (key) {
return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);
};
/***/ }),
/***/ "9112":
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__("83ab");
var definePropertyModule = __webpack_require__("9bf2");
var createPropertyDescriptor = __webpack_require__("5c6c");
module.exports = DESCRIPTORS ? function (object, key, value) {
return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
} : function (object, key, value) {
object[key] = value;
return object;
};
/***/ }),
/***/ "9263":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var regexpFlags = __webpack_require__("ad6d");
var stickyHelpers = __webpack_require__("9f7f");
var nativeExec = RegExp.prototype.exec;
// This always refers to the native implementation, because the
// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,
// which loads this file before patching the method.
var nativeReplace = String.prototype.replace;
var patchedExec = nativeExec;
var UPDATES_LAST_INDEX_WRONG = (function () {
var re1 = /a/;
var re2 = /b*/g;
nativeExec.call(re1, 'a');
nativeExec.call(re2, 'a');
return re1.lastIndex !== 0 || re2.lastIndex !== 0;
})();
var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;
// nonparticipating capturing group, copied from es5-shim's String#split patch.
var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;
var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;
if (PATCH) {
patchedExec = function exec(str) {
var re = this;
var lastIndex, reCopy, match, i;
var sticky = UNSUPPORTED_Y && re.sticky;
var flags = regexpFlags.call(re);
var source = re.source;
var charsAdded = 0;
var strCopy = str;
if (sticky) {
flags = flags.replace('y', '');
if (flags.indexOf('g') === -1) {
flags += 'g';
}
strCopy = String(str).slice(re.lastIndex);
// Support anchored sticky behavior.
if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\n')) {
source = '(?: ' + source + ')';
strCopy = ' ' + strCopy;
charsAdded++;
}
// ^(? + rx + ) is needed, in combination with some str slicing, to
// simulate the 'y' flag.
reCopy = new RegExp('^(?:' + source + ')', flags);
}
if (NPCG_INCLUDED) {
reCopy = new RegExp('^' + source + '$(?!\\s)', flags);
}
if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;
match = nativeExec.call(sticky ? reCopy : re, strCopy);
if (sticky) {
if (match) {
match.input = match.input.slice(charsAdded);
match[0] = match[0].slice(charsAdded);
match.index = re.lastIndex;
re.lastIndex += match[0].length;
} else re.lastIndex = 0;
} else if (UPDATES_LAST_INDEX_WRONG && match) {
re.lastIndex = re.global ? match.index + match[0].length : lastIndex;
}
if (NPCG_INCLUDED && match && match.length > 1) {
// Fix browsers whose `exec` methods don't consistently return `undefined`
// for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/
nativeReplace.call(match[0], reCopy, function () {
for (i = 1; i < arguments.length - 2; i++) {
if (arguments[i] === undefined) match[i] = undefined;
}
});
}
return match;
};
}
module.exports = patchedExec;
/***/ }),
/***/ "94ca":
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__("d039");
var replacement = /#|\.prototype\./;
var isForced = function (feature, detection) {
var value = data[normalize(feature)];
return value == POLYFILL ? true
: value == NATIVE ? false
: typeof detection == 'function' ? fails(detection)
: !!detection;
};
var normalize = isForced.normalize = function (string) {
return String(string).replace(replacement, '.').toLowerCase();
};
var data = isForced.data = {};
var NATIVE = isForced.NATIVE = 'N';
var POLYFILL = isForced.POLYFILL = 'P';
module.exports = isForced;
/***/ }),
/***/ "94f1":
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_RESULT__;(typeof navigator !== "undefined") && (function(root, factory) {
if (true) {
!(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {
return factory(root);
}).call(exports, __webpack_require__, exports, module),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else {}
}((window || {}), function(window) {
"use strict";
var svgNS = "http://www.w3.org/2000/svg";
var locationHref = '';
var initialDefaultFrame = -999999;
var subframeEnabled = true;
var expressionsPlugin;
var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
var cachedColors = {};
var bm_rounder = Math.round;
var bm_rnd;
var bm_pow = Math.pow;
var bm_sqrt = Math.sqrt;
var bm_abs = Math.abs;
var bm_floor = Math.floor;
var bm_max = Math.max;
var bm_min = Math.min;
var blitter = 10;
var BMMath = {};
(function(){
var propertyNames = ["abs", "acos", "acosh", "asin", "asinh", "atan", "atanh", "atan2", "ceil", "cbrt", "expm1", "clz32", "cos", "cosh", "exp", "floor", "fround", "hypot", "imul", "log", "log1p", "log2", "log10", "max", "min", "pow", "random", "round", "sign", "sin", "sinh", "sqrt", "tan", "tanh", "trunc", "E", "LN10", "LN2", "LOG10E", "LOG2E", "PI", "SQRT1_2", "SQRT2"];
var i, len = propertyNames.length;
for(i=0;i<len;i+=1){
BMMath[propertyNames[i]] = Math[propertyNames[i]];
}
}());
function ProjectInterface(){return {};}
BMMath.random = Math.random;
BMMath.abs = function(val){
var tOfVal = typeof val;
if(tOfVal === 'object' && val.length){
var absArr = createSizedArray(val.length);
var i, len = val.length;
for(i=0;i<len;i+=1){
absArr[i] = Math.abs(val[i]);
}
return absArr;
}
return Math.abs(val);
};
var defaultCurveSegments = 150;
var degToRads = Math.PI/180;
var roundCorner = 0.5519;
function roundValues(flag){
if(flag){
bm_rnd = Math.round;
}else{
bm_rnd = function(val){
return val;
};
}
}
roundValues(false);
function styleDiv(element){
element.style.position = 'absolute';
element.style.top = 0;
element.style.left = 0;
element.style.display = 'block';
element.style.transformOrigin = element.style.webkitTransformOrigin = '0 0';
element.style.backfaceVisibility = element.style.webkitBackfaceVisibility = 'visible';
element.style.transformStyle = element.style.webkitTransformStyle = element.style.mozTransformStyle = "preserve-3d";
}
function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier){
this.type = type;
this.currentTime = currentTime;
this.totalTime = totalTime;
this.direction = frameMultiplier < 0 ? -1 : 1;
}
function BMCompleteEvent(type, frameMultiplier){
this.type = type;
this.direction = frameMultiplier < 0 ? -1 : 1;
}
function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier){
this.type = type;
this.currentLoop = currentLoop;
this.totalLoops = totalLoops;
this.direction = frameMultiplier < 0 ? -1 : 1;
}
function BMSegmentStartEvent(type, firstFrame, totalFrames){
this.type = type;
this.firstFrame = firstFrame;
this.totalFrames = totalFrames;
}
function BMDestroyEvent(type, target){
this.type = type;
this.target = target;
}
function BMRenderFrameErrorEvent(nativeError, currentTime) {
this.type = 'renderFrameError';
this.nativeError = nativeError;
this.currentTime = currentTime;
}
function BMConfigErrorEvent(nativeError) {
this.type = 'configError';
this.nativeError = nativeError;
}
function BMAnimationConfigErrorEvent(type, nativeError) {
this.type = type;
this.nativeError = nativeError;
this.currentTime = currentTime;
}
var createElementID = (function(){
var _count = 0;
return function createID() {
return '__lottie_element_' + ++_count
}
}())
function HSVtoRGB(h, s, v) {
var r, g, b, i, f, p, q, t;
i = Math.floor(h * 6);
f = h * 6 - i;
p = v * (1 - s);
q = v * (1 - f * s);
t = v * (1 - (1 - f) * s);
switch (i % 6) {
case 0: r = v; g = t; b = p; break;
case 1: r = q; g = v; b = p; break;
case 2: r = p; g = v; b = t; break;
case 3: r = p; g = q; b = v; break;
case 4: r = t; g = p; b = v; break;
case 5: r = v; g = p; b = q; break;
}
return [ r,
g,
b ];
}
function RGBtoHSV(r, g, b) {
var max = Math.max(r, g, b), min = Math.min(r, g, b),
d = max - min,
h,
s = (max === 0 ? 0 : d / max),
v = max / 255;
switch (max) {
case min: h = 0; break;
case r: h = (g - b) + d * (g < b ? 6: 0); h /= 6 * d; break;
case g: h = (b - r) + d * 2; h /= 6 * d; break;
case b: h = (r - g) + d * 4; h /= 6 * d; break;
}
return [
h,
s,
v
];
}
function addSaturationToRGB(color,offset){
var hsv = RGBtoHSV(color[0]*255,color[1]*255,color[2]*255);
hsv[1] += offset;
if (hsv[1] > 1) {
hsv[1] = 1;
}
else if (hsv[1] <= 0) {
hsv[1] = 0;
}
return HSVtoRGB(hsv[0],hsv[1],hsv[2]);
}
function addBrightnessToRGB(color,offset){
var hsv = RGBtoHSV(color[0]*255,color[1]*255,color[2]*255);
hsv[2] += offset;
if (hsv[2] > 1) {
hsv[2] = 1;
}
else if (hsv[2] < 0) {
hsv[2] = 0;
}
return HSVtoRGB(hsv[0],hsv[1],hsv[2]);
}
function addHueToRGB(color,offset) {
var hsv = RGBtoHSV(color[0]*255,color[1]*255,color[2]*255);
hsv[0] += offset/360;
if (hsv[0] > 1) {
hsv[0] -= 1;
}
else if (hsv[0] < 0) {
hsv[0] += 1;
}
return HSVtoRGB(hsv[0],hsv[1],hsv[2]);
}
var rgbToHex = (function(){
var colorMap = [];
var i;
var hex;
for(i=0;i<256;i+=1){
hex = i.toString(16);
colorMap[i] = hex.length == 1 ? '0' + hex : hex;
}
return function(r, g, b) {
if(r<0){
r = 0;
}
if(g<0){
g = 0;
}
if(b<0){
b = 0;
}
return '#' + colorMap[r] + colorMap[g] + colorMap[b];
};
}());
function BaseEvent(){}
BaseEvent.prototype = {
triggerEvent: function (eventName, args) {
if (this._cbs[eventName]) {
var len = this._cbs[eventName].length;
for (var i = 0; i < len; i++){
this._cbs[eventName][i](args);
}
}
},
addEventListener: function (eventName, callback) {
if (!this._cbs[eventName]){
this._cbs[eventName] = [];
}
this._cbs[eventName].push(callback);
return function() {
this.removeEventListener(eventName, callback);
}.bind(this);
},
removeEventListener: function (eventName,callback){
if (!callback){
this._cbs[eventName] = null;
}else if(this._cbs[eventName]){
var i = 0, len = this._cbs[eventName].length;
while(i<len){
if(this._cbs[eventName][i] === callback){
this._cbs[eventName].splice(i,1);
i -=1;
len -= 1;
}
i += 1;
}
if(!this._cbs[eventName].length){
this._cbs[eventName] = null;
}
}
}
};
var createTypedArray = (function(){
function createRegularArray(type, len){
var i = 0, arr = [], value;
switch(type) {
case 'int16':
case 'uint8c':
value = 1;
break;
default:
value = 1.1;
break;
}
for(i = 0; i < len; i += 1) {
arr.push(value);
}
return arr;
}
function createTypedArray(type, len){
if(type === 'float32') {
return new Float32Array(len);
} else if(type === 'int16') {
return new Int16Array(len);
} else if(type === 'uint8c') {
return new Uint8ClampedArray(len);
}
}
if(typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {
return createTypedArray;
} else {
return createRegularArray;
}
}());
function createSizedArray(len) {
return Array.apply(null,{length:len});
}
function createNS(type) {
//return {appendChild:function(){},setAttribute:function(){},style:{}}
return document.createElementNS(svgNS, type);
}
function createTag(type) {
//return {appendChild:function(){},setAttribute:function(){},style:{}}
return document.createElement(type);
}
function DynamicPropertyContainer(){};
DynamicPropertyContainer.prototype = {
addDynamicProperty: function(prop) {
if(this.dynamicProperties.indexOf(prop) === -1) {
this.dynamicProperties.push(prop);
this.container.addDynamicProperty(this);
this._isAnimated = true;
}
},
iterateDynamicProperties: function(){
this._mdf = false;
var i, len = this.dynamicProperties.length;
for(i=0;i<len;i+=1){
this.dynamicProperties[i].getValue();
if(this.dynamicProperties[i]._mdf) {
this._mdf = true;
}
}
},
initDynamicPropertyContainer: function(container){
this.container = container;
this.dynamicProperties = [];
this._mdf = false;
this._isAnimated = false;
}
}
var getBlendMode = (function() {
var blendModeEnums = {
0:'source-over',
1:'multiply',
2:'screen',
3:'overlay',
4:'darken',
5:'lighten',
6:'color-dodge',
7:'color-burn',
8:'hard-light',
9:'soft-light',
10:'difference',
11:'exclusion',
12:'hue',
13:'saturation',
14:'color',
15:'luminosity'
}
return function(mode) {
return blendModeEnums[mode] || '';
}
}())
/*!
Transformation Matrix v2.0
(c) Epistemex 2014-2015
www.epistemex.com
By Ken Fyrstenberg
Contributions by leeoniya.
License: MIT, header required.
*/
/**
* 2D transformation matrix object initialized with identity matrix.
*
* The matrix can synchronize a canvas context by supplying the context
* as an argument, or later apply current absolute transform to an
* existing context.
*
* All values are handled as floating point values.
*
* @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix
* @prop {number} a - scale x
* @prop {number} b - shear y
* @prop {number} c - shear x
* @prop {number} d - scale y
* @prop {number} e - translate x
* @prop {number} f - translate y
* @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context
* @constructor
*/
var Matrix = (function(){
var _cos = Math.cos;
var _sin = Math.sin;
var _tan = Math.tan;
var _rnd = Math.round;
function reset(){
this.props[0] = 1;
this.props[1] = 0;
this.props[2] = 0;
this.props[3] = 0;
this.props[4] = 0;
this.props[5] = 1;
this.props[6] = 0;
this.props[7] = 0;
this.props[8] = 0;
this.props[9] = 0;
this.props[10] = 1;
this.props[11] = 0;
this.props[12] = 0;
this.props[13] = 0;
this.props[14] = 0;
this.props[15] = 1;
return this;
}
function rotate(angle) {
if(angle === 0){
return this;
}
var mCos = _cos(angle);
var mSin = _sin(angle);
return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
}
function rotateX(angle){
if(angle === 0){
return this;
}
var mCos = _cos(angle);
var mSin = _sin(angle);
return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);
}
function rotateY(angle){
if(angle === 0){
return this;
}
var mCos = _cos(angle);
var mSin = _sin(angle);
return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);
}
function rotateZ(angle){
if(angle === 0){
return this;
}
var mCos = _cos(angle);
var mSin = _sin(angle);
return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
}
function shear(sx,sy){
return this._t(1, sy, sx, 1, 0, 0);
}
function skew(ax, ay){
return this.shear(_tan(ax), _tan(ay));
}
function skewFromAxis(ax, angle){
var mCos = _cos(angle);
var mSin = _sin(angle);
return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
//return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);
}
function scale(sx, sy, sz) {
if(!sz && sz !== 0) {
sz = 1;
}
if(sx === 1 && sy === 1 && sz === 1){
return this;
}
return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);
}
function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {
this.props[0] = a;
this.props[1] = b;
this.props[2] = c;
this.props[3] = d;
this.props[4] = e;
this.props[5] = f;
this.props[6] = g;
this.props[7] = h;
this.props[8] = i;
this.props[9] = j;
this.props[10] = k;
this.props[11] = l;
this.props[12] = m;
this.props[13] = n;
this.props[14] = o;
this.props[15] = p;
return this;
}
function translate(tx, ty, tz) {
tz = tz || 0;
if(tx !== 0 || ty !== 0 || tz !== 0){
return this._t(1,0,0,0,0,1,0,0,0,0,1,0,tx,ty,tz,1);
}
return this;
}
function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {
var _p = this.props;
if(a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0){
//NOTE: commenting this condition because TurboFan deoptimizes code when present
//if(m2 !== 0 || n2 !== 0 || o2 !== 0){
_p[12] = _p[12] * a2 + _p[15] * m2;
_p[13] = _p[13] * f2 + _p[15] * n2;
_p[14] = _p[14] * k2 + _p[15] * o2;
_p[15] = _p[15] * p2;
//}
this._identityCalculated = false;
return this;
}
var a1 = _p[0];
var b1 = _p[1];
var c1 = _p[2];
var d1 = _p[3];
var e1 = _p[4];
var f1 = _p[5];
var g1 = _p[6];
var h1 = _p[7];
var i1 = _p[8];
var j1 = _p[9];
var k1 = _p[10];
var l1 = _p[11];
var m1 = _p[12];
var n1 = _p[13];
var o1 = _p[14];
var p1 = _p[15];
/* matrix order (canvas compatible):
* ace
* bdf
* 001
*/
_p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;
_p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2 ;
_p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2 ;
_p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2 ;
_p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2 ;
_p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2 ;
_p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2 ;
_p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2 ;
_p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2 ;
_p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2 ;
_p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2 ;
_p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2 ;
_p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2 ;
_p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2 ;
_p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2 ;
_p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2 ;
this._identityCalculated = false;
return this;
}
function isIdentity() {
if(!this._identityCalculated){
this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);
this._identityCalculated = true;
}
return this._identity;
}
function equals(matr){
var i = 0;
while (i < 16) {
if(matr.props[i] !== this.props[i]) {
return false;
}
i+=1;
}
return true;
}
function clone(matr){
var i;
for(i=0;i<16;i+=1){
matr.props[i] = this.props[i];
}
}
function cloneFromProps(props){
var i;
for(i=0;i<16;i+=1){
this.props[i] = props[i];
}
}
function applyToPoint(x, y, z) {
return {
x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],
y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],
z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]
};
/*return {
x: x * me.a + y * me.c + me.e,
y: x * me.b + y * me.d + me.f
};*/
}
function applyToX(x, y, z) {
return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];
}
function applyToY(x, y, z) {
return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];
}
function applyToZ(x, y, z) {
return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];
}
function getInverseMatrix() {
var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];
var a = this.props[5]/determinant;
var b = - this.props[1]/determinant;
var c = - this.props[4]/determinant;
var d = this.props[0]/determinant;
var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12])/determinant;
var f = - (this.props[0] * this.props[13] - this.props[1] * this.props[12])/determinant;
var inverseMatrix = new Matrix();
inverseMatrix.props[0] = a;
inverseMatrix.props[1] = b;
inverseMatrix.props[4] = c;
inverseMatrix.props[5] = d;
inverseMatrix.props[12] = e;
inverseMatrix.props[13] = f;
return inverseMatrix;
}
function inversePoint(pt) {
var inverseMatrix = this.getInverseMatrix();
return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0)
}
function inversePoints(pts){
var i, len = pts.length, retPts = [];
for(i=0;i<len;i+=1){
retPts[i] = inversePoint(pts[i]);
}
return retPts;
}
function applyToTriplePoints(pt1, pt2, pt3) {
var arr = createTypedArray('float32', 6);
if(this.isIdentity()) {
arr[0] = pt1[0];
arr[1] = pt1[1];
arr[2] = pt2[0];
arr[3] = pt2[1];
arr[4] = pt3[0];
arr[5] = pt3[1];
} else {
var p0 = this.props[0], p1 = this.props[1], p4 = this.props[4], p5 = this.props[5], p12 = this.props[12], p13 = this.props[13];
arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;
arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;
arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;
arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;
arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;
arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;
}
return arr;
}
function applyToPointArray(x,y,z){
var arr;
if(this.isIdentity()) {
arr = [x,y,z];
} else {
arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];
}
return arr;
}
function applyToPointStringified(x, y) {
if(this.isIdentity()) {
return x + ',' + y;
}
var _p = this.props;
return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100+','+ Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;
}
function toCSS() {
//Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.
/*if(this.isIdentity()) {
return '';
}*/
var i = 0;
var props = this.props;
var cssValue = 'matrix3d(';
var v = 10000;
while(i<16){
cssValue += _rnd(props[i]*v)/v;
cssValue += i === 15 ? ')':',';
i += 1;
}
return cssValue;
}
function roundMatrixProperty(val) {
var v = 10000;
if((val < 0.000001 && val > 0) || (val > -0.000001 && val < 0)) {
return _rnd(val * v) / v;
}
return val;
}
function to2dCSS() {
//Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.
/*if(this.isIdentity()) {
return '';
}*/
var props = this.props;
var _a = roundMatrixProperty(props[0]);
var _b = roundMatrixProperty(props[1]);
var _c = roundMatrixProperty(props[4]);
var _d = roundMatrixProperty(props[5]);
var _e = roundMatrixProperty(props[12]);
var _f = roundMatrixProperty(props[13]);
return "matrix(" + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ")";
}
return function(){
this.reset = reset;
this.rotate = rotate;
this.rotateX = rotateX;
this.rotateY = rotateY;
this.rotateZ = rotateZ;
this.skew = skew;
this.skewFromAxis = skewFromAxis;
this.shear = shear;
this.scale = scale;
this.setTransform = setTransform;
this.translate = translate;
this.transform = transform;
this.applyToPoint = applyToPoint;
this.applyToX = applyToX;
this.applyToY = applyToY;
this.applyToZ = applyToZ;
this.applyToPointArray = applyToPointArray;
this.applyToTriplePoints = applyToTriplePoints;
this.applyToPointStringified = applyToPointStringified;
this.toCSS = toCSS;
this.to2dCSS = to2dCSS;
this.clone = clone;
this.cloneFromProps = cloneFromProps;
this.equals = equals;
this.inversePoints = inversePoints;
this.inversePoint = inversePoint;
this.getInverseMatrix = getInverseMatrix;
this._t = this.transform;
this.isIdentity = isIdentity;
this._identity = true;
this._identityCalculated = false;
this.props = createTypedArray('float32', 16);
this.reset();
};
}());
/*
Copyright 2014 David Bau.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
(function (pool, math) {
//
// The following constants are related to IEEE 754 limits.
//
var global = this,
width = 256, // each RC4 output is 0 <= x < 256
chunks = 6, // at least six RC4 outputs for each double
digits = 52, // there are 52 significant digits in a double
rngname = 'random', // rngname: name for Math.random and Math.seedrandom
startdenom = math.pow(width, chunks),
significance = math.pow(2, digits),
overflow = significance * 2,
mask = width - 1,
nodecrypto; // node.js crypto module, initialized at the bottom.
//
// seedrandom()
// This is the seedrandom function described above.
//
function seedrandom(seed, options, callback) {
var key = [];
options = (options === true) ? { entropy: true } : (options || {});
// Flatten the seed string or build one from local entropy if needed.
var shortseed = mixkey(flatten(
options.entropy ? [seed, tostring(pool)] :
(seed === null) ? autoseed() : seed, 3), key);
// Use the seed to initialize an ARC4 generator.
var arc4 = new ARC4(key);
// This function returns a random double in [0, 1) that contains
// randomness in every bit of the mantissa of the IEEE 754 value.
var prng = function() {
var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48
d = startdenom, // and denominator d = 2 ^ 48.
x = 0; // and no 'extra last byte'.
while (n < significance) { // Fill up all significant digits by
n = (n + x) * width; // shifting numerator and
d *= width; // denominator and generating a
x = arc4.g(1); // new least-significant-byte.
}
while (n >= overflow) { // To avoid rounding up, before adding
n /= 2; // last byte, shift everything
d /= 2; // right using integer math until
x >>>= 1; // we have exactly the desired bits.
}
return (n + x) / d; // Form the number within [0, 1).
};
prng.int32 = function() { return arc4.g(4) | 0; };
prng.quick = function() { return arc4.g(4) / 0x100000000; };
prng.double = prng;
// Mix the randomness into accumulated entropy.
mixkey(tostring(arc4.S), pool);
// Calling convention: what to return as a function of prng, seed, is_math.
return (options.pass || callback ||
function(prng, seed, is_math_call, state) {
if (state) {
// Load the arc4 state from the given state if it has an S array.
if (state.S) { copy(state, arc4); }
// Only provide the .state method if requested via options.state.
prng.state = function() { return copy(arc4, {}); };
}
// If called as a method of Math (Math.seedrandom()), mutate
// Math.random because that is how seedrandom.js has worked since v1.0.
if (is_math_call) { math[rngname] = prng; return seed; }
// Otherwise, it is a newer calling convention, so return the
// prng directly.
else return prng;
})(
prng,
shortseed,
'global' in options ? options.global : (this == math),
options.state);
}
math['seed' + rngname] = seedrandom;
//
// ARC4
//
// An ARC4 implementation. The constructor takes a key in the form of
// an array of at most (width) integers that should be 0 <= x < (width).
//
// The g(count) method returns a pseudorandom integer that concatenates
// the next (count) outputs from ARC4. Its return value is a number x
// that is in the range 0 <= x < (width ^ count).
//
function ARC4(key) {
var t, keylen = key.length,
me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];
// The empty key [] is treated as [0].
if (!keylen) { key = [keylen++]; }
// Set up S using the standard key scheduling algorithm.
while (i < width) {
s[i] = i++;
}
for (i = 0; i < width; i++) {
s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];
s[j] = t;
}
// The "g" method returns the next (count) outputs as one number.
me.g = function(count) {
// Using instance members instead of closure state nearly doubles speed.
var t, r = 0,
i = me.i, j = me.j, s = me.S;
while (count--) {
t = s[i = mask & (i + 1)];
r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];
}
me.i = i; me.j = j;
return r;
// For robust unpredictability, the function call below automatically
// discards an initial batch of values. This is called RC4-drop[256].
// See http://google.com/search?q=rsa+fluhrer+response&btnI
};
}
//
// copy()
// Copies internal state of ARC4 to or from a plain object.
//
function copy(f, t) {
t.i = f.i;
t.j = f.j;
t.S = f.S.slice();
return t;
}
//
// flatten()
// Converts an object tree to nested arrays of strings.
//
function flatten(obj, depth) {
var result = [], typ = (typeof obj), prop;
if (depth && typ == 'object') {
for (prop in obj) {
try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}
}
}
return (result.length ? result : typ == 'string' ? obj : obj + '\0');
}
//
// mixkey()
// Mixes a string seed into a key that is an array of integers, and
// returns a shortened string seed that is equivalent to the result key.
//
function mixkey(seed, key) {
var stringseed = seed + '', smear, j = 0;
while (j < stringseed.length) {
key[mask & j] =
mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));
}
return tostring(key);
}
//
// autoseed()
// Returns an object for autoseeding, using window.crypto and Node crypto
// module if available.
//
function autoseed() {
try {
if (nodecrypto) { return tostring(nodecrypto.randomBytes(width)); }
var out = new Uint8Array(width);
(global.crypto || global.msCrypto).getRandomValues(out);
return tostring(out);
} catch (e) {
var browser = global.navigator,
plugins = browser && browser.plugins;
return [+new Date(), global, plugins, global.screen, tostring(pool)];
}
}
//
// tostring()
// Converts an array of charcodes to a string
//
function tostring(a) {
return String.fromCharCode.apply(0, a);
}
//
// When seedrandom.js is loaded, we immediately mix a few bits
// from the built-in RNG into the entropy pool. Because we do
// not want to interfere with deterministic PRNG state later,
// seedrandom will not call math.random on its own again after
// initialization.
//
mixkey(math.random(), pool);
//
// Nodejs and AMD support: export the implementation as a module using
// either convention.
//
// End anonymous scope, and pass initial values.
})(
[], // pool: entropy pool starts empty
BMMath // math: package containing random, pow, and seedrandom
);
var BezierFactory = (function(){
/**
* BezierEasing - use bezier curve for transition easing function
* by Gaëtan Renaudeau 2014 - 2015 – MIT License
*
* Credits: is based on Firefox's nsSMILKeySpline.cpp
* Usage:
* var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])
* spline.get(x) => returns the easing value | x must be in [0, 1] range
*
*/
var ob = {};
ob.getBezierEasing = getBezierEasing;
var beziers = {};
function getBezierEasing(a,b,c,d,nm){
var str = nm || ('bez_' + a+'_'+b+'_'+c+'_'+d).replace(/\./g, 'p');
if(beziers[str]){
return beziers[str];
}
var bezEasing = new BezierEasing([a,b,c,d]);
beziers[str] = bezEasing;
return bezEasing;
}
// These values are established by empiricism with tests (tradeoff: performance VS precision)
var NEWTON_ITERATIONS = 4;
var NEWTON_MIN_SLOPE = 0.001;
var SUBDIVISION_PRECISION = 0.0000001;
var SUBDIVISION_MAX_ITERATIONS = 10;
var kSplineTableSize = 11;
var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);
var float32ArraySupported = typeof Float32Array === "function";
function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }
function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }
function C (aA1) { return 3.0 * aA1; }
// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.
function calcBezier (aT, aA1, aA2) {
return ((A(aA1, aA2)*aT + B(aA1, aA2))*aT + C(aA1))*aT;
}
// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.
function getSlope (aT, aA1, aA2) {
return 3.0 * A(aA1, aA2)*aT*aT + 2.0 * B(aA1, aA2) * aT + C(aA1);
}
function binarySubdivide (aX, aA, aB, mX1, mX2) {
var currentX, currentT, i = 0;
do {
currentT = aA + (aB - aA) / 2.0;
currentX = calcBezier(currentT, mX1, mX2) - aX;
if (currentX > 0.0) {
aB = currentT;
} else {
aA = currentT;
}
} while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
return currentT;
}
function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {
for (var i = 0; i < NEWTON_ITERATIONS; ++i) {
var currentSlope = getSlope(aGuessT, mX1, mX2);
if (currentSlope === 0.0) return aGuessT;
var currentX = calcBezier(aGuessT, mX1, mX2) - aX;
aGuessT -= currentX / currentSlope;
}
return aGuessT;
}
/**
* points is an array of [ mX1, mY1, mX2, mY2 ]
*/
function BezierEasing (points) {
this._p = points;
this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);
this._precomputed = false;
this.get = this.get.bind(this);
}
BezierEasing.prototype = {
get: function (x) {
var mX1 = this._p[0],
mY1 = this._p[1],
mX2 = this._p[2],
mY2 = this._p[3];
if (!this._precomputed) this._precompute();
if (mX1 === mY1 && mX2 === mY2) return x; // linear
// Because JavaScript number are imprecise, we should guarantee the extremes are right.
if (x === 0) return 0;
if (x === 1) return 1;
return calcBezier(this._getTForX(x), mY1, mY2);
},
// Private part
_precompute: function () {
var mX1 = this._p[0],
mY1 = this._p[1],
mX2 = this._p[2],
mY2 = this._p[3];
this._precomputed = true;
if (mX1 !== mY1 || mX2 !== mY2)
this._calcSampleValues();
},
_calcSampleValues: function () {
var mX1 = this._p[0],
mX2 = this._p[2];
for (var i = 0; i < kSplineTableSize; ++i) {
this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
}
},
/**
* getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.
*/
_getTForX: function (aX) {
var mX1 = this._p[0],
mX2 = this._p[2],
mSampleValues = this._mSampleValues;
var intervalStart = 0.0;
var currentSample = 1;
var lastSample = kSplineTableSize - 1;
for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {
intervalStart += kSampleStepSize;
}
--currentSample;
// Interpolate to provide an initial guess for t
var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample+1] - mSampleValues[currentSample]);
var guessForT = intervalStart + dist * kSampleStepSize;
var initialSlope = getSlope(guessForT, mX1, mX2);
if (initialSlope >= NEWTON_MIN_SLOPE) {
return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
} else if (initialSlope === 0.0) {
return guessForT;
} else {
return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
}
}
};
return ob;
}());
(function () {
var lastTime = 0;
var vendors = ['ms', 'moz', 'webkit', 'o'];
for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];
}
if(!window.requestAnimationFrame)
window.requestAnimationFrame = function (callback, element) {
var currTime = new Date().getTime();
var timeToCall = Math.max(0, 16 - (currTime - lastTime));
var id = setTimeout(function () {
callback(currTime + timeToCall);
},
timeToCall);
lastTime = currTime + timeToCall;
return id;
};
if(!window.cancelAnimationFrame)
window.cancelAnimationFrame = function (id) {
clearTimeout(id);
};
}());
function extendPrototype(sources,destination){
var i, len = sources.length, sourcePrototype;
for (i = 0;i < len;i += 1) {
sourcePrototype = sources[i].prototype;
for (var attr in sourcePrototype) {
if (sourcePrototype.hasOwnProperty(attr)) destination.prototype[attr] = sourcePrototype[attr];
}
}
}
function getDescriptor(object, prop) {
return Object.getOwnPropertyDescriptor(object, prop);
}
function createProxyFunction(prototype) {
function ProxyFunction(){}
ProxyFunction.prototype = prototype;
return ProxyFunction;
}
function bezFunction(){
var easingFunctions = [];
var math = Math;
function pointOnLine2D(x1,y1, x2,y2, x3,y3){
var det1 = (x1*y2) + (y1*x3) + (x2*y3) - (x3*y2) - (y3*x1) - (x2*y1);
return det1 > -0.001 && det1 < 0.001;
}
function pointOnLine3D(x1,y1,z1, x2,y2,z2, x3,y3,z3){
if(z1 === 0 && z2 === 0 && z3 === 0) {
return pointOnLine2D(x1,y1, x2,y2, x3,y3);
}
var dist1 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2) + Math.pow(z2 - z1, 2));
var dist2 = Math.sqrt(Math.pow(x3 - x1, 2) + Math.pow(y3 - y1, 2) + Math.pow(z3 - z1, 2));
var dist3 = Math.sqrt(Math.pow(x3 - x2, 2) + Math.pow(y3 - y2, 2) + Math.pow(z3 - z2, 2));
var diffDist;
if(dist1 > dist2){
if(dist1 > dist3){
diffDist = dist1 - dist2 - dist3;
} else {
diffDist = dist3 - dist2 - dist1;
}
} else if(dist3 > dist2){
diffDist = dist3 - dist2 - dist1;
} else {
diffDist = dist2 - dist1 - dist3;
}
return diffDist > -0.0001 && diffDist < 0.0001;
}
var getBezierLength = (function(){
return function(pt1,pt2,pt3,pt4){
var curveSegments = defaultCurveSegments;
var k;
var i, len;
var ptCoord,perc,addedLength = 0;
var ptDistance;
var point = [],lastPoint = [];
var lengthData = bezier_length_pool.newElement();
len = pt3.length;
for(k=0;k<curveSegments;k+=1){
perc = k/(curveSegments-1);
ptDistance = 0;
for(i=0;i<len;i+=1){
ptCoord = bm_pow(1-perc,3)*pt1[i]+3*bm_pow(1-perc,2)*perc*pt3[i]+3*(1-perc)*bm_pow(perc,2)*pt4[i]+bm_pow(perc,3)*pt2[i];
point[i] = ptCoord;
if(lastPoint[i] !== null){
ptDistance += bm_pow(point[i] - lastPoint[i],2);
}
lastPoint[i] = point[i];
}
if(ptDistance){
ptDistance = bm_sqrt(ptDistance);
addedLength += ptDistance;
}
lengthData.percents[k] = perc;
lengthData.lengths[k] = addedLength;
}
lengthData.addedLength = addedLength;
return lengthData;
};
}());
function getSegmentsLength(shapeData) {
var segmentsLength = segments_length_pool.newElement();
var closed = shapeData.c;
var pathV = shapeData.v;
var pathO = shapeData.o;
var pathI = shapeData.i;
var i, len = shapeData._length;
var lengths = segmentsLength.lengths;
var totalLength = 0;
for(i=0;i<len-1;i+=1){
lengths[i] = getBezierLength(pathV[i],pathV[i+1],pathO[i],pathI[i+1]);
totalLength += lengths[i].addedLength;
}
if(closed && len){
lengths[i] = getBezierLength(pathV[i],pathV[0],pathO[i],pathI[0]);
totalLength += lengths[i].addedLength;
}
segmentsLength.totalLength = totalLength;
return segmentsLength;
}
function BezierData(length){
this.segmentLength = 0;
this.points = new Array(length);
}
function PointData(partial,point){
this.partialLength = partial;
this.point = point;
}
var buildBezierData = (function(){
var storedData = {};
return function (pt1, pt2, pt3, pt4){
var bezierName = (pt1[0]+'_'+pt1[1]+'_'+pt2[0]+'_'+pt2[1]+'_'+pt3[0]+'_'+pt3[1]+'_'+pt4[0]+'_'+pt4[1]).replace(/\./g, 'p');
if(!storedData[bezierName]){
var curveSegments = defaultCurveSegments;
var k, i, len;
var ptCoord,perc,addedLength = 0;
var ptDistance;
var point,lastPoint = null;
if (pt1.length === 2 && (pt1[0] != pt2[0] || pt1[1] != pt2[1]) && pointOnLine2D(pt1[0],pt1[1],pt2[0],pt2[1],pt1[0]+pt3[0],pt1[1]+pt3[1]) && pointOnLine2D(pt1[0],pt1[1],pt2[0],pt2[1],pt2[0]+pt4[0],pt2[1]+pt4[1])){
curveSegments = 2;
}
var bezierData = new BezierData(curveSegments);
len = pt3.length;
for (k = 0; k < curveSegments; k += 1) {
point = createSizedArray(len);
perc = k / (curveSegments - 1);
ptDistance = 0;
for (i = 0; i < len; i += 1){
ptCoord = bm_pow(1-perc,3)*pt1[i]+3*bm_pow(1-perc,2)*perc*(pt1[i] + pt3[i])+3*(1-perc)*bm_pow(perc,2)*(pt2[i] + pt4[i])+bm_pow(perc,3)*pt2[i];
point[i] = ptCoord;
if(lastPoint !== null){
ptDistance += bm_pow(point[i] - lastPoint[i],2);
}
}
ptDistance = bm_sqrt(ptDistance);
addedLength += ptDistance;
bezierData.points[k] = new PointData(ptDistance, point);
lastPoint = point;
}
bezierData.segmentLength = addedLength;
storedData[bezierName] = bezierData;
}
return storedData[bezierName];
};
}());
function getDistancePerc(perc,bezierData){
var percents = bezierData.percents;
var lengths = bezierData.lengths;
var len = percents.length;
var initPos = bm_floor((len-1)*perc);
var lengthPos = perc*bezierData.addedLength;
var lPerc = 0;
if(initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]){
return percents[initPos];
}else{
var dir = lengths[initPos] > lengthPos ? -1 : 1;
var flag = true;
while(flag){
if(lengths[initPos] <= lengthPos && lengths[initPos+1] > lengthPos){
lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos+1] - lengths[initPos]);
flag = false;
}else{
initPos += dir;
}
if(initPos < 0 || initPos >= len - 1){
//FIX for TypedArrays that don't store floating point values with enough accuracy
if(initPos === len - 1) {
return percents[initPos];
}
flag = false;
}
}
return percents[initPos] + (percents[initPos+1] - percents[initPos])*lPerc;
}
}
function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {
var t1 = getDistancePerc(percent,bezierData);
var u0 = 1;
var u1 = 1 - t1;
var ptX = Math.round((u1*u1*u1* pt1[0] + (t1*u1*u1 + u1*t1*u1 + u1*u1*t1)* pt3[0] + (t1*t1*u1 + u1*t1*t1 + t1*u1*t1)*pt4[0] + t1*t1*t1* pt2[0])* 1000) / 1000;
var ptY = Math.round((u1*u1*u1* pt1[1] + (t1*u1*u1 + u1*t1*u1 + u1*u1*t1)* pt3[1] + (t1*t1*u1 + u1*t1*t1 + t1*u1*t1)*pt4[1] + t1*t1*t1* pt2[1])* 1000) / 1000;
return [ptX, ptY];
}
function getSegmentArray() {
}
var bezier_segment_points = createTypedArray('float32', 8);
function getNewSegment(pt1,pt2,pt3,pt4,startPerc,endPerc, bezierData){
startPerc = startPerc < 0 ? 0 : startPerc > 1 ? 1 : startPerc;
var t0 = getDistancePerc(startPerc,bezierData);
endPerc = endPerc > 1 ? 1 : endPerc;
var t1 = getDistancePerc(endPerc,bezierData);
var i, len = pt1.length;
var u0 = 1 - t0;
var u1 = 1 - t1;
var u0u0u0 = u0*u0*u0;
var t0u0u0_3 = t0*u0*u0*3;
var t0t0u0_3 = t0*t0*u0*3;
var t0t0t0 = t0*t0*t0;
//
var u0u0u1 = u0*u0*u1;
var t0u0u1_3 = t0*u0*u1 + u0*t0*u1 + u0*u0*t1;
var t0t0u1_3 = t0*t0*u1 + u0*t0*t1 + t0*u0*t1;
var t0t0t1 = t0*t0*t1;
//
var u0u1u1 = u0*u1*u1;
var t0u1u1_3 = t0*u1*u1 + u0*t1*u1 + u0*u1*t1;
var t0t1u1_3 = t0*t1*u1 + u0*t1*t1 + t0*u1*t1;
var t0t1t1 = t0*t1*t1;
//
var u1u1u1 = u1*u1*u1;
var t1u1u1_3 = t1*u1*u1 + u1*t1*u1 + u1*u1*t1;
var t1t1u1_3 = t1*t1*u1 + u1*t1*t1 + t1*u1*t1;
var t1t1t1 = t1*t1*t1;
for(i=0;i<len;i+=1){
bezier_segment_points[i * 4] = Math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000;
bezier_segment_points[i * 4 + 1] = Math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000;
bezier_segment_points[i * 4 + 2] = Math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000;
bezier_segment_points[i * 4 + 3] = Math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000;
}
return bezier_segment_points;
}
return {
getSegmentsLength : getSegmentsLength,
getNewSegment : getNewSegment,
getPointInSegment : getPointInSegment,
buildBezierData : buildBezierData,
pointOnLine2D : pointOnLine2D,
pointOnLine3D : pointOnLine3D
};
}
var bez = bezFunction();
function dataFunctionManager(){
//var tCanvasHelper = createTag('canvas').getContext('2d');
function completeLayers(layers, comps, fontManager){
var layerData;
var animArray, lastFrame;
var i, len = layers.length;
var j, jLen, k, kLen;
for(i=0;i<len;i+=1){
layerData = layers[i];
if(!('ks' in layerData) || layerData.completed){
continue;
}
layerData.completed = true;
if(layerData.tt){
layers[i-1].td = layerData.tt;
}
animArray = [];
lastFrame = -1;
if(layerData.hasMask){
var maskProps = layerData.masksProperties;
jLen = maskProps.length;
for(j=0;j<jLen;j+=1){
if(maskProps[j].pt.k.i){
convertPathsToAbsoluteValues(maskProps[j].pt.k);
}else{
kLen = maskProps[j].pt.k.length;
for(k=0;k<kLen;k+=1){
if(maskProps[j].pt.k[k].s){
convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);
}
if(maskProps[j].pt.k[k].e){
convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);
}
}
}
}
}
if(layerData.ty===0){
layerData.layers = findCompLayers(layerData.refId, comps);
completeLayers(layerData.layers,comps, fontManager);
}else if(layerData.ty === 4){
completeShapes(layerData.shapes);
}else if(layerData.ty == 5){
completeText(layerData, fontManager);
}
}
}
function findCompLayers(id,comps){
var i = 0, len = comps.length;
while(i<len){
if(comps[i].id === id){
if(!comps[i].layers.__used) {
comps[i].layers.__used = true;
return comps[i].layers;
}
return JSON.parse(JSON.stringify(comps[i].layers));
}
i += 1;
}
}
function completeShapes(arr){
var i, len = arr.length;
var j, jLen;
var hasPaths = false;
for(i=len-1;i>=0;i-=1){
if(arr[i].ty == 'sh'){
if(arr[i].ks.k.i){
convertPathsToAbsoluteValues(arr[i].ks.k);
}else{
jLen = arr[i].ks.k.length;
for(j=0;j<jLen;j+=1){
if(arr[i].ks.k[j].s){
convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);
}
if(arr[i].ks.k[j].e){
convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);
}
}
}
hasPaths = true;
}else if(arr[i].ty == 'gr'){
completeShapes(arr[i].it);
}
}
/*if(hasPaths){
//mx: distance
//ss: sensitivity
//dc: decay
arr.splice(arr.length-1,0,{
"ty": "ms",
"mx":20,
"ss":10,
"dc":0.001,
"maxDist":200
});
}*/
}
function convertPathsToAbsoluteValues(path){
var i, len = path.i.length;
for(i=0;i<len;i+=1){
path.i[i][0] += path.v[i][0];
path.i[i][1] += path.v[i][1];
path.o[i][0] += path.v[i][0];
path.o[i][1] += path.v[i][1];
}
}
function checkVersion(minimum,animVersionString){
var animVersion = animVersionString ? animVersionString.split('.') : [100,100,100];
if(minimum[0]>animVersion[0]){
return true;
} else if(animVersion[0] > minimum[0]){
return false;
}
if(minimum[1]>animVersion[1]){
return true;
} else if(animVersion[1] > minimum[1]){
return false;
}
if(minimum[2]>animVersion[2]){
return true;
} else if(animVersion[2] > minimum[2]){
return false;
}
}
var checkText = (function(){
var minimumVersion = [4,4,14];
function updateTextLayer(textLayer){
var documentData = textLayer.t.d;
textLayer.t.d = {
k: [
{
s:documentData,
t:0
}
]
};
}
function iterateLayers(layers){
var i, len = layers.length;
for(i=0;i<len;i+=1){
if(layers[i].ty === 5){
updateTextLayer(layers[i]);
}
}
}
return function (animationData){
if(checkVersion(minimumVersion,animationData.v)){
iterateLayers(animationData.layers);
if(animationData.assets){
var i, len = animationData.assets.length;
for(i=0;i<len;i+=1){
if(animationData.assets[i].layers){
iterateLayers(animationData.assets[i].layers);
}
}
}
}
};
}());
var checkChars = (function() {
var minimumVersion = [4,7,99];
return function (animationData){
if(animationData.chars && !checkVersion(minimumVersion,animationData.v)){
var i, len = animationData.chars.length, j, jLen, k, kLen;
var pathData, paths;
for(i = 0; i < len; i += 1) {
if(animationData.chars[i].data && animationData.chars[i].data.shapes) {
paths = animationData.chars[i].data.shapes[0].it;
jLen = paths.length;
for(j = 0; j < jLen; j += 1) {
pathData = paths[j].ks.k;
if(!pathData.__converted) {
convertPathsToAbsoluteValues(paths[j].ks.k);
pathData.__converted = true;
}
}
}
}
}
};
}());
var checkColors = (function(){
var minimumVersion = [4,1,9];
function iterateShapes(shapes){
var i, len = shapes.length;
var j, jLen;
for(i=0;i<len;i+=1){
if(shapes[i].ty === 'gr'){
iterateShapes(shapes[i].it);
}else if(shapes[i].ty === 'fl' || shapes[i].ty === 'st'){
if(shapes[i].c.k && shapes[i].c.k[0].i){
jLen = shapes[i].c.k.length;
for(j=0;j<jLen;j+=1){
if(shapes[i].c.k[j].s){
shapes[i].c.k[j].s[0] /= 255;
shapes[i].c.k[j].s[1] /= 255;
shapes[i].c.k[j].s[2] /= 255;
shapes[i].c.k[j].s[3] /= 255;
}
if(shapes[i].c.k[j].e){
shapes[i].c.k[j].e[0] /= 255;
shapes[i].c.k[j].e[1] /= 255;
shapes[i].c.k[j].e[2] /= 255;
shapes[i].c.k[j].e[3] /= 255;
}
}
} else {
shapes[i].c.k[0] /= 255;
shapes[i].c.k[1] /= 255;
shapes[i].c.k[2] /= 255;
shapes[i].c.k[3] /= 255;
}
}
}
}
function iterateLayers(layers){
var i, len = layers.length;
for(i=0;i<len;i+=1){
if(layers[i].ty === 4){
iterateShapes(layers[i].shapes);
}
}
}
return function (animationData){
if(checkVersion(minimumVersion,animationData.v)){
iterateLayers(animationData.layers);
if(animationData.assets){
var i, len = animationData.assets.length;
for(i=0;i<len;i+=1){
if(animationData.assets[i].layers){
iterateLayers(animationData.assets[i].layers);
}
}
}
}
};
}());
var checkShapes = (function(){
var minimumVersion = [4,4,18];
function completeShapes(arr){
var i, len = arr.length;
var j, jLen;
var hasPaths = false;
for(i=len-1;i>=0;i-=1){
if(arr[i].ty == 'sh'){
if(arr[i].ks.k.i){
arr[i].ks.k.c = arr[i].closed;
}else{
jLen = arr[i].ks.k.length;
for(j=0;j<jLen;j+=1){
if(arr[i].ks.k[j].s){
arr[i].ks.k[j].s[0].c = arr[i].closed;
}
if(arr[i].ks.k[j].e){
arr[i].ks.k[j].e[0].c = arr[i].closed;
}
}
}
hasPaths = true;
}else if(arr[i].ty == 'gr'){
completeShapes(arr[i].it);
}
}
}
function iterateLayers(layers){
var layerData;
var i, len = layers.length;
var j, jLen, k, kLen;
for(i=0;i<len;i+=1){
layerData = layers[i];
if(layerData.hasMask){
var maskProps = layerData.masksProperties;
jLen = maskProps.length;
for(j=0;j<jLen;j+=1){
if(maskProps[j].pt.k.i){
maskProps[j].pt.k.c = maskProps[j].cl;
}else{
kLen = maskProps[j].pt.k.length;
for(k=0;k<kLen;k+=1){
if(maskProps[j].pt.k[k].s){
maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;
}
if(maskProps[j].pt.k[k].e){
maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;
}
}
}
}
}
if(layerData.ty === 4){
completeShapes(layerData.shapes);
}
}
}
return function (animationData){
if(checkVersion(minimumVersion,animationData.v)){
iterateLayers(animationData.layers);
if(animationData.assets){
var i, len = animationData.assets.length;
for(i=0;i<len;i+=1){
if(animationData.assets[i].layers){
iterateLayers(animationData.assets[i].layers);
}
}
}
}
};
}());
function completeData(animationData, fontManager){
if(animationData.__complete){
return;
}
checkColors(animationData);
checkText(animationData);
checkChars(animationData);
checkShapes(animationData);
completeLayers(animationData.layers, animationData.assets, fontManager);
animationData.__complete = true;
//blitAnimation(animationData, animationData.assets, fontManager);
}
function completeText(data, fontManager){
if(data.t.a.length === 0 && !('m' in data.t.p)){
data.singleShape = true;
}
}
var moduleOb = {};
moduleOb.completeData = completeData;
moduleOb.checkColors = checkColors;
moduleOb.checkChars = checkChars;
moduleOb.checkShapes = checkShapes;
moduleOb.completeLayers = completeLayers;
return moduleOb;
}
var dataManager = dataFunctionManager();
var FontManager = (function(){
var maxWaitingTime = 5000;
var emptyChar = {
w: 0,
size:0,
shapes:[]
};
var combinedCharacters = [];
//Hindi characters
combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366
, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379
, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);
function setUpNode(font, family){
var parentNode = createTag('span');
parentNode.style.fontFamily = family;
var node = createTag('span');
// Characters that vary significantly among different fonts
node.innerHTML = 'giItT1WQy@!-/#';
// Visible - so we can measure it - but not on the screen
parentNode.style.position = 'absolute';
parentNode.style.left = '-10000px';
parentNode.style.top = '-10000px';
// Large font size makes even subtle changes obvious
parentNode.style.fontSize = '300px';
// Reset any font properties
parentNode.style.fontVariant = 'normal';
parentNode.style.fontStyle = 'normal';
parentNode.style.fontWeight = 'normal';
parentNode.style.letterSpacing = '0';
parentNode.appendChild(node);
document.body.appendChild(parentNode);
// Remember width with no applied web font
var width = node.offsetWidth;
node.style.fontFamily = font + ', '+family;
return {node:node, w:width, parent:parentNode};
}
function checkLoadedFonts() {
var i, len = this.fonts.length;
var node, w;
var loadedCount = len;
for(i=0;i<len; i+= 1){
if(this.fonts[i].loaded){
loadedCount -= 1;
continue;
}
if(this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0){
this.fonts[i].loaded = true;
} else{
node = this.fonts[i].monoCase.node;
w = this.fonts[i].monoCase.w;
if(node.offsetWidth !== w){
loadedCount -= 1;
this.fonts[i].loaded = true;
}else{
node = this.fonts[i].sansCase.node;
w = this.fonts[i].sansCase.w;
if(node.offsetWidth !== w){
loadedCount -= 1;
this.fonts[i].loaded = true;
}
}
if(this.fonts[i].loaded){
this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);
this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);
}
}
}
if(loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime){
setTimeout(this.checkLoadedFonts.bind(this),20);
}else{
setTimeout(function(){this.isLoaded = true;}.bind(this),0);
}
}
function createHelper(def, fontData){
var tHelper = createNS('text');
tHelper.style.fontSize = '100px';
//tHelper.style.fontFamily = fontData.fFamily;
tHelper.setAttribute('font-family', fontData.fFamily);
tHelper.setAttribute('font-style', fontData.fStyle);
tHelper.setAttribute('font-weight', fontData.fWeight);
tHelper.textContent = '1';
if(fontData.fClass){
tHelper.style.fontFamily = 'inherit';
tHelper.setAttribute('class', fontData.fClass);
} else {
tHelper.style.fontFamily = fontData.fFamily;
}
def.appendChild(tHelper);
var tCanvasHelper = createTag('canvas').getContext('2d');
tCanvasHelper.font = fontData.fWeight + ' ' + fontData.fStyle + ' 100px '+ fontData.fFamily;
//tCanvasHelper.font = ' 100px '+ fontData.fFamily;
return tHelper;
}
function addFonts(fontData, defs){
if(!fontData){
this.isLoaded = true;
return;
}
if(this.chars){
this.isLoaded = true;
this.fonts = fontData.list;
return;
}
var fontArr = fontData.list;
var i, len = fontArr.length;
var _pendingFonts = len;
for(i=0; i<len; i+= 1){
var shouldLoadFont = true;
var loadedSelector;
var j;
fontArr[i].loaded = false;
fontArr[i].monoCase = setUpNode(fontArr[i].fFamily,'monospace');
fontArr[i].sansCase = setUpNode(fontArr[i].fFamily,'sans-serif');
if(!fontArr[i].fPath) {
fontArr[i].loaded = true;
_pendingFonts -= 1;
}else if(fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3){
loadedSelector = document.querySelectorAll('style[f-forigin="p"][f-family="'+ fontArr[i].fFamily +'"], style[f-origin="3"][f-family="'+ fontArr[i].fFamily +'"]');
if (loadedSelector.length > 0) {
shouldLoadFont = false;
}
if (shouldLoadFont) {
var s = createTag('style');
s.setAttribute('f-forigin', fontArr[i].fOrigin);
s.setAttribute('f-origin', fontArr[i].origin);
s.setAttribute('f-family', fontArr[i].fFamily);
s.type = "text/css";
s.innerHTML = "@font-face {" + "font-family: "+fontArr[i].fFamily+"; font-style: normal; src: url('"+fontArr[i].fPath+"');}";
defs.appendChild(s);
}
} else if(fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1){
loadedSelector = document.querySelectorAll('link[f-forigin="g"], link[f-origin="1"]');
for (j = 0; j < loadedSelector.length; j++) {
if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {
// Font is already loaded
shouldLoadFont = false;
}
}
if (shouldLoadFont) {
var l = createTag('link');
l.setAttribute('f-forigin', fontArr[i].fOrigin);
l.setAttribute('f-origin', fontArr[i].origin);
l.type = "text/css";
l.rel = "stylesheet";
l.href = fontArr[i].fPath;
document.body.appendChild(l);
}
} else if(fontArr[i].fOrigin === 't' || fontArr[i].origin === 2){
loadedSelector = document.querySelectorAll('script[f-forigin="t"], script[f-origin="2"]');
for (j = 0; j < loadedSelector.length; j++) {
if (fontArr[i].fPath === loadedSelector[j].src) {
// Font is already loaded
shouldLoadFont = false;
}
}
if (shouldLoadFont) {
var sc = createTag('link');
sc.setAttribute('f-forigin', fontArr[i].fOrigin);
sc.setAttribute('f-origin', fontArr[i].origin);
sc.setAttribute('rel','stylesheet');
sc.setAttribute('href',fontArr[i].fPath);
defs.appendChild(sc);
}
}
fontArr[i].helper = createHelper(defs,fontArr[i]);
fontArr[i].cache = {};
this.fonts.push(fontArr[i]);
}
if (_pendingFonts === 0) {
this.isLoaded = true;
} else {
//On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.
//Adding this timeout seems to fix it
setTimeout(this.checkLoadedFonts.bind(this), 100);
}
}
function addChars(chars){
if(!chars){
return;
}
if(!this.chars){
this.chars = [];
}
var i, len = chars.length;
var j, jLen = this.chars.length, found;
for(i=0;i<len;i+=1){
j = 0;
found = false;
while(j<jLen){
if(this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch){
found = true;
}
j += 1;
}
if(!found){
this.chars.push(chars[i]);
jLen += 1;
}
}
}
function getCharData(char, style, font){
var i = 0, len = this.chars.length;
while( i < len) {
if(this.chars[i].ch === char && this.chars[i].style === style && this.chars[i].fFamily === font){
return this.chars[i];
}
i+= 1;
}
if((typeof char === 'string' && char.charCodeAt(0) !== 13 || !char) && console && console.warn) {
console.warn('Missing character from exported characters list: ', char, style, font);
}
return emptyChar;
}
function measureText(char, fontName, size) {
var fontData = this.getFontByName(fontName);
var index = char.charCodeAt(0);
if(!fontData.cache[index + 1]) {
var tHelper = fontData.helper;
//Canvas version
//fontData.cache[index] = tHelper.measureText(char).width / 100;
//SVG version
//console.log(tHelper.getBBox().width)
if (char === ' ') {
tHelper.textContent = '|' + char + '|';
var doubleSize = tHelper.getComputedTextLength();
tHelper.textContent = '||';
var singleSize = tHelper.getComputedTextLength();
fontData.cache[index + 1] = (doubleSize - singleSize)/100;
} else {
tHelper.textContent = char;
fontData.cache[index + 1] = (tHelper.getComputedTextLength())/100;
}
}
return fontData.cache[index + 1] * size;
}
function getFontByName(name){
var i = 0, len = this.fonts.length;
while(i<len){
if(this.fonts[i].fName === name) {
return this.fonts[i];
}
i += 1;
}
return this.fonts[0];
}
function getCombinedCharacterCodes() {
return combinedCharacters;
}
function loaded() {
return this.isLoaded;
}
var Font = function(){
this.fonts = [];
this.chars = null;
this.typekitLoaded = 0;
this.isLoaded = false;
this.initTime = Date.now();
};
//TODO: for now I'm adding these methods to the Class and not the prototype. Think of a better way to implement it.
Font.getCombinedCharacterCodes = getCombinedCharacterCodes;
Font.prototype.addChars = addChars;
Font.prototype.addFonts = addFonts;
Font.prototype.getCharData = getCharData;
Font.prototype.getFontByName = getFontByName;
Font.prototype.measureText = measureText;
Font.prototype.checkLoadedFonts = checkLoadedFonts;
Font.prototype.loaded = loaded;
return Font;
}());
var PropertyFactory = (function(){
var initFrame = initialDefaultFrame;
var math_abs = Math.abs;
function interpolateValue(frameNum, caching) {
var offsetTime = this.offsetTime;
var newValue;
if (this.propType === 'multidimensional') {
newValue = createTypedArray('float32', this.pv.length);
}
var iterationIndex = caching.lastIndex;
var i = iterationIndex;
var len = this.keyframes.length - 1, flag = true;
var keyData, nextKeyData;
while (flag) {
keyData = this.keyframes[i];
nextKeyData = this.keyframes[i + 1];
if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime){
if(keyData.h){
keyData = nextKeyData;
}
iterationIndex = 0;
break;
}
if ((nextKeyData.t - offsetTime) > frameNum){
iterationIndex = i;
break;
}
if (i < len - 1){
i += 1;
} else {
iterationIndex = 0;
flag = false;
}
}
var k, kLen, perc, jLen, j, fnc;
var nextKeyTime = nextKeyData.t - offsetTime;
var keyTime = keyData.t - offsetTime;
var endValue;
if (keyData.to) {
if (!keyData.bezierData) {
keyData.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);
}
var bezierData = keyData.bezierData;
if (frameNum >= nextKeyTime || frameNum < keyTime) {
var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;
kLen = bezierData.points[ind].point.length;
for (k = 0; k < kLen; k += 1) {
newValue[k] = bezierData.points[ind].point[k];
}
// caching._lastKeyframeIndex = -1;
} else {
if (keyData.__fnct) {
fnc = keyData.__fnct;
} else {
fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;
keyData.__fnct = fnc;
}
perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));
var distanceInLine = bezierData.segmentLength*perc;
var segmentPerc;
var addedLength = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastAddedLength : 0;
j = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastPoint : 0;
flag = true;
jLen = bezierData.points.length;
while (flag) {
addedLength += bezierData.points[j].partialLength;
if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {
kLen = bezierData.points[j].point.length;
for (k = 0; k < kLen; k += 1) {
newValue[k] = bezierData.points[j].point[k];
}
break;
} else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {
segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;
kLen = bezierData.points[j].point.length;
for (k = 0; k < kLen; k += 1) {
newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;
}
break;
}
if (j < jLen - 1){
j += 1;
} else {
flag = false;
}
}
caching._lastPoint = j;
caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;
caching._lastKeyframeIndex = i;
}
} else {
var outX, outY, inX, inY, keyValue;
len = keyData.s.length;
endValue = nextKeyData.s || keyData.e;
if (this.sh && keyData.h !== 1) {
if (frameNum >= nextKeyTime) {
newValue[0] = endValue[0];
newValue[1] = endValue[1];
newValue[2] = endValue[2];
} else if (frameNum <= keyTime) {
newValue[0] = keyData.s[0];
newValue[1] = keyData.s[1];
newValue[2] = keyData.s[2];
} else {
var quatStart = createQuaternion(keyData.s);
var quatEnd = createQuaternion(endValue);
var time = (frameNum - keyTime) / (nextKeyTime - keyTime);
quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));
}
} else {
for(i = 0; i < len; i += 1) {
if (keyData.h !== 1) {
if (frameNum >= nextKeyTime) {
perc = 1;
} else if(frameNum < keyTime) {
perc = 0;
} else {
if(keyData.o.x.constructor === Array) {
if (!keyData.__fnct) {
keyData.__fnct = [];
}
if (!keyData.__fnct[i]) {
outX = (typeof keyData.o.x[i] === 'undefined') ? keyData.o.x[0] : keyData.o.x[i];
outY = (typeof keyData.o.y[i] === 'undefined') ? keyData.o.y[0] : keyData.o.y[i];
inX = (typeof keyData.i.x[i] === 'undefined') ? keyData.i.x[0] : keyData.i.x[i];
inY = (typeof keyData.i.y[i] === 'undefined') ? keyData.i.y[0] : keyData.i.y[i];
fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;
keyData.__fnct[i] = fnc;
} else {
fnc = keyData.__fnct[i];
}
} else {
if (!keyData.__fnct) {
outX = keyData.o.x;
outY = keyData.o.y;
inX = keyData.i.x;
inY = keyData.i.y;
fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;
keyData.__fnct = fnc;
} else {
fnc = keyData.__fnct;
}
}
perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime ));
}
}
endValue = nextKeyData.s || keyData.e;
keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;
if (this.propType === 'multidimensional') {
newValue[i] = keyValue;
} else {
newValue = keyValue;
}
}
}
}
caching.lastIndex = iterationIndex;
return newValue;
}
//based on @Toji's https://github.com/toji/gl-matrix/
function slerp(a, b, t) {
var out = [];
var ax = a[0], ay = a[1], az = a[2], aw = a[3],
bx = b[0], by = b[1], bz = b[2], bw = b[3]
var omega, cosom, sinom, scale0, scale1;
cosom = ax * bx + ay * by + az * bz + aw * bw;
if (cosom < 0.0) {
cosom = -cosom;
bx = -bx;
by = -by;
bz = -bz;
bw = -bw;
}
if ((1.0 - cosom) > 0.000001) {
omega = Math.acos(cosom);
sinom = Math.sin(omega);
scale0 = Math.sin((1.0 - t) * omega) / sinom;
scale1 = Math.sin(t * omega) / sinom;
} else {
scale0 = 1.0 - t;
scale1 = t;
}
out[0] = scale0 * ax + scale1 * bx;
out[1] = scale0 * ay + scale1 * by;
out[2] = scale0 * az + scale1 * bz;
out[3] = scale0 * aw + scale1 * bw;
return out;
}
function quaternionToEuler(out, quat) {
var qx = quat[0];
var qy = quat[1];
var qz = quat[2];
var qw = quat[3];
var heading = Math.atan2(2*qy*qw-2*qx*qz , 1 - 2*qy*qy - 2*qz*qz)
var attitude = Math.asin(2*qx*qy + 2*qz*qw)
var bank = Math.atan2(2*qx*qw-2*qy*qz , 1 - 2*qx*qx - 2*qz*qz);
out[0] = heading/degToRads;
out[1] = attitude/degToRads;
out[2] = bank/degToRads;
}
function createQuaternion(values) {
var heading = values[0] * degToRads;
var attitude = values[1] * degToRads;
var bank = values[2] * degToRads;
var c1 = Math.cos(heading / 2);
var c2 = Math.cos(attitude / 2);
var c3 = Math.cos(bank / 2);
var s1 = Math.sin(heading / 2);
var s2 = Math.sin(attitude / 2);
var s3 = Math.sin(bank / 2);
var w = c1 * c2 * c3 - s1 * s2 * s3;
var x = s1 * s2 * c3 + c1 * c2 * s3;
var y = s1 * c2 * c3 + c1 * s2 * s3;
var z = c1 * s2 * c3 - s1 * c2 * s3;
return [x,y,z,w];
}
function getValueAtCurrentTime(){
var frameNum = this.comp.renderedFrame - this.offsetTime;
var initTime = this.keyframes[0].t - this.offsetTime;
var endTime = this.keyframes[this.keyframes.length- 1].t-this.offsetTime;
if(!(frameNum === this._caching.lastFrame || (this._caching.lastFrame !== initFrame && ((this._caching.lastFrame >= endTime && frameNum >= endTime) || (this._caching.lastFrame < initTime && frameNum < initTime))))){
if(this._caching.lastFrame >= frameNum) {
this._caching._lastKeyframeIndex = -1;
this._caching.lastIndex = 0;
}
var renderResult = this.interpolateValue(frameNum, this._caching);
this.pv = renderResult;
}
this._caching.lastFrame = frameNum;
return this.pv;
}
function setVValue(val) {
var multipliedValue;
if(this.propType === 'unidimensional') {
multipliedValue = val * this.mult;
if(math_abs(this.v - multipliedValue) > 0.00001) {
this.v = multipliedValue;
this._mdf = true;
}
} else {
var i = 0, len = this.v.length;
while (i < len) {
multipliedValue = val[i] * this.mult;
if (math_abs(this.v[i] - multipliedValue) > 0.00001) {
this.v[i] = multipliedValue;
this._mdf = true;
}
i += 1;
}
}
}
function processEffectsSequence() {
if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {
return;
}
if(this.lock) {
this.setVValue(this.pv);
return;
}
this.lock = true;
this._mdf = this._isFirstFrame;
var multipliedValue;
var i, len = this.effectsSequence.length;
var finalValue = this.kf ? this.pv : this.data.k;
for(i = 0; i < len; i += 1) {
finalValue = this.effectsSequence[i](finalValue);
}
this.setVValue(finalValue);
this._isFirstFrame = false;
this.lock = false;
this.frameId = this.elem.globalData.frameId;
}
function addEffect(effectFunction) {
this.effectsSequence.push(effectFunction);
this.container.addDynamicProperty(this);
}
function ValueProperty(elem, data, mult, container){
this.propType = 'unidimensional';
this.mult = mult || 1;
this.data = data;
this.v = mult ? data.k * mult : data.k;
this.pv = data.k;
this._mdf = false;
this.elem = elem;
this.container = container;
this.comp = elem.comp;
this.k = false;
this.kf = false;
this.vel = 0;
this.effectsSequence = [];
this._isFirstFrame = true;
this.getValue = processEffectsSequence;
this.setVValue = setVValue;
this.addEffect = addEffect;
}
function MultiDimensionalProperty(elem, data, mult, container) {
this.propType = 'multidimensional';
this.mult = mult || 1;
this.data = data;
this._mdf = false;
this.elem = elem;
this.container = container;
this.comp = elem.comp;
this.k = false;
this.kf = false;
this.frameId = -1;
var i, len = data.k.length;
this.v = createTypedArray('float32', len);
this.pv = createTypedArray('float32', len);
var arr = createTypedArray('float32', len);
this.vel = createTypedArray('float32', len);
for (i = 0; i < len; i += 1) {
this.v[i] = data.k[i] * this.mult;
this.pv[i] = data.k[i];
}
this._isFirstFrame = true;
this.effectsSequence = [];
this.getValue = processEffectsSequence;
this.setVValue = setVValue;
this.addEffect = addEffect;
}
function KeyframedValueProperty(elem, data, mult, container) {
this.propType = 'unidimensional';
this.keyframes = data.k;
this.offsetTime = elem.data.st;
this.frameId = -1;
this._caching = {lastFrame: initFrame, lastIndex: 0, value: 0, _lastKeyframeIndex: -1};
this.k = true;
this.kf = true;
this.data = data;
this.mult = mult || 1;
this.elem = elem;
this.container = container;
this.comp = elem.comp;
this.v = initFrame;
this.pv = initFrame;
this._isFirstFrame = true;
this.getValue = processEffectsSequence;
this.setVValue = setVValue;
this.interpolateValue = interpolateValue;
this.effectsSequence = [getValueAtCurrentTime.bind(this)];
this.addEffect = addEffect;
}
function KeyframedMultidimensionalProperty(elem, data, mult, container){
this.propType = 'multidimensional';
var i, len = data.k.length;
var s, e,to,ti;
for (i = 0; i < len - 1; i += 1) {
if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {
s = data.k[i].s;
e = data.k[i + 1].s;
to = data.k[i].to;
ti = data.k[i].ti;
if((s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0],s[1],e[0],e[1],s[0] + to[0],s[1] + to[1]) && bez.pointOnLine2D(s[0],s[1],e[0],e[1],e[0] + ti[0],e[1] + ti[1])) || (s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0],s[1],s[2],e[0],e[1],e[2],s[0] + to[0],s[1] + to[1],s[2] + to[2]) && bez.pointOnLine3D(s[0],s[1],s[2],e[0],e[1],e[2],e[0] + ti[0],e[1] + ti[1],e[2] + ti[2]))){
data.k[i].to = null;
data.k[i].ti = null;
}
if(s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {
if(s.length === 2 || (s[2] === e[2] && to[2] === 0 && ti[2] === 0)) {
data.k[i].to = null;
data.k[i].ti = null;
}
}
}
}
this.effectsSequence = [getValueAtCurrentTime.bind(this)];
this.keyframes = data.k;
this.offsetTime = elem.data.st;
this.k = true;
this.kf = true;
this._isFirstFrame = true;
this.mult = mult || 1;
this.elem = elem;
this.container = container;
this.comp = elem.comp;
this.getValue = processEffectsSequence;
this.setVValue = setVValue;
this.interpolateValue = interpolateValue;
this.frameId = -1;
var arrLen = data.k[0].s.length;
this.v = createTypedArray('float32', arrLen);
this.pv = createTypedArray('float32', arrLen);
for (i = 0; i < arrLen; i += 1) {
this.v[i] = initFrame;
this.pv[i] = initFrame;
}
this._caching={lastFrame:initFrame,lastIndex:0,value:createTypedArray('float32', arrLen)};
this.addEffect = addEffect;
}
function getProp(elem,data,type, mult, container) {
var p;
if(!data.k.length){
p = new ValueProperty(elem,data, mult, container);
}else if(typeof(data.k[0]) === 'number'){
p = new MultiDimensionalProperty(elem,data, mult, container);
}else{
switch(type){
case 0:
p = new KeyframedValueProperty(elem,data,mult, container);
break;
case 1:
p = new KeyframedMultidimensionalProperty(elem,data,mult, container);
break;
}
}
if(p.effectsSequence.length){
container.addDynamicProperty(p);
}
return p;
}
var ob = {
getProp: getProp
};
return ob;
}());
var TransformPropertyFactory = (function() {
var defaultVector = [0,0]
function applyToMatrix(mat) {
var _mdf = this._mdf;
this.iterateDynamicProperties();
this._mdf = this._mdf || _mdf;
if (this.a) {
mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);
}
if (this.s) {
mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);
}
if (this.sk) {
mat.skewFromAxis(-this.sk.v, this.sa.v);
}
if (this.r) {
mat.rotate(-this.r.v);
} else {
mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);
}
if (this.data.p.s) {
if (this.data.p.z) {
mat.translate(this.px.v, this.py.v, -this.pz.v);
} else {
mat.translate(this.px.v, this.py.v, 0);
}
} else {
mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);
}
}
function processKeys(forceRender){
if (this.elem.globalData.frameId === this.frameId) {
return;
}
if(this._isDirty) {
this.precalculateMatrix();
this._isDirty = false;
}
this.iterateDynamicProperties();
if (this._mdf || forceRender) {
this.v.cloneFromProps(this.pre.props);
if (this.appliedTransformations < 1) {
this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);
}
if(this.appliedTransformations < 2) {
this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);
}
if (this.sk && this.appliedTransformations < 3) {
this.v.skewFromAxis(-this.sk.v, this.sa.v);
}
if (this.r && this.appliedTransformations < 4) {
this.v.rotate(-this.r.v);
} else if (!this.r && this.appliedTransformations < 4){
this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);
}
if (this.autoOriented) {
var v1,v2, frameRate = this.elem.globalData.frameRate;
if(this.p && this.p.keyframes && this.p.getValueAtTime) {
if (this.p._caching.lastFrame+this.p.offsetTime <= this.p.keyframes[0].t) {
v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate,0);
v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);
} else if(this.p._caching.lastFrame+this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {
v1 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t / frameRate), 0);
v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);
} else {
v1 = this.p.pv;
v2 = this.p.getValueAtTime((this.p._caching.lastFrame+this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);
}
} else if(this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {
v1 = [];
v2 = [];
var px = this.px, py = this.py, frameRate;
if (px._caching.lastFrame+px.offsetTime <= px.keyframes[0].t) {
v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate,0);
v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate,0);
v2[0] = px.getValueAtTime((px.keyframes[0].t) / frameRate,0);
v2[1] = py.getValueAtTime((py.keyframes[0].t) / frameRate,0);
} else if(px._caching.lastFrame+px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {
v1[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t / frameRate),0);
v1[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t / frameRate),0);
v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate,0);
v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate,0);
} else {
v1 = [px.pv, py.pv];
v2[0] = px.getValueAtTime((px._caching.lastFrame+px.offsetTime - 0.01) / frameRate,px.offsetTime);
v2[1] = py.getValueAtTime((py._caching.lastFrame+py.offsetTime - 0.01) / frameRate,py.offsetTime);
}
} else {
v1 = v2 = defaultVector
}
this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));
}
if(this.data.p && this.data.p.s){
if(this.data.p.z) {
this.v.translate(this.px.v, this.py.v, -this.pz.v);
} else {
this.v.translate(this.px.v, this.py.v, 0);
}
}else{
this.v.translate(this.p.v[0],this.p.v[1],-this.p.v[2]);
}
}
this.frameId = this.elem.globalData.frameId;
}
function precalculateMatrix() {
if(!this.a.k) {
this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);
this.appliedTransformations = 1;
} else {
return;
}
if(!this.s.effectsSequence.length) {
this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);
this.appliedTransformations = 2;
} else {
return;
}
if(this.sk) {
if(!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {
this.pre.skewFromAxis(-this.sk.v, this.sa.v);
this.appliedTransformations = 3;
} else {
return;
}
}
if (this.r) {
if(!this.r.effectsSequence.length) {
this.pre.rotate(-this.r.v);
this.appliedTransformations = 4;
} else {
return;
}
} else if(!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {
this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);
this.appliedTransformations = 4;
}
}
function autoOrient(){
//
//var prevP = this.getValueAtTime();
}
function addDynamicProperty(prop) {
this._addDynamicProperty(prop);
this.elem.addDynamicProperty(prop);
this._isDirty = true;
}
function TransformProperty(elem,data,container){
this.elem = elem;
this.frameId = -1;
this.propType = 'transform';
this.data = data;
this.v = new Matrix();
//Precalculated matrix with non animated properties
this.pre = new Matrix();
this.appliedTransformations = 0;
this.initDynamicPropertyContainer(container || elem);
if(data.p && data.p.s){
this.px = PropertyFactory.getProp(elem,data.p.x,0,0,this);
this.py = PropertyFactory.getProp(elem,data.p.y,0,0,this);
if(data.p.z){
this.pz = PropertyFactory.getProp(elem,data.p.z,0,0,this);
}
}else{
this.p = PropertyFactory.getProp(elem,data.p || {k:[0,0,0]},1,0,this);
}
if(data.rx) {
this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);
this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);
this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);
if(data.or.k[0].ti) {
var i, len = data.or.k.length;
for(i=0;i<len;i+=1) {
data.or.k[i].to = data.or.k[i].ti = null;
}
}
this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this);
//sh Indicates it needs to be capped between -180 and 180
this.or.sh = true;
} else {
this.r = PropertyFactory.getProp(elem, data.r || {k: 0}, 0, degToRads, this);
}
if(data.sk){
this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);
this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);
}
this.a = PropertyFactory.getProp(elem,data.a || {k:[0,0,0]},1,0,this);
this.s = PropertyFactory.getProp(elem,data.s || {k:[100,100,100]},1,0.01,this);
// Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.
if(data.o){
this.o = PropertyFactory.getProp(elem,data.o,0,0.01,elem);
} else {
this.o = {_mdf:false,v:1};
}
this._isDirty = true;
if(!this.dynamicProperties.length){
this.getValue(true);
}
}
TransformProperty.prototype = {
applyToMatrix: applyToMatrix,
getValue: processKeys,
precalculateMatrix: precalculateMatrix,
autoOrient: autoOrient
}
extendPrototype([DynamicPropertyContainer], TransformProperty);
TransformProperty.prototype.addDynamicProperty = addDynamicProperty;
TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;
function getTransformProperty(elem,data,container){
return new TransformProperty(elem,data,container);
}
return {
getTransformProperty: getTransformProperty
};
}());
function ShapePath(){
this.c = false;
this._length = 0;
this._maxLength = 8;
this.v = createSizedArray(this._maxLength);
this.o = createSizedArray(this._maxLength);
this.i = createSizedArray(this._maxLength);
}
ShapePath.prototype.setPathData = function(closed, len) {
this.c = closed;
this.setLength(len);
var i = 0;
while(i < len){
this.v[i] = point_pool.newElement();
this.o[i] = point_pool.newElement();
this.i[i] = point_pool.newElement();
i += 1;
}
};
ShapePath.prototype.setLength = function(len) {
while(this._maxLength < len) {
this.doubleArrayLength();
}
this._length = len;
};
ShapePath.prototype.doubleArrayLength = function() {
this.v = this.v.concat(createSizedArray(this._maxLength));
this.i = this.i.concat(createSizedArray(this._maxLength));
this.o = this.o.concat(createSizedArray(this._maxLength));
this._maxLength *= 2;
};
ShapePath.prototype.setXYAt = function(x, y, type, pos, replace) {
var arr;
this._length = Math.max(this._length, pos + 1);
if(this._length >= this._maxLength) {
this.doubleArrayLength();
}
switch(type){
case 'v':
arr = this.v;
break;
case 'i':
arr = this.i;
break;
case 'o':
arr = this.o;
break;
}
if(!arr[pos] || (arr[pos] && !replace)){
arr[pos] = point_pool.newElement();
}
arr[pos][0] = x;
arr[pos][1] = y;
};
ShapePath.prototype.setTripleAt = function(vX,vY,oX,oY,iX,iY,pos, replace) {
this.setXYAt(vX,vY,'v',pos, replace);
this.setXYAt(oX,oY,'o',pos, replace);
this.setXYAt(iX,iY,'i',pos, replace);
};
ShapePath.prototype.reverse = function() {
var newPath = new ShapePath();
newPath.setPathData(this.c, this._length);
var vertices = this.v, outPoints = this.o, inPoints = this.i;
var init = 0;
if (this.c) {
newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);
init = 1;
}
var cnt = this._length - 1;
var len = this._length;
var i;
for (i = init; i < len; i += 1) {
newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);
cnt -= 1;
}
return newPath;
};
var ShapePropertyFactory = (function(){
var initFrame = -999999;
function interpolateShape(frameNum, previousValue, caching) {
var iterationIndex = caching.lastIndex;
var keyPropS,keyPropE,isHold, j, k, jLen, kLen, perc, vertexValue;
var kf = this.keyframes;
if(frameNum < kf[0].t-this.offsetTime){
keyPropS = kf[0].s[0];
isHold = true;
iterationIndex = 0;
}else if(frameNum >= kf[kf.length - 1].t-this.offsetTime){
keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];
/*if(kf[kf.length - 1].s){
keyPropS = kf[kf.length - 1].s[0];
}else{
keyPropS = kf[kf.length - 2].e[0];
}*/
isHold = true;
}else{
var i = iterationIndex;
var len = kf.length- 1,flag = true,keyData,nextKeyData;
while(flag){
keyData = kf[i];
nextKeyData = kf[i+1];
if((nextKeyData.t - this.offsetTime) > frameNum){
break;
}
if(i < len - 1){
i += 1;
}else{
flag = false;
}
}
isHold = keyData.h === 1;
iterationIndex = i;
if(!isHold){
if(frameNum >= nextKeyData.t-this.offsetTime){
perc = 1;
}else if(frameNum < keyData.t-this.offsetTime){
perc = 0;
}else{
var fnc;
if(keyData.__fnct){
fnc = keyData.__fnct;
}else{
fnc = BezierFactory.getBezierEasing(keyData.o.x,keyData.o.y,keyData.i.x,keyData.i.y).get;
keyData.__fnct = fnc;
}
perc = fnc((frameNum-(keyData.t-this.offsetTime))/((nextKeyData.t-this.offsetTime)-(keyData.t-this.offsetTime)));
}
keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];
}
keyPropS = keyData.s[0];
}
jLen = previousValue._length;
kLen = keyPropS.i[0].length;
caching.lastIndex = iterationIndex;
for(j=0;j<jLen;j+=1){
for(k=0;k<kLen;k+=1){
vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k]+(keyPropE.i[j][k]-keyPropS.i[j][k])*perc;
previousValue.i[j][k] = vertexValue;
vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k]+(keyPropE.o[j][k]-keyPropS.o[j][k])*perc;
previousValue.o[j][k] = vertexValue;
vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k]+(keyPropE.v[j][k]-keyPropS.v[j][k])*perc;
previousValue.v[j][k] = vertexValue;
}
}
}
function interpolateShapeCurrentTime(){
var frameNum = this.comp.renderedFrame - this.offsetTime;
var initTime = this.keyframes[0].t - this.offsetTime;
var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;
var lastFrame = this._caching.lastFrame;
if(!(lastFrame !== initFrame && ((lastFrame < initTime && frameNum < initTime) || (lastFrame > endTime && frameNum > endTime)))){
////
this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;
this.interpolateShape(frameNum, this.pv, this._caching);
////
}
this._caching.lastFrame = frameNum;
return this.pv;
}
function resetShape(){
this.paths = this.localShapeCollection;
}
function shapesEqual(shape1, shape2) {
if(shape1._length !== shape2._length || shape1.c !== shape2.c){
return false;
}
var i, len = shape1._length;
for(i = 0; i < len; i += 1) {
if(shape1.v[i][0] !== shape2.v[i][0]
|| shape1.v[i][1] !== shape2.v[i][1]
|| shape1.o[i][0] !== shape2.o[i][0]
|| shape1.o[i][1] !== shape2.o[i][1]
|| shape1.i[i][0] !== shape2.i[i][0]
|| shape1.i[i][1] !== shape2.i[i][1]) {
return false;
}
}
return true;
}
function setVValue(newPath) {
if(!shapesEqual(this.v, newPath)) {
this.v = shape_pool.clone(newPath);
this.localShapeCollection.releaseShapes();
this.localShapeCollection.addShape(this.v);
this._mdf = true;
this.paths = this.localShapeCollection;
}
}
function processEffectsSequence() {
if (this.elem.globalData.frameId === this.frameId) {
return;
} else if (!this.effectsSequence.length) {
this._mdf = false;
return;
}
if (this.lock) {
this.setVValue(this.pv);
return;
}
this.lock = true;
this._mdf = false;
var finalValue = this.kf ? this.pv : this.data.ks ? this.data.ks.k : this.data.pt.k;
var i, len = this.effectsSequence.length;
for(i = 0; i < len; i += 1) {
finalValue = this.effectsSequence[i](finalValue);
}
this.setVValue(finalValue);
this.lock = false;
this.frameId = this.elem.globalData.frameId;
};
function ShapeProperty(elem, data, type){
this.propType = 'shape';
this.comp = elem.comp;
this.container = elem;
this.elem = elem;
this.data = data;
this.k = false;
this.kf = false;
this._mdf = false;
var pathData = type === 3 ? data.pt.k : data.ks.k;
this.v = shape_pool.clone(pathData);
this.pv = shape_pool.clone(this.v);
this.localShapeCollection = shapeCollection_pool.newShapeCollection();
this.paths = this.localShapeCollection;
this.paths.addShape(this.v);
this.reset = resetShape;
this.effectsSequence = [];
}
function addEffect(effectFunction) {
this.effectsSequence.push(effectFunction);
this.container.addDynamicProperty(this);
}
ShapeProperty.prototype.interpolateShape = interpolateShape;
ShapeProperty.prototype.getValue = processEffectsSequence;
ShapeProperty.prototype.setVValue = setVValue;
ShapeProperty.prototype.addEffect = addEffect;
function KeyframedShapeProperty(elem,data,type){
this.propType = 'shape';
this.comp = elem.comp;
this.elem = elem;
this.container = elem;
this.offsetTime = elem.data.st;
this.keyframes = type === 3 ? data.pt.k : data.ks.k;
this.k = true;
this.kf = true;
var i, len = this.keyframes[0].s[0].i.length;
var jLen = this.keyframes[0].s[0].i[0].length;
this.v = shape_pool.newElement();
this.v.setPathData(this.keyframes[0].s[0].c, len);
this.pv = shape_pool.clone(this.v);
this.localShapeCollection = shapeCollection_pool.newShapeCollection();
this.paths = this.localShapeCollection;
this.paths.addShape(this.v);
this.lastFrame = initFrame;
this.reset = resetShape;
this._caching = {lastFrame: initFrame, lastIndex: 0};
this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];
}
KeyframedShapeProperty.prototype.getValue = processEffectsSequence;
KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;
KeyframedShapeProperty.prototype.setVValue = setVValue;
KeyframedShapeProperty.prototype.addEffect = addEffect;
var EllShapeProperty = (function(){
var cPoint = roundCorner;
function EllShapeProperty(elem,data) {
/*this.v = {
v: createSizedArray(4),
i: createSizedArray(4),
o: createSizedArray(4),
c: true
};*/
this.v = shape_pool.newElement();
this.v.setPathData(true, 4);
this.localShapeCollection = shapeCollection_pool.newShapeCollection();
this.paths = this.localShapeCollection;
this.localShapeCollection.addShape(this.v);
this.d = data.d;
this.elem = elem;
this.comp = elem.comp;
this.frameId = -1;
this.initDynamicPropertyContainer(elem);
this.p = PropertyFactory.getProp(elem,data.p,1,0,this);
this.s = PropertyFactory.getProp(elem,data.s,1,0,this);
if(this.dynamicProperties.length){
this.k = true;
}else{
this.k = false;
this.convertEllToPath();
}
};
EllShapeProperty.prototype = {
reset: resetShape,
getValue: function (){
if(this.elem.globalData.frameId === this.frameId){
return;
}
this.frameId = this.elem.globalData.frameId;
this.iterateDynamicProperties();
if(this._mdf){
this.convertEllToPath();
}
},
convertEllToPath: function() {
var p0 = this.p.v[0], p1 = this.p.v[1], s0 = this.s.v[0]/2, s1 = this.s.v[1]/2;
var _cw = this.d !== 3;
var _v = this.v;
_v.v[0][0] = p0;
_v.v[0][1] = p1 - s1;
_v.v[1][0] = _cw ? p0 + s0 : p0 - s0;
_v.v[1][1] = p1;
_v.v[2][0] = p0;
_v.v[2][1] = p1 + s1;
_v.v[3][0] = _cw ? p0 - s0 : p0 + s0;
_v.v[3][1] = p1;
_v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;
_v.i[0][1] = p1 - s1;
_v.i[1][0] = _cw ? p0 + s0 : p0 - s0;
_v.i[1][1] = p1 - s1 * cPoint;
_v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;
_v.i[2][1] = p1 + s1;
_v.i[3][0] = _cw ? p0 - s0 : p0 + s0;
_v.i[3][1] = p1 + s1 * cPoint;
_v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;
_v.o[0][1] = p1 - s1;
_v.o[1][0] = _cw ? p0 + s0 : p0 - s0;
_v.o[1][1] = p1 + s1 * cPoint;
_v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;
_v.o[2][1] = p1 + s1;
_v.o[3][0] = _cw ? p0 - s0 : p0 + s0;
_v.o[3][1] = p1 - s1 * cPoint;
}
}
extendPrototype([DynamicPropertyContainer], EllShapeProperty);
return EllShapeProperty;
}());
var StarShapeProperty = (function() {
function StarShapeProperty(elem,data) {
this.v = shape_pool.newElement();
this.v.setPathData(true, 0);
this.elem = elem;
this.comp = elem.comp;
this.data = data;
this.frameId = -1;
this.d = data.d;
this.initDynamicPropertyContainer(elem);
if(data.sy === 1){
this.ir = PropertyFactory.getProp(elem,data.ir,0,0,this);
this.is = PropertyFactory.getProp(elem,data.is,0,0.01,this);
this.convertToPath = this.convertStarToPath;
} else {
this.convertToPath = this.convertPolygonToPath;
}
this.pt = PropertyFactory.getProp(elem,data.pt,0,0,this);
this.p = PropertyFactory.getProp(elem,data.p,1,0,this);
this.r = PropertyFactory.getProp(elem,data.r,0,degToRads,this);
this.or = PropertyFactory.getProp(elem,data.or,0,0,this);
this.os = PropertyFactory.getProp(elem,data.os,0,0.01,this);
this.localShapeCollection = shapeCollection_pool.newShapeCollection();
this.localShapeCollection.addShape(this.v);
this.paths = this.localShapeCollection;
if(this.dynamicProperties.length){
this.k = true;
}else{
this.k = false;
this.convertToPath();
}
};
StarShapeProperty.prototype = {
reset: resetShape,
getValue: function() {
if(this.elem.globalData.frameId === this.frameId){
return;
}
this.frameId = this.elem.globalData.frameId;
this.iterateDynamicProperties();
if(this._mdf){
this.convertToPath();
}
},
convertStarToPath: function() {
var numPts = Math.floor(this.pt.v)*2;
var angle = Math.PI*2/numPts;
/*this.v.v.length = numPts;
this.v.i.length = numPts;
this.v.o.length = numPts;*/
var longFlag = true;
var longRad = this.or.v;
var shortRad = this.ir.v;
var longRound = this.os.v;
var shortRound = this.is.v;
var longPerimSegment = 2*Math.PI*longRad/(numPts*2);
var shortPerimSegment = 2*Math.PI*shortRad/(numPts*2);
var i, rad,roundness,perimSegment, currentAng = -Math.PI/ 2;
currentAng += this.r.v;
var dir = this.data.d === 3 ? -1 : 1;
this.v._length = 0;
for(i=0;i<numPts;i+=1){
rad = longFlag ? longRad : shortRad;
roundness = longFlag ? longRound : shortRound;
perimSegment = longFlag ? longPerimSegment : shortPerimSegment;
var x = rad * Math.cos(currentAng);
var y = rad * Math.sin(currentAng);
var ox = x === 0 && y === 0 ? 0 : y/Math.sqrt(x*x + y*y);
var oy = x === 0 && y === 0 ? 0 : -x/Math.sqrt(x*x + y*y);
x += + this.p.v[0];
y += + this.p.v[1];
this.v.setTripleAt(x,y,x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir,x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir, i, true);
/*this.v.v[i] = [x,y];
this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];
this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];
this.v._length = numPts;*/
longFlag = !longFlag;
currentAng += angle*dir;
}
},
convertPolygonToPath: function() {
var numPts = Math.floor(this.pt.v);
var angle = Math.PI*2/numPts;
var rad = this.or.v;
var roundness = this.os.v;
var perimSegment = 2*Math.PI*rad/(numPts*4);
var i, currentAng = -Math.PI/ 2;
var dir = this.data.d === 3 ? -1 : 1;
currentAng += this.r.v;
this.v._length = 0;
for(i=0;i<numPts;i+=1){
var x = rad * Math.cos(currentAng);
var y = rad * Math.sin(currentAng);
var ox = x === 0 && y === 0 ? 0 : y/Math.sqrt(x*x + y*y);
var oy = x === 0 && y === 0 ? 0 : -x/Math.sqrt(x*x + y*y);
x += + this.p.v[0];
y += + this.p.v[1];
this.v.setTripleAt(x,y,x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir,x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir, i, true);
currentAng += angle*dir;
}
this.paths.length = 0;
this.paths[0] = this.v;
}
}
extendPrototype([DynamicPropertyContainer], StarShapeProperty);
return StarShapeProperty;
}());
var RectShapeProperty = (function() {
function RectShapeProperty(elem,data) {
this.v = shape_pool.newElement();
this.v.c = true;
this.localShapeCollection = shapeCollection_pool.newShapeCollection();
this.localShapeCollection.addShape(this.v);
this.paths = this.localShapeCollection;
this.elem = elem;
this.comp = elem.comp;
this.frameId = -1;
this.d = data.d;
this.initDynamicPropertyContainer(elem);
this.p = PropertyFactory.getProp(elem,data.p,1,0,this);
this.s = PropertyFactory.getProp(elem,data.s,1,0,this);
this.r = PropertyFactory.getProp(elem,data.r,0,0,this);
if(this.dynamicProperties.length){
this.k = true;
}else{
this.k = false;
this.convertRectToPath();
}
};
RectShapeProperty.prototype = {
convertRectToPath: function (){
var p0 = this.p.v[0], p1 = this.p.v[1], v0 = this.s.v[0]/2, v1 = this.s.v[1]/2;
var round = bm_min(v0,v1,this.r.v);
var cPoint = round*(1-roundCorner);
this.v._length = 0;
if(this.d === 2 || this.d === 1) {
this.v.setTripleAt(p0+v0, p1-v1+round,p0+v0, p1-v1+round,p0+v0,p1-v1+cPoint,0, true);
this.v.setTripleAt(p0+v0, p1+v1-round,p0+v0, p1+v1-cPoint,p0+v0, p1+v1-round,1, true);
if(round!== 0){
this.v.setTripleAt(p0+v0-round, p1+v1,p0+v0-round,p1+v1,p0+v0-cPoint,p1+v1,2, true);
this.v.setTripleAt(p0-v0+round,p1+v1,p0-v0+cPoint,p1+v1,p0-v0+round,p1+v1,3, true);
this.v.setTripleAt(p0-v0,p1+v1-round,p0-v0,p1+v1-round,p0-v0,p1+v1-cPoint,4, true);
this.v.setTripleAt(p0-v0,p1-v1+round,p0-v0,p1-v1+cPoint,p0-v0,p1-v1+round,5, true);
this.v.setTripleAt(p0-v0+round,p1-v1,p0-v0+round,p1-v1,p0-v0+cPoint,p1-v1,6, true);
this.v.setTripleAt(p0+v0-round,p1-v1,p0+v0-cPoint,p1-v1,p0+v0-round,p1-v1,7, true);
} else {
this.v.setTripleAt(p0-v0,p1+v1,p0-v0+cPoint,p1+v1,p0-v0,p1+v1,2);
this.v.setTripleAt(p0-v0,p1-v1,p0-v0,p1-v1+cPoint,p0-v0,p1-v1,3);
}
}else{
this.v.setTripleAt(p0+v0,p1-v1+round,p0+v0,p1-v1+cPoint,p0+v0,p1-v1+round,0, true);
if(round!== 0){
this.v.setTripleAt(p0+v0-round,p1-v1,p0+v0-round,p1-v1,p0+v0-cPoint,p1-v1,1, true);
this.v.setTripleAt(p0-v0+round,p1-v1,p0-v0+cPoint,p1-v1,p0-v0+round,p1-v1,2, true);
this.v.setTripleAt(p0-v0,p1-v1+round,p0-v0,p1-v1+round,p0-v0,p1-v1+cPoint,3, true);
this.v.setTripleAt(p0-v0,p1+v1-round,p0-v0,p1+v1-cPoint,p0-v0,p1+v1-round,4, true);
this.v.setTripleAt(p0-v0+round,p1+v1,p0-v0+round,p1+v1,p0-v0+cPoint,p1+v1,5, true);
this.v.setTripleAt(p0+v0-round,p1+v1,p0+v0-cPoint,p1+v1,p0+v0-round,p1+v1,6, true);
this.v.setTripleAt(p0+v0,p1+v1-round,p0+v0,p1+v1-round,p0+v0,p1+v1-cPoint,7, true);
} else {
this.v.setTripleAt(p0-v0,p1-v1,p0-v0+cPoint,p1-v1,p0-v0,p1-v1,1, true);
this.v.setTripleAt(p0-v0,p1+v1,p0-v0,p1+v1-cPoint,p0-v0,p1+v1,2, true);
this.v.setTripleAt(p0+v0,p1+v1,p0+v0-cPoint,p1+v1,p0+v0,p1+v1,3, true);
}
}
},
getValue: function(frameNum){
if(this.elem.globalData.frameId === this.frameId){
return;
}
this.frameId = this.elem.globalData.frameId;
this.iterateDynamicProperties();
if(this._mdf){
this.convertRectToPath();
}
},
reset: resetShape
}
extendPrototype([DynamicPropertyContainer], RectShapeProperty);
return RectShapeProperty;
}());
function getShapeProp(elem,data,type){
var prop;
if(type === 3 || type === 4){
var dataProp = type === 3 ? data.pt : data.ks;
var keys = dataProp.k;
if(keys.length){
prop = new KeyframedShapeProperty(elem, data, type);
}else{
prop = new ShapeProperty(elem, data, type);
}
}else if(type === 5){
prop = new RectShapeProperty(elem, data);
}else if(type === 6){
prop = new EllShapeProperty(elem, data);
}else if(type === 7){
prop = new StarShapeProperty(elem, data);
}
if(prop.k){
elem.addDynamicProperty(prop);
}
return prop;
}
function getConstructorFunction() {
return ShapeProperty;
}
function getKeyframedConstructorFunction() {
return KeyframedShapeProperty;
}
var ob = {};
ob.getShapeProp = getShapeProp;
ob.getConstructorFunction = getConstructorFunction;
ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;
return ob;
}());
var ShapeModifiers = (function(){
var ob = {};
var modifiers = {};
ob.registerModifier = registerModifier;
ob.getModifier = getModifier;
function registerModifier(nm,factory){
if(!modifiers[nm]){
modifiers[nm] = factory;
}
}
function getModifier(nm,elem, data){
return new modifiers[nm](elem, data);
}
return ob;
}());
function ShapeModifier(){}
ShapeModifier.prototype.initModifierProperties = function(){};
ShapeModifier.prototype.addShapeToModifier = function(){};
ShapeModifier.prototype.addShape = function(data){
if (!this.closed) {
// Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.
data.sh.container.addDynamicProperty(data.sh);
var shapeData = {shape:data.sh, data: data, localShapeCollection:shapeCollection_pool.newShapeCollection()};
this.shapes.push(shapeData);
this.addShapeToModifier(shapeData);
if (this._isAnimated) {
data.setAsAnimated();
}
}
};
ShapeModifier.prototype.init = function(elem,data){
this.shapes = [];
this.elem = elem;
this.initDynamicPropertyContainer(elem);
this.initModifierProperties(elem,data);
this.frameId = initialDefaultFrame;
this.closed = false;
this.k = false;
if(this.dynamicProperties.length){
this.k = true;
}else{
this.getValue(true);
}
};
ShapeModifier.prototype.processKeys = function(){
if(this.elem.globalData.frameId === this.frameId){
return;
}
this.frameId = this.elem.globalData.frameId;
this.iterateDynamicProperties();
};
extendPrototype([DynamicPropertyContainer], ShapeModifier);
function TrimModifier(){
}
extendPrototype([ShapeModifier], TrimModifier);
TrimModifier.prototype.initModifierProperties = function(elem, data) {
this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);
this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);
this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);
this.sValue = 0;
this.eValue = 0;
this.getValue = this.processKeys;
this.m = data.m;
this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;
};
TrimModifier.prototype.addShapeToModifier = function(shapeData){
shapeData.pathsData = [];
};
TrimModifier.prototype.calculateShapeEdges = function(s, e, shapeLength, addedLength, totalModifierLength) {
var segments = [];
if (e <= 1) {
segments.push({
s: s,
e: e
});
} else if (s >= 1) {
segments.push({
s: s - 1,
e: e - 1
});
} else {
segments.push({
s: s,
e: 1
});
segments.push({
s: 0,
e: e - 1
});
}
var shapeSegments = [];
var i, len = segments.length, segmentOb;
for (i = 0; i < len; i += 1) {
segmentOb = segments[i];
if (segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength) {
} else {
var shapeS, shapeE;
if (segmentOb.s * totalModifierLength <= addedLength) {
shapeS = 0;
} else {
shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;
}
if(segmentOb.e * totalModifierLength >= addedLength + shapeLength) {
shapeE = 1;
} else {
shapeE = ((segmentOb.e * totalModifierLength - addedLength) / shapeLength);
}
shapeSegments.push([shapeS, shapeE]);
}
}
if (!shapeSegments.length) {
shapeSegments.push([0, 0]);
}
return shapeSegments;
};
TrimModifier.prototype.releasePathsData = function(pathsData) {
var i, len = pathsData.length;
for (i = 0; i < len; i += 1) {
segments_length_pool.release(pathsData[i]);
}
pathsData.length = 0;
return pathsData;
};
TrimModifier.prototype.processShapes = function(_isFirstFrame) {
var s, e;
if (this._mdf || _isFirstFrame) {
var o = (this.o.v % 360) / 360;
if (o < 0) {
o += 1;
}
s = (this.s.v > 1 ? 1 : this.s.v < 0 ? 0 : this.s.v) + o;
e = (this.e.v > 1 ? 1 : this.e.v < 0 ? 0 : this.e.v) + o;
if (s === e) {
}
if (s > e) {
var _s = s;
s = e;
e = _s;
}
s = Math.round(s * 10000) * 0.0001;
e = Math.round(e * 10000) * 0.0001;
this.sValue = s;
this.eValue = e;
} else {
s = this.sValue;
e = this.eValue;
}
var shapePaths;
var i, len = this.shapes.length, j, jLen;
var pathsData, pathData, totalShapeLength, totalModifierLength = 0;
if (e === s) {
for (i = 0; i < len; i += 1) {
this.shapes[i].localShapeCollection.releaseShapes();
this.shapes[i].shape._mdf = true;
this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;
}
} else if (!((e === 1 && s === 0) || (e===0 && s === 1))){
var segments = [], shapeData, localShapeCollection;
for (i = 0; i < len; i += 1) {
shapeData = this.shapes[i];
// if shape hasn't changed and trim properties haven't changed, cached previous path can be used
if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {
shapeData.shape.paths = shapeData.localShapeCollection;
} else {
shapePaths = shapeData.shape.paths;
jLen = shapePaths._length;
totalShapeLength = 0;
if (!shapeData.shape._mdf && shapeData.pathsData.length) {
totalShapeLength = shapeData.totalShapeLength;
} else {
pathsData = this.releasePathsData(shapeData.pathsData);
for (j = 0; j < jLen; j += 1) {
pathData = bez.getSegmentsLength(shapePaths.shapes[j]);
pathsData.push(pathData);
totalShapeLength += pathData.totalLength;
}
shapeData.totalShapeLength = totalShapeLength;
shapeData.pathsData = pathsData;
}
totalModifierLength += totalShapeLength;
shapeData.shape._mdf = true;
}
}
var shapeS = s, shapeE = e, addedLength = 0, edges;
for (i = len - 1; i >= 0; i -= 1) {
shapeData = this.shapes[i];
if (shapeData.shape._mdf) {
localShapeCollection = shapeData.localShapeCollection;
localShapeCollection.releaseShapes();
//if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group
if (this.m === 2 && len > 1) {
edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);
addedLength += shapeData.totalShapeLength;
} else {
edges = [[shapeS, shapeE]];
}
jLen = edges.length;
for (j = 0; j < jLen; j += 1) {
shapeS = edges[j][0];
shapeE = edges[j][1];
segments.length = 0;
if (shapeE <= 1) {
segments.push({
s:shapeData.totalShapeLength * shapeS,
e:shapeData.totalShapeLength * shapeE
});
} else if (shapeS >= 1) {
segments.push({
s:shapeData.totalShapeLength * (shapeS - 1),
e:shapeData.totalShapeLength * (shapeE - 1)
});
} else {
segments.push({
s:shapeData.totalShapeLength * shapeS,
e:shapeData.totalShapeLength
});
segments.push({
s:0,
e:shapeData.totalShapeLength * (shapeE - 1)
});
}
var newShapesData = this.addShapes(shapeData,segments[0]);
if (segments[0].s !== segments[0].e) {
if (segments.length > 1) {
var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];
if (lastShapeInCollection.c) {
var lastShape = newShapesData.pop();
this.addPaths(newShapesData, localShapeCollection);
newShapesData = this.addShapes(shapeData, segments[1], lastShape);
} else {
this.addPaths(newShapesData, localShapeCollection);
newShapesData = this.addShapes(shapeData, segments[1]);
}
}
this.addPaths(newShapesData, localShapeCollection);
}
}
shapeData.shape.paths = localShapeCollection;
}
}
} else if (this._mdf) {
for (i = 0; i < len; i += 1) {
//Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.
//Don't remove this even if it's losing cached info.
this.shapes[i].pathsData.length = 0;
this.shapes[i].shape._mdf = true;
}
}
};
TrimModifier.prototype.addPaths = function(newPaths, localShapeCollection) {
var i, len = newPaths.length;
for (i = 0; i < len; i += 1) {
localShapeCollection.addShape(newPaths[i]);
}
};
TrimModifier.prototype.addSegment = function(pt1, pt2, pt3, pt4, shapePath, pos, newShape) {
shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);
shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);
if(newShape){
shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);
}
shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);
};
TrimModifier.prototype.addSegmentFromArray = function(points, shapePath, pos, newShape) {
shapePath.setXYAt(points[1], points[5], 'o', pos);
shapePath.setXYAt(points[2], points[6], 'i', pos + 1);
if(newShape){
shapePath.setXYAt(points[0], points[4], 'v', pos);
}
shapePath.setXYAt(points[3], points[7], 'v', pos + 1);
};
TrimModifier.prototype.addShapes = function(shapeData, shapeSegment, shapePath) {
var pathsData = shapeData.pathsData;
var shapePaths = shapeData.shape.paths.shapes;
var i, len = shapeData.shape.paths._length, j, jLen;
var addedLength = 0;
var currentLengthData,segmentCount;
var lengths;
var segment;
var shapes = [];
var initPos;
var newShape = true;
if (!shapePath) {
shapePath = shape_pool.newElement();
segmentCount = 0;
initPos = 0;
} else {
segmentCount = shapePath._length;
initPos = shapePath._length;
}
shapes.push(shapePath);
for (i = 0; i < len; i += 1) {
lengths = pathsData[i].lengths;
shapePath.c = shapePaths[i].c;
jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;
for (j = 1; j < jLen; j +=1) {
currentLengthData = lengths[j-1];
if (addedLength + currentLengthData.addedLength < shapeSegment.s) {
addedLength += currentLengthData.addedLength;
shapePath.c = false;
} else if(addedLength > shapeSegment.e) {
shapePath.c = false;
break;
} else {
if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {
this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);
newShape = false;
} else {
segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength)/currentLengthData.addedLength,(shapeSegment.e - addedLength)/currentLengthData.addedLength, lengths[j-1]);
this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);
// this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);
newShape = false;
shapePath.c = false;
}
addedLength += currentLengthData.addedLength;
segmentCount += 1;
}
}
if (shapePaths[i].c && lengths.length) {
currentLengthData = lengths[j - 1];
if (addedLength <= shapeSegment.e) {
var segmentLength = lengths[j - 1].addedLength;
if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {
this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);
newShape = false;
} else {
segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);
this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);
// this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);
newShape = false;
shapePath.c = false;
}
} else {
shapePath.c = false;
}
addedLength += currentLengthData.addedLength;
segmentCount += 1;
}
if (shapePath._length) {
shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);
shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1],'o', shapePath._length - 1);
}
if (addedLength > shapeSegment.e) {
break;
}
if (i < len - 1) {
shapePath = shape_pool.newElement();
newShape = true;
shapes.push(shapePath);
segmentCount = 0;
}
}
return shapes;
};
ShapeModifiers.registerModifier('tm', TrimModifier);
function RoundCornersModifier(){}
extendPrototype([ShapeModifier],RoundCornersModifier);
RoundCornersModifier.prototype.initModifierProperties = function(elem,data){
this.getValue = this.processKeys;
this.rd = PropertyFactory.getProp(elem,data.r,0,null,this);
this._isAnimated = !!this.rd.effectsSequence.length;
};
RoundCornersModifier.prototype.processPath = function(path, round){
var cloned_path = shape_pool.newElement();
cloned_path.c = path.c;
var i, len = path._length;
var currentV,currentI,currentO,closerV, newV,newO,newI,distance,newPosPerc,index = 0;
var vX,vY,oX,oY,iX,iY;
for(i=0;i<len;i+=1){
currentV = path.v[i];
currentO = path.o[i];
currentI = path.i[i];
if(currentV[0]===currentO[0] && currentV[1]===currentO[1] && currentV[0]===currentI[0] && currentV[1]===currentI[1]){
if((i===0 || i === len - 1) && !path.c){
cloned_path.setTripleAt(currentV[0],currentV[1],currentO[0],currentO[1],currentI[0],currentI[1],index);
/*cloned_path.v[index] = currentV;
cloned_path.o[index] = currentO;
cloned_path.i[index] = currentI;*/
index += 1;
} else {
if(i===0){
closerV = path.v[len-1];
} else {
closerV = path.v[i-1];
}
distance = Math.sqrt(Math.pow(currentV[0]-closerV[0],2)+Math.pow(currentV[1]-closerV[1],2));
newPosPerc = distance ? Math.min(distance/2,round)/distance : 0;
vX = iX = currentV[0]+(closerV[0]-currentV[0])*newPosPerc;
vY = iY = currentV[1]-(currentV[1]-closerV[1])*newPosPerc;
oX = vX-(vX-currentV[0])*roundCorner;
oY = vY-(vY-currentV[1])*roundCorner;
cloned_path.setTripleAt(vX,vY,oX,oY,iX,iY,index);
index += 1;
if(i === len - 1){
closerV = path.v[0];
} else {
closerV = path.v[i+1];
}
distance = Math.sqrt(Math.pow(currentV[0]-closerV[0],2)+Math.pow(currentV[1]-closerV[1],2));
newPosPerc = distance ? Math.min(distance/2,round)/distance : 0;
vX = oX = currentV[0]+(closerV[0]-currentV[0])*newPosPerc;
vY = oY = currentV[1]+(closerV[1]-currentV[1])*newPosPerc;
iX = vX-(vX-currentV[0])*roundCorner;
iY = vY-(vY-currentV[1])*roundCorner;
cloned_path.setTripleAt(vX,vY,oX,oY,iX,iY,index);
index += 1;
}
} else {
cloned_path.setTripleAt(path.v[i][0],path.v[i][1],path.o[i][0],path.o[i][1],path.i[i][0],path.i[i][1],index);
index += 1;
}
}
return cloned_path;
};
RoundCornersModifier.prototype.processShapes = function(_isFirstFrame){
var shapePaths;
var i, len = this.shapes.length;
var j, jLen;
var rd = this.rd.v;
if(rd !== 0){
var shapeData, newPaths, localShapeCollection;
for(i=0;i<len;i+=1){
shapeData = this.shapes[i];
newPaths = shapeData.shape.paths;
localShapeCollection = shapeData.localShapeCollection;
if(!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)){
localShapeCollection.releaseShapes();
shapeData.shape._mdf = true;
shapePaths = shapeData.shape.paths.shapes;
jLen = shapeData.shape.paths._length;
for(j=0;j<jLen;j+=1){
localShapeCollection.addShape(this.processPath(shapePaths[j],rd));
}
}
shapeData.shape.paths = shapeData.localShapeCollection;
}
}
if(!this.dynamicProperties.length){
this._mdf = false;
}
};
ShapeModifiers.registerModifier('rd',RoundCornersModifier);
function RepeaterModifier(){}
extendPrototype([ShapeModifier], RepeaterModifier);
RepeaterModifier.prototype.initModifierProperties = function(elem,data){
this.getValue = this.processKeys;
this.c = PropertyFactory.getProp(elem,data.c,0,null,this);
this.o = PropertyFactory.getProp(elem,data.o,0,null,this);
this.tr = TransformPropertyFactory.getTransformProperty(elem,data.tr,this);
this.so = PropertyFactory.getProp(elem,data.tr.so,0,0.01,this);
this.eo = PropertyFactory.getProp(elem,data.tr.eo,0,0.01,this);
this.data = data;
if(!this.dynamicProperties.length){
this.getValue(true);
}
this._isAnimated = !!this.dynamicProperties.length;
this.pMatrix = new Matrix();
this.rMatrix = new Matrix();
this.sMatrix = new Matrix();
this.tMatrix = new Matrix();
this.matrix = new Matrix();
};
RepeaterModifier.prototype.applyTransforms = function(pMatrix, rMatrix, sMatrix, transform, perc, inv){
var dir = inv ? -1 : 1;
var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);
var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);
pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);
rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);
rMatrix.rotate(-transform.r.v * dir * perc);
rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);
sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);
sMatrix.scale(inv ? 1/scaleX : scaleX, inv ? 1/scaleY : scaleY);
sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);
};
RepeaterModifier.prototype.init = function(elem, arr, pos, elemsData) {
this.elem = elem;
this.arr = arr;
this.pos = pos;
this.elemsData = elemsData;
this._currentCopies = 0;
this._elements = [];
this._groups = [];
this.frameId = -1;
this.initDynamicPropertyContainer(elem);
this.initModifierProperties(elem,arr[pos]);
var cont = 0;
while(pos>0){
pos -= 1;
//this._elements.unshift(arr.splice(pos,1)[0]);
this._elements.unshift(arr[pos]);
cont += 1;
}
if(this.dynamicProperties.length){
this.k = true;
}else{
this.getValue(true);
}
};
RepeaterModifier.prototype.resetElements = function(elements){
var i, len = elements.length;
for(i = 0; i < len; i += 1) {
elements[i]._processed = false;
if(elements[i].ty === 'gr'){
this.resetElements(elements[i].it);
}
}
};
RepeaterModifier.prototype.cloneElements = function(elements){
var i, len = elements.length;
var newElements = JSON.parse(JSON.stringify(elements));
this.resetElements(newElements);
return newElements;
};
RepeaterModifier.prototype.changeGroupRender = function(elements, renderFlag) {
var i, len = elements.length;
for(i = 0; i < len; i += 1) {
elements[i]._render = renderFlag;
if(elements[i].ty === 'gr') {
this.changeGroupRender(elements[i].it, renderFlag);
}
}
};
RepeaterModifier.prototype.processShapes = function(_isFirstFrame) {
var items, itemsTransform, i, dir, cont;
if(this._mdf || _isFirstFrame){
var copies = Math.ceil(this.c.v);
if(this._groups.length < copies){
while(this._groups.length < copies){
var group = {
it:this.cloneElements(this._elements),
ty:'gr'
};
group.it.push({"a":{"a":0,"ix":1,"k":[0,0]},"nm":"Transform","o":{"a":0,"ix":7,"k":100},"p":{"a":0,"ix":2,"k":[0,0]},"r":{"a":1,"ix":6,"k":[{s:0,e:0,t:0},{s:0,e:0,t:1}]},"s":{"a":0,"ix":3,"k":[100,100]},"sa":{"a":0,"ix":5,"k":0},"sk":{"a":0,"ix":4,"k":0},"ty":"tr"});
this.arr.splice(0,0,group);
this._groups.splice(0,0,group);
this._currentCopies += 1;
}
this.elem.reloadShapes();
}
cont = 0;
var renderFlag;
for(i = 0; i <= this._groups.length - 1; i += 1){
renderFlag = cont < copies;
this._groups[i]._render = renderFlag;
this.changeGroupRender(this._groups[i].it, renderFlag);
cont += 1;
}
this._currentCopies = copies;
////
var offset = this.o.v;
var offsetModulo = offset%1;
var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);
var k;
var tMat = this.tr.v.props;
var pProps = this.pMatrix.props;
var rProps = this.rMatrix.props;
var sProps = this.sMatrix.props;
this.pMatrix.reset();
this.rMatrix.reset();
this.sMatrix.reset();
this.tMatrix.reset();
this.matrix.reset();
var iteration = 0;
if(offset > 0) {
while(iteration<roundOffset){
this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);
iteration += 1;
}
if(offsetModulo){
this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);
iteration += offsetModulo;
}
} else if(offset < 0) {
while(iteration>roundOffset){
this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);
iteration -= 1;
}
if(offsetModulo){
this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, - offsetModulo, true);
iteration -= offsetModulo;
}
}
i = this.data.m === 1 ? 0 : this._currentCopies - 1;
dir = this.data.m === 1 ? 1 : -1;
cont = this._currentCopies;
var j, jLen;
while(cont){
items = this.elemsData[i].it;
itemsTransform = items[items.length - 1].transform.mProps.v.props;
jLen = itemsTransform.length;
items[items.length - 1].transform.mProps._mdf = true;
items[items.length - 1].transform.op._mdf = true;
items[items.length - 1].transform.op.v = this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));
if(iteration !== 0){
if((i !== 0 && dir === 1) || (i !== this._currentCopies - 1 && dir === -1)){
this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);
}
this.matrix.transform(rProps[0],rProps[1],rProps[2],rProps[3],rProps[4],rProps[5],rProps[6],rProps[7],rProps[8],rProps[9],rProps[10],rProps[11],rProps[12],rProps[13],rProps[14],rProps[15]);
this.matrix.transform(sProps[0],sProps[1],sProps[2],sProps[3],sProps[4],sProps[5],sProps[6],sProps[7],sProps[8],sProps[9],sProps[10],sProps[11],sProps[12],sProps[13],sProps[14],sProps[15]);
this.matrix.transform(pProps[0],pProps[1],pProps[2],pProps[3],pProps[4],pProps[5],pProps[6],pProps[7],pProps[8],pProps[9],pProps[10],pProps[11],pProps[12],pProps[13],pProps[14],pProps[15]);
for(j=0;j<jLen;j+=1) {
itemsTransform[j] = this.matrix.props[j];
}
this.matrix.reset();
} else {
this.matrix.reset();
for(j=0;j<jLen;j+=1) {
itemsTransform[j] = this.matrix.props[j];
}
}
iteration += 1;
cont -= 1;
i += dir;
}
} else {
cont = this._currentCopies;
i = 0;
dir = 1;
while(cont){
items = this.elemsData[i].it;
itemsTransform = items[items.length - 1].transform.mProps.v.props;
items[items.length - 1].transform.mProps._mdf = false;
items[items.length - 1].transform.op._mdf = false;
cont -= 1;
i += dir;
}
}
};
RepeaterModifier.prototype.addShape = function(){};
ShapeModifiers.registerModifier('rp',RepeaterModifier);
function ShapeCollection(){
this._length = 0;
this._maxLength = 4;
this.shapes = createSizedArray(this._maxLength);
}
ShapeCollection.prototype.addShape = function(shapeData){
if(this._length === this._maxLength){
this.shapes = this.shapes.concat(createSizedArray(this._maxLength));
this._maxLength *= 2;
}
this.shapes[this._length] = shapeData;
this._length += 1;
};
ShapeCollection.prototype.releaseShapes = function(){
var i;
for(i = 0; i < this._length; i += 1) {
shape_pool.release(this.shapes[i]);
}
this._length = 0;
};
function DashProperty(elem, data, renderer, container) {
this.elem = elem;
this.frameId = -1;
this.dataProps = createSizedArray(data.length);
this.renderer = renderer;
this.k = false;
this.dashStr = '';
this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);
this.dashoffset = createTypedArray('float32', 1);
this.initDynamicPropertyContainer(container);
var i, len = data.length || 0, prop;
for(i = 0; i < len; i += 1) {
prop = PropertyFactory.getProp(elem,data[i].v,0, 0, this);
this.k = prop.k || this.k;
this.dataProps[i] = {n:data[i].n,p:prop};
}
if(!this.k){
this.getValue(true);
}
this._isAnimated = this.k;
}
DashProperty.prototype.getValue = function(forceRender) {
if(this.elem.globalData.frameId === this.frameId && !forceRender){
return;
}
this.frameId = this.elem.globalData.frameId;
this.iterateDynamicProperties();
this._mdf = this._mdf || forceRender;
if (this._mdf) {
var i = 0, len = this.dataProps.length;
if(this.renderer === 'svg') {
this.dashStr = '';
}
for(i=0;i<len;i+=1){
if(this.dataProps[i].n != 'o'){
if(this.renderer === 'svg') {
this.dashStr += ' ' + this.dataProps[i].p.v;
}else{
this.dashArray[i] = this.dataProps[i].p.v;
}
}else{
this.dashoffset[0] = this.dataProps[i].p.v;
}
}
}
};
extendPrototype([DynamicPropertyContainer], DashProperty);
function GradientProperty(elem,data,container){
this.data = data;
this.c = createTypedArray('uint8c', data.p*4);
var cLength = data.k.k[0].s ? (data.k.k[0].s.length - data.p*4) : data.k.k.length - data.p*4;
this.o = createTypedArray('float32', cLength);
this._cmdf = false;
this._omdf = false;
this._collapsable = this.checkCollapsable();
this._hasOpacity = cLength;
this.initDynamicPropertyContainer(container);
this.prop = PropertyFactory.getProp(elem,data.k,1,null,this);
this.k = this.prop.k;
this.getValue(true);
}
GradientProperty.prototype.comparePoints = function(values, points) {
var i = 0, len = this.o.length/2, diff;
while(i < len) {
diff = Math.abs(values[i*4] - values[points*4 + i*2]);
if(diff > 0.01){
return false;
}
i += 1;
}
return true;
};
GradientProperty.prototype.checkCollapsable = function() {
if (this.o.length/2 !== this.c.length/4) {
return false;
}
if (this.data.k.k[0].s) {
var i = 0, len = this.data.k.k.length;
while (i < len) {
if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {
return false;
}
i += 1;
}
} else if(!this.comparePoints(this.data.k.k, this.data.p)) {
return false;
}
return true;
};
GradientProperty.prototype.getValue = function(forceRender){
this.prop.getValue();
this._mdf = false;
this._cmdf = false;
this._omdf = false;
if(this.prop._mdf || forceRender){
var i, len = this.data.p*4;
var mult, val;
for(i=0;i<len;i+=1){
mult = i%4 === 0 ? 100 : 255;
val = Math.round(this.prop.v[i]*mult);
if(this.c[i] !== val){
this.c[i] = val;
this._cmdf = !forceRender;
}
}
if(this.o.length){
len = this.prop.v.length;
for(i=this.data.p*4;i<len;i+=1){
mult = i%2 === 0 ? 100 : 1;
val = i%2 === 0 ? Math.round(this.prop.v[i]*100):this.prop.v[i];
if(this.o[i-this.data.p*4] !== val){
this.o[i-this.data.p*4] = val;
this._omdf = !forceRender;
}
}
}
this._mdf = !forceRender;
}
};
extendPrototype([DynamicPropertyContainer], GradientProperty);
var buildShapeString = function(pathNodes, length, closed, mat) {
if(length === 0) {
return '';
}
var _o = pathNodes.o;
var _i = pathNodes.i;
var _v = pathNodes.v;
var i, shapeString = " M" + mat.applyToPointStringified(_v[0][0], _v[0][1]);
for(i = 1; i < length; i += 1) {
shapeString += " C" + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + " " + mat.applyToPointStringified(_i[i][0], _i[i][1]) + " " + mat.applyToPointStringified(_v[i][0], _v[i][1]);
}
if (closed && length) {
shapeString += " C" + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + " " + mat.applyToPointStringified(_i[0][0], _i[0][1]) + " " + mat.applyToPointStringified(_v[0][0], _v[0][1]);
shapeString += 'z';
}
return shapeString;
}
var ImagePreloader = (function(){
var proxyImage = (function(){
var canvas = createTag('canvas');
canvas.width = 1;
canvas.height = 1;
var ctx = canvas.getContext('2d');
ctx.fillStyle = 'rgba(0,0,0,0)';
ctx.fillRect(0, 0, 1, 1);
return canvas;
}())
function imageLoaded(){
this.loadedAssets += 1;
if(this.loadedAssets === this.totalImages){
if(this.imagesLoadedCb) {
this.imagesLoadedCb(null);
}
}
}
function getAssetsPath(assetData, assetsPath, original_path) {
var path = '';
if (assetData.e) {
path = assetData.p;
} else if(assetsPath) {
var imagePath = assetData.p;
if (imagePath.indexOf('images/') !== -1) {
imagePath = imagePath.split('/')[1];
}
path = assetsPath + imagePath;
} else {
path = original_path;
path += assetData.u ? assetData.u : '';
path += assetData.p;
}
return path;
}
function createImageData(assetData) {
var path = getAssetsPath(assetData, this.assetsPath, this.path);
var img = createTag('img');
img.crossOrigin = 'anonymous';
img.addEventListener('load', this._imageLoaded.bind(this), false);
img.addEventListener('error', function() {
ob.img = proxyImage;
this._imageLoaded();
}.bind(this), false);
img.src = path;
var ob = {
img: img,
assetData: assetData
}
return ob;
}
function loadAssets(assets, cb){
this.imagesLoadedCb = cb;
var i, len = assets.length;
for (i = 0; i < len; i += 1) {
if(!assets[i].layers){
this.totalImages += 1;
this.images.push(this._createImageData(assets[i]));
}
}
}
function setPath(path){
this.path = path || '';
}
function setAssetsPath(path){
this.assetsPath = path || '';
}
function getImage(assetData) {
var i = 0, len = this.images.length;
while (i < len) {
if (this.images[i].assetData === assetData) {
return this.images[i].img;
}
i += 1;
}
}
function destroy() {
this.imagesLoadedCb = null;
this.images.length = 0;
}
function loaded() {
return this.totalImages === this.loadedAssets;
}
return function ImagePreloader(){
this.loadAssets = loadAssets;
this.setAssetsPath = setAssetsPath;
this.setPath = setPath;
this.loaded = loaded;
this.destroy = destroy;
this.getImage = getImage;
this._createImageData = createImageData;
this._imageLoaded = imageLoaded;
this.assetsPath = '';
this.path = '';
this.totalImages = 0;
this.loadedAssets = 0;
this.imagesLoadedCb = null;
this.images = [];
};
}());
var featureSupport = (function(){
var ob = {
maskType: true
};
if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\/\d./i.test(navigator.userAgent)) {
ob.maskType = false;
}
return ob;
}());
var filtersFactory = (function(){
var ob = {};
ob.createFilter = createFilter;
ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;
function createFilter(filId){
var fil = createNS('filter');
fil.setAttribute('id',filId);
fil.setAttribute('filterUnits','objectBoundingBox');
fil.setAttribute('x','0%');
fil.setAttribute('y','0%');
fil.setAttribute('width','100%');
fil.setAttribute('height','100%');
return fil;
}
function createAlphaToLuminanceFilter(){
var feColorMatrix = createNS('feColorMatrix');
feColorMatrix.setAttribute('type','matrix');
feColorMatrix.setAttribute('color-interpolation-filters','sRGB');
feColorMatrix.setAttribute('values','0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');
return feColorMatrix;
}
return ob;
}());
var assetLoader = (function(){
function formatResponse(xhr) {
if(xhr.response && typeof xhr.response === 'object') {
return xhr.response;
} else if(xhr.response && typeof xhr.response === 'string') {
return JSON.parse(xhr.response);
} else if(xhr.responseText) {
return JSON.parse(xhr.responseText);
}
}
function loadAsset(path, callback, errorCallback) {
var response;
var xhr = new XMLHttpRequest();
xhr.open('GET', path, true);
// set responseType after calling open or IE will break.
try {
// This crashes on Android WebView prior to KitKat
xhr.responseType = "json";
} catch (err) {}
xhr.send();
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if(xhr.status == 200){
response = formatResponse(xhr);
callback(response);
}else{
try{
response = formatResponse(xhr);
callback(response);
}catch(err){
if(errorCallback) {
errorCallback(err);
}
}
}
}
};
}
return {
load: loadAsset
}
}())
function TextAnimatorProperty(textData, renderType, elem){
this._isFirstFrame = true;
this._hasMaskedPath = false;
this._frameId = -1;
this._textData = textData;
this._renderType = renderType;
this._elem = elem;
this._animatorsData = createSizedArray(this._textData.a.length);
this._pathData = {};
this._moreOptions = {
alignment: {}
};
this.renderedLetters = [];
this.lettersChangedFlag = false;
this.initDynamicPropertyContainer(elem);
}
TextAnimatorProperty.prototype.searchProperties = function(){
var i, len = this._textData.a.length, animatorProps;
var getProp = PropertyFactory.getProp;
for(i=0;i<len;i+=1){
animatorProps = this._textData.a[i];
this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);
}
if(this._textData.p && 'm' in this._textData.p){
this._pathData = {
f: getProp(this._elem,this._textData.p.f,0,0,this),
l: getProp(this._elem,this._textData.p.l,0,0,this),
r: this._textData.p.r,
m: this._elem.maskManager.getMaskProperty(this._textData.p.m)
};
this._hasMaskedPath = true;
} else {
this._hasMaskedPath = false;
}
this._moreOptions.alignment = getProp(this._elem,this._textData.m.a,1,0,this);
};
TextAnimatorProperty.prototype.getMeasures = function(documentData, lettersChangedFlag){
this.lettersChangedFlag = lettersChangedFlag;
if(!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {
return;
}
this._isFirstFrame = false;
var alignment = this._moreOptions.alignment.v;
var animators = this._animatorsData;
var textData = this._textData;
var matrixHelper = this.mHelper;
var renderType = this._renderType;
var renderedLettersCount = this.renderedLetters.length;
var data = this.data;
var xPos,yPos;
var i, len;
var letters = documentData.l, pathInfo, currentLength, currentPoint, segmentLength, flag, pointInd, segmentInd, prevPoint, points, segments, partialLength, totalLength, perc, tanAngle, mask;
if(this._hasMaskedPath) {
mask = this._pathData.m;
if(!this._pathData.n || this._pathData._mdf){
var paths = mask.v;
if(this._pathData.r){
paths = paths.reverse();
}
// TODO: release bezier data cached from previous pathInfo: this._pathData.pi
pathInfo = {
tLength: 0,
segments: []
};
len = paths._length - 1;
var bezierData;
totalLength = 0;
for (i = 0; i < len; i += 1) {
bezierData = bez.buildBezierData(paths.v[i]
, paths.v[i + 1]
, [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]]
, [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);
pathInfo.tLength += bezierData.segmentLength;
pathInfo.segments.push(bezierData);
totalLength += bezierData.segmentLength;
}
i = len;
if (mask.v.c) {
bezierData = bez.buildBezierData(paths.v[i]
, paths.v[0]
, [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]]
, [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);
pathInfo.tLength += bezierData.segmentLength;
pathInfo.segments.push(bezierData);
totalLength += bezierData.segmentLength;
}
this._pathData.pi = pathInfo;
}
pathInfo = this._pathData.pi;
currentLength = this._pathData.f.v;
segmentInd = 0;
pointInd = 1;
segmentLength = 0;
flag = true;
segments = pathInfo.segments;
if (currentLength < 0 && mask.v.c) {
if (pathInfo.tLength < Math.abs(currentLength)) {
currentLength = -Math.abs(currentLength) % pathInfo.tLength;
}
segmentInd = segments.length - 1;
points = segments[segmentInd].points;
pointInd = points.length - 1;
while (currentLength < 0) {
currentLength += points[pointInd].partialLength;
pointInd -= 1;
if (pointInd < 0) {
segmentInd -= 1;
points = segments[segmentInd].points;
pointInd = points.length - 1;
}
}
}
points = segments[segmentInd].points;
prevPoint = points[pointInd - 1];
currentPoint = points[pointInd];
partialLength = currentPoint.partialLength;
}
len = letters.length;
xPos = 0;
yPos = 0;
var yOff = documentData.finalSize * 1.2 * 0.714;
var firstLine = true;
var animatorProps, animatorSelector;
var j, jLen;
var letterValue;
jLen = animators.length;
var lastLetter;
var mult, ind = -1, offf, xPathPos, yPathPos;
var initPathPos = currentLength,initSegmentInd = segmentInd, initPointInd = pointInd, currentLine = -1;
var elemOpacity;
var sc,sw,fc,k;
var lineLength = 0;
var letterSw, letterSc, letterFc, letterM = '', letterP = this.defaultPropsArray, letterO;
//
if(documentData.j === 2 || documentData.j === 1) {
var animatorJustifyOffset = 0;
var animatorFirstCharOffset = 0;
var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;
var lastIndex = 0;
var isNewLine = true;
for (i = 0; i < len; i += 1) {
if (letters[i].n) {
if(animatorJustifyOffset) {
animatorJustifyOffset += animatorFirstCharOffset;
}
while (lastIndex < i) {
letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;
lastIndex += 1;
}
animatorJustifyOffset = 0;
isNewLine = true;
} else {
for (j = 0; j < jLen; j += 1) {
animatorProps = animators[j].a;
if (animatorProps.t.propType) {
if (isNewLine && documentData.j === 2) {
animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;
}
animatorSelector = animators[j].s;
mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);
if (mult.length) {
animatorJustifyOffset += animatorProps.t.v*mult[0] * justifyOffsetMult;
} else {
animatorJustifyOffset += animatorProps.t.v*mult * justifyOffsetMult;
}
}
}
isNewLine = false;
}
}
if(animatorJustifyOffset) {
animatorJustifyOffset += animatorFirstCharOffset;
}
while(lastIndex < i) {
letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;
lastIndex += 1;
}
}
//
for( i = 0; i < len; i += 1) {
matrixHelper.reset();
elemOpacity = 1;
if(letters[i].n) {
xPos = 0;
yPos += documentData.yOffset;
yPos += firstLine ? 1 : 0;
currentLength = initPathPos ;
firstLine = false;
lineLength = 0;
if(this._hasMaskedPath) {
segmentInd = initSegmentInd;
pointInd = initPointInd;
points = segments[segmentInd].points;
prevPoint = points[pointInd - 1];
currentPoint = points[pointInd];
partialLength = currentPoint.partialLength;
segmentLength = 0;
}
letterO = letterSw = letterFc = letterM = '';
letterP = this.defaultPropsArray;
}else{
if(this._hasMaskedPath) {
if(currentLine !== letters[i].line){
switch(documentData.j){
case 1:
currentLength += totalLength - documentData.lineWidths[letters[i].line];
break;
case 2:
currentLength += (totalLength - documentData.lineWidths[letters[i].line])/2;
break;
}
currentLine = letters[i].line;
}
if (ind !== letters[i].ind) {
if (letters[ind]) {
currentLength += letters[ind].extra;
}
currentLength += letters[i].an / 2;
ind = letters[i].ind;
}
currentLength += alignment[0] * letters[i].an / 200;
var animatorOffset = 0;
for (j = 0; j < jLen; j += 1) {
animatorProps = animators[j].a;
if (animatorProps.p.propType) {
animatorSelector = animators[j].s;
mult = animatorSelector.getMult(letters[i].anIndexes[j],textData.a[j].s.totalChars);
if(mult.length){
animatorOffset += animatorProps.p.v[0] * mult[0];
} else{
animatorOffset += animatorProps.p.v[0] * mult;
}
}
if (animatorProps.a.propType) {
animatorSelector = animators[j].s;
mult = animatorSelector.getMult(letters[i].anIndexes[j],textData.a[j].s.totalChars);
if(mult.length){
animatorOffset += animatorProps.a.v[0] * mult[0];
} else{
animatorOffset += animatorProps.a.v[0] * mult;
}
}
}
flag = true;
while (flag) {
if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {
perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;
xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;
yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;
matrixHelper.translate(-alignment[0]*letters[i].an/200, -(alignment[1] * yOff / 100));
flag = false;
} else if (points) {
segmentLength += currentPoint.partialLength;
pointInd += 1;
if (pointInd >= points.length) {
pointInd = 0;
segmentInd += 1;
if (!segments[segmentInd]) {
if (mask.v.c) {
pointInd = 0;
segmentInd = 0;
points = segments[segmentInd].points;
} else {
segmentLength -= currentPoint.partialLength;
points = null;
}
} else {
points = segments[segmentInd].points;
}
}
if (points) {
prevPoint = currentPoint;
currentPoint = points[pointInd];
partialLength = currentPoint.partialLength;
}
}
}
offf = letters[i].an / 2 - letters[i].add;
matrixHelper.translate(-offf, 0, 0);
} else {
offf = letters[i].an/2 - letters[i].add;
matrixHelper.translate(-offf,0,0);
// Grouping alignment
matrixHelper.translate(-alignment[0]*letters[i].an/200, -alignment[1]*yOff/100, 0);
}
lineLength += letters[i].l/2;
for(j=0;j<jLen;j+=1){
animatorProps = animators[j].a;
if (animatorProps.t.propType) {
animatorSelector = animators[j].s;
mult = animatorSelector.getMult(letters[i].anIndexes[j],textData.a[j].s.totalChars);
//This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean "isNewLine"
if(xPos !== 0 || documentData.j !== 0) {
if(this._hasMaskedPath) {
if(mult.length) {
currentLength += animatorProps.t.v*mult[0];
} else {
currentLength += animatorProps.t.v*mult;
}
}else{
if(mult.length) {
xPos += animatorProps.t.v*mult[0];
} else {
xPos += animatorProps.t.v*mult;
}
}
}
}
}
lineLength += letters[i].l/2;
if(documentData.strokeWidthAnim) {
sw = documentData.sw || 0;
}
if(documentData.strokeColorAnim) {
if(documentData.sc){
sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];
}else{
sc = [0,0,0];
}
}
if(documentData.fillColorAnim && documentData.fc) {
fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];
}
for(j=0;j<jLen;j+=1){
animatorProps = animators[j].a;
if (animatorProps.a.propType) {
animatorSelector = animators[j].s;
mult = animatorSelector.getMult(letters[i].anIndexes[j],textData.a[j].s.totalChars);
if(mult.length){
matrixHelper.translate(-animatorProps.a.v[0]*mult[0], -animatorProps.a.v[1]*mult[1], animatorProps.a.v[2]*mult[2]);
} else {
matrixHelper.translate(-animatorProps.a.v[0]*mult, -animatorProps.a.v[1]*mult, animatorProps.a.v[2]*mult);
}
}
}
for(j=0;j<jLen;j+=1){
animatorProps = animators[j].a;
if (animatorProps.s.propType) {
animatorSelector = animators[j].s;
mult = animatorSelector.getMult(letters[i].anIndexes[j],textData.a[j].s.totalChars);
if(mult.length){
matrixHelper.scale(1+((animatorProps.s.v[0]-1)*mult[0]),1+((animatorProps.s.v[1]-1)*mult[1]),1);
} else {
matrixHelper.scale(1+((animatorProps.s.v[0]-1)*mult),1+((animatorProps.s.v[1]-1)*mult),1);
}
}
}
for(j=0;j<jLen;j+=1) {
animatorProps = animators[j].a;
animatorSelector = animators[j].s;
mult = animatorSelector.getMult(letters[i].anIndexes[j],textData.a[j].s.totalChars);
if (animatorProps.sk.propType) {
if(mult.length) {
matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);
} else {
matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);
}
}
if (animatorProps.r.propType) {
if(mult.length) {
matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);
} else {
matrixHelper.rotateZ(-animatorProps.r.v * mult);
}
}
if (animatorProps.ry.propType) {
if(mult.length) {
matrixHelper.rotateY(animatorProps.ry.v*mult[1]);
}else{
matrixHelper.rotateY(animatorProps.ry.v*mult);
}
}
if (animatorProps.rx.propType) {
if(mult.length) {
matrixHelper.rotateX(animatorProps.rx.v*mult[0]);
} else {
matrixHelper.rotateX(animatorProps.rx.v*mult);
}
}
if (animatorProps.o.propType) {
if(mult.length) {
elemOpacity += ((animatorProps.o.v)*mult[0] - elemOpacity)*mult[0];
} else {
elemOpacity += ((animatorProps.o.v)*mult - elemOpacity)*mult;
}
}
if (documentData.strokeWidthAnim && animatorProps.sw.propType) {
if(mult.length) {
sw += animatorProps.sw.v*mult[0];
} else {
sw += animatorProps.sw.v*mult;
}
}
if (documentData.strokeColorAnim && animatorProps.sc.propType) {
for(k=0;k<3;k+=1){
if(mult.length) {
sc[k] = sc[k] + (animatorProps.sc.v[k] - sc[k])*mult[0];
} else {
sc[k] = sc[k] + (animatorProps.sc.v[k] - sc[k])*mult;
}
}
}
if (documentData.fillColorAnim && documentData.fc) {
if(animatorProps.fc.propType){
for(k=0;k<3;k+=1){
if(mult.length) {
fc[k] = fc[k] + (animatorProps.fc.v[k] - fc[k])*mult[0];
} else {
fc[k] = fc[k] + (animatorProps.fc.v[k] - fc[k])*mult;
}
}
}
if(animatorProps.fh.propType){
if(mult.length) {
fc = addHueToRGB(fc,animatorProps.fh.v*mult[0]);
} else {
fc = addHueToRGB(fc,animatorProps.fh.v*mult);
}
}
if(animatorProps.fs.propType){
if(mult.length) {
fc = addSaturationToRGB(fc,animatorProps.fs.v*mult[0]);
} else {
fc = addSaturationToRGB(fc,animatorProps.fs.v*mult);
}
}
if(animatorProps.fb.propType){
if(mult.length) {
fc = addBrightnessToRGB(fc,animatorProps.fb.v*mult[0]);
} else {
fc = addBrightnessToRGB(fc,animatorProps.fb.v*mult);
}
}
}
}
for(j=0;j<jLen;j+=1){
animatorProps = animators[j].a;
if (animatorProps.p.propType) {
animatorSelector = animators[j].s;
mult = animatorSelector.getMult(letters[i].anIndexes[j],textData.a[j].s.totalChars);
if(this._hasMaskedPath) {
if(mult.length) {
matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);
} else {
matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);
}
}else{
if(mult.length) {
matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);
} else {
matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);
}
}
}
}
if(documentData.strokeWidthAnim){
letterSw = sw < 0 ? 0 : sw;
}
if(documentData.strokeColorAnim){
letterSc = 'rgb('+Math.round(sc[0]*255)+','+Math.round(sc[1]*255)+','+Math.round(sc[2]*255)+')';
}
if(documentData.fillColorAnim && documentData.fc){
letterFc = 'rgb('+Math.round(fc[0]*255)+','+Math.round(fc[1]*255)+','+Math.round(fc[2]*255)+')';
}
if(this._hasMaskedPath) {
matrixHelper.translate(0,-documentData.ls);
matrixHelper.translate(0, alignment[1]*yOff/100 + yPos,0);
if (textData.p.p) {
tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);
var rot = Math.atan(tanAngle) * 180 / Math.PI;
if (currentPoint.point[0] < prevPoint.point[0]) {
rot += 180;
}
matrixHelper.rotate(-rot * Math.PI / 180);
}
matrixHelper.translate(xPathPos, yPathPos, 0);
currentLength -= alignment[0]*letters[i].an/200;
if(letters[i+1] && ind !== letters[i+1].ind){
currentLength += letters[i].an / 2;
currentLength += documentData.tr/1000*documentData.finalSize;
}
}else{
matrixHelper.translate(xPos,yPos,0);
if(documentData.ps){
//matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);
matrixHelper.translate(documentData.ps[0],documentData.ps[1] + documentData.ascent,0);
}
switch(documentData.j){
case 1:
matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]),0,0);
break;
case 2:
matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line])/2,0,0);
break;
}
matrixHelper.translate(0,-documentData.ls);
matrixHelper.translate(offf,0,0);
matrixHelper.translate(alignment[0]*letters[i].an/200,alignment[1]*yOff/100,0);
xPos += letters[i].l + documentData.tr/1000*documentData.finalSize;
}
if(renderType === 'html'){
letterM = matrixHelper.toCSS();
}else if(renderType === 'svg'){
letterM = matrixHelper.to2dCSS();
}else{
letterP = [matrixHelper.props[0],matrixHelper.props[1],matrixHelper.props[2],matrixHelper.props[3],matrixHelper.props[4],matrixHelper.props[5],matrixHelper.props[6],matrixHelper.props[7],matrixHelper.props[8],matrixHelper.props[9],matrixHelper.props[10],matrixHelper.props[11],matrixHelper.props[12],matrixHelper.props[13],matrixHelper.props[14],matrixHelper.props[15]];
}
letterO = elemOpacity;
}
if(renderedLettersCount <= i) {
letterValue = new LetterProps(letterO,letterSw,letterSc,letterFc,letterM,letterP);
this.renderedLetters.push(letterValue);
renderedLettersCount += 1;
this.lettersChangedFlag = true;
} else {
letterValue = this.renderedLetters[i];
this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;
}
}
};
TextAnimatorProperty.prototype.getValue = function(){
if(this._elem.globalData.frameId === this._frameId){
return;
}
this._frameId = this._elem.globalData.frameId;
this.iterateDynamicProperties();
};
TextAnimatorProperty.prototype.mHelper = new Matrix();
TextAnimatorProperty.prototype.defaultPropsArray = [];
extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);
function TextAnimatorDataProperty(elem, animatorProps, container) {
var defaultData = {propType:false};
var getProp = PropertyFactory.getProp;
var textAnimator_animatables = animatorProps.a;
this.a = {
r: textAnimator_animatables.r ? getProp(elem, textAnimator_animatables.r, 0, degToRads, container) : defaultData,
rx: textAnimator_animatables.rx ? getProp(elem, textAnimator_animatables.rx, 0, degToRads, container) : defaultData,
ry: textAnimator_animatables.ry ? getProp(elem, textAnimator_animatables.ry, 0, degToRads, container) : defaultData,
sk: textAnimator_animatables.sk ? getProp(elem, textAnimator_animatables.sk, 0, degToRads, container) : defaultData,
sa: textAnimator_animatables.sa ? getProp(elem, textAnimator_animatables.sa, 0, degToRads, container) : defaultData,
s: textAnimator_animatables.s ? getProp(elem, textAnimator_animatables.s, 1, 0.01, container) : defaultData,
a: textAnimator_animatables.a ? getProp(elem, textAnimator_animatables.a, 1, 0, container) : defaultData,
o: textAnimator_animatables.o ? getProp(elem, textAnimator_animatables.o, 0, 0.01, container) : defaultData,
p: textAnimator_animatables.p ? getProp(elem,textAnimator_animatables.p, 1, 0, container) : defaultData,
sw: textAnimator_animatables.sw ? getProp(elem, textAnimator_animatables.sw, 0, 0, container) : defaultData,
sc: textAnimator_animatables.sc ? getProp(elem, textAnimator_animatables.sc, 1, 0, container) : defaultData,
fc: textAnimator_animatables.fc ? getProp(elem, textAnimator_animatables.fc, 1, 0, container) : defaultData,
fh: textAnimator_animatables.fh ? getProp(elem, textAnimator_animatables.fh, 0, 0, container) : defaultData,
fs: textAnimator_animatables.fs ? getProp(elem, textAnimator_animatables.fs, 0, 0.01, container) : defaultData,
fb: textAnimator_animatables.fb ? getProp(elem, textAnimator_animatables.fb, 0, 0.01, container) : defaultData,
t: textAnimator_animatables.t ? getProp(elem, textAnimator_animatables.t, 0, 0, container) : defaultData
};
this.s = TextSelectorProp.getTextSelectorProp(elem,animatorProps.s, container);
this.s.t = animatorProps.s.t;
}
function LetterProps(o, sw, sc, fc, m, p){
this.o = o;
this.sw = sw;
this.sc = sc;
this.fc = fc;
this.m = m;
this.p = p;
this._mdf = {
o: true,
sw: !!sw,
sc: !!sc,
fc: !!fc,
m: true,
p: true
};
}
LetterProps.prototype.update = function(o, sw, sc, fc, m, p) {
this._mdf.o = false;
this._mdf.sw = false;
this._mdf.sc = false;
this._mdf.fc = false;
this._mdf.m = false;
this._mdf.p = false;
var updated = false;
if(this.o !== o) {
this.o = o;
this._mdf.o = true;
updated = true;
}
if(this.sw !== sw) {
this.sw = sw;
this._mdf.sw = true;
updated = true;
}
if(this.sc !== sc) {
this.sc = sc;
this._mdf.sc = true;
updated = true;
}
if(this.fc !== fc) {
this.fc = fc;
this._mdf.fc = true;
updated = true;
}
if(this.m !== m) {
this.m = m;
this._mdf.m = true;
updated = true;
}
if(p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {
this.p = p;
this._mdf.p = true;
updated = true;
}
return updated;
};
function TextProperty(elem, data){
this._frameId = initialDefaultFrame;
this.pv = '';
this.v = '';
this.kf = false;
this._isFirstFrame = true;
this._mdf = false;
this.data = data;
this.elem = elem;
this.comp = this.elem.comp;
this.keysIndex = 0;
this.canResize = false;
this.minimumFontSize = 1;
this.effectsSequence = [];
this.currentData = {
ascent: 0,
boxWidth: this.defaultBoxWidth,
f: '',
fStyle: '',
fWeight: '',
fc: '',
j: '',
justifyOffset: '',
l: [],
lh: 0,
lineWidths: [],
ls: '',
of: '',
s: '',
sc: '',
sw: 0,
t: 0,
tr: 0,
sz:0,
ps:null,
fillColorAnim: false,
strokeColorAnim: false,
strokeWidthAnim: false,
yOffset: 0,
finalSize:0,
finalText:[],
finalLineHeight: 0,
__complete: false
};
this.copyData(this.currentData, this.data.d.k[0].s);
if(!this.searchProperty()) {
this.completeTextData(this.currentData);
}
}
TextProperty.prototype.defaultBoxWidth = [0,0];
TextProperty.prototype.copyData = function(obj, data) {
for(var s in data) {
if(data.hasOwnProperty(s)) {
obj[s] = data[s];
}
}
return obj;
}
TextProperty.prototype.setCurrentData = function(data){
if(!data.__complete) {
this.completeTextData(data);
}
this.currentData = data;
this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;
this._mdf = true;
};
TextProperty.prototype.searchProperty = function() {
return this.searchKeyframes();
};
TextProperty.prototype.searchKeyframes = function() {
this.kf = this.data.d.k.length > 1;
if(this.kf) {
this.addEffect(this.getKeyframeValue.bind(this));
}
return this.kf;
}
TextProperty.prototype.addEffect = function(effectFunction) {
this.effectsSequence.push(effectFunction);
this.elem.addDynamicProperty(this);
};
TextProperty.prototype.getValue = function(_finalValue) {
if((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {
return;
}
this.currentData.t = this.data.d.k[this.keysIndex].s.t;
var currentValue = this.currentData;
var currentIndex = this.keysIndex;
if(this.lock) {
this.setCurrentData(this.currentData);
return;
}
this.lock = true;
this._mdf = false;
var multipliedValue;
var i, len = this.effectsSequence.length;
var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;
for(i = 0; i < len; i += 1) {
//Checking if index changed to prevent creating a new object every time the expression updates.
if(currentIndex !== this.keysIndex) {
finalValue = this.effectsSequence[i](finalValue, finalValue.t);
} else {
finalValue = this.effectsSequence[i](this.currentData, finalValue.t);
}
}
if(currentValue !== finalValue) {
this.setCurrentData(finalValue);
}
this.pv = this.v = this.currentData;
this.lock = false;
this.frameId = this.elem.globalData.frameId;
}
TextProperty.prototype.getKeyframeValue = function() {
var textKeys = this.data.d.k, textDocumentData;
var frameNum = this.elem.comp.renderedFrame;
var i = 0, len = textKeys.length;
while(i <= len - 1) {
textDocumentData = textKeys[i].s;
if(i === len - 1 || textKeys[i+1].t > frameNum){
break;
}
i += 1;
}
if(this.keysIndex !== i) {
this.keysIndex = i;
}
return this.data.d.k[this.keysIndex].s;
};
TextProperty.prototype.buildFinalText = function(text) {
var combinedCharacters = FontManager.getCombinedCharacterCodes();
var charactersArray = [];
var i = 0, len = text.length;
var charCode;
while (i < len) {
charCode = text.charCodeAt(i);
if (combinedCharacters.indexOf(charCode) !== -1) {
charactersArray[charactersArray.length - 1] += text.charAt(i);
} else {
if (charCode >= 0xD800 && charCode <= 0xDBFF) {
charCode = text.charCodeAt(i + 1);
if (charCode >= 0xDC00 && charCode <= 0xDFFF) {
charactersArray.push(text.substr(i, 2));
++i;
} else {
charactersArray.push(text.charAt(i));
}
} else {
charactersArray.push(text.charAt(i));
}
}
i += 1;
}
return charactersArray;
}
TextProperty.prototype.completeTextData = function(documentData) {
documentData.__complete = true;
var fontManager = this.elem.globalData.fontManager;
var data = this.data;
var letters = [];
var i, len;
var newLineFlag, index = 0, val;
var anchorGrouping = data.m.g;
var currentSize = 0, currentPos = 0, currentLine = 0, lineWidths = [];
var lineWidth = 0;
var maxLineWidth = 0;
var j, jLen;
var fontData = fontManager.getFontByName(documentData.f);
var charData, cLength = 0;
var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];
var fWeight = 'normal', fStyle = 'normal';
len = styles.length;
var styleName;
for(i=0;i<len;i+=1){
styleName = styles[i].toLowerCase();
switch(styleName) {
case 'italic':
fStyle = 'italic';
break;
case 'bold':
fWeight = '700';
break;
case 'black':
fWeight = '900';
break;
case 'medium':
fWeight = '500';
break;
case 'regular':
case 'normal':
fWeight = '400';
break;
case 'light':
case 'thin':
fWeight = '200';
break;
}
}
documentData.fWeight = fontData.fWeight || fWeight;
documentData.fStyle = fStyle;
documentData.finalSize = documentData.s;
documentData.finalText = this.buildFinalText(documentData.t);
len = documentData.finalText.length;
documentData.finalLineHeight = documentData.lh;
var trackingOffset = documentData.tr/1000*documentData.finalSize;
var charCode;
if(documentData.sz){
var flag = true;
var boxWidth = documentData.sz[0];
var boxHeight = documentData.sz[1];
var currentHeight, finalText;
while(flag) {
finalText = this.buildFinalText(documentData.t);
currentHeight = 0;
lineWidth = 0;
len = finalText.length;
trackingOffset = documentData.tr/1000*documentData.finalSize;
var lastSpaceIndex = -1;
for(i=0;i<len;i+=1){
charCode = finalText[i].charCodeAt(0);
newLineFlag = false;
if(finalText[i] === ' '){
lastSpaceIndex = i;
}else if(charCode === 13 || charCode === 3){
lineWidth = 0;
newLineFlag = true;
currentHeight += documentData.finalLineHeight || documentData.finalSize*1.2;
}
if(fontManager.chars){
charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);
cLength = newLineFlag ? 0 : charData.w*documentData.finalSize/100;
}else{
//tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;
cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);
}
if(lineWidth + cLength > boxWidth && finalText[i] !== ' '){
if(lastSpaceIndex === -1){
len += 1;
} else {
i = lastSpaceIndex;
}
currentHeight += documentData.finalLineHeight || documentData.finalSize*1.2;
finalText.splice(i, lastSpaceIndex === i ? 1 : 0,"\r");
//finalText = finalText.substr(0,i) + "\r" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);
lastSpaceIndex = -1;
lineWidth = 0;
}else {
lineWidth += cLength;
lineWidth += trackingOffset;
}
}
currentHeight += fontData.ascent*documentData.finalSize/100;
if(this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {
documentData.finalSize -= 1;
documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;
} else {
documentData.finalText = finalText;
len = documentData.finalText.length;
flag = false;
}
}
}
lineWidth = - trackingOffset;
cLength = 0;
var uncollapsedSpaces = 0;
var currentChar;
for (i = 0;i < len ;i += 1) {
newLineFlag = false;
currentChar = documentData.finalText[i];
charCode = currentChar.charCodeAt(0);
if (currentChar === ' '){
val = '\u00A0';
} else if (charCode === 13 || charCode === 3) {
uncollapsedSpaces = 0;
lineWidths.push(lineWidth);
maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;
lineWidth = - 2 * trackingOffset;
val = '';
newLineFlag = true;
currentLine += 1;
}else{
val = documentData.finalText[i];
}
if(fontManager.chars){
charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);
cLength = newLineFlag ? 0 : charData.w*documentData.finalSize/100;
}else{
//var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);
//tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;
cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);
}
//
if(currentChar === ' '){
uncollapsedSpaces += cLength + trackingOffset;
} else {
lineWidth += cLength + trackingOffset + uncollapsedSpaces;
uncollapsedSpaces = 0;
}
letters.push({l:cLength,an:cLength,add:currentSize,n:newLineFlag, anIndexes:[], val: val, line: currentLine, animatorJustifyOffset: 0});
if(anchorGrouping == 2){
currentSize += cLength;
if(val === '' || val === '\u00A0' || i === len - 1){
if(val === '' || val === '\u00A0'){
currentSize -= cLength;
}
while(currentPos<=i){
letters[currentPos].an = currentSize;
letters[currentPos].ind = index;
letters[currentPos].extra = cLength;
currentPos += 1;
}
index += 1;
currentSize = 0;
}
}else if(anchorGrouping == 3){
currentSize += cLength;
if(val === '' || i === len - 1){
if(val === ''){
currentSize -= cLength;
}
while(currentPos<=i){
letters[currentPos].an = currentSize;
letters[currentPos].ind = index;
letters[currentPos].extra = cLength;
currentPos += 1;
}
currentSize = 0;
index += 1;
}
}else{
letters[index].ind = index;
letters[index].extra = 0;
index += 1;
}
}
documentData.l = letters;
maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;
lineWidths.push(lineWidth);
if(documentData.sz){
documentData.boxWidth = documentData.sz[0];
documentData.justifyOffset = 0;
}else{
documentData.boxWidth = maxLineWidth;
switch(documentData.j){
case 1:
documentData.justifyOffset = - documentData.boxWidth;
break;
case 2:
documentData.justifyOffset = - documentData.boxWidth/2;
break;
default:
documentData.justifyOffset = 0;
}
}
documentData.lineWidths = lineWidths;
var animators = data.a, animatorData, letterData;
jLen = animators.length;
var based, ind, indexes = [];
for(j=0;j<jLen;j+=1){
animatorData = animators[j];
if(animatorData.a.sc){
documentData.strokeColorAnim = true;
}
if(animatorData.a.sw){
documentData.strokeWidthAnim = true;
}
if(animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb){
documentData.fillColorAnim = true;
}
ind = 0;
based = animatorData.s.b;
for(i=0;i<len;i+=1){
letterData = letters[i];
letterData.anIndexes[j] = ind;
if((based == 1 && letterData.val !== '') || (based == 2 && letterData.val !== '' && letterData.val !== '\u00A0') || (based == 3 && (letterData.n || letterData.val == '\u00A0' || i == len - 1)) || (based == 4 && (letterData.n || i == len - 1))){
if(animatorData.s.rn === 1){
indexes.push(ind);
}
ind += 1;
}
}
data.a[j].s.totalChars = ind;
var currentInd = -1, newInd;
if(animatorData.s.rn === 1){
for(i = 0; i < len; i += 1){
letterData = letters[i];
if(currentInd != letterData.anIndexes[j]){
currentInd = letterData.anIndexes[j];
newInd = indexes.splice(Math.floor(Math.random()*indexes.length),1)[0];
}
letterData.anIndexes[j] = newInd;
}
}
}
documentData.yOffset = documentData.finalLineHeight || documentData.finalSize*1.2;
documentData.ls = documentData.ls || 0;
documentData.ascent = fontData.ascent*documentData.finalSize/100;
};
TextProperty.prototype.updateDocumentData = function(newData, index) {
index = index === undefined ? this.keysIndex : index;
var dData = this.copyData({}, this.data.d.k[index].s);
dData = this.copyData(dData, newData);
this.data.d.k[index].s = dData;
this.recalculate(index);
this.elem.addDynamicProperty(this);
};
TextProperty.prototype.recalculate = function(index) {
var dData = this.data.d.k[index].s;
dData.__complete = false;
this.keysIndex = 0;
this._isFirstFrame = true;
this.getValue(dData);
}
TextProperty.prototype.canResizeFont = function(_canResize) {
this.canResize = _canResize;
this.recalculate(this.keysIndex);
this.elem.addDynamicProperty(this);
};
TextProperty.prototype.setMinimumFontSize = function(_fontValue) {
this.minimumFontSize = Math.floor(_fontValue) || 1;
this.recalculate(this.keysIndex);
this.elem.addDynamicProperty(this);
};
var TextSelectorProp = (function(){
var max = Math.max;
var min = Math.min;
var floor = Math.floor;
function TextSelectorProp(elem,data){
this._currentTextLength = -1;
this.k = false;
this.data = data;
this.elem = elem;
this.comp = elem.comp;
this.finalS = 0;
this.finalE = 0;
this.initDynamicPropertyContainer(elem);
this.s = PropertyFactory.getProp(elem,data.s || {k:0},0,0,this);
if('e' in data){
this.e = PropertyFactory.getProp(elem,data.e,0,0,this);
}else{
this.e = {v:100};
}
this.o = PropertyFactory.getProp(elem,data.o || {k:0},0,0,this);
this.xe = PropertyFactory.getProp(elem,data.xe || {k:0},0,0,this);
this.ne = PropertyFactory.getProp(elem,data.ne || {k:0},0,0,this);
this.a = PropertyFactory.getProp(elem,data.a,0,0.01,this);
if(!this.dynamicProperties.length){
this.getValue();
}
}
TextSelectorProp.prototype = {
getMult: function(ind) {
if(this._currentTextLength !== this.elem.textProperty.currentData.l.length) {
this.getValue();
}
//var easer = bez.getEasingCurve(this.ne.v/100,0,1-this.xe.v/100,1);
var x1 = 0;
var y1 = 0;
var x2 = 1;
var y2 = 1;
if(this.ne.v > 0) {
x1 = this.ne.v / 100.0;
}
else {
y1 = -this.ne.v / 100.0;
}
if(this.xe.v > 0) {
x2 = 1.0 - this.xe.v / 100.0;
}
else {
y2 = 1.0 + this.xe.v / 100.0;
}
var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;
var mult = 0;
var s = this.finalS;
var e = this.finalE;
var type = this.data.sh;
if (type === 2){
if (e === s) {
mult = ind >= e ? 1 : 0;
} else {
mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));
}
mult = easer(mult);
} else if(type === 3) {
if (e === s) {
mult = ind >= e ? 0 : 1;
}else{
mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s),1));
}
mult = easer(mult);
} else if (type === 4) {
if (e === s) {
mult = 0;
} else {
mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));
if (mult < 0.5) {
mult *= 2;
} else {
mult = 1 - 2 * (mult - 0.5);
}
}
mult = easer(mult);
} else if (type === 5) {
if (e === s){
mult = 0;
} else {
var tot = e - s;
/*ind += 0.5;
mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind;*/
ind = min(max(0, ind + 0.5 - s), e - s);
var x = -tot/2+ind;
var a = tot/2;
mult = Math.sqrt(1 - (x * x) / (a * a));
}
mult = easer(mult);
} else if (type === 6) {
if (e === s){
mult = 0;
} else {
ind = min(max(0, ind + 0.5 - s), e - s);
mult = (1 + (Math.cos((Math.PI + Math.PI * 2 * (ind) / (e - s))))) / 2;
}
mult = easer(mult);
} else {
if (ind >= floor(s)) {
if (ind - s < 0) {
mult = max(0, min(min(e, 1) - (s - ind), 1));
} else {
mult = max(0, min(e - ind, 1));
}
}
mult = easer(mult);
}
return mult*this.a.v;
},
getValue: function(newCharsFlag) {
this.iterateDynamicProperties();
this._mdf = newCharsFlag || this._mdf;
this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;
if(newCharsFlag && this.data.r === 2) {
this.e.v = this._currentTextLength;
}
var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;
var o = this.o.v/divisor;
var s = this.s.v/divisor + o;
var e = (this.e.v/divisor) + o;
if(s>e){
var _s = s;
s = e;
e = _s;
}
this.finalS = s;
this.finalE = e;
}
}
extendPrototype([DynamicPropertyContainer], TextSelectorProp);
function getTextSelectorProp(elem, data,arr) {
return new TextSelectorProp(elem, data, arr);
}
return {
getTextSelectorProp: getTextSelectorProp
};
}());
var pool_factory = (function() {
return function(initialLength, _create, _release, _clone) {
var _length = 0;
var _maxLength = initialLength;
var pool = createSizedArray(_maxLength);
var ob = {
newElement: newElement,
release: release
};
function newElement(){
var element;
if(_length){
_length -= 1;
element = pool[_length];
} else {
element = _create();
}
return element;
}
function release(element) {
if(_length === _maxLength) {
pool = pooling.double(pool);
_maxLength = _maxLength*2;
}
if (_release) {
_release(element);
}
pool[_length] = element;
_length += 1;
}
function clone() {
var clonedElement = newElement();
return _clone(clonedElement);
}
return ob;
};
}());
var pooling = (function(){
function double(arr){
return arr.concat(createSizedArray(arr.length));
}
return {
double: double
};
}());
var point_pool = (function(){
function create() {
return createTypedArray('float32', 2);
}
return pool_factory(8, create);
}());
var shape_pool = (function(){
function create() {
return new ShapePath();
}
function release(shapePath) {
var len = shapePath._length, i;
for(i = 0; i < len; i += 1) {
point_pool.release(shapePath.v[i]);
point_pool.release(shapePath.i[i]);
point_pool.release(shapePath.o[i]);
shapePath.v[i] = null;
shapePath.i[i] = null;
shapePath.o[i] = null;
}
shapePath._length = 0;
shapePath.c = false;
}
function clone(shape) {
var cloned = factory.newElement();
var i, len = shape._length === undefined ? shape.v.length : shape._length;
cloned.setLength(len);
cloned.c = shape.c;
var pt;
for(i = 0; i < len; i += 1) {
cloned.setTripleAt(shape.v[i][0],shape.v[i][1],shape.o[i][0],shape.o[i][1],shape.i[i][0],shape.i[i][1], i);
}
return cloned;
}
var factory = pool_factory(4, create, release);
factory.clone = clone;
return factory;
}());
var shapeCollection_pool = (function(){
var ob = {
newShapeCollection: newShapeCollection,
release: release
};
var _length = 0;
var _maxLength = 4;
var pool = createSizedArray(_maxLength);
function newShapeCollection(){
var shapeCollection;
if(_length){
_length -= 1;
shapeCollection = pool[_length];
} else {
shapeCollection = new ShapeCollection();
}
return shapeCollection;
}
function release(shapeCollection) {
var i, len = shapeCollection._length;
for(i = 0; i < len; i += 1) {
shape_pool.release(shapeCollection.shapes[i]);
}
shapeCollection._length = 0;
if(_length === _maxLength) {
pool = pooling.double(pool);
_maxLength = _maxLength*2;
}
pool[_length] = shapeCollection;
_length += 1;
}
return ob;
}());
var segments_length_pool = (function(){
function create() {
return {
lengths: [],
totalLength: 0
};
}
function release(element) {
var i, len = element.lengths.length;
for(i=0;i<len;i+=1) {
bezier_length_pool.release(element.lengths[i]);
}
element.lengths.length = 0;
}
return pool_factory(8, create, release);
}());
var bezier_length_pool = (function(){
function create() {
return {
addedLength: 0,
percents: createTypedArray('float32', defaultCurveSegments),
lengths: createTypedArray('float32', defaultCurveSegments),
};
}
return pool_factory(8, create);
}());
function BaseRenderer(){}
BaseRenderer.prototype.checkLayers = function(num){
var i, len = this.layers.length, data;
this.completeLayers = true;
for (i = len - 1; i >= 0; i--) {
if (!this.elements[i]) {
data = this.layers[i];
if(data.ip - data.st <= (num - this.layers[i].st) && data.op - data.st > (num - this.layers[i].st))
{
this.buildItem(i);
}
}
this.completeLayers = this.elements[i] ? this.completeLayers:false;
}
this.checkPendingElements();
};
BaseRenderer.prototype.createItem = function(layer){
switch(layer.ty){
case 2:
return this.createImage(layer);
case 0:
return this.createComp(layer);
case 1:
return this.createSolid(layer);
case 3:
return this.createNull(layer);
case 4:
return this.createShape(layer);
case 5:
return this.createText(layer);
case 13:
return this.createCamera(layer);
}
return this.createNull(layer);
};
BaseRenderer.prototype.createCamera = function(){
throw new Error('You\'re using a 3d camera. Try the html renderer.');
};
BaseRenderer.prototype.buildAllItems = function(){
var i, len = this.layers.length;
for(i=0;i<len;i+=1){
this.buildItem(i);
}
this.checkPendingElements();
};
BaseRenderer.prototype.includeLayers = function(newLayers){
this.completeLayers = false;
var i, len = newLayers.length;
var j, jLen = this.layers.length;
for(i=0;i<len;i+=1){
j = 0;
while(j<jLen){
if(this.layers[j].id == newLayers[i].id){
this.layers[j] = newLayers[i];
break;
}
j += 1;
}
}
};
BaseRenderer.prototype.setProjectInterface = function(pInterface){
this.globalData.projectInterface = pInterface;
};
BaseRenderer.prototype.initItems = function(){
if(!this.globalData.progressiveLoad){
this.buildAllItems();
}
};
BaseRenderer.prototype.buildElementParenting = function(element, parentName, hierarchy) {
var elements = this.elements;
var layers = this.layers;
var i=0, len = layers.length;
while (i < len) {
if (layers[i].ind == parentName) {
if (!elements[i] || elements[i] === true) {
this.buildItem(i);
this.addPendingElement(element);
} else {
hierarchy.push(elements[i]);
elements[i].setAsParent();
if(layers[i].parent !== undefined) {
this.buildElementParenting(element, layers[i].parent, hierarchy);
} else {
element.setHierarchy(hierarchy);
}
}
}
i += 1;
}
};
BaseRenderer.prototype.addPendingElement = function(element){
this.pendingElements.push(element);
};
BaseRenderer.prototype.searchExtraCompositions = function(assets){
var i, len = assets.length;
for(i=0;i<len;i+=1){
if(assets[i].xt){
var comp = this.createComp(assets[i]);
comp.initExpressions();
this.globalData.projectInterface.registerComposition(comp);
}
}
};
BaseRenderer.prototype.setupGlobalData = function(animData, fontsContainer) {
this.globalData.fontManager = new FontManager();
this.globalData.fontManager.addChars(animData.chars);
this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);
this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);
this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);
this.globalData.imageLoader = this.animationItem.imagePreloader;
this.globalData.frameId = 0;
this.globalData.frameRate = animData.fr;
this.globalData.nm = animData.nm;
this.globalData.compSize = {
w: animData.w,
h: animData.h
}
}
function SVGRenderer(animationItem, config){
this.animationItem = animationItem;
this.layers = null;
this.renderedFrame = -1;
this.svgElement = createNS('svg');
var ariaLabel = '';
if (config && config.title) {
var titleElement = createNS('title');
var titleId = createElementID();
titleElement.setAttribute('id', titleId);
titleElement.textContent = config.title;
this.svgElement.appendChild(titleElement);
ariaLabel += titleId;
}
if (config && config.description) {
var descElement = createNS('desc');
var descId = createElementID();
descElement.setAttribute('id', descId);
descElement.textContent = config.description;
this.svgElement.appendChild(descElement);
ariaLabel += ' ' + descId;
}
if (ariaLabel) {
this.svgElement.setAttribute('aria-labelledby', ariaLabel)
}
var defs = createNS( 'defs');
this.svgElement.appendChild(defs);
var maskElement = createNS('g');
this.svgElement.appendChild(maskElement);
this.layerElement = maskElement;
this.renderConfig = {
preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',
imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',
progressiveLoad: (config && config.progressiveLoad) || false,
hideOnTransparent: (config && config.hideOnTransparent === false) ? false : true,
viewBoxOnly: (config && config.viewBoxOnly) || false,
viewBoxSize: (config && config.viewBoxSize) || false,
className: (config && config.className) || '',
id: (config && config.id) || '',
focusable: config && config.focusable,
filterSize: {
width: config && config.filterSize && config.filterSize.width || '100%',
height: config && config.filterSize && config.filterSize.height || '100%',
x: config && config.filterSize && config.filterSize.x || '0%',
y: config && config.filterSize && config.filterSize.y || '0%',
}
};
this.globalData = {
_mdf: false,
frameNum: -1,
defs: defs,
renderConfig: this.renderConfig
};
this.elements = [];
this.pendingElements = [];
this.destroyed = false;
this.rendererType = 'svg';
}
extendPrototype([BaseRenderer],SVGRenderer);
SVGRenderer.prototype.createNull = function (data) {
return new NullElement(data,this.globalData,this);
};
SVGRenderer.prototype.createShape = function (data) {
return new SVGShapeElement(data,this.globalData,this);
};
SVGRenderer.prototype.createText = function (data) {
return new SVGTextElement(data,this.globalData,this);
};
SVGRenderer.prototype.createImage = function (data) {
return new IImageElement(data,this.globalData,this);
};
SVGRenderer.prototype.createComp = function (data) {
return new SVGCompElement(data,this.globalData,this);
};
SVGRenderer.prototype.createSolid = function (data) {
return new ISolidElement(data,this.globalData,this);
};
SVGRenderer.prototype.configAnimation = function(animData){
this.svgElement.setAttribute('xmlns','http://www.w3.org/2000/svg');
if(this.renderConfig.viewBoxSize) {
this.svgElement.setAttribute('viewBox',this.renderConfig.viewBoxSize);
} else {
this.svgElement.setAttribute('viewBox','0 0 '+animData.w+' '+animData.h);
}
if(!this.renderConfig.viewBoxOnly) {
this.svgElement.setAttribute('width',animData.w);
this.svgElement.setAttribute('height',animData.h);
this.svgElement.style.width = '100%';
this.svgElement.style.height = '100%';
this.svgElement.style.transform = 'translate3d(0,0,0)';
}
if (this.renderConfig.className) {
this.svgElement.setAttribute('class', this.renderConfig.className);
}
if (this.renderConfig.id) {
this.svgElement.setAttribute('id', this.renderConfig.id);
}
if (this.renderConfig.focusable !== undefined) {
this.svgElement.setAttribute('focusable', this.renderConfig.focusable);
}
this.svgElement.setAttribute('preserveAspectRatio',this.renderConfig.preserveAspectRatio);
//this.layerElement.style.transform = 'translate3d(0,0,0)';
//this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = "0px 0px 0px";
this.animationItem.wrapper.appendChild(this.svgElement);
//Mask animation
var defs = this.globalData.defs;
this.setupGlobalData(animData, defs);
this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;
this.data = animData;
var maskElement = createNS( 'clipPath');
var rect = createNS('rect');
rect.setAttribute('width',animData.w);
rect.setAttribute('height',animData.h);
rect.setAttribute('x',0);
rect.setAttribute('y',0);
var maskId = createElementID();
maskElement.setAttribute('id', maskId);
maskElement.appendChild(rect);
this.layerElement.setAttribute("clip-path", "url(" + locationHref + "#"+maskId+")");
defs.appendChild(maskElement);
this.layers = animData.layers;
this.elements = createSizedArray(animData.layers.length);
};
SVGRenderer.prototype.destroy = function () {
this.animationItem.wrapper.innerHTML = '';
this.layerElement = null;
this.globalData.defs = null;
var i, len = this.layers ? this.layers.length : 0;
for (i = 0; i < len; i++) {
if(this.elements[i]){
this.elements[i].destroy();
}
}
this.elements.length = 0;
this.destroyed = true;
this.animationItem = null;
};
SVGRenderer.prototype.updateContainerSize = function () {
};
SVGRenderer.prototype.buildItem = function(pos){
var elements = this.elements;
if(elements[pos] || this.layers[pos].ty == 99){
return;
}
elements[pos] = true;
var element = this.createItem(this.layers[pos]);
elements[pos] = element;
if(expressionsPlugin){
if(this.layers[pos].ty === 0){
this.globalData.projectInterface.registerComposition(element);
}
element.initExpressions();
}
this.appendElementInPos(element,pos);
if(this.layers[pos].tt){
if(!this.elements[pos - 1] || this.elements[pos - 1] === true){
this.buildItem(pos - 1);
this.addPendingElement(element);
} else {
element.setMatte(elements[pos - 1].layerId);
}
}
};
SVGRenderer.prototype.checkPendingElements = function(){
while(this.pendingElements.length){
var element = this.pendingElements.pop();
element.checkParenting();
if(element.data.tt){
var i = 0, len = this.elements.length;
while(i<len){
if(this.elements[i] === element){
element.setMatte(this.elements[i - 1].layerId);
break;
}
i += 1;
}
}
}
};
SVGRenderer.prototype.renderFrame = function(num){
if(this.renderedFrame === num || this.destroyed){
return;
}
if(num === null){
num = this.renderedFrame;
}else{
this.renderedFrame = num;
}
// console.log('-------');
// console.log('FRAME ',num);
this.globalData.frameNum = num;
this.globalData.frameId += 1;
this.globalData.projectInterface.currentFrame = num;
this.globalData._mdf = false;
var i, len = this.layers.length;
if(!this.completeLayers){
this.checkLayers(num);
}
for (i = len - 1; i >= 0; i--) {
if(this.completeLayers || this.elements[i]){
this.elements[i].prepareFrame(num - this.layers[i].st);
}
}
if(this.globalData._mdf) {
for (i = 0; i < len; i += 1) {
if(this.completeLayers || this.elements[i]){
this.elements[i].renderFrame();
}
}
}
};
SVGRenderer.prototype.appendElementInPos = function(element, pos){
var newElement = element.getBaseElement();
if(!newElement){
return;
}
var i = 0;
var nextElement;
while(i<pos){
if(this.elements[i] && this.elements[i]!== true && this.elements[i].getBaseElement()){
nextElement = this.elements[i].getBaseElement();
}
i += 1;
}
if(nextElement){
this.layerElement.insertBefore(newElement, nextElement);
} else {
this.layerElement.appendChild(newElement);
}
};
SVGRenderer.prototype.hide = function(){
this.layerElement.style.display = 'none';
};
SVGRenderer.prototype.show = function(){
this.layerElement.style.display = 'block';
};
function CanvasRenderer(animationItem, config){
this.animationItem = animationItem;
this.renderConfig = {
clearCanvas: (config && config.clearCanvas !== undefined) ? config.clearCanvas : true,
context: (config && config.context) || null,
progressiveLoad: (config && config.progressiveLoad) || false,
preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',
imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',
className: (config && config.className) || '',
id: (config && config.id) || '',
};
this.renderConfig.dpr = (config && config.dpr) || 1;
if (this.animationItem.wrapper) {
this.renderConfig.dpr = (config && config.dpr) || window.devicePixelRatio || 1;
}
this.renderedFrame = -1;
this.globalData = {
frameNum: -1,
_mdf: false,
renderConfig: this.renderConfig,
currentGlobalAlpha: -1
};
this.contextData = new CVContextData();
this.elements = [];
this.pendingElements = [];
this.transformMat = new Matrix();
this.completeLayers = false;
this.rendererType = 'canvas';
}
extendPrototype([BaseRenderer],CanvasRenderer);
CanvasRenderer.prototype.createShape = function (data) {
return new CVShapeElement(data, this.globalData, this);
};
CanvasRenderer.prototype.createText = function (data) {
return new CVTextElement(data, this.globalData, this);
};
CanvasRenderer.prototype.createImage = function (data) {
return new CVImageElement(data, this.globalData, this);
};
CanvasRenderer.prototype.createComp = function (data) {
return new CVCompElement(data, this.globalData, this);
};
CanvasRenderer.prototype.createSolid = function (data) {
return new CVSolidElement(data, this.globalData, this);
};
CanvasRenderer.prototype.createNull = SVGRenderer.prototype.createNull;
CanvasRenderer.prototype.ctxTransform = function(props){
if(props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0){
return;
}
if(!this.renderConfig.clearCanvas){
this.canvasContext.transform(props[0],props[1],props[4],props[5],props[12],props[13]);
return;
}
this.transformMat.cloneFromProps(props);
var cProps = this.contextData.cTr.props;
this.transformMat.transform(cProps[0],cProps[1],cProps[2],cProps[3],cProps[4],cProps[5],cProps[6],cProps[7],cProps[8],cProps[9],cProps[10],cProps[11],cProps[12],cProps[13],cProps[14],cProps[15]);
//this.contextData.cTr.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);
this.contextData.cTr.cloneFromProps(this.transformMat.props);
var trProps = this.contextData.cTr.props;
this.canvasContext.setTransform(trProps[0],trProps[1],trProps[4],trProps[5],trProps[12],trProps[13]);
};
CanvasRenderer.prototype.ctxOpacity = function(op){
/*if(op === 1){
return;
}*/
if(!this.renderConfig.clearCanvas){
this.canvasContext.globalAlpha *= op < 0 ? 0 : op;
this.globalData.currentGlobalAlpha = this.contextData.cO;
return;
}
this.contextData.cO *= op < 0 ? 0 : op;
if(this.globalData.currentGlobalAlpha !== this.contextData.cO) {
this.canvasContext.globalAlpha = this.contextData.cO;
this.globalData.currentGlobalAlpha = this.contextData.cO;
}
};
CanvasRenderer.prototype.reset = function(){
if(!this.renderConfig.clearCanvas){
this.canvasContext.restore();
return;
}
this.contextData.reset();
};
CanvasRenderer.prototype.save = function(actionFlag){
if(!this.renderConfig.clearCanvas){
this.canvasContext.save();
return;
}
if(actionFlag){
this.canvasContext.save();
}
var props = this.contextData.cTr.props;
if(this.contextData._length <= this.contextData.cArrPos) {
this.contextData.duplicate();
}
var i, arr = this.contextData.saved[this.contextData.cArrPos];
for (i = 0; i < 16; i += 1) {
arr[i] = props[i];
}
this.contextData.savedOp[this.contextData.cArrPos] = this.contextData.cO;
this.contextData.cArrPos += 1;
};
CanvasRenderer.prototype.restore = function(actionFlag){
if(!this.renderConfig.clearCanvas){
this.canvasContext.restore();
return;
}
if(actionFlag){
this.canvasContext.restore();
this.globalData.blendMode = 'source-over';
}
this.contextData.cArrPos -= 1;
var popped = this.contextData.saved[this.contextData.cArrPos];
var i,arr = this.contextData.cTr.props;
for(i=0;i<16;i+=1){
arr[i] = popped[i];
}
this.canvasContext.setTransform(popped[0],popped[1],popped[4],popped[5],popped[12],popped[13]);
popped = this.contextData.savedOp[this.contextData.cArrPos];
this.contextData.cO = popped;
if(this.globalData.currentGlobalAlpha !== popped) {
this.canvasContext.globalAlpha = popped;
this.globalData.currentGlobalAlpha = popped;
}
};
CanvasRenderer.prototype.configAnimation = function(animData){
if(this.animationItem.wrapper){
this.animationItem.container = createTag('canvas');
this.animationItem.container.style.width = '100%';
this.animationItem.container.style.height = '100%';
//this.animationItem.container.style.transform = 'translate3d(0,0,0)';
//this.animationItem.container.style.webkitTransform = 'translate3d(0,0,0)';
this.animationItem.container.style.transformOrigin = this.animationItem.container.style.mozTransformOrigin = this.animationItem.container.style.webkitTransformOrigin = this.animationItem.container.style['-webkit-transform'] = "0px 0px 0px";
this.animationItem.wrapper.appendChild(this.animationItem.container);
this.canvasContext = this.animationItem.container.getContext('2d');
if(this.renderConfig.className) {
this.animationItem.container.setAttribute('class', this.renderConfig.className);
}
if(this.renderConfig.id) {
this.animationItem.container.setAttribute('id', this.renderConfig.id);
}
}else{
this.canvasContext = this.renderConfig.context;
}
this.data = animData;
this.layers = animData.layers;
this.transformCanvas = {
w: animData.w,
h:animData.h,
sx:0,
sy:0,
tx:0,
ty:0
};
this.setupGlobalData(animData, document.body);
this.globalData.canvasContext = this.canvasContext;
this.globalData.renderer = this;
this.globalData.isDashed = false;
this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;
this.globalData.transformCanvas = this.transformCanvas;
this.elements = createSizedArray(animData.layers.length);
this.updateContainerSize();
};
CanvasRenderer.prototype.updateContainerSize = function () {
this.reset();
var elementWidth,elementHeight;
if(this.animationItem.wrapper && this.animationItem.container){
elementWidth = this.animationItem.wrapper.offsetWidth;
elementHeight = this.animationItem.wrapper.offsetHeight;
this.animationItem.container.setAttribute('width',elementWidth * this.renderConfig.dpr );
this.animationItem.container.setAttribute('height',elementHeight * this.renderConfig.dpr);
}else{
elementWidth = this.canvasContext.canvas.width * this.renderConfig.dpr;
elementHeight = this.canvasContext.canvas.height * this.renderConfig.dpr;
}
var elementRel,animationRel;
if(this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1){
var par = this.renderConfig.preserveAspectRatio.split(' ');
var fillType = par[1] || 'meet';
var pos = par[0] || 'xMidYMid';
var xPos = pos.substr(0,4);
var yPos = pos.substr(4);
elementRel = elementWidth/elementHeight;
animationRel = this.transformCanvas.w/this.transformCanvas.h;
if(animationRel>elementRel && fillType === 'meet' || animationRel<elementRel && fillType === 'slice'){
this.transformCanvas.sx = elementWidth/(this.transformCanvas.w/this.renderConfig.dpr);
this.transformCanvas.sy = elementWidth/(this.transformCanvas.w/this.renderConfig.dpr);
}else{
this.transformCanvas.sx = elementHeight/(this.transformCanvas.h / this.renderConfig.dpr);
this.transformCanvas.sy = elementHeight/(this.transformCanvas.h / this.renderConfig.dpr);
}
if(xPos === 'xMid' && ((animationRel<elementRel && fillType==='meet') || (animationRel>elementRel && fillType === 'slice'))){
this.transformCanvas.tx = (elementWidth-this.transformCanvas.w*(elementHeight/this.transformCanvas.h))/2*this.renderConfig.dpr;
} else if(xPos === 'xMax' && ((animationRel<elementRel && fillType==='meet') || (animationRel>elementRel && fillType === 'slice'))){
this.transformCanvas.tx = (elementWidth-this.transformCanvas.w*(elementHeight/this.transformCanvas.h))*this.renderConfig.dpr;
} else {
this.transformCanvas.tx = 0;
}
if(yPos === 'YMid' && ((animationRel>elementRel && fillType==='meet') || (animationRel<elementRel && fillType === 'slice'))){
this.transformCanvas.ty = ((elementHeight-this.transformCanvas.h*(elementWidth/this.transformCanvas.w))/2)*this.renderConfig.dpr;
} else if(yPos === 'YMax' && ((animationRel>elementRel && fillType==='meet') || (animationRel<elementRel && fillType === 'slice'))){
this.transformCanvas.ty = ((elementHeight-this.transformCanvas.h*(elementWidth/this.transformCanvas.w)))*this.renderConfig.dpr;
} else {
this.transformCanvas.ty = 0;
}
}else if(this.renderConfig.preserveAspectRatio == 'none'){
this.transformCanvas.sx = elementWidth/(this.transformCanvas.w/this.renderConfig.dpr);
this.transformCanvas.sy = elementHeight/(this.transformCanvas.h/this.renderConfig.dpr);
this.transformCanvas.tx = 0;
this.transformCanvas.ty = 0;
}else{
this.transformCanvas.sx = this.renderConfig.dpr;
this.transformCanvas.sy = this.renderConfig.dpr;
this.transformCanvas.tx = 0;
this.transformCanvas.ty = 0;
}
this.transformCanvas.props = [this.transformCanvas.sx,0,0,0,0,this.transformCanvas.sy,0,0,0,0,1,0,this.transformCanvas.tx,this.transformCanvas.ty,0,1];
/*var i, len = this.elements.length;
for(i=0;i<len;i+=1){
if(this.elements[i] && this.elements[i].data.ty === 0){
this.elements[i].resize(this.globalData.transformCanvas);
}
}*/
this.ctxTransform(this.transformCanvas.props);
this.canvasContext.beginPath();
this.canvasContext.rect(0,0,this.transformCanvas.w,this.transformCanvas.h);
this.canvasContext.closePath();
this.canvasContext.clip();
this.renderFrame(this.renderedFrame, true);
};
CanvasRenderer.prototype.destroy = function () {
if(this.renderConfig.clearCanvas) {
this.animationItem.wrapper.innerHTML = '';
}
var i, len = this.layers ? this.layers.length : 0;
for (i = len - 1; i >= 0; i-=1) {
if(this.elements[i]) {
this.elements[i].destroy();
}
}
this.elements.length = 0;
this.globalData.canvasContext = null;
this.animationItem.container = null;
this.destroyed = true;
};
CanvasRenderer.prototype.renderFrame = function(num, forceRender){
if((this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender) || this.destroyed || num === -1){
return;
}
this.renderedFrame = num;
this.globalData.frameNum = num - this.animationItem._isFirstFrame;
this.globalData.frameId += 1;
this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;
this.globalData.projectInterface.currentFrame = num;
// console.log('--------');
// console.log('NEW: ',num);
var i, len = this.layers.length;
if(!this.completeLayers){
this.checkLayers(num);
}
for (i = 0; i < len; i++) {
if(this.completeLayers || this.elements[i]){
this.elements[i].prepareFrame(num - this.layers[i].st);
}
}
if(this.globalData._mdf) {
if(this.renderConfig.clearCanvas === true){
this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);
}else{
this.save();
}
for (i = len - 1; i >= 0; i-=1) {
if(this.completeLayers || this.elements[i]){
this.elements[i].renderFrame();
}
}
if(this.renderConfig.clearCanvas !== true){
this.restore();
}
}
};
CanvasRenderer.prototype.buildItem = function(pos){
var elements = this.elements;
if(elements[pos] || this.layers[pos].ty == 99){
return;
}
var element = this.createItem(this.layers[pos], this,this.globalData);
elements[pos] = element;
element.initExpressions();
/*if(this.layers[pos].ty === 0){
element.resize(this.globalData.transformCanvas);
}*/
};
CanvasRenderer.prototype.checkPendingElements = function(){
while(this.pendingElements.length){
var element = this.pendingElements.pop();
element.checkParenting();
}
};
CanvasRenderer.prototype.hide = function(){
this.animationItem.container.style.display = 'none';
};
CanvasRenderer.prototype.show = function(){
this.animationItem.container.style.display = 'block';
};
function HybridRenderer(animationItem, config){
this.animationItem = animationItem;
this.layers = null;
this.renderedFrame = -1;
this.renderConfig = {
className: (config && config.className) || '',
imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',
hideOnTransparent: (config && config.hideOnTransparent === false) ? false : true,
filterSize: {
width: config && config.filterSize && config.filterSize.width || '400%',
height: config && config.filterSize && config.filterSize.height || '400%',
x: config && config.filterSize && config.filterSize.x || '-100%',
y: config && config.filterSize && config.filterSize.y || '-100%',
}
};
this.globalData = {
_mdf: false,
frameNum: -1,
renderConfig: this.renderConfig
};
this.pendingElements = [];
this.elements = [];
this.threeDElements = [];
this.destroyed = false;
this.camera = null;
this.supports3d = true;
this.rendererType = 'html';
}
extendPrototype([BaseRenderer],HybridRenderer);
HybridRenderer.prototype.buildItem = SVGRenderer.prototype.buildItem;
HybridRenderer.prototype.checkPendingElements = function(){
while(this.pendingElements.length){
var element = this.pendingElements.pop();
element.checkParenting();
}
};
HybridRenderer.prototype.appendElementInPos = function(element, pos){
var newDOMElement = element.getBaseElement();
if(!newDOMElement){
return;
}
var layer = this.layers[pos];
if(!layer.ddd || !this.supports3d){
if(this.threeDElements) {
this.addTo3dContainer(newDOMElement,pos);
} else {
var i = 0;
var nextDOMElement, nextLayer, tmpDOMElement;
while(i<pos){
if(this.elements[i] && this.elements[i]!== true && this.elements[i].getBaseElement){
nextLayer = this.elements[i];
tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();
nextDOMElement = tmpDOMElement || nextDOMElement;
}
i += 1;
}
if(nextDOMElement){
if(!layer.ddd || !this.supports3d){
this.layerElement.insertBefore(newDOMElement, nextDOMElement);
}
} else {
if(!layer.ddd || !this.supports3d){
this.layerElement.appendChild(newDOMElement);
}
}
}
} else {
this.addTo3dContainer(newDOMElement,pos);
}
};
HybridRenderer.prototype.createShape = function (data) {
if(!this.supports3d){
return new SVGShapeElement(data, this.globalData, this);
}
return new HShapeElement(data, this.globalData, this);
};
HybridRenderer.prototype.createText = function (data) {
if(!this.supports3d){
return new SVGTextElement(data, this.globalData, this);
}
return new HTextElement(data, this.globalData, this);
};
HybridRenderer.prototype.createCamera = function (data) {
this.camera = new HCameraElement(data, this.globalData, this);
return this.camera;
};
HybridRenderer.prototype.createImage = function (data) {
if(!this.supports3d){
return new IImageElement(data, this.globalData, this);
}
return new HImageElement(data, this.globalData, this);
};
HybridRenderer.prototype.createComp = function (data) {
if(!this.supports3d){
return new SVGCompElement(data, this.globalData, this);
}
return new HCompElement(data, this.globalData, this);
};
HybridRenderer.prototype.createSolid = function (data) {
if(!this.supports3d){
return new ISolidElement(data, this.globalData, this);
}
return new HSolidElement(data, this.globalData, this);
};
HybridRenderer.prototype.createNull = SVGRenderer.prototype.createNull;
HybridRenderer.prototype.getThreeDContainerByPos = function(pos){
var i = 0, len = this.threeDElements.length;
while(i<len) {
if(this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {
return this.threeDElements[i].perspectiveElem;
}
i += 1;
}
};
HybridRenderer.prototype.createThreeDContainer = function(pos, type){
var perspectiveElem = createTag('div');
styleDiv(perspectiveElem);
var container = createTag('div');
styleDiv(container);
if(type === '3d') {
perspectiveElem.style.width = this.globalData.compSize.w+'px';
perspectiveElem.style.height = this.globalData.compSize.h+'px';
perspectiveElem.style.transformOrigin = perspectiveElem.style.mozTransformOrigin = perspectiveElem.style.webkitTransformOrigin = "50% 50%";
container.style.transform = container.style.webkitTransform = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';
}
perspectiveElem.appendChild(container);
//this.resizerElem.appendChild(perspectiveElem);
var threeDContainerData = {
container:container,
perspectiveElem:perspectiveElem,
startPos: pos,
endPos: pos,
type: type
};
this.threeDElements.push(threeDContainerData);
return threeDContainerData;
};
HybridRenderer.prototype.build3dContainers = function(){
var i, len = this.layers.length;
var lastThreeDContainerData;
var currentContainer = '';
for(i=0;i<len;i+=1){
if(this.layers[i].ddd && this.layers[i].ty !== 3){
if(currentContainer !== '3d'){
currentContainer = '3d';
lastThreeDContainerData = this.createThreeDContainer(i,'3d');
}
lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos,i);
} else {
if(currentContainer !== '2d'){
currentContainer = '2d';
lastThreeDContainerData = this.createThreeDContainer(i,'2d');
}
lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos,i);
}
}
len = this.threeDElements.length;
for(i = len - 1; i >= 0; i --) {
this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);
}
};
HybridRenderer.prototype.addTo3dContainer = function(elem,pos){
var i = 0, len = this.threeDElements.length;
while(i<len){
if(pos <= this.threeDElements[i].endPos){
var j = this.threeDElements[i].startPos;
var nextElement;
while(j<pos){
if(this.elements[j] && this.elements[j].getBaseElement){
nextElement = this.elements[j].getBaseElement();
}
j += 1;
}
if(nextElement){
this.threeDElements[i].container.insertBefore(elem, nextElement);
} else {
this.threeDElements[i].container.appendChild(elem);
}
break;
}
i += 1;
}
};
HybridRenderer.prototype.configAnimation = function(animData){
var resizerElem = createTag('div');
var wrapper = this.animationItem.wrapper;
resizerElem.style.width = animData.w+'px';
resizerElem.style.height = animData.h+'px';
this.resizerElem = resizerElem;
styleDiv(resizerElem);
resizerElem.style.transformStyle = resizerElem.style.webkitTransformStyle = resizerElem.style.mozTransformStyle = "flat";
if(this.renderConfig.className) {
resizerElem.setAttribute('class', this.renderConfig.className);
}
wrapper.appendChild(resizerElem);
resizerElem.style.overflow = 'hidden';
var svg = createNS('svg');
svg.setAttribute('width','1');
svg.setAttribute('height','1');
styleDiv(svg);
this.resizerElem.appendChild(svg);
var defs = createNS('defs');
svg.appendChild(defs);
this.data = animData;
//Mask animation
this.setupGlobalData(animData, svg);
this.globalData.defs = defs;
this.layers = animData.layers;
this.layerElement = this.resizerElem;
this.build3dContainers();
this.updateContainerSize();
};
HybridRenderer.prototype.destroy = function () {
this.animationItem.wrapper.innerHTML = '';
this.animationItem.container = null;
this.globalData.defs = null;
var i, len = this.layers ? this.layers.length : 0;
for (i = 0; i < len; i++) {
this.elements[i].destroy();
}
this.elements.length = 0;
this.destroyed = true;
this.animationItem = null;
};
HybridRenderer.prototype.updateContainerSize = function () {
var elementWidth = this.animationItem.wrapper.offsetWidth;
var elementHeight = this.animationItem.wrapper.offsetHeight;
var elementRel = elementWidth/elementHeight;
var animationRel = this.globalData.compSize.w/this.globalData.compSize.h;
var sx,sy,tx,ty;
if(animationRel>elementRel){
sx = elementWidth/(this.globalData.compSize.w);
sy = elementWidth/(this.globalData.compSize.w);
tx = 0;
ty = ((elementHeight-this.globalData.compSize.h*(elementWidth/this.globalData.compSize.w))/2);
}else{
sx = elementHeight/(this.globalData.compSize.h);
sy = elementHeight/(this.globalData.compSize.h);
tx = (elementWidth-this.globalData.compSize.w*(elementHeight/this.globalData.compSize.h))/2;
ty = 0;
}
this.resizerElem.style.transform = this.resizerElem.style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,'+sy+',0,0,0,0,1,0,'+tx+','+ty+',0,1)';
};
HybridRenderer.prototype.renderFrame = SVGRenderer.prototype.renderFrame;
HybridRenderer.prototype.hide = function(){
this.resizerElem.style.display = 'none';
};
HybridRenderer.prototype.show = function(){
this.resizerElem.style.display = 'block';
};
HybridRenderer.prototype.initItems = function(){
this.buildAllItems();
if(this.camera){
this.camera.setup();
} else {
var cWidth = this.globalData.compSize.w;
var cHeight = this.globalData.compSize.h;
var i, len = this.threeDElements.length;
for(i=0;i<len;i+=1){
this.threeDElements[i].perspectiveElem.style.perspective = this.threeDElements[i].perspectiveElem.style.webkitPerspective = Math.sqrt(Math.pow(cWidth,2) + Math.pow(cHeight,2)) + 'px';
}
}
};
HybridRenderer.prototype.searchExtraCompositions = function(assets){
var i, len = assets.length;
var floatingContainer = createTag('div');
for(i=0;i<len;i+=1){
if(assets[i].xt){
var comp = this.createComp(assets[i],floatingContainer,this.globalData.comp,null);
comp.initExpressions();
this.globalData.projectInterface.registerComposition(comp);
}
}
};
function MaskElement(data,element,globalData) {
this.data = data;
this.element = element;
this.globalData = globalData;
this.storedData = [];
this.masksProperties = this.data.masksProperties || [];
this.maskElement = null;
var defs = this.globalData.defs;
var i, len = this.masksProperties ? this.masksProperties.length : 0;
this.viewData = createSizedArray(len);
this.solidPath = '';
var path, properties = this.masksProperties;
var count = 0;
var currentMasks = [];
var j, jLen;
var layerId = createElementID();
var rect, expansor, feMorph,x;
var maskType = 'clipPath', maskRef = 'clip-path';
for (i = 0; i < len; i++) {
if((properties[i].mode !== 'a' && properties[i].mode !== 'n')|| properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x){
maskType = 'mask';
maskRef = 'mask';
}
if((properties[i].mode == 's' || properties[i].mode == 'i') && count === 0){
rect = createNS( 'rect');
rect.setAttribute('fill', '#ffffff');
rect.setAttribute('width', this.element.comp.data.w || 0);
rect.setAttribute('height', this.element.comp.data.h || 0);
currentMasks.push(rect);
} else {
rect = null;
}
path = createNS( 'path');
if(properties[i].mode == 'n') {
// TODO move this to a factory or to a constructor
this.viewData[i] = {
op: PropertyFactory.getProp(this.element,properties[i].o,0,0.01,this.element),
prop: ShapePropertyFactory.getShapeProp(this.element,properties[i],3),
elem: path,
lastPath: ''
};
defs.appendChild(path);
continue;
}
count += 1;
path.setAttribute('fill', properties[i].mode === 's' ? '#000000':'#ffffff');
path.setAttribute('clip-rule','nonzero');
var filterID;
if (properties[i].x.k !== 0) {
maskType = 'mask';
maskRef = 'mask';
x = PropertyFactory.getProp(this.element,properties[i].x,0,null,this.element);
filterID = createElementID();
expansor = createNS('filter');
expansor.setAttribute('id',filterID);
feMorph = createNS('feMorphology');
feMorph.setAttribute('operator','erode');
feMorph.setAttribute('in','SourceGraphic');
feMorph.setAttribute('radius','0');
expansor.appendChild(feMorph);
defs.appendChild(expansor);
path.setAttribute('stroke', properties[i].mode === 's' ? '#000000':'#ffffff');
} else {
feMorph = null;
x = null;
}
// TODO move this to a factory or to a constructor
this.storedData[i] = {
elem: path,
x: x,
expan: feMorph,
lastPath: '',
lastOperator:'',
filterId:filterID,
lastRadius:0
};
if(properties[i].mode == 'i'){
jLen = currentMasks.length;
var g = createNS('g');
for(j=0;j<jLen;j+=1){
g.appendChild(currentMasks[j]);
}
var mask = createNS('mask');
mask.setAttribute('mask-type','alpha');
mask.setAttribute('id',layerId+'_'+count);
mask.appendChild(path);
defs.appendChild(mask);
g.setAttribute('mask','url(' + locationHref + '#'+layerId+'_'+count+')');
currentMasks.length = 0;
currentMasks.push(g);
}else{
currentMasks.push(path);
}
if(properties[i].inv && !this.solidPath){
this.solidPath = this.createLayerSolidPath();
}
// TODO move this to a factory or to a constructor
this.viewData[i] = {
elem: path,
lastPath: '',
op: PropertyFactory.getProp(this.element,properties[i].o,0,0.01,this.element),
prop:ShapePropertyFactory.getShapeProp(this.element,properties[i],3),
invRect: rect
};
if(!this.viewData[i].prop.k){
this.drawPath(properties[i],this.viewData[i].prop.v,this.viewData[i]);
}
}
this.maskElement = createNS( maskType);
len = currentMasks.length;
for(i=0;i<len;i+=1){
this.maskElement.appendChild(currentMasks[i]);
}
if(count > 0){
this.maskElement.setAttribute('id', layerId);
this.element.maskedElement.setAttribute(maskRef, "url(" + locationHref + "#" + layerId + ")");
defs.appendChild(this.maskElement);
}
if (this.viewData.length) {
this.element.addRenderableComponent(this);
}
}
MaskElement.prototype.getMaskProperty = function(pos){
return this.viewData[pos].prop;
};
MaskElement.prototype.renderFrame = function (isFirstFrame) {
var finalMat = this.element.finalTransform.mat;
var i, len = this.masksProperties.length;
for (i = 0; i < len; i++) {
if(this.viewData[i].prop._mdf || isFirstFrame){
this.drawPath(this.masksProperties[i],this.viewData[i].prop.v,this.viewData[i]);
}
if(this.viewData[i].op._mdf || isFirstFrame){
this.viewData[i].elem.setAttribute('fill-opacity',this.viewData[i].op.v);
}
if(this.masksProperties[i].mode !== 'n'){
if(this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)){
this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS())
}
if(this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)){
var feMorph = this.storedData[i].expan;
if(this.storedData[i].x.v < 0){
if(this.storedData[i].lastOperator !== 'erode'){
this.storedData[i].lastOperator = 'erode';
this.storedData[i].elem.setAttribute('filter','url(' + locationHref + '#'+this.storedData[i].filterId+')');
}
feMorph.setAttribute('radius',-this.storedData[i].x.v);
}else{
if(this.storedData[i].lastOperator !== 'dilate'){
this.storedData[i].lastOperator = 'dilate';
this.storedData[i].elem.setAttribute('filter',null);
}
this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v*2);
}
}
}
}
};
MaskElement.prototype.getMaskelement = function () {
return this.maskElement;
};
MaskElement.prototype.createLayerSolidPath = function(){
var path = 'M0,0 ';
path += ' h' + this.globalData.compSize.w ;
path += ' v' + this.globalData.compSize.h ;
path += ' h-' + this.globalData.compSize.w ;
path += ' v-' + this.globalData.compSize.h + ' ';
return path;
};
MaskElement.prototype.drawPath = function(pathData,pathNodes,viewData){
var pathString = " M"+pathNodes.v[0][0]+','+pathNodes.v[0][1];
var i, len;
len = pathNodes._length;
for(i=1;i<len;i+=1){
//pathString += " C"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + " "+pathNodes.i[i][0]+','+pathNodes.i[i][1] + " "+pathNodes.v[i][0]+','+pathNodes.v[i][1];
pathString += " C"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + " "+pathNodes.i[i][0]+','+pathNodes.i[i][1] + " "+pathNodes.v[i][0]+','+pathNodes.v[i][1];
}
//pathString += " C"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + " "+pathNodes.i[0][0]+','+pathNodes.i[0][1] + " "+pathNodes.v[0][0]+','+pathNodes.v[0][1];
if(pathNodes.c && len > 1){
pathString += " C"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + " "+pathNodes.i[0][0]+','+pathNodes.i[0][1] + " "+pathNodes.v[0][0]+','+pathNodes.v[0][1];
}
//pathNodes.__renderedString = pathString;
if(viewData.lastPath !== pathString){
var pathShapeValue = '';
if(viewData.elem){
if(pathNodes.c){
pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;
}
viewData.elem.setAttribute('d',pathShapeValue);
}
viewData.lastPath = pathString;
}
};
MaskElement.prototype.destroy = function(){
this.element = null;
this.globalData = null;
this.maskElement = null;
this.data = null;
this.masksProperties = null;
};
/**
* @file
* Handles AE's layer parenting property.
*
*/
function HierarchyElement(){}
HierarchyElement.prototype = {
/**
* @function
* Initializes hierarchy properties
*
*/
initHierarchy: function() {
//element's parent list
this.hierarchy = [];
//if element is parent of another layer _isParent will be true
this._isParent = false;
this.checkParenting();
},
/**
* @function
* Sets layer's hierarchy.
* @param {array} hierarch
* layer's parent list
*
*/
setHierarchy: function(hierarchy){
this.hierarchy = hierarchy;
},
/**
* @function
* Sets layer as parent.
*
*/
setAsParent: function() {
this._isParent = true;
},
/**
* @function
* Searches layer's parenting chain
*
*/
checkParenting: function(){
if (this.data.parent !== undefined){
this.comp.buildElementParenting(this, this.data.parent, []);
}
}
};
/**
* @file
* Handles element's layer frame update.
* Checks layer in point and out point
*
*/
function FrameElement(){}
FrameElement.prototype = {
/**
* @function
* Initializes frame related properties.
*
*/
initFrame: function(){
//set to true when inpoint is rendered
this._isFirstFrame = false;
//list of animated properties
this.dynamicProperties = [];
// If layer has been modified in current tick this will be true
this._mdf = false;
},
/**
* @function
* Calculates all dynamic values
*
* @param {number} num
* current frame number in Layer's time
* @param {boolean} isVisible
* if layers is currently in range
*
*/
prepareProperties: function(num, isVisible) {
var i, len = this.dynamicProperties.length;
for (i = 0;i < len; i += 1) {
if (isVisible || (this._isParent && this.dynamicProperties[i].propType === 'transform')) {
this.dynamicProperties[i].getValue();
if (this.dynamicProperties[i]._mdf) {
this.globalData._mdf = true;
this._mdf = true;
}
}
}
},
addDynamicProperty: function(prop) {
if(this.dynamicProperties.indexOf(prop) === -1) {
this.dynamicProperties.push(prop);
}
}
};
function TransformElement(){}
TransformElement.prototype = {
initTransform: function() {
this.finalTransform = {
mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {o:0},
_matMdf: false,
_opMdf: false,
mat: new Matrix()
};
if (this.data.ao) {
this.finalTransform.mProp.autoOriented = true;
}
//TODO: check TYPE 11: Guided elements
if (this.data.ty !== 11) {
//this.createElements();
}
},
renderTransform: function() {
this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;
this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;
if (this.hierarchy) {
var mat;
var finalMat = this.finalTransform.mat;
var i = 0, len = this.hierarchy.length;
//Checking if any of the transformation matrices in the hierarchy chain has changed.
if (!this.finalTransform._matMdf) {
while (i < len) {
if (this.hierarchy[i].finalTransform.mProp._mdf) {
this.finalTransform._matMdf = true;
break;
}
i += 1;
}
}
if (this.finalTransform._matMdf) {
mat = this.finalTransform.mProp.v.props;
finalMat.cloneFromProps(mat);
for (i = 0; i < len; i += 1) {
mat = this.hierarchy[i].finalTransform.mProp.v.props;
finalMat.transform(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5], mat[6], mat[7], mat[8], mat[9], mat[10], mat[11], mat[12], mat[13], mat[14], mat[15]);
}
}
}
},
globalToLocal: function(pt) {
var transforms = [];
transforms.push(this.finalTransform);
var flag = true;
var comp = this.comp;
while (flag) {
if (comp.finalTransform) {
if (comp.data.hasMask) {
transforms.splice(0, 0, comp.finalTransform);
}
comp = comp.comp;
} else {
flag = false;
}
}
var i, len = transforms.length,ptNew;
for (i = 0; i < len; i += 1) {
ptNew = transforms[i].mat.applyToPointArray(0, 0, 0);
//ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);
pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];
}
return pt;
},
mHelper: new Matrix()
};
function RenderableElement(){
}
RenderableElement.prototype = {
initRenderable: function() {
//layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange
this.isInRange = false;
//layer's display state
this.hidden = false;
// If layer's transparency equals 0, it can be hidden
this.isTransparent = false;
//list of animated components
this.renderableComponents = [];
},
addRenderableComponent: function(component) {
if(this.renderableComponents.indexOf(component) === -1) {
this.renderableComponents.push(component);
}
},
removeRenderableComponent: function(component) {
if(this.renderableComponents.indexOf(component) !== -1) {
this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);
}
},
prepareRenderableFrame: function(num) {
this.checkLayerLimits(num);
},
checkTransparency: function(){
if(this.finalTransform.mProp.o.v <= 0) {
if(!this.isTransparent && this.globalData.renderConfig.hideOnTransparent){
this.isTransparent = true;
this.hide();
}
} else if(this.isTransparent) {
this.isTransparent = false;
this.show();
}
},
/**
* @function
* Initializes frame related properties.
*
* @param {number} num
* current frame number in Layer's time
*
*/
checkLayerLimits: function(num) {
if(this.data.ip - this.data.st <= num && this.data.op - this.data.st > num)
{
if(this.isInRange !== true){
this.globalData._mdf = true;
this._mdf = true;
this.isInRange = true;
this.show();
}
} else {
if(this.isInRange !== false){
this.globalData._mdf = true;
this.isInRange = false;
this.hide();
}
}
},
renderRenderable: function() {
var i, len = this.renderableComponents.length;
for(i = 0; i < len; i += 1) {
this.renderableComponents[i].renderFrame(this._isFirstFrame);
}
/*this.maskManager.renderFrame(this.finalTransform.mat);
this.renderableEffectsManager.renderFrame(this._isFirstFrame);*/
},
sourceRectAtTime: function(){
return {
top:0,
left:0,
width:100,
height:100
};
},
getLayerSize: function(){
if(this.data.ty === 5){
return {w:this.data.textData.width,h:this.data.textData.height};
}else{
return {w:this.data.width,h:this.data.height};
}
}
};
function RenderableDOMElement() {}
(function(){
var _prototype = {
initElement: function(data,globalData,comp) {
this.initFrame();
this.initBaseData(data, globalData, comp);
this.initTransform(data, globalData, comp);
this.initHierarchy();
this.initRenderable();
this.initRendererElement();
this.createContainerElements();
this.createRenderableComponents();
this.createContent();
this.hide();
},
hide: function(){
if (!this.hidden && (!this.isInRange || this.isTransparent)) {
var elem = this.baseElement || this.layerElement;
elem.style.display = 'none';
this.hidden = true;
}
},
show: function(){
if (this.isInRange && !this.isTransparent){
if (!this.data.hd) {
var elem = this.baseElement || this.layerElement;
elem.style.display = 'block';
}
this.hidden = false;
this._isFirstFrame = true;
}
},
renderFrame: function() {
//If it is exported as hidden (data.hd === true) no need to render
//If it is not visible no need to render
if (this.data.hd || this.hidden) {
return;
}
this.renderTransform();
this.renderRenderable();
this.renderElement();
this.renderInnerContent();
if (this._isFirstFrame) {
this._isFirstFrame = false;
}
},
renderInnerContent: function() {},
prepareFrame: function(num) {
this._mdf = false;
this.prepareRenderableFrame(num);
this.prepareProperties(num, this.isInRange);
this.checkTransparency();
},
destroy: function(){
this.innerElem = null;
this.destroyBaseElement();
}
};
extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);
}());
function ProcessedElement(element, position) {
this.elem = element;
this.pos = position;
}
function SVGStyleData(data, level) {
this.data = data;
this.type = data.ty;
this.d = '';
this.lvl = level;
this._mdf = false;
this.closed = data.hd === true;
this.pElem = createNS('path');
this.msElem = null;
}
SVGStyleData.prototype.reset = function() {
this.d = '';
this._mdf = false;
};
function SVGShapeData(transformers, level, shape) {
this.caches = [];
this.styles = [];
this.transformers = transformers;
this.lStr = '';
this.sh = shape;
this.lvl = level;
//TODO find if there are some cases where _isAnimated can be false.
// For now, since shapes add up with other shapes. They have to be calculated every time.
// One way of finding out is checking if all styles associated to this shape depend only of this shape
this._isAnimated = !!shape.k;
// TODO: commenting this for now since all shapes are animated
var i = 0, len = transformers.length;
while(i < len) {
if(transformers[i].mProps.dynamicProperties.length) {
this._isAnimated = true;
break;
}
i += 1;
}
}
SVGShapeData.prototype.setAsAnimated = function() {
this._isAnimated = true;
}
function SVGTransformData(mProps, op, container) {
this.transform = {
mProps: mProps,
op: op,
container: container
};
this.elements = [];
this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;
}
function SVGStrokeStyleData(elem, data, styleOb){
this.initDynamicPropertyContainer(elem);
this.getValue = this.iterateDynamicProperties;
this.o = PropertyFactory.getProp(elem,data.o,0,0.01,this);
this.w = PropertyFactory.getProp(elem,data.w,0,null,this);
this.d = new DashProperty(elem,data.d||{},'svg',this);
this.c = PropertyFactory.getProp(elem,data.c,1,255,this);
this.style = styleOb;
this._isAnimated = !!this._isAnimated;
}
extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);
function SVGFillStyleData(elem, data, styleOb){
this.initDynamicPropertyContainer(elem);
this.getValue = this.iterateDynamicProperties;
this.o = PropertyFactory.getProp(elem,data.o,0,0.01,this);
this.c = PropertyFactory.getProp(elem,data.c,1,255,this);
this.style = styleOb;
}
extendPrototype([DynamicPropertyContainer], SVGFillStyleData);
function SVGGradientFillStyleData(elem, data, styleOb){
this.initDynamicPropertyContainer(elem);
this.getValue = this.iterateDynamicProperties;
this.initGradientData(elem, data, styleOb);
}
SVGGradientFillStyleData.prototype.initGradientData = function(elem, data, styleOb){
this.o = PropertyFactory.getProp(elem,data.o,0,0.01,this);
this.s = PropertyFactory.getProp(elem,data.s,1,null,this);
this.e = PropertyFactory.getProp(elem,data.e,1,null,this);
this.h = PropertyFactory.getProp(elem,data.h||{k:0},0,0.01,this);
this.a = PropertyFactory.getProp(elem,data.a||{k:0},0,degToRads,this);
this.g = new GradientProperty(elem,data.g,this);
this.style = styleOb;
this.stops = [];
this.setGradientData(styleOb.pElem, data);
this.setGradientOpacity(data, styleOb);
this._isAnimated = !!this._isAnimated;
};
SVGGradientFillStyleData.prototype.setGradientData = function(pathElement,data){
var gradientId = createElementID();
var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');
gfill.setAttribute('id',gradientId);
gfill.setAttribute('spreadMethod','pad');
gfill.setAttribute('gradientUnits','userSpaceOnUse');
var stops = [];
var stop, j, jLen;
jLen = data.g.p*4;
for(j=0;j<jLen;j+=4){
stop = createNS('stop');
gfill.appendChild(stop);
stops.push(stop);
}
pathElement.setAttribute( data.ty === 'gf' ? 'fill':'stroke','url(' + locationHref + '#'+gradientId+')');
this.gf = gfill;
this.cst = stops;
};
SVGGradientFillStyleData.prototype.setGradientOpacity = function(data, styleOb){
if(this.g._hasOpacity && !this.g._collapsable){
var stop, j, jLen;
var mask = createNS("mask");
var maskElement = createNS( 'path');
mask.appendChild(maskElement);
var opacityId = createElementID();
var maskId = createElementID();
mask.setAttribute('id',maskId);
var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');
opFill.setAttribute('id',opacityId);
opFill.setAttribute('spreadMethod','pad');
opFill.setAttribute('gradientUnits','userSpaceOnUse');
jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;
var stops = this.stops;
for(j=data.g.p*4;j<jLen;j+=2){
stop = createNS('stop');
stop.setAttribute('stop-color','rgb(255,255,255)');
opFill.appendChild(stop);
stops.push(stop);
}
maskElement.setAttribute( data.ty === 'gf' ? 'fill':'stroke','url(' + locationHref + '#'+opacityId+')');
this.of = opFill;
this.ms = mask;
this.ost = stops;
this.maskId = maskId;
styleOb.msElem = maskElement;
}
};
extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);
function SVGGradientStrokeStyleData(elem, data, styleOb){
this.initDynamicPropertyContainer(elem);
this.getValue = this.iterateDynamicProperties;
this.w = PropertyFactory.getProp(elem,data.w,0,null,this);
this.d = new DashProperty(elem,data.d||{},'svg',this);
this.initGradientData(elem, data, styleOb);
this._isAnimated = !!this._isAnimated;
}
extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);
function ShapeGroupData() {
this.it = [];
this.prevViewData = [];
this.gr = createNS('g');
}
var SVGElementsRenderer = (function() {
var _identityMatrix = new Matrix();
var _matrixHelper = new Matrix();
var ob = {
createRenderFunction: createRenderFunction
}
function createRenderFunction(data) {
var ty = data.ty;
switch(data.ty) {
case 'fl':
return renderFill;
case 'gf':
return renderGradient;
case 'gs':
return renderGradientStroke;
case 'st':
return renderStroke;
case 'sh':
case 'el':
case 'rc':
case 'sr':
return renderPath;
case 'tr':
return renderContentTransform;
}
}
function renderContentTransform(styleData, itemData, isFirstFrame) {
if(isFirstFrame || itemData.transform.op._mdf){
itemData.transform.container.setAttribute('opacity',itemData.transform.op.v);
}
if(isFirstFrame || itemData.transform.mProps._mdf){
itemData.transform.container.setAttribute('transform',itemData.transform.mProps.v.to2dCSS());
}
}
function renderPath(styleData, itemData, isFirstFrame) {
var j, jLen,pathStringTransformed,redraw,pathNodes,l, lLen = itemData.styles.length;
var lvl = itemData.lvl;
var paths, mat, props, iterations, k;
for(l=0;l<lLen;l+=1){
redraw = itemData.sh._mdf || isFirstFrame;
if(itemData.styles[l].lvl < lvl){
mat = _matrixHelper.reset();
iterations = lvl - itemData.styles[l].lvl;
k = itemData.transformers.length-1;
while(!redraw && iterations > 0) {
redraw = itemData.transformers[k].mProps._mdf || redraw;
iterations --;
k --;
}
if(redraw) {
iterations = lvl - itemData.styles[l].lvl;
k = itemData.transformers.length-1;
while(iterations > 0) {
props = itemData.transformers[k].mProps.v.props;
mat.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);
iterations --;
k --;
}
}
} else {
mat = _identityMatrix;
}
paths = itemData.sh.paths;
jLen = paths._length;
if(redraw){
pathStringTransformed = '';
for(j=0;j<jLen;j+=1){
pathNodes = paths.shapes[j];
if(pathNodes && pathNodes._length){
pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);
}
}
itemData.caches[l] = pathStringTransformed;
} else {
pathStringTransformed = itemData.caches[l];
}
itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;
itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;
}
}
function renderFill (styleData,itemData, isFirstFrame){
var styleElem = itemData.style;
if(itemData.c._mdf || isFirstFrame){
styleElem.pElem.setAttribute('fill','rgb('+bm_floor(itemData.c.v[0])+','+bm_floor(itemData.c.v[1])+','+bm_floor(itemData.c.v[2])+')');
}
if(itemData.o._mdf || isFirstFrame){
styleElem.pElem.setAttribute('fill-opacity',itemData.o.v);
}
};
function renderGradientStroke (styleData, itemData, isFirstFrame) {
renderGradient(styleData, itemData, isFirstFrame);
renderStroke(styleData, itemData, isFirstFrame);
}
function renderGradient(styleData, itemData, isFirstFrame) {
var gfill = itemData.gf;
var hasOpacity = itemData.g._hasOpacity;
var pt1 = itemData.s.v, pt2 = itemData.e.v;
if (itemData.o._mdf || isFirstFrame) {
var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';
itemData.style.pElem.setAttribute(attr, itemData.o.v);
}
if (itemData.s._mdf || isFirstFrame) {
var attr1 = styleData.t === 1 ? 'x1' : 'cx';
var attr2 = attr1 === 'x1' ? 'y1' : 'cy';
gfill.setAttribute(attr1, pt1[0]);
gfill.setAttribute(attr2, pt1[1]);
if (hasOpacity && !itemData.g._collapsable) {
itemData.of.setAttribute(attr1, pt1[0]);
itemData.of.setAttribute(attr2, pt1[1]);
}
}
var stops, i, len, stop;
if (itemData.g._cmdf || isFirstFrame) {
stops = itemData.cst;
var cValues = itemData.g.c;
len = stops.length;
for (i = 0; i < len; i += 1){
stop = stops[i];
stop.setAttribute('offset', cValues[i * 4] + '%');
stop.setAttribute('stop-color','rgb('+ cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ','+cValues[i * 4 + 3] + ')');
}
}
if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {
var oValues = itemData.g.o;
if(itemData.g._collapsable) {
stops = itemData.cst;
} else {
stops = itemData.ost;
}
len = stops.length;
for (i = 0; i < len; i += 1) {
stop = stops[i];
if(!itemData.g._collapsable) {
stop.setAttribute('offset', oValues[i * 2] + '%');
}
stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);
}
}
if (styleData.t === 1) {
if (itemData.e._mdf || isFirstFrame) {
gfill.setAttribute('x2', pt2[0]);
gfill.setAttribute('y2', pt2[1]);
if (hasOpacity && !itemData.g._collapsable) {
itemData.of.setAttribute('x2', pt2[0]);
itemData.of.setAttribute('y2', pt2[1]);
}
}
} else {
var rad;
if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {
rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));
gfill.setAttribute('r', rad);
if(hasOpacity && !itemData.g._collapsable){
itemData.of.setAttribute('r', rad);
}
}
if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {
if (!rad) {
rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));
}
var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);
var percent = itemData.h.v >= 1 ? 0.99 : itemData.h.v <= -1 ? -0.99: itemData.h.v;
var dist = rad * percent;
var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];
var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];
gfill.setAttribute('fx', x);
gfill.setAttribute('fy', y);
if (hasOpacity && !itemData.g._collapsable) {
itemData.of.setAttribute('fx', x);
itemData.of.setAttribute('fy', y);
}
}
//gfill.setAttribute('fy','200');
}
};
function renderStroke(styleData, itemData, isFirstFrame) {
var styleElem = itemData.style;
var d = itemData.d;
if (d && (d._mdf || isFirstFrame) && d.dashStr) {
styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);
styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);
}
if(itemData.c && (itemData.c._mdf || isFirstFrame)){
styleElem.pElem.setAttribute('stroke','rgb(' + bm_floor(itemData.c.v[0]) + ',' + bm_floor(itemData.c.v[1]) + ',' + bm_floor(itemData.c.v[2]) + ')');
}
if(itemData.o._mdf || isFirstFrame){
styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);
}
if(itemData.w._mdf || isFirstFrame){
styleElem.pElem.setAttribute('stroke-width', itemData.w.v);
if(styleElem.msElem){
styleElem.msElem.setAttribute('stroke-width', itemData.w.v);
}
}
};
return ob;
}())
function ShapeTransformManager() {
this.sequences = {};
this.sequenceList = [];
this.transform_key_count = 0;
}
ShapeTransformManager.prototype = {
addTransformSequence: function(transforms) {
var i, len = transforms.length;
var key = '_';
for(i = 0; i < len; i += 1) {
key += transforms[i].transform.key + '_';
}
var sequence = this.sequences[key];
if(!sequence) {
sequence = {
transforms: [].concat(transforms),
finalTransform: new Matrix(),
_mdf: false
};
this.sequences[key] = sequence;
this.sequenceList.push(sequence);
}
return sequence;
},
processSequence: function(sequence, isFirstFrame) {
var i = 0, len = sequence.transforms.length, _mdf = isFirstFrame;
while (i < len && !isFirstFrame) {
if (sequence.transforms[i].transform.mProps._mdf) {
_mdf = true;
break;
}
i += 1
}
if (_mdf) {
var props;
sequence.finalTransform.reset();
for (i = len - 1; i >= 0; i -= 1) {
props = sequence.transforms[i].transform.mProps.v.props;
sequence.finalTransform.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);
}
}
sequence._mdf = _mdf;
},
processSequences: function(isFirstFrame) {
var i, len = this.sequenceList.length;
for (i = 0; i < len; i += 1) {
this.processSequence(this.sequenceList[i], isFirstFrame);
}
},
getNewKey: function() {
return '_' + this.transform_key_count++;
}
}
function CVShapeData(element, data, styles, transformsManager) {
this.styledShapes = [];
this.tr = [0,0,0,0,0,0];
var ty = 4;
if(data.ty == 'rc'){
ty = 5;
}else if(data.ty == 'el'){
ty = 6;
}else if(data.ty == 'sr'){
ty = 7;
}
this.sh = ShapePropertyFactory.getShapeProp(element,data,ty,element);
var i , len = styles.length,styledShape;
for (i = 0; i < len; i += 1) {
if (!styles[i].closed) {
styledShape = {
transforms: transformsManager.addTransformSequence(styles[i].transforms),
trNodes: []
}
this.styledShapes.push(styledShape);
styles[i].elements.push(styledShape);
}
}
}
CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;
function BaseElement(){
}
BaseElement.prototype = {
checkMasks: function(){
if(!this.data.hasMask){
return false;
}
var i = 0, len = this.data.masksProperties.length;
while(i<len) {
if((this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false)) {
return true;
}
i += 1;
}
return false;
},
initExpressions: function(){
this.layerInterface = LayerExpressionInterface(this);
if(this.data.hasMask && this.maskManager) {
this.layerInterface.registerMaskInterface(this.maskManager);
}
var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this,this.layerInterface);
this.layerInterface.registerEffectsInterface(effectsInterface);
if(this.data.ty === 0 || this.data.xt){
this.compInterface = CompExpressionInterface(this);
} else if(this.data.ty === 4){
this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData,this.itemsData,this.layerInterface);
this.layerInterface.content = this.layerInterface.shapeInterface;
} else if(this.data.ty === 5){
this.layerInterface.textInterface = TextExpressionInterface(this);
this.layerInterface.text = this.layerInterface.textInterface;
}
},
setBlendMode: function(){
var blendModeValue = getBlendMode(this.data.bm);
var elem = this.baseElement || this.layerElement;
elem.style['mix-blend-mode'] = blendModeValue;
},
initBaseData: function(data, globalData, comp){
this.globalData = globalData;
this.comp = comp;
this.data = data;
this.layerId = createElementID();
//Stretch factor for old animations missing this property.
if(!this.data.sr){
this.data.sr = 1;
}
// effects manager
this.effectsManager = new EffectsManager(this.data,this,this.dynamicProperties);
},
getType: function(){
return this.type;
}
,sourceRectAtTime: function(){}
}
function NullElement(data,globalData,comp){
this.initFrame();
this.initBaseData(data, globalData, comp);
this.initFrame();
this.initTransform(data, globalData, comp);
this.initHierarchy();
}
NullElement.prototype.prepareFrame = function(num) {
this.prepareProperties(num, true);
};
NullElement.prototype.renderFrame = function() {
};
NullElement.prototype.getBaseElement = function() {
return null;
};
NullElement.prototype.destroy = function() {
};
NullElement.prototype.sourceRectAtTime = function() {
};
NullElement.prototype.hide = function() {
};
extendPrototype([BaseElement,TransformElement,HierarchyElement,FrameElement], NullElement);
function SVGBaseElement(){
}
SVGBaseElement.prototype = {
initRendererElement: function() {
this.layerElement = createNS('g');
},
createContainerElements: function(){
this.matteElement = createNS('g');
this.transformedElement = this.layerElement;
this.maskedElement = this.layerElement;
this._sizeChanged = false;
var layerElementParent = null;
//If this layer acts as a mask for the following layer
var filId, fil, gg;
if (this.data.td) {
if (this.data.td == 3 || this.data.td == 1) {
var masker = createNS('mask');
masker.setAttribute('id', this.layerId);
masker.setAttribute('mask-type', this.data.td == 3 ? 'luminance' : 'alpha');
masker.appendChild(this.layerElement);
layerElementParent = masker;
this.globalData.defs.appendChild(masker);
// This is only for IE and Edge when mask if of type alpha
if (!featureSupport.maskType && this.data.td == 1) {
masker.setAttribute('mask-type', 'luminance');
filId = createElementID();
fil = filtersFactory.createFilter(filId);
this.globalData.defs.appendChild(fil);
fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());
gg = createNS('g');
gg.appendChild(this.layerElement);
layerElementParent = gg;
masker.appendChild(gg);
gg.setAttribute('filter','url(' + locationHref + '#' + filId + ')');
}
} else if(this.data.td == 2) {
var maskGroup = createNS('mask');
maskGroup.setAttribute('id', this.layerId);
maskGroup.setAttribute('mask-type','alpha');
var maskGrouper = createNS('g');
maskGroup.appendChild(maskGrouper);
filId = createElementID();
fil = filtersFactory.createFilter(filId);
////
// This solution doesn't work on Android when meta tag with viewport attribute is set
/*var feColorMatrix = createNS('feColorMatrix');
feColorMatrix.setAttribute('type', 'matrix');
feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');
feColorMatrix.setAttribute('values','1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1');
fil.appendChild(feColorMatrix);*/
////
var feCTr = createNS('feComponentTransfer');
feCTr.setAttribute('in','SourceGraphic');
fil.appendChild(feCTr);
var feFunc = createNS('feFuncA');
feFunc.setAttribute('type','table');
feFunc.setAttribute('tableValues','1.0 0.0');
feCTr.appendChild(feFunc);
////
this.globalData.defs.appendChild(fil);
var alphaRect = createNS('rect');
alphaRect.setAttribute('width', this.comp.data.w);
alphaRect.setAttribute('height', this.comp.data.h);
alphaRect.setAttribute('x','0');
alphaRect.setAttribute('y','0');
alphaRect.setAttribute('fill','#ffffff');
alphaRect.setAttribute('opacity','0');
maskGrouper.setAttribute('filter', 'url(' + locationHref + '#'+filId+')');
maskGrouper.appendChild(alphaRect);
maskGrouper.appendChild(this.layerElement);
layerElementParent = maskGrouper;
if (!featureSupport.maskType) {
maskGroup.setAttribute('mask-type', 'luminance');
fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());
gg = createNS('g');
maskGrouper.appendChild(alphaRect);
gg.appendChild(this.layerElement);
layerElementParent = gg;
maskGrouper.appendChild(gg);
}
this.globalData.defs.appendChild(maskGroup);
}
} else if (this.data.tt) {
this.matteElement.appendChild(this.layerElement);
layerElementParent = this.matteElement;
this.baseElement = this.matteElement;
} else {
this.baseElement = this.layerElement;
}
if (this.data.ln) {
this.layerElement.setAttribute('id', this.data.ln);
}
if (this.data.cl) {
this.layerElement.setAttribute('class', this.data.cl);
}
//Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped
if (this.data.ty === 0 && !this.data.hd) {
var cp = createNS( 'clipPath');
var pt = createNS('path');
pt.setAttribute('d','M0,0 L' + this.data.w + ',0' + ' L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');
var clipId = createElementID();
cp.setAttribute('id',clipId);
cp.appendChild(pt);
this.globalData.defs.appendChild(cp);
if (this.checkMasks()) {
var cpGroup = createNS('g');
cpGroup.setAttribute('clip-path','url(' + locationHref + '#'+clipId + ')');
cpGroup.appendChild(this.layerElement);
this.transformedElement = cpGroup;
if (layerElementParent) {
layerElementParent.appendChild(this.transformedElement);
} else {
this.baseElement = this.transformedElement;
}
} else {
this.layerElement.setAttribute('clip-path','url(' + locationHref + '#'+clipId+')');
}
}
if (this.data.bm !== 0) {
this.setBlendMode();
}
},
renderElement: function() {
if (this.finalTransform._matMdf) {
this.transformedElement.setAttribute('transform', this.finalTransform.mat.to2dCSS());
}
if (this.finalTransform._opMdf) {
this.transformedElement.setAttribute('opacity', this.finalTransform.mProp.o.v);
}
},
destroyBaseElement: function() {
this.layerElement = null;
this.matteElement = null;
this.maskManager.destroy();
},
getBaseElement: function() {
if (this.data.hd) {
return null;
}
return this.baseElement;
},
createRenderableComponents: function() {
this.maskManager = new MaskElement(this.data, this, this.globalData);
this.renderableEffectsManager = new SVGEffects(this);
},
setMatte: function(id) {
if (!this.matteElement) {
return;
}
this.matteElement.setAttribute("mask", "url(" + locationHref + "#" + id + ")");
}
};
function IShapeElement(){
}
IShapeElement.prototype = {
addShapeToModifiers: function(data) {
var i, len = this.shapeModifiers.length;
for(i=0;i<len;i+=1){
this.shapeModifiers[i].addShape(data);
}
},
isShapeInAnimatedModifiers: function(data) {
var i = 0, len = this.shapeModifiers.length;
while(i < len) {
if(this.shapeModifiers[i].isAnimatedWithShape(data)) {
return true;
}
}
return false;
},
renderModifiers: function() {
if(!this.shapeModifiers.length){
return;
}
var i, len = this.shapes.length;
for(i=0;i<len;i+=1){
this.shapes[i].sh.reset();
}
len = this.shapeModifiers.length;
for(i=len-1;i>=0;i-=1){
this.shapeModifiers[i].processShapes(this._isFirstFrame);
}
},
lcEnum: {
'1': 'butt',
'2': 'round',
'3': 'square'
},
ljEnum: {
'1': 'miter',
'2': 'round',
'3': 'bevel'
},
searchProcessedElement: function(elem){
var elements = this.processedElements;
var i = 0, len = elements.length;
while (i < len) {
if (elements[i].elem === elem) {
return elements[i].pos;
}
i += 1;
}
return 0;
},
addProcessedElement: function(elem, pos){
var elements = this.processedElements;
var i = elements.length;
while(i) {
i -= 1;
if (elements[i].elem === elem) {
elements[i].pos = pos;
return;
}
}
elements.push(new ProcessedElement(elem, pos));
},
prepareFrame: function(num) {
this.prepareRenderableFrame(num);
this.prepareProperties(num, this.isInRange);
}
};
function ITextElement(){
}
ITextElement.prototype.initElement = function(data,globalData,comp){
this.lettersChangedFlag = true;
this.initFrame();
this.initBaseData(data, globalData, comp);
this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);
this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);
this.initTransform(data, globalData, comp);
this.initHierarchy();
this.initRenderable();
this.initRendererElement();
this.createContainerElements();
this.createRenderableComponents();
this.createContent();
this.hide();
this.textAnimator.searchProperties(this.dynamicProperties);
};
ITextElement.prototype.prepareFrame = function(num) {
this._mdf = false;
this.prepareRenderableFrame(num);
this.prepareProperties(num, this.isInRange);
if(this.textProperty._mdf || this.textProperty._isFirstFrame) {
this.buildNewText();
this.textProperty._isFirstFrame = false;
this.textProperty._mdf = false;
}
};
ITextElement.prototype.createPathShape = function(matrixHelper, shapes) {
var j,jLen = shapes.length;
var k, kLen, pathNodes;
var shapeStr = '';
for(j=0;j<jLen;j+=1){
pathNodes = shapes[j].ks.k;
shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);
}
return shapeStr;
};
ITextElement.prototype.updateDocumentData = function(newData, index) {
this.textProperty.updateDocumentData(newData, index);
};
ITextElement.prototype.canResizeFont = function(_canResize) {
this.textProperty.canResizeFont(_canResize);
};
ITextElement.prototype.setMinimumFontSize = function(_fontSize) {
this.textProperty.setMinimumFontSize(_fontSize);
};
ITextElement.prototype.applyTextPropertiesToMatrix = function(documentData, matrixHelper, lineNumber, xPos, yPos) {
if(documentData.ps){
matrixHelper.translate(documentData.ps[0],documentData.ps[1] + documentData.ascent,0);
}
matrixHelper.translate(0,-documentData.ls,0);
switch(documentData.j){
case 1:
matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]),0,0);
break;
case 2:
matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber] )/2,0,0);
break;
}
matrixHelper.translate(xPos, yPos, 0);
};
ITextElement.prototype.buildColor = function(colorData) {
return 'rgb(' + Math.round(colorData[0]*255) + ',' + Math.round(colorData[1]*255) + ',' + Math.round(colorData[2]*255) + ')';
};
ITextElement.prototype.emptyProp = new LetterProps();
ITextElement.prototype.destroy = function(){
};
function ICompElement(){}
extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);
ICompElement.prototype.initElement = function(data,globalData,comp) {
this.initFrame();
this.initBaseData(data, globalData, comp);
this.initTransform(data, globalData, comp);
this.initRenderable();
this.initHierarchy();
this.initRendererElement();
this.createContainerElements();
this.createRenderableComponents();
if(this.data.xt || !globalData.progressiveLoad){
this.buildAllItems();
}
this.hide();
};
/*ICompElement.prototype.hide = function(){
if(!this.hidden){
this.hideElement();
var i,len = this.elements.length;
for( i = 0; i < len; i+=1 ){
if(this.elements[i]){
this.elements[i].hide();
}
}
}
};*/
ICompElement.prototype.prepareFrame = function(num){
this._mdf = false;
this.prepareRenderableFrame(num);
this.prepareProperties(num, this.isInRange);
if(!this.isInRange && !this.data.xt){
return;
}
if (!this.tm._placeholder) {
var timeRemapped = this.tm.v;
if(timeRemapped === this.data.op){
timeRemapped = this.data.op - 1;
}
this.renderedFrame = timeRemapped;
} else {
this.renderedFrame = num/this.data.sr;
}
var i,len = this.elements.length;
if(!this.completeLayers){
this.checkLayers(this.renderedFrame);
}
//This iteration needs to be backwards because of how expressions connect between each other
for( i = len - 1; i >= 0; i -= 1 ){
if(this.completeLayers || this.elements[i]){
this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);
if(this.elements[i]._mdf) {
this._mdf = true;
}
}
}
};
ICompElement.prototype.renderInnerContent = function() {
var i,len = this.layers.length;
for( i = 0; i < len; i += 1 ){
if(this.completeLayers || this.elements[i]){
this.elements[i].renderFrame();
}
}
};
ICompElement.prototype.setElements = function(elems){
this.elements = elems;
};
ICompElement.prototype.getElements = function(){
return this.elements;
};
ICompElement.prototype.destroyElements = function(){
var i,len = this.layers.length;
for( i = 0; i < len; i+=1 ){
if(this.elements[i]){
this.elements[i].destroy();
}
}
};
ICompElement.prototype.destroy = function(){
this.destroyElements();
this.destroyBaseElement();
};
function IImageElement(data,globalData,comp){
this.assetData = globalData.getAssetData(data.refId);
this.initElement(data,globalData,comp);
this.sourceRect = {top:0,left:0,width:this.assetData.w,height:this.assetData.h};
}
extendPrototype([BaseElement,TransformElement,SVGBaseElement,HierarchyElement,FrameElement,RenderableDOMElement], IImageElement);
IImageElement.prototype.createContent = function(){
var assetPath = this.globalData.getAssetsPath(this.assetData);
this.innerElem = createNS('image');
this.innerElem.setAttribute('width',this.assetData.w+"px");
this.innerElem.setAttribute('height',this.assetData.h+"px");
this.innerElem.setAttribute('preserveAspectRatio',this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);
this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink','href',assetPath);
this.layerElement.appendChild(this.innerElem);
};
IImageElement.prototype.sourceRectAtTime = function() {
return this.sourceRect;
}
function ISolidElement(data,globalData,comp){
this.initElement(data,globalData,comp);
}
extendPrototype([IImageElement], ISolidElement);
ISolidElement.prototype.createContent = function(){
var rect = createNS('rect');
////rect.style.width = this.data.sw;
////rect.style.height = this.data.sh;
////rect.style.fill = this.data.sc;
rect.setAttribute('width',this.data.sw);
rect.setAttribute('height',this.data.sh);
rect.setAttribute('fill',this.data.sc);
this.layerElement.appendChild(rect);
};
function SVGCompElement(data,globalData,comp){
this.layers = data.layers;
this.supports3d = true;
this.completeLayers = false;
this.pendingElements = [];
this.elements = this.layers ? createSizedArray(this.layers.length) : [];
//this.layerElement = createNS('g');
this.initElement(data,globalData,comp);
this.tm = data.tm ? PropertyFactory.getProp(this,data.tm,0,globalData.frameRate,this) : {_placeholder:true};
}
extendPrototype([SVGRenderer, ICompElement, SVGBaseElement], SVGCompElement);
function SVGTextElement(data,globalData,comp){
this.textSpans = [];
this.renderType = 'svg';
this.initElement(data,globalData,comp);
}
extendPrototype([BaseElement,TransformElement,SVGBaseElement,HierarchyElement,FrameElement,RenderableDOMElement,ITextElement], SVGTextElement);
SVGTextElement.prototype.createContent = function(){
if (this.data.singleShape && !this.globalData.fontManager.chars) {
this.textContainer = createNS('text');
}
};
SVGTextElement.prototype.buildTextContents = function(textArray) {
var i = 0, len = textArray.length;
var textContents = [], currentTextContent = '';
while (i < len) {
if(textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {
textContents.push(currentTextContent);
currentTextContent = '';
} else {
currentTextContent += textArray[i];
}
i += 1;
}
textContents.push(currentTextContent);
return textContents;
}
SVGTextElement.prototype.buildNewText = function(){
var i, len;
var documentData = this.textProperty.currentData;
this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);
if(documentData.fc) {
this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));
}else{
this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');
}
if(documentData.sc){
this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));
this.layerElement.setAttribute('stroke-width', documentData.sw);
}
this.layerElement.setAttribute('font-size', documentData.finalSize);
var fontData = this.globalData.fontManager.getFontByName(documentData.f);
if(fontData.fClass){
this.layerElement.setAttribute('class',fontData.fClass);
} else {
this.layerElement.setAttribute('font-family', fontData.fFamily);
var fWeight = documentData.fWeight, fStyle = documentData.fStyle;
this.layerElement.setAttribute('font-style', fStyle);
this.layerElement.setAttribute('font-weight', fWeight);
}
this.layerElement.setAttribute('aria-label', documentData.t);
var letters = documentData.l || [];
var usesGlyphs = !!this.globalData.fontManager.chars;
len = letters.length;
var tSpan;
var matrixHelper = this.mHelper;
var shapes, shapeStr = '', singleShape = this.data.singleShape;
var xPos = 0, yPos = 0, firstLine = true;
var trackingOffset = documentData.tr/1000*documentData.finalSize;
if(singleShape && !usesGlyphs && !documentData.sz) {
var tElement = this.textContainer;
var justify = 'start';
switch(documentData.j) {
case 1:
justify = 'end';
break;
case 2:
justify = 'middle';
break;
}
tElement.setAttribute('text-anchor',justify);
tElement.setAttribute('letter-spacing',trackingOffset);
var textContent = this.buildTextContents(documentData.finalText);
len = textContent.length;
yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;
for ( i = 0; i < len; i += 1) {
tSpan = this.textSpans[i] || createNS('tspan');
tSpan.textContent = textContent[i];
tSpan.setAttribute('x', 0);
tSpan.setAttribute('y', yPos);
tSpan.style.display = 'inherit';
tElement.appendChild(tSpan);
this.textSpans[i] = tSpan;
yPos += documentData.finalLineHeight;
}
this.layerElement.appendChild(tElement);
} else {
var cachedSpansLength = this.textSpans.length;
var shapeData, charData;
for (i = 0; i < len; i += 1) {
if(!usesGlyphs || !singleShape || i === 0){
tSpan = cachedSpansLength > i ? this.textSpans[i] : createNS(usesGlyphs?'path':'text');
if (cachedSpansLength <= i) {
tSpan.setAttribute('stroke-linecap', 'butt');
tSpan.setAttribute('stroke-linejoin','round');
tSpan.setAttribute('stroke-miterlimit','4');
this.textSpans[i] = tSpan;
this.layerElement.appendChild(tSpan);
}
tSpan.style.display = 'inherit';
}
matrixHelper.reset();
matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);
if (singleShape) {
if(letters[i].n) {
xPos = -trackingOffset;
yPos += documentData.yOffset;
yPos += firstLine ? 1 : 0;
firstLine = false;
}
this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);
xPos += letters[i].l || 0;
//xPos += letters[i].val === ' ' ? 0 : trackingOffset;
xPos += trackingOffset;
}
if(usesGlyphs) {
charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);
shapeData = charData && charData.data || {};
shapes = shapeData.shapes ? shapeData.shapes[0].it : [];
if(!singleShape){
tSpan.setAttribute('d',this.createPathShape(matrixHelper,shapes));
} else {
shapeStr += this.createPathShape(matrixHelper,shapes);
}
} else {
if(singleShape) {
tSpan.setAttribute("transform", "translate(" + matrixHelper.props[12] + "," + matrixHelper.props[13] + ")");
}
tSpan.textContent = letters[i].val;
tSpan.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space","preserve");
}
//
}
if (singleShape && tSpan) {
tSpan.setAttribute('d',shapeStr);
}
}
while (i < this.textSpans.length){
this.textSpans[i].style.display = 'none';
i += 1;
}
this._sizeChanged = true;
};
SVGTextElement.prototype.sourceRectAtTime = function(time){
this.prepareFrame(this.comp.renderedFrame - this.data.st);
this.renderInnerContent();
if(this._sizeChanged){
this._sizeChanged = false;
var textBox = this.layerElement.getBBox();
this.bbox = {
top: textBox.y,
left: textBox.x,
width: textBox.width,
height: textBox.height
};
}
return this.bbox;
};
SVGTextElement.prototype.renderInnerContent = function(){
if(!this.data.singleShape){
this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);
if(this.lettersChangedFlag || this.textAnimator.lettersChangedFlag){
this._sizeChanged = true;
var i,len;
var renderedLetters = this.textAnimator.renderedLetters;
var letters = this.textProperty.currentData.l;
len = letters.length;
var renderedLetter, textSpan;
for(i=0;i<len;i+=1){
if(letters[i].n){
continue;
}
renderedLetter = renderedLetters[i];
textSpan = this.textSpans[i];
if(renderedLetter._mdf.m) {
textSpan.setAttribute('transform',renderedLetter.m);
}
if(renderedLetter._mdf.o) {
textSpan.setAttribute('opacity',renderedLetter.o);
}
if(renderedLetter._mdf.sw){
textSpan.setAttribute('stroke-width',renderedLetter.sw);
}
if(renderedLetter._mdf.sc){
textSpan.setAttribute('stroke',renderedLetter.sc);
}
if(renderedLetter._mdf.fc){
textSpan.setAttribute('fill',renderedLetter.fc);
}
}
}
}
};
function SVGShapeElement(data,globalData,comp){
//List of drawable elements
this.shapes = [];
// Full shape data
this.shapesData = data.shapes;
//List of styles that will be applied to shapes
this.stylesList = [];
//List of modifiers that will be applied to shapes
this.shapeModifiers = [];
//List of items in shape tree
this.itemsData = [];
//List of items in previous shape tree
this.processedElements = [];
// List of animated components
this.animatedContents = [];
this.initElement(data,globalData,comp);
//Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.
// List of elements that have been created
this.prevViewData = [];
//Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.
}
extendPrototype([BaseElement,TransformElement,SVGBaseElement,IShapeElement,HierarchyElement,FrameElement,RenderableDOMElement], SVGShapeElement);
SVGShapeElement.prototype.initSecondaryElement = function() {
};
SVGShapeElement.prototype.identityMatrix = new Matrix();
SVGShapeElement.prototype.buildExpressionInterface = function(){};
SVGShapeElement.prototype.createContent = function(){
this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.layerElement, 0, [], true);
this.filterUniqueShapes();
};
/*
This method searches for multiple shapes that affect a single element and one of them is animated
*/
SVGShapeElement.prototype.filterUniqueShapes = function(){
var i, len = this.shapes.length, shape;
var j, jLen = this.stylesList.length;
var style, count = 0;
var tempShapes = [];
var areAnimated = false;
for(j = 0; j < jLen; j += 1) {
style = this.stylesList[j];
areAnimated = false;
tempShapes.length = 0;
for(i = 0; i < len; i += 1) {
shape = this.shapes[i];
if(shape.styles.indexOf(style) !== -1) {
tempShapes.push(shape);
areAnimated = shape._isAnimated || areAnimated;
}
}
if(tempShapes.length > 1 && areAnimated) {
this.setShapesAsAnimated(tempShapes);
}
}
}
SVGShapeElement.prototype.setShapesAsAnimated = function(shapes){
var i, len = shapes.length;
for(i = 0; i < len; i += 1) {
shapes[i].setAsAnimated();
}
}
SVGShapeElement.prototype.createStyleElement = function(data, level){
//TODO: prevent drawing of hidden styles
var elementData;
var styleOb = new SVGStyleData(data, level);
var pathElement = styleOb.pElem;
if(data.ty === 'st') {
elementData = new SVGStrokeStyleData(this, data, styleOb);
} else if(data.ty === 'fl') {
elementData = new SVGFillStyleData(this, data, styleOb);
} else if(data.ty === 'gf' || data.ty === 'gs') {
var gradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;
elementData = new gradientConstructor(this, data, styleOb);
this.globalData.defs.appendChild(elementData.gf);
if (elementData.maskId) {
this.globalData.defs.appendChild(elementData.ms);
this.globalData.defs.appendChild(elementData.of);
pathElement.setAttribute('mask','url(' + locationHref + '#' + elementData.maskId + ')');
}
}
if(data.ty === 'st' || data.ty === 'gs') {
pathElement.setAttribute('stroke-linecap', this.lcEnum[data.lc] || 'round');
pathElement.setAttribute('stroke-linejoin',this.ljEnum[data.lj] || 'round');
pathElement.setAttribute('fill-opacity','0');
if(data.lj === 1) {
pathElement.setAttribute('stroke-miterlimit',data.ml);
}
}
if(data.r === 2) {
pathElement.setAttribute('fill-rule', 'evenodd');
}
if(data.ln){
pathElement.setAttribute('id',data.ln);
}
if(data.cl){
pathElement.setAttribute('class',data.cl);
}
if(data.bm){
pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);
}
this.stylesList.push(styleOb);
this.addToAnimatedContents(data, elementData);
return elementData;
};
SVGShapeElement.prototype.createGroupElement = function(data) {
var elementData = new ShapeGroupData();
if(data.ln){
elementData.gr.setAttribute('id',data.ln);
}
if(data.cl){
elementData.gr.setAttribute('class',data.cl);
}
if(data.bm){
elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);
}
return elementData;
};
SVGShapeElement.prototype.createTransformElement = function(data, container) {
var transformProperty = TransformPropertyFactory.getTransformProperty(this,data,this);
var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);
this.addToAnimatedContents(data, elementData);
return elementData;
};
SVGShapeElement.prototype.createShapeElement = function(data, ownTransformers, level) {
var ty = 4;
if(data.ty === 'rc'){
ty = 5;
}else if(data.ty === 'el'){
ty = 6;
}else if(data.ty === 'sr'){
ty = 7;
}
var shapeProperty = ShapePropertyFactory.getShapeProp(this,data,ty,this);
var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);
this.shapes.push(elementData);
this.addShapeToModifiers(elementData);
this.addToAnimatedContents(data, elementData);
return elementData;
};
SVGShapeElement.prototype.addToAnimatedContents = function(data, element) {
var i = 0, len = this.animatedContents.length;
while(i < len) {
if(this.animatedContents[i].element === element) {
return;
}
i += 1;
}
this.animatedContents.push({
fn: SVGElementsRenderer.createRenderFunction(data),
element: element,
data: data
});
};
SVGShapeElement.prototype.setElementStyles = function(elementData){
var arr = elementData.styles;
var j, jLen = this.stylesList.length;
for (j = 0; j < jLen; j += 1) {
if (!this.stylesList[j].closed) {
arr.push(this.stylesList[j]);
}
}
};
SVGShapeElement.prototype.reloadShapes = function(){
this._isFirstFrame = true;
var i, len = this.itemsData.length;
for( i = 0; i < len; i += 1) {
this.prevViewData[i] = this.itemsData[i];
}
this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.layerElement, 0, [], true);
this.filterUniqueShapes();
len = this.dynamicProperties.length;
for(i = 0; i < len; i += 1) {
this.dynamicProperties[i].getValue();
}
this.renderModifiers();
};
SVGShapeElement.prototype.searchShapes = function(arr,itemsData,prevViewData,container, level, transformers, render){
var ownTransformers = [].concat(transformers);
var i, len = arr.length - 1;
var j, jLen;
var ownStyles = [], ownModifiers = [], styleOb, currentTransform, modifier, processedPos;
for(i=len;i>=0;i-=1){
processedPos = this.searchProcessedElement(arr[i]);
if(!processedPos){
arr[i]._render = render;
} else {
itemsData[i] = prevViewData[processedPos - 1];
}
if(arr[i].ty == 'fl' || arr[i].ty == 'st' || arr[i].ty == 'gf' || arr[i].ty == 'gs'){
if(!processedPos){
itemsData[i] = this.createStyleElement(arr[i], level);
} else {
itemsData[i].style.closed = false;
}
if(arr[i]._render){
container.appendChild(itemsData[i].style.pElem);
}
ownStyles.push(itemsData[i].style);
}else if(arr[i].ty == 'gr'){
if(!processedPos){
itemsData[i] = this.createGroupElement(arr[i]);
} else {
jLen = itemsData[i].it.length;
for(j=0;j<jLen;j+=1){
itemsData[i].prevViewData[j] = itemsData[i].it[j];
}
}
this.searchShapes(arr[i].it,itemsData[i].it,itemsData[i].prevViewData,itemsData[i].gr, level + 1, ownTransformers, render);
if(arr[i]._render){
container.appendChild(itemsData[i].gr);
}
}else if(arr[i].ty == 'tr'){
if(!processedPos){
itemsData[i] = this.createTransformElement(arr[i], container);
}
currentTransform = itemsData[i].transform;
ownTransformers.push(currentTransform);
}else if(arr[i].ty == 'sh' || arr[i].ty == 'rc' || arr[i].ty == 'el' || arr[i].ty == 'sr'){
if(!processedPos){
itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);
}
this.setElementStyles(itemsData[i]);
}else if(arr[i].ty == 'tm' || arr[i].ty == 'rd' || arr[i].ty == 'ms'){
if(!processedPos){
modifier = ShapeModifiers.getModifier(arr[i].ty);
modifier.init(this,arr[i]);
itemsData[i] = modifier;
this.shapeModifiers.push(modifier);
} else {
modifier = itemsData[i];
modifier.closed = false;
}
ownModifiers.push(modifier);
}else if(arr[i].ty == 'rp'){
if(!processedPos){
modifier = ShapeModifiers.getModifier(arr[i].ty);
itemsData[i] = modifier;
modifier.init(this,arr,i,itemsData);
this.shapeModifiers.push(modifier);
render = false;
}else{
modifier = itemsData[i];
modifier.closed = true;
}
ownModifiers.push(modifier);
}
this.addProcessedElement(arr[i], i + 1);
}
len = ownStyles.length;
for(i=0;i<len;i+=1){
ownStyles[i].closed = true;
}
len = ownModifiers.length;
for(i=0;i<len;i+=1){
ownModifiers[i].closed = true;
}
};
SVGShapeElement.prototype.renderInnerContent = function() {
this.renderModifiers();
var i, len = this.stylesList.length;
for(i=0;i<len;i+=1){
this.stylesList[i].reset();
}
this.renderShape();
for (i = 0; i < len; i += 1) {
if (this.stylesList[i]._mdf || this._isFirstFrame) {
if(this.stylesList[i].msElem){
this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d);
//Adding M0 0 fixes same mask bug on all browsers
this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;
}
this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');
}
}
};
SVGShapeElement.prototype.renderShape = function() {
var i, len = this.animatedContents.length;
var animatedContent;
for(i = 0; i < len; i += 1) {
animatedContent = this.animatedContents[i];
if((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {
animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);
}
}
}
SVGShapeElement.prototype.destroy = function(){
this.destroyBaseElement();
this.shapesData = null;
this.itemsData = null;
};
function SVGTintFilter(filter, filterManager){
this.filterManager = filterManager;
var feColorMatrix = createNS('feColorMatrix');
feColorMatrix.setAttribute('type','matrix');
feColorMatrix.setAttribute('color-interpolation-filters','linearRGB');
feColorMatrix.setAttribute('values','0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');
feColorMatrix.setAttribute('result','f1');
filter.appendChild(feColorMatrix);
feColorMatrix = createNS('feColorMatrix');
feColorMatrix.setAttribute('type','matrix');
feColorMatrix.setAttribute('color-interpolation-filters','sRGB');
feColorMatrix.setAttribute('values','1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');
feColorMatrix.setAttribute('result','f2');
filter.appendChild(feColorMatrix);
this.matrixFilter = feColorMatrix;
if(filterManager.effectElements[2].p.v !== 100 || filterManager.effectElements[2].p.k){
var feMerge = createNS('feMerge');
filter.appendChild(feMerge);
var feMergeNode;
feMergeNode = createNS('feMergeNode');
feMergeNode.setAttribute('in','SourceGraphic');
feMerge.appendChild(feMergeNode);
feMergeNode = createNS('feMergeNode');
feMergeNode.setAttribute('in','f2');
feMerge.appendChild(feMergeNode);
}
}
SVGTintFilter.prototype.renderFrame = function(forceRender){
if(forceRender || this.filterManager._mdf){
var colorBlack = this.filterManager.effectElements[0].p.v;
var colorWhite = this.filterManager.effectElements[1].p.v;
var opacity = this.filterManager.effectElements[2].p.v/100;
this.matrixFilter.setAttribute('values',(colorWhite[0]- colorBlack[0])+' 0 0 0 '+ colorBlack[0] +' '+ (colorWhite[1]- colorBlack[1]) +' 0 0 0 '+ colorBlack[1] +' '+ (colorWhite[2]- colorBlack[2]) +' 0 0 0 '+ colorBlack[2] +' 0 0 0 ' + opacity + ' 0');
}
};
function SVGFillFilter(filter, filterManager){
this.filterManager = filterManager;
var feColorMatrix = createNS('feColorMatrix');
feColorMatrix.setAttribute('type','matrix');
feColorMatrix.setAttribute('color-interpolation-filters','sRGB');
feColorMatrix.setAttribute('values','1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');
filter.appendChild(feColorMatrix);
this.matrixFilter = feColorMatrix;
}
SVGFillFilter.prototype.renderFrame = function(forceRender){
if(forceRender || this.filterManager._mdf){
var color = this.filterManager.effectElements[2].p.v;
var opacity = this.filterManager.effectElements[6].p.v;
this.matrixFilter.setAttribute('values','0 0 0 0 '+color[0]+' 0 0 0 0 '+color[1]+' 0 0 0 0 '+color[2]+' 0 0 0 '+opacity+' 0');
}
};
function SVGGaussianBlurEffect(filter, filterManager){
// Outset the filter region by 100% on all sides to accommodate blur expansion.
filter.setAttribute('x','-100%');
filter.setAttribute('y','-100%');
filter.setAttribute('width','300%');
filter.setAttribute('height','300%');
this.filterManager = filterManager;
var feGaussianBlur = createNS('feGaussianBlur');
filter.appendChild(feGaussianBlur);
this.feGaussianBlur = feGaussianBlur;
}
SVGGaussianBlurEffect.prototype.renderFrame = function(forceRender){
if(forceRender || this.filterManager._mdf){
// Empirical value, matching AE's blur appearance.
var kBlurrinessToSigma = 0.3;
var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma;
// Dimensions mapping:
//
// 1 -> horizontal & vertical
// 2 -> horizontal only
// 3 -> vertical only
//
var dimensions = this.filterManager.effectElements[1].p.v;
var sigmaX = (dimensions == 3) ? 0 : sigma;
var sigmaY = (dimensions == 2) ? 0 : sigma;
this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + " " + sigmaY);
// Repeat edges mapping:
//
// 0 -> off -> duplicate
// 1 -> on -> wrap
var edgeMode = (this.filterManager.effectElements[2].p.v == 1) ? 'wrap' : 'duplicate';
this.feGaussianBlur.setAttribute('edgeMode', edgeMode);
}
}
function SVGStrokeEffect(elem, filterManager){
this.initialized = false;
this.filterManager = filterManager;
this.elem = elem;
this.paths = [];
}
SVGStrokeEffect.prototype.initialize = function(){
var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;
var path,groupPath, i, len;
if(this.filterManager.effectElements[1].p.v === 1){
len = this.elem.maskManager.masksProperties.length;
i = 0;
} else {
i = this.filterManager.effectElements[0].p.v - 1;
len = i + 1;
}
groupPath = createNS('g');
groupPath.setAttribute('fill','none');
groupPath.setAttribute('stroke-linecap','round');
groupPath.setAttribute('stroke-dashoffset',1);
for(i;i<len;i+=1){
path = createNS('path');
groupPath.appendChild(path);
this.paths.push({p:path,m:i});
}
if(this.filterManager.effectElements[10].p.v === 3){
var mask = createNS('mask');
var id = createElementID();
mask.setAttribute('id',id);
mask.setAttribute('mask-type','alpha');
mask.appendChild(groupPath);
this.elem.globalData.defs.appendChild(mask);
var g = createNS('g');
g.setAttribute('mask','url(' + locationHref + '#'+id+')');
while (elemChildren[0]) {
g.appendChild(elemChildren[0]);
}
this.elem.layerElement.appendChild(g);
this.masker = mask;
groupPath.setAttribute('stroke','#fff');
} else if(this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2){
if(this.filterManager.effectElements[10].p.v === 2){
elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;
while(elemChildren.length){
this.elem.layerElement.removeChild(elemChildren[0]);
}
}
this.elem.layerElement.appendChild(groupPath);
this.elem.layerElement.removeAttribute('mask');
groupPath.setAttribute('stroke','#fff');
}
this.initialized = true;
this.pathMasker = groupPath;
};
SVGStrokeEffect.prototype.renderFrame = function(forceRender){
if(!this.initialized){
this.initialize();
}
var i, len = this.paths.length;
var mask, path;
for(i=0;i<len;i+=1){
if(this.paths[i].m === -1) {
continue;
}
mask = this.elem.maskManager.viewData[this.paths[i].m];
path = this.paths[i].p;
if(forceRender || this.filterManager._mdf || mask.prop._mdf){
path.setAttribute('d',mask.lastPath);
}
if(forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf){
var dasharrayValue;
if(this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100){
var s = Math.min(this.filterManager.effectElements[7].p.v,this.filterManager.effectElements[8].p.v)/100;
var e = Math.max(this.filterManager.effectElements[7].p.v,this.filterManager.effectElements[8].p.v)/100;
var l = path.getTotalLength();
dasharrayValue = '0 0 0 ' + l*s + ' ';
var lineLength = l*(e-s);
var segment = 1+this.filterManager.effectElements[4].p.v*2*this.filterManager.effectElements[9].p.v/100;
var units = Math.floor(lineLength/segment);
var j;
for(j=0;j<units;j+=1){
dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v*2*this.filterManager.effectElements[9].p.v/100 + ' ';
}
dasharrayValue += '0 ' + l*10 + ' 0 0';
} else {
dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v*2*this.filterManager.effectElements[9].p.v/100;
}
path.setAttribute('stroke-dasharray',dasharrayValue);
}
}
if(forceRender || this.filterManager.effectElements[4].p._mdf){
this.pathMasker.setAttribute('stroke-width',this.filterManager.effectElements[4].p.v*2);
}
if(forceRender || this.filterManager.effectElements[6].p._mdf){
this.pathMasker.setAttribute('opacity',this.filterManager.effectElements[6].p.v);
}
if(this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2){
if(forceRender || this.filterManager.effectElements[3].p._mdf){
var color = this.filterManager.effectElements[3].p.v;
this.pathMasker.setAttribute('stroke','rgb('+bm_floor(color[0]*255)+','+bm_floor(color[1]*255)+','+bm_floor(color[2]*255)+')');
}
}
};
function SVGTritoneFilter(filter, filterManager){
this.filterManager = filterManager;
var feColorMatrix = createNS('feColorMatrix');
feColorMatrix.setAttribute('type','matrix');
feColorMatrix.setAttribute('color-interpolation-filters','linearRGB');
feColorMatrix.setAttribute('values','0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');
feColorMatrix.setAttribute('result','f1');
filter.appendChild(feColorMatrix);
var feComponentTransfer = createNS('feComponentTransfer');
feComponentTransfer.setAttribute('color-interpolation-filters','sRGB');
filter.appendChild(feComponentTransfer);
this.matrixFilter = feComponentTransfer;
var feFuncR = createNS('feFuncR');
feFuncR.setAttribute('type','table');
feComponentTransfer.appendChild(feFuncR);
this.feFuncR = feFuncR;
var feFuncG = createNS('feFuncG');
feFuncG.setAttribute('type','table');
feComponentTransfer.appendChild(feFuncG);
this.feFuncG = feFuncG;
var feFuncB = createNS('feFuncB');
feFuncB.setAttribute('type','table');
feComponentTransfer.appendChild(feFuncB);
this.feFuncB = feFuncB;
}
SVGTritoneFilter.prototype.renderFrame = function(forceRender){
if(forceRender || this.filterManager._mdf){
var color1 = this.filterManager.effectElements[0].p.v;
var color2 = this.filterManager.effectElements[1].p.v;
var color3 = this.filterManager.effectElements[2].p.v;
var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];
var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];
var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];
this.feFuncR.setAttribute('tableValues', tableR);
this.feFuncG.setAttribute('tableValues', tableG);
this.feFuncB.setAttribute('tableValues', tableB);
//var opacity = this.filterManager.effectElements[2].p.v/100;
//this.matrixFilter.setAttribute('values',(colorWhite[0]- colorBlack[0])+' 0 0 0 '+ colorBlack[0] +' '+ (colorWhite[1]- colorBlack[1]) +' 0 0 0 '+ colorBlack[1] +' '+ (colorWhite[2]- colorBlack[2]) +' 0 0 0 '+ colorBlack[2] +' 0 0 0 ' + opacity + ' 0');
}
};
function SVGProLevelsFilter(filter, filterManager){
this.filterManager = filterManager;
var effectElements = this.filterManager.effectElements;
var feComponentTransfer = createNS('feComponentTransfer');
var feFuncR, feFuncG, feFuncB;
if(effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1){
this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);
}
if(effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1){
this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);
}
if(effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1){
this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);
}
if(effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1){
this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);
}
if(this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA){
feComponentTransfer.setAttribute('color-interpolation-filters','sRGB');
filter.appendChild(feComponentTransfer);
feComponentTransfer = createNS('feComponentTransfer');
}
if(effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1){
feComponentTransfer.setAttribute('color-interpolation-filters','sRGB');
filter.appendChild(feComponentTransfer);
this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);
this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);
this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);
}
}
SVGProLevelsFilter.prototype.createFeFunc = function(type, feComponentTransfer) {
var feFunc = createNS(type);
feFunc.setAttribute('type','table');
feComponentTransfer.appendChild(feFunc);
return feFunc;
};
SVGProLevelsFilter.prototype.getTableValue = function(inputBlack, inputWhite, gamma, outputBlack, outputWhite) {
var cnt = 0;
var segments = 256;
var perc;
var min = Math.min(inputBlack, inputWhite);
var max = Math.max(inputBlack, inputWhite);
var table = Array.call(null,{length:segments});
var colorValue;
var pos = 0;
var outputDelta = outputWhite - outputBlack;
var inputDelta = inputWhite - inputBlack;
while(cnt <= 256) {
perc = cnt/256;
if(perc <= min){
colorValue = inputDelta < 0 ? outputWhite : outputBlack;
} else if(perc >= max){
colorValue = inputDelta < 0 ? outputBlack : outputWhite;
} else {
colorValue = (outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma));
}
table[pos++] = colorValue;
cnt += 256/(segments-1);
}
return table.join(' ');
};
SVGProLevelsFilter.prototype.renderFrame = function(forceRender){
if(forceRender || this.filterManager._mdf){
var val, cnt, perc, bezier;
var effectElements = this.filterManager.effectElements;
if(this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)){
val = this.getTableValue(effectElements[3].p.v,effectElements[4].p.v,effectElements[5].p.v,effectElements[6].p.v,effectElements[7].p.v);
this.feFuncRComposed.setAttribute('tableValues',val);
this.feFuncGComposed.setAttribute('tableValues',val);
this.feFuncBComposed.setAttribute('tableValues',val);
}
if(this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)){
val = this.getTableValue(effectElements[10].p.v,effectElements[11].p.v,effectElements[12].p.v,effectElements[13].p.v,effectElements[14].p.v);
this.feFuncR.setAttribute('tableValues',val);
}
if(this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)){
val = this.getTableValue(effectElements[17].p.v,effectElements[18].p.v,effectElements[19].p.v,effectElements[20].p.v,effectElements[21].p.v);
this.feFuncG.setAttribute('tableValues',val);
}
if(this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)){
val = this.getTableValue(effectElements[24].p.v,effectElements[25].p.v,effectElements[26].p.v,effectElements[27].p.v,effectElements[28].p.v);
this.feFuncB.setAttribute('tableValues',val);
}
if(this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)){
val = this.getTableValue(effectElements[31].p.v,effectElements[32].p.v,effectElements[33].p.v,effectElements[34].p.v,effectElements[35].p.v);
this.feFuncA.setAttribute('tableValues',val);
}
}
};
function SVGDropShadowEffect(filter, filterManager) {
var filterSize = filterManager.container.globalData.renderConfig.filterSize
filter.setAttribute('x', filterSize.x);
filter.setAttribute('y', filterSize.y);
filter.setAttribute('width', filterSize.width);
filter.setAttribute('height', filterSize.height);
this.filterManager = filterManager;
var feGaussianBlur = createNS('feGaussianBlur');
feGaussianBlur.setAttribute('in','SourceAlpha');
feGaussianBlur.setAttribute('result','drop_shadow_1');
feGaussianBlur.setAttribute('stdDeviation','0');
this.feGaussianBlur = feGaussianBlur;
filter.appendChild(feGaussianBlur);
var feOffset = createNS('feOffset');
feOffset.setAttribute('dx','25');
feOffset.setAttribute('dy','0');
feOffset.setAttribute('in','drop_shadow_1');
feOffset.setAttribute('result','drop_shadow_2');
this.feOffset = feOffset;
filter.appendChild(feOffset);
var feFlood = createNS('feFlood');
feFlood.setAttribute('flood-color','#00ff00');
feFlood.setAttribute('flood-opacity','1');
feFlood.setAttribute('result','drop_shadow_3');
this.feFlood = feFlood;
filter.appendChild(feFlood);
var feComposite = createNS('feComposite');
feComposite.setAttribute('in','drop_shadow_3');
feComposite.setAttribute('in2','drop_shadow_2');
feComposite.setAttribute('operator','in');
feComposite.setAttribute('result','drop_shadow_4');
filter.appendChild(feComposite);
var feMerge = createNS('feMerge');
filter.appendChild(feMerge);
var feMergeNode;
feMergeNode = createNS('feMergeNode');
feMerge.appendChild(feMergeNode);
feMergeNode = createNS('feMergeNode');
feMergeNode.setAttribute('in','SourceGraphic');
this.feMergeNode = feMergeNode;
this.feMerge = feMerge;
this.originalNodeAdded = false;
feMerge.appendChild(feMergeNode);
}
SVGDropShadowEffect.prototype.renderFrame = function(forceRender){
if(forceRender || this.filterManager._mdf){
if(forceRender || this.filterManager.effectElements[4].p._mdf){
this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);
}
if(forceRender || this.filterManager.effectElements[0].p._mdf){
var col = this.filterManager.effectElements[0].p.v;
this.feFlood.setAttribute('flood-color',rgbToHex(Math.round(col[0]*255),Math.round(col[1]*255),Math.round(col[2]*255)));
}
if(forceRender || this.filterManager.effectElements[1].p._mdf){
this.feFlood.setAttribute('flood-opacity',this.filterManager.effectElements[1].p.v/255);
}
if(forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf){
var distance = this.filterManager.effectElements[3].p.v;
var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;
var x = distance * Math.cos(angle);
var y = distance * Math.sin(angle);
this.feOffset.setAttribute('dx', x);
this.feOffset.setAttribute('dy', y);
}
/*if(forceRender || this.filterManager.effectElements[5].p._mdf){
if(this.filterManager.effectElements[5].p.v === 1 && this.originalNodeAdded) {
this.feMerge.removeChild(this.feMergeNode);
this.originalNodeAdded = false;
} else if(this.filterManager.effectElements[5].p.v === 0 && !this.originalNodeAdded) {
this.feMerge.appendChild(this.feMergeNode);
this.originalNodeAdded = true;
}
}*/
}
};
var _svgMatteSymbols = [];
function SVGMatte3Effect(filterElem, filterManager, elem){
this.initialized = false;
this.filterManager = filterManager;
this.filterElem = filterElem;
this.elem = elem;
elem.matteElement = createNS('g');
elem.matteElement.appendChild(elem.layerElement);
elem.matteElement.appendChild(elem.transformedElement);
elem.baseElement = elem.matteElement;
}
SVGMatte3Effect.prototype.findSymbol = function(mask) {
var i = 0, len = _svgMatteSymbols.length;
while(i < len) {
if(_svgMatteSymbols[i] === mask) {
return _svgMatteSymbols[i];
}
i += 1;
}
return null;
};
SVGMatte3Effect.prototype.replaceInParent = function(mask, symbolId) {
var parentNode = mask.layerElement.parentNode;
if(!parentNode) {
return;
}
var children = parentNode.children;
var i = 0, len = children.length;
while (i < len) {
if (children[i] === mask.layerElement) {
break;
}
i += 1;
}
var nextChild;
if (i <= len - 2) {
nextChild = children[i + 1];
}
var useElem = createNS('use');
useElem.setAttribute('href', '#' + symbolId);
if(nextChild) {
parentNode.insertBefore(useElem, nextChild);
} else {
parentNode.appendChild(useElem);
}
};
SVGMatte3Effect.prototype.setElementAsMask = function(elem, mask) {
if(!this.findSymbol(mask)) {
var symbolId = createElementID();
var masker = createNS('mask');
masker.setAttribute('id', mask.layerId);
masker.setAttribute('mask-type', 'alpha');
_svgMatteSymbols.push(mask);
var defs = elem.globalData.defs;
defs.appendChild(masker);
var symbol = createNS('symbol');
symbol.setAttribute('id', symbolId);
this.replaceInParent(mask, symbolId);
symbol.appendChild(mask.layerElement);
defs.appendChild(symbol);
var useElem = createNS('use');
useElem.setAttribute('href', '#' + symbolId);
masker.appendChild(useElem);
mask.data.hd = false;
mask.show();
}
elem.setMatte(mask.layerId);
};
SVGMatte3Effect.prototype.initialize = function() {
var ind = this.filterManager.effectElements[0].p.v;
var elements = this.elem.comp.elements;
var i = 0, len = elements.length;
while (i < len) {
if (elements[i] && elements[i].data.ind === ind) {
this.setElementAsMask(this.elem, elements[i]);
}
i += 1;
}
this.initialized = true;
};
SVGMatte3Effect.prototype.renderFrame = function() {
if(!this.initialized) {
this.initialize();
}
};
function SVGEffects(elem){
var i, len = elem.data.ef ? elem.data.ef.length : 0;
var filId = createElementID();
var fil = filtersFactory.createFilter(filId);
var count = 0;
this.filters = [];
var filterManager;
for(i=0;i<len;i+=1){
filterManager = null;
if(elem.data.ef[i].ty === 20){
count += 1;
filterManager = new SVGTintFilter(fil, elem.effectsManager.effectElements[i]);
}else if(elem.data.ef[i].ty === 21){
count += 1;
filterManager = new SVGFillFilter(fil, elem.effectsManager.effectElements[i]);
}else if(elem.data.ef[i].ty === 22){
filterManager = new SVGStrokeEffect(elem, elem.effectsManager.effectElements[i]);
}else if(elem.data.ef[i].ty === 23){
count += 1;
filterManager = new SVGTritoneFilter(fil, elem.effectsManager.effectElements[i]);
}else if(elem.data.ef[i].ty === 24){
count += 1;
filterManager = new SVGProLevelsFilter(fil, elem.effectsManager.effectElements[i]);
}else if(elem.data.ef[i].ty === 25){
count += 1;
filterManager = new SVGDropShadowEffect(fil, elem.effectsManager.effectElements[i]);
}else if(elem.data.ef[i].ty === 28){
//count += 1;
filterManager = new SVGMatte3Effect(fil, elem.effectsManager.effectElements[i], elem);
}else if(elem.data.ef[i].ty === 29){
count += 1;
filterManager = new SVGGaussianBlurEffect(fil, elem.effectsManager.effectElements[i]);
}
if(filterManager) {
this.filters.push(filterManager);
}
}
if(count){
elem.globalData.defs.appendChild(fil);
elem.layerElement.setAttribute('filter','url(' + locationHref + '#'+filId+')');
}
if (this.filters.length) {
elem.addRenderableComponent(this);
}
}
SVGEffects.prototype.renderFrame = function(_isFirstFrame){
var i, len = this.filters.length;
for(i=0;i<len;i+=1){
this.filters[i].renderFrame(_isFirstFrame);
}
};
function CVContextData() {
this.saved = [];
this.cArrPos = 0;
this.cTr = new Matrix();
this.cO = 1;
var i, len = 15;
this.savedOp = createTypedArray('float32', len);
for(i=0;i<len;i+=1){
this.saved[i] = createTypedArray('float32', 16);
}
this._length = len;
}
CVContextData.prototype.duplicate = function() {
var newLength = this._length * 2;
var currentSavedOp = this.savedOp;
this.savedOp = createTypedArray('float32', newLength);
this.savedOp.set(currentSavedOp);
var i = 0;
for(i = this._length; i < newLength; i += 1) {
this.saved[i] = createTypedArray('float32', 16);
}
this._length = newLength;
};
CVContextData.prototype.reset = function() {
this.cArrPos = 0;
this.cTr.reset();
this.cO = 1;
};
function CVBaseElement(){
}
CVBaseElement.prototype = {
createElements: function(){},
initRendererElement: function(){},
createContainerElements: function(){
this.canvasContext = this.globalData.canvasContext;
this.renderableEffectsManager = new CVEffects(this);
},
createContent: function(){},
setBlendMode: function(){
var globalData = this.globalData;
if(globalData.blendMode !== this.data.bm) {
globalData.blendMode = this.data.bm;
var blendModeValue = getBlendMode(this.data.bm);
globalData.canvasContext.globalCompositeOperation = blendModeValue;
}
},
createRenderableComponents: function(){
this.maskManager = new CVMaskElement(this.data, this);
},
hideElement: function(){
if (!this.hidden && (!this.isInRange || this.isTransparent)) {
this.hidden = true;
}
},
showElement: function(){
if (this.isInRange && !this.isTransparent){
this.hidden = false;
this._isFirstFrame = true;
this.maskManager._isFirstFrame = true;
}
},
renderFrame: function() {
if (this.hidden || this.data.hd) {
return;
}
this.renderTransform();
this.renderRenderable();
this.setBlendMode();
var forceRealStack = this.data.ty === 0;
this.globalData.renderer.save(forceRealStack);
this.globalData.renderer.ctxTransform(this.finalTransform.mat.props);
this.globalData.renderer.ctxOpacity(this.finalTransform.mProp.o.v);
this.renderInnerContent();
this.globalData.renderer.restore(forceRealStack);
if(this.maskManager.hasMasks) {
this.globalData.renderer.restore(true);
}
if (this._isFirstFrame) {
this._isFirstFrame = false;
}
},
destroy: function(){
this.canvasContext = null;
this.data = null;
this.globalData = null;
this.maskManager.destroy();
},
mHelper: new Matrix()
};
CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;
CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;
function CVImageElement(data, globalData, comp){
this.assetData = globalData.getAssetData(data.refId);
this.img = globalData.imageLoader.getImage(this.assetData);
this.initElement(data,globalData,comp);
}
extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);
CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;
CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;
CVImageElement.prototype.createContent = function(){
if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {
var canvas = createTag('canvas');
canvas.width = this.assetData.w;
canvas.height = this.assetData.h;
var ctx = canvas.getContext('2d');
var imgW = this.img.width;
var imgH = this.img.height;
var imgRel = imgW / imgH;
var canvasRel = this.assetData.w/this.assetData.h;
var widthCrop, heightCrop;
var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;
if((imgRel > canvasRel && par === 'xMidYMid slice') || (imgRel < canvasRel && par !== 'xMidYMid slice')) {
heightCrop = imgH;
widthCrop = heightCrop*canvasRel;
} else {
widthCrop = imgW;
heightCrop = widthCrop/canvasRel;
}
ctx.drawImage(this.img,(imgW-widthCrop)/2,(imgH-heightCrop)/2,widthCrop,heightCrop,0,0,this.assetData.w,this.assetData.h);
this.img = canvas;
}
};
CVImageElement.prototype.renderInnerContent = function(parentMatrix){
this.canvasContext.drawImage(this.img, 0, 0);
};
CVImageElement.prototype.destroy = function(){
this.img = null;
};
function CVCompElement(data, globalData, comp) {
this.completeLayers = false;
this.layers = data.layers;
this.pendingElements = [];
this.elements = createSizedArray(this.layers.length);
this.initElement(data, globalData, comp);
this.tm = data.tm ? PropertyFactory.getProp(this,data.tm,0,globalData.frameRate, this) : {_placeholder:true};
}
extendPrototype([CanvasRenderer, ICompElement, CVBaseElement], CVCompElement);
CVCompElement.prototype.renderInnerContent = function() {
var ctx = this.canvasContext;
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(this.data.w, 0);
ctx.lineTo(this.data.w, this.data.h);
ctx.lineTo(0, this.data.h);
ctx.lineTo(0, 0);
ctx.clip();
var i,len = this.layers.length;
for( i = len - 1; i >= 0; i -= 1 ){
if(this.completeLayers || this.elements[i]){
this.elements[i].renderFrame();
}
}
};
CVCompElement.prototype.destroy = function(){
var i,len = this.layers.length;
for( i = len - 1; i >= 0; i -= 1 ){
if(this.elements[i]) {
this.elements[i].destroy();
}
}
this.layers = null;
this.elements = null;
};
function CVMaskElement(data,element){
this.data = data;
this.element = element;
this.masksProperties = this.data.masksProperties || [];
this.viewData = createSizedArray(this.masksProperties.length);
var i, len = this.masksProperties.length, hasMasks = false;
for (i = 0; i < len; i++) {
if(this.masksProperties[i].mode !== 'n'){
hasMasks = true;
}
this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element,this.masksProperties[i],3);
}
this.hasMasks = hasMasks;
if(hasMasks) {
this.element.addRenderableComponent(this);
}
}
CVMaskElement.prototype.renderFrame = function () {
if(!this.hasMasks){
return;
}
var transform = this.element.finalTransform.mat;
var ctx = this.element.canvasContext;
var i, len = this.masksProperties.length;
var pt,pts,data;
ctx.beginPath();
for (i = 0; i < len; i++) {
if(this.masksProperties[i].mode !== 'n'){
if (this.masksProperties[i].inv) {
ctx.moveTo(0, 0);
ctx.lineTo(this.element.globalData.compSize.w, 0);
ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);
ctx.lineTo(0, this.element.globalData.compSize.h);
ctx.lineTo(0, 0);
}
data = this.viewData[i].v;
pt = transform.applyToPointArray(data.v[0][0],data.v[0][1],0);
ctx.moveTo(pt[0], pt[1]);
var j, jLen = data._length;
for (j = 1; j < jLen; j++) {
pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);
ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);
}
pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);
ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);
}
}
this.element.globalData.renderer.save(true);
ctx.clip();
};
CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;
CVMaskElement.prototype.destroy = function(){
this.element = null;
};
function CVShapeElement(data, globalData, comp) {
this.shapes = [];
this.shapesData = data.shapes;
this.stylesList = [];
this.itemsData = [];
this.prevViewData = [];
this.shapeModifiers = [];
this.processedElements = [];
this.transformsManager = new ShapeTransformManager();
this.initElement(data, globalData, comp);
}
extendPrototype([BaseElement,TransformElement,CVBaseElement,IShapeElement,HierarchyElement,FrameElement,RenderableElement], CVShapeElement);
CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;
CVShapeElement.prototype.transformHelper = {opacity:1,_opMdf:false};
CVShapeElement.prototype.dashResetter = [];
CVShapeElement.prototype.createContent = function(){
this.searchShapes(this.shapesData,this.itemsData,this.prevViewData, true, []);
};
CVShapeElement.prototype.createStyleElement = function(data, transforms) {
var styleElem = {
data: data,
type: data.ty,
preTransforms: this.transformsManager.addTransformSequence(transforms),
transforms: [],
elements: [],
closed: data.hd === true
};
var elementData = {};
if(data.ty == 'fl' || data.ty == 'st'){
elementData.c = PropertyFactory.getProp(this,data.c,1,255,this);
if(!elementData.c.k){
styleElem.co = 'rgb('+bm_floor(elementData.c.v[0])+','+bm_floor(elementData.c.v[1])+','+bm_floor(elementData.c.v[2])+')';
}
} else if (data.ty === 'gf' || data.ty === 'gs') {
elementData.s = PropertyFactory.getProp(this,data.s,1,null,this);
elementData.e = PropertyFactory.getProp(this,data.e,1,null,this);
elementData.h = PropertyFactory.getProp(this,data.h||{k:0},0,0.01,this);
elementData.a = PropertyFactory.getProp(this,data.a||{k:0},0,degToRads,this);
elementData.g = new GradientProperty(this,data.g,this);
}
elementData.o = PropertyFactory.getProp(this,data.o,0,0.01,this);
if(data.ty == 'st' || data.ty == 'gs') {
styleElem.lc = this.lcEnum[data.lc] || 'round';
styleElem.lj = this.ljEnum[data.lj] || 'round';
if(data.lj == 1) {
styleElem.ml = data.ml;
}
elementData.w = PropertyFactory.getProp(this,data.w,0,null,this);
if(!elementData.w.k){
styleElem.wi = elementData.w.v;
}
if(data.d){
var d = new DashProperty(this,data.d,'canvas', this);
elementData.d = d;
if(!elementData.d.k){
styleElem.da = elementData.d.dashArray;
styleElem.do = elementData.d.dashoffset[0];
}
}
} else {
styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';
}
this.stylesList.push(styleElem);
elementData.style = styleElem;
return elementData;
};
CVShapeElement.prototype.createGroupElement = function(data) {
var elementData = {
it: [],
prevViewData: []
};
return elementData;
};
CVShapeElement.prototype.createTransformElement = function(data) {
var elementData = {
transform : {
opacity: 1,
_opMdf:false,
key: this.transformsManager.getNewKey(),
op: PropertyFactory.getProp(this,data.o,0,0.01,this),
mProps: TransformPropertyFactory.getTransformProperty(this,data,this)
}
};
return elementData;
};
CVShapeElement.prototype.createShapeElement = function(data) {
var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);
this.shapes.push(elementData);
this.addShapeToModifiers(elementData);
return elementData;
};
CVShapeElement.prototype.reloadShapes = function() {
this._isFirstFrame = true;
var i, len = this.itemsData.length;
for (i = 0; i < len; i += 1) {
this.prevViewData[i] = this.itemsData[i];
}
this.searchShapes(this.shapesData,this.itemsData,this.prevViewData, true, []);
len = this.dynamicProperties.length;
for (i = 0; i < len; i += 1) {
this.dynamicProperties[i].getValue();
}
this.renderModifiers();
this.transformsManager.processSequences(this._isFirstFrame);
};
CVShapeElement.prototype.addTransformToStyleList = function(transform) {
var i, len = this.stylesList.length;
for (i = 0; i < len; i += 1) {
if(!this.stylesList[i].closed) {
this.stylesList[i].transforms.push(transform);
}
}
}
CVShapeElement.prototype.removeTransformFromStyleList = function() {
var i, len = this.stylesList.length;
for (i = 0; i < len; i += 1) {
if(!this.stylesList[i].closed) {
this.stylesList[i].transforms.pop();
}
}
}
CVShapeElement.prototype.closeStyles = function(styles) {
var i, len = styles.length, j, jLen;
for (i = 0; i < len; i += 1) {
styles[i].closed = true;
}
}
CVShapeElement.prototype.searchShapes = function(arr,itemsData, prevViewData, shouldRender, transforms){
var i, len = arr.length - 1;
var j, jLen;
var ownStyles = [], ownModifiers = [], processedPos, modifier, currentTransform;
var ownTransforms = [].concat(transforms);
for(i=len;i>=0;i-=1){
processedPos = this.searchProcessedElement(arr[i]);
if(!processedPos){
arr[i]._shouldRender = shouldRender;
} else {
itemsData[i] = prevViewData[processedPos - 1];
}
if(arr[i].ty == 'fl' || arr[i].ty == 'st'|| arr[i].ty == 'gf'|| arr[i].ty == 'gs'){
if(!processedPos){
itemsData[i] = this.createStyleElement(arr[i], ownTransforms);
} else {
itemsData[i].style.closed = false;
}
ownStyles.push(itemsData[i].style);
}else if(arr[i].ty == 'gr'){
if(!processedPos){
itemsData[i] = this.createGroupElement(arr[i]);
} else {
jLen = itemsData[i].it.length;
for(j=0;j<jLen;j+=1){
itemsData[i].prevViewData[j] = itemsData[i].it[j];
}
}
this.searchShapes(arr[i].it,itemsData[i].it,itemsData[i].prevViewData, shouldRender, ownTransforms);
}else if(arr[i].ty == 'tr'){
if(!processedPos){
currentTransform = this.createTransformElement(arr[i]);
itemsData[i] = currentTransform;
}
ownTransforms.push(itemsData[i]);
this.addTransformToStyleList(itemsData[i]);
}else if(arr[i].ty == 'sh' || arr[i].ty == 'rc' || arr[i].ty == 'el' || arr[i].ty == 'sr'){
if(!processedPos){
itemsData[i] = this.createShapeElement(arr[i]);
}
}else if(arr[i].ty == 'tm' || arr[i].ty == 'rd'){
if(!processedPos){
modifier = ShapeModifiers.getModifier(arr[i].ty);
modifier.init(this,arr[i]);
itemsData[i] = modifier;
this.shapeModifiers.push(modifier);
} else {
modifier = itemsData[i];
modifier.closed = false;
}
ownModifiers.push(modifier);
} else if(arr[i].ty == 'rp'){
if(!processedPos){
modifier = ShapeModifiers.getModifier(arr[i].ty);
itemsData[i] = modifier;
modifier.init(this,arr,i,itemsData);
this.shapeModifiers.push(modifier);
shouldRender = false;
}else{
modifier = itemsData[i];
modifier.closed = true;
}
ownModifiers.push(modifier);
}
this.addProcessedElement(arr[i], i + 1);
}
this.removeTransformFromStyleList();
this.closeStyles(ownStyles);
len = ownModifiers.length;
for(i=0;i<len;i+=1){
ownModifiers[i].closed = true;
}
};
CVShapeElement.prototype.renderInnerContent = function() {
this.transformHelper.opacity = 1;
this.transformHelper._opMdf = false;
this.renderModifiers();
this.transformsManager.processSequences(this._isFirstFrame);
this.renderShape(this.transformHelper,this.shapesData,this.itemsData,true);
};
CVShapeElement.prototype.renderShapeTransform = function(parentTransform, groupTransform) {
var props, groupMatrix;
if(parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {
groupTransform.opacity = parentTransform.opacity;
groupTransform.opacity *= groupTransform.op.v;
groupTransform._opMdf = true;
}
};
CVShapeElement.prototype.drawLayer = function() {
var i, len = this.stylesList.length;
var j, jLen, k, kLen,elems,nodes, renderer = this.globalData.renderer, ctx = this.globalData.canvasContext, type, currentStyle;
for(i=0;i<len;i+=1){
currentStyle = this.stylesList[i];
type = currentStyle.type;
//Skipping style when
//Stroke width equals 0
//style should not be rendered (extra unused repeaters)
//current opacity equals 0
//global opacity equals 0
if(((type === 'st' || type === 'gs') && currentStyle.wi === 0) || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0){
continue;
}
renderer.save();
elems = currentStyle.elements;
if(type === 'st' || type === 'gs'){
ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;
ctx.lineWidth = currentStyle.wi;
ctx.lineCap = currentStyle.lc;
ctx.lineJoin = currentStyle.lj;
ctx.miterLimit = currentStyle.ml || 0;
} else {
ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;
}
renderer.ctxOpacity(currentStyle.coOp);
if(type !== 'st' && type !== 'gs'){
ctx.beginPath();
}
renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);
jLen = elems.length;
for(j=0;j<jLen;j+=1){
if(type === 'st' || type === 'gs'){
ctx.beginPath();
if(currentStyle.da){
ctx.setLineDash(currentStyle.da);
ctx.lineDashOffset = currentStyle.do;
}
}
nodes = elems[j].trNodes;
kLen = nodes.length;
for(k=0;k<kLen;k+=1){
if(nodes[k].t == 'm'){
ctx.moveTo(nodes[k].p[0],nodes[k].p[1]);
}else if(nodes[k].t == 'c'){
ctx.bezierCurveTo(nodes[k].pts[0],nodes[k].pts[1],nodes[k].pts[2],nodes[k].pts[3],nodes[k].pts[4],nodes[k].pts[5]);
}else{
ctx.closePath();
}
}
if(type === 'st' || type === 'gs'){
ctx.stroke();
if(currentStyle.da){
ctx.setLineDash(this.dashResetter);
}
}
}
if(type !== 'st' && type !== 'gs'){
ctx.fill(currentStyle.r);
}
renderer.restore();
}
};
CVShapeElement.prototype.renderShape = function(parentTransform,items,data,isMain){
var i, len = items.length - 1;
var groupTransform;
groupTransform = parentTransform;
for(i=len;i>=0;i-=1){
if(items[i].ty == 'tr'){
groupTransform = data[i].transform;
this.renderShapeTransform(parentTransform, groupTransform);
}else if(items[i].ty == 'sh' || items[i].ty == 'el' || items[i].ty == 'rc' || items[i].ty == 'sr'){
this.renderPath(items[i],data[i]);
}else if(items[i].ty == 'fl'){
this.renderFill(items[i],data[i],groupTransform);
}else if(items[i].ty == 'st'){
this.renderStroke(items[i],data[i],groupTransform);
}else if(items[i].ty == 'gf' || items[i].ty == 'gs'){
this.renderGradientFill(items[i],data[i],groupTransform);
}else if(items[i].ty == 'gr'){
this.renderShape(groupTransform,items[i].it,data[i].it);
}else if(items[i].ty == 'tm'){
//
}
}
if(isMain){
this.drawLayer();
}
};
CVShapeElement.prototype.renderStyledShape = function(styledShape, shape){
if(this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {
var shapeNodes = styledShape.trNodes;
var paths = shape.paths;
var i, len, j, jLen = paths._length;
shapeNodes.length = 0;
var groupTransformMat = styledShape.transforms.finalTransform;
for (j = 0; j < jLen; j += 1) {
var pathNodes = paths.shapes[j];
if(pathNodes && pathNodes.v){
len = pathNodes._length;
for (i = 1; i < len; i += 1) {
if (i === 1) {
shapeNodes.push({
t: 'm',
p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)
});
}
shapeNodes.push({
t: 'c',
pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])
});
}
if (len === 1) {
shapeNodes.push({
t: 'm',
p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)
});
}
if (pathNodes.c && len) {
shapeNodes.push({
t: 'c',
pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])
});
shapeNodes.push({
t: 'z'
});
}
}
}
styledShape.trNodes = shapeNodes;
}
}
CVShapeElement.prototype.renderPath = function(pathData,itemData){
if(pathData.hd !== true && pathData._shouldRender) {
var i, len = itemData.styledShapes.length;
for (i = 0; i < len; i += 1) {
this.renderStyledShape(itemData.styledShapes[i], itemData.sh);
}
}
};
CVShapeElement.prototype.renderFill = function(styleData,itemData, groupTransform){
var styleElem = itemData.style;
if (itemData.c._mdf || this._isFirstFrame) {
styleElem.co = 'rgb('
+ bm_floor(itemData.c.v[0]) + ','
+ bm_floor(itemData.c.v[1]) + ','
+ bm_floor(itemData.c.v[2]) + ')';
}
if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {
styleElem.coOp = itemData.o.v * groupTransform.opacity;
}
};
CVShapeElement.prototype.renderGradientFill = function(styleData,itemData, groupTransform){
var styleElem = itemData.style;
if(!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || (styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf))) {
var ctx = this.globalData.canvasContext;
var grd;
var pt1 = itemData.s.v, pt2 = itemData.e.v;
if (styleData.t === 1) {
grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);
} else {
var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));
var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);
var percent = itemData.h.v >= 1 ? 0.99 : itemData.h.v <= -1 ? -0.99: itemData.h.v;
var dist = rad * percent;
var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];
var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];
var grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);
}
var i, len = styleData.g.p;
var cValues = itemData.g.c;
var opacity = 1;
for (i = 0; i < len; i += 1){
if(itemData.g._hasOpacity && itemData.g._collapsable) {
opacity = itemData.g.o[i*2 + 1];
}
grd.addColorStop(cValues[i * 4] / 100,'rgba('+ cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ','+cValues[i * 4 + 3] + ',' + opacity + ')');
}
styleElem.grd = grd;
}
styleElem.coOp = itemData.o.v*groupTransform.opacity;
};
CVShapeElement.prototype.renderStroke = function(styleData,itemData, groupTransform){
var styleElem = itemData.style;
var d = itemData.d;
if(d && (d._mdf || this._isFirstFrame)){
styleElem.da = d.dashArray;
styleElem.do = d.dashoffset[0];
}
if(itemData.c._mdf || this._isFirstFrame){
styleElem.co = 'rgb('+bm_floor(itemData.c.v[0])+','+bm_floor(itemData.c.v[1])+','+bm_floor(itemData.c.v[2])+')';
}
if(itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame){
styleElem.coOp = itemData.o.v*groupTransform.opacity;
}
if(itemData.w._mdf || this._isFirstFrame){
styleElem.wi = itemData.w.v;
}
};
CVShapeElement.prototype.destroy = function(){
this.shapesData = null;
this.globalData = null;
this.canvasContext = null;
this.stylesList.length = 0;
this.itemsData.length = 0;
};
function CVSolidElement(data, globalData, comp) {
this.initElement(data,globalData,comp);
}
extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);
CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;
CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;
CVSolidElement.prototype.renderInnerContent = function() {
var ctx = this.canvasContext;
ctx.fillStyle = this.data.sc;
ctx.fillRect(0, 0, this.data.sw, this.data.sh);
//
};
function CVTextElement(data, globalData, comp){
this.textSpans = [];
this.yOffset = 0;
this.fillColorAnim = false;
this.strokeColorAnim = false;
this.strokeWidthAnim = false;
this.stroke = false;
this.fill = false;
this.justifyOffset = 0;
this.currentRender = null;
this.renderType = 'canvas';
this.values = {
fill: 'rgba(0,0,0,0)',
stroke: 'rgba(0,0,0,0)',
sWidth: 0,
fValue: ''
};
this.initElement(data,globalData,comp);
}
extendPrototype([BaseElement,TransformElement,CVBaseElement,HierarchyElement,FrameElement,RenderableElement,ITextElement], CVTextElement);
CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');
CVTextElement.prototype.buildNewText = function(){
var documentData = this.textProperty.currentData;
this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);
var hasFill = false;
if(documentData.fc) {
hasFill = true;
this.values.fill = this.buildColor(documentData.fc);
}else{
this.values.fill = 'rgba(0,0,0,0)';
}
this.fill = hasFill;
var hasStroke = false;
if(documentData.sc){
hasStroke = true;
this.values.stroke = this.buildColor(documentData.sc);
this.values.sWidth = documentData.sw;
}
var fontData = this.globalData.fontManager.getFontByName(documentData.f);
var i, len;
var letters = documentData.l;
var matrixHelper = this.mHelper;
this.stroke = hasStroke;
this.values.fValue = documentData.finalSize + 'px '+ this.globalData.fontManager.getFontByName(documentData.f).fFamily;
len = documentData.finalText.length;
//this.tHelper.font = this.values.fValue;
var charData, shapeData, k, kLen, shapes, j, jLen, pathNodes, commands, pathArr, singleShape = this.data.singleShape;
var trackingOffset = documentData.tr/1000*documentData.finalSize;
var xPos = 0, yPos = 0, firstLine = true;
var cnt = 0;
for (i = 0; i < len; i += 1) {
charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);
shapeData = charData && charData.data || {};
matrixHelper.reset();
if(singleShape && letters[i].n) {
xPos = -trackingOffset;
yPos += documentData.yOffset;
yPos += firstLine ? 1 : 0;
firstLine = false;
}
shapes = shapeData.shapes ? shapeData.shapes[0].it : [];
jLen = shapes.length;
matrixHelper.scale(documentData.finalSize/100,documentData.finalSize/100);
if(singleShape){
this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);
}
commands = createSizedArray(jLen);
for(j=0;j<jLen;j+=1){
kLen = shapes[j].ks.k.i.length;
pathNodes = shapes[j].ks.k;
pathArr = [];
for(k=1;k<kLen;k+=1){
if(k==1){
pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0],pathNodes.v[0][1],0),matrixHelper.applyToY(pathNodes.v[0][0],pathNodes.v[0][1],0));
}
pathArr.push(matrixHelper.applyToX(pathNodes.o[k-1][0],pathNodes.o[k-1][1],0),matrixHelper.applyToY(pathNodes.o[k-1][0],pathNodes.o[k-1][1],0),matrixHelper.applyToX(pathNodes.i[k][0],pathNodes.i[k][1],0),matrixHelper.applyToY(pathNodes.i[k][0],pathNodes.i[k][1],0),matrixHelper.applyToX(pathNodes.v[k][0],pathNodes.v[k][1],0),matrixHelper.applyToY(pathNodes.v[k][0],pathNodes.v[k][1],0));
}
pathArr.push(matrixHelper.applyToX(pathNodes.o[k-1][0],pathNodes.o[k-1][1],0),matrixHelper.applyToY(pathNodes.o[k-1][0],pathNodes.o[k-1][1],0),matrixHelper.applyToX(pathNodes.i[0][0],pathNodes.i[0][1],0),matrixHelper.applyToY(pathNodes.i[0][0],pathNodes.i[0][1],0),matrixHelper.applyToX(pathNodes.v[0][0],pathNodes.v[0][1],0),matrixHelper.applyToY(pathNodes.v[0][0],pathNodes.v[0][1],0));
commands[j] = pathArr;
}
if(singleShape){
xPos += letters[i].l;
xPos += trackingOffset;
}
if(this.textSpans[cnt]){
this.textSpans[cnt].elem = commands;
} else {
this.textSpans[cnt] = {elem: commands};
}
cnt +=1;
}
};
CVTextElement.prototype.renderInnerContent = function(){
var ctx = this.canvasContext;
var finalMat = this.finalTransform.mat.props;
ctx.font = this.values.fValue;
ctx.lineCap = 'butt';
ctx.lineJoin = 'miter';
ctx.miterLimit = 4;
if(!this.data.singleShape){
this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);
}
var i,len, j, jLen, k, kLen;
var renderedLetters = this.textAnimator.renderedLetters;
var letters = this.textProperty.currentData.l;
len = letters.length;
var renderedLetter;
var lastFill = null, lastStroke = null, lastStrokeW = null, commands, pathArr;
for(i=0;i<len;i+=1){
if(letters[i].n){
continue;
}
renderedLetter = renderedLetters[i];
if(renderedLetter){
this.globalData.renderer.save();
this.globalData.renderer.ctxTransform(renderedLetter.p);
this.globalData.renderer.ctxOpacity(renderedLetter.o);
}
if(this.fill){
if(renderedLetter && renderedLetter.fc){
if(lastFill !== renderedLetter.fc){
lastFill = renderedLetter.fc;
ctx.fillStyle = renderedLetter.fc;
}
}else if(lastFill !== this.values.fill){
lastFill = this.values.fill;
ctx.fillStyle = this.values.fill;
}
commands = this.textSpans[i].elem;
jLen = commands.length;
this.globalData.canvasContext.beginPath();
for(j=0;j<jLen;j+=1) {
pathArr = commands[j];
kLen = pathArr.length;
this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);
for (k = 2; k < kLen; k += 6) {
this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);
}
}
this.globalData.canvasContext.closePath();
this.globalData.canvasContext.fill();
///ctx.fillText(this.textSpans[i].val,0,0);
}
if(this.stroke){
if(renderedLetter && renderedLetter.sw){
if(lastStrokeW !== renderedLetter.sw){
lastStrokeW = renderedLetter.sw;
ctx.lineWidth = renderedLetter.sw;
}
}else if(lastStrokeW !== this.values.sWidth){
lastStrokeW = this.values.sWidth;
ctx.lineWidth = this.values.sWidth;
}
if(renderedLetter && renderedLetter.sc){
if(lastStroke !== renderedLetter.sc){
lastStroke = renderedLetter.sc;
ctx.strokeStyle = renderedLetter.sc;
}
}else if(lastStroke !== this.values.stroke){
lastStroke = this.values.stroke;
ctx.strokeStyle = this.values.stroke;
}
commands = this.textSpans[i].elem;
jLen = commands.length;
this.globalData.canvasContext.beginPath();
for(j=0;j<jLen;j+=1) {
pathArr = commands[j];
kLen = pathArr.length;
this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);
for (k = 2; k < kLen; k += 6) {
this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);
}
}
this.globalData.canvasContext.closePath();
this.globalData.canvasContext.stroke();
///ctx.strokeText(letters[i].val,0,0);
}
if(renderedLetter) {
this.globalData.renderer.restore();
}
}
};
function CVEffects() {
}
CVEffects.prototype.renderFrame = function(){};
function HBaseElement(data,globalData,comp){}
HBaseElement.prototype = {
checkBlendMode: function(){},
initRendererElement: function(){
this.baseElement = createTag(this.data.tg || 'div');
if(this.data.hasMask) {
this.svgElement = createNS('svg');
this.layerElement = createNS('g');
this.maskedElement = this.layerElement;
this.svgElement.appendChild(this.layerElement);
this.baseElement.appendChild(this.svgElement);
} else {
this.layerElement = this.baseElement;
}
styleDiv(this.baseElement);
},
createContainerElements: function(){
this.renderableEffectsManager = new CVEffects(this);
this.transformedElement = this.baseElement;
this.maskedElement = this.layerElement;
if (this.data.ln) {
this.layerElement.setAttribute('id',this.data.ln);
}
if (this.data.cl) {
this.layerElement.setAttribute('class', this.data.cl);
}
if (this.data.bm !== 0) {
this.setBlendMode();
}
},
renderElement: function() {
if(this.finalTransform._matMdf){
this.transformedElement.style.transform = this.transformedElement.style.webkitTransform = this.finalTransform.mat.toCSS();
}
if(this.finalTransform._opMdf){
this.transformedElement.style.opacity = this.finalTransform.mProp.o.v;
}
},
renderFrame: function() {
//If it is exported as hidden (data.hd === true) no need to render
//If it is not visible no need to render
if (this.data.hd || this.hidden) {
return;
}
this.renderTransform();
this.renderRenderable();
this.renderElement();
this.renderInnerContent();
if (this._isFirstFrame) {
this._isFirstFrame = false;
}
},
destroy: function(){
this.layerElement = null;
this.transformedElement = null;
if(this.matteElement) {
this.matteElement = null;
}
if(this.maskManager) {
this.maskManager.destroy();
this.maskManager = null;
}
},
createRenderableComponents: function(){
this.maskManager = new MaskElement(this.data, this, this.globalData);
},
addEffects: function(){
},
setMatte: function(){}
};
HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;
HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;
HBaseElement.prototype.buildElementParenting = HybridRenderer.prototype.buildElementParenting;
function HSolidElement(data,globalData,comp){
this.initElement(data,globalData,comp);
}
extendPrototype([BaseElement,TransformElement,HBaseElement,HierarchyElement,FrameElement,RenderableDOMElement], HSolidElement);
HSolidElement.prototype.createContent = function(){
var rect;
if(this.data.hasMask){
rect = createNS('rect');
rect.setAttribute('width',this.data.sw);
rect.setAttribute('height',this.data.sh);
rect.setAttribute('fill',this.data.sc);
this.svgElement.setAttribute('width',this.data.sw);
this.svgElement.setAttribute('height',this.data.sh);
} else {
rect = createTag('div');
rect.style.width = this.data.sw + 'px';
rect.style.height = this.data.sh + 'px';
rect.style.backgroundColor = this.data.sc;
}
this.layerElement.appendChild(rect);
};
function HCompElement(data,globalData,comp){
this.layers = data.layers;
this.supports3d = !data.hasMask;
this.completeLayers = false;
this.pendingElements = [];
this.elements = this.layers ? createSizedArray(this.layers.length) : [];
this.initElement(data,globalData,comp);
this.tm = data.tm ? PropertyFactory.getProp(this,data.tm,0,globalData.frameRate,this) : {_placeholder:true};
}
extendPrototype([HybridRenderer, ICompElement, HBaseElement], HCompElement);
HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;
HCompElement.prototype.createContainerElements = function(){
this._createBaseContainerElements();
//divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';
if(this.data.hasMask){
this.svgElement.setAttribute('width',this.data.w);
this.svgElement.setAttribute('height',this.data.h);
this.transformedElement = this.baseElement;
} else {
this.transformedElement = this.layerElement;
}
};
HCompElement.prototype.addTo3dContainer = function(elem,pos) {
var j = 0;
var nextElement;
while(j<pos){
if(this.elements[j] && this.elements[j].getBaseElement){
nextElement = this.elements[j].getBaseElement();
}
j += 1;
}
if(nextElement){
this.layerElement.insertBefore(elem, nextElement);
} else {
this.layerElement.appendChild(elem);
}
}
function HShapeElement(data,globalData,comp){
//List of drawable elements
this.shapes = [];
// Full shape data
this.shapesData = data.shapes;
//List of styles that will be applied to shapes
this.stylesList = [];
//List of modifiers that will be applied to shapes
this.shapeModifiers = [];
//List of items in shape tree
this.itemsData = [];
//List of items in previous shape tree
this.processedElements = [];
// List of animated components
this.animatedContents = [];
this.shapesContainer = createNS('g');
this.initElement(data,globalData,comp);
//Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.
// List of elements that have been created
this.prevViewData = [];
this.currentBBox = {
x:999999,
y: -999999,
h: 0,
w: 0
};
}
extendPrototype([BaseElement,TransformElement,HSolidElement,SVGShapeElement,HBaseElement,HierarchyElement,FrameElement,RenderableElement], HShapeElement);
HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;
HShapeElement.prototype.createContent = function(){
var cont;
this.baseElement.style.fontSize = 0;
if (this.data.hasMask) {
this.layerElement.appendChild(this.shapesContainer);
cont = this.svgElement;
} else {
cont = createNS('svg');
var size = this.comp.data ? this.comp.data : this.globalData.compSize;
cont.setAttribute('width',size.w);
cont.setAttribute('height',size.h);
cont.appendChild(this.shapesContainer);
this.layerElement.appendChild(cont);
}
this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.shapesContainer,0, [], true);
this.filterUniqueShapes();
this.shapeCont = cont;
};
HShapeElement.prototype.getTransformedPoint = function(transformers, point) {
var i, len = transformers.length;
for(i = 0; i < len; i += 1) {
point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);
}
return point;
}
HShapeElement.prototype.calculateShapeBoundingBox = function(item, boundingBox) {
var shape = item.sh.v;
var transformers = item.transformers;
var i, len = shape._length, vPoint, oPoint, nextIPoint, nextVPoint, bounds;
if (len <= 1) {
return;
}
for (i = 0; i < len - 1; i += 1) {
vPoint = this.getTransformedPoint(transformers, shape.v[i]);
oPoint = this.getTransformedPoint(transformers, shape.o[i]);
nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);
nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);
this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);
}
if(shape.c) {
vPoint = this.getTransformedPoint(transformers, shape.v[i]);
oPoint = this.getTransformedPoint(transformers, shape.o[i]);
nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);
nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);
this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);
}
}
HShapeElement.prototype.checkBounds = function(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {
this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);
var bounds = this.shapeBoundingBox;
boundingBox.x = bm_min(bounds.left, boundingBox.x);
boundingBox.xMax = bm_max(bounds.right, boundingBox.xMax);
boundingBox.y = bm_min(bounds.top, boundingBox.y);
boundingBox.yMax = bm_max(bounds.bottom, boundingBox.yMax);
}
HShapeElement.prototype.shapeBoundingBox = {
left:0,
right:0,
top:0,
bottom:0,
}
HShapeElement.prototype.tempBoundingBox = {
x:0,
xMax:0,
y:0,
yMax:0,
width:0,
height:0
}
HShapeElement.prototype.getBoundsOfCurve = function(p0, p1, p2, p3) {
var bounds = [[p0[0],p3[0]], [p0[1],p3[1]]];
for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {
b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];
a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];
c = 3 * p1[i] - 3 * p0[i];
b = b | 0;
a = a | 0;
c = c | 0;
if (a === 0) {
if (b === 0) {
continue;
}
t = -c / b;
if (0 < t && t < 1) {
bounds[i].push(this.calculateF(t,p0,p1,p2,p3,i));
}
continue;
}
b2ac = b * b - 4 * c * a;
if (b2ac < 0) {
continue;
}
t1 = (-b + bm_sqrt(b2ac))/(2 * a);
if (0 < t1 && t1 < 1) bounds[i].push(this.calculateF(t1,p0,p1,p2,p3,i));
t2 = (-b - bm_sqrt(b2ac))/(2 * a);
if (0 < t2 && t2 < 1) bounds[i].push(this.calculateF(t2,p0,p1,p2,p3,i));
}
this.shapeBoundingBox.left = bm_min.apply(null, bounds[0]);
this.shapeBoundingBox.top = bm_min.apply(null, bounds[1]);
this.shapeBoundingBox.right = bm_max.apply(null, bounds[0]);
this.shapeBoundingBox.bottom = bm_max.apply(null, bounds[1]);
};
HShapeElement.prototype.calculateF = function(t, p0, p1, p2, p3, i) {
return bm_pow(1-t, 3) * p0[i]
+ 3 * bm_pow(1-t, 2) * t * p1[i]
+ 3 * (1-t) * bm_pow(t, 2) * p2[i]
+ bm_pow(t, 3) * p3[i];
}
HShapeElement.prototype.calculateBoundingBox = function(itemsData, boundingBox) {
var i, len = itemsData.length, path;
for(i = 0; i < len; i += 1) {
if(itemsData[i] && itemsData[i].sh) {
this.calculateShapeBoundingBox(itemsData[i], boundingBox)
} else if(itemsData[i] && itemsData[i].it) {
this.calculateBoundingBox(itemsData[i].it, boundingBox)
}
}
}
HShapeElement.prototype.currentBoxContains = function(box) {
return this.currentBBox.x <= box.x
&& this.currentBBox.y <= box.y
&& this.currentBBox.width + this.currentBBox.x >= box.x + box.width
&& this.currentBBox.height + this.currentBBox.y >= box.y + box.height
}
HShapeElement.prototype.renderInnerContent = function() {
this._renderShapeFrame();
if(!this.hidden && (this._isFirstFrame || this._mdf)) {
var tempBoundingBox = this.tempBoundingBox;
var max = 999999;
tempBoundingBox.x = max;
tempBoundingBox.xMax = -max;
tempBoundingBox.y = max;
tempBoundingBox.yMax = -max;
this.calculateBoundingBox(this.itemsData, tempBoundingBox);
tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;
tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y;
//var tempBoundingBox = this.shapeCont.getBBox();
if(this.currentBoxContains(tempBoundingBox)) {
return;
}
var changed = false;
if(this.currentBBox.w !== tempBoundingBox.width){
this.currentBBox.w = tempBoundingBox.width;
this.shapeCont.setAttribute('width',tempBoundingBox.width);
changed = true;
}
if(this.currentBBox.h !== tempBoundingBox.height){
this.currentBBox.h = tempBoundingBox.height;
this.shapeCont.setAttribute('height',tempBoundingBox.height);
changed = true;
}
if(changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y){
this.currentBBox.w = tempBoundingBox.width;
this.currentBBox.h = tempBoundingBox.height;
this.currentBBox.x = tempBoundingBox.x;
this.currentBBox.y = tempBoundingBox.y;
this.shapeCont.setAttribute('viewBox',this.currentBBox.x+' '+this.currentBBox.y+' '+this.currentBBox.w+' '+this.currentBBox.h);
this.shapeCont.style.transform = this.shapeCont.style.webkitTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';
}
}
};
function HTextElement(data,globalData,comp){
this.textSpans = [];
this.textPaths = [];
this.currentBBox = {
x:999999,
y: -999999,
h: 0,
w: 0
};
this.renderType = 'svg';
this.isMasked = false;
this.initElement(data,globalData,comp);
}
extendPrototype([BaseElement,TransformElement,HBaseElement,HierarchyElement,FrameElement,RenderableDOMElement,ITextElement], HTextElement);
HTextElement.prototype.createContent = function(){
this.isMasked = this.checkMasks();
if(this.isMasked){
this.renderType = 'svg';
this.compW = this.comp.data.w;
this.compH = this.comp.data.h;
this.svgElement.setAttribute('width',this.compW);
this.svgElement.setAttribute('height',this.compH);
var g = createNS('g');
this.maskedElement.appendChild(g);
this.innerElem = g;
} else {
this.renderType = 'html';
this.innerElem = this.layerElement;
}
this.checkParenting();
};
HTextElement.prototype.buildNewText = function(){
var documentData = this.textProperty.currentData;
this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);
var innerElemStyle = this.innerElem.style;
innerElemStyle.color = innerElemStyle.fill = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';
if(documentData.sc){
innerElemStyle.stroke = this.buildColor(documentData.sc);
innerElemStyle.strokeWidth = documentData.sw+'px';
}
var fontData = this.globalData.fontManager.getFontByName(documentData.f);
if(!this.globalData.fontManager.chars){
innerElemStyle.fontSize = documentData.finalSize+'px';
innerElemStyle.lineHeight = documentData.finalSize+'px';
if(fontData.fClass){
this.innerElem.className = fontData.fClass;
} else {
innerElemStyle.fontFamily = fontData.fFamily;
var fWeight = documentData.fWeight, fStyle = documentData.fStyle;
innerElemStyle.fontStyle = fStyle;
innerElemStyle.fontWeight = fWeight;
}
}
var i, len;
var letters = documentData.l;
len = letters.length;
var tSpan,tParent,tCont;
var matrixHelper = this.mHelper;
var shapes, shapeStr = '';
var cnt = 0;
for (i = 0;i < len ;i += 1) {
if(this.globalData.fontManager.chars){
if(!this.textPaths[cnt]){
tSpan = createNS('path');
tSpan.setAttribute('stroke-linecap', 'butt');
tSpan.setAttribute('stroke-linejoin','round');
tSpan.setAttribute('stroke-miterlimit','4');
} else {
tSpan = this.textPaths[cnt];
}
if(!this.isMasked){
if(this.textSpans[cnt]){
tParent = this.textSpans[cnt];
tCont = tParent.children[0];
} else {
tParent = createTag('div');
tParent.style.lineHeight = 0;
tCont = createNS('svg');
tCont.appendChild(tSpan);
styleDiv(tParent);
}
}
}else{
if(!this.isMasked){
if(this.textSpans[cnt]){
tParent = this.textSpans[cnt];
tSpan = this.textPaths[cnt];
} else {
tParent = createTag('span');
styleDiv(tParent);
tSpan = createTag('span');
styleDiv(tSpan);
tParent.appendChild(tSpan);
}
} else {
tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');
}
}
//tSpan.setAttribute('visibility', 'hidden');
if(this.globalData.fontManager.chars){
var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);
var shapeData;
if(charData){
shapeData = charData.data;
} else {
shapeData = null;
}
matrixHelper.reset();
if(shapeData && shapeData.shapes){
shapes = shapeData.shapes[0].it;
matrixHelper.scale(documentData.finalSize/100,documentData.finalSize/100);
shapeStr = this.createPathShape(matrixHelper,shapes);
tSpan.setAttribute('d',shapeStr);
}
if(!this.isMasked){
this.innerElem.appendChild(tParent);
if(shapeData && shapeData.shapes){
//document.body.appendChild is needed to get exact measure of shape
document.body.appendChild(tCont);
var boundingBox = tCont.getBBox();
tCont.setAttribute('width',boundingBox.width + 2);
tCont.setAttribute('height',boundingBox.height + 2);
tCont.setAttribute('viewBox',(boundingBox.x-1)+' '+ (boundingBox.y-1)+' '+ (boundingBox.width+2)+' '+ (boundingBox.height+2));
tCont.style.transform = tCont.style.webkitTransform = 'translate(' + (boundingBox.x-1) + 'px,' + (boundingBox.y-1) + 'px)';
letters[i].yOffset = boundingBox.y-1;
} else{
tCont.setAttribute('width',1);
tCont.setAttribute('height',1);
}
tParent.appendChild(tCont);
}else{
this.innerElem.appendChild(tSpan);
}
}else{
tSpan.textContent = letters[i].val;
tSpan.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space","preserve");
if(!this.isMasked){
this.innerElem.appendChild(tParent);
//
tSpan.style.transform = tSpan.style.webkitTransform = 'translate3d(0,'+ -documentData.finalSize/1.2+'px,0)';
} else {
this.innerElem.appendChild(tSpan);
}
}
//
if(!this.isMasked){
this.textSpans[cnt] = tParent;
}else{
this.textSpans[cnt] = tSpan;
}
this.textSpans[cnt].style.display = 'block';
this.textPaths[cnt] = tSpan;
cnt += 1;
}
while(cnt < this.textSpans.length){
this.textSpans[cnt].style.display = 'none';
cnt += 1;
}
};
HTextElement.prototype.renderInnerContent = function() {
if(this.data.singleShape){
if(!this._isFirstFrame && !this.lettersChangedFlag){
return;
} else {
// Todo Benchmark if using this is better than getBBox
if(this.isMasked && this.finalTransform._matMdf){
this.svgElement.setAttribute('viewBox',-this.finalTransform.mProp.p.v[0]+' '+ -this.finalTransform.mProp.p.v[1]+' '+this.compW+' '+this.compH);
this.svgElement.style.transform = this.svgElement.style.webkitTransform = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';
}
}
}
this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);
if(!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag){
return;
}
var i,len, count = 0;
var renderedLetters = this.textAnimator.renderedLetters;
var letters = this.textProperty.currentData.l;
len = letters.length;
var renderedLetter, textSpan, textPath;
for(i=0;i<len;i+=1){
if(letters[i].n){
count += 1;
continue;
}
textSpan = this.textSpans[i];
textPath = this.textPaths[i];
renderedLetter = renderedLetters[count];
count += 1;
if(renderedLetter._mdf.m) {
if(!this.isMasked){
textSpan.style.transform = textSpan.style.webkitTransform = renderedLetter.m;
}else{
textSpan.setAttribute('transform',renderedLetter.m);
}
}
////textSpan.setAttribute('opacity',renderedLetter.o);
textSpan.style.opacity = renderedLetter.o;
if(renderedLetter.sw && renderedLetter._mdf.sw){
textPath.setAttribute('stroke-width',renderedLetter.sw);
}
if(renderedLetter.sc && renderedLetter._mdf.sc){
textPath.setAttribute('stroke',renderedLetter.sc);
}
if(renderedLetter.fc && renderedLetter._mdf.fc){
textPath.setAttribute('fill',renderedLetter.fc);
textPath.style.color = renderedLetter.fc;
}
}
if(this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)){
var boundingBox = this.innerElem.getBBox();
if(this.currentBBox.w !== boundingBox.width){
this.currentBBox.w = boundingBox.width;
this.svgElement.setAttribute('width',boundingBox.width);
}
if(this.currentBBox.h !== boundingBox.height){
this.currentBBox.h = boundingBox.height;
this.svgElement.setAttribute('height',boundingBox.height);
}
var margin = 1;
if(this.currentBBox.w !== (boundingBox.width + margin*2) || this.currentBBox.h !== (boundingBox.height + margin*2) || this.currentBBox.x !== (boundingBox.x - margin) || this.currentBBox.y !== (boundingBox.y - margin)){
this.currentBBox.w = boundingBox.width + margin*2;
this.currentBBox.h = boundingBox.height + margin*2;
this.currentBBox.x = boundingBox.x - margin;
this.currentBBox.y = boundingBox.y - margin;
this.svgElement.setAttribute('viewBox',this.currentBBox.x+' '+this.currentBBox.y+' '+this.currentBBox.w+' '+this.currentBBox.h);
this.svgElement.style.transform = this.svgElement.style.webkitTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';
}
}
};
function HImageElement(data,globalData,comp){
this.assetData = globalData.getAssetData(data.refId);
this.initElement(data,globalData,comp);
}
extendPrototype([BaseElement,TransformElement,HBaseElement,HSolidElement,HierarchyElement,FrameElement,RenderableElement], HImageElement);
HImageElement.prototype.createContent = function(){
var assetPath = this.globalData.getAssetsPath(this.assetData);
var img = new Image();
if(this.data.hasMask){
this.imageElem = createNS('image');
this.imageElem.setAttribute('width',this.assetData.w+"px");
this.imageElem.setAttribute('height',this.assetData.h+"px");
this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink','href',assetPath);
this.layerElement.appendChild(this.imageElem);
this.baseElement.setAttribute('width',this.assetData.w);
this.baseElement.setAttribute('height',this.assetData.h);
} else {
this.layerElement.appendChild(img);
}
img.src = assetPath;
if(this.data.ln){
this.baseElement.setAttribute('id',this.data.ln);
}
};
function HCameraElement(data,globalData,comp){
this.initFrame();
this.initBaseData(data,globalData,comp);
this.initHierarchy();
var getProp = PropertyFactory.getProp;
this.pe = getProp(this,data.pe,0,0,this);
if(data.ks.p.s){
this.px = getProp(this,data.ks.p.x,1,0,this);
this.py = getProp(this,data.ks.p.y,1,0,this);
this.pz = getProp(this,data.ks.p.z,1,0,this);
}else{
this.p = getProp(this,data.ks.p,1,0,this);
}
if(data.ks.a){
this.a = getProp(this,data.ks.a,1,0,this);
}
if(data.ks.or.k.length && data.ks.or.k[0].to){
var i,len = data.ks.or.k.length;
for(i=0;i<len;i+=1){
data.ks.or.k[i].to = null;
data.ks.or.k[i].ti = null;
}
}
this.or = getProp(this,data.ks.or,1,degToRads,this);
this.or.sh = true;
this.rx = getProp(this,data.ks.rx,0,degToRads,this);
this.ry = getProp(this,data.ks.ry,0,degToRads,this);
this.rz = getProp(this,data.ks.rz,0,degToRads,this);
this.mat = new Matrix();
this._prevMat = new Matrix();
this._isFirstFrame = true;
// TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.
this.finalTransform = {
mProp: this
};
}
extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);
HCameraElement.prototype.setup = function() {
var i, len = this.comp.threeDElements.length, comp;
for(i=0;i<len;i+=1){
//[perspectiveElem,container]
comp = this.comp.threeDElements[i];
if(comp.type === '3d') {
comp.perspectiveElem.style.perspective = comp.perspectiveElem.style.webkitPerspective = this.pe.v+'px';
comp.container.style.transformOrigin = comp.container.style.mozTransformOrigin = comp.container.style.webkitTransformOrigin = "0px 0px 0px";
comp.perspectiveElem.style.transform = comp.perspectiveElem.style.webkitTransform = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';
}
}
};
HCameraElement.prototype.createElements = function(){
};
HCameraElement.prototype.hide = function(){
};
HCameraElement.prototype.renderFrame = function(){
var _mdf = this._isFirstFrame;
var i, len;
if(this.hierarchy){
len = this.hierarchy.length;
for(i=0;i<len;i+=1){
_mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;
}
}
if(_mdf || this.pe._mdf || (this.p && this.p._mdf) || (this.px && (this.px._mdf || this.py._mdf || this.pz._mdf)) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || (this.a && this.a._mdf)) {
this.mat.reset();
if(this.hierarchy){
var mat;
len = this.hierarchy.length - 1;
for (i = len; i >= 0; i -= 1) {
var mTransf = this.hierarchy[i].finalTransform.mProp;
this.mat.translate(-mTransf.p.v[0],-mTransf.p.v[1],mTransf.p.v[2]);
this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);
this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);
this.mat.scale(1/mTransf.s.v[0],1/mTransf.s.v[1],1/mTransf.s.v[2]);
this.mat.translate(mTransf.a.v[0],mTransf.a.v[1],mTransf.a.v[2]);
}
}
if (this.p) {
this.mat.translate(-this.p.v[0],-this.p.v[1],this.p.v[2]);
} else {
this.mat.translate(-this.px.v,-this.py.v,this.pz.v);
}
if (this.a) {
var diffVector
if (this.p) {
diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];
} else {
diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];
}
var mag = Math.sqrt(Math.pow(diffVector[0],2)+Math.pow(diffVector[1],2)+Math.pow(diffVector[2],2));
//var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));
var lookDir = [diffVector[0]/mag,diffVector[1]/mag,diffVector[2]/mag];
var lookLengthOnXZ = Math.sqrt( lookDir[2]*lookDir[2] + lookDir[0]*lookDir[0] );
var m_rotationX = (Math.atan2( lookDir[1], lookLengthOnXZ ));
var m_rotationY = (Math.atan2( lookDir[0], -lookDir[2]));
this.mat.rotateY(m_rotationY).rotateX(-m_rotationX);
}
this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);
this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);
this.mat.translate(this.globalData.compSize.w/2,this.globalData.compSize.h/2,0);
this.mat.translate(0,0,this.pe.v);
var hasMatrixChanged = !this._prevMat.equals(this.mat);
if((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {
len = this.comp.threeDElements.length;
var comp;
for(i=0;i<len;i+=1){
comp = this.comp.threeDElements[i];
if(comp.type === '3d') {
if(hasMatrixChanged) {
comp.container.style.transform = comp.container.style.webkitTransform = this.mat.toCSS();
}
if(this.pe._mdf) {
comp.perspectiveElem.style.perspective = comp.perspectiveElem.style.webkitPerspective = this.pe.v+'px';
}
}
}
this.mat.clone(this._prevMat);
}
}
this._isFirstFrame = false;
};
HCameraElement.prototype.prepareFrame = function(num) {
this.prepareProperties(num, true);
};
HCameraElement.prototype.destroy = function(){
};
HCameraElement.prototype.getBaseElement = function(){return null;};
function HEffects() {
}
HEffects.prototype.renderFrame = function(){};
var animationManager = (function(){
var moduleOb = {};
var registeredAnimations = [];
var initTime = 0;
var len = 0;
var playingAnimationsNum = 0;
var _stopped = true;
var _isFrozen = false;
function removeElement(ev){
var i = 0;
var animItem = ev.target;
while(i<len) {
if (registeredAnimations[i].animation === animItem) {
registeredAnimations.splice(i, 1);
i -= 1;
len -= 1;
if(!animItem.isPaused){
subtractPlayingCount();
}
}
i += 1;
}
}
function registerAnimation(element, animationData){
if(!element){
return null;
}
var i=0;
while(i<len){
if(registeredAnimations[i].elem == element && registeredAnimations[i].elem !== null ){
return registeredAnimations[i].animation;
}
i+=1;
}
var animItem = new AnimationItem();
setupAnimation(animItem, element);
animItem.setData(element, animationData);
return animItem;
}
function getRegisteredAnimations() {
var i, len = registeredAnimations.length;
var animations = [];
for(i = 0; i < len; i += 1) {
animations.push(registeredAnimations[i].animation);
}
return animations;
}
function addPlayingCount(){
playingAnimationsNum += 1;
activate();
}
function subtractPlayingCount(){
playingAnimationsNum -= 1;
}
function setupAnimation(animItem, element){
animItem.addEventListener('destroy',removeElement);
animItem.addEventListener('_active',addPlayingCount);
animItem.addEventListener('_idle',subtractPlayingCount);
registeredAnimations.push({elem: element,animation:animItem});
len += 1;
}
function loadAnimation(params){
var animItem = new AnimationItem();
setupAnimation(animItem, null);
animItem.setParams(params);
return animItem;
}
function setSpeed(val,animation){
var i;
for(i=0;i<len;i+=1){
registeredAnimations[i].animation.setSpeed(val, animation);
}
}
function setDirection(val, animation){
var i;
for(i=0;i<len;i+=1){
registeredAnimations[i].animation.setDirection(val, animation);
}
}
function play(animation){
var i;
for(i=0;i<len;i+=1){
registeredAnimations[i].animation.play(animation);
}
}
function resume(nowTime) {
var elapsedTime = nowTime - initTime;
var i;
for(i=0;i<len;i+=1){
registeredAnimations[i].animation.advanceTime(elapsedTime);
}
initTime = nowTime;
if(playingAnimationsNum && !_isFrozen) {
window.requestAnimationFrame(resume);
} else {
_stopped = true;
}
}
function first(nowTime){
initTime = nowTime;
window.requestAnimationFrame(resume);
}
function pause(animation) {
var i;
for(i=0;i<len;i+=1){
registeredAnimations[i].animation.pause(animation);
}
}
function goToAndStop(value,isFrame,animation) {
var i;
for(i=0;i<len;i+=1){
registeredAnimations[i].animation.goToAndStop(value,isFrame,animation);
}
}
function stop(animation) {
var i;
for(i=0;i<len;i+=1){
registeredAnimations[i].animation.stop(animation);
}
}
function togglePause(animation) {
var i;
for(i=0;i<len;i+=1){
registeredAnimations[i].animation.togglePause(animation);
}
}
function destroy(animation) {
var i;
for(i=(len-1);i>=0;i-=1){
registeredAnimations[i].animation.destroy(animation);
}
}
function searchAnimations(animationData, standalone, renderer){
var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')),
[].slice.call(document.getElementsByClassName('bodymovin')));
var i, len = animElements.length;
for(i=0;i<len;i+=1){
if(renderer){
animElements[i].setAttribute('data-bm-type',renderer);
}
registerAnimation(animElements[i], animationData);
}
if(standalone && len === 0){
if(!renderer){
renderer = 'svg';
}
var body = document.getElementsByTagName('body')[0];
body.innerHTML = '';
var div = createTag('div');
div.style.width = '100%';
div.style.height = '100%';
div.setAttribute('data-bm-type',renderer);
body.appendChild(div);
registerAnimation(div, animationData);
}
}
function resize(){
var i;
for(i=0;i<len;i+=1){
registeredAnimations[i].animation.resize();
}
}
function activate(){
if(!_isFrozen && playingAnimationsNum){
if(_stopped) {
window.requestAnimationFrame(first);
_stopped = false;
}
}
}
function freeze() {
_isFrozen = true;
}
function unfreeze() {
_isFrozen = false;
activate();
}
moduleOb.registerAnimation = registerAnimation;
moduleOb.loadAnimation = loadAnimation;
moduleOb.setSpeed = setSpeed;
moduleOb.setDirection = setDirection;
moduleOb.play = play;
moduleOb.pause = pause;
moduleOb.stop = stop;
moduleOb.togglePause = togglePause;
moduleOb.searchAnimations = searchAnimations;
moduleOb.resize = resize;
//moduleOb.start = start;
moduleOb.goToAndStop = goToAndStop;
moduleOb.destroy = destroy;
moduleOb.freeze = freeze;
moduleOb.unfreeze = unfreeze;
moduleOb.getRegisteredAnimations = getRegisteredAnimations;
return moduleOb;
}());
var AnimationItem = function () {
this._cbs = [];
this.name = '';
this.path = '';
this.isLoaded = false;
this.currentFrame = 0;
this.currentRawFrame = 0;
this.firstFrame = 0;
this.totalFrames = 0;
this.frameRate = 0;
this.frameMult = 0;
this.playSpeed = 1;
this.playDirection = 1;
this.playCount = 0;
this.animationData = {};
this.assets = [];
this.isPaused = true;
this.autoplay = false;
this.loop = true;
this.renderer = null;
this.animationID = createElementID();
this.assetsPath = '';
this.timeCompleted = 0;
this.segmentPos = 0;
this.subframeEnabled = subframeEnabled;
this.segments = [];
this._idle = true;
this._completedLoop = false;
this.projectInterface = ProjectInterface();
this.imagePreloader = new ImagePreloader();
};
extendPrototype([BaseEvent], AnimationItem);
AnimationItem.prototype.setParams = function(params) {
if(params.context){
this.context = params.context;
}
if(params.wrapper || params.container){
this.wrapper = params.wrapper || params.container;
}
var animType = params.animType ? params.animType : params.renderer ? params.renderer : 'svg';
switch(animType){
case 'canvas':
this.renderer = new CanvasRenderer(this, params.rendererSettings);
break;
case 'svg':
this.renderer = new SVGRenderer(this, params.rendererSettings);
break;
default:
this.renderer = new HybridRenderer(this, params.rendererSettings);
break;
}
this.renderer.setProjectInterface(this.projectInterface);
this.animType = animType;
if(params.loop === '' || params.loop === null){
}else if(params.loop === false){
this.loop = false;
}else if(params.loop === true){
this.loop = true;
}else{
this.loop = parseInt(params.loop);
}
this.autoplay = 'autoplay' in params ? params.autoplay : true;
this.name = params.name ? params.name : '';
this.autoloadSegments = params.hasOwnProperty('autoloadSegments') ? params.autoloadSegments : true;
this.assetsPath = params.assetsPath;
if (params.animationData) {
this.configAnimation(params.animationData);
} else if(params.path){
if( params.path.lastIndexOf('\\') !== -1){
this.path = params.path.substr(0,params.path.lastIndexOf('\\')+1);
} else {
this.path = params.path.substr(0,params.path.lastIndexOf('/')+1);
}
this.fileName = params.path.substr(params.path.lastIndexOf('/')+1);
this.fileName = this.fileName.substr(0,this.fileName.lastIndexOf('.json'));
assetLoader.load(params.path, this.configAnimation.bind(this), function() {
this.trigger('data_failed');
}.bind(this));
}
this.initialSegment = params.initialSegment;
};
AnimationItem.prototype.setData = function (wrapper, animationData) {
var params = {
wrapper: wrapper,
animationData: animationData ? (typeof animationData === "object") ? animationData : JSON.parse(animationData) : null
};
var wrapperAttributes = wrapper.attributes;
params.path = wrapperAttributes.getNamedItem('data-animation-path') ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';
params.animType = wrapperAttributes.getNamedItem('data-anim-type') ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : 'canvas';
var loop = wrapperAttributes.getNamedItem('data-anim-loop') ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';
if(loop === ''){
}else if(loop === 'false'){
params.loop = false;
}else if(loop === 'true'){
params.loop = true;
}else{
params.loop = parseInt(loop);
}
var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;
params.autoplay = autoplay !== "false";
params.name = wrapperAttributes.getNamedItem('data-name') ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';
var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';
if(prerender === 'false'){
params.prerender = false;
}
this.setParams(params);
};
AnimationItem.prototype.includeLayers = function(data) {
if(data.op > this.animationData.op){
this.animationData.op = data.op;
this.totalFrames = Math.floor(data.op - this.animationData.ip);
}
var layers = this.animationData.layers;
var i, len = layers.length;
var newLayers = data.layers;
var j, jLen = newLayers.length;
for(j=0;j<jLen;j+=1){
i = 0;
while(i<len){
if(layers[i].id == newLayers[j].id){
layers[i] = newLayers[j];
break;
}
i += 1;
}
}
if(data.chars || data.fonts){
this.renderer.globalData.fontManager.addChars(data.chars);
this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);
}
if(data.assets){
len = data.assets.length;
for(i = 0; i < len; i += 1){
this.animationData.assets.push(data.assets[i]);
}
}
this.animationData.__complete = false;
dataManager.completeData(this.animationData,this.renderer.globalData.fontManager);
this.renderer.includeLayers(data.layers);
if(expressionsPlugin){
expressionsPlugin.initExpressions(this);
}
this.loadNextSegment();
};
AnimationItem.prototype.loadNextSegment = function() {
var segments = this.animationData.segments;
if(!segments || segments.length === 0 || !this.autoloadSegments){
this.trigger('data_ready');
this.timeCompleted = this.totalFrames;
return;
}
var segment = segments.shift();
this.timeCompleted = segment.time * this.frameRate;
var segmentPath = this.path+this.fileName+'_' + this.segmentPos + '.json';
this.segmentPos += 1;
assetLoader.load(segmentPath, this.includeLayers.bind(this), function() {
this.trigger('data_failed');
}.bind(this));
};
AnimationItem.prototype.loadSegments = function() {
var segments = this.animationData.segments;
if(!segments) {
this.timeCompleted = this.totalFrames;
}
this.loadNextSegment();
};
AnimationItem.prototype.imagesLoaded = function() {
this.trigger('loaded_images');
this.checkLoaded()
}
AnimationItem.prototype.preloadImages = function() {
this.imagePreloader.setAssetsPath(this.assetsPath);
this.imagePreloader.setPath(this.path);
this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));
}
AnimationItem.prototype.configAnimation = function (animData) {
if(!this.renderer){
return;
}
try {
this.animationData = animData;
if (this.initialSegment) {
this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);
this.firstFrame = Math.round(this.initialSegment[0]);
} else {
this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);
this.firstFrame = Math.round(this.animationData.ip);
}
this.renderer.configAnimation(animData);
if(!animData.assets){
animData.assets = [];
}
this.assets = this.animationData.assets;
this.frameRate = this.animationData.fr;
this.frameMult = this.animationData.fr / 1000;
this.renderer.searchExtraCompositions(animData.assets);
this.trigger('config_ready');
this.preloadImages();
this.loadSegments();
this.updaFrameModifier();
this.waitForFontsLoaded();
} catch(error) {
this.triggerConfigError(error);
}
};
AnimationItem.prototype.waitForFontsLoaded = function(){
if(!this.renderer) {
return;
}
if(this.renderer.globalData.fontManager.loaded()){
this.checkLoaded();
}else{
setTimeout(this.waitForFontsLoaded.bind(this),20);
}
}
AnimationItem.prototype.checkLoaded = function () {
if (!this.isLoaded && this.renderer.globalData.fontManager.loaded() && (this.imagePreloader.loaded() || this.renderer.rendererType !== 'canvas')) {
this.isLoaded = true;
dataManager.completeData(this.animationData, this.renderer.globalData.fontManager);
if(expressionsPlugin){
expressionsPlugin.initExpressions(this);
}
this.renderer.initItems();
setTimeout(function() {
this.trigger('DOMLoaded');
}.bind(this), 0);
this.gotoFrame();
if(this.autoplay){
this.play();
}
}
};
AnimationItem.prototype.resize = function () {
this.renderer.updateContainerSize();
};
AnimationItem.prototype.setSubframe = function(flag){
this.subframeEnabled = flag ? true : false;
};
AnimationItem.prototype.gotoFrame = function () {
this.currentFrame = this.subframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame;
if(this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted){
this.currentFrame = this.timeCompleted;
}
this.trigger('enterFrame');
this.renderFrame();
};
AnimationItem.prototype.renderFrame = function () {
if(this.isLoaded === false){
return;
}
try {
this.renderer.renderFrame(this.currentFrame + this.firstFrame);
} catch(error) {
this.triggerRenderFrameError(error);
}
};
AnimationItem.prototype.play = function (name) {
if(name && this.name != name){
return;
}
if(this.isPaused === true){
this.isPaused = false;
if(this._idle){
this._idle = false;
this.trigger('_active');
}
}
};
AnimationItem.prototype.pause = function (name) {
if(name && this.name != name){
return;
}
if(this.isPaused === false){
this.isPaused = true;
this._idle = true;
this.trigger('_idle');
}
};
AnimationItem.prototype.togglePause = function (name) {
if(name && this.name != name){
return;
}
if(this.isPaused === true){
this.play();
}else{
this.pause();
}
};
AnimationItem.prototype.stop = function (name) {
if(name && this.name != name){
return;
}
this.pause();
this.playCount = 0;
this._completedLoop = false;
this.setCurrentRawFrameValue(0);
};
AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {
if(name && this.name != name){
return;
}
if(isFrame){
this.setCurrentRawFrameValue(value);
}else{
this.setCurrentRawFrameValue(value * this.frameModifier);
}
this.pause();
};
AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {
this.goToAndStop(value, isFrame, name);
this.play();
};
AnimationItem.prototype.advanceTime = function (value) {
if (this.isPaused === true || this.isLoaded === false) {
return;
}
var nextValue = this.currentRawFrame + value * this.frameModifier;
var _isComplete = false;
// Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.
// If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.
if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {
if (!this.loop || this.playCount === this.loop) {
if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {
_isComplete = true;
nextValue = this.totalFrames - 1;
}
} else if (nextValue >= this.totalFrames) {
this.playCount += 1;
if (!this.checkSegments(nextValue % this.totalFrames)) {
this.setCurrentRawFrameValue(nextValue % this.totalFrames);
this._completedLoop = true;
this.trigger('loopComplete');
}
} else {
this.setCurrentRawFrameValue(nextValue);
}
} else if(nextValue < 0) {
if (!this.checkSegments(nextValue % this.totalFrames)) {
if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {
this.setCurrentRawFrameValue(this.totalFrames + (nextValue % this.totalFrames));
if(!this._completedLoop) {
this._completedLoop = true;
} else {
this.trigger('loopComplete');
}
} else {
_isComplete = true;
nextValue = 0;
}
}
} else {
this.setCurrentRawFrameValue(nextValue);
}
if (_isComplete) {
this.setCurrentRawFrameValue(nextValue);
this.pause();
this.trigger('complete');
}
};
AnimationItem.prototype.adjustSegment = function(arr, offset){
this.playCount = 0;
if(arr[1] < arr[0]){
if(this.frameModifier > 0){
if(this.playSpeed < 0){
this.setSpeed(-this.playSpeed);
} else {
this.setDirection(-1);
}
}
this.timeCompleted = this.totalFrames = arr[0] - arr[1];
this.firstFrame = arr[1];
this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);
} else if(arr[1] > arr[0]){
if(this.frameModifier < 0){
if(this.playSpeed < 0){
this.setSpeed(-this.playSpeed);
} else {
this.setDirection(1);
}
}
this.timeCompleted = this.totalFrames = arr[1] - arr[0];
this.firstFrame = arr[0];
this.setCurrentRawFrameValue(0.001 + offset);
}
this.trigger('segmentStart');
};
AnimationItem.prototype.setSegment = function (init,end) {
var pendingFrame = -1;
if(this.isPaused) {
if (this.currentRawFrame + this.firstFrame < init) {
pendingFrame = init;
} else if (this.currentRawFrame + this.firstFrame > end) {
pendingFrame = end - init;
}
}
this.firstFrame = init;
this.timeCompleted = this.totalFrames = end - init;
if(pendingFrame !== -1) {
this.goToAndStop(pendingFrame,true);
}
};
AnimationItem.prototype.playSegments = function (arr, forceFlag) {
if (forceFlag) {
this.segments.length = 0;
}
if (typeof arr[0] === 'object') {
var i, len = arr.length;
for (i = 0; i < len; i += 1) {
this.segments.push(arr[i]);
}
} else {
this.segments.push(arr);
}
if (this.segments.length && forceFlag) {
this.adjustSegment(this.segments.shift(), 0);
}
if (this.isPaused) {
this.play();
}
};
AnimationItem.prototype.resetSegments = function (forceFlag) {
this.segments.length = 0;
this.segments.push([this.animationData.ip,this.animationData.op]);
//this.segments.push([this.animationData.ip*this.frameRate,Math.floor(this.animationData.op - this.animationData.ip+this.animationData.ip*this.frameRate)]);
if (forceFlag) {
this.checkSegments(0);
}
};
AnimationItem.prototype.checkSegments = function(offset) {
if (this.segments.length) {
this.adjustSegment(this.segments.shift(), offset);
return true;
}
return false;
};
AnimationItem.prototype.destroy = function (name) {
if ((name && this.name != name) || !this.renderer) {
return;
}
this.renderer.destroy();
this.imagePreloader.destroy();
this.trigger('destroy');
this._cbs = null;
this.onEnterFrame = this.onLoopComplete = this.onComplete = this.onSegmentStart = this.onDestroy = null;
this.renderer = null;
};
AnimationItem.prototype.setCurrentRawFrameValue = function(value){
this.currentRawFrame = value;
this.gotoFrame();
};
AnimationItem.prototype.setSpeed = function (val) {
this.playSpeed = val;
this.updaFrameModifier();
};
AnimationItem.prototype.setDirection = function (val) {
this.playDirection = val < 0 ? -1 : 1;
this.updaFrameModifier();
};
AnimationItem.prototype.updaFrameModifier = function () {
this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;
};
AnimationItem.prototype.getPath = function () {
return this.path;
};
AnimationItem.prototype.getAssetsPath = function (assetData) {
var path = '';
if(assetData.e) {
path = assetData.p;
} else if(this.assetsPath){
var imagePath = assetData.p;
if(imagePath.indexOf('images/') !== -1){
imagePath = imagePath.split('/')[1];
}
path = this.assetsPath + imagePath;
} else {
path = this.path;
path += assetData.u ? assetData.u : '';
path += assetData.p;
}
return path;
};
AnimationItem.prototype.getAssetData = function (id) {
var i = 0, len = this.assets.length;
while (i < len) {
if(id == this.assets[i].id){
return this.assets[i];
}
i += 1;
}
};
AnimationItem.prototype.hide = function () {
this.renderer.hide();
};
AnimationItem.prototype.show = function () {
this.renderer.show();
};
AnimationItem.prototype.getDuration = function (isFrame) {
return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;
};
AnimationItem.prototype.trigger = function(name){
if(this._cbs && this._cbs[name]){
switch(name){
case 'enterFrame':
this.triggerEvent(name,new BMEnterFrameEvent(name,this.currentFrame,this.totalFrames,this.frameModifier));
break;
case 'loopComplete':
this.triggerEvent(name,new BMCompleteLoopEvent(name,this.loop,this.playCount,this.frameMult));
break;
case 'complete':
this.triggerEvent(name,new BMCompleteEvent(name,this.frameMult));
break;
case 'segmentStart':
this.triggerEvent(name,new BMSegmentStartEvent(name,this.firstFrame,this.totalFrames));
break;
case 'destroy':
this.triggerEvent(name,new BMDestroyEvent(name,this));
break;
default:
this.triggerEvent(name);
}
}
if(name === 'enterFrame' && this.onEnterFrame){
this.onEnterFrame.call(this,new BMEnterFrameEvent(name,this.currentFrame,this.totalFrames,this.frameMult));
}
if(name === 'loopComplete' && this.onLoopComplete){
this.onLoopComplete.call(this,new BMCompleteLoopEvent(name,this.loop,this.playCount,this.frameMult));
}
if(name === 'complete' && this.onComplete){
this.onComplete.call(this,new BMCompleteEvent(name,this.frameMult));
}
if(name === 'segmentStart' && this.onSegmentStart){
this.onSegmentStart.call(this,new BMSegmentStartEvent(name,this.firstFrame,this.totalFrames));
}
if(name === 'destroy' && this.onDestroy){
this.onDestroy.call(this,new BMDestroyEvent(name,this));
}
};
AnimationItem.prototype.triggerRenderFrameError = function(nativeError) {
var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);
this.triggerEvent('error', error);
if (this.onError) {
this.onError.call(this, error);
}
}
AnimationItem.prototype.triggerConfigError = function(nativeError) {
var error = new BMConfigErrorEvent(nativeError, this.currentFrame);
this.triggerEvent('error', error);
if (this.onError) {
this.onError.call(this, error);
}
}
var Expressions = (function(){
var ob = {};
ob.initExpressions = initExpressions;
function initExpressions(animation){
var stackCount = 0;
var registers = [];
function pushExpression() {
stackCount += 1;
}
function popExpression() {
stackCount -= 1;
if (stackCount === 0) {
releaseInstances();
}
}
function registerExpressionProperty(expression) {
if (registers.indexOf(expression) === -1) {
registers.push(expression)
}
}
function releaseInstances() {
var i, len = registers.length;
for (i = 0; i < len; i += 1) {
registers[i].release();
}
registers.length = 0;
}
animation.renderer.compInterface = CompExpressionInterface(animation.renderer);
animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);
animation.renderer.globalData.pushExpression = pushExpression;
animation.renderer.globalData.popExpression = popExpression;
animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;
}
return ob;
}());
expressionsPlugin = Expressions;
var ExpressionManager = (function(){
'use strict';
var ob = {};
var Math = BMMath;
var window = null;
var document = null;
function $bm_isInstanceOfArray(arr) {
return arr.constructor === Array || arr.constructor === Float32Array;
}
function isNumerable(tOfV, v) {
return tOfV === 'number' || tOfV === 'boolean' || tOfV === 'string' || v instanceof Number;
}
function $bm_neg(a){
var tOfA = typeof a;
if(tOfA === 'number' || tOfA === 'boolean' || a instanceof Number ){
return -a;
}
if($bm_isInstanceOfArray(a)){
var i, lenA = a.length;
var retArr = [];
for(i=0;i<lenA;i+=1){
retArr[i] = -a[i];
}
return retArr;
}
if (a.propType) {
return a.v;
}
}
var easeInBez = BezierFactory.getBezierEasing(0.333,0,.833,.833, 'easeIn').get;
var easeOutBez = BezierFactory.getBezierEasing(0.167,0.167,.667,1, 'easeOut').get;
var easeInOutBez = BezierFactory.getBezierEasing(.33,0,.667,1, 'easeInOut').get;
function sum(a,b) {
var tOfA = typeof a;
var tOfB = typeof b;
if(tOfA === 'string' || tOfB === 'string'){
return a + b;
}
if(isNumerable(tOfA, a) && isNumerable(tOfB, b)) {
return a + b;
}
if($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)){
a = a.slice(0);
a[0] = a[0] + b;
return a;
}
if(isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)){
b = b.slice(0);
b[0] = a + b[0];
return b;
}
if($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)){
var i = 0, lenA = a.length, lenB = b.length;
var retArr = [];
while(i<lenA || i < lenB){
if((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)){
retArr[i] = a[i] + b[i];
}else{
retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];
}
i += 1;
}
return retArr;
}
return 0;
}
var add = sum;
function sub(a,b) {
var tOfA = typeof a;
var tOfB = typeof b;
if(isNumerable(tOfA, a) && isNumerable(tOfB, b)) {
if(tOfA === 'string') {
a = parseInt(a);
}
if(tOfB === 'string') {
b = parseInt(b);
}
return a - b;
}
if( $bm_isInstanceOfArray(a) && isNumerable(tOfB, b)){
a = a.slice(0);
a[0] = a[0] - b;
return a;
}
if(isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)){
b = b.slice(0);
b[0] = a - b[0];
return b;
}
if($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)){
var i = 0, lenA = a.length, lenB = b.length;
var retArr = [];
while(i<lenA || i < lenB){
if((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)){
retArr[i] = a[i] - b[i];
}else{
retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];
}
i += 1;
}
return retArr;
}
return 0;
}
function mul(a,b) {
var tOfA = typeof a;
var tOfB = typeof b;
var arr;
if(isNumerable(tOfA, a) && isNumerable(tOfB, b)) {
return a * b;
}
var i, len;
if($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)){
len = a.length;
arr = createTypedArray('float32', len);
for(i=0;i<len;i+=1){
arr[i] = a[i] * b;
}
return arr;
}
if(isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)){
len = b.length;
arr = createTypedArray('float32', len);
for(i=0;i<len;i+=1){
arr[i] = a * b[i];
}
return arr;
}
return 0;
}
function div(a,b) {
var tOfA = typeof a;
var tOfB = typeof b;
var arr;
if(isNumerable(tOfA, a) && isNumerable(tOfB, b)) {
return a / b;
}
var i, len;
if($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)){
len = a.length;
arr = createTypedArray('float32', len);
for(i=0;i<len;i+=1){
arr[i] = a[i] / b;
}
return arr;
}
if(isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)){
len = b.length;
arr = createTypedArray('float32', len);
for(i=0;i<len;i+=1){
arr[i] = a / b[i];
}
return arr;
}
return 0;
}
function mod(a,b) {
if(typeof a === 'string') {
a = parseInt(a);
}
if(typeof b === 'string') {
b = parseInt(b);
}
return a % b;
}
var $bm_sum = sum;
var $bm_sub = sub;
var $bm_mul = mul;
var $bm_div = div;
var $bm_mod = mod;
function clamp(num, min, max) {
if(min > max){
var mm = max;
max = min;
min = mm;
}
return Math.min(Math.max(num, min), max);
}
function radiansToDegrees(val) {
return val/degToRads;
}
var radians_to_degrees = radiansToDegrees;
function degreesToRadians(val) {
return val*degToRads;
}
var degrees_to_radians = radiansToDegrees;
var helperLengthArray = [0,0,0,0,0,0];
function length(arr1, arr2) {
if (typeof arr1 === 'number' || arr1 instanceof Number) {
arr2 = arr2 || 0;
return Math.abs(arr1 - arr2);
}
if(!arr2) {
arr2 = helperLengthArray;
}
var i, len = Math.min(arr1.length, arr2.length);
var addedLength = 0;
for (i = 0; i < len; i += 1) {
addedLength += Math.pow(arr2[i] - arr1[i], 2);
}
return Math.sqrt(addedLength);
}
function normalize(vec) {
return div(vec, length(vec));
}
function rgbToHsl(val) {
var r = val[0]; var g = val[1]; var b = val[2];
var max = Math.max(r, g, b), min = Math.min(r, g, b);
var h, s, l = (max + min) / 2;
if(max == min){
h = s = 0; // achromatic
}else{
var d = max - min;
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
switch(max){
case r: h = (g - b) / d + (g < b ? 6 : 0); break;
case g: h = (b - r) / d + 2; break;
case b: h = (r - g) / d + 4; break;
}
h /= 6;
}
return [h, s, l,val[3]];
}
function hue2rgb(p, q, t){
if(t < 0) t += 1;
if(t > 1) t -= 1;
if(t < 1/6) return p + (q - p) * 6 * t;
if(t < 1/2) return q;
if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;
return p;
}
function hslToRgb(val){
var h = val[0];
var s = val[1];
var l = val[2];
var r, g, b;
if(s === 0){
r = g = b = l; // achromatic
}else{
var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
var p = 2 * l - q;
r = hue2rgb(p, q, h + 1/3);
g = hue2rgb(p, q, h);
b = hue2rgb(p, q, h - 1/3);
}
return [r, g , b, val[3]];
}
function linear(t, tMin, tMax, value1, value2){
if(value1 === undefined || value2 === undefined){
value1 = tMin;
value2 = tMax;
tMin = 0;
tMax = 1;
}
if(tMax < tMin) {
var _tMin = tMax;
tMax = tMin;
tMin = _tMin;
}
if(t <= tMin) {
return value1;
}else if(t >= tMax){
return value2;
}
var perc = tMax === tMin ? 0 : (t-tMin)/(tMax-tMin);
if(!value1.length){
return value1 + (value2-value1)*perc;
}
var i, len = value1.length;
var arr = createTypedArray('float32', len);
for(i=0;i<len;i+=1){
arr[i] = value1[i] + (value2[i]-value1[i])*perc;
}
return arr;
}
function random(min,max){
if(max === undefined){
if(min === undefined){
min = 0;
max = 1;
} else {
max = min;
min = undefined;
}
}
if(max.length){
var i, len = max.length;
if(!min){
min = createTypedArray('float32', len);
}
var arr = createTypedArray('float32', len);
var rnd = BMMath.random();
for(i=0;i<len;i+=1){
arr[i] = min[i] + rnd*(max[i]-min[i]);
}
return arr;
}
if(min === undefined){
min = 0;
}
var rndm = BMMath.random();
return min + rndm*(max-min);
}
function createPath(points, inTangents, outTangents, closed) {
var i, len = points.length;
var path = shape_pool.newElement();
path.setPathData(!!closed, len);
var arrPlaceholder = [0,0], inVertexPoint, outVertexPoint;
for(i = 0; i < len; i += 1) {
inVertexPoint = (inTangents && inTangents[i]) ? inTangents[i] : arrPlaceholder;
outVertexPoint = (outTangents && outTangents[i]) ? outTangents[i] : arrPlaceholder;
path.setTripleAt(points[i][0],points[i][1],outVertexPoint[0] + points[i][0],outVertexPoint[1] + points[i][1],inVertexPoint[0] + points[i][0],inVertexPoint[1] + points[i][1],i,true);
}
return path;
}
function initiateExpression(elem,data,property){
var val = data.x;
var needsVelocity = /velocity(?![\w\d])/.test(val);
var _needsRandom = val.indexOf('random') !== -1;
var elemType = elem.data.ty;
var transform,$bm_transform,content,effect;
var thisProperty = property;
thisProperty.valueAtTime = thisProperty.getValueAtTime;
Object.defineProperty(thisProperty, 'value', {
get: function() {
return thisProperty.v
}
})
elem.comp.frameDuration = 1/elem.comp.globalData.frameRate;
elem.comp.displayStartTime = 0;
var inPoint = elem.data.ip/elem.comp.globalData.frameRate;
var outPoint = elem.data.op/elem.comp.globalData.frameRate;
var width = elem.data.sw ? elem.data.sw : 0;
var height = elem.data.sh ? elem.data.sh : 0;
var name = elem.data.nm;
var loopIn, loop_in, loopOut, loop_out, smooth;
var toWorld,fromWorld,fromComp,toComp,fromCompToSurface, position, rotation, anchorPoint, scale, thisLayer, thisComp,mask,valueAtTime,velocityAtTime;
var __expression_functions = [];
if(data.xf) {
var i, len = data.xf.length;
for(i = 0; i < len; i += 1) {
__expression_functions[i] = eval('(function(){ return ' + data.xf[i] + '}())');
}
}
var scoped_bm_rt;
var expression_function = eval('[function _expression_function(){' + val+';scoped_bm_rt=$bm_rt}' + ']')[0];
var numKeys = property.kf ? data.k.length : 0;
var active = !this.data || this.data.hd !== true;
var wiggle = function wiggle(freq,amp){
var i,j, len = this.pv.length ? this.pv.length : 1;
var addedAmps = createTypedArray('float32', len);
freq = 5;
var iterations = Math.floor(time*freq);
i = 0;
j = 0;
while(i<iterations){
//var rnd = BMMath.random();
for(j=0;j<len;j+=1){
addedAmps[j] += -amp + amp*2*BMMath.random();
//addedAmps[j] += -amp + amp*2*rnd;
}
i += 1;
}
//var rnd2 = BMMath.random();
var periods = time*freq;
var perc = periods - Math.floor(periods);
var arr = createTypedArray('float32', len);
if(len>1){
for(j=0;j<len;j+=1){
arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*BMMath.random())*perc;
//arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;
//arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);
}
return arr;
} else {
return this.pv + addedAmps[0] + (-amp + amp*2*BMMath.random())*perc;
}
}.bind(this);
if(thisProperty.loopIn) {
loopIn = thisProperty.loopIn.bind(thisProperty);
loop_in = loopIn;
}
if(thisProperty.loopOut) {
loopOut = thisProperty.loopOut.bind(thisProperty);
loop_out = loopOut;
}
if(thisProperty.smooth) {
smooth = thisProperty.smooth.bind(thisProperty);
}
function loopInDuration(type,duration){
return loopIn(type,duration,true);
}
function loopOutDuration(type,duration){
return loopOut(type,duration,true);
}
if(this.getValueAtTime) {
valueAtTime = this.getValueAtTime.bind(this);
}
if(this.getVelocityAtTime) {
velocityAtTime = this.getVelocityAtTime.bind(this);
}
var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);
function lookAt(elem1,elem2){
var fVec = [elem2[0]-elem1[0],elem2[1]-elem1[1],elem2[2]-elem1[2]];
var pitch = Math.atan2(fVec[0],Math.sqrt(fVec[1]*fVec[1]+fVec[2]*fVec[2]))/degToRads;
var yaw = -Math.atan2(fVec[1],fVec[2])/degToRads;
return [yaw,pitch,0];
}
function easeOut(t, tMin, tMax, val1, val2){
return applyEase(easeOutBez, t, tMin, tMax, val1, val2);
}
function easeIn(t, tMin, tMax, val1, val2){
return applyEase(easeInBez, t, tMin, tMax, val1, val2);
}
function ease(t, tMin, tMax, val1, val2){
return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);
}
function applyEase(fn, t, tMin, tMax, val1, val2) {
if(val1 === undefined){
val1 = tMin;
val2 = tMax;
} else {
t = (t - tMin) / (tMax - tMin);
}
t = t > 1 ? 1 : t < 0 ? 0 : t;
var mult = fn(t);
if($bm_isInstanceOfArray(val1)) {
var i, len = val1.length;
var arr = createTypedArray('float32', len);
for (i = 0; i < len; i += 1) {
arr[i] = (val2[i] - val1[i]) * mult + val1[i];
}
return arr;
} else {
return (val2 - val1) * mult + val1;
}
}
function nearestKey(time){
var i, len = data.k.length,index,keyTime;
if(!data.k.length || typeof(data.k[0]) === 'number'){
index = 0;
keyTime = 0;
} else {
index = -1;
time *= elem.comp.globalData.frameRate;
if (time < data.k[0].t) {
index = 1;
keyTime = data.k[0].t;
} else {
for(i=0;i<len-1;i+=1){
if(time === data.k[i].t){
index = i + 1;
keyTime = data.k[i].t;
break;
}else if(time>data.k[i].t && time<data.k[i+1].t){
if(time-data.k[i].t > data.k[i+1].t - time){
index = i + 2;
keyTime = data.k[i+1].t;
} else {
index = i + 1;
keyTime = data.k[i].t;
}
break;
}
}
if(index === -1){
index = i + 1;
keyTime = data.k[i].t;
}
}
}
var ob = {};
ob.index = index;
ob.time = keyTime/elem.comp.globalData.frameRate;
return ob;
}
function key(ind){
var ob, i, len;
if(!data.k.length || typeof(data.k[0]) === 'number'){
throw new Error('The property has no keyframe at index ' + ind);
}
ind -= 1;
ob = {
time: data.k[ind].t/elem.comp.globalData.frameRate,
value: []
};
var arr = data.k[ind].hasOwnProperty('s') ? data.k[ind].s : data.k[ind - 1].e;
len = arr.length;
for(i=0;i<len;i+=1){
ob[i] = arr[i];
ob.value[i] = arr[i]
}
return ob;
}
function framesToTime(frames, fps) {
if (!fps) {
fps = elem.comp.globalData.frameRate;
}
return frames / fps;
}
function timeToFrames(t, fps) {
if (!t && t !== 0) {
t = time;
}
if (!fps) {
fps = elem.comp.globalData.frameRate;
}
return t * fps;
}
function seedRandom(seed){
BMMath.seedrandom(randSeed + seed);
}
function sourceRectAtTime() {
return elem.sourceRectAtTime();
}
function substring(init, end) {
if(typeof value === 'string') {
if(end === undefined) {
return value.substring(init)
}
return value.substring(init, end)
}
return '';
}
function substr(init, end) {
if(typeof value === 'string') {
if(end === undefined) {
return value.substr(init)
}
return value.substr(init, end)
}
return '';
}
function posterizeTime(framesPerSecond) {
time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond
value = valueAtTime(time)
}
var time, velocity, value, text, textIndex, textTotal, selectorValue;
var index = elem.data.ind;
var hasParent = !!(elem.hierarchy && elem.hierarchy.length);
var parent;
var randSeed = Math.floor(Math.random()*1000000);
var globalData = elem.globalData;
function executeExpression(_value) {
// globalData.pushExpression();
value = _value;
if (_needsRandom) {
seedRandom(randSeed);
}
if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {
return value;
}
if(this.propType === 'textSelector'){
textIndex = this.textIndex;
textTotal = this.textTotal;
selectorValue = this.selectorValue;
}
if (!thisLayer) {
text = elem.layerInterface.text;
thisLayer = elem.layerInterface;
thisComp = elem.comp.compInterface;
toWorld = thisLayer.toWorld.bind(thisLayer);
fromWorld = thisLayer.fromWorld.bind(thisLayer);
fromComp = thisLayer.fromComp.bind(thisLayer);
toComp = thisLayer.toComp.bind(thisLayer);
mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;
fromCompToSurface = fromComp;
}
if (!transform) {
transform = elem.layerInterface("ADBE Transform Group");
$bm_transform = transform;
if(transform) {
anchorPoint = transform.anchorPoint;
/*position = transform.position;
rotation = transform.rotation;
scale = transform.scale;*/
}
}
if (elemType === 4 && !content) {
content = thisLayer("ADBE Root Vectors Group");
}
if (!effect) {
effect = thisLayer(4);
}
hasParent = !!(elem.hierarchy && elem.hierarchy.length);
if (hasParent && !parent) {
parent = elem.hierarchy[0].layerInterface;
}
time = this.comp.renderedFrame/this.comp.globalData.frameRate;
if (needsVelocity) {
velocity = velocityAtTime(time);
}
expression_function();
this.frameExpressionId = elem.globalData.frameId;
//TODO: Check if it's possible to return on ShapeInterface the .v value
if (scoped_bm_rt.propType === "shape") {
scoped_bm_rt = scoped_bm_rt.v;
}
// globalData.popExpression();
return scoped_bm_rt;
}
return executeExpression;
}
ob.initiateExpression = initiateExpression;
return ob;
}());
var expressionHelpers = (function(){
function searchExpressions(elem,data,prop){
if(data.x){
prop.k = true;
prop.x = true;
prop.initiateExpression = ExpressionManager.initiateExpression;
prop.effectsSequence.push(prop.initiateExpression(elem,data,prop).bind(prop));
}
}
function getValueAtTime(frameNum) {
frameNum *= this.elem.globalData.frameRate;
frameNum -= this.offsetTime;
if(frameNum !== this._cachingAtTime.lastFrame) {
this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;
this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);
this._cachingAtTime.lastFrame = frameNum;
}
return this._cachingAtTime.value;
}
function getSpeedAtTime(frameNum) {
var delta = -0.01;
var v1 = this.getValueAtTime(frameNum);
var v2 = this.getValueAtTime(frameNum + delta);
var speed = 0;
if(v1.length){
var i;
for(i=0;i<v1.length;i+=1){
speed += Math.pow(v2[i] - v1[i], 2);
}
speed = Math.sqrt(speed) * 100;
} else {
speed = 0;
}
return speed;
}
function getVelocityAtTime(frameNum) {
if(this.vel !== undefined){
return this.vel;
}
var delta = -0.001;
//frameNum += this.elem.data.st;
var v1 = this.getValueAtTime(frameNum);
var v2 = this.getValueAtTime(frameNum + delta);
var velocity;
if(v1.length){
velocity = createTypedArray('float32', v1.length);
var i;
for(i=0;i<v1.length;i+=1){
//removing frameRate
//if needed, don't add it here
//velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);
velocity[i] = (v2[i] - v1[i])/delta;
}
} else {
velocity = (v2 - v1)/delta;
}
return velocity;
}
function getStaticValueAtTime() {
return this.pv;
}
function setGroupProperty(propertyGroup){
this.propertyGroup = propertyGroup;
}
return {
searchExpressions: searchExpressions,
getSpeedAtTime: getSpeedAtTime,
getVelocityAtTime: getVelocityAtTime,
getValueAtTime: getValueAtTime,
getStaticValueAtTime: getStaticValueAtTime,
setGroupProperty: setGroupProperty,
}
}());
(function addPropertyDecorator() {
function loopOut(type,duration,durationFlag){
if(!this.k || !this.keyframes){
return this.pv;
}
type = type ? type.toLowerCase() : '';
var currentFrame = this.comp.renderedFrame;
var keyframes = this.keyframes;
var lastKeyFrame = keyframes[keyframes.length - 1].t;
if(currentFrame<=lastKeyFrame){
return this.pv;
}else{
var cycleDuration, firstKeyFrame;
if(!durationFlag){
if(!duration || duration > keyframes.length - 1){
duration = keyframes.length - 1;
}
firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;
cycleDuration = lastKeyFrame - firstKeyFrame;
} else {
if(!duration){
cycleDuration = Math.max(0,lastKeyFrame - this.elem.data.ip);
} else {
cycleDuration = Math.abs(lastKeyFrame - elem.comp.globalData.frameRate*duration);
}
firstKeyFrame = lastKeyFrame - cycleDuration;
}
var i, len, ret;
if(type === 'pingpong') {
var iterations = Math.floor((currentFrame - firstKeyFrame)/cycleDuration);
if(iterations % 2 !== 0){
return this.getValueAtTime(((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0);
}
} else if(type === 'offset'){
var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);
var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);
var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);
var repeats = Math.floor((currentFrame - firstKeyFrame)/cycleDuration);
if(this.pv.length){
ret = new Array(initV.length);
len = ret.length;
for(i=0;i<len;i+=1){
ret[i] = (endV[i]-initV[i])*repeats + current[i];
}
return ret;
}
return (endV-initV)*repeats + current;
} else if(type === 'continue'){
var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);
var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);
if(this.pv.length){
ret = new Array(lastValue.length);
len = ret.length;
for(i=0;i<len;i+=1){
ret[i] = lastValue[i] + (lastValue[i]-nextLastValue[i])*((currentFrame - lastKeyFrame)/ this.comp.globalData.frameRate)/0.0005;
}
return ret;
}
return lastValue + (lastValue-nextLastValue)*(((currentFrame - lastKeyFrame))/0.001);
}
return this.getValueAtTime((((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0);
}
}
function loopIn(type,duration, durationFlag) {
if(!this.k){
return this.pv;
}
type = type ? type.toLowerCase() : '';
var currentFrame = this.comp.renderedFrame;
var keyframes = this.keyframes;
var firstKeyFrame = keyframes[0].t;
if(currentFrame>=firstKeyFrame){
return this.pv;
}else{
var cycleDuration, lastKeyFrame;
if(!durationFlag){
if(!duration || duration > keyframes.length - 1){
duration = keyframes.length - 1;
}
lastKeyFrame = keyframes[duration].t;
cycleDuration = lastKeyFrame - firstKeyFrame;
} else {
if(!duration){
cycleDuration = Math.max(0,this.elem.data.op - firstKeyFrame);
} else {
cycleDuration = Math.abs(elem.comp.globalData.frameRate*duration);
}
lastKeyFrame = firstKeyFrame + cycleDuration;
}
var i, len, ret;
if(type === 'pingpong') {
var iterations = Math.floor((firstKeyFrame - currentFrame)/cycleDuration);
if(iterations % 2 === 0){
return this.getValueAtTime((((firstKeyFrame - currentFrame)%cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0);
}
} else if(type === 'offset'){
var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);
var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);
var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame)%cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);
var repeats = Math.floor((firstKeyFrame - currentFrame)/cycleDuration)+1;
if(this.pv.length){
ret = new Array(initV.length);
len = ret.length;
for(i=0;i<len;i+=1){
ret[i] = current[i]-(endV[i]-initV[i])*repeats;
}
return ret;
}
return current-(endV-initV)*repeats;
} else if(type === 'continue'){
var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);
var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);
if(this.pv.length){
ret = new Array(firstValue.length);
len = ret.length;
for(i=0;i<len;i+=1){
ret[i] = firstValue[i] + (firstValue[i]-nextFirstValue[i])*(firstKeyFrame - currentFrame)/0.001;
}
return ret;
}
return firstValue + (firstValue-nextFirstValue)*(firstKeyFrame - currentFrame)/0.001;
}
return this.getValueAtTime(((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0);
}
}
function smooth(width, samples) {
if (!this.k){
return this.pv;
}
width = (width || 0.4) * 0.5;
samples = Math.floor(samples || 5);
if (samples <= 1) {
return this.pv;
}
var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;
var initFrame = currentTime - width;
var endFrame = currentTime + width;
var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;
var i = 0, j = 0;
var value;
if (this.pv.length) {
value = createTypedArray('float32', this.pv.length);
} else {
value = 0;
}
var sampleValue;
while (i < samples) {
sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);
if(this.pv.length) {
for (j = 0; j < this.pv.length; j += 1) {
value[j] += sampleValue[j];
}
} else {
value += sampleValue;
}
i += 1;
}
if(this.pv.length) {
for (j = 0; j < this.pv.length; j += 1) {
value[j] /= samples;
}
} else {
value /= samples;
}
return value;
}
function getValueAtTime(frameNum) {
frameNum *= this.elem.globalData.frameRate;
frameNum -= this.offsetTime;
if(frameNum !== this._cachingAtTime.lastFrame) {
this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;
this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);
this._cachingAtTime.lastFrame = frameNum;
}
return this._cachingAtTime.value;
}
function getTransformValueAtTime(time) {
console.warn('Transform at time not supported');
}
function getTransformStaticValueAtTime(time) {
}
var getTransformProperty = TransformPropertyFactory.getTransformProperty;
TransformPropertyFactory.getTransformProperty = function(elem, data, container) {
var prop = getTransformProperty(elem, data, container);
if(prop.dynamicProperties.length) {
prop.getValueAtTime = getTransformValueAtTime.bind(prop);
} else {
prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);
}
prop.setGroupProperty = expressionHelpers.setGroupProperty;
return prop;
};
var propertyGetProp = PropertyFactory.getProp;
PropertyFactory.getProp = function(elem,data,type, mult, container){
var prop = propertyGetProp(elem,data,type, mult, container);
//prop.getVelocityAtTime = getVelocityAtTime;
//prop.loopOut = loopOut;
//prop.loopIn = loopIn;
if(prop.kf){
prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);
} else {
prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);
}
prop.setGroupProperty = expressionHelpers.setGroupProperty;
prop.loopOut = loopOut;
prop.loopIn = loopIn;
prop.smooth = smooth;
prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);
prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);
prop.numKeys = data.a === 1 ? data.k.length : 0;
prop.propertyIndex = data.ix;
var value = 0;
if(type !== 0) {
value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);
}
prop._cachingAtTime = {
lastFrame: initialDefaultFrame,
lastIndex: 0,
value: value
};
expressionHelpers.searchExpressions(elem,data,prop);
if(prop.k){
container.addDynamicProperty(prop);
}
return prop;
};
function getShapeValueAtTime(frameNum) {
//For now this caching object is created only when needed instead of creating it when the shape is initialized.
if (!this._cachingAtTime) {
this._cachingAtTime = {
shapeValue: shape_pool.clone(this.pv),
lastIndex: 0,
lastTime: initialDefaultFrame
};
}
frameNum *= this.elem.globalData.frameRate;
frameNum -= this.offsetTime;
if(frameNum !== this._cachingAtTime.lastTime) {
this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;
this._cachingAtTime.lastTime = frameNum;
this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);
}
return this._cachingAtTime.shapeValue;
}
var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();
var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();
function ShapeExpressions(){}
ShapeExpressions.prototype = {
vertices: function(prop, time){
if (this.k) {
this.getValue();
}
var shapePath = this.v;
if(time !== undefined) {
shapePath = this.getValueAtTime(time, 0);
}
var i, len = shapePath._length;
var vertices = shapePath[prop];
var points = shapePath.v;
var arr = createSizedArray(len);
for(i = 0; i < len; i += 1) {
if(prop === 'i' || prop === 'o') {
arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];
} else {
arr[i] = [vertices[i][0], vertices[i][1]];
}
}
return arr;
},
points: function(time){
return this.vertices('v', time);
},
inTangents: function(time){
return this.vertices('i', time);
},
outTangents: function(time){
return this.vertices('o', time);
},
isClosed: function(){
return this.v.c;
},
pointOnPath: function(perc, time){
var shapePath = this.v;
if(time !== undefined) {
shapePath = this.getValueAtTime(time, 0);
}
if(!this._segmentsLength) {
this._segmentsLength = bez.getSegmentsLength(shapePath);
}
var segmentsLength = this._segmentsLength;
var lengths = segmentsLength.lengths;
var lengthPos = segmentsLength.totalLength * perc;
var i = 0, len = lengths.length;
var j = 0, jLen;
var accumulatedLength = 0, pt;
while(i < len) {
if(accumulatedLength + lengths[i].addedLength > lengthPos) {
var initIndex = i;
var endIndex = (shapePath.c && i === len - 1) ? 0 : i + 1;
var segmentPerc = (lengthPos - accumulatedLength)/lengths[i].addedLength;
pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);
break;
} else {
accumulatedLength += lengths[i].addedLength;
}
i += 1;
}
if(!pt){
pt = shapePath.c ? [shapePath.v[0][0],shapePath.v[0][1]]:[shapePath.v[shapePath._length-1][0],shapePath.v[shapePath._length-1][1]];
}
return pt;
},
vectorOnPath: function(perc, time, vectorType){
//perc doesn't use triple equality because it can be a Number object as well as a primitive.
perc = perc == 1 ? this.v.c ? 0 : 0.999 : perc;
var pt1 = this.pointOnPath(perc, time);
var pt2 = this.pointOnPath(perc + 0.001, time);
var xLength = pt2[0] - pt1[0];
var yLength = pt2[1] - pt1[1];
var magnitude = Math.sqrt(Math.pow(xLength,2) + Math.pow(yLength,2));
if (magnitude === 0) {
return [0,0];
}
var unitVector = vectorType === 'tangent' ? [xLength/magnitude, yLength/magnitude] : [-yLength/magnitude, xLength/magnitude];
return unitVector;
},
tangentOnPath: function(perc, time){
return this.vectorOnPath(perc, time, 'tangent');
},
normalOnPath: function(perc, time){
return this.vectorOnPath(perc, time, 'normal');
},
setGroupProperty: expressionHelpers.setGroupProperty,
getValueAtTime: expressionHelpers.getStaticValueAtTime
};
extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);
extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);
KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;
KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;
var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;
ShapePropertyFactory.getShapeProp = function(elem,data,type, arr, trims){
var prop = propertyGetShapeProp(elem,data,type, arr, trims);
prop.propertyIndex = data.ix;
prop.lock = false;
if(type === 3){
expressionHelpers.searchExpressions(elem,data.pt,prop);
} else if(type === 4){
expressionHelpers.searchExpressions(elem,data.ks,prop);
}
if(prop.k){
elem.addDynamicProperty(prop);
}
return prop;
};
}());
(function addDecorator() {
function searchExpressions(){
if(this.data.d.x){
this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem,this.data.d,this);
this.addEffect(this.getExpressionValue.bind(this));
return true;
}
}
TextProperty.prototype.getExpressionValue = function(currentValue, text) {
var newValue = this.calculateExpression(text);
if(currentValue.t !== newValue) {
var newData = {};
this.copyData(newData, currentValue);
newData.t = newValue.toString();
newData.__complete = false;
return newData;
}
return currentValue;
}
TextProperty.prototype.searchProperty = function(){
var isKeyframed = this.searchKeyframes();
var hasExpressions = this.searchExpressions();
this.kf = isKeyframed || hasExpressions;
return this.kf;
};
TextProperty.prototype.searchExpressions = searchExpressions;
}());
var ShapeExpressionInterface = (function(){
function iterateElements(shapes,view, propertyGroup){
var arr = [];
var i, len = shapes ? shapes.length : 0;
for(i=0;i<len;i+=1){
if(shapes[i].ty == 'gr'){
arr.push(groupInterfaceFactory(shapes[i],view[i],propertyGroup));
}else if(shapes[i].ty == 'fl'){
arr.push(fillInterfaceFactory(shapes[i],view[i],propertyGroup));
}else if(shapes[i].ty == 'st'){
arr.push(strokeInterfaceFactory(shapes[i],view[i],propertyGroup));
}else if(shapes[i].ty == 'tm'){
arr.push(trimInterfaceFactory(shapes[i],view[i],propertyGroup));
}else if(shapes[i].ty == 'tr'){
//arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));
}else if(shapes[i].ty == 'el'){
arr.push(ellipseInterfaceFactory(shapes[i],view[i],propertyGroup));
}else if(shapes[i].ty == 'sr'){
arr.push(starInterfaceFactory(shapes[i],view[i],propertyGroup));
} else if(shapes[i].ty == 'sh'){
arr.push(pathInterfaceFactory(shapes[i],view[i],propertyGroup));
} else if(shapes[i].ty == 'rc'){
arr.push(rectInterfaceFactory(shapes[i],view[i],propertyGroup));
} else if(shapes[i].ty == 'rd'){
arr.push(roundedInterfaceFactory(shapes[i],view[i],propertyGroup));
} else if(shapes[i].ty == 'rp'){
arr.push(repeaterInterfaceFactory(shapes[i],view[i],propertyGroup));
}
}
return arr;
}
function contentsInterfaceFactory(shape,view, propertyGroup){
var interfaces;
var interfaceFunction = function _interfaceFunction(value){
var i = 0, len = interfaces.length;
while(i<len){
if(interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value){
return interfaces[i];
}
i+=1;
}
if(typeof value === 'number'){
return interfaces[value-1];
}
};
interfaceFunction.propertyGroup = function(val){
if(val === 1){
return interfaceFunction;
} else{
return propertyGroup(val-1);
}
};
interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);
interfaceFunction.numProperties = interfaces.length;
interfaceFunction.propertyIndex = shape.cix;
interfaceFunction._name = shape.nm;
return interfaceFunction;
}
function groupInterfaceFactory(shape,view, propertyGroup){
var interfaceFunction = function _interfaceFunction(value){
switch(value){
case 'ADBE Vectors Group':
case 'Contents':
case 2:
return interfaceFunction.content;
//Not necessary for now. Keeping them here in case a new case appears
//case 'ADBE Vector Transform Group':
//case 3:
default:
return interfaceFunction.transform;
}
};
interfaceFunction.propertyGroup = function(val){
if(val === 1){
return interfaceFunction;
} else{
return propertyGroup(val-1);
}
};
var content = contentsInterfaceFactory(shape,view,interfaceFunction.propertyGroup);
var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1],view.it[view.it.length - 1],interfaceFunction.propertyGroup);
interfaceFunction.content = content;
interfaceFunction.transform = transformInterface;
Object.defineProperty(interfaceFunction, '_name', {
get: function(){
return shape.nm;
}
});
//interfaceFunction.content = interfaceFunction;
interfaceFunction.numProperties = shape.np;
interfaceFunction.propertyIndex = shape.ix;
interfaceFunction.nm = shape.nm;
interfaceFunction.mn = shape.mn;
return interfaceFunction;
}
function fillInterfaceFactory(shape,view,propertyGroup){
function interfaceFunction(val){
if(val === 'Color' || val === 'color'){
return interfaceFunction.color;
} else if(val === 'Opacity' || val === 'opacity'){
return interfaceFunction.opacity;
}
}
Object.defineProperties(interfaceFunction, {
'color': {
get: ExpressionPropertyInterface(view.c)
},
'opacity': {
get: ExpressionPropertyInterface(view.o)
},
'_name': { value: shape.nm },
'mn': { value: shape.mn }
});
view.c.setGroupProperty(propertyGroup);
view.o.setGroupProperty(propertyGroup);
return interfaceFunction;
}
function strokeInterfaceFactory(shape,view,propertyGroup){
function _propertyGroup(val){
if(val === 1){
return ob;
} else{
return propertyGroup(val-1);
}
}
function _dashPropertyGroup(val){
if(val === 1){
return dashOb;
} else{
return _propertyGroup(val-1);
}
}
function addPropertyToDashOb(i) {
Object.defineProperty(dashOb, shape.d[i].nm, {
get: ExpressionPropertyInterface(view.d.dataProps[i].p)
});
}
var i, len = shape.d ? shape.d.length : 0;
var dashOb = {};
for (i = 0; i < len; i += 1) {
addPropertyToDashOb(i);
view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);
}
function interfaceFunction(val){
if(val === 'Color' || val === 'color'){
return interfaceFunction.color;
} else if(val === 'Opacity' || val === 'opacity'){
return interfaceFunction.opacity;
} else if(val === 'Stroke Width' || val === 'stroke width'){
return interfaceFunction.strokeWidth;
}
}
Object.defineProperties(interfaceFunction, {
'color': {
get: ExpressionPropertyInterface(view.c)
},
'opacity': {
get: ExpressionPropertyInterface(view.o)
},
'strokeWidth': {
get: ExpressionPropertyInterface(view.w)
},
'dash': {
get: function() {
return dashOb;
}
},
'_name': { value: shape.nm },
'mn': { value: shape.mn }
});
view.c.setGroupProperty(_propertyGroup);
view.o.setGroupProperty(_propertyGroup);
view.w.setGroupProperty(_propertyGroup);
return interfaceFunction;
}
function trimInterfaceFactory(shape,view,propertyGroup){
function _propertyGroup(val){
if(val == 1){
return interfaceFunction;
} else {
return propertyGroup(--val);
}
}
interfaceFunction.propertyIndex = shape.ix;
view.s.setGroupProperty(_propertyGroup);
view.e.setGroupProperty(_propertyGroup);
view.o.setGroupProperty(_propertyGroup);
function interfaceFunction(val){
if(val === shape.e.ix || val === 'End' || val === 'end'){
return interfaceFunction.end;
}
if(val === shape.s.ix){
return interfaceFunction.start;
}
if(val === shape.o.ix){
return interfaceFunction.offset;
}
}
interfaceFunction.propertyIndex = shape.ix;
interfaceFunction.propertyGroup = propertyGroup;
Object.defineProperties(interfaceFunction, {
'start': {
get: ExpressionPropertyInterface(view.s)
},
'end': {
get: ExpressionPropertyInterface(view.e)
},
'offset': {
get: ExpressionPropertyInterface(view.o)
},
'_name': { value: shape.nm }
});
interfaceFunction.mn = shape.mn;
return interfaceFunction;
}
function transformInterfaceFactory(shape,view,propertyGroup){
function _propertyGroup(val){
if(val == 1){
return interfaceFunction;
} else {
return propertyGroup(--val);
}
}
view.transform.mProps.o.setGroupProperty(_propertyGroup);
view.transform.mProps.p.setGroupProperty(_propertyGroup);
view.transform.mProps.a.setGroupProperty(_propertyGroup);
view.transform.mProps.s.setGroupProperty(_propertyGroup);
view.transform.mProps.r.setGroupProperty(_propertyGroup);
if(view.transform.mProps.sk){
view.transform.mProps.sk.setGroupProperty(_propertyGroup);
view.transform.mProps.sa.setGroupProperty(_propertyGroup);
}
view.transform.op.setGroupProperty(_propertyGroup);
function interfaceFunction(value){
if(shape.a.ix === value || value === 'Anchor Point'){
return interfaceFunction.anchorPoint;
}
if(shape.o.ix === value || value === 'Opacity'){
return interfaceFunction.opacity;
}
if(shape.p.ix === value || value === 'Position'){
return interfaceFunction.position;
}
if(shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation'){
return interfaceFunction.rotation;
}
if(shape.s.ix === value || value === 'Scale'){
return interfaceFunction.scale;
}
if(shape.sk && shape.sk.ix === value || value === 'Skew'){
return interfaceFunction.skew;
}
if(shape.sa && shape.sa.ix === value || value === 'Skew Axis'){
return interfaceFunction.skewAxis;
}
}
Object.defineProperties(interfaceFunction, {
'opacity': {
get: ExpressionPropertyInterface(view.transform.mProps.o)
},
'position': {
get: ExpressionPropertyInterface(view.transform.mProps.p)
},
'anchorPoint': {
get: ExpressionPropertyInterface(view.transform.mProps.a)
},
'scale': {
get: ExpressionPropertyInterface(view.transform.mProps.s)
},
'rotation': {
get: ExpressionPropertyInterface(view.transform.mProps.r)
},
'skew': {
get: ExpressionPropertyInterface(view.transform.mProps.sk)
},
'skewAxis': {
get: ExpressionPropertyInterface(view.transform.mProps.sa)
},
'_name': { value: shape.nm }
});
interfaceFunction.ty = 'tr';
interfaceFunction.mn = shape.mn;
interfaceFunction.propertyGroup = propertyGroup;
return interfaceFunction;
}
function ellipseInterfaceFactory(shape,view,propertyGroup){
function _propertyGroup(val){
if(val == 1){
return interfaceFunction;
} else {
return propertyGroup(--val);
}
}
interfaceFunction.propertyIndex = shape.ix;
var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;
prop.s.setGroupProperty(_propertyGroup);
prop.p.setGroupProperty(_propertyGroup);
function interfaceFunction(value){
if(shape.p.ix === value){
return interfaceFunction.position;
}
if(shape.s.ix === value){
return interfaceFunction.size;
}
}
Object.defineProperties(interfaceFunction, {
'size': {
get: ExpressionPropertyInterface(prop.s)
},
'position': {
get: ExpressionPropertyInterface(prop.p)
},
'_name': { value: shape.nm }
});
interfaceFunction.mn = shape.mn;
return interfaceFunction;
}
function starInterfaceFactory(shape,view,propertyGroup){
function _propertyGroup(val){
if(val == 1){
return interfaceFunction;
} else {
return propertyGroup(--val);
}
}
var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;
interfaceFunction.propertyIndex = shape.ix;
prop.or.setGroupProperty(_propertyGroup);
prop.os.setGroupProperty(_propertyGroup);
prop.pt.setGroupProperty(_propertyGroup);
prop.p.setGroupProperty(_propertyGroup);
prop.r.setGroupProperty(_propertyGroup);
if(shape.ir){
prop.ir.setGroupProperty(_propertyGroup);
prop.is.setGroupProperty(_propertyGroup);
}
function interfaceFunction(value){
if(shape.p.ix === value){
return interfaceFunction.position;
}
if(shape.r.ix === value){
return interfaceFunction.rotation;
}
if(shape.pt.ix === value){
return interfaceFunction.points;
}
if(shape.or.ix === value || 'ADBE Vector Star Outer Radius' === value){
return interfaceFunction.outerRadius;
}
if(shape.os.ix === value){
return interfaceFunction.outerRoundness;
}
if(shape.ir && (shape.ir.ix === value || 'ADBE Vector Star Inner Radius' === value)){
return interfaceFunction.innerRadius;
}
if(shape.is && shape.is.ix === value){
return interfaceFunction.innerRoundness;
}
}
Object.defineProperties(interfaceFunction, {
'position': {
get: ExpressionPropertyInterface(prop.p)
},
'rotation': {
get: ExpressionPropertyInterface(prop.r)
},
'points': {
get: ExpressionPropertyInterface(prop.pt)
},
'outerRadius': {
get: ExpressionPropertyInterface(prop.or)
},
'outerRoundness': {
get: ExpressionPropertyInterface(prop.os)
},
'innerRadius': {
get: ExpressionPropertyInterface(prop.ir)
},
'innerRoundness': {
get: ExpressionPropertyInterface(prop.is)
},
'_name': { value: shape.nm }
});
interfaceFunction.mn = shape.mn;
return interfaceFunction;
}
function rectInterfaceFactory(shape,view,propertyGroup){
function _propertyGroup(val){
if(val == 1){
return interfaceFunction;
} else {
return propertyGroup(--val);
}
}
var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;
interfaceFunction.propertyIndex = shape.ix;
prop.p.setGroupProperty(_propertyGroup);
prop.s.setGroupProperty(_propertyGroup);
prop.r.setGroupProperty(_propertyGroup);
function interfaceFunction(value){
if(shape.p.ix === value){
return interfaceFunction.position;
}
if(shape.r.ix === value){
return interfaceFunction.roundness;
}
if(shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size'){
return interfaceFunction.size;
}
}
Object.defineProperties(interfaceFunction, {
'position': {
get: ExpressionPropertyInterface(prop.p)
},
'roundness': {
get: ExpressionPropertyInterface(prop.r)
},
'size': {
get: ExpressionPropertyInterface(prop.s)
},
'_name': { value: shape.nm }
});
interfaceFunction.mn = shape.mn;
return interfaceFunction;
}
function roundedInterfaceFactory(shape,view,propertyGroup){
function _propertyGroup(val){
if(val == 1){
return interfaceFunction;
} else {
return propertyGroup(--val);
}
}
var prop = view;
interfaceFunction.propertyIndex = shape.ix;
prop.rd.setGroupProperty(_propertyGroup);
function interfaceFunction(value){
if(shape.r.ix === value || 'Round Corners 1' === value){
return interfaceFunction.radius;
}
}
Object.defineProperties(interfaceFunction, {
'radius': {
get: ExpressionPropertyInterface(prop.rd)
},
'_name': { value: shape.nm }
});
interfaceFunction.mn = shape.mn;
return interfaceFunction;
}
function repeaterInterfaceFactory(shape,view,propertyGroup){
function _propertyGroup(val){
if(val == 1){
return interfaceFunction;
} else {
return propertyGroup(--val);
}
}
var prop = view;
interfaceFunction.propertyIndex = shape.ix;
prop.c.setGroupProperty(_propertyGroup);
prop.o.setGroupProperty(_propertyGroup);
function interfaceFunction(value){
if(shape.c.ix === value || 'Copies' === value){
return interfaceFunction.copies;
} else if(shape.o.ix === value || 'Offset' === value){
return interfaceFunction.offset;
}
}
Object.defineProperties(interfaceFunction, {
'copies': {
get: ExpressionPropertyInterface(prop.c)
},
'offset': {
get: ExpressionPropertyInterface(prop.o)
},
'_name': { value: shape.nm }
});
interfaceFunction.mn = shape.mn;
return interfaceFunction;
}
function pathInterfaceFactory(shape,view,propertyGroup){
var prop = view.sh;
function _propertyGroup(val){
if(val == 1){
return interfaceFunction;
} else {
return propertyGroup(--val);
}
}
prop.setGroupProperty(_propertyGroup);
function interfaceFunction(val){
if(val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2){
return interfaceFunction.path;
}
}
Object.defineProperties(interfaceFunction, {
'path': {
get: function(){
if(prop.k){
prop.getValue();
}
return prop;
}
},
'shape': {
get: function(){
if(prop.k){
prop.getValue();
}
return prop;
}
},
'_name': { value: shape.nm },
'ix': { value: shape.ix },
'propertyIndex': { value: shape.ix },
'mn': { value: shape.mn }
});
return interfaceFunction;
}
return function(shapes,view,propertyGroup) {
var interfaces;
function _interfaceFunction(value){
if(typeof value === 'number'){
return interfaces[value-1];
} else {
var i = 0, len = interfaces.length;
while(i<len){
if(interfaces[i]._name === value){
return interfaces[i];
}
i+=1;
}
}
}
_interfaceFunction.propertyGroup = propertyGroup;
interfaces = iterateElements(shapes, view, _interfaceFunction);
_interfaceFunction.numProperties = interfaces.length;
return _interfaceFunction;
};
}());
var TextExpressionInterface = (function(){
return function(elem){
var _prevValue, _sourceText;
function _thisLayerFunction(){
}
Object.defineProperty(_thisLayerFunction, "sourceText", {
get: function(){
elem.textProperty.getValue()
var stringValue = elem.textProperty.currentData.t;
if(stringValue !== _prevValue) {
elem.textProperty.currentData.t = _prevValue;
_sourceText = new String(stringValue);
//If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive
_sourceText.value = stringValue ? stringValue : new String(stringValue);
}
return _sourceText;
}
});
return _thisLayerFunction;
};
}());
var LayerExpressionInterface = (function (){
function toWorld(arr, time){
var toWorldMat = new Matrix();
toWorldMat.reset();
var transformMat;
if(time) {
//Todo implement value at time on transform properties
//transformMat = this._elem.finalTransform.mProp.getValueAtTime(time);
transformMat = this._elem.finalTransform.mProp;
} else {
transformMat = this._elem.finalTransform.mProp;
}
transformMat.applyToMatrix(toWorldMat);
if(this._elem.hierarchy && this._elem.hierarchy.length){
var i, len = this._elem.hierarchy.length;
for(i=0;i<len;i+=1){
this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);
}
return toWorldMat.applyToPointArray(arr[0],arr[1],arr[2]||0);
}
return toWorldMat.applyToPointArray(arr[0],arr[1],arr[2]||0);
}
function fromWorld(arr, time){
var toWorldMat = new Matrix();
toWorldMat.reset();
var transformMat;
if(time) {
//Todo implement value at time on transform properties
//transformMat = this._elem.finalTransform.mProp.getValueAtTime(time);
transformMat = this._elem.finalTransform.mProp;
} else {
transformMat = this._elem.finalTransform.mProp;
}
transformMat.applyToMatrix(toWorldMat);
if(this._elem.hierarchy && this._elem.hierarchy.length){
var i, len = this._elem.hierarchy.length;
for(i=0;i<len;i+=1){
this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);
}
return toWorldMat.inversePoint(arr);
}
return toWorldMat.inversePoint(arr);
}
function fromComp(arr){
var toWorldMat = new Matrix();
toWorldMat.reset();
this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);
if(this._elem.hierarchy && this._elem.hierarchy.length){
var i, len = this._elem.hierarchy.length;
for(i=0;i<len;i+=1){
this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);
}
return toWorldMat.inversePoint(arr);
}
return toWorldMat.inversePoint(arr);
}
function sampleImage() {
return [1,1,1,1];
}
return function(elem){
var transformInterface;
function _registerMaskInterface(maskManager){
_thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);
}
function _registerEffectsInterface(effects){
_thisLayerFunction.effect = effects;
}
function _thisLayerFunction(name){
switch(name){
case "ADBE Root Vectors Group":
case "Contents":
case 2:
return _thisLayerFunction.shapeInterface;
case 1:
case 6:
case "Transform":
case "transform":
case "ADBE Transform Group":
return transformInterface;
case 4:
case "ADBE Effect Parade":
case "effects":
case "Effects":
return _thisLayerFunction.effect;
}
}
_thisLayerFunction.toWorld = toWorld;
_thisLayerFunction.fromWorld = fromWorld;
_thisLayerFunction.toComp = toWorld;
_thisLayerFunction.fromComp = fromComp;
_thisLayerFunction.sampleImage = sampleImage;
_thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);
_thisLayerFunction._elem = elem;
transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);
var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');
Object.defineProperties(_thisLayerFunction,{
hasParent: {
get: function(){
return elem.hierarchy.length;
}
},
parent: {
get: function(){
return elem.hierarchy[0].layerInterface;
}
},
rotation: getDescriptor(transformInterface, 'rotation'),
scale: getDescriptor(transformInterface, 'scale'),
position: getDescriptor(transformInterface, 'position'),
opacity: getDescriptor(transformInterface, 'opacity'),
anchorPoint: anchorPointDescriptor,
anchor_point: anchorPointDescriptor,
transform: {
get: function () {
return transformInterface;
}
},
active: {
get: function(){
return elem.isInRange;
}
}
});
_thisLayerFunction.startTime = elem.data.st;
_thisLayerFunction.index = elem.data.ind;
_thisLayerFunction.source = elem.data.refId;
_thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;
_thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;
_thisLayerFunction.inPoint = elem.data.ip/elem.comp.globalData.frameRate;
_thisLayerFunction.outPoint = elem.data.op/elem.comp.globalData.frameRate;
_thisLayerFunction._name = elem.data.nm;
_thisLayerFunction.registerMaskInterface = _registerMaskInterface;
_thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;
return _thisLayerFunction;
};
}());
var CompExpressionInterface = (function () {
return function(comp) {
function _thisLayerFunction(name) {
var i = 0, len = comp.layers.length;
while ( i < len) {
if (comp.layers[i].nm === name || comp.layers[i].ind === name) {
return comp.elements[i].layerInterface;
}
i += 1;
}
return null;
//return {active:false};
}
Object.defineProperty(_thisLayerFunction, "_name", { value: comp.data.nm });
_thisLayerFunction.layer = _thisLayerFunction;
_thisLayerFunction.pixelAspect = 1;
_thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;
_thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;
_thisLayerFunction.pixelAspect = 1;
_thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;
_thisLayerFunction.displayStartTime = 0;
_thisLayerFunction.numLayers = comp.layers.length;
return _thisLayerFunction;
};
}());
var TransformExpressionInterface = (function (){
return function(transform){
function _thisFunction(name){
switch(name){
case "scale":
case "Scale":
case "ADBE Scale":
case 6:
return _thisFunction.scale;
case "rotation":
case "Rotation":
case "ADBE Rotation":
case "ADBE Rotate Z":
case 10:
return _thisFunction.rotation;
case "ADBE Rotate X":
return _thisFunction.xRotation;
case "ADBE Rotate Y":
return _thisFunction.yRotation;
case "position":
case "Position":
case "ADBE Position":
case 2:
return _thisFunction.position;
case 'ADBE Position_0':
return _thisFunction.xPosition;
case 'ADBE Position_1':
return _thisFunction.yPosition;
case 'ADBE Position_2':
return _thisFunction.zPosition;
case "anchorPoint":
case "AnchorPoint":
case "Anchor Point":
case "ADBE AnchorPoint":
case 1:
return _thisFunction.anchorPoint;
case "opacity":
case "Opacity":
case 11:
return _thisFunction.opacity;
}
}
Object.defineProperty(_thisFunction, "rotation", {
get: ExpressionPropertyInterface(transform.r || transform.rz)
});
Object.defineProperty(_thisFunction, "zRotation", {
get: ExpressionPropertyInterface(transform.rz || transform.r)
});
Object.defineProperty(_thisFunction, "xRotation", {
get: ExpressionPropertyInterface(transform.rx)
});
Object.defineProperty(_thisFunction, "yRotation", {
get: ExpressionPropertyInterface(transform.ry)
});
Object.defineProperty(_thisFunction, "scale", {
get: ExpressionPropertyInterface(transform.s)
});
if(transform.p) {
var _transformFactory = ExpressionPropertyInterface(transform.p);
}
Object.defineProperty(_thisFunction, "position", {
get: function () {
if(transform.p) {
return _transformFactory();
} else {
return [transform.px.v, transform.py.v, transform.pz ? transform.pz.v : 0];
}
}
});
Object.defineProperty(_thisFunction, "xPosition", {
get: ExpressionPropertyInterface(transform.px)
});
Object.defineProperty(_thisFunction, "yPosition", {
get: ExpressionPropertyInterface(transform.py)
});
Object.defineProperty(_thisFunction, "zPosition", {
get: ExpressionPropertyInterface(transform.pz)
});
Object.defineProperty(_thisFunction, "anchorPoint", {
get: ExpressionPropertyInterface(transform.a)
});
Object.defineProperty(_thisFunction, "opacity", {
get: ExpressionPropertyInterface(transform.o)
});
Object.defineProperty(_thisFunction, "skew", {
get: ExpressionPropertyInterface(transform.sk)
});
Object.defineProperty(_thisFunction, "skewAxis", {
get: ExpressionPropertyInterface(transform.sa)
});
Object.defineProperty(_thisFunction, "orientation", {
get: ExpressionPropertyInterface(transform.or)
});
return _thisFunction;
};
}());
var ProjectInterface = (function (){
function registerComposition(comp){
this.compositions.push(comp);
}
return function(){
function _thisProjectFunction(name){
var i = 0, len = this.compositions.length;
while(i<len){
if(this.compositions[i].data && this.compositions[i].data.nm === name){
if(this.compositions[i].prepareFrame && this.compositions[i].data.xt) {
this.compositions[i].prepareFrame(this.currentFrame);
}
return this.compositions[i].compInterface;
}
i+=1;
}
}
_thisProjectFunction.compositions = [];
_thisProjectFunction.currentFrame = 0;
_thisProjectFunction.registerComposition = registerComposition;
return _thisProjectFunction;
};
}());
var EffectsExpressionInterface = (function (){
var ob = {
createEffectsInterface: createEffectsInterface
};
function createEffectsInterface(elem, propertyGroup){
if(elem.effectsManager){
var effectElements = [];
var effectsData = elem.data.ef;
var i, len = elem.effectsManager.effectElements.length;
for(i=0;i<len;i+=1){
effectElements.push(createGroupInterface(effectsData[i],elem.effectsManager.effectElements[i],propertyGroup,elem));
}
return function(name){
var effects = elem.data.ef || [], i = 0, len = effects.length;
while(i<len) {
if(name === effects[i].nm || name === effects[i].mn || name === effects[i].ix){
return effectElements[i];
}
i += 1;
}
};
}
}
function createGroupInterface(data,elements, propertyGroup, elem){
var effectElements = [];
var i, len = data.ef.length;
for(i=0;i<len;i+=1){
if(data.ef[i].ty === 5){
effectElements.push(createGroupInterface(data.ef[i],elements.effectElements[i],elements.effectElements[i].propertyGroup, elem));
} else {
effectElements.push(createValueInterface(elements.effectElements[i],data.ef[i].ty, elem, _propertyGroup));
}
}
function _propertyGroup(val) {
if(val === 1){
return groupInterface;
} else{
return propertyGroup(val-1);
}
}
var groupInterface = function(name){
var effects = data.ef, i = 0, len = effects.length;
while(i<len) {
if(name === effects[i].nm || name === effects[i].mn || name === effects[i].ix){
if(effects[i].ty === 5){
return effectElements[i];
} else {
return effectElements[i]();
}
}
i += 1;
}
return effectElements[0]();
};
groupInterface.propertyGroup = _propertyGroup;
if(data.mn === 'ADBE Color Control'){
Object.defineProperty(groupInterface, 'color', {
get: function(){
return effectElements[0]();
}
});
}
Object.defineProperty(groupInterface, 'numProperties', {
get: function(){
return data.np;
}
});
groupInterface.active = groupInterface.enabled = data.en !== 0;
return groupInterface;
}
function createValueInterface(element, type, elem, propertyGroup){
var expressionProperty = ExpressionPropertyInterface(element.p);
function interfaceFunction(){
if(type === 10){
return elem.comp.compInterface(element.p.v);
}
return expressionProperty();
}
if(element.p.setGroupProperty) {
element.p.setGroupProperty(propertyGroup);
}
return interfaceFunction;
}
return ob;
}());
var MaskManagerInterface = (function(){
function MaskInterface(mask, data){
this._mask = mask;
this._data = data;
}
Object.defineProperty(MaskInterface.prototype, 'maskPath', {
get: function(){
if(this._mask.prop.k){
this._mask.prop.getValue();
}
return this._mask.prop;
}
});
Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {
get: function(){
if(this._mask.op.k){
this._mask.op.getValue();
}
return this._mask.op.v * 100;
}
});
var MaskManager = function(maskManager, elem){
var _maskManager = maskManager;
var _elem = elem;
var _masksInterfaces = createSizedArray(maskManager.viewData.length);
var i, len = maskManager.viewData.length;
for(i = 0; i < len; i += 1) {
_masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);
}
var maskFunction = function(name){
i = 0;
while(i<len){
if(maskManager.masksProperties[i].nm === name){
return _masksInterfaces[i];
}
i += 1;
}
};
return maskFunction;
};
return MaskManager;
}());
var ExpressionPropertyInterface = (function() {
var defaultUnidimensionalValue = {pv:0, v:0, mult: 1}
var defaultMultidimensionalValue = {pv:[0,0,0], v:[0,0,0], mult: 1}
function completeProperty(expressionValue, property, type) {
Object.defineProperty(expressionValue, 'velocity', {
get: function(){
return property.getVelocityAtTime(property.comp.currentFrame);
}
});
expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;
expressionValue.key = function(pos) {
if (!expressionValue.numKeys) {
return 0;
} else {
var value = '';
if ('s' in property.keyframes[pos-1]) {
value = property.keyframes[pos-1].s;
} else if ('e' in property.keyframes[pos-2]) {
value = property.keyframes[pos-2].e;
} else {
value = property.keyframes[pos-2].s;
}
var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value);
valueProp.time = property.keyframes[pos-1].t / property.elem.comp.globalData.frameRate;
return valueProp;
}
};
expressionValue.valueAtTime = property.getValueAtTime;
expressionValue.speedAtTime = property.getSpeedAtTime;
expressionValue.velocityAtTime = property.getVelocityAtTime;
expressionValue.propertyGroup = property.propertyGroup;
}
function UnidimensionalPropertyInterface(property) {
if(!property || !('pv' in property)) {
property = defaultUnidimensionalValue;
}
var mult = 1 / property.mult;
var val = property.pv * mult;
var expressionValue = new Number(val);
expressionValue.value = val;
completeProperty(expressionValue, property, 'unidimensional');
return function() {
if (property.k) {
property.getValue();
}
val = property.v * mult;
if(expressionValue.value !== val) {
expressionValue = new Number(val);
expressionValue.value = val;
completeProperty(expressionValue, property, 'unidimensional');
}
return expressionValue;
}
}
function MultidimensionalPropertyInterface(property) {
if(!property || !('pv' in property)) {
property = defaultMultidimensionalValue;
}
var mult = 1 / property.mult;
var len = property.pv.length;
var expressionValue = createTypedArray('float32', len);
var arrValue = createTypedArray('float32', len);
expressionValue.value = arrValue;
completeProperty(expressionValue, property, 'multidimensional');
return function() {
if (property.k) {
property.getValue();
}
for (var i = 0; i < len; i += 1) {
expressionValue[i] = arrValue[i] = property.v[i] * mult;
}
return expressionValue;
}
}
//TODO: try to avoid using this getter
function defaultGetter() {
return defaultUnidimensionalValue;
}
return function(property) {
if(!property) {
return defaultGetter;
} else if (property.propType === 'unidimensional') {
return UnidimensionalPropertyInterface(property);
} else {
return MultidimensionalPropertyInterface(property);
}
}
}());
(function(){
var TextExpressionSelectorProp = (function(){
function getValueProxy(index,total){
this.textIndex = index+1;
this.textTotal = total;
this.v = this.getValue() * this.mult;
return this.v;
}
return function TextExpressionSelectorProp(elem,data){
this.pv = 1;
this.comp = elem.comp;
this.elem = elem;
this.mult = 0.01;
this.propType = 'textSelector';
this.textTotal = data.totalChars;
this.selectorValue = 100;
this.lastValue = [1,1,1];
this.k = true;
this.x = true;
this.getValue = ExpressionManager.initiateExpression.bind(this)(elem,data,this);
this.getMult = getValueProxy;
this.getVelocityAtTime = expressionHelpers.getVelocityAtTime;
if(this.kf){
this.getValueAtTime = expressionHelpers.getValueAtTime.bind(this);
} else {
this.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(this);
}
this.setGroupProperty = expressionHelpers.setGroupProperty;
};
}());
var propertyGetTextProp = TextSelectorProp.getTextSelectorProp;
TextSelectorProp.getTextSelectorProp = function(elem, data,arr){
if(data.t === 1){
return new TextExpressionSelectorProp(elem, data,arr);
} else {
return propertyGetTextProp(elem,data,arr);
}
};
}());
function SliderEffect(data,elem, container){
this.p = PropertyFactory.getProp(elem,data.v,0,0,container);
}
function AngleEffect(data,elem, container){
this.p = PropertyFactory.getProp(elem,data.v,0,0,container);
}
function ColorEffect(data,elem, container){
this.p = PropertyFactory.getProp(elem,data.v,1,0,container);
}
function PointEffect(data,elem, container){
this.p = PropertyFactory.getProp(elem,data.v,1,0,container);
}
function LayerIndexEffect(data,elem, container){
this.p = PropertyFactory.getProp(elem,data.v,0,0,container);
}
function MaskIndexEffect(data,elem, container){
this.p = PropertyFactory.getProp(elem,data.v,0,0,container);
}
function CheckboxEffect(data,elem, container){
this.p = PropertyFactory.getProp(elem,data.v,0,0,container);
}
function NoValueEffect(){
this.p = {};
}
function EffectsManager(){}
function EffectsManager(data,element){
var effects = data.ef || [];
this.effectElements = [];
var i,len = effects.length;
var effectItem;
for(i=0;i<len;i++) {
effectItem = new GroupEffect(effects[i],element);
this.effectElements.push(effectItem);
}
}
function GroupEffect(data,element){
this.init(data,element);
}
extendPrototype([DynamicPropertyContainer], GroupEffect);
GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;
GroupEffect.prototype.init = function(data,element){
this.data = data;
this.effectElements = [];
this.initDynamicPropertyContainer(element);
var i, len = this.data.ef.length;
var eff, effects = this.data.ef;
for(i=0;i<len;i+=1){
eff = null;
switch(effects[i].ty){
case 0:
eff = new SliderEffect(effects[i],element,this);
break;
case 1:
eff = new AngleEffect(effects[i],element,this);
break;
case 2:
eff = new ColorEffect(effects[i],element,this);
break;
case 3:
eff = new PointEffect(effects[i],element,this);
break;
case 4:
case 7:
eff = new CheckboxEffect(effects[i],element,this);
break;
case 10:
eff = new LayerIndexEffect(effects[i],element,this);
break;
case 11:
eff = new MaskIndexEffect(effects[i],element,this);
break;
case 5:
eff = new EffectsManager(effects[i],element,this);
break;
//case 6:
default:
eff = new NoValueEffect(effects[i],element,this);
break;
}
if(eff) {
this.effectElements.push(eff);
}
}
};
var lottie = {};
var _isFrozen = false;
function setLocationHref (href) {
locationHref = href;
}
function searchAnimations() {
if (standalone === true) {
animationManager.searchAnimations(animationData, standalone, renderer);
} else {
animationManager.searchAnimations();
}
}
function setSubframeRendering(flag) {
subframeEnabled = flag;
}
function loadAnimation(params) {
if (standalone === true) {
params.animationData = JSON.parse(animationData);
}
return animationManager.loadAnimation(params);
}
function setQuality(value) {
if (typeof value === 'string') {
switch (value) {
case 'high':
defaultCurveSegments = 200;
break;
case 'medium':
defaultCurveSegments = 50;
break;
case 'low':
defaultCurveSegments = 10;
break;
}
} else if (!isNaN(value) && value > 1) {
defaultCurveSegments = value;
}
if (defaultCurveSegments >= 50) {
roundValues(false);
} else {
roundValues(true);
}
}
function inBrowser() {
return typeof navigator !== 'undefined';
}
function installPlugin(type, plugin) {
if (type === 'expressions') {
expressionsPlugin = plugin;
}
}
function getFactory(name) {
switch (name) {
case "propertyFactory":
return PropertyFactory;
case "shapePropertyFactory":
return ShapePropertyFactory;
case "matrix":
return Matrix;
}
}
lottie.play = animationManager.play;
lottie.pause = animationManager.pause;
lottie.setLocationHref = setLocationHref;
lottie.togglePause = animationManager.togglePause;
lottie.setSpeed = animationManager.setSpeed;
lottie.setDirection = animationManager.setDirection;
lottie.stop = animationManager.stop;
lottie.searchAnimations = searchAnimations;
lottie.registerAnimation = animationManager.registerAnimation;
lottie.loadAnimation = loadAnimation;
lottie.setSubframeRendering = setSubframeRendering;
lottie.resize = animationManager.resize;
//lottie.start = start;
lottie.goToAndStop = animationManager.goToAndStop;
lottie.destroy = animationManager.destroy;
lottie.setQuality = setQuality;
lottie.inBrowser = inBrowser;
lottie.installPlugin = installPlugin;
lottie.freeze = animationManager.freeze;
lottie.unfreeze = animationManager.unfreeze;
lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;
lottie.__getFactory = getFactory;
lottie.version = '5.6.6';
function checkReady() {
if (document.readyState === "complete") {
clearInterval(readyStateCheckInterval);
searchAnimations();
}
}
function getQueryVariable(variable) {
var vars = queryString.split('&');
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split('=');
if (decodeURIComponent(pair[0]) == variable) {
return decodeURIComponent(pair[1]);
}
}
}
var standalone = '__[STANDALONE]__';
var animationData = '__[ANIMATIONDATA]__';
var renderer = '';
if (standalone) {
var scripts = document.getElementsByTagName('script');
var index = scripts.length - 1;
var myScript = scripts[index] || {
src: ''
};
var queryString = myScript.src.replace(/^[^\?]+\??/, '');
renderer = getQueryVariable('renderer');
}
var readyStateCheckInterval = setInterval(checkReady, 100);
return lottie;
}));
/***/ }),
/***/ "9702":
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "985f":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_icon_scss_vue_type_style_index_0_id_5f71ff43_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("ebe3");
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_icon_scss_vue_type_style_index_0_id_5f71ff43_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_icon_scss_vue_type_style_index_0_id_5f71ff43_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */
/* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_icon_scss_vue_type_style_index_0_id_5f71ff43_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ "9911":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__("23e7");
var createHTML = __webpack_require__("857a");
var forcedStringHTMLMethod = __webpack_require__("af03");
// `String.prototype.link` method
// https://tc39.github.io/ecma262/#sec-string.prototype.link
$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {
link: function link(url) {
return createHTML(this, 'a', 'href', url);
}
});
/***/ }),
/***/ "99af":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__("23e7");
var fails = __webpack_require__("d039");
var isArray = __webpack_require__("e8b5");
var isObject = __webpack_require__("861d");
var toObject = __webpack_require__("7b0b");
var toLength = __webpack_require__("50c4");
var createProperty = __webpack_require__("8418");
var arraySpeciesCreate = __webpack_require__("65f0");
var arrayMethodHasSpeciesSupport = __webpack_require__("1dde");
var wellKnownSymbol = __webpack_require__("b622");
var V8_VERSION = __webpack_require__("2d00");
var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');
var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;
var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';
// We can't use this feature detection in V8 since it causes
// deoptimization and serious performance degradation
// https://github.com/zloirock/core-js/issues/679
var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {
var array = [];
array[IS_CONCAT_SPREADABLE] = false;
return array.concat()[0] !== array;
});
var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');
var isConcatSpreadable = function (O) {
if (!isObject(O)) return false;
var spreadable = O[IS_CONCAT_SPREADABLE];
return spreadable !== undefined ? !!spreadable : isArray(O);
};
var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;
// `Array.prototype.concat` method
// https://tc39.github.io/ecma262/#sec-array.prototype.concat
// with adding support of @@isConcatSpreadable and @@species
$({ target: 'Array', proto: true, forced: FORCED }, {
concat: function concat(arg) { // eslint-disable-line no-unused-vars
var O = toObject(this);
var A = arraySpeciesCreate(O, 0);
var n = 0;
var i, k, length, len, E;
for (i = -1, length = arguments.length; i < length; i++) {
E = i === -1 ? O : arguments[i];
if (isConcatSpreadable(E)) {
len = toLength(E.length);
if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);
} else {
if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
createProperty(A, n++, E);
}
}
A.length = n;
return A;
}
});
/***/ }),
/***/ "9bf2":
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__("83ab");
var IE8_DOM_DEFINE = __webpack_require__("0cfb");
var anObject = __webpack_require__("825a");
var toPrimitive = __webpack_require__("c04e");
var nativeDefineProperty = Object.defineProperty;
// `Object.defineProperty` method
// https://tc39.github.io/ecma262/#sec-object.defineproperty
exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
anObject(O);
P = toPrimitive(P, true);
anObject(Attributes);
if (IE8_DOM_DEFINE) try {
return nativeDefineProperty(O, P, Attributes);
} catch (error) { /* empty */ }
if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
if ('value' in Attributes) O[P] = Attributes.value;
return O;
};
/***/ }),
/***/ "9ed3":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var IteratorPrototype = __webpack_require__("ae93").IteratorPrototype;
var create = __webpack_require__("7c73");
var createPropertyDescriptor = __webpack_require__("5c6c");
var setToStringTag = __webpack_require__("d44e");
var Iterators = __webpack_require__("3f8c");
var returnThis = function () { return this; };
module.exports = function (IteratorConstructor, NAME, next) {
var TO_STRING_TAG = NAME + ' Iterator';
IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });
setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);
Iterators[TO_STRING_TAG] = returnThis;
return IteratorConstructor;
};
/***/ }),
/***/ "9f7f":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var fails = __webpack_require__("d039");
// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,
// so we use an intermediate function.
function RE(s, f) {
return RegExp(s, f);
}
exports.UNSUPPORTED_Y = fails(function () {
// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError
var re = RE('a', 'y');
re.lastIndex = 2;
return re.exec('abcd') != null;
});
exports.BROKEN_CARET = fails(function () {
// https://bugzilla.mozilla.org/show_bug.cgi?id=773687
var re = RE('^r', 'gy');
re.lastIndex = 2;
return re.exec('str') != null;
});
/***/ }),
/***/ "a2bf":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var isArray = __webpack_require__("e8b5");
var toLength = __webpack_require__("50c4");
var bind = __webpack_require__("0366");
// `FlattenIntoArray` abstract operation
// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray
var flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {
var targetIndex = start;
var sourceIndex = 0;
var mapFn = mapper ? bind(mapper, thisArg, 3) : false;
var element;
while (sourceIndex < sourceLen) {
if (sourceIndex in source) {
element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];
if (depth > 0 && isArray(element)) {
targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;
} else {
if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');
target[targetIndex] = element;
}
targetIndex++;
}
sourceIndex++;
}
return targetIndex;
};
module.exports = flattenIntoArray;
/***/ }),
/***/ "a640":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var fails = __webpack_require__("d039");
module.exports = function (METHOD_NAME, argument) {
var method = [][METHOD_NAME];
return !!method && fails(function () {
// eslint-disable-next-line no-useless-call,no-throw-literal
method.call(null, argument || function () { throw 1; }, 1);
});
};
/***/ }),
/***/ "a691":
/***/ (function(module, exports) {
var ceil = Math.ceil;
var floor = Math.floor;
// `ToInteger` abstract operation
// https://tc39.github.io/ecma262/#sec-tointeger
module.exports = function (argument) {
return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);
};
/***/ }),
/***/ "a9e3":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var DESCRIPTORS = __webpack_require__("83ab");
var global = __webpack_require__("da84");
var isForced = __webpack_require__("94ca");
var redefine = __webpack_require__("6eeb");
var has = __webpack_require__("5135");
var classof = __webpack_require__("c6b6");
var inheritIfRequired = __webpack_require__("7156");
var toPrimitive = __webpack_require__("c04e");
var fails = __webpack_require__("d039");
var create = __webpack_require__("7c73");
var getOwnPropertyNames = __webpack_require__("241c").f;
var getOwnPropertyDescriptor = __webpack_require__("06cf").f;
var defineProperty = __webpack_require__("9bf2").f;
var trim = __webpack_require__("58a8").trim;
var NUMBER = 'Number';
var NativeNumber = global[NUMBER];
var NumberPrototype = NativeNumber.prototype;
// Opera ~12 has broken Object#toString
var BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;
// `ToNumber` abstract operation
// https://tc39.github.io/ecma262/#sec-tonumber
var toNumber = function (argument) {
var it = toPrimitive(argument, false);
var first, third, radix, maxCode, digits, length, index, code;
if (typeof it == 'string' && it.length > 2) {
it = trim(it);
first = it.charCodeAt(0);
if (first === 43 || first === 45) {
third = it.charCodeAt(2);
if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix
} else if (first === 48) {
switch (it.charCodeAt(1)) {
case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i
case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i
default: return +it;
}
digits = it.slice(2);
length = digits.length;
for (index = 0; index < length; index++) {
code = digits.charCodeAt(index);
// parseInt parses a string to a first unavailable symbol
// but ToNumber should return NaN if a string contains unavailable symbols
if (code < 48 || code > maxCode) return NaN;
} return parseInt(digits, radix);
}
} return +it;
};
// `Number` constructor
// https://tc39.github.io/ecma262/#sec-number-constructor
if (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {
var NumberWrapper = function Number(value) {
var it = arguments.length < 1 ? 0 : value;
var dummy = this;
return dummy instanceof NumberWrapper
// check on 1..constructor(foo) case
&& (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)
? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);
};
for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (
// ES3:
'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +
// ES2015 (in case, if modules with ES2015 Number statics required before):
'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +
'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'
).split(','), j = 0, key; keys.length > j; j++) {
if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {
defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));
}
}
NumberWrapper.prototype = NumberPrototype;
NumberPrototype.constructor = NumberWrapper;
redefine(global, NUMBER, NumberWrapper);
}
/***/ }),
/***/ "aa06":
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "ab13":
/***/ (function(module, exports, __webpack_require__) {
var wellKnownSymbol = __webpack_require__("b622");
var MATCH = wellKnownSymbol('match');
module.exports = function (METHOD_NAME) {
var regexp = /./;
try {
'/./'[METHOD_NAME](regexp);
} catch (e) {
try {
regexp[MATCH] = false;
return '/./'[METHOD_NAME](regexp);
} catch (f) { /* empty */ }
} return false;
};
/***/ }),
/***/ "ac1f":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__("23e7");
var exec = __webpack_require__("9263");
$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {
exec: exec
});
/***/ }),
/***/ "ad4b":
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "ad6d":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var anObject = __webpack_require__("825a");
// `RegExp.prototype.flags` getter implementation
// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags
module.exports = function () {
var that = anObject(this);
var result = '';
if (that.global) result += 'g';
if (that.ignoreCase) result += 'i';
if (that.multiline) result += 'm';
if (that.dotAll) result += 's';
if (that.unicode) result += 'u';
if (that.sticky) result += 'y';
return result;
};
/***/ }),
/***/ "adc9":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_dropdown_scss_vue_type_style_index_0_id_0735937e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("d6d4");
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_dropdown_scss_vue_type_style_index_0_id_0735937e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_dropdown_scss_vue_type_style_index_0_id_0735937e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */
/* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_dropdown_scss_vue_type_style_index_0_id_0735937e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ "ae40":
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__("83ab");
var fails = __webpack_require__("d039");
var has = __webpack_require__("5135");
var defineProperty = Object.defineProperty;
var cache = {};
var thrower = function (it) { throw it; };
module.exports = function (METHOD_NAME, options) {
if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];
if (!options) options = {};
var method = [][METHOD_NAME];
var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;
var argument0 = has(options, 0) ? options[0] : thrower;
var argument1 = has(options, 1) ? options[1] : undefined;
return cache[METHOD_NAME] = !!method && !fails(function () {
if (ACCESSORS && !DESCRIPTORS) return true;
var O = { length: -1 };
if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });
else O[1] = 1;
method.call(O, argument0, argument1);
});
};
/***/ }),
/***/ "ae93":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var getPrototypeOf = __webpack_require__("e163");
var createNonEnumerableProperty = __webpack_require__("9112");
var has = __webpack_require__("5135");
var wellKnownSymbol = __webpack_require__("b622");
var IS_PURE = __webpack_require__("c430");
var ITERATOR = wellKnownSymbol('iterator');
var BUGGY_SAFARI_ITERATORS = false;
var returnThis = function () { return this; };
// `%IteratorPrototype%` object
// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object
var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;
if ([].keys) {
arrayIterator = [].keys();
// Safari 8 has buggy iterators w/o `next`
if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;
else {
PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));
if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;
}
}
if (IteratorPrototype == undefined) IteratorPrototype = {};
// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {
createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);
}
module.exports = {
IteratorPrototype: IteratorPrototype,
BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS
};
/***/ }),
/***/ "af03":
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__("d039");
// check the existence of a method, lowercase
// of a tag and escaping quotes in arguments
module.exports = function (METHOD_NAME) {
return fails(function () {
var test = ''[METHOD_NAME]('"');
return test !== test.toLowerCase() || test.split('"').length > 3;
});
};
/***/ }),
/***/ "b041":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var TO_STRING_TAG_SUPPORT = __webpack_require__("00ee");
var classof = __webpack_require__("f5df");
// `Object.prototype.toString` method implementation
// https://tc39.github.io/ecma262/#sec-object.prototype.tostring
module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {
return '[object ' + classof(this) + ']';
};
/***/ }),
/***/ "b0c0":
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__("83ab");
var defineProperty = __webpack_require__("9bf2").f;
var FunctionPrototype = Function.prototype;
var FunctionPrototypeToString = FunctionPrototype.toString;
var nameRE = /^\s*function ([^ (]*)/;
var NAME = 'name';
// Function instances `.name` property
// https://tc39.github.io/ecma262/#sec-function-instances-name
if (DESCRIPTORS && !(NAME in FunctionPrototype)) {
defineProperty(FunctionPrototype, NAME, {
configurable: true,
get: function () {
try {
return FunctionPrototypeToString.call(this).match(nameRE)[1];
} catch (error) {
return '';
}
}
});
}
/***/ }),
/***/ "b136":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_alert_scss_vue_type_style_index_0_id_6c6d679c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("cf32");
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_alert_scss_vue_type_style_index_0_id_6c6d679c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_alert_scss_vue_type_style_index_0_id_6c6d679c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */
/* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_alert_scss_vue_type_style_index_0_id_6c6d679c_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ "b622":
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__("da84");
var shared = __webpack_require__("5692");
var has = __webpack_require__("5135");
var uid = __webpack_require__("90e3");
var NATIVE_SYMBOL = __webpack_require__("4930");
var USE_SYMBOL_AS_UID = __webpack_require__("fdbf");
var WellKnownSymbolsStore = shared('wks');
var Symbol = global.Symbol;
var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;
module.exports = function (name) {
if (!has(WellKnownSymbolsStore, name)) {
if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];
else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);
} return WellKnownSymbolsStore[name];
};
/***/ }),
/***/ "b64b":
/***/ (function(module, exports, __webpack_require__) {
var $ = __webpack_require__("23e7");
var toObject = __webpack_require__("7b0b");
var nativeKeys = __webpack_require__("df75");
var fails = __webpack_require__("d039");
var FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });
// `Object.keys` method
// https://tc39.github.io/ecma262/#sec-object.keys
$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {
keys: function keys(it) {
return nativeKeys(toObject(it));
}
});
/***/ }),
/***/ "b680":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__("23e7");
var toInteger = __webpack_require__("a691");
var thisNumberValue = __webpack_require__("408a");
var repeat = __webpack_require__("1148");
var fails = __webpack_require__("d039");
var nativeToFixed = 1.0.toFixed;
var floor = Math.floor;
var pow = function (x, n, acc) {
return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);
};
var log = function (x) {
var n = 0;
var x2 = x;
while (x2 >= 4096) {
n += 12;
x2 /= 4096;
}
while (x2 >= 2) {
n += 1;
x2 /= 2;
} return n;
};
var FORCED = nativeToFixed && (
0.00008.toFixed(3) !== '0.000' ||
0.9.toFixed(0) !== '1' ||
1.255.toFixed(2) !== '1.25' ||
1000000000000000128.0.toFixed(0) !== '1000000000000000128'
) || !fails(function () {
// V8 ~ Android 4.3-
nativeToFixed.call({});
});
// `Number.prototype.toFixed` method
// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed
$({ target: 'Number', proto: true, forced: FORCED }, {
// eslint-disable-next-line max-statements
toFixed: function toFixed(fractionDigits) {
var number = thisNumberValue(this);
var fractDigits = toInteger(fractionDigits);
var data = [0, 0, 0, 0, 0, 0];
var sign = '';
var result = '0';
var e, z, j, k;
var multiply = function (n, c) {
var index = -1;
var c2 = c;
while (++index < 6) {
c2 += n * data[index];
data[index] = c2 % 1e7;
c2 = floor(c2 / 1e7);
}
};
var divide = function (n) {
var index = 6;
var c = 0;
while (--index >= 0) {
c += data[index];
data[index] = floor(c / n);
c = (c % n) * 1e7;
}
};
var dataToString = function () {
var index = 6;
var s = '';
while (--index >= 0) {
if (s !== '' || index === 0 || data[index] !== 0) {
var t = String(data[index]);
s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;
}
} return s;
};
if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');
// eslint-disable-next-line no-self-compare
if (number != number) return 'NaN';
if (number <= -1e21 || number >= 1e21) return String(number);
if (number < 0) {
sign = '-';
number = -number;
}
if (number > 1e-21) {
e = log(number * pow(2, 69, 1)) - 69;
z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);
z *= 0x10000000000000;
e = 52 - e;
if (e > 0) {
multiply(0, z);
j = fractDigits;
while (j >= 7) {
multiply(1e7, 0);
j -= 7;
}
multiply(pow(10, j, 1), 0);
j = e - 1;
while (j >= 23) {
divide(1 << 23);
j -= 23;
}
divide(1 << j);
multiply(1, 1);
divide(2);
result = dataToString();
} else {
multiply(0, z);
multiply(1 << -e, 0);
result = dataToString() + repeat.call('0', fractDigits);
}
}
if (fractDigits > 0) {
k = result.length;
result = sign + (k <= fractDigits
? '0.' + repeat.call('0', fractDigits - k) + result
: result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));
} else {
result = sign + result;
} return result;
}
});
/***/ }),
/***/ "b727":
/***/ (function(module, exports, __webpack_require__) {
var bind = __webpack_require__("0366");
var IndexedObject = __webpack_require__("44ad");
var toObject = __webpack_require__("7b0b");
var toLength = __webpack_require__("50c4");
var arraySpeciesCreate = __webpack_require__("65f0");
var push = [].push;
// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation
var createMethod = function (TYPE) {
var IS_MAP = TYPE == 1;
var IS_FILTER = TYPE == 2;
var IS_SOME = TYPE == 3;
var IS_EVERY = TYPE == 4;
var IS_FIND_INDEX = TYPE == 6;
var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
return function ($this, callbackfn, that, specificCreate) {
var O = toObject($this);
var self = IndexedObject(O);
var boundFunction = bind(callbackfn, that, 3);
var length = toLength(self.length);
var index = 0;
var create = specificCreate || arraySpeciesCreate;
var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
var value, result;
for (;length > index; index++) if (NO_HOLES || index in self) {
value = self[index];
result = boundFunction(value, index, O);
if (TYPE) {
if (IS_MAP) target[index] = result; // map
else if (result) switch (TYPE) {
case 3: return true; // some
case 5: return value; // find
case 6: return index; // findIndex
case 2: push.call(target, value); // filter
} else if (IS_EVERY) return false; // every
}
}
return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;
};
};
module.exports = {
// `Array.prototype.forEach` method
// https://tc39.github.io/ecma262/#sec-array.prototype.foreach
forEach: createMethod(0),
// `Array.prototype.map` method
// https://tc39.github.io/ecma262/#sec-array.prototype.map
map: createMethod(1),
// `Array.prototype.filter` method
// https://tc39.github.io/ecma262/#sec-array.prototype.filter
filter: createMethod(2),
// `Array.prototype.some` method
// https://tc39.github.io/ecma262/#sec-array.prototype.some
some: createMethod(3),
// `Array.prototype.every` method
// https://tc39.github.io/ecma262/#sec-array.prototype.every
every: createMethod(4),
// `Array.prototype.find` method
// https://tc39.github.io/ecma262/#sec-array.prototype.find
find: createMethod(5),
// `Array.prototype.findIndex` method
// https://tc39.github.io/ecma262/#sec-array.prototype.findIndex
findIndex: createMethod(6)
};
/***/ }),
/***/ "b82f":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_tabs_scss_vue_type_style_index_0_id_16234d14_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("5db9");
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_tabs_scss_vue_type_style_index_0_id_16234d14_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_tabs_scss_vue_type_style_index_0_id_16234d14_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */
/* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_tabs_scss_vue_type_style_index_0_id_16234d14_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ "bb2f":
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__("d039");
module.exports = !fails(function () {
return Object.isExtensible(Object.preventExtensions({}));
});
/***/ }),
/***/ "bfaa":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_tab_scss_vue_type_style_index_0_id_4de03bf8_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("fc14");
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_tab_scss_vue_type_style_index_0_id_4de03bf8_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_tab_scss_vue_type_style_index_0_id_4de03bf8_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */
/* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_tab_scss_vue_type_style_index_0_id_4de03bf8_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ "c04e":
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__("861d");
// `ToPrimitive` abstract operation
// https://tc39.github.io/ecma262/#sec-toprimitive
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (input, PREFERRED_STRING) {
if (!isObject(input)) return input;
var fn, val;
if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;
if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
throw TypeError("Can't convert object to primitive value");
};
/***/ }),
/***/ "c430":
/***/ (function(module, exports) {
module.exports = false;
/***/ }),
/***/ "c6b6":
/***/ (function(module, exports) {
var toString = {}.toString;
module.exports = function (it) {
return toString.call(it).slice(8, -1);
};
/***/ }),
/***/ "c6cd":
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__("da84");
var setGlobal = __webpack_require__("ce4e");
var SHARED = '__core-js_shared__';
var store = global[SHARED] || setGlobal(SHARED, {});
module.exports = store;
/***/ }),
/***/ "c8ba":
/***/ (function(module, exports) {
var g;
// This works in non-strict mode
g = (function() {
return this;
})();
try {
// This works if eval is allowed (see CSP)
g = g || new Function("return this")();
} catch (e) {
// This works if the window reference is available
if (typeof window === "object") g = window;
}
// g can still be undefined, but nothing to do about it...
// We return undefined, instead of nothing here, so it's
// easier to handle this case. if(!global) { ...}
module.exports = g;
/***/ }),
/***/ "ca84":
/***/ (function(module, exports, __webpack_require__) {
var has = __webpack_require__("5135");
var toIndexedObject = __webpack_require__("fc6a");
var indexOf = __webpack_require__("4d64").indexOf;
var hiddenKeys = __webpack_require__("d012");
module.exports = function (object, names) {
var O = toIndexedObject(object);
var i = 0;
var result = [];
var key;
for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);
// Don't enum bug & hidden keys
while (names.length > i) if (has(O, key = names[i++])) {
~indexOf(result, key) || result.push(key);
}
return result;
};
/***/ }),
/***/ "caad":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__("23e7");
var $includes = __webpack_require__("4d64").includes;
var addToUnscopables = __webpack_require__("44d2");
var arrayMethodUsesToLength = __webpack_require__("ae40");
var USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });
// `Array.prototype.includes` method
// https://tc39.github.io/ecma262/#sec-array.prototype.includes
$({ target: 'Array', proto: true, forced: !USES_TO_LENGTH }, {
includes: function includes(el /* , fromIndex = 0 */) {
return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
}
});
// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
addToUnscopables('includes');
/***/ }),
/***/ "cc12":
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__("da84");
var isObject = __webpack_require__("861d");
var document = global.document;
// typeof document.createElement is 'object' in old IE
var EXISTS = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
return EXISTS ? document.createElement(it) : {};
};
/***/ }),
/***/ "ce4e":
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__("da84");
var createNonEnumerableProperty = __webpack_require__("9112");
module.exports = function (key, value) {
try {
createNonEnumerableProperty(global, key, value);
} catch (error) {
global[key] = value;
} return value;
};
/***/ }),
/***/ "cf32":
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "d012":
/***/ (function(module, exports) {
module.exports = {};
/***/ }),
/***/ "d039":
/***/ (function(module, exports) {
module.exports = function (exec) {
try {
return !!exec();
} catch (error) {
return true;
}
};
/***/ }),
/***/ "d066":
/***/ (function(module, exports, __webpack_require__) {
var path = __webpack_require__("428f");
var global = __webpack_require__("da84");
var aFunction = function (variable) {
return typeof variable == 'function' ? variable : undefined;
};
module.exports = function (namespace, method) {
return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])
: path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];
};
/***/ }),
/***/ "d100":
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "d1e7":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var nativePropertyIsEnumerable = {}.propertyIsEnumerable;
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
// Nashorn ~ JDK8 bug
var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);
// `Object.prototype.propertyIsEnumerable` method implementation
// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable
exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
var descriptor = getOwnPropertyDescriptor(this, V);
return !!descriptor && descriptor.enumerable;
} : nativePropertyIsEnumerable;
/***/ }),
/***/ "d2bb":
/***/ (function(module, exports, __webpack_require__) {
var anObject = __webpack_require__("825a");
var aPossiblePrototype = __webpack_require__("3bbe");
// `Object.setPrototypeOf` method
// https://tc39.github.io/ecma262/#sec-object.setprototypeof
// Works with __proto__ only. Old v8 can't work with null proto objects.
/* eslint-disable no-proto */
module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {
var CORRECT_SETTER = false;
var test = {};
var setter;
try {
setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;
setter.call(test, []);
CORRECT_SETTER = test instanceof Array;
} catch (error) { /* empty */ }
return function setPrototypeOf(O, proto) {
anObject(O);
aPossiblePrototype(proto);
if (CORRECT_SETTER) setter.call(O, proto);
else O.__proto__ = proto;
return O;
};
}() : undefined);
/***/ }),
/***/ "d3b7":
/***/ (function(module, exports, __webpack_require__) {
var TO_STRING_TAG_SUPPORT = __webpack_require__("00ee");
var redefine = __webpack_require__("6eeb");
var toString = __webpack_require__("b041");
// `Object.prototype.toString` method
// https://tc39.github.io/ecma262/#sec-object.prototype.tostring
if (!TO_STRING_TAG_SUPPORT) {
redefine(Object.prototype, 'toString', toString, { unsafe: true });
}
/***/ }),
/***/ "d3fa":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_list_item_scss_vue_type_style_index_0_id_30b04995_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("4a20");
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_list_item_scss_vue_type_style_index_0_id_30b04995_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_list_item_scss_vue_type_style_index_0_id_30b04995_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */
/* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_list_item_scss_vue_type_style_index_0_id_30b04995_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ "d44e":
/***/ (function(module, exports, __webpack_require__) {
var defineProperty = __webpack_require__("9bf2").f;
var has = __webpack_require__("5135");
var wellKnownSymbol = __webpack_require__("b622");
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
module.exports = function (it, TAG, STATIC) {
if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {
defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });
}
};
/***/ }),
/***/ "d58f":
/***/ (function(module, exports, __webpack_require__) {
var aFunction = __webpack_require__("1c0b");
var toObject = __webpack_require__("7b0b");
var IndexedObject = __webpack_require__("44ad");
var toLength = __webpack_require__("50c4");
// `Array.prototype.{ reduce, reduceRight }` methods implementation
var createMethod = function (IS_RIGHT) {
return function (that, callbackfn, argumentsLength, memo) {
aFunction(callbackfn);
var O = toObject(that);
var self = IndexedObject(O);
var length = toLength(O.length);
var index = IS_RIGHT ? length - 1 : 0;
var i = IS_RIGHT ? -1 : 1;
if (argumentsLength < 2) while (true) {
if (index in self) {
memo = self[index];
index += i;
break;
}
index += i;
if (IS_RIGHT ? index < 0 : length <= index) {
throw TypeError('Reduce of empty array with no initial value');
}
}
for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {
memo = callbackfn(memo, self[index], index, O);
}
return memo;
};
};
module.exports = {
// `Array.prototype.reduce` method
// https://tc39.github.io/ecma262/#sec-array.prototype.reduce
left: createMethod(false),
// `Array.prototype.reduceRight` method
// https://tc39.github.io/ecma262/#sec-array.prototype.reduceright
right: createMethod(true)
};
/***/ }),
/***/ "d6d4":
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "d784":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
// TODO: Remove from `core-js@4` since it's moved to entry points
__webpack_require__("ac1f");
var redefine = __webpack_require__("6eeb");
var fails = __webpack_require__("d039");
var wellKnownSymbol = __webpack_require__("b622");
var regexpExec = __webpack_require__("9263");
var createNonEnumerableProperty = __webpack_require__("9112");
var SPECIES = wellKnownSymbol('species');
var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
// #replace needs built-in support for named groups.
// #match works fine because it just return the exec results, even if it has
// a "grops" property.
var re = /./;
re.exec = function () {
var result = [];
result.groups = { a: '7' };
return result;
};
return ''.replace(re, '$<a>') !== '7';
});
// IE <= 11 replaces $0 with the whole match, as if it was $&
// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0
var REPLACE_KEEPS_$0 = (function () {
return 'a'.replace(/./, '$0') === '$0';
})();
var REPLACE = wellKnownSymbol('replace');
// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string
var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {
if (/./[REPLACE]) {
return /./[REPLACE]('a', '$0') === '';
}
return false;
})();
// Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
// Weex JS has frozen built-in prototypes, so use try / catch wrapper
var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {
var re = /(?:)/;
var originalExec = re.exec;
re.exec = function () { return originalExec.apply(this, arguments); };
var result = 'ab'.split(re);
return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';
});
module.exports = function (KEY, length, exec, sham) {
var SYMBOL = wellKnownSymbol(KEY);
var DELEGATES_TO_SYMBOL = !fails(function () {
// String methods call symbol-named RegEp methods
var O = {};
O[SYMBOL] = function () { return 7; };
return ''[KEY](O) != 7;
});
var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {
// Symbol-named RegExp methods call .exec
var execCalled = false;
var re = /a/;
if (KEY === 'split') {
// We can't use real regex here since it causes deoptimization
// and serious performance degradation in V8
// https://github.com/zloirock/core-js/issues/306
re = {};
// RegExp[@@split] doesn't call the regex's exec method, but first creates
// a new one. We need to return the patched regex when creating the new one.
re.constructor = {};
re.constructor[SPECIES] = function () { return re; };
re.flags = '';
re[SYMBOL] = /./[SYMBOL];
}
re.exec = function () { execCalled = true; return null; };
re[SYMBOL]('');
return !execCalled;
});
if (
!DELEGATES_TO_SYMBOL ||
!DELEGATES_TO_EXEC ||
(KEY === 'replace' && !(
REPLACE_SUPPORTS_NAMED_GROUPS &&
REPLACE_KEEPS_$0 &&
!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE
)) ||
(KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)
) {
var nativeRegExpMethod = /./[SYMBOL];
var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {
if (regexp.exec === regexpExec) {
if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
// The native String method already delegates to @@method (this
// polyfilled function), leasing to infinite recursion.
// We avoid it by directly calling the native @@method method.
return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };
}
return { done: true, value: nativeMethod.call(str, regexp, arg2) };
}
return { done: false };
}, {
REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,
REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE
});
var stringMethod = methods[0];
var regexMethod = methods[1];
redefine(String.prototype, KEY, stringMethod);
redefine(RegExp.prototype, SYMBOL, length == 2
// 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
// 21.2.5.11 RegExp.prototype[@@split](string, limit)
? function (string, arg) { return regexMethod.call(string, this, arg); }
// 21.2.5.6 RegExp.prototype[@@match](string)
// 21.2.5.9 RegExp.prototype[@@search](string)
: function (string) { return regexMethod.call(string, this); }
);
}
if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);
};
/***/ }),
/***/ "da84":
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(global) {var check = function (it) {
return it && it.Math == Math && it;
};
// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
module.exports =
// eslint-disable-next-line no-undef
check(typeof globalThis == 'object' && globalThis) ||
check(typeof window == 'object' && window) ||
check(typeof self == 'object' && self) ||
check(typeof global == 'object' && global) ||
// eslint-disable-next-line no-new-func
Function('return this')();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("c8ba")))
/***/ }),
/***/ "dca8":
/***/ (function(module, exports, __webpack_require__) {
var $ = __webpack_require__("23e7");
var FREEZING = __webpack_require__("bb2f");
var fails = __webpack_require__("d039");
var isObject = __webpack_require__("861d");
var onFreeze = __webpack_require__("f183").onFreeze;
var nativeFreeze = Object.freeze;
var FAILS_ON_PRIMITIVES = fails(function () { nativeFreeze(1); });
// `Object.freeze` method
// https://tc39.github.io/ecma262/#sec-object.freeze
$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {
freeze: function freeze(it) {
return nativeFreeze && isObject(it) ? nativeFreeze(onFreeze(it)) : it;
}
});
/***/ }),
/***/ "ddb0":
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__("da84");
var DOMIterables = __webpack_require__("fdbc");
var ArrayIteratorMethods = __webpack_require__("e260");
var createNonEnumerableProperty = __webpack_require__("9112");
var wellKnownSymbol = __webpack_require__("b622");
var ITERATOR = wellKnownSymbol('iterator');
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
var ArrayValues = ArrayIteratorMethods.values;
for (var COLLECTION_NAME in DOMIterables) {
var Collection = global[COLLECTION_NAME];
var CollectionPrototype = Collection && Collection.prototype;
if (CollectionPrototype) {
// some Chrome versions have non-configurable methods on DOMTokenList
if (CollectionPrototype[ITERATOR] !== ArrayValues) try {
createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);
} catch (error) {
CollectionPrototype[ITERATOR] = ArrayValues;
}
if (!CollectionPrototype[TO_STRING_TAG]) {
createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);
}
if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {
// some Chrome versions have non-configurable methods on DOMTokenList
if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {
createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);
} catch (error) {
CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];
}
}
}
}
/***/ }),
/***/ "df75":
/***/ (function(module, exports, __webpack_require__) {
var internalObjectKeys = __webpack_require__("ca84");
var enumBugKeys = __webpack_require__("7839");
// `Object.keys` method
// https://tc39.github.io/ecma262/#sec-object.keys
module.exports = Object.keys || function keys(O) {
return internalObjectKeys(O, enumBugKeys);
};
/***/ }),
/***/ "e163":
/***/ (function(module, exports, __webpack_require__) {
var has = __webpack_require__("5135");
var toObject = __webpack_require__("7b0b");
var sharedKey = __webpack_require__("f772");
var CORRECT_PROTOTYPE_GETTER = __webpack_require__("e177");
var IE_PROTO = sharedKey('IE_PROTO');
var ObjectPrototype = Object.prototype;
// `Object.getPrototypeOf` method
// https://tc39.github.io/ecma262/#sec-object.getprototypeof
module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {
O = toObject(O);
if (has(O, IE_PROTO)) return O[IE_PROTO];
if (typeof O.constructor == 'function' && O instanceof O.constructor) {
return O.constructor.prototype;
} return O instanceof Object ? ObjectPrototype : null;
};
/***/ }),
/***/ "e177":
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__("d039");
module.exports = !fails(function () {
function F() { /* empty */ }
F.prototype.constructor = null;
return Object.getPrototypeOf(new F()) !== F.prototype;
});
/***/ }),
/***/ "e260":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var toIndexedObject = __webpack_require__("fc6a");
var addToUnscopables = __webpack_require__("44d2");
var Iterators = __webpack_require__("3f8c");
var InternalStateModule = __webpack_require__("69f3");
var defineIterator = __webpack_require__("7dd0");
var ARRAY_ITERATOR = 'Array Iterator';
var setInternalState = InternalStateModule.set;
var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);
// `Array.prototype.entries` method
// https://tc39.github.io/ecma262/#sec-array.prototype.entries
// `Array.prototype.keys` method
// https://tc39.github.io/ecma262/#sec-array.prototype.keys
// `Array.prototype.values` method
// https://tc39.github.io/ecma262/#sec-array.prototype.values
// `Array.prototype[@@iterator]` method
// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator
// `CreateArrayIterator` internal method
// https://tc39.github.io/ecma262/#sec-createarrayiterator
module.exports = defineIterator(Array, 'Array', function (iterated, kind) {
setInternalState(this, {
type: ARRAY_ITERATOR,
target: toIndexedObject(iterated), // target
index: 0, // next index
kind: kind // kind
});
// `%ArrayIteratorPrototype%.next` method
// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next
}, function () {
var state = getInternalState(this);
var target = state.target;
var kind = state.kind;
var index = state.index++;
if (!target || index >= target.length) {
state.target = undefined;
return { value: undefined, done: true };
}
if (kind == 'keys') return { value: index, done: false };
if (kind == 'values') return { value: target[index], done: false };
return { value: [index, target[index]], done: false };
}, 'values');
// argumentsList[@@iterator] is %ArrayProto_values%
// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject
// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject
Iterators.Arguments = Iterators.Array;
// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');
/***/ }),
/***/ "e776":
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "e893":
/***/ (function(module, exports, __webpack_require__) {
var has = __webpack_require__("5135");
var ownKeys = __webpack_require__("56ef");
var getOwnPropertyDescriptorModule = __webpack_require__("06cf");
var definePropertyModule = __webpack_require__("9bf2");
module.exports = function (target, source) {
var keys = ownKeys(source);
var defineProperty = definePropertyModule.f;
var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
}
};
/***/ }),
/***/ "e8b5":
/***/ (function(module, exports, __webpack_require__) {
var classof = __webpack_require__("c6b6");
// `IsArray` abstract operation
// https://tc39.github.io/ecma262/#sec-isarray
module.exports = Array.isArray || function isArray(arg) {
return classof(arg) == 'Array';
};
/***/ }),
/***/ "ebe3":
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "f183":
/***/ (function(module, exports, __webpack_require__) {
var hiddenKeys = __webpack_require__("d012");
var isObject = __webpack_require__("861d");
var has = __webpack_require__("5135");
var defineProperty = __webpack_require__("9bf2").f;
var uid = __webpack_require__("90e3");
var FREEZING = __webpack_require__("bb2f");
var METADATA = uid('meta');
var id = 0;
var isExtensible = Object.isExtensible || function () {
return true;
};
var setMetadata = function (it) {
defineProperty(it, METADATA, { value: {
objectID: 'O' + ++id, // object ID
weakData: {} // weak collections IDs
} });
};
var fastKey = function (it, create) {
// return a primitive with prefix
if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
if (!has(it, METADATA)) {
// can't set metadata to uncaught frozen object
if (!isExtensible(it)) return 'F';
// not necessary to add metadata
if (!create) return 'E';
// add missing metadata
setMetadata(it);
// return object ID
} return it[METADATA].objectID;
};
var getWeakData = function (it, create) {
if (!has(it, METADATA)) {
// can't set metadata to uncaught frozen object
if (!isExtensible(it)) return true;
// not necessary to add metadata
if (!create) return false;
// add missing metadata
setMetadata(it);
// return the store of weak collections IDs
} return it[METADATA].weakData;
};
// add metadata on freeze-family methods calling
var onFreeze = function (it) {
if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);
return it;
};
var meta = module.exports = {
REQUIRED: false,
fastKey: fastKey,
getWeakData: getWeakData,
onFreeze: onFreeze
};
hiddenKeys[METADATA] = true;
/***/ }),
/***/ "f5df":
/***/ (function(module, exports, __webpack_require__) {
var TO_STRING_TAG_SUPPORT = __webpack_require__("00ee");
var classofRaw = __webpack_require__("c6b6");
var wellKnownSymbol = __webpack_require__("b622");
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
// ES3 wrong here
var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';
// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
try {
return it[key];
} catch (error) { /* empty */ }
};
// getting tag from ES6+ `Object.prototype.toString`
module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {
var O, tag, result;
return it === undefined ? 'Undefined' : it === null ? 'Null'
// @@toStringTag case
: typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag
// builtinTag case
: CORRECT_ARGUMENTS ? classofRaw(O)
// ES3 arguments fallback
: (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;
};
/***/ }),
/***/ "f6fd":
/***/ (function(module, exports) {
// document.currentScript polyfill by Adam Miller
// MIT license
(function(document){
var currentScript = "currentScript",
scripts = document.getElementsByTagName('script'); // Live NodeList collection
// If browser needs currentScript polyfill, add get currentScript() to the document object
if (!(currentScript in document)) {
Object.defineProperty(document, currentScript, {
get: function(){
// IE 6-10 supports script readyState
// IE 10+ support stack trace
try { throw new Error(); }
catch (err) {
// Find the second match for the "at" string to get file src url from stack.
// Specifically works with the format of stack traces in IE.
var i, res = ((/.*at [^\(]*\((.*):.+:.+\)$/ig).exec(err.stack) || [false])[1];
// For all scripts on the page, if src matches or if ready state is interactive, return the script tag
for(i in scripts){
if(scripts[i].src == res || scripts[i].readyState == "interactive"){
return scripts[i];
}
}
// If no match, return null
return null;
}
}
});
}
})(document);
/***/ }),
/***/ "f772":
/***/ (function(module, exports, __webpack_require__) {
var shared = __webpack_require__("5692");
var uid = __webpack_require__("90e3");
var keys = shared('keys');
module.exports = function (key) {
return keys[key] || (keys[key] = uid(key));
};
/***/ }),
/***/ "fb15":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
var components_namespaceObject = {};
__webpack_require__.r(components_namespaceObject);
__webpack_require__.d(components_namespaceObject, "ListItem", function() { return components_list_item; });
__webpack_require__.d(components_namespaceObject, "BButton", function() { return components_button; });
__webpack_require__.d(components_namespaceObject, "TextField", function() { return components_text_field; });
__webpack_require__.d(components_namespaceObject, "NavigationBar", function() { return components_navigation_bar; });
__webpack_require__.d(components_namespaceObject, "Alert", function() { return components_alert; });
__webpack_require__.d(components_namespaceObject, "Dialog", function() { return components_dialog; });
__webpack_require__.d(components_namespaceObject, "Dropdown", function() { return components_dropdown; });
__webpack_require__.d(components_namespaceObject, "Banner", function() { return components_banner; });
__webpack_require__.d(components_namespaceObject, "Card", function() { return components_card; });
__webpack_require__.d(components_namespaceObject, "Accordion", function() { return components_accordion; });
__webpack_require__.d(components_namespaceObject, "Avatar", function() { return components_avatar; });
__webpack_require__.d(components_namespaceObject, "ProgressBar", function() { return components_progress_bar; });
__webpack_require__.d(components_namespaceObject, "Chip", function() { return components_chip; });
__webpack_require__.d(components_namespaceObject, "Anim", function() { return components_anim; });
__webpack_require__.d(components_namespaceObject, "SnackBar", function() { return components_snack_bar; });
__webpack_require__.d(components_namespaceObject, "Tab", function() { return components_tab; });
__webpack_require__.d(components_namespaceObject, "Tabs", function() { return components_tabs; });
__webpack_require__.d(components_namespaceObject, "TokenTextField", function() { return components_token_text_field; });
__webpack_require__.d(components_namespaceObject, "Icon", function() { return components_icon; });
__webpack_require__.d(components_namespaceObject, "GridItem", function() { return components_grid_item; });
__webpack_require__.d(components_namespaceObject, "ListHeader", function() { return components_list_header; });
__webpack_require__.d(components_namespaceObject, "BForm", function() { return components_form; });
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
// This file is imported into lib/wc client bundles.
if (typeof window !== 'undefined') {
if (true) {
__webpack_require__("f6fd")
}
var i
if ((i = window.document.currentScript) && (i = i.src.match(/(.+\/)[^/]+\.js(\?.*)?$/))) {
__webpack_require__.p = i[1] // eslint-disable-line
}
}
// Indicate to webpack that this file can be concatenated
/* harmony default export */ var setPublicPath = (null);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.function.name.js
var es_function_name = __webpack_require__("b0c0");
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/list-item/list-item.vue?vue&type=template&id=30b04995&scoped=true&
var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:"ripple",rawName:"v-ripple",value:({color: _vm.rippleColor}),expression:"{color: rippleColor}"}],ref:"list",staticClass:"list-item",class:_vm.cssClasses,attrs:{"disabled":_vm.loading || _vm.readOnly},on:{"click":_vm.click}},[_c('div',{staticClass:"list-item__wrapper row flex-middle",class:_vm.wrapperClass},[(_vm.hasLeftItemSlot)?_c('div',{staticClass:"list-item__left-item py-m",class:_vm.loading && _vm.hasLeftItemSlot ? 'list-item__left-item--loading' : ''},[_c('div',{staticClass:"list-item__left-item-loading"}),(!_vm.loading)?_vm._t("left-item",[(_vm.image)?_c('div',{staticClass:"list-item__logo"},[_c('div',{staticClass:"list-item__logo-image",style:({ backgroundImage: ("url(" + _vm.image + ")") })})]):_vm._e()]):_vm._e()],2):_vm._e(),_c('div',{staticClass:"list-item__right-item col flex flex-self-center",class:_vm.rightItemClasses},[_vm._t("text-loading",[(_vm.loading)?_c('div',{staticClass:"list-item__right-item-loading"}):_vm._e()]),_vm._t("right-item",[(_vm.status === _vm.statusTypes.NORMAL)?_c('div',{class:_vm.rightItemIcon ? 'row' : ''},[(!_vm.loading)?_c('div',{class:_vm.rightItemIcon ? 'row flex-between' : ''},[_c('div',[_vm._v(" "+_vm._s(_vm.text)+" ")]),(_vm.rightItemIcon)?_c('div',{staticClass:"flex"},[_c('icon',{attrs:{"icon":_vm.rightItemIcon,"flat":true}})],1):_vm._e()]):_vm._e()]):_c('div',{staticClass:"row"},[_c('div',{staticClass:" col text-right pr-s",class:("list-item__right-item--" + _vm.status)},[(_vm.connectedStatus)?_c('div',[_vm._v(" Connected ")]):(_vm.errorStatus)?_c('div',[_vm._v(" Error ")]):_vm._e()]),(_vm.connectedStatus)?_c('icon',{attrs:{"color":_vm.$tokens.color.green['60'].value,"icon":"connected","flat":true}}):(_vm.errorStatus)?_c('icon',{attrs:{"icon":"error","color":_vm.$tokens.color.red['60'].value,"flat":true}}):_vm._e()],1)])],2)])])}
var staticRenderFns = []
// CONCATENATED MODULE: ./src/components/list-item/list-item.vue?vue&type=template&id=30b04995&scoped=true&
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.concat.js
var es_array_concat = __webpack_require__("99af");
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.flat.js
var es_array_flat = __webpack_require__("0481");
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.includes.js
var es_array_includes = __webpack_require__("caad");
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.unscopables.flat.js
var es_array_unscopables_flat = __webpack_require__("4069");
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.freeze.js
var es_object_freeze = __webpack_require__("dca8");
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.values.js
var es_object_values = __webpack_require__("07ac");
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.includes.js
var es_string_includes = __webpack_require__("2532");
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/list-item/list-item.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
var statusTypes = Object.freeze({
NORMAL: 'normal',
ERROR: 'error',
CONNECTED: 'connected'
});
/* harmony default export */ var list_itemvue_type_script_lang_js_ = ({
name: 'ListItem',
props: {
/**
* Default right-item slot text
*/
text: {
type: String,
default: ''
},
/**
* Default left-item slot image
*/
image: {
type: String,
default: ''
},
/**
* Loading state of the list item
*/
loading: {
type: Boolean,
default: false
},
/**
* No border styles
*/
flat: {
type: Boolean,
default: false
},
/**
* Border just for the left-item slot
*/
shortBorder: {
type: Boolean,
default: false
},
/**
* Indicates there is not hover or active state
*/
readOnly: {
type: Boolean,
default: false
},
/**
* Indicates active state for the list-item
*/
active: {
type: Boolean,
default: false
},
/**
* Removes the horizontal paddings
*/
sideSpace: {
type: Boolean,
default: true
},
/**
* Removes the on click delay
*/
immediate: {
type: Boolean,
default: false
},
/**
* DEPRECATED TODO remove
*/
status: {
type: String,
default: 'normal',
validator: function validator(val) {
return Object.values(statusTypes).includes(val);
}
},
/**
* Icon for the right item
*/
rightItemIcon: {
type: String,
default: null
}
},
data: function data() {
return {
statusTypes: statusTypes,
rippleColor: this.$tokens.color.grey['85'].value,
activeState: false
};
},
computed: {
connectedStatus: function connectedStatus() {
return this.status === statusTypes.CONNECTED;
},
errorStatus: function errorStatus() {
return this.status === statusTypes.ERROR;
},
hasLeftItemSlot: function hasLeftItemSlot() {
return !!this.$slots['left-item'] || this.image;
},
cssClasses: function cssClasses() {
var shortBorder = this.shortBorder ? 'list-item--short-border' : '';
var loading = this.loading ? 'list-item--loading' : '';
var flat = this.flat ? 'list-item--flat' : '';
var active = this.activeState ? 'list-item--active' : '';
var disabled = this.readOnly ? 'list-item--disabled' : '';
return "".concat(shortBorder, " ").concat(loading, " ").concat(flat, " ").concat(active, " ").concat(disabled);
},
rightItemClasses: function rightItemClasses() {
var position = this.hasLeftItemSlot ? 'flex-end' : 'flex-left';
var text = 'text-regular-16';
return "".concat(position, " ").concat(text);
},
wrapperClass: function wrapperClass() {
var flat = this.flat ? 'list-item--flat' : '';
var sideSpace = this.sideSpace ? 'mx-m' : '';
return "".concat(flat, " ").concat(sideSpace);
}
},
watch: {
active: {
immediate: true,
handler: function handler(isActive) {
var _this = this;
var time = this.immediate ? 0 : 200;
setTimeout(function () {
return _this.setActive(isActive);
}, time);
}
}
},
methods: {
stopPropagation: function stopPropagation(event) {
event.stopPropagation();
},
click: function click() {
var _this2 = this;
var time = this.immediate ? 110 : 200;
setTimeout(function () {
return _this2.$emit('click');
}, time);
},
setActive: function setActive(isActive) {
this.activeState = isActive;
}
}
});
// CONCATENATED MODULE: ./src/components/list-item/list-item.vue?vue&type=script&lang=js&
/* harmony default export */ var list_item_list_itemvue_type_script_lang_js_ = (list_itemvue_type_script_lang_js_);
// EXTERNAL MODULE: ./src/components/list-item/list-item.scss?vue&type=style&index=0&id=30b04995&lang=scss&scoped=true&
var list_itemvue_type_style_index_0_id_30b04995_lang_scss_scoped_true_ = __webpack_require__("d3fa");
// CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
/* globals __VUE_SSR_CONTEXT__ */
// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
// This module is a runtime utility for cleaner component module output and will
// be included in the final webpack user bundle.
function normalizeComponent (
scriptExports,
render,
staticRenderFns,
functionalTemplate,
injectStyles,
scopeId,
moduleIdentifier, /* server only */
shadowMode /* vue-cli only */
) {
// Vue.extend constructor export interop
var options = typeof scriptExports === 'function'
? scriptExports.options
: scriptExports
// render functions
if (render) {
options.render = render
options.staticRenderFns = staticRenderFns
options._compiled = true
}
// functional template
if (functionalTemplate) {
options.functional = true
}
// scopedId
if (scopeId) {
options._scopeId = 'data-v-' + scopeId
}
var hook
if (moduleIdentifier) { // server build
hook = function (context) {
// 2.3 injection
context =
context || // cached call
(this.$vnode && this.$vnode.ssrContext) || // stateful
(this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
// 2.2 with runInNewContext: true
if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
context = __VUE_SSR_CONTEXT__
}
// inject component styles
if (injectStyles) {
injectStyles.call(this, context)
}
// register component module identifier for async chunk inferrence
if (context && context._registeredComponents) {
context._registeredComponents.add(moduleIdentifier)
}
}
// used by ssr in case component is cached and beforeCreate
// never gets called
options._ssrRegister = hook
} else if (injectStyles) {
hook = shadowMode
? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }
: injectStyles
}
if (hook) {
if (options.functional) {
// for template-only hot-reload because in that case the render fn doesn't
// go through the normalizer
options._injectStyles = hook
// register for functional component in vue file
var originalRender = options.render
options.render = function renderWithStyleInjection (h, context) {
hook.call(context)
return originalRender(h, context)
}
} else {
// inject component registration as beforeCreate hook
var existing = options.beforeCreate
options.beforeCreate = existing
? [].concat(existing, hook)
: [hook]
}
}
return {
exports: scriptExports,
options: options
}
}
// CONCATENATED MODULE: ./src/components/list-item/list-item.vue
/* normalize component */
var list_item_component = normalizeComponent(
list_item_list_itemvue_type_script_lang_js_,
render,
staticRenderFns,
false,
null,
"30b04995",
null
)
/* harmony default export */ var list_item = (list_item_component.exports);
// CONCATENATED MODULE: ./src/components/list-item/index.js
/* harmony default export */ var components_list_item = (list_item);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/button/button.vue?vue&type=template&id=14261ab4&
var buttonvue_type_template_id_14261ab4_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{directives:[{name:"ripple",rawName:"v-ripple",value:({color: _vm.rippleColor || _vm.createRippleColor() || '', removable: true, event: 'mouseover'}),expression:"{color: rippleColor || createRippleColor() || '', removable: true, event: 'mouseover'}"}],class:("button " + _vm.type + " " + _vm.backgroundColor + " " + _vm.triggerClass + " " + (_vm.active ? 'button--active' : '') + " " + (_vm.fluid ? 'button--fluid' : '')),style:(_vm.cssVars),attrs:{"disabled":!_vm.isEnabled,"type":_vm.type,"ripple-disabled":_vm.isRippleDisabled()},on:{"click":function($event){$event.stopPropagation();return _vm.openLink($event)},"mouseover":function($event){_vm.leftIconColor = _vm.hslToHex(_vm.colorHslHover(_vm.textColor))},"mouseleave":function($event){_vm.leftIconColor = _vm.textColor}}},[_c('div',{staticClass:"button__container row flex-middle"},[(_vm.type !== 'icon')?_c('div',{staticClass:"col"},[_c('div',{staticClass:"row"},[(_vm.leftIcon)?_c('div',{staticClass:"col"},[_c('icon',{attrs:{"icon":_vm.leftIcon,"color":_vm.leftIconColor}})],1):_vm._e(),(!_vm.loading)?_c('div',{key:_vm.text,staticClass:"button__text col",class:_vm.type === 'link' ? 'text-code-14' : 'text-medium-16',domProps:{"innerHTML":_vm._s(_vm.text)}}):_c('div',{staticClass:"button__loader"},[_c('span',{staticClass:"text-medium-20"},[_vm._v(".")]),_c('span',{staticClass:"text-medium-20"},[_vm._v(".")]),_c('span',{staticClass:"text-medium-20"},[_vm._v(".")])])])]):_vm._e(),(_vm.icon)?_c('div',{staticClass:"col ripple"},[_c('icon',{attrs:{"icon":_vm.iconAsset,"flat":true,"color":_vm.iconColor}})],1):_vm._e()])])}
var buttonvue_type_template_id_14261ab4_staticRenderFns = []
// CONCATENATED MODULE: ./src/components/button/button.vue?vue&type=template&id=14261ab4&
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.link.js
var es_string_link = __webpack_require__("9911");
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.filter.js
var es_array_filter = __webpack_require__("4de4");
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.number.to-fixed.js
var es_number_to_fixed = __webpack_require__("b680");
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.to-string.js
var es_object_to_string = __webpack_require__("d3b7");
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.exec.js
var es_regexp_exec = __webpack_require__("ac1f");
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.to-string.js
var es_regexp_to_string = __webpack_require__("25f0");
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.replace.js
var es_string_replace = __webpack_require__("5319");
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.split.js
var es_string_split = __webpack_require__("1276");
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.iterator.js
var es_array_iterator = __webpack_require__("e260");
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.slice.js
var es_array_slice = __webpack_require__("fb6a");
// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.iterator.js
var web_dom_collections_iterator = __webpack_require__("ddb0");
// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/createClass.js
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
// CONCATENATED MODULE: ./src/assets/js/color.js
var color_Color =
/*#__PURE__*/
function () {
function Color(r, g, b) {
_classCallCheck(this, Color);
this.set(r, g, b);
}
_createClass(Color, [{
key: "toString",
value: function toString() {
return "rgb(".concat(Math.round(this.r), ", ").concat(Math.round(this.g), ", ").concat(Math.round(this.b), ")");
}
}, {
key: "set",
value: function set(r, g, b) {
this.r = this.clamp(r);
this.g = this.clamp(g);
this.b = this.clamp(b);
}
}, {
key: "hueRotate",
value: function hueRotate() {
var angle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
angle = angle / 180 * Math.PI;
var sin = Math.sin(angle);
var cos = Math.cos(angle);
this.multiply([0.213 + cos * 0.787 - sin * 0.213, 0.715 - cos * 0.715 - sin * 0.715, 0.072 - cos * 0.072 + sin * 0.928, 0.213 - cos * 0.213 + sin * 0.143, 0.715 + cos * 0.285 + sin * 0.140, 0.072 - cos * 0.072 - sin * 0.283, 0.213 - cos * 0.213 - sin * 0.787, 0.715 - cos * 0.715 + sin * 0.715, 0.072 + cos * 0.928 + sin * 0.072]);
}
}, {
key: "grayscale",
value: function grayscale() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
this.multiply([0.2126 + 0.7874 * (1 - value), 0.7152 - 0.7152 * (1 - value), 0.0722 - 0.0722 * (1 - value), 0.2126 - 0.2126 * (1 - value), 0.7152 + 0.2848 * (1 - value), 0.0722 - 0.0722 * (1 - value), 0.2126 - 0.2126 * (1 - value), 0.7152 - 0.7152 * (1 - value), 0.0722 + 0.9278 * (1 - value)]);
}
}, {
key: "sepia",
value: function sepia() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
this.multiply([0.393 + 0.607 * (1 - value), 0.769 - 0.769 * (1 - value), 0.189 - 0.189 * (1 - value), 0.349 - 0.349 * (1 - value), 0.686 + 0.314 * (1 - value), 0.168 - 0.168 * (1 - value), 0.272 - 0.272 * (1 - value), 0.534 - 0.534 * (1 - value), 0.131 + 0.869 * (1 - value)]);
}
}, {
key: "saturate",
value: function saturate() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
this.multiply([0.213 + 0.787 * value, 0.715 - 0.715 * value, 0.072 - 0.072 * value, 0.213 - 0.213 * value, 0.715 + 0.285 * value, 0.072 - 0.072 * value, 0.213 - 0.213 * value, 0.715 - 0.715 * value, 0.072 + 0.928 * value]);
}
}, {
key: "multiply",
value: function multiply(matrix) {
var newR = this.clamp(this.r * matrix[0] + this.g * matrix[1] + this.b * matrix[2]);
var newG = this.clamp(this.r * matrix[3] + this.g * matrix[4] + this.b * matrix[5]);
var newB = this.clamp(this.r * matrix[6] + this.g * matrix[7] + this.b * matrix[8]);
this.r = newR;
this.g = newG;
this.b = newB;
}
}, {
key: "brightness",
value: function brightness() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
this.linear(value);
}
}, {
key: "contrast",
value: function contrast() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
this.linear(value, -(0.5 * value) + 0.5);
}
}, {
key: "linear",
value: function linear() {
var slope = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
var intercept = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
this.r = this.clamp(this.r * slope + intercept * 255);
this.g = this.clamp(this.g * slope + intercept * 255);
this.b = this.clamp(this.b * slope + intercept * 255);
}
}, {
key: "invert",
value: function invert() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
this.r = this.clamp((value + this.r / 255 * (1 - 2 * value)) * 255);
this.g = this.clamp((value + this.g / 255 * (1 - 2 * value)) * 255);
this.b = this.clamp((value + this.b / 255 * (1 - 2 * value)) * 255);
}
}, {
key: "hsl",
value: function hsl() {
// Code taken from https://stackoverflow.com/a/9493060/2688027, licensed under CC BY-SA.
var r = this.r / 255;
var g = this.g / 255;
var b = this.b / 255;
var max = Math.max(r, g, b);
var min = Math.min(r, g, b);
var h;
var s;
var l = (max + min) / 2;
if (max === min) {
h = s = 0;
} else {
var d = max - min;
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
switch (max) {
case r:
h = (g - b) / d + (g < b ? 6 : 0);
break;
case g:
h = (b - r) / d + 2;
break;
case b:
h = (r - g) / d + 4;
break;
}
h /= 6;
}
return {
h: h * 100,
s: s * 100,
l: l * 100
};
}
}, {
key: "clamp",
value: function clamp(value) {
if (value > 255) {
value = 255;
} else if (value < 0) {
value = 0;
}
return value;
}
}]);
return Color;
}();
var color_Solver =
/*#__PURE__*/
function () {
function Solver(target) {
_classCallCheck(this, Solver);
this.target = target;
this.targetHSL = target.hsl();
this.reusedColor = new color_Color(0, 0, 0); // Object pool
}
_createClass(Solver, [{
key: "solve",
value: function solve() {
var result = this.solveNarrow(this.solveWide());
return {
values: result.values,
loss: result.loss,
filter: this.css(result.values)
};
}
}, {
key: "solveWide",
value: function solveWide() {
var A = 5;
var c = 15;
var a = [60, 180, 18000, 600, 1.2, 1.2];
var best = {
loss: Infinity
};
for (var i = 0; best.loss > 25 && i < 3; i++) {
var initial = [50, 20, 3750, 50, 100, 100];
var result = this.spsa(A, a, c, initial, 1000);
if (result.loss < best.loss) {
best = result;
}
}
return best;
}
}, {
key: "solveNarrow",
value: function solveNarrow(wide) {
var A = wide.loss;
var c = 2;
var A1 = A + 1;
var a = [0.25 * A1, 0.25 * A1, A1, 0.25 * A1, 0.2 * A1, 0.2 * A1];
return this.spsa(A, a, c, wide.values, 500);
}
}, {
key: "spsa",
value: function spsa(A, a, c, values, iters) {
var alpha = 1;
var gamma = 0.16666666666666666;
var best = null;
var bestLoss = Infinity;
var deltas = new Array(6);
var highArgs = new Array(6);
var lowArgs = new Array(6);
for (var k = 0; k < iters; k++) {
var ck = c / Math.pow(k + 1, gamma);
for (var i = 0; i < 6; i++) {
deltas[i] = Math.random() > 0.5 ? 1 : -1;
highArgs[i] = values[i] + ck * deltas[i];
lowArgs[i] = values[i] - ck * deltas[i];
}
var lossDiff = this.loss(highArgs) - this.loss(lowArgs);
for (var _i = 0; _i < 6; _i++) {
var g = lossDiff / (2 * ck) * deltas[_i];
var ak = a[_i] / Math.pow(A + k + 1, alpha);
values[_i] = fix(values[_i] - ak * g, _i);
}
var loss = this.loss(values);
if (loss < bestLoss) {
best = values.slice(0);
bestLoss = loss;
}
}
return {
values: best,
loss: bestLoss
};
function fix(value, idx) {
var max = 100;
if (idx === 2
/* saturate */
) {
max = 7500;
} else if (idx === 4
/* brightness */
|| idx === 5
/* contrast */
) {
max = 200;
}
if (idx === 3
/* hue-rotate */
) {
if (value > max) {
value = value % max;
} else if (value < 0) {
value = max + value % max;
}
} else if (value < 0) {
value = 0;
} else if (value > max) {
value = max;
}
return value;
}
}
}, {
key: "loss",
value: function loss(filters) {
// Argument is array of percentages.
var color = this.reusedColor;
color.set(0, 0, 0);
color.invert(filters[0] / 100);
color.sepia(filters[1] / 100);
color.saturate(filters[2] / 100);
color.hueRotate(filters[3] * 3.6);
color.brightness(filters[4] / 100);
color.contrast(filters[5] / 100);
var colorHSL = color.hsl();
return Math.abs(color.r - this.target.r) + Math.abs(color.g - this.target.g) + Math.abs(color.b - this.target.b) + Math.abs(colorHSL.h - this.targetHSL.h) + Math.abs(colorHSL.s - this.targetHSL.s) + Math.abs(colorHSL.l - this.targetHSL.l);
}
}, {
key: "css",
value: function css(filters) {
function fmt(idx) {
var multiplier = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
return Math.round(filters[idx] * multiplier);
}
return "filter: invert(".concat(fmt(0), "%) sepia(").concat(fmt(1), "%) saturate(").concat(fmt(2), "%) hue-rotate(").concat(fmt(3, 3.6), "deg) brightness(").concat(fmt(4), "%) contrast(").concat(fmt(5), "%);");
}
}]);
return Solver;
}();
/* harmony default export */ var js_color = ({
Color: color_Color,
Solver: color_Solver
});
// CONCATENATED MODULE: ./src/assets/js/mixins/color.js
/* harmony default export */ var mixins_color = ({
data: function data() {
return {
title: 'color',
colorHelper: js_color
};
},
methods: {
hexToRgb: function hexToRgb(hex) {
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
return result ? {
r: parseInt(result[1], 16),
g: parseInt(result[2], 16),
b: parseInt(result[3], 16)
} : null;
},
hexToFilter: function hexToFilter(hex) {
var rgb = this.hexToRgb(hex);
var color = new this.colorHelper.Color(rgb.r, rgb.g, rgb.b);
var solver = new this.colorHelper.Solver(color);
var result = solver.solve();
return result.filter.split('filter:')[1].replace(';', '');
},
hslToFilter: function hslToFilter(hsl) {
return this.hexToFilter(this.hslToHex(hsl));
},
hslToHex: function hslToHex(rawHsl) {
var hsl = rawHsl.replace(/\(|\)|hsl|%/g, '').split(',');
var h = hsl[0];
var s = hsl[1];
var l = hsl[2];
h /= 360;
s /= 100;
l /= 100;
var r, g, b;
if (s === 0) {
r = g = b = l; // achromatic
} else {
var hue2rgb = function hue2rgb(p, q, t) {
if (t < 0) t += 1;
if (t > 1) t -= 1;
if (t < 1 / 6) return p + (q - p) * 6 * t;
if (t < 1 / 2) return q;
if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;
return p;
};
var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
var p = 2 * l - q;
r = hue2rgb(p, q, h + 1 / 3);
g = hue2rgb(p, q, h);
b = hue2rgb(p, q, h - 1 / 3);
}
var toHex = function toHex(x) {
var hex = Math.round(x * 255).toString(16);
return hex.length === 1 ? '0' + hex : hex;
};
return "#".concat(toHex(r)).concat(toHex(g)).concat(toHex(b));
},
hexToHsl: function hexToHsl(H, lum) {
// Convert hex to RGB first
var r = 0;
var g = 0;
var b = 0;
if (H.length === 4) {
r = '0x' + H[1] + H[1];
g = '0x' + H[2] + H[2];
b = '0x' + H[3] + H[3];
} else if (H.length === 7) {
r = '0x' + H[1] + H[2];
g = '0x' + H[3] + H[4];
b = '0x' + H[5] + H[6];
} // Then to HSL
r /= 255;
g /= 255;
b /= 255;
var cmin = Math.min(r, g, b);
var cmax = Math.max(r, g, b);
var delta = cmax - cmin;
var h = 0;
var s = 0;
var l = 0;
if (delta === 0) {
h = 0;
} else if (cmax === r) {
h = (g - b) / delta % 6;
} else if (cmax === g) {
h = (b - r) / delta + 2;
} else {
h = (r - g) / delta + 4;
}
h = Math.round(h * 60);
if (h < 0) {
h += 360;
}
l = (cmax + cmin) / 2;
s = delta === 0 ? 0 : delta / (1 - Math.abs(2 * l - 1));
s = +(s * 100).toFixed(1);
l = +(l * 100).toFixed(1);
return 'hsl(' + h + ',' + s + '%,' + lum + '%)';
}
}
});
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/button/button.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ var buttonvue_type_script_lang_js_ = ({
name: 'BButton',
mixins: [mixins_color],
props: {
text: {
type: String,
required: false,
default: ''
},
/**
* The type of the button
*/
type: {
type: String,
default: 'cta',
validator: function validator(val) {
return ['cta', 'secondary', 'primary', 'text', 'icon', 'submit', 'link'].includes(val);
}
},
link: {
type: String,
default: ''
},
linkTarget: {
type: String,
default: '_self',
validator: function validator(val) {
return ['_self', '_blank'].includes(val);
}
},
/**
* DEPRECATED
*/
backgroundColor: {
type: String,
validator: function validator(val) {
return ['red', 'blue', 'yellow', 'black'].includes(val);
},
default: 'black'
},
icon: {
type: String,
default: null
},
iconActive: {
type: String,
default: null
},
trigger: {
type: Boolean,
required: false,
default: false
},
enabled: {
type: Boolean,
required: false,
default: true
},
gaEvent: {
type: Object,
default: function _default() {
return null;
}
},
iconColor: {
type: String,
default: null
},
activeState: {
type: Boolean,
default: false
},
fluid: {
type: Boolean,
default: false
},
rippleColor: {
type: String,
default: null
},
textColor: {
type: String,
default: '#000000'
},
color: {
type: String,
default: null
},
leftIcon: {
type: String,
default: null
},
loading: {
type: Boolean,
default: false
},
buttonIconColor: {
type: String,
default: null
},
circleShape: {
type: Boolean,
default: false
},
hoverColor: {
type: String,
default: null
}
},
data: function data() {
return {
triggered: false,
active: false,
colorHelper: js_color,
defaultColors: {
'cta': this.$tokens.color.blue['60'].value,
'secondary': '#ffffff',
'primary': '#000000',
'icon': '#ffffff',
'submit': this.$tokens.color.blue['60'].value,
'link': '#ffffff',
'text': '#ffffff'
},
leftIconColor: this.textColor
};
},
computed: {
triggerClass: function triggerClass() {
return this.trigger && this.triggered && this.isEnabled ? '--trigger' : '';
},
isEnabled: function isEnabled() {
return this.enabled;
},
iconAsset: function iconAsset() {
if (!this.iconActive) {
return this.icon;
}
return this.active ? this.iconActive : this.icon;
},
cssVars: function cssVars() {
var textHoverColor = this.colorHslHover(this.textColor);
var buttonIconColor = this.buttonIconColor ? this.hexToFilter(this.buttonIconColor) : '';
var backgroundColor = this.color || this.defaultColors[this.type];
return {
'--text-color': this.textColor,
'--text-color-hover': textHoverColor,
'--background-color': backgroundColor,
'--background-color-hover': this.hoverColor || this.hexToHsl(backgroundColor, 95),
'--button-icon-color': buttonIconColor,
'--button-icon-radius': this.circleShape ? '20px' : '0',
'--background-color-active': this.hexToHsl(backgroundColor, 50),
'--background-color-active-secondary': this.hexToHsl(backgroundColor, 90)
};
}
},
methods: {
openLink: function openLink(event) {
var _this = this;
if (this.type !== 'submit') {
event.preventDefault();
}
if (this.isEnabled) {
this.$emit('clicked');
if (this.activeState) {
this.toggleActive();
}
if (this.gaEvent) {
this.registerEvent(this.gaEvent);
}
this.triggerAnimation();
if (this.link !== '') {
var delay = ['secondary', 'text'].includes(this.type) ? 300 : 0;
setTimeout(function () {
window.open(_this.link, _this.linkTarget);
}, delay);
}
}
},
colorHslHover: function colorHslHover(color) {
return this.hexToHsl(color, 55);
},
triggerAnimation: function triggerAnimation() {
var _this2 = this;
this.triggered = true;
setTimeout(function () {
_this2.triggered = false;
}, 1000);
},
toggleActive: function toggleActive() {
this.active = !this.active;
},
isRippleDisabled: function isRippleDisabled() {
return this.type === 'link';
},
createRippleColor: function createRippleColor() {
var color = this.color || this.defaultColors[this.type];
return this.type === 'secondary' ? this.hexToHsl(color, 95) : this.hexToHsl(color, 55);
}
}
});
// CONCATENATED MODULE: ./src/components/button/button.vue?vue&type=script&lang=js&
/* harmony default export */ var button_buttonvue_type_script_lang_js_ = (buttonvue_type_script_lang_js_);
// EXTERNAL MODULE: ./src/components/button/button.scss?vue&type=style&index=0&lang=scss&
var buttonvue_type_style_index_0_lang_scss_ = __webpack_require__("2155");
// CONCATENATED MODULE: ./src/components/button/button.vue
/* normalize component */
var button_component = normalizeComponent(
button_buttonvue_type_script_lang_js_,
buttonvue_type_template_id_14261ab4_render,
buttonvue_type_template_id_14261ab4_staticRenderFns,
false,
null,
null,
null
)
/* harmony default export */ var button_button = (button_component.exports);
// CONCATENATED MODULE: ./src/components/button/index.js
/* harmony default export */ var components_button = (button_button);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/text-field/text-field.vue?vue&type=template&id=0cef31b4&scoped=true&
var text_fieldvue_type_template_id_0cef31b4_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('ValidationProvider',{attrs:{"rules":_vm.rules},scopedSlots:_vm._u([{key:"default",fn:function(ref){
var errors = ref.errors;
return [_c('div',{directives:[{name:"ripple",rawName:"v-ripple",value:({color: '#ffffff', event: ['focusin', 'mousedown']}),expression:"{color: '#ffffff', event: ['focusin', 'mousedown']}"}],staticClass:"text-field",class:_vm.classes,attrs:{"disabled":_vm.disabled},on:{"click":function($event){!_vm.disabled ? _vm.$refs.input.focus() : ''},"mousedown":_vm.activate,"mouseover":_vm.hoverIn,"mouseleave":_vm.hoverOut}},[_c('div',{staticClass:"text-field__border-default"}),_c('div',{ref:"wrapper",staticClass:"text-field__wrapper"},[_c('div',{staticClass:"row"},[_c('div',{staticClass:"col flex-col flex-center"},[_c('label',{staticClass:"text-field__label text-regular-12 mb-xs",class:_vm.value != '' ? 'text-field__label--disabled' : ''},[_vm._v(" "+_vm._s(_vm.label)+" ")]),_c('input',{ref:"input",staticClass:"text-field__input text-regular-16 p-0",attrs:{"placeholder":_vm.placeHolder,"type":_vm.type,"disabled":_vm.disabled,"required":_vm.required,"pattern":_vm.pattern,"autocapitalize":"off"},domProps:{"value":_vm.value},on:{"focus":_vm.activate,"blur":_vm.deactivate,"input":function($event){return _vm.updateValue($event.target.value)}}})]),(_vm.type === _vm.types.PASSWORD || _vm.icon)?_c('div',{staticClass:"flex-self-end"},[(_vm.type === _vm.types.PASSWORD)?_c('b-button',{staticClass:"ripple",attrs:{"tabindex":"-1","icon":"show","icon-active":"hide","active-state":true,"icon-color":_vm.iconColor,"ripple-color":_vm.$tokens.color.grey['90'].value,"color":"transparent","circle-shape":true,"type":"icon"},on:{"clicked":_vm.togglePassword}}):_c('div',{staticClass:"pb-s"},[_c('icon',{staticClass:"ripple",attrs:{"icon":_vm.icon,"color":_vm.iconColor,"flat":true}})],1)],1):_vm._e()]),_c('div',{staticClass:"text-field__border"})])]),_c('div',{staticClass:"text-field__error text-regular-12"},[(errors.length > 0 || _vm.error)?_c('div',[_vm._v(" "+_vm._s(_vm.error || errors[0])+" ")]):_vm._e()])]}}])})],1)}
var text_fieldvue_type_template_id_0cef31b4_scoped_true_staticRenderFns = []
// CONCATENATED MODULE: ./src/components/text-field/text-field.vue?vue&type=template&id=0cef31b4&scoped=true&
// CONCATENATED MODULE: ./node_modules/gsap/gsap-core.js
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
/*!
* GSAP 3.1.1
* https://greensock.com
*
* @license Copyright 2008-2020, GreenSock. All rights reserved.
* Subject to the terms at https://greensock.com/standard-license or for
* Club GreenSock members, the agreement issued with that membership.
* @author: Jack Doyle, jack@greensock.com
*/
/* eslint-disable */
var _config = {
autoSleep: 120,
force3D: "auto",
nullTargetWarn: 1,
units: {
lineHeight: ""
}
},
_defaults = {
duration: .5,
overwrite: false,
delay: 0
},
_bigNum = 1e8,
_tinyNum = 1 / _bigNum,
_2PI = Math.PI * 2,
_HALF_PI = _2PI / 4,
_gsID = 0,
_sqrt = Math.sqrt,
_cos = Math.cos,
_sin = Math.sin,
_isString = function _isString(value) {
return typeof value === "string";
},
_isFunction = function _isFunction(value) {
return typeof value === "function";
},
_isNumber = function _isNumber(value) {
return typeof value === "number";
},
_isUndefined = function _isUndefined(value) {
return typeof value === "undefined";
},
_isObject = function _isObject(value) {
return typeof value === "object";
},
_isNotFalse = function _isNotFalse(value) {
return value !== false;
},
_windowExists = function _windowExists() {
return typeof window !== "undefined";
},
_isFuncOrString = function _isFuncOrString(value) {
return _isFunction(value) || _isString(value);
},
_isArray = Array.isArray,
_strictNumExp = /(?:-?\.?\d|\.)+/gi,
//only numbers (including negatives and decimals) but NOT relative values.
_numExp = /[-+=\.]*\d+[\.e\-\+]*\d*[e\-\+]*\d*/g,
//finds any numbers, including ones that start with += or -=, negative numbers, and ones in scientific notation like 1e-8.
_complexStringNumExp = /[-+=\.]*\d+(?:\.|e-|e)*\d*/gi,
//duplicate so that while we're looping through matches from exec(), it doesn't contaminate the lastIndex of _numExp which we use to search for colors too.
_parenthesesExp = /\(([^()]+)\)/i,
//finds the string between parentheses.
_relExp = /[\+-]=-?[\.\d]+/,
_delimitedValueExp = /[#\-+\.]*\b[a-z\d-=+%.]+/gi,
_globalTimeline,
_win,
_coreInitted,
_doc,
_globals = {},
_installScope = {},
_coreReady,
_install = function _install(scope) {
return (_installScope = _merge(scope, _globals)) && gsap;
},
_missingPlugin = function _missingPlugin(property, value) {
return console.warn("Invalid property", property, "set to", value, "Missing plugin? gsap.registerPlugin()");
},
_warn = function _warn(message, suppress) {
return !suppress && console.warn(message);
},
_addGlobal = function _addGlobal(name, obj) {
return name && (_globals[name] = obj) && _installScope && (_installScope[name] = obj) || _globals;
},
_emptyFunc = function _emptyFunc() {
return 0;
},
_reservedProps = {},
_lazyTweens = [],
_lazyLookup = {},
_lastRenderedFrame,
_plugins = {},
_effects = {},
_nextGCFrame = 30,
_harnessPlugins = [],
_callbackNames = "onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt",
_harness = function _harness(targets) {
var target = targets[0],
harnessPlugin,
i;
if (!_isObject(target) && !_isFunction(target)) {
targets = [targets];
}
if (!(harnessPlugin = (target._gsap || {}).harness)) {
i = _harnessPlugins.length;
while (i-- && !_harnessPlugins[i].targetTest(target)) {}
harnessPlugin = _harnessPlugins[i];
}
i = targets.length;
while (i--) {
targets[i] && (targets[i]._gsap || (targets[i]._gsap = new GSCache(targets[i], harnessPlugin))) || targets.splice(i, 1);
}
return targets;
},
_getCache = function _getCache(target) {
return target._gsap || _harness(toArray(target))[0]._gsap;
},
_getProperty = function _getProperty(target, property) {
var currentValue = target[property];
return _isFunction(currentValue) ? target[property]() : _isUndefined(currentValue) && target.getAttribute(property) || currentValue;
},
_forEachName = function _forEachName(names, func) {
return (names = names.split(",")).forEach(func) || names;
},
//split a comma-delimited list of names into an array, then run a forEach() function and return the split array (this is just a way to consolidate/shorten some code).
_round = function _round(value) {
return Math.round(value * 10000) / 10000;
},
_arrayContainsAny = function _arrayContainsAny(toSearch, toFind) {
//searches one array to find matches for any of the items in the toFind array. As soon as one is found, it returns true. It does NOT return all the matches; it's simply a boolean search.
var l = toFind.length,
i = 0;
for (; toSearch.indexOf(toFind[i]) < 0 && ++i < l;) {}
return i < l;
},
_parseVars = function _parseVars(params, type, parent) {
//reads the arguments passed to one of the key methods and figures out if the user is defining things with the OLD/legacy syntax where the duration is the 2nd parameter, and then it adjusts things accordingly and spits back the corrected vars object (with the duration added if necessary, as well as runBackwards or startAt or immediateRender). type 0 = to()/staggerTo(), 1 = from()/staggerFrom(), 2 = fromTo()/staggerFromTo()
var isLegacy = _isNumber(params[1]),
varsIndex = (isLegacy ? 2 : 1) + (type < 2 ? 0 : 1),
vars = params[varsIndex],
irVars;
if (isLegacy) {
vars.duration = params[1];
}
vars.parent = parent;
if (type) {
irVars = vars;
while (parent && !("immediateRender" in irVars)) {
// inheritance hasn't happened yet, but someone may have set a default in an ancestor timeline. We could do vars.immediateRender = _isNotFalse(_inheritDefaults(vars).immediateRender) but that'd exact a slight performance penalty because _inheritDefaults() also runs in the Tween constructor. We're paying a small kb price here to gain speed.
irVars = parent.vars.defaults || {};
parent = _isNotFalse(parent.vars.inherit) && parent.parent;
}
vars.immediateRender = _isNotFalse(irVars.immediateRender);
if (type < 2) {
vars.runBackwards = 1;
} else {
vars.startAt = params[varsIndex - 1]; // "from" vars
}
}
return vars;
},
_lazyRender = function _lazyRender() {
var l = _lazyTweens.length,
a = _lazyTweens.slice(0),
i,
tween;
_lazyLookup = {};
_lazyTweens.length = 0;
for (i = 0; i < l; i++) {
tween = a[i];
if (tween && tween._lazy) {
tween.render(tween._lazy[0], tween._lazy[1], true)._lazy = 0;
}
}
},
_lazySafeRender = function _lazySafeRender(animation, time, suppressEvents, force) {
if (_lazyTweens.length) {
_lazyRender();
}
animation.render(time, suppressEvents, force);
if (_lazyTweens.length) {
//in case rendering caused any tweens to lazy-init, we should render them because typically when someone calls seek() or time() or progress(), they expect an immediate render.
_lazyRender();
}
},
_numericIfPossible = function _numericIfPossible(value) {
var n = parseFloat(value);
return (n || n === 0) && (value + "").match(_delimitedValueExp).length < 2 ? n : value;
},
_passThrough = function _passThrough(p) {
return p;
},
_setDefaults = function _setDefaults(obj, defaults) {
for (var p in defaults) {
if (!(p in obj)) {
obj[p] = defaults[p];
}
}
return obj;
},
_setKeyframeDefaults = function _setKeyframeDefaults(obj, defaults) {
for (var p in defaults) {
if (!(p in obj) && p !== "duration" && p !== "ease") {
obj[p] = defaults[p];
}
}
},
_merge = function _merge(base, toMerge) {
for (var p in toMerge) {
base[p] = toMerge[p];
}
return base;
},
_mergeDeep = function _mergeDeep(base, toMerge) {
for (var p in toMerge) {
base[p] = _isObject(toMerge[p]) ? _mergeDeep(base[p] || (base[p] = {}), toMerge[p]) : toMerge[p];
}
return base;
},
_copyExcluding = function _copyExcluding(obj, excluding) {
var copy = {},
p;
for (p in obj) {
if (!(p in excluding)) {
copy[p] = obj[p];
}
}
return copy;
},
_inheritDefaults = function _inheritDefaults(vars) {
var parent = vars.parent || _globalTimeline,
func = vars.keyframes ? _setKeyframeDefaults : _setDefaults;
if (_isNotFalse(vars.inherit)) {
while (parent) {
func(vars, parent.vars.defaults);
parent = parent.parent;
}
}
return vars;
},
_arraysMatch = function _arraysMatch(a1, a2) {
var i = a1.length,
match = i === a2.length;
while (match && i-- && a1[i] === a2[i]) {}
return i < 0;
},
_addLinkedListItem = function _addLinkedListItem(parent, child, firstProp, lastProp, sortBy) {
if (firstProp === void 0) {
firstProp = "_first";
}
if (lastProp === void 0) {
lastProp = "_last";
}
var prev = parent[lastProp],
t;
if (sortBy) {
t = child[sortBy];
while (prev && prev[sortBy] > t) {
prev = prev._prev;
}
}
if (prev) {
child._next = prev._next;
prev._next = child;
} else {
child._next = parent[firstProp];
parent[firstProp] = child;
}
if (child._next) {
child._next._prev = child;
} else {
parent[lastProp] = child;
}
child._prev = prev;
child.parent = parent;
return child;
},
_removeLinkedListItem = function _removeLinkedListItem(parent, child, firstProp, lastProp) {
if (firstProp === void 0) {
firstProp = "_first";
}
if (lastProp === void 0) {
lastProp = "_last";
}
var prev = child._prev,
next = child._next;
if (prev) {
prev._next = next;
} else if (parent[firstProp] === child) {
parent[firstProp] = next;
}
if (next) {
next._prev = prev;
} else if (parent[lastProp] === child) {
parent[lastProp] = prev;
}
child._dp = parent; //record the parent as _dp just so we can revert if necessary. But parent should be null to indicate the item isn't in a linked list.
child._next = child._prev = child.parent = null;
},
_removeFromParent = function _removeFromParent(child, onlyIfParentHasAutoRemove) {
if (child.parent && (!onlyIfParentHasAutoRemove || child.parent.autoRemoveChildren)) {
child.parent.remove(child);
}
child._act = 0;
},
_uncache = function _uncache(animation) {
var a = animation;
while (a) {
a._dirty = 1;
a = a.parent;
}
return animation;
},
_recacheAncestors = function _recacheAncestors(animation) {
var parent = animation.parent;
while (parent && parent.parent) {
//sometimes we must force a re-sort of all children and update the duration/totalDuration of all ancestor timelines immediately in case, for example, in the middle of a render loop, one tween alters another tween's timeScale which shoves its startTime before 0, forcing the parent timeline to shift around and shiftChildren() which could affect that next tween's render (startTime). Doesn't matter for the root timeline though.
parent._dirty = 1;
parent.totalDuration();
parent = parent.parent;
}
return animation;
},
_hasNoPausedAncestors = function _hasNoPausedAncestors(animation) {
return !animation || animation._ts && _hasNoPausedAncestors(animation.parent);
},
_elapsedCycleDuration = function _elapsedCycleDuration(animation) {
return animation._repeat ? _animationCycle(animation._tTime, animation = animation.duration() + animation._rDelay) * animation : 0;
},
// feed in the totalTime and cycleDuration and it'll return the cycle (iteration minus 1) and if the playhead is exactly at the very END, it will NOT bump up to the next cycle.
_animationCycle = function _animationCycle(tTime, cycleDuration) {
return (tTime /= cycleDuration) && ~~tTime === tTime ? ~~tTime - 1 : ~~tTime;
},
_parentToChildTotalTime = function _parentToChildTotalTime(parentTime, child) {
return (parentTime - child._start) * child._ts + (child._ts >= 0 ? 0 : child._dirty ? child.totalDuration() : child._tDur);
},
/*
_totalTimeToTime = (clampedTotalTime, duration, repeat, repeatDelay, yoyo) => {
let cycleDuration = duration + repeatDelay,
time = _round(clampedTotalTime % cycleDuration);
if (time > duration) {
time = duration;
}
return (yoyo && (~~(clampedTotalTime / cycleDuration) & 1)) ? duration - time : time;
},
*/
_addToTimeline = function _addToTimeline(timeline, child, position) {
child.parent && _removeFromParent(child);
child._start = position + child._delay;
child._end = child._start + (child.totalDuration() / Math.abs(child.timeScale()) || 0);
_addLinkedListItem(timeline, child, "_first", "_last", timeline._sort ? "_start" : 0);
timeline._recent = child;
if (child._time || !child._dur && child._initted) {
//in case, for example, the _start is moved on a tween that has already rendered. Imagine it's at its end state, then the startTime is moved WAY later (after the end of this timeline), it should render at its beginning.
var curTime = (timeline.rawTime() - child._start) * child._ts;
if (!child._dur || _clamp(0, child.totalDuration(), curTime) - child._tTime > _tinyNum) {
child.render(curTime, true);
}
}
_uncache(timeline); //if the timeline has already ended but the inserted tween/timeline extends the duration, we should enable this timeline again so that it renders properly. We should also align the playhead with the parent timeline's when appropriate.
if (timeline._dp && timeline._time >= timeline._dur && timeline._ts && timeline._dur < timeline.duration()) {
//in case any of the ancestors had completed but should now be enabled...
var tl = timeline;
while (tl._dp) {
tl.totalTime(tl._tTime, true); //moves the timeline (shifts its startTime) if necessary, and also enables it.
tl = tl._dp;
}
}
return timeline;
},
_attemptInitTween = function _attemptInitTween(tween, totalTime, force, suppressEvents) {
_initTween(tween, totalTime);
if (!tween._initted) {
return 1;
}
if (!force && tween._pt && (tween._dur && tween.vars.lazy !== false || !tween._dur && tween.vars.lazy) && _lastRenderedFrame !== _ticker.frame) {
_lazyTweens.push(tween);
tween._lazy = [totalTime, suppressEvents];
return 1;
}
},
_renderZeroDurationTween = function _renderZeroDurationTween(tween, totalTime, suppressEvents, force) {
var prevRatio = tween._zTime < 0 ? 0 : 1,
ratio = totalTime < 0 ? 0 : 1,
repeatDelay = tween._rDelay,
tTime = 0,
pt,
iteration,
prevIteration;
if (repeatDelay && tween._repeat) {
//in case there's a zero-duration tween that has a repeat with a repeatDelay
tTime = _clamp(0, tween._tDur, totalTime);
iteration = _animationCycle(tTime, repeatDelay);
prevIteration = _animationCycle(tween._tTime, repeatDelay);
if (iteration !== prevIteration) {
prevRatio = 1 - ratio;
if (tween.vars.repeatRefresh && tween._initted) {
tween.invalidate();
}
}
}
if (!tween._initted && _attemptInitTween(tween, totalTime, force, suppressEvents)) {
//if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately.
return;
}
if (ratio !== prevRatio || force || tween._zTime === _tinyNum || !totalTime && tween._zTime) {
tween._zTime = totalTime || (suppressEvents ? _tinyNum : 0); //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.
tween.ratio = ratio;
if (tween._from) {
ratio = 1 - ratio;
}
tween._time = 0;
tween._tTime = tTime;
if (!suppressEvents) {
_callback(tween, "onStart");
}
pt = tween._pt;
while (pt) {
pt.r(ratio, pt.d);
pt = pt._next;
}
if (!ratio && tween._startAt && !tween._onUpdate && tween._start) {
//if the tween is positioned at the VERY beginning (_start 0) of its parent timeline, it's illegal for the playhead to go back further, so we should not render the recorded startAt values.
tween._startAt.render(totalTime, true, force);
}
if (tween._onUpdate && !suppressEvents) {
_callback(tween, "onUpdate");
}
if (tTime && tween._repeat && !suppressEvents && tween.parent) {
_callback(tween, "onRepeat");
}
if ((totalTime >= tween._tDur || totalTime < 0) && tween.ratio === ratio) {
tween.ratio && _removeFromParent(tween, 1);
if (!suppressEvents) {
_callback(tween, tween.ratio ? "onComplete" : "onReverseComplete", true);
tween._prom && tween._prom();
}
}
}
},
_findNextPauseTween = function _findNextPauseTween(animation, prevTime, time) {
var child;
if (time > prevTime) {
child = animation._first;
while (child && child._start <= time) {
if (!child._dur && child.data === "isPause" && child._start > prevTime) {
return child;
}
child = child._next;
}
} else {
child = animation._last;
while (child && child._start >= time) {
if (!child._dur && child.data === "isPause" && child._start < prevTime) {
return child;
}
child = child._prev;
}
}
},
_onUpdateTotalDuration = function _onUpdateTotalDuration(animation) {
if (animation instanceof Timeline) {
return _uncache(animation);
}
var repeat = animation._repeat;
animation._tDur = !repeat ? animation._dur : repeat < 0 ? 1e12 : _round(animation._dur * (repeat + 1) + animation._rDelay * repeat);
_uncache(animation.parent); //if the tween's duration changed, the parent timeline's duration may have changed, so flag it as "dirty"
return animation;
},
_zeroPosition = {
_start: 0,
endTime: _emptyFunc
},
_parsePosition = function _parsePosition(animation, position, useBuildFrom) {
var labels = animation.labels,
recent = animation._recent || _zeroPosition,
clippedDuration = animation.duration() >= _bigNum ? recent.endTime(false) : animation._dur,
//in case there's a child that infinitely repeats, users almost never intend for the insertion point of a new child to be based on a SUPER long value like that so we clip it and assume the most recently-added child's endTime should be used instead.
//buildFrom = useBuildFrom ? animation._build : "auto",
i,
offset;
if (_isString(position) && (isNaN(position) || position in labels)) {
//if the string is a number like "1", check to see if there's a label with that name, otherwise interpret it as a number (absolute value).
i = position.charAt(0);
if (i === "<" || i === ">") {
return (i === "<" ? recent._start : recent.endTime(recent._repeat >= 0)) + (parseFloat(position.substr(1)) || 0);
}
i = position.indexOf("=");
if (i < 0) {
if (!(position in labels)) {
labels[position] = clippedDuration;
}
return labels[position];
}
offset = +(position.charAt(i - 1) + position.substr(i + 1));
return i > 1 ? _parsePosition(animation, position.substr(0, i - 1)) + offset : clippedDuration + offset;
}
return position == null ? clippedDuration : +position; //return (position == null) ? (isNaN(buildFrom) ? clippedDuration : buildFrom) : (buildFrom === ">>" ? clippedDuration : +buildFrom || 0) + (+position);
},
_conditionalReturn = function _conditionalReturn(value, func) {
return value || value === 0 ? func(value) : func;
},
_clamp = function _clamp(min, max, value) {
return value < min ? min : value > max ? max : value;
},
getUnit = function getUnit(value) {
return (value + "").substr((parseFloat(value) + "").length);
},
clamp = function clamp(min, max, value) {
return _conditionalReturn(value, function (v) {
return _clamp(min, max, v);
});
},
_slice = [].slice,
_isArrayLike = function _isArrayLike(value, nonEmpty) {
return value && _isObject(value) && "length" in value && (!nonEmpty && !value.length || value.length - 1 in value && _isObject(value[0])) && !value.nodeType && value !== _win;
},
_flatten = function _flatten(ar, leaveStrings, accumulator) {
if (accumulator === void 0) {
accumulator = [];
}
return ar.forEach(function (value) {
var _accumulator;
return _isString(value) && !leaveStrings || _isArrayLike(value, 1) ? (_accumulator = accumulator).push.apply(_accumulator, toArray(value)) : accumulator.push(value);
}) || accumulator;
},
//takes any value and returns an array. If it's a string (and leaveStrings isn't true), it'll use document.querySelectorAll() and convert that to an array. It'll also accept iterables like jQuery objects.
toArray = function toArray(value, leaveStrings) {
return _isString(value) && !leaveStrings && (_coreInitted || !_wake()) ? _slice.call(_doc.querySelectorAll(value), 0) : _isArray(value) ? _flatten(value, leaveStrings) : _isArrayLike(value) ? _slice.call(value, 0) : value ? [value] : [];
},
shuffle = function shuffle(a) {
return a.sort(function () {
return .5 - Math.random();
});
},
//for distributing values across an array. Can accept a number, a function or (most commonly) a function which can contain the following properties: {base, amount, from, ease, grid, axis, length, each}. Returns a function that expects the following parameters: index, target, array. Recognizes the following
distribute = function distribute(v) {
if (_isFunction(v)) {
return v;
}
var vars = _isObject(v) ? v : {
each: v
},
//n:1 is just to indicate v was a number; we leverage that later to set v according to the length we get. If a number is passed in, we treat it like the old stagger value where 0.1, for example, would mean that things would be distributed with 0.1 between each element in the array rather than a total "amount" that's chunked out among them all.
ease = _parseEase(vars.ease),
from = vars.from || 0,
base = parseFloat(vars.base) || 0,
cache = {},
isDecimal = from > 0 && from < 1,
ratios = isNaN(from) || isDecimal,
axis = vars.axis,
ratioX = from,
ratioY = from;
if (_isString(from)) {
ratioX = ratioY = {
center: .5,
edges: .5,
end: 1
}[from] || 0;
} else if (!isDecimal && ratios) {
ratioX = from[0];
ratioY = from[1];
}
return function (i, target, a) {
var l = (a || vars).length,
distances = cache[l],
originX,
originY,
x,
y,
d,
j,
max,
min,
wrapAt;
if (!distances) {
wrapAt = vars.grid === "auto" ? 0 : (vars.grid || [1, _bigNum])[1];
if (!wrapAt) {
max = -_bigNum;
while (max < (max = a[wrapAt++].getBoundingClientRect().left) && wrapAt < l) {}
wrapAt--;
}
distances = cache[l] = [];
originX = ratios ? Math.min(wrapAt, l) * ratioX - .5 : from % wrapAt;
originY = ratios ? l * ratioY / wrapAt - .5 : from / wrapAt | 0;
max = 0;
min = _bigNum;
for (j = 0; j < l; j++) {
x = j % wrapAt - originX;
y = originY - (j / wrapAt | 0);
distances[j] = d = !axis ? _sqrt(x * x + y * y) : Math.abs(axis === "y" ? y : x);
if (d > max) {
max = d;
}
if (d < min) {
min = d;
}
}
from === "random" && shuffle(distances);
distances.max = max - min;
distances.min = min;
distances.v = l = (parseFloat(vars.amount) || parseFloat(vars.each) * (wrapAt > l ? l - 1 : !axis ? Math.max(wrapAt, l / wrapAt) : axis === "y" ? l / wrapAt : wrapAt) || 0) * (from === "edges" ? -1 : 1);
distances.b = l < 0 ? base - l : base;
distances.u = getUnit(vars.amount || vars.each) || 0; //unit
ease = ease && l < 0 ? _invertEase(ease) : ease;
}
l = (distances[i] - distances.min) / distances.max || 0;
return _round(distances.b + (ease ? ease(l) : l) * distances.v) + distances.u; //round in order to work around floating point errors
};
},
_roundModifier = function _roundModifier(v) {
//pass in 0.1 get a function that'll round to the nearest tenth, or 5 to round to the closest 5, or 0.001 to the closest 1000th, etc.
var p = v < 1 ? Math.pow(10, (v + "").length - 2) : 1; //to avoid floating point math errors (like 24 * 0.1 == 2.4000000000000004), we chop off at a specific number of decimal places (much faster than toFixed()
return function (raw) {
return ~~(Math.round(parseFloat(raw) / v) * v * p) / p + (_isNumber(raw) ? 0 : getUnit(raw));
};
},
snap = function snap(snapTo, value) {
var isArray = _isArray(snapTo),
radius,
is2D;
if (!isArray && _isObject(snapTo)) {
radius = isArray = snapTo.radius || _bigNum;
if (snapTo.values) {
snapTo = toArray(snapTo.values);
if (is2D = !_isNumber(snapTo[0])) {
radius *= radius; //performance optimization so we don't have to Math.sqrt() in the loop.
}
} else {
snapTo = _roundModifier(snapTo.increment);
}
}
return _conditionalReturn(value, !isArray ? _roundModifier(snapTo) : _isFunction(snapTo) ? function (raw) {
is2D = snapTo(raw);
return Math.abs(is2D - raw) <= radius ? is2D : raw;
} : function (raw) {
var x = parseFloat(is2D ? raw.x : raw),
y = parseFloat(is2D ? raw.y : 0),
min = _bigNum,
closest = 0,
i = snapTo.length,
dx,
dy;
while (i--) {
if (is2D) {
dx = snapTo[i].x - x;
dy = snapTo[i].y - y;
dx = dx * dx + dy * dy;
} else {
dx = Math.abs(snapTo[i] - x);
}
if (dx < min) {
min = dx;
closest = i;
}
}
closest = !radius || min <= radius ? snapTo[closest] : raw;
return is2D || closest === raw || _isNumber(raw) ? closest : closest + getUnit(raw);
});
},
random = function random(min, max, roundingIncrement, returnFunction) {
return _conditionalReturn(_isArray(min) ? !max : roundingIncrement === true ? !!(roundingIncrement = 0) : !returnFunction, function () {
return _isArray(min) ? min[~~(Math.random() * min.length)] : (roundingIncrement = roundingIncrement || 1e-5) && (returnFunction = roundingIncrement < 1 ? Math.pow(10, (roundingIncrement + "").length - 2) : 1) && ~~(Math.round((min + Math.random() * (max - min)) / roundingIncrement) * roundingIncrement * returnFunction) / returnFunction;
});
},
pipe = function pipe() {
for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) {
functions[_key] = arguments[_key];
}
return function (value) {
return functions.reduce(function (v, f) {
return f(v);
}, value);
};
},
unitize = function unitize(func, unit) {
return function (value) {
return func(parseFloat(value)) + (unit || getUnit(value));
};
},
normalize = function normalize(min, max, value) {
return mapRange(min, max, 0, 1, value);
},
_wrapArray = function _wrapArray(a, wrapper, value) {
return _conditionalReturn(value, function (index) {
return a[~~wrapper(index)];
});
},
wrap = function wrap(min, max, value) {
// NOTE: wrap() CANNOT be an arrow function! A very odd compiling bug causes problems (unrelated to GSAP).
var range = max - min;
return _isArray(min) ? _wrapArray(min, wrap(0, min.length), max) : _conditionalReturn(value, function (value) {
return (range + (value - min) % range) % range + min;
});
},
wrapYoyo = function wrapYoyo(min, max, value) {
var range = max - min,
total = range * 2;
return _isArray(min) ? _wrapArray(min, wrapYoyo(0, min.length - 1), max) : _conditionalReturn(value, function (value) {
value = (total + (value - min) % total) % total;
return min + (value > range ? total - value : value);
});
},
_replaceRandom = function _replaceRandom(value) {
//replaces all occurrences of random(...) in a string with the calculated random value. can be a range like random(-100, 100, 5) or an array like random([0, 100, 500])
var prev = 0,
s = "",
i,
nums,
end,
isArray;
while (~(i = value.indexOf("random(", prev))) {
end = value.indexOf(")", i);
isArray = value.charAt(i + 7) === "[";
nums = value.substr(i + 7, end - i - 7).match(isArray ? _delimitedValueExp : _strictNumExp);
s += value.substr(prev, i - prev) + random(isArray ? nums : +nums[0], +nums[1], +nums[2] || 1e-5);
prev = end + 1;
}
return s + value.substr(prev, value.length - prev);
},
mapRange = function mapRange(inMin, inMax, outMin, outMax, value) {
var inRange = inMax - inMin,
outRange = outMax - outMin;
return _conditionalReturn(value, function (value) {
return outMin + (value - inMin) / inRange * outRange;
});
},
interpolate = function interpolate(start, end, progress, mutate) {
var func = isNaN(start + end) ? 0 : function (p) {
return (1 - p) * start + p * end;
};
if (!func) {
var isString = _isString(start),
master = {},
p,
i,
interpolators,
l,
il;
progress === true && (mutate = 1) && (progress = null);
if (isString) {
start = {
p: start
};
end = {
p: end
};
} else if (_isArray(start) && !_isArray(end)) {
interpolators = [];
l = start.length;
il = l - 2;
for (i = 1; i < l; i++) {
interpolators.push(interpolate(start[i - 1], start[i])); //build the interpolators up front as a performance optimization so that when the function is called many times, it can just reuse them.
}
l--;
func = function func(p) {
p *= l;
var i = Math.min(il, ~~p);
return interpolators[i](p - i);
};
progress = end;
} else if (!mutate) {
start = _merge(_isArray(start) ? [] : {}, start);
}
if (!interpolators) {
for (p in end) {
_addPropTween.call(master, start, p, "get", end[p]);
}
func = function func(p) {
return _renderPropTweens(p, master) || (isString ? start.p : start);
};
}
}
return _conditionalReturn(progress, func);
},
_getLabelInDirection = function _getLabelInDirection(timeline, fromTime, backward) {
//used for nextLabel() and previousLabel()
var labels = timeline.labels,
min = _bigNum,
p,
distance,
label;
for (p in labels) {
distance = labels[p] - fromTime;
if (distance < 0 === !!backward && distance && min > (distance = Math.abs(distance))) {
label = p;
min = distance;
}
}
return label;
},
_callback = function _callback(animation, type, executeLazyFirst) {
var v = animation.vars,
callback = v[type],
params,
scope;
if (!callback) {
return;
}
params = v[type + "Params"];
scope = v.callbackScope || animation;
if (executeLazyFirst && _lazyTweens.length) {
//in case rendering caused any tweens to lazy-init, we should render them because typically when a timeline finishes, users expect things to have rendered fully. Imagine an onUpdate on a timeline that reports/checks tweened values.
_lazyRender();
}
return params ? callback.apply(scope, params) : callback.call(scope);
},
_interrupt = function _interrupt(animation) {
_removeFromParent(animation);
if (animation.progress() < 1) {
_callback(animation, "onInterrupt");
}
return animation;
},
_quickTween,
_createPlugin = function _createPlugin(config) {
config = !config.name && config["default"] || config; //UMD packaging wraps things oddly, so for example MotionPathHelper becomes {MotionPathHelper:MotionPathHelper, default:MotionPathHelper}.
var name = config.name,
isFunc = _isFunction(config),
Plugin = name && !isFunc && config.init ? function () {
this._props = [];
} : config,
//in case someone passes in an object that's not a plugin, like CustomEase
instanceDefaults = {
init: _emptyFunc,
render: _renderPropTweens,
add: _addPropTween,
kill: _killPropTweensOf,
modifier: _addPluginModifier,
rawVars: 0
},
statics = {
targetTest: 0,
get: 0,
getSetter: _getSetter,
aliases: {},
register: 0
};
_wake();
if (config !== Plugin) {
if (_plugins[name]) {
return;
}
_setDefaults(Plugin, _setDefaults(_copyExcluding(config, instanceDefaults), statics)); //static methods
_merge(Plugin.prototype, _merge(instanceDefaults, _copyExcluding(config, statics))); //instance methods
_plugins[Plugin.prop = name] = Plugin;
if (config.targetTest) {
_harnessPlugins.push(Plugin);
_reservedProps[name] = 1;
}
name = (name === "css" ? "CSS" : name.charAt(0).toUpperCase() + name.substr(1)) + "Plugin"; //for the global name. "motionPath" should become MotionPathPlugin
}
_addGlobal(name, Plugin);
if (config.register) {
config.register(gsap, Plugin, PropTween);
}
},
/*
* --------------------------------------------------------------------------------------
* COLORS
* --------------------------------------------------------------------------------------
*/
_255 = 255,
_colorLookup = {
aqua: [0, _255, _255],
lime: [0, _255, 0],
silver: [192, 192, 192],
black: [0, 0, 0],
maroon: [128, 0, 0],
teal: [0, 128, 128],
blue: [0, 0, _255],
navy: [0, 0, 128],
white: [_255, _255, _255],
olive: [128, 128, 0],
yellow: [_255, _255, 0],
orange: [_255, 165, 0],
gray: [128, 128, 128],
purple: [128, 0, 128],
green: [0, 128, 0],
red: [_255, 0, 0],
pink: [_255, 192, 203],
cyan: [0, _255, _255],
transparent: [_255, _255, _255, 0]
},
_hue = function _hue(h, m1, m2) {
h = h < 0 ? h + 1 : h > 1 ? h - 1 : h;
return (h * 6 < 1 ? m1 + (m2 - m1) * h * 6 : h < .5 ? m2 : h * 3 < 2 ? m1 + (m2 - m1) * (2 / 3 - h) * 6 : m1) * _255 + .5 | 0;
},
splitColor = function splitColor(v, toHSL) {
var a = !v ? _colorLookup.black : _isNumber(v) ? [v >> 16, v >> 8 & _255, v & _255] : 0,
r,
g,
b,
h,
s,
l,
max,
min,
d,
wasHSL;
if (!a) {
if (v.substr(-1) === ",") {
//sometimes a trailing comma is included and we should chop it off (typically from a comma-delimited list of values like a textShadow:"2px 2px 2px blue, 5px 5px 5px rgb(255,0,0)" - in this example "blue," has a trailing comma. We could strip it out inside parseComplex() but we'd need to do it to the beginning and ending values plus it wouldn't provide protection from other potential scenarios like if the user passes in a similar value.
v = v.substr(0, v.length - 1);
}
if (_colorLookup[v]) {
a = _colorLookup[v];
} else if (v.charAt(0) === "#") {
if (v.length === 4) {
//for shorthand like #9F0
r = v.charAt(1);
g = v.charAt(2);
b = v.charAt(3);
v = "#" + r + r + g + g + b + b;
}
v = parseInt(v.substr(1), 16);
a = [v >> 16, v >> 8 & _255, v & _255];
} else if (v.substr(0, 3) === "hsl") {
a = wasHSL = v.match(_strictNumExp);
if (!toHSL) {
h = +a[0] % 360 / 360;
s = +a[1] / 100;
l = +a[2] / 100;
g = l <= .5 ? l * (s + 1) : l + s - l * s;
r = l * 2 - g;
if (a.length > 3) {
a[3] *= 1; //cast as number
}
a[0] = _hue(h + 1 / 3, r, g);
a[1] = _hue(h, r, g);
a[2] = _hue(h - 1 / 3, r, g);
} else if (~v.indexOf("=")) {
//if relative values are found, just return the raw strings with the relative prefixes in place.
return v.match(_numExp);
}
} else {
a = v.match(_strictNumExp) || _colorLookup.transparent;
}
a = a.map(Number);
}
if (toHSL && !wasHSL) {
r = a[0] / _255;
g = a[1] / _255;
b = a[2] / _255;
max = Math.max(r, g, b);
min = Math.min(r, g, b);
l = (max + min) / 2;
if (max === min) {
h = s = 0;
} else {
d = max - min;
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
h = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4;
h *= 60;
}
a[0] = h + .5 | 0;
a[1] = s * 100 + .5 | 0;
a[2] = l * 100 + .5 | 0;
}
return a;
},
_formatColors = function _formatColors(s, toHSL) {
var colors = (s + "").match(_colorExp),
charIndex = 0,
parsed = "",
i,
color,
temp;
if (!colors) {
return s;
}
for (i = 0; i < colors.length; i++) {
color = colors[i];
temp = s.substr(charIndex, s.indexOf(color, charIndex) - charIndex);
charIndex += temp.length + color.length;
color = splitColor(color, toHSL);
if (color.length === 3) {
color.push(1);
}
parsed += temp + (toHSL ? "hsla(" + color[0] + "," + color[1] + "%," + color[2] + "%," + color[3] : "rgba(" + color.join(",")) + ")";
}
return parsed + s.substr(charIndex);
},
_colorExp = function () {
var s = "(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3}){1,2}\\b",
//we'll dynamically build this Regular Expression to conserve file size. After building it, it will be able to find rgb(), rgba(), # (hexadecimal), and named color values like red, blue, purple, etc.,
p;
for (p in _colorLookup) {
s += "|" + p + "\\b";
}
return new RegExp(s + ")", "gi");
}(),
_hslExp = /hsl[a]?\(/,
_colorStringFilter = function _colorStringFilter(a) {
var combined = a.join(" "),
toHSL;
_colorExp.lastIndex = 0;
if (_colorExp.test(combined)) {
toHSL = _hslExp.test(combined);
a[0] = _formatColors(a[0], toHSL);
a[1] = _formatColors(a[1], toHSL);
}
},
/*
* --------------------------------------------------------------------------------------
* TICKER
* --------------------------------------------------------------------------------------
*/
_tickerActive,
_ticker = function () {
var _getTime = Date.now,
_lagThreshold = 500,
_adjustedLag = 33,
_startTime = _getTime(),
_lastUpdate = _startTime,
_gap = 1 / 60,
_nextTime = _gap,
_listeners = [],
_id,
_req,
_raf,
_self,
_tick = function _tick(v) {
var elapsed = _getTime() - _lastUpdate,
manual = v === true,
overlap,
dispatch;
if (elapsed > _lagThreshold) {
_startTime += elapsed - _adjustedLag;
}
_lastUpdate += elapsed;
_self.time = (_lastUpdate - _startTime) / 1000;
overlap = _self.time - _nextTime;
if (overlap > 0 || manual) {
_self.frame++;
_nextTime += overlap + (overlap >= _gap ? 0.004 : _gap - overlap);
dispatch = 1;
}
if (!manual) {
//make sure the request is made before we dispatch the "tick" event so that timing is maintained. Otherwise, if processing the "tick" requires a bunch of time (like 15ms) and we're using a setTimeout() that's based on 16.7ms, it'd technically take 31.7ms between frames otherwise.
_id = _req(_tick);
}
if (dispatch) {
_listeners.forEach(function (l) {
return l(_self.time, elapsed, _self.frame, v);
});
}
};
_self = {
time: 0,
frame: 0,
tick: function tick() {
_tick(true);
},
wake: function wake() {
if (_coreReady) {
if (!_coreInitted && _windowExists()) {
_win = _coreInitted = window;
_doc = _win.document || {};
_globals.gsap = gsap;
(_win.gsapVersions || (_win.gsapVersions = [])).push(gsap.version);
_install(_installScope || _win.GreenSockGlobals || !_win.gsap && _win || {});
_raf = _win.requestAnimationFrame;
}
_id && _self.sleep();
_req = _raf || function (f) {
return setTimeout(f, (_nextTime - _self.time) * 1000 + 1 | 0);
};
_tickerActive = 1;
_tick(2);
}
},
sleep: function sleep() {
(_raf ? _win.cancelAnimationFrame : clearTimeout)(_id);
_tickerActive = 0;
_req = _emptyFunc;
},
lagSmoothing: function lagSmoothing(threshold, adjustedLag) {
_lagThreshold = threshold || 1 / _tinyNum; //zero should be interpreted as basically unlimited
_adjustedLag = Math.min(adjustedLag, _lagThreshold, 0);
},
fps: function fps(_fps) {
_gap = 1 / (_fps || 60);
_nextTime = _self.time + _gap;
},
add: function add(callback) {
_listeners.indexOf(callback) < 0 && _listeners.push(callback);
_wake();
},
remove: function remove(callback) {
var i;
~(i = _listeners.indexOf(callback)) && _listeners.splice(i, 1);
},
_listeners: _listeners
};
return _self;
}(),
_wake = function _wake() {
return !_tickerActive && _ticker.wake();
},
//also ensures the core classes are initialized.
/*
* -------------------------------------------------
* EASING
* -------------------------------------------------
*/
_easeMap = {},
_customEaseExp = /^[\d.\-M][\d.\-,\s]/,
_quotesExp = /["']/g,
_parseObjectInString = function _parseObjectInString(value) {
//takes a string like "{wiggles:10, type:anticipate})" and turns it into a real object. Notice it ends in ")" and includes the {} wrappers. This is because we only use this function for parsing ease configs and prioritized optimization rather than reusability.
var obj = {},
split = value.substr(1, value.length - 3).split(":"),
key = split[0],
i = 1,
l = split.length,
index,
val,
parsedVal;
for (; i < l; i++) {
val = split[i];
index = i !== l - 1 ? val.lastIndexOf(",") : val.length;
parsedVal = val.substr(0, index);
obj[key] = isNaN(parsedVal) ? parsedVal.replace(_quotesExp, "").trim() : +parsedVal;
key = val.substr(index + 1).trim();
}
return obj;
},
_configEaseFromString = function _configEaseFromString(name) {
//name can be a string like "elastic.out(1,0.5)", and pass in _easeMap as obj and it'll parse it out and call the actual function like _easeMap.Elastic.easeOut.config(1,0.5). It will also parse custom ease strings as long as CustomEase is loaded and registered (internally as _easeMap._CE).
var split = (name + "").split("("),
ease = _easeMap[split[0]];
return ease && split.length > 1 && ease.config ? ease.config.apply(null, ~name.indexOf("{") ? [_parseObjectInString(split[1])] : _parenthesesExp.exec(name)[1].split(",").map(_numericIfPossible)) : _easeMap._CE && _customEaseExp.test(name) ? _easeMap._CE("", name) : ease;
},
_invertEase = function _invertEase(ease) {
return function (p) {
return 1 - ease(1 - p);
};
},
// potential future feature - allow yoyoEase to be set in children and have those affected when the parent/ancestor timeline yoyos. Not sure it's worth the kb.
// _propagateYoyoEase = (timeline, isYoyo) => {
// let child = timeline._first, ease;
// while (child) {
// if (child instanceof Timeline) {
// _propagateYoyoEase(child, isYoyo);
// } else if (child.vars.yoyoEase && (!child._yoyo || !child._repeat) && child._yoyo !== isYoyo) {
// if (child.timeline) {
// _propagateYoyoEase(child.timeline, isYoyo);
// } else {
// ease = child._ease;
// child._ease = child._yEase;
// child._yEase = ease;
// child._yoyo = isYoyo;
// }
// }
// child = child._next;
// }
// },
_parseEase = function _parseEase(ease, defaultEase) {
return !ease ? defaultEase : (_isFunction(ease) ? ease : _easeMap[ease] || _configEaseFromString(ease)) || defaultEase;
},
_insertEase = function _insertEase(names, easeIn, easeOut, easeInOut) {
if (easeOut === void 0) {
easeOut = function easeOut(p) {
return 1 - easeIn(1 - p);
};
}
if (easeInOut === void 0) {
easeInOut = function easeInOut(p) {
return p < .5 ? easeIn(p * 2) / 2 : 1 - easeIn((1 - p) * 2) / 2;
};
}
var ease = {
easeIn: easeIn,
easeOut: easeOut,
easeInOut: easeInOut
},
lowercaseName;
_forEachName(names, function (name) {
_easeMap[name] = _globals[name] = ease;
_easeMap[lowercaseName = name.toLowerCase()] = easeOut;
for (var p in ease) {
_easeMap[lowercaseName + (p === "easeIn" ? ".in" : p === "easeOut" ? ".out" : ".inOut")] = _easeMap[name + "." + p] = ease[p];
}
});
return ease;
},
_easeInOutFromOut = function _easeInOutFromOut(easeOut) {
return function (p) {
return p < .5 ? (1 - easeOut(1 - p * 2)) / 2 : .5 + easeOut((p - .5) * 2) / 2;
};
},
_configElastic = function _configElastic(type, amplitude, period) {
var p1 = amplitude >= 1 ? amplitude : 1,
//note: if amplitude is < 1, we simply adjust the period for a more natural feel. Otherwise the math doesn't work right and the curve starts at 1.
p2 = (period || (type ? .3 : .45)) / (amplitude < 1 ? amplitude : 1),
p3 = p2 / _2PI * (Math.asin(1 / p1) || 0),
easeOut = function easeOut(p) {
return p === 1 ? 1 : p1 * Math.pow(2, -10 * p) * _sin((p - p3) * p2) + 1;
},
ease = type === "out" ? easeOut : type === "in" ? function (p) {
return 1 - easeOut(1 - p);
} : _easeInOutFromOut(easeOut);
p2 = _2PI / p2; //precalculate to optimize
ease.config = function (amplitude, period) {
return _configElastic(type, amplitude, period);
};
return ease;
},
_configBack = function _configBack(type, overshoot) {
if (overshoot === void 0) {
overshoot = 1.70158;
}
var easeOut = function easeOut(p) {
return --p * p * ((overshoot + 1) * p + overshoot) + 1;
},
ease = type === "out" ? easeOut : type === "in" ? function (p) {
return 1 - easeOut(1 - p);
} : _easeInOutFromOut(easeOut);
ease.config = function (overshoot) {
return _configBack(type, overshoot);
};
return ease;
}; // a cheaper (kb and cpu) but more mild way to get a parameterized weighted ease by feeding in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.
// _weightedEase = ratio => {
// let y = 0.5 + ratio / 2;
// return p => (2 * (1 - p) * p * y + p * p);
// },
// a stronger (but more expensive kb/cpu) parameterized weighted ease that lets you feed in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.
// _weightedEaseStrong = ratio => {
// ratio = .5 + ratio / 2;
// let o = 1 / 3 * (ratio < .5 ? ratio : 1 - ratio),
// b = ratio - o,
// c = ratio + o;
// return p => p === 1 ? p : 3 * b * (1 - p) * (1 - p) * p + 3 * c * (1 - p) * p * p + p * p * p;
// };
_forEachName("Linear,Quad,Cubic,Quart,Quint,Strong", function (name, i) {
var power = i < 5 ? i + 1 : i;
_insertEase(name + ",Power" + (power - 1), i ? function (p) {
return Math.pow(p, power);
} : function (p) {
return p;
}, function (p) {
return 1 - Math.pow(1 - p, power);
}, function (p) {
return p < .5 ? Math.pow(p * 2, power) / 2 : 1 - Math.pow((1 - p) * 2, power) / 2;
});
});
_easeMap.Linear.easeNone = _easeMap.none = _easeMap.Linear.easeIn;
_insertEase("Elastic", _configElastic("in"), _configElastic("out"), _configElastic());
(function (n, c) {
var n1 = 1 / c,
n2 = 2 * n1,
n3 = 2.5 * n1,
easeOut = function easeOut(p) {
return p < n1 ? n * p * p : p < n2 ? n * Math.pow(p - 1.5 / c, 2) + .75 : p < n3 ? n * (p -= 2.25 / c) * p + .9375 : n * Math.pow(p - 2.625 / c, 2) + .984375;
};
_insertEase("Bounce", function (p) {
return 1 - easeOut(1 - p);
}, easeOut);
})(7.5625, 2.75);
_insertEase("Expo", function (p) {
return p ? Math.pow(2, 10 * (p - 1)) : 0;
});
_insertEase("Circ", function (p) {
return -(_sqrt(1 - p * p) - 1);
});
_insertEase("Sine", function (p) {
return -_cos(p * _HALF_PI) + 1;
});
_insertEase("Back", _configBack("in"), _configBack("out"), _configBack());
_easeMap.SteppedEase = _easeMap.steps = _globals.SteppedEase = {
config: function config(steps, immediateStart) {
if (steps === void 0) {
steps = 1;
}
var p1 = 1 / steps,
p2 = steps + (immediateStart ? 0 : 1),
p3 = immediateStart ? 1 : 0,
max = 1 - _tinyNum;
return function (p) {
return ((p2 * _clamp(0, max, p) | 0) + p3) * p1;
};
}
};
_defaults.ease = _easeMap["quad.out"];
/*
* --------------------------------------------------------------------------------------
* CACHE
* --------------------------------------------------------------------------------------
*/
var GSCache = function GSCache(target, harness) {
this.id = _gsID++;
target._gsap = this;
this.target = target;
this.harness = harness;
this.get = harness ? harness.get : _getProperty;
this.set = harness ? harness.getSetter : _getSetter;
};
/*
* --------------------------------------------------------------------------------------
* ANIMATION
* --------------------------------------------------------------------------------------
*/
var Animation =
/*#__PURE__*/
function () {
function Animation(vars, time) {
var parent = vars.parent || _globalTimeline;
this.vars = vars;
this._dur = this._tDur = +vars.duration || 0;
this._delay = +vars.delay || 0;
if (this._repeat = vars.repeat || 0) {
this._rDelay = vars.repeatDelay || 0;
this._yoyo = !!vars.yoyo || !!vars.yoyoEase;
_onUpdateTotalDuration(this);
}
this._ts = 1;
this.data = vars.data;
if (!_tickerActive) {
_ticker.wake();
}
if (parent) {
_addToTimeline(parent, this, time || time === 0 ? time : parent._time);
}
if (vars.reversed) {
this.reversed(true);
}
if (vars.paused) {
this.paused(true);
}
}
var _proto = Animation.prototype;
_proto.delay = function delay(value) {
if (value || value === 0) {
this._delay = value;
return this;
}
return this._delay;
};
_proto.duration = function duration(value) {
var isSetter = arguments.length,
repeat = this._repeat,
repeatCycles = repeat > 0 ? repeat * ((isSetter ? value : this._dur) + this._rDelay) : 0;
return isSetter ? this.totalDuration(repeat < 0 ? value : value + repeatCycles) : this.totalDuration() && this._dur;
};
_proto.totalDuration = function totalDuration(value) {
if (!arguments.length) {
return this._tDur;
}
var repeat = this._repeat,
isInfinite = (value || this._rDelay) && repeat < 0;
this._tDur = isInfinite ? 1e12 : value;
this._dur = isInfinite ? value : (value - repeat * this._rDelay) / (repeat + 1);
this._dirty = 0;
_uncache(this.parent);
return this;
};
_proto.totalTime = function totalTime(_totalTime, suppressEvents) {
_wake();
if (!arguments.length) {
return this._tTime;
}
var parent = this.parent || this._dp,
start;
if (parent && parent.smoothChildTiming && this._ts) {
start = this._start; // if (!parent._dp && parent._time === parent._dur) { // if a root timeline completes...and then a while later one of its children resumes, we must shoot the playhead forward to where it should be raw-wise, otherwise the child will jump to the end. Down side: this assumes it's using the _ticker.time as a reference.
// parent._time = _ticker.time - parent._start;
// }
this._start = parent._time - (this._ts > 0 ? _totalTime / this._ts : ((this._dirty ? this.totalDuration() : this._tDur) - _totalTime) / -this._ts);
this._end += this._start - start;
if (!parent._dirty) {
//for performance improvement. If the parent's cache is already dirty, it already took care of marking the ancestors as dirty too, so skip the function call here.
_uncache(parent);
} //in case any of the ancestor timelines had completed but should now be enabled, we should reset their totalTime() which will also ensure that they're lined up properly and enabled. Skip for animations that are on the root (wasteful). Example: a TimelineLite.exportRoot() is performed when there's a paused tween on the root, the export will not complete until that tween is unpaused, but imagine a child gets restarted later, after all [unpaused] tweens have completed. The start of that child would get pushed out, but one of the ancestors may have completed.
while (parent.parent) {
if (parent.parent._time !== parent._start + (parent._ts > 0 ? parent._tTime / parent._ts : (parent.totalDuration() - parent._tTime) / -parent._ts)) {
parent.totalTime(parent._tTime, true);
}
parent = parent.parent;
}
if (!this.parent && parent.autoRemoveChildren) {
//if the animation doesn't have a parent, put it back into its last parent (recorded as _dp for exactly cases like this). Limit to parents with autoRemoveChildren (like globalTimeline) so that if the user manually removes an animation from a timeline and then alters its playhead, it doesn't get added back in.
_addToTimeline(parent, this, this._start - this._delay);
}
}
if (this._tTime !== _totalTime || !this._dur && !suppressEvents) {
this._ts || (this._pTime = _totalTime); // otherwise, if an animation is paused, then the playhead is moved back to zero, then resumed, it'd revert back to the original time at the pause
_lazySafeRender(this, _totalTime, suppressEvents);
}
return this;
};
_proto.time = function time(value, suppressEvents) {
return arguments.length ? this.totalTime(Math.min(this.totalDuration(), value + _elapsedCycleDuration(this)) % this._dur || (value ? this._dur : 0), suppressEvents) : this._time; // note: if the modulus results in 0, the playhead could be exactly at the end or the beginning, and we always defer to the END with a non-zero value, otherwise if you set the time() to the very end (duration()), it would render at the START!
};
_proto.totalProgress = function totalProgress(value, suppressEvents) {
return arguments.length ? this.totalTime(this.totalDuration() * value, suppressEvents) : this._tTime / this.totalDuration();
};
_proto.progress = function progress(value, suppressEvents) {
return arguments.length ? this.totalTime(this.duration() * (this._yoyo && !(this.iteration() & 1) ? 1 - value : value) + _elapsedCycleDuration(this), suppressEvents) : this.duration() ? this._time / this._dur : this.ratio;
};
_proto.iteration = function iteration(value, suppressEvents) {
var cycleDuration = this.duration() + this._rDelay;
return arguments.length ? this.totalTime(this._time + (value - 1) * cycleDuration, suppressEvents) : this._repeat ? _animationCycle(this._tTime, cycleDuration) + 1 : 1;
};
_proto.timeScale = function timeScale(value) {
if (!arguments.length) {
return this._ts || this._pauseTS || 0;
}
if (this._pauseTS !== null) {
this._pauseTS = value;
return this;
}
var tTime = this.parent && this._ts ? _parentToChildTotalTime(this.parent._time, this) : this._tTime; // make sure to do the parentToChildTotalTime() BEFORE setting the new _ts because the old one must be used in that calculation.
this._ts = value; // prioritize rendering where the parent's playhead lines up instead of this._tTime because there could be a tween that's animating another tween's timeScale in the same rendering loop (same parent), thus if the timeScale tween renders first, it would alter _start BEFORE _tTime was set on that tick (in the rendering loop), effectively freezing it until the timeScale tween finishes.
return _recacheAncestors(this.totalTime(tTime, true));
};
_proto.paused = function paused(value) {
var isPaused = !this._ts;
if (!arguments.length) {
return isPaused;
}
if (isPaused !== value) {
if (value) {
this._pauseTS = this._ts;
this._pTime = this._tTime || Math.max(-this._delay, this.rawTime()); // if the pause occurs during the delay phase, make sure that's factored in when resuming.
this._ts = this._act = 0; //we use a timeScale of 0 to indicate a paused state, but we record the old "real" timeScale as _pauseTS so we can revert when unpaused.
} else {
this._ts = this._pauseTS || 1;
this._pauseTS = null;
value = this._tTime || this._pTime; //only defer to _pTime (pauseTime) if tTime is zero. Remember, someone could pause() an animation, then scrub the playhead and resume().
if (this.progress() === 1) {
// edge case: animation.progress(1).pause().play() wouldn't render again because the playhead is already at the end, but the call to totalTime() below will add it back to its parent...and not remove it again (since removing only happens upon rendering at a new time). Offsetting the _tTime slightly is done simply to cause the final render in totalTime() that'll pop it off its timeline (if autoRemoveChildren is true, of course).
this._tTime -= _tinyNum;
}
this.totalTime(value, true);
}
}
return this;
};
_proto.startTime = function startTime(value) {
if (arguments.length) {
if (this.parent && this.parent._sort) {
_addToTimeline(this.parent, this, value - this._delay);
}
return this;
}
return this._start;
};
_proto.endTime = function endTime(includeRepeats) {
return this._start + (_isNotFalse(includeRepeats) ? this.totalDuration() : this.duration()) / Math.abs(this._ts);
};
_proto.rawTime = function rawTime(wrapRepeats) {
var parent = this.parent || this._dp; // _dp = detatched parent
return !parent ? this._tTime : wrapRepeats && (!this._ts || this._repeat && this._time && this.totalProgress() < 1) ? this._tTime % (this._dur + this._rDelay) : !this._ts ? this._tTime : _parentToChildTotalTime(parent.rawTime(wrapRepeats), this);
} // globalTime(rawTime) {
// let animation = this,
// time = arguments.length ? rawTime : animation.rawTime();
// while (animation) {
// time = animation._start + time / (animation._ts || 1);
// animation = animation.parent;
// }
// return time;
// }
;
_proto.repeat = function repeat(value) {
if (arguments.length) {
this._repeat = value;
return _onUpdateTotalDuration(this);
}
return this._repeat;
};
_proto.repeatDelay = function repeatDelay(value) {
if (arguments.length) {
this._rDelay = value;
return _onUpdateTotalDuration(this);
}
return this._rDelay;
};
_proto.yoyo = function yoyo(value) {
if (arguments.length) {
this._yoyo = value;
return this;
}
return this._yoyo;
};
_proto.seek = function seek(position, suppressEvents) {
return this.totalTime(_parsePosition(this, position), _isNotFalse(suppressEvents));
};
_proto.restart = function restart(includeDelay, suppressEvents) {
return this.play().totalTime(includeDelay ? -this._delay : 0, _isNotFalse(suppressEvents));
};
_proto.play = function play(from, suppressEvents) {
if (from != null) {
this.seek(from, suppressEvents);
}
return this.reversed(false).paused(false);
};
_proto.reverse = function reverse(from, suppressEvents) {
if (from != null) {
this.seek(from || this.totalDuration(), suppressEvents);
}
return this.reversed(true).paused(false);
};
_proto.pause = function pause(atTime, suppressEvents) {
if (atTime != null) {
this.seek(atTime, suppressEvents);
}
return this.paused(true);
};
_proto.resume = function resume() {
return this.paused(false);
};
_proto.reversed = function reversed(value) {
var ts = this._ts || this._pauseTS || 0;
if (arguments.length) {
if (value !== this.reversed()) {
this[this._pauseTS === null ? "_ts" : "_pauseTS"] = Math.abs(ts) * (value ? -1 : 1);
this.totalTime(this._tTime, true);
}
return this;
}
return ts < 0;
};
_proto.invalidate = function invalidate() {
this._initted = 0;
return this;
};
_proto.isActive = function isActive(hasStarted) {
var parent = this.parent || this._dp,
start = this._start,
rawTime;
return !!(!parent || this._ts && (this._initted || !hasStarted) && parent.isActive(hasStarted) && (rawTime = parent.rawTime(true)) >= start && rawTime < this.endTime(true) - _tinyNum);
};
_proto.eventCallback = function eventCallback(type, callback, params) {
var vars = this.vars;
if (arguments.length > 1) {
if (!callback) {
delete vars[type];
} else {
vars[type] = callback;
if (params) {
vars[type + "Params"] = params;
}
if (type === "onUpdate") {
this._onUpdate = callback;
}
}
return this;
}
return vars[type];
};
_proto.then = function then(onFulfilled) {
var self = this;
return new Promise(function (resolve) {
var f = _isFunction(onFulfilled) ? onFulfilled : _passThrough,
_resolve = function _resolve() {
var _then = self.then;
self.then = null; // temporarily null the then() method to avoid an infinite loop (see https://github.com/greensock/GSAP/issues/322)
f = f(self);
if (f) {
if (f.then || f === self) {
self.then = _then;
} else if (!_isFunction(f)) {
f = _passThrough;
}
}
resolve(f);
self.then = _then;
};
if (self._initted && self.totalProgress() === 1 && self._ts >= 0 || !self._tTime && self._ts < 0) {
_resolve();
} else {
self._prom = _resolve;
}
});
};
_proto.kill = function kill() {
_interrupt(this);
};
return Animation;
}();
_setDefaults(Animation.prototype, {
_time: 0,
_start: 0,
_end: 0,
_tTime: 0,
_tDur: 0,
_dirty: 0,
_repeat: 0,
_yoyo: false,
parent: 0,
_initted: false,
_rDelay: 0,
_ts: 1,
_dp: 0,
ratio: 0,
_zTime: -_tinyNum,
_prom: 0,
_pauseTS: null
});
/*
* -------------------------------------------------
* TIMELINE
* -------------------------------------------------
*/
var Timeline =
/*#__PURE__*/
function (_Animation) {
_inheritsLoose(Timeline, _Animation);
function Timeline(vars, time) {
var _this;
if (vars === void 0) {
vars = {};
}
_this = _Animation.call(this, vars, time) || this;
_this.labels = {};
_this.smoothChildTiming = _isNotFalse(vars.smoothChildTiming);
_this.autoRemoveChildren = !!vars.autoRemoveChildren;
_this._sort = _isNotFalse(vars.sortChildren);
return _this;
}
var _proto2 = Timeline.prototype;
_proto2.to = function to(targets, vars, position) {
new Tween(targets, _parseVars(arguments, 0, this), _parsePosition(this, _isNumber(vars) ? arguments[3] : position));
return this;
};
_proto2.from = function from(targets, vars, position) {
new Tween(targets, _parseVars(arguments, 1, this), _parsePosition(this, _isNumber(vars) ? arguments[3] : position));
return this;
};
_proto2.fromTo = function fromTo(targets, fromVars, toVars, position) {
new Tween(targets, _parseVars(arguments, 2, this), _parsePosition(this, _isNumber(fromVars) ? arguments[4] : position));
return this;
};
_proto2.set = function set(targets, vars, position) {
vars.duration = 0;
vars.parent = this;
if (!vars.repeatDelay) {
vars.repeat = 0;
}
vars.immediateRender = !!vars.immediateRender;
new Tween(targets, vars, _parsePosition(this, position));
return this;
};
_proto2.call = function call(callback, params, position) {
return _addToTimeline(this, Tween.delayedCall(0, callback, params), _parsePosition(this, position));
} //ONLY for backward compatibility! Maybe delete?
;
_proto2.staggerTo = function staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {
vars.duration = duration;
vars.stagger = vars.stagger || stagger;
vars.onComplete = onCompleteAll;
vars.onCompleteParams = onCompleteAllParams;
vars.parent = this;
new Tween(targets, vars, _parsePosition(this, position));
return this;
};
_proto2.staggerFrom = function staggerFrom(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {
vars.runBackwards = 1;
vars.immediateRender = _isNotFalse(vars.immediateRender);
return this.staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams);
};
_proto2.staggerFromTo = function staggerFromTo(targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams) {
toVars.startAt = fromVars;
toVars.immediateRender = _isNotFalse(toVars.immediateRender);
return this.staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams);
};
_proto2.render = function render(totalTime, suppressEvents, force) {
var prevTime = this._time,
tDur = this._dirty ? this.totalDuration() : this._tDur,
dur = this._dur,
tTime = totalTime > tDur - _tinyNum && totalTime >= 0 && this !== _globalTimeline ? tDur : totalTime < _tinyNum ? 0 : totalTime,
crossingStart = this._zTime < 0 !== totalTime < 0 && (this._initted || !dur),
time,
child,
next,
iteration,
cycleDuration,
prevPaused,
pauseTween,
timeScale,
prevStart,
prevIteration,
yoyo,
isYoyo;
if (tTime !== this._tTime || force || crossingStart) {
if (crossingStart) {
if (!dur) {
prevTime = this._zTime;
}
if (totalTime || !suppressEvents) {
//when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.
this._zTime = totalTime;
}
}
time = tTime;
prevStart = this._start;
timeScale = this._ts;
prevPaused = timeScale === 0;
if (prevTime !== this._time && dur) {
//if totalDuration() finds a child with a negative startTime and smoothChildTiming is true, things get shifted around internally so we need to adjust the time accordingly. For example, if a tween starts at -30 we must shift EVERYTHING forward 30 seconds and move this timeline's startTime backward by 30 seconds so that things align with the playhead (no jump).
time += this._time - prevTime;
}
if (this._repeat) {
//adjust the time for repeats and yoyos
yoyo = this._yoyo;
cycleDuration = dur + this._rDelay;
time = _round(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)
if (time > dur || tDur === tTime) {
time = dur;
}
iteration = ~~(tTime / cycleDuration);
if (iteration && iteration === tTime / cycleDuration) {
time = dur;
iteration--;
}
prevIteration = _animationCycle(this._tTime, cycleDuration);
if (yoyo && iteration & 1) {
time = dur - time;
isYoyo = 1;
}
/*
make sure children at the end/beginning of the timeline are rendered properly. If, for example,
a 3-second long timeline rendered at 2.9 seconds previously, and now renders at 3.2 seconds (which
would get translated to 2.8 seconds if the timeline yoyos or 0.2 seconds if it just repeats), there
could be a callback or a short tween that's at 2.95 or 3 seconds in which wouldn't render. So
we need to push the timeline to the end (and/or beginning depending on its yoyo value). Also we must
ensure that zero-duration tweens at the very beginning or end of the Timeline work.
*/
if (iteration !== prevIteration && !this._lock) {
var rewinding = yoyo && prevIteration & 1,
doesWrap = rewinding === (yoyo && iteration & 1);
if (iteration < prevIteration) {
rewinding = !rewinding;
}
prevTime = rewinding ? 0 : dur;
this._lock = 1;
this.render(prevTime, suppressEvents, !dur)._lock = 0;
if (!suppressEvents && this.parent) {
_callback(this, "onRepeat");
}
this.vars.repeatRefresh && !isYoyo && this.getChildren().forEach(function (child) {
return child.invalidate();
});
if (prevTime !== this._time || prevPaused !== !this._ts) {
return this;
}
if (doesWrap) {
this._lock = 2;
prevTime = rewinding ? dur + 0.0001 : -0.0001;
this.render(prevTime, true);
}
this._lock = 0;
if (!this._ts && !prevPaused) {
return this;
} //in order for yoyoEase to work properly when there's a stagger, we must swap out the ease in each sub-tween.
//_propagateYoyoEase(this, isYoyo);
}
}
if (this._hasPause && !this._forcing && this._lock < 2) {
pauseTween = _findNextPauseTween(this, _round(prevTime), _round(time));
if (pauseTween) {
tTime -= time - (time = pauseTween._start);
}
}
this._tTime = tTime;
this._time = time;
this._act = !timeScale; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.
if (!this._initted) {
this._onUpdate = this.vars.onUpdate;
this._initted = 1;
}
if (!prevTime && time && !suppressEvents) {
_callback(this, "onStart");
}
if (time >= prevTime && totalTime >= 0) {
child = this._first;
while (child) {
next = child._next;
if ((child._act || time >= child._start) && child._ts && pauseTween !== child) {
if (child.parent !== this) {
// an extreme edge case - the child's render could do something like kill() the "next" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.
return this.render(totalTime, suppressEvents, force);
}
child.render(child._ts > 0 ? (time - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (time - child._start) * child._ts, suppressEvents, force);
if (time !== this._time || !this._ts && !prevPaused) {
//in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete
pauseTween = 0;
break;
}
}
child = next;
}
} else {
child = this._last;
var adjustedTime = totalTime < 0 ? totalTime : time; //when the playhead goes backward beyond the start of this timeline, we must pass that information down to the child animations so that zero-duration tweens know whether to render their starting or ending values.
while (child) {
next = child._prev;
if ((child._act || adjustedTime <= child._end) && child._ts && pauseTween !== child) {
if (child.parent !== this) {
// an extreme edge case - the child's render could do something like kill() the "next" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.
return this.render(totalTime, suppressEvents, force);
}
child.render(child._ts > 0 ? (adjustedTime - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (adjustedTime - child._start) * child._ts, suppressEvents, force);
if (time !== this._time || !this._ts && !prevPaused) {
//in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete
pauseTween = 0;
break;
}
}
child = next;
}
}
if (pauseTween && !suppressEvents) {
this.pause();
pauseTween.render(time >= prevTime ? 0 : -_tinyNum)._zTime = time >= prevTime ? 1 : -1;
if (this._ts) {
//the callback resumed playback! So since we may have held back the playhead due to where the pause is positioned, go ahead and jump to where it's SUPPOSED to be (if no pause happened).
this._start = prevStart; //if the pause was at an earlier time and the user resumed in the callback, it could reposition the timeline (changing its startTime), throwing things off slightly, so we make sure the _start doesn't shift.
return this.render(totalTime, suppressEvents, force);
}
}
if (this._onUpdate && !suppressEvents) {
_callback(this, "onUpdate", true);
}
if (tTime === tDur && tDur >= this.totalDuration() || !tTime && this._ts < 0) if (prevStart === this._start || Math.abs(timeScale) !== Math.abs(this._ts)) {
(totalTime || !dur) && (totalTime && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.
if (!suppressEvents && !(totalTime < 0 && !prevTime)) {
_callback(this, tTime === tDur ? "onComplete" : "onReverseComplete", true);
this._prom && this._prom();
}
}
}
return this;
};
_proto2.add = function add(child, position) {
var _this2 = this;
if (!_isNumber(position)) {
position = _parsePosition(this, position);
}
if (!(child instanceof Animation)) {
if (_isArray(child)) {
child.forEach(function (obj) {
return _this2.add(obj, position);
});
return _uncache(this);
}
if (_isString(child)) {
return this.addLabel(child, position);
}
if (_isFunction(child)) {
child = Tween.delayedCall(0, child);
} else {
return this;
}
}
return this !== child ? _addToTimeline(this, child, position) : this; //don't allow a timeline to be added to itself as a child!
} // buildFrom(position, absolute) {
// this._build = (position === ">>" || position === "auto") ? position : (position === "<<") ? 0 : _parsePosition(this, position, !absolute);
// return this;
// }
;
_proto2.getChildren = function getChildren(nested, tweens, timelines, ignoreBeforeTime) {
if (nested === void 0) {
nested = true;
}
if (tweens === void 0) {
tweens = true;
}
if (timelines === void 0) {
timelines = true;
}
if (ignoreBeforeTime === void 0) {
ignoreBeforeTime = -_bigNum;
}
var a = [],
child = this._first;
while (child) {
if (child._start >= ignoreBeforeTime) {
if (child instanceof Tween) {
if (tweens) {
a.push(child);
}
} else {
if (timelines) {
a.push(child);
}
if (nested) {
a.push.apply(a, child.getChildren(true, tweens, timelines));
}
}
}
child = child._next;
}
return a;
};
_proto2.getById = function getById(id) {
var animations = this.getChildren(1, 1, 1),
i = animations.length;
while (i--) {
if (animations[i].vars.id === id) {
return animations[i];
}
}
};
_proto2.remove = function remove(child) {
if (_isString(child)) {
return this.removeLabel(child);
}
if (_isFunction(child)) {
return this.killTweensOf(child);
}
_removeLinkedListItem(this, child);
if (child === this._recent) {
this._recent = this._last;
}
return _uncache(this);
};
_proto2.totalTime = function totalTime(_totalTime2, suppressEvents) {
if (!arguments.length) {
return this._tTime;
}
this._forcing = 1;
if (!this.parent && !this._dp && this._ts) {
//special case for the global timeline (or any other that has no parent or detached parent).
this._start = _ticker.time - (this._ts > 0 ? _totalTime2 / this._ts : (this.totalDuration() - _totalTime2) / -this._ts);
}
_Animation.prototype.totalTime.call(this, _totalTime2, suppressEvents);
this._forcing = 0;
return this;
};
_proto2.addLabel = function addLabel(label, position) {
this.labels[label] = _parsePosition(this, position);
return this;
};
_proto2.removeLabel = function removeLabel(label) {
delete this.labels[label];
return this;
};
_proto2.addPause = function addPause(position, callback, params) {
var t = Tween.delayedCall(0, callback || _emptyFunc, params);
t.data = "isPause";
this._hasPause = 1;
return _addToTimeline(this, t, _parsePosition(this, position));
};
_proto2.removePause = function removePause(position) {
var child = this._first;
position = _parsePosition(this, position);
while (child) {
if (child._start === position && child.data === "isPause") {
_removeFromParent(child);
}
child = child._next;
}
};
_proto2.killTweensOf = function killTweensOf(targets, props, onlyActive) {
var tweens = this.getTweensOf(targets, onlyActive),
i = tweens.length;
while (i--) {
_overwritingTween !== tweens[i] && tweens[i].kill(targets, props);
}
return this;
};
_proto2.getTweensOf = function getTweensOf(targets, onlyActive) {
var a = [],
parsedTargets = toArray(targets),
child = this._first,
children;
while (child) {
if (child instanceof Tween) {
if (_arrayContainsAny(child._targets, parsedTargets) && (!onlyActive || child.isActive(onlyActive === "started"))) {
a.push(child);
}
} else if ((children = child.getTweensOf(parsedTargets, onlyActive)).length) {
a.push.apply(a, children);
}
child = child._next;
}
return a;
};
_proto2.tweenTo = function tweenTo(position, vars) {
var tl = this,
endTime = _parsePosition(tl, position),
startAt = vars && vars.startAt,
tween = Tween.to(tl, _setDefaults({
ease: "none",
lazy: false,
time: endTime,
duration: Math.abs(endTime - (startAt && "time" in startAt ? startAt.time : tl._time)) / tl.timeScale() || _tinyNum,
onStart: function onStart() {
tl.pause();
var duration = Math.abs(endTime - tl._time) / tl.timeScale();
if (tween._dur !== duration) {
tween._dur = duration;
tween.render(tween._time, true, true);
}
if (vars && vars.onStart) {
//in case the user had an onStart in the vars - we don't want to overwrite it.
vars.onStart.apply(tween, vars.onStartParams || []);
}
}
}, vars));
return tween;
};
_proto2.tweenFromTo = function tweenFromTo(fromPosition, toPosition, vars) {
return this.tweenTo(toPosition, _setDefaults({
startAt: {
time: _parsePosition(this, fromPosition)
}
}, vars));
};
_proto2.recent = function recent() {
return this._recent;
};
_proto2.nextLabel = function nextLabel(afterTime) {
if (afterTime === void 0) {
afterTime = this._time;
}
return _getLabelInDirection(this, _parsePosition(this, afterTime));
};
_proto2.previousLabel = function previousLabel(beforeTime) {
if (beforeTime === void 0) {
beforeTime = this._time;
}
return _getLabelInDirection(this, _parsePosition(this, beforeTime), 1);
};
_proto2.currentLabel = function currentLabel(value) {
return arguments.length ? this.seek(value, true) : this.previousLabel(this._time + _tinyNum);
};
_proto2.shiftChildren = function shiftChildren(amount, adjustLabels, ignoreBeforeTime) {
if (ignoreBeforeTime === void 0) {
ignoreBeforeTime = 0;
}
var child = this._first,
labels = this.labels,
p;
while (child) {
if (child._start >= ignoreBeforeTime) {
child._start += amount;
}
child = child._next;
}
if (adjustLabels) {
for (p in labels) {
if (labels[p] >= ignoreBeforeTime) {
labels[p] += amount;
}
}
}
return _uncache(this);
};
_proto2.invalidate = function invalidate() {
var child = this._first;
this._lock = 0;
while (child) {
child.invalidate();
child = child._next;
}
return _Animation.prototype.invalidate.call(this);
};
_proto2.clear = function clear(includeLabels) {
if (includeLabels === void 0) {
includeLabels = true;
}
var child = this._first,
next;
while (child) {
next = child._next;
this.remove(child);
child = next;
}
this._time = this._tTime = 0;
if (includeLabels) {
this.labels = {};
}
return _uncache(this);
};
_proto2.totalDuration = function totalDuration(value) {
var max = 0,
self = this,
child = self._last,
prevStart = _bigNum,
repeat = self._repeat,
repeatCycles = repeat * self._rDelay || 0,
isInfinite = repeat < 0,
prev,
end;
if (!arguments.length) {
if (self._dirty) {
while (child) {
prev = child._prev; //record it here in case the tween changes position in the sequence...
if (child._dirty) {
child.totalDuration(); //could change the tween._startTime, so make sure the animation's cache is clean before analyzing it.
}
if (child._start > prevStart && self._sort && child._ts && !self._lock) {
//in case one of the tweens shifted out of order, it needs to be re-inserted into the correct position in the sequence
self._lock = 1; //prevent endless recursive calls - there are methods that get triggered that check duration/totalDuration when we add().
_addToTimeline(self, child, child._start - child._delay);
self._lock = 0;
} else {
prevStart = child._start;
}
if (child._start < 0 && child._ts) {
//children aren't allowed to have negative startTimes unless smoothChildTiming is true, so adjust here if one is found.
max -= child._start;
if (!self.parent && !self._dp || self.parent && self.parent.smoothChildTiming) {
self._start += child._start / self._ts;
self._time -= child._start;
self._tTime -= child._start;
}
self.shiftChildren(-child._start, false, -1e20);
prevStart = 0;
}
end = child._end = child._start + child._tDur / Math.abs(child._ts || child._pauseTS || _tinyNum);
if (end > max && child._ts) {
max = _round(end);
}
child = prev;
}
self._dur = self === _globalTimeline && self._time > max ? self._time : Math.min(_bigNum, max);
self._tDur = isInfinite && (self._dur || repeatCycles) ? 1e12 : Math.min(_bigNum, max * (repeat + 1) + repeatCycles);
self._end = self._start + (self._tDur / Math.abs(self._ts || self._pauseTS || _tinyNum) || 0);
self._dirty = 0;
}
return self._tDur;
}
return isInfinite ? self : self.timeScale(self.totalDuration() / value);
};
Timeline.updateRoot = function updateRoot(time) {
if (_globalTimeline._ts) {
_lazySafeRender(_globalTimeline, _parentToChildTotalTime(time, _globalTimeline));
_lastRenderedFrame = _ticker.frame;
}
if (_ticker.frame >= _nextGCFrame) {
_nextGCFrame += _config.autoSleep || 120;
var child = _globalTimeline._first;
if (!child || !child._ts) if (_config.autoSleep && _ticker._listeners.length < 2) {
while (child && !child._ts) {
child = child._next;
}
if (!child) {
_ticker.sleep();
}
}
}
};
return Timeline;
}(Animation);
_setDefaults(Timeline.prototype, {
_lock: 0,
_hasPause: 0,
_forcing: 0
});
var _addComplexStringPropTween = function _addComplexStringPropTween(target, prop, start, end, setter, stringFilter, funcParam) {
//note: we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus "this" would refer to the plugin.
var pt = new PropTween(this._pt, target, prop, 0, 1, _renderComplexString, null, setter),
index = 0,
matchIndex = 0,
result,
startNums,
color,
endNum,
chunk,
startNum,
hasRandom,
a;
pt.b = start;
pt.e = end;
start += ""; //ensure values are strings
end += "";
if (hasRandom = ~end.indexOf("random(")) {
end = _replaceRandom(end);
}
if (stringFilter) {
a = [start, end];
stringFilter(a, target, prop); //pass an array with the starting and ending values and let the filter do whatever it needs to the values.
start = a[0];
end = a[1];
}
startNums = start.match(_complexStringNumExp) || [];
while (result = _complexStringNumExp.exec(end)) {
endNum = result[0];
chunk = end.substring(index, result.index);
if (color) {
color = (color + 1) % 5;
} else if (chunk.substr(-5) === "rgba(") {
color = 1;
}
if (endNum !== startNums[matchIndex++]) {
startNum = parseFloat(startNums[matchIndex - 1]) || 0; //these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.
pt._pt = {
_next: pt._pt,
p: chunk || matchIndex === 1 ? chunk : ",",
//note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.
s: startNum,
c: endNum.charAt(1) === "=" ? parseFloat(endNum.substr(2)) * (endNum.charAt(0) === "-" ? -1 : 1) : parseFloat(endNum) - startNum,
m: color && color < 4 ? Math.round : 0
};
index = _complexStringNumExp.lastIndex;
}
}
pt.c = index < end.length ? end.substring(index, end.length) : ""; //we use the "c" of the PropTween to store the final part of the string (after the last number)
pt.fp = funcParam;
if (_relExp.test(end) || hasRandom) {
pt.e = 0; //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).
}
this._pt = pt; //start the linked list with this new PropTween. Remember, we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus "this" would refer to the plugin.
return pt;
},
_addPropTween = function _addPropTween(target, prop, start, end, index, targets, modifier, stringFilter, funcParam) {
if (_isFunction(end)) {
end = end(index || 0, target, targets);
}
var currentValue = target[prop],
parsedStart = start !== "get" ? start : !_isFunction(currentValue) ? currentValue : funcParam ? target[prop.indexOf("set") || !_isFunction(target["get" + prop.substr(3)]) ? prop : "get" + prop.substr(3)](funcParam) : target[prop](),
setter = !_isFunction(currentValue) ? _setterPlain : funcParam ? _setterFuncWithParam : _setterFunc,
pt;
if (_isString(end)) {
if (~end.indexOf("random(")) {
end = _replaceRandom(end);
}
if (end.charAt(1) === "=") {
end = parseFloat(parsedStart) + parseFloat(end.substr(2)) * (end.charAt(0) === "-" ? -1 : 1) + (getUnit(parsedStart) || 0);
}
}
if (parsedStart !== end) {
if (!isNaN(parsedStart + end)) {
pt = new PropTween(this._pt, target, prop, +parsedStart || 0, end - (parsedStart || 0), typeof currentValue === "boolean" ? _renderBoolean : _renderPlain, 0, setter);
if (funcParam) {
pt.fp = funcParam;
}
if (modifier) {
pt.modifier(modifier, this, target);
}
return this._pt = pt;
}
!currentValue && !(prop in target) && _missingPlugin(prop, end);
return _addComplexStringPropTween.call(this, target, prop, parsedStart, end, setter, stringFilter || _config.stringFilter, funcParam);
}
},
//creates a copy of the vars object and processes any function-based values (putting the resulting values directly into the copy) as well as strings with "random()" in them. It does NOT process relative values.
_processVars = function _processVars(vars, index, target, targets, tween) {
if (_isFunction(vars)) {
vars = _parseFuncOrString(vars, tween, index, target, targets);
}
if (!_isObject(vars) || vars.style && vars.nodeType || _isArray(vars)) {
return _isString(vars) ? _parseFuncOrString(vars, tween, index, target, targets) : vars;
}
var copy = {},
p;
for (p in vars) {
copy[p] = _parseFuncOrString(vars[p], tween, index, target, targets);
}
return copy;
},
_checkPlugin = function _checkPlugin(property, vars, tween, index, target, targets) {
var plugin, pt, ptLookup, i;
if (_plugins[property] && (plugin = new _plugins[property]()).init(target, plugin.rawVars ? vars[property] : _processVars(vars[property], index, target, targets, tween), tween, index, targets) !== false) {
tween._pt = pt = new PropTween(tween._pt, target, property, 0, 1, plugin.render, plugin, 0, plugin.priority);
if (tween !== _quickTween) {
ptLookup = tween._ptLookup[tween._targets.indexOf(target)]; //note: we can't use tween._ptLookup[index] because for staggered tweens, the index from the fullTargets array won't match what it is in each individual tween that spawns from the stagger.
i = plugin._props.length;
while (i--) {
ptLookup[plugin._props[i]] = pt;
}
}
}
return plugin;
},
_overwritingTween,
//store a reference temporarily so we can avoid overwriting itself.
_initTween = function _initTween(tween, time) {
var vars = tween.vars,
ease = vars.ease,
startAt = vars.startAt,
immediateRender = vars.immediateRender,
lazy = vars.lazy,
onUpdate = vars.onUpdate,
onUpdateParams = vars.onUpdateParams,
callbackScope = vars.callbackScope,
runBackwards = vars.runBackwards,
yoyoEase = vars.yoyoEase,
keyframes = vars.keyframes,
autoRevert = vars.autoRevert,
dur = tween._dur,
prevStartAt = tween._startAt,
targets = tween._targets,
parent = tween.parent,
fullTargets = parent && parent.data === "nested" ? parent.parent._targets : targets,
autoOverwrite = tween._overwrite === "auto",
tl = tween.timeline,
cleanVars,
i,
p,
pt,
target,
hasPriority,
gsData,
harness,
plugin,
ptLookup,
index,
harnessVars;
if (tl && (!keyframes || !ease)) {
ease = "none";
}
tween._ease = _parseEase(ease, _defaults.ease);
tween._yEase = yoyoEase ? _invertEase(_parseEase(yoyoEase === true ? ease : yoyoEase, _defaults.ease)) : 0;
if (yoyoEase && tween._yoyo && !tween._repeat) {
//there must have been a parent timeline with yoyo:true that is currently in its yoyo phase, so flip the eases.
yoyoEase = tween._yEase;
tween._yEase = tween._ease;
tween._ease = yoyoEase;
}
if (!tl) {
//if there's an internal timeline, skip all the parsing because we passed that task down the chain.
if (prevStartAt) {
prevStartAt.render(-1, true).kill();
}
if (startAt) {
_removeFromParent(tween._startAt = Tween.set(targets, _setDefaults({
data: "isStart",
overwrite: false,
parent: parent,
immediateRender: true,
lazy: _isNotFalse(lazy),
startAt: null,
delay: 0,
onUpdate: onUpdate,
onUpdateParams: onUpdateParams,
callbackScope: callbackScope,
stagger: 0
}, startAt))); //copy the properties/values into a new object to avoid collisions, like var to = {x:0}, from = {x:500}; timeline.fromTo(e, from, to).fromTo(e, to, from);
if (immediateRender) {
if (time > 0) {
!autoRevert && (tween._startAt = 0); //tweens that render immediately (like most from() and fromTo() tweens) shouldn't revert when their parent timeline's playhead goes backward past the startTime because the initial render could have happened anytime and it shouldn't be directly correlated to this tween's startTime. Imagine setting up a complex animation where the beginning states of various objects are rendered immediately but the tween doesn't happen for quite some time - if we revert to the starting values as soon as the playhead goes backward past the tween's startTime, it will throw things off visually. Reversion should only happen in Timeline instances where immediateRender was false or when autoRevert is explicitly set to true.
} else if (dur) {
return; //we skip initialization here so that overwriting doesn't occur until the tween actually begins. Otherwise, if you create several immediateRender:true tweens of the same target/properties to drop into a Timeline, the last one created would overwrite the first ones because they didn't get placed into the timeline yet before the first render occurs and kicks in overwriting.
}
}
} else if (runBackwards && dur) {
//from() tweens must be handled uniquely: their beginning values must be rendered but we don't want overwriting to occur yet (when time is still 0). Wait until the tween actually begins before doing all the routines like overwriting. At that time, we should render at the END of the tween to ensure that things initialize correctly (remember, from() tweens go backwards)
if (prevStartAt) {
!autoRevert && (tween._startAt = 0);
} else {
if (time) {
//in rare cases (like if a from() tween runs and then is invalidate()-ed), immediateRender could be true but the initial forced-render gets skipped, so there's no need to force the render in this context when the _time is greater than 0
immediateRender = false;
}
_removeFromParent(tween._startAt = Tween.set(targets, _merge(_copyExcluding(vars, _reservedProps), {
overwrite: false,
data: "isFromStart",
//we tag the tween with as "isFromStart" so that if [inside a plugin] we need to only do something at the very END of a tween, we have a way of identifying this tween as merely the one that's setting the beginning values for a "from()" tween. For example, clearProps in CSSPlugin should only get applied at the very END of a tween and without this tag, from(...{height:100, clearProps:"height", delay:1}) would wipe the height at the beginning of the tween and after 1 second, it'd kick back in.
lazy: immediateRender && _isNotFalse(lazy),
immediateRender: immediateRender,
//zero-duration tweens render immediately by default, but if we're not specifically instructed to render this tween immediately, we should skip this and merely _init() to record the starting values (rendering them immediately would push them to completion which is wasteful in that case - we'd have to render(-1) immediately after)
stagger: 0,
parent: parent //ensures that nested tweens that had a stagger are handled properly, like gsap.from(".class", {y:gsap.utils.wrap([-100,100])})
})));
if (!immediateRender) {
_initTween(tween._startAt, _tinyNum); //ensures that the initial values are recorded
} else if (!time) {
return;
}
}
}
cleanVars = _copyExcluding(vars, _reservedProps);
tween._pt = 0;
harness = targets[0] ? _getCache(targets[0]).harness : 0;
harnessVars = harness && vars[harness.prop]; //someone may need to specify CSS-specific values AND non-CSS values, like if the element has an "x" property plus it's a standard DOM element. We allow people to distinguish by wrapping plugin-specific stuff in a css:{} object for example.
lazy = dur && _isNotFalse(lazy) || lazy && !dur;
for (i = 0; i < targets.length; i++) {
target = targets[i];
gsData = target._gsap || _harness(targets)[i]._gsap;
tween._ptLookup[i] = ptLookup = {};
if (_lazyLookup[gsData.id]) {
_lazyRender(); //if other tweens of the same target have recently initted but haven't rendered yet, we've got to force the render so that the starting values are correct (imagine populating a timeline with a bunch of sequential tweens and then jumping to the end)
}
index = fullTargets === targets ? i : fullTargets.indexOf(target);
if (harness && (plugin = new harness()).init(target, harnessVars || cleanVars, tween, index, fullTargets) !== false) {
tween._pt = pt = new PropTween(tween._pt, target, plugin.name, 0, 1, plugin.render, plugin, 0, plugin.priority);
plugin._props.forEach(function (name) {
ptLookup[name] = pt;
});
if (plugin.priority) {
hasPriority = 1;
}
}
if (!harness || harnessVars) {
for (p in cleanVars) {
if (_plugins[p] && (plugin = _checkPlugin(p, cleanVars, tween, index, target, fullTargets))) {
if (plugin.priority) {
hasPriority = 1;
}
} else {
ptLookup[p] = pt = _addPropTween.call(tween, target, p, "get", cleanVars[p], index, fullTargets, 0, vars.stringFilter);
}
}
}
if (tween._op && tween._op[i]) {
tween.kill(target, tween._op[i]);
}
if (autoOverwrite && tween._pt) {
_overwritingTween = tween;
_globalTimeline.killTweensOf(target, ptLookup, "started"); //Also make sure the overwriting doesn't overwrite THIS tween!!!
_overwritingTween = 0;
}
if (tween._pt && lazy) {
_lazyLookup[gsData.id] = 1;
}
}
if (hasPriority) {
_sortPropTweensByPriority(tween);
}
if (tween._onInit) {
//plugins like RoundProps must wait until ALL of the PropTweens are instantiated. In the plugin's init() function, it sets the _onInit on the tween instance. May not be pretty/intuitive, but it's fast and keeps file size down.
tween._onInit(tween);
}
}
tween._from = !tl && !!vars.runBackwards; //nested timelines should never run backwards - the backwards-ness is in the child tweens.
tween._onUpdate = onUpdate;
tween._initted = 1;
},
_addAliasesToVars = function _addAliasesToVars(targets, vars) {
var harness = targets[0] ? _getCache(targets[0]).harness : 0,
propertyAliases = harness && harness.aliases,
copy,
p,
i,
aliases;
if (!propertyAliases) {
return vars;
}
copy = _merge({}, vars);
for (p in propertyAliases) {
if (p in copy) {
aliases = propertyAliases[p].split(",");
i = aliases.length;
while (i--) {
copy[aliases[i]] = copy[p];
}
}
}
return copy;
},
_parseFuncOrString = function _parseFuncOrString(value, tween, i, target, targets) {
return _isFunction(value) ? value.call(tween, i, target, targets) : _isString(value) && ~value.indexOf("random(") ? _replaceRandom(value) : value;
},
_staggerTweenProps = _callbackNames + ",repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase",
_staggerPropsToSkip = (_staggerTweenProps + ",id,stagger,delay,duration,paused").split(",");
/*
* --------------------------------------------------------------------------------------
* TWEEN
* --------------------------------------------------------------------------------------
*/
var Tween =
/*#__PURE__*/
function (_Animation2) {
_inheritsLoose(Tween, _Animation2);
function Tween(targets, vars, time) {
var _this3;
if (typeof vars === "number") {
time.duration = vars;
vars = time;
time = null;
}
_this3 = _Animation2.call(this, _inheritDefaults(vars), time) || this;
var _this3$vars = _this3.vars,
duration = _this3$vars.duration,
delay = _this3$vars.delay,
immediateRender = _this3$vars.immediateRender,
stagger = _this3$vars.stagger,
overwrite = _this3$vars.overwrite,
keyframes = _this3$vars.keyframes,
defaults = _this3$vars.defaults,
parsedTargets = _isArray(targets) && _isNumber(targets[0]) ? [targets] : toArray(targets),
tl,
i,
copy,
l,
p,
curTarget,
staggerFunc,
staggerVarsToMerge;
_this3._targets = parsedTargets.length ? _harness(parsedTargets) : _warn("GSAP target " + targets + " not found. https://greensock.com", !_config.nullTargetWarn) || [];
_this3._ptLookup = []; //PropTween lookup. An array containing an object for each target, having keys for each tweening property
_this3._overwrite = overwrite;
if (keyframes || stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {
vars = _this3.vars;
tl = _this3.timeline = new Timeline({
data: "nested",
defaults: defaults || {}
});
tl.kill();
tl.parent = _assertThisInitialized(_this3);
if (keyframes) {
_setDefaults(tl.vars.defaults, {
ease: "none"
});
keyframes.forEach(function (frame) {
return tl.to(parsedTargets, frame, ">");
});
} else {
l = parsedTargets.length;
staggerFunc = stagger ? distribute(stagger) : _emptyFunc;
if (_isObject(stagger)) {
//users can pass in callbacks like onStart/onComplete in the stagger object. These should fire with each individual tween.
for (p in stagger) {
if (~_staggerTweenProps.indexOf(p)) {
if (!staggerVarsToMerge) {
staggerVarsToMerge = {};
}
staggerVarsToMerge[p] = stagger[p];
}
}
}
for (i = 0; i < l; i++) {
copy = {};
for (p in vars) {
if (_staggerPropsToSkip.indexOf(p) < 0) {
copy[p] = vars[p];
}
}
copy.stagger = 0;
if (staggerVarsToMerge) {
_merge(copy, staggerVarsToMerge);
}
if (vars.yoyoEase && !vars.repeat) {
//so that propagation works properly when a ancestor timeline yoyos
copy.yoyoEase = vars.yoyoEase;
}
curTarget = parsedTargets[i]; //don't just copy duration or delay because if they're a string or function, we'd end up in an infinite loop because _isFuncOrString() would evaluate as true in the child tweens, entering this loop, etc. So we parse the value straight from vars and default to 0.
copy.duration = +_parseFuncOrString(duration, _assertThisInitialized(_this3), i, curTarget, parsedTargets);
copy.delay = (+_parseFuncOrString(delay, _assertThisInitialized(_this3), i, curTarget, parsedTargets) || 0) - _this3._delay;
if (!stagger && l === 1 && copy.delay) {
// if someone does delay:"random(1, 5)", repeat:-1, for example, the delay shouldn't be inside the repeat.
_this3._delay = delay = copy.delay;
_this3._start += delay;
copy.delay = 0;
}
tl.to(curTarget, copy, staggerFunc(i, curTarget, parsedTargets));
}
duration = delay = 0;
}
duration || _this3.duration(duration = tl.duration());
} else {
_this3.timeline = 0; //speed optimization, faster lookups (no going up the prototype chain)
}
if (overwrite === true) {
_overwritingTween = _assertThisInitialized(_this3);
_globalTimeline.killTweensOf(parsedTargets);
_overwritingTween = 0;
}
if (immediateRender || !duration && !keyframes && _this3._start === _this3.parent._time && _isNotFalse(immediateRender) && _hasNoPausedAncestors(_assertThisInitialized(_this3)) && _this3.parent.data !== "nested") {
_this3._tTime = -_tinyNum; //forces a render without having to set the render() "force" parameter to true because we want to allow lazying by default (using the "force" parameter always forces an immediate full render)
_this3.render(Math.max(0, -delay)); //in case delay is negative
}
return _this3;
}
var _proto3 = Tween.prototype;
_proto3.render = function render(totalTime, suppressEvents, force) {
var prevTime = this._time,
tDur = this._tDur,
dur = this._dur,
tTime = totalTime > tDur - _tinyNum && totalTime >= 0 ? tDur : totalTime < _tinyNum ? 0 : totalTime,
time,
pt,
iteration,
cycleDuration,
prevIteration,
isYoyo,
ratio,
timeline,
yoyoEase;
if (!dur) {
_renderZeroDurationTween(this, totalTime, suppressEvents, force);
} else if (tTime !== this._tTime || !totalTime || force || this._startAt && this._zTime < 0 !== totalTime < 0) {
//this senses if we're crossing over the start time, in which case we must record _zTime and force the render, but we do it in this lengthy conditional way for performance reasons (usually we can skip the calculations): this._initted && (this._zTime < 0) !== (totalTime < 0)
time = tTime;
timeline = this.timeline;
if (this._repeat) {
//adjust the time for repeats and yoyos
cycleDuration = dur + this._rDelay;
time = _round(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)
if (time > dur) {
time = dur;
}
iteration = ~~(tTime / cycleDuration);
if (iteration && iteration === tTime / cycleDuration) {
time = dur;
iteration--;
}
isYoyo = this._yoyo && iteration & 1;
if (isYoyo) {
yoyoEase = this._yEase;
time = dur - time;
}
prevIteration = _animationCycle(this._tTime, cycleDuration);
if (time === prevTime && !force && this._initted) {
//could be during the repeatDelay part. No need to render and fire callbacks.
return this;
}
if (iteration !== prevIteration) {
//timeline && this._yEase && _propagateYoyoEase(timeline, isYoyo);
//repeatRefresh functionality
if (this.vars.repeatRefresh && !isYoyo && !this._lock) {
this._lock = force = 1; //force, otherwise if lazy is true, the _attemptInitTween() will return and we'll jump out and get caught bouncing on each tick.
this.render(cycleDuration * iteration, true).invalidate()._lock = 0;
}
}
}
if (!this._initted && _attemptInitTween(this, time, force, suppressEvents)) {
this._tTime = 0; // in constructor if immediateRender is true, we set _tTime to -_tinyNum to have the playhead cross the starting point but we can't leave _tTime as a negative number.
return this;
}
this._tTime = tTime;
this._time = time;
if (!this._act && this._ts) {
this._act = 1; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.
this._lazy = 0;
}
this.ratio = ratio = (yoyoEase || this._ease)(time / dur);
if (this._from) {
this.ratio = ratio = 1 - ratio;
}
if (!prevTime && time && !suppressEvents) {
_callback(this, "onStart");
}
pt = this._pt;
while (pt) {
pt.r(ratio, pt.d);
pt = pt._next;
}
timeline && timeline.render(totalTime < 0 ? totalTime : !time && isYoyo ? -_tinyNum : timeline._dur * ratio, suppressEvents, force) || this._startAt && (this._zTime = totalTime);
if (this._onUpdate && !suppressEvents) {
if (totalTime < 0 && this._startAt) {
this._startAt.render(totalTime, true, force); //note: for performance reasons, we tuck this conditional logic inside less traveled areas (most tweens don't have an onUpdate). We'd just have it at the end before the onComplete, but the values should be updated before any onUpdate is called, so we ALSO put it here and then if it's not called, we do so later near the onComplete.
}
_callback(this, "onUpdate");
}
if (this._repeat) if (iteration !== prevIteration && this.vars.onRepeat && !suppressEvents && this.parent) {
_callback(this, "onRepeat");
}
if ((tTime === this._tDur || !tTime) && this._tTime === tTime) {
if (totalTime < 0 && this._startAt && !this._onUpdate) {
this._startAt.render(totalTime, true, force);
}
(totalTime || !dur) && (totalTime && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if we're rendering at exactly a time of 0, as there could be autoRevert values that should get set on the next tick (if the playhead goes backward beyond the startTime, negative totalTime). Don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.
if (!suppressEvents && !(totalTime < 0 && !prevTime)) {
_callback(this, tTime === tDur ? "onComplete" : "onReverseComplete", true);
this._prom && this._prom();
}
}
}
return this;
};
_proto3.targets = function targets() {
return this._targets;
};
_proto3.invalidate = function invalidate() {
this._pt = this._op = this._startAt = this._onUpdate = this._act = this._lazy = 0;
this._ptLookup = [];
if (this.timeline) {
this.timeline.invalidate();
}
return _Animation2.prototype.invalidate.call(this);
};
_proto3.kill = function kill(targets, vars) {
if (vars === void 0) {
vars = "all";
}
if (!targets && (!vars || vars === "all")) {
this._lazy = 0;
if (this.parent) {
return _interrupt(this);
}
}
if (this.timeline) {
this.timeline.killTweensOf(targets, vars, _overwritingTween && _overwritingTween.vars.overwrite !== true);
return this;
}
var parsedTargets = this._targets,
killingTargets = targets ? toArray(targets) : parsedTargets,
propTweenLookup = this._ptLookup,
firstPT = this._pt,
overwrittenProps,
curLookup,
curOverwriteProps,
props,
p,
pt,
i;
if ((!vars || vars === "all") && _arraysMatch(parsedTargets, killingTargets)) {
return _interrupt(this);
}
overwrittenProps = this._op = this._op || [];
if (vars !== "all") {
//so people can pass in a comma-delimited list of property names
if (_isString(vars)) {
p = {};
_forEachName(vars, function (name) {
return p[name] = 1;
});
vars = p;
}
vars = _addAliasesToVars(parsedTargets, vars);
}
i = parsedTargets.length;
while (i--) {
if (~killingTargets.indexOf(parsedTargets[i])) {
curLookup = propTweenLookup[i];
if (vars === "all") {
overwrittenProps[i] = vars;
props = curLookup;
curOverwriteProps = {};
} else {
curOverwriteProps = overwrittenProps[i] = overwrittenProps[i] || {};
props = vars;
}
for (p in props) {
pt = curLookup && curLookup[p];
if (pt) {
if (!("kill" in pt.d) || pt.d.kill(p) === true) {
_removeLinkedListItem(this, pt, "_pt");
}
delete curLookup[p];
}
if (curOverwriteProps !== "all") {
curOverwriteProps[p] = 1;
}
}
}
}
if (this._initted && !this._pt && firstPT) {
//if all tweening properties are killed, kill the tween. Without this line, if there's a tween with multiple targets and then you killTweensOf() each target individually, the tween would technically still remain active and fire its onComplete even though there aren't any more properties tweening.
_interrupt(this);
}
return this;
};
Tween.to = function to(targets, vars) {
return new Tween(targets, vars, arguments[2]);
};
Tween.from = function from(targets, vars) {
return new Tween(targets, _parseVars(arguments, 1));
};
Tween.delayedCall = function delayedCall(delay, callback, params, scope) {
return new Tween(callback, 0, {
immediateRender: false,
lazy: false,
overwrite: false,
delay: delay,
onComplete: callback,
onReverseComplete: callback,
onCompleteParams: params,
onReverseCompleteParams: params,
callbackScope: scope
});
};
Tween.fromTo = function fromTo(targets, fromVars, toVars) {
return new Tween(targets, _parseVars(arguments, 2));
};
Tween.set = function set(targets, vars) {
vars.duration = 0;
if (!vars.repeatDelay) {
vars.repeat = 0;
}
return new Tween(targets, vars);
};
Tween.killTweensOf = function killTweensOf(targets, props, onlyActive) {
return _globalTimeline.killTweensOf(targets, props, onlyActive);
};
return Tween;
}(Animation);
_setDefaults(Tween.prototype, {
_targets: [],
_lazy: 0,
_startAt: 0,
_op: 0,
_onInit: 0
}); //add the pertinent timeline methods to Tween instances so that users can chain conveniently and create a timeline automatically. (removed due to concerns that it'd ultimately add to more confusion especially for beginners)
// _forEachName("to,from,fromTo,set,call,add,addLabel,addPause", name => {
// Tween.prototype[name] = function() {
// let tl = new Timeline();
// return _addToTimeline(tl, this)[name].apply(tl, toArray(arguments));
// }
// });
//for backward compatibility. Leverage the timeline calls.
_forEachName("staggerTo,staggerFrom,staggerFromTo", function (name) {
Tween[name] = function () {
var tl = new Timeline(),
params = _slice.call(arguments, 0);
params.splice(name === "staggerFromTo" ? 5 : 4, 0, 0);
return tl[name].apply(tl, params);
};
});
/*
* --------------------------------------------------------------------------------------
* PROPTWEEN
* --------------------------------------------------------------------------------------
*/
var _setterPlain = function _setterPlain(target, property, value) {
return target[property] = value;
},
_setterFunc = function _setterFunc(target, property, value) {
return target[property](value);
},
_setterFuncWithParam = function _setterFuncWithParam(target, property, value, data) {
return target[property](data.fp, value);
},
_setterAttribute = function _setterAttribute(target, property, value) {
return target.setAttribute(property, value);
},
_getSetter = function _getSetter(target, property) {
return _isFunction(target[property]) ? _setterFunc : _isUndefined(target[property]) && target.setAttribute ? _setterAttribute : _setterPlain;
},
_renderPlain = function _renderPlain(ratio, data) {
return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 10000) / 10000, data);
},
_renderBoolean = function _renderBoolean(ratio, data) {
return data.set(data.t, data.p, !!(data.s + data.c * ratio), data);
},
_renderComplexString = function _renderComplexString(ratio, data) {
var pt = data._pt,
s = "";
if (!ratio && data.b) {
//b = beginning string
s = data.b;
} else if (ratio === 1 && data.e) {
//e = ending string
s = data.e;
} else {
while (pt) {
s = pt.p + (pt.m ? pt.m(pt.s + pt.c * ratio) : Math.round((pt.s + pt.c * ratio) * 10000) / 10000) + s; //we use the "p" property for the text inbetween (like a suffix). And in the context of a complex string, the modifier (m) is typically just Math.round(), like for RGB colors.
pt = pt._next;
}
s += data.c; //we use the "c" of the PropTween to store the final chunk of non-numeric text.
}
data.set(data.t, data.p, s, data);
},
_renderPropTweens = function _renderPropTweens(ratio, data) {
var pt = data._pt;
while (pt) {
pt.r(ratio, pt.d);
pt = pt._next;
}
},
_addPluginModifier = function _addPluginModifier(modifier, tween, target, property) {
var pt = this._pt,
next;
while (pt) {
next = pt._next;
if (pt.p === property) {
pt.modifier(modifier, tween, target);
}
pt = next;
}
},
_killPropTweensOf = function _killPropTweensOf(property) {
var pt = this._pt,
hasNonDependentRemaining,
next;
while (pt) {
next = pt._next;
if (pt.p === property && !pt.op || pt.op === property) {
_removeLinkedListItem(this, pt, "_pt");
} else if (!pt.dep) {
hasNonDependentRemaining = 1;
}
pt = next;
}
return !hasNonDependentRemaining;
},
_setterWithModifier = function _setterWithModifier(target, property, value, data) {
data.mSet(target, property, data.m.call(data.tween, value, data.mt), data);
},
_sortPropTweensByPriority = function _sortPropTweensByPriority(parent) {
var pt = parent._pt,
next,
pt2,
first,
last; //sorts the PropTween linked list in order of priority because some plugins need to do their work after ALL of the PropTweens were created (like RoundPropsPlugin and ModifiersPlugin)
while (pt) {
next = pt._next;
pt2 = first;
while (pt2 && pt2.pr > pt.pr) {
pt2 = pt2._next;
}
if (pt._prev = pt2 ? pt2._prev : last) {
pt._prev._next = pt;
} else {
first = pt;
}
if (pt._next = pt2) {
pt2._prev = pt;
} else {
last = pt;
}
pt = next;
}
parent._pt = first;
}; //PropTween key: t = target, p = prop, r = renderer, d = data, s = start, c = change, op = overwriteProperty (ONLY populated when it's different than p), pr = priority, _next/_prev for the linked list siblings, set = setter, m = modifier, mSet = modifierSetter (the original setter, before a modifier was added)
var PropTween =
/*#__PURE__*/
function () {
function PropTween(next, target, prop, start, change, renderer, data, setter, priority) {
this.t = target;
this.s = start;
this.c = change;
this.p = prop;
this.r = renderer || _renderPlain;
this.d = data || this;
this.set = setter || _setterPlain;
this.pr = priority || 0;
this._next = next;
if (next) {
next._prev = this;
}
}
var _proto4 = PropTween.prototype;
_proto4.modifier = function modifier(func, tween, target) {
this.mSet = this.mSet || this.set; //in case it was already set (a PropTween can only have one modifier)
this.set = _setterWithModifier;
this.m = func;
this.mt = target; //modifier target
this.tween = tween;
};
return PropTween;
}(); //Initialization tasks
_forEachName(_callbackNames + ",parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert", function (name) {
_reservedProps[name] = 1;
if (name.substr(0, 2) === "on") _reservedProps[name + "Params"] = 1;
});
_globals.TweenMax = _globals.TweenLite = Tween;
_globals.TimelineLite = _globals.TimelineMax = Timeline;
_globalTimeline = new Timeline({
sortChildren: false,
defaults: _defaults,
autoRemoveChildren: true,
id: "root"
});
_config.stringFilter = _colorStringFilter;
/*
* --------------------------------------------------------------------------------------
* GSAP
* --------------------------------------------------------------------------------------
*/
var _gsap = {
registerPlugin: function registerPlugin() {
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
args.forEach(function (config) {
return _createPlugin(config);
});
},
timeline: function timeline(vars) {
return new Timeline(vars);
},
getTweensOf: function getTweensOf(targets, onlyActive) {
return _globalTimeline.getTweensOf(targets, onlyActive);
},
getProperty: function getProperty(target, property, unit, uncache) {
if (_isString(target)) {
//in case selector text or an array is passed in
target = toArray(target)[0];
}
var getter = _getCache(target || {}).get,
format = unit ? _passThrough : _numericIfPossible;
if (unit === "native") {
unit = "";
}
return !target ? target : !property ? function (property, unit, uncache) {
return format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));
} : format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));
},
quickSetter: function quickSetter(target, property, unit) {
target = toArray(target);
if (target.length > 1) {
var setters = target.map(function (t) {
return gsap.quickSetter(t, property, unit);
}),
l = setters.length;
return function (value) {
var i = l;
while (i--) {
setters[i](value);
}
};
}
target = target[0] || {};
var Plugin = _plugins[property],
cache = _getCache(target),
setter = Plugin ? function (value) {
var p = new Plugin();
_quickTween._pt = 0;
p.init(target, unit ? value + unit : value, _quickTween, 0, [target]);
p.render(1, p);
_quickTween._pt && _renderPropTweens(1, _quickTween);
} : cache.set(target, property);
return Plugin ? setter : function (value) {
return setter(target, property, unit ? value + unit : value, cache, 1);
};
},
isTweening: function isTweening(targets) {
return _globalTimeline.getTweensOf(targets, true).length > 0;
},
defaults: function defaults(value) {
if (value && value.ease) {
value.ease = _parseEase(value.ease, _defaults.ease);
}
return _mergeDeep(_defaults, value || {});
},
config: function config(value) {
return _mergeDeep(_config, value || {});
},
registerEffect: function registerEffect(_ref) {
var name = _ref.name,
effect = _ref.effect,
plugins = _ref.plugins,
defaults = _ref.defaults,
extendTimeline = _ref.extendTimeline;
(plugins || "").split(",").forEach(function (pluginName) {
return pluginName && !_plugins[pluginName] && !_globals[pluginName] && _warn(name + " effect requires " + pluginName + " plugin.");
});
_effects[name] = function (targets, vars) {
return effect(toArray(targets), _setDefaults(vars || {}, defaults));
};
if (extendTimeline) {
Timeline.prototype[name] = function (targets, vars, position) {
return this.add(_effects[name](targets, _isObject(vars) ? vars : (position = vars) && {}), position);
};
}
},
registerEase: function registerEase(name, ease) {
_easeMap[name] = _parseEase(ease);
},
parseEase: function parseEase(ease, defaultEase) {
return arguments.length ? _parseEase(ease, defaultEase) : _easeMap;
},
getById: function getById(id) {
return _globalTimeline.getById(id);
},
exportRoot: function exportRoot(vars, includeDelayedCalls) {
if (vars === void 0) {
vars = {};
}
var tl = new Timeline(vars),
child,
next;
tl.smoothChildTiming = _isNotFalse(vars.smoothChildTiming);
_globalTimeline.remove(tl);
tl._dp = 0; //otherwise it'll get re-activated when adding children and be re-introduced into _globalTimeline's linked list (then added to itself).
tl._time = tl._tTime = _globalTimeline._time;
child = _globalTimeline._first;
while (child) {
next = child._next;
if (includeDelayedCalls || !(!child._dur && child instanceof Tween && child.vars.onComplete === child._targets[0])) {
_addToTimeline(tl, child, child._start - child._delay);
}
child = next;
}
_addToTimeline(_globalTimeline, tl, 0);
return tl;
},
utils: {
wrap: wrap,
wrapYoyo: wrapYoyo,
distribute: distribute,
random: random,
snap: snap,
normalize: normalize,
getUnit: getUnit,
clamp: clamp,
splitColor: splitColor,
toArray: toArray,
mapRange: mapRange,
pipe: pipe,
unitize: unitize,
interpolate: interpolate,
shuffle: shuffle
},
install: _install,
effects: _effects,
ticker: _ticker,
updateRoot: Timeline.updateRoot,
plugins: _plugins,
globalTimeline: _globalTimeline,
core: {
PropTween: PropTween,
globals: _addGlobal,
Tween: Tween,
Timeline: Timeline,
Animation: Animation,
getCache: _getCache
}
};
_forEachName("to,from,fromTo,delayedCall,set,killTweensOf", function (name) {
return _gsap[name] = Tween[name];
});
_ticker.add(Timeline.updateRoot);
_quickTween = _gsap.to({}, {
duration: 0
}); // ---- EXTRA PLUGINS --------------------------------------------------------
var _getPluginPropTween = function _getPluginPropTween(plugin, prop) {
var pt = plugin._pt;
while (pt && pt.p !== prop && pt.op !== prop && pt.fp !== prop) {
pt = pt._next;
}
return pt;
},
_addModifiers = function _addModifiers(tween, modifiers) {
var targets = tween._targets,
p,
i,
pt;
for (p in modifiers) {
i = targets.length;
while (i--) {
pt = tween._ptLookup[i][p];
if (pt && (pt = pt.d)) {
if (pt._pt) {
// is a plugin
pt = _getPluginPropTween(pt, p);
}
pt && pt.modifier && pt.modifier(modifiers[p], tween, targets[i], p);
}
}
}
},
_buildModifierPlugin = function _buildModifierPlugin(name, modifier) {
return {
name: name,
rawVars: 1,
//don't pre-process function-based values or "random()" strings.
init: function init(target, vars, tween) {
tween._onInit = function (tween) {
var temp, p;
if (_isString(vars)) {
temp = {};
_forEachName(vars, function (name) {
return temp[name] = 1;
}); //if the user passes in a comma-delimited list of property names to roundProps, like "x,y", we round to whole numbers.
vars = temp;
}
if (modifier) {
temp = {};
for (p in vars) {
temp[p] = modifier(vars[p]);
}
vars = temp;
}
_addModifiers(tween, vars);
};
}
};
}; //register core plugins
var gsap = _gsap.registerPlugin({
name: "attr",
init: function init(target, vars, tween, index, targets) {
for (var p in vars) {
this.add(target, "setAttribute", (target.getAttribute(p) || 0) + "", vars[p], index, targets, 0, 0, p); //this.add(target, "setAttribute", (target.getAttribute((p in target.dataset ? (p = "data-" + p) : p)) || 0) + "", vars[p], index, targets, 0, 0, p);
this._props.push(p);
}
}
}, {
name: "endArray",
init: function init(target, value) {
var i = value.length;
while (i--) {
this.add(target, i, target[i] || 0, value[i]);
}
}
}, _buildModifierPlugin("roundProps", _roundModifier), _buildModifierPlugin("modifiers"), _buildModifierPlugin("snap", snap)) || _gsap; //to prevent the core plugins from being dropped via aggressive tree shaking, we must include them in the variable declaration in this way.
Tween.version = Timeline.version = gsap.version = "3.1.1";
_coreReady = 1;
if (_windowExists()) {
_wake();
}
var Power0 = _easeMap.Power0,
Power1 = _easeMap.Power1,
Power2 = _easeMap.Power2,
Power3 = _easeMap.Power3,
Power4 = _easeMap.Power4,
Linear = _easeMap.Linear,
Quad = _easeMap.Quad,
Cubic = _easeMap.Cubic,
Quart = _easeMap.Quart,
Quint = _easeMap.Quint,
Strong = _easeMap.Strong,
Elastic = _easeMap.Elastic,
Back = _easeMap.Back,
SteppedEase = _easeMap.SteppedEase,
Bounce = _easeMap.Bounce,
Sine = _easeMap.Sine,
Expo = _easeMap.Expo,
Circ = _easeMap.Circ;
//export some internal methods/orojects for use in CSSPlugin so that we can externalize that file and allow custom builds that exclude it.
// CONCATENATED MODULE: ./node_modules/gsap/CSSPlugin.js
/*!
* CSSPlugin 3.1.1
* https://greensock.com
*
* Copyright 2008-2020, GreenSock. All rights reserved.
* Subject to the terms at https://greensock.com/standard-license or for
* Club GreenSock members, the agreement issued with that membership.
* @author: Jack Doyle, jack@greensock.com
*/
/* eslint-disable */
var CSSPlugin_win,
CSSPlugin_doc,
_docElement,
_pluginInitted,
_tempDiv,
_tempDivStyler,
_recentSetterPlugin,
CSSPlugin_windowExists = function _windowExists() {
return typeof window !== "undefined";
},
_transformProps = {},
_RAD2DEG = 180 / Math.PI,
_DEG2RAD = Math.PI / 180,
_atan2 = Math.atan2,
CSSPlugin_bigNum = 1e8,
_capsExp = /([A-Z])/g,
_numWithUnitExp = /[-+=\.]*\d+[\.e-]*\d*[a-z%]*/g,
_horizontalExp = /(?:left|right|width|margin|padding|x)/i,
_complexExp = /[\s,\(]\S/,
_propertyAliases = {
autoAlpha: "opacity,visibility",
scale: "scaleX,scaleY",
alpha: "opacity"
},
_renderCSSProp = function _renderCSSProp(ratio, data) {
return data.set(data.t, data.p, ~~((data.s + data.c * ratio) * 1000) / 1000 + data.u, data);
},
_renderPropWithEnd = function _renderPropWithEnd(ratio, data) {
return data.set(data.t, data.p, ratio === 1 ? data.e : ~~((data.s + data.c * ratio) * 1000) / 1000 + data.u, data);
},
_renderCSSPropWithBeginning = function _renderCSSPropWithBeginning(ratio, data) {
return data.set(data.t, data.p, ratio ? ~~((data.s + data.c * ratio) * 1000) / 1000 + data.u : data.b, data);
},
//if units change, we need a way to render the original unit/value when the tween goes all the way back to the beginning (ratio:0)
_renderRoundedCSSProp = function _renderRoundedCSSProp(ratio, data) {
var value = data.s + data.c * ratio;
data.set(data.t, data.p, ~~(value + (value < 0 ? -.5 : .5)) + data.u, data);
},
_renderNonTweeningValue = function _renderNonTweeningValue(ratio, data) {
return data.set(data.t, data.p, ratio ? data.e : data.b, data);
},
_renderNonTweeningValueOnlyAtEnd = function _renderNonTweeningValueOnlyAtEnd(ratio, data) {
return data.set(data.t, data.p, ratio !== 1 ? data.b : data.e, data);
},
_setterCSSStyle = function _setterCSSStyle(target, property, value) {
return target.style[property] = value;
},
_setterCSSProp = function _setterCSSProp(target, property, value) {
return target.style.setProperty(property, value);
},
_setterTransform = function _setterTransform(target, property, value) {
return target._gsap[property] = value;
},
_setterScale = function _setterScale(target, property, value) {
return target._gsap.scaleX = target._gsap.scaleY = value;
},
_setterScaleWithRender = function _setterScaleWithRender(target, property, value, data, ratio) {
var cache = target._gsap;
cache.scaleX = cache.scaleY = value;
cache.renderTransform(ratio, cache);
},
_setterTransformWithRender = function _setterTransformWithRender(target, property, value, data, ratio) {
var cache = target._gsap;
cache[property] = value;
cache.renderTransform(ratio, cache);
},
_transformProp = "transform",
_transformOriginProp = _transformProp + "Origin",
_supports3D,
_createElement = function _createElement(type, ns) {
var e = CSSPlugin_doc.createElementNS ? CSSPlugin_doc.createElementNS((ns || "http://www.w3.org/1999/xhtml").replace(/^https/, "http"), type) : CSSPlugin_doc.createElement(type); //some servers swap in https for http in the namespace which can break things, making "style" inaccessible.
return e.style ? e : CSSPlugin_doc.createElement(type); //some environments won't allow access to the element's style when created with a namespace in which case we default to the standard createElement() to work around the issue. Also note that when GSAP is embedded directly inside an SVG file, createElement() won't allow access to the style object in Firefox (see https://greensock.com/forums/topic/20215-problem-using-tweenmax-in-standalone-self-containing-svg-file-err-cannot-set-property-csstext-of-undefined/).
},
_getComputedProperty = function _getComputedProperty(target, property, skipPrefixFallback) {
var cs = getComputedStyle(target);
return cs[property] || cs.getPropertyValue(property.replace(_capsExp, "-$1").toLowerCase()) || cs.getPropertyValue(property) || !skipPrefixFallback && _getComputedProperty(target, _checkPropPrefix(property) || property, 1) || ""; //css variables may not need caps swapped out for dashes and lowercase.
},
_prefixes = "O,Moz,ms,Ms,Webkit".split(","),
_checkPropPrefix = function _checkPropPrefix(property, element) {
var e = element || _tempDiv,
s = e.style,
i = 5;
if (property in s) {
return property;
}
property = property.charAt(0).toUpperCase() + property.substr(1);
while (i-- && !(_prefixes[i] + property in s)) {}
return i < 0 ? null : (i === 3 ? "ms" : i >= 0 ? _prefixes[i] : "") + property;
},
_initCore = function _initCore() {
if (CSSPlugin_windowExists()) {
CSSPlugin_win = window;
CSSPlugin_doc = CSSPlugin_win.document;
_docElement = CSSPlugin_doc.documentElement;
_tempDiv = _createElement("div") || {
style: {}
};
_tempDivStyler = _createElement("div");
_transformProp = _checkPropPrefix(_transformProp);
_transformOriginProp = _checkPropPrefix(_transformOriginProp);
_tempDiv.style.cssText = "border-width:0;line-height:0;position:absolute;padding:0"; //make sure to override certain properties that may contaminate measurements, in case the user has overreaching style sheets.
_supports3D = !!_checkPropPrefix("perspective");
_pluginInitted = 1;
}
},
_getBBoxHack = function _getBBoxHack(swapIfPossible) {
//works around issues in some browsers (like Firefox) that don't correctly report getBBox() on SVG elements inside a <defs> element and/or <mask>. We try creating an SVG, adding it to the documentElement and toss the element in there so that it's definitely part of the rendering tree, then grab the bbox and if it works, we actually swap out the original getBBox() method for our own that does these extra steps whenever getBBox is needed. This helps ensure that performance is optimal (only do all these extra steps when absolutely necessary...most elements don't need it).
var svg = _createElement("svg", this.ownerSVGElement && this.ownerSVGElement.getAttribute("xmlns") || "http://www.w3.org/2000/svg"),
oldParent = this.parentNode,
oldSibling = this.nextSibling,
oldCSS = this.style.cssText,
bbox;
_docElement.appendChild(svg);
svg.appendChild(this);
this.style.display = "block";
if (swapIfPossible) {
try {
bbox = this.getBBox();
this._gsapBBox = this.getBBox; //store the original
this.getBBox = _getBBoxHack;
} catch (e) {}
} else if (this._gsapBBox) {
bbox = this._gsapBBox();
}
if (oldSibling) {
oldParent.insertBefore(this, oldSibling);
} else {
oldParent.appendChild(this);
}
_docElement.removeChild(svg);
this.style.cssText = oldCSS;
return bbox;
},
_getAttributeFallbacks = function _getAttributeFallbacks(target, attributesArray) {
var i = attributesArray.length;
while (i--) {
if (target.hasAttribute(attributesArray[i])) {
return target.getAttribute(attributesArray[i]);
}
}
},
_getBBox = function _getBBox(target) {
var bounds;
try {
bounds = target.getBBox(); //Firefox throws errors if you try calling getBBox() on an SVG element that's not rendered (like in a <symbol> or <defs>). https://bugzilla.mozilla.org/show_bug.cgi?id=612118
} catch (error) {
bounds = _getBBoxHack.call(target, true);
} //some browsers (like Firefox) misreport the bounds if the element has zero width and height (it just assumes it's at x:0, y:0), thus we need to manually grab the position in that case.
return bounds && !bounds.width && !bounds.x && !bounds.y ? {
x: +_getAttributeFallbacks(target, ["x", "cx", "x1"]) || 0,
y: +_getAttributeFallbacks(target, ["y", "cy", "y1"]) || 0,
width: 0,
height: 0
} : bounds;
},
_isSVG = function _isSVG(e) {
return !!(e.getCTM && (!e.parentNode || e.ownerSVGElement) && _getBBox(e));
},
//reports if the element is an SVG on which getBBox() actually works
_removeProperty = function _removeProperty(target, property) {
if (property) {
var style = target.style;
if (property in _transformProps) {
property = _transformProp;
}
if (style.removeProperty) {
if (property.substr(0, 2) === "ms" || property.substr(0, 6) === "webkit") {
//Microsoft and some Webkit browsers don't conform to the standard of capitalizing the first prefix character, so we adjust so that when we prefix the caps with a dash, it's correct (otherwise it'd be "ms-transform" instead of "-ms-transform" for IE9, for example)
property = "-" + property;
}
style.removeProperty(property.replace(_capsExp, "-$1").toLowerCase());
} else {
//note: old versions of IE use "removeAttribute()" instead of "removeProperty()"
style.removeAttribute(property);
}
}
},
CSSPlugin_addNonTweeningPT = function _addNonTweeningPT(plugin, target, property, beginning, end, onlySetAtEnd) {
var pt = new PropTween(plugin._pt, target, property, 0, 1, onlySetAtEnd ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue);
plugin._pt = pt;
pt.b = beginning;
pt.e = end;
plugin._props.push(property);
return pt;
},
_nonConvertibleUnits = {
deg: 1,
rad: 1,
turn: 1
},
//takes a single value like 20px and converts it to the unit specified, like "%", returning only the numeric amount.
CSSPlugin_convertToUnit = function _convertToUnit(target, property, value, unit) {
var curValue = parseFloat(value) || 0,
curUnit = (value + "").trim().substr((curValue + "").length) || "px",
// some browsers leave extra whitespace at the beginning of CSS variables, hence the need to trim()
style = _tempDiv.style,
horizontal = _horizontalExp.test(property),
isRootSVG = target.tagName.toLowerCase() === "svg",
measureProperty = (isRootSVG ? "client" : "offset") + (horizontal ? "Width" : "Height"),
amount = 100,
toPixels = unit === "px",
px,
parent,
cache,
isSVG;
if (unit === curUnit || !curValue || _nonConvertibleUnits[unit] || _nonConvertibleUnits[curUnit]) {
return curValue;
}
isSVG = target.getCTM && _isSVG(target);
if (unit === "%" && (_transformProps[property] || ~property.indexOf("adius"))) {
//transforms and borderRadius are relative to the size of the element itself!
return _round(curValue / (isSVG ? target.getBBox()[horizontal ? "width" : "height"] : target[measureProperty]) * amount);
}
style[horizontal ? "width" : "height"] = amount + (toPixels ? curUnit : unit);
parent = ~property.indexOf("adius") || unit === "em" && target.appendChild && !isRootSVG ? target : target.parentNode;
if (isSVG) {
parent = (target.ownerSVGElement || {}).parentNode;
}
if (!parent || parent === CSSPlugin_doc || !parent.appendChild) {
parent = CSSPlugin_doc.body;
}
cache = parent._gsap;
if (cache && unit === "%" && cache.width && horizontal && cache.time === _ticker.time) {
return _round(curValue / cache.width * amount);
} else {
parent === target && (style.position = "static"); // like for borderRadius, if it's a % we must have it relative to the target itself but that may not have position: relative or position: absolute in which case it'd go up the chain until it finds its offsetParent (bad). position: static protects against that.
parent.appendChild(_tempDiv);
px = _tempDiv[measureProperty];
parent.removeChild(_tempDiv);
style.position = "absolute";
if (horizontal && unit === "%") {
cache = _getCache(parent);
cache.time = _ticker.time;
cache.width = parent[measureProperty];
}
}
return _round(toPixels ? px * curValue / amount : amount / px * curValue);
},
CSSPlugin_get = function _get(target, property, unit, uncache) {
var value;
if (!_pluginInitted) {
_initCore();
}
if (property in _propertyAliases && property !== "transform") {
property = _propertyAliases[property];
if (~property.indexOf(",")) {
property = property.split(",")[0];
}
}
if (_transformProps[property] && property !== "transform") {
value = CSSPlugin_parseTransform(target, uncache);
value = property !== "transformOrigin" ? value[property] : _firstTwoOnly(_getComputedProperty(target, _transformOriginProp)) + value.zOrigin + "px";
} else {
value = target.style[property];
if (!value || value === "auto" || uncache || ~(value + "").indexOf("calc(")) {
value = _specialProps[property] && _specialProps[property](target, property, unit) || _getComputedProperty(target, property) || _getProperty(target, property) || (property === "opacity" ? 1 : 0); // note: some browsers, like Firefox, don't report borderRadius correctly! Instead, it only reports every corner like borderTopLeftRadius
}
}
return unit && !~(value + "").indexOf(" ") ? CSSPlugin_convertToUnit(target, property, value, unit) + unit : value;
},
CSSPlugin_tweenComplexCSSString = function _tweenComplexCSSString(target, prop, start, end) {
//note: we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus "this" would refer to the plugin.
var pt = new PropTween(this._pt, target.style, prop, 0, 1, _renderComplexString),
index = 0,
matchIndex = 0,
a,
result,
startValues,
startNum,
color,
startValue,
endValue,
endNum,
chunk,
endUnit,
startUnit,
relative,
endValues;
pt.b = start;
pt.e = end;
start += ""; //ensure values are strings
end += "";
if (end === "auto") {
target.style[prop] = end;
end = _getComputedProperty(target, prop) || end;
target.style[prop] = start;
}
a = [start, end];
_colorStringFilter(a); //pass an array with the starting and ending values and let the filter do whatever it needs to the values.
start = a[0];
end = a[1];
startValue = start.indexOf("rgba(");
endValue = end.indexOf("rgba(");
if (!!startValue !== !!endValue) {
// for things like boxShadow, sometimes the browser provides the computed values with the color FIRST, but the user provides it with the color LAST, so flip them if necessary.
if (startValue) {
start = start.substr(startValue) + " " + start.substr(0, startValue - 1);
} else {
end = end.substr(endValue) + " " + end.substr(0, endValue - 1);
}
}
startValues = start.match(_numWithUnitExp) || [];
endValues = end.match(_numWithUnitExp) || [];
if (endValues.length) {
while (result = _numWithUnitExp.exec(end)) {
endValue = result[0];
chunk = end.substring(index, result.index);
if (color) {
color = (color + 1) % 5;
} else if (chunk.substr(-5) === "rgba(" || chunk.substr(-5) === "hsla(") {
color = 1;
}
if (endValue !== (startValue = startValues[matchIndex++] || "")) {
startNum = parseFloat(startValue) || 0;
startUnit = startValue.substr((startNum + "").length);
relative = endValue.charAt(1) === "=" ? +(endValue.charAt(0) + "1") : 0;
if (relative) {
endValue = endValue.substr(2);
}
endNum = parseFloat(endValue);
endUnit = endValue.substr((endNum + "").length);
index = _numWithUnitExp.lastIndex - endUnit.length;
if (!endUnit) {
//if something like "perspective:300" is passed in and we must add a unit to the end
endUnit = endUnit || _config.units[prop] || startUnit;
if (index === end.length) {
end += endUnit;
pt.e += endUnit;
}
}
if (startUnit !== endUnit) {
startNum = CSSPlugin_convertToUnit(target, prop, startValue, endUnit) || 0;
} //these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.
pt._pt = {
_next: pt._pt,
p: chunk || matchIndex === 1 ? chunk : ",",
//note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.
s: startNum,
c: relative ? relative * endNum : endNum - startNum,
m: color && color < 4 ? Math.round : 0
};
}
}
pt.c = index < end.length ? end.substring(index, end.length) : ""; //we use the "c" of the PropTween to store the final part of the string (after the last number)
} else {
pt.r = prop === "display" && end === "none" ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue;
}
if (_relExp.test(end)) {
pt.e = 0; //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).
}
this._pt = pt; //start the linked list with this new PropTween. Remember, we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within another plugin too, thus "this" would refer to the plugin.
return pt;
},
_keywordToPercent = {
top: "0%",
bottom: "100%",
left: "0%",
right: "100%",
center: "50%"
},
_convertKeywordsToPercentages = function _convertKeywordsToPercentages(value) {
var split = value.split(" "),
x = split[0],
y = split[1] || "50%";
if (x === "top" || x === "bottom" || y === "left" || y === "right") {
//the user provided them in the wrong order, so flip them
value = x;
x = y;
y = value;
}
split[0] = _keywordToPercent[x] || x;
split[1] = _keywordToPercent[y] || y;
return split.join(" ");
},
_renderClearProps = function _renderClearProps(ratio, data) {
if (data.tween && data.tween._time === data.tween._dur) {
var target = data.t,
style = target.style,
props = data.u,
prop,
clearTransforms,
i;
if (props === "all" || props === true) {
style.cssText = "";
clearTransforms = 1;
} else {
props = props.split(",");
i = props.length;
while (--i > -1) {
prop = props[i];
if (_transformProps[prop]) {
clearTransforms = 1;
prop = prop === "transformOrigin" ? _transformOriginProp : _transformProp;
}
_removeProperty(target, prop);
}
}
if (clearTransforms) {
_removeProperty(target, _transformProp);
clearTransforms = target._gsap;
if (clearTransforms) {
if (clearTransforms.svg) {
target.removeAttribute("transform");
}
CSSPlugin_parseTransform(target, 1); // force all the cached values back to "normal"/identity, otherwise if there's another tween that's already set to render transforms on this element, it could display the wrong values.
}
}
}
},
// note: specialProps should return 1 if (and only if) they have a non-zero priority. It indicates we need to sort the linked list.
_specialProps = {
clearProps: function clearProps(plugin, target, property, endValue, tween) {
if (tween.data !== "isFromStart") {
var pt = plugin._pt = new PropTween(plugin._pt, target, property, 0, 0, _renderClearProps);
pt.u = endValue;
pt.pr = -10;
pt.tween = tween;
plugin._props.push(property);
return 1;
}
}
/* className feature (about 0.4kb gzipped).
, className(plugin, target, property, endValue, tween) {
let _renderClassName = (ratio, data) => {
data.css.render(ratio, data.css);
if (!ratio || ratio === 1) {
let inline = data.rmv,
target = data.t,
p;
target.setAttribute("class", ratio ? data.e : data.b);
for (p in inline) {
_removeProperty(target, p);
}
}
},
_getAllStyles = (target) => {
let styles = {},
computed = getComputedStyle(target),
p;
for (p in computed) {
if (isNaN(p) && p !== "cssText" && p !== "length") {
styles[p] = computed[p];
}
}
_setDefaults(styles, _parseTransform(target, 1));
return styles;
},
startClassList = target.getAttribute("class"),
style = target.style,
cssText = style.cssText,
cache = target._gsap,
classPT = cache.classPT,
inlineToRemoveAtEnd = {},
data = {t:target, plugin:plugin, rmv:inlineToRemoveAtEnd, b:startClassList, e:(endValue.charAt(1) !== "=") ? endValue : startClassList.replace(new RegExp("(?:\\s|^)" + endValue.substr(2) + "(?![\\w-])"), "") + ((endValue.charAt(0) === "+") ? " " + endValue.substr(2) : "")},
changingVars = {},
startVars = _getAllStyles(target),
transformRelated = /(transform|perspective)/i,
endVars, p;
if (classPT) {
classPT.r(1, classPT.d);
_removeLinkedListItem(classPT.d.plugin, classPT, "_pt");
}
target.setAttribute("class", data.e);
endVars = _getAllStyles(target, true);
target.setAttribute("class", startClassList);
for (p in endVars) {
if (endVars[p] !== startVars[p] && !transformRelated.test(p)) {
changingVars[p] = endVars[p];
if (!style[p] && style[p] !== "0") {
inlineToRemoveAtEnd[p] = 1;
}
}
}
cache.classPT = plugin._pt = new PropTween(plugin._pt, target, "className", 0, 0, _renderClassName, data, 0, -11);
if (style.cssText !== cssText) { //only apply if things change. Otherwise, in cases like a background-image that's pulled dynamically, it could cause a refresh. See https://greensock.com/forums/topic/20368-possible-gsap-bug-switching-classnames-in-chrome/.
style.cssText = cssText; //we recorded cssText before we swapped classes and ran _getAllStyles() because in cases when a className tween is overwritten, we remove all the related tweening properties from that class change (otherwise class-specific stuff can't override properties we've directly set on the target's style object due to specificity).
}
_parseTransform(target, true); //to clear the caching of transforms
data.css = new gsap.plugins.css();
data.css.init(target, changingVars, tween);
plugin._props.push(...data.css._props);
return 1;
}
*/
},
/*
* --------------------------------------------------------------------------------------
* TRANSFORMS
* --------------------------------------------------------------------------------------
*/
_identity2DMatrix = [1, 0, 0, 1, 0, 0],
_rotationalProperties = {},
_isNullTransform = function _isNullTransform(value) {
return value === "matrix(1, 0, 0, 1, 0, 0)" || value === "none" || !value;
},
CSSPlugin_getComputedTransformMatrixAsArray = function _getComputedTransformMatrixAsArray(target) {
var matrixString = _getComputedProperty(target, _transformProp);
return _isNullTransform(matrixString) ? _identity2DMatrix : matrixString.substr(7).match(_numExp).map(_round);
},
_getMatrix = function _getMatrix(target, force2D) {
var cache = target._gsap,
style = target.style,
matrix = CSSPlugin_getComputedTransformMatrixAsArray(target),
parent,
nextSibling,
temp,
addedToDOM;
if (cache.svg && target.getAttribute("transform")) {
temp = target.transform.baseVal.consolidate().matrix; //ensures that even complex values like "translate(50,60) rotate(135,0,0)" are parsed because it mashes it into a matrix.
matrix = [temp.a, temp.b, temp.c, temp.d, temp.e, temp.f];
return matrix.join(",") === "1,0,0,1,0,0" ? _identity2DMatrix : matrix;
} else if (matrix === _identity2DMatrix && !target.offsetParent && target !== _docElement && !cache.svg) {
//note: if offsetParent is null, that means the element isn't in the normal document flow, like if it has display:none or one of its ancestors has display:none). Firefox returns null for getComputedStyle() if the element is in an iframe that has display:none. https://bugzilla.mozilla.org/show_bug.cgi?id=548397
//browsers don't report transforms accurately unless the element is in the DOM and has a display value that's not "none". Firefox and Microsoft browsers have a partial bug where they'll report transforms even if display:none BUT not any percentage-based values like translate(-50%, 8px) will be reported as if it's translate(0, 8px).
temp = style.display;
style.display = "block";
parent = target.parentNode;
if (!parent || !target.offsetParent) {
addedToDOM = 1; //flag
nextSibling = target.nextSibling;
_docElement.appendChild(target); //we must add it to the DOM in order to get values properly
}
matrix = CSSPlugin_getComputedTransformMatrixAsArray(target);
if (temp) {
style.display = temp;
} else {
_removeProperty(target, "display");
}
if (addedToDOM) {
if (nextSibling) {
parent.insertBefore(target, nextSibling);
} else if (parent) {
parent.appendChild(target);
} else {
_docElement.removeChild(target);
}
}
}
return force2D && matrix.length > 6 ? [matrix[0], matrix[1], matrix[4], matrix[5], matrix[12], matrix[13]] : matrix;
},
_applySVGOrigin = function _applySVGOrigin(target, origin, originIsAbsolute, smooth, matrixArray, pluginToAddPropTweensTo) {
var cache = target._gsap,
matrix = matrixArray || _getMatrix(target, true),
xOriginOld = cache.xOrigin || 0,
yOriginOld = cache.yOrigin || 0,
xOffsetOld = cache.xOffset || 0,
yOffsetOld = cache.yOffset || 0,
a = matrix[0],
b = matrix[1],
c = matrix[2],
d = matrix[3],
tx = matrix[4],
ty = matrix[5],
originSplit = origin.split(" "),
xOrigin = parseFloat(originSplit[0]) || 0,
yOrigin = parseFloat(originSplit[1]) || 0,
bounds,
determinant,
x,
y;
if (!originIsAbsolute) {
bounds = _getBBox(target);
xOrigin = bounds.x + (~originSplit[0].indexOf("%") ? xOrigin / 100 * bounds.width : xOrigin);
yOrigin = bounds.y + (~(originSplit[1] || originSplit[0]).indexOf("%") ? yOrigin / 100 * bounds.height : yOrigin);
} else if (matrix !== _identity2DMatrix && (determinant = a * d - b * c)) {
//if it's zero (like if scaleX and scaleY are zero), skip it to avoid errors with dividing by zero.
x = xOrigin * (d / determinant) + yOrigin * (-c / determinant) + (c * ty - d * tx) / determinant;
y = xOrigin * (-b / determinant) + yOrigin * (a / determinant) - (a * ty - b * tx) / determinant;
xOrigin = x;
yOrigin = y;
}
if (smooth || smooth !== false && cache.smooth) {
tx = xOrigin - xOriginOld;
ty = yOrigin - yOriginOld;
cache.xOffset = xOffsetOld + (tx * a + ty * c) - tx;
cache.yOffset = yOffsetOld + (tx * b + ty * d) - ty;
} else {
cache.xOffset = cache.yOffset = 0;
}
cache.xOrigin = xOrigin;
cache.yOrigin = yOrigin;
cache.smooth = !!smooth;
cache.origin = origin;
cache.originIsAbsolute = !!originIsAbsolute;
target.style[_transformOriginProp] = "0px 0px"; //otherwise, if someone sets an origin via CSS, it will likely interfere with the SVG transform attribute ones (because remember, we're baking the origin into the matrix() value).
if (pluginToAddPropTweensTo) {
CSSPlugin_addNonTweeningPT(pluginToAddPropTweensTo, cache, "xOrigin", xOriginOld, xOrigin);
CSSPlugin_addNonTweeningPT(pluginToAddPropTweensTo, cache, "yOrigin", yOriginOld, yOrigin);
CSSPlugin_addNonTweeningPT(pluginToAddPropTweensTo, cache, "xOffset", xOffsetOld, cache.xOffset);
CSSPlugin_addNonTweeningPT(pluginToAddPropTweensTo, cache, "yOffset", yOffsetOld, cache.yOffset);
}
},
CSSPlugin_parseTransform = function _parseTransform(target, uncache) {
var cache = target._gsap || new GSCache(target);
if ("x" in cache && !uncache && !cache.uncache) {
return cache;
}
var style = target.style,
invertedScaleX = cache.scaleX < 0,
xOrigin = cache.xOrigin || 0,
yOrigin = cache.yOrigin || 0,
px = "px",
deg = "deg",
origin = _getComputedProperty(target, _transformOriginProp) || "0",
x,
y,
z,
scaleX,
scaleY,
rotation,
rotationX,
rotationY,
skewX,
skewY,
perspective,
matrix,
angle,
cos,
sin,
a,
b,
c,
d,
a12,
a22,
t1,
t2,
t3,
a13,
a23,
a33,
a42,
a43,
a32;
x = y = z = rotation = rotationX = rotationY = skewX = skewY = perspective = 0;
scaleX = scaleY = 1;
cache.svg = !!(target.getCTM && _isSVG(target));
matrix = _getMatrix(target, cache.svg);
if (cache.svg) {
_applySVGOrigin(target, origin, cache.originIsAbsolute, cache.smooth !== false, matrix);
}
if (matrix !== _identity2DMatrix) {
a = matrix[0]; //a11
b = matrix[1]; //a21
c = matrix[2]; //a31
d = matrix[3]; //a41
x = a12 = matrix[4];
y = a22 = matrix[5]; //2D matrix
if (matrix.length === 6) {
scaleX = Math.sqrt(a * a + b * b);
scaleY = Math.sqrt(d * d + c * c);
rotation = a || b ? _atan2(b, a) * _RAD2DEG : 0; //note: if scaleX is 0, we cannot accurately measure rotation. Same for skewX with a scaleY of 0. Therefore, we default to the previously recorded value (or zero if that doesn't exist).
skewX = c || d ? _atan2(c, d) * _RAD2DEG + rotation : 0;
if (cache.svg) {
x -= xOrigin - (xOrigin * a + yOrigin * c);
y -= yOrigin - (xOrigin * b + yOrigin * d);
} //3D matrix
} else {
a32 = matrix[6];
a42 = matrix[7];
a13 = matrix[8];
a23 = matrix[9];
a33 = matrix[10];
a43 = matrix[11];
x = matrix[12];
y = matrix[13];
z = matrix[14];
angle = _atan2(a32, a33);
rotationX = angle * _RAD2DEG; //rotationX
if (angle) {
cos = Math.cos(-angle);
sin = Math.sin(-angle);
t1 = a12 * cos + a13 * sin;
t2 = a22 * cos + a23 * sin;
t3 = a32 * cos + a33 * sin;
a13 = a12 * -sin + a13 * cos;
a23 = a22 * -sin + a23 * cos;
a33 = a32 * -sin + a33 * cos;
a43 = a42 * -sin + a43 * cos;
a12 = t1;
a22 = t2;
a32 = t3;
} //rotationY
angle = _atan2(-c, a33);
rotationY = angle * _RAD2DEG;
if (angle) {
cos = Math.cos(-angle);
sin = Math.sin(-angle);
t1 = a * cos - a13 * sin;
t2 = b * cos - a23 * sin;
t3 = c * cos - a33 * sin;
a43 = d * sin + a43 * cos;
a = t1;
b = t2;
c = t3;
} //rotationZ
angle = _atan2(b, a);
rotation = angle * _RAD2DEG;
if (angle) {
cos = Math.cos(angle);
sin = Math.sin(angle);
t1 = a * cos + b * sin;
t2 = a12 * cos + a22 * sin;
b = b * cos - a * sin;
a22 = a22 * cos - a12 * sin;
a = t1;
a12 = t2;
}
if (rotationX && Math.abs(rotationX) + Math.abs(rotation) > 359.9) {
//when rotationY is set, it will often be parsed as 180 degrees different than it should be, and rotationX and rotation both being 180 (it looks the same), so we adjust for that here.
rotationX = rotation = 0;
rotationY = 180 - rotationY;
}
scaleX = _round(Math.sqrt(a * a + b * b + c * c));
scaleY = _round(Math.sqrt(a22 * a22 + a32 * a32));
angle = _atan2(a12, a22);
skewX = Math.abs(angle) > 0.0002 ? angle * _RAD2DEG : 0;
perspective = a43 ? 1 / (a43 < 0 ? -a43 : a43) : 0;
}
if (cache.svg) {
//sense if there are CSS transforms applied on an SVG element in which case we must overwrite them when rendering. The transform attribute is more reliable cross-browser, but we can't just remove the CSS ones because they may be applied in a CSS rule somewhere (not just inline).
matrix = target.getAttribute("transform");
cache.forceCSS = target.setAttribute("transform", "") || !_isNullTransform(_getComputedProperty(target, _transformProp));
matrix && target.setAttribute("transform", matrix);
}
}
if (Math.abs(skewX) > 90 && Math.abs(skewX) < 270) {
if (invertedScaleX) {
scaleX *= -1;
skewX += rotation <= 0 ? 180 : -180;
rotation += rotation <= 0 ? 180 : -180;
} else {
scaleY *= -1;
skewX += skewX <= 0 ? 180 : -180;
}
}
cache.x = ((cache.xPercent = x && Math.round(target.offsetWidth / 2) === Math.round(-x) ? -50 : 0) ? 0 : x) + px;
cache.y = ((cache.yPercent = y && Math.round(target.offsetHeight / 2) === Math.round(-y) ? -50 : 0) ? 0 : y) + px;
cache.z = z + px;
cache.scaleX = _round(scaleX);
cache.scaleY = _round(scaleY);
cache.rotation = _round(rotation) + deg;
cache.rotationX = _round(rotationX) + deg;
cache.rotationY = _round(rotationY) + deg;
cache.skewX = skewX + deg;
cache.skewY = skewY + deg;
cache.transformPerspective = perspective + px;
if (cache.zOrigin = parseFloat(origin.split(" ")[2]) || 0) {
style[_transformOriginProp] = _firstTwoOnly(origin);
}
cache.xOffset = cache.yOffset = 0;
cache.force3D = _config.force3D;
cache.renderTransform = cache.svg ? CSSPlugin_renderSVGTransforms : _supports3D ? _renderCSSTransforms : _renderNon3DTransforms;
cache.uncache = 0;
return cache;
},
_firstTwoOnly = function _firstTwoOnly(value) {
return (value = value.split(" "))[0] + " " + value[1];
},
//for handling transformOrigin values, stripping out the 3rd dimension
CSSPlugin_addPxTranslate = function _addPxTranslate(target, start, value) {
var unit = getUnit(start);
return _round(parseFloat(start) + parseFloat(CSSPlugin_convertToUnit(target, "x", value + "px", unit))) + unit;
},
_renderNon3DTransforms = function _renderNon3DTransforms(ratio, cache) {
cache.z = "0px";
cache.rotationY = cache.rotationX = "0deg";
cache.force3D = 0;
_renderCSSTransforms(ratio, cache);
},
_zeroDeg = "0deg",
_zeroPx = "0px",
_endParenthesis = ") ",
_renderCSSTransforms = function _renderCSSTransforms(ratio, cache) {
var _ref = cache || this,
xPercent = _ref.xPercent,
yPercent = _ref.yPercent,
x = _ref.x,
y = _ref.y,
z = _ref.z,
rotation = _ref.rotation,
rotationY = _ref.rotationY,
rotationX = _ref.rotationX,
skewX = _ref.skewX,
skewY = _ref.skewY,
scaleX = _ref.scaleX,
scaleY = _ref.scaleY,
transformPerspective = _ref.transformPerspective,
force3D = _ref.force3D,
target = _ref.target,
zOrigin = _ref.zOrigin,
transforms = "",
use3D = force3D === "auto" && ratio && ratio !== 1 || force3D === true; // Safari has a bug that causes it not to render 3D transform-origin values properly, so we force the z origin to 0, record it in the cache, and then do the math here to offset the translate values accordingly (basically do the 3D transform-origin part manually)
if (zOrigin && (rotationX !== _zeroDeg || rotationY !== _zeroDeg)) {
var angle = parseFloat(rotationY) * _DEG2RAD,
a13 = Math.sin(angle),
a33 = Math.cos(angle),
cos;
angle = parseFloat(rotationX) * _DEG2RAD;
cos = Math.cos(angle);
x = CSSPlugin_addPxTranslate(target, x, a13 * cos * -zOrigin);
y = CSSPlugin_addPxTranslate(target, y, -Math.sin(angle) * -zOrigin);
z = CSSPlugin_addPxTranslate(target, z, a33 * cos * -zOrigin + zOrigin);
}
if (transformPerspective !== _zeroPx) {
transforms += "perspective(" + transformPerspective + _endParenthesis;
}
if (xPercent || yPercent) {
transforms += "translate(" + xPercent + "%, " + yPercent + "%) ";
}
if (use3D || x !== _zeroPx || y !== _zeroPx || z !== _zeroPx) {
transforms += z !== _zeroPx || use3D ? "translate3d(" + x + ", " + y + ", " + z + ") " : "translate(" + x + ", " + y + _endParenthesis;
}
if (rotation !== _zeroDeg) {
transforms += "rotate(" + rotation + _endParenthesis;
}
if (rotationY !== _zeroDeg) {
transforms += "rotateY(" + rotationY + _endParenthesis;
}
if (rotationX !== _zeroDeg) {
transforms += "rotateX(" + rotationX + _endParenthesis;
}
if (skewX !== _zeroDeg || skewY !== _zeroDeg) {
transforms += "skew(" + skewX + ", " + skewY + _endParenthesis;
}
if (scaleX !== 1 || scaleY !== 1) {
transforms += "scale(" + scaleX + ", " + scaleY + _endParenthesis;
}
target.style[_transformProp] = transforms || "translate(0, 0)";
},
CSSPlugin_renderSVGTransforms = function _renderSVGTransforms(ratio, cache) {
var _ref2 = cache || this,
xPercent = _ref2.xPercent,
yPercent = _ref2.yPercent,
x = _ref2.x,
y = _ref2.y,
rotation = _ref2.rotation,
skewX = _ref2.skewX,
skewY = _ref2.skewY,
scaleX = _ref2.scaleX,
scaleY = _ref2.scaleY,
target = _ref2.target,
xOrigin = _ref2.xOrigin,
yOrigin = _ref2.yOrigin,
xOffset = _ref2.xOffset,
yOffset = _ref2.yOffset,
forceCSS = _ref2.forceCSS,
tx = parseFloat(x),
ty = parseFloat(y),
a11,
a21,
a12,
a22,
temp;
rotation = parseFloat(rotation);
skewX = parseFloat(skewX);
skewY = parseFloat(skewY);
if (skewY) {
//for performance reasons, we combine all skewing into the skewX and rotation values. Remember, a skewY of 10 degrees looks the same as a rotation of 10 degrees plus a skewX of 10 degrees.
skewY = parseFloat(skewY);
skewX += skewY;
rotation += skewY;
}
if (rotation || skewX) {
rotation *= _DEG2RAD;
skewX *= _DEG2RAD;
a11 = Math.cos(rotation) * scaleX;
a21 = Math.sin(rotation) * scaleX;
a12 = Math.sin(rotation - skewX) * -scaleY;
a22 = Math.cos(rotation - skewX) * scaleY;
if (skewX) {
skewY *= _DEG2RAD;
temp = Math.tan(skewX - skewY);
temp = Math.sqrt(1 + temp * temp);
a12 *= temp;
a22 *= temp;
if (skewY) {
temp = Math.tan(skewY);
temp = Math.sqrt(1 + temp * temp);
a11 *= temp;
a21 *= temp;
}
}
a11 = _round(a11);
a21 = _round(a21);
a12 = _round(a12);
a22 = _round(a22);
} else {
a11 = scaleX;
a22 = scaleY;
a21 = a12 = 0;
}
if (tx && !~(x + "").indexOf("px") || ty && !~(y + "").indexOf("px")) {
tx = CSSPlugin_convertToUnit(target, "x", x, "px");
ty = CSSPlugin_convertToUnit(target, "y", y, "px");
}
if (xOrigin || yOrigin || xOffset || yOffset) {
tx = _round(tx + xOrigin - (xOrigin * a11 + yOrigin * a12) + xOffset);
ty = _round(ty + yOrigin - (xOrigin * a21 + yOrigin * a22) + yOffset);
}
if (xPercent || yPercent) {
//The SVG spec doesn't support percentage-based translation in the "transform" attribute, so we merge it into the translation to simulate it.
temp = target.getBBox();
tx = _round(tx + xPercent / 100 * temp.width);
ty = _round(ty + yPercent / 100 * temp.height);
}
temp = "matrix(" + a11 + "," + a21 + "," + a12 + "," + a22 + "," + tx + "," + ty + ")";
target.setAttribute("transform", temp);
if (forceCSS) {
//some browsers prioritize CSS transforms over the transform attribute. When we sense that the user has CSS transforms applied, we must overwrite them this way (otherwise some browser simply won't render the transform attribute changes!)
target.style[_transformProp] = temp;
}
},
CSSPlugin_addRotationalPropTween = function _addRotationalPropTween(plugin, target, property, startNum, endValue, relative) {
var cap = 360,
isString = _isString(endValue),
endNum = parseFloat(endValue) * (isString && ~endValue.indexOf("rad") ? _RAD2DEG : 1),
change = relative ? endNum * relative : endNum - startNum,
finalValue = startNum + change + "deg",
direction,
pt;
if (isString) {
direction = endValue.split("_")[1];
if (direction === "short") {
change %= cap;
if (change !== change % (cap / 2)) {
change += change < 0 ? cap : -cap;
}
}
if (direction === "cw" && change < 0) {
change = (change + cap * CSSPlugin_bigNum) % cap - ~~(change / cap) * cap;
} else if (direction === "ccw" && change > 0) {
change = (change - cap * CSSPlugin_bigNum) % cap - ~~(change / cap) * cap;
}
}
plugin._pt = pt = new PropTween(plugin._pt, target, property, startNum, change, _renderPropWithEnd);
pt.e = finalValue;
pt.u = "deg";
plugin._props.push(property);
return pt;
},
CSSPlugin_addRawTransformPTs = function _addRawTransformPTs(plugin, transforms, target) {
//for handling cases where someone passes in a whole transform string, like transform: "scale(2, 3) rotate(20deg) translateY(30em)"
var style = _tempDivStyler.style,
startCache = target._gsap,
exclude = "perspective,force3D,transformOrigin,svgOrigin",
endCache,
p,
startValue,
endValue,
startNum,
endNum,
startUnit,
endUnit;
style.cssText = getComputedStyle(target).cssText + ";position:absolute;display:block;"; //%-based translations will fail unless we set the width/height to match the original target (and padding/borders can affect it)
style[_transformProp] = transforms;
CSSPlugin_doc.body.appendChild(_tempDivStyler);
endCache = CSSPlugin_parseTransform(_tempDivStyler, 1);
for (p in _transformProps) {
startValue = startCache[p];
endValue = endCache[p];
if (startValue !== endValue && exclude.indexOf(p) < 0) {
//tweening to no perspective gives very unintuitive results - just keep the same perspective in that case.
startUnit = getUnit(startValue);
endUnit = getUnit(endValue);
startNum = startUnit !== endUnit ? CSSPlugin_convertToUnit(target, p, startValue, endUnit) : parseFloat(startValue);
endNum = parseFloat(endValue);
plugin._pt = new PropTween(plugin._pt, startCache, p, startNum, endNum - startNum, _renderCSSProp);
plugin._pt.u = endUnit || 0;
plugin._props.push(p);
}
}
CSSPlugin_doc.body.removeChild(_tempDivStyler);
}; // handle splitting apart padding, margin, borderWidth, and borderRadius into their 4 components. Firefox, for example, won't report borderRadius correctly - it will only do borderTopLeftRadius and the other corners. We also want to handle paddingTop, marginLeft, borderRightWidth, etc.
_forEachName("padding,margin,Width,Radius", function (name, index) {
var t = "Top",
r = "Right",
b = "Bottom",
l = "Left",
props = (index < 3 ? [t, r, b, l] : [t + l, t + r, b + r, b + l]).map(function (side) {
return index < 2 ? name + side : "border" + side + name;
});
_specialProps[index > 1 ? "border" + name : name] = function (plugin, target, property, endValue, tween) {
var a, vars;
if (arguments.length < 4) {
// getter, passed target, property, and unit (from _get())
a = props.map(function (prop) {
return CSSPlugin_get(plugin, prop, property);
});
vars = a.join(" ");
return vars.split(a[0]).length === 5 ? a[0] : vars;
}
a = (endValue + "").split(" ");
vars = {};
props.forEach(function (prop, i) {
return vars[prop] = a[i] = a[i] || a[(i - 1) / 2 | 0];
});
plugin.init(target, vars, tween);
};
});
var CSSPlugin = {
name: "css",
register: _initCore,
targetTest: function targetTest(target) {
return target.style && target.nodeType;
},
init: function init(target, vars, tween, index, targets) {
var props = this._props,
style = target.style,
startValue,
endValue,
endNum,
startNum,
type,
specialProp,
p,
startUnit,
endUnit,
relative,
isTransformRelated,
transformPropTween,
cache,
smooth,
hasPriority;
if (!_pluginInitted) {
_initCore();
}
for (p in vars) {
if (p === "autoRound") {
continue;
}
endValue = vars[p];
if (_plugins[p] && _checkPlugin(p, vars, tween, index, target, targets)) {
//plugins
continue;
}
type = typeof endValue;
specialProp = _specialProps[p];
if (type === "function") {
endValue = endValue.call(tween, index, target, targets);
type = typeof endValue;
}
if (type === "string" && ~endValue.indexOf("random(")) {
endValue = _replaceRandom(endValue);
}
if (specialProp) {
if (specialProp(this, target, p, endValue, tween)) {
hasPriority = 1;
}
} else if (p.substr(0, 2) === "--") {
//CSS variable
this.add(style, "setProperty", getComputedStyle(target).getPropertyValue(p) + "", endValue + "", index, targets, 0, 0, p);
} else {
startValue = CSSPlugin_get(target, p);
startNum = parseFloat(startValue);
relative = type === "string" && endValue.charAt(1) === "=" ? +(endValue.charAt(0) + "1") : 0;
if (relative) {
endValue = endValue.substr(2);
}
endNum = parseFloat(endValue);
if (p in _propertyAliases) {
if (p === "autoAlpha") {
//special case where we control the visibility along with opacity. We still allow the opacity value to pass through and get tweened.
if (startNum === 1 && CSSPlugin_get(target, "visibility") === "hidden" && endNum) {
//if visibility is initially set to "hidden", we should interpret that as intent to make opacity 0 (a convenience)
startNum = 0;
}
CSSPlugin_addNonTweeningPT(this, style, "visibility", startNum ? "inherit" : "hidden", endNum ? "inherit" : "hidden", !endNum);
}
if (p !== "scale" && p !== "transform") {
p = _propertyAliases[p];
if (~p.indexOf(",")) {
p = p.split(",")[0];
}
}
}
isTransformRelated = p in _transformProps; //--- TRANSFORM-RELATED ---
if (isTransformRelated) {
if (!transformPropTween) {
cache = target._gsap;
cache.renderTransform || CSSPlugin_parseTransform(target); // if, for example, gsap.set(... {transform:"translateX(50vw)"}), the _get() call doesn't parse the transform, thus cache.renderTransform won't be set yet so force the parsing of the transform here.
smooth = vars.smoothOrigin !== false && cache.smooth;
transformPropTween = this._pt = new PropTween(this._pt, style, _transformProp, 0, 1, cache.renderTransform, cache, 0, -1); //the first time through, create the rendering PropTween so that it runs LAST (in the linked list, we keep adding to the beginning)
transformPropTween.dep = 1; //flag it as dependent so that if things get killed/overwritten and this is the only PropTween left, we can safely kill the whole tween.
}
if (p === "scale") {
this._pt = new PropTween(this._pt, cache, "scaleY", cache.scaleY, relative ? relative * endNum : endNum - cache.scaleY);
props.push("scaleY", p);
p += "X";
} else if (p === "transformOrigin") {
endValue = _convertKeywordsToPercentages(endValue); //in case something like "left top" or "bottom right" is passed in. Convert to percentages.
if (cache.svg) {
_applySVGOrigin(target, endValue, 0, smooth, 0, this);
} else {
endUnit = parseFloat(endValue.split(" ")[2]); //handle the zOrigin separately!
if (endUnit !== cache.zOrigin) {
CSSPlugin_addNonTweeningPT(this, cache, "zOrigin", cache.zOrigin, endUnit);
}
CSSPlugin_addNonTweeningPT(this, style, p, _firstTwoOnly(startValue), _firstTwoOnly(endValue));
}
continue;
} else if (p === "svgOrigin") {
_applySVGOrigin(target, endValue, 1, smooth, 0, this);
continue;
} else if (p in _rotationalProperties) {
CSSPlugin_addRotationalPropTween(this, cache, p, startNum, endValue, relative);
continue;
} else if (p === "smoothOrigin") {
CSSPlugin_addNonTweeningPT(this, cache, "smooth", cache.smooth, endValue);
continue;
} else if (p === "force3D") {
cache[p] = endValue;
continue;
} else if (p === "transform") {
CSSPlugin_addRawTransformPTs(this, endValue, target);
continue;
}
} else if (!(p in style)) {
p = _checkPropPrefix(p) || p;
}
if (isTransformRelated || (endNum || endNum === 0) && (startNum || startNum === 0) && !_complexExp.test(endValue) && p in style) {
startUnit = (startValue + "").substr((startNum + "").length);
endUnit = (endValue + "").substr((endNum + "").length) || (p in _config.units ? _config.units[p] : startUnit);
if (startUnit !== endUnit) {
startNum = CSSPlugin_convertToUnit(target, p, startValue, endUnit);
}
this._pt = new PropTween(this._pt, isTransformRelated ? cache : style, p, startNum, relative ? relative * endNum : endNum - startNum, endUnit === "px" && vars.autoRound !== false && !isTransformRelated ? _renderRoundedCSSProp : _renderCSSProp);
this._pt.u = endUnit || 0;
if (startUnit !== endUnit) {
//when the tween goes all the way back to the beginning, we need to revert it to the OLD/ORIGINAL value (with those units). We record that as a "b" (beginning) property and point to a render method that handles that. (performance optimization)
this._pt.b = startValue;
this._pt.r = _renderCSSPropWithBeginning;
}
} else if (!(p in style)) {
if (p in target) {
//maybe it's not a style - it could be a property added directly to an element in which case we'll try to animate that.
this.add(target, p, target[p], endValue, index, targets);
} else {
_missingPlugin(p, endValue);
continue;
}
} else {
CSSPlugin_tweenComplexCSSString.call(this, target, p, startValue, endValue);
}
props.push(p);
}
}
if (hasPriority) {
_sortPropTweensByPriority(this);
}
},
get: CSSPlugin_get,
aliases: _propertyAliases,
getSetter: function getSetter(target, property, plugin) {
//returns a setter function that accepts target, property, value and applies it accordingly. Remember, properties like "x" aren't as simple as target.style.property = value because they've got to be applied to a proxy object and then merged into a transform string in a renderer.
property = _propertyAliases[property] || property;
return property in _transformProps && property !== _transformOriginProp && (target._gsap.x || CSSPlugin_get(target, "x")) ? plugin && _recentSetterPlugin === plugin ? property === "scale" ? _setterScale : _setterTransform : (_recentSetterPlugin = plugin || {}) && (property === "scale" ? _setterScaleWithRender : _setterTransformWithRender) : target.style && !_isUndefined(target.style[property]) ? _setterCSSStyle : ~property.indexOf("-") ? _setterCSSProp : _getSetter(target, property);
}
};
gsap.utils.checkPrefix = _checkPropPrefix;
(function (positionAndScale, rotation, others, aliases) {
var all = _forEachName(positionAndScale + "," + rotation + "," + others, function (name) {
_transformProps[name] = 1;
});
_forEachName(rotation, function (name) {
_config.units[name] = "deg";
_rotationalProperties[name] = 1;
});
_propertyAliases[all[13]] = positionAndScale + "," + rotation;
_forEachName(aliases, function (name) {
var split = name.split(":");
_propertyAliases[split[1]] = all[split[0]];
});
})("x,y,z,scale,scaleX,scaleY,xPercent,yPercent", "rotation,rotationX,rotationY,skewX,skewY", "transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective", "0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY");
_forEachName("x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective", function (name) {
_config.units[name] = "px";
});
gsap.registerPlugin(CSSPlugin);
// CONCATENATED MODULE: ./node_modules/gsap/index.js
var gsapWithCSS = gsap.registerPlugin(CSSPlugin) || gsap,
// to protect from tree shaking
TweenMaxWithCSS = gsapWithCSS.core.Tween;
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/text-field/text-field.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
gsapWithCSS.registerPlugin(Tween);
var types = Object.freeze({
TEXT: 'text',
PASSWORD: 'password',
NUMBER: 'number'
});
/* harmony default export */ var text_fieldvue_type_script_lang_js_ = ({
name: 'TextField',
props: {
label: {
type: String,
required: true
},
placeHolder: {
type: String,
required: true
},
type: {
type: String,
validator: function validator(val) {
return Object.values(types).includes(val);
},
default: 'text'
},
icon: {
type: String,
default: null
},
disabled: {
type: Boolean,
default: false
},
error: {
type: String,
default: null
},
required: {
type: Boolean,
default: false
},
value: {
type: String,
default: ''
},
autofocus: {
type: Boolean,
default: false
},
pattern: {
type: String,
default: null
},
rules: {
type: String,
default: null
}
},
data: function data() {
return {
types: types,
active: false,
iconColor: this.$tokens.color.grey['50'].value
};
},
computed: {
classes: function classes() {
if (this.disabled) {
return 'disabled';
}
var placeholder = this.value === '' ? 'text-field--placeholder' : '';
var active = this.active ? 'text-field--active' : '';
var error = this.error ? 'text-field--error' : '';
return "".concat(active, " ").concat(placeholder, " ").concat(error);
}
},
mounted: function mounted() {
var _this = this;
this.$nextTick(function () {
if (_this.autofocus) {
_this.setFocus();
}
});
},
methods: {
activate: function activate() {
if (this.disabled) {
return;
}
this.active = true;
this.changeIconColor('#000000'); // const el = this.$refs.wrapper
// TweenLite.to(el, 0.2, {
// paddingLeft: 0
// })
},
deactivate: function deactivate() {
if (this.disabled) {
return;
}
this.active = false;
this.changeIconColor(this.$tokens.color.grey['50'].value);
this.$emit('blur'); // const el = this.$refs.wrapper
// TweenLite.to(el, 0.2, {
// paddingLeft: this.$tokens.size.spacing.m.value
// })
},
changeIconColor: function changeIconColor(color) {
this.iconColor = color;
},
hoverIn: function hoverIn() {
if (this.disabled) {
return;
}
if (!this.active) {
this.changeIconColor('#000000');
}
},
hoverOut: function hoverOut() {
if (this.disabled) {
return;
}
if (!this.active) {
this.changeIconColor(this.$tokens.color.grey['50'].value);
}
},
setFocus: function setFocus() {
if (this.disabled) {
return;
}
this.$refs.input.focus();
},
updateValue: function updateValue(value) {
if (this.error) {
this.$emit('clearError');
}
this.$emit('input', value);
},
togglePassword: function togglePassword() {
var input = this.$refs.input;
if (input.type === 'password') {
this.$emit('passwordToggled', 'visible');
input.type = 'text';
} else {
this.$emit('passwordToggled', 'invisible');
input.type = 'password';
}
}
}
});
// CONCATENATED MODULE: ./src/components/text-field/text-field.vue?vue&type=script&lang=js&
/* harmony default export */ var text_field_text_fieldvue_type_script_lang_js_ = (text_fieldvue_type_script_lang_js_);
// EXTERNAL MODULE: ./src/components/text-field/text-field.scss?vue&type=style&index=0&id=0cef31b4&lang=scss&scoped=true&
var text_fieldvue_type_style_index_0_id_0cef31b4_lang_scss_scoped_true_ = __webpack_require__("6c28");
// CONCATENATED MODULE: ./src/components/text-field/text-field.vue
/* normalize component */
var text_field_component = normalizeComponent(
text_field_text_fieldvue_type_script_lang_js_,
text_fieldvue_type_template_id_0cef31b4_scoped_true_render,
text_fieldvue_type_template_id_0cef31b4_scoped_true_staticRenderFns,
false,
null,
"0cef31b4",
null
)
/* harmony default export */ var text_field = (text_field_component.exports);
// CONCATENATED MODULE: ./src/components/text-field/index.js
/* harmony default export */ var components_text_field = (text_field);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/navigation-bar/navigation-bar.vue?vue&type=template&id=648f09ae&scoped=true&
var navigation_barvue_type_template_id_648f09ae_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"navigation-bar row py-s px-m",class:_vm.cssClasses},[(_vm.back)?_c('div',[_c('b-button',{attrs:{"icon":"arrow_back","active-state":false,"ripple-color":_vm.$tokens.color.grey['95'].value,"type":"icon"},on:{"clicked":_vm.backEvent}})],1):(_vm.leftIcon)?_c('div',{staticClass:"flex-self-center"},[_c('icon',{attrs:{"icon":_vm.leftIcon,"flat":true}})],1):_vm._e(),_c('div',{staticClass:"col flex-self-center",class:_vm.leftIcon || _vm.back ? 'flex-center' : ''},[_vm._t("title",[_c('div',{staticClass:"text-section"},[_vm._v(" "+_vm._s(_vm.title)+" ")])])],2),_c('div',[_c('b-button',{attrs:{"icon":"close","active-state":false,"ripple-color":_vm.$tokens.color.grey['95'].value,"type":"icon"},on:{"clicked":_vm.closeEvent}})],1)])}
var navigation_barvue_type_template_id_648f09ae_scoped_true_staticRenderFns = []
// CONCATENATED MODULE: ./src/components/navigation-bar/navigation-bar.vue?vue&type=template&id=648f09ae&scoped=true&
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/navigation-bar/navigation-bar.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ var navigation_barvue_type_script_lang_js_ = ({
name: 'NavigationBar',
props: {
title: {
type: String,
default: ''
},
back: {
type: Boolean,
default: false
},
leftIcon: {
type: String,
default: null
},
border: {
type: Boolean,
default: true
},
boxShadow: {
type: Boolean,
default: false
}
},
computed: {
cssClasses: function cssClasses() {
var boxShadow = this.boxShadow ? 'navigation-bar--box-shadow' : '';
var border = this.border ? 'navigation-bar--bordered' : '';
return "".concat(boxShadow, " ").concat(border);
}
},
methods: {
backEvent: function backEvent() {
var _this = this;
setTimeout(function () {
return _this.$emit('back');
}, 200);
},
closeEvent: function closeEvent() {
var _this2 = this;
setTimeout(function () {
return _this2.$emit('close');
}, 200);
}
}
});
// CONCATENATED MODULE: ./src/components/navigation-bar/navigation-bar.vue?vue&type=script&lang=js&
/* harmony default export */ var navigation_bar_navigation_barvue_type_script_lang_js_ = (navigation_barvue_type_script_lang_js_);
// EXTERNAL MODULE: ./src/components/navigation-bar/navigation-bar.scss?vue&type=style&index=0&id=648f09ae&lang=scss&scoped=true&
var navigation_barvue_type_style_index_0_id_648f09ae_lang_scss_scoped_true_ = __webpack_require__("28a3");
// CONCATENATED MODULE: ./src/components/navigation-bar/navigation-bar.vue
/* normalize component */
var navigation_bar_component = normalizeComponent(
navigation_bar_navigation_barvue_type_script_lang_js_,
navigation_barvue_type_template_id_648f09ae_scoped_true_render,
navigation_barvue_type_template_id_648f09ae_scoped_true_staticRenderFns,
false,
null,
"648f09ae",
null
)
/* harmony default export */ var navigation_bar = (navigation_bar_component.exports);
// CONCATENATED MODULE: ./src/components/navigation-bar/index.js
/* harmony default export */ var components_navigation_bar = (navigation_bar);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/alert/alert.vue?vue&type=template&id=6c6d679c&scoped=true&
var alertvue_type_template_id_6c6d679c_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"alert pb-m pl-m"},[_c('div',{staticClass:"row flex-between"},[_c('div',{staticClass:"col-8 pt-m"},[_c('div',{staticClass:"alert__title col text-section"},[_vm._v(" "+_vm._s(_vm.title)+" ")]),_c('div',{staticClass:"alert__body text-text",domProps:{"innerHTML":_vm._s(_vm.body)}})]),_c('div',{staticClass:"col-3 pt-s pr-s"},[_c('b-button',{attrs:{"type":"icon","icon":"close","ripple-color":_vm.$tokens.color.grey['95'].value},on:{"clicked":_vm.close}})],1)])])}
var alertvue_type_template_id_6c6d679c_scoped_true_staticRenderFns = []
// CONCATENATED MODULE: ./src/components/alert/alert.vue?vue&type=template&id=6c6d679c&scoped=true&
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/alert/alert.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ var alertvue_type_script_lang_js_ = ({
name: 'Alert',
props: {
title: {
type: String,
required: true
},
body: {
type: String,
required: true
}
},
methods: {
close: function close() {
var _this = this;
setTimeout(function () {
return _this.$emit('close');
}, 200);
}
}
});
// CONCATENATED MODULE: ./src/components/alert/alert.vue?vue&type=script&lang=js&
/* harmony default export */ var alert_alertvue_type_script_lang_js_ = (alertvue_type_script_lang_js_);
// EXTERNAL MODULE: ./src/components/alert/alert.scss?vue&type=style&index=0&id=6c6d679c&lang=scss&scoped=true&
var alertvue_type_style_index_0_id_6c6d679c_lang_scss_scoped_true_ = __webpack_require__("b136");
// CONCATENATED MODULE: ./src/components/alert/alert.vue
/* normalize component */
var alert_component = normalizeComponent(
alert_alertvue_type_script_lang_js_,
alertvue_type_template_id_6c6d679c_scoped_true_render,
alertvue_type_template_id_6c6d679c_scoped_true_staticRenderFns,
false,
null,
"6c6d679c",
null
)
/* harmony default export */ var alert_alert = (alert_component.exports);
// CONCATENATED MODULE: ./src/components/alert/index.js
/* harmony default export */ var components_alert = (alert_alert);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/dialog/dialog.vue?vue&type=template&id=17efdcdb&scoped=true&
var dialogvue_type_template_id_17efdcdb_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"overlay",class:_vm.cssClasses,style:(_vm.cssVars)},[_c('transition',{attrs:{"appear":"","name":!_vm.dialogCentered() ? 'translate' : '',"enter-active-class":!_vm.dialogCentered() ? 'translate-in' : '',"leave-active-class":!_vm.dialogCentered() ? 'translate-out' : ''}},[_c('div',{staticClass:"dialog"},[_c('div',{staticClass:"dialog__wrapper text-center"},[_vm._t("icon",[_c('div',{staticClass:"mt-m text-regular-28",domProps:{"innerHTML":_vm._s(_vm.icon)}})]),_c('div',{staticClass:"m-l mt-m"},[_c('div',{staticClass:"col text-medium-16",class:("text-" + _vm.align)},[_vm._v(" "+_vm._s(_vm.title)+" ")]),_c('div',{staticClass:"dialog__body text-regular-14",class:("text-" + _vm.align)},[_vm._v(" "+_vm._s(_vm.body)+" ")]),_c('div',{staticClass:"pt-2xl row flex-center"},[(_vm.cancelText)?_c('div',[_c('b-button',{attrs:{"text":_vm.cancelText,"type":"secondary"},on:{"clicked":_vm.cancel}})],1):_vm._e(),_c('div',{class:_vm.cancelText ? 'pl-m' : ''},[_c('b-button',{attrs:{"text":_vm.okText,"type":"primary","color":_vm.$tokens.color.blue['60'].value},on:{"clicked":_vm.ok}})],1)])])],2)])])],1)}
var dialogvue_type_template_id_17efdcdb_scoped_true_staticRenderFns = []
// CONCATENATED MODULE: ./src/components/dialog/dialog.vue?vue&type=template&id=17efdcdb&scoped=true&
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.number.constructor.js
var es_number_constructor = __webpack_require__("a9e3");
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/dialog/dialog.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
var dialogvue_type_script_lang_js_types = Object.freeze({
ABSOLUTE: 'absolute',
FIXED: 'fixed'
});
/* harmony default export */ var dialogvue_type_script_lang_js_ = ({
name: 'BDialog',
props: {
/**
* Dialog title text
*/
title: {
type: String,
required: true
},
/**
* Dialog body text
*/
body: {
type: String,
required: true
},
/**
* Emoji for the header
*/
icon: {
type: String,
default: null
},
/**
* Cancel button text. Blank to hide the button
*/
cancelText: {
type: String,
default: null
},
/**
* Action button text
*/
okText: {
type: String,
required: true
},
/**
* Whether has or not overlay
*/
overlay: {
type: Boolean,
default: false
},
/**
* Dialog text align
*/
align: {
type: String,
default: 'center'
},
/**
* Snack-bar top position
*/
top: {
type: Number,
default: null
},
/**
* Snack-bar right position
*/
right: {
type: Number,
default: null
},
/**
* Overlay color
*/
overlayColor: {
type: String,
default: null
},
/**
* Dialog and overlay position
*/
position: {
type: String,
validator: function validator(val) {
return Object.values(dialogvue_type_script_lang_js_types).includes(val);
},
default: 'fixed'
}
},
computed: {
cssClasses: function cssClasses() {
var overlay = this.overlay ? 'overlay--active' : '';
var center = this.dialogCentered() ? 'overlay--center' : '';
return "".concat(overlay, " ").concat(center);
},
cssVars: function cssVars() {
return {
'--overlay-color': this.overlayColor || "".concat(this.$tokens.color.blue['10'].value, "B3"),
'--top': "".concat(this.top, "px"),
'--right': "".concat(this.right, "px"),
'--position': this.position
};
}
},
methods: {
cancel: function cancel() {
var _this = this;
setTimeout(function () {
return _this.$emit('cancel');
}, 200);
},
ok: function ok() {
var _this2 = this;
setTimeout(function () {
return _this2.$emit('ok');
}, 200);
},
dialogCentered: function dialogCentered() {
return this.top == null && this.right == null;
}
}
});
// CONCATENATED MODULE: ./src/components/dialog/dialog.vue?vue&type=script&lang=js&
/* harmony default export */ var dialog_dialogvue_type_script_lang_js_ = (dialogvue_type_script_lang_js_);
// EXTERNAL MODULE: ./src/components/dialog/dialog.scss?vue&type=style&index=0&id=17efdcdb&lang=scss&scoped=true&
var dialogvue_type_style_index_0_id_17efdcdb_lang_scss_scoped_true_ = __webpack_require__("7687");
// CONCATENATED MODULE: ./src/components/dialog/dialog.vue
/* normalize component */
var dialog_component = normalizeComponent(
dialog_dialogvue_type_script_lang_js_,
dialogvue_type_template_id_17efdcdb_scoped_true_render,
dialogvue_type_template_id_17efdcdb_scoped_true_staticRenderFns,
false,
null,
"17efdcdb",
null
)
/* harmony default export */ var dialog = (dialog_component.exports);
// CONCATENATED MODULE: ./src/components/dialog/index.js
/* harmony default export */ var components_dialog = (dialog);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/dropdown/dropdown.vue?vue&type=template&id=0735937e&scoped=true&
var dropdownvue_type_template_id_0735937e_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{directives:[{name:"ripple",rawName:"v-ripple",value:({color: '#ffffff'}),expression:"{color: '#ffffff'}"}],ref:"dropdown",staticClass:"dropdown",class:_vm.cssClasses,attrs:{"disabled":_vm.disabled},on:{"click":_vm.activate,"keyup":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }return _vm.activate($event)}}},[_c('div',[_c('div',{staticClass:"dropdown__content row flex-middle"},[_c('div',{staticClass:"col"},[(_vm.label)?_c('div',{staticClass:"dropdown__content-label text-regular-12 pt-s pl-m ripple",class:_vm.isEmtpy ? '' : 'filled',domProps:{"innerHTML":_vm._s(_vm.label)}}):_vm._e(),_c('div',{staticClass:"row flex-between pr-s py-s"},[_c('div',{staticClass:"col row"},[_c('div',{staticClass:"dropdown__content-text text-regular-16 pl-m ripple",class:_vm.isEmtpy ? 'placeholder' : '',domProps:{"innerHTML":_vm._s(_vm.isEmtpy ? _vm.placeholder : _vm.name)}}),_c('input',{ref:"input",staticClass:"p-0",attrs:{"aria-readonly":"true","autocomplete":"off"},on:{"focus":function($event){_vm.focused = true},"blur":_vm.blur}}),_c('select',{ref:"select",staticClass:"text-regular-16",attrs:{"disabled":!_vm.isMobileDevice() ? true : false},on:{"change":function($event){return _vm.selectItem(_vm.items[$event.target.value])},"blur":_vm.blur}},[_c('option',{attrs:{"value":"","disabled":"","selected":""}},[_vm._v(" "+_vm._s(_vm.placeholder)+" ")]),_vm._l((_vm.items),function(item,index){return _c('option',{key:index,domProps:{"value":index},on:{"click":function($event){return _vm.selectItem(item)}}},[_vm._v(" "+_vm._s(item.name)+" ")])})],2)])])]),_c('icon',{staticClass:"pr-m relative z-2",attrs:{"flat":true,"color":_vm.disabled ? _vm.$tokens.color.grey['90'].value : '#000000',"icon":"unfold"}})],1),_c('input',{attrs:{"type":"hidden"},domProps:{"value":_vm.value}}),_c('div',{staticClass:"dropdown__border relative z-2",class:_vm.borderClasses})]),_c('div',[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.showMenu),expression:"showMenu"}],ref:"menu",staticClass:"dropdown__menu"},[_c('div',{staticClass:"dropdown__menu-items p-0 m-0"},_vm._l((_vm.items),function(item){return _c('div',{key:item.value,staticClass:"dropdown__menu-items__item px-m",on:{"mousedown":function($event){$event.preventDefault();return _vm.selectItem(item)}}},[_c('div',{staticClass:"dropdown__menu-items__item-wrapper flex flex-middle"},[_c('div',{staticClass:"dropdown__menu-items__item-text text-regular-16",domProps:{"innerHTML":_vm._s(item.name)}})])])}),0)])])]),_c('div',{staticClass:"dropdown__error text-regular-12"},[(_vm.error)?_c('div',[_vm._v(" "+_vm._s(_vm.error)+" ")]):_vm._e()])])}
var dropdownvue_type_template_id_0735937e_scoped_true_staticRenderFns = []
// CONCATENATED MODULE: ./src/components/dropdown/dropdown.vue?vue&type=template&id=0735937e&scoped=true&
// CONCATENATED MODULE: ./src/assets/js/mixins/device.js
/* harmony default export */ var device = ({
methods: {
isMobileDevice: function isMobileDevice() {
if (/android|Windows Phone/i.test(navigator.userAgent)) {
return true;
} else if (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream) {
return true;
}
return false;
}
}
});
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/dropdown/dropdown.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ var dropdownvue_type_script_lang_js_ = ({
name: 'Dropdown',
mixins: [device],
props: {
label: {
type: String,
default: null
},
placeholder: {
type: String,
default: ''
},
items: {
type: Array,
default: function _default() {
return [];
}
},
error: {
type: String,
default: ''
},
preSelected: {
type: Number,
default: -1
},
disabled: {
type: Boolean,
default: false
}
},
data: function data() {
return {
value: '',
name: '',
focused: false,
showMenu: false
};
},
computed: {
isEmtpy: function isEmtpy() {
return this.value === '';
},
errorExists: function errorExists() {
return this.error !== '';
},
borderClasses: function borderClasses() {
var errorClass = this.errorExists ? '--error' : '';
var focusClass = this.focused ? '--focused' : '';
return "".concat(errorClass, " ").concat(focusClass);
},
cssClasses: function cssClasses() {
var focus = this.focused ? 'focused' : '';
var disabled = this.disabled ? 'dropdown--disabled' : '';
return "".concat(focus, " ").concat(disabled);
}
},
watch: {
value: function value(newValue) {
this.$emit('input', newValue);
}
},
mounted: function mounted() {
this.preSelectItem();
},
methods: {
blur: function blur() {
this.showMenu = false;
this.focused = false;
},
updateValue: function updateValue(value) {
this.$emit('input', value);
},
selectItem: function selectItem(item) {
var _this = this;
setTimeout(function () {
_this.value = item.value;
_this.name = item.name;
_this.focused = false;
_this.showMenu = false;
}, 200);
},
preSelectItem: function preSelectItem() {
if (this.preSelected !== -1) {
this.value = this.items[this.preSelected].value;
this.name = this.items[this.preSelected].name;
}
},
activate: function activate() {
if (!this.disabled && !this.showMenu) {
this.focused = true;
if (!this.isMobileDevice()) {
this.$refs.input.focus();
this.showMenu = true;
} else {
this.$refs.select.focus();
}
}
}
}
});
// CONCATENATED MODULE: ./src/components/dropdown/dropdown.vue?vue&type=script&lang=js&
/* harmony default export */ var dropdown_dropdownvue_type_script_lang_js_ = (dropdownvue_type_script_lang_js_);
// EXTERNAL MODULE: ./src/components/dropdown/dropdown.scss?vue&type=style&index=0&id=0735937e&lang=scss&scoped=true&
var dropdownvue_type_style_index_0_id_0735937e_lang_scss_scoped_true_ = __webpack_require__("adc9");
// CONCATENATED MODULE: ./src/components/dropdown/dropdown.vue
/* normalize component */
var dropdown_component = normalizeComponent(
dropdown_dropdownvue_type_script_lang_js_,
dropdownvue_type_template_id_0735937e_scoped_true_render,
dropdownvue_type_template_id_0735937e_scoped_true_staticRenderFns,
false,
null,
"0735937e",
null
)
/* harmony default export */ var dropdown = (dropdown_component.exports);
// CONCATENATED MODULE: ./src/components/dropdown/index.js
/* harmony default export */ var components_dropdown = (dropdown);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/banner/banner.vue?vue&type=template&id=6951da42&scoped=true&
var bannervue_type_template_id_6951da42_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"banner",style:(_vm.cssVars)},[_c('div',{staticClass:"banner__icon",domProps:{"innerHTML":_vm._s(_vm.icon)}}),_c('div',{staticClass:"text-code-12",domProps:{"innerHTML":_vm._s(_vm.text)}})])}
var bannervue_type_template_id_6951da42_scoped_true_staticRenderFns = []
// CONCATENATED MODULE: ./src/components/banner/banner.vue?vue&type=template&id=6951da42&scoped=true&
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/banner/banner.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
var bannervue_type_script_lang_js_types = Object.freeze({
INFO: 'info',
WARNING: 'warning',
ERROR: 'error',
SUCCESS: 'success'
});
/* harmony default export */ var bannervue_type_script_lang_js_ = ({
name: 'Banner',
props: {
/**
* The text displayed inside the banner
*/
text: {
type: String,
required: true
},
/**
* Banner type. info | warning | error
*/
type: {
type: String,
validator: function validator(val) {
return Object.values(bannervue_type_script_lang_js_types).includes(val);
},
default: 'info'
},
/**
* Encode emoji to use as icon
*/
icon: {
type: String,
required: true
}
},
computed: {
cssVars: function cssVars() {
return {
'--background-color': this.$tokens.color.background.banner[this.type].value,
'--text-color': this.$tokens.color.text.banner[this.type].value,
'--border-color': this.$tokens.color.border.banner[this.type].value,
'--background-color-emoji': this.$tokens.color.background.banner.emoji[this.type].value
};
}
}
});
// CONCATENATED MODULE: ./src/components/banner/banner.vue?vue&type=script&lang=js&
/* harmony default export */ var banner_bannervue_type_script_lang_js_ = (bannervue_type_script_lang_js_);
// EXTERNAL MODULE: ./src/components/banner/banner.scss?vue&type=style&index=0&id=6951da42&lang=scss&scoped=true&
var bannervue_type_style_index_0_id_6951da42_lang_scss_scoped_true_ = __webpack_require__("27e2");
// CONCATENATED MODULE: ./src/components/banner/banner.vue
/* normalize component */
var banner_component = normalizeComponent(
banner_bannervue_type_script_lang_js_,
bannervue_type_template_id_6951da42_scoped_true_render,
bannervue_type_template_id_6951da42_scoped_true_staticRenderFns,
false,
null,
"6951da42",
null
)
/* harmony default export */ var banner = (banner_component.exports);
// CONCATENATED MODULE: ./src/components/banner/index.js
/* harmony default export */ var components_banner = (banner);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/card/card.vue?vue&type=template&id=3b8ef79e&scoped=true&
var cardvue_type_template_id_3b8ef79e_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:"card",staticClass:"card",class:_vm.shadow ? 'card--shadow' : ''},[_vm._t("content")],2)}
var cardvue_type_template_id_3b8ef79e_scoped_true_staticRenderFns = []
// CONCATENATED MODULE: ./src/components/card/card.vue?vue&type=template&id=3b8ef79e&scoped=true&
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/card/card.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
/* harmony default export */ var cardvue_type_script_lang_js_ = ({
name: 'Card',
props: {
/**
* Enable/disable the shadow
*/
shadow: {
type: Boolean,
default: true
},
/**
* Insets the card with a surround margin
*/
inset: {
type: Boolean,
default: false
}
},
watch: {
inset: {
handler: function handler(newVal, oldVal) {
if (newVal) {
Tween.to(this.$refs['card'], 0.2, {
marginTop: '16px',
marginRight: '16px',
marginLeft: '16px'
});
} else {
Tween.to(this.$refs['card'], 0.2, {
marginTop: 0,
marginRight: 0,
marginLeft: 0
});
}
}
}
}
});
// CONCATENATED MODULE: ./src/components/card/card.vue?vue&type=script&lang=js&
/* harmony default export */ var card_cardvue_type_script_lang_js_ = (cardvue_type_script_lang_js_);
// EXTERNAL MODULE: ./src/components/card/card.scss?vue&type=style&index=0&id=3b8ef79e&lang=scss&scoped=true&
var cardvue_type_style_index_0_id_3b8ef79e_lang_scss_scoped_true_ = __webpack_require__("5fa8");
// CONCATENATED MODULE: ./src/components/card/card.vue
/* normalize component */
var card_component = normalizeComponent(
card_cardvue_type_script_lang_js_,
cardvue_type_template_id_3b8ef79e_scoped_true_render,
cardvue_type_template_id_3b8ef79e_scoped_true_staticRenderFns,
false,
null,
"3b8ef79e",
null
)
/* harmony default export */ var card = (card_component.exports);
// CONCATENATED MODULE: ./src/components/card/index.js
/* harmony default export */ var components_card = (card);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/accordion/accordion.vue?vue&type=template&id=80621ee6&scoped=true&
var accordionvue_type_template_id_80621ee6_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:"accordion",staticClass:"accordion",class:_vm.cssClasses},[_c('button',{directives:[{name:"ripple",rawName:"v-ripple",value:({color: '#ffffff'}),expression:"{color: '#ffffff'}"}],staticClass:"accordion__header",class:_vm.expanded ? 'accordion__header--active' : '',on:{"click":_vm.toggleExpanded}},[_c('div',{staticClass:"accordion__header-content row flex-middle pb-l"},[_c('div',{staticClass:"col"},[_vm._t("header",[_c('div',{staticClass:"text-medium-16 ripple"},[_vm._v(" "+_vm._s(_vm.text)+" ")])])],2),_c('div',{staticClass:"accordion__header-icon ripple"},[_c('icon',{attrs:{"flat":true,"color":_vm.$tokens.color.grey['60'].value,"icon":"expand"}})],1)]),(_vm.border)?_c('div',{staticClass:"accordion__header-border ripple"}):_vm._e()]),_c('div',{ref:"expansion-panel",staticClass:"accordion__expansion"},[_vm._t("content")],2)])}
var accordionvue_type_template_id_80621ee6_scoped_true_staticRenderFns = []
// CONCATENATED MODULE: ./src/components/accordion/accordion.vue?vue&type=template&id=80621ee6&scoped=true&
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/accordion/accordion.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
gsapWithCSS.registerPlugin(Tween);
/* harmony default export */ var accordionvue_type_script_lang_js_ = ({
name: 'Accordion',
props: {
/**
* Default header slot text
*/
text: {
type: String,
default: ''
},
/**
* Style without box shadow
*/
accordion: {
type: Boolean,
default: false
},
/**
* Inset style
*/
inset: {
type: Boolean,
default: false
},
/**
* Whether or not has border
*/
border: {
type: Boolean,
default: true
},
/**
* Whether or not has border
*/
expandedBorder: {
type: Boolean,
default: true
}
},
data: function data() {
return {
expanded: false
};
},
computed: {
cssClasses: function cssClasses() {
var accordion = this.accordion ? 'accordion--accordion' : '';
var active = this.expanded ? 'accordion--active' : 'accordion--collapsed';
var border = this.border ? 'accordion--border' : '';
var expandedBorder = this.expandedBorder ? '' : 'accordion--expanded-border';
return "".concat(accordion, " ").concat(active, " ").concat(border, " ").concat(expandedBorder);
}
},
methods: {
toggleExpanded: function toggleExpanded() {
if (!this.expanded) {
this.$emit('expand');
this.expandAnimation();
this.insetAnimation();
this.expanded = true;
} else {
this.fold();
}
},
fold: function fold() {
this.$emit('fold');
this.expandAnimation(false);
this.insetAnimation(false);
this.expanded = false;
},
expandAnimation: function expandAnimation() {
var expand = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
var duration = this.$tokens.transition.expand.accordion.duration.value;
var el = this.$refs['expansion-panel'];
var accordion = this.$refs.accordion;
if (expand) {
Tween.to(el, duration, {
height: el.scrollHeight
});
if (!this.accordion) {
Tween.to(accordion, duration, {
marginTop: this.$tokens.size.margin.accordion.active.vertical.value,
marginBottom: this.$tokens.size.margin.accordion.active.vertical.value
});
}
} else {
Tween.to(el, duration, {
height: 0
});
if (!this.accordion) {
Tween.to(accordion, duration, {
marginTop: 0,
marginBottom: 0
});
}
}
},
insetAnimation: function insetAnimation() {
var expand = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
if (!this.inset) {
return;
}
var el = this.$refs['accordion'];
var duration = this.$tokens.transition.expand.accordion.duration.value;
var margin = this.$tokens.size.margin.accordion.active.inset.value;
if (expand) {
Tween.to(el, duration, {
marginLeft: margin,
marginRight: margin
});
} else {
Tween.to(el, duration, {
marginLeft: '0',
marginRight: '0'
});
}
}
}
});
// CONCATENATED MODULE: ./src/components/accordion/accordion.vue?vue&type=script&lang=js&
/* harmony default export */ var accordion_accordionvue_type_script_lang_js_ = (accordionvue_type_script_lang_js_);
// EXTERNAL MODULE: ./src/components/accordion/accordion.scss?vue&type=style&index=0&id=80621ee6&lang=scss&scoped=true&
var accordionvue_type_style_index_0_id_80621ee6_lang_scss_scoped_true_ = __webpack_require__("72cc");
// CONCATENATED MODULE: ./src/components/accordion/accordion.vue
/* normalize component */
var accordion_component = normalizeComponent(
accordion_accordionvue_type_script_lang_js_,
accordionvue_type_template_id_80621ee6_scoped_true_render,
accordionvue_type_template_id_80621ee6_scoped_true_staticRenderFns,
false,
null,
"80621ee6",
null
)
/* harmony default export */ var accordion_accordion = (accordion_component.exports);
// CONCATENATED MODULE: ./src/components/accordion/index.js
/* harmony default export */ var components_accordion = (accordion_accordion);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/avatar/avatar.vue?vue&type=template&id=a24bc66e&scoped=true&
var avatarvue_type_template_id_a24bc66e_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"avatar row flex-bottom",class:_vm.active ? 'avatar--active' : '',on:{"click":_vm.toggleActive}},[_c('div',{staticClass:"avatar__container flex-center flex-middle"},[_c('div',{staticClass:"avatar__text text-medium-32"},[_vm._v(" "+_vm._s(_vm.text)+" ")])]),(false)?undefined:_vm._e()])}
var avatarvue_type_template_id_a24bc66e_scoped_true_staticRenderFns = []
// CONCATENATED MODULE: ./src/components/avatar/avatar.vue?vue&type=template&id=a24bc66e&scoped=true&
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/avatar/avatar.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ var avatarvue_type_script_lang_js_ = ({
name: 'Avatar',
props: {
/**
* Avatar text
*/
text: {
type: String,
required: true
}
},
data: function data() {
return {
active: false
};
},
methods: {
toggleActive: function toggleActive() {
this.active = !this.active;
}
}
});
// CONCATENATED MODULE: ./src/components/avatar/avatar.vue?vue&type=script&lang=js&
/* harmony default export */ var avatar_avatarvue_type_script_lang_js_ = (avatarvue_type_script_lang_js_);
// EXTERNAL MODULE: ./src/components/avatar/avatar.scss?vue&type=style&index=0&id=a24bc66e&lang=scss&scoped=true&
var avatarvue_type_style_index_0_id_a24bc66e_lang_scss_scoped_true_ = __webpack_require__("fc81");
// CONCATENATED MODULE: ./src/components/avatar/avatar.vue
/* normalize component */
var avatar_component = normalizeComponent(
avatar_avatarvue_type_script_lang_js_,
avatarvue_type_template_id_a24bc66e_scoped_true_render,
avatarvue_type_template_id_a24bc66e_scoped_true_staticRenderFns,
false,
null,
"a24bc66e",
null
)
/* harmony default export */ var avatar = (avatar_component.exports);
// CONCATENATED MODULE: ./src/components/avatar/index.js
/* harmony default export */ var components_avatar = (avatar);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/progress-bar/progress-bar.vue?vue&type=template&id=dbb4ef54&scoped=true&
var progress_barvue_type_template_id_dbb4ef54_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"progress-bar",style:(_vm.cssVars)},[_c('div',{staticClass:"progress-bar__buffer"})])}
var progress_barvue_type_template_id_dbb4ef54_scoped_true_staticRenderFns = []
// CONCATENATED MODULE: ./src/components/progress-bar/progress-bar.vue?vue&type=template&id=dbb4ef54&scoped=true&
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/progress-bar/progress-bar.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
/* harmony default export */ var progress_barvue_type_script_lang_js_ = ({
name: 'ProgressBar',
props: {
/**
* Progress bar size. s |
*/
size: {
type: String,
default: 's'
},
/**
* Progress bar background color.
*/
color: {
type: String,
default: null
},
/**
* Progress bar buffer color
*/
bufferColor: {
type: String,
default: null
},
/**
* Progress bar time animation
*/
time: {
type: String,
default: 'xl'
}
},
computed: {
cssVars: function cssVars() {
return {
'--height': this.$tokens.size.height['progress-bar'][this.size].value,
'--container-color': this.color || this.$tokens.color.background['progress-bar'].container.value,
'--buffer-color': this.bufferColor || this.$tokens.color.background['progress-bar'].buffer.value,
'--progress-time': this.$tokens.transition.duration[this.time].value
};
}
}
});
// CONCATENATED MODULE: ./src/components/progress-bar/progress-bar.vue?vue&type=script&lang=js&
/* harmony default export */ var progress_bar_progress_barvue_type_script_lang_js_ = (progress_barvue_type_script_lang_js_);
// EXTERNAL MODULE: ./src/components/progress-bar/progress-bar.scss?vue&type=style&index=0&id=dbb4ef54&lang=scss&scoped=true&
var progress_barvue_type_style_index_0_id_dbb4ef54_lang_scss_scoped_true_ = __webpack_require__("8a54");
// CONCATENATED MODULE: ./src/components/progress-bar/progress-bar.vue
/* normalize component */
var progress_bar_component = normalizeComponent(
progress_bar_progress_barvue_type_script_lang_js_,
progress_barvue_type_template_id_dbb4ef54_scoped_true_render,
progress_barvue_type_template_id_dbb4ef54_scoped_true_staticRenderFns,
false,
null,
"dbb4ef54",
null
)
/* harmony default export */ var progress_bar = (progress_bar_component.exports);
// CONCATENATED MODULE: ./src/components/progress-bar/index.js
/* harmony default export */ var components_progress_bar = (progress_bar);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/chip/chip.vue?vue&type=template&id=314055ab&scoped=true&
var chipvue_type_template_id_314055ab_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"chip",style:(_vm.cssVars)},[_c('div',{staticClass:"chip__text text-code-12"},[_vm._v(" "+_vm._s(_vm.text)+" ")])])}
var chipvue_type_template_id_314055ab_scoped_true_staticRenderFns = []
// CONCATENATED MODULE: ./src/components/chip/chip.vue?vue&type=template&id=314055ab&scoped=true&
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/chip/chip.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
var chipvue_type_script_lang_js_types = Object.freeze({
SUCCESS: 'success',
ERROR: 'error',
INFO: 'info',
MESSAGE: 'message'
});
/* harmony default export */ var chipvue_type_script_lang_js_ = ({
name: 'Chip',
props: {
text: {
type: String,
required: true
},
type: {
type: String,
validator: function validator(val) {
return Object.values(chipvue_type_script_lang_js_types).includes(val);
},
default: 'success'
}
},
computed: {
cssVars: function cssVars() {
return {
'--text-color': this.$tokens.color.text.chip[this.type].value,
'--border-color': this.$tokens.color.border.chip[this.type].value
};
}
}
});
// CONCATENATED MODULE: ./src/components/chip/chip.vue?vue&type=script&lang=js&
/* harmony default export */ var chip_chipvue_type_script_lang_js_ = (chipvue_type_script_lang_js_);
// EXTERNAL MODULE: ./src/components/chip/chip.scss?vue&type=style&index=0&id=314055ab&lang=scss&scoped=true&
var chipvue_type_style_index_0_id_314055ab_lang_scss_scoped_true_ = __webpack_require__("4d45");
// CONCATENATED MODULE: ./src/components/chip/chip.vue
/* normalize component */
var chip_component = normalizeComponent(
chip_chipvue_type_script_lang_js_,
chipvue_type_template_id_314055ab_scoped_true_render,
chipvue_type_template_id_314055ab_scoped_true_staticRenderFns,
false,
null,
"314055ab",
null
)
/* harmony default export */ var chip = (chip_component.exports);
// CONCATENATED MODULE: ./src/components/chip/index.js
/* harmony default export */ var components_chip = (chip);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/anim/anim.vue?vue&type=template&id=3db64a81&
var animvue_type_template_id_3db64a81_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.animationData)?_c('lottie',{attrs:{"options":_vm.defaultOptions,"height":_vm.height,"width":_vm.width}}):_vm._e()}
var animvue_type_template_id_3db64a81_staticRenderFns = []
// CONCATENATED MODULE: ./src/components/anim/anim.vue?vue&type=template&id=3db64a81&
// CONCATENATED MODULE: ./src/constants/urls.js
var CDN_PATH = 'https://statics.belvo.io/';
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/anim/anim.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
/* harmony default export */ var animvue_type_script_lang_js_ = ({
name: 'Anim',
props: {
/*
** Height of the animation
*/
height: {
type: Number,
default: null
},
/*
** Width of the animation
*/
width: {
type: Number,
default: null
},
/*
** Name of the animation
*/
name: {
type: String,
required: true
},
/*
** Whether or not the animation is in loop
*/
loop: {
type: Boolean,
default: true
}
},
data: function data() {
return {
cdnPath: CDN_PATH,
animationData: null
};
},
computed: {
defaultOptions: function defaultOptions() {
return {
loop: this.loop,
animationData: this.animationData
};
}
},
mounted: function mounted() {
this.getJson();
},
methods: {
getJson: function getJson() {
var _this = this;
var xhr = new XMLHttpRequest();
xhr.open('GET', "".concat(this.cdnPath, "animations/").concat(this.name, ".json"), true);
xhr.responseType = 'json';
xhr.onload = function () {
var status = xhr.status;
if (status === 200) {
_this.animationData = xhr.response;
}
};
xhr.send();
}
}
});
// CONCATENATED MODULE: ./src/components/anim/anim.vue?vue&type=script&lang=js&
/* harmony default export */ var anim_animvue_type_script_lang_js_ = (animvue_type_script_lang_js_);
// CONCATENATED MODULE: ./src/components/anim/anim.vue
/* normalize component */
var anim_component = normalizeComponent(
anim_animvue_type_script_lang_js_,
animvue_type_template_id_3db64a81_render,
animvue_type_template_id_3db64a81_staticRenderFns,
false,
null,
null,
null
)
/* harmony default export */ var anim = (anim_component.exports);
// CONCATENATED MODULE: ./src/components/anim/index.js
/* harmony default export */ var components_anim = (anim);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/snack-bar/snack-bar.vue?vue&type=template&id=14c956e6&scoped=true&
var snack_barvue_type_template_id_14c956e6_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{"appear":"","name":"translate","enter-active-class":"translate-in","leave-active-class":"translate-out"}},[_c('div',{staticClass:"snack-bar",style:(_vm.cssVars)},[_c('div',{staticClass:"snack-bar__container"},[_c('div',{staticClass:"snack-bar__container-icon",domProps:{"innerHTML":_vm._s(_vm.icon)}}),_c('div',{staticClass:"snack-bar__container-text text-code-12",domProps:{"innerHTML":_vm._s(_vm.text)}})]),_c('div',{staticClass:"snack-bar__close"},[_c('b-button',{attrs:{"icon":"close","icon-color":_vm.$tokens.color.close.icon[_vm.type].value,"hover-color":_vm.$tokens.color.close.background[_vm.type].value,"ripple-color":_vm.$tokens.color.close.ripple[_vm.type].value,"color":"transparent","type":"icon"},on:{"clicked":function($event){return _vm.close()}}})],1)])])}
var snack_barvue_type_template_id_14c956e6_scoped_true_staticRenderFns = []
// CONCATENATED MODULE: ./src/components/snack-bar/snack-bar.vue?vue&type=template&id=14c956e6&scoped=true&
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/snack-bar/snack-bar.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
var snack_barvue_type_script_lang_js_types = Object.freeze({
INFO: 'info',
WARNING: 'warning',
ERROR: 'error',
SUCCESS: 'success'
});
/* harmony default export */ var snack_barvue_type_script_lang_js_ = ({
name: 'SnackBar',
props: {
/**
* The text displayed inside the snack-bar
*/
text: {
type: String,
default: 'info'
},
/**
* Snack-bar type. info | warning | error
*/
type: {
type: String,
validator: function validator(val) {
return Object.values(snack_barvue_type_script_lang_js_types).includes(val);
},
default: 'info'
},
/**
* Encode emoji to use as icon
*/
icon: {
type: String,
required: true
},
/**
* Snack-bar top position
*/
top: {
type: Number,
required: true
},
/**
* Snack-bar right position
*/
right: {
type: Number,
required: true
},
/**
* Time when the popup will close after appear
*/
timeout: {
type: Number,
default: 8000
}
},
data: function data() {
return {
show: true
};
},
computed: {
cssVars: function cssVars() {
return {
'--background-color': this.$tokens.color.background['snack-bar'][this.type].value,
'--text-color': this.$tokens.color.text['snack-bar'][this.type].value,
'--border-color': this.$tokens.color.border['snack-bar'][this.type].value,
'--background-color-emoji': this.$tokens.color.background['snack-bar'].emoji[this.type].value,
'--top': "".concat(this.top, "px"),
'--right': "".concat(this.right, "px")
};
}
},
created: function created() {
var _this = this;
if (this.timeout) {
setTimeout(function () {
return _this.close();
}, this.timeout);
}
},
methods: {
close: function close() {
this.$emit('close');
}
}
});
// CONCATENATED MODULE: ./src/components/snack-bar/snack-bar.vue?vue&type=script&lang=js&
/* harmony default export */ var snack_bar_snack_barvue_type_script_lang_js_ = (snack_barvue_type_script_lang_js_);
// EXTERNAL MODULE: ./src/components/snack-bar/snack-bar.scss?vue&type=style&index=0&id=14c956e6&lang=scss&scoped=true&
var snack_barvue_type_style_index_0_id_14c956e6_lang_scss_scoped_true_ = __webpack_require__("2c29");
// CONCATENATED MODULE: ./src/components/snack-bar/snack-bar.vue
/* normalize component */
var snack_bar_component = normalizeComponent(
snack_bar_snack_barvue_type_script_lang_js_,
snack_barvue_type_template_id_14c956e6_scoped_true_render,
snack_barvue_type_template_id_14c956e6_scoped_true_staticRenderFns,
false,
null,
"14c956e6",
null
)
/* harmony default export */ var snack_bar = (snack_bar_component.exports);
// CONCATENATED MODULE: ./src/components/snack-bar/index.js
/* harmony default export */ var components_snack_bar = (snack_bar);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/tab/tab.vue?vue&type=template&id=4de03bf8&scoped=true&
var tabvue_type_template_id_4de03bf8_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"tab pb-xs px-m",class:_vm.active ? 'tab--active' : '',on:{"click":_vm.clicked}},[_c('div',{staticClass:"tab__text text-regular-16"},[_vm._v(" "+_vm._s(_vm.text)+" ")])])}
var tabvue_type_template_id_4de03bf8_scoped_true_staticRenderFns = []
// CONCATENATED MODULE: ./src/components/tab/tab.vue?vue&type=template&id=4de03bf8&scoped=true&
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/tab/tab.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ var tabvue_type_script_lang_js_ = ({
name: 'Tab',
props: {
/**
* Tab text
*/
text: {
type: String,
required: true
},
/**
* Whether the tab is active or not
*/
active: {
type: Boolean,
default: false
}
},
data: function data() {
return {
localActive: false
};
},
methods: {
clicked: function clicked() {
this.$emit('click');
}
}
});
// CONCATENATED MODULE: ./src/components/tab/tab.vue?vue&type=script&lang=js&
/* harmony default export */ var tab_tabvue_type_script_lang_js_ = (tabvue_type_script_lang_js_);
// EXTERNAL MODULE: ./src/components/tab/tab.scss?vue&type=style&index=0&id=4de03bf8&lang=scss&scoped=true&
var tabvue_type_style_index_0_id_4de03bf8_lang_scss_scoped_true_ = __webpack_require__("bfaa");
// CONCATENATED MODULE: ./src/components/tab/tab.vue
/* normalize component */
var tab_component = normalizeComponent(
tab_tabvue_type_script_lang_js_,
tabvue_type_template_id_4de03bf8_scoped_true_render,
tabvue_type_template_id_4de03bf8_scoped_true_staticRenderFns,
false,
null,
"4de03bf8",
null
)
/* harmony default export */ var tab = (tab_component.exports);
// CONCATENATED MODULE: ./src/components/tab/index.js
/* harmony default export */ var components_tab = (tab);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/tabs/tabs.vue?vue&type=template&id=16234d14&scoped=true&
var tabsvue_type_template_id_16234d14_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"tabs row",class:_vm.cssClasses},[_vm._t("default")],2)}
var tabsvue_type_template_id_16234d14_scoped_true_staticRenderFns = []
// CONCATENATED MODULE: ./src/components/tabs/tabs.vue?vue&type=template&id=16234d14&scoped=true&
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/tabs/tabs.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
/* harmony default export */ var tabsvue_type_script_lang_js_ = ({
name: 'Tabs',
props: {
/**
* Whether or not the tabs has box shadow
*/
boxShadow: {
type: Boolean,
default: false
}
},
computed: {
cssClasses: function cssClasses() {
var boxShadow = this.boxShadow ? 'tabs--box-shadow' : '';
return "".concat(boxShadow);
}
}
});
// CONCATENATED MODULE: ./src/components/tabs/tabs.vue?vue&type=script&lang=js&
/* harmony default export */ var tabs_tabsvue_type_script_lang_js_ = (tabsvue_type_script_lang_js_);
// EXTERNAL MODULE: ./src/components/tabs/tabs.scss?vue&type=style&index=0&id=16234d14&lang=scss&scoped=true&
var tabsvue_type_style_index_0_id_16234d14_lang_scss_scoped_true_ = __webpack_require__("b82f");
// CONCATENATED MODULE: ./src/components/tabs/tabs.vue
/* normalize component */
var tabs_component = normalizeComponent(
tabs_tabsvue_type_script_lang_js_,
tabsvue_type_template_id_16234d14_scoped_true_render,
tabsvue_type_template_id_16234d14_scoped_true_staticRenderFns,
false,
null,
"16234d14",
null
)
/* harmony default export */ var tabs = (tabs_component.exports);
// CONCATENATED MODULE: ./src/components/tabs/index.js
/* harmony default export */ var components_tabs = (tabs);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/token-text-field/token-text-field.vue?vue&type=template&id=190aba6c&scoped=true&
var token_text_fieldvue_type_template_id_190aba6c_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:"tokenTextField",staticClass:"token-text-field",class:_vm.classes,attrs:{"disabled":_vm.disabled}},[_c('div',{ref:"header",staticClass:"row pl-s flex-between pb-xs"},[_c('div',{staticClass:"text-regular-12"},[_vm._v(" "+_vm._s(_vm.label)+" ")]),(_vm.actionIcon)?_c('div',[_c('icon',{attrs:{"icon":_vm.actionIcon},on:{"click":function($event){return _vm.actionIconClicked()}}})],1):_vm._e()]),_c('div',{staticClass:"token-text-field__inputs relative"},[_c('div',{staticClass:"token-text-field__inputs-container row "},_vm._l((_vm.length),function(i){return _c('div',{directives:[{name:"ripple",rawName:"v-ripple",value:({color: '#ffffff', event: ['focusin', 'mousedown']}),expression:"{color: '#ffffff', event: ['focusin', 'mousedown']}"}],key:i,staticClass:"token-text-field__inputs-container-input col ripple",class:_vm.inputClasses(i)},[_c('input',{ref:("input-" + i),refInFor:true,staticClass:"text-regular-16 p-0 z-2",attrs:{"disabled":_vm.disabled,"required":_vm.required,"type":_vm.type,"pattern":_vm.pattern,"maxlength":_vm.maxlength,"autocapitalize":"off"},domProps:{"value":_vm.values[i]},on:{"focus":function($event){return _vm.activate(i)},"keyup":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"left",37,$event.key,["Left","ArrowLeft"])){ return null; }if('button' in $event && $event.button !== 0){ return null; }i > 1 ? _vm.activate(i - 1) : ''},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"right",39,$event.key,["Right","ArrowRight"])){ return null; }if('button' in $event && $event.button !== 2){ return null; }i < _vm.length ? _vm.activate(i + 1) : ''},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"delete",[8,46],$event.key,["Backspace","Delete","Del"])){ return null; }return _vm.deleteInput(i)}],"keydown":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"down",40,$event.key,["Down","ArrowDown"])){ return null; }$event.preventDefault();},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"up",38,$event.key,["Up","ArrowUp"])){ return null; }$event.preventDefault();}],"blur":_vm.deactivate,"input":function($event){return _vm.updateValue($event.target.value, i)}}})])}),0),(_vm.error)?_c('div',{staticClass:"token-text-field__error text-regular-12"},[_vm._v(" "+_vm._s(_vm.error)+" ")]):_vm._e()])])}
var token_text_fieldvue_type_template_id_190aba6c_scoped_true_staticRenderFns = []
// CONCATENATED MODULE: ./src/components/token-text-field/token-text-field.vue?vue&type=template&id=190aba6c&scoped=true&
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.reduce.js
var es_array_reduce = __webpack_require__("13d5");
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/token-text-field/token-text-field.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
var token_text_fieldvue_type_script_lang_js_types = Object.freeze({
TEXT: 'text',
NUMBER: 'number'
}); // TODO user can not leave a blank space
/* harmony default export */ var token_text_fieldvue_type_script_lang_js_ = ({
name: 'TokenTextField',
props: {
/**
* Token text field label
*/
label: {
type: String,
required: true
},
/**
* Number of slots in the token textfield
*/
length: {
type: Number,
required: true
},
/**
* Whether or not is disabled
*/
disabled: {
type: Boolean,
default: false
},
/**
* Error to show in the token texfield
*/
error: {
type: String,
default: null
},
/**
* If required in a form
*/
required: {
type: Boolean,
default: false
},
/**
* Focus on load page
*/
autofocus: {
type: Boolean,
default: false
},
/**
* Token text field value
*/
value: {
type: String,
default: ''
},
/**
* Token text field input type
*/
type: {
type: String,
validator: function validator(val) {
return Object.values(token_text_fieldvue_type_script_lang_js_types).includes(val);
},
default: 'text'
},
/**
* Right icon action name
*/
actionIcon: {
type: String,
default: null
},
/**
* Pattern regex for mobile keyboard
*/
pattern: {
type: String,
default: null
}
},
data: function data() {
return {
active: false,
maxlength: 1,
inputFocused: -1,
values: {}
};
},
computed: {
classes: function classes() {
if (this.disabled) {
return 'token-text-field--disabled';
}
var error = this.error ? 'token-text-field--error' : '';
return "".concat(error);
}
},
mounted: function mounted() {
var _this = this;
document.body.addEventListener('click', this.blur);
this.$refs.header.addEventListener('click', this.stopPropagation);
this.$nextTick(function () {
if (_this.autofocus) {
_this.setFocus();
}
});
},
unmounted: function unmounted() {
this.$refs.header.removeEventListener('click', this.stopPropagation);
document.body.removeEventListener('click', this.blur);
},
methods: {
blur: function blur(event) {
var parentNode = this.$refs.tokenTextField;
if (!this.isDescendant(parentNode, event.target)) {
this.$emit('blur');
}
},
stopPropagation: function stopPropagation(event) {
event.stopPropagation();
},
inputClasses: function inputClasses(index) {
var inputActive = this.inputFocused === index ? 'token-text-field__inputs-container-input--active' : '';
var inputFilled = this.values[index] ? 'token-text-field__inputs-container-input--filled' : '';
return "".concat(inputActive, " ").concat(inputFilled);
},
activate: function activate(index) {
if (this.disabled) {
return;
}
this.$refs["input-".concat(index)][0].select();
this.inputFocused = index;
},
deactivate: function deactivate(event) {
if (this.disabled) {
return;
}
var parentNode = this.$refs.tokenTextField;
if (!this.isDescendant(parentNode, event.target)) {
this.$emit('blur');
}
this.inputFocused = -1;
},
isDescendant: function isDescendant(parent, child) {
var node = child.parentNode;
while (node != null) {
if (node === parent) {
return true;
}
node = node.parentNode;
}
return false;
},
setFocus: function setFocus() {
if (this.disabled) {
return;
}
this.$refs['input-0'].focus();
},
deleteInput: function deleteInput(index) {
this.values[index] = '';
if (index > 1) {
this.activate(index - 1);
}
},
updateInputFocus: function updateInputFocus(index) {
var inputLength = this.values[index].length;
if (inputLength >= this.maxlength) {
var nextIndex = index + 1;
if (nextIndex <= this.length) {
this.$refs["input-".concat(index + 1)][0].focus();
}
}
},
updateValue: function updateValue(inputValue, index) {
if (this.error) {
this.$emit('clearError');
}
this.values[index] = inputValue;
var value = Object.values(this.values).reduce(function (accum, val) {
return "".concat(accum).concat(val);
}, '');
this.updateInputFocus(index);
this.$emit('input', value);
},
actionIconClicked: function actionIconClicked() {
this.$emit('actionIconClick');
}
}
});
// CONCATENATED MODULE: ./src/components/token-text-field/token-text-field.vue?vue&type=script&lang=js&
/* harmony default export */ var token_text_field_token_text_fieldvue_type_script_lang_js_ = (token_text_fieldvue_type_script_lang_js_);
// EXTERNAL MODULE: ./src/components/token-text-field/token-text-field.scss?vue&type=style&index=0&id=190aba6c&lang=scss&scoped=true&
var token_text_fieldvue_type_style_index_0_id_190aba6c_lang_scss_scoped_true_ = __webpack_require__("8d39");
// CONCATENATED MODULE: ./src/components/token-text-field/token-text-field.vue
/* normalize component */
var token_text_field_component = normalizeComponent(
token_text_field_token_text_fieldvue_type_script_lang_js_,
token_text_fieldvue_type_template_id_190aba6c_scoped_true_render,
token_text_fieldvue_type_template_id_190aba6c_scoped_true_staticRenderFns,
false,
null,
"190aba6c",
null
)
/* harmony default export */ var token_text_field = (token_text_field_component.exports);
// CONCATENATED MODULE: ./src/components/token-text-field/index.js
/* harmony default export */ var components_token_text_field = (token_text_field);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/icon/icon.vue?vue&type=template&id=5f71ff43&scoped=true&
var iconvue_type_template_id_5f71ff43_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:"icon",class:_vm.cssClasses,style:(_vm.cssVars),on:{"click":_vm.clicked}},[_c('img',{attrs:{"src":(_vm.cdnPath + "icons/icon_normal_" + _vm.icon + ".svg")}})])}
var iconvue_type_template_id_5f71ff43_scoped_true_staticRenderFns = []
// CONCATENATED MODULE: ./src/components/icon/icon.vue?vue&type=template&id=5f71ff43&scoped=true&
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/icon/icon.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ var iconvue_type_script_lang_js_ = ({
name: 'Icon',
mixins: [mixins_color],
props: {
/**
* Icon name
*/
icon: {
type: String,
required: true
},
/**
* Icon color
*/
color: {
type: String,
default: null
},
/**
* Whether or not remove the hover color
*/
flat: {
type: Boolean,
default: false
}
},
data: function data() {
return {
cdnPath: CDN_PATH
};
},
computed: {
cssClasses: function cssClasses() {
var flat = this.flat ? 'icon--flat' : '';
return "".concat(flat);
},
cssVars: function cssVars() {
var iconColor = this.color || this.$tokens.color.grey['50'].value;
var iconColorHover = this.hexToHsl(iconColor, 55);
return {
'--icon-color': this.hexToFilter(iconColor),
'--icon-color-hover': this.hslToFilter(iconColorHover)
};
}
},
methods: {
clicked: function clicked(index) {
this.$emit('click');
}
}
});
// CONCATENATED MODULE: ./src/components/icon/icon.vue?vue&type=script&lang=js&
/* harmony default export */ var icon_iconvue_type_script_lang_js_ = (iconvue_type_script_lang_js_);
// EXTERNAL MODULE: ./src/components/icon/icon.scss?vue&type=style&index=0&id=5f71ff43&lang=scss&scoped=true&
var iconvue_type_style_index_0_id_5f71ff43_lang_scss_scoped_true_ = __webpack_require__("985f");
// CONCATENATED MODULE: ./src/components/icon/icon.vue
/* normalize component */
var icon_component = normalizeComponent(
icon_iconvue_type_script_lang_js_,
iconvue_type_template_id_5f71ff43_scoped_true_render,
iconvue_type_template_id_5f71ff43_scoped_true_staticRenderFns,
false,
null,
"5f71ff43",
null
)
/* harmony default export */ var icon = (icon_component.exports);
// CONCATENATED MODULE: ./src/components/icon/index.js
/* harmony default export */ var components_icon = (icon);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/grid-item/grid-item.vue?vue&type=template&id=118f567a&scoped=true&
var grid_itemvue_type_template_id_118f567a_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:"ripple",rawName:"v-ripple",value:({color: '#ffffff'}),expression:"{color: '#ffffff'}"}],staticClass:"grid-item",style:(_vm.cssVars),on:{"click":_vm.clicked}},[_c('div',{staticClass:"ripple"},[_vm._t("default",[_c('div',{staticClass:"grid-item__content"},[_c('img',{attrs:{"src":_vm.image}})])])],2)])}
var grid_itemvue_type_template_id_118f567a_scoped_true_staticRenderFns = []
// CONCATENATED MODULE: ./src/components/grid-item/grid-item.vue?vue&type=template&id=118f567a&scoped=true&
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/grid-item/grid-item.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ var grid_itemvue_type_script_lang_js_ = ({
name: 'GridItem',
props: {
/**
* Path of the image
*/
image: {
type: String,
default: null
}
},
computed: {
cssVars: function cssVars() {
return {
'--path-image': this.image || ''
};
}
},
methods: {
clicked: function clicked() {
this.$emit('click');
}
}
});
// CONCATENATED MODULE: ./src/components/grid-item/grid-item.vue?vue&type=script&lang=js&
/* harmony default export */ var grid_item_grid_itemvue_type_script_lang_js_ = (grid_itemvue_type_script_lang_js_);
// EXTERNAL MODULE: ./src/components/grid-item/grid-item.scss?vue&type=style&index=0&id=118f567a&lang=scss&scoped=true&
var grid_itemvue_type_style_index_0_id_118f567a_lang_scss_scoped_true_ = __webpack_require__("8aaf");
// CONCATENATED MODULE: ./src/components/grid-item/grid-item.vue
/* normalize component */
var grid_item_component = normalizeComponent(
grid_item_grid_itemvue_type_script_lang_js_,
grid_itemvue_type_template_id_118f567a_scoped_true_render,
grid_itemvue_type_template_id_118f567a_scoped_true_staticRenderFns,
false,
null,
"118f567a",
null
)
/* harmony default export */ var grid_item = (grid_item_component.exports);
// CONCATENATED MODULE: ./src/components/grid-item/index.js
/* harmony default export */ var components_grid_item = (grid_item);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/list-header/list-header.vue?vue&type=template&id=6841f599&scoped=true&
var list_headervue_type_template_id_6841f599_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"list-header flex flex-start"},[_c('div',{staticClass:"list-header__text text-regular-14"},[_vm._v(" "+_vm._s(_vm.text)+" ")])])}
var list_headervue_type_template_id_6841f599_scoped_true_staticRenderFns = []
// CONCATENATED MODULE: ./src/components/list-header/list-header.vue?vue&type=template&id=6841f599&scoped=true&
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/list-header/list-header.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
/* harmony default export */ var list_headervue_type_script_lang_js_ = ({
name: 'ListHeader',
/**
* List header text
*/
props: {
text: {
type: String,
required: true
}
}
});
// CONCATENATED MODULE: ./src/components/list-header/list-header.vue?vue&type=script&lang=js&
/* harmony default export */ var list_header_list_headervue_type_script_lang_js_ = (list_headervue_type_script_lang_js_);
// EXTERNAL MODULE: ./src/components/list-header/list-header.scss?vue&type=style&index=0&id=6841f599&lang=scss&scoped=true&
var list_headervue_type_style_index_0_id_6841f599_lang_scss_scoped_true_ = __webpack_require__("0f6b");
// CONCATENATED MODULE: ./src/components/list-header/list-header.vue
/* normalize component */
var list_header_component = normalizeComponent(
list_header_list_headervue_type_script_lang_js_,
list_headervue_type_template_id_6841f599_scoped_true_render,
list_headervue_type_template_id_6841f599_scoped_true_staticRenderFns,
false,
null,
"6841f599",
null
)
/* harmony default export */ var list_header = (list_header_component.exports);
// CONCATENATED MODULE: ./src/components/list-header/index.js
/* harmony default export */ var components_list_header = (list_header);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/form/form.vue?vue&type=template&id=6aeb2afe&
var formvue_type_template_id_6aeb2afe_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{on:{"submit":function($event){$event.preventDefault();return _vm.submitForm()},"keydown":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }$event.preventDefault();return _vm.submitForm()}}},[_vm._t("default")],2)}
var formvue_type_template_id_6aeb2afe_staticRenderFns = []
// CONCATENATED MODULE: ./src/components/form/form.vue?vue&type=template&id=6aeb2afe&
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/form/form.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
/* harmony default export */ var formvue_type_script_lang_js_ = ({
name: 'BForm',
methods: {
submitForm: function submitForm() {
this.$emit('submit');
}
}
});
// CONCATENATED MODULE: ./src/components/form/form.vue?vue&type=script&lang=js&
/* harmony default export */ var form_formvue_type_script_lang_js_ = (formvue_type_script_lang_js_);
// CONCATENATED MODULE: ./src/components/form/form.vue
/* normalize component */
var form_component = normalizeComponent(
form_formvue_type_script_lang_js_,
formvue_type_template_id_6aeb2afe_render,
formvue_type_template_id_6aeb2afe_staticRenderFns,
false,
null,
null,
null
)
/* harmony default export */ var form_form = (form_component.exports);
// CONCATENATED MODULE: ./src/components/form/index.js
/* harmony default export */ var components_form = (form_form);
// CONCATENATED MODULE: ./src/components/index.js
// export { default as Toggle } from './toggle'
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.for-each.js
var es_array_for_each = __webpack_require__("4160");
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.keys.js
var es_object_keys = __webpack_require__("b64b");
// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.for-each.js
var web_dom_collections_for_each = __webpack_require__("159b");
// CONCATENATED MODULE: ./src/assets/js/ripple.js
var Ripple = {
bind: function bind(el, binding) {
binding.value = binding.value || {}; // Default values.
var removable = binding.value.removable || false;
var eventType = binding.value.event || 'mousedown';
var props = {
transition: 200
};
setProps(Object.keys(binding.modifiers), props);
if (typeof eventType !== 'string') {
eventType.forEach(function (event) {
if (typeof event === 'number') {
el.addEventListener('keydown', function (e) {
if (e.button !== 2 && e.keyCode === event) {
rippler(e, el, binding.value);
}
});
} else {
el.addEventListener(event, function (e) {
if (e.button !== 2) {
rippler(e, el, binding.value);
}
});
}
});
} else {
el.addEventListener(eventType, function (event) {
if (event.button !== 2) {
rippler(event, el, binding.value);
}
});
}
var bg = binding.value.color || Ripple.color || 'rgba(0, 0, 0, 0.35)';
var zIndex = Ripple.zIndex || '9999';
function rippler(event, el) {
var target = el; // Get border to avoid offsetting on ripple container position
// var targetBorder = parseInt((getComputedStyle(target).borderWidth).replace('px', ''))
// Get necessary variables
var rect = target.getBoundingClientRect();
var left = rect.left;
var top = rect.top;
var width = target.offsetWidth;
var height = target.offsetHeight;
var dx = !isNaN(event.clientX) ? event.clientX - left : 0;
var dy = !isNaN(event.clientY) ? event.clientY - top : 0;
var maxX = Math.max(dx, width - dx);
var maxY = Math.max(dy, height - dy);
var style = window.getComputedStyle(target);
var radius = Math.sqrt(maxX * maxX + maxY * maxY); // var border = (targetBorder > 0) ? targetBorder : 0
// Create the ripple and its container
var ripple = document.createElement('div');
var rippleContainer = document.createElement('div');
rippleContainer.className = 'ripple-container';
ripple.className = 'ripple'; // Styles for ripple
ripple.style.marginTop = '0px';
ripple.style.marginLeft = '0px';
ripple.style.width = '1px';
ripple.style.height = '1px';
ripple.style.transition = 'all ' + props.transition + 'ms cubic-bezier(0.4, 0, 0.2, 1)';
ripple.style.borderRadius = '50%';
ripple.style.pointerEvents = 'none';
ripple.style.position = 'relative';
ripple.style.zIndex = zIndex;
ripple.style.backgroundColor = bg; // Styles for rippleContainer
rippleContainer.style.position = 'absolute'; // rippleContainer.style.left = 0 - border + 'px'
// rippleContainer.style.top = 0 - border + 'px'
rippleContainer.style.left = 0 + 'px';
rippleContainer.style.top = 0 + 'px';
rippleContainer.style.right = 0 + 'px';
rippleContainer.style.bottom = 0 + 'px';
rippleContainer.style.height = '0';
rippleContainer.style.width = '0';
rippleContainer.style.pointerEvents = 'none';
rippleContainer.style.overflow = 'hidden'; // Store target position to change it after
var storedTargetPosition = target.style.position.length > 0 ? target.style.position : getComputedStyle(target).position; // Change target position to relative to guarantee ripples correct positioning
if (storedTargetPosition !== 'relative') {
target.style.position = 'relative';
}
if (!target.getAttribute('disabled') && !target.getAttribute('ripple-disabled') && target.getElementsByClassName('ripple-container').length === 0) {
rippleContainer.appendChild(ripple);
target.appendChild(rippleContainer);
}
ripple.style.marginLeft = dx + 'px';
ripple.style.marginTop = dy + 'px'; // No need to set positioning because ripple should be child of target and to it's relative position.
// rippleContainer.style.left = left + (((window.pageXOffset || document.scrollLeft) - (document.clientLeft || 0)) || 0) + 'px'
// rippleContainer.style.top = top + (((window.pageYOffset || document.scrollTop) - (document.clientTop || 0)) || 0) + 'px'
// rippleContainer.style.width = width + 'px'
// rippleContainer.style.height = height + 'px'
rippleContainer.style.width = '100%';
rippleContainer.style.height = '100%';
rippleContainer.style.borderTopLeftRadius = style.borderTopLeftRadius;
rippleContainer.style.borderTopRightRadius = style.borderTopRightRadius;
rippleContainer.style.borderBottomLeftRadius = style.borderBottomLeftRadius;
rippleContainer.style.borderBottomRightRadius = style.borderBottomRightRadius;
rippleContainer.style.direction = 'ltr';
setTimeout(function () {
ripple.style.width = radius * 2 + 'px';
ripple.style.height = radius * 2 + 'px';
ripple.style.marginLeft = dx - radius + 'px';
ripple.style.marginTop = dy - radius + 'px';
}, 10);
function clearRipple(e) {
if (el.contains(e.target) && !removable && e.type !== 'focusout') {
return;
}
setTimeout(function () {
ripple.style.backgroundColor = 'rgba(0, 0, 0, 0)';
}, 100); // disable ripple for disabled state components
if (!target.getAttribute('disabled') && !target.getAttribute('ripple-disabled')) {
// Timeout set to get a smooth removal of the ripple
setTimeout(function () {
if (rippleContainer.parentNode) {
rippleContainer.parentNode.removeChild(rippleContainer);
}
}, 200);
}
el.removeEventListener('mouseup', event.stopPropagation());
el.removeEventListener('click', event.stopPropagation());
document.body.removeEventListener('click', clearRipple, false);
el.removeEventListener('blur', clearRipple, false);
el.removeEventListener('mouseleave', clearRipple);
el.removeEventListener('mousedown', clearRipple);
el.removeEventListener('focusout', clearRipple); // After removing event set position to target to it's original one
// Timeout it's needed to avoid jerky effect of ripple jumping out parent target
setTimeout(function () {
var clearPosition = true;
for (var i = 0; i < target.childNodes.length; i++) {
if (target.childNodes[i].className === 'ripple-container') {
clearPosition = false;
}
}
if (clearPosition) {
if (storedTargetPosition !== 'static') {
target.style.position = storedTargetPosition;
} else {
target.style.position = '';
}
}
}, props.transition + 250);
}
if (event.type === 'mousedown' || event.type === 'keydown' || event.type === 'focusin') {
document.body.addEventListener('click', clearRipple, false);
el.addEventListener('blur', clearRipple);
el.addEventListener('focusout', clearRipple);
if (removable) {
el.addEventListener('mouseup', clearRipple);
}
el.addEventListener('click', event.stopPropagation());
} else if (event.type === 'mouseover') {
el.addEventListener('mouseleave', clearRipple);
el.addEventListener('mousedown', clearRipple);
} else {
clearRipple(event);
}
}
}
};
function setProps(modifiers, props) {
modifiers.forEach(function (item) {
if (isNaN(Number(item))) {
props.event = item;
} else {
props.transition = item;
}
});
}
/* harmony default export */ var ripple = (Ripple);
// CONCATENATED MODULE: ./src/assets/js/clickOutside.js
var clickOutside = {
bind: function bind(el, binding, vnode) {
el.event = function (event) {
vnode.context[binding.expression](event);
};
el.stopProp = function (event) {
event.stopPropagation();
};
document.body.addEventListener('click', el.event);
el.addEventListener('click', el.stopProp);
el.addEventListener('blur', el.event, true);
},
unbind: function unbind(el) {
el.removeEventListener('blur', el.event);
},
stopProp: function stopProp(event) {
event.stopPropagation();
}
};
/* harmony default export */ var js_clickOutside = (clickOutside);
// EXTERNAL MODULE: ./src/assets/css/ripple.css
var css_ripple = __webpack_require__("aa06");
// EXTERNAL MODULE: ./src/assets/js/_tokens.js
var _tokens = __webpack_require__("1775");
var _tokens_default = /*#__PURE__*/__webpack_require__.n(_tokens);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"226d8efb-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/vue-lottie/src/lottie.vue?vue&type=template&id=3c796cc7&
var lottievue_type_template_id_3c796cc7_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:"lavContainer",style:(_vm.style)})}
var lottievue_type_template_id_3c796cc7_staticRenderFns = []
// CONCATENATED MODULE: ./node_modules/vue-lottie/src/lottie.vue?vue&type=template&id=3c796cc7&
// EXTERNAL MODULE: ./node_modules/lottie-web/build/player/lottie.js
var lottie = __webpack_require__("94f1");
var lottie_default = /*#__PURE__*/__webpack_require__.n(lottie);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/vue-lottie/src/lottie.vue?vue&type=script&lang=js&
//
//
//
//
/* harmony default export */ var lottievue_type_script_lang_js_ = ({
props: {
options: {
type: Object,
required: true
},
height: Number,
width: Number
},
data: function data() {
return {
style: {
width: this.width ? "".concat(this.width, "px") : '100%',
height: this.height ? "".concat(this.height, "px") : '100%',
overflow: 'hidden',
margin: '0 auto'
}
};
},
mounted: function mounted() {
this.anim = lottie_default.a.loadAnimation({
container: this.$refs.lavContainer,
renderer: 'svg',
loop: this.options.loop !== false,
autoplay: this.options.autoplay !== false,
animationData: this.options.animationData,
rendererSettings: this.options.rendererSettings
});
this.$emit('animCreated', this.anim);
}
});
// CONCATENATED MODULE: ./node_modules/vue-lottie/src/lottie.vue?vue&type=script&lang=js&
/* harmony default export */ var src_lottievue_type_script_lang_js_ = (lottievue_type_script_lang_js_);
// CONCATENATED MODULE: ./node_modules/vue-lottie/src/lottie.vue
/* normalize component */
var lottie_component = normalizeComponent(
src_lottievue_type_script_lang_js_,
lottievue_type_template_id_3c796cc7_render,
lottievue_type_template_id_3c796cc7_staticRenderFns,
false,
null,
null,
null
)
/* harmony default export */ var src_lottie = (lottie_component.exports);
// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
var external_commonjs_vue_commonjs2_vue_root_Vue_default = /*#__PURE__*/__webpack_require__.n(external_commonjs_vue_commonjs2_vue_root_Vue_);
// CONCATENATED MODULE: ./node_modules/vee-validate/dist/vee-validate.esm.js
/**
* vee-validate v3.3.0
* (c) 2020 Abdelrahman Awad
* @license MIT
*/
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
var __assign = function() {
__assign = Object.assign || function __assign(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
function __awaiter(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}
function __generator(thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
}
function __spreadArrays() {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
}
function vee_validate_esm_isNaN(value) {
// NaN is the one value that does not equal itself.
// eslint-disable-next-line
return value !== value;
}
function isNullOrUndefined(value) {
return value === null || value === undefined;
}
function isEmptyArray(arr) {
return Array.isArray(arr) && arr.length === 0;
}
var isObject = function (obj) {
return obj !== null && obj && typeof obj === 'object' && !Array.isArray(obj);
};
/**
* Shallow object comparison.
*/
function isEqual(lhs, rhs) {
if (lhs instanceof RegExp && rhs instanceof RegExp) {
return isEqual(lhs.source, rhs.source) && isEqual(lhs.flags, rhs.flags);
}
if (Array.isArray(lhs) && Array.isArray(rhs)) {
if (lhs.length !== rhs.length)
return false;
for (var i = 0; i < lhs.length; i++) {
if (!isEqual(lhs[i], rhs[i])) {
return false;
}
}
return true;
}
// if both are objects, compare each key recursively.
if (isObject(lhs) && isObject(rhs)) {
return (Object.keys(lhs).every(function (key) {
return isEqual(lhs[key], rhs[key]);
}) &&
Object.keys(rhs).every(function (key) {
return isEqual(lhs[key], rhs[key]);
}));
}
if (vee_validate_esm_isNaN(lhs) && vee_validate_esm_isNaN(rhs)) {
return true;
}
return lhs === rhs;
}
// Checks if a given value is not an empty string or null or undefined.
function isSpecified(val) {
if (val === '') {
return false;
}
return !isNullOrUndefined(val);
}
function isCallable(fn) {
return typeof fn === 'function';
}
function isLocator(value) {
return isCallable(value) && !!value.__locatorRef;
}
function findIndex(arrayLike, predicate) {
var array = Array.isArray(arrayLike) ? arrayLike : vee_validate_esm_toArray(arrayLike);
if (isCallable(array.findIndex)) {
return array.findIndex(predicate);
}
/* istanbul ignore next */
for (var i = 0; i < array.length; i++) {
if (predicate(array[i], i)) {
return i;
}
}
/* istanbul ignore next */
return -1;
}
/**
* finds the first element that satisfies the predicate callback, polyfills array.find
*/
function find(arrayLike, predicate) {
var array = Array.isArray(arrayLike) ? arrayLike : vee_validate_esm_toArray(arrayLike);
var idx = findIndex(array, predicate);
return idx === -1 ? undefined : array[idx];
}
function includes(collection, item) {
return collection.indexOf(item) !== -1;
}
/**
* Converts an array-like object to array, provides a simple polyfill for Array.from
*/
function vee_validate_esm_toArray(arrayLike) {
if (isCallable(Array.from)) {
return Array.from(arrayLike);
}
/* istanbul ignore next */
return _copyArray(arrayLike);
}
/* istanbul ignore next */
function _copyArray(arrayLike) {
var array = [];
var length = arrayLike.length;
for (var i = 0; i < length; i++) {
array.push(arrayLike[i]);
}
return array;
}
function values(obj) {
if (isCallable(Object.values)) {
return Object.values(obj);
}
// fallback to keys()
/* istanbul ignore next */
return Object.keys(obj).map(function (k) { return obj[k]; });
}
function merge(target, source) {
Object.keys(source).forEach(function (key) {
if (isObject(source[key])) {
if (!target[key]) {
target[key] = {};
}
merge(target[key], source[key]);
return;
}
target[key] = source[key];
});
return target;
}
function createFlags() {
return {
untouched: true,
touched: false,
dirty: false,
pristine: true,
valid: false,
invalid: false,
validated: false,
pending: false,
required: false,
changed: false,
passed: false,
failed: false
};
}
function identity(x) {
return x;
}
function debounce(fn, wait, token) {
if (wait === void 0) { wait = 0; }
if (token === void 0) { token = { cancelled: false }; }
if (wait === 0) {
return fn;
}
var timeout;
return function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var later = function () {
timeout = undefined;
// check if the fn call was cancelled.
if (!token.cancelled)
fn.apply(void 0, args);
};
// because we might want to use Node.js setTimout for SSR.
clearTimeout(timeout);
timeout = setTimeout(later, wait);
};
}
/**
* Emits a warning to the console
*/
function warn(message) {
console.warn("[vee-validate] " + message);
}
/**
* Replaces placeholder values in a string with their actual values
*/
function vee_validate_esm_interpolate(template, values) {
return template.replace(/{([^}]+)}/g, function (_, p) {
return p in values ? values[p] : "{" + p + "}";
});
}
var RULES = {};
function normalizeSchema(schema) {
var _a;
if ((_a = schema.params) === null || _a === void 0 ? void 0 : _a.length) {
schema.params = schema.params.map(function (param) {
if (typeof param === 'string') {
return { name: param };
}
return param;
});
}
return schema;
}
var RuleContainer = /** @class */ (function () {
function RuleContainer() {
}
RuleContainer.extend = function (name, schema) {
// if rule already exists, overwrite it.
var rule = normalizeSchema(schema);
if (RULES[name]) {
RULES[name] = merge(RULES[name], schema);
return;
}
RULES[name] = __assign({ lazy: false, computesRequired: false }, rule);
};
RuleContainer.isLazy = function (name) {
var _a;
return !!((_a = RULES[name]) === null || _a === void 0 ? void 0 : _a.lazy);
};
RuleContainer.isRequireRule = function (name) {
var _a;
return !!((_a = RULES[name]) === null || _a === void 0 ? void 0 : _a.computesRequired);
};
RuleContainer.getRuleDefinition = function (ruleName) {
return RULES[ruleName];
};
return RuleContainer;
}());
/**
* Adds a custom validator to the list of validation rules.
*/
function extend(name, schema) {
// makes sure new rules are properly formatted.
guardExtend(name, schema);
// Full schema object.
if (typeof schema === 'object') {
RuleContainer.extend(name, schema);
return;
}
RuleContainer.extend(name, {
validate: schema
});
}
/**
* Guards from extension violations.
*/
function guardExtend(name, validator) {
if (isCallable(validator)) {
return;
}
if (isCallable(validator.validate)) {
return;
}
if (RuleContainer.getRuleDefinition(name)) {
return;
}
throw new Error("Extension Error: The validator '" + name + "' must be a function or have a 'validate' method.");
}
var DEFAULT_CONFIG = {
defaultMessage: "{_field_} is not valid.",
skipOptional: true,
classes: {
touched: 'touched',
untouched: 'untouched',
valid: 'valid',
invalid: 'invalid',
pristine: 'pristine',
dirty: 'dirty' // control has been interacted with
},
bails: true,
mode: 'aggressive',
useConstraintAttrs: true
};
var currentConfig = __assign({}, DEFAULT_CONFIG);
var getConfig = function () { return currentConfig; };
var setConfig = function (newConf) {
currentConfig = __assign(__assign({}, currentConfig), newConf);
};
var configure = function (cfg) {
setConfig(cfg);
};
/**
* Normalizes the given rules expression.
*/
function normalizeRules(rules) {
// if falsy value return an empty object.
var acc = {};
Object.defineProperty(acc, '_$$isNormalized', {
value: true,
writable: false,
enumerable: false,
configurable: false
});
if (!rules) {
return acc;
}
// Object is already normalized, skip.
if (isObject(rules) && rules._$$isNormalized) {
return rules;
}
if (isObject(rules)) {
return Object.keys(rules).reduce(function (prev, curr) {
var params = [];
var preserveArrayParams = false;
if (rules[curr] === true) {
params = [];
}
else if (Array.isArray(rules[curr])) {
params = rules[curr];
preserveArrayParams = true;
}
else if (isObject(rules[curr])) {
params = rules[curr];
}
else {
params = [rules[curr]];
}
if (rules[curr] !== false) {
prev[curr] = buildParams(curr, params, preserveArrayParams);
}
return prev;
}, acc);
}
/* istanbul ignore if */
if (typeof rules !== 'string') {
warn('rules must be either a string or an object.');
return acc;
}
return rules.split('|').reduce(function (prev, rule) {
var parsedRule = parseRule(rule);
if (!parsedRule.name) {
return prev;
}
prev[parsedRule.name] = buildParams(parsedRule.name, parsedRule.params);
return prev;
}, acc);
}
function buildParams(ruleName, provided, preserveArrayParams) {
if (preserveArrayParams === void 0) { preserveArrayParams = false; }
var ruleSchema = RuleContainer.getRuleDefinition(ruleName);
if (!ruleSchema) {
return provided;
}
var params = {};
if (!ruleSchema.params && !Array.isArray(provided)) {
throw new Error('You provided an object params to a rule that has no defined schema.');
}
// Rule probably uses an array for their args, keep it as is.
if (Array.isArray(provided) && !ruleSchema.params) {
return provided;
}
var definedParams;
// collect the params schema.
if (!ruleSchema.params || (ruleSchema.params.length < provided.length && Array.isArray(provided))) {
var lastDefinedParam_1;
// collect any additional parameters in the last item.
definedParams = provided.map(function (_, idx) {
var _a;
var param = (_a = ruleSchema.params) === null || _a === void 0 ? void 0 : _a[idx];
lastDefinedParam_1 = param || lastDefinedParam_1;
if (!param) {
param = lastDefinedParam_1;
}
return param;
});
}
else {
definedParams = ruleSchema.params;
}
// Match the provided array length with a temporary schema.
for (var i = 0; i < definedParams.length; i++) {
var options = definedParams[i];
var value = options.default;
// if the provided is an array, map element value.
if (Array.isArray(provided) && !preserveArrayParams) {
if (i in provided) {
value = provided[i];
}
}
else {
// If the param exists in the provided object.
if (options.name in provided) {
value = provided[options.name];
// if the provided is the first param value.
}
else if (definedParams.length === 1) {
value = provided;
}
}
// if the param is a target, resolve the target value.
if (options.isTarget) {
value = createLocator(value, options.cast);
}
// A target param using interpolation
if (typeof value === 'string' && value[0] === '@') {
value = createLocator(value.slice(1), options.cast);
}
// If there is a transformer defined.
if (!isLocator(value) && options.cast) {
value = options.cast(value);
}
// already been set, probably multiple values.
if (params[options.name]) {
params[options.name] = Array.isArray(params[options.name]) ? params[options.name] : [params[options.name]];
params[options.name].push(value);
}
else {
// set the value.
params[options.name] = value;
}
}
return params;
}
/**
* Parses a rule string expression.
*/
var parseRule = function (rule) {
var params = [];
var name = rule.split(':')[0];
if (includes(rule, ':')) {
params = rule
.split(':')
.slice(1)
.join(':')
.split(',');
}
return { name: name, params: params };
};
function createLocator(value, castFn) {
var locator = function (crossTable) {
var val = crossTable[value];
return castFn ? castFn(val) : val;
};
locator.__locatorRef = value;
return locator;
}
function extractLocators(params) {
if (Array.isArray(params)) {
return params.filter(isLocator);
}
return Object.keys(params)
.filter(function (key) { return isLocator(params[key]); })
.map(function (key) { return params[key]; });
}
/**
* Validates a value against the rules.
*/
function validate(value, rules, options) {
if (options === void 0) { options = {}; }
return __awaiter(this, void 0, void 0, function () {
var shouldBail, skipIfEmpty, field, result, errors, failedRules, regenerateMap;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
shouldBail = options === null || options === void 0 ? void 0 : options.bails;
skipIfEmpty = options === null || options === void 0 ? void 0 : options.skipIfEmpty;
field = {
name: (options === null || options === void 0 ? void 0 : options.name) || '{field}',
rules: normalizeRules(rules),
bails: shouldBail !== null && shouldBail !== void 0 ? shouldBail : true,
skipIfEmpty: skipIfEmpty !== null && skipIfEmpty !== void 0 ? skipIfEmpty : true,
forceRequired: false,
crossTable: (options === null || options === void 0 ? void 0 : options.values) || {},
names: (options === null || options === void 0 ? void 0 : options.names) || {},
customMessages: (options === null || options === void 0 ? void 0 : options.customMessages) || {}
};
return [4 /*yield*/, _validate(field, value, options)];
case 1:
result = _a.sent();
errors = [];
failedRules = {};
regenerateMap = {};
result.errors.forEach(function (e) {
var msg = e.msg();
errors.push(msg);
failedRules[e.rule] = msg;
regenerateMap[e.rule] = e.msg;
});
return [2 /*return*/, {
valid: result.valid,
errors: errors,
failedRules: failedRules,
regenerateMap: regenerateMap
}];
}
});
});
}
/**
* Starts the validation process.
*/
function _validate(field, value, _a) {
var _b = (_a === void 0 ? {} : _a).isInitial, isInitial = _b === void 0 ? false : _b;
return __awaiter(this, void 0, void 0, function () {
var _c, shouldSkip, errors, rules, length, i, rule, result;
return __generator(this, function (_d) {
switch (_d.label) {
case 0: return [4 /*yield*/, _shouldSkip(field, value)];
case 1:
_c = _d.sent(), shouldSkip = _c.shouldSkip, errors = _c.errors;
if (shouldSkip) {
return [2 /*return*/, {
valid: !errors.length,
errors: errors
}];
}
rules = Object.keys(field.rules).filter(function (rule) { return !RuleContainer.isRequireRule(rule); });
length = rules.length;
i = 0;
_d.label = 2;
case 2:
if (!(i < length)) return [3 /*break*/, 5];
if (isInitial && RuleContainer.isLazy(rules[i])) {
return [3 /*break*/, 4];
}
rule = rules[i];
return [4 /*yield*/, _test(field, value, {
name: rule,
params: field.rules[rule]
})];
case 3:
result = _d.sent();
if (!result.valid && result.error) {
errors.push(result.error);
if (field.bails) {
return [2 /*return*/, {
valid: false,
errors: errors
}];
}
}
_d.label = 4;
case 4:
i++;
return [3 /*break*/, 2];
case 5: return [2 /*return*/, {
valid: !errors.length,
errors: errors
}];
}
});
});
}
function _shouldSkip(field, value) {
return __awaiter(this, void 0, void 0, function () {
var requireRules, length, errors, isEmpty, isEmptyAndOptional, isRequired, i, rule, result;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
requireRules = Object.keys(field.rules).filter(RuleContainer.isRequireRule);
length = requireRules.length;
errors = [];
isEmpty = isNullOrUndefined(value) || value === '' || isEmptyArray(value);
isEmptyAndOptional = isEmpty && field.skipIfEmpty;
isRequired = false;
i = 0;
_a.label = 1;
case 1:
if (!(i < length)) return [3 /*break*/, 4];
rule = requireRules[i];
return [4 /*yield*/, _test(field, value, {
name: rule,
params: field.rules[rule]
})];
case 2:
result = _a.sent();
if (!isObject(result)) {
throw new Error('Require rules has to return an object (see docs)');
}
if (result.required) {
isRequired = true;
}
if (!result.valid && result.error) {
errors.push(result.error);
// Exit early as the field is required and failed validation.
if (field.bails) {
return [2 /*return*/, {
shouldSkip: true,
errors: errors
}];
}
}
_a.label = 3;
case 3:
i++;
return [3 /*break*/, 1];
case 4:
if (isEmpty && !isRequired && !field.skipIfEmpty) {
return [2 /*return*/, {
shouldSkip: false,
errors: errors
}];
}
// field is configured to run through the pipeline regardless
if (!field.bails && !isEmptyAndOptional) {
return [2 /*return*/, {
shouldSkip: false,
errors: errors
}];
}
// skip if the field is not required and has an empty value.
return [2 /*return*/, {
shouldSkip: !isRequired && isEmpty,
errors: errors
}];
}
});
});
}
/**
* Tests a single input value against a rule.
*/
function _test(field, value, rule) {
return __awaiter(this, void 0, void 0, function () {
var ruleSchema, normalizedValue, params, result, values_1;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
ruleSchema = RuleContainer.getRuleDefinition(rule.name);
if (!ruleSchema || !ruleSchema.validate) {
throw new Error("No such validator '" + rule.name + "' exists.");
}
normalizedValue = ruleSchema.castValue ? ruleSchema.castValue(value) : value;
params = fillTargetValues(rule.params, field.crossTable);
return [4 /*yield*/, ruleSchema.validate(normalizedValue, params)];
case 1:
result = _a.sent();
if (typeof result === 'string') {
values_1 = __assign(__assign({}, (params || {})), { _field_: field.name, _value_: value, _rule_: rule.name });
return [2 /*return*/, {
valid: false,
error: { rule: rule.name, msg: function () { return vee_validate_esm_interpolate(result, values_1); } }
}];
}
if (!isObject(result)) {
result = { valid: result };
}
return [2 /*return*/, {
valid: result.valid,
required: result.required,
error: result.valid ? undefined : _generateFieldError(field, value, ruleSchema, rule.name, params)
}];
}
});
});
}
/**
* Generates error messages.
*/
function _generateFieldError(field, value, ruleSchema, ruleName, params) {
var _a;
var message = (_a = field.customMessages[ruleName]) !== null && _a !== void 0 ? _a : ruleSchema.message;
var ruleTargets = _getRuleTargets(field, ruleSchema, ruleName);
var _b = _getUserTargets(field, ruleSchema, ruleName, message), userTargets = _b.userTargets, userMessage = _b.userMessage;
var values = __assign(__assign(__assign(__assign({}, (params || {})), { _field_: field.name, _value_: value, _rule_: ruleName }), ruleTargets), userTargets);
return {
msg: function () { return _normalizeMessage(userMessage || getConfig().defaultMessage, field.name, values); },
rule: ruleName
};
}
function _getRuleTargets(field, ruleSchema, ruleName) {
var params = ruleSchema.params;
if (!params) {
return {};
}
var numTargets = params.filter(function (param) { return param.isTarget; }).length;
if (numTargets <= 0) {
return {};
}
var names = {};
var ruleConfig = field.rules[ruleName];
if (!Array.isArray(ruleConfig) && isObject(ruleConfig)) {
ruleConfig = params.map(function (param) {
return ruleConfig[param.name];
});
}
for (var index = 0; index < params.length; index++) {
var param = params[index];
var key = ruleConfig[index];
if (!isLocator(key)) {
continue;
}
key = key.__locatorRef;
var name_1 = field.names[key] || key;
names[param.name] = name_1;
names["_" + param.name + "_"] = field.crossTable[key];
}
return names;
}
function _getUserTargets(field, ruleSchema, ruleName, userMessage) {
var userTargets = {};
var rules = field.rules[ruleName];
var params = ruleSchema.params || [];
// early return if no rules
if (!rules) {
return {};
}
// check all rules to convert targets
Object.keys(rules).forEach(function (key, index) {
// get the rule
var rule = rules[key];
if (!isLocator(rule)) {
return {};
}
// get associated parameter
var param = params[index];
if (!param) {
return {};
}
// grab the name of the target
var name = rule.__locatorRef;
userTargets[param.name] = field.names[name] || name;
userTargets["_" + param.name + "_"] = field.crossTable[name];
});
return {
userTargets: userTargets,
userMessage: userMessage
};
}
function _normalizeMessage(template, field, values) {
if (typeof template === 'function') {
return template(field, values);
}
return vee_validate_esm_interpolate(template, __assign(__assign({}, values), { _field_: field }));
}
function fillTargetValues(params, crossTable) {
if (Array.isArray(params)) {
return params;
}
var values = {};
var normalize = function (value) {
if (isLocator(value)) {
return value(crossTable);
}
return value;
};
Object.keys(params).forEach(function (param) {
values[param] = normalize(params[param]);
});
return values;
}
var aggressive = function () { return ({
on: ['input', 'blur']
}); };
var lazy = function () { return ({
on: ['change']
}); };
var eager = function (_a) {
var errors = _a.errors;
if (errors.length) {
return {
on: ['input', 'change']
};
}
return {
on: ['change', 'blur']
};
};
var passive = function () { return ({
on: []
}); };
var modes = {
aggressive: aggressive,
eager: eager,
passive: passive,
lazy: lazy
};
var setInteractionMode = function (mode, implementation) {
setConfig({ mode: mode });
if (!implementation) {
return;
}
if (!isCallable(implementation)) {
throw new Error('A mode implementation must be a function');
}
modes[mode] = implementation;
};
var EVENT_BUS = new external_commonjs_vue_commonjs2_vue_root_Vue_default.a();
function localeChanged() {
EVENT_BUS.$emit('change:locale');
}
var Dictionary = /** @class */ (function () {
function Dictionary(locale, dictionary) {
this.container = {};
this.locale = locale;
this.merge(dictionary);
}
Dictionary.prototype.resolve = function (field, rule, values) {
return this.format(this.locale, field, rule, values);
};
Dictionary.prototype.format = function (locale, field, rule, values) {
var _a, _b, _c, _d, _e, _f, _g, _h;
var message;
// find if specific message for that field was specified.
message = ((_c = (_b = (_a = this.container[locale]) === null || _a === void 0 ? void 0 : _a.fields) === null || _b === void 0 ? void 0 : _b[field]) === null || _c === void 0 ? void 0 : _c[rule]) || ((_e = (_d = this.container[locale]) === null || _d === void 0 ? void 0 : _d.messages) === null || _e === void 0 ? void 0 : _e[rule]);
if (!message) {
message = '{_field_} is not valid';
}
field = (_h = (_g = (_f = this.container[locale]) === null || _f === void 0 ? void 0 : _f.names) === null || _g === void 0 ? void 0 : _g[field]) !== null && _h !== void 0 ? _h : field;
return isCallable(message) ? message(field, values) : vee_validate_esm_interpolate(message, __assign(__assign({}, values), { _field_: field }));
};
Dictionary.prototype.merge = function (dictionary) {
merge(this.container, dictionary);
};
Dictionary.prototype.hasRule = function (name) {
var _a, _b;
return !!((_b = (_a = this.container[this.locale]) === null || _a === void 0 ? void 0 : _a.messages) === null || _b === void 0 ? void 0 : _b[name]);
};
return Dictionary;
}());
var DICTIONARY;
function localize(locale, dictionary) {
var _a;
if (!DICTIONARY) {
DICTIONARY = new Dictionary('en', {});
setConfig({
defaultMessage: function (field, values) {
return DICTIONARY.resolve(field, values === null || values === void 0 ? void 0 : values._rule_, values || {});
}
});
}
if (typeof locale === 'string') {
DICTIONARY.locale = locale;
if (dictionary) {
DICTIONARY.merge((_a = {}, _a[locale] = dictionary, _a));
}
localeChanged();
return;
}
DICTIONARY.merge(locale);
}
var isEvent = function (evt) {
if (!evt) {
return false;
}
if (typeof Event !== 'undefined' && isCallable(Event) && evt instanceof Event) {
return true;
}
// this is for IE
/* istanbul ignore next */
if (evt && evt.srcElement) {
return true;
}
return false;
};
function normalizeEventValue(value) {
var _a, _b;
if (!isEvent(value)) {
return value;
}
var input = value.target;
if (input.type === 'file' && input.files) {
return vee_validate_esm_toArray(input.files);
}
// If the input has a `v-model.number` modifier applied.
if ((_a = input._vModifiers) === null || _a === void 0 ? void 0 : _a.number) {
// as per the spec the v-model.number uses parseFloat
var valueAsNumber = parseFloat(input.value);
if (vee_validate_esm_isNaN(valueAsNumber)) {
return input.value;
}
return valueAsNumber;
}
if ((_b = input._vModifiers) === null || _b === void 0 ? void 0 : _b.trim) {
var trimmedValue = typeof input.value === 'string' ? input.value.trim() : input.value;
return trimmedValue;
}
return input.value;
}
var isTextInput = function (vnode) {
var _a;
var attrs = ((_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs) || vnode.elm;
// it will fallback to being a text input per browsers spec.
if (vnode.tag === 'input' && (!attrs || !attrs.type)) {
return true;
}
if (vnode.tag === 'textarea') {
return true;
}
return includes(['text', 'password', 'search', 'email', 'tel', 'url', 'number'], attrs === null || attrs === void 0 ? void 0 : attrs.type);
};
// export const isCheckboxOrRadioInput = (vnode: VNode): boolean => {
// const attrs = (vnode.data && vnode.data.attrs) || vnode.elm;
// return includes(['radio', 'checkbox'], attrs && attrs.type);
// };
// Gets the model object on the vnode.
function findModel(vnode) {
if (!vnode.data) {
return undefined;
}
// Component Model
// THIS IS NOT TYPED IN OFFICIAL VUE TYPINGS
// eslint-disable-next-line
var nonStandardVNodeData = vnode.data;
if ('model' in nonStandardVNodeData) {
return nonStandardVNodeData.model;
}
if (!vnode.data.directives) {
return undefined;
}
return find(vnode.data.directives, function (d) { return d.name === 'model'; });
}
function findValue(vnode) {
var _a, _b;
var model = findModel(vnode);
if (model) {
return { value: model.value };
}
var config = findModelConfig(vnode);
var prop = (config === null || config === void 0 ? void 0 : config.prop) || 'value';
if (((_a = vnode.componentOptions) === null || _a === void 0 ? void 0 : _a.propsData) && prop in vnode.componentOptions.propsData) {
var propsDataWithValue = vnode.componentOptions.propsData;
return { value: propsDataWithValue[prop] };
}
if (((_b = vnode.data) === null || _b === void 0 ? void 0 : _b.domProps) && 'value' in vnode.data.domProps) {
return { value: vnode.data.domProps.value };
}
return undefined;
}
function extractChildren(vnode) {
if (Array.isArray(vnode)) {
return vnode;
}
if (Array.isArray(vnode.children)) {
return vnode.children;
}
/* istanbul ignore next */
if (vnode.componentOptions && Array.isArray(vnode.componentOptions.children)) {
return vnode.componentOptions.children;
}
return [];
}
function findInputNode(vnode) {
if (!Array.isArray(vnode) && findValue(vnode) !== undefined) {
return vnode;
}
var children = extractChildren(vnode);
return children.reduce(function (candidate, node) {
if (candidate) {
return candidate;
}
return findInputNode(node);
}, null);
}
// Resolves v-model config if exists.
function findModelConfig(vnode) {
/* istanbul ignore next */
if (!vnode.componentOptions)
return null;
// This is also not typed in the standard Vue TS.
return vnode.componentOptions.Ctor.options.model;
}
// Adds a listener to vnode listener object.
function mergeVNodeListeners(obj, eventName, handler) {
// no listener at all.
if (isNullOrUndefined(obj[eventName])) {
obj[eventName] = [handler];
return;
}
// Is an invoker.
if (isCallable(obj[eventName]) && obj[eventName].fns) {
var invoker = obj[eventName];
invoker.fns = Array.isArray(invoker.fns) ? invoker.fns : [invoker.fns];
if (!includes(invoker.fns, handler)) {
invoker.fns.push(handler);
}
return;
}
if (isCallable(obj[eventName])) {
var prev = obj[eventName];
obj[eventName] = [prev];
}
if (Array.isArray(obj[eventName]) && !includes(obj[eventName], handler)) {
obj[eventName].push(handler);
}
}
// Adds a listener to a native HTML vnode.
function addNativeNodeListener(node, eventName, handler) {
/* istanbul ignore next */
if (!node.data) {
node.data = {};
}
if (isNullOrUndefined(node.data.on)) {
node.data.on = {};
}
mergeVNodeListeners(node.data.on, eventName, handler);
}
// Adds a listener to a Vue component vnode.
function addComponentNodeListener(node, eventName, handler) {
/* istanbul ignore next */
if (!node.componentOptions) {
return;
}
/* istanbul ignore next */
if (!node.componentOptions.listeners) {
node.componentOptions.listeners = {};
}
mergeVNodeListeners(node.componentOptions.listeners, eventName, handler);
}
function addVNodeListener(vnode, eventName, handler) {
if (vnode.componentOptions) {
addComponentNodeListener(vnode, eventName, handler);
return;
}
addNativeNodeListener(vnode, eventName, handler);
}
// Determines if `change` should be used over `input` for listeners.
function getInputEventName(vnode, model) {
var _a;
// Is a component.
if (vnode.componentOptions) {
var event_1 = (findModelConfig(vnode) || { event: 'input' }).event;
return event_1;
}
// Lazy Models typically use change event
if ((_a = model === null || model === void 0 ? void 0 : model.modifiers) === null || _a === void 0 ? void 0 : _a.lazy) {
return 'change';
}
// is a textual-type input.
if (isTextInput(vnode)) {
return 'input';
}
return 'change';
}
function isHTMLNode(node) {
return includes(['input', 'select', 'textarea'], node.tag);
}
// TODO: Type this one properly.
function normalizeSlots(slots, ctx) {
var acc = [];
return Object.keys(slots).reduce(function (arr, key) {
slots[key].forEach(function (vnode) {
if (!vnode.context) {
slots[key].context = ctx;
if (!vnode.data) {
vnode.data = {};
}
vnode.data.slot = key;
}
});
return arr.concat(slots[key]);
}, acc);
}
function resolveTextualRules(vnode) {
var _a;
var attrs = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs;
var rules = {};
if (!attrs)
return rules;
if (attrs.type === 'email' && RuleContainer.getRuleDefinition('email')) {
rules.email = ['multiple' in attrs];
}
if (attrs.pattern && RuleContainer.getRuleDefinition('regex')) {
rules.regex = attrs.pattern;
}
if (attrs.maxlength >= 0 && RuleContainer.getRuleDefinition('max')) {
rules.max = attrs.maxlength;
}
if (attrs.minlength >= 0 && RuleContainer.getRuleDefinition('min')) {
rules.min = attrs.minlength;
}
if (attrs.type === 'number') {
if (isSpecified(attrs.min) && RuleContainer.getRuleDefinition('min_value')) {
rules.min_value = Number(attrs.min);
}
if (isSpecified(attrs.max) && RuleContainer.getRuleDefinition('max_value')) {
rules.max_value = Number(attrs.max);
}
}
return rules;
}
function resolveRules(vnode) {
var _a;
var htmlTags = ['input', 'select', 'textarea'];
var attrs = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs;
if (!includes(htmlTags, vnode.tag) || !attrs) {
return {};
}
var rules = {};
if ('required' in attrs && attrs.required !== false && RuleContainer.getRuleDefinition('required')) {
rules.required = attrs.type === 'checkbox' ? [true] : true;
}
if (isTextInput(vnode)) {
return normalizeRules(__assign(__assign({}, rules), resolveTextualRules(vnode)));
}
return normalizeRules(rules);
}
function normalizeChildren(context, slotProps) {
if (context.$scopedSlots.default) {
return context.$scopedSlots.default(slotProps) || [];
}
return context.$slots.default || [];
}
/**
* Determines if a provider needs to run validation.
*/
function shouldValidate(ctx, value) {
// when an immediate/initial validation is needed and wasn't done before.
if (!ctx._ignoreImmediate && ctx.immediate) {
return true;
}
// when the value changes for whatever reason.
if (ctx.value !== value && ctx.normalizedEvents.length) {
return true;
}
// when it needs validation due to props/cross-fields changes.
if (ctx._needsValidation) {
return true;
}
// when the initial value is undefined and the field wasn't rendered yet.
if (!ctx.initialized && value === undefined) {
return true;
}
return false;
}
function createValidationCtx(ctx) {
return __assign(__assign({}, ctx.flags), { errors: ctx.errors, classes: ctx.classes, failedRules: ctx.failedRules, reset: function () { return ctx.reset(); }, validate: function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return ctx.validate.apply(ctx, args);
}, ariaInput: {
'aria-invalid': ctx.flags.invalid ? 'true' : 'false',
'aria-required': ctx.isRequired ? 'true' : 'false',
'aria-errormessage': "vee_" + ctx.id
}, ariaMsg: {
id: "vee_" + ctx.id,
'aria-live': ctx.errors.length ? 'assertive' : 'off'
} });
}
function onRenderUpdate(vm, value) {
if (!vm.initialized) {
vm.initialValue = value;
}
var validateNow = shouldValidate(vm, value);
vm._needsValidation = false;
vm.value = value;
vm._ignoreImmediate = true;
if (!validateNow) {
return;
}
var validate = function () {
if (vm.immediate || vm.flags.validated) {
return triggerThreadSafeValidation(vm);
}
vm.validateSilent();
};
if (vm.initialized) {
validate();
return;
}
vm.$once('hook:mounted', function () { return validate(); });
}
function computeModeSetting(ctx) {
var compute = (isCallable(ctx.mode) ? ctx.mode : modes[ctx.mode]);
return compute(ctx);
}
function triggerThreadSafeValidation(vm) {
var pendingPromise = vm.validateSilent();
// avoids race conditions between successive validations.
vm._pendingValidation = pendingPromise;
return pendingPromise.then(function (result) {
if (pendingPromise === vm._pendingValidation) {
vm.applyResult(result);
vm._pendingValidation = undefined;
}
return result;
});
}
// Creates the common handlers for a validatable context.
function createCommonHandlers(vm) {
if (!vm.$veeOnInput) {
vm.$veeOnInput = function (e) {
vm.syncValue(e); // track and keep the value updated.
vm.setFlags({ dirty: true, pristine: false });
};
}
var onInput = vm.$veeOnInput;
if (!vm.$veeOnBlur) {
vm.$veeOnBlur = function () {
vm.setFlags({ touched: true, untouched: false });
};
}
// Blur event listener.
var onBlur = vm.$veeOnBlur;
var onValidate = vm.$veeHandler;
var mode = computeModeSetting(vm);
// Handle debounce changes.
if (!onValidate || vm.$veeDebounce !== vm.debounce) {
onValidate = debounce(function () {
vm.$nextTick(function () {
if (!vm._pendingReset) {
triggerThreadSafeValidation(vm);
}
vm._pendingReset = false;
});
}, mode.debounce || vm.debounce);
// Cache the handler so we don't create it each time.
vm.$veeHandler = onValidate;
// cache the debounce value so we detect if it was changed.
vm.$veeDebounce = vm.debounce;
}
return { onInput: onInput, onBlur: onBlur, onValidate: onValidate };
}
// Adds all plugin listeners to the vnode.
function addListeners(vm, node) {
var value = findValue(node);
// cache the input eventName.
vm._inputEventName = vm._inputEventName || getInputEventName(node, findModel(node));
onRenderUpdate(vm, value === null || value === void 0 ? void 0 : value.value);
var _a = createCommonHandlers(vm), onInput = _a.onInput, onBlur = _a.onBlur, onValidate = _a.onValidate;
addVNodeListener(node, vm._inputEventName, onInput);
addVNodeListener(node, 'blur', onBlur);
// add the validation listeners.
vm.normalizedEvents.forEach(function (evt) {
addVNodeListener(node, evt, onValidate);
});
vm.initialized = true;
}
var PROVIDER_COUNTER = 0;
function vee_validate_esm_data() {
var errors = [];
var fieldName = '';
var defaultValues = {
errors: errors,
value: undefined,
initialized: false,
initialValue: undefined,
flags: createFlags(),
failedRules: {},
isActive: true,
fieldName: fieldName,
id: ''
};
return defaultValues;
}
var ValidationProvider = external_commonjs_vue_commonjs2_vue_root_Vue_default.a.extend({
inject: {
$_veeObserver: {
from: '$_veeObserver',
default: function () {
if (!this.$vnode.context.$_veeObserver) {
this.$vnode.context.$_veeObserver = createObserver();
}
return this.$vnode.context.$_veeObserver;
}
}
},
props: {
vid: {
type: String,
default: ''
},
name: {
type: String,
default: null
},
mode: {
type: [String, Function],
default: function () {
return getConfig().mode;
}
},
rules: {
type: [Object, String],
default: null
},
immediate: {
type: Boolean,
default: false
},
bails: {
type: Boolean,
default: function () { return getConfig().bails; }
},
skipIfEmpty: {
type: Boolean,
default: function () { return getConfig().skipOptional; }
},
debounce: {
type: Number,
default: 0
},
tag: {
type: String,
default: 'span'
},
slim: {
type: Boolean,
default: false
},
disabled: {
type: Boolean,
default: false
},
customMessages: {
type: Object,
default: function () {
return {};
}
}
},
watch: {
rules: {
deep: true,
handler: function (val, oldVal) {
this._needsValidation = !isEqual(val, oldVal);
}
}
},
data: vee_validate_esm_data,
computed: {
fieldDeps: function () {
var _this = this;
return Object.keys(this.normalizedRules).reduce(function (acc, rule) {
var deps = extractLocators(_this.normalizedRules[rule]).map(function (dep) { return dep.__locatorRef; });
acc.push.apply(acc, deps);
deps.forEach(function (depName) {
watchCrossFieldDep(_this, depName);
});
return acc;
}, []);
},
normalizedEvents: function () {
var _this = this;
var on = computeModeSetting(this).on;
return (on || []).map(function (e) {
if (e === 'input') {
return _this._inputEventName;
}
return e;
});
},
isRequired: function () {
var rules = __assign(__assign({}, this._resolvedRules), this.normalizedRules);
var isRequired = Object.keys(rules).some(RuleContainer.isRequireRule);
this.flags.required = !!isRequired;
return isRequired;
},
classes: function () {
var names = getConfig().classes;
return computeClassObj(names, this.flags);
},
normalizedRules: function () {
return normalizeRules(this.rules);
}
},
mounted: function () {
var _this = this;
var onLocaleChanged = function () {
if (!_this.flags.validated) {
return;
}
var regenerateMap = _this._regenerateMap;
if (regenerateMap) {
var errors_1 = [];
var failedRules_1 = {};
Object.keys(regenerateMap).forEach(function (rule) {
var msg = regenerateMap[rule]();
errors_1.push(msg);
failedRules_1[rule] = msg;
});
_this.applyResult({ errors: errors_1, failedRules: failedRules_1, regenerateMap: regenerateMap });
return;
}
_this.validate();
};
EVENT_BUS.$on('change:locale', onLocaleChanged);
this.$on('hook:beforeDestroy', function () {
EVENT_BUS.$off('change:locale', onLocaleChanged);
});
},
render: function (h) {
var _a, _b, _c, _d;
this.registerField();
var ctx = createValidationCtx(this);
var children = normalizeChildren(this, ctx);
var input = findInputNode(children);
if (!input) {
// Silent exit if no input was found.
return this.slim && children.length <= 1 ? children[0] : h(this.tag, children);
}
var resolved = getConfig().useConstraintAttrs ? resolveRules(input) : {};
if (!isEqual(this._resolvedRules, resolved)) {
this._needsValidation = true;
}
if (isHTMLNode(input)) {
this.fieldName = ((_b = (_a = input.data) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b.name) || ((_d = (_c = input.data) === null || _c === void 0 ? void 0 : _c.attrs) === null || _d === void 0 ? void 0 : _d.id);
}
this._resolvedRules = resolved;
addListeners(this, input);
return this.slim && children.length <= 1 ? children[0] : h(this.tag, children);
},
beforeDestroy: function () {
// cleanup reference.
this.$_veeObserver.unobserve(this.id);
},
activated: function () {
this.isActive = true;
},
deactivated: function () {
this.isActive = false;
},
methods: {
setFlags: function (flags) {
var _this = this;
Object.keys(flags).forEach(function (flag) {
_this.flags[flag] = flags[flag];
});
},
syncValue: function (v) {
var value = normalizeEventValue(v);
this.value = value;
this.flags.changed = this.initialValue !== value;
},
reset: function () {
var _this = this;
this.errors = [];
this.initialValue = this.value;
var flags = createFlags();
flags.required = this.isRequired;
this.setFlags(flags);
this.failedRules = {};
this.validateSilent();
this._pendingValidation = undefined;
this._pendingReset = true;
setTimeout(function () {
_this._pendingReset = false;
}, this.debounce);
},
validate: function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
if (args.length > 0) {
this.syncValue(args[0]);
}
return [2 /*return*/, triggerThreadSafeValidation(this)];
});
});
},
validateSilent: function () {
return __awaiter(this, void 0, void 0, function () {
var rules, result;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
this.setFlags({ pending: true });
rules = __assign(__assign({}, this._resolvedRules), this.normalizedRules);
Object.defineProperty(rules, '_$$isNormalized', {
value: true,
writable: false,
enumerable: false,
configurable: false
});
return [4 /*yield*/, validate(this.value, rules, __assign(__assign({ name: this.name || this.fieldName }, createLookup(this)), { bails: this.bails, skipIfEmpty: this.skipIfEmpty, isInitial: !this.initialized, customMessages: this.customMessages }))];
case 1:
result = _a.sent();
this.setFlags({
pending: false,
valid: result.valid,
invalid: !result.valid
});
return [2 /*return*/, result];
}
});
});
},
setErrors: function (errors) {
this.applyResult({ errors: errors, failedRules: {} });
},
applyResult: function (_a) {
var errors = _a.errors, failedRules = _a.failedRules, regenerateMap = _a.regenerateMap;
this.errors = errors;
this._regenerateMap = regenerateMap;
this.failedRules = __assign({}, (failedRules || {}));
this.setFlags({
valid: !errors.length,
passed: !errors.length,
invalid: !!errors.length,
failed: !!errors.length,
validated: true,
changed: this.value !== this.initialValue
});
},
registerField: function () {
updateRenderingContextRefs(this);
}
}
});
function computeClassObj(names, flags) {
var acc = {};
var keys = Object.keys(flags);
var length = keys.length;
var _loop_1 = function (i) {
var flag = keys[i];
var className = (names && names[flag]) || flag;
var value = flags[flag];
if (isNullOrUndefined(value)) {
return "continue";
}
if ((flag === 'valid' || flag === 'invalid') && !flags.validated) {
return "continue";
}
if (typeof className === 'string') {
acc[className] = value;
}
else if (Array.isArray(className)) {
className.forEach(function (cls) {
acc[cls] = value;
});
}
};
for (var i = 0; i < length; i++) {
_loop_1(i);
}
return acc;
}
function createLookup(vm) {
var providers = vm.$_veeObserver.refs;
var reduced = {
names: {},
values: {}
};
return vm.fieldDeps.reduce(function (acc, depName) {
if (!providers[depName]) {
return acc;
}
acc.values[depName] = providers[depName].value;
acc.names[depName] = providers[depName].name;
return acc;
}, reduced);
}
function extractId(vm) {
if (vm.vid) {
return vm.vid;
}
if (vm.name) {
return vm.name;
}
if (vm.id) {
return vm.id;
}
if (vm.fieldName) {
return vm.fieldName;
}
PROVIDER_COUNTER++;
return "_vee_" + PROVIDER_COUNTER;
}
function updateRenderingContextRefs(vm) {
var providedId = extractId(vm);
var id = vm.id;
// Nothing has changed.
if (!vm.isActive || (id === providedId && vm.$_veeObserver.refs[id])) {
return;
}
// vid was changed.
if (id !== providedId && vm.$_veeObserver.refs[id] === vm) {
vm.$_veeObserver.unobserve(id);
}
vm.id = providedId;
vm.$_veeObserver.observe(vm);
}
function createObserver() {
return {
refs: {},
observe: function (vm) {
this.refs[vm.id] = vm;
},
unobserve: function (id) {
delete this.refs[id];
}
};
}
function watchCrossFieldDep(ctx, depName, withHooks) {
if (withHooks === void 0) { withHooks = true; }
var providers = ctx.$_veeObserver.refs;
if (!ctx._veeWatchers) {
ctx._veeWatchers = {};
}
if (!providers[depName] && withHooks) {
return ctx.$once('hook:mounted', function () {
watchCrossFieldDep(ctx, depName, false);
});
}
if (!isCallable(ctx._veeWatchers[depName]) && providers[depName]) {
ctx._veeWatchers[depName] = providers[depName].$watch('value', function () {
if (ctx.flags.validated) {
ctx._needsValidation = true;
ctx.validate();
}
});
}
}
var FLAGS_STRATEGIES = [
['pristine', 'every'],
['dirty', 'some'],
['touched', 'some'],
['untouched', 'every'],
['valid', 'every'],
['invalid', 'some'],
['pending', 'some'],
['validated', 'every'],
['changed', 'some'],
['passed', 'every'],
['failed', 'some']
];
var OBSERVER_COUNTER = 0;
function data$1() {
var refs = {};
var errors = {};
var flags = createObserverFlags();
var fields = {};
// FIXME: Not sure of this one can be typed, circular type reference.
var observers = [];
return {
id: '',
refs: refs,
observers: observers,
errors: errors,
flags: flags,
fields: fields
};
}
function provideSelf() {
return {
$_veeObserver: this
};
}
var ValidationObserver = external_commonjs_vue_commonjs2_vue_root_Vue_default.a.extend({
name: 'ValidationObserver',
provide: provideSelf,
inject: {
$_veeObserver: {
from: '$_veeObserver',
default: function () {
if (!this.$vnode.context.$_veeObserver) {
return null;
}
return this.$vnode.context.$_veeObserver;
}
}
},
props: {
tag: {
type: String,
default: 'span'
},
vid: {
type: String,
default: function () {
return "obs_" + OBSERVER_COUNTER++;
}
},
slim: {
type: Boolean,
default: false
},
disabled: {
type: Boolean,
default: false
}
},
data: data$1,
created: function () {
var _this = this;
this.id = this.vid;
register(this);
var onChange = debounce(function (_a) {
var errors = _a.errors, flags = _a.flags, fields = _a.fields;
_this.errors = errors;
_this.flags = flags;
_this.fields = fields;
}, 16);
this.$watch(computeObserverState, onChange);
},
activated: function () {
register(this);
},
deactivated: function () {
unregister(this);
},
beforeDestroy: function () {
unregister(this);
},
render: function (h) {
var children = normalizeChildren(this, prepareSlotProps(this));
return this.slim && children.length <= 1 ? children[0] : h(this.tag, { on: this.$listeners }, children);
},
methods: {
observe: function (subscriber, kind) {
var _a;
if (kind === void 0) { kind = 'provider'; }
if (kind === 'observer') {
this.observers.push(subscriber);
return;
}
this.refs = __assign(__assign({}, this.refs), (_a = {}, _a[subscriber.id] = subscriber, _a));
},
unobserve: function (id, kind) {
if (kind === void 0) { kind = 'provider'; }
if (kind === 'provider') {
var provider = this.refs[id];
if (!provider) {
return;
}
this.$delete(this.refs, id);
return;
}
var idx = findIndex(this.observers, function (o) { return o.id === id; });
if (idx !== -1) {
this.observers.splice(idx, 1);
}
},
validate: function (_a) {
var _b = (_a === void 0 ? {} : _a).silent, silent = _b === void 0 ? false : _b;
return __awaiter(this, void 0, void 0, function () {
var results;
return __generator(this, function (_c) {
switch (_c.label) {
case 0: return [4 /*yield*/, Promise.all(__spreadArrays(values(this.refs)
.filter(function (r) { return !r.disabled; })
.map(function (ref) { return ref[silent ? 'validateSilent' : 'validate']().then(function (r) { return r.valid; }); }), this.observers.filter(function (o) { return !o.disabled; }).map(function (obs) { return obs.validate({ silent: silent }); })))];
case 1:
results = _c.sent();
return [2 /*return*/, results.every(function (r) { return r; })];
}
});
});
},
handleSubmit: function (cb) {
return __awaiter(this, void 0, void 0, function () {
var isValid;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.validate()];
case 1:
isValid = _a.sent();
if (!isValid || !cb) {
return [2 /*return*/];
}
return [2 /*return*/, cb()];
}
});
});
},
reset: function () {
return __spreadArrays(values(this.refs), this.observers).forEach(function (ref) { return ref.reset(); });
},
setErrors: function (errors) {
var _this = this;
Object.keys(errors).forEach(function (key) {
var provider = _this.refs[key];
if (!provider)
return;
var errorArr = errors[key] || [];
errorArr = typeof errorArr === 'string' ? [errorArr] : errorArr;
provider.setErrors(errorArr);
});
this.observers.forEach(function (observer) {
observer.setErrors(errors);
});
}
}
});
function unregister(vm) {
if (vm.$_veeObserver) {
vm.$_veeObserver.unobserve(vm.id, 'observer');
}
}
function register(vm) {
if (vm.$_veeObserver) {
vm.$_veeObserver.observe(vm, 'observer');
}
}
function prepareSlotProps(vm) {
return __assign(__assign({}, vm.flags), { errors: vm.errors, fields: vm.fields, validate: vm.validate, passes: vm.handleSubmit, handleSubmit: vm.handleSubmit, reset: vm.reset });
}
// Creates a modified version of validation flags
function createObserverFlags() {
return __assign(__assign({}, createFlags()), { valid: true, invalid: false });
}
function computeObserverState() {
var vms = __spreadArrays(values(this.refs), this.observers);
var errors = {};
var flags = createObserverFlags();
var fields = {};
var length = vms.length;
for (var i = 0; i < length; i++) {
var vm = vms[i];
// validation provider
if (Array.isArray(vm.errors)) {
errors[vm.id] = vm.errors;
fields[vm.id] = __assign({ id: vm.id, name: vm.name, failedRules: vm.failedRules }, vm.flags);
continue;
}
// Nested observer, merge errors and fields
errors = __assign(__assign({}, errors), vm.errors);
fields = __assign(__assign({}, fields), vm.fields);
}
FLAGS_STRATEGIES.forEach(function (_a) {
var flag = _a[0], method = _a[1];
flags[flag] = vms[method](function (vm) { return vm.flags[flag]; });
});
return { errors: errors, flags: flags, fields: fields };
}
function withValidation(component, mapProps) {
if (mapProps === void 0) { mapProps = identity; }
var _a;
var options = 'options' in component ? component.options : component;
var providerOpts = ValidationProvider.options;
var hoc = {
name: (options.name || 'AnonymousHoc') + "WithValidation",
props: __assign({}, providerOpts.props),
data: providerOpts.data,
computed: __assign({}, providerOpts.computed),
methods: __assign({}, providerOpts.methods),
beforeDestroy: providerOpts.beforeDestroy,
inject: providerOpts.inject
};
var eventName = ((_a = options === null || options === void 0 ? void 0 : options.model) === null || _a === void 0 ? void 0 : _a.event) || 'input';
hoc.render = function (h) {
var _a;
this.registerField();
var vctx = createValidationCtx(this);
var listeners = __assign({}, this.$listeners);
var model = findModel(this.$vnode);
this._inputEventName = this._inputEventName || getInputEventName(this.$vnode, model);
var value = findValue(this.$vnode);
onRenderUpdate(this, value === null || value === void 0 ? void 0 : value.value);
var _b = createCommonHandlers(this), onInput = _b.onInput, onBlur = _b.onBlur, onValidate = _b.onValidate;
mergeVNodeListeners(listeners, eventName, onInput);
mergeVNodeListeners(listeners, 'blur', onBlur);
this.normalizedEvents.forEach(function (evt) {
mergeVNodeListeners(listeners, evt, onValidate);
});
// Props are any attrs not associated with ValidationProvider Plus the model prop.
// WARNING: Accidental prop overwrite will probably happen.
var prop = (findModelConfig(this.$vnode) || { prop: 'value' }).prop;
var props = __assign(__assign(__assign({}, this.$attrs), (_a = {}, _a[prop] = model === null || model === void 0 ? void 0 : model.value, _a)), mapProps(vctx));
return h(options, {
attrs: this.$attrs,
props: props,
on: listeners
}, normalizeSlots(this.$slots, this.$vnode.context));
};
return hoc;
}
var version = '3.3.0';
// CONCATENATED MODULE: ./node_modules/vee-validate/dist/rules.js
/**
* vee-validate v3.3.0
* (c) 2020 Abdelrahman Awad
* @license MIT
*/
/**
* Some Alpha Regex helpers.
* https://github.com/chriso/validator.js/blob/master/src/lib/alpha.js
*/
/* eslint-disable no-misleading-character-class */
var alpha = {
en: /^[A-Z]*$/i,
cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,
da: /^[A-ZÆØÅ]*$/i,
de: /^[A-ZÄÖÜß]*$/i,
es: /^[A-ZÁÉÍÑÓÚÜ]*$/i,
fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,
fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,
it: /^[A-Z\xC0-\xFF]*$/i,
lt: /^[A-ZĄČĘĖĮŠŲŪŽ]*$/i,
nl: /^[A-ZÉËÏÓÖÜ]*$/i,
hu: /^[A-ZÁÉÍÓÖŐÚÜŰ]*$/i,
pl: /^[A-ZĄĆĘŚŁŃÓŻŹ]*$/i,
pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,
ru: /^[А-ЯЁ]*$/i,
sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,
sr: /^[A-ZČĆŽŠĐ]*$/i,
sv: /^[A-ZÅÄÖ]*$/i,
tr: /^[A-ZÇĞİıÖŞÜ]*$/i,
uk: /^[А-ЩЬЮЯЄІЇҐ]*$/i,
ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,
az: /^[A-ZÇƏĞİıÖŞÜ]*$/i
};
var alphaSpaces = {
en: /^[A-Z\s]*$/i,
cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ\s]*$/i,
da: /^[A-ZÆØÅ\s]*$/i,
de: /^[A-ZÄÖÜß\s]*$/i,
es: /^[A-ZÁÉÍÑÓÚÜ\s]*$/i,
fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,
fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ\s]*$/i,
it: /^[A-Z\xC0-\xFF\s]*$/i,
lt: /^[A-ZĄČĘĖĮŠŲŪŽ\s]*$/i,
nl: /^[A-ZÉËÏÓÖÜ\s]*$/i,
hu: /^[A-ZÁÉÍÓÖŐÚÜŰ\s]*$/i,
pl: /^[A-ZĄĆĘŚŁŃÓŻŹ\s]*$/i,
pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ\s]*$/i,
ru: /^[А-ЯЁ\s]*$/i,
sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ\s]*$/i,
sr: /^[A-ZČĆŽŠĐ\s]*$/i,
sv: /^[A-ZÅÄÖ\s]*$/i,
tr: /^[A-ZÇĞİıÖŞÜ\s]*$/i,
uk: /^[А-ЩЬЮЯЄІЇҐ\s]*$/i,
ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ\s]*$/,
az: /^[A-ZÇƏĞİıÖŞÜ\s]*$/i
};
var alphanumeric = {
en: /^[0-9A-Z]*$/i,
cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,
da: /^[0-9A-ZÆØÅ]$/i,
de: /^[0-9A-ZÄÖÜß]*$/i,
es: /^[0-9A-ZÁÉÍÑÓÚÜ]*$/i,
fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,
fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,
it: /^[0-9A-Z\xC0-\xFF]*$/i,
lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ]*$/i,
hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]*$/i,
nl: /^[0-9A-ZÉËÏÓÖÜ]*$/i,
pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]*$/i,
pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,
ru: /^[0-9А-ЯЁ]*$/i,
sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,
sr: /^[0-9A-ZČĆŽŠĐ]*$/i,
sv: /^[0-9A-ZÅÄÖ]*$/i,
tr: /^[0-9A-ZÇĞİıÖŞÜ]*$/i,
uk: /^[0-9А-ЩЬЮЯЄІЇҐ]*$/i,
ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,
az: /^[0-9A-ZÇƏĞİıÖŞÜ]*$/i
};
var alphaDash = {
en: /^[0-9A-Z_-]*$/i,
cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ_-]*$/i,
da: /^[0-9A-ZÆØÅ_-]*$/i,
de: /^[0-9A-ZÄÖÜß_-]*$/i,
es: /^[0-9A-ZÁÉÍÑÓÚÜ_-]*$/i,
fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,
fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ_-]*$/i,
it: /^[0-9A-Z\xC0-\xFF_-]*$/i,
lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ_-]*$/i,
nl: /^[0-9A-ZÉËÏÓÖÜ_-]*$/i,
hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ_-]*$/i,
pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ_-]*$/i,
pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ_-]*$/i,
ru: /^[0-9А-ЯЁ_-]*$/i,
sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ_-]*$/i,
sr: /^[0-9A-ZČĆŽŠĐ_-]*$/i,
sv: /^[0-9A-ZÅÄÖ_-]*$/i,
tr: /^[0-9A-ZÇĞİıÖŞÜ_-]*$/i,
uk: /^[0-9А-ЩЬЮЯЄІЇҐ_-]*$/i,
ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ_-]*$/,
az: /^[0-9A-ZÇƏĞİıÖŞÜ_-]*$/i
};
var rules_validate = function (value, _a) {
var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;
if (Array.isArray(value)) {
return value.every(function (val) { return rules_validate(val, { locale: locale }); });
}
// Match at least one locale.
if (!locale) {
return Object.keys(alpha).some(function (loc) { return alpha[loc].test(value); });
}
return (alpha[locale] || alpha.en).test(value);
};
var params = [
{
name: 'locale'
}
];
var alpha$1 = {
validate: rules_validate,
params: params
};
var validate$1 = function (value, _a) {
var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;
if (Array.isArray(value)) {
return value.every(function (val) { return validate$1(val, { locale: locale }); });
}
// Match at least one locale.
if (!locale) {
return Object.keys(alphaDash).some(function (loc) { return alphaDash[loc].test(value); });
}
return (alphaDash[locale] || alphaDash.en).test(value);
};
var params$1 = [
{
name: 'locale'
}
];
var alpha_dash = {
validate: validate$1,
params: params$1
};
var validate$2 = function (value, _a) {
var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;
if (Array.isArray(value)) {
return value.every(function (val) { return validate$2(val, { locale: locale }); });
}
// Match at least one locale.
if (!locale) {
return Object.keys(alphanumeric).some(function (loc) { return alphanumeric[loc].test(value); });
}
return (alphanumeric[locale] || alphanumeric.en).test(value);
};
var params$2 = [
{
name: 'locale'
}
];
var alpha_num = {
validate: validate$2,
params: params$2
};
var validate$3 = function (value, _a) {
var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;
if (Array.isArray(value)) {
return value.every(function (val) { return validate$3(val, { locale: locale }); });
}
// Match at least one locale.
if (!locale) {
return Object.keys(alphaSpaces).some(function (loc) { return alphaSpaces[loc].test(value); });
}
return (alphaSpaces[locale] || alphaSpaces.en).test(value);
};
var params$3 = [
{
name: 'locale'
}
];
var alpha_spaces = {
validate: validate$3,
params: params$3
};
var validate$4 = function (value, _a) {
var _b = _a === void 0 ? {} : _a, min = _b.min, max = _b.max;
if (Array.isArray(value)) {
return value.every(function (val) { return !!validate$4(val, { min: min, max: max }); });
}
return Number(min) <= value && Number(max) >= value;
};
var params$4 = [
{
name: 'min'
},
{
name: 'max'
}
];
var between = {
validate: validate$4,
params: params$4
};
var validate$5 = function (value, _a) {
var target = _a.target;
return String(value) === String(target);
};
var params$5 = [
{
name: 'target',
isTarget: true
}
];
var confirmed = {
validate: validate$5,
params: params$5
};
var validate$6 = function (value, _a) {
var length = _a.length;
if (Array.isArray(value)) {
return value.every(function (val) { return validate$6(val, { length: length }); });
}
var strVal = String(value);
return /^[0-9]*$/.test(strVal) && strVal.length === length;
};
var params$6 = [
{
name: 'length',
cast: function (value) {
return Number(value);
}
}
];
var digits = {
validate: validate$6,
params: params$6
};
var validateImage = function (file, width, height) {
var URL = window.URL || window.webkitURL;
return new Promise(function (resolve) {
var image = new Image();
image.onerror = function () { return resolve(false); };
image.onload = function () { return resolve(image.width === width && image.height === height); };
image.src = URL.createObjectURL(file);
});
};
var validate$7 = function (files, _a) {
var width = _a.width, height = _a.height;
var list = [];
files = Array.isArray(files) ? files : [files];
for (var i = 0; i < files.length; i++) {
// if file is not an image, reject.
if (!/\.(jpg|svg|jpeg|png|bmp|gif)$/i.test(files[i].name)) {
return Promise.resolve(false);
}
list.push(files[i]);
}
return Promise.all(list.map(function (file) { return validateImage(file, width, height); })).then(function (values) {
return values.every(function (v) { return v; });
});
};
var params$7 = [
{
name: 'width',
cast: function (value) {
return Number(value);
}
},
{
name: 'height',
cast: function (value) {
return Number(value);
}
}
];
var dimensions = {
validate: validate$7,
params: params$7
};
var validate$8 = function (value, _a) {
var multiple = (_a === void 0 ? {} : _a).multiple;
// eslint-disable-next-line
var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
if (multiple && !Array.isArray(value)) {
value = String(value)
.split(',')
.map(function (emailStr) { return emailStr.trim(); });
}
if (Array.isArray(value)) {
return value.every(function (val) { return re.test(String(val)); });
}
return re.test(String(value));
};
var params$8 = [
{
name: 'multiple',
default: false
}
];
var email = {
validate: validate$8,
params: params$8
};
function rules_isNullOrUndefined(value) {
return value === null || value === undefined;
}
function rules_isEmptyArray(arr) {
return Array.isArray(arr) && arr.length === 0;
}
function rules_isCallable(fn) {
return typeof fn === 'function';
}
function rules_includes(collection, item) {
return collection.indexOf(item) !== -1;
}
/**
* Converts an array-like object to array, provides a simple polyfill for Array.from
*/
function rules_toArray(arrayLike) {
if (rules_isCallable(Array.from)) {
return Array.from(arrayLike);
}
/* istanbul ignore next */
return rules_copyArray(arrayLike);
}
/* istanbul ignore next */
function rules_copyArray(arrayLike) {
var array = [];
var length = arrayLike.length;
for (var i = 0; i < length; i++) {
array.push(arrayLike[i]);
}
return array;
}
var validate$9 = function (value, options) {
if (Array.isArray(value)) {
return value.every(function (val) { return validate$9(val, options); });
}
return rules_toArray(options).some(function (item) {
// eslint-disable-next-line
return item == value;
});
};
var oneOf = {
validate: validate$9
};
var validate$a = function (value, args) {
return !validate$9(value, args);
};
var excluded = {
validate: validate$a
};
var validate$b = function (files, extensions) {
var regex = new RegExp(".(" + extensions.join('|') + ")$", 'i');
if (Array.isArray(files)) {
return files.every(function (file) { return regex.test(file.name); });
}
return regex.test(files.name);
};
var ext = {
validate: validate$b
};
var validate$c = function (files) {
var regex = /\.(jpg|svg|jpeg|png|bmp|gif)$/i;
if (Array.isArray(files)) {
return files.every(function (file) { return regex.test(file.name); });
}
return regex.test(files.name);
};
var rules_image = {
validate: validate$c
};
var validate$d = function (value) {
if (Array.isArray(value)) {
return value.every(function (val) { return /^-?[0-9]+$/.test(String(val)); });
}
return /^-?[0-9]+$/.test(String(value));
};
var integer = {
validate: validate$d
};
var validate$e = function (value, _a) {
var other = _a.other;
return value === other;
};
var params$9 = [
{
name: 'other'
}
];
var is = {
validate: validate$e,
params: params$9
};
var validate$f = function (value, _a) {
var other = _a.other;
return value !== other;
};
var params$a = [
{
name: 'other'
}
];
var is_not = {
validate: validate$f,
params: params$a
};
var validate$g = function (value, _a) {
var length = _a.length;
if (rules_isNullOrUndefined(value)) {
return false;
}
if (typeof value === 'number') {
value = String(value);
}
if (!value.length) {
value = rules_toArray(value);
}
return value.length === length;
};
var params$b = [
{
name: 'length',
cast: function (value) { return Number(value); }
}
];
var rules_length = {
validate: validate$g,
params: params$b
};
var validate$h = function (value, _a) {
var length = _a.length;
if (rules_isNullOrUndefined(value)) {
return length >= 0;
}
if (Array.isArray(value)) {
return value.every(function (val) { return validate$h(val, { length: length }); });
}
return String(value).length <= length;
};
var params$c = [
{
name: 'length',
cast: function (value) {
return Number(value);
}
}
];
var max = {
validate: validate$h,
params: params$c
};
var validate$i = function (value, _a) {
var max = _a.max;
if (rules_isNullOrUndefined(value) || value === '') {
return false;
}
if (Array.isArray(value)) {
return value.length > 0 && value.every(function (val) { return validate$i(val, { max: max }); });
}
return Number(value) <= max;
};
var params$d = [
{
name: 'max',
cast: function (value) {
return Number(value);
}
}
];
var max_value = {
validate: validate$i,
params: params$d
};
var validate$j = function (files, mimes) {
var regex = new RegExp(mimes.join('|').replace('*', '.+') + "$", 'i');
if (Array.isArray(files)) {
return files.every(function (file) { return regex.test(file.type); });
}
return regex.test(files.type);
};
var mimes = {
validate: validate$j
};
var validate$k = function (value, _a) {
var length = _a.length;
if (rules_isNullOrUndefined(value)) {
return false;
}
if (Array.isArray(value)) {
return value.every(function (val) { return validate$k(val, { length: length }); });
}
return String(value).length >= length;
};
var params$e = [
{
name: 'length',
cast: function (value) {
return Number(value);
}
}
];
var min = {
validate: validate$k,
params: params$e
};
var validate$l = function (value, _a) {
var min = _a.min;
if (rules_isNullOrUndefined(value) || value === '') {
return false;
}
if (Array.isArray(value)) {
return value.length > 0 && value.every(function (val) { return validate$l(val, { min: min }); });
}
return Number(value) >= min;
};
var params$f = [
{
name: 'min',
cast: function (value) {
return Number(value);
}
}
];
var min_value = {
validate: validate$l,
params: params$f
};
var ar = /^[٠١٢٣٤٥٦٧٨٩]+$/;
var en = /^[0-9]+$/;
var validate$m = function (value) {
var testValue = function (val) {
var strValue = String(val);
return en.test(strValue) || ar.test(strValue);
};
if (Array.isArray(value)) {
return value.every(testValue);
}
return testValue(value);
};
var numeric = {
validate: validate$m
};
var validate$n = function (value, _a) {
var regex = _a.regex;
if (Array.isArray(value)) {
return value.every(function (val) { return validate$n(val, { regex: regex }); });
}
return regex.test(String(value));
};
var params$g = [
{
name: 'regex',
cast: function (value) {
if (typeof value === 'string') {
return new RegExp(value);
}
return value;
}
}
];
var regex = {
validate: validate$n,
params: params$g
};
var validate$o = function (value, _a) {
var allowFalse = (_a === void 0 ? { allowFalse: true } : _a).allowFalse;
var result = {
valid: false,
required: true
};
if (rules_isNullOrUndefined(value) || rules_isEmptyArray(value)) {
return result;
}
// incase a field considers `false` as an empty value like checkboxes.
if (value === false && !allowFalse) {
return result;
}
result.valid = !!String(value).trim().length;
return result;
};
var computesRequired = true;
var params$h = [
{
name: 'allowFalse',
default: true
}
];
var required = {
validate: validate$o,
params: params$h,
computesRequired: computesRequired
};
var testEmpty = function (value) {
return rules_isEmptyArray(value) || rules_includes([false, null, undefined], value) || !String(value).trim().length;
};
var validate$p = function (value, _a) {
var target = _a.target, values = _a.values;
var required;
if (values && values.length) {
if (!Array.isArray(values) && typeof values === 'string') {
values = [values];
}
// eslint-disable-next-line
required = values.some(function (val) { return val == String(target).trim(); });
}
else {
required = !testEmpty(target);
}
if (!required) {
return {
valid: true,
required: required
};
}
return {
valid: !testEmpty(value),
required: required
};
};
var params$i = [
{
name: 'target',
isTarget: true
},
{
name: 'values'
}
];
var computesRequired$1 = true;
var required_if = {
validate: validate$p,
params: params$i,
computesRequired: computesRequired$1
};
var validate$q = function (files, _a) {
var size = _a.size;
if (isNaN(size)) {
return false;
}
var nSize = size * 1024;
if (!Array.isArray(files)) {
return files.size <= nSize;
}
for (var i = 0; i < files.length; i++) {
if (files[i].size > nSize) {
return false;
}
}
return true;
};
var params$j = [
{
name: 'size',
cast: function (value) {
return Number(value);
}
}
];
var size = {
validate: validate$q,
params: params$j
};
// EXTERNAL MODULE: ./node_modules/vee-validate/dist/locale/en.json
var locale_en = __webpack_require__("2593");
// EXTERNAL MODULE: ./node_modules/vee-validate/dist/locale/es.json
var es = __webpack_require__("5a17");
// CONCATENATED MODULE: ./src/assets/js/veeValidate.js
var possibleLocales = ['es', 'en'];
localize({
es: es,
en: locale_en
});
localize({
en: {
messages: {
required: 'This field is required'
}
},
es: {
messages: {
required: 'Este campo es obligatorio'
}
}
});
var defaultLocale = (window.navigator.userLanguage || window.navigator.language).substring(0, 2);
localize(possibleLocales.includes(defaultLocale) ? defaultLocale : 'es');
extend('required', required);
extend('email', email);
// CONCATENATED MODULE: ./src/main.js
var ComponentLibrary = {
install: function install(Vue) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
for (var componentName in components_namespaceObject) {
var component = components_namespaceObject[componentName];
ripple.color = '#eeeff0';
ripple.zIndex = 1;
Vue.directive('ripple', ripple);
Vue.directive('click-outside', js_clickOutside);
Vue.prototype.$tokens = _tokens_default.a;
Vue.component(component.name, component);
}
Vue.component('ValidationProvider', ValidationProvider);
Vue.component('lottie', src_lottie);
}
};
/* harmony default export */ var main = (ComponentLibrary);
if (typeof window !== 'undefined' && window.Vue) {
gsapWithCSS.registerPlugin(Tween);
window.Vue.use(ComponentLibrary);
}
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js
/* harmony default export */ var entry_lib = __webpack_exports__["default"] = (main);
/***/ }),
/***/ "fb6a":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__("23e7");
var isObject = __webpack_require__("861d");
var isArray = __webpack_require__("e8b5");
var toAbsoluteIndex = __webpack_require__("23cb");
var toLength = __webpack_require__("50c4");
var toIndexedObject = __webpack_require__("fc6a");
var createProperty = __webpack_require__("8418");
var wellKnownSymbol = __webpack_require__("b622");
var arrayMethodHasSpeciesSupport = __webpack_require__("1dde");
var arrayMethodUsesToLength = __webpack_require__("ae40");
var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');
var USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });
var SPECIES = wellKnownSymbol('species');
var nativeSlice = [].slice;
var max = Math.max;
// `Array.prototype.slice` method
// https://tc39.github.io/ecma262/#sec-array.prototype.slice
// fallback for not array-like ES3 strings and DOM objects
$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {
slice: function slice(start, end) {
var O = toIndexedObject(this);
var length = toLength(O.length);
var k = toAbsoluteIndex(start, length);
var fin = toAbsoluteIndex(end === undefined ? length : end, length);
// inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible
var Constructor, result, n;
if (isArray(O)) {
Constructor = O.constructor;
// cross-realm fallback
if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {
Constructor = undefined;
} else if (isObject(Constructor)) {
Constructor = Constructor[SPECIES];
if (Constructor === null) Constructor = undefined;
}
if (Constructor === Array || Constructor === undefined) {
return nativeSlice.call(O, k, fin);
}
}
result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));
for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);
result.length = n;
return result;
}
});
/***/ }),
/***/ "fc14":
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "fc6a":
/***/ (function(module, exports, __webpack_require__) {
// toObject with fallback for non-array-like ES3 strings
var IndexedObject = __webpack_require__("44ad");
var requireObjectCoercible = __webpack_require__("1d80");
module.exports = function (it) {
return IndexedObject(requireObjectCoercible(it));
};
/***/ }),
/***/ "fc81":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_avatar_scss_vue_type_style_index_0_id_a24bc66e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("d100");
/* harmony import */ var _node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_avatar_scss_vue_type_style_index_0_id_a24bc66e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_avatar_scss_vue_type_style_index_0_id_a24bc66e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);
/* unused harmony reexport * */
/* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_resolve_url_loader_index_js_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_avatar_scss_vue_type_style_index_0_id_a24bc66e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/***/ "fd58":
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "fdbc":
/***/ (function(module, exports) {
// iterable DOM collections
// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods
module.exports = {
CSSRuleList: 0,
CSSStyleDeclaration: 0,
CSSValueList: 0,
ClientRectList: 0,
DOMRectList: 0,
DOMStringList: 0,
DOMTokenList: 1,
DataTransferItemList: 0,
FileList: 0,
HTMLAllCollection: 0,
HTMLCollection: 0,
HTMLFormElement: 0,
HTMLSelectElement: 0,
MediaList: 0,
MimeTypeArray: 0,
NamedNodeMap: 0,
NodeList: 1,
PaintRequestList: 0,
Plugin: 0,
PluginArray: 0,
SVGLengthList: 0,
SVGNumberList: 0,
SVGPathSegList: 0,
SVGPointList: 0,
SVGStringList: 0,
SVGTransformList: 0,
SourceBufferList: 0,
StyleSheetList: 0,
TextTrackCueList: 0,
TextTrackList: 0,
TouchList: 0
};
/***/ }),
/***/ "fdbf":
/***/ (function(module, exports, __webpack_require__) {
var NATIVE_SYMBOL = __webpack_require__("4930");
module.exports = NATIVE_SYMBOL
// eslint-disable-next-line no-undef
&& !Symbol.sham
// eslint-disable-next-line no-undef
&& typeof Symbol.iterator == 'symbol';
/***/ }),
/***/ "fde5":
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ })
/******/ })["default"];
//# sourceMappingURL=belvo-vue-components.common.js.map