@salesforce-ux/design-system-data
Version:
This package contains scripts to generate data and data assets for aspects of the Salesforce Lightning Design System (SLDS).
218 lines (185 loc) • 9.79 kB
JavaScript
var $6Hlig$path = require("path");
var $6Hlig$fs = require("fs");
var $6Hlig$nconf = require("nconf");
require("immutable");
var $6Hlig$glob = require("glob");
var $parcel$global = globalThis;
var $parcel$modules = {};
var $parcel$inits = {};
var parcelRequire = $parcel$global["parcelRequire1c17"];
if (parcelRequire == null) {
parcelRequire = function(id) {
if (id in $parcel$modules) {
return $parcel$modules[id].exports;
}
if (id in $parcel$inits) {
var init = $parcel$inits[id];
delete $parcel$inits[id];
var module = {id: id, exports: {}};
$parcel$modules[id] = module;
init.call(module.exports, module, module.exports);
return module.exports;
}
var err = new Error("Cannot find module '" + id + "'");
err.code = 'MODULE_NOT_FOUND';
throw err;
};
parcelRequire.register = function register(id, init) {
$parcel$inits[id] = init;
};
$parcel$global["parcelRequire1c17"] = parcelRequire;
}
var parcelRegister = parcelRequire.register;
parcelRegister("18Px7", function(module, exports) {
module.exports = function findNodeModules(baseDir) {
let currentDir = baseDir;
while(currentDir !== $6Hlig$path.resolve(currentDir, "..")){
// Stop when reaching the root
const candidatePath = $6Hlig$path.join(currentDir, "node_modules");
if ($6Hlig$fs.existsSync(candidatePath)) return candidatePath;
currentDir = $6Hlig$path.resolve(currentDir, "..");
}
throw new Error("Unable to find node_modules directory.");
};
});
var $8ff24f2f75d44b86$exports = {};
// @preval
// Copyright (c) 2015-present, Salesforce, Inc. All rights reserved
// Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license
var $8ff24f2f75d44b86$var$$parcel$__dirname = $6Hlig$path.resolve(__dirname, "../src/preval");
var $528a2b02543756b6$exports = {};
$528a2b02543756b6$exports = JSON.parse('{"files":["colors.raw.json","transparent-colors.raw.json","palettes.raw.json","font.raw.json","hooks.raw.json","radius.raw.json","ratio.raw.json","shadow.raw.json","sizing.raw.json","spacing.raw.json"],"categories":{"system-color":{"name":"system-color","type":"color","label":"System Colors","description":"System level styling hooks would provide a way to manage the visual appearance of elements across an entire application.","groups":["theme","feedback","borders","links"]},"reference-color":{"name":"reference-color","type":"color","label":"Palette Colors","description":"Generic colors to use within a Salesforce application.","groups":["reference"]}}}');
var $18Px7 = parcelRequire("18Px7");
const $8ff24f2f75d44b86$var$nodeModulesDir = $18Px7($8ff24f2f75d44b86$var$$parcel$__dirname);
const $8ff24f2f75d44b86$var$SLDS_V_1 = "slds-v1"; //default
const $8ff24f2f75d44b86$var$SLDS_V_2 = "slds-v2";
let $8ff24f2f75d44b86$var$dsVer = $8ff24f2f75d44b86$var$SLDS_V_1;
const $8ff24f2f75d44b86$var$sldsModule = $8ff24f2f75d44b86$var$dsVer === $8ff24f2f75d44b86$var$SLDS_V_2 ? "@salesforce-ux/sds-styling-hooks" : "@salesforce-ux/design-system";
const $8ff24f2f75d44b86$var$globalStylingHooksPath = $6Hlig$path.resolve.bind($6Hlig$path, $8ff24f2f75d44b86$var$dsVer === $8ff24f2f75d44b86$var$SLDS_V_2 ? `${$8ff24f2f75d44b86$var$nodeModulesDir}/${$8ff24f2f75d44b86$var$sldsModule}/dist` : `${$8ff24f2f75d44b86$var$nodeModulesDir}/${$8ff24f2f75d44b86$var$sldsModule}/design-tokens/dist`);
const $8ff24f2f75d44b86$var$getJsonFilePath = (fileName)=>$8ff24f2f75d44b86$var$globalStylingHooksPath(fileName);
const $8ff24f2f75d44b86$var$readJsonFile = (file)=>{
try {
return JSON.parse($6Hlig$fs.readFileSync(file));
} catch (error) {
// Return an empty object instead of breaking
if (error.code === "ENOENT") {
console.warn(`/// WARN: Couldn't find ${file}`);
return {};
} else throw error;
}
};
const $8ff24f2f75d44b86$var$getPropsFromJson = (json)=>json.props || {};
// const createJsonForCategory = _ => ({ stylingHooks: {} });
/**
* Return category name if styling hook type and group
* matches the category type and either of category group
*/ const $8ff24f2f75d44b86$var$hasMatchingCategory = ({ category: category, group: group, type: type }, categories)=>{
const { groups: categoryGroups, type: categoryType } = categories[category];
return categoryGroups.includes(group) && type === categoryType;
};
const $8ff24f2f75d44b86$var$findMatchingCategory = ({ group: group, type: type }, categories)=>Object.keys(categories).find((category)=>$8ff24f2f75d44b86$var$hasMatchingCategory({
category: category,
group: group,
type: type
}, categories));
const $8ff24f2f75d44b86$var$findCategoryForHook = ({ group: group, type: type }, categories)=>{
const foundCategory = $8ff24f2f75d44b86$var$findMatchingCategory({
group: group,
type: type
}, categories);
return foundCategory ? foundCategory : "Others"; // fallback category
};
// const populateCategoryDetails = (results, categories) => {
// Object.keys(results)
// .forEach(category => {
// const { description, label } = categories[category];
// results[category].description = description;
// results[category].label = label;
// });
// return results;
// };
const $8ff24f2f75d44b86$var$prepareHooksData = (props, categories)=>{
const allHooks = [];
Object.keys(props).forEach((key)=>{
const { comment: comment, name: name, value: value, originalValue: originalValue, scope: scope, group: group, type: type } = props[key];
allHooks.push({
name: `--slds-g-${name}`,
groupCategory: $8ff24f2f75d44b86$var$findCategoryForHook({
group: group,
type: type
}, categories),
value: value && value.startsWith("#") ? value.toUpperCase() : value,
originalValue: originalValue && originalValue.startsWith("rgb") ? "" : originalValue.replace(/{|}|!/g, ""),
scope: scope,
comment: comment
});
});
return allHooks;
};
const $8ff24f2f75d44b86$var$generate = ()=>{
const allProps = $528a2b02543756b6$exports.files.map($8ff24f2f75d44b86$var$getJsonFilePath).map($8ff24f2f75d44b86$var$readJsonFile).map($8ff24f2f75d44b86$var$getPropsFromJson).reduce((result, curr)=>{
return {
...result,
...curr
};
}, {});
return $8ff24f2f75d44b86$var$prepareHooksData(allProps, $528a2b02543756b6$exports.categories);
};
$8ff24f2f75d44b86$exports = $8ff24f2f75d44b86$var$generate();
var $fefc60366a785d00$exports = {};
var $fefc60366a785d00$var$$parcel$__dirname = $6Hlig$path.resolve(__dirname, "../src/preval");
var $18Px7 = parcelRequire("18Px7");
const $fefc60366a785d00$var$nodeModulesDir = $18Px7($fefc60366a785d00$var$$parcel$__dirname);
const $fefc60366a785d00$var$sldsModule = "@salesforce-ux/design-system";
const $fefc60366a785d00$var$globPattern = `${$fefc60366a785d00$var$nodeModulesDir}/${$fefc60366a785d00$var$sldsModule}/metadata/components/*/styling-hooks.json`;
function $fefc60366a785d00$var$collectComponentHooks(globPattern) {
const componentHooks = [];
$6Hlig$glob.sync(globPattern).forEach((file)=>{
const content = JSON.parse($6Hlig$fs.readFileSync(file, "utf-8"));
// Extract the component name from the file path using the wildcard part
const componentFolderMatch = file.match(/components\/(.+?)\/styling-hooks\.json/);
const componentName = componentFolderMatch ? componentFolderMatch[1] : null;
// Iterate over each key-value pair in the content and form the new object
for (const [key, value] of Object.entries(content)){
const { valueType: valueType, category: category, ...propValues } = value;
// Rename the key 'fallbackValue' to 'value'
if (propValues.hasOwnProperty("fallbackValue")) {
propValues.value = propValues.fallbackValue;
delete propValues.fallbackValue;
}
componentHooks.push({
component: componentName,
name: key,
scope: "component",
valueType: valueType && valueType.toLowerCase() || "",
category: category && category.toLowerCase() || "",
...propValues
});
}
});
return componentHooks;
}
const $fefc60366a785d00$var$result = $fefc60366a785d00$var$collectComponentHooks($fefc60366a785d00$var$globPattern);
$fefc60366a785d00$exports = $fefc60366a785d00$var$result; // Optional: write the result to a file
// const outputPath = path.join(__dirname, 'combined-styling-hooks.json');
// fs.writeFileSync(outputPath, JSON.stringify(result, null, 2), 'utf-8');
$6Hlig$nconf.argv();
const $26ad2ed560084b4c$var$generateToFile = $6Hlig$nconf.get("to-file");
const $26ad2ed560084b4c$var$concatHooksArray = [
...$8ff24f2f75d44b86$exports,
...$fefc60366a785d00$exports
];
const $26ad2ed560084b4c$var$hooksData = JSON.stringify($26ad2ed560084b4c$var$concatHooksArray);
const $26ad2ed560084b4c$var$writeFile = (data)=>{
$6Hlig$fs.writeFile("styling-hooks.json", $26ad2ed560084b4c$var$hooksData, "utf8", (err)=>{
if (err) console.error("Error writing JSON file:", err);
else console.log("JSON file has been saved successfully.");
});
};
const $26ad2ed560084b4c$var$generate = (data, toFile)=>{
if (!toFile) console.log(data);
return toFile ? $26ad2ed560084b4c$var$writeFile(data) : data;
};
// Export the function writeFile as default
module.exports = $26ad2ed560084b4c$var$generate($26ad2ed560084b4c$var$hooksData, $26ad2ed560084b4c$var$generateToFile);
//# sourceMappingURL=generateStylingHooks.js.map