flowbite-react
Version:
Official React components built for Flowbite and Tailwind CSS
1 lines • 8.55 kB
Source Map (JSON)
{"version":3,"file":"setup-vscode.cjs","sources":["../../../src/cli/commands/setup-vscode.ts"],"sourcesContent":["import fs from \"fs/promises\";\nimport path from \"path\";\nimport cjson from \"comment-json\";\nimport { vscodeDir } from \"../consts\";\n\nexport async function setupVSCode() {\n try {\n await fs.access(vscodeDir);\n } catch {\n console.log(`Creating ${vscodeDir} directory...`);\n await fs.mkdir(vscodeDir);\n }\n\n await setupVSCodeSettings();\n await setupVSCodeExtensions();\n}\n\nasync function setupVSCodeSettings() {\n try {\n const vscodeSettingsFilePath = path.join(vscodeDir, \"settings.json\");\n\n let settings: {\n \"files.associations\"?: Record<string, string>;\n \"tailwindCSS.classAttributes\"?: string[];\n \"tailwindCSS.experimental.classRegex\"?: string[][];\n } = {};\n\n let exists = true;\n\n try {\n const content = await fs.readFile(vscodeSettingsFilePath, \"utf-8\");\n settings = cjson.parse(content) as typeof settings;\n } catch {\n exists = false;\n }\n\n const flowbiteReactSettings = {\n \"files.associations\": {\n \"*.css\": \"tailwindcss\",\n },\n \"tailwindCSS.classAttributes\": [\"class\", \"className\", \"theme\"],\n \"tailwindCSS.experimental.classRegex\": [\n [\"twMerge\\\\(([^)]*)\\\\)\", \"[\\\"'`]([^\\\"'`]*).*?[\\\"'`]\"],\n [\"createTheme(?:<\\\\w+>)?\\\\s*\\\\(([^)]*)\\\\)\", \"{?\\\\s?[\\\\w].*:\\\\s*?[\\\"'`]([^\\\"'`]*).*?,?\\\\s?}?\"],\n ],\n };\n\n let needsUpdate = false;\n\n if (settings?.[\"files.associations\"]) {\n if (!settings[\"files.associations\"][\"*.css\"]) {\n settings[\"files.associations\"][\"*.css\"] = flowbiteReactSettings[\"files.associations\"][\"*.css\"];\n needsUpdate = true;\n }\n } else {\n settings[\"files.associations\"] = flowbiteReactSettings[\"files.associations\"];\n needsUpdate = true;\n }\n if (settings?.[\"tailwindCSS.classAttributes\"]) {\n if (!settings[\"tailwindCSS.classAttributes\"].includes(\"theme\")) {\n settings[\"tailwindCSS.classAttributes\"].push(\"theme\");\n needsUpdate = true;\n }\n } else {\n settings[\"tailwindCSS.classAttributes\"] = flowbiteReactSettings[\"tailwindCSS.classAttributes\"];\n needsUpdate = true;\n }\n if (settings?.[\"tailwindCSS.experimental.classRegex\"]) {\n for (const pattern of flowbiteReactSettings[\"tailwindCSS.experimental.classRegex\"]) {\n if (\n !settings[\"tailwindCSS.experimental.classRegex\"].some(\n (existing: string[]) => JSON.stringify(existing) === JSON.stringify(pattern),\n )\n ) {\n settings[\"tailwindCSS.experimental.classRegex\"].push(pattern);\n needsUpdate = true;\n }\n }\n } else {\n settings[\"tailwindCSS.experimental.classRegex\"] = flowbiteReactSettings[\"tailwindCSS.experimental.classRegex\"];\n needsUpdate = true;\n }\n\n if (!needsUpdate) {\n return;\n }\n\n console.log(`${exists ? \"Updating\" : \"Creating\"} ${vscodeSettingsFilePath} with flowbite-react configuration...`);\n await fs.writeFile(vscodeSettingsFilePath, cjson.stringify(settings, null, 2), { flag: \"w\" });\n } catch (error) {\n console.error(\"Failed to setup VSCode settings:\", error);\n }\n}\n\nasync function setupVSCodeExtensions() {\n try {\n const vscodeExtensionsFilePath = path.join(vscodeDir, \"extensions.json\");\n\n let extensions: {\n recommendations?: string[];\n } = {};\n\n let exists = true;\n\n try {\n const content = await fs.readFile(vscodeExtensionsFilePath, \"utf-8\");\n extensions = cjson.parse(content) as typeof extensions;\n } catch {\n exists = false;\n }\n\n if (extensions?.recommendations?.includes(\"bradlc.vscode-tailwindcss\")) {\n return;\n }\n\n const flowbiteReactExtensions = {\n recommendations: [\n \"bradlc.vscode-tailwindcss\",\n // TODO: only if eslint is installed\n // \"dbaeumer.vscode-eslint\",\n // TODO: only if prettier is installed\n // \"esbenp.prettier-vscode\",\n ],\n };\n\n if (extensions?.recommendations) {\n for (const recommendation of flowbiteReactExtensions.recommendations) {\n if (!extensions.recommendations.includes(recommendation)) {\n extensions.recommendations.push(recommendation);\n }\n }\n } else {\n extensions.recommendations = flowbiteReactExtensions.recommendations;\n }\n\n console.log(`${exists ? \"Updating\" : \"Creating\"} ${vscodeExtensionsFilePath} with flowbite-react configuration...`);\n await fs.writeFile(vscodeExtensionsFilePath, cjson.stringify(extensions, null, 2), { flag: \"w\" });\n } catch (error) {\n console.error(\"Failed to setup VSCode extensions:\", error);\n }\n}\n"],"names":["vscodeDir"],"mappings":"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"}