@vizejs/vite-plugin-musea 0.236.0 → 0.238.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/autogen/index.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/autogen/index.ts"],"mappings":";;AAwBA;;;;;;;;;UAAiB,cAAA;EAYI;EAVnB,WAAA;EAgBe;EAdf,cAAA;;EAEA,qBAAA;EAaA;EAXA,mBAAA;EAaA;EAXA,qBAAA;EAYY;EAVZ,mBAAA;AAAA;;;;UAMe,cAAA;EACf,IAAA;EACA,QAAA;EACA,QAAA;EACA,YAAA;AAAA;;AAgBF;;UAViB,gBAAA;EACf,IAAA;EACA,SAAA;EACA,KAAA,EAAO,MAAA;EACP,WAAA;AAAA;;;AAwDF;UAlDiB,aAAA;EACf,QAAA,EAAU,gBAAA;EACV,cAAA;EACA,aAAA;AAAA;;;;;;;;iBA+CoB,eAAA,CACpB,aAAA,UACA,OAAA,GAAS,cAAA,GACR,OAAA,CAAQ,aAAA;;AAmDX;;iBAAsB,YAAA,CACpB,aAAA,UACA,OAAA,GAAS,cAAA,EACT,UAAA,YACC,OAAA"}
|
package/dist/autogen/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as writeArtFile, t as generateArtFile } from "../autogen-
|
|
1
|
+
import { n as writeArtFile, t as generateArtFile } from "../autogen-Blm3Qy_O.mjs";
|
|
2
2
|
export { generateArtFile, writeArtFile };
|
|
@@ -120,6 +120,38 @@ function toPascalCase(str) {
|
|
|
120
120
|
return str.split(/[\s\-_]+/).filter(Boolean).map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join("");
|
|
121
121
|
}
|
|
122
122
|
//#endregion
|
|
123
|
+
//#region src/autogen/native-shape.ts
|
|
124
|
+
function toNativePropDefinitions(props) {
|
|
125
|
+
return props.map((prop) => ({
|
|
126
|
+
name: prop.name,
|
|
127
|
+
propType: prop.propType,
|
|
128
|
+
required: prop.required,
|
|
129
|
+
defaultValue: prop.defaultValue
|
|
130
|
+
}));
|
|
131
|
+
}
|
|
132
|
+
function toNativeAutogenConfig(options) {
|
|
133
|
+
return {
|
|
134
|
+
maxVariants: options.maxVariants,
|
|
135
|
+
includeDefault: options.includeDefault,
|
|
136
|
+
includeBooleanToggles: options.includeBooleanToggles,
|
|
137
|
+
includeEnumVariants: options.includeEnumVariants,
|
|
138
|
+
includeBoundaryValues: options.includeBoundaryValues,
|
|
139
|
+
includeEmptyStrings: options.includeEmptyStrings
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function fromNativeOutput(output) {
|
|
143
|
+
return {
|
|
144
|
+
variants: output.variants.map((variant) => ({
|
|
145
|
+
name: variant.name,
|
|
146
|
+
isDefault: variant.isDefault,
|
|
147
|
+
props: variant.props,
|
|
148
|
+
description: variant.description
|
|
149
|
+
})),
|
|
150
|
+
artFileContent: output.artFileContent,
|
|
151
|
+
componentName: output.componentName
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
//#endregion
|
|
123
155
|
//#region src/autogen/index.ts
|
|
124
156
|
/**
|
|
125
157
|
* Variant auto-generation module.
|
|
@@ -155,7 +187,7 @@ async function generateArtFile(componentPath, options = {}) {
|
|
|
155
187
|
name: p.name,
|
|
156
188
|
propType: p.type,
|
|
157
189
|
required: p.required,
|
|
158
|
-
defaultValue: p.default_value
|
|
190
|
+
defaultValue: p.defaultValue ?? p.default_value
|
|
159
191
|
}));
|
|
160
192
|
else props = extractPropsSimple(source);
|
|
161
193
|
if (props.length === 0) {
|
|
@@ -171,31 +203,8 @@ async function generateArtFile(componentPath, options = {}) {
|
|
|
171
203
|
};
|
|
172
204
|
}
|
|
173
205
|
if (binding.generateVariants) {
|
|
174
|
-
const nativeProps = props.map((p) => ({
|
|
175
|
-
name: p.name,
|
|
176
|
-
prop_type: p.propType,
|
|
177
|
-
required: p.required,
|
|
178
|
-
default_value: p.defaultValue
|
|
179
|
-
}));
|
|
180
206
|
const relPath = `./${path.basename(componentPath)}`;
|
|
181
|
-
|
|
182
|
-
max_variants: options.maxVariants,
|
|
183
|
-
include_default: options.includeDefault,
|
|
184
|
-
include_boolean_toggles: options.includeBooleanToggles,
|
|
185
|
-
include_enum_variants: options.includeEnumVariants,
|
|
186
|
-
include_boundary_values: options.includeBoundaryValues,
|
|
187
|
-
include_empty_strings: options.includeEmptyStrings
|
|
188
|
-
});
|
|
189
|
-
return {
|
|
190
|
-
variants: result.variants.map((v) => ({
|
|
191
|
-
name: v.name,
|
|
192
|
-
isDefault: v.is_default,
|
|
193
|
-
props: v.props,
|
|
194
|
-
description: v.description
|
|
195
|
-
})),
|
|
196
|
-
artFileContent: result.art_file_content,
|
|
197
|
-
componentName: result.component_name
|
|
198
|
-
};
|
|
207
|
+
return fromNativeOutput(binding.generateVariants(relPath, toNativePropDefinitions(props), toNativeAutogenConfig(options)));
|
|
199
208
|
}
|
|
200
209
|
return generateArtFileJs(componentPath, props, options);
|
|
201
210
|
}
|
|
@@ -212,4 +221,4 @@ async function writeArtFile(componentPath, options = {}, outputPath) {
|
|
|
212
221
|
//#endregion
|
|
213
222
|
export { writeArtFile as n, generateArtFile as t };
|
|
214
223
|
|
|
215
|
-
//# sourceMappingURL=autogen-
|
|
224
|
+
//# sourceMappingURL=autogen-Blm3Qy_O.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autogen-Blm3Qy_O.mjs","names":[],"sources":["../src/autogen/fallback.ts","../src/autogen/native-shape.ts","../src/autogen/index.ts"],"sourcesContent":["/**\n * JS-based fallback for variant auto-generation.\n *\n * Used when the native Rust binding is not available. Provides simple\n * regex-based prop extraction, minimal art file generation, and a pure\n * JS variant generator.\n */\n\nimport path from \"node:path\";\n\nimport type { AutogenOptions, AutogenOutput, GeneratedVariant, PropDefinition } from \"./index.js\";\n\n/**\n * Simple prop extraction fallback (when native binding not available).\n */\nexport function extractPropsSimple(source: string): PropDefinition[] {\n const props: PropDefinition[] = [];\n\n // Match defineProps<{ ... }>() or defineProps({ ... })\n const propsMatch = source.match(/defineProps\\s*<\\s*\\{([^}]*)\\}\\s*>/s);\n\n if (propsMatch) {\n const propsBlock = propsMatch[1];\n const propLines = propsBlock.split(\"\\n\");\n\n for (const line of propLines) {\n const propMatch = line.trim().match(/^(\\w+)(\\?)?:\\s*(.+?)\\s*;?\\s*$/);\n if (propMatch) {\n props.push({\n name: propMatch[1],\n propType: propMatch[3].replace(/,\\s*$/, \"\"),\n required: !propMatch[2],\n });\n }\n }\n }\n\n return props;\n}\n\n/**\n * Minimal art file for components with no props.\n */\nexport function generateMinimalArt(componentName: string, componentPath: string): string {\n return `<script setup lang=\"ts\">\ndefineArt(${JSON.stringify(componentPath)}, {\n title: ${JSON.stringify(componentName)},\n});\n</script>\n\n<art>\n <variant name=\"Default\" default>\n <${componentName} />\n </variant>\n</art>\n`;\n}\n\n/**\n * JS-based variant generation fallback.\n */\nexport function generateArtFileJs(\n componentPath: string,\n props: PropDefinition[],\n options: AutogenOptions,\n): AutogenOutput {\n const componentName = path.basename(componentPath, \".vue\");\n const relPath = `./${path.basename(componentPath)}`;\n const maxVariants = options.maxVariants ?? 20;\n const variants: GeneratedVariant[] = [];\n\n // Default variant\n if (options.includeDefault !== false) {\n const defaultProps: Record<string, unknown> = {};\n for (const prop of props) {\n if (prop.defaultValue !== undefined) {\n defaultProps[prop.name] = prop.defaultValue;\n }\n }\n variants.push({\n name: \"Default\",\n isDefault: true,\n props: defaultProps,\n description: `${componentName} with default props`,\n });\n }\n\n // Enum variants\n if (options.includeEnumVariants !== false) {\n for (const prop of props) {\n const unionValues = parseUnionType(prop.propType);\n for (const val of unionValues) {\n if (variants.length >= maxVariants) break;\n const name =\n typeof val === \"string\" ? toPascalCase(val) : `${toPascalCase(prop.name)}_${String(val)}`;\n variants.push({\n name,\n isDefault: false,\n props: { [prop.name]: val },\n description: `${prop.name} = ${JSON.stringify(val)}`,\n });\n }\n }\n }\n\n // Boolean toggle variants\n if (options.includeBooleanToggles !== false) {\n for (const prop of props) {\n if (variants.length >= maxVariants) break;\n if (prop.propType.toLowerCase() === \"boolean\") {\n const nonDefault = prop.defaultValue === true ? false : true;\n variants.push({\n name: nonDefault ? toPascalCase(prop.name) : `No${toPascalCase(prop.name)}`,\n isDefault: false,\n props: { [prop.name]: nonDefault },\n description: `${prop.name} = ${nonDefault}`,\n });\n }\n }\n }\n\n // Generate art file content\n let content = `<script setup lang=\"ts\">\\ndefineArt(${JSON.stringify(relPath)}, {\\n title: ${JSON.stringify(componentName)},\\n});\\n</script>\\n\\n<art>\\n`;\n for (const variant of variants) {\n const attrs = variant.isDefault ? `name=\"${variant.name}\" default` : `name=\"${variant.name}\"`;\n content += ` <variant ${attrs}>\\n`;\n\n const propsStr = Object.entries(variant.props)\n .map(([k, v]) => {\n if (typeof v === \"string\") return `${k}=\"${v}\"`;\n if (typeof v === \"boolean\" && v) return k;\n if (typeof v === \"boolean\" && !v) return `:${k}=\"false\"`;\n return `:${k}=\"${JSON.stringify(v)}\"`;\n })\n .join(\" \");\n\n content += ` <${componentName}${propsStr ? \" \" + propsStr : \"\"} />\\n`;\n content += ` </variant>\\n\\n`;\n }\n content += `</art>\\n`;\n\n return {\n variants,\n artFileContent: content,\n componentName,\n };\n}\n\nexport function parseUnionType(typeStr: string): unknown[] {\n const trimmed = typeStr.trim();\n if (!trimmed.includes(\"|\")) return [];\n\n if (trimmed.includes(\"'\") || trimmed.includes('\"')) {\n return trimmed\n .split(\"|\")\n .map((s) => s.trim().replace(/^['\"]|['\"]$/g, \"\"))\n .filter((s) => s.length > 0);\n }\n\n const parts = trimmed.split(\"|\").map((s) => s.trim());\n if (parts.every((p) => !isNaN(Number(p)))) {\n return parts.map(Number);\n }\n\n return [];\n}\n\nexport function toPascalCase(str: string): string {\n return str\n .split(/[\\s\\-_]+/)\n .filter(Boolean)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\"\");\n}\n","import type { AutogenOptions, AutogenOutput, PropDefinition } from \"./index.js\";\n\nexport interface NativePropDefinition {\n name: string;\n propType: string;\n required: boolean;\n defaultValue?: unknown;\n}\n\nexport interface NativeAutogenConfig {\n maxVariants?: number;\n includeDefault?: boolean;\n includeBooleanToggles?: boolean;\n includeEnumVariants?: boolean;\n includeBoundaryValues?: boolean;\n includeEmptyStrings?: boolean;\n}\n\nexport interface NativeGeneratedVariant {\n name: string;\n isDefault: boolean;\n props: Record<string, unknown>;\n description?: string;\n}\n\nexport interface NativeAutogenOutput {\n variants: NativeGeneratedVariant[];\n artFileContent: string;\n componentName: string;\n}\n\nexport function toNativePropDefinitions(props: PropDefinition[]): NativePropDefinition[] {\n return props.map((prop) => ({\n name: prop.name,\n propType: prop.propType,\n required: prop.required,\n defaultValue: prop.defaultValue,\n }));\n}\n\nexport function toNativeAutogenConfig(options: AutogenOptions): NativeAutogenConfig {\n return {\n maxVariants: options.maxVariants,\n includeDefault: options.includeDefault,\n includeBooleanToggles: options.includeBooleanToggles,\n includeEnumVariants: options.includeEnumVariants,\n includeBoundaryValues: options.includeBoundaryValues,\n includeEmptyStrings: options.includeEmptyStrings,\n };\n}\n\nexport function fromNativeOutput(output: NativeAutogenOutput): AutogenOutput {\n return {\n variants: output.variants.map((variant) => ({\n name: variant.name,\n isDefault: variant.isDefault,\n props: variant.props,\n description: variant.description,\n })),\n artFileContent: output.artFileContent,\n componentName: output.componentName,\n };\n}\n","/**\n * Variant auto-generation module.\n * Generates .art.vue files from component prop analysis.\n *\n * JS-based fallback logic (extractPropsSimple, generateMinimalArt,\n * generateArtFileJs, and helpers) is extracted into `fallback.ts`.\n */\n\nimport { createRequire } from \"node:module\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\n\nimport { extractPropsSimple, generateMinimalArt, generateArtFileJs } from \"./fallback.js\";\nimport {\n fromNativeOutput,\n toNativeAutogenConfig,\n toNativePropDefinitions,\n type NativeAutogenOutput,\n type NativePropDefinition,\n} from \"./native-shape.js\";\n\n/**\n * Autogen configuration options.\n */\nexport interface AutogenOptions {\n /** Maximum number of variants to generate (default: 20) */\n maxVariants?: number;\n /** Include a \"Default\" variant with all default values (default: true) */\n includeDefault?: boolean;\n /** Include boolean toggle variants (default: true) */\n includeBooleanToggles?: boolean;\n /** Include enum/union variants (default: true) */\n includeEnumVariants?: boolean;\n /** Include boundary value variants for numbers (default: false) */\n includeBoundaryValues?: boolean;\n /** Include empty string variants for optional strings (default: false) */\n includeEmptyStrings?: boolean;\n}\n\n/**\n * Prop definition for variant generation.\n */\nexport interface PropDefinition {\n name: string;\n propType: string;\n required: boolean;\n defaultValue?: unknown;\n}\n\n/**\n * Generated variant.\n */\nexport interface GeneratedVariant {\n name: string;\n isDefault: boolean;\n props: Record<string, unknown>;\n description?: string;\n}\n\n/**\n * Autogen output.\n */\nexport interface AutogenOutput {\n variants: GeneratedVariant[];\n artFileContent: string;\n componentName: string;\n}\n\n// Native binding types\ninterface NativeAutogen {\n generateVariants?: (\n componentPath: string,\n props: NativePropDefinition[],\n config?: ReturnType<typeof toNativeAutogenConfig>,\n ) => NativeAutogenOutput;\n analyzeSfc?: (\n source: string,\n options?: { filename?: string },\n ) => {\n props: Array<{\n name: string;\n type: string;\n required: boolean;\n defaultValue?: unknown;\n default_value?: unknown;\n }>;\n emits: string[];\n };\n}\n\nlet native: NativeAutogen | null = null;\n\nfunction loadNative(): NativeAutogen {\n if (native) return native;\n const require = createRequire(import.meta.url);\n try {\n native = require(\"@vizejs/native\") as NativeAutogen;\n return native;\n } catch (e) {\n throw new Error(\n `Failed to load @vizejs/native. Make sure it's installed and built:\\n${String(e)}`,\n );\n }\n}\n\n/**\n * Generate .art.vue file for a component.\n *\n * @param componentPath - Path to the Vue component file\n * @param options - Auto-generation options\n * @returns Generated .art.vue content and metadata\n */\nexport async function generateArtFile(\n componentPath: string,\n options: AutogenOptions = {},\n): Promise<AutogenOutput> {\n const absolutePath = path.resolve(componentPath);\n const source = await fs.promises.readFile(absolutePath, \"utf-8\");\n\n const binding = loadNative();\n\n // Analyze component to extract props\n let props: PropDefinition[];\n if (binding.analyzeSfc) {\n const analysis = binding.analyzeSfc(source, { filename: absolutePath });\n props = analysis.props.map((p) => ({\n name: p.name,\n propType: p.type,\n required: p.required,\n defaultValue: p.defaultValue ?? p.default_value,\n }));\n } else {\n // Fallback: simple regex-based prop extraction\n props = extractPropsSimple(source);\n }\n\n if (props.length === 0) {\n // No props found: generate minimal art file\n const componentName = path.basename(componentPath, \".vue\");\n const relPath = `./${path.basename(componentPath)}`;\n return {\n variants: [{ name: \"Default\", isDefault: true, props: {} }],\n artFileContent: generateMinimalArt(componentName, relPath),\n componentName,\n };\n }\n\n // Use native variant generation if available\n if (binding.generateVariants) {\n const relPath = `./${path.basename(componentPath)}`;\n const result = binding.generateVariants(\n relPath,\n toNativePropDefinitions(props),\n toNativeAutogenConfig(options),\n );\n\n return fromNativeOutput(result);\n }\n\n // Fallback: JS-based generation\n return generateArtFileJs(componentPath, props, options);\n}\n\n/**\n * Write generated .art.vue file to disk.\n */\nexport async function writeArtFile(\n componentPath: string,\n options: AutogenOptions = {},\n outputPath?: string,\n): Promise<string> {\n const output = await generateArtFile(componentPath, options);\n\n const targetPath = outputPath ?? componentPath.replace(/\\.vue$/, \".art.vue\");\n\n await fs.promises.mkdir(path.dirname(targetPath), { recursive: true });\n await fs.promises.writeFile(targetPath, output.artFileContent, \"utf-8\");\n\n return targetPath;\n}\n"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as collectRequestBody, c as parseJsonBody, d as resolveUrlPathInside, f as serializeScriptValue, i as HttpError, l as resolveInside, n as generateGalleryModule, o as createDevSessionToken, p as validateDevApiRequest, s as decodeUrlComponent, u as resolveInsideAny } from "./gallery-kaxHo2Kt.mjs";
|
|
2
2
|
import { i as MuseaVrtRunner, n as generateVrtJsonReport, r as generateVrtReport } from "./vrt-Cv1PK1EF.mjs";
|
|
3
3
|
import { t as MuseaA11yRunner } from "./a11y-62l8G1tr.mjs";
|
|
4
|
-
import { n as writeArtFile, t as generateArtFile } from "./autogen-
|
|
4
|
+
import { n as writeArtFile, t as generateArtFile } from "./autogen-Blm3Qy_O.mjs";
|
|
5
5
|
import { createRequire } from "node:module";
|
|
6
6
|
import { transformWithEsbuild } from "vite";
|
|
7
7
|
import fs from "node:fs";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vizejs/vite-plugin-musea",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.238.0",
|
|
4
4
|
"description": "Vite plugin for Musea - Component gallery for Vue components",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"component-gallery",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"access": "public"
|
|
63
63
|
},
|
|
64
64
|
"dependencies": {
|
|
65
|
-
"@vizejs/native": "0.
|
|
65
|
+
"@vizejs/native": "0.238.0",
|
|
66
66
|
"pngjs": "7.0.0"
|
|
67
67
|
},
|
|
68
68
|
"devDependencies": {
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"@types/node": "25.9.2",
|
|
72
72
|
"@types/pngjs": "6.0.5",
|
|
73
73
|
"@vitejs/plugin-vue": "6.0.7",
|
|
74
|
-
"@vizejs/vite-plugin": "0.
|
|
74
|
+
"@vizejs/vite-plugin": "0.238.0",
|
|
75
75
|
"highlight.js": "11.11.1",
|
|
76
76
|
"marked": "18.0.5",
|
|
77
77
|
"marked-highlight": "2.2.4",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"vue-router": "4.5.1"
|
|
85
85
|
},
|
|
86
86
|
"peerDependencies": {
|
|
87
|
-
"@vizejs/vite-plugin": "0.
|
|
87
|
+
"@vizejs/vite-plugin": "0.238.0",
|
|
88
88
|
"axe-core": "^4.7.0",
|
|
89
89
|
"playwright": "^1.40.0",
|
|
90
90
|
"vite": "^8.0.0"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"autogen-D32ZAiUd.mjs","names":[],"sources":["../src/autogen/fallback.ts","../src/autogen/index.ts"],"sourcesContent":["/**\n * JS-based fallback for variant auto-generation.\n *\n * Used when the native Rust binding is not available. Provides simple\n * regex-based prop extraction, minimal art file generation, and a pure\n * JS variant generator.\n */\n\nimport path from \"node:path\";\n\nimport type { AutogenOptions, AutogenOutput, GeneratedVariant, PropDefinition } from \"./index.js\";\n\n/**\n * Simple prop extraction fallback (when native binding not available).\n */\nexport function extractPropsSimple(source: string): PropDefinition[] {\n const props: PropDefinition[] = [];\n\n // Match defineProps<{ ... }>() or defineProps({ ... })\n const propsMatch = source.match(/defineProps\\s*<\\s*\\{([^}]*)\\}\\s*>/s);\n\n if (propsMatch) {\n const propsBlock = propsMatch[1];\n const propLines = propsBlock.split(\"\\n\");\n\n for (const line of propLines) {\n const propMatch = line.trim().match(/^(\\w+)(\\?)?:\\s*(.+?)\\s*;?\\s*$/);\n if (propMatch) {\n props.push({\n name: propMatch[1],\n propType: propMatch[3].replace(/,\\s*$/, \"\"),\n required: !propMatch[2],\n });\n }\n }\n }\n\n return props;\n}\n\n/**\n * Minimal art file for components with no props.\n */\nexport function generateMinimalArt(componentName: string, componentPath: string): string {\n return `<script setup lang=\"ts\">\ndefineArt(${JSON.stringify(componentPath)}, {\n title: ${JSON.stringify(componentName)},\n});\n</script>\n\n<art>\n <variant name=\"Default\" default>\n <${componentName} />\n </variant>\n</art>\n`;\n}\n\n/**\n * JS-based variant generation fallback.\n */\nexport function generateArtFileJs(\n componentPath: string,\n props: PropDefinition[],\n options: AutogenOptions,\n): AutogenOutput {\n const componentName = path.basename(componentPath, \".vue\");\n const relPath = `./${path.basename(componentPath)}`;\n const maxVariants = options.maxVariants ?? 20;\n const variants: GeneratedVariant[] = [];\n\n // Default variant\n if (options.includeDefault !== false) {\n const defaultProps: Record<string, unknown> = {};\n for (const prop of props) {\n if (prop.defaultValue !== undefined) {\n defaultProps[prop.name] = prop.defaultValue;\n }\n }\n variants.push({\n name: \"Default\",\n isDefault: true,\n props: defaultProps,\n description: `${componentName} with default props`,\n });\n }\n\n // Enum variants\n if (options.includeEnumVariants !== false) {\n for (const prop of props) {\n const unionValues = parseUnionType(prop.propType);\n for (const val of unionValues) {\n if (variants.length >= maxVariants) break;\n const name =\n typeof val === \"string\" ? toPascalCase(val) : `${toPascalCase(prop.name)}_${String(val)}`;\n variants.push({\n name,\n isDefault: false,\n props: { [prop.name]: val },\n description: `${prop.name} = ${JSON.stringify(val)}`,\n });\n }\n }\n }\n\n // Boolean toggle variants\n if (options.includeBooleanToggles !== false) {\n for (const prop of props) {\n if (variants.length >= maxVariants) break;\n if (prop.propType.toLowerCase() === \"boolean\") {\n const nonDefault = prop.defaultValue === true ? false : true;\n variants.push({\n name: nonDefault ? toPascalCase(prop.name) : `No${toPascalCase(prop.name)}`,\n isDefault: false,\n props: { [prop.name]: nonDefault },\n description: `${prop.name} = ${nonDefault}`,\n });\n }\n }\n }\n\n // Generate art file content\n let content = `<script setup lang=\"ts\">\\ndefineArt(${JSON.stringify(relPath)}, {\\n title: ${JSON.stringify(componentName)},\\n});\\n</script>\\n\\n<art>\\n`;\n for (const variant of variants) {\n const attrs = variant.isDefault ? `name=\"${variant.name}\" default` : `name=\"${variant.name}\"`;\n content += ` <variant ${attrs}>\\n`;\n\n const propsStr = Object.entries(variant.props)\n .map(([k, v]) => {\n if (typeof v === \"string\") return `${k}=\"${v}\"`;\n if (typeof v === \"boolean\" && v) return k;\n if (typeof v === \"boolean\" && !v) return `:${k}=\"false\"`;\n return `:${k}=\"${JSON.stringify(v)}\"`;\n })\n .join(\" \");\n\n content += ` <${componentName}${propsStr ? \" \" + propsStr : \"\"} />\\n`;\n content += ` </variant>\\n\\n`;\n }\n content += `</art>\\n`;\n\n return {\n variants,\n artFileContent: content,\n componentName,\n };\n}\n\nexport function parseUnionType(typeStr: string): unknown[] {\n const trimmed = typeStr.trim();\n if (!trimmed.includes(\"|\")) return [];\n\n if (trimmed.includes(\"'\") || trimmed.includes('\"')) {\n return trimmed\n .split(\"|\")\n .map((s) => s.trim().replace(/^['\"]|['\"]$/g, \"\"))\n .filter((s) => s.length > 0);\n }\n\n const parts = trimmed.split(\"|\").map((s) => s.trim());\n if (parts.every((p) => !isNaN(Number(p)))) {\n return parts.map(Number);\n }\n\n return [];\n}\n\nexport function toPascalCase(str: string): string {\n return str\n .split(/[\\s\\-_]+/)\n .filter(Boolean)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\"\");\n}\n","/**\n * Variant auto-generation module.\n * Generates .art.vue files from component prop analysis.\n *\n * JS-based fallback logic (extractPropsSimple, generateMinimalArt,\n * generateArtFileJs, and helpers) is extracted into `fallback.ts`.\n */\n\nimport { createRequire } from \"node:module\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\n\nimport { extractPropsSimple, generateMinimalArt, generateArtFileJs } from \"./fallback.js\";\n\n/**\n * Autogen configuration options.\n */\nexport interface AutogenOptions {\n /** Maximum number of variants to generate (default: 20) */\n maxVariants?: number;\n /** Include a \"Default\" variant with all default values (default: true) */\n includeDefault?: boolean;\n /** Include boolean toggle variants (default: true) */\n includeBooleanToggles?: boolean;\n /** Include enum/union variants (default: true) */\n includeEnumVariants?: boolean;\n /** Include boundary value variants for numbers (default: false) */\n includeBoundaryValues?: boolean;\n /** Include empty string variants for optional strings (default: false) */\n includeEmptyStrings?: boolean;\n}\n\n/**\n * Prop definition for variant generation.\n */\nexport interface PropDefinition {\n name: string;\n propType: string;\n required: boolean;\n defaultValue?: unknown;\n}\n\n/**\n * Generated variant.\n */\nexport interface GeneratedVariant {\n name: string;\n isDefault: boolean;\n props: Record<string, unknown>;\n description?: string;\n}\n\n/**\n * Autogen output.\n */\nexport interface AutogenOutput {\n variants: GeneratedVariant[];\n artFileContent: string;\n componentName: string;\n}\n\n// Native binding types\ninterface NativeAutogen {\n generateVariants?: (\n componentPath: string,\n props: Array<{\n name: string;\n prop_type: string;\n required: boolean;\n default_value?: unknown;\n }>,\n config?: {\n max_variants?: number;\n include_default?: boolean;\n include_boolean_toggles?: boolean;\n include_enum_variants?: boolean;\n include_boundary_values?: boolean;\n include_empty_strings?: boolean;\n },\n ) => {\n variants: Array<{\n name: string;\n is_default: boolean;\n props: Record<string, unknown>;\n description?: string;\n }>;\n art_file_content: string;\n component_name: string;\n };\n analyzeSfc?: (\n source: string,\n options?: { filename?: string },\n ) => {\n props: Array<{ name: string; type: string; required: boolean; default_value?: unknown }>;\n emits: string[];\n };\n}\n\nlet native: NativeAutogen | null = null;\n\nfunction loadNative(): NativeAutogen {\n if (native) return native;\n const require = createRequire(import.meta.url);\n try {\n native = require(\"@vizejs/native\") as NativeAutogen;\n return native;\n } catch (e) {\n throw new Error(\n `Failed to load @vizejs/native. Make sure it's installed and built:\\n${String(e)}`,\n );\n }\n}\n\n/**\n * Generate .art.vue file for a component.\n *\n * @param componentPath - Path to the Vue component file\n * @param options - Auto-generation options\n * @returns Generated .art.vue content and metadata\n */\nexport async function generateArtFile(\n componentPath: string,\n options: AutogenOptions = {},\n): Promise<AutogenOutput> {\n const absolutePath = path.resolve(componentPath);\n const source = await fs.promises.readFile(absolutePath, \"utf-8\");\n\n const binding = loadNative();\n\n // Analyze component to extract props\n let props: PropDefinition[];\n if (binding.analyzeSfc) {\n const analysis = binding.analyzeSfc(source, { filename: absolutePath });\n props = analysis.props.map((p) => ({\n name: p.name,\n propType: p.type,\n required: p.required,\n defaultValue: p.default_value,\n }));\n } else {\n // Fallback: simple regex-based prop extraction\n props = extractPropsSimple(source);\n }\n\n if (props.length === 0) {\n // No props found: generate minimal art file\n const componentName = path.basename(componentPath, \".vue\");\n const relPath = `./${path.basename(componentPath)}`;\n return {\n variants: [{ name: \"Default\", isDefault: true, props: {} }],\n artFileContent: generateMinimalArt(componentName, relPath),\n componentName,\n };\n }\n\n // Use native variant generation if available\n if (binding.generateVariants) {\n const nativeProps = props.map((p) => ({\n name: p.name,\n prop_type: p.propType,\n required: p.required,\n default_value: p.defaultValue,\n }));\n\n const relPath = `./${path.basename(componentPath)}`;\n const result = binding.generateVariants(relPath, nativeProps, {\n max_variants: options.maxVariants,\n include_default: options.includeDefault,\n include_boolean_toggles: options.includeBooleanToggles,\n include_enum_variants: options.includeEnumVariants,\n include_boundary_values: options.includeBoundaryValues,\n include_empty_strings: options.includeEmptyStrings,\n });\n\n return {\n variants: result.variants.map((v) => ({\n name: v.name,\n isDefault: v.is_default,\n props: v.props,\n description: v.description,\n })),\n artFileContent: result.art_file_content,\n componentName: result.component_name,\n };\n }\n\n // Fallback: JS-based generation\n return generateArtFileJs(componentPath, props, options);\n}\n\n/**\n * Write generated .art.vue file to disk.\n */\nexport async function writeArtFile(\n componentPath: string,\n options: AutogenOptions = {},\n outputPath?: string,\n): Promise<string> {\n const output = await generateArtFile(componentPath, options);\n\n const targetPath = outputPath ?? componentPath.replace(/\\.vue$/, \".art.vue\");\n\n await fs.promises.mkdir(path.dirname(targetPath), { recursive: true });\n await fs.promises.writeFile(targetPath, output.artFileContent, \"utf-8\");\n\n return targetPath;\n}\n"],"mappings":"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"}
|