import { showToast } from '@/components/ui-lib'; import Locale from '@/locales'; export function trimTopic(topic: string) { return topic.replace(/[,。!?、,.!?]*$/, ''); } 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 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; }