lore-ui
Version:
Package used to perform Lore stylization.
94 lines • 3.75 kB
JavaScript
;
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