/* * This file is a part of the SteamWar software. * * Copyright (C) 2023 SteamWar.de-Serverteam * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ import Color from "color"; import type {Team} from "@type/team.js"; import type {ListPage, PageList} from "@type/page.ts"; export const capitalize = (str: string) => str.charAt(0).toUpperCase() + str.slice(1); export const nameRegex = new RegExp("(?!.*/).+(?=\\.(md|json))"); export function mapToMap(pages: PageList): Map { const map = new Map(); for (const page of pages) { const folder = page.path.substring(0, page.path.indexOf(nameRegex.exec(page.path)![0])); if (!map.has(folder)) { map.set(folder, []); } map.get(folder).push(page); } return map; } export function colorFromTeam(team: Team): string { switch (team.color) { case "1": return "#0000AA"; case "2": return "#00AA00"; case "3": return "#00AAAA"; case "4": return "#AA0000"; case "5": return "#AA00AA"; case "6": return "#FFAA00"; case "7": return "#AAAAAA"; case "8": return "#555555"; case "9": return "#5555FF"; case "a": return "#55FF55"; case "b": return "#55FFFF"; case "c": return "#FF5555"; case "d": return "#FF55FF"; case "e": return "#FFFF55"; case "f": return "#FFFFFF"; default: return "#000000"; } } export function lighten(color: string) { return brightness(color) ? Color(color).lighten(0.2).hex() : Color(color).darken(0.2).hex(); } export function brightness(color: string) { return Color(color).isLight(); } export function base64ToBytes(base64: string): Uint8Array { const binString = atob(base64); // @ts-expect-error Some Function Missing return Uint8Array.from(binString, (m) => m.codePointAt(0)); } export function bytesToBase64(bytes: Uint8Array) { const binString = String.fromCodePoint(...bytes); return btoa(binString); }