0.1.5 • Published 1 year ago

@hookun/parse-animation-shorthand v0.1.5

Weekly downloads
637
License
Apache-2.0
Repository
github
Last release
1 year ago

@hookun/parse-animation-shorthand

codecov Test

A parser for The animation shorthand CSS property.

Install

npm install @hookun/parse-animation-shorthand

API

parse(value: string) → Array<CSSAnimation>

import {parse} from '@hookun/parse-animation-shorthand';
const result = parse('3s ease-in SlideIn, .2s .1s ease FadeIn');
const expectedResult = [
    {
        name: 'SlideIn',
        duration: 3000,
        delay: 'unset',
        timingFunction: 'ease-in',
        iterationCount: 'unset',
        direction: 'unset',
        fillMode: 'unset',
        playState: 'unset',
    },
    {
        name: 'FadeIn',
        duration: 200,
        delay: 100,
        timingFunction: 'ease',
        iterationCount: 'unset',
        direction: 'unset',
        fillMode: 'forwards',
        playState: 'unset',
    },
];

serialize(value: CSSAnimation) → string

import {serialize} from '@hookun/parse-animation-shorthand';
const result = serialize({
    name: 'SlideIn',
    duration: 3000,
    delay: 'unset',
    timingFunction: 'ease-in',
    iterationCount: 'unset',
    direction: 'unset',
    fillMode: 'unset',
    playState: 'unset',
});
const expectedResult = '3s ease-in SlideIn';

What's the CSSAnimation?

interface CSSAnimation {
    name: string
    duration: number | Unset
    timingFunction: CSSTimingFunction | Unset
    delay: number | Unset
    iterationCount: number | 'infinite' | Unset
    direction: CSSAnimationDirection | Unset
    fillMode: CSSAnimationFillMode | Unset
    playState: CSSAnimationPlayState | Unset
}

type Unset = 'unset'

type CSSTimingFunction =
| CSSTimingFunctionKeyword
| CSSCubicBezier
| CSSSteps

type CSSTimingFunctionKeyword =
| 'ease'
| 'ease-in'
| 'ease-out'
| 'ease-in-out'
| 'linear'
| 'step-start'
| 'step-end'

interface CSSCubicBezier {
    type: 'cubic-bezier'
    value: [number, number, number, number]
}

interface CSSSteps {
    type: 'steps'
    stepCount: number
    direction: CSSStepDirection
}

type CSSStepDirection =
| 'jump-start'
| 'jump-end'
| 'jump-none'
| 'jump-both'
| 'start'
| 'end'

type CSSAnimationDirection =
| 'normal'
| 'reverse'
| 'alternate'
| 'alternate-reverse';

type CSSAnimationFillMode =
| 'none'
| 'forwards'
| 'backwards'
| 'both'

type CSSAnimationPlayState =
| 'paused'
| 'running'

License

Apache License, Version 2.0