Launch Week Day 3: Introducing Organization Notifications in Socket.Learn More
Socket
Book a DemoSign in
Socket

react-simple-animate

Package Overview
Dependencies
Maintainers
2
Versions
182
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-simple-animate - npm Package Compare versions

Comparing version
3.5.1
to
3.5.2
+7
-7
dist/index.es.js

@@ -240,3 +240,3 @@ import * as React from 'react';

React.useEffect(() => {
if ((onCompleteTimeRef.current || complete) && isPlaying) {
if ((onComplete || complete) && isPlaying) {
onCompleteTimeRef.current = setTimeout(() => {

@@ -247,6 +247,6 @@ if (onComplete) {

if (complete) {
setAnimate({
setAnimate((animate) => ({
...animate,
style: complete,
});
}));
}

@@ -256,3 +256,3 @@ }, secToMs(delay + duration));

return () => onCompleteTimeRef.current && clearTimeout(onCompleteTimeRef.current);
}, [isPlaying]);
}, [animate, complete, delay, duration, isPlaying, onComplete]);
return {

@@ -262,3 +262,3 @@ isPlaying,

play: React.useCallback((isPlaying) => {
setAnimate({
setAnimate((animate) => ({
...animate,

@@ -270,4 +270,4 @@ style: {

isPlaying,
});
}, []),
}));
}, [end, start, transition]),
};

@@ -274,0 +274,0 @@ }

@@ -264,3 +264,3 @@ 'use strict';

React__namespace.useEffect(() => {
if ((onCompleteTimeRef.current || complete) && isPlaying) {
if ((onComplete || complete) && isPlaying) {
onCompleteTimeRef.current = setTimeout(() => {

@@ -271,6 +271,6 @@ if (onComplete) {

if (complete) {
setAnimate({
setAnimate((animate) => ({
...animate,
style: complete,
});
}));
}

@@ -280,3 +280,3 @@ }, secToMs(delay + duration));

return () => onCompleteTimeRef.current && clearTimeout(onCompleteTimeRef.current);
}, [isPlaying]);
}, [animate, complete, delay, duration, isPlaying, onComplete]);
return {

@@ -286,3 +286,3 @@ isPlaying,

play: React__namespace.useCallback((isPlaying) => {
setAnimate({
setAnimate((animate) => ({
...animate,

@@ -294,4 +294,4 @@ style: {

isPlaying,
});
}, []),
}));
}, [end, start, transition]),
};

@@ -298,0 +298,0 @@ }

