UNPKG

lore-ui

Version:

Package used to perform Lore stylization.

94 lines 3.75 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.toCamelCase = exports.toBase64 = exports.isValidColor = exports.createHexadecimalColorType = exports.checkDuplicateKeysAndHexadecimals = exports.ICON_SIZE_DEFAULT = exports.COLOR_DEFAULT = void 0; const sharp_1 = __importDefault(require("sharp")); const colors_1 = require("../colors"); exports.COLOR_DEFAULT = colors_1.colorBase?.lore['900']; exports.ICON_SIZE_DEFAULT = 98; const checkDuplicateKeysAndHexadecimals = (data, type) => { const duplicateHexValues = []; const duplicateKeyValues = []; const uniqueKeys = new Set(); const uniqueHexadecimals = new Set(); for (const index in data) { const entry = data[index]; if (typeof entry === 'object' && type === 'color') { const uniqueTones = new Set(); for (const tone in entry) { const hexadecimal = entry[tone]; if (uniqueTones.has(tone)) { duplicateKeyValues.push(`Duplicate tone '${tone}' found in color '${index}'`); } else { uniqueTones.add(tone); } if (uniqueHexadecimals.has(hexadecimal)) { duplicateHexValues.push(`Duplicate hexadecimal color value '${hexadecimal}' found in color '${index}'`); } else { uniqueHexadecimals.add(hexadecimal); } } } else { if (uniqueKeys.has(index)) { duplicateKeyValues.push(`Duplicate ${type} '${index}'`); } else { uniqueKeys.add(index); } if (uniqueHexadecimals.has(entry)) { duplicateHexValues.push(`Duplicate hexadecimal ${type} value '${entry}'`); } else { uniqueHexadecimals.add(entry); } } } return { duplicateHexValues, duplicateKeyValues, }; }; exports.checkDuplicateKeysAndHexadecimals = checkDuplicateKeysAndHexadecimals; const createHexadecimalColorType = () => { const hexadecimalColor = new Set(); for (const color of Object.values(colors_1.colorBase)) { if (typeof color === 'string') { hexadecimalColor.add(color); } else { for (const hexadecimal of Object.values(color)) { hexadecimalColor.add(hexadecimal); } } } const hexadecimalUnion = Array.from(hexadecimalColor).map((hexadecimal) => `'${hexadecimal}'`).join(' | '); return `export type HexadecimalColor = ${hexadecimalUnion}`; }; exports.createHexadecimalColorType = createHexadecimalColorType; const isValidColor = (color) => { const hexColorRegex = /^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/; const colors = Object.keys(colors_1.colorBase); return hexColorRegex.test(color) || colors.includes(color); }; exports.isValidColor = isValidColor; const toBase64 = async (svgContent) => { const cleanedSvgContent = svgContent.replace(/\s+/g, ' ').trim(); const pngBuffer = await (0, sharp_1.default)(Buffer.from(cleanedSvgContent)) .png() .toBuffer(); return `data:image/png;base64,${pngBuffer.toString('base64')}`; }; exports.toBase64 = toBase64; const toCamelCase = (fileName) => { return fileName .replace(/[-_](.)/g, (_, char) => char.toUpperCase()) .replace(/\.svg$/, '') .replace(/^./, char => char.toLowerCase()); }; exports.toCamelCase = toCamelCase; //# sourceMappingURL=index.js.map