{"version":3,"file":"tailwind.cjs","sources":["../../../src/utils/tailwind.js"],"sourcesContent":["/**\n * Tailwind CSS 提供器(轻量,不做编译)\n *\n * 三个来源:\n *   1. 打包的通用 Tailwind CSS (src/assets/tailwind-defaults.css, 158KB, 1000+ utility)\n *   2. 用户传入的 CSS 字符串 (tailwind: { css: '...' })\n *   3. 用户指定的 CSS 文件路径 (tailwind: { input: '/path/to.css' })\n *\n * 不调任何 CLI、不开子进程、不写缓存目录。\n * 想要自定义主题 → 自己 npx tailwindcss 预编译,然后通过 input 或 css 传进来。\n */\nimport path from 'path';\nimport fs from 'fs-extra';\nimport { fileURLToPath } from 'url';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\n/**\n * 多个候选路径,按优先级查找(应对 dev/dist/打包后不同位置):\n *   1. <this>/../assets/tailwind-defaults.css        (dist/esm/utils/ → dist/esm/assets/)\n *   2. <this>/../../src/assets/...                     (dist/esm/utils/ → src/assets/,build 没复制时回退)\n *   3. <this>/../../assets/...                         (src/utils/ → src/assets/, dev 模式)\n */\nfunction resolveBundledCssPath() {\n  const candidates = [\n    path.resolve(__dirname, '..', 'assets', 'tailwind-defaults.css'),\n    path.resolve(__dirname, '..', '..', 'src', 'assets', 'tailwind-defaults.css'),\n    path.resolve(__dirname, '..', '..', 'assets', 'tailwind-defaults.css'),\n  ];\n  for (const p of candidates) {\n    if (fs.existsSync(p)) return p;\n  }\n  return candidates[0]; // fallback,文件找不到时下面的错误信息会用这个路径\n}\n\nlet _bundledCache = null;\nlet _bundledPath = null;\n\nfunction getBundledCss() {\n  if (!_bundledCache) {\n    const p = _bundledPath || (_bundledPath = resolveBundledCssPath());\n    if (!fs.existsSync(p)) {\n      throw new Error(\n        `[tailwind] 通用 Tailwind CSS 找不到: ${p}\\n` +\n        `请重新安装 fkbuilder (确保 dist/{esm,cjs}/assets/tailwind-defaults.css 存在),` +\n        `或在 addHtml({tailwind:{input:'./your.css'}}) 指定预编译好的 CSS`\n      );\n    }\n    _bundledCache = fs.readFileSync(p, 'utf8');\n  }\n  return _bundledCache;\n}\n\n/**\n * 获取 Tailwind CSS 文本\n *\n * @param {boolean|object} [config]\n *   - `true`: 返回打包的通用 CSS\n *   - `{ css: '...' }`: 返回传入的 CSS 字符串\n *   - `{ input: '/path.css' }`: 读取本地 CSS 文件\n *\n * @returns {string} CSS 文本\n */\nexport function getTailwindCss(config = {}) {\n  if (typeof config === 'boolean') {\n    return config ? getBundledCss() : '';\n  }\n\n  if (config.css && typeof config.css === 'string') {\n    return config.css;\n  }\n\n  if (config.input) {\n    const p = path.resolve(config.input);\n    if (!fs.existsSync(p)) {\n      throw new Error(`[tailwind] CSS 文件不存在: ${p}`);\n    }\n    return fs.readFileSync(p, 'utf8');\n  }\n\n  return getBundledCss();\n}\n\n/**\n * 清空内存缓存(用于测试或强制重读)\n */\nexport function clearTailwindCache() {\n  _bundledCache = null;\n}"],"names":["__dirname","fileURLToPath"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA,MAAMA,WAAS,GAAG,IAAI,CAAC,OAAO,CAACC,iBAAa,CAAC,qQAAe,CAAC,CAAC;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,GAAG;AACjC,EAAE,MAAM,UAAU,GAAG;AACrB,IAAI,IAAI,CAAC,OAAO,CAACD,WAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,uBAAuB,CAAC;AACpE,IAAI,IAAI,CAAC,OAAO,CAACA,WAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,uBAAuB,CAAC;AACjF,IAAI,IAAI,CAAC,OAAO,CAACA,WAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,uBAAuB,CAAC;AAC1E,GAAG;AACH,EAAE,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;AAC9B,IAAI,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;AAClC,EAAE;AACF,EAAE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACvB;;AAEA,IAAI,aAAa,GAAG,IAAI;AACxB,IAAI,YAAY,GAAG,IAAI;;AAEvB,SAAS,aAAa,GAAG;AACzB,EAAE,IAAI,CAAC,aAAa,EAAE;AACtB,IAAI,MAAM,CAAC,GAAG,YAAY,KAAK,YAAY,GAAG,qBAAqB,EAAE,CAAC;AACtE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;AAC3B,MAAM,MAAM,IAAI,KAAK;AACrB,QAAQ,CAAC,gCAAgC,EAAE,CAAC,CAAC,EAAE,CAAC;AAChD,QAAQ,CAAC,oEAAoE,CAAC;AAC9E,QAAQ,CAAC,uDAAuD;AAChE,OAAO;AACP,IAAI;AACJ,IAAI,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC;AAC9C,EAAE;AACF,EAAE,OAAO,aAAa;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAc,CAAC,MAAM,GAAG,EAAE,EAAE;AAC5C,EAAE,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE;AACnC,IAAI,OAAO,MAAM,GAAG,aAAa,EAAE,GAAG,EAAE;AACxC,EAAE;;AAEF,EAAE,IAAI,MAAM,CAAC,GAAG,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE;AACpD,IAAI,OAAO,MAAM,CAAC,GAAG;AACrB,EAAE;;AAEF,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE;AACpB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AACxC,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;AAC3B,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,CAAC;AACnD,IAAI;AACJ,IAAI,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC;AACrC,EAAE;;AAEF,EAAE,OAAO,aAAa,EAAE;AACxB;;AAEA;AACA;AACA;AACO,SAAS,kBAAkB,GAAG;AACrC,EAAE,aAAa,GAAG,IAAI;AACtB;;;;;"}