first commit
This commit is contained in:
280
node_modules/lottie-web/player/js/utils/common.js
generated
vendored
Normal file
280
node_modules/lottie-web/player/js/utils/common.js
generated
vendored
Normal file
@@ -0,0 +1,280 @@
|
||||
import {
|
||||
createSizedArray,
|
||||
} from './helpers/arrays';
|
||||
|
||||
let subframeEnabled = true;
|
||||
let expressionsPlugin = null;
|
||||
let expressionsInterfaces = null;
|
||||
let idPrefix = '';
|
||||
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
|
||||
let _shouldRoundValues = false;
|
||||
const bmPow = Math.pow;
|
||||
const bmSqrt = Math.sqrt;
|
||||
const bmFloor = Math.floor;
|
||||
const bmMax = Math.max;
|
||||
const bmMin = Math.min;
|
||||
|
||||
const 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;
|
||||
var 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;
|
||||
var len = val.length;
|
||||
for (i = 0; i < len; i += 1) {
|
||||
absArr[i] = Math.abs(val[i]);
|
||||
}
|
||||
return absArr;
|
||||
}
|
||||
return Math.abs(val);
|
||||
};
|
||||
let defaultCurveSegments = 150;
|
||||
const degToRads = Math.PI / 180;
|
||||
const roundCorner = 0.5519;
|
||||
|
||||
function roundValues(flag) {
|
||||
_shouldRoundValues = !!flag;
|
||||
}
|
||||
|
||||
function bmRnd(value) {
|
||||
if (_shouldRoundValues) {
|
||||
return Math.round(value);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
function styleDiv(element) {
|
||||
element.style.position = 'absolute';
|
||||
element.style.top = 0;
|
||||
element.style.left = 0;
|
||||
element.style.display = 'block';
|
||||
element.style.transformOrigin = '0 0';
|
||||
element.style.webkitTransformOrigin = '0 0';
|
||||
element.style.backfaceVisibility = 'visible';
|
||||
element.style.webkitBackfaceVisibility = 'visible';
|
||||
element.style.transformStyle = 'preserve-3d';
|
||||
element.style.webkitTransformStyle = 'preserve-3d';
|
||||
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;
|
||||
}
|
||||
|
||||
const createElementID = (function () {
|
||||
var _count = 0;
|
||||
return function createID() {
|
||||
_count += 1;
|
||||
return idPrefix + '__lottie_element_' + _count;
|
||||
};
|
||||
}());
|
||||
|
||||
function HSVtoRGB(h, s, v) {
|
||||
var r;
|
||||
var g;
|
||||
var b;
|
||||
var i;
|
||||
var f;
|
||||
var p;
|
||||
var q;
|
||||
var 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;
|
||||
default: break;
|
||||
}
|
||||
return [r,
|
||||
g,
|
||||
b];
|
||||
}
|
||||
|
||||
function RGBtoHSV(r, g, b) {
|
||||
var max = Math.max(r, g, b);
|
||||
var min = Math.min(r, g, b);
|
||||
var d = max - min;
|
||||
var h;
|
||||
var s = (max === 0 ? 0 : d / max);
|
||||
var 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;
|
||||
default: 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]);
|
||||
}
|
||||
|
||||
const 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];
|
||||
};
|
||||
}());
|
||||
|
||||
const setSubframeEnabled = (flag) => { subframeEnabled = !!flag; };
|
||||
const getSubframeEnabled = () => subframeEnabled;
|
||||
const setExpressionsPlugin = (value) => { expressionsPlugin = value; };
|
||||
const getExpressionsPlugin = () => expressionsPlugin;
|
||||
const setExpressionInterfaces = (value) => { expressionsInterfaces = value; };
|
||||
const getExpressionInterfaces = () => expressionsInterfaces;
|
||||
const setDefaultCurveSegments = (value) => { defaultCurveSegments = value; };
|
||||
const getDefaultCurveSegments = () => defaultCurveSegments;
|
||||
const setIdPrefix = (value) => { idPrefix = value; };
|
||||
const getIdPrefix = () => idPrefix;
|
||||
|
||||
export {
|
||||
setSubframeEnabled,
|
||||
getSubframeEnabled,
|
||||
setExpressionsPlugin,
|
||||
getExpressionsPlugin,
|
||||
setExpressionInterfaces,
|
||||
getExpressionInterfaces,
|
||||
setDefaultCurveSegments,
|
||||
getDefaultCurveSegments,
|
||||
isSafari,
|
||||
bmPow,
|
||||
bmSqrt,
|
||||
bmFloor,
|
||||
bmMax,
|
||||
bmMin,
|
||||
degToRads,
|
||||
roundCorner,
|
||||
styleDiv,
|
||||
bmRnd,
|
||||
roundValues,
|
||||
BMEnterFrameEvent,
|
||||
BMCompleteEvent,
|
||||
BMCompleteLoopEvent,
|
||||
BMSegmentStartEvent,
|
||||
BMDestroyEvent,
|
||||
BMRenderFrameErrorEvent,
|
||||
BMConfigErrorEvent,
|
||||
BMAnimationConfigErrorEvent,
|
||||
createElementID,
|
||||
addSaturationToRGB,
|
||||
addBrightnessToRGB,
|
||||
addHueToRGB,
|
||||
rgbToHex,
|
||||
setIdPrefix,
|
||||
getIdPrefix,
|
||||
BMMath,
|
||||
ProjectInterface,
|
||||
};
|
Reference in New Issue
Block a user