UNPKG

@adam.plesnik/tailwindcss-scroll-driven-animations

Version:

A plugin for Tailwind CSS v3.4+ that provides utilities for scroll-driven animations.

101 lines (100 loc) 2.8 kB
"use strict"; var _plugin = /*#__PURE__*/ _interop_require_default(require("tailwindcss/plugin")); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function splitAndCombine(values, modifiers) { var valueArray = (values || "").split(" "); var modifierArray = (modifiers || [ "0_100%" ].join("_")).split("_"); var combinedValues = [ valueArray[0], modifierArray[0], valueArray[1], modifierArray[1] ]; return combinedValues.join(" "); } module.exports = (0, _plugin.default)(function scrollDrivenAnimations(param) { var matchUtilities = param.matchUtilities, addVariant = param.addVariant, theme = param.theme; matchUtilities({ timeline: function(value, param) { var modifier = param.modifier; return { animationTimeline: modifier ? "--".concat(modifier) : value }; } }, { values: { DEFAULT: "scroll(y)", auto: "auto", none: "none", "scroll-x": "scroll(x)", view: "view()" }, modifiers: "any" }); matchUtilities({ "scroll-timeline": function(value, param) { var modifier = param.modifier; return { scrollTimeline: (modifier ? "--".concat(modifier, " ") : "none ") + value }; } }, { values: theme("timelineValues"), modifiers: "any" }); matchUtilities({ "view-timeline": function(value, param) { var modifier = param.modifier; return { viewTimeline: (modifier ? "--".concat(modifier, " ") : "none ") + value }; } }, { values: theme("timelineValues"), modifiers: "any" }); matchUtilities({ scope: function(value, param) { var modifier = param.modifier; return { timelineScope: "--".concat(modifier) }; } }, { values: { DEFAULT: "" }, modifiers: "any" }); matchUtilities({ range: function(value, param) { var modifier = param.modifier; return { animationRange: splitAndCombine(value, modifier) }; } }, { values: { DEFAULT: "cover cover", "on-entry": "entry entry", "on-exit": "exit exit", contain: "contain contain" }, modifiers: "any" }); addVariant("no-animations", "@supports not (animation-range: cover)"); }, { theme: { timelineValues: { DEFAULT: "y", block: "block", x: "x" } } });