diff options
| author | Philipp Tanlak <philipp.tanlak@gmail.com> | 2025-11-24 20:54:57 +0100 |
|---|---|---|
| committer | Philipp Tanlak <philipp.tanlak@gmail.com> | 2025-11-24 20:57:48 +0100 |
| commit | b1e2c8fd5cb5dfa46bc440a12eafaf56cd844b1c (patch) | |
| tree | 49d360fd6cbc6a2754efe93524ac47ff0fbe0f7d /node_modules/tailwindcss/lib/util/parseBoxShadowValue.js | |
Docs
Diffstat (limited to 'node_modules/tailwindcss/lib/util/parseBoxShadowValue.js')
| -rw-r--r-- | node_modules/tailwindcss/lib/util/parseBoxShadowValue.js | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/node_modules/tailwindcss/lib/util/parseBoxShadowValue.js b/node_modules/tailwindcss/lib/util/parseBoxShadowValue.js new file mode 100644 index 0000000..28f68c9 --- /dev/null +++ b/node_modules/tailwindcss/lib/util/parseBoxShadowValue.js @@ -0,0 +1,88 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + parseBoxShadowValue: function() { + return parseBoxShadowValue; + }, + formatBoxShadowValue: function() { + return formatBoxShadowValue; + } +}); +const _splitAtTopLevelOnly = require("./splitAtTopLevelOnly"); +let KEYWORDS = new Set([ + "inset", + "inherit", + "initial", + "revert", + "unset" +]); +let SPACE = /\ +(?![^(]*\))/g // Similar to the one above, but with spaces instead. +; +let LENGTH = /^-?(\d+|\.\d+)(.*?)$/g; +function parseBoxShadowValue(input) { + let shadows = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(input, ","); + return shadows.map((shadow)=>{ + let value = shadow.trim(); + let result = { + raw: value + }; + let parts = value.split(SPACE); + let seen = new Set(); + for (let part of parts){ + // Reset index, since the regex is stateful. + LENGTH.lastIndex = 0; + // Keyword + if (!seen.has("KEYWORD") && KEYWORDS.has(part)) { + result.keyword = part; + seen.add("KEYWORD"); + } else if (LENGTH.test(part)) { + if (!seen.has("X")) { + result.x = part; + seen.add("X"); + } else if (!seen.has("Y")) { + result.y = part; + seen.add("Y"); + } else if (!seen.has("BLUR")) { + result.blur = part; + seen.add("BLUR"); + } else if (!seen.has("SPREAD")) { + result.spread = part; + seen.add("SPREAD"); + } + } else { + if (!result.color) { + result.color = part; + } else { + if (!result.unknown) result.unknown = []; + result.unknown.push(part); + } + } + } + // Check if valid + result.valid = result.x !== undefined && result.y !== undefined; + return result; + }); +} +function formatBoxShadowValue(shadows) { + return shadows.map((shadow)=>{ + if (!shadow.valid) { + return shadow.raw; + } + return [ + shadow.keyword, + shadow.x, + shadow.y, + shadow.blur, + shadow.spread, + shadow.color + ].filter(Boolean).join(" "); + }).join(", "); +} |