/**
 * 检测是否为移动端(触摸屏或小屏幕)
 * @returns {boolean}
 */
export function isMobile() {
    return window.matchMedia('(max-width: 768px), (pointer: coarse)').matches;
}

/**
 * 返回当前系统配色对应的 Monaco 主题名
 * @returns {'vs-dark'|'vs'}
 */
export function monacoTheme() {
    return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'vs-dark' : 'vs';
}

/**
 * Update all time tags within a container
 * @param {HTMLElement} container - The container to search for time tags (default: document)
 */
export function updateTimeTags(container = document) {
    const timeTags = container.querySelectorAll('time');
    for (const time of timeTags) {
        const datetime = time.getAttribute('datetime');
        if (datetime && !time.dataset.processed) {
            const date = new Date(datetime);
            const now = new Date();
            const diff = (now - date) / 1000; // seconds

            let timeString = '';
            if (diff < 60) {
                timeString = '刚刚';
            } else if (diff < 3600) {
                timeString = `${Math.floor(diff / 60)}分钟前`;
            } else if (diff < 86400) {
                timeString = `${Math.floor(diff / 3600)}小时前`;
            } else if (diff < 2592000) { // 30 days
                timeString = `${Math.floor(diff / 86400)}天前`;
            } else if (diff < 31536000) { // 365 days
                timeString = `${Math.floor(diff / 2592000)}个月前`;
            } else {
                timeString = `${Math.floor(diff / 31536000)}年前`;
            }

            time.textContent = timeString;

            // Set title attribute if not present, so global tooltip handler can pick it up for hover events
            if (!time.hasAttribute('title') && !time.hasAttribute('data-original-title')) {
                time.setAttribute('title', datetime);
            }

            time.dataset.processed = "true";
        }
    }
}
评论加载中...