1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import { showToast } from "./components/ui-lib";
- import Locale from "./locales";
- export function trimTopic(topic: string) {
- const s = topic.split("");
- let lastChar = s.at(-1);
- let pattern = /[,。!?、]/;
- while (lastChar && pattern.test(lastChar!)) {
- s.pop();
- lastChar = s.at(-1);
- }
- return s.join("");
- }
- export function copyToClipboard(text: string) {
- navigator.clipboard
- .writeText(text)
- .then((res) => {
- showToast(Locale.Copy.Success);
- })
- .catch((err) => {
- showToast(Locale.Copy.Failed);
- });
- }
- export function downloadAs(text: string, filename: string) {
- const element = document.createElement("a");
- element.setAttribute(
- "href",
- "data:text/plain;charset=utf-8," + encodeURIComponent(text)
- );
- element.setAttribute("download", filename);
- element.style.display = "none";
- document.body.appendChild(element);
- element.click();
- document.body.removeChild(element);
- }
- export function isIOS() {
- const userAgent = navigator.userAgent.toLowerCase();
- return /iphone|ipad|ipod/.test(userAgent);
- }
- export function selectOrCopy(el: HTMLElement, content: string) {
- const currentSelection = window.getSelection();
- if (currentSelection?.type === "Range") {
- return false;
- }
- copyToClipboard(content);
- return true;
- }
- export function queryMeta(key: string, defaultValue?: string): string {
- let ret: string;
- if (document) {
- const meta = document.head.querySelector(
- `meta[name='${key}']`
- ) as HTMLMetaElement;
- ret = meta?.content ?? "";
- } else {
- ret = defaultValue ?? "";
- }
- return ret;
- }
- let currentId: string;
- export function getCurrentCommitId() {
- if (currentId) {
- return currentId;
- }
- currentId = queryMeta("version");
- return currentId;
- }
|