Some checks failed
📦 Build / build (push) Has been cancelled
🧪 CI Test / test shard (1/4) (push) Has been cancelled
🧪 CI Test / test shard (2/4) (push) Has been cancelled
🧪 CI Test / test shard (3/4) (push) Has been cancelled
🧪 CI Test / test shard (4/4) (push) Has been cancelled
🧪 CI Test / test (push) Has been cancelled
🧪 CI Test / eslint (push) Has been cancelled
🧪 CI Test / typecheck (push) Has been cancelled
🔫 Sync to Pro / dispatch-sync (push) Has been cancelled
🔮 Sync Mirror / sync (push) Has been cancelled
147 lines
7.9 KiB
TypeScript
147 lines
7.9 KiB
TypeScript
/**
|
|
* Copyright 2023-present DreamNum Co., Ltd.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
import fs from 'node:fs';
|
|
|
|
const progress = [
|
|
['progress0', '@univerjs/icons-svg/double/progress-0-double-icon.svg', { black: '#7A7A7A', '#E5E5E5': '#7A7A7A' }],
|
|
['progress25', '@univerjs/icons-svg/double/progress-25-double-icon.svg', { black: '#7A7A7A', '#E5E5E5': '#7A7A7A' }],
|
|
['progress50', '@univerjs/icons-svg/double/progress-50-double-icon.svg', { black: '#7A7A7A', '#E5E5E5': '#7A7A7A' }],
|
|
['progress75', '@univerjs/icons-svg/double/progress-75-double-icon.svg', { black: '#7A7A7A', '#E5E5E5': '#7A7A7A' }],
|
|
['progress100', '@univerjs/icons-svg/double/progress-100-double-icon.svg', { black: '#7A7A7A', '#E5E5E5': '#7A7A7A' }],
|
|
];
|
|
|
|
const star = [
|
|
['starEmpty', '@univerjs/icons-svg/double/star-empty-double-icon.svg', { black: '#FFBD37' }],
|
|
['starIncomplete', '@univerjs/icons-svg/double/star-incomplete-double-icon.svg', { black: '#FFBD37' }],
|
|
['starFull', '@univerjs/icons-svg/double/star-full-double-icon.svg', { black: '#FFBD37' }],
|
|
];
|
|
|
|
const feeling = [
|
|
['guffaw', '@univerjs/icons-svg/double/guffaw-double-icon.svg', { black: '#8F5F00', '#E5E5E5': '#FFBD37' }],
|
|
['smile', '@univerjs/icons-svg/double/smile-double-icon.svg', { black: '#8F5F00', '#E5E5E5': '#FFBD37' }],
|
|
['noninductive', '@univerjs/icons-svg/double/noninductive-double-icon.svg', { black: '#8F5F00', '#E5E5E5': '#FFBD37' }],
|
|
['dissatisfied', '@univerjs/icons-svg/double/dissatisfied-double-icon.svg', { black: '#8F5F00', '#E5E5E5': '#FFBD37' }],
|
|
['impatient', '@univerjs/icons-svg/double/impatient-double-icon.svg', { black: '#8F5F00', '#E5E5E5': '#FFBD37' }],
|
|
];
|
|
|
|
const signal = [
|
|
['signal0', '@univerjs/icons-svg/double/signal-0-double-icon.svg', { black: '#0493EE' }],
|
|
['signal25', '@univerjs/icons-svg/double/signal-25-double-icon.svg', { black: '#0493EE' }],
|
|
['signal50', '@univerjs/icons-svg/double/signal-50-double-icon.svg', { black: '#0493EE' }],
|
|
['signal75', '@univerjs/icons-svg/double/signal-75-double-icon.svg', { black: '#0493EE' }],
|
|
['signal100', '@univerjs/icons-svg/double/signal-100-double-icon.svg', { black: '#0493EE' }],
|
|
];
|
|
|
|
const feedback = [
|
|
['mistake', '@univerjs/icons-svg/double/mistake-double-icon.svg', { black: '#FE4B4B', '#E5E5E5': '#FFFFFF' }],
|
|
['warn', '@univerjs/icons-svg/double/warn-double-icon.svg', { black: '#FFBD37', '#E5E5E5': '#FFFFFF' }],
|
|
['correct', '@univerjs/icons-svg/double/correct-double-icon.svg', { black: '#59D01E', '#E5E5E5': '#FFFFFF' }],
|
|
];
|
|
|
|
const feedback2 = [
|
|
['mistake2', '@univerjs/icons-svg/single/close-icon.svg', { black: '#FE4B4B' }],
|
|
['warn2', '@univerjs/icons-svg/single/exclamation-icon.svg', { black: '#FFBD37' }],
|
|
['correct2', '@univerjs/icons-svg/single/check-mark-icon.svg', { black: '#59D01E' }],
|
|
];
|
|
|
|
const arrow = [
|
|
['down-red', '@univerjs/icons-svg/single/arrow-down-icon.svg', { black: '#FE4B4B' }],
|
|
['right-gold', '@univerjs/icons-svg/single/arrow-right-icon.svg', { black: '#FFBD37' }],
|
|
['up-green', '@univerjs/icons-svg/single/arrow-up-icon.svg', { black: '#59D01E' }],
|
|
['rightAndDown-gold', '@univerjs/icons-svg/single/arrow-tilt-down-icon.svg', { black: '#FFBD37' }],
|
|
['rightAndUp-gold', '@univerjs/icons-svg/single/arrow-tilt-up-icon.svg', { black: '#FFBD37' }],
|
|
['down-gray', '@univerjs/icons-svg/single/arrow-down-icon.svg', { black: '#999999' }],
|
|
['right-gray', '@univerjs/icons-svg/single/arrow-right-icon.svg', { black: '#999999' }],
|
|
['up-gray', '@univerjs/icons-svg/single/arrow-up-icon.svg', { black: '#999999' }],
|
|
['rightAndDown-gray', '@univerjs/icons-svg/single/arrow-tilt-down-icon.svg', { black: '#999999' }],
|
|
['rightAndUp-gray', '@univerjs/icons-svg/single/arrow-tilt-up-icon.svg', { black: '#999999' }],
|
|
];
|
|
|
|
const flag = [
|
|
['flag-green', '@univerjs/icons-svg/single/flag-icon.svg', { black: '#59D01E' }],
|
|
['flag-gold', '@univerjs/icons-svg/single/flag-icon.svg', { black: '#FFBD37' }],
|
|
['flag-red', '@univerjs/icons-svg/single/flag-icon.svg', { black: '#FE4B4B' }],
|
|
];
|
|
|
|
const shape = [
|
|
['cross', '@univerjs/icons-svg/single/cross-icon.svg', { black: '#FFBD37' }],
|
|
['up', '@univerjs/icons-svg/single/up-icon.svg', { black: '#59D01E' }],
|
|
['down', '@univerjs/icons-svg/single/down-icon.svg', { black: '#FE4B4B' }],
|
|
|
|
['rhomboid-red', '@univerjs/icons-svg/single/rhomboid-icon.svg', { black: '#FE4B4B' }],
|
|
['rhomboid-gold', '@univerjs/icons-svg/single/rhomboid-icon.svg', { black: '#FFBD37' }],
|
|
['roundness-greed', '@univerjs/icons-svg/single/roundness-icon.svg', { black: '#59D01E' }],
|
|
['roundness-gold', '@univerjs/icons-svg/single/roundness-icon.svg', { black: '#FFBD37' }],
|
|
['roundness-red', '@univerjs/icons-svg/single/roundness-icon.svg', { black: '#FE4B4B' }],
|
|
['roundness-pink', '@univerjs/icons-svg/single/roundness-icon.svg', { black: '#FB9D9D' }],
|
|
['roundness-gray', '@univerjs/icons-svg/single/roundness-icon.svg', { black: '#999999' }],
|
|
['roundness-black', '@univerjs/icons-svg/single/roundness-icon.svg'],
|
|
['triangle-gold', '@univerjs/icons-svg/single/triangle-icon.svg', { black: '#FFBD37' }],
|
|
|
|
['indicate-greed', '@univerjs/icons-svg/double/indicate-double-icon.svg', { '#E5E5E5': '#59D01E' }],
|
|
['indicate-gold', '@univerjs/icons-svg/double/indicate-double-icon.svg', { '#E5E5E5': '#FFBD37' }],
|
|
['indicate-red', '@univerjs/icons-svg/double/indicate-double-icon.svg', { '#E5E5E5': '#FE4B4B' }],
|
|
];
|
|
|
|
const cell = [
|
|
['cell-0', '@univerjs/icons-svg/double/cell-0-double-icon.svg', { white: '#0493EE', black: '#0493EE' }],
|
|
['cell-25', '@univerjs/icons-svg/double/cell-25-double-icon.svg', { white: '#0493EE', black: '#0493EE' }],
|
|
['cell-50', '@univerjs/icons-svg/double/cell-50-double-icon.svg', { white: '#0493EE', black: '#0493EE' }],
|
|
['cell-75', '@univerjs/icons-svg/double/cell-75-double-icon.svg', { white: '#0493EE', black: '#0493EE' }],
|
|
['cell-100', '@univerjs/icons-svg/double/cell-100-double-icon.svg', { white: '#0493EE', black: '#0493EE' }],
|
|
|
|
];
|
|
|
|
function replaceFillAndConvertToBase64(filePath: string, replaceMap: Record<string, string>) {
|
|
try {
|
|
let svgContent = fs.readFileSync(filePath, 'utf8');
|
|
if (replaceMap) {
|
|
for (const key in replaceMap) {
|
|
svgContent = svgContent.replace(new RegExp(`"${key}"`, 'g'), `"${replaceMap[key]}"`);
|
|
}
|
|
}
|
|
|
|
const base64Encoded = encodeURIComponent(svgContent);
|
|
return base64Encoded;
|
|
} catch (error) {
|
|
console.error('An error occurred:', error);
|
|
}
|
|
}
|
|
|
|
function runTask() {
|
|
const base64EncodedSVGs: Record<string, Record<string, string>> = {};
|
|
const obj = { feedback, star, progress, signal, feeling, arrow, shape, feedback2, flag, cell };
|
|
for (const iconType in obj) {
|
|
const list = obj[iconType as keyof typeof obj];
|
|
const map: Record<string, string> = {};
|
|
base64EncodedSVGs[iconType] = map;
|
|
for (const element of list) {
|
|
const [key, path, replaceMap] = element;
|
|
const base64 = replaceFillAndConvertToBase64(`./node_modules/${path}`, typeof replaceMap === 'object' ? replaceMap : {});
|
|
map[key as keyof typeof map] = `data:image/svg+xml;charset=utf-8,${base64}`;
|
|
}
|
|
}
|
|
|
|
if (!fs.existsSync('./src/assets')) {
|
|
fs.mkdirSync('./src/assets');
|
|
}
|
|
|
|
fs.writeFileSync('./src/assets/icon-map.ts', `/* eslint-disable */\nexport const ICON_MAP = ${JSON.stringify(base64EncodedSVGs, null, 4)};\n`);
|
|
};
|
|
|
|
runTask();
|