{
"name": "react-simple-animate",
"version": "3.5.1",
"version": "3.5.2",
"description": "react simple animate",

@@ -38,3 +38,3 @@ "main": "dist/index.js",

"@types/enzyme-adapter-react-16": "^1.0.6",
"@types/jest": "^25.2.3",
"@types/jest": "^26.0.1",
"@types/react": "^16.9.35",

@@ -41,0 +41,0 @@ "@types/react-test-renderer": "^16.9.2",

import * as React from 'react';
import { AnimateContext } from './animateGroup';
import secToMs from './utils/secToMs';
import getSequenceId from './utils/getSequenceId';
import isUndefined from './utils/isUndefined';
import { ALL, DEFAULT_DURATION, DEFAULT_EASE_TYPE } from './constants';
export default function Animate(props) {
const { play, children, render, start, end, complete = '', onComplete, delay = 0, duration = DEFAULT_DURATION, easeType = DEFAULT_EASE_TYPE, sequenceId, sequenceIndex, } = props;
const onCompleteTimeRef = React.useRef();
const [style, setStyle] = React.useState(start || {});
const { register, animationStates = {} } = React.useContext(AnimateContext);
const id = getSequenceId(sequenceIndex, sequenceId);
React.useEffect(() => {
if ((!isUndefined(sequenceIndex) && sequenceIndex >= 0) || sequenceId) {
register(props);
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
React.useEffect(() => {
const animationState = animationStates[id] || {};
setStyle(Object.assign(Object.assign({}, (play || animationState.play ? end : start)), { transition: `${ALL} ${duration}s ${easeType} ${parseFloat(animationState.delay || delay)}s` }));
if (play && (complete || onComplete)) {
onCompleteTimeRef.current = setTimeout(() => {
complete && setStyle(complete);
onComplete && onComplete();
}, secToMs(parseFloat(animationState.delay || delay) + duration));
}
return () => onCompleteTimeRef.current && clearTimeout(onCompleteTimeRef.current);
}, [
id,
animationStates,
play,
duration,
easeType,
delay,
onComplete,
start,
end,
complete,
]);
return render ? render({ style }) : React.createElement("div", { style: style }, children);
}
//# sourceMappingURL=animate.js.map
{"version":3,"file":"animate.js","sourceRoot":"","sources":["../src/animate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,OAAO,MAAM,iBAAiB,CAAC;AACtC,OAAO,aAAa,MAAM,uBAAuB,CAAC;AAClD,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGvE,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,KAAqB;IACnD,MAAM,EACJ,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,KAAK,EACL,GAAG,EACH,QAAQ,GAAG,EAAE,EACb,UAAU,EACV,KAAK,GAAG,CAAC,EACT,QAAQ,GAAG,gBAAgB,EAC3B,QAAQ,GAAG,iBAAiB,EAC5B,UAAU,EACV,aAAa,GACd,GAAG,KAAK,CAAC;IACV,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,EAAO,CAAC;IAC9C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAC5E,MAAM,EAAE,GAAG,aAAa,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAEpD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,aAAa,IAAI,CAAC,CAAC,IAAI,UAAU,EAAE;YACrE,QAAQ,CAAC,KAAK,CAAC,CAAC;SACjB;QACD,uDAAuD;IACzD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,cAAc,GAAG,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAEjD,QAAQ,iCACH,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAC9C,UAAU,EAAE,GAAG,GAAG,IAAI,QAAQ,KAAK,QAAQ,IAAI,UAAU,CACvD,cAAc,CAAC,KAAK,IAAI,KAAK,CAC9B,GAAG,IACJ,CAAC;QAEH,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,EAAE;YACpC,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC1C,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC/B,UAAU,IAAI,UAAU,EAAE,CAAC;YAC7B,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;SACnE;QAED,OAAO,GAAG,EAAE,CACV,iBAAiB,CAAC,OAAO,IAAI,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACzE,CAAC,EAAE;QACD,EAAE;QACF,eAAe;QACf,IAAI;QACJ,QAAQ;QACR,QAAQ;QACR,KAAK;QACL,UAAU;QACV,KAAK;QACL,GAAG;QACH,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,6BAAK,KAAK,EAAE,KAAK,IAAG,QAAQ,CAAO,CAAC;AAC1E,CAAC"}
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { act } from 'react-dom/test-utils';
import Animate from '../src/animate';
jest.useFakeTimers();
describe('Animate', () => {
let container;
beforeEach(() => {
container = document.createElement('div');
document.body.appendChild(container);
});
afterEach(() => {
document.body.removeChild(container);
container = null;
});
it('should start with start style', () => {
act(() => {
ReactDOM.render(React.createElement(Animate, { end: { opacity: 0 } }, "bill"), container);
});
const div = container.querySelector('div');
expect(div.innerHTML).toEqual('bill');
expect(div.style.transition).toEqual('all 0.3s linear 0s');
expect(div.style.opacity).toBe('');
});
it('should end with end style', () => {
act(() => {
ReactDOM.render(React.createElement(Animate, { play: true, start: { opacity: 1 }, end: { opacity: 0 } }, "bill"), container);
});
const div = container.querySelector('div');
expect(div.innerHTML).toEqual('bill');
expect(div.style.opacity).toEqual('0');
});
it('should finish with complete style', () => {
act(() => {
ReactDOM.render(React.createElement(Animate, { play: true, end: { opacity: 0 }, complete: { background: 'red' } }, "bill"), container);
});
const div = container.querySelector('div');
expect(div.style.opacity).toEqual('0');
jest.runAllTimers();
expect(div.style.background).toEqual('red');
});
it('should render correctly with render props', () => {
act(() => {
ReactDOM.render(
// @ts-ignore
React.createElement(Animate, { play: true, end: { opacity: 0 }, render: ({ style }) => React.createElement("span", { style: style }, "render props") }, "bill"), container);
});
const div = container.querySelector('span');
expect(div.style.opacity).toEqual('0');
expect(div.innerHTML).toEqual('render props');
});
});
//# sourceMappingURL=animate.test.js.map
{"version":3,"file":"animate.test.js","sourceRoot":"","sources":["../src/animate.test.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,OAAO,MAAM,gBAAgB,CAAC;AAErC,IAAI,CAAC,aAAa,EAAE,CAAC;AAErB,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,IAAI,SAAS,CAAC;IAEd,UAAU,CAAC,GAAG,EAAE;QACd,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACrC,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,GAAG,CAAC,GAAG,EAAE;YACP,QAAQ,CAAC,MAAM,CAAC,oBAAC,OAAO,IAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,WAAgB,EAAE,SAAS,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC3D,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,GAAG,CAAC,GAAG,EAAE;YACP,QAAQ,CAAC,MAAM,CACb,oBAAC,OAAO,IAAC,IAAI,QAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,WAE9C,EACV,SAAS,CACV,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,GAAG,CAAC,GAAG,EAAE;YACP,QAAQ,CAAC,MAAM,CACb,oBAAC,OAAO,IAAC,IAAI,QAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,WAExD,EACV,SAAS,CACV,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEvC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,GAAG,CAAC,GAAG,EAAE;YACP,QAAQ,CAAC,MAAM;YACb,aAAa;YACb,oBAAC,OAAO,IAAC,IAAI,QAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,8BAAM,KAAK,EAAE,KAAK,mBAAqB,WAEvF,EACV,SAAS,CACV,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
import * as React from 'react';
import calculateTotalDuration from './utils/calculateTotalDuration';
import getSequenceId from './utils/getSequenceId';
import isUndefined from './utils/isUndefined';
import { DEFAULT_DURATION } from './constants';
export const AnimateContext = React.createContext({
animationStates: {},
register: (data) => { },
});
export default function AnimateGroup({ play, sequences = [], children, }) {
const [animationStates, setAnimationStates] = React.useState({});
const animationsRef = React.useRef({});
const register = React.useCallback((data) => {
const { sequenceIndex, sequenceId } = data;
if (!isUndefined(sequenceId) || !isUndefined(sequenceIndex)) {
animationsRef.current[getSequenceId(sequenceIndex, sequenceId)] = data;
}
}, []);
React.useEffect(() => {
const sequencesToAnimate = Array.isArray(sequences) && sequences.length
? sequences
: Object.values(animationsRef.current);
const localAnimationState = {};
(play ? sequencesToAnimate : [...sequencesToAnimate].reverse()).reduce((previous, { sequenceId, sequenceIndex, duration = DEFAULT_DURATION, delay, overlay, }, currentIndex) => {
const id = getSequenceId(sequenceIndex, sequenceId, currentIndex);
const currentTotalDuration = calculateTotalDuration({
duration,
delay,
overlay,
});
const totalDuration = currentTotalDuration + previous;
localAnimationState[id] = {
play,
pause: !play,
delay: currentIndex === 0
? delay || 0
: delay
? previous + delay
: previous,
controlled: true,
};
return totalDuration;
}, 0);
setAnimationStates(localAnimationState);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [play]);
return (React.createElement(AnimateContext.Provider, { value: { animationStates, register } }, children));
}
//# sourceMappingURL=animateGroup.js.map
{"version":3,"file":"animateGroup.js","sourceRoot":"","sources":["../src/animateGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,sBAAsB,MAAM,gCAAgC,CAAC;AACpE,OAAO,aAAa,MAAM,uBAAuB,CAAC;AAClD,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAS/C,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa,CAAC;IAChD,eAAe,EAAE,EAAE;IACnB,QAAQ,EAAE,CAAC,IAA4C,EAAQ,EAAE,GAAE,CAAC;CACrE,CAAC,CAAC;AAEH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,IAAI,EACJ,SAAS,GAAG,EAAE,EACd,QAAQ,GACF;IACN,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjE,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAE/B,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAChC,CAAC,IAA4C,EAAE,EAAE;QAC/C,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE;YAC3D,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC;SACxE;IACH,CAAC,EACD,EAAE,CACH,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,kBAAkB,GACtB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM;YAC1C,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,mBAAmB,GAAG,EAAE,CAAC;QAE/B,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CACpE,CACE,QAAQ,EACR,EACE,UAAU,EACV,aAAa,EACb,QAAQ,GAAG,gBAAgB,EAC3B,KAAK,EACL,OAAO,GACR,EACD,YAAY,EACZ,EAAE;YACF,MAAM,EAAE,GAAG,aAAa,CAAC,aAAa,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;YAClE,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;gBAClD,QAAQ;gBACR,KAAK;gBACL,OAAO;aACR,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,oBAAoB,GAAG,QAAQ,CAAC;YAEtD,mBAAmB,CAAC,EAAE,CAAC,GAAG;gBACxB,IAAI;gBACJ,KAAK,EAAE,CAAC,IAAI;gBACZ,KAAK,EACH,YAAY,KAAK,CAAC;oBAChB,CAAC,CAAC,KAAK,IAAI,CAAC;oBACZ,CAAC,CAAC,KAAK;wBACP,CAAC,CAAC,QAAQ,GAAG,KAAK;wBAClB,CAAC,CAAC,QAAQ;gBACd,UAAU,EAAE,IAAI;aACjB,CAAC;YAEF,OAAO,aAAa,CAAC;QACvB,CAAC,EACD,CAAC,CACF,CAAC;QAEF,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;QACxC,uDAAuD;IACzD,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,OAAO,CACL,oBAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE,IAC1D,QAAQ,CACe,CAC3B,CAAC;AACJ,CAAC"}
import AnimateGroup from './animateGroup';
import * as ReactDOM from 'react-dom';
import { act } from 'react-dom/test-utils';
import * as React from 'react';
import { Animate } from './index';
import AnimateKeyframes from './animateKeyframes';
describe('AnimateGroup', () => {
let container;
beforeEach(() => {
container = document.createElement('div');
document.body.appendChild(container);
});
afterEach(() => {
document.body.removeChild(container);
container = null;
});
it('should render correctly', () => {
act(() => {
ReactDOM.render(React.createElement(AnimateGroup, { play: true },
React.createElement(Animate, { sequenceIndex: 0, end: { opacity: 0 } }, "test"),
React.createElement(AnimateKeyframes, { sequenceIndex: 1, keyframes: ['opacity: 0', 'opacity: 1'] }, "what")), container);
});
act(() => {
expect(container.querySelectorAll('div')[0].style.opacity).toEqual('0');
});
});
});
//# sourceMappingURL=animateGroup.test.js.map
{"version":3,"file":"animateGroup.test.js","sourceRoot":"","sources":["../src/animateGroup.test.tsx"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,SAAS,CAAC;IAEd,UAAU,CAAC,GAAG,EAAE;QACd,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACrC,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,GAAG,CAAC,GAAG,EAAE;YACP,QAAQ,CAAC,MAAM,CACb,oBAAC,YAAY,IAAC,IAAI;gBAChB,oBAAC,OAAO,IAAC,aAAa,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,WAEpC;gBACV,oBAAC,gBAAgB,IAAC,aAAa,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,WAExD,CACN,EACf,SAAS,CACV,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,GAAG,EAAE;YACP,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
import * as React from 'react';
import { AnimateContext } from './animateGroup';
import createTag from './logic/createTag';
import deleteRule from './logic/deleteRules';
import createRandomName from './utils/createRandomName';
import getSequenceId from './utils/getSequenceId';
import getPlayState from './utils/getPauseState';
import { DEFAULT_DIRECTION, DEFAULT_DURATION, DEFAULT_EASE_TYPE, DEFAULT_FILLMODE, } from './constants';
export default function AnimateKeyframes(props) {
const { children, play = false, pause = false, render, duration = DEFAULT_DURATION, delay = 0, easeType = DEFAULT_EASE_TYPE, direction = DEFAULT_DIRECTION, fillMode = DEFAULT_FILLMODE, iterationCount = 1, sequenceIndex, keyframes, sequenceId, } = props;
let pauseValue;
const animationNameRef = React.useRef({
forward: '',
reverse: '',
});
const controlled = React.useRef(false);
const styleTagRef = React.useRef({
forward: { sheet: {} },
reverse: { sheet: {} },
});
const id = getSequenceId(sequenceIndex, sequenceId);
const { register, animationStates = {} } = React.useContext(AnimateContext);
const animateState = animationStates[id] || {};
const [, forceUpdate] = React.useState(false);
React.useEffect(() => {
const styleTag = styleTagRef.current;
const animationName = animationNameRef.current;
animationNameRef.current.forward = createRandomName();
let result = createTag({
animationName: animationNameRef.current.forward,
keyframes,
});
animationNameRef.current.reverse = createRandomName();
styleTagRef.current.forward = result.styleTag;
result = createTag({
animationName: animationNameRef.current.reverse,
keyframes: keyframes.reverse(),
});
styleTagRef.current.reverse = result.styleTag;
register(props);
if (play) {
forceUpdate(true);
}
return () => {
deleteRule(styleTag.forward.sheet, animationName.forward);
deleteRule(styleTag.reverse.sheet, animationName.reverse);
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
if (animateState.controlled && !controlled.current) {
pauseValue = animateState.pause;
if (!animateState.pause) {
controlled.current = true;
}
}
else {
pauseValue = pause;
}
const style = {
animation: `${duration}s ${easeType} ${animateState.delay || delay}s ${iterationCount} ${direction} ${fillMode} ${getPlayState(pauseValue)} ${((animateState.controlled ? animateState.play : play)
? animationNameRef.current.forward
: animationNameRef.current.reverse) || ''}`,
};
return render ? render({ style }) : React.createElement("div", { style: style || {} }, children);
}
//# sourceMappingURL=animateKeyframes.js.map
{"version":3,"file":"animateKeyframes.js","sourceRoot":"","sources":["../src/animateKeyframes.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAC7C,OAAO,gBAAgB,MAAM,0BAA0B,CAAC;AACxD,OAAO,aAAa,MAAM,uBAAuB,CAAC;AAClD,OAAO,YAAY,MAAM,uBAAuB,CAAC;AACjD,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAGrB,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,KAA4B;IACnE,MAAM,EACJ,QAAQ,EACR,IAAI,GAAG,KAAK,EACZ,KAAK,GAAG,KAAK,EACb,MAAM,EACN,QAAQ,GAAG,gBAAgB,EAC3B,KAAK,GAAG,CAAC,EACT,QAAQ,GAAG,iBAAiB,EAC5B,SAAS,GAAG,iBAAiB,EAC7B,QAAQ,GAAG,gBAAgB,EAC3B,cAAc,GAAG,CAAC,EAClB,aAAa,EACb,SAAS,EACT,UAAU,GACX,GAAG,KAAK,CAAC;IACV,IAAI,UAAU,CAAC;IACf,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC;QACpC,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;KACZ,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;QAC/B,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QACtB,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;KACvB,CAAC,CAAC;IACH,MAAM,EAAE,GAAG,aAAa,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IACpD,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAC5E,MAAM,YAAY,GAAG,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IAC/C,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC;QACrC,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC;QAC/C,gBAAgB,CAAC,OAAO,CAAC,OAAO,GAAG,gBAAgB,EAAE,CAAC;QACtD,IAAI,MAAM,GAAG,SAAS,CAAC;YACrB,aAAa,EAAE,gBAAgB,CAAC,OAAO,CAAC,OAAO;YAC/C,SAAS;SACV,CAAC,CAAC;QAEH,gBAAgB,CAAC,OAAO,CAAC,OAAO,GAAG,gBAAgB,EAAE,CAAC;QACtD,WAAW,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC9C,MAAM,GAAG,SAAS,CAAC;YACjB,aAAa,EAAE,gBAAgB,CAAC,OAAO,CAAC,OAAO;YAC/C,SAAS,EAAE,SAAS,CAAC,OAAO,EAAE;SAC/B,CAAC,CAAC;QACH,WAAW,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC;QAE9C,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEhB,IAAI,IAAI,EAAE;YACR,WAAW,CAAC,IAAI,CAAC,CAAC;SACnB;QAED,OAAO,GAAG,EAAE;YACV,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;YAC1D,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5D,CAAC,CAAC;QACF,uDAAuD;IACzD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,YAAY,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;QAClD,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;YACvB,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;SAC3B;KACF;SAAM;QACL,UAAU,GAAG,KAAK,CAAC;KACpB;IAED,MAAM,KAAK,GAAG;QACZ,SAAS,EAAE,GAAG,QAAQ,KAAK,QAAQ,IACjC,YAAY,CAAC,KAAK,IAAI,KACxB,KAAK,cAAc,IAAI,SAAS,IAAI,QAAQ,IAAI,YAAY,CAAC,UAAU,CAAC,IACtE,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACnD,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO;YAClC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAC3C,EAAE;KACH,CAAC;IAEF,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,6BAAK,KAAK,EAAE,KAAK,IAAI,EAAE,IAAG,QAAQ,CAAO,CAAC;AAChF,CAAC"}
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { act } from 'react-dom/test-utils';
import AnimateKeyframes from './animateKeyframes';
jest.mock('./utils/createRandomName', () => ({
default: () => 'test',
}));
describe('AnimateKeyframes', () => {
let container;
beforeEach(() => {
container = document.createElement('div');
document.body.appendChild(container);
});
afterEach(() => {
document.body.removeChild(container);
container = null;
});
it('should render set animation', () => {
act(() => {
ReactDOM.render(React.createElement(AnimateKeyframes, { play: true, keyframes: ['opacity: 0', 'opacity: 1'] }, "bill"), container);
});
const div = container.querySelector('div');
expect(div.innerHTML).toEqual('bill');
expect(div.style.animation).toEqual('0.3s linear 0s 1 normal none running test');
});
});
//# sourceMappingURL=animateKeyframes.test.js.map
{"version":3,"file":"animateKeyframes.test.js","sourceRoot":"","sources":["../src/animateKeyframes.test.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3C,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM;CACtB,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,SAAS,CAAC;IAEd,UAAU,CAAC,GAAG,EAAE;QACd,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACrC,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,GAAG,CAAC,GAAG,EAAE;YACP,QAAQ,CAAC,MAAM,CACb,oBAAC,gBAAgB,IAAC,IAAI,QAAC,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,WAE3C,EACnB,SAAS,CACV,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
const DEFAULT_DURATION = 0.3;
const DEFAULT_EASE_TYPE = 'linear';
const DEFAULT_DIRECTION = 'normal';
const DEFAULT_FILLMODE = 'none';
const RUNNING = 'running';
const ALL = 'all';
export { DEFAULT_DURATION, DEFAULT_EASE_TYPE, DEFAULT_DIRECTION, DEFAULT_FILLMODE, RUNNING, ALL, };
//# sourceMappingURL=index.js.map
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AACnC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AACnC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAChC,MAAM,OAAO,GAAG,SAAS,CAAC;AAC1B,MAAM,GAAG,GAAG,KAAK,CAAC;AAElB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,OAAO,EACP,GAAG,GACJ,CAAC"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,mBAAmB,EAAE,eAAe,EAAE,CAAC"}
import camelCaseToDash from '../utils/camelCaseToDash';
const generateKeyframes = keyframes => {
const animationLength = keyframes.length;
return keyframes.reduce((previous, keyframe, currentIndex) => {
const keyframePercentage = animationLength === 2
? currentIndex * 100
: parseFloat((100 / (animationLength - 1)).toFixed(2)) * currentIndex;
if (typeof keyframe === 'string') {
return `${previous} ${keyframePercentage}% {${keyframe}}`;
}
const keys = Object.keys(keyframe);
if (keys.length && isNaN(+keys[0])) {
const keyframeContent = keys.reduce((acc, key) => `${acc} ${camelCaseToDash(key)}: ${keyframe[key]};`, '');
return `${previous} ${keyframePercentage}% {${keyframeContent}}`;
}
return `${previous} ${Object.keys(keyframe)[0]}% {${Object.values(keyframe)[0]}}`;
}, '');
};
export default function createStyle({ keyframes, animationName, }) {
return `@keyframes ${animationName} {${generateKeyframes(keyframes)}}`;
}
//# sourceMappingURL=createStyle.js.map
{"version":3,"file":"createStyle.js","sourceRoot":"","sources":["../../src/logic/createStyle.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,MAAM,0BAA0B,CAAC;AAEvD,MAAM,iBAAiB,GAAG,SAAS,CAAC,EAAE;IACpC,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC;IACzC,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE;QAC3D,MAAM,kBAAkB,GACtB,eAAe,KAAK,CAAC;YACnB,CAAC,CAAC,YAAY,GAAG,GAAG;YACpB,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;QAE1E,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;YAChC,OAAO,GAAG,QAAQ,IAAI,kBAAkB,MAAM,QAAQ,GAAG,CAAC;SAC3D;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEnC,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;YAClC,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CACjC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC,GAAG,EACjE,EAAE,CACH,CAAC;YACF,OAAO,GAAG,QAAQ,IAAI,kBAAkB,MAAM,eAAe,GAAG,CAAC;SAClE;QACD,OAAO,GAAG,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAC5C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC3B,GAAG,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,SAAS,EACT,aAAa,GAId;IACC,OAAO,cAAc,aAAa,KAAK,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC;AACzE,CAAC"}
import createStyle from './createStyle';
describe('createStyle', () => {
it('should create correct style', () => {
expect(createStyle({
keyframes: ['opacity: 0;', 'opacity: 1;', 'opacity: 2;', 'opacity: 3;'],
animationName: 'test',
})).toMatchSnapshot();
});
it('should create correct style with object', () => {
expect(createStyle({
keyframes: [
{ 0: 'opacity: 0;' },
{ 25: 'opacity: 1;' },
{ 75: 'opacity: 2;' },
{ 100: 'opacity: 3;' },
],
animationName: 'test',
})).toMatchSnapshot();
});
it('should create correct style keyframe object', () => {
expect(createStyle({
keyframes: [
{ opacity: 0 },
{ opacity: 0.25 },
{ opacity: 0.5 },
{ opacity: 0.75 },
{ opacity: 1 },
],
animationName: 'test',
})).toMatchSnapshot();
});
});
//# sourceMappingURL=createStyle.test.js.map
{"version":3,"file":"createStyle.test.js","sourceRoot":"","sources":["../../src/logic/createStyle.test.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CACJ,WAAW,CAAC;YACV,SAAS,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC;YACvE,aAAa,EAAE,MAAM;SACtB,CAAC,CACH,CAAC,eAAe,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CACJ,WAAW,CAAC;YACV,SAAS,EAAE;gBACT,EAAE,CAAC,EAAE,aAAa,EAAE;gBACpB,EAAE,EAAE,EAAE,aAAa,EAAE;gBACrB,EAAE,EAAE,EAAE,aAAa,EAAE;gBACrB,EAAE,GAAG,EAAE,aAAa,EAAE;aACvB;YACD,aAAa,EAAE,MAAM;SACtB,CAAC,CACH,CAAC,eAAe,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CACJ,WAAW,CAAC;YACV,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,CAAC,EAAE;gBACd,EAAE,OAAO,EAAE,IAAI,EAAE;gBACjB,EAAE,OAAO,EAAE,GAAG,EAAE;gBAChB,EAAE,OAAO,EAAE,IAAI,EAAE;gBACjB,EAAE,OAAO,EAAE,CAAC,EAAE;aACf;YACD,aAAa,EAAE,MAAM;SACtB,CAAC,CACH,CAAC,eAAe,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
import createStyle from './createStyle';
export default function createTag({ keyframes, animationName, }) {
let styleTag = document.querySelector('style[data-id=rsi]');
let index;
if (!styleTag) {
styleTag = document.createElement('style');
styleTag.setAttribute('data-id', 'rsi');
document.head.appendChild(styleTag);
}
try {
// @ts-ignore
index = styleTag.sheet.cssRules.length;
}
catch (e) {
index = 0;
}
try {
// @ts-ignore
styleTag.sheet.insertRule(createStyle({
keyframes,
animationName,
}), index);
}
catch (e) {
console.error('react simple animate, error found during insert style ', e); // eslint-disable-line no-console
}
return {
styleTag,
index,
};
}
//# sourceMappingURL=createTag.js.map
{"version":3,"file":"createTag.js","sourceRoot":"","sources":["../../src/logic/createTag.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,eAAe,CAAC;AAGxC,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,SAAS,EACT,aAAa,GAId;IAIC,IAAI,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAC5D,IAAI,KAAK,CAAC;IAEV,IAAI,CAAC,QAAQ,EAAE;QACb,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC3C,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACxC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;KACrC;IAED,IAAI;QACF,aAAa;QACb,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;KACxC;IAAC,OAAO,CAAC,EAAE;QACV,KAAK,GAAG,CAAC,CAAC;KACX;IAED,IAAI;QACF,aAAa;QACb,QAAQ,CAAC,KAAK,CAAC,UAAU,CACvB,WAAW,CAAC;YACV,SAAS;YACT,aAAa;SACd,CAAC,EACF,KAAK,CACN,CAAC;KACH;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,wDAAwD,EAAE,CAAC,CAAC,CAAC,CAAC,iCAAiC;KAC9G;IAED,OAAO;QACL,QAAQ;QACR,KAAK;KACN,CAAC;AACJ,CAAC"}
import createTag from './createTag';
jest.mock('./createStyle', () => () => 'test');
const documentCreateOriginal = document.createElement;
const appendChildOriginal = document.head.appendChild;
describe('createTag', () => {
beforeEach(() => {
document.createElement = jest.fn();
document.head.appendChild = jest.fn();
});
afterEach(() => {
document.createElement = documentCreateOriginal;
document.head.appendChild = appendChildOriginal;
});
it('should the tag and total length of css rules', () => {
const insertRule = jest.fn();
// @ts-ignore
document.createElement.mockReturnValue({ sheet: { cssRules: [1, 2], insertRule }, setAttribute: () => { } });
// @ts-ignore
const output = createTag({ keyframes: {}, animationName: 'test' });
expect(output).toMatchSnapshot();
});
it('should still return tag and index even insertRule thow error', () => {
const insertRule = () => {
throw new Error('failed');
};
// @ts-ignore
document.createElement.mockReturnValue({ sheet: { cssRules: [1, 2], insertRule }, setAttribute: () => { } });
// @ts-ignore
const output = createTag({ keyframes: '', animationName: 'test' });
expect(output).toMatchSnapshot();
});
});
//# sourceMappingURL=createTag.test.js.map
{"version":3,"file":"createTag.test.js","sourceRoot":"","sources":["../../src/logic/createTag.test.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;AAE/C,MAAM,sBAAsB,GAAG,QAAQ,CAAC,aAAa,CAAC;AACtD,MAAM,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;AAEtD,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACnC,QAAQ,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,aAAa,GAAG,sBAAsB,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC7B,aAAa;QACb,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC,CAAC;QAC5G,aAAa;QACb,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnE,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,UAAU,GAAG,GAAG,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC,CAAC;QACF,aAAa;QACb,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC,CAAC;QAC5G,aAAa;QACb,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnE,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
export default (sheet, deleteName) => {
const index = Object.values(sheet.cssRules).findIndex(({ name }) => name === deleteName);
if (index >= 0) {
sheet.deleteRule(index);
}
};
//# sourceMappingURL=deleteRules.js.map
{"version":3,"file":"deleteRules.js","sourceRoot":"","sources":["../../src/logic/deleteRules.ts"],"names":[],"mappings":"AAAA,eAAe,CAAC,KAAU,EAAE,UAAkB,EAAQ,EAAE;IACtD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,SAAS,CACnD,CAAC,EAAE,IAAI,EAAoB,EAAE,EAAE,CAAC,IAAI,KAAK,UAAU,CACpD,CAAC;IACF,IAAI,KAAK,IAAI,CAAC,EAAE;QACd,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KACzB;AACH,CAAC,CAAC"}
import deleteRules from './deleteRules';
describe('deleteRules', () => {
it('should do nothing when index not found', () => {
const deleteRule = jest.fn();
const data = {
cssRules: {},
deleteRule,
};
deleteRules(data, 'whatever');
expect(deleteRule).not.toBeCalled();
});
it('should delete the associated rule', () => {
const deleteRule = jest.fn();
const data = {
deleteRule,
cssRules: {
name: {
name: 'bill',
},
},
};
deleteRules(data, 'bill');
expect(deleteRule).toBeCalled();
});
});
//# sourceMappingURL=deleteRules.test.js.map
{"version":3,"file":"deleteRules.test.js","sourceRoot":"","sources":["../../src/logic/deleteRules.test.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG;YACX,QAAQ,EAAE,EAAE;YACZ,UAAU;SACX,CAAC;QACF,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC9B,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG;YACX,UAAU;YACV,QAAQ,EAAE;gBACR,IAAI,EAAE;oBACJ,IAAI,EAAE,MAAM;iBACb;aACF;SACF,CAAC;QACF,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1B,MAAM,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
//# sourceMappingURL=types.js.map
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
import * as React from 'react';
import secToMs from './utils/secToMs';
import { ALL, DEFAULT_DURATION, DEFAULT_EASE_TYPE } from './constants';
export default function useAnimate(props) {
const { start, end, complete, onComplete, delay = 0, duration = DEFAULT_DURATION, easeType = DEFAULT_EASE_TYPE, } = props;
const transition = React.useMemo(() => `${ALL} ${duration}s ${easeType} ${delay}s`, [duration, easeType, delay]);
const [animate, setAnimate] = React.useState({
isPlaying: false,
style: Object.assign(Object.assign({}, start), { transition }),
});
const { isPlaying, style } = animate;
const onCompleteTimeRef = React.useRef();
React.useEffect(() => {
if ((onCompleteTimeRef.current || complete) && isPlaying) {
onCompleteTimeRef.current = setTimeout(() => {
if (onComplete) {
onComplete();
}
if (complete) {
setAnimate(Object.assign(Object.assign({}, animate), { style: complete }));
}
}, secToMs(delay + duration));
}
return () => onCompleteTimeRef.current && clearTimeout(onCompleteTimeRef.current);
}, [isPlaying]);
return {
isPlaying,
style,
play: React.useCallback((isPlaying) => {
setAnimate(Object.assign(Object.assign({}, animate), { style: Object.assign(Object.assign({}, (isPlaying ? end : start)), { transition }), isPlaying }));
}, []),
};
}
//# sourceMappingURL=useAnimate.js.map
{"version":3,"file":"useAnimate.js","sourceRoot":"","sources":["../src/useAnimate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,OAAO,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEvE,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,KAAqB;IAKtD,MAAM,EACJ,KAAK,EACL,GAAG,EACH,QAAQ,EACR,UAAU,EACV,KAAK,GAAG,CAAC,EACT,QAAQ,GAAG,gBAAgB,EAC3B,QAAQ,GAAG,iBAAiB,GAC7B,GAAG,KAAK,CAAC;IACV,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAC9B,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,QAAQ,KAAK,QAAQ,IAAI,KAAK,GAAG,EACjD,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAC5B,CAAC;IACF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAGzC;QACD,SAAS,EAAE,KAAK;QAChB,KAAK,kCAAO,KAAK,KAAE,UAAU,GAAE;KAChC,CAAC,CAAC;IACH,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IACrC,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,EAAkB,CAAC;IAEzD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,iBAAiB,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,SAAS,EAAE;YACxD,iBAAiB,CAAC,OAAO,GAAG,UAAU,CAAC,GAAS,EAAE;gBAChD,IAAI,UAAU,EAAE;oBACd,UAAU,EAAE,CAAC;iBACd;gBAED,IAAI,QAAQ,EAAE;oBACZ,UAAU,iCACL,OAAO,KACV,KAAK,EAAE,QAAQ,IACf,CAAC;iBACJ;YACH,CAAC,EAAE,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC;SAC/B;QAED,OAAO,GAAG,EAAE,CACV,iBAAiB,CAAC,OAAO,IAAI,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACzE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO;QACL,SAAS;QACT,KAAK;QACL,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,SAAkB,EAAE,EAAE;YAC7C,UAAU,iCACL,OAAO,KACV,KAAK,kCACA,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAC5B,UAAU,KAEZ,SAAS,IACT,CAAC;QACL,CAAC,EAAE,EAAE,CAAC;KACP,CAAC;AACJ,CAAC"}
import * as React from 'react';
import useAnimate from './useAnimate';
import { mount } from 'enzyme';
import { act } from 'react-dom/test-utils';
let UseAnimate;
describe('useAnimate', () => {
let componentStyle;
const TestHook = ({ callback, }) => {
const { style } = callback();
componentStyle = style;
return React.createElement("div", { style: style }, "errors");
};
const TestComponent = (callback) => {
mount(React.createElement(TestHook, { callback: callback }));
};
beforeEach(() => {
TestComponent(() => {
UseAnimate = useAnimate({ end: { opacity: 1 } });
return UseAnimate;
});
jest.resetAllMocks();
});
it('should toggle style correctly', () => {
act(() => {
expect(UseAnimate.play(true)).toBeUndefined();
expect(componentStyle).toEqual({
transition: 'all 0.3s linear 0s',
});
});
expect(componentStyle).toEqual({
opacity: 1,
transition: 'all 0.3s linear 0s',
});
});
});
//# sourceMappingURL=useAnimate.test.js.map
{"version":3,"file":"useAnimate.test.js","sourceRoot":"","sources":["../src/useAnimate.test.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAE3C,IAAI,UAAU,CAAC;AAEf,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAI,cAAc,CAAC;IAEnB,MAAM,QAAQ,GAAG,CAAC,EAChB,QAAQ,GAGT,EAAE,EAAE;QACH,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,cAAc,GAAG,KAAK,CAAC;QACvB,OAAO,6BAAK,KAAK,EAAE,KAAK,aAAc,CAAC;IACzC,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,EAAE;QACjC,KAAK,CAAC,oBAAC,QAAQ,IAAC,QAAQ,EAAE,QAAQ,GAAI,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,UAAU,CAAC,GAAG,EAAE;QACd,aAAa,CAAC,GAAG,EAAE;YACjB,UAAU,GAAG,UAAU,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACjD,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,GAAG,CAAC,GAAG,EAAE;YACP,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;YAC9C,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC;gBAC7B,UAAU,EAAE,oBAAoB;aACjC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC;YAC7B,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,oBAAoB;SACjC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
import * as React from 'react';
import createRandomName from './utils/createRandomName';
import createArrayWithNumbers from './utils/createArrayWithNumbers';
import calculateTotalDuration from './utils/calculateTotalDuration';
import createTag from './logic/createTag';
import deleteRules from './logic/deleteRules';
import { ALL, DEFAULT_DIRECTION, DEFAULT_DURATION, DEFAULT_EASE_TYPE, DEFAULT_FILLMODE, RUNNING, } from './constants';
export default function useAnimateGroup(props) {
const { sequences = [] } = props;
const defaultArray = createArrayWithNumbers(sequences.length).map((_, index) => props.sequences[index].start);
const [styles, setStyles] = React.useState(defaultArray);
const [isPlaying, setPlaying] = React.useState(false);
const animationNamesRef = React.useRef([]);
const styleTagRef = React.useRef([]);
const playRef = React.useRef();
React.useEffect(() => {
sequences.forEach(({ keyframes = false }, i) => {
if (!Array.isArray(keyframes)) {
return;
}
if (!animationNamesRef.current[i]) {
animationNamesRef.current[i] = {};
styleTagRef.current[i] = {};
}
animationNamesRef.current[i].forward = createRandomName();
let result = createTag({
animationName: animationNamesRef.current[i].forward,
keyframes,
});
styleTagRef.current[i].forward = result.styleTag;
animationNamesRef.current[i].reverse = createRandomName();
result = createTag({
animationName: animationNamesRef.current[i].reverse,
keyframes: keyframes.reverse(),
});
styleTagRef.current[i].reverse = result.styleTag;
});
return () => Object.values(animationNamesRef).forEach(({ forward, reverse }, i) => {
if (!styleTagRef[i]) {
return;
}
deleteRules(styleTagRef[i].sheet, forward);
deleteRules(styleTagRef[i].sheet, reverse);
});
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
playRef.current = playRef.current
? playRef.current
: (isPlay) => {
let totalDuration = 0;
const animationRefWithOrder = isPlay
? animationNamesRef.current
: [...animationNamesRef.current].reverse();
const styles = (isPlay ? sequences : [...sequences].reverse()).map((current, currentIndex) => {
const { duration = DEFAULT_DURATION, delay = 0, overlay, keyframes, iterationCount = 1, easeType = DEFAULT_EASE_TYPE, direction = DEFAULT_DIRECTION, fillMode = DEFAULT_FILLMODE, end = {}, start = {}, } = current;
const delayDuration = currentIndex === 0 ? delay : totalDuration;
const transition = `${ALL} ${duration}s ${easeType} ${delayDuration}s`;
totalDuration =
calculateTotalDuration({ duration, delay, overlay }) +
totalDuration;
return keyframes
? {
animation: `${duration}s ${easeType} ${delayDuration}s ${iterationCount} ${direction} ${fillMode} ${RUNNING} ${isPlay
? animationRefWithOrder[currentIndex].forward
: animationRefWithOrder[currentIndex].reverse}`,
}
: Object.assign(Object.assign({}, (isPlay ? end : start)), { transition });
});
setStyles(isPlay ? styles : [...styles].reverse());
setPlaying(!isPlaying);
};
return { styles, play: playRef.current, isPlaying };
}
//# sourceMappingURL=useAnimateGroup.js.map
{"version":3,"file":"useAnimateGroup.js","sourceRoot":"","sources":["../src/useAnimateGroup.ts"],"names":[],"mappings":"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"}
import * as React from 'react';
import { mount } from 'enzyme';
import useAnimateGroup from './useAnimateGroup';
import { act } from 'react-test-renderer';
jest.mock('./utils/createRandomName', () => ({
default: () => 'test',
}));
let UseAnimateGroup;
describe('useAnimateGroup', () => {
let componentStyle;
const TestHook = ({ callback, }) => {
const { styles } = callback();
componentStyle = styles;
return React.createElement("div", null, "errors");
};
const TestComponent = (callback) => {
mount(React.createElement(TestHook, { callback: callback }));
};
beforeEach(() => {
jest.resetAllMocks();
});
it('should generate correct styles', () => {
TestComponent(() => {
UseAnimateGroup = useAnimateGroup({
sequences: [
{ start: { opacity: 0 }, end: { opacity: 1 } },
{ keyframes: ['opacity: 0', 'opacity: 1'] },
{ start: { opacity: 0 }, end: { opacity: 1 } },
{ keyframes: ['opacity: 0', 'opacity: 1'] },
],
});
return UseAnimateGroup;
});
expect(componentStyle).toEqual([
{ opacity: 0 },
undefined,
{ opacity: 0 },
undefined,
]);
act(() => {
UseAnimateGroup.play(true);
expect(componentStyle).toEqual([
{ opacity: 1, transition: 'all 0.3s linear 0s' },
{ animation: '0.3s linear 0.3s 1 normal none running test' },
{ opacity: 1, transition: 'all 0.3s linear 0.6s' },
{
animation: '0.3s linear 0.8999999999999999s 1 normal none running test',
},
]);
});
});
});
//# sourceMappingURL=useAnimateGroup.test.js.map
{"version":3,"file":"useAnimateGroup.test.js","sourceRoot":"","sources":["../src/useAnimateGroup.test.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE1C,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3C,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM;CACtB,CAAC,CAAC,CAAC;AAEJ,IAAI,eAAe,CAAC;AAEpB,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,cAAc,CAAC;IAEnB,MAAM,QAAQ,GAAG,CAAC,EAChB,QAAQ,GAGT,EAAE,EAAE;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC9B,cAAc,GAAG,MAAM,CAAC;QACxB,OAAO,0CAAiB,CAAC;IAC3B,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,EAAE;QACjC,KAAK,CAAC,oBAAC,QAAQ,IAAC,QAAQ,EAAE,QAAQ,GAAI,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,aAAa,CAAC,GAAG,EAAE;YACjB,eAAe,GAAG,eAAe,CAAC;gBAChC,SAAS,EAAE;oBACT,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE;oBAC9C,EAAE,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE;oBAC3C,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE;oBAC9C,EAAE,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE;iBAC5C;aACF,CAAC,CAAC;YACH,OAAO,eAAe,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC;YAC7B,EAAE,OAAO,EAAE,CAAC,EAAE;YACd,SAAS;YACT,EAAE,OAAO,EAAE,CAAC,EAAE;YACd,SAAS;SACV,CAAC,CAAC;QAEH,GAAG,CAAC,GAAG,EAAE;YACP,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC;gBAC7B,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,oBAAoB,EAAE;gBAChD,EAAE,SAAS,EAAE,6CAA6C,EAAE;gBAC5D,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,sBAAsB,EAAE;gBAClD;oBACE,SAAS,EACP,4DAA4D;iBAC/D;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
import * as React from 'react';
import createRandomName from './utils/createRandomName';
import createTag from './logic/createTag';
import { AnimateContext } from './animateGroup';
import deleteRules from './logic/deleteRules';
import getPlayState from './utils/getPauseState';
import { DEFAULT_DIRECTION, DEFAULT_DURATION, DEFAULT_EASE_TYPE, DEFAULT_FILLMODE, } from './constants';
export default function useAnimateKeyframes(props) {
const { duration = DEFAULT_DURATION, delay = 0, easeType = DEFAULT_EASE_TYPE, direction = DEFAULT_DIRECTION, fillMode = DEFAULT_FILLMODE, iterationCount = 1, keyframes, } = props;
const animationNameRef = React.useRef({
forward: '',
reverse: '',
});
const styleTagRef = React.useRef({
forward: { sheet: {} },
reverse: { sheet: {} },
});
const { register } = React.useContext(AnimateContext);
const [isPlaying, setIsPlaying] = React.useState(null);
const [isPaused, setIsPaused] = React.useState(false);
const playRef = React.useRef();
React.useEffect(() => {
const styleTag = styleTagRef.current;
const animationName = animationNameRef.current;
animationNameRef.current.forward = createRandomName();
let result = createTag({
animationName: animationNameRef.current.forward,
keyframes,
});
styleTagRef.current.forward = result.styleTag;
animationNameRef.current.reverse = createRandomName();
result = createTag({
animationName: animationNameRef.current.reverse,
keyframes: keyframes.reverse(),
});
styleTagRef.current.reverse = result.styleTag;
register(props);
return () => {
deleteRules(styleTag.forward.sheet, animationName.forward);
deleteRules(styleTag.reverse.sheet, animationName.reverse);
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
playRef.current = playRef.current
? playRef.current
: (isPlay) => setIsPlaying(isPlay);
const style = {
animation: `${duration}s ${easeType} ${delay}s ${iterationCount} ${direction} ${fillMode} ${getPlayState(isPaused)} ${isPlaying === null
? ''
: isPlaying
? animationNameRef.current.forward
: animationNameRef.current.reverse}`,
};
return {
style,
play: playRef.current,
pause: setIsPaused,
isPlaying: !!isPlaying,
};
}
//# sourceMappingURL=useAnimateKeyframes.js.map
{"version":3,"file":"useAnimateKeyframes.js","sourceRoot":"","sources":["../src/useAnimateKeyframes.ts"],"names":[],"mappings":"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"}
import * as React from 'react';
import useAnimateKeyframes from './useAnimateKeyframes';
import { mount } from 'enzyme';
import { act } from 'react-dom/test-utils';
jest.mock('./utils/createRandomName', () => ({
default: () => 'test',
}));
let UseAnimate;
describe('useAnimateKeyframes', () => {
let componentStyle;
const TestHook = ({ callback }) => {
const { style } = callback();
componentStyle = style;
return React.createElement("div", { style: style }, "errors");
};
const TestComponent = (callback) => {
mount(React.createElement(TestHook, { callback: callback }));
};
beforeEach(() => {
TestComponent(() => {
UseAnimate = useAnimateKeyframes({
keyframes: ['opacity: 0', 'opacity: 1'],
});
return UseAnimate;
});
jest.resetAllMocks();
});
it('should toggle style correctly', () => {
act(() => {
expect(UseAnimate.play(true)).toBeUndefined();
expect(componentStyle).toEqual({
animation: '0.3s linear 0s 1 normal none running ',
});
});
expect(componentStyle).toEqual({
animation: '0.3s linear 0s 1 normal none running test',
});
});
});
//# sourceMappingURL=useAnimateKeyframes.test.js.map
{"version":3,"file":"useAnimateKeyframes.test.js","sourceRoot":"","sources":["../src/useAnimateKeyframes.test.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAE3C,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3C,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM;CACtB,CAAC,CAAC,CAAC;AAEJ,IAAI,UAAU,CAAC;AAEf,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,cAAc,CAAC;IAEnB,MAAM,QAAQ,GAAG,CAAC,EAAE,QAAQ,EAAO,EAAE,EAAE;QACrC,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,cAAc,GAAG,KAAK,CAAC;QACvB,OAAO,6BAAK,KAAK,EAAE,KAAK,aAAc,CAAC;IACzC,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,EAAE;QACjC,KAAK,CAAC,oBAAC,QAAQ,IAAC,QAAQ,EAAE,QAAQ,GAAI,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,UAAU,CAAC,GAAG,EAAE;QACd,aAAa,CAAC,GAAG,EAAE;YACjB,UAAU,GAAG,mBAAmB,CAAC;gBAC/B,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;aACxC,CAAC,CAAC;YACH,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,GAAG,CAAC,GAAG,EAAE;YACP,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;YAC9C,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC;gBAC7B,SAAS,EAAE,uCAAuC;aACnD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC;YAC7B,SAAS,EAAE,2CAA2C;SACvD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
export default ({ duration = 0.3, delay = 0, overlay = 0, }) => duration + delay - overlay || 0;
//# sourceMappingURL=calculateTotalDuration.js.map
{"version":3,"file":"calculateTotalDuration.js","sourceRoot":"","sources":["../../src/utils/calculateTotalDuration.ts"],"names":[],"mappings":"AAAA,eAAe,CAAC,EACd,QAAQ,GAAG,GAAG,EACd,KAAK,GAAG,CAAC,EACT,OAAO,GAAG,CAAC,GAKZ,EAAU,EAAE,CAAC,QAAQ,GAAG,KAAK,GAAG,OAAO,IAAI,CAAC,CAAC"}
import calculateTotalDuration from '../../src/utils/calculateTotalDuration';
describe('calculateTotalDuration', () => {
it('should return correctly seconds', () => {
expect(calculateTotalDuration({ duration: 1, delay: 1 })).toEqual(2);
});
it('should return correctly seconds when play on reverse', () => {
expect(calculateTotalDuration({
duration: 1,
delay: 1,
})).toEqual(2);
});
it('should return correctly when those default duration and delay are not supplied', () => {
expect(calculateTotalDuration({})).toEqual(0.3);
});
});
//# sourceMappingURL=calculateTotalDuration.test.js.map
{"version":3,"file":"calculateTotalDuration.test.js","sourceRoot":"","sources":["../../src/utils/calculateTotalDuration.test.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,MAAM,wCAAwC,CAAC;AAE5E,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,sBAAsB,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,CACJ,sBAAsB,CAAC;YACrB,QAAQ,EAAE,CAAC;YACX,KAAK,EAAE,CAAC;SACT,CAAC,CACH,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;QACxF,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
export default (camelCase) => camelCase ? camelCase.replace(/[A-Z]/g, c => `-${c.toLowerCase()}`) : '';
//# sourceMappingURL=camelCaseToDash.js.map
{"version":3,"file":"camelCaseToDash.js","sourceRoot":"","sources":["../../src/utils/camelCaseToDash.ts"],"names":[],"mappings":"AAAA,eAAe,CAAC,SAAkB,EAAU,EAAE,CAC5C,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC"}
import camelCaseToDash from './camelCaseToDash';
describe('camelCaseToDash', () => {
it('should transfer camel case string to dash', () => {
expect(camelCaseToDash('backgroundColor')).toEqual('background-color');
});
it('should return empty when given null or undefined or empty string', () => {
expect(camelCaseToDash('')).toEqual('');
expect(camelCaseToDash()).toEqual('');
});
});
//# sourceMappingURL=camelCaseToDash.test.js.map
{"version":3,"file":"camelCaseToDash.test.js","sourceRoot":"","sources":["../../src/utils/camelCaseToDash.test.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
export default function createArrayWithNumbers(length) {
return Array.from({ length }, () => null);
}
//# sourceMappingURL=createArrayWithNumbers.js.map
{"version":3,"file":"createArrayWithNumbers.js","sourceRoot":"","sources":["../../src/utils/createArrayWithNumbers.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,MAAc;IAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,GAAS,EAAE,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC"}
export default () => `RSI-${Math.random()
.toString(36)
.substr(2, 9)}`;
//# sourceMappingURL=createRandomName.js.map
{"version":3,"file":"createRandomName.js","sourceRoot":"","sources":["../../src/utils/createRandomName.ts"],"names":[],"mappings":"AAAA,eAAe,GAAW,EAAE,CAAE,OAAO,IAAI,CAAC,MAAM,EAAE;KAC7C,QAAQ,CAAC,EAAE,CAAC;KACZ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA"}
import { RUNNING } from '../constants';
export default (pause) => (pause ? 'paused' : RUNNING);
//# sourceMappingURL=getPauseState.js.map
{"version":3,"file":"getPauseState.js","sourceRoot":"","sources":["../../src/utils/getPauseState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,eAAe,CAAC,KAAc,EAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC"}
import getPlayState from './getPauseState';
describe('getPlayState', () => {
it('should return correct value', () => {
expect(getPlayState(true)).toEqual('paused');
expect(getPlayState(false)).toEqual('running');
});
});
//# sourceMappingURL=getPauseState.test.js.map
{"version":3,"file":"getPauseState.test.js","sourceRoot":"","sources":["../../src/utils/getPauseState.test.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAE3C,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
import isUndefined from './isUndefined';
export default function getSequenceId(sequenceIndex, sequenceId, defaultValue) {
if (isUndefined(sequenceId) && isUndefined(sequenceIndex)) {
return defaultValue || 0;
}
if (sequenceIndex && sequenceIndex >= 0) {
return sequenceIndex;
}
if (sequenceId) {
return sequenceId;
}
return 0;
}
//# sourceMappingURL=getSequenceId.js.map
{"version":3,"file":"getSequenceId.js","sourceRoot":"","sources":["../../src/utils/getSequenceId.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,OAAO,UAAU,aAAa,CACnC,aAAsB,EACtB,UAA4B,EAC5B,YAA8B;IAE9B,IAAI,WAAW,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC,aAAa,CAAC,EAAE;QACzD,OAAO,YAAY,IAAI,CAAC,CAAC;KAC1B;IAED,IAAI,aAAa,IAAI,aAAa,IAAI,CAAC,EAAE;QACvC,OAAO,aAAa,CAAC;KACtB;IAED,IAAI,UAAU,EAAE;QACd,OAAO,UAAU,CAAC;KACnB;IAED,OAAO,CAAC,CAAC;AACX,CAAC"}
import getSequenceId from './getSequenceId';
describe('getSequenceId', () => {
it('should return 0 when both undefined', () => {
expect(getSequenceId(undefined, undefined)).toEqual(0);
});
it('should return sequence index when defined', () => {
expect(getSequenceId(1, undefined)).toEqual(1);
});
it('should return sequence id when defined', () => {
expect(getSequenceId(undefined, '2')).toEqual('2');
});
it('should return default when nothing defined', () => {
expect(getSequenceId(undefined, undefined, 2)).toEqual(2);
});
});
//# sourceMappingURL=getSequenceId.test.js.map
{"version":3,"file":"getSequenceId.test.js","sourceRoot":"","sources":["../../src/utils/getSequenceId.test.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
export default (val) => val === undefined;
//# sourceMappingURL=isUndefined.js.map
{"version":3,"file":"isUndefined.js","sourceRoot":"","sources":["../../src/utils/isUndefined.ts"],"names":[],"mappings":"AAAA,eAAe,CAAC,GAAY,EAAoB,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC"}
import isUndefined from './isUndefined';
describe('isUndefined', () => {
it('should return true when it is an undefined value', () => {
expect(isUndefined(undefined)).toBeTruthy();
});
it('should return false when it is not an undefined value', () => {
expect(isUndefined(null)).toBeFalsy();
expect(isUndefined('')).toBeFalsy();
expect(isUndefined('undefined')).toBeFalsy();
expect(isUndefined(0)).toBeFalsy();
expect(isUndefined([])).toBeFalsy();
expect(isUndefined({})).toBeFalsy();
});
});
//# sourceMappingURL=isUndefined.test.js.map
{"version":3,"file":"isUndefined.test.js","sourceRoot":"","sources":["../../src/utils/isUndefined.test.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACnC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
export default (ms) => (ms || 0) * 1000;
//# sourceMappingURL=secToMs.js.map
{"version":3,"file":"secToMs.js","sourceRoot":"","sources":["../../src/utils/secToMs.ts"],"names":[],"mappings":"AAAA,eAAe,CAAC,EAAU,EAAU,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC"}
import secToMs from './secToMs';
describe('secToMs', () => {
it('should convert to', () => {
expect(secToMs(1)).toEqual(1000);
});
});
//# sourceMappingURL=secToMs.test.js.map
{"version":3,"file":"secToMs.test.js","sourceRoot":"","sources":["../../src/utils/secToMs.test.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}