1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import { showToast } from "./components/ui-lib";
- import Locale from "./locales";
- export function trimTopic(topic: string) {
- return topic.replace(/[,。!?、,.!?]*$/, "");
- }
- export async function copyToClipboard(text: string) {
- try {
- await navigator.clipboard.writeText(text);
- } catch (error) {
- const textarea = document.createElement("textarea");
- textarea.value = text;
- document.body.appendChild(textarea);
- textarea.select();
- document.execCommand("copy");
- document.body.removeChild(textarea);
- } finally {
- showToast(Locale.Copy.Success);
- }
- }
- 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 isMobileScreen() {
- return window.innerWidth <= 600;
- }
- 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 getCurrentVersion() {
- if (currentId) {
- return currentId;
- }
- currentId = queryMeta("version");
- return currentId;
- }
|