summaryrefslogtreecommitdiff
path: root/node_modules/tailwindcss/lib/util/parseAnimationValue.js
diff options
context:
space:
mode:
authorPhilipp Tanlak <philipp.tanlak@gmail.com>2025-11-24 20:54:57 +0100
committerPhilipp Tanlak <philipp.tanlak@gmail.com>2025-11-24 20:57:48 +0100
commitb1e2c8fd5cb5dfa46bc440a12eafaf56cd844b1c (patch)
tree49d360fd6cbc6a2754efe93524ac47ff0fbe0f7d /node_modules/tailwindcss/lib/util/parseAnimationValue.js
Docs
Diffstat (limited to 'node_modules/tailwindcss/lib/util/parseAnimationValue.js')
-rw-r--r--node_modules/tailwindcss/lib/util/parseAnimationValue.js93
1 files changed, 93 insertions, 0 deletions
diff --git a/node_modules/tailwindcss/lib/util/parseAnimationValue.js b/node_modules/tailwindcss/lib/util/parseAnimationValue.js
new file mode 100644
index 0000000..33370f7
--- /dev/null
+++ b/node_modules/tailwindcss/lib/util/parseAnimationValue.js
@@ -0,0 +1,93 @@
+"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.: `cubiz-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;
+ });
+}