{"version":3,"sources":["../../../node_modules/.pnpm/tsup@8.5.1_@microsoft+api-extractor@7.55.2_@types+node@25.0.3__jiti@2.6.1_postcss@8.5.22_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js","../src/export.ts","../src/sync.ts","../src/index.ts"],"sourcesContent":["// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () => \n  typeof document === \"undefined\" \n    ? new URL(`file:${__filename}`).href \n    : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') \n      ? document.currentScript.src \n      : new URL(\"main.js\", document.baseURI).href;\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","/* eslint-disable no-console */\nimport type { IconSet } from '@iconify/tools'\nimport type { ExportOptions } from './types'\nimport { promises as fs } from 'node:fs'\nimport { dirname } from 'node:path'\n\n/**\n * 导出图标集为 Iconify JSON 格式\n */\nexport async function exportIconSet(\n  iconSet: IconSet,\n  options: ExportOptions,\n): Promise<void> {\n  const { output, pretty = true } = options\n\n  // 导出为 Iconify JSON\n  const json = iconSet.export()\n\n  // 确保输出目录存在\n  const dir = dirname(output)\n  await fs.mkdir(dir, { recursive: true })\n\n  // 写入文件\n  const content = pretty\n    ? JSON.stringify(json, null, 2)\n    : JSON.stringify(json)\n\n  await fs.writeFile(output, content, 'utf-8')\n\n  console.log(`💾 已保存到: ${output}`)\n  console.log(`   图标数量: ${Object.keys(json.icons || {}).length}`)\n}\n\n/**\n * 导出为 UnoCSS collections 格式\n * 返回 { iconName: \"svg string\" } 格式\n *\n * 优化说明：\n * - 保持原始 viewBox 以维持设计意图\n * - 移除固定的 width/height 属性，让 CSS 控制显示尺寸\n * - 非正方形 icon（如品牌标识）会保持原始宽高比\n */\nexport function exportForUnoCSS(iconSet: IconSet): Record<string, string> {\n  const json = iconSet.export()\n  const icons: Record<string, string> = {}\n\n  for (const [name, icon] of Object.entries(json.icons || {})) {\n    const iconData = icon\n    const width = iconData.width || 24\n    const height = iconData.height || 24\n\n    // 只设置 viewBox，不设置固定的 width/height\n    // 这样可以通过 CSS 灵活控制显示大小，同时保持原始宽高比\n    icons[name] = `<svg viewBox=\"0 0 ${width} ${height}\">${iconData.body}</svg>`\n  }\n\n  return icons\n}\n","/* eslint-disable no-console */\nimport type { DocumentNotModified } from '@iconify/tools/lib/download/types/modified'\nimport type { FigmaImportNodeData } from '@iconify/tools/lib/import/figma/types/nodes'\nimport type { FigmaImportResult } from '@iconify/tools/lib/import/figma/types/result'\nimport type { FigmaIconsConfig, SyncResult } from './types'\nimport process from 'node:process'\nimport { cleanupSVG, IconSet, importFromFigma, isEmptyColor, parseColors, runSVGO } from '@iconify/tools'\n\ninterface IconNodeDetail {\n  nodeId: string\n  nodeName: string\n  pageName: string\n  path: string\n}\n\nfunction normalizeIconName(name: string): string {\n  return name\n    .toLowerCase()\n    .replace(/\\s+/g, '-')\n    .replace(/[^a-z0-9-]/g, '')\n}\n\nfunction isValidIconName(name: string): boolean {\n  return name.length > 0 && !name.startsWith('-')\n}\n\nfunction formatIconNameForLog(iconName: string): string {\n  return iconName || '(empty)'\n}\n\nfunction getNodeDetail(node: FigmaImportNodeData): IconNodeDetail {\n  const pageParent = node.parents.find(parent => parent.type === 'CANVAS')\n  const pageName = pageParent?.name ?? '(unknown-page)'\n  const path = [...node.parents.map(parent => parent.name), node.name].join(' / ')\n\n  return {\n    nodeId: node.id,\n    nodeName: node.name,\n    pageName,\n    path,\n  }\n}\n\nfunction collectIconNameDetail(\n  iconNameDetailsMap: Map<string, IconNodeDetail[]>,\n  iconName: string,\n  node: FigmaImportNodeData,\n): IconNodeDetail {\n  const detail = getNodeDetail(node)\n  const details = iconNameDetailsMap.get(iconName)\n\n  if (details) {\n    details.push(detail)\n  }\n  else {\n    iconNameDetailsMap.set(iconName, [detail])\n  }\n\n  return detail\n}\n\nfunction collectValidIconNameDetail(\n  iconNameDetailsMap: Map<string, IconNodeDetail[]>,\n  node: FigmaImportNodeData,\n): { iconName: string, detail: IconNodeDetail } | null {\n  const iconName = normalizeIconName(node.name)\n\n  if (!isValidIconName(iconName)) {\n    const detail = getNodeDetail(node)\n    console.log(`跳过非法图标名称: normalized=\"${formatIconNameForLog(iconName)}\" | Node=\"${detail.nodeName}\" | ID=${detail.nodeId} | Path=${detail.path}`)\n    return null\n  }\n\n  return {\n    iconName,\n    detail: collectIconNameDetail(iconNameDetailsMap, iconName, node),\n  }\n}\n\nfunction getDuplicateIconDetails(\n  iconNameDetailsMap: Map<string, IconNodeDetail[]>,\n): Array<[string, IconNodeDetail[]]> {\n  return [...iconNameDetailsMap.entries()]\n    .filter(([, details]) => details.length > 1)\n    .sort(([nameA], [nameB]) => nameA.localeCompare(nameB))\n}\n\nfunction formatDuplicateIconErrorMessage(\n  duplicateDetails: Array<[string, IconNodeDetail[]]>,\n): string {\n  const lines = [\n    `检测到 ${duplicateDetails.length} 组重名图标，已终止同步。`,\n    'Figma 允许重名，但同步时会按规范化名称生成 icon key（小写、空格转 -、移除特殊字符），重名会导致覆盖。',\n    '请在 Figma 中改为唯一名称后重试。',\n    '',\n    '重名明细：',\n  ]\n\n  for (const [iconName, details] of duplicateDetails) {\n    lines.push(`- \"${iconName}\" (${details.length} 个节点)`)\n    details.forEach((detail, index) => {\n      lines.push(`  ${index + 1}. Page=\"${detail.pageName}\" | Node=\"${detail.nodeName}\" | ID=${detail.nodeId} | Path=${detail.path}`)\n    })\n  }\n\n  return lines.join('\\n')\n}\n\nfunction assertNoDuplicateIconNames(iconNameDetailsMap: Map<string, IconNodeDetail[]>): void {\n  const duplicateDetails = getDuplicateIconDetails(iconNameDetailsMap)\n  if (!duplicateDetails.length) {\n    return\n  }\n  throw new Error(formatDuplicateIconErrorMessage(duplicateDetails))\n}\n\n/**\n * 从 Figma 获取所有图标\n * 只调用一次 API，返回完整的 iconSet 和 page 映射信息\n */\nexport async function fetchAllIconsFromFigma(\n  config: Omit<FigmaIconsConfig, 'pages' | 'convertToCurrentColor' | 'colorsToReplace'> & {\n    allPages: string[]\n  },\n): Promise<{ iconSet: IconSet, pageMap: Map<string, string> } | null> {\n  const {\n    fileId,\n    token,\n    prefix,\n    depth = 2,\n    cacheDir = '.figma-cache',\n    force = false,\n    allPages,\n    excludeNodeIds = [],\n  } = config\n  const excludedNodeIds = new Set(excludeNodeIds)\n\n  // 如果强制同步，先删除缓存目录\n  if (force) {\n    const { rm } = await import('node:fs/promises')\n    const { resolve } = await import('node:path')\n    const cachePath = resolve(process.cwd(), cacheDir)\n    try {\n      await rm(cachePath, { recursive: true, force: true })\n      console.log(`🗑️  已清除缓存目录: ${cacheDir}`)\n    }\n    catch (err) {\n      // 缓存目录不存在也没关系\n      console.error(`⚠️  清除缓存目录时出错: ${err}`)\n    }\n  }\n\n  // 如果强制同步，将缓存 TTL 设置为 0 以跳过缓存\n  const cacheAPITTL = force ? 0 : (config.cacheAPITTL ?? 1000 * 60 * 60 * 24 * 3) // 3 days\n  const cacheSVGTTL = force ? 0 : (config.cacheSVGTTL ?? 1000 * 60 * 60 * 24 * 30) // 30 days\n\n  console.log(`📦 从 Figma 获取图标 (一次性获取所有 pages)...`)\n  console.log(`   文件 ID: ${fileId}`)\n  console.log(`   前缀: ${prefix}`)\n  console.log(`   目标 Pages: ${allPages.join(', ')}`)\n  if (force) {\n    console.log(`   ⚠️  强制同步模式：已清除所有缓存`)\n  }\n\n  // 用于记录每个图标所属的 page\n  const pageMap = new Map<string, string>()\n  const iconNameDetailsMap = new Map<string, IconNodeDetail[]>()\n\n  // 从 Figma 导入所有图标\n  const result: FigmaImportResult | DocumentNotModified = await importFromFigma({\n    // 必需参数\n    file: fileId,\n    token,\n    prefix,\n\n    // 缓存配置\n    cacheDir,\n    cacheAPITTL,\n    cacheSVGTTL,\n\n    // 图标发现\n    depth,\n\n    // 获取所有图标，并记录它们所属的 page\n    iconNameForNode: (node) => {\n      if (excludedNodeIds.has(node.id)) {\n        console.log(`跳过已排除图标节点: Node=\"${node.name}\" | ID=${node.id}`)\n        return null\n      }\n\n      // 排除顶层容器本身（Icons 和 Icons-Colored 的 Frame 或 Section）\n      const hasContainerParent = node.parents.some(parent =>\n        parent.type === 'FRAME' || parent.type === 'SECTION',\n      )\n\n      if (!hasContainerParent) {\n        return null\n      }\n\n      // 查找图标所属的 page (CANVAS 类型的父节点)\n      const pageParent = node.parents.find(parent => parent.type === 'CANVAS')\n      if (!pageParent) {\n        return null\n      }\n\n      // 检查是否在目标 pages 中\n      if (allPages.length > 0 && !allPages.includes(pageParent.name)) {\n        return null\n      }\n\n      const iconDetail = collectValidIconNameDetail(iconNameDetailsMap, node)\n      if (!iconDetail) {\n        return null\n      }\n\n      const { iconName, detail } = iconDetail\n\n      // 记录图标所属的 page\n      if (!pageMap.has(iconName)) {\n        pageMap.set(iconName, detail.pageName)\n      }\n\n      return iconName\n    },\n  })\n\n  // 处理未修改的情况\n  if (typeof result === 'string') {\n    console.log('✅ 图标未修改，跳过')\n    return null\n  }\n\n  assertNoDuplicateIconNames(iconNameDetailsMap)\n\n  const { iconSet } = result\n  console.log(`📊 获取到 ${iconSet.count()} 个图标`)\n\n  return { iconSet, pageMap }\n}\n\n/**\n * 过滤并处理 IconSet 中的图标\n * 根据 pages 过滤，应用颜色转换和 SVG 优化\n */\nexport async function filterAndProcessIcons(\n  iconSet: IconSet,\n  pageMap: Map<string, string>,\n  options: {\n    convertToCurrentColor?: boolean\n    pages?: string[]\n  } = {},\n): Promise<IconSet> {\n  const { convertToCurrentColor = true, pages = [] } = options\n\n  // 创建一个新的 IconSet 用于存储过滤后的图标\n  const newIconSet = new IconSet({\n    prefix: iconSet.prefix,\n    icons: {},\n  })\n\n  await iconSet.forEach(async (name: string, type: string) => {\n    if (type !== 'icon') {\n      return\n    }\n\n    if (!isValidIconName(name)) {\n      return\n    }\n\n    // 根据 pages 过滤图标\n    if (pages.length > 0) {\n      const iconPage = pageMap.get(name)\n      if (!iconPage || !pages.includes(iconPage)) {\n        return\n      }\n    }\n\n    const svg = iconSet.toSVG(name)\n    if (!svg) {\n      return\n    }\n\n    try {\n      // 清理 SVG\n      cleanupSVG(svg)\n\n      // 先运行 SVGO 优化\n      runSVGO(svg)\n\n      // 然后处理颜色（在 SVGO 优化之后）\n      if (convertToCurrentColor) {\n        // 使用 Iconify 官方的 parseColors 函数处理颜色\n        parseColors(svg, {\n          defaultColor: 'currentColor',\n          callback: (_attr, colorStr, color) => {\n            // 如果颜色为空（如 fill=\"none\"），保持原样\n            if (!color || isEmptyColor(color)) {\n              return colorStr\n            }\n            // 将所有其他颜色转换为 currentColor\n            return 'currentColor'\n          },\n        })\n      }\n\n      // 将处理后的图标添加到新 IconSet\n      newIconSet.fromSVG(name, svg)\n    }\n    catch (err) {\n      console.error(`❌ 处理图标 ${name} 失败:`, err)\n    }\n  })\n\n  return newIconSet\n}\n\n/**\n * 从 Figma 同步图标\n */\nexport async function syncIconsFromFigma(\n  config: FigmaIconsConfig,\n): Promise<SyncResult> {\n  const {\n    fileId,\n    token,\n    prefix,\n    pages = [],\n    depth = 2,\n    convertToCurrentColor = true,\n    cacheDir = '.figma-cache',\n    force = false,\n    excludeNodeIds = [],\n  } = config\n  const excludedNodeIds = new Set(excludeNodeIds)\n\n  // 如果强制同步，先删除缓存目录\n  if (force) {\n    const { rm } = await import('node:fs/promises')\n    const { resolve } = await import('node:path')\n    const cachePath = resolve(process.cwd(), cacheDir)\n    try {\n      await rm(cachePath, { recursive: true, force: true })\n      console.log(`🗑️  已清除缓存目录: ${cacheDir}`)\n    }\n    catch (err) {\n      // 缓存目录不存在也没关系\n      console.error(`⚠️  清除缓存目录时出错: ${err}`)\n    }\n  }\n\n  // 如果强制同步，将缓存 TTL 设置为 0 以跳过缓存\n  const cacheAPITTL = force ? 0 : (config.cacheAPITTL ?? 1000 * 60 * 60 * 24 * 3) // 3 days\n  const cacheSVGTTL = force ? 0 : (config.cacheSVGTTL ?? 1000 * 60 * 60 * 24 * 30) // 30 days\n\n  console.log(`📦 开始从 Figma 同步图标...`)\n  console.log(`   文件 ID: ${fileId}`)\n  console.log(`   前缀: ${prefix}`)\n  if (pages.length > 0) {\n    console.log(`   Pages: ${pages.join(', ')}`)\n  }\n  if (force) {\n    console.log(`   ⚠️  强制同步模式：已清除所有缓存`)\n  }\n\n  const iconNameDetailsMap = new Map<string, IconNodeDetail[]>()\n\n  // 从 Figma 导入图标\n  const result: FigmaImportResult | DocumentNotModified = await importFromFigma({\n    // 必需参数\n    file: fileId,\n    token,\n    prefix,\n\n    // 图标识别\n    iconNameForNode: (node) => {\n      if (excludedNodeIds.has(node.id)) {\n        console.log(`跳过已排除图标节点: Node=\"${node.name}\" | ID=${node.id}`)\n        return null\n      }\n\n      // 如果指定了 pages 参数，只处理来自这些 Page 的图标\n      if (pages.length > 0) {\n        const isFromSpecifiedPage = node.parents.some(parent =>\n          parent.type === 'CANVAS' && pages.includes(parent.name),\n        )\n        if (!isFromSpecifiedPage) {\n          return null\n        }\n      }\n\n      // 排除顶层容器本身（Icons 和 Icons-Colored 的 Frame 或 Section）\n      // 检查是否有 Frame 或 Section 类型的父节点\n      const hasContainerParent = node.parents.some(parent =>\n        parent.type === 'FRAME' || parent.type === 'SECTION',\n      )\n\n      // 如果没有容器父节点，说明当前节点可能就是容器本身，需要排除\n      if (!hasContainerParent) {\n        return null\n      }\n\n      const iconDetail = collectValidIconNameDetail(iconNameDetailsMap, node)\n      return iconDetail?.iconName ?? null\n    },\n\n    // 缓存配置\n    cacheDir,\n    cacheAPITTL,\n    cacheSVGTTL,\n\n    // 文档检索\n    pages: pages.length > 0 ? pages : undefined,\n\n    // 图标发现\n    depth,\n\n    // 不过滤父节点，接受所有图标\n    // filterParentNode: undefined,\n  })\n\n  // 处理未修改的情况\n  if (typeof result === 'string') {\n    console.log('✅ 图标未修改，跳过')\n    return {\n      iconSet: null,\n      count: 0,\n      modified: false,\n      icons: [],\n    }\n  }\n\n  assertNoDuplicateIconNames(iconNameDetailsMap)\n\n  const { iconSet } = result\n\n  console.log(`📊 找到 ${iconSet.count()} 个图标`)\n\n  // 处理每个图标\n  await iconSet.forEach(async (name, type) => {\n    if (type !== 'icon')\n      return\n\n    if (!isValidIconName(name)) {\n      iconSet.remove(name)\n      return\n    }\n\n    const svg = iconSet.toSVG(name)\n    if (!svg) {\n      iconSet.remove(name)\n      return\n    }\n\n    try {\n      // 清理 SVG\n      cleanupSVG(svg)\n\n      // 先运行 SVGO 优化\n      runSVGO(svg)\n\n      // 然后处理颜色（在 SVGO 优化之后）\n      if (convertToCurrentColor) {\n        // 使用 Iconify 官方的 parseColors 函数处理颜色\n        // 这会自动：\n        // 1. 转换已有的颜色为 currentColor\n        // 2. 为没有颜色的元素添加 defaultColor\n        parseColors(svg, {\n          defaultColor: 'currentColor',\n          callback: (_attr, colorStr, color) => {\n            // 如果颜色为空（如 fill=\"none\"），保持原样\n            if (!color || isEmptyColor(color)) {\n              return colorStr\n            }\n            // 将所有其他颜色转换为 currentColor\n            return 'currentColor'\n          },\n        })\n      }\n\n      // 从 SVG 对象更新图标数据（包括颜色更改）\n      iconSet.fromSVG(name, svg)\n    }\n    catch (err) {\n      console.error(`❌ 处理图标 ${name} 失败:`, err)\n      iconSet.remove(name)\n    }\n  })\n\n  const icons = iconSet.list()\n  console.log(`✅ 成功处理 ${icons.length} 个图标`)\n\n  return {\n    iconSet,\n    count: icons.length,\n    modified: true,\n    icons,\n  }\n}\n","export { exportForUnoCSS, exportIconSet } from './export'\nexport { syncIconsFromFigma } from './sync'\nexport type {\n  ExportOptions,\n  FigmaIconsConfig,\n  FigmaIconsConfigFile,\n  IconSourceConfig,\n  SyncResult,\n} from './types'\n\n/**\n * 定义配置文件的辅助函数，提供类型提示\n */\nexport function defineConfig(config: import('./types').FigmaIconsConfigFile): import('./types').FigmaIconsConfigFile {\n  return config\n}\n\n/**\n * 便捷方法：同步并导出\n */\nexport async function syncAndExport(\n  config: import('./types').FigmaIconsConfig,\n  outputPath: string,\n) {\n  const { syncIconsFromFigma } = await import('./sync')\n  const { exportIconSet } = await import('./export')\n\n  const result = await syncIconsFromFigma(config)\n\n  if (!result.modified) {\n    // eslint-disable-next-line no-console\n    console.log('ℹ️  没有更新，跳过导出')\n    return result\n  }\n\n  await exportIconSet(result.iconSet, {\n    output: outputPath,\n    pretty: true,\n  })\n\n  return result\n}\n"],"mappings":"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","names":["fs","process","syncIconsFromFigma","exportIconSet"]}