Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/design-tokens/air/ |
Upload File : |
const fs=require("fs");const path=require("path");function applyCustomRules(e,t){if(e.type==="number"&&e.name.toLowerCase().includes("opacity")){return(e.value/100).toString()}return t}function shouldIgnoreToken(e,t){const n=e.split("/");for(const e of n){if(t.includes(e)){return true}}return false}function transformTokenName(e,t){const n=e.split("/");let o=n[n.length-1];o=o.replace(/\s+/g,"-").toLowerCase();const s=t==="color"?"color-":"";return`ui-${s}${o}`}function buildTokenLookup(e,t,n){const o={};e.forEach((e=>{if(n.length>0&&!n.includes(e.name)){return}const s=e.name;if(!o[s]){o[s]={}}e.modes.forEach((e=>{if(Array.isArray(e.variables)){e.variables.forEach((e=>{if(shouldIgnoreToken(e.name,t)){return}const n=transformTokenName(e.name,e.type);o[s][e.name]=n}))}}))}));return o}function generateCssVariables(e,t,n){let o="";e.forEach((e=>{if(shouldIgnoreToken(e.name,n)){return}const s=transformTokenName(e.name,e.type);let r="";if(e.isAlias&&typeof e.value==="object"){const n=e.value.collection;const o=e.value.name;if(t[n]&&t[n][o]){const e=t[n][o];r=`var(--${e})`}else{console.error(`Alias target token not found: collection "${n}", name "${o}"`);r="undefined"}}else{if(e.type==="number"){const t=`${e.value}px`;r=applyCustomRules(e,t)}else{r=e.value}}o+=` --${s}: ${r};\n`}));return o}function generateCss(e,t,n){const o=`/**\n * Do not edit directly\n * Generated on ${(new Date).toUTCString()}\n */\n\n`;const{collections:s}=e;const r=buildTokenLookup(s,t,n);let a=o;s.forEach((e=>{if(n.length>0&&!n.includes(e.name)){return}if(e.modes.length===1){const n=e.modes[0];a+=`:root {\n`;a+=generateCssVariables(n.variables,r,t);a+=`}\n\n`}else{let n;if(e.defaultMode){n=e.modes.find((t=>t.name.toLowerCase()===e.defaultMode.toLowerCase()))}if(!n){n=e.modes[0]}const o=`--ui-context-${n.name.toLowerCase().replace(/\s+/g,"-")}`;a+=`:root, .${o} {\n`;a+=generateCssVariables(n.variables,r,t);a+=`}\n\n`;e.modes.forEach((e=>{if(e.name.toLowerCase()===n.name.toLowerCase()){return}const o=`--ui-context-${e.name.toLowerCase().replace(/\s+/g,"-")}`;a+=`.${o} {\n`;a+=generateCssVariables(e.variables,r,t);a+=`}\n\n`}))}}));return a}function parseArgs(){const e="./src/figma-tokens.json";const t="./dist/air-design-tokens.css";const n=process.argv.slice(2);let o=e;let s=t;let r=["component","chat","design","legacy","radius","space","size","opacity","width"];let a=["fixed","design"];n.forEach((e=>{if(e.startsWith("--input=")){o=e.split("=")[1]}else if(e.startsWith("--output=")){s=e.split("=")[1]}else if(e.startsWith("--exclude=")){r=e.split("=")[1].split(",").map((e=>e.trim()))}else if(e.startsWith("--collections=")){a=e.split("=")[1].split(",").map((e=>e.trim()))}}));return{input:path.resolve(o),output:path.resolve(s),exclude:r,collections:a}}function main(){const e=parseArgs();let t;try{const n=fs.readFileSync(e.input,"utf8");t=JSON.parse(n)}catch(e){console.error("Error reading or parsing JSON file:",e);process.exit(1)}const n=generateCss(t,e.exclude,e.collections);try{fs.writeFileSync(e.output,n,"utf8");console.log(`CSS file successfully generated: ${e.output}`)}catch(e){console.error("Error writing CSS file:",e);process.exit(1)}}main(); //# sourceMappingURL=converter.map.js