{"version":3,"file":"tws.cjs","sources":["../../src/utils/tailwindCache.js","../../src/utils/errorHandler.js","../../src/css/resolver.js","../../src/css/parser.js","../../src/core/constants.js","../../src/core/tws.js"],"sourcesContent":["/**\n * Tailwind Cache - Minimal implementation (post-cleanup)\n * Directly invokes generator/converter without persistent caching.\n */\n\nlet _cachedCssObject = null;\n\nexport function resetTailwindCache() {\n  _cachedCssObject = null;\n}\n\nexport function getTailwindCache() {\n  return {\n    getOrGenerate(generateFn, convertFn) {\n      if (_cachedCssObject) return _cachedCssObject;\n      const cssString = generateFn ? generateFn() : \"\";\n      _cachedCssObject = convertFn ? convertFn(cssString) : {};\n      return _cachedCssObject;\n    },\n    get(className) {\n      return _cachedCssObject?.[className];\n    },\n    set(className, value) {\n      if (_cachedCssObject) _cachedCssObject[className] = value;\n    },\n    has(className) {\n      return !!_cachedCssObject?.[className];\n    },\n    clear() {\n      _cachedCssObject = null;\n    }\n  };\n}\n","/**\n * Error Handler - Stub (post-cleanup)\n */\n\nexport class TwsError extends Error {\n  constructor(message, code = \"UNKNOWN_ERROR\") {\n    super(message);\n    this.code = code;\n    this.name = \"TwsError\";\n  }\n}\n\nexport function onError(_handler) {\n  // No-op in stub mode\n}\n\nexport function handleError(error, context = \"\") {\n  if (typeof console !== \"undefined\" && console.warn) {\n    console.warn(`[react-tailwind-theme]${context ? ` [${context}]` : \"\"} ${error?.message || error}`);\n  }\n  return null;\n}\n","/**\n * CSS Resolver - Stub (post-cleanup)\n * Original file was removed during scope reduction.\n * This stub maintains import compatibility.\n */\n\nexport function separateAndResolveCSS(_className) {\n  return \"\";\n}\n\nexport function resolveCssToClearCss(css) {\n  return css;\n}\n\nexport function inlineStyleToJson(styleString) {\n  const result = {};\n  if (!styleString || typeof styleString !== \"string\") return result;\n  const pairs = styleString.split(\";\");\n  for (const pair of pairs) {\n    const [prop, val] = pair.split(\":\");\n    if (prop && val) result[prop.trim()] = val.trim();\n  }\n  return result;\n}\n","/**\n * CSS Parser - Stub (post-cleanup)\n * Original file was removed during scope reduction.\n * This stub maintains import compatibility.\n */\n\nexport function processOpacityModifier(_className, _opacity) {\n  return null;\n}\n\nexport function parseClassName(className) {\n  return { prefix: \"\", core: className, suffix: \"\" };\n}\n","/**\n * Pre-compiled Regex Constants and Configuration\n * \n * Pre-compiling regex patterns provides 50-100x performance improvement\n * by avoiding repeated regex object creation in hot code paths.\n * \n * @module core/constants\n */\n\n// ============================================================================\n// CLASS PARSING\n// ============================================================================\n\n/** Regex for parsing Tailwind class names (includes . for decimal values like p-0.5) */\nexport const CLASS_PARSER_REGEX = /[\\w.\\-\\/]+(?:\\/\\d+)?(?:\\[[^\\]]+\\])?/g;\n\n// ============================================================================\n// OPACITY MODIFIERS\n// ============================================================================\n\n/** Regex for extracting opacity modifiers (e.g., /50 in text-red-500/50) */\nexport const OPACITY_MODIFIER_REGEX = /\\/(\\d+)$/;\n\n/** Pre-compiled regex patterns for opacity CSS custom properties */\nexport const OPACITY_PROP_REGEXES = {\n  \"--text-opacity\": /--text-opacity\\s*:\\s*[\\d.]+/gi,\n  \"--bg-opacity\": /--bg-opacity\\s*:\\s*[\\d.]+/gi,\n  \"--border-opacity\": /--border-opacity\\s*:\\s*[\\d.]+/gi,\n  \"--ring-opacity\": /--ring-opacity\\s*:\\s*[\\d.]+/gi,\n  \"--divide-opacity\": /--divide-opacity\\s*:\\s*[\\d.]+/gi,\n  \"--placeholder-opacity\": /--placeholder-opacity\\s*:\\s*[\\d.]+/gi,\n  \"--text-decoration-opacity\": /--text-decoration-opacity\\s*:\\s*[\\d.]+/gi,\n  \"--outline-opacity\": /--outline-opacity\\s*:\\s*[\\d.]+/gi,\n  \"--accent-opacity\": /--accent-opacity\\s*:\\s*[\\d.]+/gi,\n  \"--caret-opacity\": /--caret-opacity\\s*:\\s*[\\d.]+/gi,\n};\n\n// ============================================================================\n// CSS PARSING\n// ============================================================================\n\n/** Regex for parsing CSS class rules */\nexport const CSS_CLASS_REGEX = /([a-zA-Z0-9\\-_\\\\/.]+)\\s*{\\s*([^}]+)\\s*}/g;\n\n/** Regex for CSS string manipulation */\nexport const DOUBLE_BACKSLASH_REGEX = /\\\\\\\\/g;\nexport const LEADING_UNDERSCORE_REGEX = /^_/;\nexport const MULTIPLE_SPACES_REGEX = /\\s+/g;\n\n/** Regex for CSS declarations */\nexport const CSS_SEMICOLON_SPLIT_REGEX = /;/;\nexport const CSS_COLON_SPLIT_REGEX = /:/;\n\n// ============================================================================\n// BRACKET ENCODING/DECODING\n// ============================================================================\n\n/** Regex for bracket content extraction and encoding */\nexport const BRACKET_CONTENT_REGEX = /\\[([^\\]]+)\\]/g;\nexport const OPENING_PAREN_REGEX = /\\(/g;\nexport const CLOSING_PAREN_REGEX = /\\)/g;\nexport const ENCODED_PAREN_OPEN_REGEX = /__P__/g;\nexport const ENCODED_PAREN_CLOSE_REGEX = /__C__/g;\n\n// ============================================================================\n// VARIANT EXPANSION\n// ============================================================================\n\n/** Regex for directive group expansion (e.g., p(4 8) -> p-4 p-8) */\nexport const DIRECTIVE_GROUP_REGEX = /(\\w+)\\(([^()]+)\\)/g;\n\n/** Regex for variant group expansion (e.g., hover:(text-blue bg-blue)) */\nexport const VARIANT_GROUP_REGEX = /(\\w+):\\(([^()]+(?:\\((?:[^()]+)\\))?[^()]*)\\)/g;\n\nexport const WHITESPACE_SPLIT_REGEX = /\\s+/;\nexport const VARIANT_COLON_SPLIT_REGEX = /:/;\n\n// ============================================================================\n// CSS VARIABLE RESOLUTION\n// ============================================================================\n\n/** Regex for CSS custom property (var) resolution — supports nested parens in fallback (e.g. rgba(...)) */\nexport const CSS_VAR_REGEX = /var\\((--[\\w-]+)(?:,\\s*((?:[^()]+|\\([^()]*\\))*))?\\)/g;\nexport const CAMEL_CASE_REGEX = /-([a-z])/g;\n\n// ============================================================================\n// ANIMATION DETECTION\n// ============================================================================\n\n/** Regex for detecting animation names in CSS */\nexport const ANIMATION_NAME_REGEX = /animation(?:-name)?:\\s*([a-zA-Z0-9-]+)/gi;\n\n// ============================================================================\n// CUSTOM CLASS DETECTION\n// ============================================================================\n\n/** Regex for arbitrary value detection (e.g., w-[123px]) */\nexport const CUSTOM_VALUE_BRACKET_REGEX = /\\[([^\\]]+)\\]/;\nexport const CUSTOM_VALUE_FULL_REGEX = /^(.+?)\\[(.+)\\]$/;\n\n// ============================================================================\n// SELECTOR VARIANTS\n// ============================================================================\n\n/** Regex for selector variants (e.g., c-first, c-odd) */\nexport const SELECTOR_VARIANT_REGEX = /c-(first|last|odd|even|\\d+|not\\([^)]+\\))/g;\nexport const NOT_SELECTOR_REGEX = /^not\\(([^)]+)\\)$/;\nexport const DIGIT_ONLY_REGEX = /^\\d+$/;\n\n// ============================================================================\n// COLOR PROPERTIES\n// ============================================================================\n\n/** List of CSS properties that accept color values */\nexport const COLOR_PROPERTIES = [\n  \"color\",\n  \"background-color\",\n  \"border-color\",\n  \"text-decoration-color\",\n  \"outline-color\",\n  \"fill\",\n  \"stroke\",\n  \"caret-color\",\n  \"accent-color\",\n];\n\n/**\n * Pre-compiled regex patterns for each color property\n * Used in opacity modifier processing for 50-100x performance improvement\n */\nexport const COLOR_REGEX_PATTERNS = new Map();\nfor (const prop of COLOR_PROPERTIES) {\n  const escapedProp = prop.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n  COLOR_REGEX_PATTERNS.set(prop, {\n    rgb: new RegExp(\n      `(${escapedProp}\\\\s*:\\\\s*)rgb\\\\((\\\\d+),\\\\s*(\\\\d+),\\\\s*(\\\\d+)\\\\)`,\n      \"gi\"\n    ),\n    rgba: new RegExp(\n      `(${escapedProp}\\\\s*:\\\\s*)rgba\\\\((\\\\d+),\\\\s*(\\\\d+),\\\\s*(\\\\d+),\\\\s*[\\\\d.]+\\\\)`,\n      \"gi\"\n    ),\n    hsl: new RegExp(\n      `(${escapedProp}\\\\s*:\\\\s*)hsl\\\\((\\\\d+),\\\\s*([\\\\d.]+%),\\\\s*([\\\\d.]+%)\\\\)`,\n      \"gi\"\n    ),\n    hsla: new RegExp(\n      `(${escapedProp}\\\\s*:\\\\s*)hsla\\\\((\\\\d+),\\\\s*([\\\\d.]+%),\\\\s*([\\\\d.]+%),\\\\s*[\\\\d.]+\\\\)`,\n      \"gi\"\n    ),\n    hex: new RegExp(`(${escapedProp}\\\\s*:\\\\s*)(#[0-9a-fA-F]{3,6})`, \"gi\"),\n  });\n}\n\n// ============================================================================\n// CSS PROPERTY CONVERSION\n// ============================================================================\n\n/** Regex for converting camelCase to kebab-case */\nexport const UPPERCASE_LETTER_REGEX = /([A-Z])/g;\n\n/** Regex for escaping special characters */\nexport const ESCAPE_SLASH_REGEX = /\\//g;\nexport const ESCAPE_DOT_REGEX = /\\./g;\n\n// ============================================================================\n// TAILWIND CONFIGURATION\n// ============================================================================\n\n/** Fraction denominators supported in Tailwind (for w-1/2, h-2/3, etc.) */\nexport const FRACTION_DENOMINATORS = [2, 3, 4, 5, 6, 12];\n\n/** Prefixes that support fractional values */\nexport const FRACTION_PREFIXES = [\n  \"w-\",\n  \"h-\",\n  \"max-w-\",\n  \"max-h-\",\n  \"min-w-\",\n  \"min-h-\",\n  \"top-\",\n  \"bottom-\",\n  \"left-\",\n  \"right-\",\n  \"inset-\",\n  \"inset-x-\",\n  \"inset-y-\",\n  \"translate-x-\",\n  \"translate-y-\",\n  \"rounded-t-\",\n  \"rounded-b-\",\n  \"rounded-l-\",\n  \"rounded-r-\",\n  \"rounded-bl-\",\n  \"rounded-br-\",\n  \"rounded-tl-\",\n  \"rounded-tr-\",\n  \"flex-basis-\",\n  \"z-\",\n];\n\n/** Responsive breakpoints */\nexport const BREAKPOINTS = {\n  // Standard responsive breakpoints (Tailwind v3 + v4)\n  sm: \"@media (min-width: 640px)\",\n  md: \"@media (min-width: 768px)\",\n  lg: \"@media (min-width: 1024px)\",\n  xl: \"@media (min-width: 1280px)\",\n  \"2xl\": \"@media (min-width: 1536px)\",\n  \"3xl\": \"@media (min-width: 1920px)\",\n  // Container queries (Tailwind v4)\n  \"@sm\": \"@container (min-width: 640px)\",\n  \"@md\": \"@container (min-width: 768px)\",\n  \"@lg\": \"@container (min-width: 1024px)\",\n  \"@xl\": \"@container (min-width: 1280px)\",\n  \"@2xl\": \"@container (min-width: 1536px)\",\n  \"@3xl\": \"@container (min-width: 1920px)\",\n  // Special media variants (Tailwind v4)\n  \"starting\": \"@starting-style\",\n  \"forced-colors\": \"@media (forced-colors: active)\",\n  print: \"@media print\",\n  portrait: \"@media (orientation: portrait)\",\n  landscape: \"@media (orientation: landscape)\",\n};\n\n/** Pseudo-class variants */\nexport const PSEUDO_VARIANTS = new Set([\n  \"hover\",\n  \"focus\",\n  \"focus-within\",\n  \"focus-visible\",\n  \"active\",\n  \"visited\",\n  \"disabled\",\n  \"enabled\",\n  \"first\",\n  \"last\",\n  \"checked\",\n  \"unchecked\",\n  \"indeterminate\",\n  \"invalid\",\n  \"valid\",\n  \"required\",\n  \"optional\",\n  \"read-only\",\n  \"read-write\",\n  \"placeholder-shown\",\n  \"autofill\",\n  \"even\",\n  \"odd\",\n  \"empty\",\n  \"target\",\n  \"default\",\n  \"in-range\",\n  \"out-of-range\",\n  \"user-invalid\",\n  \"user-valid\",\n]);\n\n/**\n * Attribute-based variants — generate [attr] selectors instead of :pseudo\n * Added in Tailwind v4 (e.g., details[open], dialog[open])\n */\nexport const ATTRIBUTE_VARIANTS = new Set([\n  \"open\",\n]);\n\n/** Special variant handlers */\nexport const SPECIAL_VARIANTS = {\n  group: (state, sel) => `.group:${state} ${sel}`,\n  peer: (state, sel) => `.peer:${state} ~ ${sel}`,\n  dark: (state, sel) => `.dark ${sel}`,\n  // Tailwind v4: not-* and has-* structural variants\n  not: (state, sel) => `${sel}:not(${state})`,\n  has: (state, sel) => `${sel}:has(${state})`,\n  \"aria\": (state, sel) => `${sel}[aria-${state}]`,\n  \"data\": (state, sel) => `${sel}[data-${state}]`,\n  // Modern selector variants\n  \"is\": (state, sel) => `${sel}:is(${state})`,\n  \"where\": (state, sel) => `${sel}:where(${state})`,\n  \"has-not\": (state, sel) => `${sel}:has(:not(${state}))`,\n  \"group-has\": (state, sel) => `.group:has(${state}) ${sel}`,\n  \"peer-has\": (state, sel) => `.peer:has(${state}) ~ ${sel}`,\n  \"group-not\": (state, sel) => `.group:not(${state}) ${sel}`,\n  \"peer-not\": (state, sel) => `.peer:not(${state}) ~ ${sel}`,\n  \"group-is\": (state, sel) => `.group:is(${state}) ${sel}`,\n  \"peer-is\": (state, sel) => `.peer:is(${state}) ~ ${sel}`,\n  \"group-where\": (state, sel) => `.group:where(${state}) ${sel}`,\n  \"peer-where\": (state, sel) => `.peer:where(${state}) ~ ${sel}`,\n  // Reduced motion / accessibility\n  \"motion-safe\": (state, sel) => `@media (prefers-reduced-motion: no-preference) { ${sel} }`,\n  \"motion-reduce\": (state, sel) => `@media (prefers-reduced-motion: reduce) { ${sel} }`,\n  \"contrast-more\": (state, sel) => `@media (prefers-contrast: more) { ${sel} }`,\n  \"contrast-less\": (state, sel) => `@media (prefers-contrast: less) { ${sel} }`,\n};\n\n/** Selector variants for child selection */\nexport const SELECTOR_VARIANTS = {\n  first: () => \"> :first-child\",\n  last: () => \"> :last-child\",\n  odd: () => \"> :nth-child(odd)\",\n  even: () => \"> :nth-child(even)\",\n  not: (arg) => `> :not(${arg})`,\n  number: (arg) => `> :nth-child(${arg})`,\n  \"has\": (arg) => `:has(> ${arg})`,\n  \"is\": (arg) => `:is(> ${arg})`,\n  \"where\": (arg) => `:where(> ${arg})`,\n};\n\n// ============================================================================\n// SMART SELECTOR VARIANTS (Modern CSS selectors)\n// ============================================================================\n\n/** Regex for has-[...] variant */\nexport const HAS_VARIANT_REGEX = /has-\\[([^\\]]+)\\]/;\n\n/** Regex for not-[...] variant */\nexport const NOT_VARIANT_REGEX = /not-\\[([^\\]]+)\\]/;\n\n/** Regex for is-[...] variant */\nexport const IS_VARIANT_REGEX = /is-\\[([^\\]]+)\\]/;\n\n/** Regex for where-[...] variant */\nexport const WHERE_VARIANT_REGEX = /where-\\[([^\\]]+)\\]/;\n\n/** Regex for aria-[...] variant */\nexport const ARIA_VARIANT_REGEX = /aria-\\[([^\\]]+)\\]/;\n\n/** Regex for data-[...] variant */\nexport const DATA_VARIANT_REGEX = /data-\\[([^\\]]+)\\]/;\n\n/** Regex for group-has-[...] variant */\nexport const GROUP_HAS_VARIANT_REGEX = /group-has-\\[([^\\]]+)\\]/;\n\n/** Regex for peer-has-[...] variant */\nexport const PEER_HAS_VARIANT_REGEX = /peer-has-\\[([^\\]]+)\\]/;\n\n/** Regex for group-not-[...] variant */\nexport const GROUP_NOT_VARIANT_REGEX = /group-not-\\[([^\\]]+)\\]/;\n\n/** Regex for peer-not-[...] variant */\nexport const PEER_NOT_VARIANT_REGEX = /peer-not-\\[([^\\]]+)\\]/;\n\n// ============================================================================\n// CSS NESTING & SCOPE\n// ============================================================================\n\n/** Regex for @scope detection */\nexport const SCOPE_AT_RULE_REGEX = /@scope\\s*\\(\\s*([^)]+)\\s*\\)(?:\\s+to\\s*\\(\\s*([^)]+)\\s*\\))?/;\n\n/** Regex for @container detection */\nexport const CONTAINER_AT_RULE_REGEX = /@container\\s+([^\\{]+)/;\n\n/** Regex for @position-try detection */\nexport const POSITION_TRY_AT_RULE_REGEX = /@position-try\\s+([^\\{]+)/;\n\n// ============================================================================\n// MODERN CSS PROPERTIES\n// ============================================================================\n\n/** CSS properties that support oklch */\nexport const OKLCH_COLOR_PROPERTIES = [\n  \"color\",\n  \"background-color\",\n  \"border-color\",\n  \"text-decoration-color\",\n  \"outline-color\",\n  \"fill\",\n  \"stroke\",\n  \"caret-color\",\n  \"accent-color\",\n  \"column-rule-color\",\n];\n\n/** Modern color space keywords */\nexport const MODERN_COLOR_SPACES = [\"oklch\", \"oklab\", \"lab\", \"lch\", \"display-p3\", \"srgb\", \"hsl\", \"hwb\"];\n\n// ============================================================================\n// ANIMATION KEYFRAMES\n// ============================================================================\n\n/** Built-in Tailwind animation keyframes */\nexport const BUILTIN_KEYFRAMES = {\n  spin: {\n    \"0%\": { transform: \"rotate(0deg)\" },\n    \"100%\": { transform: \"rotate(360deg)\" },\n  },\n  ping: {\n    \"75%, 100%\": { transform: \"scale(2)\", opacity: \"0\" },\n  },\n  pulse: {\n    \"50%\": { opacity: \".5\" },\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  fadeIn: {\n    \"0%\": { opacity: \"0\" },\n    \"50%\": { opacity: \"1\" },\n    \"100%\": { opacity: \"0\" },\n  },\n  slideUp: {\n    \"0%\": { transform: \"translateY(20px)\", opacity: \"0\" },\n    \"50%\": { transform: \"translateY(0)\", opacity: \"1\" },\n    \"100%\": { transform: \"translateY(-20px)\", opacity: \"0\" },\n  },\n};\n","/**\n * TWS Core - Tailwind to Style Converter\n * \n * Main function for converting Tailwind class names to inline styles or JSON objects.\n * \n * @module core/tws\n */\n\nimport { getTailwindCache } from \"../utils/tailwindCache.js\";\nconst logger = { warn: () => {}, error: () => {}, info: () => {}, debug: () => {} };\nimport { handleError } from \"../utils/errorHandler.js\";\nconst performanceMonitor = {\n  start: () => 0,\n  end: () => {},\n  measure: (fn) => fn(),\n};\nimport { separateAndResolveCSS, resolveCssToClearCss, inlineStyleToJson } from \"../css/resolver.js\";\nimport { processOpacityModifier } from \"../css/parser.js\";\nimport {\n  CLASS_PARSER_REGEX,\n  OPACITY_MODIFIER_REGEX,\n  CUSTOM_VALUE_BRACKET_REGEX,\n  FRACTION_DENOMINATORS,\n  FRACTION_PREFIXES,\n} from \"../core/constants.js\";\n\n/**\n * Convert Tailwind class string to inline CSS styles or JSON object\n * \n * Supports all Tailwind utilities including:\n * - Responsive variants (sm:, md:, lg:, xl:, 2xl:)\n * - Pseudo-state variants (hover:, focus:, active:, etc.)\n * - Opacity modifiers (text-red-500/50)\n * - Arbitrary values (w-[123px], text-[#abc])\n * - Important modifier (!bg-red-500)\n * \n * @param {string} classNames - String containing Tailwind classes to convert\n * @param {boolean} convertToJson - If true, returns JSON object; if false, returns CSS string\n * @returns {string|Object} Inline CSS string or style JSON object\n * \n * @example\n * // CSS string output\n * tws('bg-blue-500 text-white p-4')\n * // Returns: 'background-color: rgb(59, 130, 246); color: rgb(255, 255, 255); padding: 1rem;'\n * \n * @example\n * // JSON object output\n * tws('flex items-center gap-4', true)\n * // Returns: { display: 'flex', alignItems: 'center', gap: '1rem' }\n * \n * @example\n * // Opacity modifiers\n * tws('text-red-500/50')\n * // Returns: 'color: rgba(239, 68, 68, 0.5);'\n * \n * @example\n * // Arbitrary values\n * tws('w-[123px] text-[#abc]')\n * // Returns: 'width: 123px; color: #abc;'\n */\nexport function tws(classNames, convertToJson = false) {\n  const totalMarker = performanceMonitor.start(\"tws:total\");\n\n  try {\n    // Get CSS object from singleton cache (auto-generates if needed)\n    const tailwindCache = getTailwindCache();\n    const cssObject = tailwindCache.getOrGenerate(\n      // generateFn and convertFn arehandled by tailwindCache\n    );\n\n    // Validate input\n    if (\n      !classNames ||\n      typeof classNames !== \"string\" ||\n      classNames.trim() === \"\"\n    ) {\n      performanceMonitor.end(totalMarker);\n      return convertToJson ? {} : \"\";\n    }\n\n    // Parse class names\n    let classes;\n    try {\n      const parseMarker = performanceMonitor.start(\"tws:parse\");\n      CLASS_PARSER_REGEX.lastIndex = 0; // Reset global regex\n      classes = classNames.match(CLASS_PARSER_REGEX);\n      performanceMonitor.end(parseMarker);\n\n      // If no valid classes are found\n      if (!classes || classes.length === 0) {\n        logger.warn(\n          `No valid Tailwind classes found in input: \"${classNames}\"`\n        );\n        performanceMonitor.end(totalMarker);\n        return convertToJson ? {} : \"\";\n      }\n    } catch (error) {\n      logger.error(`Error parsing Tailwind classes: ${error.message}`);\n      performanceMonitor.end(totalMarker);\n      return convertToJson ? {} : \"\";\n    }\n\n    // Process classes with performance monitoring\n    const processMarker = performanceMonitor.start(\"tws:process\");\n    let cssResult = classes.map((className) => {\n      // Extract base class name without opacity modifier\n      // Only remove /digits if it's an opacity modifier (not a fraction like w-2/3)\n      // Opacity modifiers are typically /0-100, fractions are /2, /3, /4, /5, /6, /12\n      const opacityMatch = OPACITY_MODIFIER_REGEX.exec(className);\n      let baseClassName = className;\n      let hasOpacityModifier = false;\n\n      if (opacityMatch) {\n        const opacityValue = parseInt(opacityMatch[1], 10);\n        // If it's a valid opacity value (0-100), treat it as opacity modifier\n        if (opacityValue >= 0 && opacityValue <= 100) {\n          // Check if this could be a fraction (e.g., w-2/3, h-1/2)\n          // Fractions typically have denominators of 2, 3, 4, 5, 6, 12\n          const couldBeFraction =\n            FRACTION_DENOMINATORS.includes(opacityValue) &&\n            FRACTION_PREFIXES.some(\n              (prefix) =>\n                className.startsWith(prefix) ||\n                className.startsWith(`-${prefix}`)\n            );\n          if (!couldBeFraction) {\n            baseClassName = className.replace(/\\/\\d+$/, \"\");\n            hasOpacityModifier = true;\n          }\n        }\n      }\n\n      let result =\n        cssObject[baseClassName] ||\n        cssObject[baseClassName.replace(/\\//g, \"\\\\/\")] ||\n        cssObject[baseClassName.replace(/\\./g, \"\\\\.\")];\n\n      if (result) {\n        // Apply opacity modifier if present\n        if (\n          hasOpacityModifier &&\n          className.includes(\"/\") &&\n          /\\/\\d+$/.test(className)\n        ) {\n          result = processOpacityModifier(className, result);\n        }\n        return resolveCssToClearCss(result);\n      } else if (baseClassName.includes(\"[\")) {\n        const match = CUSTOM_VALUE_BRACKET_REGEX.exec(baseClassName);\n        if (match) {\n          const customValue = match[1];\n          const baseKey = baseClassName.split(\"[\")[0];\n          if (cssObject[`${baseKey}custom`]) {\n            let customResult = cssObject[`${baseKey}custom`].replace(\n              /custom_value/g,\n              customValue\n            );\n            // Apply opacity modifier to custom values too\n            if (\n              hasOpacityModifier &&\n              className.includes(\"/\") &&\n              /\\/\\d+$/.test(className)\n            ) {\n              customResult = processOpacityModifier(className, customResult);\n            }\n            return customResult;\n          }\n        }\n      }\n      return \"\";\n    });\n    performanceMonitor.end(processMarker);\n\n    // Resolve CSS\n    cssResult = performanceMonitor.measure(\n      () => separateAndResolveCSS(cssResult),\n      \"tws:resolve\"\n    );\n\n    // Convert to JSON if needed\n    if (convertToJson) {\n      cssResult = performanceMonitor.measure(\n        () => inlineStyleToJson(cssResult),\n        \"tws:json\"\n      );\n    }\n\n    performanceMonitor.end(totalMarker);\n    return cssResult;\n  } catch (error) {\n    performanceMonitor.end(totalMarker);\n    handleError(error, { classNames, convertToJson });\n    return convertToJson ? {} : \"\";\n  }\n}\n\n/**\n * Debounced version of tws function\n * \n * Useful for real-time class name updates in UI.\n * \n * @param {string} classNames - String containing Tailwind classes\n * @param {boolean} convertToJson - If true, returns JSON object\n * @param {number} wait - Debounce delay in milliseconds (default: 50ms)\n * @returns {Function} Debounced tws function\n */\nexport function debounce(func, wait = 100) {\n  let timeout;\n  let callCount = 0;\n\n  return function (...args) {\n    const context = this;\n    callCount++;\n\n    clearTimeout(timeout);\n    timeout = setTimeout(() => {\n      const marker = performanceMonitor.start(\n        `debounced:${func.name || \"anonymous\"}`\n      );\n      try {\n        const result = func.apply(context, args);\n        performanceMonitor.end(marker);\n        return result;\n      } catch (error) {\n        performanceMonitor.end(marker);\n        logger.error(`Debounced function error (call #${callCount}):`, error);\n        throw error;\n      }\n    }, wait);\n  };\n}\n\n/** Debounced version of tws with 50ms delay */\nexport const debouncedTws = debounce(tws, 50);\n"],"names":["_cachedCssObject","getTailwindCache","getOrGenerate","generateFn","convertFn","cssString","get","className","_cachedCssObject2","set","value","has","_cachedCssObject3","clear","handleError","error","context","arguments","length","undefined","console","warn","concat","message","separateAndResolveCSS","_className","resolveCssToClearCss","css","inlineStyleToJson","styleString","result","pairs","split","pair","_pair$split","_pair$split2","_slicedToArray","prop","val","trim","processOpacityModifier","_opacity","CLASS_PARSER_REGEX","OPACITY_MODIFIER_REGEX","CUSTOM_VALUE_BRACKET_REGEX","COLOR_PROPERTIES","COLOR_REGEX_PATTERNS","Map","escapedProp","replace","rgb","RegExp","rgba","hsl","hsla","hex","FRACTION_DENOMINATORS","FRACTION_PREFIXES","logger","info","debug","performanceMonitor","start","end","measure","fn","tws","classNames","convertToJson","totalMarker","tailwindCache","cssObject","classes","parseMarker","lastIndex","match","processMarker","cssResult","map","opacityMatch","exec","baseClassName","hasOpacityModifier","opacityValue","parseInt","couldBeFraction","includes","some","prefix","startsWith","test","customValue","baseKey","customResult","debounce","func","wait","timeout","_len","args","Array","_key","clearTimeout","setTimeout","marker","name","apply","debouncedTws"],"mappings":"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"}