2020-11-05 12:28:02 +01:00
|
|
|
import * as fs from "fs"
|
2023-05-08 01:58:53 +02:00
|
|
|
import Constants from "../Models/Constants";
|
2020-11-05 12:28:02 +01:00
|
|
|
|
2021-11-21 02:44:35 +01:00
|
|
|
function genImages(dryrun = false) {
|
2020-11-06 01:58:26 +01:00
|
|
|
console.log("Generating images")
|
|
|
|
const dir = fs.readdirSync("./assets/svg")
|
2020-11-05 12:28:02 +01:00
|
|
|
|
2021-01-03 00:19:42 +01:00
|
|
|
let module =
|
|
|
|
'import Img from "./UI/Base/Img";\nimport {FixedUiElement} from "./UI/Base/FixedUiElement";\n\nexport default class Svg {\n\n\n'
|
2020-11-17 02:22:48 +01:00
|
|
|
const allNames: string[] = []
|
2020-11-06 01:58:26 +01:00
|
|
|
for (const path of dir) {
|
2021-09-09 00:05:51 +02:00
|
|
|
if (path.endsWith("license_info.json")) {
|
2021-04-10 15:01:28 +02:00
|
|
|
continue
|
|
|
|
}
|
2021-09-09 00:05:51 +02:00
|
|
|
|
2020-11-06 01:58:26 +01:00
|
|
|
if (!path.endsWith(".svg")) {
|
|
|
|
throw "Non-svg file detected in the svg files: " + path
|
|
|
|
}
|
|
|
|
|
2022-07-26 11:38:10 +02:00
|
|
|
let svg: string = fs
|
|
|
|
.readFileSync("./assets/svg/" + path, "utf-8")
|
2020-11-14 02:54:33 +01:00
|
|
|
.replace(/<\?xml.*?>/, "")
|
2021-09-09 00:05:51 +02:00
|
|
|
.replace(/fill: ?none;/g, "fill: none !important;") // This is such a brittle hack...
|
2020-11-06 01:58:26 +01:00
|
|
|
.replace(/\n/g, " ")
|
|
|
|
.replace(/\r/g, "")
|
|
|
|
.replace(/\\/g, "\\")
|
|
|
|
.replace(/"/g, '\\"')
|
2022-07-26 11:38:10 +02:00
|
|
|
|
|
|
|
let hasNonAsciiChars = Array.from(svg).some((char) => char.charCodeAt(0) > 127)
|
|
|
|
if (hasNonAsciiChars) {
|
|
|
|
throw "The svg '" + path + "' has non-ascii characters"
|
|
|
|
}
|
2022-09-19 12:34:05 +02:00
|
|
|
const name = path.substring(0, path.length - 4).replace(/[ -]/g, "_")
|
2021-11-21 02:44:35 +01:00
|
|
|
|
|
|
|
if (dryrun) {
|
2023-05-08 01:58:53 +02:00
|
|
|
svg = "<omitting svg - dryrun>"
|
2021-11-21 02:44:35 +01:00
|
|
|
}
|
|
|
|
|
2021-12-22 01:08:11 +01:00
|
|
|
let rawName = name
|
2022-01-26 21:40:38 +01:00
|
|
|
|
2020-11-06 01:58:26 +01:00
|
|
|
module += ` public static ${name} = "${svg}"\n`
|
2021-12-22 01:08:11 +01:00
|
|
|
module += ` public static ${name}_img = Img.AsImageElement(Svg.${rawName})\n`
|
|
|
|
module += ` public static ${name}_svg() { return new Img(Svg.${rawName}, true);}\n`
|
2023-05-08 01:58:53 +02:00
|
|
|
// module += ` /**@deprecated*/ public static ${name}_ui() { return new FixedUiElement(Svg.${rawName}_img);}\n\n`
|
|
|
|
if (Constants.defaultPinIcons.indexOf(name) >= 0 && !dryrun) {
|
2021-11-21 02:44:35 +01:00
|
|
|
allNames.push(`"${path}": Svg.${name}`)
|
|
|
|
}
|
2020-11-06 01:58:26 +01:00
|
|
|
}
|
2020-11-17 02:22:48 +01:00
|
|
|
module += `public static All = {${allNames.join(",")}};`
|
2020-11-06 01:58:26 +01:00
|
|
|
module += "}\n"
|
|
|
|
fs.writeFileSync("Svg.ts", module)
|
|
|
|
console.log("Done")
|
|
|
|
}
|
2021-09-09 00:05:51 +02:00
|
|
|
|
2023-05-08 01:58:53 +02:00
|
|
|
genImages(false)
|