feat: add form design
This commit is contained in:
62
safelist-loader.js
Normal file
62
safelist-loader.js
Normal file
@@ -0,0 +1,62 @@
|
||||
// safelist-loader.js
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const yaml = require('js-yaml');
|
||||
|
||||
/**
|
||||
* Generate a Tailwind CSS safelist array from a YAML file.
|
||||
* @param {string} yamlFilePath - Path to the YAML file, relative to the working directory.
|
||||
* @returns {string[]} Array of unique class names.
|
||||
*/
|
||||
function generateSafelist(yamlFilePath) {
|
||||
// Resolve the YAML file path
|
||||
const absolutePath = path.resolve(process.cwd(), yamlFilePath);
|
||||
const content = fs.readFileSync(absolutePath, 'utf8');
|
||||
const doc = yaml.load(content);
|
||||
|
||||
const classes = new Set();
|
||||
|
||||
function walk(obj) {
|
||||
if (Array.isArray(obj)) {
|
||||
obj.forEach(walk);
|
||||
} else if (obj && typeof obj === 'object') {
|
||||
// Expand gridColumnClassAutoConfiguration placeholders
|
||||
if (obj.gridColumnClassAutoConfiguration) {
|
||||
const { gridSize, viewPorts } = obj.gridColumnClassAutoConfiguration;
|
||||
const placeholder = /\{\@[\w]+\}/g;
|
||||
if (typeof gridSize === 'number' && viewPorts) {
|
||||
Object.values(viewPorts).forEach(vp => {
|
||||
if (typeof vp.classPattern === 'string') {
|
||||
for (let i = 1; i <= gridSize; i++) {
|
||||
classes.add(vp.classPattern.replace(placeholder, i));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Collect any *ClassAttribute strings
|
||||
Object.entries(obj).forEach(([key, val]) => {
|
||||
if (/Class(Attribute)?$/.test(key) && typeof val === 'string') {
|
||||
val.split(/\s+/).forEach(c => {
|
||||
if (c) classes.add(c);
|
||||
});
|
||||
} else {
|
||||
walk(val);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
walk(doc);
|
||||
return Array.from(classes);
|
||||
}
|
||||
|
||||
module.exports = generateSafelist;
|
||||
|
||||
// Usage in tailwind.config.js:
|
||||
// const safelistLoader = require('./safelist-loader');
|
||||
// module.exports = {
|
||||
// // ... other config ...
|
||||
// safelist: generateSafelist('packages/base/Configuration/Ext/Form/Yaml/Setup.yaml'),
|
||||
// };
|
||||
Reference in New Issue
Block a user