MCPcopy
hub / github.com/tailwindlabs/tailwindcss / parseModifier

Function parseModifier

packages/tailwindcss/src/candidate.ts:615–660  ·  packages/tailwindcss/src/candidate.ts::parseModifier
(modifier: string)

Source from the content-addressed store, hash-verified

613}
614
615function parseModifier(modifier: string): CandidateModifier | null {
616 if (modifier[0] === class="st">'[' && modifier[modifier.length - 1] === class="st">']') {
617 let arbitraryValue = decodeArbitraryValue(modifier.slice(1, -1))
618
619 class="cm">// Values can't contain `;` or `}` characters at the top-level.
620 if (!isValidArbitrary(arbitraryValue)) return null
621
622 class="cm">// Empty arbitrary values are invalid. E.g.: `data-[]:`
623 class="cm">// ^^
624 if (arbitraryValue.length === 0 || arbitraryValue.trim().length === 0) return null
625
626 return {
627 kind: class="st">'arbitrary',
628 value: arbitraryValue,
629 }
630 }
631
632 if (modifier[0] === class="st">'(' && modifier[modifier.length - 1] === class="st">')') {
633 class="cm">// Drop the `(` and `)` characters
634 modifier = modifier.slice(1, -1)
635
636 class="cm">// A modifier with `(…)` should always start with `--` since it
637 class="cm">// represents a CSS variable.
638 if (modifier[0] !== class="st">'-' || modifier[1] !== class="st">'-') return null
639
640 class="cm">// Values can't contain `;` or `}` characters at the top-level.
641 if (!isValidArbitrary(modifier)) return null
642
643 class="cm">// Wrap the value in `var(…)` to ensure that it is a valid CSS variable.
644 modifier = `var(${modifier})`
645
646 let arbitraryValue = decodeArbitraryValue(modifier)
647
648 return {
649 kind: class="st">'arbitrary',
650 value: arbitraryValue,
651 }
652 }
653
654 if (!IS_VALID_NAMED_VALUE.test(modifier)) return null
655
656 return {
657 kind: class="st">'named',
658 value: modifier,
659 }
660}
661
662export function parseVariant(variant: string, designSystem: DesignSystem): Variant | null {
663 class="cm">// Arbitrary variants

Callers 2

parseCandidateFunction · 0.85
parseVariantFunction · 0.85

Calls 2

decodeArbitraryValueFunction · 0.90
isValidArbitraryFunction · 0.90

Tested by

no test coverage detected