123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- Object.defineProperty(exports, "default", {
- enumerable: true,
- get: function() {
- return parseAnimationValue;
- }
- });
- const DIRECTIONS = new Set([
- "normal",
- "reverse",
- "alternate",
- "alternate-reverse"
- ]);
- const PLAY_STATES = new Set([
- "running",
- "paused"
- ]);
- const FILL_MODES = new Set([
- "none",
- "forwards",
- "backwards",
- "both"
- ]);
- const ITERATION_COUNTS = new Set([
- "infinite"
- ]);
- const TIMINGS = new Set([
- "linear",
- "ease",
- "ease-in",
- "ease-out",
- "ease-in-out",
- "step-start",
- "step-end"
- ]);
- const TIMING_FNS = [
- "cubic-bezier",
- "steps"
- ];
- const COMMA = /\,(?![^(]*\))/g // Comma separator that is not located between brackets. E.g.: `cubic-bezier(a, b, c)` these don't count.
- ;
- const SPACE = /\ +(?![^(]*\))/g // Similar to the one above, but with spaces instead.
- ;
- const TIME = /^(-?[\d.]+m?s)$/;
- const DIGIT = /^(\d+)$/;
- function parseAnimationValue(input) {
- let animations = input.split(COMMA);
- return animations.map((animation)=>{
- let value = animation.trim();
- let result = {
- value
- };
- let parts = value.split(SPACE);
- let seen = new Set();
- for (let part of parts){
- if (!seen.has("DIRECTIONS") && DIRECTIONS.has(part)) {
- result.direction = part;
- seen.add("DIRECTIONS");
- } else if (!seen.has("PLAY_STATES") && PLAY_STATES.has(part)) {
- result.playState = part;
- seen.add("PLAY_STATES");
- } else if (!seen.has("FILL_MODES") && FILL_MODES.has(part)) {
- result.fillMode = part;
- seen.add("FILL_MODES");
- } else if (!seen.has("ITERATION_COUNTS") && (ITERATION_COUNTS.has(part) || DIGIT.test(part))) {
- result.iterationCount = part;
- seen.add("ITERATION_COUNTS");
- } else if (!seen.has("TIMING_FUNCTION") && TIMINGS.has(part)) {
- result.timingFunction = part;
- seen.add("TIMING_FUNCTION");
- } else if (!seen.has("TIMING_FUNCTION") && TIMING_FNS.some((f)=>part.startsWith(`${f}(`))) {
- result.timingFunction = part;
- seen.add("TIMING_FUNCTION");
- } else if (!seen.has("DURATION") && TIME.test(part)) {
- result.duration = part;
- seen.add("DURATION");
- } else if (!seen.has("DELAY") && TIME.test(part)) {
- result.delay = part;
- seen.add("DELAY");
- } else if (!seen.has("NAME")) {
- result.name = part;
- seen.add("NAME");
- } else {
- if (!result.unknown) result.unknown = [];
- result.unknown.push(part);
- }
- }
- return result;
- });
- }
|