{"version":3,"sources":["../src/index.ts","../src/devRuntimeCode.ts","../src/features/jsxSource.ts","../src/features/tailwindConfig.ts","../src/plugin.ts"],"sourcesContent":["export { vibeTagger as componentTagger } from \"./plugin\";\nexport type { VibeTaggerOptions } from \"./plugin\";\n","// Runtime code that replaces react/jsx-dev-runtime in the browser.\n// Served as a virtual module by the Vite plugin.\n\nconst devRuntimeCode = [\n  'import * as ReactJSXDevRuntime from \"react/jsx-dev-runtime\";',\n  \"\",\n  \"const _jsxDEV = ReactJSXDevRuntime.jsxDEV;\",\n  \"export const Fragment = ReactJSXDevRuntime.Fragment;\",\n  \"\",\n  // SSR/test guard. Vite SSR, vitest, and Node prerender contexts have no\n  // `window` — touching it at module init would crash before any component\n  // renders. We still install the wrapper so React's JSX dev runtime stays\n  // wired up, but skip the per-element tagging path entirely. Matches\n  // lovable-tagger >=1.3.0.\n  'const _isBrowser = typeof window !== \"undefined\";',\n  \"\",\n  'const SOURCE_KEY = Symbol.for(\"__jsxSource__\");',\n  \"\",\n  \"const cleanFileName = (fileName) => {\",\n  '  if (!fileName) return \"\";',\n  '  if (fileName.includes(\"dev_server\")) {',\n  '    fileName = fileName.split(\"dev_server\")[1].slice(1);',\n  \"  }\",\n  '  if (fileName.includes(\"sandbox-scheduler/sandbox\")) {',\n  '    const sandboxPart = fileName.split(\"sandbox-scheduler/\")[1];',\n  '    fileName = sandboxPart.split(\"/\").slice(1).join(\"/\");',\n  \"  }\",\n  '  return fileName.replace(/^\\\\/dev-server\\\\//, \"\");',\n  \"};\",\n  \"\",\n  \"const sourceElementMap = new Map();\",\n  \"if (_isBrowser) {\",\n  \"  window.sourceElementMap = sourceElementMap;\",\n  \"}\",\n  \"\",\n  \"function getSourceKey(sourceInfo) {\",\n  \"  return `${cleanFileName(sourceInfo.fileName)}:${sourceInfo.lineNumber}:${sourceInfo.columnNumber}`;\",\n  \"}\",\n  \"\",\n  \"function unregisterElement(node, sourceInfo) {\",\n  \"  const key = getSourceKey(sourceInfo);\",\n  \"  const refs = sourceElementMap.get(key);\",\n  \"  if (refs) {\",\n  \"    for (const ref of refs) {\",\n  \"      if (ref.deref() === node) {\",\n  \"        refs.delete(ref);\",\n  \"        break;\",\n  \"      }\",\n  \"    }\",\n  \"    if (refs.size === 0) {\",\n  \"      sourceElementMap.delete(key);\",\n  \"    }\",\n  \"  }\",\n  \"}\",\n  \"\",\n  \"function registerElement(node, sourceInfo) {\",\n  \"  const key = getSourceKey(sourceInfo);\",\n  \"  if (!sourceElementMap.has(key)) {\",\n  \"    sourceElementMap.set(key, new Set());\",\n  \"  }\",\n  \"  sourceElementMap.get(key).add(new WeakRef(node));\",\n  \"}\",\n  \"\",\n  \"function getTypeName(type) {\",\n  '  if (typeof type === \"string\") return type;',\n  '  if (typeof type === \"function\") return type.displayName || type.name || \"Unknown\";',\n  '  if (typeof type === \"object\" && type !== null) {',\n  '    return type.displayName || type.render?.displayName || type.render?.name || \"Unknown\";',\n  \"  }\",\n  '  return \"Unknown\";',\n  \"}\",\n  \"\",\n  \"export function jsxDEV(type, props, key, isStatic, source, self) {\",\n  \"  // During SSR / non-browser execution, skip all tagging and pass\",\n  \"  // through to React untouched. Touching DOM refs or the source map here\",\n  \"  // would crash on Node-only paths (Vite SSR, vitest, etc.).\",\n  \"  if (!_isBrowser) {\",\n  \"    return _jsxDEV(type, props, key, isStatic, source, self);\",\n  \"  }\",\n  \"\",\n  \"  // For custom components (like <Icon />, <Button />), tag their rendered output\",\n  \"  // This captures the JSX element name for library components that don't have source info\",\n  '  if (source?.fileName && typeof type !== \"string\" && type !== Fragment) {',\n  \"    const typeName = getTypeName(type);\",\n  \"    const jsxSourceInfo = {\",\n  \"      fileName: cleanFileName(source.fileName),\",\n  \"      lineNumber: source.lineNumber,\",\n  \"      columnNumber: source.columnNumber,\",\n  \"      displayName: typeName,\",\n  \"    };\",\n  \"\",\n  \"    const originalRef = props?.ref;\",\n  \"    const enhancedProps = {\",\n  \"      ...props,\",\n  \"      ref: (node) => {\",\n  \"        if (node) {\",\n  \"          // Only tag if this element doesn't already have source info\",\n  \"          // (library components won't have it, user components will)\",\n  \"          if (!node[SOURCE_KEY]) {\",\n  \"            node[SOURCE_KEY] = jsxSourceInfo;\",\n  \"            registerElement(node, jsxSourceInfo);\",\n  \"          }\",\n  \"        }\",\n  '        if (typeof originalRef === \"function\") {',\n  \"          originalRef(node);\",\n  '        } else if (originalRef && typeof originalRef === \"object\") {',\n  \"          originalRef.current = node;\",\n  \"        }\",\n  \"      },\",\n  \"    };\",\n  \"\",\n  \"    return _jsxDEV(type, enhancedProps, key, isStatic, source, self);\",\n  \"  }\",\n  \"\",\n  \"  // For host elements (div, span, etc.), tag with component context\",\n  '  if (source?.fileName && typeof type === \"string\") {',\n  \"    const sourceInfo = {\",\n  \"      fileName: cleanFileName(source.fileName),\",\n  \"      lineNumber: source.lineNumber,\",\n  \"      columnNumber: source.columnNumber,\",\n  \"      displayName: type,\",\n  \"    };\",\n  \"\",\n  \"    const originalRef = props?.ref;\",\n  \"\",\n  \"    const enhancedProps = {\",\n  \"      ...props,\",\n  \"      ref: (node) => {\",\n  \"        if (node) {\",\n  \"          const existingSource = node[SOURCE_KEY];\",\n  \"          if (existingSource) {\",\n  \"            if (getSourceKey(existingSource) !== getSourceKey(sourceInfo)) {\",\n  \"              unregisterElement(node, existingSource);\",\n  \"              node[SOURCE_KEY] = sourceInfo;\",\n  \"              registerElement(node, sourceInfo);\",\n  \"            }\",\n  \"          } else {\",\n  \"            node[SOURCE_KEY] = sourceInfo;\",\n  \"            registerElement(node, sourceInfo);\",\n  \"          }\",\n  \"        }\",\n  '        if (typeof originalRef === \"function\") {',\n  \"          originalRef(node);\",\n  '        } else if (originalRef && typeof originalRef === \"object\") {',\n  \"          originalRef.current = node;\",\n  \"        }\",\n  \"      },\",\n  \"    };\",\n  \"    return _jsxDEV(type, enhancedProps, key, isStatic, source, self);\",\n  \"  }\",\n  \"\",\n  \"  return _jsxDEV(type, props, key, isStatic, source, self);\",\n  \"}\",\n].join(\"\\n\");\n\nexport default devRuntimeCode;\n","import devRuntimeCode from \"../devRuntimeCode\";\n\nexport interface JsxSourceFeature {\n  resolveId(id: string, importer?: string): string | null;\n  load(id: string): string | null;\n}\n\nexport function createJsxTaggerFeature(): JsxSourceFeature {\n  return {\n    resolveId(id: string, importer?: string): string | null {\n      if (id === \"react/jsx-dev-runtime\" && !importer?.includes(\"\\0jsx-source\")) {\n        return \"\\0jsx-source/jsx-dev-runtime\";\n      }\n      return null;\n    },\n    load(id: string): string | null {\n      if (id === \"\\0jsx-source/jsx-dev-runtime\") {\n        return devRuntimeCode;\n      }\n      return null;\n    },\n  };\n}\n","import type { ResolvedConfig, ViteDevServer } from \"vite\";\nimport * as esbuild from \"esbuild\";\nimport fs from \"fs/promises\";\nimport path from \"path\";\nimport resolveConfig from \"tailwindcss/resolveConfig.js\";\n\nexport interface TailwindConfigFeature {\n  onConfigResolved(config: ResolvedConfig): void;\n  onBuildStart(): Promise<void>;\n  onConfigureServer(server: ViteDevServer): void;\n}\n\nconst V4_CSS_CANDIDATES = [\n  \"src/styles.css\",\n  \"src/index.css\",\n  \"src/globals.css\",\n  \"src/app.css\",\n];\n\nconst V4_NAMESPACES: Record<string, string> = {\n  colors: \"--color\",\n  screens: \"--breakpoint\",\n  spacing: \"--spacing\",\n  borderRadius: \"--radius\",\n  fontFamily: \"--font\",\n  opacity: \"--opacity\",\n};\n\nconst OUTFILE_RELATIVE = \"./src/tailwind.config.vibe.json\";\nconst INTERMEDIATE_PREFIX = \"./.vibe.tailwind.config\";\nconst V3_CONFIG_RELATIVE = \"./tailwind.config.ts\";\n\n// Distinct name per compile so overlapping v3 runs never `esbuild` to and\n// `unlink` each other's intermediate import target.\nlet intermediateSeq = 0;\nfunction intermediateRelative(): string {\n  intermediateSeq += 1;\n  return `${INTERMEDIATE_PREFIX}.${process.pid}.${intermediateSeq}.js`;\n}\n\nasync function findV4CssEntry(projectRoot: string): Promise<string | null> {\n  for (const candidate of V4_CSS_CANDIDATES) {\n    const abs = path.resolve(projectRoot, candidate);\n    try {\n      const contents = await fs.readFile(abs, \"utf8\");\n      if (/@import\\s+[\"']tailwindcss/.test(contents)) return abs;\n    } catch {\n      // missing file — try next\n    }\n  }\n  return null;\n}\n\ntype LoadDesignSystem = (\n  css: string,\n  opts: { base: string },\n) => Promise<{\n  theme: {\n    namespace(ns: string): Iterable<[string | null, string]>;\n  };\n}>;\n\nasync function loadDesignSystemFromProject(): Promise<LoadDesignSystem | null> {\n  try {\n    // Dynamic import so consumers not on v4 don't need the package installed.\n    const modName = \"@tailwindcss/node\";\n    const mod = (await import(modName)) as {\n      __unstable__loadDesignSystem?: LoadDesignSystem;\n    };\n    return mod.__unstable__loadDesignSystem ?? null;\n  } catch {\n    return null;\n  }\n}\n\nfunction parseRootVars(css: string): Record<string, string> {\n  const vars: Record<string, string> = {};\n  const rootMatch = css.match(/:root\\s*\\{([^}]*)\\}/s);\n  if (!rootMatch) return vars;\n  for (const decl of rootMatch[1]!.split(\";\")) {\n    const trimmed = decl.trim();\n    if (!trimmed.startsWith(\"--\")) continue;\n    const colon = trimmed.indexOf(\":\");\n    if (colon === -1) continue;\n    const key = trimmed.slice(0, colon).trim();\n    const value = trimmed.slice(colon + 1).trim();\n    if (key && value) vars[key] = value;\n  }\n  return vars;\n}\n\nfunction resolveVars(\n  value: string,\n  rootVars: Record<string, string>,\n  depth = 0,\n): string {\n  if (depth > 8) return value;\n  return value.replace(\n    /var\\(\\s*(--[\\w-]+)(?:\\s*,\\s*([^)]+))?\\s*\\)/g,\n    (match, name: string, fallback: string | undefined) => {\n      const resolved = rootVars[name];\n      if (resolved !== undefined) return resolveVars(resolved, rootVars, depth + 1);\n      return fallback ?? match;\n    },\n  );\n}\n\nasync function generateV4Config(\n  cssEntry: string,\n  outfile: string,\n  load: LoadDesignSystem,\n): Promise<void> {\n  const css = await fs.readFile(cssEntry, \"utf8\");\n  const ds = await load(css, { base: path.dirname(cssEntry) });\n  const rootVars = parseRootVars(css);\n  const theme: Record<string, Record<string, string>> = {};\n  for (const [configKey, namespace] of Object.entries(V4_NAMESPACES)) {\n    const entries: Record<string, string> = {};\n    for (const [key, rawValue] of ds.theme.namespace(namespace)) {\n      if (key === null) continue;\n      entries[key] = resolveVars(rawValue, rootVars);\n    }\n    theme[configKey] = entries;\n  }\n  await fs.mkdir(path.dirname(outfile), { recursive: true });\n  await fs.writeFile(outfile, JSON.stringify({ theme }, null, 2));\n}\n\nasync function generateV3Config(\n  tailwindInputFile: string,\n  tailwindIntermediateFile: string,\n  tailwindJsonOutfile: string,\n): Promise<void> {\n  await esbuild.build({\n    entryPoints: [tailwindInputFile],\n    outfile: tailwindIntermediateFile,\n    bundle: true,\n    format: \"esm\",\n    banner: {\n      js: 'import { createRequire } from \"module\"; const require = createRequire(import.meta.url);',\n    },\n  });\n  try {\n    const userConfig = (await import(\n      tailwindIntermediateFile + \"?update=\" + Date.now()\n    )) as { default?: unknown };\n    if (!userConfig || !userConfig.default) {\n      throw new Error(\"Invalid Tailwind config structure\");\n    }\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const resolved = (resolveConfig as any)(userConfig.default);\n    await fs.writeFile(tailwindJsonOutfile, JSON.stringify(resolved, null, 2));\n  } finally {\n    await fs.unlink(tailwindIntermediateFile).catch(() => {});\n  }\n}\n\nexport function createTailwindConfigFeature(): TailwindConfigFeature {\n  let projectRoot = \"\";\n  let running = false;\n  let rerunQueued = false;\n\n  // Serialize compiles: a change arriving mid-run queues exactly one re-run\n  // rather than racing a concurrent write to the same output file.\n  const run = async (): Promise<void> => {\n    if (running) {\n      rerunQueued = true;\n      return;\n    }\n    running = true;\n    try {\n      await runOnce();\n    } finally {\n      running = false;\n      if (rerunQueued) {\n        rerunQueued = false;\n        void run();\n      }\n    }\n  };\n\n  const runOnce = async (): Promise<void> => {\n    if (!projectRoot) return;\n    const outfile = path.resolve(projectRoot, OUTFILE_RELATIVE);\n\n    // Prefer v4 when the CSS entry uses `@import \"tailwindcss\"` and\n    // @tailwindcss/node is available.\n    const cssEntry = await findV4CssEntry(projectRoot);\n    if (cssEntry) {\n      const load = await loadDesignSystemFromProject();\n      if (load) {\n        try {\n          await generateV4Config(cssEntry, outfile, load);\n          console.log(`[vibe-tagger] wrote ${outfile}`);\n          return;\n        } catch (error) {\n          console.error(\"[vibe-tagger] Error generating v4 tailwind config:\", error);\n          return;\n        }\n      }\n    }\n\n    // Fall back to v3: compile tailwind.config.ts via esbuild, then resolveConfig.\n    const v3ConfigFile = path.resolve(projectRoot, V3_CONFIG_RELATIVE);\n    try {\n      await fs.access(v3ConfigFile);\n    } catch {\n      return;\n    }\n    const intermediate = path.resolve(projectRoot, intermediateRelative());\n    try {\n      await generateV3Config(v3ConfigFile, intermediate, outfile);\n      console.log(`[vibe-tagger] wrote ${outfile}`);\n    } catch (error) {\n      console.error(\"[vibe-tagger] Error generating v3 tailwind config:\", error);\n    }\n  };\n\n  return {\n    onConfigResolved(config) {\n      projectRoot = config.root;\n    },\n    async onBuildStart() {\n      await run();\n    },\n    onConfigureServer(server) {\n      try {\n        const watchPaths = [\n          path.resolve(projectRoot, V3_CONFIG_RELATIVE),\n          ...V4_CSS_CANDIDATES.map((candidate) =>\n            path.resolve(projectRoot, candidate),\n          ),\n        ];\n        for (const watchPath of watchPaths) server.watcher.add(watchPath);\n\n        const normalized = new Set(\n          watchPaths.map((watchPath) => path.normalize(watchPath)),\n        );\n        server.watcher.on(\"change\", async (changedPath) => {\n          if (normalized.has(path.normalize(changedPath))) await run();\n        });\n      } catch (error) {\n        console.error(\n          \"[vibe-tagger] Error adding Tailwind inputs to Vite watcher:\",\n          error,\n        );\n      }\n    },\n  };\n}\n","import type { Plugin, ResolvedConfig, ViteDevServer } from \"vite\";\nimport { createJsxTaggerFeature } from \"./features/jsxSource\";\nimport { createTailwindConfigFeature } from \"./features/tailwindConfig\";\n\nexport interface VibeTaggerOptions {\n  /** Enable JSX source tagging. Default: true */\n  jsxSource?: boolean;\n  /**\n   * Emit a resolved Tailwind theme JSON to `src/tailwind.config.vibe.json`\n   * on build start and on config-file changes. Supports Tailwind v3\n   * (reads `tailwind.config.ts`) and v4 (reads `src/styles.css` etc.).\n   * Default: false\n   */\n  tailwindConfig?: boolean;\n  /** Enable debug logging. Default: false */\n  debug?: boolean;\n}\n\ninterface Feature {\n  resolveId?(id: string, importer?: string): string | null;\n  load?(id: string): string | null;\n  onConfigResolved?(config: ResolvedConfig): void;\n  onBuildStart?(): void | Promise<void>;\n  onConfigureServer?(server: ViteDevServer): void;\n}\n\nexport function vibeTagger({\n  jsxSource = true,\n  tailwindConfig = false,\n  debug: _debug = false,\n}: VibeTaggerOptions = {}): Plugin {\n  const features: Feature[] = [];\n\n  if (jsxSource) features.push(createJsxTaggerFeature());\n  if (tailwindConfig) features.push(createTailwindConfigFeature());\n\n  const plugin: Plugin = {\n    name: \"vibe-tagger\",\n    enforce: \"pre\",\n\n    configResolved(config) {\n      for (const feature of features) feature.onConfigResolved?.(config);\n    },\n\n    async buildStart() {\n      for (const feature of features) await feature.onBuildStart?.();\n    },\n\n    configureServer(server) {\n      for (const feature of features) feature.onConfigureServer?.(server);\n    },\n\n    resolveId(id: string, importer?: string) {\n      for (const feature of features) {\n        const result = feature.resolveId?.(id, importer);\n        if (result !== null && result !== undefined) return result;\n      }\n      return null;\n    },\n\n    load(id: string) {\n      for (const feature of features) {\n        const result = feature.load?.(id);\n        if (result !== null && result !== undefined) return result;\n      }\n      return null;\n    },\n  };\n\n  return plugin;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACGA,IAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;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","names":["path","fs","resolveConfig"]}