import { EmojiStyle } from "emoji-picker-react"; import { showToast } from "./components/ui-lib"; import Locale from "./locales"; export function trimTopic(topic: string) { return topic.replace(/[,。!?、,.!?]*$/, ""); } export async function copyToClipboard(text: string) { if (navigator.clipboard) { navigator.clipboard.writeText(text).catch(err => { console.error('Failed to copy: ', err); }); } else { const textArea = document.createElement('textarea'); textArea.value = text; document.body.appendChild(textArea); textArea.focus(); textArea.select(); try { document.execCommand('copy'); console.log('Text copied to clipboard'); } catch (err) { console.error('Failed to copy: ', err); } document.body.removeChild(textArea); } } 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; } export function getEmojiUrl(unified: string, style: EmojiStyle) { return `https://cdn.staticfile.org/emoji-datasource-apple/14.0.0/img/${style}/64/${unified}.png`; }