UNPKG

@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
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