UNPKG

164 kBSource Map (JSON)View Raw
1{
2 "version": 3,
3 "sources": ["../src/internal/util.ts", "../src/twind/parse.ts", "../src/twind/directive.ts", "../src/twind/apply.ts", "../src/twind/helpers.ts", "../src/twind/plugins.ts", "../src/twind/preflight.ts", "../src/twind/variants.ts", "../src/internal/dom.ts", "../src/twind/sheets.ts", "../src/twind/modes.ts", "../src/twind/prefix.ts", "../src/twind/theme.ts", "../src/twind/translate.ts", "../src/twind/decorate.ts", "../src/twind/presedence.ts", "../src/twind/serialize.ts", "../src/twind/inject.ts", "../src/twind/configure.ts", "../src/twind/instance.ts", "../src/twind/default.ts"],
4 "sourcesContent": ["import type {\n Context,\n Hasher,\n Falsy,\n MaybeThunk,\n CSSRules,\n ThemeScreen,\n ThemeScreenValue,\n CSSRuleValue,\n} from '../types'\n\ninterface Includes {\n (value: string, search: string): boolean\n <T>(value: readonly T[], search: T): boolean\n}\n\nexport const includes: Includes = (value: string | readonly unknown[], search: unknown) =>\n // eslint-disable-next-line no-implicit-coercion\n !!~(value as string).indexOf(search as string)\n\nexport const join = (parts: readonly string[], separator = '-'): string => parts.join(separator)\n\nexport const joinTruthy = (parts: readonly (string | Falsy)[], separator?: string): string =>\n join(parts.filter(Boolean) as string[], separator)\n\nexport const tail = <T extends string | readonly unknown[]>(array: T, startIndex = 1): T =>\n array.slice(startIndex) as T\n\nexport const identity = <T>(value: T): T => value\n\nexport const noop = (): void => {\n /* no-op */\n}\n\nexport const capitalize = <T extends string>(value: T): Capitalize<T> =>\n (value[0].toUpperCase() + tail(value)) as Capitalize<T>\n\nexport const hyphenate = (value: string): string => value.replace(/[A-Z]/g, '-$&').toLowerCase()\n\nexport const evalThunk = <T>(value: MaybeThunk<T>, context: Context): T => {\n while (typeof value == 'function') {\n value = (value as (context: Context) => T)(context)\n }\n\n return value\n}\n\nexport const ensureMaxSize = <K, V>(map: Map<K, V>, max: number): void => {\n // Ensure the cache does not grow unlimited\n if (map.size > max) {\n map.delete(map.keys().next().value)\n }\n}\n\n// string, number or Array => a property with a value\nexport const isCSSProperty = (key: string, value: CSSRuleValue): boolean =>\n !includes('@:&', key[0]) && (includes('rg', (typeof value)[5]) || Array.isArray(value))\n\nexport const merge = (target: CSSRules, source: CSSRules, context: Context): CSSRules =>\n source\n ? Object.keys(source).reduce((target, key) => {\n const value = evalThunk(source[key], context)\n\n if (isCSSProperty(key, value)) {\n // hyphenate target key only if key is property like (\\w-)\n target[hyphenate(key)] = value\n } else {\n // Keep all @font-face, @import, @global, @apply as is\n target[key] =\n key[0] == '@' && includes('figa', key[1])\n ? ((target[key] || []) as CSSRules[]).concat(value as CSSRules)\n : merge((target[key] || {}) as CSSRules, value as CSSRules, context)\n }\n\n return target\n }, target)\n : target\n\nexport const escape =\n (typeof CSS !== 'undefined' && CSS.escape) ||\n // Simplified: escaping only special characters\n // Needed for NodeJS and Edge <79 (https://caniuse.com/mdn-api_css_escape)\n ((className: string): string =>\n className\n // Simplifed escape testing only for chars that we know happen to be in tailwind directives\n .replace(/[!\"'`*+.,;:\\\\/<=>?@#$%&^|~()[\\]{}]/g, '\\\\$&')\n // If the character is the first character and is in the range [0-9] (2xl, ...)\n // https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n .replace(/^\\d/, '\\\\3$& '))\n\nexport const buildMediaQuery = (screen: ThemeScreen): string => {\n if (!Array.isArray(screen)) {\n screen = [screen as ThemeScreenValue]\n }\n\n return (\n '@media ' +\n join(\n (screen as ThemeScreenValue[]).map((screen) => {\n if (typeof screen == 'string') {\n screen = { min: screen }\n }\n\n return (\n (screen as { raw?: string }).raw ||\n join(\n Object.keys(screen).map(\n (feature) => `(${feature}-width:${(screen as Record<string, string>)[feature]})`,\n ),\n ' and ',\n )\n )\n }),\n ',',\n )\n )\n}\n\n// Based on https://stackoverflow.com/a/52171480\nexport const cyrb32: Hasher = (value: string): string => {\n // eslint-disable-next-line no-var\n for (var h = 9, index = value.length; index--; ) {\n h = Math.imul(h ^ value.charCodeAt(index), 0x5f356495)\n }\n\n return 'tw-' + ((h ^ (h >>> 9)) >>> 0).toString(36)\n}\n\n/**\n * Find the array index of where to add an element to keep it sorted.\n *\n * @returns The insertion index\n */\nexport const sortedInsertionIndex = (array: readonly number[], element: number): number => {\n // Find position by binary search\n // eslint-disable-next-line no-var\n for (var low = 0, high = array.length; low < high; ) {\n const pivot = (high + low) >> 1\n\n // Less-Then-Equal to add new equal element after all existing equal elements (stable sort)\n if (array[pivot] <= element) {\n low = pivot + 1\n } else {\n high = pivot\n }\n }\n\n return high\n}\n", "import type { Rule, Token } from '../types'\n\nimport { join, tail, includes } from '../internal/util'\n\n// The parsing is stacked based\n// when ever we find a group start\n// - in strings ':' or '(',\n// - array values\n// - object keys and their value\n// we add an empty marker string `\"\"` into `groupings` to mark the group start\n// if we find a variant or prefix we push it onto `groupings`\n// once the group ends (whitespace or ')') we drop all entries until the last marker\n// This way we can filter `groupings` for truthy values which are either\n// a variant (starting with ':') or a prefix\n\n// Shared variables used during parsing\n\n// List of active groupings: either variant (':xxx') or prefix\n// sm:text => ':sm'\n// sm:(text) => ':sm', ''\n// text(center sm:hover:underline focus:black) sm:rounded\n// => 'text'\n// => 'text', ''\n// => 'text', '', ':sm'\n// => 'text', '', ':sm', ':hover'\n// => 'text', ''\n// => 'text', '', ':focus'\n// => 'text'\n// =>\n// => ':sm'\nlet groupings: string[]\n\n// List of parsed rules\nlet rules: Rule[]\n\n// A new group has been found\n// this maybe a value (':variant' or 'prefix') or an empty marker string\nconst startGrouping = (value = ''): '' => {\n groupings.push(value)\n return ''\n}\n\n// Close a group\n// Within strings we need to distinguish between a whitespace and a closing bracket\n// a) if we have a whitespace\n// we want to keep everything up to including the last group start\n//\n// b) if we have a non-whitespace\n// we want to keep everything before the last group start\nconst endGrouping = (isWhitespace?: boolean): void => {\n // true => +1\n // false => +0\n groupings.length = Math.max(groupings.lastIndexOf('') + ~~(isWhitespace as boolean), 0)\n}\n\nconst onlyPrefixes = (s: string): '' | boolean => s && !includes('!:', s[0])\nconst onlyVariants = (s: string): '' | boolean => s[0] == ':'\n\nconst addRule = (directive: Rule['d'], negate?: boolean): void => {\n rules.push({\n v: groupings.filter(onlyVariants),\n d: directive,\n n: negate,\n i: includes(groupings, '!'),\n $: '',\n })\n}\n\nconst saveRule = (buffer: string): '' => {\n const negate = buffer[0] == '-'\n\n if (negate) {\n buffer = tail(buffer)\n }\n\n const prefix = join(groupings.filter(onlyPrefixes))\n\n addRule(buffer == '&' ? prefix : (prefix && prefix + '-') + buffer, negate)\n\n return ''\n}\n\nconst parseString = (token: string, isVariant?: boolean): void => {\n let buffer = ''\n\n for (let char: string, dynamic = false, position = 0; (char = token[position++]); ) {\n if (dynamic || char == '[') {\n buffer += char\n dynamic = char != ']'\n continue\n }\n\n switch (char) {\n case ':':\n // Check if this is an pseudo element \"after::\"\n buffer =\n buffer && startGrouping(':' + (token[position] == char ? token[position++] : '') + buffer)\n\n break\n\n case '(':\n // If there is a buffer this is the prefix for all grouped tokens\n buffer = buffer && startGrouping(buffer)\n\n startGrouping()\n\n break\n\n case '!':\n startGrouping(char)\n\n break\n\n case ')':\n case ' ':\n case '\\t':\n case '\\n':\n case '\\r':\n buffer = buffer && saveRule(buffer)\n endGrouping(char !== ')')\n\n break\n\n default:\n buffer += char\n }\n }\n\n if (buffer) {\n if (isVariant) {\n startGrouping(':' + buffer)\n } else if (buffer.slice(-1) == '-') {\n startGrouping(buffer.slice(0, -1))\n } else {\n saveRule(buffer)\n }\n }\n}\n\nconst parseGroupedToken = (token: Token): void => {\n startGrouping()\n\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n parseToken(token)\n\n endGrouping()\n}\n\nconst parseGroup = (key: string, token: Token): void => {\n if (token) {\n startGrouping()\n\n // we care about: string, object and function\n // \"undefined\"\n // \"object\" - this includes arrays\n // \"boolean\"\n // \"number\"\n // \"bigint\"\n // \"string\"\n // \"symbol\"\n // \"function\"\n // 2nd char is uniq\n const isVariant = includes('tbu', (typeof token)[1])\n\n parseString(key, isVariant)\n\n if (isVariant) {\n parseGroupedToken(token)\n }\n\n endGrouping()\n }\n}\n\nconst parseToken = (token: Token): void => {\n switch (typeof token) {\n case 'string':\n parseString(token)\n break\n case 'function':\n addRule(token)\n break\n case 'object':\n if (Array.isArray(token)) {\n token.forEach(parseGroupedToken)\n } else if (token) {\n Object.keys(token).forEach((key) => {\n parseGroup(key, token[key])\n })\n }\n }\n}\n\n// A function to be called with an interpolation\n// to add dynamic rules\ntype Static = (interpolation: Token) => void\n\n// Template literal strings do not change\n// we can pre-calculate all groupings and static rules\n// which are later combined with the dynamic rules from interpolations\n//\n// For this to work we assume that interpolations do not\n// affect the current groupings:\n// Fast mode: tw`text(${'center'})`, tw`text-${'center'}`\n// Slow mode: tw`text-${'red'}-600`, tw`bg(${'red'}(600 700(hover:&))`, tw`${\"hover\"}:text-blue-600`,\nconst staticsCaches = new WeakMap<TemplateStringsArray, Static[]>()\n\nconst buildStatics = (strings: TemplateStringsArray): Static[] => {\n let statics = staticsCaches.get(strings)\n\n if (!statics) {\n // Index within strings from which on we use slow mode for parsing\n // these means collecting all strings and string interpolations\n // into `buffer` and parse it dynamicly\n let slowModeIndex = NaN\n\n // Used during slow mode to join consecutive strings\n let buffer = ''\n\n statics = strings.map((token, index) => {\n if (\n slowModeIndex !== slowModeIndex &&\n (token.slice(-1) == '[' || includes(':-(', (strings[index + 1] || '')[0]))\n ) {\n // If the the string after the upcoming interpolation\n // would start a grouping we switch to slow mode now\n slowModeIndex = index\n }\n\n // Slow mode\n if (index >= slowModeIndex) {\n return (interpolation) => {\n // If first => reset bufferd tokens\n if (index == slowModeIndex) {\n buffer = ''\n }\n\n buffer += token\n\n // Join consecutive strings and numbers\n if (includes('rg', (typeof interpolation)[5])) {\n buffer += interpolation\n } else if (interpolation) {\n parseString(buffer)\n buffer = ''\n parseToken(interpolation)\n }\n\n // If last => parse remaining buffered tokens\n if (index == strings.length - 1) {\n parseString(buffer)\n }\n }\n }\n\n // Fast mode\n // Reset rules to extract all static generated rules\n const staticRules = (rules = [])\n\n parseString(token)\n\n // Copy the active groupings to set them\n // before interpolation processing\n const activeGroupings = [...groupings]\n\n // Reset the rules\n rules = []\n\n return (interpolation) => {\n rules.push(...staticRules)\n groupings = [...activeGroupings]\n if (interpolation) {\n parseToken(interpolation)\n }\n }\n })\n\n staticsCaches.set(strings, statics)\n }\n\n return statics\n}\n\nexport const parse = (tokens: unknown[]): Rule[] => {\n groupings = []\n rules = []\n\n // Handles template literal strings\n if (\n Array.isArray(tokens[0] as TemplateStringsArray) &&\n Array.isArray((tokens[0] as TemplateStringsArray).raw)\n ) {\n buildStatics(tokens[0] as TemplateStringsArray).forEach((apply, index) =>\n apply(tokens[index + 1] as Token),\n )\n } else {\n parseToken(tokens as Token)\n }\n\n return rules\n}\n", "import type { Context, Directive, MaybeThunk } from '../types'\n\nimport { ensureMaxSize, evalThunk } from '../internal/util'\n\nlet isFunctionFree: boolean\nconst detectFunction = (key: string, value: unknown): unknown => {\n if (typeof value == 'function') {\n isFunctionFree = false\n }\n\n return value\n}\n\nconst stringify = (data: unknown): string | false => {\n isFunctionFree = true\n\n const key = JSON.stringify(data, detectFunction)\n\n return isFunctionFree && key\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst cacheByFactory = new WeakMap<\n (data: any, context: Context) => any,\n Map<string, Directive<any>>\n>()\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/**\n * Returns an optimized and cached function for use with `tw`.\n *\n * `tw` caches rules based on the function identity. This helper caches\n * the function based on the data.\n *\n * @param factory to use when the directive is invoked\n * @param data to use\n */\nexport const directive = <Data, T>(\n factory: (data: Data, context: Context) => MaybeThunk<T>,\n data: Data,\n): Directive<T> => {\n const key = stringify(data)\n\n let directive: Directive<T> | undefined\n\n if (key) {\n // eslint-disable-next-line no-var\n var cache = cacheByFactory.get(factory)\n\n if (!cache) {\n cacheByFactory.set(factory, (cache = new Map()))\n }\n\n directive = cache.get(key)\n }\n\n if (!directive) {\n directive = Object.defineProperty(\n (params: string[] | Context, context: Context): T => {\n context = Array.isArray(params) ? context : params\n return evalThunk(factory(data, context), context)\n },\n 'toJSON',\n {\n // Allow twind to generate a unique id for this directive\n // twind uses JSON.stringify which returns undefined for functions like this directive\n // providing a toJSON function allows to include this directive in the id generation\n value: () => key || data,\n },\n )\n\n if (cache) {\n cache.set(key as string, directive as Directive<T>)\n\n // Ensure the cache does not grow unlimited\n ensureMaxSize(cache, 10000)\n }\n }\n\n return directive as Directive<T>\n}\n", "import type { Token, Directive, CSSRules, Context } from '../types'\n\nimport { parse } from './parse'\nimport { directive } from './directive'\n\nexport interface Apply {\n (strings: TemplateStringsArray, ...interpolations: Token[]): Directive<CSSRules>\n\n (...tokens: Token[]): Directive<CSSRules>\n}\n\nconst applyFactory = (tokens: unknown[], { css }: Context) => css(parse(tokens))\n\nexport const apply: Apply = (...tokens: unknown[]): Directive<CSSRules> =>\n directive(applyFactory, tokens)\n", "/* eslint-disable @typescript-eslint/consistent-type-assertions */\nimport type { CSSRules } from '../types'\n\nimport { joinTruthy } from '../internal/util'\n\nconst positions = (resolve: (position: string) => undefined | string[] | void) => (\n value: string | string[] | undefined,\n position: string,\n prefix?: string,\n suffix?: string,\n): CSSRules | undefined => {\n if (value) {\n const properties = position && resolve(position)\n\n if (properties && properties.length > 0) {\n return properties.reduce((declarations, property) => {\n declarations[joinTruthy([prefix, property, suffix])] = value\n return declarations\n }, {} as CSSRules)\n }\n }\n}\n\nexport const corners = /*#__PURE__*/ positions(\n (key) =>\n (({\n t: ['top-left', 'top-right'],\n r: ['top-right', 'bottom-right'],\n b: ['bottom-left', 'bottom-right'],\n l: ['bottom-left', 'top-left'],\n tl: ['top-left'],\n tr: ['top-right'],\n bl: ['bottom-left'],\n br: ['bottom-right'],\n } as Record<string, undefined | string[]>)[key]),\n)\n\nexport const expandEdges = (key: string): string[] | undefined => {\n const parts = (({ x: 'lr', y: 'tb' } as Record<string, undefined | string>)[key] || key || '')\n .split('')\n .sort()\n\n for (let index = parts.length; index--; ) {\n if (\n !(parts[index] = ({\n t: 'top',\n r: 'right',\n b: 'bottom',\n l: 'left',\n } as Record<string, string>)[parts[index]])\n )\n return\n }\n\n if (parts.length) return parts\n}\n\n// Support several edges like 'tr'\n// 'x' and 'y' can not be combined with others because size 'xl'\n// Every char must be a edge position\n// Sort to have consistent declaration ordering\nexport const edges = /*#__PURE__*/ positions(expandEdges)\n/* eslint-enable @typescript-eslint/consistent-type-assertions */\n", "/* eslint-disable no-return-assign, no-cond-assign, @typescript-eslint/consistent-type-assertions */\nimport type {\n Theme,\n CSSRules,\n CSSProperties,\n Plugin,\n ThemeResolver,\n Context,\n Falsy,\n ThemeContainer,\n ThemeScreen,\n} from '../types'\n\nimport {\n includes,\n join,\n joinTruthy,\n tail,\n capitalize,\n hyphenate,\n buildMediaQuery,\n} from '../internal/util'\nimport { corners, expandEdges, edges } from './helpers'\n\ntype PluginHandler = (\n parameters: string[],\n context: Context,\n id: string,\n) => CSSRules | string | Falsy\n\n// Shared variables\nlet _: undefined | string | CSSRules | CSSProperties | string[] | boolean | Falsy | number\nlet __: undefined | string | CSSProperties\nlet $: undefined | string | number | ThemeScreen\n\nconst toColumnsOrRows = (x: string): 'columns' | 'rows' => (x == 'cols' ? 'columns' : 'rows')\n\nconst property = (property: string) => (\n params: string[],\n context: unknown,\n id: string,\n): CSSRules => ({\n [property]: id + ((_ = join(params)) && '-' + _),\n})\n\nconst propertyValue = (property?: string, separator?: string) => (\n params: string[],\n context?: Context,\n id?: string,\n): CSSRules | string =>\n (_ = join(params, separator)) && {\n [property || (id as string)]: _,\n }\n\nconst themeProperty = (section?: keyof Theme): PluginHandler => (params: string[], { theme }, id) =>\n (_ = theme(section || (id as keyof Theme), params) as string) && {\n [section || id]: _,\n }\n\nconst themePropertyFallback = (section?: keyof Theme, separator?: string): PluginHandler => (\n params: string[],\n { theme },\n id,\n) =>\n (_ = theme(section || (id as keyof Theme), params, join(params, separator)) as string) && {\n [section || id]: _,\n }\n\nconst alias = (handler: PluginHandler, name: string): PluginHandler => (params, context) =>\n handler(params, context, name)\n\nconst display = property('display')\nconst position = property('position')\nconst textTransform = property('textTransform')\nconst textDecoration = property('textDecoration')\nconst fontStyle = property('fontStyle')\nconst fontVariantNumeric = (key: string): PluginHandler => (params, context, id) => ({\n ['--tw-' + key]: id,\n fontVariantNumeric:\n 'var(--tw-ordinal,/*!*/ /*!*/) var(--tw-slashed-zero,/*!*/ /*!*/) var(--tw-numeric-figure,/*!*/ /*!*/) var(--tw-numeric-spacing,/*!*/ /*!*/) var(--tw-numeric-fraction,/*!*/ /*!*/)',\n})\n\nconst inset: PluginHandler = (params, { theme }, id) => (_ = theme('inset', params)) && { [id]: _ }\n\nconst opacityProperty = (\n params: string[],\n theme: ThemeResolver,\n id: string,\n section = id,\n): CSSRules | undefined =>\n (_ = theme((section + 'Opacity') as 'textOpacity', tail(params)) as undefined) && {\n [`--tw-${id}-opacity`]: _,\n }\n\nconst parseColorComponent = (chars: string, factor: number): number =>\n Math.round(parseInt(chars, 16) * factor)\n\nconst asRGBA = <T extends string | undefined>(\n color: T,\n opacityProperty: string,\n opacityDefault?: string,\n): T | string => {\n if (color && color[0] == '#' && (_ = (color.length - 1) / 3) && ($ = [17, 1, 0.062272][_ - 1])) {\n return `rgba(${parseColorComponent(color.substr(1, _), $)},${parseColorComponent(\n color.substr(1 + _, _),\n $,\n )},${parseColorComponent(color.substr(1 + 2 * _, _), $)},${\n opacityProperty\n ? `var(--tw-${opacityProperty}${opacityDefault ? ',' + opacityDefault : ''})`\n : opacityDefault || 1\n })`\n }\n\n return color\n}\n\nconst withOpacityFallback = (\n property: string,\n kind: string,\n color: string | undefined,\n): CSSRules | undefined =>\n color && typeof color == 'string'\n ? (_ = asRGBA(color, kind + '-opacity')) && _ !== color\n ? {\n [`--tw-${kind}-opacity`]: '1',\n [property]: [color, _],\n }\n : { [property]: color }\n : undefined\n\nconst transparentTo = (color: string) => (($ = asRGBA(color, '', '0')) == _ ? 'transparent' : $)\n\nconst reversableEdge = (\n params: string[],\n { theme }: Context,\n id: string,\n section: 'divideWidth' | 'space',\n prefix: string,\n suffix?: string,\n // eslint-disable-next-line max-params\n): CSSRules | undefined =>\n (_ = ({ x: ['right', 'left'], y: ['bottom', 'top'] } as Record<string, undefined | string[]>)[\n params[0]\n ]) && ($ = `--tw-${id}-${params[0]}-reverse`)\n ? params[1] == 'reverse'\n ? {\n [$]: '1',\n }\n : {\n [$]: '0',\n [joinTruthy([prefix, _[0], suffix])]:\n (__ = theme(section, tail(params))) && `calc(${__} * var(${$}))`,\n // With fallback\n [joinTruthy([prefix, _[1], suffix])]: __ && [__, `calc(${__} * calc(1 - var(${$})))`],\n }\n : undefined\n\nconst placeHelper = (property: string, params: string[]): CSSRules | string =>\n params[0] && {\n // 'auto'\n // 'start'\n // 'end'\n // 'center'\n // 'stretch'\n // 'between'\n // 'around'\n // 'evenly'\n // 'between', 'around', 'evenly' => space-$0\n // 4th char is unique\n [property]: (includes('wun', (params[0] || '')[3]) ? 'space-' : '') + params[0],\n }\n\nconst contentPluginFor = (property: string) => (params: string[]): CSSRules | string =>\n includes(['start', 'end'], params[0])\n ? { [property]: 'flex-' + params[0] }\n : placeHelper(property, params)\n\nconst gridPlugin = (kind: 'column' | 'row'): PluginHandler => (params, { theme }) => {\n if ((_ = theme(('grid' + capitalize(kind)) as 'gridRow', params, ''))) {\n return { ['grid-' + kind]: _ }\n }\n\n switch (params[0]) {\n case 'span':\n return (\n params[1] && {\n ['grid-' + kind]: `span ${params[1]} / span ${params[1]}`,\n }\n )\n case 'start':\n case 'end':\n return (\n (_ = theme(\n ('grid' + capitalize(kind) + capitalize(params[0])) as 'gridRowStart',\n tail(params),\n join(tail(params)),\n )) && {\n [`grid-${kind}-${params[0]}`]: _,\n }\n )\n }\n}\n\nconst border: PluginHandler = (params, { theme }, id): CSSRules | string | undefined => {\n switch (params[0]) {\n case 'solid':\n case 'dashed':\n case 'dotted':\n case 'double':\n case 'none':\n return propertyValue('borderStyle')(params)\n case 'collapse':\n case 'separate':\n return propertyValue('borderCollapse')(params)\n case 'opacity':\n return opacityProperty(params, theme, id)\n }\n\n return (_ = theme((id + 'Width') as 'borderWidth' | 'divideWidth', params, '' /* Optional */))\n ? { borderWidth: _ }\n : withOpacityFallback(\n 'borderColor',\n id,\n theme((id + 'Color') as 'borderColor' | 'divideColor', params) as string,\n )\n}\n\nconst transform = (gpu?: boolean): string =>\n (gpu\n ? 'translate3d(var(--tw-translate-x,0),var(--tw-translate-y,0),0)'\n : 'translateX(var(--tw-translate-x,0)) translateY(var(--tw-translate-y,0))') +\n ' rotate(var(--tw-rotate,0)) skewX(var(--tw-skew-x,0)) skewY(var(--tw-skew-y,0)) scaleX(var(--tw-scale-x,1)) scaleY(var(--tw-scale-y,1))'\n\n// .scale-0\t--scale-x: 0;\n// .scale-x-150\n// .scale-y-0\n// .translate-x-0\t--translate-x: 0;\n// .translate-x-1\t--translate-x: 0.25rem;\n// .translate-y-px\t--translate-y: 1px;\n// .translate-y-full\t--translate-y: 100%;\n// .translate-y-1/2\t--translate-y: 50%;\n// .skew-y-0\t--skew-y: 0;\n// .skew-y-1\t--skew-y: 1deg;\nconst transformXYFunction: PluginHandler = (params, context, id) =>\n params[0] &&\n (_ = context.theme(id as 'scale' | 'skew' | 'translate', params[1] || params[0])) && {\n [`--tw-${id}-x`]: params[0] !== 'y' && _,\n [`--tw-${id}-y`]: params[0] !== 'x' && _,\n transform: [`${id}${params[1] ? params[0].toUpperCase() : ''}(${_})`, transform()],\n }\n\nconst edgesPluginFor = (key: 'margin' | 'padding'): PluginHandler => (params, context, id) =>\n id[1] ? edges(context.theme(key, params), id[1], key) : themeProperty(key)(params, context, id)\n\n// For p-*, px-*, pt-*\nconst padding = edgesPluginFor('padding')\n\n// For m-*, mx-*, mt-*\nconst margin = edgesPluginFor('margin')\n\n// 'min-w-full' -> minWidth\n// 'max-h-0.5' -> maxHeight\nconst minMax: PluginHandler = (params, { theme }, id) =>\n (_ = ({ w: 'width', h: 'height' } as Record<string, undefined | string>)[params[0]]) && {\n [(_ = `${id}${capitalize(_)}`)]: theme(\n _ as 'minWidth' | 'minHeight' | 'maxWidth' | 'maxHeight',\n tail(params),\n ),\n }\n\nconst filter: Plugin = (params, { theme }, id) => {\n const parts = id.split('-')\n const prefix = parts[0] == 'backdrop' ? parts[0] + '-' : ''\n if (!prefix) {\n params.unshift(...parts)\n }\n\n if (params[0] == 'filter') {\n const filters = [\n 'blur',\n 'brightness',\n 'contrast',\n 'grayscale',\n 'hue-rotate',\n 'invert',\n prefix && 'opacity',\n 'saturate',\n 'sepia',\n !prefix && 'drop-shadow',\n ].filter(Boolean)\n\n return params[1] == 'none'\n ? { [prefix + 'filter']: 'none' }\n : filters.reduce(\n (css, key) => {\n css['--tw-' + prefix + key] = 'var(--tw-empty,/*!*/ /*!*/)'\n return css\n },\n {\n [prefix + 'filter']: filters.map((key) => `var(--tw-${prefix}${key})`).join(' '),\n } as CSSRules,\n )\n }\n\n $ = params.shift()\n // hue-rotate, drop-shadow\n if (includes(['hue', 'drop'], $)) $ += capitalize(params.shift() as string)\n\n return (\n (_ = theme((prefix ? 'backdrop' + capitalize($ as string) : $) as 'blur', params)) && {\n ['--tw-' + prefix + $]: (Array.isArray(_) ? (_ as string[]) : [_])\n .map((_) => `${hyphenate($ as string)}(${_})`)\n .join(' '),\n }\n )\n}\n\nexport const corePlugins: Record<string, Plugin | undefined> = {\n group: (params, { tag }, id) => tag(join([id, ...params])),\n\n hidden: alias(display, 'none'),\n inline: display,\n block: display,\n contents: display,\n flow: display,\n\n table: (params, context, id) =>\n includes(['auto', 'fixed'], params[0])\n ? { tableLayout: params[0] }\n : display(params, context, id),\n\n flex(params, context, id) {\n switch (params[0]) {\n case 'row':\n case 'col':\n return {\n flexDirection: join(params[0] == 'col' ? ['column', ...tail(params)] : params),\n }\n case 'nowrap':\n case 'wrap':\n return { flexWrap: join(params) }\n case 'grow':\n case 'shrink':\n _ = context.theme(\n ('flex' + capitalize(params[0])) as 'flexGrow',\n tail(params),\n (params[1] || 1) as number,\n )\n\n return (\n _ != null && {\n ['flex-' + params[0]]: '' + _,\n }\n )\n }\n\n return (_ = context.theme('flex', params, '' /* Optional */))\n ? { flex: _ }\n : display(params, context, id)\n },\n\n grid(params, context, id) {\n switch (params[0]) {\n case 'cols':\n case 'rows':\n return (\n (_ = context.theme(\n ('gridTemplate' + capitalize(toColumnsOrRows(params[0]))) as 'gridTemplateRows',\n tail(params),\n params.length == 2 && Number(params[1])\n ? `repeat(${params[1]},minmax(0,1fr))`\n : join(tail(params)),\n )) && {\n ['gridTemplate-' + toColumnsOrRows(params[0])]: _,\n }\n )\n\n case 'flow':\n return (\n params.length > 1 && {\n gridAutoFlow: join(\n params[1] == 'col' ? ['column', ...tail(params, 2)] : tail(params),\n ' ',\n ),\n }\n )\n }\n\n return display(params, context, id)\n },\n\n auto: (params, { theme }) =>\n includes(['cols', 'rows'], params[0]) &&\n (_ = theme(\n ('gridAuto' + capitalize(toColumnsOrRows(params[0]))) as 'gridAutoRows' | 'gridAutoColumns',\n tail(params),\n join(tail(params)),\n )) && {\n ['gridAuto-' + toColumnsOrRows(params[0])]: _,\n },\n\n static: position,\n fixed: position,\n absolute: position,\n relative: position,\n sticky: position,\n\n visible: { visibility: 'visible' },\n invisible: { visibility: 'hidden' },\n\n antialiased: {\n WebkitFontSmoothing: 'antialiased',\n MozOsxFontSmoothing: 'grayscale',\n },\n\n 'subpixel-antialiased': {\n WebkitFontSmoothing: 'auto',\n MozOsxFontSmoothing: 'auto',\n },\n\n truncate: {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n\n 'sr-only': {\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: '0',\n margin: '-1px',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n clip: 'rect(0,0,0,0)',\n borderWidth: '0',\n },\n\n 'not-sr-only': {\n position: 'static',\n width: 'auto',\n height: 'auto',\n padding: '0',\n margin: '0',\n overflow: 'visible',\n whiteSpace: 'normal',\n clip: 'auto',\n },\n\n resize: (params) => ({\n resize:\n ({ x: 'horizontal', y: 'vertical' } as Record<string, string | undefined>)[params[0]] ||\n params[0] ||\n 'both',\n }),\n\n box: (params) => params[0] && { boxSizing: params[0] + '-box' },\n\n // .appearance-none -> appearance: none;\n // .appearance-auto -> appearance: auto;\n // .appearance-menulist-button; -> appearance: menulist-button;\n // .appearance-textfield -> appearance: textfield;\n appearance: propertyValue(),\n cursor: themePropertyFallback(),\n\n float: propertyValue(),\n clear: propertyValue(),\n decoration: propertyValue('boxDecorationBreak'),\n\n isolate: { isolation: 'isolate' },\n isolation: propertyValue(),\n\n 'mix-blend': propertyValue('mixBlendMode'),\n\n top: inset,\n right: inset,\n bottom: inset,\n left: inset,\n\n // 'inset-0'\n // 'inset-1.5'\n // 'inset-x-1.5'\n inset: (params, { theme }) =>\n (_ = expandEdges(params[0]))\n ? edges(theme('inset', tail(params)), params[0])\n : (_ = theme('inset', params)) && {\n top: _,\n right: _,\n bottom: _,\n left: _,\n },\n\n underline: textDecoration,\n 'line-through': textDecoration,\n 'no-underline': alias(textDecoration, 'none'),\n\n 'text-underline': alias(textDecoration, 'underline'),\n 'text-no-underline': alias(textDecoration, 'none'),\n 'text-line-through': alias(textDecoration, 'line-through'),\n\n uppercase: textTransform,\n lowercase: textTransform,\n capitalize: textTransform,\n\n 'normal-case': alias(textTransform, 'none'),\n 'text-normal-case': alias(textTransform, 'none'),\n\n italic: fontStyle,\n 'not-italic': alias(fontStyle, 'normal'),\n\n 'font-italic': alias(fontStyle, 'italic'),\n 'font-not-italic': alias(fontStyle, 'normal'),\n\n font: (params, context, id) =>\n (_ = context.theme('fontFamily', params, '' /* Optional */))\n ? { fontFamily: _ }\n : themeProperty('fontWeight')(params, context, id),\n\n items: (params) =>\n params[0] && {\n alignItems: includes(['start', 'end'], params[0]) ? 'flex-' + params[0] : join(params),\n },\n\n 'justify-self': propertyValue(),\n 'justify-items': propertyValue(),\n justify: contentPluginFor('justifyContent'),\n content: contentPluginFor('alignContent'),\n self: contentPluginFor('alignSelf'),\n\n place: (params) => params[0] && placeHelper('place-' + params[0], tail(params)),\n\n overscroll: (params) =>\n params[0] && {\n ['overscrollBehavior' + (params[1] ? '-' + params[0] : '')]: params[1] || params[0],\n },\n\n col: gridPlugin('column'),\n row: gridPlugin('row'),\n\n // .duration-75\ttransition-duration: 75ms;\n // .duration-75\ttransition-duration: 75ms;\n duration: themeProperty('transitionDuration'),\n\n // .delay-75\ttransition-delay: 75ms;\n // .delay-100\ttransition-delay: 100ms;\n delay: themeProperty('transitionDelay'),\n\n tracking: themeProperty('letterSpacing'),\n\n // .leading-10\tline-height: 2.5rem;\n // .leading-none\tline-height: 1;\n // .leading-tight\tline-height: 1.25;\n leading: themeProperty('lineHeight'),\n\n // .z-50\tz-index: 50;\n // .z-auto\tz-index: auto;\n z: themeProperty('zIndex'),\n\n opacity: themeProperty(),\n\n ease: themeProperty('transitionTimingFunction'),\n\n p: padding,\n py: padding,\n px: padding,\n pt: padding,\n pr: padding,\n pb: padding,\n pl: padding,\n\n m: margin,\n my: margin,\n mx: margin,\n mt: margin,\n mr: margin,\n mb: margin,\n ml: margin,\n\n // .w-64\twidth: 16rem;\n // .w-auto\twidth: auto;\n // .w-px\twidth: 1px;\n // .w-1/2\twidth: 50%;\n // .w-full\twidth: 100%;\n // .w-screen\twidth: 100vw;\n w: themeProperty('width'),\n h: themeProperty('height'),\n\n min: minMax,\n max: minMax,\n\n fill: themeProperty(),\n\n order: themeProperty(),\n\n origin: themePropertyFallback('transformOrigin', ' '),\n\n select: propertyValue('userSelect'),\n\n 'pointer-events': propertyValue(),\n\n align: propertyValue('verticalAlign'),\n\n whitespace: propertyValue('whiteSpace'),\n\n 'normal-nums': { fontVariantNumeric: 'normal' },\n ordinal: fontVariantNumeric('ordinal'),\n 'slashed-zero': fontVariantNumeric('slashed-zero'),\n 'lining-nums': fontVariantNumeric('numeric-figure'),\n 'oldstyle-nums': fontVariantNumeric('numeric-figure'),\n 'proportional-nums': fontVariantNumeric('numeric-spacing'),\n 'tabular-nums': fontVariantNumeric('numeric-spacing'),\n 'diagonal-fractions': fontVariantNumeric('numeric-fraction'),\n 'stacked-fractions': fontVariantNumeric('numeric-fraction'),\n\n // 'overflow-visible'\n // 'overflow-x-hidden'\n overflow: (params, context, id) =>\n includes(['ellipsis', 'clip'], params[0])\n ? propertyValue('textOverflow')(params)\n : params[1]\n ? { ['overflow-' + params[0]]: params[1] }\n : propertyValue()(params, context, id),\n\n transform: (params) =>\n params[0] == 'none'\n ? { transform: 'none' }\n : {\n '--tw-translate-x': '0',\n '--tw-translate-y': '0',\n '--tw-rotate': '0',\n '--tw-skew-x': '0',\n '--tw-skew-y': '0',\n '--tw-scale-x': '1',\n '--tw-scale-y': '1',\n transform: transform(params[0] == 'gpu'),\n },\n\n // .rotate-0\t--transform-rotate: 0;\n // .rotate-1\t--transform-rotate: 1deg;\n rotate: (params, { theme }) =>\n (_ = theme('rotate', params)) && {\n '--tw-rotate': _,\n transform: [`rotate(${_})`, transform()],\n },\n\n scale: transformXYFunction,\n translate: transformXYFunction,\n skew: transformXYFunction,\n\n // .gap-0\tgap: 0;\n // .gap-1\tgap: 0.25rem;\n // .gap-px\tgap: 1px;\n // .gap-x-0\tcolumn-gap: 0;\n // .gap-x-1\tcolumn-gap: 0.25rem;\n gap: (params, context, id) =>\n (_ = ({ x: 'column', y: 'row' } as Record<string, string | undefined>)[params[0]])\n ? { [_ + 'Gap']: context.theme('gap', tail(params)) }\n : themeProperty('gap')(params, context, id),\n\n // .stroke-current\tstroke: currentColor;\n // stroke-0\tstroke-width: 0;\n // .stroke-1\tstroke-width: 1;\n stroke: (params, context, id) =>\n (_ = context.theme('stroke', params, '' /* Optional */))\n ? { stroke: _ }\n : themeProperty('strokeWidth')(params, context, id),\n\n // .outline-none\toutline: 2px solid transparent; outline-offset: 2px;\n // .outline-white\toutline: 2px dotted white; outline-offset: 2px;\n outline: (params, { theme }) =>\n (_ = theme('outline', params)) && {\n outline: _[0],\n outlineOffset: _[1],\n },\n\n 'break-normal': {\n wordBreak: 'normal',\n overflowWrap: 'normal',\n },\n 'break-words': { overflowWrap: 'break-word' },\n 'break-all': { wordBreak: 'break-all' },\n\n text(params, { theme }, id) {\n switch (params[0]) {\n case 'left':\n case 'center':\n case 'right':\n case 'justify':\n return { textAlign: params[0] }\n case 'uppercase':\n case 'lowercase':\n case 'capitalize':\n return textTransform([], _, params[0])\n case 'opacity':\n return opacityProperty(params, theme, id)\n }\n\n const fontSize = theme('fontSize', params, '' /* Optional */)\n\n if (fontSize) {\n return typeof fontSize == 'string'\n ? { fontSize }\n : {\n fontSize: fontSize[0],\n ...(typeof fontSize[1] == 'string' ? { lineHeight: fontSize[1] } : fontSize[1]),\n }\n }\n\n return withOpacityFallback('color', 'text', theme('textColor', params) as string)\n },\n\n // eslint-disable-next-line complexity\n bg(params, { theme }, id) {\n switch (params[0]) {\n case 'fixed':\n case 'local':\n case 'scroll':\n return propertyValue('backgroundAttachment', ',')(params)\n\n case 'bottom':\n case 'center':\n case 'left':\n case 'right':\n case 'top':\n return propertyValue('backgroundPosition', ' ')(params)\n\n case 'no':\n return params[1] == 'repeat' && propertyValue('backgroundRepeat')(params)\n\n case 'repeat':\n return includes('xy', params[1])\n ? propertyValue('backgroundRepeat')(params)\n : { backgroundRepeat: params[1] || params[0] }\n\n case 'opacity':\n return opacityProperty(params, theme, id, 'background')\n\n case 'clip':\n case 'origin':\n return (\n params[1] && {\n ['background-' + params[0]]: params[1] + (params[1] == 'text' ? '' : '-box'),\n }\n )\n\n case 'blend':\n return propertyValue('background-blend-mode')(tail(params))\n\n // .bg-gradient-to-r => linear-gradient(to right, ...)\n // .bg-gradient-to-r => linear-gradient(to right, ...)\n case 'gradient':\n if (params[1] == 'to' && (_ = expandEdges(params[2]))) {\n return {\n backgroundImage: `linear-gradient(to ${join(_, ' ')},var(--tw-gradient-stops))`,\n }\n }\n }\n\n return (_ = theme('backgroundPosition', params, '' /* Optional */))\n ? { backgroundPosition: _ }\n : (_ = theme('backgroundSize', params, '' /* Optional */))\n ? { backgroundSize: _ }\n : (_ = theme('backgroundImage', params, '' /* Optional */))\n ? { backgroundImage: _ }\n : withOpacityFallback('backgroundColor', 'bg', theme('backgroundColor', params) as string)\n },\n\n // .from-purple-400\n from: (params, { theme }) =>\n (_ = theme('gradientColorStops', params)) && {\n '--tw-gradient-from': _,\n '--tw-gradient-stops': `var(--tw-gradient-from),var(--tw-gradient-to,${transparentTo(\n _ as string,\n )})`,\n },\n\n // .via-pink-500\n via: (params, { theme }) =>\n (_ = theme('gradientColorStops', params)) && {\n '--tw-gradient-stops': `var(--tw-gradient-from),${_},var(--tw-gradient-to,${transparentTo(\n _ as string,\n )})`,\n },\n\n // .to-red-500\n to: (params, { theme }) =>\n (_ = theme('gradientColorStops', params)) && {\n '--tw-gradient-to': _ as string,\n },\n\n // .border\tborder-width: 1px;\n // .border-0\tborder-width: 0;\n // .border-2\tborder-width: 2px;\n // .border\tborder-width: 1px;\n // .border-t\tborder-top-width: 1px;\n // .border-t-0\tborder-top-width: 0px;\n // .border-t-xs\n border: (params, context, id) =>\n expandEdges(params[0])\n ? edges(context.theme('borderWidth', tail(params)), params[0], 'border', 'width')\n : border(params, context, id),\n\n // .divide-x\n // .divide-x-8\n divide: (params, context, id) =>\n (_ =\n reversableEdge(params, context, id, 'divideWidth', 'border', 'width') ||\n border(params, context, id)) && {\n '&>:not([hidden])~:not([hidden])': _ as CSSRules,\n },\n\n space: (params, context, id) =>\n (_ = reversableEdge(params, context, id, 'space', 'margin')) && {\n '&>:not([hidden])~:not([hidden])': _,\n },\n\n placeholder: (params, { theme }, id) =>\n (_ =\n params[0] == 'opacity'\n ? opacityProperty(params, theme, id)\n : withOpacityFallback(\n 'color',\n 'placeholder',\n theme('placeholderColor', params) as string,\n )) && {\n '&::placeholder': _,\n },\n\n // .shadow\tbox-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n // .shadow-md\tbox-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n // .shadow-none\tbox-shadow: none;\n shadow: (params, { theme }) =>\n (_ = theme('boxShadow', params)) && {\n ':global': {\n '*': {\n '--tw-shadow': '0 0 transparent',\n },\n },\n '--tw-shadow': _ == 'none' ? '0 0 transparent' : _,\n // Fallback first, then modern with ring-* support\n boxShadow: [\n _,\n `var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)`,\n ],\n },\n\n animate: (params, { theme, tag }) => {\n if (($ = theme('animation', params))) {\n // Try to auto inject keyframes\n const parts = $.split(' ')\n\n // Try to find a keyframe defintion in the theme using the first part\n // Provide a default (__ = {}) and check if that is returned\n if ((_ = theme('keyframes', parts[0], (__ = {}))) !== __) {\n // Use a hashed named for the keyframes\n return (\n ($ = tag(parts[0])) && {\n animation: $ + ' ' + join(tail(parts), ' '),\n ['@keyframes ' + $]: _,\n }\n )\n }\n\n return { animation: $ }\n }\n },\n\n // From theme.ringWidth\n // .ring\n // .ring-0\n // .ring-inset\n //\n // From theme.colors\n // .ring-current\n // .ring-transparent\n // .ring-gray-100\n //\n // From theme.opacity\n // .ring-opacity-50\n //\n // From theme.ringOffsetWidth\n // .ring-offset -> 2px\n // .ring-offset-8 -> 8px\n ring(params, { theme }, id) {\n switch (params[0]) {\n case 'inset':\n return { '--tw-ring-inset': 'inset' }\n\n case 'opacity':\n return opacityProperty(params, theme, id)\n\n case 'offset':\n // Either width or color\n return (_ = theme('ringOffsetWidth', tail(params), '' /* Optional */))\n ? {\n '--tw-ring-offset-width': _,\n }\n : {\n '--tw-ring-offset-color': theme('ringOffsetColor', tail(params)),\n }\n }\n\n // Either width or color\n return (_ = theme('ringWidth', params, '' /* Optional */))\n ? {\n // A width\n '--tw-ring-offset-shadow': `var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)`,\n '--tw-ring-shadow': `var(--tw-ring-inset) 0 0 0 calc(${_} + var(--tw-ring-offset-width)) var(--tw-ring-color)`,\n boxShadow: `var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)`,\n\n ':global': {\n '*': {\n '--tw-ring-inset': 'var(--tw-empty,/*!*/ /*!*/)',\n '--tw-ring-offset-width': theme('ringOffsetWidth', '', '0px'),\n '--tw-ring-offset-color': theme('ringOffsetColor', '', '#fff'),\n '--tw-ring-color': asRGBA(\n theme('ringColor', '', '#93c5fd') as string,\n 'ring-opacity',\n theme('ringOpacity', '', '0.5'),\n ),\n '--tw-ring-offset-shadow': '0 0 transparent',\n '--tw-ring-shadow': '0 0 transparent',\n },\n },\n }\n : {\n // A color\n '--tw-ring-opacity': '1',\n '--tw-ring-color': asRGBA(theme('ringColor', params) as string, 'ring-opacity'),\n }\n },\n\n object: (params, context, id) =>\n includes(['contain', 'cover', 'fill', 'none', 'scale-down'], join(params))\n ? { objectFit: join(params) }\n : themePropertyFallback('objectPosition', ' ')(params, context, id),\n\n list: (params, context, id) =>\n join(params) == 'item'\n ? display(params, context, id)\n : includes(['inside', 'outside'], join(params))\n ? { listStylePosition: params[0] }\n : themePropertyFallback('listStyleType')(params, context, id),\n\n // .rounded\tborder-radius: 0.25rem;\n // .rounded-5\tborder-radius: 5px;\n // .rounded-md\tborder-radius: 0.375rem;\n // .rounded-lg\tborder-radius: 0.5rem;\n // .rounded-xl\tborder-radius: 0.75rem;\n // .rounded-2xl\tborder-radius: 1rem;\n // .rounded-3xl\tborder-radius: 1.5rem;\n // .rounded-full\tborder-radius: 9999px;\n // .rounded-t-none\tborder-top-left-radius: 0px; border-top-right-radius: 0px;\n // .rounded-t-4\tborder-radius: 4px;\n rounded: (params, context, id) =>\n corners(\n context.theme('borderRadius', tail(params), '' /* Optional */),\n params[0],\n 'border',\n 'radius',\n ) || themeProperty('borderRadius')(params, context, id),\n\n 'transition-none': { transitionProperty: 'none' },\n\n transition: (params, { theme }) => ({\n transitionProperty: theme('transitionProperty', params),\n transitionTimingFunction: theme('transitionTimingFunction', ''),\n transitionDuration: theme('transitionDuration', ''),\n }),\n\n container: (params, { theme }) => {\n const { screens = theme('screens'), center, padding } = theme('container') as ThemeContainer\n\n const paddingFor = (screen: string): CSSRules =>\n (_ = padding && (typeof padding == 'string' ? padding : padding[screen] || padding.DEFAULT))\n ? {\n paddingRight: _,\n paddingLeft: _,\n }\n : {}\n\n return Object.keys(screens).reduce(\n (rules, screen) => {\n if (($ = screens[screen]) && typeof $ == 'string') {\n rules[buildMediaQuery($)] = {\n '&': {\n 'max-width': $,\n ...paddingFor(screen),\n },\n }\n }\n\n return rules\n },\n {\n width: '100%',\n ...(center ? { marginRight: 'auto', marginLeft: 'auto' } : {}),\n ...paddingFor('xs'),\n } as CSSRules,\n )\n },\n\n filter,\n blur: filter,\n brightness: filter,\n contrast: filter,\n grayscale: filter,\n 'hue-rotate': filter,\n invert: filter,\n saturate: filter,\n sepia: filter,\n 'drop-shadow': filter,\n backdrop: filter,\n}\n\n/* eslint-enable no-return-assign, no-cond-assign, @typescript-eslint/consistent-type-assertions */\n", "// Source: https://github.com/sindresorhus/modern-normalize/blob/master/modern-normalize.css\n// License: MIT\n\n// Source: https://github.com/tailwindlabs/tailwindcss/blob/master/src/plugins/css/preflight.css\n// License: MIT\n\nimport type { CSSRules, ThemeResolver } from '../types'\n\n/**\n * Manually forked from SUIT CSS Base: https://github.com/suitcss/base\n * A thin layer on top of normalize.css that provides a starting point more\n * suitable for web applications.\n */\nexport const createPreflight = (theme: ThemeResolver): CSSRules => ({\n /**\n * Use a more readable tab size (opinionated).\n */\n ':root': { tabSize: 4 },\n\n /**\n * Removes the default spacing and border for appropriate elements.\n */\n 'body,blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre,fieldset,ol,ul': { margin: '0' },\n\n button: { backgroundColor: 'transparent', backgroundImage: 'none' },\n\n /**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n 'button,[type=\"button\"],[type=\"reset\"],[type=\"submit\"]': { WebkitAppearance: 'button' },\n\n /**\n * Work around a Firefox/IE bug where the transparent `button` background\n * results in a loss of the default `button` focus styles.\n */\n 'button:focus': { outline: ['1px dotted', '5px auto -webkit-focus-ring-color'] },\n\n /**\n * Remove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.\n */\n 'fieldset,ol,ul,legend': { padding: '0' },\n\n 'ol,ul': { listStyle: 'none' },\n\n /**\n * 1. Use Tailwind's default \"normal\" line-height so the user isn't forced\n * to override it to ensure consistency even when using the default theme.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n * 3. Use the user's configured `sans` font-family (with Tailwind's default\n * sans-serif font stack as a fallback) as a sane default.\n */\n html: {\n lineHeight: '1.5',\n WebkitTextSizeAdjust: '100%',\n fontFamily: theme('fontFamily.sans', 'ui-sans-serif,system-ui,sans-serif'),\n },\n\n /**\n * 1. Remove the margin in all browsers.\n * 2. Inherit font-family and line-height from `html` so users can set them as\n * a class directly on the `html` element.\n */\n body: { fontFamily: 'inherit', lineHeight: 'inherit' },\n\n /**\n * 1. Prevent padding and border from affecting element width.\n *\n * We used to set this in the html element and inherit from\n * the parent element for everything else. This caused issues\n * in shadow-dom-enhanced elements like <details> where the content\n * is wrapped by a div with box-sizing set to `content-box`.\n *\n * https://github.com/mozdevs/cssremedy/issues/4\n *\n *\n * 2. Allow adding a border to an element by just adding a border-width.\n *\n * By default, the way the browser specifies that an element should have no\n * border is by setting it's border-style to `none` in the user-agent\n * stylesheet.\n *\n * In order to easily add borders to elements by just setting the `border-width`\n * property, we change the default border-style for all elements to `solid`, and\n * use border-width to hide them instead. This way our `border` utilities only\n * need to set the `border-width` property instead of the entire `border`\n * shorthand, making our border utilities much more straightforward to compose.\n *\n * https://github.com/tailwindcss/tailwindcss/pull/116\n */\n '*,::before,::after': {\n boxSizing: 'border-box',\n border: `0 solid ${theme('borderColor.DEFAULT', 'currentColor')}`,\n },\n\n /*\n * 1. Add the correct height in Firefox.\n * 2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n * 3. Ensure horizontal rules are visible by default\n */\n hr: { height: '0', color: 'inherit', borderTopWidth: '1px' },\n\n /**\n * Undo the `border-style: none` reset that Normalize applies to images so that\n * our `border-<width>` utilities have the expected effect.\n *\n * The Normalize reset is unnecessary for us since we default the border-width\n * to 0 on all elements.\n *\n * https://github.com/tailwindcss/tailwindcss/issues/362\n */\n img: { borderStyle: 'solid' },\n\n textarea: { resize: 'vertical' },\n\n 'input::placeholder,textarea::placeholder': {\n opacity: '1',\n color: theme('placeholderColor.DEFAULT', theme('colors.gray.400', '#a1a1aa')),\n },\n\n 'button,[role=\"button\"]': { cursor: 'pointer' },\n\n /**\n * 1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n * 2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n */\n table: { textIndent: '0', borderColor: 'inherit', borderCollapse: 'collapse' },\n\n 'h1,h2,h3,h4,h5,h6': { fontSize: 'inherit', fontWeight: 'inherit' },\n\n /**\n * Reset links to optimize for opt-in styling instead of\n * opt-out.\n */\n a: { color: 'inherit', textDecoration: 'inherit' },\n\n /**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n * Reset form element properties that are easy to forget to\n * style explicitly so you don't inadvertently introduce\n * styles that deviate from your design system. These styles\n * supplement a partial reset that is already applied by\n * normalize.css.\n */\n 'button,input,optgroup,select,textarea': {\n fontFamily: 'inherit',\n fontSize: '100%',\n margin: '0',\n padding: '0',\n lineHeight: 'inherit',\n color: 'inherit',\n },\n\n /**\n * Remove the inheritance of text transform in Edge and Firefox.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n 'button,select': { textTransform: 'none' },\n\n /**\n * Remove the inner border and padding in Firefox.\n */\n '::-moz-focus-inner': { borderStyle: 'none', padding: '0' },\n\n /**\n * Restore the focus styles unset by the previous rule.\n */\n ':-moz-focusring': { outline: '1px dotted ButtonText' },\n\n /**\n * Remove the additional ':invalid' styles in Firefox.\n * See: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737\n */\n ':-moz-ui-invalid': { boxShadow: 'none' },\n\n /**\n * Add the correct vertical alignment in Chrome and Firefox.\n */\n progress: { verticalAlign: 'baseline' },\n\n /**\n * Correct the cursor style of increment and decrement buttons in Safari.\n */\n '::-webkit-inner-spin-button,::-webkit-outer-spin-button': { height: 'auto' },\n\n /**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n '[type=\"search\"]': { WebkitAppearance: 'textfield', outlineOffset: '-2px' },\n\n /**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n '::-webkit-search-decoration': { WebkitAppearance: 'none' },\n\n /**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to 'inherit' in Safari.\n */\n '::-webkit-file-upload-button': { WebkitAppearance: 'button', font: 'inherit' },\n\n /*\n * Add the correct display in Chrome and Safari.\n */\n summary: { display: 'list-item' },\n\n /**\n * Add the correct text decoration in Chrome, Edge, and Safari.\n */\n 'abbr[title]': { textDecoration: 'underline dotted' },\n\n /**\n * Add the correct font weight in Edge and Safari.\n */\n 'b,strong': { fontWeight: 'bolder' },\n\n /**\n * 1. Use the configured 'mono' font family for elements that\n * are expected to be rendered with a monospace font, falling\n * back to the system monospace stack if there is no configured\n * 'mono' font family.\n * 2. Correct the odd 'em' font sizing in all browsers.\n */\n 'pre,code,kbd,samp': {\n fontFamily: theme('fontFamily', 'mono', 'ui-monospace,monospace'),\n fontSize: '1em',\n },\n\n /**\n * Prevent 'sub' and 'sup' elements from affecting the line height in all browsers.\n */\n 'sub,sup': { fontSize: '75%', lineHeight: '0', position: 'relative', verticalAlign: 'baseline' },\n\n sub: { bottom: '-0.25em' },\n\n sup: { top: '-0.5em' },\n\n /**\n * Make replaced elements `display: block` by default as that's\n * the behavior you want almost all of the time. Inspired by\n * CSS Remedy, with `svg` added as well.\n *\n * https://github.com/mozdevs/cssremedy/issues/14\n */\n 'img,svg,video,canvas,audio,iframe,embed,object': { display: 'block', verticalAlign: 'middle' },\n\n /**\n * Constrain images and videos to the parent width and preserve\n * their instrinsic aspect ratio.\n *\n * https://github.com/mozdevs/cssremedy/issues/14\n */\n 'img,video': { maxWidth: '100%', height: 'auto' },\n})\n", "export const coreVariants: Record<string, string> = {\n dark: '@media (prefers-color-scheme:dark)',\n sticky: '@supports ((position: -webkit-sticky) or (position:sticky))',\n 'motion-reduce': '@media (prefers-reduced-motion:reduce)',\n 'motion-safe': '@media (prefers-reduced-motion:no-preference)',\n first: '&:first-child',\n last: '&:last-child',\n even: '&:nth-child(2n)',\n odd: '&:nth-child(odd)',\n children: '&>*',\n siblings: '&~*',\n sibling: '&+*',\n override: '&&',\n}\n", "export const STYLE_ELEMENT_ID = '__twind' as const\n\ndeclare global {\n interface Window {\n [STYLE_ELEMENT_ID]?: HTMLStyleElement\n }\n}\n\nexport const getStyleElement = (nonce?: string): HTMLStyleElement => {\n // Hydrate existing style element if available\n // self[id] - every element with an id is available through the global object\n // eslint-disable-next-line no-restricted-globals\n let element = self[STYLE_ELEMENT_ID]\n\n if (!element) {\n // Create a new one otherwise\n element = document.head.appendChild(document.createElement('style'))\n\n element.id = STYLE_ELEMENT_ID\n nonce && (element.nonce = nonce)\n\n // Avoid Edge bug where empty style elements doesn't create sheets\n element.appendChild(document.createTextNode(''))\n }\n\n return element\n}\n", "// Based on https://github.com/kripod/otion/blob/main/packages/otion/src/injectors.ts\n// License MIT\nimport type { SheetConfig, Sheet } from '../types'\nimport { noop } from '../internal/util'\nimport { getStyleElement } from '../internal/dom'\n\n/**\n * Creates an sheet which inserts style rules through the CSS Object Model.\n */\nexport const cssomSheet = ({\n nonce,\n target = getStyleElement(nonce).sheet as CSSStyleSheet,\n}: SheetConfig<CSSStyleSheet> = {}): Sheet<CSSStyleSheet> => {\n const offset = target.cssRules.length\n\n return {\n target,\n insert: (rule, index) => target.insertRule(rule, offset + index),\n }\n}\n\n/**\n * An sheet placeholder which performs no operations. Useful for avoiding errors in a non-browser environment.\n */\nexport const voidSheet = (): Sheet<null> => ({\n target: null,\n insert: noop,\n})\n", "import type { Mode } from '../types'\n\nimport { join, noop } from '../internal/util'\n\nexport const mode = (report: (message: string) => void): Mode => ({\n unknown(section, key = [], optional, context) {\n if (!optional) {\n // TODO hint about possible values, did you mean ...\n this.report({ id: 'UNKNOWN_THEME_VALUE', key: section + '.' + join(key) }, context)\n }\n },\n\n report({ id, ...info }) {\n return report(`[${id}] ${JSON.stringify(info)}`)\n },\n})\n\nexport const warn = /*#__PURE__*/ mode((message) => console.warn(message))\n\nexport const strict = /*#__PURE__*/ mode((message) => {\n throw new Error(message)\n})\n\nexport const silent = /*#__PURE__*/ mode(noop)\n", "import type { Prefixer } from '../types'\n\nimport { cssPropertyAlias, cssPropertyPrefixFlags, cssValuePrefixFlags } from 'style-vendorizer'\n\nexport const noprefix: Prefixer = (property: string, value: string, important?: boolean): string =>\n `${property}:${value}${important ? ' !important' : ''}`\n\nexport const autoprefix: Prefixer = (\n property: string,\n value: string,\n important?: boolean,\n): string => {\n let cssText = ''\n\n // Resolve aliases, e.g. `gap` -> `grid-gap`\n const propertyAlias = cssPropertyAlias(property)\n if (propertyAlias) cssText += `${noprefix(propertyAlias, value, important)};`\n\n // Prefix properties, e.g. `backdrop-filter` -> `-webkit-backdrop-filter`\n let flags = cssPropertyPrefixFlags(property)\n if (flags & 0b001) cssText += `-webkit-${noprefix(property, value, important)};`\n if (flags & 0b010) cssText += `-moz-${noprefix(property, value, important)};`\n if (flags & 0b100) cssText += `-ms-${noprefix(property, value, important)};`\n\n // Prefix values, e.g. `position: \"sticky\"` -> `position: \"-webkit-sticky\"`\n // Notice that flags don't overlap and property prefixing isn't needed here\n flags = cssValuePrefixFlags(property, value)\n if (flags & 0b001) cssText += `${noprefix(property, `-webkit-${value}`, important)};`\n if (flags & 0b010) cssText += `${noprefix(property, `-moz-${value}`, important)};`\n if (flags & 0b100) cssText += `${noprefix(property, `-ms-${value}`, important)};`\n\n /* Include the standardized declaration last */\n /* https://css-tricks.com/ordering-css3-properties/ */\n cssText += noprefix(property, value, important)\n\n return cssText\n}\n", "import type {\n Theme,\n ThemeColor,\n ThemeConfiguration,\n ThemeResolver,\n ThemeSectionType,\n ThemeSectionResolver,\n ThemeSectionResolverContext,\n ThemeHelper,\n Context,\n} from '../types'\n\nimport { join, tail, includes } from '../internal/util'\nimport { directive } from './directive'\n\n// '1/2': '50%',\n// '1/3': '33.333333%',\n// '2/3': '66.666667%',\n// '1/4': '25%',\n// '2/4': '50%',\n// '3/4': '75%',\n// '1/5': '20%',\n// '2/5': '40%',\n// '3/5': '60%',\n// '4/5': '80%',\n// '1/6': '16.666667%',\n// '2/6': '33.333333%',\n// '3/6': '50%',\n// '4/6': '66.666667%',\n// '5/6': '83.333333%',\nconst ratios = (start: number, end: number): Record<string, string> => {\n const result: Record<string, string> = {}\n\n do {\n for (let dividend = 1; dividend < start; dividend++) {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n result[`${dividend}/${start}`] = Number(((dividend / start) * 100).toFixed(6)) + '%'\n }\n } while (++start <= end)\n\n return result\n}\n\n// 0: '0px',\n// 2: '2px',\n// 4: '4px',\n// 8: '8px',\nconst exponential = (stop: number, unit: string, start = 0): Record<string, string> => {\n const result: Record<string, string> = {}\n\n for (; start <= stop; start = start * 2 || 1) {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n result[start] = start + unit\n }\n\n return result\n}\n\n// 3: '.75rem',\n// 4: '1rem',\n// 5: '1.25rem',\n// 6: '1.5rem',\n// 7: '1.75rem',\n// 8: '2rem',\n// 9: '2.25rem',\n// 10: '2.5rem',\nconst linear = (\n stop: number,\n unit = '',\n divideBy = 1,\n start = 0,\n step = 1,\n result: Record<string, string> = {},\n // eslint-disable-next-line max-params\n): Record<string, string> => {\n for (; start <= stop; start += step) {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n result[start] = start / divideBy + unit\n }\n\n return result\n}\n\nconst alias = <Section extends keyof Theme>(\n section: Section,\n): ThemeSectionResolver<ThemeSectionType<Theme[Section]>> => (theme) => theme(section)\n\nconst themeFactory = (args: Parameters<ThemeResolver>, { theme }: Context) => theme(...args)\n\nexport const theme = ((...args: Parameters<ThemeResolver>): ReturnType<ThemeHelper> =>\n directive(themeFactory, args)) as ThemeHelper\n\nconst defaultTheme: Partial<Theme> = /*#__PURE__*/ {\n screens: {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n '2xl': '1536px',\n },\n colors: {\n transparent: 'transparent',\n current: 'currentColor',\n\n // black: colors.black,\n black: '#000',\n\n // white: colors.white,\n white: '#fff',\n\n // gray: colors.coolGray,\n gray: {\n 50: '#f9fafb',\n 100: '#f3f4f6',\n 200: '#e5e7eb',\n 300: '#d1d5db',\n 400: '#9ca3af',\n 500: '#6b7280',\n 600: '#4b5563',\n 700: '#374151',\n 800: '#1f2937',\n 900: '#111827',\n },\n\n // red: colors.red,\n red: {\n 50: '#fef2f2',\n 100: '#fee2e2',\n 200: '#fecaca',\n 300: '#fca5a5',\n 400: '#f87171',\n 500: '#ef4444',\n 600: '#dc2626',\n 700: '#b91c1c',\n 800: '#991b1b',\n 900: '#7f1d1d',\n },\n\n // yellow: colors.amber,\n yellow: {\n 50: '#fffbeb',\n 100: '#fef3c7',\n 200: '#fde68a',\n 300: '#fcd34d',\n 400: '#fbbf24',\n 500: '#f59e0b',\n 600: '#d97706',\n 700: '#b45309',\n 800: '#92400e',\n 900: '#78350f',\n },\n\n // green: colors.emerald,\n green: {\n 50: '#ecfdf5',\n 100: '#d1fae5',\n 200: '#a7f3d0',\n 300: '#6ee7b7',\n 400: '#34d399',\n 500: '#10b981',\n 600: '#059669',\n 700: '#047857',\n 800: '#065f46',\n 900: '#064e3b',\n },\n\n // blue: colors.blue,\n blue: {\n 50: '#eff6ff',\n 100: '#dbeafe',\n 200: '#bfdbfe',\n 300: '#93c5fd',\n 400: '#60a5fa',\n 500: '#3b82f6',\n 600: '#2563eb',\n 700: '#1d4ed8',\n 800: '#1e40af',\n 900: '#1e3a8a',\n },\n\n // indigo: colors.indigo,\n indigo: {\n 50: '#eef2ff',\n 100: '#e0e7ff',\n 200: '#c7d2fe',\n 300: '#a5b4fc',\n 400: '#818cf8',\n 500: '#6366f1',\n 600: '#4f46e5',\n 700: '#4338ca',\n 800: '#3730a3',\n 900: '#312e81',\n },\n\n // purple: colors.violet,\n purple: {\n 50: '#f5f3ff',\n 100: '#ede9fe',\n 200: '#ddd6fe',\n 300: '#c4b5fd',\n 400: '#a78bfa',\n 500: '#8b5cf6',\n 600: '#7c3aed',\n 700: '#6d28d9',\n 800: '#5b21b6',\n 900: '#4c1d95',\n },\n\n // pink: colors.pink,\n pink: {\n 50: '#fdf2f8',\n 100: '#fce7f3',\n 200: '#fbcfe8',\n 300: '#f9a8d4',\n 400: '#f472b6',\n 500: '#ec4899',\n 600: '#db2777',\n 700: '#be185d',\n 800: '#9d174d',\n 900: '#831843',\n },\n },\n\n spacing: {\n px: '1px',\n 0: '0px',\n .../*#__PURE__*/ linear(4, 'rem', 4, 0.5, 0.5),\n // 0.5: '0.125rem',\n // 1: '0.25rem',\n // 1.5: '0.375rem',\n // 2: '0.5rem',\n // 2.5: '0.625rem',\n // 3: '0.75rem',\n // 3.5: '0.875rem',\n // 4: '1rem',\n .../*#__PURE__*/ linear(12, 'rem', 4, 5),\n // 5: '1.25rem',\n // 6: '1.5rem',\n // 7: '1.75rem',\n // 8: '2rem',\n // 9: '2.25rem',\n // 10: '2.5rem',\n // 11: '2.75rem',\n // 12: '3rem',\n 14: '3.5rem',\n .../*#__PURE__*/ linear(64, 'rem', 4, 16, 4),\n // 16: '4rem',\n // 20: '5rem',\n // 24: '6rem',\n // 28: '7rem',\n // 32: '8rem',\n // 36: '9rem',\n // 40: '10rem',\n // 44: '11rem',\n // 48: '12rem',\n // 52: '13rem',\n // 56: '14rem',\n // 60: '15rem',\n // 64: '16rem',\n 72: '18rem',\n 80: '20rem',\n 96: '24rem',\n },\n\n durations: {\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n },\n\n animation: {\n none: 'none',\n spin: 'spin 1s linear infinite',\n ping: 'ping 1s cubic-bezier(0, 0, 0.2, 1) infinite',\n pulse: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',\n bounce: 'bounce 1s infinite',\n },\n\n backdropBlur: /*#__PURE__*/ alias('blur'),\n backdropBrightness: /*#__PURE__*/ alias('brightness'),\n backdropContrast: /*#__PURE__*/ alias('contrast'),\n backdropGrayscale: /*#__PURE__*/ alias('grayscale'),\n backdropHueRotate: /*#__PURE__*/ alias('hueRotate'),\n backdropInvert: /*#__PURE__*/ alias('invert'),\n backdropOpacity: /*#__PURE__*/ alias('opacity'),\n backdropSaturate: /*#__PURE__*/ alias('saturate'),\n backdropSepia: /*#__PURE__*/ alias('sepia'),\n\n backgroundColor: /*#__PURE__*/ alias('colors'),\n backgroundImage: {\n none: 'none',\n // These are built-in\n // 'gradient-to-t': 'linear-gradient(to top, var(--tw-gradient-stops))',\n // 'gradient-to-tr': 'linear-gradient(to top right, var(--tw-gradient-stops))',\n // 'gradient-to-r': 'linear-gradient(to right, var(--tw-gradient-stops))',\n // 'gradient-to-br': 'linear-gradient(to bottom right, var(--tw-gradient-stops))',\n // 'gradient-to-b': 'linear-gradient(to bottom, var(--tw-gradient-stops))',\n // 'gradient-to-bl': 'linear-gradient(to bottom left, var(--tw-gradient-stops))',\n // 'gradient-to-l': 'linear-gradient(to left, var(--tw-gradient-stops))',\n // 'gradient-to-tl': 'linear-gradient(to top left, var(--tw-gradient-stops))',\n },\n backgroundOpacity: /*#__PURE__*/ alias('opacity'),\n // backgroundPosition: {\n // // The following are already handled by the plugin:\n // // center, right, left, bottom, top\n // // 'bottom-10px-right-20px' -> bottom 10px right 20px\n // },\n backgroundSize: {\n auto: 'auto',\n cover: 'cover',\n contain: 'contain',\n },\n blur: {\n 0: '0',\n sm: '4px',\n DEFAULT: '8px',\n md: '12px',\n lg: '16px',\n xl: '24px',\n '2xl': '40px',\n '3xl': '64px',\n },\n brightness: {\n .../*#__PURE__*/ linear(200, '', 100, 0, 50),\n // 0: '0',\n // 50: '.5',\n // 150: '1.5',\n // 200: '2',\n\n .../*#__PURE__*/ linear(110, '', 100, 90, 5),\n // 90: '.9',\n // 95: '.95',\n // 100: '1',\n // 105: '1.05',\n // 110: '1.1',\n 75: '0.75',\n 125: '1.25',\n },\n borderColor: (theme) => ({\n ...theme('colors'),\n DEFAULT: theme('colors.gray.200', 'currentColor'),\n }),\n borderOpacity: /*#__PURE__*/ alias('opacity'),\n borderRadius: {\n none: '0px',\n sm: '0.125rem',\n DEFAULT: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl': '1rem',\n '3xl': '1.5rem',\n '1/2': '50%',\n full: '9999px',\n },\n borderWidth: {\n DEFAULT: '1px',\n .../*#__PURE__*/ exponential(8, 'px'),\n // 0: '0px',\n // 2: '2px',\n // 4: '4px',\n // 8: '8px',\n },\n boxShadow: {\n sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\n DEFAULT: '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)',\n md: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\n lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\n xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n '2xl': '0 25px 50px -12px rgba(0, 0, 0, 0.25)',\n inner: 'inset 0 2px 4px 0 rgba(0, 0, 0, 0.06)',\n none: 'none',\n },\n // container: {},\n // cursor: {\n // // Default values are handled by plugin\n // },\n contrast: {\n .../*#__PURE__*/ linear(200, '', 100, 0, 50),\n // 0: '0',\n // 50: '.5',\n // 150: '1.5',\n // 200: '2',\n 75: '0.75',\n 125: '1.25',\n },\n divideColor: /*#__PURE__*/ alias('borderColor'),\n divideOpacity: /*#__PURE__*/ alias('borderOpacity'),\n divideWidth: /*#__PURE__*/ alias('borderWidth'),\n dropShadow: {\n sm: '0 1px 1px rgba(0,0,0,0.05)',\n DEFAULT: ['0 1px 2px rgba(0, 0, 0, 0.1)', '0 1px 1px rgba(0, 0, 0, 0.06)'],\n md: ['0 4px 3px rgba(0, 0, 0, 0.07)', '0 2px 2px rgba(0, 0, 0, 0.06)'],\n lg: ['0 10px 8px rgba(0, 0, 0, 0.04)', '0 4px 3px rgba(0, 0, 0, 0.1)'],\n xl: ['0 20px 13px rgba(0, 0, 0, 0.03)', '0 8px 5px rgba(0, 0, 0, 0.08)'],\n '2xl': '0 25px 25px rgba(0, 0, 0, 0.15)',\n none: '0 0 #0000',\n },\n fill: { current: 'currentColor' },\n grayscale: {\n 0: '0',\n DEFAULT: '100%',\n },\n hueRotate: {\n 0: '0deg',\n 15: '15deg',\n 30: '30deg',\n 60: '60deg',\n 90: '90deg',\n 180: '180deg',\n },\n invert: {\n 0: '0',\n DEFAULT: '100%',\n },\n flex: {\n 1: '1 1 0%',\n auto: '1 1 auto',\n initial: '0 1 auto',\n none: 'none',\n },\n // flexGrow: {\n // // Handled by plugin\n // },\n // flexShrink: {\n // // Handled by plugin\n // },\n fontFamily: {\n sans: 'ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\"'.split(\n ',',\n ),\n serif: 'ui-serif,Georgia,Cambria,\"Times New Roman\",Times,serif'.split(','),\n mono: 'ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace'.split(\n ',',\n ),\n },\n fontSize: {\n xs: ['0.75rem', '1rem'],\n sm: ['0.875rem', '1.25rem'],\n base: ['1rem', '1.5rem'],\n lg: ['1.125rem', '1.75rem'],\n xl: ['1.25rem', '1.75rem'],\n '2xl': ['1.5rem', '2rem'],\n '3xl': ['1.875rem', '2.25rem'],\n '4xl': ['2.25rem', '2.5rem'],\n '5xl': ['3rem', '1'],\n '6xl': ['3.75rem', '1'],\n '7xl': ['4.5rem', '1'],\n '8xl': ['6rem', '1'],\n '9xl': ['8rem', '1'],\n },\n fontWeight: {\n thin: '100',\n extralight: '200',\n light: '300',\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n black: '900',\n },\n gridTemplateColumns: {\n // numbers are handled by the plugin: 1 -> repeat(1, minmax(0, 1fr))\n // none: 'none', // handled by plugin\n },\n gridTemplateRows: {\n // numbers are handled by the plugin: 1 -> repeat(1, minmax(0, 1fr))\n // none: 'none', // handled by plugin\n },\n gridAutoColumns: {\n // auto: 'auto', // handled by plugin\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0,1fr)',\n },\n gridAutoRows: {\n // auto: 'auto', handled by plugin\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0,1fr)',\n },\n // gridColumnStart: {\n // // Defaults handled by plugin\n // },\n // gridRowStart: {\n // // Defaults handled by plugin\n // },\n // gridColumnEnd: {\n // // Defaults handled by plugin\n // },\n // gridRowEnd: {\n // // Defaults handled by plugin\n // },\n gridColumn: {\n // span-X is handled by the plugin: span-1 -> span 1 / span 1\n auto: 'auto',\n 'span-full': '1 / -1',\n },\n gridRow: {\n // span-X is handled by the plugin: span-1 -> span 1 / span 1\n auto: 'auto',\n 'span-full': '1 / -1',\n },\n gap: /*#__PURE__*/ alias('spacing'),\n gradientColorStops: /*#__PURE__*/ alias('colors'),\n height: (theme) => ({\n auto: 'auto',\n ...theme('spacing'),\n ...ratios(2, 6),\n // '1/2': '50%',\n // '1/3': '33.333333%',\n // '2/3': '66.666667%',\n // '1/4': '25%',\n // '2/4': '50%',\n // '3/4': '75%',\n // '1/5': '20%',\n // '2/5': '40%',\n // '3/5': '60%',\n // '4/5': '80%',\n // '1/6': '16.666667%',\n // '2/6': '33.333333%',\n // '3/6': '50%',\n // '4/6': '66.666667%',\n // '5/6': '83.333333%',\n full: '100%',\n screen: '100vh',\n }),\n inset: (theme) => ({\n auto: 'auto',\n ...theme('spacing'),\n ...ratios(2, 4),\n // '1/2': '50%',\n // '1/3': '33.333333%',\n // '2/3': '66.666667%',\n // '1/4': '25%',\n // '2/4': '50%',\n // '3/4': '75%',\n full: '100%',\n }),\n keyframes: {\n spin: {\n from: {\n transform: 'rotate(0deg)',\n },\n to: {\n transform: 'rotate(360deg)',\n },\n },\n ping: {\n '0%': {\n transform: 'scale(1)',\n opacity: '1',\n },\n '75%,100%': {\n transform: 'scale(2)',\n opacity: '0',\n },\n },\n pulse: {\n '0%,100%': {\n opacity: '1',\n },\n '50%': {\n opacity: '.5',\n },\n },\n bounce: {\n '0%, 100%': {\n transform: 'translateY(-25%)',\n animationTimingFunction: 'cubic-bezier(0.8,0,1,1)',\n },\n '50%': {\n transform: 'none',\n animationTimingFunction: 'cubic-bezier(0,0,0.2,1)',\n },\n },\n },\n letterSpacing: {\n tighter: '-0.05em',\n tight: '-0.025em',\n normal: '0em',\n wide: '0.025em',\n wider: '0.05em',\n widest: '0.1em',\n },\n lineHeight: {\n none: '1',\n tight: '1.25',\n snug: '1.375',\n normal: '1.5',\n relaxed: '1.625',\n loose: '2',\n .../*#__PURE__*/ linear(10, 'rem', 4, 3),\n // 3: '.75rem',\n // 4: '1rem',\n // 5: '1.25rem',\n // 6: '1.5rem',\n // 7: '1.75rem',\n // 8: '2rem',\n // 9: '2.25rem',\n // 10: '2.5rem',\n },\n // listStyleType: {\n // // Defaults handled by plugin\n // },\n margin: (theme) => ({\n auto: 'auto',\n ...theme('spacing'),\n }),\n maxHeight: (theme) => ({\n ...theme('spacing'),\n full: '100%',\n screen: '100vh',\n }),\n maxWidth: (theme, { breakpoints }) => ({\n none: 'none',\n 0: '0rem',\n xs: '20rem',\n sm: '24rem',\n md: '28rem',\n lg: '32rem',\n xl: '36rem',\n '2xl': '42rem',\n '3xl': '48rem',\n '4xl': '56rem',\n '5xl': '64rem',\n '6xl': '72rem',\n '7xl': '80rem',\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n prose: '65ch',\n ...breakpoints(theme('screens')),\n }),\n minHeight: {\n 0: '0px',\n full: '100%',\n screen: '100vh',\n },\n minWidth: {\n 0: '0px',\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n },\n // objectPosition: {\n // // The plugins joins all arguments by default\n // },\n opacity: {\n .../*#__PURE__*/ linear(100, '', 100, 0, 10),\n // 0: '0',\n // 10: '0.1',\n // 20: '0.2',\n // 30: '0.3',\n // 40: '0.4',\n // 60: '0.6',\n // 70: '0.7',\n // 80: '0.8',\n // 90: '0.9',\n // 100: '1',\n 5: '0.05',\n 25: '0.25',\n 75: '0.75',\n 95: '0.95',\n },\n order: {\n first: '-9999',\n last: '9999',\n none: '0',\n .../*#__PURE__*/ linear(12, '', 1, 1),\n // 1: '1',\n // 2: '2',\n // 3: '3',\n // 4: '4',\n // 5: '5',\n // 6: '6',\n // 7: '7',\n // 8: '8',\n // 9: '9',\n // 10: '10',\n // 11: '11',\n // 12: '12',\n },\n outline: {\n none: ['2px solid transparent', '2px'],\n white: ['2px dotted white', '2px'],\n black: ['2px dotted black', '2px'],\n },\n padding: /*#__PURE__*/ alias('spacing'),\n placeholderColor: /*#__PURE__*/ alias('colors'),\n placeholderOpacity: /*#__PURE__*/ alias('opacity'),\n ringColor: (theme) => ({\n DEFAULT: theme('colors.blue.500', '#3b82f6'),\n ...theme('colors'),\n }),\n ringOffsetColor: /*#__PURE__*/ alias('colors'),\n ringOffsetWidth: /*#__PURE__*/ exponential(8, 'px'),\n // 0: '0px',\n // 1: '1px',\n // 2: '2px',\n // 4: '4px',\n // 8: '8px',,\n ringOpacity: (theme) => ({\n DEFAULT: '0.5',\n ...theme('opacity'),\n }),\n ringWidth: {\n DEFAULT: '3px',\n .../*#__PURE__*/ exponential(8, 'px'),\n // 0: '0px',\n // 1: '1px',\n // 2: '2px',\n // 4: '4px',\n // 8: '8px',\n },\n rotate: {\n .../*#__PURE__*/ exponential(2, 'deg'),\n // 0: '0deg',\n // 1: '1deg',\n // 2: '2deg',\n .../*#__PURE__*/ exponential(12, 'deg', 3),\n // 3: '3deg',\n // 6: '6deg',\n // 12: '12deg',\n .../*#__PURE__*/ exponential(180, 'deg', 45),\n // 45: '45deg',\n // 90: '90deg',\n // 180: '180deg',\n },\n saturate: /*#__PURE__*/ linear(200, '', 100, 0, 50),\n // 0: '0',\n // 50: '.5',\n // 100: '1',\n // 150: '1.5',\n // 200: '2',\n scale: {\n .../*#__PURE__*/ linear(150, '', 100, 0, 50),\n // 0: '0',\n // 50: '.5',\n // 150: '1.5',\n .../*#__PURE__*/ linear(110, '', 100, 90, 5),\n // 90: '.9',\n // 95: '.95',\n // 100: '1',\n // 105: '1.05',\n // 110: '1.1',\n 75: '0.75',\n 125: '1.25',\n },\n sepia: {\n 0: '0',\n DEFAULT: '100%',\n },\n skew: {\n .../*#__PURE__*/ exponential(2, 'deg'),\n // 0: '0deg',\n // 1: '1deg',\n // 2: '2deg',\n .../*#__PURE__*/ exponential(12, 'deg', 3),\n // 3: '3deg',\n // 6: '6deg',\n // 12: '12deg',\n },\n space: /*#__PURE__*/ alias('spacing'),\n stroke: {\n current: 'currentColor',\n },\n strokeWidth: /*#__PURE__*/ linear(2),\n // 0: '0',\n // 1: '1',\n // 2: '2',,\n textColor: /*#__PURE__*/ alias('colors'),\n textOpacity: /*#__PURE__*/ alias('opacity'),\n // transformOrigin: {\n // // The following are already handled by the plugin:\n // // center, right, left, bottom, top\n // // 'bottom-10px-right-20px' -> bottom 10px right 20px\n // },\n transitionDuration: (theme) => ({\n DEFAULT: '150ms',\n ...theme('durations'),\n }),\n transitionDelay: /*#__PURE__*/ alias('durations'),\n transitionProperty: {\n none: 'none',\n all: 'all',\n DEFAULT:\n 'background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter',\n colors: 'background-color,border-color,color,fill,stroke',\n opacity: 'opacity',\n shadow: 'box-shadow',\n transform: 'transform',\n },\n transitionTimingFunction: {\n DEFAULT: 'cubic-bezier(0.4,0,0.2,1)',\n linear: 'linear',\n in: 'cubic-bezier(0.4,0,1,1)',\n out: 'cubic-bezier(0,0,0.2,1)',\n 'in-out': 'cubic-bezier(0.4,0,0.2,1)',\n },\n translate: (theme) => ({\n ...theme('spacing'),\n ...ratios(2, 4),\n // '1/2': '50%',\n // '1/3': '33.333333%',\n // '2/3': '66.666667%',\n // '1/4': '25%',\n // '2/4': '50%',\n // '3/4': '75%',\n full: '100%',\n }),\n width: (theme) => ({\n auto: 'auto',\n ...theme('spacing'),\n ...ratios(2, 6),\n // '1/2': '50%',\n // '1/3': '33.333333%',\n // '2/3': '66.666667%',\n // '1/4': '25%',\n // '2/4': '50%',\n // '3/4': '75%',\n // '1/5': '20%',\n // '2/5': '40%',\n // '3/5': '60%',\n // '4/5': '80%',\n // '1/6': '16.666667%',\n // '2/6': '33.333333%',\n // '3/6': '50%',\n // '4/6': '66.666667%',\n // '5/6': '83.333333%',\n\n ...ratios(12, 12),\n // '1/12': '8.333333%',\n // '2/12': '16.666667%',\n // '3/12': '25%',\n // '4/12': '33.333333%',\n // '5/12': '41.666667%',\n // '6/12': '50%',\n // '7/12': '58.333333%',\n // '8/12': '66.666667%',\n // '9/12': '75%',\n // '10/12': '83.333333%',\n // '11/12': '91.666667%',\n\n screen: '100vw',\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n }),\n zIndex: {\n auto: 'auto',\n .../*#__PURE__*/ linear(50, '', 1, 0, 10),\n // 0: '0',\n // 10: '10',\n // 20: '20',\n // 30: '30',\n // 40: '40',\n // 50: '50',\n },\n}\n\n// https://github.com/tailwindlabs/tailwindcss/blob/master/src/util/flattenColorPalette.js\nconst flattenColorPalette = (\n colors: Record<string, ThemeColor>,\n target: Record<string, ThemeColor> = {},\n prefix: string[] = [],\n): Record<string, ThemeColor> => {\n Object.keys(colors).forEach((property) => {\n const value = colors[property]\n\n if (property == 'DEFAULT') {\n target[join(prefix)] = value\n target[join(prefix, '.')] = value\n }\n\n const key = [...prefix, property]\n target[join(key)] = value\n target[join(key, '.')] = value\n\n if (value && typeof value == 'object') {\n flattenColorPalette(value, target, key)\n }\n }, target)\n\n return target\n}\n\nconst resolveContext: ThemeSectionResolverContext = {\n // ?negative: (source) =>\n // Object.keys(source).reduce(\n // (target, key) => {\n // if (source[key]) target['-' + key] = '-' + (source[key] as string)\n\n // return target\n // },\n // { ...source },\n // ),\n // Stub implementation as negated values are automatically infered and do _not_ not to be in the theme\n negative: () => ({}),\n\n breakpoints: (screens) =>\n Object.keys(screens)\n .filter((key) => typeof screens[key] == 'string')\n .reduce((target, key) => {\n target['screen-' + key] = screens[key] as string\n\n return target\n }, {} as Record<string, string | undefined>),\n}\n\nconst handleArbitraryValues = (section: keyof Theme, key: string): string | false =>\n (key = (key[0] == '[' && key.slice(-1) == ']' && key.slice(1, -1)) as string) &&\n includes(section, 'olor') == /^(#|(hsl|rgb)a?\\(|[a-z]+$)/.test(key) &&\n (includes(key, 'calc(')\n ? key.replace(/(-?\\d*\\.?\\d(?!\\b-.+[,)](?![^+\\-/*])\\D)(?:%|[a-z]+)?|\\))([+\\-/*])/g, '$1 $2 ')\n : key)\n\nexport const makeThemeResolver = (config?: ThemeConfiguration): ThemeResolver => {\n const cache = new Map<keyof Theme, Record<string, unknown>>()\n\n const theme = { ...defaultTheme, ...config }\n\n const deref = (\n theme: undefined | Partial<Theme>,\n section: keyof Theme,\n ): Record<string, unknown> | undefined => {\n const base = theme && theme[section]\n\n const value = typeof base == 'function' ? base(resolve, resolveContext) : base\n\n return value && section == 'colors'\n ? flattenColorPalette(value as Record<string, ThemeColor>)\n : (value as Record<string, unknown>)\n }\n\n const resolve = ((section: keyof Theme, key: unknown, defaultValue: unknown): unknown => {\n const keypath = section.split('.')\n section = keypath[0] as keyof Theme\n\n // theme('colors.gray.500', maybeDefault)\n if (keypath.length > 1) {\n defaultValue = key\n key = join(tail(keypath), '.')\n }\n // else: theme('colors', 'gray.500', maybeDefault)\n\n let base = cache.get(section)\n\n if (!base) {\n // Stacked resolution to allow referencing the same section from core theme with extend\n cache.set(section, (base = { ...deref(theme, section) }))\n\n Object.assign(base, deref(theme.extend, section))\n }\n\n if (key != null) {\n key = (Array.isArray(key) ? join(key) : (key as string)) || 'DEFAULT'\n\n const value: unknown = handleArbitraryValues(section, key as string) || base[key as string]\n\n return value == null\n ? defaultValue\n : Array.isArray(value) &&\n // https://github.com/tailwindlabs/tailwindcss/blob/master/src/util/transformThemeValue.js\n // only testing for sections that uses an array for values\n !includes(['fontSize', 'outline', 'dropShadow'], section)\n ? join(value, ',')\n : value\n }\n\n return base\n }) as ThemeResolver\n\n return resolve\n}\n", "import type {\n Context,\n CSSRules,\n Plugin,\n Rule,\n Falsy,\n InlineDirective,\n TypescriptCompat,\n} from '../types'\n\nimport { join, tail } from '../internal/util'\n\nexport const translate = (\n plugins: Record<string, Plugin | undefined>,\n context: Context,\n): ((\n rule: Rule,\n isTranslating?: boolean,\n) => InlineDirective | CSSRules | string | Falsy | TypescriptCompat) => (rule, isTranslating) => {\n // If this is a inline directive - called it right away\n if (typeof rule.d == 'function') {\n return rule.d(context)\n }\n\n const parameters = rule.d.split(/-(?![^[]*])/g)\n\n // Bail early for already hashed class names\n // Only if there are no variants and no negation\n // If there are variants or negation unknown directive will be reported\n if (!isTranslating && parameters[0] == 'tw' && rule.$ == rule.d) {\n return rule.$\n }\n\n // Try to find a plugin to handle this directive\n // example 'bg-gradient-to-r'\n // 1. 'bg-gradient-to-r' -> parameters=['bg-gradient-to-r']\n // 2. 'bg-gradient-to' -> parameters=['bg-gradient-to', 'r']\n // 4. 'bg-gradient' -> parameters=['bg-gradient', 'to', 'r']\n // 5. 'bg' -> parameters=['bg', 'gradient', 'to', 'r']\n for (let index = parameters.length; index; index--) {\n const id = join(parameters.slice(0, index))\n\n const plugin = plugins[id]\n\n if (plugin) {\n return typeof plugin == 'function'\n ? plugin(tail(parameters, index), context, id)\n : typeof plugin == 'string'\n ? context[isTranslating ? 'css' : 'tw'](plugin)\n : plugin\n }\n }\n}\n", "import type { Context, CSSRules, Rule, DarkMode, ThemeScreenValue } from '../types'\n\nimport { tail, escape, buildMediaQuery } from '../internal/util'\n\nlet _: RegExpExecArray | null | readonly ThemeScreenValue[] | string\n\nexport const GROUP_RE = /^:(group(?:(?!-focus).+?)*)-(.+)$/\nexport const NOT_PREFIX_RE = /^(:not)-(.+)/\n\nexport const prepareVariantSelector = (variant: string): string =>\n variant[1] == '[' ? tail(variant) : variant\n\n// Wraps a CSS rule object with variant at-rules and pseudo classes\n// { '.selector': {...} }\n// => { '&:hover': { '.selector': {...} } }\n// => { '@media (min-width: ...)': { '&:hover': { '.selector': {...} } } }\nexport const decorate = (\n darkMode: DarkMode,\n variants: Record<string, string>,\n { theme, tag }: Context,\n): ((translation: CSSRules, rule: Rule) => CSSRules) => {\n // Select the wrapper for a variant\n const applyVariant = (translation: CSSRules, variant: string): CSSRules => {\n // Check responsive\n if ((_ = theme('screens', tail(variant), ''))) {\n return { [buildMediaQuery(_)]: translation }\n }\n\n // Dark mode\n if (variant == ':dark' && darkMode == 'class') {\n return { '.dark &': translation }\n }\n\n // Groups classes like: group-focus and group-hover\n // these need to add a marker selector with the pseudo class\n // => '.group:focus .group-focus:selector'\n if ((_ = GROUP_RE.exec(variant))) {\n return { [`.${escape(tag((_ as RegExpExecArray)[1]))}:${_[2]} &`]: translation }\n }\n\n // Check other well known variants\n // and fallback to pseudo class or element\n return {\n [variants[tail(variant)] ||\n '&' +\n variant.replace(\n NOT_PREFIX_RE,\n (_, not, variant) => not + '(' + prepareVariantSelector(':' + variant) + ')',\n )]: translation,\n }\n }\n\n // Apply variants depth-first\n return (translation, rule) => rule.v.reduceRight(applyVariant, translation)\n}\n", "/* eslint-disable no-return-assign, no-cond-assign, no-implicit-coercion */\n\n// Based on https://github.com/kripod/otion\n// License MIT\n\n/*\nTo have a predictable styling the styles must be ordered.\n\nThis order is represented by a precedence number. The lower values\nare inserted before higher values. Meaning higher precedence styles\noverwrite lower precedence styles.\n\nEach rule has some traits that are put into a bit set which form\nthe precedence:\n\n| bits | trait |\n| ---- | ------------------------------------------------- |\n| 1 | dark mode |\n| 2 | layer: base = 0, components = 1, utilities = 2 |\n| 1 | screens: is this a responsive variation of a rule |\n| 5 | responsive based on min-width |\n| 4 | at-rules |\n| 17 | pseudo and group variants |\n| 4 | number of declarations (descending) |\n| 4 | greatest precedence of properties |\n\n**Dark Mode: 1 bit**\n\nFlag for dark mode rules.\n\n**Layer: 3 bits**\n\n- base = 0: The preflight styles and any base styles registered by plugins.\n- components = 1: Component classes and any component classes registered by plugins.\n- utilities = 2: Utility classes and any utility classes registered by plugins.\n\n**Screens: 1 bit**\n\nFlag for screen variants. They may not always have a `min-width` to be detected by _Responsive_ below.\n\n**Responsive: 5 bits**\n\nBased on extracted `min-width` value:\n\n- 576px -> 3\n- 1536px -> 9\n- 36rem -> 3\n- 96rem -> 9\n\n**At-Rules: 4 bits**\n\nBased on the count of special chars (`-:,`) within the at-rule.\n\n**Pseudo and group variants: 17 bits**\n\nEnsures predictable order of pseudo classes.\n\n- https://bitsofco.de/when-do-the-hover-focus-and-active-pseudo-classes-apply/#orderofstyleshoverthenfocusthenactive\n- https://developer.mozilla.org/docs/Web/CSS/:active#Active_links\n- https://github.com/tailwindlabs/tailwindcss/blob/master/stubs/defaultConfig.stub.js#L718\n\n**Number of declarations (descending): 4 bits**\n\nAllows single declaration styles to overwrite styles from multi declaration styles.\n\n**Greatest precedence of properties: 4 bits**\n\nEnsure shorthand properties are inserted before longhand properties; eg longhand override shorthand\n*/\n\nimport type { ThemeResolver, ThemeScreen } from '../types'\n\nimport { tail, includes, buildMediaQuery } from '../internal/util'\nimport { GROUP_RE, NOT_PREFIX_RE } from './decorate'\n\n// Shared variables\nlet _: string | RegExpExecArray | null | number | ThemeScreen\n\n/*\nBit shifts for the primary bits:\n\n| bits | trait | shift |\n| ---- | ------------------------------------------------------- | ----- |\n| 1 | dark mode | 30 |\n| 2 | layer: base = 0, components = 1, utilities = 2, css = 3 | 28 |\n| 1 | screens: is this a responsive variation of a rule | 27 |\n| 5 | responsive based on min-width | 22 |\n| 4 | at-rules | 18 |\n| 17 | pseudo and group variants | 0 |\n\nThese are calculated by serialize and added afterwards:\n\n| bits | trait |\n| ---- | ----------------------------------- |\n| 4 | number of declarations (descending) |\n| 4 | greatest precedence of properties |\n\nThese are added by shifting the primary bits using multiplication as js only\nsupports bit shift up to 32 bits.\n*/\n\n// 0=none, 1=sm, 2=md, 3=lg, 4=xl, 5=2xl, 6=??, 7=??\n// 0 - 31: 5 bits\n// 576px -> 3\n// 1536px -> 9\n// 36rem -> 3\n// 96rem -> 9\nexport const responsivePrecedence = (css: string): number =>\n (((_ = /(?:^|min-width: *)(\\d+(?:.\\d+)?)(p)?/.exec(css)) ? +_[1] / (_[2] ? 15 : 1) / 10 : 0) &\n 31) <<\n 22\n\n// Colon and dash count of string (ascending): 0 -> 7 => 3 bits\nexport const seperatorPrecedence = (string: string): number => {\n _ = 0\n\n for (let index = string.length; index--; ) {\n _ += (includes('-:,', string[index]) as unknown) as number\n }\n\n return _\n}\n\nexport const atRulePresedence = (css: string): number => (seperatorPrecedence(css) & 15) << 18\n\n// Pesudo variant presedence\n// Chars 3 - 8: Uniquely identifies a pseudo selector\n// represented as a bit set for each relevant value\n// 17 bits: one for each variant plus one for unknown variants\n//\n// ':group-*' variants are normalized to their native pseudo class (':group-hover' -> ':hover')\n// as they already have a higher selector presedence due to the add '.group' ('.group:hover .group-hover:...')\n\n// Sources:\n// - https://bitsofco.de/when-do-the-hover-focus-and-active-pseudo-classes-apply/#orderofstyleshoverthenfocusthenactive\n// - https://developer.mozilla.org/docs/Web/CSS/:active#Active_links\n// - https://github.com/tailwindlabs/tailwindcss/blob/master/stubs/defaultConfig.stub.js#L718\n\nconst PRECEDENCES_BY_PSEUDO_CLASS = [\n /* fi */ 'rst' /* : 0 */,\n /* la */ 'st' /* : 1 */,\n /* ev */ 'en' /* : 2 */,\n /* od */ 'd' /* : 3 */,\n /* li */ 'nk' /* : 4 */,\n /* vi */ 'sited' /* : 5 */,\n /* em */ 'pty' /* : 6 */,\n /* ch */ 'ecked' /* : 7 */,\n /* fo */ 'cus-w' /* ithin : 8 */,\n /* ho */ 'ver' /* : 9 */,\n /* fo */ 'cus' /* : 10 */,\n /* fo */ 'cus-v' /* isible : 11 */,\n /* ac */ 'tive' /* : 12 */,\n /* di */ 'sable' /* d : 13 */,\n /* re */ 'ad-on' /* ly: 14 */,\n /* op */ 'tiona' /* l: 15 */,\n /* re */ 'quire' /* d: 16 */,\n]\n\nconst pseudoPrecedence = (pseudoClass: string): number =>\n 1 <<\n (~(_ = PRECEDENCES_BY_PSEUDO_CLASS.indexOf(pseudoClass.replace(GROUP_RE, ':$2').slice(3, 8)))\n ? _\n : 17)\n\n// Variants: 28 bits\nexport const makeVariantPresedenceCalculator = (\n theme: ThemeResolver,\n variants: Record<string, string | undefined>,\n) => (presedence: number, variant: string): number =>\n presedence |\n // 5: responsive\n ((_ = theme('screens', tail(variant), ''))\n ? // 0=none, 1=sm, 2=md, 3=lg, 4=xl, 5=2xl, 6=??, 7=??\n // 0 - 31: 5 bits\n // 576px -> 3\n // 1536px -> 9\n // 36rem -> 3\n // 96rem -> 9\n // Move into screens layer and adjust based on min-width\n (1 << 27) | responsivePrecedence(buildMediaQuery(_))\n : // 1: dark mode flag\n variant == ':dark'\n ? 1 << 30\n : // 4: precedence of other at-rules\n (_ = variants[variant] || variant.replace(NOT_PREFIX_RE, ':$2'))[0] == '@'\n ? atRulePresedence(_)\n : // 17: pseudo and group variants\n pseudoPrecedence(variant))\n\n// https://github.com/kripod/otion/blob/main/packages/otion/src/propertyMatchers.ts\n// \"+1\": [\n// \t/* ^border-.*(w|c|sty) */\n// \t\"border-.*(width,color,style)\",\n\n// \t/* ^[tlbr].{2,4}m?$ */\n// \t\"top\",\n// \t\"left\",\n// \t\"bottom\",\n// \t\"right\",\n\n// \t/* ^c.{7}$ */\n// \t\"continue\",\n// ],\n\n// \"-1\": [\n// \t/* ^[fl].{5}l */\n// \t\"flex-flow\",\n// \t\"line-clamp\",\n\n// \t/* ^g.{8}$ */\n// \t\"grid-area\",\n\n// \t/* ^pl */\n// \t\"place-content\",\n// \t\"place-items\",\n// \t\"place-self\",\n// ],\n\n// group: 1 => +1\n// group: 2 => -1\n\n// 0 - 15 => 4 bits\n// Ignore vendor prefixed and custom properties\nexport const declarationPropertyPrecedence = (property: string): number =>\n property[0] == '-'\n ? 0\n : seperatorPrecedence(property) +\n ((_ = /^(?:(border-(?!w|c|sty)|[tlbr].{2,4}m?$|c.{7}$)|([fl].{5}l|g.{8}$|pl))/.exec(property))\n ? +!!_[1] /* +1 */ || -!!_[2] /* -1 */\n : 0) +\n 1\n\n/* eslint-enable no-return-assign, no-cond-assign, no-implicit-coercion */\n", "import type { Context, CSSRules, Prefixer, Rule, Token, MaybeArray } from '../types'\n\nimport {\n join,\n includes,\n escape,\n hyphenate,\n evalThunk,\n buildMediaQuery,\n tail,\n merge,\n isCSSProperty,\n} from '../internal/util'\nimport {\n responsivePrecedence,\n declarationPropertyPrecedence,\n makeVariantPresedenceCalculator,\n atRulePresedence,\n} from './presedence'\nimport { apply } from './apply'\nexport interface RuleWithPresedence {\n r: string\n p: number\n}\n\nconst stringifyBlock = (body: string, selector: string): string => selector + '{' + body + '}'\n\n// Not using const enums as they get transpiled to a lot of code\n// /**\n// * Determines the default order of styles.\n// *\n// * For example: screens have a higher presedence (eg override) utilities\n// */\n// const enum Layer {\n// /**\n// * The preflight styles and any base styles registered by plugins.\n// */\n// base = 0,\n\n// /**\n// * Component classes and any component classes registered by plugins.\n// */\n// components = 1,\n\n// /**\n// * Utility classes and any utility classes registered by plugins.\n// */\n// utilities = 2,\n\n// /**\n// * Inline directives\n// */\n// css = 3,\n// }\n\n/**\n * The preflight styles and any base styles registered by plugins.\n */\nexport type LayerBase = 0\n\n/**\n * Component classes and any component classes registered by plugins.\n */\nexport type LayerComponents = 1\n\n/**\n * Utility classes and any utility classes registered by plugins.\n */\nexport type LayerUtilities = 2\n\n/**\n * Inline directives\n */\nexport type LayerCss = 3\n\nexport type Layer = LayerBase | LayerComponents | LayerUtilities | LayerCss\n\nexport const serialize = (\n prefix: Prefixer,\n variants: Record<string, string>,\n context: Context,\n): ((css: CSSRules, className?: string, rule?: Rule, layer?: Layer) => RuleWithPresedence[]) => {\n const { theme, tag } = context\n\n // Hash/Tag tailwind custom properties during serialization\n // used by `tagVars` below\n const tagVar = (_: string, property: string): string => '--' + tag(property)\n\n const tagVars = (value: string | number): string => `${value}`.replace(/--(tw-[\\w-]+)\\b/g, tagVar)\n\n // Create a css declaration with prefix and hashed custom properties\n const stringifyDeclaration = (\n property: string,\n value: string | number | string[],\n important: boolean | undefined,\n ): string => {\n property = tagVars(property)\n\n // Support array fallbacks\n return Array.isArray(value)\n ? join(\n value.filter(Boolean).map((value) => prefix(property, tagVars(value), important)),\n ';',\n )\n : prefix(property, tagVars(value), important)\n }\n\n // List of css rule with presedence to be injected\n let rules: RuleWithPresedence[]\n\n // Responsible for converting the css into one or more css strings\n // which will be injected into the page\n const stringify = (\n // Upper at-rules, selector that should wrap each generated css block\n atRules: string[],\n // The current css selector\n selector: string,\n // The current presedence for determine the css position in the stylesheet\n presedence: number,\n // The rules object\n css: MaybeArray<CSSRules>,\n important: boolean | undefined,\n ): void => {\n if (Array.isArray(css)) {\n css.forEach((css) => css && stringify(atRules, selector, presedence, css, important))\n return\n }\n\n // 1. Properties\n // 3. *\n // 2. @...\n // 3. :pseudo\n // 4. &\n\n // The generated declaration block eg body of the css rule\n let declarations = ''\n\n // Additional presedence values\n\n // this ensures that 'border-top-width' has a higer presedence than 'border-top'\n let maxPropertyPresedence = 0\n\n // more specific utilities have less declarations and a higher presedence\n let numberOfDeclarations = 0\n\n if ((css as CSSRules)['@apply']) {\n css = merge(\n evalThunk(apply((css as CSSRules)['@apply'] as Token), context),\n { ...(css as CSSRules), '@apply': undefined },\n context,\n )\n }\n\n // Walk through the object\n Object.keys(css as CSSRules).forEach((key) => {\n const value = evalThunk((css as CSSRules)[key], context)\n\n if (isCSSProperty(key, value)) {\n if (value !== '' && key.length > 1) {\n // It is a Property\n const property = hyphenate(key)\n\n // Update presedence\n numberOfDeclarations += 1\n maxPropertyPresedence = Math.max(\n maxPropertyPresedence,\n declarationPropertyPrecedence(property),\n )\n\n // Add to the declaration block with prefixer applied\n declarations =\n (declarations && declarations + ';') +\n stringifyDeclaration(property, value as string | number | string[], important)\n }\n } else if (value) {\n // TODO remove once moved from :global to @global\n if (key == ':global') {\n key = '@global'\n }\n\n // If the value is an object this must be a nested block\n // like '@media ...', '@supports ... ', ':pseudo ...', '& > ...'\n // If this is a `@` rule\n if (key[0] == '@') {\n if (key[1] == 'g') {\n // @global\n stringify([], '', 0, value as MaybeArray<CSSRules>, important)\n } else if (key[1] == 'f') {\n // `@font-face` is never wrapped, eg always global/root\n stringify([], key, 0, value as MaybeArray<CSSRules>, important)\n } else if (key[1] == 'k') {\n // @keyframes handling\n // To prevent\n // \"@keyframes spin{from{transform:rotate(0deg)}}\"\n // \"@keyframes spin{to{transform:rotate(360deg)}}\"\n // we generate waypoints without prefix and grap them from the stack\n // \"from{transform:rotate(0deg)}\"\n // \"to{transform:rotate(360deg)}\"\n // => \"@keyframes name{from{transform:rotate(0deg)}from{transform:rotate(0deg)}}\"\n const currentSize = rules.length\n\n stringify([], '', 0, value as MaybeArray<CSSRules>, important)\n\n const waypoints = rules.splice(currentSize, rules.length - currentSize)\n\n // Insert without wrappers\n rules.push({\n r: stringifyBlock(\n join(\n waypoints.map((p) => p.r),\n '',\n ),\n key,\n ),\n p: waypoints.reduce((sum, p) => sum + p.p, 0),\n })\n } else if (key[1] == 'i') {\n // @import\n // eslint-disable-next-line @typescript-eslint/no-extra-semi\n ;(Array.isArray(value) ? value : [value]).forEach(\n (value) => value && rules.push({ p: 0, r: `${key} ${value};` }),\n )\n } else {\n // @screen\n if (key[2] == 'c') {\n key = buildMediaQuery(context.theme('screens', tail(key, 8).trim()) as string)\n }\n\n // Some nested block like @media, dive into it\n stringify(\n [...atRules, key],\n selector,\n presedence | responsivePrecedence(key) | atRulePresedence(key),\n value as MaybeArray<CSSRules>,\n important,\n )\n }\n } else {\n // A selector block: { '&:focus': { ... } }\n stringify(\n atRules,\n // If this is a nested selector we need to\n // - replace `&` with the current selector\n selector\n ? // Go over the selector and replace the matching selectors respecting multiple selectors\n join(\n selector.split(/,(?![^[]*])/g).map((selectorPart) =>\n // Same for the key\n join(\n key.split(/,(?![^[]*])/g).map((keyPart) =>\n // If the current part has a nested selector replace it\n includes(keyPart, '&')\n ? keyPart.replace(/&/g, selectorPart)\n : (selectorPart && selectorPart + ' ') + keyPart,\n ),\n ',',\n ),\n ),\n ',',\n )\n : key,\n presedence,\n value as MaybeArray<CSSRules>,\n important,\n )\n }\n }\n })\n\n // We have collected all properties\n // if there have been some we need to create a css rule\n if (numberOfDeclarations) {\n // Inject declarations\n\n rules.push({\n // Wrap block with upper at-rules\n r: atRules.reduceRight(stringifyBlock, stringifyBlock(declarations, selector)),\n\n // Calculate precedence\n p:\n presedence *\n // Declarations: 8 bits = 256\n (1 << 8) +\n // 4: number of declarations (descending)\n (((Math.max(0, 15 - numberOfDeclarations) & 15) << 4) |\n // 4: greatest precedence of properties\n // if there is no property presedence this is most likely a custom property only declaration\n // these have the highest presedence\n ((maxPropertyPresedence || 15) & 15)),\n })\n }\n }\n\n const variantPresedence = makeVariantPresedenceCalculator(theme, variants)\n\n return (css, className, rule, layer = 0 /* Layerbase */) => {\n // Initial presedence based on layer (base = 0, components = 1, utilities = 2, css = 3)\n layer <<= 28\n\n rules = []\n\n stringify(\n [],\n className ? '.' + escape(className) : '',\n // If we have a rule, create starting presedence based on the variants\n rule ? rule.v.reduceRight(variantPresedence, layer) : layer,\n css,\n rule && rule.i,\n )\n\n return rules\n }\n}\n", "import type { Context, Sheet, Mode, SheetInit } from '../types'\n\nimport { sortedInsertionIndex } from '../internal/util'\n\nimport type { RuleWithPresedence } from './serialize'\n\n// Insert css rules using presedence to find the correct position within the sheet\nexport const inject = (\n sheet: Sheet,\n mode: Mode,\n init: SheetInit,\n context: Context,\n): ((rule: RuleWithPresedence) => void) => {\n // An array of presedence by index within the sheet\n // always sorted\n let sortedPrecedences: number[]\n init<number[]>((value = []) => (sortedPrecedences = value))\n\n // Cache for already inserted css rules\n // to prevent double insertions\n let insertedRules: Set<string>\n init<Set<string>>((value = new Set()) => (insertedRules = value))\n\n return ({ r: css, p: presedence }) => {\n // If not already inserted\n if (!insertedRules.has(css)) {\n // Mark rule as inserted\n insertedRules.add(css)\n\n // Find the correct position\n const index = sortedInsertionIndex(sortedPrecedences, presedence)\n\n try {\n // Insert\n sheet.insert(css, index)\n\n // Update sorted index\n sortedPrecedences.splice(index, 0, presedence)\n } catch (error) {\n // Some thrown error a because of specific pseudo classes\n // let filter them to prevent unnecessary warnings\n // ::-moz-focus-inner\n // :-moz-focusring\n if (!/:-[mwo]/.test(css)) {\n mode.report({ id: 'INJECT_CSS_ERROR', css, error: error as Error }, context)\n }\n }\n }\n }\n}\n", "import type {\n Configuration,\n Context,\n Preflight,\n ThemeResolver,\n Theme,\n Rule,\n Hasher,\n InlineDirective,\n CSSRules,\n Mode,\n Falsy,\n TypescriptCompat,\n} from '../types'\n\nimport { corePlugins } from './plugins'\nimport { createPreflight } from './preflight'\nimport { coreVariants } from './variants'\n\nimport { cssomSheet, voidSheet } from './sheets'\nimport { silent, strict, warn } from './modes'\nimport { autoprefix, noprefix } from './prefix'\nimport { makeThemeResolver } from './theme'\n\nimport {\n cyrb32,\n identity,\n tail,\n merge,\n evalThunk,\n ensureMaxSize,\n includes,\n join,\n} from '../internal/util'\n\nimport { parse } from './parse'\nimport { translate as makeTranslate } from './translate'\nimport { decorate as makeDecorate, prepareVariantSelector } from './decorate'\nimport { serialize as makeSerialize } from './serialize'\nimport { inject as makeInject } from './inject'\n\nconst sanitize = <T>(\n value: T | boolean | undefined,\n defaultValue: T,\n disabled: T,\n enabled = defaultValue,\n): T => (value === false ? disabled : value === true ? enabled : value || defaultValue)\n\nconst loadMode = (mode: Configuration['mode']): Mode =>\n (typeof mode == 'string'\n ? ({ t: strict, a: warn, i: silent } as Record<string, Mode>)[mode[1]]\n : mode) || warn\n\nconst stringifyVariant = (selector: string, variant: string): string =>\n selector + (variant[1] == ':' ? tail(variant, 2) + ':' : tail(variant)) + ':'\n\n// Creates rule id including variants, negate and directive\n// which is exactly like a tailwind rule\nconst stringify = (rule: Rule, directive = rule.d): string =>\n typeof directive == 'function'\n ? ''\n : rule.v.reduce(stringifyVariant, '') + (rule.i ? '!' : '') + (rule.n ? '-' : '') + directive\n\n// Use hidden '_' property to collect class names which have no css translation like hashed twind classes\nconst COMPONENT_PROPS = { _: { value: '', writable: true } }\n\nexport const configure = (\n config: Configuration = {},\n): {\n init: () => void\n process: (tokens: unknown[]) => string\n} => {\n const theme = makeThemeResolver(config.theme)\n\n const mode = loadMode(config.mode)\n\n const hash = sanitize<Hasher | false>(config.hash, false, false, cyrb32)\n\n const important = config.important\n\n // Track the active rule\n // 1. to detect if a theme value should be negated\n // 2. for nested `tw()` calls\n // `sm:hover:${({ tw }) => tw`underline`}`\n // ==> 'sm:hover:underline`\n // Start with an \"empty\" rule, to always have value to use\n let activeRule: { v: string[]; n?: boolean } = { v: [] }\n\n let translateDepth = 0\n const lastTranslations: (CSSRules | string | Falsy)[] = []\n\n // The context that is passed to functions to access the theme, ...\n const context: Context = {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n tw: (...tokens: unknown[]) => process(tokens),\n\n theme: ((section: keyof Theme, key?: string | string[], defaultValue?: unknown): unknown => {\n const value =\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n theme(section, key as string, defaultValue as any) ??\n // If no theme value is found, notify 'mode', it may be able to resolve a value\n mode.unknown(\n section,\n key == null || Array.isArray(key) ? key : key.split('.'),\n defaultValue != null,\n context,\n )\n\n // Add negate to theme value using calc to support complex values\n return activeRule.n && value && includes('rg', (typeof value)[5])\n ? `calc(${value} * -1)`\n : value\n }) as ThemeResolver,\n\n tag: (value) => (hash ? hash(value) : value),\n\n css: (rules) => {\n translateDepth++\n const lastTranslationsIndex = lastTranslations.length\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-extra-semi\n ;(typeof rules == 'string' ? parse([rules]) : rules).forEach(convert)\n\n const css = Object.create(null, COMPONENT_PROPS)\n\n for (let index = lastTranslationsIndex; index < lastTranslations.length; index++) {\n const translation = lastTranslations[index]\n\n if (translation) {\n switch (typeof translation) {\n case 'object':\n merge(css, translation, context)\n break\n case 'string':\n css._ += (css._ && ' ') + translation\n }\n }\n }\n\n return css\n } finally {\n lastTranslations.length = lastTranslationsIndex\n translateDepth--\n }\n },\n }\n\n // Used to translate a rule using plugins\n const translate = makeTranslate({ ...corePlugins, ...config.plugins }, context)\n\n // Wrap `translate()` to keep track of the active rule\n // we need to use try-finally as mode.report may throw\n // and we must always reset the active rule\n const doTranslate = (rule: Rule): CSSRules | string | Falsy | TypescriptCompat => {\n // Keep track of active variants for nested `tw` calls\n const parentRule = activeRule\n activeRule = rule\n\n try {\n return evalThunk(translate(rule), context)\n } finally {\n activeRule = parentRule\n }\n }\n\n const variants = { ...coreVariants, ...config.variants }\n\n // Apply variants to a translation\n const decorate = makeDecorate(config.darkMode || 'media', variants, context)\n\n // Serialize a translation to css\n const serialize = makeSerialize(sanitize(config.prefix, autoprefix, noprefix), variants, context)\n\n const sheet = config.sheet || (typeof window == 'undefined' ? voidSheet() : cssomSheet(config))\n\n const { init = (callback) => callback() } = sheet\n\n // Inject css into the target enviroment\n const inject = makeInject(sheet, mode, init, context)\n\n // Cache rule ids and their generated class name\n let idToClassName: Map<string, string>\n init<Map<string, string>>((value = new Map()) => (idToClassName = value))\n\n // Cache generated inline directive names by their function identity\n const inlineDirectiveName = new WeakMap<InlineDirective, string>()\n\n // Used as replacer for JSON.stringify to calculate the hash for a inline function\n const evaluateFunctions = (key: string, value: unknown): unknown =>\n key == '_' // Do not include passed classNames in the hash\n ? undefined\n : typeof value == 'function'\n ? JSON.stringify(evalThunk(value, context), evaluateFunctions)\n : value\n\n // Responsible for converting (translate, decorate, serialize, inject) a rule\n const convert = (rule: Rule): string | undefined | void => {\n // If there is a active rule this one is nested\n // we must add the variants and need to reset the id\n if (!translateDepth && activeRule.v.length) {\n rule = { ...rule, v: [...activeRule.v, ...rule.v], $: '' }\n }\n\n // Static rules (from template literals) can cache their id\n // this greatly improves performance\n if (!rule.$) {\n // For inline directives (functions) `stringify` returns an empty string\n // in that case we check if we already have a name for the function\n // and use that one to generate the id\n rule.$ = stringify(rule, inlineDirectiveName.get(rule.d as InlineDirective))\n }\n\n // Check if we already have a class name for this rule id\n let className = translateDepth ? null : idToClassName.get(rule.$)\n\n if (className == null) {\n // 2. translate each rule using plugins\n let translation = doTranslate(rule)\n\n // If this is a unknown inline directive\n if (!rule.$) {\n // We can now generate a unique name based on the created translation\n // This id does not include the variants as a directive is always independent of variants\n // Variants are applied below using `decorate()`\n // JSON.stringify ignores functions - by using a custom replace\n // we can calculate a hash based on the value returned by these functions\n // eslint-disable-next-line no-var\n rule.$ = cyrb32(JSON.stringify(translation, evaluateFunctions))\n\n // Remember it\n inlineDirectiveName.set(rule.d as InlineDirective, rule.$)\n\n // Generate an id including the current variants\n rule.$ = stringify(rule, rule.$)\n }\n\n if (translation && typeof translation == 'object') {\n rule.v = rule.v.map(prepareVariantSelector)\n if (important) rule.i = important\n\n // 3. decorate: apply variants\n translation = decorate(translation, rule)\n\n if (translateDepth) {\n lastTranslations.push(translation)\n } else {\n // - components: layer.components = 1\n // - plugins: layer.utilities = 2\n // - inline directive: layer.css = 3\n const layer = typeof rule.d == 'function' ? (typeof translation._ == 'string' ? 1 : 3) : 2\n\n className =\n hash || typeof rule.d == 'function' ? (hash || cyrb32)(layer + rule.$) : rule.$\n\n // 4. serialize: convert to css string with precedence\n // 5. inject: add to dom\n serialize(translation, className, rule, layer).forEach(inject)\n\n if (translation._) {\n className += ' ' + translation._\n }\n }\n } else {\n // CSS class names have been returned\n if (typeof translation == 'string') {\n // Use as is\n className = translation\n } else {\n // No plugin or plugin did not return something\n className = rule.$\n mode.report({ id: 'UNKNOWN_DIRECTIVE', rule: className }, context)\n }\n\n if (translateDepth && typeof rule.d !== 'function') {\n lastTranslations.push(className)\n }\n }\n\n if (!translateDepth) {\n // Remember the generated class name\n idToClassName.set(rule.$, className as string)\n\n // Ensure the cache does not grow unlimited\n ensureMaxSize(idToClassName, 30000)\n }\n }\n\n return className as string\n }\n\n // This function is called from `tw(...)`\n // it parses, translates, decorates, serializes and injects the tokens\n const process = (tokens: unknown[]): string =>\n join(parse(tokens).map(convert).filter(Boolean) as string[], ' ')\n\n // Determine if we should inject the preflight (browser normalize)\n const preflight = sanitize<Preflight | false | CSSRules>(config.preflight, identity, false)\n\n if (preflight) {\n // Create the base tailwind preflight css rules\n const css = createPreflight(theme)\n\n // Call the preflight handler, serialize and inject the result\n const styles = serialize(\n typeof preflight == 'function'\n ? evalThunk(preflight(css, context), context) || css\n : { ...css, ...preflight },\n )\n\n init<boolean>((injected = (styles.forEach(inject), true)) => injected)\n }\n\n return {\n init: () => mode.report({ id: 'LATE_SETUP_CALL' }, context),\n process,\n }\n}\n", "import type { Configuration, Context, Instance } from '../types'\n\nimport { configure } from './configure'\n\nexport const create = (config?: Configuration): Instance => {\n // We are using lazy variables to trigger setup either\n // on first `setup` or `tw` call\n //\n // This allows to provide one-time lazy configuration\n //\n // These variables are not named `tw` and `setup`\n // as we use `tw` and `setup` to find the callee site\n // during stacktrace generation\n // This allows the error stacktrace to start at the call site.\n\n // Used by `tw`\n let process = (tokens: unknown[]): string => {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n init()\n return process(tokens)\n }\n\n // Used by `setup`\n let init = (config?: Configuration): void => {\n // Replace implementation with configured ones\n // `process`: the real one\n // `init`: invokes `mode.report` with `LATE_SETUP_CALL`\n // eslint-disable-next-line @typescript-eslint/no-extra-semi\n ;({ process, init } = configure(config))\n }\n\n // If we got a config, start right away\n if (config) init(config)\n\n let context: Context\n const fromContext = <Key extends keyof Context>(key: Key) => (): Context[Key] => {\n if (!context) {\n process([\n (_: Context) => {\n context = _\n return ''\n },\n ])\n }\n\n return context[key]\n }\n\n // The instance methods delegate to the lazy ones.\n // This ensures that after setup we use the configured\n // `process` and `setup` fails.\n return {\n tw: Object.defineProperties((...tokens: unknown[]) => process(tokens), {\n theme: {\n get: fromContext('theme'),\n },\n // css: {\n // get: fromContext('css'),\n // },\n // tag: {\n // get: fromContext('tag'),\n // },\n }),\n\n setup: (config) => init(config),\n }\n}\n", "import { create } from './instance'\n\nexport const { tw, setup } = /*#__PURE__*/ create()\n"],
5 "mappings": "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",
6 "names": []
7}